:root{--paper:#f3efe7;--paper-2:#eae4d8;--paper-3:#ddd5c5;--ink:#1c2833;--ink-2:#3a4650;--ink-3:#6b7680;--brass:#a8874f;--brass-2:#c9ab72;--brass-3:#a8874f29;--moss:#4e6b52;--moss-2:#4e6b5229;--sky:#bcd3de;--warn:#b8432a;--ok:#3f7d4f;--line:#1c283329;--line-2:#1c283357;--serif:"Cormorant Garamond", Georgia, serif;--f:"Manrope", "Helvetica Neue", Arial, sans-serif;--mono:"JetBrains Mono", Consolas, monospace;--r:4px;--sh:0 18px 40px #1c28332e, 0 1px 2px #1c283324}*{box-sizing:border-box}html,body{background:var(--paper);height:100%;color:var(--ink);font-family:var(--f);-webkit-font-smoothing:antialiased;margin:0;font-size:13px;line-height:1.4;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0;padding:0}button:focus-visible,[tabindex]:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--brass);outline-offset:2px}#stage{touch-action:none;width:100%;height:100%;display:block;position:fixed;inset:0}.overlay{pointer-events:none;width:100%;height:100%;font-family:var(--mono);position:fixed;inset:0}.overlay .handle{fill:var(--paper);stroke:var(--brass);stroke-width:2px;pointer-events:all;cursor:grab;filter:drop-shadow(0 2px 4px #00000059)}.overlay .handle:active{cursor:grabbing}.overlay .dimline{stroke:#fff;stroke-width:1.1px;opacity:.9}.overlay .tick{stroke:#fff;stroke-width:1px;opacity:.9}.overlay .dimtxt{fill:#fff;text-anchor:middle;paint-order:stroke;stroke:#1c2833bf;stroke-width:4px;stroke-linejoin:round;pointer-events:all;cursor:text;font-size:13px;font-weight:500}.overlay .dimtxt.live{fill:var(--brass-2)}.overlay .facade{fill:#c9ab721f;stroke:var(--brass-2);stroke-width:1.2px;stroke-dasharray:5 4;pointer-events:all;cursor:pointer}.overlay .facade:hover,.overlay .facade.on{fill:#c9ab724d}.overlay .flabel{fill:#fff;letter-spacing:.14em;text-anchor:middle;paint-order:stroke;stroke:#1c2833bf;stroke-width:3px;pointer-events:none;font-size:11px}.overlay .zone{fill:#4e6b5229;stroke:var(--moss);stroke-width:1px;stroke-dasharray:4 3}.overlay .zone.warn{fill:#b8432a29;stroke:var(--warn)}#ui{pointer-events:none;position:fixed;inset:0}#ui>*{pointer-events:auto}#ui>.landing{pointer-events:none}.brand{color:#fff;text-shadow:0 1px 10px #00000073;flex-direction:column;display:flex;position:fixed;top:16px;left:22px}.brand .word{font-family:var(--serif);letter-spacing:.34em;font-size:20px;font-weight:600;line-height:1}.brand .sub{letter-spacing:.22em;opacity:.85;text-transform:uppercase;margin-top:4px;font-size:10px}.topright{align-items:center;gap:6px;display:flex;position:fixed;top:14px;right:16px}.icobtn{width:36px;height:36px;color:var(--ink);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#f3efe7eb;border:1px solid #ffffffb3;border-radius:3px;place-items:center;display:grid;box-shadow:0 2px 8px #00000024}.icobtn svg{stroke:currentColor;fill:none;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:16px;height:16px}.icobtn:disabled{opacity:.4;cursor:default}.lang{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#f3efe7eb;border-radius:3px;display:flex;overflow:hidden;box-shadow:0 2px 8px #00000024}.lang button{letter-spacing:.1em;height:36px;color:var(--ink-3);padding:0 10px;font-size:11px;font-weight:600}.lang button.on{background:var(--ink);color:var(--paper)}.roofline{pointer-events:auto;width:min(560px,100% - 300px);height:104px;position:fixed;top:10px;left:50%;transform:translate(-50%)}.roofline svg{width:100%;height:100%;overflow:visible}.roofline .sil{fill:#1c283347;stroke:var(--brass-2);stroke-width:1.6px;stroke-linejoin:round;transition:d .5s cubic-bezier(.2,.7,.2,1)}.roofline .glass{fill:#bcd3de38}.roofline .rafter{stroke:#c9ab728c;stroke-width:.8px}.roofline .node{cursor:pointer}.roofline .node circle{fill:var(--paper);stroke:var(--brass-2);stroke-width:2px;transition:r .15s,fill .15s}.roofline .node:hover circle{r:7}.roofline .node.on circle{fill:var(--brass-2);r:7.5}.roofline .node text{fill:#fff;letter-spacing:.18em;text-anchor:middle;paint-order:stroke;stroke:#1c2833cc;stroke-width:3px;stroke-linejoin:round;pointer-events:none;font-size:9.5px;font-weight:700}.roofline .node.on text{fill:var(--brass-2)}.roofline .node rect{fill:#0000}.roofline .ridge{cursor:ns-resize}.roofline .ridge circle{fill:var(--brass-2);stroke:#fff;stroke-width:2px}.roofline .ridge:hover circle{r:8}.roofline .ridge text{fill:var(--brass-2);font-family:var(--mono);text-anchor:middle;paint-order:stroke;stroke:#1c2833cc;stroke-width:3px;pointer-events:none;font-size:10px}.roofline .ground{stroke:#ffffff8c;stroke-width:1px;stroke-dasharray:3 3}.roofline .meta{text-align:center;color:#fff;font-family:var(--mono);letter-spacing:.1em;text-shadow:0 1px 6px #00000080;pointer-events:none;white-space:nowrap;font-size:10px;position:absolute;bottom:-18px;left:0;right:0}.views{flex-direction:column;gap:4px;display:flex;position:fixed;top:86px;left:22px}.views button{color:#fff;letter-spacing:.16em;text-align:left;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#1c28338c;border:1px solid #ffffff1f;border-radius:3px;align-items:center;gap:8px;height:30px;padding:0 12px 0 10px;font-size:10px;font-weight:600;transition:background .15s;display:flex}.views button:before{content:"";background:var(--brass-2);opacity:.5;border-radius:50%;width:6px;height:6px}.views button:hover{background:#1c2833cc}.views button.on{background:var(--brass);border-color:var(--brass-2)}.views button.on:before{opacity:1;background:#fff}.folio{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:var(--r);width:372px;box-shadow:var(--sh);opacity:0;border-left:3px solid var(--brass);background:#f3efe7f5;flex-direction:column;transition:transform .38s cubic-bezier(.2,.7,.2,1),opacity .3s;display:flex;position:fixed;top:128px;bottom:24px;right:18px;transform:translate(120%)}.folio.open{opacity:1;transform:none}.folio .head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-end;padding:16px 18px 10px;display:flex}.folio .head h2{font-family:var(--serif);color:var(--ink);margin:0;font-size:26px;font-weight:600;line-height:1}.folio .head small{font-family:var(--f);letter-spacing:.2em;text-transform:uppercase;color:var(--brass);margin-bottom:6px;font-size:10px;display:block}.folio .body{flex:1;padding:12px 18px 22px;overflow:auto}.sec{margin:0 0 16px}.sec h3{letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);justify-content:space-between;align-items:baseline;margin:0 0 8px;font-size:10px;font-weight:700;display:flex}.note{color:var(--ink-3);margin:6px 0 0;font-size:11px;line-height:1.45}.note.strong{color:var(--ink-2)}.note.warn{color:var(--warn)}.tag{font-family:var(--mono);letter-spacing:.06em;border:1px solid var(--line-2);color:var(--ink-2);vertical-align:middle;border-radius:2px;padding:2px 7px;font-size:10px;display:inline-block}.tag.data{color:var(--warn);border-color:#b8432a80}.tag.est{color:var(--brass);border-color:#a8874f99}.tag.viz{color:var(--moss);border-color:#4e6b5299}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{background:var(--paper-2);border:1px solid var(--line);height:32px;color:var(--ink-2);border-radius:3px;align-items:center;gap:6px;padding:0 12px;font-size:11.5px;font-weight:600;transition:background .12s;display:inline-flex}.chip:hover{background:var(--paper-3)}.chip.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.chip .sw{border:1px solid #0003;border-radius:2px;width:14px;height:14px}.chip.sm{height:26px;padding:0 9px;font-size:10.5px}.chip:disabled{opacity:.45;cursor:default}.field{grid-template-columns:1fr auto;align-items:center;gap:8px;margin:0 0 8px;display:grid}.field label{color:var(--ink-2);font-size:11.5px;font-weight:500}.field input[type=number],.field select,.field input[type=text],.field input[type=email],.field input[type=tel],.field textarea{border:1px solid var(--line-2);height:32px;font-family:var(--mono);background:#fff;border-radius:3px;min-width:96px;padding:0 8px;font-size:12px}.field textarea{min-height:64px;font-family:var(--f);width:100%;padding:6px 8px}.field.full{grid-template-columns:1fr}.field.full input,.field.full textarea{width:100%}.range{grid-template-columns:1fr 64px;align-items:center;gap:10px;margin:0 0 10px;display:grid}.range label{color:var(--ink-2);grid-column:1/-1;justify-content:space-between;font-size:11.5px;display:flex}.range label b{font-family:var(--mono);color:var(--ink);font-weight:500}.range input[type=range]{width:100%;accent-color:var(--brass)}.range output{font-family:var(--mono);text-align:right;font-size:12px}.stat{grid-template-columns:repeat(3,1fr);gap:6px;margin:6px 0 12px;display:grid}.stat div{background:var(--paper-2);border-radius:3px;padding:8px 10px}.stat b{font-family:var(--mono);color:var(--ink);font-size:13px;font-weight:500;display:block}.stat span{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-size:10px}.btn{background:var(--ink);height:38px;color:var(--paper);letter-spacing:.1em;text-transform:uppercase;border-radius:3px;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-size:12px;font-weight:700;transition:transform .12s,background .12s;display:inline-flex}.btn:hover{background:#2b3a48}.btn:active{transform:translateY(1px)}.btn.brass{background:var(--brass);color:#fff}.btn.brass:hover{background:#91743f}.btn.ghost{color:var(--ink);border:1px solid var(--line-2);background:0 0}.btn.ghost:hover{background:var(--paper-2)}.btn.sm{height:32px;padding:0 12px;font-size:11px}.btn.wide{width:100%}.btn:disabled{opacity:.45;cursor:default;transform:none}.btnrow{flex-wrap:wrap;gap:8px;margin:8px 0;display:flex}.bar{background:var(--paper-2);border-radius:3px;height:34px;margin:6px 0 10px;position:relative;overflow:hidden}.bar>i{background:var(--brass-3);transition:width .2s;position:absolute;top:0;bottom:0;left:0}.bar>span{font-size:11px;font-family:var(--mono);justify-content:space-between;align-items:center;padding:0 10px;display:flex;position:absolute;inset:0}.rules{margin:0;padding:0;list-style:none}.rules li{border-bottom:1px solid var(--line);color:var(--ink-2);align-items:flex-start;gap:8px;padding:5px 0;font-size:11px;display:flex}.rules li .lv{font-family:var(--mono);letter-spacing:.06em;white-space:nowrap;border-radius:2px;margin-top:1px;padding:1px 5px;font-size:9px}.lv.CONFLICT{color:var(--warn);background:#b8432a24}.lv.REVIEW{background:var(--brass-3);color:var(--brass)}.lv.MISSING_DATA{color:var(--ink-3);background:#1c283314}.lv.VALID{color:var(--ok);background:#3f7d4f24}table.sched{border-collapse:collapse;width:100%;font-family:var(--mono);font-size:10.5px}table.sched th{text-align:left;color:var(--ink-3);letter-spacing:.06em;border-bottom:1px solid var(--line-2);font-weight:500;font-family:var(--f);text-transform:uppercase;padding:4px;font-size:9.5px}table.sched td{border-bottom:1px solid var(--line);vertical-align:top;padding:4px}table.sched td.r{text-align:right}.drawing{border:1px solid var(--line);background:#fff;border-radius:3px;margin:6px 0 10px;overflow:hidden}.drawing svg{width:100%;height:auto;display:block}.price-line{border-bottom:1px solid var(--line);justify-content:space-between;padding:5px 0;font-size:12px;display:flex}.price-line b{font-family:var(--mono);font-weight:500}.price-total{justify-content:space-between;align-items:baseline;padding:10px 0 4px;display:flex}.price-total b{font-family:var(--serif);color:var(--ink);font-size:30px;font-weight:600}.facade-pick{grid-template-columns:repeat(3,1fr);gap:6px;margin:0 0 10px;display:grid}.facade-pick button{background:var(--paper-2);border:1px solid var(--line);border-radius:3px;flex-direction:column;align-items:center;gap:4px;padding:10px 6px;font-size:11px;font-weight:600;display:flex}.facade-pick button small{font-family:var(--mono);color:var(--ink-3);font-size:10px;font-weight:400}.facade-pick button.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.facade-pick button.on small{color:var(--brass-2)}.toggle{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;padding:8px 0;font-size:12px;display:flex}.toggle .sw{background:var(--paper-3);border-radius:11px;flex:none;width:38px;height:22px;transition:background .15s;position:relative}.toggle .sw:after{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .15s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #0000004d}.toggle.on .sw{background:var(--moss)}.toggle.on .sw:after{transform:translate(16px)}.seal{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:var(--sh);border-left:3px solid var(--brass);cursor:pointer;background:#f3efe7f0;border-radius:3px;align-items:center;gap:14px;padding:10px 14px;display:flex;position:fixed;bottom:22px;left:22px}.seal .amt{font-family:var(--serif);font-size:24px;font-weight:600;line-height:1}.seal .st{letter-spacing:.18em;text-transform:uppercase;color:var(--brass);margin-bottom:3px;font-size:9px;font-weight:700;display:block}.seal .st.warn{color:var(--warn)}.seal .sub{color:var(--ink-3);font-size:10px;font-family:var(--mono)}.seal .cta{height:34px}.status{gap:6px;display:flex;position:fixed;bottom:96px;left:22px}.status span{font-family:var(--mono);letter-spacing:.1em;color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#1c2833b3;border-radius:2px;padding:4px 8px;font-size:10px}.status span.CONFLICT{background:var(--warn)}.status span.REVIEW{background:var(--brass)}.status span.MISSING_DATA{background:#1c2833b3}.status span.VALID{background:var(--ok)}.garden-btn{color:#fff;letter-spacing:.2em;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#1c2833b8;border:1px solid #c9ab7280;border-radius:3px;align-items:center;gap:12px;height:44px;padding:0 22px;font-size:12px;font-weight:700;display:none;position:fixed;bottom:132px;left:22px;box-shadow:0 10px 30px #0000004d}.garden-btn.show{display:flex}.garden-btn:hover{background:#1c2833e6}.garden-btn .k{font-family:var(--mono);color:var(--brass-2);font-size:11px;font-weight:400}.hint{color:#ffffffbf;font-family:var(--mono);letter-spacing:.08em;text-shadow:0 1px 6px #00000080;pointer-events:none;font-size:10px;position:fixed;bottom:10px;right:18px}.toast{background:var(--ink);color:var(--paper);opacity:0;pointer-events:none;z-index:20;box-shadow:var(--sh);border-left:3px solid var(--brass);border-radius:3px;padding:9px 14px;font-size:12px;transition:opacity .2s,transform .2s;position:fixed;top:128px;left:50%;transform:translate(-50%,-8px)}.toast.show{opacity:1;transform:translate(-50%)}.tierchip{font-family:var(--mono);letter-spacing:.1em;color:#ffffffb3;text-shadow:0 1px 6px #00000080;pointer-events:none;font-size:9.5px;position:fixed;top:58px;right:18px}.landing{z-index:5;background:linear-gradient(90deg,#1c28339e 0%,#1c283347 45%,#0000 75%);flex-direction:column;justify-content:flex-end;padding:0 0 64px 64px;transition:opacity .5s;display:flex;position:fixed;inset:0}.landing>*{pointer-events:auto}.landing.out{opacity:0;pointer-events:none!important}.landing.out>*{pointer-events:none}.landing .eyebrow{color:var(--brass-2);letter-spacing:.34em;text-transform:uppercase;margin-bottom:14px;font-size:11px;font-weight:700}.landing h1{font-family:var(--serif);color:#fff;text-shadow:0 2px 20px #0006;max-width:12ch;margin:0 0 6px;font-size:clamp(38px,6vw,82px);font-weight:500;line-height:.98}.landing h1 em{color:var(--brass-2);font-style:italic}.landing p{color:#ffffffe0;text-shadow:0 1px 8px #00000080;max-width:46ch;margin:12px 0 26px;font-size:15px}.landing .cta{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.landing .cta .btn{height:50px;padding:0 26px;font-size:12.5px}.landing .cta .btn small{letter-spacing:.04em;text-transform:none;opacity:.8;margin-left:6px;font-size:11px;font-weight:400;display:block}.landing .cta .btn.glass{color:#fff;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#f3efe724;border:1px solid #fff6}.landing .cta .btn.glass:hover{background:#f3efe742}.landing .facts{color:#fffc;font-family:var(--mono);gap:26px;margin-top:30px;font-size:11px;display:flex}.landing .facts b{font-family:var(--serif);color:#fff;font-size:26px;font-weight:600;display:block}.modal{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:30;background:#1c28338c;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal .card{background:var(--paper);border-radius:var(--r);width:min(560px,100%);max-height:92vh;box-shadow:var(--sh);border-top:3px solid var(--brass);padding:22px 24px;overflow:auto}.modal .card.wide{width:min(1040px,100%)}.modal h2{font-family:var(--serif);margin:0 0 4px;font-size:28px;font-weight:600}.modal .sub{color:var(--ink-3);margin:0 0 14px;font-size:12px}.photo-stage{-webkit-user-select:none;user-select:none;touch-action:none;background:#111;border-radius:3px;position:relative;overflow:hidden}.photo-stage canvas{width:100%;height:auto;display:block}.photo-stage svg{width:100%;height:100%;position:absolute;inset:0}.photo-stage .pt{fill:#c9ab72d9;stroke:#fff;stroke-width:2px;cursor:move}.photo-stage .clip{position:absolute;inset:0;overflow:hidden}.photo-stage .slider{background:#fff;width:2px;position:absolute;top:0;bottom:0;box-shadow:0 0 8px #0009}.photo-stage .slider:after{content:"⇔";width:34px;height:34px;color:var(--ink);background:#fff;border-radius:50%;place-items:center;font-weight:700;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.photo-stage .lbl{font-family:var(--mono);letter-spacing:.14em;color:#fff;background:#1c2833b3;border-radius:2px;padding:3px 8px;font-size:10px;position:absolute;top:8px}.sr{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.cine{pointer-events:none;z-index:8;position:fixed;inset:0}.cine .cap{color:#fff;font-family:var(--serif);text-shadow:0 2px 16px #00000080;opacity:0;font-size:clamp(28px,4vw,54px);font-weight:500;transition:opacity .8s;position:absolute;bottom:76px;left:64px}.cine .cap.show{opacity:1}.cine .skip{pointer-events:auto;position:absolute;bottom:18px;right:18px}body.cinematic .roofline,body.cinematic .folio,body.cinematic .seal,body.cinematic .views,body.cinematic .topright,body.cinematic .garden-btn,body.cinematic .status,body.cinematic .hint,body.cinematic .tierchip{opacity:0;pointer-events:none}body.tech .views,body.landing .views,body.landing .seal,body.landing .status,body.landing .garden-btn,body.landing .hint,body.landing .tierchip,body.landing .roofline .meta{display:none}.gallery{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.gallery img{border-radius:3px;width:100%;display:block}.gallery figure{margin:0}.gallery figcaption{letter-spacing:.08em;color:var(--ink-3);margin-top:4px;font-size:10px}.sheet-grip{display:none}@media (width<=900px){.roofline{width:calc(100% - 24px);height:74px;top:52px;left:12px;transform:none}.roofline .node text{letter-spacing:.1em;font-size:8.5px}.roofline .meta{display:none}.brand{top:10px;left:14px}.brand .word{font-size:16px}.topright{top:8px;right:10px}.topright .icobtn,.lang button{width:32px;height:32px}.lang button{width:auto;padding:0 8px}.views{flex-flow:wrap;gap:4px;max-width:calc(100% - 20px);top:auto;bottom:14px;left:10px}body.folio-open .views{bottom:calc(42vh + 8px)}.views button{letter-spacing:.1em;height:26px;padding:0 9px;font-size:9px}.folio{border-left:0;border-top:3px solid var(--brass);border-radius:10px 10px 0 0;width:100%;height:42vh;inset:auto 0 0;transform:translateY(110%)}.folio.open{transform:none}.folio .head{padding:10px 16px 8px}.folio .head h2{font-size:20px}.folio .body{padding:8px 16px 18px}.sheet-grip{background:var(--line-2);border-radius:2px;width:40px;height:4px;margin:6px auto 0;display:block}.seal{gap:8px;padding:6px 10px;top:136px;bottom:auto;left:10px}.seal .amt{font-size:17px}.seal .cta{display:none}.status{top:190px;bottom:auto;left:10px}.status span{padding:3px 6px;font-size:9px}.garden-btn{letter-spacing:.12em;height:38px;padding:0 12px;font-size:10px;inset:136px 10px auto auto}.hint,.tierchip{display:none}.landing{background:linear-gradient(#0000 20%,#1c28334d 45%,#1c2833c7 100%);padding:0 20px 34px}.landing h1{font-size:clamp(34px,11vw,52px)}.landing p{font-size:13px}.landing .facts{gap:16px}.landing .facts b{font-size:20px}.landing .cta .btn{height:46px;padding:0 16px;font-size:11.5px}.modal .card{padding:16px}.toast{top:136px}}@media (width<=900px) and (orientation:landscape){.folio{height:60vh}.views{flex-direction:column;top:132px;bottom:auto}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}
