:root{color-scheme:dark;--page:#090c10;--surface:#11161c;--raised:#171e26;--ink:#f0f3f5;--muted:#a3aeb8;--accent:#97d8ea;--line:#29333d;font:16px/1.6 "Segoe UI",system-ui,sans-serif;color:var(--ink);background:var(--page)}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button,select{min-height:44px;border:1px solid var(--line);border-radius:6px;padding:8px 14px;background:var(--raised);color:var(--ink);cursor:pointer}button:hover,select:hover{border-color:var(--accent)}button[aria-pressed=true],#play{background:var(--accent);color:#10222a;border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,canvas:focus-visible{outline:2px solid var(--accent);outline-offset:4px}input[type=range]{accent-color:var(--accent);width:100%;height:44px;cursor:pointer}input[type=checkbox]{width:20px;height:20px;accent-color:var(--accent)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip{position:absolute;top:-100px;z-index:20;padding:12px;background:var(--page)}.skip:focus{top:0}.site-header{max-width:1440px;margin:auto;padding:24px 36px;display:flex;align-items:center;gap:24px;border-bottom:1px solid var(--line)}.brand{color:var(--ink);font-size:28px;font-weight:700;line-height:1}.brand span,h1 span{color:var(--accent)}.site-header>span{font-size:13px;color:var(--muted)}.site-header nav{margin-left:auto;display:flex;gap:28px;font-size:14px}.workspace{max-width:1440px;margin:auto;padding:44px 36px 32px;display:grid;grid-template-columns:300px minmax(0,1fr);gap:44px}.eyebrow{font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:var(--accent);margin:0 0 16px}.narrative h1{font-size:40px;line-height:1.08;letter-spacing:-.04em;margin:0 0 22px;font-weight:600}.intro{font-size:16px;line-height:1.65;color:var(--muted);margin:0 0 34px}.story{padding:24px 0;border-top:1px solid var(--line)}.story h2{font-size:23px;line-height:1.25;font-weight:500;margin:0 0 14px}.story p:not(.eyebrow){font-size:15px;color:var(--muted);margin:0 0 16px}.story .source{font-size:12px!important;color:var(--accent)!important;border-left:2px solid var(--accent);padding-left:12px;line-height:1.6}#chapters{display:grid;gap:3px}#chapters button{display:flex;gap:12px;text-align:left;background:transparent;border-color:transparent;color:var(--muted);padding:8px 10px;font-size:14px}#chapters button span{color:var(--accent);font-size:12px;align-self:center}#chapters button[aria-current=step]{background:var(--raised);color:var(--ink)}.model-area{min-width:0}.scene-header{display:flex;justify-content:space-between;gap:12px;font-size:12px;color:var(--muted);margin-bottom:12px}.scene-header span:first-child{color:var(--ink);font-weight:600;letter-spacing:.04em}#viewport{height:480px;position:relative;overflow:hidden;border:1px solid var(--line);border-radius:8px;background:#11161c}#scene{width:100%;height:100%;display:block;touch-action:none}#loading{position:absolute;inset:0;padding:30px;display:grid;place-content:center;background:var(--surface);text-align:center;color:var(--muted);z-index:3}#loading[hidden]{display:none}#loading a{display:block;margin-top:16px}.model-labels{position:absolute;bottom:42px;left:10%;right:10%;display:grid;grid-template-columns:1fr 1fr;gap:16px;pointer-events:none}.model-labels span{font-size:11px;color:var(--muted);display:grid;text-align:center;line-height:1.5}.model-labels b{font-weight:500;font-size:16px;color:var(--ink)}#gesture{position:absolute;bottom:10px;left:0;right:0;text-align:center;margin:0;font-size:11px;color:var(--muted);pointer-events:none}#transport{display:flex;align-items:center;gap:12px;padding:16px 0;border-bottom:1px solid var(--line)}#play{min-width:104px}#restart{font-size:13px}.scrub{flex:1;min-width:0}#timecode{font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--muted)}#controls{padding-top:18px}.control-row{display:flex;gap:16px;align-items:end;flex-wrap:wrap;margin-bottom:14px}.control-row label{display:grid;gap:6px;font-size:12px;color:var(--muted);flex:1;min-width:140px}.control-row select{width:100%;font-size:14px}.control-row .check{display:flex;align-items:center;min-width:110px;min-height:44px;flex:0;font-size:14px}.range-control{max-width:300px}.cabinet-choice{padding:0;border:0;margin:0;min-width:170px}.cabinet-choice legend{font-size:12px;color:var(--muted);padding:0;margin-bottom:6px}.cabinet-choice button{font-size:14px;padding:8px 12px}.part-row label{max-width:240px}.part-row p{font-size:13px;flex:1;min-width:220px;line-height:1.55;color:var(--muted);margin:0 0 6px}.dimensions{font-size:12px;color:var(--accent);margin:14px 0 0}.evidence{max-width:1368px;margin:16px auto 0;border-top:1px solid var(--line);padding:44px 0;display:grid;grid-template-columns:300px 1fr;gap:44px}.evidence h2{font-size:28px;font-weight:500;line-height:1.2;margin:0 0 20px}.evidence p{font-size:14px;color:var(--muted);max-width:640px}.fact-table{overflow-x:auto}table{border-collapse:collapse;width:100%;text-align:left;font-size:14px}th,td{border-bottom:1px solid var(--line);padding:14px 16px 14px 0}thead th{color:var(--muted);font-size:12px;font-weight:400}tbody th{color:var(--accent);font-weight:500}.fact-table a{font-size:14px}footer{max-width:1368px;margin:auto;padding:24px 0 32px;border-top:1px solid var(--line);display:flex;gap:24px;flex-wrap:wrap;font-size:13px}.fallback{margin:24px 36px}
@media(min-width:1500px){#viewport{height:540px}}
.model-area:fullscreen,.model-area.is-expanded{background:var(--page);padding:24px;overflow:auto}.model-area.is-expanded{position:fixed;inset:0;z-index:30}.study-expanded{overflow:hidden}.model-area:fullscreen #viewport,.model-area.is-expanded #viewport{height:min(68vh,720px)}.model-area:fullscreen .scene-header,.model-area.is-expanded .scene-header{max-width:none}
@media(max-width:1050px){.workspace{grid-template-columns:245px minmax(0,1fr);gap:28px;padding:32px 28px}.narrative h1{font-size:36px}#viewport{height:400px}.evidence,footer{margin-left:28px;margin-right:28px}.evidence{grid-template-columns:245px 1fr;gap:28px}.scene-header{font-size:11px}.scene-header span:last-child{max-width:130px;text-align:right}#transport{flex-wrap:wrap}#timecode{margin-left:auto}}
@media(max-width:800px){.workspace{display:flex;flex-direction:column;padding:28px 24px;gap:24px}.site-header{padding:20px 24px;gap:16px}.site-header>span{display:none}.site-header nav{gap:20px;font-size:13px}.narrative h1{font-size:36px}.intro{margin-bottom:20px;max-width:550px}.story{padding:20px 0 8px}.story h2{font-size:23px}.story p{max-width:620px}#chapters{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}#chapters button{min-height:46px;font-size:12px;padding:8px;gap:6px;border-color:var(--line)}.scene-header span:last-child{max-width:none}#viewport{height:420px}.evidence{display:block;margin:0 24px;padding:32px 0}.evidence>div:first-child{max-width:600px}footer{margin:0 24px}#transport{gap:10px}.scrub{flex-basis:calc(100% - 140px);order:3}#timecode{order:4}.part-row p{min-width:0}.part-row label{flex-basis:100%;max-width:none}}
@media(max-width:430px){.workspace{padding:24px 20px}.site-header{padding:20px}.narrative h1{font-size:36px}.intro{font-size:15px}#chapters{grid-template-columns:repeat(2,minmax(0,1fr))}#viewport{height:320px}.scene-header{font-size:10px}.control-row{gap:12px}.control-row label{min-width:130px}.cabinet-choice{flex-basis:100%}.model-labels{left:8%;right:8%}.model-labels b{font-size:14px}.model-labels span{font-size:10px}.dimensions{font-size:11px}.evidence,footer{margin:0 20px}table{font-size:12px}th,td{padding-right:12px}.evidence h2{font-size:26px}}
/* Fixed composition for deterministic offline film capture. */
body.capture .site-header,body.capture #chapters,body.capture #transport,body.capture #controls,body.capture .evidence,body.capture footer,body.capture #gesture{display:none}body.capture .workspace{position:relative;max-width:none;width:100vw;height:100vh;padding:0;display:block}body.capture .narrative{position:absolute;z-index:2;left:5%;top:11%;width:25%;pointer-events:none}body.capture .narrative h1{font-size:64px;line-height:1.08;margin-bottom:26px}body.capture .eyebrow{font-size:16px;margin-bottom:20px}body.capture .intro{font-size:23px;line-height:1.55;margin-bottom:38px}body.capture .story{padding-top:32px}body.capture .story h2{font-size:32px}body.capture .story p:not(.eyebrow){font-size:21px;line-height:1.55}body.capture .story .source{font-size:17px!important;line-height:1.7}body.capture .model-area{position:absolute;left:32%;top:0;width:68%;height:100%}body.capture .scene-header{position:absolute;z-index:2;left:6%;right:7%;top:7%;font-size:16px}body.capture #viewport{height:100%;border:0;border-radius:0;background:var(--page)}body.capture .model-labels{bottom:11%;left:8%;right:8%}body.capture .model-labels span{font-size:19px}body.capture .model-labels b{font-size:29px}

/* Phase explanations remain accessible HTML while geometry tells the story. */
.model-labels[hidden]{display:none}.model-labels{bottom:92px}.stage-caption{position:absolute;left:20px;right:20px;bottom:31px;pointer-events:none;background:rgba(9,12,16,.9);padding:10px 12px;border-left:2px solid var(--accent)}.stage-caption p{margin:0;font-size:12px;line-height:1.5}.stage-caption #stage-detail{font-size:11px;color:var(--muted);margin-top:3px}.room-controls{padding-top:16px;border-top:1px solid var(--line)}.room-controls label{max-width:300px}.room-controls label output{color:var(--accent);font-variant-numeric:tabular-nums}.room-controls p{flex:1;min-width:180px;font-size:13px;color:var(--accent);margin:0 0 12px}#fit-status[data-fits=false]{color:#e3b574}.room-scope{font-size:12px;color:var(--muted);margin:0 0 18px;max-width:700px}.stage-caption p{overflow-wrap:anywhere}
@media(max-width:430px){.stage-caption{left:12px;right:12px;bottom:30px;padding:8px 10px}.stage-caption p{font-size:11px}.stage-caption #stage-detail{font-size:10px}.model-labels{bottom:101px}.room-controls p{min-width:130px}}
body.capture .stage-caption{left:7%;right:7%;bottom:5%;padding:18px 22px}body.capture .stage-caption p{font-size:23px}body.capture .stage-caption #stage-detail{font-size:18px;margin-top:6px}body.capture .model-labels{bottom:19%}
