:root{--ink-950:#100d0a;--ink-900:#17130f;--ink-850:#1c1712;--ink-800:#221b15;--ink-700:#2c241c;--line:#f0e2cd16;--line-2:#f0e2cd29;--text:#f2ebe1;--text-2:#b1a597;--text-3:#7d7466;--amber:#e5b571;--amber-deep:#c9954e;--amber-wash:#e5b5711f;--amber-edge:#e5b57161;--brand:#58c191;--cool:#86a9b4;--cool-wash:#86a9b424;--live:#58c191;--panel:#14100de6;--panel-blur:saturate(140%) blur(22px);--r-lg:16px;--r-md:11px;--r-sm:8px;--r-xs:6px;--font-display:"Instrument Serif", "Songti SC", "Source Han Serif SC", serif;--font-body:"PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", system-ui, -apple-system, sans-serif;--font-mono:"DM Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--ink-950);color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;font-size:14px;overflow:hidden}button{color:inherit;cursor:pointer;background:0 0;border:0;font-family:inherit}:focus-visible{outline:2px solid var(--amber);outline-offset:2px;border-radius:var(--r-xs)}.icon{flex:none;display:block}.app{width:100%;height:100%;position:relative}.canvas-layer{position:absolute;inset:0}.float{background:var(--panel);-webkit-backdrop-filter:var(--panel-blur);border:1px solid var(--line)}.brand{z-index:12;align-items:center;gap:18px;display:flex;position:absolute;top:22px;left:24px}.brand:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(115% 150% at 0 0,#100d0acc,#100d0a00 72%);position:absolute;inset:-30px -80px -40px -34px}.brand-mark{align-items:center;gap:12px;display:flex}.brand-logo{color:var(--brand);filter:drop-shadow(0 1px 10px #000000b3);flex:none}.brand-text h1{letter-spacing:.04em;text-shadow:0 1px 14px #000000d9;margin:0;font-size:15.5px;font-weight:500}.brand-text p{font-family:var(--font-mono);letter-spacing:.2em;color:var(--text-2);text-transform:uppercase;text-shadow:0 1px 10px #000c;margin:3px 0 0;font-size:9.5px}.tools{border-radius:var(--r-md);gap:2px;padding:3px;display:flex}.tool{border-radius:var(--r-sm);width:30px;height:30px;color:var(--text-2);place-items:center;transition:background .16s,color .16s;display:grid}.tool:hover{color:var(--text);background:#f0e2cd12}.tool.is-on{background:var(--amber-wash);color:var(--amber)}.views{z-index:12;border-radius:var(--r-lg);flex-direction:column;gap:6px;padding:6px;display:flex;position:absolute;top:96px;left:24px}.view{border-radius:var(--r-md);width:58px;color:var(--text-2);border:1px solid #0000;flex-direction:column;align-items:center;gap:5px;padding:9px 4px 7px;transition:background .18s,color .18s,border-color .18s;display:flex}.view span{letter-spacing:.04em;font-size:10.5px}.view:hover{color:var(--text);background:#f0e2cd0f}.view.is-on{background:var(--amber-wash);border-color:var(--amber-edge);color:var(--amber)}.app.is-narrow .console{right:106px}.console{z-index:12;border-radius:var(--r-lg);align-items:stretch;width:fit-content;margin:0 auto;transition:opacity .26s,transform .26s;display:flex;position:absolute;bottom:24px;left:216px;right:364px;overflow:hidden}.console.is-hidden{opacity:0;pointer-events:none;transform:translateY(14px)}.scenes{gap:3px;padding:7px;display:flex}.scene{border-radius:var(--r-md);width:62px;color:var(--text-2);border:1px solid #0000;flex-direction:column;align-items:center;gap:6px;padding:8px 4px 7px;transition:background .18s,color .18s,border-color .18s;display:flex}.scene span{letter-spacing:.03em;font-size:11px}.scene:hover{color:var(--text);background:#f0e2cd0f}.scene.is-on{background:var(--amber-wash);border-color:var(--amber-edge);color:var(--amber)}.clock{border-left:1px solid var(--line);color:var(--text-3);align-items:center;gap:11px;padding:0 18px 0 16px;display:flex}.clock-time{font-family:var(--font-display);letter-spacing:.01em;color:var(--text);font-variant-numeric:tabular-nums;min-width:56px;font-size:21px}input[type=range]{appearance:none;background:var(--line-2);cursor:pointer;border-radius:2px;outline:none;height:3px}input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--amber);border:3px solid var(--ink-900);width:14px;height:14px;box-shadow:0 0 0 1px var(--amber-edge), 0 0 10px #e5b57166;cursor:pointer;border-radius:50%}input[type=range]::-moz-range-thumb{background:var(--amber);border:3px solid var(--ink-900);border-radius:50%;width:14px;height:14px}input[type=range].is-cool::-webkit-slider-thumb{background:var(--cool);box-shadow:0 0 0 1px #86a9b480,0 0 10px #86a9b459}.time-range{width:128px}.panel{z-index:12;border-radius:var(--r-lg);flex-direction:column;width:316px;display:flex;position:absolute;top:22px;bottom:24px;right:24px;overflow:hidden}.panel-head{border-bottom:1px solid var(--line);padding:15px 18px 14px}.panel-heading{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.panel-collapse{border-radius:var(--r-xs);width:27px;height:27px;color:var(--text-3);flex:none;place-items:center;transition:background .16s,color .16s;display:grid}.panel-collapse:hover{color:var(--text);background:#f0e2cd14}.panel-eyebrow{font-family:var(--font-mono);letter-spacing:.2em;color:var(--text-2);text-transform:uppercase;font-size:9.5px}.panel-title{font-family:var(--font-display);letter-spacing:.01em;margin:7px 0 0;font-size:26px;font-weight:400;line-height:1.1}.panel-sub{color:var(--text-2);margin:6px 0 0;font-size:11.5px}.panel-sub b{color:var(--amber);font-variant-numeric:tabular-nums;font-weight:500}.panel-body{flex:1;padding:4px 14px 18px;overflow-y:auto}.panel-body::-webkit-scrollbar{width:9px}.panel-body::-webkit-scrollbar-thumb{background:#f0e2cd1a padding-box content-box;border:3px solid #0000;border-radius:5px}.climate-strip{border-bottom:1px solid var(--line);grid-template-columns:repeat(3,1fr);margin:0 -14px 14px;padding:15px 14px 16px;display:grid}.metric{text-align:center}.metric-icon{color:var(--text-3);margin:0 auto 7px}.metric-value{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:25px;line-height:1}.metric-value i{color:var(--text-2);letter-spacing:0;margin-left:2px;font-size:10px;font-style:normal}.metric-label{color:var(--text-3);letter-spacing:.08em;margin-top:6px;font-size:10px}.area{margin-bottom:18px}.area-head{align-items:center;gap:10px;margin:0 2px 9px;display:flex}.area-name{letter-spacing:.16em;color:var(--text-3);font-size:11px}.area-rule{background:var(--line);flex:1;height:1px}.area-count{font-family:var(--font-mono);color:var(--text-3);font-variant-numeric:tabular-nums;font-size:10px}.dev{border:1px solid var(--line);border-radius:var(--r-md);background:#f0e2cd06;margin-bottom:7px;transition:border-color .2s,background .2s}.dev.is-on{background:linear-gradient(#e5b57112,#e5b57106);border-color:#e5b57142}.dev.is-open{border-color:var(--line-2)}.dev-row{text-align:left;align-items:center;gap:12px;width:100%;padding:11px 12px;display:flex}.dev-row.is-clickable{cursor:pointer}.dev-icon{border-radius:var(--r-sm);width:34px;height:34px;color:var(--text-3);background:#f0e2cd0d;flex:none;place-items:center;transition:background .2s,color .2s,box-shadow .2s;display:grid}.dev.is-on .dev-icon{background:var(--amber-wash);color:var(--amber);box-shadow:0 0 14px #e5b57129}.dev-meta{flex:1;min-width:0}.dev-meta>span{display:block}.dev-name{letter-spacing:.01em;font-size:13.5px}.dev-state{color:var(--text-2);margin-top:3px;font-size:11.5px}.dev.is-on .dev-state{color:var(--amber)}.dev-id{font-family:var(--font-mono);color:var(--text-3);letter-spacing:.01em;margin-top:5px;font-size:9.5px}.toggle{border:1px solid var(--line-2);background:#f0e2cd0d;border-radius:12px;flex:none;width:40px;height:23px;transition:background .22s,border-color .22s;position:relative}.toggle:after{content:"";background:var(--text-3);border-radius:50%;width:17px;height:17px;transition:transform .22s cubic-bezier(.3,.8,.3,1),background .22s;position:absolute;top:2px;left:2px}.dev.is-on .toggle{border-color:var(--amber-edge);background:#e5b57138}.dev.is-on .toggle:after{background:var(--amber);transform:translate(17px);box-shadow:0 0 10px #e5b5718c}.dev-detail{padding:3px 13px 14px}.ctl{margin-top:13px}.ctl:first-child{margin-top:4px}.ctl-head{justify-content:space-between;align-items:baseline;margin-bottom:8px;display:flex}.ctl-label{letter-spacing:.1em;color:var(--text-3);font-size:11px}.ctl-value{font-family:var(--font-mono);color:var(--text);font-variant-numeric:tabular-nums;font-size:12px}.ctl input[type=range]{width:100%}.seg{gap:5px;display:flex}.seg button{border-radius:var(--r-sm);border:1px solid var(--line);color:var(--text-2);background:#f0e2cd0a;flex:1;padding:7px 4px;font-size:11.5px;transition:background .16s,border-color .16s,color .16s}.seg button:hover{color:var(--text);background:#f0e2cd14}.seg button.is-on{background:var(--amber-wash);border-color:var(--amber-edge);color:var(--amber)}.swatches{gap:5px;display:flex}.swatch{border-radius:var(--r-sm);border:1px solid var(--line);flex:1;height:30px;transition:transform .16s,border-color .16s;position:relative}.swatch:hover{transform:translateY(-1px)}.swatch.is-on{border-color:var(--text)}.swatch.is-on:after{content:"";background:#0009;border-radius:50%;width:4px;height:4px;margin:auto;position:absolute;inset:auto 0 5px}.stepper{align-items:center;gap:14px;display:flex}.stepper button{border-radius:var(--r-sm);border:1px solid var(--line);width:32px;height:32px;color:var(--text-2);background:#f0e2cd0a;place-items:center;font-size:17px;line-height:1;transition:background .16s,color .16s;display:grid}.stepper button:hover{color:var(--text);background:#f0e2cd17}.stepper-value{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:27px;line-height:1}.stepper-value i{color:var(--text-2);font-size:13px;font-style:normal}.stepper-note{color:var(--text-3);text-align:right;margin-left:auto;font-size:11px}.rail{z-index:12;border-radius:var(--r-lg);scrollbar-width:none;flex-direction:column;gap:2px;width:58px;max-height:calc(100% - 46px);padding:6px;display:flex;position:absolute;top:22px;right:24px;overflow-y:auto}.rail::-webkit-scrollbar{display:none}.rail-btn{border-radius:var(--r-sm);width:46px;height:42px;color:var(--text-3);border:1px solid #0000;flex:none;place-items:center;transition:background .16s,color .16s,border-color .16s;display:grid}.rail-btn:hover{color:var(--text);background:#f0e2cd14}.rail-btn.is-on{background:var(--amber-wash);border-color:var(--amber-edge);color:var(--amber)}.rail-btn.is-expand{color:var(--text-2)}.rail-rule{background:var(--line);flex:none;height:1px;margin:4px 7px}.tool-rule{background:var(--line);align-self:stretch;width:1px;margin:5px 2px}.brand,.views,.console,.panel,.rail,.log,.calib,.assess{transition:opacity .28s,transform .28s}.app.is-focus .brand,.app.is-focus .views,.app.is-focus .console,.app.is-focus .panel,.app.is-focus .rail,.app.is-focus .log,.app.is-focus .calib,.app.is-focus .assess{opacity:0;pointer-events:none;transform:translateY(8px)}.focus-exit{z-index:20;border-radius:var(--r-md);letter-spacing:.02em;color:var(--text-2);opacity:.5;align-items:center;gap:9px;padding:9px 15px;font-size:12px;transition:opacity .2s,color .2s;display:flex;position:absolute;top:22px;right:24px}.focus-exit:hover{opacity:1;color:var(--text)}.log{z-index:12;border-radius:var(--r-lg);width:fit-content;min-width:168px;transition:width .2s;position:absolute;bottom:24px;left:24px;overflow:hidden}.log.is-open{width:296px}.log-head{width:100%;font-family:var(--font-mono);letter-spacing:.16em;color:var(--text-3);text-transform:uppercase;align-items:center;gap:8px;padding:10px 13px;font-size:9.5px;display:flex}.log-pulse{background:var(--live);width:5px;height:5px;box-shadow:0 0 8px var(--live);border-radius:50%;animation:2.6s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.log-count{font-variant-numeric:tabular-nums;margin-left:auto}.log-chevron{color:var(--text-3);transition:transform .2s}.log.is-open .log-chevron{transform:rotate(90deg)}.log-list{border-top:1px solid var(--line);max-height:168px;padding:0 8px 9px;overflow-y:auto}.log-list::-webkit-scrollbar{width:7px}.log-list::-webkit-scrollbar-thumb{background:#f0e2cd1a padding-box content-box;border:2px solid #0000;border-radius:4px}.log-row{font-family:var(--font-mono);border-bottom:1px solid #f0e2cd0a;align-items:baseline;gap:9px;padding:5px 6px;font-size:10.5px;display:flex}.log-row:last-child{border-bottom:0}.log-time{color:var(--text-3);font-variant-numeric:tabular-nums;flex:none}.log-entity{color:var(--cool);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.log-delta{color:var(--amber);flex:none}.log-empty{color:var(--text-3);text-align:center;padding:16px 12px;font-size:11px}.hotspot-label{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--line-2);white-space:nowrap;font-family:var(--font-body);color:var(--text-2);background:#100d0ad6;border-radius:9px;align-items:center;gap:8px;padding:5px 11px 5px 8px;transition:border-color .18s,background .18s,color .18s;display:flex;transform:translateY(-3px)}.hotspot-label:hover{color:var(--text);background:#1c1712f2;border-color:#f0e2cd4d}.hotspot-label.is-on{color:var(--amber)}.hotspot-label.is-active{border-color:#86a9b48c}.hotspot-text{flex-direction:column;align-items:flex-start;line-height:1.3;display:flex}.hotspot-text em{color:var(--text);font-size:11.5px;font-style:normal}.hotspot-text i{color:currentColor;opacity:.85;font-size:9.5px;font-style:normal}.calib{z-index:13;border-radius:var(--r-lg);border-color:#86a9b452;width:300px;position:absolute;bottom:24px;left:24px;overflow:hidden}.calib-head{border-bottom:1px solid var(--line);align-items:center;gap:9px;padding:11px 13px;display:flex}.calib-badge{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--cool);background:var(--cool-wash);border-radius:var(--r-xs);border:1px solid #86a9b466;flex:none;padding:3px 7px;font-size:9px}.calib-hint{color:var(--text-3);flex:1;font-size:11px;line-height:1.4}.calib-close{color:var(--text-3);place-items:center;display:grid}.calib-close:hover{color:var(--text)}.calib-target{border-bottom:1px solid var(--line);padding:12px 13px}.calib-name{margin-bottom:3px;font-size:13px}.calib-eid{font-family:var(--font-mono);color:var(--text-3);margin-bottom:10px;font-size:9.5px}.calib-axes{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.calib-axis{border:1px solid var(--line);border-radius:var(--r-sm);background:#f0e2cd0a;align-items:center;gap:6px;min-width:0;padding:6px 8px;display:flex}.calib-axis span{font-family:var(--font-mono);color:var(--text-3);flex:none;font-size:9.5px}.calib-axis input{width:100%;min-width:0;color:var(--text);font-family:var(--font-mono);font-variant-numeric:tabular-nums;background:0 0;border:0;outline:none;font-size:12px}.calib-axis input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.calib-axis input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.calib-fallback{padding:0 13px 11px}.calib-fallback p{color:var(--text-3);margin:0 0 7px;font-size:11px;line-height:1.5}.calib-fallback textarea{resize:vertical;width:100%;color:var(--text);border:1px solid var(--line);border-radius:var(--r-sm);font-family:var(--font-mono);background:#0006;padding:9px;font-size:10px;line-height:1.6}.calib-actions{gap:6px;padding:11px 13px;display:flex}.calib-btn{border-radius:var(--r-sm);border:1px solid var(--line);color:var(--text-2);background:#f0e2cd0a;flex:1;padding:8px 6px;font-size:11.5px;transition:background .16s,color .16s}.calib-btn:hover:not(:disabled){color:var(--text);background:#f0e2cd17}.calib-btn.is-primary{background:var(--cool-wash);color:var(--cool);border-color:#86a9b473}.calib-btn:disabled{opacity:.35;cursor:default}@media (width<=1240px) and (width>=901px){.scene{width:56px}.time-range{width:88px}.clock{gap:9px;padding:0 14px 0 12px}.clock-time{min-width:50px;font-size:19px}}@media (width<=1180px) and (width>=901px){.log{display:none}.console{left:106px}}.assess{z-index:12;border-radius:var(--r-lg);flex-direction:column;gap:8px;width:248px;padding:10px 12px 12px;display:flex;position:absolute;bottom:78px;left:24px}.assess-note{color:var(--text-2);margin:0;font-size:11px;line-height:1.45}.assess-btn{border-radius:var(--r-md);color:#f3fff8;letter-spacing:0;text-transform:none;background:#1c7a52;align-items:flex-start;gap:8px;padding:8px 10px;font-size:12.5px;font-weight:600;line-height:1.35;text-decoration:none;display:flex}.assess-btn:hover{background:#22915f}.sheet-handle{flex:none;justify-content:center;width:100%;padding:10px 0 4px;display:flex}.sheet-handle span{background:#f0e2cd3d;border-radius:2px;width:38px;height:4px;display:block}@media (width<=900px){.brand{top:calc(12px + env(safe-area-inset-top,0px));justify-content:space-between;left:14px;right:14px}.brand-text h1{font-size:13.5px}.brand-text p{font-size:8.5px}.brand-logo{width:26px;height:22px}.views{top:calc(62px + env(safe-area-inset-top,0px));scrollbar-width:none;flex-direction:row;left:14px;right:14px;overflow-x:auto}.views::-webkit-scrollbar{display:none}.view{flex:1;min-width:54px}.console{flex-direction:column;bottom:118px;left:12px;right:12px;transform:none}.scenes{scrollbar-width:none;overflow-x:auto}.scenes::-webkit-scrollbar{display:none}.scene{flex:1;min-width:56px}.clock{border-left:0;border-top:1px solid var(--line);justify-content:center;padding:9px 14px}.time-range{flex:1}.log,.calib{display:none}.panel.is-sheet{border-bottom:0;border-radius:20px 20px 0 0;width:auto;height:76vh;transition:transform .34s cubic-bezier(.32,.72,0,1);inset:auto 0 0;transform:translateY(calc(100% - 106px))}.panel.is-sheet.is-open{transform:translateY(0)}.panel.is-sheet .panel-head{cursor:pointer;padding:2px 20px 14px}.panel.is-sheet .panel-title{font-size:22px}.panel.is-sheet:not(.is-open) .panel-body{overflow:hidden}.panel.is-sheet .panel-body{padding-bottom:calc(22px + env(safe-area-inset-bottom,0px))}.hotspot-label{gap:6px;padding:4px 9px 4px 7px}.hotspot-text em{font-size:10.5px}.hotspot-text i{font-size:9px}.assess{top:calc(124px + env(safe-area-inset-top,0px));flex-direction:row;align-items:center;gap:8px;width:auto;padding:6px 8px;bottom:auto;left:10px;right:10px}.assess-note{flex:.9;font-size:10px;line-height:1.3}.assess-btn{flex:1.2;padding:6px 8px;font-size:11px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.tool.is-lang{letter-spacing:.04em;font-size:11.5px;font-weight:500;font-family:var(--font-mono)}
