.terrace-hero{background:var(--paper-soft);padding:20px 0 16px}.terrace-hero .h1{margin:0 0 12px;font-family:Hanken Grotesk,sans-serif;font-size:clamp(1.75rem,3vw,2.5rem);font-weight:700;line-height:1.15}.terrace-hero .lead{max-width:760px;margin:0}.terrace-hero .eyebrow{margin-bottom:8px}.terrace-page{background:var(--paper-soft);padding:0 0 64px}.terrace-noscript{border-radius:var(--radius);background:#fff3cd;border:1px solid #f0c674;margin:0 0 24px;padding:24px}.terrace-noscript h2{margin:0 0 8px;font-size:1.2rem}.terrace-configurator{gap:20px;display:grid}.terrace-stages{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.terrace-stages li{min-width:0;list-style:none}.terrace-stage-button{background:var(--white);width:100%;height:100%;color:var(--ink);cursor:pointer;text-align:left;border:1px solid #b5a68e;border-radius:12px;grid-template-columns:auto 1fr;gap:4px 10px;padding:12px;display:grid}.terrace-stage-button__index{color:#8b4328;font-weight:700}.terrace-stage-button__title{grid-column:2;font-weight:700}.terrace-stage-button__summary{color:#5e5549;grid-column:2;font-size:13px}.terrace-stages li.is-current .terrace-stage-button{background:#f8ede4;border-color:#8b4328;box-shadow:inset 0 -3px #8b4328}.terrace-errors{border-radius:var(--radius);background:#fff5f5;border:1px solid #f1c0c0;padding:16px 20px}.terrace-errors__title{color:#b3261e;margin:0 0 8px;font-weight:600}.terrace-errors ul{margin:0;padding-left:18px}.terrace-stage{background:var(--white);border:1px solid var(--line);border-radius:12px;padding:24px}.terrace-stage__title{margin:0 0 12px;font-size:1.4rem}.terrace-stage__title:focus{outline:2px solid var(--rust);outline-offset:4px}.terrace-form{grid-template-columns:minmax(260px,1fr) minmax(0,1.4fr);align-items:start;gap:24px;display:grid}.terrace-form__fields fieldset{border:1px solid var(--line);border-radius:12px;margin:0 0 12px;padding:12px 16px}.terrace-form__fields legend{padding:0 8px;font-weight:600}.terrace-form__fields .terrace-shapes,.terrace-form__fields .terrace-form__simple{border:0;border-radius:0;padding:0}.terrace-form__fields .terrace-shapes legend,.terrace-form__fields .terrace-form__simple legend{margin-bottom:8px;padding:0}.terrace-form__fields label{gap:4px;margin-bottom:8px;display:grid}.terrace-form__fields input[type=number]{border:1px solid var(--line);border-radius:8px;padding:6px 8px}.terrace-form__fields input[type=radio]{margin-right:8px}.terrace-form__preview{--terrace-preview-max-height:min(65vh, 420px);background:var(--paper);border-radius:12px;min-height:320px;padding:16px}.terrace-shapes__options{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.terrace-shapes__options button{color:var(--ink);background:var(--paper);font:inherit;cursor:pointer;border:1px solid #b5a68e;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:8px;font-weight:600;transition:background .18s,border-color .18s;display:flex}.terrace-shapes__options button:hover{background:#f8ede4}.terrace-shapes__options button[aria-pressed=true]{background:#f8ede4;border-color:#8b4328;box-shadow:inset 0 -3px #8b4328}.terrace-shapes__options svg{fill:#dfc7aa;stroke:#69472f;stroke-width:2px;flex:0 0 32px;width:32px;height:24px}.terrace-form__simple{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.terrace-configurator input[inputmode=decimal]{font-variant-numeric:tabular-nums;width:100%;min-width:0;min-height:48px;padding:10px 12px}.terrace-configurator input[aria-invalid=true]{border-color:#b3261e}.terrace-form__advanced{border-top:1px solid var(--line);margin-top:20px}.terrace-form__advanced>button{margin-bottom:8px}.terrace-editor[data-outline] .grid{opacity:.25}.terrace-editor[data-outline] .terrace-occupancy__rect{stroke:none}.terrace-editor[data-outline] .terrace-edge{cursor:default}.terrace-editor[data-outline] .terrace-dim__label{fill:var(--ink);stroke:#fff;stroke-width:60px;paint-order:stroke;stroke-linejoin:round;font-variant-numeric:tabular-nums;font-weight:600}.terrace-height label{gap:4px;margin-bottom:16px;display:grid}.terrace-height fieldset{border:1px solid var(--line);border-radius:12px;padding:12px 16px}.terrace-height legend{font-weight:600}.terrace-height label>input[type=radio]{margin-right:8px}.terrace-edges{gap:16px;display:grid}.terrace-edges__layout{grid-template-columns:minmax(0,2fr) minmax(240px,1fr);gap:16px;display:grid}.terrace-edge-panel{background:var(--paper);border-radius:12px;padding:16px}.terrace-edge-panel label{align-items:center;gap:8px;margin:8px 0;display:flex}.terrace-edge-panel fieldset{border:1px solid var(--line);border-radius:8px;margin:12px 0;padding:8px 12px}.terrace-edge-panel__id code{background:var(--paper);border-radius:4px;padding:2px 6px}.terrace-editor{position:relative}.terrace-editor__svg{border:1px solid var(--line);background:#fff;border-radius:12px;width:100%;height:auto;display:block}.terrace-editor__svg>g:not(.terrace-occupancy):not(.terrace-edges){pointer-events:none}.terrace-edge{cursor:pointer}.terrace-edge:focus{outline:2px solid var(--rust);outline-offset:2px}.terrace-dim__label{font-family:Hanken Grotesk,sans-serif;font-weight:500}.terrace-3d,.terrace-3d-fallback,.terrace-3d-loading{border-radius:12px;width:100%;min-height:320px}.terrace-3d{height:clamp(320px,38vw,460px);overflow:hidden}.terrace-3d-fallback,.terrace-3d-loading{color:#f4f4f4;background:#0b1720;justify-content:center;align-items:center;padding:24px;display:flex}.terrace-layers{background:var(--paper);border-radius:12px;padding:12px 16px}.terrace-layers__title{margin:0 0 8px;font-weight:600}.terrace-layers ul{flex-wrap:wrap;gap:8px 16px;margin:0;padding:0;list-style:none;display:flex}.terrace-layers label{align-items:center;gap:6px;display:flex}.terrace-stage-nav{gap:8px;display:grid}.terrace-stage-nav__row{justify-content:space-between;display:flex}.terrace-results{gap:24px;margin-top:24px;display:grid}.terrace-results section{background:var(--white);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px 24px}.terrace-results h3{margin:0 0 12px}.terrace-configurator,.terrace-stage,.terrace-results,.terrace-results>section{min-width:0}.terrace-table-wrap{-webkit-overflow-scrolling:touch;max-width:100%;overflow-x:auto}.terrace-bom{border-collapse:collapse;width:100%;font-size:14px}.terrace-bom th,.terrace-bom td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:8px 6px}.terrace-budget{border-collapse:collapse;width:100%}.terrace-budget th,.terrace-budget td{text-align:left;border-bottom:1px solid var(--line);padding:8px 6px}.terrace-budget__total td,.terrace-budget__total th{border-top:2px solid var(--line-strong);font-weight:700}.terrace-guide{gap:16px;margin:0;padding:0;list-style:none;display:grid}.terrace-guide__step{background:var(--paper);border-radius:12px;padding:16px}.terrace-guide__step h4{margin:0 0 6px;font-size:1.1rem}.terrace-guide__sources{color:var(--muted);margin-top:8px;font-size:13px}.terrace-warnings{background:#fff7e6;border:1px solid #f1c074;border-radius:8px;padding:8px 16px;list-style:outside}.terrace-warnings__inline{background:#fff7e6;border-left:3px solid #f1c074;border-radius:4px;padding:6px 10px}.terrace-results__export details summary{cursor:pointer;padding:8px 0}.terrace-results__export textarea{border:1px solid var(--line);border-radius:8px;width:100%;padding:8px;font-family:ui-monospace,monospace;font-size:13px}.terrace-project-summary{color:#5e5549;border-bottom:1px solid var(--line);flex-wrap:wrap;gap:8px 20px;margin-bottom:16px;padding-bottom:16px;font-size:14px;display:flex}.terrace-project-summary span:first-child{color:var(--ink);font-weight:700}.terrace-project-summary span:last-child{margin-left:auto}.terrace-configurator[data-stage=form] .terrace-project-summary{border-top:1px solid var(--line);border-bottom:0;margin:16px 0 0;padding:16px 0 0}.terrace-price-range{color:var(--ink);font-variant-numeric:tabular-nums;margin:16px 0 4px;font-family:Newsreader,serif;font-size:clamp(1.9rem,4vw,3rem);line-height:1.15}.terrace-price-range span{color:#5e5549;font:500 1rem Hanken Grotesk,sans-serif}.terrace-price-caption{color:#5e5549;margin-top:0}.terrace-results .terrace-results__budget{box-shadow:none;background:#f8f4ea;border:1px solid #b5a68e}.terrace-budget{font-variant-numeric:tabular-nums}.terrace-budget caption{text-align:left;padding-bottom:8px;font-weight:600}.terrace-budget td{text-align:right;white-space:nowrap}.terrace-assumptions{margin:20px 0}.terrace-configurator summary{cursor:pointer;padding:10px 0;font-weight:600}.terrace-configurator :is(button,input,select,textarea,a,summary):focus-visible{outline-offset:3px;outline:3px solid #8b4328}.terrace-configurator :is(input,select,textarea){color:var(--ink);font:inherit;background:#fff;border:1px solid #9c8e78;border-radius:8px}.terrace-configurator :is(input[type=number],select){max-width:100%;min-height:44px;padding:8px 10px}.terrace-configurator button{min-height:44px}.terrace-configurator .cta{white-space:nowrap}.terrace-configurator button:disabled{opacity:.6;cursor:not-allowed}.terrace-configurator .muted{color:#5e5549}.terrace-edge-select{gap:8px;margin-bottom:16px;font-weight:600;display:grid}.terrace-export-actions{flex-wrap:wrap;gap:12px;margin:16px 0;display:flex}.terrace-results__export label{margin:16px 0 8px;display:block}.terrace-explainer{max-width:800px;font-size:18px;line-height:1.7}.terrace-explainer h2{margin:40px 0 20px;line-height:1.2}.terrace-explainer h2:first-child{margin-top:0}.terrace-explainer h3{margin:28px 0 12px;line-height:1.3}.terrace-help-links{flex-wrap:wrap;gap:8px 24px;margin-top:12px;display:flex}.terrace-help-links a{text-underline-offset:4px;align-items:center;min-height:44px;display:inline-flex}.terrace-instructions{margin:0;padding:0;list-style:none}.terrace-instructions li,.terrace-explainer h2,.terrace-faq{scroll-margin-top:120px}.terrace-example{max-width:600px;margin:32px 0}.terrace-example img{width:100%;height:auto;display:block}.terrace-example figcaption{color:var(--muted);margin-top:12px;font-size:15px;line-height:1.6}.terrace-faq{margin-top:40px}.terrace-faq details{border-top:1px solid var(--line)}.terrace-faq details:last-child{border-bottom:1px solid var(--line)}.terrace-faq summary{cursor:pointer;min-height:44px;padding:16px 0;font-weight:600}.terrace-faq details p{margin:0 0 20px}.terrace-help-links a:focus-visible,.terrace-faq summary:focus-visible{outline:3px solid var(--rust);outline-offset:3px}.terrace-review>.terrace-editor{max-width:900px;margin:0 auto 16px}@media print{.terrace-configurator{display:block}body>header,body>footer,main>section:not(.terrace-page),.terrace-no-print,.terrace-layers,.terrace-stage-nav,.terrace-stages,.terrace-form__view-toggle,.terrace-3d{display:none!important}.terrace-stage,.terrace-results section{box-shadow:none;border:0;margin-bottom:20px;padding:0}.terrace-form,.terrace-edges__layout{grid-template-columns:1fr}.terrace-page{background:#fff;padding:0}.terrace-results .terrace-results__budget{background:#fff;border:0}.terrace-table-wrap{overflow:visible}.terrace-bom tr,.terrace-budget tr,.terrace-editor{break-inside:avoid}.terrace-price-range{font-size:24pt}.terrace-review>.terrace-editor{max-width:600px}.terrace-form__preview{background:#fff}.terrace-editor__svg{border:0}}@media (width<=900px){.terrace-form,.terrace-edges__layout{grid-template-columns:1fr}}@media (width<=600px){.terrace-hero{padding-top:20px}.terrace-stages{gap:5px}.terrace-stage-button{text-align:center;border-radius:8px;grid-template-columns:auto auto;justify-content:center;gap:4px;padding:8px 2px}.terrace-stage-button__title{grid-column:2;font-size:14px}.terrace-stage-button__summary{display:none}.terrace-stage,.terrace-results section{padding:16px}.terrace-form__preview{min-height:0;padding:8px}.terrace-project-summary{gap:4px 16px}.terrace-project-summary span:last-child{flex-basis:100%;margin-left:0}.terrace-stage-nav__row{gap:12px}.terrace-bom{min-width:520px}}
