.home{height:100%;overflow-y:auto}.home header,.home main{max-width:720px;margin:0 auto;padding:24px 16px 0}.home h1{margin:0 0 4px;font-size:28px}.home header p{color:var(--muted);margin:0;font-size:16px}.home main{flex-direction:column;gap:16px;padding-bottom:32px;display:flex}.home a{color:inherit;text-decoration:none}.home .start{border:1px solid var(--accent);background:#4dabf722;border-radius:12px;flex-direction:column;gap:4px;padding:16px;display:flex}.home .start span{color:var(--accent)}.home .grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;display:grid}.home .tile{background:var(--panel);border:1px solid var(--line);border-radius:12px;flex-direction:column;gap:6px;padding:16px;display:flex}.home .tile:hover{border-color:var(--accent)}.home .tile .icon{font-size:24px}.home .muted{color:var(--muted);font-size:14px}:root{--bg:#0f131c;--panel:#171c28;--panel-2:#1f2635;--line:#2a3140;--text:#e3e8ef;--muted:#8b95a7;--accent:#4dabf7;--ok:#34a853;--warn:#ff9800;--bad:#ff1744;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:14px/1.4 system-ui,sans-serif;overflow:hidden}.app{flex-direction:column;height:100%;display:flex}.toolbar{background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:12px;padding:8px 12px;display:flex}.tools,.group{flex-wrap:wrap;gap:4px;display:flex}.tools.disabled{opacity:.35;pointer-events:none}.hidden{visibility:hidden}.spacer{flex:1}.main{flex:1;min-height:0;display:flex}.stage{flex:1;min-width:0;position:relative}.canvas{background:var(--bg);touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.canvas.tool-select{cursor:default}.canvas:not(.tool-select){cursor:crosshair}.canvas.tool-erase{cursor:not-allowed}.stage canvas{display:block}.loading{height:100%;color:var(--muted);place-items:center;display:grid}.hud{pointer-events:none;justify-content:space-between;gap:12px;font-size:12px;display:flex;position:absolute;bottom:10px;left:12px;right:12px}.hud span{border:1px solid var(--line);color:var(--muted);background:#0f131ccc;border-radius:6px;padding:4px 8px}.term{cursor:crosshair}.term .dot{transition:r .1s}.term:hover .dot{r:.09px}.term.ok .dot{stroke:#69f0ae;fill:#69f0ae55;r:.085px}.term.bad .dot{stroke:#ff5252;opacity:.6}.term.from .dot{stroke:#fff}.hit{cursor:pointer}.panelview{background:var(--bg);-webkit-user-select:none;user-select:none;width:100%;height:auto;font-family:system-ui,sans-serif;display:block}.canvas.tool-select .device>g:first-child{cursor:move}@keyframes pulse{50%{opacity:.25}}.pulse{animation:.4s infinite pulse}button,select,input{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--line);border-radius:6px;padding:5px 9px}button{cursor:pointer}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.4;cursor:default}button.on{background:var(--accent);color:#06121c;border-color:var(--accent)}button.on kbd{color:#06121c;background:#06121c33}button.danger{color:#ff8a9b}button.danger:hover:not(:disabled){border-color:var(--bad)}.icon{text-align:center;width:1.2em;display:inline-block}.seg{display:flex}.seg button:first-child{border-radius:6px 0 0 6px}.seg button:last-child{border-radius:0 6px 6px 0}.energize.live{background:var(--warn);color:#1d1200;border-color:var(--warn)}kbd{background:var(--line);color:var(--muted);border-radius:4px;padding:0 4px;font-size:11px}.sidebar{background:var(--panel);border-left:1px solid var(--line);flex-direction:column;gap:10px;width:360px;padding:12px;display:flex;overflow-y:auto}.sidebar h3{margin:0;font-size:14px}.row{justify-content:space-between;align-items:center;gap:8px;display:flex}.card{background:var(--panel-2);border:1px solid var(--line);border-radius:8px;flex-direction:column;gap:8px;padding:10px;display:flex}.card.active{border-color:var(--accent)}.card.selected{border-color:#ffd54f}.card summary{cursor:pointer}.card[open]>summary{margin-bottom:8px}.card label{color:var(--muted);flex-direction:column;gap:2px;font-size:12px;display:flex}.card select{width:100%}.grid2{grid-template-columns:1fr 1fr;gap:8px;display:grid}.name{flex:1;min-width:0;font-weight:600}.badge{background:var(--line);white-space:nowrap;border-radius:99px;padding:2px 8px;font-size:11px}.badge.ok{color:#8be0a4;background:#1e3a28}.badge.warn{color:#ffcc80;background:#4a3210}.badge.trip,.badge.fire{color:#ff8a9b;background:#4a1420}.stats{grid-template-columns:1fr 1fr;gap:4px 8px;margin:0;font-size:12px;display:grid}.stats div{justify-content:space-between;display:flex}.stats dt{color:var(--muted)}.stats dd{margin:0}.msgs{color:var(--muted);margin:0;padding-left:16px;font-size:12px}.msgs.warn{color:#ffcc80}.msgs.trip,.msgs.fire{color:#ff8a9b}.msg{margin:0;font-size:12px}.msg.warn{color:#ffcc80}.muted{color:var(--muted);margin:0;font-size:12px}.wirelist{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.wirelist li{align-items:center;gap:6px;display:flex}.wirelist .link{text-align:left;background:0 0;border-color:#0000;flex:1;font-size:12px}.wirelist .link:hover{border-color:var(--accent)}.swatch{border:1px solid #fff5;border-radius:50%;flex:none;width:14px;height:14px}.steps{flex-direction:column;gap:4px;margin:0;padding-left:20px;font-size:12px;display:flex}.steps li.done{color:var(--ok);opacity:.8;text-decoration:line-through}.card label.check{justify-content:flex-end}.card label.check input{width:auto;padding:0}.sidebar.left{border-left:none;border-right:1px solid var(--line);width:330px}.sidebar.left:empty{display:none}.idr{border-top:1px solid var(--line);flex-direction:column;gap:6px;padding:8px 0;display:flex}.card input[type=number],.card>input:not([type]),.card>input[type=text]{width:100%}.badge.dead,.badge.idle{background:var(--line);color:var(--muted)}.surge-flash{opacity:0;pointer-events:none;z-index:50;background:#fff;animation:.7s ease-out flash;position:fixed;inset:0}@keyframes flash{0%{opacity:.95}to{opacity:0}}.report{max-width:1100px;height:100%;padding:16px 24px 40px;overflow-y:auto}.report h2{margin:0}.report h3{border-bottom:1px solid var(--line);margin:22px 0 6px;padding-bottom:4px;font-size:15px}.tablewrap{overflow-x:auto}.report table{border-collapse:collapse;width:100%;font-size:13px}.report th,.report td{text-align:left;border-bottom:1px solid var(--line);padding:5px 8px}.report th{color:var(--muted);font-weight:600}.report td.num{text-align:right;white-space:nowrap}.report tr.bad td{color:#ff8a9b}.report tr.warnrow td{color:#ffcc80}.shoplist{flex-direction:column;gap:3px;margin:0 0 10px;padding:0;list-style:none;display:flex}.shoplist input{width:auto}.shoplist li{flex-wrap:wrap;align-items:center;gap:4px 10px;display:flex}.shoplist .price{align-items:center;gap:4px;margin-left:auto;font-size:12px;display:inline-flex}.shoplist .price input{width:72px;padding:2px 4px}.shoptotal{font-size:15px}.report h4{color:var(--muted);margin:12px 0 4px;font-size:13px}.unifilar{background:var(--panel);border:1px solid var(--line);border-radius:8px;width:100%;min-width:760px}@media print{body{color:#000;background:#fff;overflow:visible}.toolbar,.sidebar,.noprint,.hud{display:none!important}.app,.main,.stage{height:auto;display:block}.report{max-width:none;padding:0;overflow:visible}.report th,.report td{border-color:#bbb;color:#000!important}.unifilar{background:#fff;border-color:#bbb}.unifilar text{fill:#000!important}}.dpsdiagram{background:var(--panel);border:1px solid var(--line);border-radius:8px;width:100%}.surge-run{stroke-dasharray:10 8;animation:.35s linear 10 surge-run}@keyframes surge-run{to{stroke-dashoffset:-36px}}.panelstack{height:100%;position:relative;overflow-y:auto}.panelstack.single .panelview{height:100%}.catsum{float:right;color:var(--muted);font-weight:400}.shoptotal.grand{border-top:2px solid var(--line);text-align:right;padding-top:8px;font-size:18px}.study-link{color:var(--accent);border:1px solid var(--line);border-radius:6px;padding:6px 10px;text-decoration:none}
