@font-face{font-family:Inter;src:url('./assets/inter.woff2');font-display:swap}:root{color-scheme:dark;--bg:#111820;--fg:#eae9e2;--muted:#a0aab4;--line:#e6eaf029;--surface:#161d25e8;--panel:#1b242e;--accent:#d6b98b;--tint:#d6b98b20}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;overscroll-behavior:none}body{background:var(--bg);color:var(--fg);font:13px Inter,-apple-system,BlinkMacSystemFont,'Hiragino Sans',sans-serif;-webkit-font-smoothing:antialiased}body.light{color-scheme:light;--bg:#e9eae5;--fg:#202b36;--muted:#586572;--line:#14202f30;--surface:#f4f5efe8;--panel:#f4f4ee;--accent:#8c6843;--tint:#8c684320}button,input,a{touch-action:manipulation;-webkit-tap-highlight-color:transparent}button,input{font:inherit;color:inherit}button{cursor:pointer}button,a{white-space:nowrap}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:3px}[hidden]{display:none!important}button{border:1px solid var(--line);border-radius:8px;background:var(--surface);padding:0 15px;min-height:44px}button:hover:enabled{border-color:var(--accent)}a{color:inherit}.stage{position:relative;isolation:isolate;width:100%;height:100vh;height:100dvh;overflow:hidden;background:radial-gradient(ellipse 65% 65% at 54% 51%,#354048 0%,#202b33 50%,var(--bg) 100%)}body.light .stage{background:radial-gradient(ellipse at 54% 50%,#fffefa,#dfe2dd 60%,var(--bg))}#viewport{position:absolute;inset:0;touch-action:none}canvas{display:block;width:100%;height:100%;touch-action:none}.topbar{position:absolute;z-index:3;inset:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:calc(17px + env(safe-area-inset-top)) max(25px,env(safe-area-inset-right)) 16px max(25px,env(safe-area-inset-left));border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;white-space:nowrap}.emblem{width:42px;height:42px;border:1px solid var(--accent);display:grid;place-items:center;color:var(--accent);font:29px Georgia,serif;position:relative}.emblem span{position:absolute;bottom:0;right:5px;font-size:24px}.brand strong{font-size:14px;letter-spacing:2px;font-weight:650}.brand b{font-weight:300}.brand small{display:block;font-size:7px;color:var(--muted);letter-spacing:2px;margin-top:6px}nav{display:flex;gap:8px}nav button{font-size:12px}.intro{position:absolute;left:5%;top:clamp(110px,16vh,180px);pointer-events:none;z-index:1;max-width:40%}.eyebrow{font-size:9px;letter-spacing:1.5px;color:var(--accent);display:flex;gap:12px;align-items:center}.eyebrow i{width:22px;height:1px;background:var(--accent)}h1{font-size:clamp(35px,4.5vw,67px);font-weight:350;letter-spacing:-2px;line-height:1.1;margin:16px 0 12px}h1 span{display:block;font-size:.48em;color:var(--muted);letter-spacing:2px;margin-top:7px}.intro p{color:var(--muted);font-size:12px;letter-spacing:.5px}.specs{display:flex;gap:15px;margin-top:18px;color:var(--accent);font-size:8px;letter-spacing:1.2px}.camera-tools{position:absolute;left:5%;bottom:calc(181px + env(safe-area-inset-bottom));display:flex;gap:4px;padding:4px;border:1px solid var(--line);border-radius:10px;background:var(--surface);backdrop-filter:blur(16px)}.camera-tools button{border:0;background:none;min-width:45px;font-size:11px;color:var(--muted);padding:0 10px;min-height:40px}.camera-tools button.active{background:var(--accent);color:#151c20;font-weight:700}.hint{position:absolute;right:5%;bottom:calc(196px + env(safe-area-inset-bottom));font-size:8px;letter-spacing:1px;color:var(--muted);pointer-events:none}.hint span{color:var(--accent);margin:0 7px}.dock{position:absolute;z-index:2;left:5%;right:5%;bottom:calc(22px + env(safe-area-inset-bottom));border:1px solid var(--line);border-radius:12px;background:var(--surface);backdrop-filter:blur(18px);padding:15px 18px}.dock-actions{display:flex;gap:10px}.dock-actions button{flex:1;font-size:12px;min-height:48px}.dock-actions .primary{background:var(--accent);border-color:var(--accent);color:#151b20;font-weight:700;flex:1.4}.dock-actions button span{margin-left:15px}.range-row{display:flex;align-items:center;gap:18px;margin-top:11px;min-height:32px}.range-row label{font-size:10px;color:var(--muted)}input[type=range]{accent-color:var(--accent);height:28px;flex:1;min-width:30px;margin:0;touch-action:pan-y}.range-row output{font-size:14px;font-variant-numeric:tabular-nums;width:38px;text-align:right;color:var(--accent)}.state{font-size:7px;letter-spacing:1px;color:var(--muted);min-width:95px;text-align:right}#loading{position:absolute;z-index:4;left:50%;top:50%;transform:translate(-50%,-50%);border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:16px 20px;display:flex;gap:12px;align-items:center;font-size:12px;white-space:nowrap}.spinner{width:17px;height:17px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}#poster{position:absolute;inset:22% 18% 24%;display:flex;align-items:center;justify-content:center}#poster img{max-width:100%;max-height:100%;object-fit:contain;border-radius:10px}#poster>span{position:absolute;bottom:-10px;background:var(--surface);padding:9px 12px;max-width:100%;border:1px solid var(--line);border-radius:5px;font-size:10px;color:var(--muted);text-align:center;line-height:1.6}#backdrop{position:absolute;inset:0;z-index:9;background:#0007;backdrop-filter:blur(3px)}#sheet{position:absolute;z-index:10;right:18px;top:calc(88px + env(safe-area-inset-top));width:385px;max-width:calc(100% - 36px);max-height:calc(100dvh - 110px - env(safe-area-inset-top) - env(safe-area-inset-bottom));overflow:auto;overscroll-behavior:contain;padding:23px;border:1px solid var(--line);border-radius:14px;background:var(--panel);box-shadow:0 20px 60px #0005}.sheet-head{display:flex;justify-content:space-between;align-items:start;gap:15px}.sheet-head small{color:var(--accent);font-size:8px;letter-spacing:2px}.sheet-head h2{font-weight:450;font-size:23px;margin:8px 0 0}.sheet-head button{width:42px;padding:0;font-size:22px}.sheet-tabs{display:flex;margin:20px 0 13px;gap:6px}.sheet-tabs button{flex:1;font-size:11px}.sheet-tabs button.active{border-color:var(--accent);background:var(--tint);color:var(--accent)}.copy,.note{color:var(--muted);font-size:11px;line-height:1.8}.note{font-size:10px;margin-top:20px}.model-card{display:flex;align-items:center;text-align:left;gap:15px;width:100%;padding:12px;margin-top:12px;white-space:normal}.model-card img{width:120px;height:95px;object-fit:cover;border-radius:6px;flex:none}.model-card strong{font-size:13px;display:block;line-height:1.5}.model-card small{display:block;color:var(--accent);font-size:9px;margin-bottom:8px}.model-card em{font-style:normal;color:var(--muted);font-size:10px;display:block;margin-top:7px}.model-card.active{border-color:var(--accent);background:var(--tint)}.filters{display:flex;gap:3px;justify-content:space-between}.filters button{padding:0 7px;font-size:10px;min-height:38px;background:none;border:0}.filters button.active{color:var(--accent);background:var(--tint)}.search{width:100%;padding:12px;border:1px solid var(--line);border-radius:6px;background:var(--surface);font-size:12px;margin:12px 0}.parts-list{max-height:200px;overflow:auto;scrollbar-width:thin}.unit{width:100%;display:flex;justify-content:space-between;gap:12px;text-align:left;border:0;border-bottom:1px solid var(--line);border-radius:0;white-space:normal;font-size:11px;padding:10px;min-height:44px}.unit small{color:var(--accent);font-size:9px}.unit.active{background:var(--tint)}#detail{padding:17px 0 5px;border-top:1px solid var(--line);margin-top:15px}#detail>small{font-size:8px;letter-spacing:1px;color:var(--accent)}#detail h3{font-size:15px;font-weight:500;margin:9px 0}#detail p{font-size:12px;color:var(--muted);line-height:1.85}#partMeshes{font-size:10px;color:var(--accent)}.part-actions{display:flex;gap:7px;margin-top:15px}.part-actions button{flex:1;padding:0 8px;font-size:11px}.setting{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:18px 0;border-bottom:1px solid var(--line)}.setting strong{font-size:12px;font-weight:550;display:block}.setting small{display:block;font-size:10px;color:var(--muted);margin-top:7px}.setting input{width:21px;height:21px;accent-color:var(--accent);margin:0;flex:none}.wide{width:100%;margin-top:18px;min-height:46px;display:flex;align-items:center;justify-content:center;font-size:12px;text-decoration:none}.download{border:1px solid var(--line);border-radius:8px;background:var(--surface)}#studyImage{width:100%;margin-top:12px;border-radius:5px}.image-switch{display:flex;gap:5px;margin-top:15px}.image-switch button{flex:1;padding:0 8px;font-size:10px}#exitFullscreen{position:absolute;z-index:30;right:calc(14px + env(safe-area-inset-right));top:calc(12px + env(safe-area-inset-top));background:var(--surface);min-width:75px}.stage.immersive{position:fixed;inset:0;width:100%;height:100dvh;z-index:100}.stage.immersive>:not(#viewport):not(#poster):not(#loading):not(#exitFullscreen){display:none!important}.stage.immersive #poster{inset:6%}.stage:fullscreen{width:100%;height:100dvh}@media(max-width:700px){.topbar{padding:calc(10px + env(safe-area-inset-top)) calc(12px + env(safe-area-inset-right)) 10px calc(12px + env(safe-area-inset-left))}.emblem{width:34px;height:34px;font-size:24px}.brand{gap:8px}.brand strong{font-size:11px;letter-spacing:.8px}.brand small{font-size:5px;letter-spacing:1px;margin-top:4px}nav{gap:5px}nav button{font-size:10px;padding:0 9px;min-height:42px}nav #settings{padding:0 11px}.intro{top:calc(83px + env(safe-area-inset-top));left:20px;max-width:calc(100% - 40px)}.eyebrow{font-size:7px;gap:9px}h1{font-size:36px;letter-spacing:-1.2px;margin:11px 0 8px}h1 span{display:inline;font-size:20px;letter-spacing:1px;margin-left:6px}.intro p{font-size:10px;margin:8px 0}.specs{font-size:7px;gap:12px;margin-top:11px}.dock{left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));padding:11px}.dock-actions{gap:6px}.dock-actions button{min-height:46px;padding:0 9px;font-size:11px}.dock-actions button span{margin-left:4px}.range-row{gap:9px;margin-top:6px}.range-row label{font-size:9px;white-space:nowrap}.range-row output{font-size:13px;width:35px}.state{display:none}.camera-tools{left:14px;bottom:calc(138px + env(safe-area-inset-bottom));padding:3px;gap:2px}.camera-tools button{min-height:36px;min-width:37px;font-size:10px;padding:0 8px}.hint{right:15px;bottom:calc(152px + env(safe-area-inset-bottom));font-size:6px;letter-spacing:.4px;max-width:125px;line-height:1.7;text-align:right}.hint span{margin:0 3px}#sheet{top:auto;right:0;left:0;bottom:0;width:100%;max-width:100%;max-height:74dvh;border-radius:18px 18px 0 0;padding:20px 20px calc(20px + env(safe-area-inset-bottom))}.model-card{padding:10px;min-height:116px}.model-card img{width:118px;height:90px}.parts-list{max-height:190px}#poster{inset:25% 9% 26%}#poster>span{font-size:9px;bottom:-8px}.model-card strong{font-size:14px}}@media(max-width:360px){.brand strong b,.brand small{display:none}.brand strong{font-size:12px}.intro h1{font-size:31px}nav button{padding:0 7px}nav #settings{padding:0 9px}.hint{display:none}.dock-actions button{font-size:10px;padding:0 6px}}@media(orientation:landscape) and (max-height:550px){.topbar{padding:calc(6px + env(safe-area-inset-top)) max(17px,env(safe-area-inset-right)) 6px max(17px,env(safe-area-inset-left));border:0}.emblem{width:30px;height:30px;font-size:22px}.brand strong{font-size:10px}.brand small{display:none}nav button{min-height:34px;font-size:10px}.intro{top:60px;left:max(20px,env(safe-area-inset-left));max-width:30%}h1{font-size:29px;margin:8px 0}h1 span{font-size:15px;display:block}.intro p,.specs{display:none}.dock{left:35%;right:max(15px,env(safe-area-inset-right));bottom:calc(8px + env(safe-area-inset-bottom));padding:8px 10px}.dock-actions button{min-height:35px;font-size:10px}.range-row{min-height:22px;margin-top:3px}.range-row label{font-size:8px}.state{display:none}.camera-tools{left:max(15px,env(safe-area-inset-left));bottom:calc(12px + env(safe-area-inset-bottom))}.camera-tools button{min-height:33px;min-width:34px;font-size:10px;padding:0 7px}.hint{display:none}#sheet{top:0;bottom:0;right:0;left:auto;width:min(390px,64vw);max-height:100dvh;border-radius:14px 0 0 14px;padding-top:calc(18px + env(safe-area-inset-top))}#poster{inset:10% 26% 23%}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* Reserve the model's own viewport so text and controls never cover the camera frame. */
#viewport{inset:80px 0 170px}
@media(max-width:700px){#viewport{inset:calc(195px + env(safe-area-inset-top)) 0 calc(190px + env(safe-area-inset-bottom))}#poster{inset:calc(195px + env(safe-area-inset-top)) 8% calc(190px + env(safe-area-inset-bottom))}#poster>span{bottom:0;font-size:8px;padding:5px 8px}}
@media(orientation:landscape) and (max-height:550px){#viewport{inset:50px 0 102px 26%}#poster{inset:50px 13% 102px 31%}}
.stage.immersive #viewport{inset:0!important}
