:root{--bg:#e6ecf0;--panel:#f5f8fa;--ink:#17212b;--muted:#56646f;--line:#c5d0d8;--hall:#d3dce2;--floor:#c4cfd7;--grid:#a9b7c1;--rack:#2b343d;--gpu:#5e9400;--amd:#b0246a;--huawei:#2a62d4;--coolant:#157481;--copper:#a8621f;--net:#5f50ae;--air:#5f707e;--store:#4e6a86;--warn:#8a6700;--bad:#b3261e;--ok:#3a741d;--font:"Barlow Semi Condensed","PingFang SC","Noto Sans SC","Microsoft YaHei",system-ui,sans-serif}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#10171e;--panel:#16202a;--ink:#e4eaef;--muted:#91a0ac;--line:#2a3743;--hall:#0d1318;--floor:#17212a;--grid:#283640;--rack:#34404b;--gpu:#76b900;--amd:#e0609a;--huawei:#4c8dff;--coolant:#3fb6c9;--copper:#d08a45;--net:#9a8ce0;--air:#9aa8b5;--store:#7fa2c4;--warn:#e8c547;--bad:#f2766b;--ok:#8bc34a}}:root[data-theme=dark]{--bg:#10171e;--panel:#16202a;--ink:#e4eaef;--muted:#91a0ac;--line:#2a3743;--hall:#0d1318;--floor:#17212a;--grid:#283640;--rack:#34404b;--gpu:#76b900;--amd:#e0609a;--huawei:#4c8dff;--coolant:#3fb6c9;--copper:#d08a45;--net:#9a8ce0;--air:#9aa8b5;--store:#7fa2c4;--warn:#e8c547;--bad:#f2766b;--ok:#8bc34a}*{box-sizing:border-box}[hidden]{display:none!important}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--font);flex-direction:column;height:100dvh;font-size:15px;line-height:1.4;display:flex;overflow:hidden}#stage{background:var(--hall);flex:1;min-height:42vh;position:relative}#stage canvas{touch-action:none;width:100%;height:100%;display:block}#stage canvas:focus-visible{outline:2px solid var(--coolant);outline-offset:-3px}#hud{pointer-events:none;background:color-mix(in srgb,var(--panel) 82%,transparent);border:1px solid var(--line);border-radius:6px;gap:14px;padding:6px 10px;display:flex;position:absolute;top:10px;left:12px}#hud b{font-variant-numeric:tabular-nums;font-size:20px;font-weight:700;line-height:1.1;display:block}#hud span{color:var(--muted);font-size:12px}#hud{grid-template-columns:repeat(3,auto);justify-content:start;row-gap:2px;display:grid}#hScale{width:0;min-width:100%;color:var(--muted);grid-column:1/-1;margin:0;font-size:12px;line-height:1.25}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}#stageTools{gap:6px;display:flex;position:absolute;top:10px;right:10px}#stageTools button{background:color-mix(in srgb,var(--panel) 82%,transparent)}#panel{background:var(--panel);border-top:1px solid var(--line);max-height:56vh;padding:12px 14px calc(14px + env(safe-area-inset-bottom));overflow-y:auto}@media (width>=900px){body{flex-direction:row}#panel{border-top:0;border-left:1px solid var(--line);width:380px;height:100%;max-height:none;padding:18px}}h1{letter-spacing:.2px;margin:0 0 2px;font-size:22px;font-weight:700}.head{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.lang,.mini{flex-wrap:nowrap;flex:none;gap:0}.lang button,.mini button{min-height:0;padding:3px 8px;font-size:12px}.lang button:first-child,.mini button:first-child{border-radius:6px 0 0 6px}.lang button:last-child,.mini button:last-child{border-radius:0 6px 6px 0;margin-left:-1px}.h2row{justify-content:space-between;align-items:center;gap:8px;margin:16px 0 8px;display:flex}.h2row h2{margin:0}#placeHint{margin:-2px 0 8px}.tutorial{border:1px solid var(--coolant);background:color-mix(in srgb,var(--coolant) 8%,var(--panel));border-radius:8px;margin:10px 0 4px;padding:10px 12px}#tutorial{z-index:2;box-shadow:0 -22px 0 0 var(--panel),0 6px 12px -8px #00000059;position:sticky;top:0}.tutorial p{margin:4px 0 8px;font-size:14px}.tutorial-head{justify-content:space-between;gap:8px;font-size:13px;display:flex}.tutorial-head span{color:var(--muted)}.tut-target{outline-offset:2px;animation:1.4s ease-in-out infinite tut-pulse;outline:2px solid var(--coolant)!important}@keyframes tut-pulse{50%{outline-color:#0000}}@media (prefers-reduced-motion:reduce){.tut-target{animation:none}}.h2row.sub-row{color:var(--muted);margin:-2px 0 8px;font-size:13px}table.growth{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:13px}table.growth th{color:var(--muted);text-align:left;border-bottom:1px solid var(--line);padding:2px 4px;font-weight:600}table.growth td{border-bottom:1px solid var(--line);padding:3px 4px}table.growth tbody tr{cursor:pointer}table.growth td button{font:inherit;color:inherit;cursor:pointer;text-underline-offset:2px;font-variant-numeric:tabular-nums;background:0 0;border:0;padding:0;text-decoration:underline}table.growth tbody tr.current{background:color-mix(in srgb,var(--ink) 8%,transparent)}#growth .room{margin:8px 0 2px;font-size:13px}#growth select{font:inherit;color:inherit;background:var(--panel);border:1px solid var(--line);border-radius:6px;max-width:210px;padding:2px 4px;font-size:13px}.sub{color:var(--muted);margin:0 0 12px;font-size:13px}h2{color:var(--muted);margin:16px 0 8px;font-size:15px;font-weight:600}button{font:inherit;color:inherit;border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:6px;padding:6px 10px}button:focus-visible{outline:2px solid var(--coolant);outline-offset:2px}button:disabled{opacity:.45;cursor:not-allowed}.row{flex-wrap:wrap;gap:6px;display:flex}.seg button[aria-pressed=true]{background:var(--ink);color:var(--panel);border-color:var(--ink)}.palette{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px;display:grid}.chip{text-align:left;min-height:48px;padding:0;display:flex;overflow:hidden}.chip i{flex:none;width:6px}.chip div{padding:5px 8px}.chip strong{font-size:14px;font-weight:600;display:block}.chip small{color:var(--muted);font-size:12px}.chip[aria-pressed=true]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}.gauge{margin:6px 0}.gauge .top{justify-content:space-between;font-size:13px;display:flex}.gauge .top em{font-variant-numeric:tabular-nums;font-style:normal}.bar{background:var(--line);border-radius:3px;height:6px;margin-top:3px;overflow:hidden}.bar i{width:0;height:100%;transition:width .25s;display:block}.issues{margin:8px 0 0;padding:0;font-size:13px;list-style:none}.issues li{border-left:3px solid var(--warn);margin-bottom:4px;padding:4px 0 4px 10px}.issues li.bad{border-color:var(--bad)}.issues li.ok{border-color:var(--ok)}#power{border-color:var(--gpu);width:100%;margin-top:10px;padding:10px;font-size:16px;font-weight:700}#power.on{background:var(--gpu);color:#0b1200}.info{border:1px solid var(--line);border-radius:6px;margin-top:4px;padding:10px;font-size:14px}.info table{border-collapse:collapse;width:100%;margin:6px 0}.info td{padding:2px 0}.info td:last-child{text-align:right;font-variant-numeric:tabular-nums}.info p{color:var(--muted);margin:6px 0 0;font-size:13px}.info p.assign-hint{color:var(--ink)}.info select{font:inherit;color:inherit;background:var(--panel);border:1px solid var(--line);border-radius:6px;max-width:210px;padding:2px 4px;font-size:13px}.energy{border:1px solid var(--line);border-radius:6px;padding:10px;font-size:14px}.energy label,.energy .field{color:var(--muted);flex-direction:column;gap:2px;margin-bottom:8px;font-size:13px;display:flex}.modes{border-bottom:1px solid var(--line);gap:4px;margin:22px 0 4px;display:flex}.modes button{color:var(--muted);background:0 0;border:none;border-bottom:3px solid #0000;border-radius:6px 6px 0 0;flex:1;padding:8px 4px;font-weight:600}.modes button[aria-selected=true]{color:var(--ink);border-bottom-color:var(--gpu)}.modes button:focus-visible{outline:2px solid var(--gpu);outline-offset:-2px}.mode-hint{margin:4px 0 0}.designs th{text-align:left;color:var(--muted);padding:2px 4px 4px 0;font-size:12px;font-weight:600}.designs td{vertical-align:top;padding:3px 6px 3px 0;font-size:13px}.designs td:last-child,.designs th:last-child{text-align:right;white-space:nowrap}.energy .designs td:last-child{font-variant-numeric:tabular-nums}.delta.better{color:var(--ok)}.delta.worse{color:var(--bad)}.parts{margin:8px 0}.parts ul{margin:4px 0;padding-left:18px}.parts li{margin-bottom:2px}.energy label.check{flex-direction:row;align-items:center;gap:6px}#fabricSkipped{margin:6px 0 0;padding-left:18px}#fabricStatus{border-left:3px solid var(--ok);margin:8px 0 0;padding-left:8px}#fabricStatus.fabric-warn{border-color:var(--warn)}.energy strong{margin-bottom:8px;display:block}.energy input[type=number],.energy select{font:inherit;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:6px;width:120px;padding:4px 6px;font-size:14px}@media (width<=899px){.energy input[type=number],.energy select{font-size:16px}}.energy input[type=range]{width:100%;accent-color:var(--ink)}.energy table{border-collapse:collapse;width:100%}.energy td{padding:2px 0}.energy td:last-child{text-align:right;font-variant-numeric:tabular-nums}.energy tr.total td{border-top:1px solid var(--line);padding-top:4px;font-weight:700}.energy p.band{margin:8px 0 0}button.link{color:var(--coolant);text-underline-offset:2px;font-size:inherit;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.h2row button.link{font-size:13px}.method-open{margin:-6px 0 12px}dialog.method{border:1px solid var(--line);background:var(--panel);width:min(680px,100% - 24px);max-height:calc(100dvh - 32px);color:var(--ink);border-radius:10px;padding:0;overflow:auto}dialog.method::backdrop{background:#00000073}.method-head{background:var(--panel);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:8px;padding:12px 18px;display:flex;position:sticky;top:0}.method-head h2{color:var(--ink);margin:0;font-size:18px}.method-body{padding:4px 18px 18px;font-size:14px;line-height:1.5}.method-body h3{margin:16px 0 6px;font-size:15px}.method-body ul{margin:6px 0;padding-left:18px}.method-body li{margin-bottom:4px}.method-body .formula{font-variant-numeric:tabular-nums;background:color-mix(in srgb,var(--ink) 6%,transparent);border-radius:6px;padding:6px 8px}.src{color:var(--muted);font-size:12px}.src a{color:inherit}.info p.sources{margin-top:4px}.method-body .devices .sources{margin:2px 0 6px}.method-body .devices{font-size:13px}.method-body section{scroll-margin-top:56px}.repair{border:1px solid var(--line);border-left:3px solid var(--coolant);border-radius:6px;margin-top:8px;padding:8px 10px;font-size:14px}.repair p{margin:4px 0}.repair-option{justify-content:space-between;align-items:center;gap:10px;display:flex}.repair-option button{flex:none}.goal{grid-template-columns:1fr 1fr;align-items:end;gap:8px;font-size:13px;display:grid}.goal label{color:var(--muted);flex-direction:column;gap:2px;display:flex}.goal label.wide{grid-column:1/-1}.goal label.check{color:var(--ink);flex-direction:row;align-items:center;gap:6px;min-height:24px}.goal label.check input{width:18px;height:18px;margin:3px}.goal select,.goal input[type=number]{font:inherit;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:6px;min-width:0;padding:4px 6px;font-size:14px}@media (width<=899px){.goal select,.goal input[type=number]{font-size:16px}}.compare{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:6px;display:grid}.cmp{border:1px solid var(--line);border-radius:6px;display:flex;overflow:hidden}.cmp>i{flex:none;width:6px}.cmp>div{flex:1;min-width:0;padding:6px 8px}.cmp strong{font-size:14px;font-weight:600;display:block}.cmp b{font-variant-numeric:tabular-nums;font-size:16px;display:block}.cmp small{color:var(--muted);font-size:12px;line-height:1.3;display:block}.cmp .bar{margin:4px 0}.cmp[aria-current=true]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}.foot{color:var(--muted);margin-top:14px;font-size:12px}@media (prefers-reduced-motion:reduce){.bar i{transition:none}}#stageBar,#panelBar{display:none}@media (width<=899px){#hud{column-gap:12px;padding:4px 8px;top:8px;left:8px}#hud b{font-size:17px}#hud span{font-size:11px}#stageTools{top:auto;bottom:8px;right:8px}#stageTools button{padding:4px 9px;font-size:13px}#stageTools button,#stageBar button,#panelToggle{min-height:36px}#stageBar{border:1px solid var(--line);background:color-mix(in srgb,var(--panel) 92%,transparent);border-radius:8px;justify-content:space-between;align-items:center;gap:8px;padding:6px 6px 6px 10px;font-size:13px;line-height:1.25;display:flex;position:absolute;bottom:52px;left:8px;right:8px;box-shadow:0 4px 12px -6px #00000059}#stageBar .row{flex-wrap:nowrap;flex:none}#stageBar button{background:var(--panel);padding:5px 10px;font-size:13px}#panelBar{z-index:3;background:var(--panel);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:8px;margin:-12px -14px 10px;padding:6px 14px;display:flex;position:sticky;top:-12px}#panelStatus{border-left:3px solid var(--warn);padding-left:8px;font-size:14px;font-weight:600}#panelStatus.ok{border-color:var(--ok)}#panelStatus.bad{border-color:var(--bad)}#panelToggle{padding:4px 10px;font-size:13px}#tutorial{top:34px}body.panel-collapsed #panel{padding-bottom:env(safe-area-inset-bottom);overflow:hidden}body.panel-collapsed #panel>:not(#panelBar){display:none}body.panel-collapsed #panelBar{border-bottom:0;margin-bottom:0}}
