{"id":6129,"date":"2026-07-23T08:40:51","date_gmt":"2026-07-23T08:40:51","guid":{"rendered":"https:\/\/aiper.com\/blogs\/?page_id=6129"},"modified":"2026-07-28T10:04:41","modified_gmt":"2026-07-28T10:04:41","slug":"pool-design-generator","status":"publish","type":"page","link":"https:\/\/aiper.com\/blogs\/pool-design-generator\/","title":{"rendered":"Free Pool Design Generator &#038; Cost Estimator"},"content":{"rendered":"\n<style>\n\/* ==========================================================================\n   Pool Design Generator \u2014 Brand: #1ecad3 + #9486f7 blended\n   HTML\/CSS ONLY \u2014 paste this into a Custom HTML block.\n   The JavaScript logic is deployed SEPARATELY via Code Snippets (Site Wide\n   Footer). No script elements belong in this file by design.\n   WAF-compatible: no inline style=\"\" attributes in static markup.\n\n   v4: Hayward-style flow + Budget step + L-shape\/Plunge\/Lap shapes. Views (.pdg-view) are shown\/hidden via a SINGLE\n   class (.active) \u2014 never two competing classes fighting over `display`.\n   ========================================================================== *\/\n#pool-design-generator {\n    max-width: 820px;\n    margin: 20px auto;\n    padding: 0 16px;\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n    box-sizing: border-box;\n}\n#pool-design-generator *, #pool-design-generator *::before, #pool-design-generator *::after { box-sizing: border-box; }\n\n#pdg-js-status {\n    display: none;\n    text-align: center; padding: 8px 12px; margin-bottom: 12px;\n    background: #fffbe6; border: 1px solid #f6e05e; border-radius: 8px;\n    font-size: 12px; font-weight: 600; color: #975a16;\n}\n.pdg-subtitle { text-align: center; font-size: 14px; color: #64748b; margin: 12px 0 16px; }\n\n\/* \u2500\u2500 Views \u2500\u2500 *\/\n.pdg-view { display: none; }\n.pdg-view.active { display: block; animation: pdg-fade-in 0.3s ease; }\n@keyframes pdg-fade-in { from { opacity: 0; } to { opacity: 1; } }\n\n\/* \u2500\u2500 Section labels \u2500\u2500 *\/\n.pdg-section { margin-bottom: 18px; }\n.pdg-section-label { font-size: 13px; font-weight: 700; color: #2c3e50; margin-bottom: 8px; }\n.pdg-view-title { text-align: center; font-size: 1.3rem; font-weight: 700; color: #1a202c; margin: 0 0 6px; }\n.pdg-view-desc { text-align: center; font-size: 13px; color: #64748b; margin: 0 0 14px; }\n\n\/* \u2500\u2500 Region toggle \u2500\u2500 *\/\n.pdg-region-toggle { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin-bottom: 14px; }\n.pdg-region-btn {\n    padding: 9px 16px; font-size: 12px; font-weight: 600;\n    background: #f5f7fa; color: #64748b; border: 1px solid #e2e8f0; border-radius: 8px;\n    cursor: pointer; transition: all 0.2s ease;\n}\n.pdg-region-btn:hover { background: #e8f7f8; color: #1ecad3; border-color: #b2dfdb; }\n.pdg-region-btn:focus, .pdg-region-btn:active { outline: none; color: #2c3e50; }\n.pdg-region-btn.active {\n    background: linear-gradient(135deg, #1ecad3, #9486f7);\n    color: #fff; border-color: transparent;\n}\n\n\/* \u2500\u2500 Postal code row \u2500\u2500 *\/\n.pdg-zip-row { max-width: 320px; margin: 0 auto 18px; text-align: center; }\n.pdg-zip-row label { display: block; font-size: 13px; font-weight: 600; color: #2c3e50; margin-bottom: 4px; }\n.pdg-zip-row input {\n    width: 100%; padding: 10px 12px; border: 1px solid #e2e8f0; border-radius: 8px;\n    font-size: 14px; color: #2c3e50; text-align: center; background: #fff; transition: border-color 0.2s ease;\n}\n.pdg-zip-row input:focus { border-color: #9486f7; outline: none; box-shadow: 0 0 0 3px rgba(148,134,247,0.1); }\n.pdg-zip-note { font-size: 11px; color: #64748b; margin-top: 6px; min-height: 14px; line-height: 1.4; }\n\n\/* \u2500\u2500 Gate \/ generate-style buttons \u2500\u2500 *\/\n.pdg-generate-wrap { text-align: center; margin: 22px 0 8px; }\n#pdg-gate-continue-btn, #pdg-generate-btn {\n    padding: 14px 36px; font-size: 15px; font-weight: 700;\n    background: linear-gradient(135deg, #1ecad3, #9486f7);\n    color: #fff; border: none; border-radius: 10px; cursor: pointer;\n    transition: all 0.2s ease;\n}\n#pdg-gate-continue-btn:hover, #pdg-generate-btn:hover { background: linear-gradient(135deg, #169fa6, #7b6be0); transform: translateY(-1px); box-shadow: 0 4px 16px rgba(148,134,247,0.35); }\n#pdg-gate-continue-btn:focus, #pdg-gate-continue-btn:active, #pdg-generate-btn:focus, #pdg-generate-btn:active { outline: none; color: #fff; }\n\n\/* \u2500\u2500 Choice view (Premade \/ Build Your Own) \u2500\u2500 *\/\n.pdg-choice-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 10px 0; }\n.pdg-choice-card {\n    padding: 28px 20px; border: 2px solid #e2e8f0; border-radius: 14px;\n    background: #fff; cursor: pointer; text-align: center; transition: all 0.2s ease;\n}\n.pdg-choice-card:hover { border-color: #9486f7; transform: translateY(-2px); box-shadow: 0 6px 18px rgba(148,134,247,0.18); }\n.pdg-choice-card:focus, .pdg-choice-card:active { outline: none; }\n.pdg-choice-card-title {\n    font-size: 1.05rem; font-weight: 800; margin-bottom: 8px;\n    background: linear-gradient(135deg, #169fa6, #7b6be0); -webkit-background-clip: text; background-clip: text; color: transparent;\n}\n.pdg-choice-card-desc { font-size: 12px; color: #64748b; line-height: 1.5; }\n\n\/* \u2500\u2500 Location summary + back link \u2500\u2500 *\/\n.pdg-location-summary { text-align: center; font-size: 12px; color: #64748b; margin-bottom: 14px; }\n.pdg-back-link { text-align: center; margin-top: 18px; }\n.pdg-back-link a, .pdg-wiz-back { color: #64748b; font-size: 13px; text-decoration: underline; cursor: pointer; }\n\n\/* \u2500\u2500 Return-to-start control (brand outline button, matches #pdg-detail-edit) \u2500\u2500 *\/\n.pdg-restart-row { text-align: right; margin-bottom: 10px; }\n.pdg-restart-link {\n    display: inline-block; padding: 6px 14px; font-size: 12px; font-weight: 700;\n    color: #6b5ce7; background: #fff; border: 2px solid #9486f7; border-radius: 20px; cursor: pointer;\n    text-decoration: none; transition: all 0.2s ease;\n}\n.pdg-restart-link:hover { background: #f5f3ff; }\n.pdg-restart-link:focus, .pdg-restart-link:active { outline: none; color: #6b5ce7; }\n\n\/* \u2500\u2500 Filter chips (gallery) \u2500\u2500 *\/\n.pdg-filter-row { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; margin-bottom: 8px; }\n.pdg-filter-chip {\n    padding: 6px 12px; font-size: 11px; font-weight: 600;\n    border: 1px solid #e2e8f0; border-radius: 16px;\n    background: #fff; color: #475569; cursor: pointer; transition: all 0.2s ease;\n}\n.pdg-filter-chip:hover { border-color: #b2dfdb; }\n.pdg-filter-chip:focus, .pdg-filter-chip:active { outline: none; color: #2c3e50; }\n.pdg-filter-chip.selected { border-color: #9486f7; background: #f5f3ff; color: #2c3e50; }\n\n\/* \u2500\u2500 Premade layout gallery \u2500\u2500 *\/\n.pdg-premade-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 14px; margin: 14px 0 8px; }\n.pdg-premade-card {\n    border: 2px solid #e2e8f0; border-radius: 14px; overflow: hidden;\n    cursor: pointer; background: #fff; transition: all 0.2s ease; text-align: left;\n}\n.pdg-premade-card:hover { border-color: #9486f7; transform: translateY(-2px); box-shadow: 0 6px 18px rgba(148,134,247,0.18); }\n.pdg-premade-card:focus, .pdg-premade-card:active { outline: none; }\n.pdg-premade-card img { width: 100%; height: 120px; object-fit: cover; display: block; }\n.pdg-premade-body { padding: 10px 12px; }\n.pdg-premade-name { font-size: 13px; font-weight: 700; color: #1a202c; margin-bottom: 3px; }\n.pdg-premade-desc { font-size: 11px; color: #64748b; line-height: 1.4; margin-bottom: 6px; }\n.pdg-premade-badge {\n    display: inline-block; font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.4px;\n    padding: 3px 8px; border-radius: 12px; background: #f5f3ff; color: #6b5ce7; margin-bottom: 8px;\n}\n.pdg-premade-select-btn {\n    display: block; width: 100%; padding: 8px 10px; font-size: 12px; font-weight: 700;\n    background: linear-gradient(135deg, #1ecad3, #9486f7); color: #fff; border: none; border-radius: 8px; cursor: pointer;\n    transition: all 0.2s ease;\n}\n.pdg-premade-select-btn:hover { background: linear-gradient(135deg, #169fa6, #7b6be0); }\n.pdg-premade-select-btn:focus, .pdg-premade-select-btn:active { outline: none; color: #fff; }\n.pdg-gallery-empty { text-align: center; font-size: 13px; color: #64748b; padding: 20px; }\n\n\/* \u2500\u2500 Wizard breadcrumb \u2500\u2500 *\/\n.pdg-wiz-steps { display: flex; justify-content: center; flex-wrap: wrap; gap: 0; margin-bottom: 24px; }\n.pdg-wiz-step {\n    display: flex; align-items: center; gap: 6px; padding: 8px 12px;\n    font-size: 12px; font-weight: 600; color: #94a3b8; background: #f5f7fa;\n    border: 1px solid #e2e8f0; border-right: none; cursor: pointer;\n}\n.pdg-wiz-step:first-child { border-radius: 8px 0 0 8px; }\n.pdg-wiz-step:last-child { border-radius: 0 8px 8px 0; border-right: 1px solid #e2e8f0; }\n.pdg-wiz-step .step-num {\n    display: inline-flex; align-items: center; justify-content: center;\n    width: 20px; height: 20px; border-radius: 50%; background: #e2e8f0; color: #64748b;\n    font-size: 11px; font-weight: 700;\n}\n.pdg-wiz-step.active { color: #2c3e50; background: #f5f3ff; }\n.pdg-wiz-step.active .step-num { background: linear-gradient(135deg, #1ecad3, #9486f7); color: #fff; }\n.pdg-wiz-step.done { color: #2c3e50; }\n.pdg-wiz-step.done .step-num { background: linear-gradient(135deg, #1ecad3, #9486f7); color: #fff; }\n@media (max-width: 600px) {\n    .pdg-wiz-step { flex: 1 1 auto; font-size: 10px; padding: 6px 4px; justify-content: center; }\n}\n\n\/* \u2500\u2500 Wizard panels \u2500\u2500 *\/\n.pdg-wiz-panel { display: none; }\n.pdg-wiz-panel.active { display: block; animation: pdg-fade-in 0.3s ease; }\n.pdg-wiz-btn-row { display: flex; justify-content: center; align-items: center; gap: 16px; margin-top: 20px; }\n.pdg-wiz-next {\n    padding: 12px 32px; font-size: 14px; font-weight: 700;\n    background: linear-gradient(135deg, #1ecad3, #9486f7); color: #fff; border: none; border-radius: 10px; cursor: pointer;\n    transition: all 0.2s ease;\n}\n.pdg-wiz-next:hover { background: linear-gradient(135deg, #169fa6, #7b6be0); }\n.pdg-wiz-next:focus, .pdg-wiz-next:active { outline: none; color: #fff; }\n\n\/* \u2500\u2500 Yard dimension inputs \u2500\u2500 *\/\n.pdg-controls { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 14px; }\n.pdg-field { display: flex; flex-direction: column; }\n.pdg-field label { font-size: 13px; font-weight: 600; color: #2c3e50; margin-bottom: 4px; }\n.pdg-field input {\n    padding: 10px 12px; border: 1px solid #e2e8f0; border-radius: 8px;\n    font-size: 14px; color: #2c3e50; background: #fff; transition: border-color 0.2s ease;\n}\n.pdg-field input:focus { border-color: #9486f7; outline: none; box-shadow: 0 0 0 3px rgba(148,134,247,0.1); }\n.pdg-unit-suffix { font-size: 11px; color: #94a3b8; margin-left: 2px; }\n.pdg-error { color: #e53e3e; font-size: 11px; margin-top: 2px; min-height: 16px; }\n\n\/* \u2500\u2500 Button grids (surrounding \/ pad \/ size \/ shape \/ material \/ use) \u2500\u2500 *\/\n.pdg-btn-grid { display: flex; flex-wrap: wrap; gap: 8px; }\n.pdg-choice-btn {\n    padding: 10px 16px; font-size: 13px; font-weight: 600;\n    border: 2px solid #e2e8f0; border-radius: 10px;\n    background: #fff; color: #475569; cursor: pointer; transition: all 0.2s ease;\n}\n.pdg-choice-btn:hover { border-color: #b2dfdb; }\n.pdg-choice-btn:focus, .pdg-choice-btn:active { outline: none; color: #2c3e50; }\n.pdg-choice-btn.selected { border-color: #9486f7; background: #f5f3ff; color: #2c3e50; }\n\n\/* \u2500\u2500 Live description shown under a selected option \u2500\u2500 *\/\n.pdg-choice-desc { margin-top: 12px; padding: 12px 14px; background: #f5f7fa; border-radius: 8px; border: 1px solid #e2e8f0; }\n.pdg-choice-desc-meta { font-size: 12px; font-weight: 700; color: #2c3e50; margin: 0 0 4px; }\n.pdg-choice-desc-text { font-size: 12px; color: #64748b; line-height: 1.5; margin: 0; }\n.pdg-use-label { margin-top: 16px; }\n\n\/* \u2500\u2500 Style picker (image cards) \u2500\u2500 *\/\n.pdg-style-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 10px; }\n.pdg-style-card {\n    border: 2px solid #e2e8f0; border-radius: 12px; overflow: hidden;\n    cursor: pointer; background: #fff; transition: all 0.2s ease; text-align: center;\n}\n.pdg-style-card:hover { border-color: #b2dfdb; }\n.pdg-style-card.selected { border-color: #9486f7; box-shadow: 0 0 0 2px rgba(148,134,247,0.12); }\n.pdg-style-card img { width: 100%; height: 88px; object-fit: cover; display: block; }\n.pdg-style-card-label {\n    font-size: 12px; font-weight: 700; padding: 8px 6px; color: #2c3e50;\n}\n.pdg-style-card.selected .pdg-style-card-label { background: #f5f3ff; }\n\n\/* \u2500\u2500 Feature groups (image card + description + sub-item chips) \u2500\u2500 *\/\n.pdg-feature-list { display: flex; flex-direction: column; gap: 14px; }\n.pdg-feature-group { border: 1px solid #e2e8f0; border-radius: 10px; padding: 12px 14px; }\n.pdg-feature-card { max-width: 160px; margin-bottom: 10px; }\n.pdg-feature-desc { margin-bottom: 10px; }\n.pdg-feature-subitems { display: flex; flex-wrap: wrap; gap: 8px; }\n.pdg-subitem-chip {\n    padding: 8px 14px; font-size: 12px; font-weight: 600;\n    border: 1px solid #e2e8f0; border-radius: 20px;\n    background: #fff; color: #475569; cursor: pointer; transition: all 0.2s ease;\n}\n.pdg-subitem-chip:hover { border-color: #b2dfdb; background: #f8fdfc; }\n.pdg-subitem-chip:focus, .pdg-subitem-chip:active { outline: none; color: #2c3e50; }\n.pdg-subitem-chip.selected { border-color: #9486f7; background: #f5f3ff; color: #2c3e50; box-shadow: 0 0 0 2px rgba(148,134,247,0.12); }\n\n\/* \u2500\u2500 Detail view \u2500\u2500 *\/\n.pdg-hidden { display: none; }\n.pdg-detail-actions { display: flex; justify-content: space-between; align-items: center; margin-bottom: 14px; }\n#pdg-detail-edit {\n    padding: 8px 18px; font-size: 12px; font-weight: 700;\n    background: #fff; color: #6b5ce7; border: 2px solid #9486f7; border-radius: 8px; cursor: pointer;\n    transition: all 0.2s ease;\n}\n#pdg-detail-edit:hover { background: #f5f3ff; }\n#pdg-detail-edit:focus, #pdg-detail-edit:active { outline: none; color: #6b5ce7; }\n.pdg-results-title { text-align: center; font-size: 1.3rem; font-weight: 700; color: #1a202c; margin-bottom: 16px; }\n\n.pdg-warning {\n    padding: 10px 14px; background: #fffbe6; border: 1px solid #f6e05e; border-radius: 8px;\n    font-size: 12px; color: #975a16; margin-bottom: 14px; text-align: center;\n}\n.pdg-regulation {\n    padding: 10px 14px; background: #fff5f5; border: 1px solid #feb2b2; border-radius: 8px;\n    font-size: 12px; color: #c53030; margin-bottom: 14px; text-align: center;\n}\n\n\/* 3D concept viewport *\/\n.pdg-diagram-wrap { text-align: center; background: #fafafa; border-radius: 12px; padding: 18px 16px; border: 1px solid #e2e8f0; margin-bottom: 8px; }\n.pdg-viewport-wrap img { width: 100%; max-height: 360px; object-fit: cover; border-radius: 8px; display: block; }\n.pdg-viewport-caption { font-size: 13px; font-weight: 700; color: #2c3e50; margin-top: 10px; }\n.pdg-viewport-disclaimer { font-size: 11px; color: #94a3b8; margin-top: 4px; font-style: italic; }\n\n\/* Loading overlay (\"Preparing your concept visualization...\") *\/\n.pdg-loading-overlay {\n    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px;\n    padding: 40px 20px; margin-bottom: 14px;\n    background: #f5f7fa; border-radius: 12px; border: 1px solid #e2e8f0;\n    text-align: center;\n}\n.pdg-loading-overlay.pdg-hidden { display: none; }\n.pdg-loading-spinner {\n    width: 34px; height: 34px; border-radius: 50%;\n    border: 4px solid #e2e8f0; border-top-color: #9486f7;\n    animation: pdg-spin 0.8s linear infinite;\n}\n@keyframes pdg-spin { to { transform: rotate(360deg); } }\n.pdg-loading-text { font-size: 14px; font-weight: 700; color: #2c3e50; }\n\n.pdg-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px 16px; margin-top: 12px; font-size: 11px; color: #475569; }\n.pdg-legend-item { display: flex; align-items: center; gap: 5px; }\n.pdg-legend-swatch { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }\n\n\/* Spec sheet *\/\n.pdg-spec { margin: 20px 0; }\n.pdg-spec-title, .pdg-cost-title, .pdg-next-title { font-size: 1.05rem; font-weight: 700; color: #1a202c; margin: 0 0 10px; }\n.pdg-spec-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 20px; background: #f5f7fa; border-radius: 10px; padding: 16px; }\n.pdg-spec-row { font-size: 13px; color: #2c3e50; }\n.pdg-spec-row strong { display: block; font-size: 11px; color: #64748b; text-transform: uppercase; letter-spacing: 0.4px; font-weight: 700; margin-bottom: 2px; }\n.pdg-spec-list { grid-column: 1 \/ -1; }\n.pdg-spec-list ul { margin: 4px 0 0; padding-left: 18px; }\n.pdg-spec-list li { margin-bottom: 3px; }\n\n\/* Cost *\/\n.pdg-cost { margin: 20px 0; padding: 16px 20px; background: #f0fcfc; border: 1px solid #b2dfdb; border-radius: 12px; }\n.pdg-cost-range { text-align: center; font-size: 1.6rem; font-weight: 800; margin: 4px 0 12px; background: linear-gradient(135deg, #169fa6, #7b6be0); -webkit-background-clip: text; background-clip: text; color: transparent; }\n.pdg-cost-items { font-size: 12px; color: #475569; }\n.pdg-cost-item { display: flex; justify-content: space-between; padding: 4px 0; border-bottom: 1px dashed #d5e8e8; }\n.pdg-financing { font-size: 12px; color: #475569; text-align: center; margin-top: 10px; padding-top: 10px; border-top: 1px dashed #d5e8e8; }\n.pdg-financing strong { color: #1a202c; }\n.pdg-cost-disclaimer { font-size: 11px; color: #64748b; margin-top: 12px; line-height: 1.5; }\n\n\/* Next steps + CTA *\/\n.pdg-next-links { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; margin-bottom: 18px; }\n.pdg-next-link {\n    display: inline-block; padding: 8px 16px;\n    background: #f5f7fa; color: #6b5ce7; border: 1px solid #e8e3fc;\n    border-radius: 22px; font-size: 12px; font-weight: 600; text-decoration: none; transition: all 0.2s ease;\n}\n.pdg-next-link:hover { background: #ede9fe; color: #5a4bd1; border-color: #9486f7; }\n.pdg-next-link:focus, .pdg-next-link:active { color: #5a4bd1; outline: none; }\n\n.pdg-cta { padding: 16px 20px; background: #f0fcfc; border-radius: 12px; border: 1px solid #b2dfdb; text-align: center; margin-bottom: 18px; }\n.pdg-cta p { margin: 0 0 8px; font-size: 13px; color: #475569; line-height: 1.5; }\n.pdg-cta a {\n    display: inline-block; padding: 10px 24px;\n    background: linear-gradient(135deg, #1ecad3, #9486f7);\n    color: #fff; border-radius: 8px; text-decoration: none; font-weight: 700; font-size: 14px; transition: all 0.2s ease;\n}\n.pdg-cta a:hover { transform: translateY(-1px); box-shadow: 0 4px 16px rgba(148,134,247,0.35); }\n.pdg-cta a:focus, .pdg-cta a:active { outline: none; color: #fff; }\n\n\/* \u2500\u2500 Pool Design Options comparison (educational section before FAQ) \u2500\u2500 *\/\n.pdg-options-compare { margin: 28px 0 20px; }\n.pdg-options-compare h2 { font-size: 1.3rem; font-weight: 700; color: #1a202c; margin: 0 0 8px; }\n.pdg-options-lead { font-size: 13px; color: #475569; line-height: 1.5; margin: 0 0 14px; }\n.pdg-options-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px; margin-bottom: 12px; }\n.pdg-option-card { border: 1px solid #e2e8f0; border-radius: 10px; padding: 14px; background: #fff; }\n.pdg-option-card.pdg-option-active { border-color: #9486f7; background: #f5f3ff; }\n.pdg-option-card h3 { font-size: 14px; font-weight: 700; color: #1a202c; margin: 0 0 6px; }\n.pdg-option-card .pdg-option-best { display: inline-block; font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.4px; padding: 2px 8px; border-radius: 10px; background: #9486f7; color: #fff; margin-left: 6px; vertical-align: middle; }\n.pdg-option-card p { font-size: 11px; color: #64748b; line-height: 1.5; margin: 0; }\n.pdg-option-card .pdg-option-pros { font-size: 11px; color: #475569; margin-top: 8px; line-height: 1.4; }\n.pdg-option-card .pdg-option-cons { font-size: 11px; color: #94a3b8; margin-top: 4px; line-height: 1.4; }\n@media (max-width: 600px) {\n    .pdg-options-grid { grid-template-columns: 1fr; }\n}\n\n\/* \u2500\u2500 What's Next: From Design to Dive section \u2500\u2500 *\/\n.pdg-next-steps { margin: 32px 0 24px; }\n.pdg-next-steps h2 { font-size: 1.3rem; font-weight: 700; color: #1a202c; margin: 0 0 4px; }\n.pdg-next-steps .pdg-next-steps-intro { font-size: 13px; color: #475569; line-height: 1.5; margin: 0 0 16px; }\n.pdg-next-steps-grid { display: grid; grid-template-columns: 1fr; gap: 12px; margin-bottom: 14px; }\n.pdg-step-card { display: flex; gap: 14px; align-items: flex-start; border: 1px solid #e2e8f0; border-radius: 10px; padding: 16px; background: #fff; transition: border-color 0.2s ease; }\n.pdg-step-card:hover { border-color: #9486f7; }\n.pdg-step-num {\n    flex-shrink: 0; width: 38px; height: 38px; border-radius: 50%;\n    background: linear-gradient(135deg, #1ecad3, #9486f7);\n    color: #fff; font-size: 15px; font-weight: 800; line-height: 38px; text-align: center;\n}\n.pdg-step-body h3 { font-size: 15px; font-weight: 700; color: #1a202c; margin: 0 0 4px; }\n.pdg-step-body p { font-size: 12px; color: #475569; line-height: 1.55; margin: 0; }\n.pdg-next-steps-closing { font-size: 13px; color: #475569; line-height: 1.55; margin: 0; padding: 14px 16px; background: #f5f3ff; border-left: 4px solid #9486f7; border-radius: 0 8px 8px 0; }\n\n.pdg-print-wrap { text-align: center; margin-bottom: 6px; }\n#pdg-print-btn {\n    padding: 10px 22px; font-size: 13px; font-weight: 700;\n    background: #fff; color: #6b5ce7; border: 2px solid #9486f7; border-radius: 8px; cursor: pointer;\n    transition: all 0.2s ease;\n}\n#pdg-print-btn:hover { background: #f5f3ff; }\n#pdg-print-btn:focus, #pdg-print-btn:active { outline: none; color: #6b5ce7; }\n\n\/* \u2500\u2500 Print styles \u2500\u2500 *\/\n@media print {\n    #pdg-view-gate, #pdg-view-choice, #pdg-view-gallery, #pdg-view-wizard,\n    .pdg-detail-actions, .pdg-print-wrap, .pdg-subtitle, #pdg-js-status, .pdg-cta,\n    .pdg-loading-overlay { display: none !important; }\n    #pdg-view-detail { display: block !important; }\n}\n\n\/* \u2500\u2500 Responsive \u2500\u2500 *\/\n@media (max-width: 600px) {\n    .pdg-controls { grid-template-columns: 1fr; }\n    .pdg-spec-grid { grid-template-columns: 1fr; }\n    .pdg-choice-grid { grid-template-columns: 1fr; }\n    #pool-design-generator { padding: 0 8px; }\n}\n<\/style>\n\n<div id=\"pool-design-generator\">\n    <div id=\"pdg-js-status\">LOADING&#8230; JS not yet executed<\/div>\n    <noscript><style>#pdg-js-status{display:block!important}<\/style><\/noscript>\n    <p class=\"pdg-subtitle\" id=\"pdg-subtitle\">Answer a few quick questions to get an instant concept visualization, spec sheet, and cost estimate \u2014 or browse ready-made layouts.<\/p>\n\n    <!-- VIEW: postal code \/ region gate -->\n    <div class=\"pdg-view active\" id=\"pdg-view-gate\">\n        <div class=\"pdg-region-toggle\" id=\"pdg-region-toggle\" role=\"radiogroup\" aria-label=\"Region\"><\/div>\n        <div class=\"pdg-zip-row\" id=\"pdg-zip-row\">\n            <label for=\"pdg-zip\">Postal code <span class=\"pdg-unit-suffix\">(so we can customize your options based on your location)<\/span><\/label>\n            <input type=\"text\" id=\"pdg-zip\" maxlength=\"8\" placeholder=\"e.g. 90210\">\n            <div class=\"pdg-error\" id=\"pdg-err-zip\"><\/div>\n            <div class=\"pdg-zip-note\" id=\"pdg-zip-note\"><\/div>\n        <\/div>\n        <div class=\"pdg-generate-wrap\">\n            <button type=\"button\" id=\"pdg-gate-continue-btn\">Continue<\/button>\n        <\/div>\n    <\/div>\n\n    <!-- VIEW: choice -->\n    <div class=\"pdg-view\" id=\"pdg-view-choice\">\n        <div class=\"pdg-choice-grid\">\n            <button type=\"button\" class=\"pdg-choice-card\" id=\"pdg-choice-premade\">\n                <div class=\"pdg-choice-card-title\">Premade Layouts<\/div>\n                <div class=\"pdg-choice-card-desc\">Browse ready-made design concepts and pick one that fits your space.<\/div>\n            <\/button>\n            <button type=\"button\" class=\"pdg-choice-card\" id=\"pdg-choice-custom\">\n                <div class=\"pdg-choice-card-title\">Build Your Own Design<\/div>\n                <div class=\"pdg-choice-card-desc\">Answer a few quick questions and build your pool step by step.<\/div>\n            <\/button>\n        <\/div>\n    <\/div>\n\n    <!-- VIEW: premade gallery -->\n    <div class=\"pdg-view\" id=\"pdg-view-gallery\">\n        <div class=\"pdg-restart-row\"><a id=\"pdg-gallery-restart\" class=\"pdg-restart-link\">&larr; Start over<\/a><\/div>\n        <div class=\"pdg-view-title\">Premade layouts<\/div>\n        <p class=\"pdg-view-desc\">Click any concept below for an instant layout, spec sheet, and cost estimate based on a typical yard for that design \u2014 no measuring required.<\/p>\n        <div class=\"pdg-location-summary\" id=\"pdg-location-summary\"><\/div>\n        <div class=\"pdg-filter-row\" id=\"pdg-filter-shape\"><\/div>\n        <div class=\"pdg-filter-row\" id=\"pdg-filter-material\"><\/div>\n        <div class=\"pdg-filter-row\" id=\"pdg-filter-size\"><\/div>\n        <div class=\"pdg-premade-grid\" id=\"pdg-premade-grid\"><\/div>\n        <div class=\"pdg-gallery-empty pdg-hidden\" id=\"pdg-gallery-empty\">No premade layouts match those filters \u2014 try clearing one.<\/div>\n        <div class=\"pdg-back-link\"><a id=\"pdg-gallery-back\">&larr; Back<\/a><\/div>\n    <\/div>\n\n    <!-- VIEW: build-your-own wizard -->\n    <div class=\"pdg-view\" id=\"pdg-view-wizard\">\n        <div class=\"pdg-restart-row\"><a id=\"pdg-wizard-restart\" class=\"pdg-restart-link\">&larr; Start over<\/a><\/div>\n        <div class=\"pdg-wiz-steps\" id=\"pdg-wiz-steps\"><\/div>\n\n        <div class=\"pdg-wiz-panel active\" data-step=\"1\">\n            <div class=\"pdg-section-label\">Surrounding<\/div>\n            <div class=\"pdg-style-grid\" id=\"pdg-surroundings\"><\/div>\n            <div class=\"pdg-controls\">\n                <div class=\"pdg-field\">\n                    <label for=\"pdg-yard-width\">Yard width (<span class=\"pdg-unit-suffix\" id=\"pdg-unit-w\">ft<\/span>)<\/label>\n                    <input type=\"number\" id=\"pdg-yard-width\" step=\"any\" min=\"1\" value=\"30\" inputmode=\"decimal\">\n                    <div class=\"pdg-error\" id=\"pdg-err-width\"><\/div>\n                <\/div>\n                <div class=\"pdg-field\">\n                    <label for=\"pdg-yard-length\">Yard length (<span class=\"pdg-unit-suffix\" id=\"pdg-unit-l\">ft<\/span>)<\/label>\n                    <input type=\"number\" id=\"pdg-yard-length\" step=\"any\" min=\"1\" value=\"45\" inputmode=\"decimal\">\n                    <div class=\"pdg-error\" id=\"pdg-err-length\"><\/div>\n                <\/div>\n            <\/div>\n            <div class=\"pdg-choice-desc\" id=\"pdg-surrounding-desc\"><\/div>\n            <div class=\"pdg-wiz-btn-row\">\n                <button type=\"button\" class=\"pdg-wiz-next\">Next<\/button>\n            <\/div>\n        <\/div>\n\n        <div class=\"pdg-wiz-panel\" data-step=\"2\">\n            <div class=\"pdg-section-label\">Pad area<\/div>\n            <div class=\"pdg-style-grid\" id=\"pdg-pads\"><\/div>\n            <div class=\"pdg-choice-desc\" id=\"pdg-pad-desc\"><\/div>\n            <div class=\"pdg-wiz-btn-row\">\n                <a class=\"pdg-wiz-back\">Back<\/a>\n                <button type=\"button\" class=\"pdg-wiz-next\">Next<\/button>\n            <\/div>\n        <\/div>\n\n        <div class=\"pdg-wiz-panel\" data-step=\"3\">\n            <div class=\"pdg-section-label\">Size<\/div>\n            <div class=\"pdg-style-grid\" id=\"pdg-sizes\"><\/div>\n            <div class=\"pdg-choice-desc\" id=\"pdg-size-desc\"><\/div>\n            <div class=\"pdg-wiz-btn-row\">\n                <a class=\"pdg-wiz-back\">Back<\/a>\n                <button type=\"button\" class=\"pdg-wiz-next\">Next<\/button>\n            <\/div>\n        <\/div>\n\n        <div class=\"pdg-wiz-panel\" data-step=\"4\">\n            <div class=\"pdg-section-label\">Shape<\/div>\n            <div class=\"pdg-style-grid\" id=\"pdg-shapes\"><\/div>\n            <div class=\"pdg-choice-desc\" id=\"pdg-shape-desc\"><\/div>\n            <div class=\"pdg-wiz-btn-row\">\n                <a class=\"pdg-wiz-back\">Back<\/a>\n                <button type=\"button\" class=\"pdg-wiz-next\">Next<\/button>\n            <\/div>\n        <\/div>\n\n        <div class=\"pdg-wiz-panel\" data-step=\"5\">\n            <div class=\"pdg-section-label\">Material<\/div>\n            <div class=\"pdg-style-grid\" id=\"pdg-materials\"><\/div>\n            <div class=\"pdg-choice-desc\" id=\"pdg-material-desc\"><\/div>\n            <div class=\"pdg-wiz-btn-row\">\n                <a class=\"pdg-wiz-back\">Back<\/a>\n                <button type=\"button\" class=\"pdg-wiz-next\">Next<\/button>\n            <\/div>\n        <\/div>\n\n        <div class=\"pdg-wiz-panel\" data-step=\"6\">\n            <div class=\"pdg-section-label\">Style<\/div>\n            <div class=\"pdg-style-grid\" id=\"pdg-styles\"><\/div>\n            <div class=\"pdg-choice-desc\" id=\"pdg-style-desc\"><\/div>\n            <div class=\"pdg-wiz-btn-row\">\n                <a class=\"pdg-wiz-back\">Back<\/a>\n                <button type=\"button\" class=\"pdg-wiz-next\">Next<\/button>\n            <\/div>\n        <\/div>\n\n                <div class=\"pdg-wiz-panel\" data-step=\"7\">\n            <div class=\"pdg-section-label\">Budget \/ Finish Level<\/div>\n            <div class=\"pdg-style-grid\" id=\"pdg-budgets\"><\/div>\n            <div class=\"pdg-choice-desc\" id=\"pdg-budget-desc\"><\/div>\n            <div class=\"pdg-wiz-btn-row\">\n                <a class=\"pdg-wiz-back\">Back<\/a>\n                <button type=\"button\" class=\"pdg-wiz-next\">Next<\/button>\n            <\/div>\n        <\/div>\n\n        <div class=\"pdg-wiz-panel\" data-step=\"8\">\n            <div class=\"pdg-section-label\">Feature<\/div>\n            <div class=\"pdg-feature-list\" id=\"pdg-features\"><\/div>\n            <div class=\"pdg-section-label pdg-use-label\">Primary use<\/div>\n            <div class=\"pdg-btn-grid\" id=\"pdg-uses\"><\/div>\n            <div class=\"pdg-wiz-btn-row\">\n                <a class=\"pdg-wiz-back\">Back<\/a>\n                <button type=\"button\" id=\"pdg-generate-btn\">Generate my pool design<\/button>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <!-- VIEW: shared Plan Detail (reached from either flow) -->\n    <div class=\"pdg-view\" id=\"pdg-view-detail\">\n        <div class=\"pdg-detail-actions\">\n            <a id=\"pdg-detail-back\">&larr; Back<\/a>\n            <button type=\"button\" id=\"pdg-detail-edit\">Edit this pool<\/button>\n        <\/div>\n        <div class=\"pdg-results-title\">Your pool design layout<\/div>\n\n        <div id=\"pdg-loading-overlay\" class=\"pdg-loading-overlay pdg-hidden\">\n            <div class=\"pdg-loading-spinner\"><\/div>\n            <div class=\"pdg-loading-text\">Preparing your concept visualization&#8230;<\/div>\n        <\/div>\n\n        <div id=\"pdg-warning\" class=\"pdg-warning pdg-hidden\"><\/div>\n        <div id=\"pdg-regulation-note\" class=\"pdg-regulation pdg-hidden\"><\/div>\n\n        <div class=\"pdg-diagram-wrap pdg-viewport-wrap\">\n            <img loading=\"lazy\" decoding=\"async\" id=\"pdg-viewport-img\" src=\"\" alt=\"\">\n            <div id=\"pdg-viewport-caption\" class=\"pdg-viewport-caption\"><\/div>\n            <p class=\"pdg-viewport-disclaimer\">Concept visualization only \u2014 actual pool shape, proportions, and finishes will vary.<\/p>\n            <div class=\"pdg-legend\" id=\"pdg-legend\"><\/div>\n        <\/div>\n\n        <div class=\"pdg-spec\">\n            <div class=\"pdg-spec-title\">Specification sheet<\/div>\n            <div class=\"pdg-spec-grid\" id=\"pdg-spec-grid\"><\/div>\n        <\/div>\n\n        <div class=\"pdg-cost\">\n            <div class=\"pdg-cost-title\">Estimated cost range<\/div>\n            <div class=\"pdg-cost-range\" id=\"pdg-cost-range\"><\/div>\n            <div class=\"pdg-cost-items\" id=\"pdg-cost-items\"><\/div>\n            <div class=\"pdg-financing\" id=\"pdg-financing\"><\/div>\n            <div class=\"pdg-cost-disclaimer\" id=\"pdg-cost-disclaimer\"><\/div>\n        <\/div>\n\n        <div class=\"pdg-next-title\">Next steps<\/div>\n        <div class=\"pdg-next-links\" id=\"pdg-next-links\"><\/div>\n\n        <div class=\"pdg-cta\" id=\"pdg-cta\">\n            <p>Keep your finished pool spotless with minimal effort.<\/p>\n            <a href=\"https:\/\/aiper.store\/us\/products\/aiper-scuba-x1-pro-max-cordless-robotic-pool-cleaner?utm_source=google&amp;utm_medium=organic&amp;utm_campaign=blog_seo\">Explore the Aiper Scuba X1 Pro Max<\/a>\n        <\/div>\n\n        <div class=\"pdg-print-wrap\">\n            <button type=\"button\" id=\"pdg-print-btn\">Print \/ save this design<\/button>\n        <\/div>\n    <\/div>\n<\/div>\n\n<h2>Modern pools favor clean lines and infinity edges<\/h2>\n\n<p>Backyard pool design in 2026 leans toward restraint rather than ornamentation. Straight coping lines, glass safety fencing, and a tight two- or three-color material palette read as an extension of the house rather than a separate feature bolted onto the yard. The most requested look pairs a dark, reflective interior finish with pale stone decking, so the water reads as a mirror instead of the classic bright turquoise.<\/p>\n\n<p>Alongside minimalism, resort-style backyards remain popular for families who want a built-in vacation feel: layered water (a raised spa spilling into the main pool), dense subtropical planting for privacy, and a shaded lounge zone positioned so the pool is visible but not the main event from every window. Natural, chemical-free pools are the fastest-growing niche \u2014 a gravel and plant-based regeneration zone replaces most of the chemical dosing, at the cost of a larger footprint and more specialized construction.<\/p>\n\n<h2>Your yard&#8217;s surroundings and terrain decide which pool works best<\/h2>\n\n<p>Before picking a shape, match the pool to what your yard can actually hold and how it sits on the land. A shape that looks stunning on a flat, open lot can be a poor fit on a wooded, sloped, or boulder-strewn site.<\/p>\n\n<h3>Site terrain drives your excavation budget more than shape does<\/h3>\n\n<p>A flat, easily-accessible pad keeps excavation costs at their baseline. Hilly or sloped sites typically need retaining walls and engineered drainage, and a boulder-strewn site can turn rock removal into the single biggest line item in the entire build \u2014 always get a site inspection before finalizing a budget on anything other than flat, open ground.<\/p>\n\n<h3>Free Form and Kidney shapes hide the edges of irregular yards<\/h3>\n\n<p>Curved Free Form and Kidney shapes forgive an irregular lot line, a mature tree you need to build around, or a sloped section you would rather landscape than excavate. The trade-off is cost: curved coping and custom tile work run higher than a straight-edge pool of the same surface area.<\/p>\n\n<h3>Rectangle, Grecian, and Roman End suit a more classic look<\/h3>\n\n<p>A straight Rectangle is the most space-efficient shape and the easiest to fence, cover, and heat evenly. Grecian (a rectangle with clipped corners) and Roman End (a rectangle with a rounded end) keep that same efficiency while softening the look with a bit of extra stonework.<\/p>\n\n<h2>Construction material changes both cost and how long your pool lasts<\/h2>\n\n<p>Concrete (gunite\/shotcrete) shells are fully customizable to any shape and the most durable, at the highest upfront cost. Fiberglass shells install fastest and have a smooth, non-porous surface, but are limited to the manufacturer&#8217;s pre-made shapes and sizes. Vinyl-lined pools have the lowest upfront cost, but the liner typically needs replacing every 7-10 years. If you&#8217;re not sure yet, our tool uses a blended average across all three so your estimate stays realistic either way.<\/p>\n\n<h2>Non-slip decking materials keep pool decks safe in every season<\/h2>\n\n<p>The single biggest safety factor in pool design is not the shape \u2014 it is the deck surface. Stamped concrete, natural stone (travertine, sandstone), and textured porcelain pavers all provide the non-slip texture a wet deck needs, while polished stone and dark-colored materials should be avoided: dark surfaces get uncomfortably hot in direct sun, and polished finishes turn dangerously slick when splashed. A rounded &#8220;bullnose&#8221; edge on the coping is the standard choice at the water line, since it will not snag bare feet or swimsuits the way a square edge can.<\/p>\n\n<h2>Your climate and local code shape practical pool choices<\/h2>\n\n<p>Two location-specific factors change a pool build more than most homeowners expect. The first is climate: in four-season regions, automated heating (Pool Controls) can extend a usable swim season from three or four months to nearly year-round, while homes in consistently warm climates often skip heating altogether and put that budget toward other features instead. Enter your postal code and the tool will flag whether heating is worth prioritizing for your area.<\/p>\n\n<p>The second is local safety code. Pool safety fencing is a legal requirement across most of Australia, and many US states and municipalities mandate a fence, self-latching gate, or approved pool cover as well \u2014 requirements vary by jurisdiction, so confirm your local code before finalizing a design that skips the Pool Safety feature.<\/p>\n\n<h2>Smart systems cut weekly pool maintenance to minutes<\/h2>\n\n<p>Automated water testing and dosing, app-controlled lighting and Pool Controls, and a robotic pool cleaner together remove most of the recurring manual work a pool used to demand. Rather than testing chemistry by hand and manually vacuuming the floor and walls every week, an automated system flags chemical drift before it becomes visible, and a robotic cleaner handles floor, wall, and waterline debris on its own schedule \u2014 which matters most for the larger surface areas that come with resort-style and Free Form designs.<\/p>\n\n<h2>Three contractor quotes protect your pool budget<\/h2>\n\n<p>The layout and cost estimate above are a planning-stage starting point, not a final quote. Site conditions \u2014 soil type, slope, access for equipment, and local permit requirements \u2014 can shift a real quote well outside any generic per-square-foot estimate. Bring your generated spec sheet to at least three licensed local contractors, and compare like-for-like: the same shell material, decking, and feature list, not just the bottom-line number.<\/p>\n\n<h2>Pool design options at a glance<\/h2>\n\n<p>If you search &#8220;pool designer,&#8221; you will find software, online tools, AI generators, and local contractors \u2014 and a lot of them do not actually solve your problem. Here is how the main options compare so you can pick the right approach for where you are in your planning.<\/p>\n\n<div class=\"pdg-options-compare\">\n    <div class=\"pdg-options-grid\">\n        <div class=\"pdg-option-card pdg-option-active\">\n            <h3>This free tool <span class=\"pdg-option-best\">You are here<\/span><\/h3>\n            <p>Answer a few questions about your yard and preferences to get an instant concept visualization, spec sheet, and cost range. No sign-up, no software to learn, works on any device.<\/p>\n            <div class=\"pdg-option-pros\">\u2713 Free and instant \u00b7 \u2713 No account needed \u00b7 \u2713 Cost estimate included \u00b7 \u2713 Editable and printable<\/div>\n            <div class=\"pdg-option-cons\">\u2717 Concept image is curated photography, not a true 3D model \u00b7 \u2717 Does not replace a contractor site visit<\/div>\n        <\/div>\n        <div class=\"pdg-option-card\">\n            <h3>Professional pool design software<\/h3>\n            <p>Programs like Pool Studio or VIP3D \u2014 used by pool builders to produce photorealistic 3D renderings and engineering-grade plans. Powerful, but requires training and a paid license.<\/p>\n            <div class=\"pdg-option-pros\">\u2713 True 3D rendering \u00b7 \u2713 Accurate grading and plumbing plans \u00b7 \u2713 Direct contractor handoff<\/div>\n            <div class=\"pdg-option-cons\">\u2717 Paid ($1,000+\/yr) \u00b7 \u2717 Steep learning curve \u00b7 \u2717 Overkill for early planning<\/div>\n        <\/div>\n        <div class=\"pdg-option-card\">\n            <h3>AI pool design tools<\/h3>\n            <p>Tools like Beatbot&#8217;s AI designer generate concept images from prompts or yard photos. Good for brainstorming ideas, but the free tiers often produce generic or error-prone results.<\/p>\n            <div class=\"pdg-option-pros\">\u2713 Quick visual ideas \u00b7 \u2713 No design skill needed<\/div>\n            <div class=\"pdg-option-cons\">\u2717 Free versions unreliable \u00b7 \u2717 No cost estimate \u00b7 \u2717 Cannot export specs \u00b7 \u2717 Generic output<\/div>\n        <\/div>\n        <div class=\"pdg-option-card\">\n            <h3>Hire a pool designer directly<\/h3>\n            <p>A local pool design-build firm handles everything \u2014 site survey, 3D plans, permits, and construction. The most complete option, and also the most expensive upfront commitment.<\/p>\n            <div class=\"pdg-option-pros\">\u2713 Turnkey build \u00b7 \u2713 Handles permits \u00b7 \u2713 Site-specific engineering<\/div>\n            <div class=\"pdg-option-cons\">\u2717 Design fees $500-$2,500+ \u00b7 \u2717 Weeks of back-and-forth \u00b7 \u2717 Hard to compare across firms<\/div>\n        <\/div>\n    <\/div>\n    <p class=\"pdg-options-lead\">Most homeowners get the best result by starting with a free planning tool like this one \u2014 it gives you a clear spec to bring to contractors, so every quote you receive is based on the same design, not somebody else&#8217;s upsell. The tool above is built exactly for that gap between &#8220;I want a pool&#8221; and &#8220;I have three comparable quotes in hand.&#8221;<\/p>\n<\/div>\n\n<div class=\"pdg-next-steps\">\n    <h2>From design to dive: your next 5 steps<\/h2>\n    <p class=\"pdg-next-steps-intro\">You have a design and a cost range \u2014 here is exactly what to do next. Each step moves you from a screen to a signed contract, without wasting time on the wrong conversations.<\/p>\n    <div class=\"pdg-next-steps-grid\">\n        <div class=\"pdg-step-card\">\n            <div class=\"pdg-step-num\">1<\/div>\n            <div class=\"pdg-step-body\">\n                <h3>Get three comparable quotes from local contractors<\/h3>\n                <p>Print or save your spec sheet from this tool and send the same sheet to at least three licensed pool builders in your area. Ask each to quote the same shell material, same dimensions, same features, and same decking \u2014 if one quote comes back 30% lower, it is almost always because something was left out, not because they are cheaper. Comparing like-for-like is the single biggest money-saving move in the entire process.<\/p>\n            <\/div>\n        <\/div>\n        <div class=\"pdg-step-card\">\n            <div class=\"pdg-step-num\">2<\/div>\n            <div class=\"pdg-step-body\">\n                <h3>Check permits, setbacks, and HOA rules before you commit<\/h3>\n                <p>Most municipalities require a building permit for an inground pool, and many add specific setback distances from property lines, easements, and septic fields. If you live in an HOA-governed community, get written approval before excavation starts \u2014 verbal &#8220;it should be fine&#8221; from a neighbor does not count. Australia has a nationwide pool fencing mandate; many US states require a self-latching gate or approved safety cover. Your contractor should handle permits, but you are responsible for confirming what is required.<\/p>\n            <\/div>\n        <\/div>\n        <div class=\"pdg-step-card\">\n            <div class=\"pdg-step-num\">3<\/div>\n            <div class=\"pdg-step-body\">\n                <h3>Plan for the real build timeline \u2014 not the sales pitch<\/h3>\n                <p>A standard inground pool takes 8-12 weeks from excavation to fill, but that clock only starts after permits are issued, which can add 2-6 weeks depending on your jurisdiction. Concrete shells add curing time (28 days minimum before plaster or tile); vinyl and fiberglass installs are faster but still need decking, electrical, and fencing to finish. Custom shapes with curved coping, water features, or complex landscaping extend the timeline. If a contractor promises &#8220;done in four weeks,&#8221; ask which steps they are skipping.<\/p>\n            <\/div>\n        <\/div>\n        <div class=\"pdg-step-card\">\n            <div class=\"pdg-step-num\">4<\/div>\n            <div class=\"pdg-step-body\">\n                <h3>Budget for ongoing costs beyond construction<\/h3>\n                <p>The purchase price is not the last check you write. Annual maintenance \u2014 chemicals, cleaning, equipment electricity, and seasonal opening\/closing \u2014 runs roughly $1,200-$4,000 depending on pool size and your region. A robotic pool cleaner cuts weekly manual labor to near zero. Budget for a liner replacement (every 7-10 years for vinyl pools) or resurfacing (every 10-15 years for concrete) as a future capital expense, not a surprise repair.<\/p>\n            <\/div>\n        <\/div>\n        <div class=\"pdg-step-card\">\n            <div class=\"pdg-step-num\">5<\/div>\n            <div class=\"pdg-step-body\">\n                <h3>Finance smart: compare pool loans, HELOCs, and cash<\/h3>\n                <p>Pool financing typically comes in three forms: an unsecured pool loan (fast approval, higher rate), a home equity line of credit or HELOC (lower rate, uses your home as collateral), or cash-out refinancing. Unsecured pool loans are the most common route \u2014 rates in 2026 run roughly 7-12% APR depending on credit, with terms of 5-15 years. Run the numbers through our <a href=\"https:\/\/aiper.com\/blogs\/pool-loan-calculator\/\">pool loan calculator<\/a> before you talk to a lender, so you walk in knowing your monthly payment range, not theirs.<\/p>\n            <\/div>\n        <\/div>\n    <\/div>\n    <p class=\"pdg-next-steps-closing\"><strong>Bottom line:<\/strong> This tool gets you to the starting line with a concrete design and a realistic cost range. The five steps above get you from the starting line to a finished pool \u2014 with fewer surprises, less contractor runaround, and a contract you can actually compare against the numbers you see here. Use the generated spec sheet as your baseline for every quote, and do not let anyone sell you a &#8220;completely different design&#8221; before they have priced the one you already have.<\/p>\n<\/div>\n\n<h2>Frequently asked questions<\/h2>\n\n<h3>What&#8217;s the difference between Premade Layouts and Build Your Own Design?<\/h3>\n<p>Premade Layouts are ready-made design concepts \u2014 pick one and get an instant estimate based on a typical yard size for that layout. Build Your Own Design walks you through seven quick steps (Surrounding, Pad area, Size, Shape, Material, Style, Feature) so you can customize every option yourself. Selecting a premade layout and then choosing &#8220;Edit this pool&#8221; carries your selections into the wizard, so you can use a premade concept as a starting point and fine-tune it from there.<\/p>\n\n<h3>How accurate is the cost estimate from this tool?<\/h3>\n<p>The estimate is a planning-stage range based on 2026 regional market averages for shell construction, decking, and the features you select. It does not include permit fees, site excavation surprises such as rock or a high water table, or ongoing maintenance. Get quotes from at least three licensed local contractors before finalizing a budget.<\/p>\n\n<h3>Can this tool design an above-ground pool?<\/h3>\n<p>This generator is built around inground pool construction. Above-ground pools use the same shape and feature logic for layout purposes, but typically cost 60-80% less because they skip excavation and use a simpler shell \u2014 treat the cost estimate here as a ceiling, not a starting point, if you are considering an above-ground option.<\/p>\n\n<h3>Does the cost estimate include ongoing maintenance or financing?<\/h3>\n<p>Construction cost and annual maintenance are shown as two separate ranges, since maintenance is an ongoing cost that starts after the pool is built \u2014 expect roughly $1,200-$4,000 (or the local equivalent) per year depending on pool size and region. The financing figure shown is a rough monthly-payment estimate at a representative rate and term, not a loan offer; use our pool loan calculator for exact numbers based on your actual credit and lender terms.<\/p>\n\n<h3>Why is my yard too small for the size I chose?<\/h3>\n<p>Every design needs setback space for decking and safe access. If your yard dimensions cannot fit your chosen Size tier at a reasonable footprint, the tool automatically scales the layout down to the smallest practical size and shows a note above the concept image. Choosing a smaller Size tier usually fits significantly narrower yards.<\/p>\n\n<h3>How do I save or share my generated design?<\/h3>\n<p>Use the Print \/ save button below your results. It opens your browser&#8217;s print dialog with a clean, form-free summary of your layout, spec sheet, and cost estimate, which you can save as a PDF or print to bring to contractor consultations.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>LOADING&#8230; JS not yet executed Answer a few quick questions to get an instant concept visualization, spec sheet, and cost estimate \u2014 or browse ready-made layouts. Postal code (so we can customize your options based on your location) Continue Premade Layouts Browse ready-made design concepts and pick one that fits your space. Build Your Own&#8230;<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-6129","page","type-page","status-publish","hentry"],"lang":"en","translations":{"en":6129,"de":6188,"fr":6183,"es":6184},"_links":{"self":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/6129","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/comments?post=6129"}],"version-history":[{"count":22,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/6129\/revisions"}],"predecessor-version":[{"id":6643,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/6129\/revisions\/6643"}],"wp:attachment":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/media?parent=6129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}