@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/ba9851c3c22cd980-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/21350d82a1f187e9-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/c5fe6dc8356a8c31-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/19cfc7226ec3afaa-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/df0a9ae256c0569c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/8e9860b6e62d6359-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/e4af272ccee01ff0-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Inter Fallback;src:local("Arial");ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.00%;size-adjust:107.12%}.__className_d8ebd1{font-family:Inter,Inter Fallback;font-style:normal}.__variable_d8ebd1{--font-inter:"Inter","Inter Fallback"}*{box-sizing:border-box;margin:0;padding:0}:root{--brand:#0a0b0d;--brand-hover:#2a2d33;--brand-soft:#eceef1;--on-brand:#ffffff;--bg:#f6f7f8;--bg-subtle:#f1f2f4;--surface:#ffffff;--border:#e6e8ec;--border-strong:#d3d6dc;--text:#0a0b0d;--text-muted:#5b6069;--ring:rgba(10,11,13,0.12);--ok:#1d7a3e;--ok-soft:#e6f4ea;--warn:#8a5a00;--warn-soft:#fdf1d8;--warn-strong:#b45309;--error:#b42318;--error-soft:#fdecea;--sun:#e3b341;--sun-text:#8a6400;--sun-soft:#fbf1d6;--selection:#1f6fd1;--selection-soft:#e5effb;--sky:#bdd7f0;--sky-night:#0b1020;--neighbour:#a0a0b0;--ground:#8d7a66;--fs-xs:0.75rem;--fs-sm:0.875rem;--fs-md:1rem;--fs-lg:1.25rem;--fs-xl:1.5rem;--fs-2xl:2rem;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-6:24px;--s-8:32px;--s-12:48px;--radius-control:10px;--radius-card:16px;--radius-pill:999px;--radius-panel:20px;--shadow-card:0 1px 2px rgba(10,11,13,0.04),0 6px 20px rgba(10,11,13,0.04);--shadow-overlay:0 16px 40px rgba(10,11,13,0.14);--glass:rgba(246,247,248,0.84);--glass-blur:14px;--landing-bg:#eaf1fa;--landing-bg-2:#fbf4e8;--landing-glow-a:rgba(90,150,255,0.34);--landing-glow-b:rgba(255,190,90,0.4);--landing-glow-c:rgba(150,120,255,0.2);--landing-text:#142033;--landing-muted:#475569;--landing-line:rgba(20,32,51,0.12);--landing-glass:rgba(255,255,255,0.55);--landing-glass-edge:rgba(255,255,255,0.95);--landing-glass-shadow:0 8px 32px rgba(40,60,100,0.12);--landing-nav-bg:rgba(255,255,255,0.66);--landing-blur:18px;--landing-accent:#8a5a00;--hero-ink:#070b14;--hero-text:#ffffff;--hero-muted:rgba(255,255,255,0.88);--hero-line:rgba(255,255,255,0.26);--hero-glass:rgba(10,16,30,0.42);--hero-scrim:rgba(7,11,20,0.8);--hero-scrim-soft:rgba(7,11,20,0.42);--model-ground:#d6e2ef;--model-tower:#ffffff;--model-neighbour:#b4bfce;--model-tree:#7fb48f;--model-glass:#8aa3c2;--model-glass-shaded:#6d7f99;--model-unit:#1976d2;--model-path:#e3a530;--border-w:1px;--font-body:var(--font-inter),system-ui,-apple-system,"Segoe UI",Roboto,"PingFang SC","Microsoft YaHei",sans-serif;--tap:44px;--page-max:720px;--page-max-wide:960px;--bar-h:52px;--dur-fast:120ms;--dur:200ms;--dur-slow:320ms;--ease:cubic-bezier(0.2,0.8,0.2,1);--dur-reveal:800ms;--ease-out:cubic-bezier(0.16,1,0.3,1)}@media (prefers-reduced-motion:reduce){:root{--dur-fast:0s;--dur:0s;--dur-reveal:0s;--dur-slow:0s}*,:after,:before{animation-duration:0s!important;animation-iteration-count:1!important}}body,html{font-family:var(--font-body);font-size:var(--fs-md);line-height:1.55;color:var(--text);background:var(--bg);-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}h1,h2,h3{font-weight:600;line-height:1.25;letter-spacing:-.02em;text-wrap:balance}h1{font-size:var(--fs-xl)}h2{font-size:var(--fs-lg)}h3{font-size:var(--fs-md)}a{color:var(--text);text-underline-offset:3px;-webkit-text-decoration-color:var(--border-strong);text-decoration-color:var(--border-strong);transition:-webkit-text-decoration-color var(--dur) var(--ease);transition:text-decoration-color var(--dur) var(--ease);transition:text-decoration-color var(--dur) var(--ease),-webkit-text-decoration-color var(--dur) var(--ease)}a:hover{-webkit-text-decoration-color:currentColor;text-decoration-color:currentColor}.eyebrow{font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted)}:where(p,li,dd,dt,span)>a:not([class]){padding-block:calc((32px - 1.2em) / 2)}.fine{font-size:var(--fs-sm);font-weight:400;color:var(--text-muted)}.page{max-width:var(--page-max);margin:0 auto;padding:var(--s-4) var(--s-4) var(--s-12);padding-left:max(var(--s-4),env(safe-area-inset-left));padding-right:max(var(--s-4),env(safe-area-inset-right))}.page-wide{max-width:var(--page-max-wide)}.page>h1{margin-top:var(--s-2);margin-bottom:var(--s-1)}.page>*{animation:rise var(--dur-slow) var(--ease) both}.page>:nth-child(2){animation-delay:40ms}.page>:nth-child(3){animation-delay:80ms}.page>:nth-child(4){animation-delay:.12s}.page>:nth-child(n+5){animation-delay:.16s}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}.page section{background:var(--surface);border:var(--border-w) solid var(--border);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:var(--s-4);margin-top:var(--s-4)}.page section h2{margin-bottom:var(--s-2)}.page section section{background:transparent;border:none;box-shadow:none;padding:0;margin-top:var(--s-3)}.page section ol,.page section ul{margin-top:var(--s-2);-webkit-padding-start:var(--s-6);padding-inline-start:var(--s-6)}.page section .suggest-list{-webkit-padding-start:0;padding-inline-start:0}.page section li+li{margin-top:var(--s-1)}.col ul{-webkit-padding-start:var(--s-4);padding-inline-start:var(--s-4)}.btn,button{font:inherit;display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:var(--tap);padding:0 var(--s-4);border:var(--border-w) solid var(--border);border-radius:var(--radius-control);background:var(--surface);color:var(--text);cursor:pointer;text-decoration:none;touch-action:manipulation;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),color var(--dur) var(--ease),transform var(--dur-fast) var(--ease)}.btn:hover,button:hover{border-color:var(--border-strong)}.btn:active,button:active:not(:disabled){transform:scale(.97)}button[aria-busy=true]{pointer-events:none}button[aria-busy=true]:before{content:"";width:1em;height:1em;border-radius:50%;border:2px solid;border-right:2px solid transparent;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.btn-primary{background:var(--brand);border-color:var(--brand);color:var(--on-brand);font-weight:600}.btn-primary:hover{background:var(--brand-hover);border-color:var(--brand-hover)}.btn-danger{border-color:var(--error);color:var(--error)}.btn-danger:hover{background:var(--error-soft);border-color:var(--error)}.btn-ghost{background:transparent;border-color:transparent}.btn-ghost:hover{background:var(--bg-subtle);border-color:transparent}.btn:disabled,.btn[aria-disabled=true],button:disabled{opacity:.5;cursor:not-allowed}.btn-primary:disabled{opacity:1;background:var(--bg-subtle);border-color:var(--border);color:var(--text-muted)}input:not([type=checkbox]):not([type=radio]):not([type=range]),select,textarea{font:inherit;border:var(--border-w) solid var(--border-strong);border-radius:var(--radius-control);padding:var(--s-2) var(--s-3);background:var(--surface);color:var(--text);max-width:100%;transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}input:not([type=checkbox]):not([type=radio]):not([type=range]):focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--ring);outline:none}::placeholder{color:var(--text-muted);opacity:.8}input:not([type=checkbox]):not([type=radio]),select,textarea{min-height:var(--tap)}input[type=range]{accent-color:var(--brand)}input[type=checkbox],input[type=radio]{width:20px;height:20px;accent-color:var(--brand)}:is(button,input,select,textarea,a,summary):focus-visible{outline:2px solid var(--brand);outline-offset:1px}.steps{display:grid;grid-gap:var(--s-1);gap:var(--s-1);margin:var(--s-1) 0 var(--s-2)}.steps-row{display:flex;flex-wrap:wrap;justify-content:space-between;gap:0 var(--s-3);font-size:var(--fs-xs);color:var(--text-muted)}.steps-row [aria-current]{color:var(--text);font-weight:600}.steps-bars{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:var(--s-1);gap:var(--s-1);list-style:none}.steps-bars a,.steps-bars li>span{display:flex;align-items:center;min-height:32px}.steps-bars i{position:relative;display:block;width:100%;height:4px;overflow:hidden;border-radius:var(--radius-pill);background:var(--border)}.steps-bars .is-active i:after,.steps-bars .is-done i{background:var(--sun)}.steps-bars .is-active i:after{content:"";position:absolute;inset:0;transform-origin:left;animation:fill var(--dur-slow) var(--ease) .12s both}@keyframes fill{0%{transform:scaleX(0)}}@media (max-width:640px),(pointer:coarse){.step{min-height:var(--tap)}}@media not (pointer:coarse){.on-touch{display:none}}.gate-block{max-width:480px;margin:var(--s-8) auto;padding:var(--s-8) var(--s-4);text-align:center}.gate-block p{margin-top:var(--s-4)}.stack>*+*{margin-top:var(--s-3)}.full{display:block;width:100%}.box{border:var(--border-w) solid var(--border);border-radius:var(--radius-control);padding:var(--s-3)}.actions,.sticky-actions{display:flex;flex-wrap:wrap;gap:var(--s-2);align-items:center}.sticky-actions{position:-webkit-sticky;position:sticky;bottom:0;z-index:1;-webkit-margin-start:calc(-1 * var(--s-4));margin-inline-start:calc(-1 * var(--s-4));-webkit-margin-end:calc(-1 * var(--s-4));margin-inline-end:calc(-1 * var(--s-4));margin-bottom:calc(-1 * var(--s-12));padding:var(--s-3) var(--s-4) calc(var(--s-3) + env(safe-area-inset-bottom));background:var(--glass);backdrop-filter:saturate(1.4) blur(var(--glass-blur));-webkit-backdrop-filter:saturate(1.4) blur(var(--glass-blur));border-top:var(--border-w) solid var(--border)}.sticky-actions>.btn-primary{flex:1 1 200px;min-height:48px}.sticky-actions>.fine,.sticky-actions>p{flex-basis:100%}.field-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));grid-gap:var(--s-3);gap:var(--s-3);align-items:end}.field-row .field{min-width:0}.field-row .field>input{width:100%;min-width:0}.segmented{display:grid;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;grid-gap:2px;gap:2px;padding:3px;border:var(--border-w) solid var(--border);border-radius:calc(var(--radius-control) + 3px);background:var(--bg-subtle)}.segmented.is-stacked{grid-auto-flow:row}.segmented>button{min-width:0;padding:0 var(--s-2);border-color:transparent;background:transparent;color:var(--text-muted);font-size:var(--fs-sm);font-weight:400}.segmented>button:hover{border-color:transparent;color:var(--text)}.segmented>button[aria-pressed=true]{background:var(--brand);border-color:var(--brand);color:var(--on-brand);font-weight:600;box-shadow:var(--shadow-card)}.stepper{display:grid;grid-template-columns:var(--tap) minmax(0,1fr) var(--tap);border:var(--border-w) solid var(--border-strong);border-radius:var(--radius-control);background:var(--surface);overflow:hidden}.stepper:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px var(--ring)}.stepper>button{border:0;border-radius:0;padding:0;font-size:var(--fs-lg);color:var(--text-muted)}.stepper>input:not([type=checkbox]):not([type=radio]):not([type=range]){width:100%;border:0;border-radius:0;text-align:center;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;-moz-appearance:textfield}.stepper>input:not([type=checkbox]):not([type=radio]):not([type=range]):focus{box-shadow:none}.stepper>input::-webkit-inner-spin-button,.stepper>input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.data-table{width:100%;border-collapse:separate;border-spacing:0;font-size:var(--fs-sm);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.data-table td,.data-table th{padding:var(--s-2) var(--s-2);border-bottom:var(--border-w) solid var(--border);text-align:start;vertical-align:middle}.data-table :is(th,td):first-child{-webkit-padding-start:0;padding-inline-start:0}.data-table :is(th,td):last-child{-webkit-padding-end:0;padding-inline-end:0}.data-table thead th{font-size:var(--fs-xs);font-weight:600;color:var(--text-muted);white-space:nowrap}.data-table thead th small{display:block;font-weight:400}.data-table tbody th{font-weight:400;color:var(--text-muted);white-space:nowrap}.data-table tbody tr:last-child :is(th,td){border-bottom:0}.data-table .num{text-align:end;white-space:nowrap}.data-table .is-best{color:var(--sun-text);font-weight:600}.data-table .is-best:before{content:"▲ ";font-size:var(--fs-xs)}.table-scroll{position:relative;overflow-x:auto;overscroll-behavior-x:contain}.table-scroll .data-table tbody th,.table-scroll .data-table thead th:first-child{position:-webkit-sticky;position:sticky;inset-inline-start:0;z-index:1;background:var(--surface)}.tabular{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.timeline{display:flex;align-items:center;gap:var(--s-3)}.timeline>input[type=range]{flex:1 1;min-width:0;height:var(--tap)}.timeline>button{min-width:72px}.timeline-now{color:var(--text);font-weight:600}.skeleton-block{height:160px;margin-top:var(--s-4);border-radius:var(--radius-card);background:linear-gradient(90deg,var(--bg-subtle) 25%,var(--surface) 50%,var(--bg-subtle) 75%);background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.file-drop-wrap{display:grid;grid-gap:var(--s-3);gap:var(--s-3)}.file-drop{display:grid;justify-items:center;grid-gap:var(--s-1);gap:var(--s-1);padding:var(--s-6) var(--s-4);border:1.5px dashed var(--border-strong);border-radius:var(--radius-card);background:var(--bg);color:var(--text);text-align:center;cursor:pointer;transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease),transform var(--dur-fast) var(--ease)}.file-drop.is-drag,.file-drop:hover{border-color:var(--brand);background:var(--surface)}.file-drop:active{transform:scale(.99)}.file-drop:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px var(--ring)}.file-drop b{font-weight:600}.file-drop span{max-width:32rem;font-size:var(--fs-sm);color:var(--text-muted)}.file-drop.is-compact{grid-auto-flow:column;justify-content:center;align-items:center;gap:var(--s-2);min-height:var(--tap);padding:0 var(--s-4);border-style:solid;border-radius:var(--radius-control)}.file-drop.is-disabled{opacity:.5;cursor:not-allowed}.file-card{display:grid;grid-template-columns:56px minmax(0,1fr);grid-gap:var(--s-3);gap:var(--s-3);align-items:center}.file-thumb{display:grid;place-items:center;width:56px;height:56px;overflow:hidden;background:var(--bg-subtle);color:var(--text-muted)}.file-thumb img{width:100%;height:100%;object-fit:cover}.file-meta{display:grid;grid-gap:var(--s-2);gap:var(--s-2);min-width:0}.file-name{display:flex;justify-content:space-between;gap:var(--s-2);font-weight:600}.file-name span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-name em{flex:none;font-style:normal;font-weight:400;color:var(--text-muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.progress{height:4px;overflow:hidden;border-radius:var(--radius-pill);background:var(--border)}.progress i{display:block;height:100%;background:var(--brand);transform-origin:left;transition:transform var(--dur) var(--ease)}.file-stages{display:flex;flex-wrap:wrap;gap:var(--s-1);list-style:none;font-size:var(--fs-xs)}.file-stages li{display:inline-flex;align-items:center;gap:var(--s-1);min-height:24px;padding:0 var(--s-2);border:var(--border-w) solid var(--border);border-radius:var(--radius-pill);color:var(--text-muted)}.file-stages .is-done{border-color:transparent;background:var(--ok-soft);color:var(--ok)}.file-stages .is-now{border-color:var(--text);color:var(--text);font-weight:600}.file-stages .is-now:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--sun);animation:pulse 1.2s ease-in-out infinite}.file-stages .is-failed{border-color:transparent;background:var(--error-soft);color:var(--error)}@keyframes pulse{50%{opacity:.25}}.field{display:grid;grid-gap:var(--s-1);gap:var(--s-1);font-size:var(--fs-sm);font-weight:600}.field>input,.field>select,.field>textarea{font-size:var(--fs-md);font-weight:400}.check{display:flex;align-items:center;gap:var(--s-2);min-height:var(--tap);cursor:pointer}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.notice{padding:var(--s-2) var(--s-3);overflow-wrap:anywhere;border:var(--border-w) solid;border-radius:var(--radius-control)}.notice-ok{background:var(--ok-soft);border-color:var(--ok);color:var(--ok)}.notice-warn{background:var(--warn-soft);border-color:var(--warn);color:var(--warn)}.notice-error{background:var(--error-soft);border-color:var(--error);color:var(--error)}.text-ok{color:var(--ok)}.text-warn{color:var(--warn)}.text-error{color:var(--error)}.option{display:flex;flex-wrap:wrap;gap:var(--s-3);align-items:baseline;min-height:var(--tap);padding:var(--s-2) var(--s-3);border:var(--border-w) solid var(--border);border-radius:var(--radius-control);cursor:pointer}.option.is-selected{border-color:var(--brand);background:var(--brand-soft)}.suggest{position:relative}.suggest-list{position:absolute;left:0;right:0;z-index:2;margin:var(--s-1) 0 0;padding:0;list-style:none;display:grid;overflow:hidden;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-control);box-shadow:var(--shadow-overlay);font-size:var(--fs-md)}.suggest-list .option{align-items:center;min-height:48px;border:0;border-radius:0}.suggest-list .option+.option{border-top:var(--border-w) solid var(--border)}.suggest-list mark{background:none;color:inherit;font-weight:600}.suggest-list .suggest-fallback,.wizard-progress{color:var(--text-muted)}.wizard-progress{font-size:var(--fs-sm)}.key-plan{max-width:100%;max-height:40vh;margin:0 auto}.key-plan,.plan-canvas{display:block;border-radius:var(--radius-control)}.plan-canvas{width:100%;background:var(--bg-subtle)}.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));grid-gap:var(--s-4);gap:var(--s-4)}.scene-canvas{width:100%;height:340px;border-radius:var(--radius-control);background:var(--bg-subtle);border:var(--border-w) solid var(--border);overflow:hidden}.stat{display:grid;font-size:var(--fs-2xl);font-weight:600;line-height:1.15;letter-spacing:-.02em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--text)}.stat .fine{letter-spacing:normal}.dl{display:grid;grid-template-columns:auto 1fr;grid-gap:var(--s-1) var(--s-3);gap:var(--s-1) var(--s-3);font-size:var(--fs-sm)}.dl dt{color:var(--text-muted)}.dl dd{overflow-wrap:anywhere}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-gap:var(--s-3);gap:var(--s-3);margin-top:var(--s-4)}.stats .box{background:var(--surface)}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}.table td,.table th{padding:var(--s-2) var(--s-3);border-bottom:var(--border-w) solid var(--border);text-align:start;vertical-align:top;white-space:nowrap}.table th{color:var(--text-muted);font-weight:600}.table .num{text-align:end;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}hr{border:0;border-top:var(--border-w) solid var(--border)}.scroll-x{position:relative;display:flex;gap:var(--s-3);overflow-x:auto;padding-bottom:var(--s-3);scroll-snap-type:x proximity}.col{flex:0 0 260px;padding:var(--s-3);border:var(--border-w) solid var(--border);border-radius:var(--radius-card);background:var(--surface);scroll-snap-align:start}.col-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.col-empty .btn{white-space:nowrap}.badge{display:inline-block;padding:0 var(--s-2);border-radius:var(--radius-pill);background:var(--bg-subtle);color:var(--text-muted);font-size:var(--fs-xs)}.small{font-size:var(--fs-sm)}summary{display:flex;align-items:center;gap:var(--s-1);min-height:32px;cursor:pointer}summary:before{content:"";width:.45em;height:.45em;border-right:1.5px solid;border-bottom:1.5px solid;transform:rotate(-45deg);transition:transform var(--dur) var(--ease)}details[open]>summary:before{transform:rotate(45deg)}summary::-webkit-details-marker{display:none}.col summary{padding-block:calc((var(--tap) - 1.55em) / 2)}.kv{display:grid;grid-template-columns:minmax(90px,1fr) minmax(0,2fr);grid-gap:var(--s-3);gap:var(--s-3);padding:var(--s-2) 0;border-bottom:var(--border-w) solid var(--border);align-items:start;overflow-wrap:anywhere}.tour{display:flex;flex-direction:column;height:100dvh}.tour-stage{position:relative;flex:1 1;min-height:0}.tour-panel{max-height:50vh;overflow-y:auto;padding:var(--s-2) var(--s-4) calc(var(--s-2) + env(safe-area-inset-bottom));font-size:var(--fs-sm);color:var(--text-muted)}.tour-panel ul{-webkit-padding-start:var(--s-6);padding-inline-start:var(--s-6)}.hud{position:absolute;top:var(--s-3);left:var(--s-3);z-index:4;margin:0;padding:var(--s-1) var(--s-3);border-radius:var(--radius-control);background:color-mix(in srgb,var(--surface) 88%,transparent);color:var(--text);font-size:var(--fs-xs);pointer-events:none}.hud-end{top:auto;bottom:var(--s-3);left:auto;right:var(--s-3)}.hud-dim{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(12,14,20,.45);text-align:center}.hud-card{padding:var(--s-4) var(--s-6);border:var(--border-w) solid var(--border);border-radius:var(--radius-card);background:color-mix(in srgb,var(--surface) 92%,transparent);color:var(--text);font-size:var(--fs-sm);line-height:2}.joystick{position:absolute;left:var(--s-4);bottom:calc(var(--s-4) + env(safe-area-inset-bottom));width:110px;height:110px;border-radius:50%;border:2px solid rgba(255,255,255,.35);background:rgba(255,255,255,.06)}.joystick-knob{position:absolute;left:50%;top:50%;width:46px;height:46px;margin:-23px;border-radius:50%;background:rgba(255,255,255,.35)}.account{position:relative}.account>summary{list-style:none;flex-wrap:nowrap;max-width:100%}.account-email{max-width:10ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-who{overflow-wrap:anywhere}@media (max-width:640px){.account-email{max-width:12ch}}.account>summary::-webkit-details-marker{display:none}.account>summary:before{display:none}.account-avatar{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--brand);color:var(--on-brand);font-weight:600;font-size:var(--fs-sm)}.account-panel{position:absolute;inset-inline-end:0;z-index:20;width:min(360px,calc(100vw - 2 * var(--s-4)));margin-top:var(--s-2);background:var(--surface);box-shadow:0 8px 24px rgb(0 0 0/.12)}.sync-notice{align-self:stretch;margin:0}.wordmark{display:inline-flex;align-items:center;min-height:var(--tap);gap:var(--s-2);font-weight:700;color:inherit;text-decoration:none}.wordmark svg{color:var(--sun)}.app-nav{position:-webkit-sticky;position:sticky;top:0;z-index:10;background:var(--glass);backdrop-filter:saturate(1.4) blur(var(--glass-blur));-webkit-backdrop-filter:saturate(1.4) blur(var(--glass-blur));border-bottom:var(--border-w) solid var(--border)}.app-nav-in{display:flex;align-items:center;gap:var(--s-2);max-width:var(--page-max-wide);min-height:var(--bar-h);margin:0 auto;padding:0 max(var(--s-2),env(safe-area-inset-right)) 0 max(var(--s-4),env(safe-area-inset-left))}.app-links{display:none;gap:var(--s-1);-webkit-margin-start:auto;margin-inline-start:auto;font-size:var(--fs-sm)}.app-links a{display:inline-flex;align-items:center;min-height:var(--tap);white-space:nowrap;padding:0 var(--s-3);border-radius:var(--radius-pill);color:var(--text-muted);text-decoration:none;transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.app-links a:hover{color:var(--text)}.app-links a[aria-current=page]{background:var(--brand-soft);color:var(--text);font-weight:600}.app-beta{min-height:32px;display:inline-flex;align-items:center;border:var(--border-w) solid var(--border);background:transparent;color:var(--text-muted);text-decoration:none}.app-footer{max-width:var(--page-max-wide);margin:var(--s-8) auto 0;padding:var(--s-4) var(--s-4) calc(var(--s-6) + env(safe-area-inset-bottom));border-top:var(--border-w) solid var(--border)}.app-footer-links{display:flex;flex-wrap:wrap;gap:0 var(--s-4);font-size:var(--fs-sm)}.app-footer-links a{display:inline-flex;align-items:center;justify-content:center;min-height:var(--tap);min-width:var(--tap)}.route-loading{min-height:40vh}.route-loading:before{content:"";position:fixed;top:0;left:0;z-index:30;height:3px;width:100%;background:var(--brand);transform-origin:left;animation:route-loading 2s var(--ease) infinite}@keyframes route-loading{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@media (prefers-reduced-motion:reduce){.route-loading:before{animation:none}}.app-credits{min-height:32px;display:inline-flex;align-items:center;color:var(--brand);background:var(--brand-soft);text-decoration:none;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.app-credits.is-empty{color:var(--warn);background:var(--warn-soft)}.admin-nav,.lang-switch{align-items:center}.lang-switch{display:inline-flex;gap:var(--s-1);color:var(--text-muted)}.lang-switch select{min-height:32px;padding:0 var(--s-2);font-size:var(--fs-sm);border-color:transparent;background:transparent;color:inherit;cursor:pointer}.lang-switch select:hover{border-color:var(--border)}@supports (field-sizing:content){.lang-switch select{field-sizing:content}}@media (max-width:820px){.lang-switch{position:relative;justify-content:center;min-width:var(--tap);min-height:var(--tap)}.lang-switch select{position:absolute;inset:0;width:100%;opacity:0}.lang-switch:focus-within{outline:2px solid var(--brand);outline-offset:1px;border-radius:var(--radius-control)}}.app-nav .lang-switch~.account,.app-nav .lang-switch~.app-menu-btn{-webkit-margin-start:0;margin-inline-start:0}@media (max-width:719px){.app-nav .lang-switch{-webkit-margin-start:auto;margin-inline-start:auto}}.landing-lang{color:var(--landing-muted)}.landing-lang select:hover{border-color:var(--landing-line)}.landing-lang option{color:var(--text);background:var(--surface)}.app-menu-btn{width:var(--tap);padding:0}.app-menu-btn,.app-nav .account{-webkit-margin-start:auto;margin-inline-start:auto}.app-nav .account+.app-menu-btn{-webkit-margin-start:0;margin-inline-start:0}.app-nav .account>summary .small{display:none}@media (min-width:720px){.app-links{display:flex}.app-menu-btn{display:none}.app-nav .account{-webkit-margin-start:0;margin-inline-start:0}.app-nav .account>summary .small{display:inline}}.sheet{position:fixed;inset:auto 0 0;width:100%;max-width:520px;max-height:85dvh;margin:0 auto;padding:var(--s-2) var(--s-4) calc(var(--s-6) + env(safe-area-inset-bottom));border:0;border-radius:var(--radius-card) var(--radius-card) 0 0;background:var(--surface);color:var(--text);box-shadow:var(--shadow-overlay)}.sheet[open]{animation:sheet-up var(--dur-slow) var(--ease)}.sheet::-webkit-backdrop{background:rgba(10,11,13,.32);animation:fade var(--dur-slow) var(--ease)}.sheet::backdrop{background:rgba(10,11,13,.32);animation:fade var(--dur-slow) var(--ease)}@keyframes sheet-up{0%{transform:translateY(100%)}}@keyframes fade{0%{opacity:0}}.sheet-head{display:flex;align-items:center;justify-content:space-between}.sheet-head .btn-ghost{width:var(--tap);padding:0}.sheet-links{display:grid;margin:var(--s-2) 0 var(--s-4)}.sheet-links a{display:flex;align-items:center;justify-content:space-between;min-height:52px;border-bottom:var(--border-w) solid var(--border);font-size:var(--fs-lg);font-weight:600;letter-spacing:-.01em;text-decoration:none}.sheet-links a svg{color:var(--text-muted)}.sheet-links a[aria-current=page]{color:var(--sun-text)}.landing{background:var(--landing-bg);color:var(--landing-text)}.hero-clock,.hero-copy,.hero-scrub-wrap,.landing-nav:not(.is-scrolled){--landing-bg:var(--hero-ink);--landing-text:var(--hero-text);--landing-muted:var(--hero-muted);--landing-line:var(--hero-line);--landing-glass:var(--hero-glass);color:var(--hero-text)}.landing h1,.landing h2,.landing h3{letter-spacing:-.02em}.landing-wrap{max-width:1120px;margin:0 auto}.landing .glass{border:var(--border-w) solid var(--landing-line);border-radius:var(--radius-panel);box-shadow:inset 0 1px 0 var(--landing-glass-edge),var(--landing-glass-shadow);-webkit-backdrop-filter:blur(var(--landing-blur)) saturate(160%);backdrop-filter:blur(var(--landing-blur)) saturate(160%)}.landing .glass,.landing-btn{background:var(--landing-glass)}.landing-btn{display:inline-flex;align-items:center;justify-content:center;min-height:var(--tap);padding:0 var(--s-6);border:var(--border-w) solid var(--landing-line);border-radius:var(--radius-pill);color:var(--landing-text);font-weight:600;text-decoration:none;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:transform var(--dur) var(--ease),background var(--dur) var(--ease)}.landing-btn:hover{transform:translateY(-1px)}.landing-btn-primary{background:var(--landing-text);border-color:var(--landing-text);color:var(--landing-bg)}.landing-nav>.wordmark{min-height:var(--tap)}.landing-beta{font-size:var(--fs-xs);padding:0 var(--s-3);border:var(--border-w) solid var(--landing-line);border-radius:var(--radius-pill);color:var(--landing-muted);text-decoration:none;white-space:nowrap}.landing-beta,.landing-link{display:inline-flex;align-items:center;min-height:var(--tap)}.landing-link{color:var(--landing-text);font-weight:600}.hero{position:relative;height:100dvh;min-height:620px;overflow:hidden;background:var(--hero-ink)}.hero-bg{width:100%;height:100%;object-fit:cover;display:block;transform-origin:center;will-change:transform}.hero-bg,.hero-vignette{position:absolute;inset:0}.hero-vignette{background:linear-gradient(to right,var(--hero-scrim) 0,var(--hero-scrim-soft) 38%,transparent 62%),linear-gradient(to top,var(--hero-scrim) 0,transparent 50%);pointer-events:none}.landing-nav{position:fixed;top:0;left:0;right:0;z-index:20;display:flex;align-items:center;gap:var(--s-4);padding:var(--s-4) var(--s-8);font-size:var(--fs-lg);border-bottom:var(--border-w) solid transparent;transition:background var(--dur) var(--ease),padding var(--dur) var(--ease)}.landing-nav.is-scrolled{padding-top:var(--s-2);padding-bottom:var(--s-2);background:var(--landing-nav-bg);border-bottom-color:var(--landing-line);-webkit-backdrop-filter:blur(var(--landing-blur)) saturate(160%);backdrop-filter:blur(var(--landing-blur)) saturate(160%)}.landing-links{display:flex;gap:var(--s-6);-webkit-margin-start:auto;margin-inline-start:auto;font-size:var(--fs-sm);color:var(--landing-muted)}.landing-links a{color:inherit;text-decoration:none;min-height:32px;display:inline-flex;align-items:center}.hero-copy{position:absolute;inset-inline-start:var(--s-8);inset-inline-end:var(--s-8);bottom:88px;z-index:2;max-width:720px}.hero-copy .eyebrow{color:var(--landing-muted);margin-bottom:var(--s-4)}.hero-copy h1{font-size:clamp(2.6rem,6vw,5rem);line-height:1.02;margin-bottom:var(--s-4);text-shadow:0 2px 24px var(--hero-scrim-soft)}.hero-lede{font-size:var(--fs-lg);max-width:34rem;color:var(--landing-muted);margin-bottom:var(--s-6);text-shadow:0 1px 12px var(--hero-scrim-soft)}.hero-actions{display:flex;flex-wrap:wrap;gap:var(--s-3)}.hero-clock{position:absolute;inset-inline-end:var(--s-8);bottom:88px;z-index:2;text-align:end;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-shadow:0 2px 16px var(--hero-scrim-soft)}.hero-time{font-size:clamp(2rem,4vw,3.5rem);font-weight:600;letter-spacing:-.02em;line-height:1}.hero-illustration{margin-bottom:var(--s-1);font-size:var(--fs-xs);color:var(--landing-muted)}.hero-date,.hero-state{margin-top:var(--s-1);font-size:var(--fs-sm);color:var(--landing-muted)}.hero-free{margin-top:var(--s-3);font-size:var(--fs-sm);text-shadow:0 1px 12px rgba(0,0,0,.45)}.hero-scrub-wrap{position:absolute;left:var(--s-8);right:var(--s-8);bottom:var(--s-2);z-index:2}.hero-scrub{position:relative;height:var(--tap);cursor:pointer;touch-action:none}.hero-scrub i,.hero-scrub:before{content:"";position:absolute;left:0;top:50%;height:3px;margin-top:-1.5px}.hero-scrub:before{right:0;background:var(--landing-line)}.hero-scrub i{background:var(--sun);transform:scaleX(0);transform-origin:left}.hero-scrub-label{display:block;margin-top:calc(-1 * var(--s-2));font-size:var(--fs-xs);color:var(--landing-muted)}.landing-faq dl{max-width:44rem}.landing-faq dt{font-weight:600;margin-top:var(--s-6)}.landing-faq dd{margin-top:var(--s-1);color:var(--landing-muted)}.landing-faq a{color:var(--landing-text)}.landing-body{background:linear-gradient(180deg,var(--landing-bg) 0,var(--landing-bg-2) 45%,var(--landing-bg) 100%)}.landing-body,.landing-body>:not(.landing-aurora){position:relative}.landing-aurora{position:absolute;inset:0;overflow:clip;pointer-events:none}.landing-aurora i{position:absolute;width:70vmax;aspect-ratio:1;border-radius:var(--radius-pill);background:radial-gradient(circle,var(--landing-glow-a) 0,transparent 62%);animation:landing-drift 26s var(--ease) infinite alternate}.landing-aurora i:first-child{top:-10vmax;left:-25vmax}.landing-aurora i:nth-child(2){top:28%;right:-30vmax;background:radial-gradient(circle,var(--landing-glow-b) 0,transparent 62%);animation-duration:32s;animation-direction:alternate-reverse}.landing-aurora i:nth-child(3){top:64%;left:-10vmax;background:radial-gradient(circle,var(--landing-glow-c) 0,transparent 62%);animation-duration:38s}@keyframes landing-drift{0%{transform:translateZ(0) scale(1)}to{transform:translate3d(8vmax,6vmax,0) scale(1.15)}}.landing.js-reveal [data-reveal]{opacity:0;transform:translateY(28px);transition:opacity var(--dur-reveal) var(--ease-out),transform var(--dur-reveal) var(--ease-out)}.landing.js-reveal [data-reveal].is-in{opacity:1;transform:none}.landing-band>:nth-child(2),.landing-cols>:nth-child(2),.landing-steps li:nth-child(2){transition-delay:.12s}.landing-band>:nth-child(3),.landing-steps li:nth-child(3){transition-delay:.24s}.landing-band>:nth-child(4){transition-delay:.36s}@media (prefers-reduced-motion:reduce){.landing-aurora i{animation:none}.landing.js-reveal [data-reveal]{transform:none}}.landing-section{padding:96px var(--s-8)}.landing-section h2{font-size:var(--fs-2xl);margin-bottom:var(--s-3)}.landing-sub{color:var(--landing-muted);font-size:var(--fs-lg);max-width:40rem;margin-bottom:var(--s-12)}.landing-steps{list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-gap:var(--s-6);gap:var(--s-6)}.landing-steps li{padding:var(--s-6)}.landing-steps h3{font-size:var(--fs-lg);margin:var(--s-4) 0 var(--s-2)}.landing-steps p{color:var(--landing-muted)}.landing-num{display:inline-flex;align-items:center;justify-content:center;min-width:40px;height:40px;border-radius:var(--radius-pill);border:var(--border-w) solid var(--landing-line);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:var(--fs-sm);font-weight:600;color:var(--landing-accent)}.landing-band{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:var(--s-4);gap:var(--s-4)}.landing-band div{padding:var(--s-6)}.landing-band b{display:block;font-size:var(--fs-2xl);font-weight:600;letter-spacing:-.02em}.landing-band span{color:var(--landing-muted);font-size:var(--fs-sm)}.landing-trust{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,3fr);grid-gap:var(--s-12);gap:var(--s-12);align-items:start}.landing-cols{display:grid;grid-template-columns:1fr 1fr;grid-gap:var(--s-6);gap:var(--s-6)}.landing-cols>div{padding:var(--s-6)}.landing-cols h3{font-size:var(--fs-md);margin-bottom:var(--s-3)}.landing-dashes,.landing-ticks{list-style:none;display:grid;grid-gap:var(--s-3);gap:var(--s-3);color:var(--landing-muted);font-size:var(--fs-sm)}.landing-dashes li,.landing-ticks li{position:relative;-webkit-padding-start:var(--s-6);padding-inline-start:var(--s-6)}.landing-ticks li:before{content:"✓";position:absolute;inset-inline-start:0;color:var(--landing-accent);font-weight:700}.landing-dashes li:before{content:"—";position:absolute;inset-inline-start:0}.landing-cta-in{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-6);padding:var(--s-12)}.landing-cta h2{margin:0}.landing-footer{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-4) var(--s-8);padding:var(--s-8);border-top:var(--border-w) solid var(--landing-line);color:var(--landing-muted);font-size:var(--fs-sm)}.landing-footer-links{display:flex;flex-wrap:wrap;gap:0 var(--s-4);-webkit-margin-start:auto;margin-inline-start:auto}.landing-footer a{display:inline-flex;align-items:center;justify-content:center;min-height:var(--tap);min-width:var(--tap);color:inherit;text-decoration:none}.sun-study{position:relative;height:420vh}.sun-study-stage{position:-webkit-sticky;position:sticky;top:0;height:100dvh;overflow:hidden}.sun-study-canvas{position:absolute;inset:0}.sun-study-glow{position:absolute;top:-20%;width:60%;aspect-ratio:1;border-radius:var(--radius-pill);background:radial-gradient(circle,var(--landing-glow-b) 0,transparent 65%);transition:opacity var(--dur-reveal) var(--ease-out),left var(--dur-reveal) var(--ease-out);pointer-events:none}.sun-study-intro{position:absolute;top:96px;inset-inline-start:var(--s-8);max-width:420px;padding:var(--s-6)}.sun-study-intro h2{font-size:var(--fs-2xl);margin-bottom:var(--s-2)}.sun-study-chapter{color:var(--landing-muted);min-height:4.8em}.sun-study-hud{position:absolute;inset-inline-end:var(--s-8);bottom:var(--s-8);width:360px;padding:var(--s-6);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.sun-study-time{font-size:2.5rem;font-weight:600;letter-spacing:-.02em;line-height:1}.sun-study-meta{margin-top:var(--s-1);color:var(--landing-muted);font-size:var(--fs-sm)}.sun-study-unit{display:flex;gap:var(--s-3);margin:var(--s-4) 0;font-size:var(--fs-sm)}.sun-study-dot{flex:none;width:12px;height:12px;margin-top:5px;border-radius:var(--radius-pill);background:var(--landing-line);transition:background var(--dur) var(--ease)}.sun-study-dot[data-light=sun]{background:var(--sun);box-shadow:0 0 12px var(--sun)}.sun-study-dot[data-light=shaded]{background:var(--model-glass-shaded)}.sun-study-strip{position:relative;height:10px;border-radius:var(--radius-pill);border:var(--border-w) solid var(--landing-line);background:var(--landing-glass);overflow:hidden}.sun-study-strip i{position:absolute;top:0;bottom:0}.sun-study-strip i[data-light=sun]{background:var(--sun)}.sun-study-strip i[data-light=shaded]{background:var(--model-glass-shaded)}.sun-study-strip b{position:absolute;top:0;bottom:0;width:2px;background:var(--landing-text)}.sun-study-axis{position:relative;height:1.5em;margin-top:var(--s-1);color:var(--landing-muted);font-size:var(--fs-xs)}.sun-study-axis span{position:absolute;transform:translateX(-50%);white-space:nowrap}.sun-study-axis span:first-child{transform:none}.sun-study-total{display:flex;justify-content:space-between;gap:var(--s-4);margin-top:var(--s-3);color:var(--landing-muted);font-size:var(--fs-sm)}.sun-study-total b{color:var(--landing-text)}.sun-study-tag{display:inline-block;padding:2px var(--s-2);border-radius:var(--radius-pill);background:var(--model-unit);color:var(--on-brand);font-size:var(--fs-xs);font-weight:600;white-space:nowrap;box-shadow:var(--landing-glass-shadow)}.sun-study-hint{position:absolute;left:50%;bottom:var(--s-8);transform:translateX(-50%);color:var(--landing-muted);font-size:var(--fs-sm);transition:opacity var(--dur-reveal) var(--ease-out)}.sun-study-hint[data-hidden]{opacity:0}@media (max-width:820px){.landing-nav{padding:var(--s-3) var(--s-4);font-size:var(--fs-md)}.landing-links{display:none}.landing-beta{-webkit-margin-start:auto;margin-inline-start:auto}.hero-copy{inset-inline-start:var(--s-4);inset-inline-end:var(--s-4);bottom:56px}.hero:has(.hero-scrub-wrap) .hero-copy{bottom:96px}.hero-lede{font-size:var(--fs-md)}.hero-actions{flex-wrap:nowrap;max-width:420px}.hero-actions>.landing-btn{flex:none;padding:0 var(--s-4);white-space:nowrap}.hero-actions>.landing-btn-primary{flex:1 1}.hero-clock{top:76px;inset-inline-start:var(--s-4);inset-inline-end:auto;bottom:auto;display:flex;align-items:baseline;gap:var(--s-2);padding:var(--s-1) var(--s-3);border:var(--border-w) solid var(--hero-line);border-radius:var(--radius-pill);background:var(--hero-glass);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);text-align:start;text-shadow:none}.hero-time{font-size:var(--fs-md)}.hero-clock:has(.hero-play){padding:0;border:0;background:none;-webkit-backdrop-filter:none;backdrop-filter:none}.hero-illustration{margin:0}.hero-date{display:none}.hero-state{margin:0}.hero-scrub-wrap{left:var(--s-4);right:var(--s-4);bottom:var(--s-6)}.hero-vignette{background:linear-gradient(to bottom,var(--hero-scrim-soft) 0,transparent 22%),linear-gradient(to top,var(--hero-scrim) 0,var(--hero-scrim) 30%,var(--hero-scrim-soft) 55%,transparent 78%)}.landing-section{padding:var(--s-12) var(--s-4)}.landing-cols,.landing-steps,.landing-trust{grid-template-columns:1fr;gap:var(--s-4)}.landing-band{grid-template-columns:1fr 1fr;gap:var(--s-3)}.landing-band div{padding:var(--s-4)}.landing-cta-in{padding:var(--s-6)}.landing-footer{padding:var(--s-6) var(--s-4)}.landing-footer-links{-webkit-margin-start:0;margin-inline-start:0}.sun-study{height:360vh}.sun-study-intro{top:64px;inset-inline-start:var(--s-4);inset-inline-end:var(--s-4);padding:var(--s-4)}.sun-study-intro h2{font-size:var(--fs-xl)}.sun-study-intro .eyebrow{margin-bottom:var(--s-2)}.sun-study-chapter{font-size:var(--fs-sm);min-height:4.6em}.sun-study-hud{inset-inline-start:var(--s-4);inset-inline-end:var(--s-4);bottom:var(--s-4);width:auto;padding:var(--s-4)}.sun-study-time{font-size:var(--fs-2xl)}.sun-study-unit{margin:var(--s-3) 0}.sun-study-tag{display:inline-block;padding:2px var(--s-2);border-radius:var(--radius-pill);background:var(--model-unit);color:var(--on-brand);font-size:var(--fs-xs);font-weight:600;white-space:nowrap;box-shadow:var(--landing-glass-shadow)}.sun-study-hint{display:none}}.editor-status{scroll-margin-bottom:calc(var(--tap) + var(--s-8))}.editor-more>summary{padding-block:var(--s-3)}.scene-wrap{position:relative}.scene-compass{position:absolute;top:var(--s-2);right:var(--s-2);width:var(--tap);height:var(--tap);padding:var(--s-1);border-radius:var(--radius-pill);background:var(--surface);border:var(--border-w) solid var(--border);box-shadow:var(--shadow-overlay);pointer-events:none}.scene-compass svg{display:block;width:100%;height:100%}.scene-canvas,.scene-canvas *{touch-action:pan-y!important}.file-field{min-width:0}.file-input{width:100%}.bar-hint,.file-input{min-width:0;font-size:var(--fs-sm)}.bar-hint{flex:1 1 8em;color:var(--text-muted);line-height:1.25}.r-wrap{overflow-wrap:anywhere;min-width:0}.r-nums{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.r-file{width:100%;max-width:100%;min-width:0}.r-sticky{flex-wrap:nowrap}.r-sticky .btn{flex:none}.r-sticky-note{flex:1 1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.hud-dim[hidden]{display:none}.tour-top{padding:var(--s-2) var(--s-4) 0}.tour-top .steps{margin:0 0 var(--s-2)}.editor-page{overflow-wrap:anywhere;min-width:0}.editor-plan-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2)}.editor-compass{flex:none;width:calc(var(--tap) + var(--s-4));height:calc(var(--tap) + var(--s-4));border-radius:var(--radius-pill);background:var(--surface);border:var(--border-w) solid var(--border)}.editor-compass svg{display:block;width:100%;height:100%}.editor-compass text{font-size:var(--fs-xs);font-weight:600}.plan-handle{touch-action:none}.editor-bar-warn{flex:1 1 8em;min-width:0;font-size:var(--fs-sm);line-height:1.25;color:var(--warn);text-align:start}.editor-scale{scroll-margin-top:var(--s-4)}.file-pick{justify-self:start;font-weight:400}.file-pick:focus-within{outline:2px solid var(--brand);outline-offset:1px}.file-pick.is-disabled{opacity:.5;cursor:not-allowed}.file-chosen{display:flex;align-items:center;gap:var(--s-3);min-width:0}.file-thumb{flex:none;width:64px;height:64px;object-fit:contain;border:var(--border-w) solid var(--border);border-radius:var(--radius-control);background:var(--surface)}.file-name{min-width:0;font-size:var(--fs-sm)}.entry-summary,.file-name,.suggest-list .option{overflow-wrap:anywhere}.scene-placeholder{place-items:center;height:340px;padding:var(--s-3);border:var(--border-w) solid var(--border);border-radius:var(--radius-control);background:var(--bg-subtle);color:var(--text-muted)}.scene-loading,.scene-placeholder{display:grid;font-size:var(--fs-sm);text-align:center}.scene-loading{position:absolute;inset:0;place-items:center;padding:var(--s-3);color:var(--text-muted);pointer-events:none}.suggest-list .suggest-status{min-height:var(--tap);padding:var(--s-2) var(--s-3);color:var(--text-muted);cursor:default}.r-scene-wait{display:flex;align-items:center;justify-content:center;padding:var(--s-4);color:var(--text-muted);font-size:var(--fs-sm);text-align:center}.r-legend{display:flex;flex-wrap:wrap;gap:var(--s-2) var(--s-4);margin:0;padding:0;list-style:none}.r-legend li{display:flex;align-items:center;gap:var(--s-2)}.r-swatch{flex:none;width:var(--s-4);height:var(--s-4);border-radius:var(--radius-control);border:var(--border-w) solid var(--border-strong)}.r-swatch-other{background:var(--neighbour)}.hud-stack{position:absolute;top:var(--s-3);left:var(--s-3);right:var(--s-3);z-index:4;display:flex;flex-direction:column;align-items:flex-start;gap:var(--s-2);pointer-events:none}.hud-stack>.hud{position:static}.hud-card-notice{margin:0 0 var(--s-2);font-size:var(--fs-xs);line-height:1.4;color:var(--text-muted)}.hud-btn{position:absolute;right:var(--s-3);bottom:calc(var(--s-3) + env(safe-area-inset-bottom));z-index:5}.tour-stage:-webkit-full-screen{width:100%;height:100%;background:var(--bg)}.tour-stage:fullscreen{width:100%;height:100%;background:var(--bg)}@media (max-width:640px){.tour{height:auto;min-height:100dvh}.tour-stage{flex:none;height:55dvh;min-height:280px}.tour-stage:-webkit-full-screen{height:100%}.tour-stage:fullscreen{height:100%}.tour-panel{max-height:none;overflow-y:visible}}.hud-stack>.tour-notice-chip{pointer-events:auto;max-width:100%;justify-content:flex-start;text-align:start;font-size:var(--fs-xs);line-height:1.4}.hud-stack>.tour-heading{position:absolute;top:0;right:0;left:auto;display:inline-flex;align-items:center;gap:var(--s-2)}.r-swatch-yours{background:var(--warn-strong)}.tour-hud-row{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--s-2);width:100%}.tour-hud-row>.hud{position:static}.tour-hud-row>.tour-notice-chip{pointer-events:auto;max-width:100%;justify-content:flex-start;text-align:start;font-size:var(--fs-xs);line-height:1.4}.tour-hud-row>.tour-heading{-webkit-margin-start:auto;margin-inline-start:auto;display:inline-flex;align-items:center;gap:var(--s-2)}.file-name{flex-wrap:wrap;row-gap:0}.file-name span{max-width:100%}.ed-layout{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:var(--s-3);gap:var(--s-3)}.ed-stage{position:-webkit-sticky;position:sticky;top:var(--bar-h);z-index:3;margin:0 calc(-1 * max(var(--s-4), env(safe-area-inset-right))) 0 calc(-1 * max(var(--s-4), env(safe-area-inset-left)));padding:var(--s-2) max(var(--s-4),env(safe-area-inset-right)) var(--s-2) max(var(--s-4),env(safe-area-inset-left));background:var(--bg);border-bottom:var(--border-w) solid var(--border)}.ed-plan{position:relative}.ed-svg{height:40dvh;min-height:200px;border:var(--border-w) solid var(--border);touch-action:none;-moz-user-select:none;user-select:none;-webkit-user-select:none}.ed-plan-chips{position:absolute;top:var(--s-2);inset-inline-start:var(--s-2);display:flex;gap:var(--s-1);pointer-events:none}.ed-chip{padding:0 var(--s-2);border:var(--border-w) solid var(--border);border-radius:var(--radius-pill);background:var(--surface);font-size:var(--fs-xs);font-weight:600;line-height:1.8}.ed-chip.is-ok{color:var(--ok)}.ed-chip.is-error{border-color:var(--error);color:var(--error)}.ed-toolbar{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:var(--s-2);gap:var(--s-2);margin-top:var(--s-2)}.ed-tool{flex-direction:column;gap:2px;min-height:52px;padding:var(--s-1);font-size:var(--fs-sm);line-height:1.2;white-space:nowrap}.ed-tool[aria-pressed=true]{background:var(--brand-soft);border-color:var(--brand);font-weight:600}.ed-tool.is-danger:not(:disabled){color:var(--error)}.ed-hint{margin-top:var(--s-2);overflow:hidden;font-size:var(--fs-sm);color:var(--text-muted);line-height:1.4;white-space:nowrap;text-overflow:ellipsis}.ed-panels{display:grid;align-content:start;grid-gap:var(--s-3);gap:var(--s-3);min-height:60dvh;min-width:0}.ed-panels>section{margin-top:0}.ed-panels :is(input,select,button,summary){scroll-margin-top:calc(var(--bar-h) + 40dvh + 140px)}.ed-errors{margin:0;-webkit-padding-start:var(--s-4);padding-inline-start:var(--s-4);font-size:var(--fs-sm)}.ed-head{display:flex;align-items:center;gap:var(--s-2)}.page section .ed-head h2{margin:0}.ed-head>.btn-ghost{-webkit-margin-start:auto;margin-inline-start:auto}.ed-slider{display:grid;min-width:0}.ed-slider-head{display:flex;justify-content:space-between;gap:var(--s-2);font-weight:600}.ed-slider-head,.ed-slider-num{align-items:center;font-size:var(--fs-sm)}.ed-slider-num{display:inline-flex;gap:var(--s-1);flex:none;font-weight:400;color:var(--text-muted)}.ed-slider-num>input:not([type=checkbox]):not([type=radio]):not([type=range]){width:88px;padding:0 var(--s-2);font-size:var(--fs-md);text-align:end;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--text)}.ed-slider>input[type=range]{width:100%;height:var(--tap);margin:0;touch-action:pan-y}.ed-grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:var(--s-2) var(--s-3);gap:var(--s-2) var(--s-3)}.ed-grid-2 .ed-slider-num>input:not([type=checkbox]):not([type=radio]):not([type=range]){width:72px}.ed-elev{display:block;width:100%;height:72px;border-radius:var(--radius-control);background:var(--bg-subtle)}.ed-pick{display:flex;flex-wrap:wrap;gap:var(--s-2);margin-top:var(--s-2)}.ed-pick>button{font-size:var(--fs-sm)}.ed-legend{display:flex;flex-wrap:wrap;gap:var(--s-4);font-size:var(--fs-xs);color:var(--text-muted)}.ed-legend span{display:inline-flex;align-items:center;gap:var(--s-1)}.ed-swatch{display:inline-block;width:16px;height:4px;border-radius:var(--radius-pill)}.ed-swatch.is-window{background:var(--sun)}.ed-swatch.is-door{background:var(--border-strong)}.ed-swatch.is-selected{background:var(--selection)}.ed-card{transition:border-color var(--dur) var(--ease)}.ed-card.is-active{border-color:var(--selection)}@media (min-width:720px){.ed-layout{grid-template-columns:minmax(0,3fr) minmax(300px,2fr);gap:var(--s-6);align-items:start}.ed-stage{top:calc(var(--bar-h) + var(--s-4));margin:0;padding:0;border-bottom:0;background:transparent}.ed-svg{height:min(520px,calc(100dvh - var(--bar-h) - 280px))}.ed-panels{min-height:70dvh}}.steps-bars{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}.results-head>*+*{margin-top:var(--s-1)}.results-planview{max-height:46vh}.results-tour{display:grid;grid-gap:var(--s-2);gap:var(--s-2)}.results-tour>.btn-primary{min-height:48px}.results-scrubber{position:-webkit-sticky;position:sticky;bottom:0;z-index:2;display:grid;grid-gap:var(--s-2);gap:var(--s-2);-webkit-margin-start:calc(-1 * var(--s-4));margin-inline-start:calc(-1 * var(--s-4));-webkit-margin-end:calc(-1 * var(--s-4));margin-inline-end:calc(-1 * var(--s-4));padding:var(--s-2) var(--s-4) calc(var(--s-2) + env(safe-area-inset-bottom));background:var(--glass);backdrop-filter:saturate(1.4) blur(var(--glass-blur));-webkit-backdrop-filter:saturate(1.4) blur(var(--glass-blur));border-top:var(--border-w) solid var(--border);border-bottom:var(--border-w) solid var(--border)}.results-scrubber .timeline-now{min-width:3.2em;text-align:center}.overlay-stage{position:relative;overflow:hidden;border-radius:var(--radius-control);border:var(--border-w) solid var(--border);background:var(--bg-subtle);touch-action:pan-x pan-y pinch-zoom;-moz-user-select:none;user-select:none;-webkit-user-select:none}.overlay-stage>img{display:block;width:100%;height:auto}.overlay-stage>svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.overlay-stage.is-dragging{touch-action:none;cursor:-webkit-grab;cursor:grab;border-color:var(--selection)}.overlay-stage.is-box{cursor:crosshair}.overlay-slider{display:grid;grid-gap:var(--s-1);gap:var(--s-1)}.overlay-slider>span{display:flex;justify-content:space-between;gap:var(--s-3);font-size:var(--fs-sm)}.overlay-slider>input[type=range]{width:100%;min-height:var(--tap)}.results-fold>summary,.window-height summary{min-height:var(--tap)}.window-height>summary>span{display:grid}.window-height>.stack{margin-top:var(--s-3)}.tour-bar{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-2) max(var(--s-4),env(safe-area-inset-right)) var(--s-2) max(var(--s-4),env(safe-area-inset-left));background:var(--surface);border-bottom:var(--border-w) solid var(--border)}.tour-bar>.btn{flex:none}.tour-bar-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-sm);color:var(--text-muted)}