@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&family=Noto+Sans+JP:wght@400;500;600;700&display=swap";:root{font-family:DM Sans,Noto Sans JP,sans-serif;color:#e6edf4;background:#101820;font-synthesis:none;--bg:#101820;--canvas:#121e28;--panel:#17232d;--border:#2a3742;--muted:#8b9aaa;--accent:#7bdfba;--warning:#efbc65;--danger:#f27e82;--grid:#2a3c48;color-scheme:dark}*{box-sizing:border-box}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.36}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:5px}button{transition:background .18s,border-color .18s,transform .18s}button:not(:disabled):hover{filter:brightness(1.12)}button:active:not(:disabled){transform:translateY(1px)}.app-shell{max-width:1800px;margin:auto}.app-header{height:82px;display:flex;align-items:center;justify-content:space-between;padding:0 38px;border-bottom:1px solid var(--border)}.wordmark{display:flex;gap:14px;align-items:center;font-size:24px;font-weight:700;letter-spacing:3px;color:inherit;text-decoration:none}.brand-mark{display:flex;width:26px;height:28px;position:relative;align-items:center;justify-content:space-between}.brand-mark:before{content:"";position:absolute;left:3px;right:3px;height:2px;background:var(--accent)}.brand-mark i{display:block;width:6px;background:var(--accent);height:24px;border-radius:2px}.brand-mark i:nth-child(2){height:8px}.prototype{font-family:IBM Plex Mono,monospace;font-size:10px;letter-spacing:1.4px;border:1px solid #3c4c58;padding:5px 7px;margin-left:3px;color:var(--muted);border-radius:4px}.header-right{display:flex;align-items:center;gap:20px}.save-state{font-size:12px;color:var(--muted)}.text-button{border:0;background:none;color:var(--muted);font-size:13px;padding:8px 0}.icon-button{border:0;background:transparent;color:var(--muted);font-size:22px;width:28px;height:28px;display:grid;place-content:center}.help-button{border:1px solid #617180;border-radius:50%;font-size:14px;width:24px;height:24px}main{padding:26px 38px 0}.telemetry{display:flex;align-items:center;gap:0;margin-bottom:26px}.stat{padding:0 26px;border-right:1px solid var(--border);min-width:145px}.stat:first-child{padding-left:0;min-width:210px}.stat>span{font-family:IBM Plex Mono,monospace;display:block;font-size:11px;color:var(--muted);letter-spacing:1px;margin-bottom:9px}.stat>span small{font:10px Noto Sans JP,sans-serif;letter-spacing:0}.stat strong{font-family:IBM Plex Mono,monospace;font-weight:500;font-size:24px;white-space:nowrap;letter-spacing:-.6px}.stat strong small{font-size:12px;color:var(--muted);font-weight:400;letter-spacing:0}.stat .time-value{font-size:19px;letter-spacing:-.3px}.health{flex:1}.health>div{display:flex;align-items:center;gap:14px}.health-track{width:80px;height:5px;background:#2d4046;border-radius:4px;overflow:hidden}.health-track i{display:block;height:100%;transition:width 1s}.button{border:1px solid #3a4b58;background:#1d2c37;color:#dce7ef;border-radius:6px;min-height:42px;padding:10px 16px;font-size:13px;font-weight:600;display:inline-flex;justify-content:center;align-items:center;gap:10px}.button.primary{background:var(--accent);color:#102b23;border-color:var(--accent)}.play-button{margin-left:24px;min-width:112px}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 284px;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:var(--canvas)}.map-panel{display:flex;flex-direction:column;min-width:0}.map-toolbar{padding:19px 22px;display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid var(--border);min-height:73px}.map-toolbar>div:first-child{display:flex;align-items:center;gap:10px}.map-toolbar h1{font-size:16px;font-weight:500;margin:0}.live-dot{width:6px;height:6px;border-radius:50%;background:var(--accent)}.live-dot.paused{background:var(--warning)}.online-count{font:11px IBM Plex Mono,monospace;color:var(--muted);margin-left:8px;padding:4px 7px;border:1px solid var(--border);border-radius:4px}.mode-switch{display:flex;gap:3px;background:#0f1921;padding:4px;border-radius:5px}.mode-switch button{font-size:12px;background:transparent;border:0;color:var(--muted);padding:7px 10px;border-radius:4px;white-space:nowrap}.mode-switch button.active{background:#2a3b46;color:#ecf4f8;box-shadow:0 1px 3px #0003}.canvas-wrap{position:relative;flex:1;display:flex;min-height:450px}.network-svg{display:block;width:100%;height:100%;min-height:450px;align-self:center;touch-action:none;-webkit-user-select:none;user-select:none}.zone-label{fill:var(--muted);font:10px IBM Plex Mono,Noto Sans JP,monospace;letter-spacing:1.6px}.node-body{fill:#1c2a35;stroke:#4a6070;stroke-width:1.3}.node-halo{fill:transparent;stroke:transparent;stroke-width:1.4}.device{cursor:grab}.device:active{cursor:grabbing}.device:hover .node-body{stroke:var(--device-color);fill:#263744}.device.selected .node-body{stroke:var(--device-color);fill:#243b3c}.device.selected .node-halo{stroke:var(--device-color);opacity:.35;fill:#7bdfba0a}.device.connectable .node-halo{stroke:var(--accent);stroke-dasharray:4 4;opacity:.8}.connect-hint{font-size:11px;fill:var(--accent)}.node-name{fill:#e6edf4;font:500 13px DM Sans,sans-serif}.node-status{fill:var(--muted);font:10px IBM Plex Mono,monospace}.node-status.offline{fill:var(--warning);font-family:Noto Sans JP,sans-serif}.edge-label{font:10px IBM Plex Mono,monospace}.packets{animation:flow 4s linear infinite}.edge-hit{cursor:pointer}.edge-hit:hover{stroke:#ffffff12}.overloaded .packets{animation-duration:1.2s}.animation-paused .packets{animation-play-state:paused}@keyframes flow{to{stroke-dashoffset:-156}}.first-tip{position:absolute;left:30px;bottom:42px;padding:18px 20px;border:1px solid #415e61;border-left:3px solid var(--accent);border-radius:6px;background:#192c34f5;max-width:350px;pointer-events:none}.first-tip>span{font:10px IBM Plex Mono,monospace;letter-spacing:1.8px;color:var(--accent);display:block;margin-bottom:10px}.first-tip>b{font-size:17px}.first-tip p{font-size:12px;line-height:1.9;color:#b5c5ce;margin:7px 0 0}.map-footer{display:flex;justify-content:space-between;align-items:center;padding:15px 22px;border-top:1px solid var(--border);color:var(--muted);font-size:11px}.legend{display:flex;gap:18px}.legend span{display:flex;align-items:center;gap:7px}.legend i{width:14px;height:3px;border-radius:3px}.normal{background:var(--accent)}.warning{background:var(--warning)}.danger{background:var(--danger)}.footer-divider{padding:0 10px;color:#536271}aside{background:var(--panel);border-left:1px solid var(--border);display:flex;flex-direction:column}.inspector{padding:24px 22px;flex:1}.panel-eyebrow{font:10px IBM Plex Mono,monospace;letter-spacing:1.6px;color:var(--muted);display:flex;justify-content:space-between;align-items:center}.panel-eyebrow>span{font-size:12px;letter-spacing:0}.device-heading{display:flex;gap:12px;align-items:center;margin:25px 0 18px}.large-icon{width:50px;height:52px;border:1px solid #3c514f;background:#253a3c;border-radius:11px;display:grid;place-items:center;flex-shrink:0}.device-heading h2{margin:0 0 5px;font-size:22px;font-weight:600;letter-spacing:-.3px}.device-heading p{font-size:11px;color:var(--muted);margin:0}.status-pill{font:11px IBM Plex Mono,monospace;display:inline-flex;gap:6px;align-items:center;border:1px solid #365448;background:#203e341f;color:var(--accent);padding:5px 9px;border-radius:5px}.status-pill i{height:5px;width:5px;border-radius:50%;background:currentColor}.status-pill.offline{color:var(--muted);border-color:#4f5f6a}.status-pill.warning{color:var(--warning);border-color:#665839}.status-pill.overload{color:var(--danger);border-color:#76464b}.specs{margin:23px 0 24px}.specs>div{display:flex;align-items:center;justify-content:space-between;margin:15px 0}.specs dt{font-size:13px;color:var(--muted)}.specs dd{font:13px IBM Plex Mono,monospace;margin:0}.specs dd span{color:var(--muted)}.meter-caption{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-bottom:9px}.meter-caption b{font-family:IBM Plex Mono,monospace;font-weight:400}.meter{height:5px;background:#2a3a43;border-radius:3px;overflow:hidden}.meter i{display:block;height:100%;background:var(--accent);transition:width .5s}.full{width:100%;margin-top:23px}.connections-label{font:10px IBM Plex Mono,monospace;letter-spacing:1.5px;color:var(--muted);margin:28px 0 14px;display:flex;justify-content:space-between}.connections{max-height:178px;overflow-y:auto}.connections>div{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--border);color:#b4c2ce}.connections>div>div{flex:1}.connections b{font-size:12px;font-weight:500}.connections small{display:block;font:10px IBM Plex Mono,monospace;color:var(--muted);margin-top:4px}.remove{font-size:11px;margin-top:15px;color:#8998a4}.upgrade-progress{padding:21px 22px;border-top:1px solid var(--border)}.upgrade-progress>div:first-child{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.upgrade-progress b{font:14px IBM Plex Mono,monospace;color:var(--accent)}.upgrade-progress p{font-size:10px;color:var(--muted);margin:10px 0 0}.inventory{display:flex;padding:24px 0;gap:24px;border-bottom:1px solid var(--border)}.inventory-title{min-width:144px;padding-top:5px}.inventory h2{font-size:16px;margin:8px 0}.inventory p{font-size:11px;color:var(--muted);margin:0}.equipment-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;flex:1}.equipment{min-height:72px;border:1px solid #344552;background:#1a2833;border-radius:7px;text-align:left;padding:12px;display:flex;gap:12px;align-items:center;color:#e5edf3}.equipment-icon{display:grid;place-items:center}.equipment b{font-size:13px;font-weight:500;display:block}.equipment small{font-size:9px;color:var(--muted);display:block;margin-top:5px}.equipment em{font:12px IBM Plex Mono,monospace;margin-left:auto;align-self:flex-start;color:#b2c3cf;padding:2px 4px;background:#273946;border-radius:3px}.equipment:not(:disabled):hover{border-color:#7bdfba77;background:#22373b}.equipment:disabled{opacity:.4}.event-log{padding:24px 0}.event-log>.panel-eyebrow{justify-content:flex-start;gap:16px;margin-bottom:16px}.event-log>.panel-eyebrow>span{font-size:10px;color:#637787}.event-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 34px}.event{display:flex;gap:12px;align-items:flex-start}.event time{color:#7c8d9b;font:10px IBM Plex Mono,monospace;white-space:nowrap;padding-top:3px}.event i{display:block;width:5px;height:5px;background:var(--muted);border-radius:50%;margin-top:7px;flex-shrink:0}.event.warning i{background:var(--warning)}.event.good i{background:var(--accent)}.event b{font-size:12px;font-weight:500}.event p{font-size:10px;color:var(--muted);margin:5px 0;line-height:1.7}.page-footer{display:flex;justify-content:space-between;color:#617481;padding:0 0 22px;font-size:10px}.page-footer>span:first-child{font:9px IBM Plex Mono,monospace;letter-spacing:1.7px}.connection-tip,.paused-badge,.edge-popover{position:absolute;left:50%;transform:translate(-50%);bottom:14px;border:1px solid #58796d;background:#203c32f5;box-shadow:0 5px 24px #0003;padding:12px 16px;border-radius:7px;font-size:12px;white-space:nowrap;display:flex;gap:20px;align-items:center}.connection-tip button,.edge-popover button{background:transparent;border:0;color:var(--accent);font-size:12px}.connection-tip kbd{font-size:10px;padding:2px 4px;border:1px solid #6b8174;border-radius:3px;margin-left:5px}.paused-badge{top:16px;bottom:auto;background:#1c2b35;border-color:#465762;font:10px IBM Plex Mono,Noto Sans JP,monospace;color:var(--muted);padding:8px 13px}.edge-popover{background:#283640;border-color:#536678;bottom:60px}.edge-popover b{font-size:11px;font-weight:400}.toast{position:fixed;bottom:26px;left:50%;transform:translate(-50%);z-index:50;background:#e2f3ea;color:#173629;padding:15px 24px;border-radius:8px;box-shadow:0 12px 45px #0007;font-size:13px;max-width:90vw}.modal-backdrop{position:fixed;inset:0;z-index:40;background:#071118b8;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);display:grid;place-items:center;padding:24px}.modal{background:#1a2833;border:1px solid #425a65;border-radius:16px;max-width:820px;padding:38px;box-shadow:0 24px 90px #0007;max-height:90dvh;overflow:auto}.modal h2{font-size:28px;font-weight:500;margin:18px 0 12px;letter-spacing:-.5px}.modal>p{font-size:13px;color:#a7b8c3;line-height:1.9}.modal>small{font-size:11px;color:var(--muted);line-height:1.8;display:block}.upgrade-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:28px 0}.upgrade-grid button{border:1px solid #3e5960;border-radius:9px;background:#20343b;text-align:left;color:var(--accent);padding:19px 16px;display:flex;flex-direction:column;align-items:flex-start}.upgrade-grid button:hover{border-color:var(--accent)}.upgrade-grid strong{color:#e6edf4;font-size:15px;display:block;margin:20px 0 10px}.upgrade-grid button>span:not(.upgrade-symbol){font-size:11px;color:#9fb3bf;line-height:1.9;min-height:50px}.upgrade-grid b{font-size:11px;margin-top:20px;font-weight:500}.upgrade-symbol{font:27px IBM Plex Mono,monospace;height:32px}.gameover{text-align:center;min-width:400px}.gameover .panel-eyebrow{justify-content:center;color:var(--danger)}.final-score{font:54px IBM Plex Mono,monospace;color:var(--accent);margin:24px}.final-score span{display:block;font-size:10px;letter-spacing:3px;color:var(--muted);margin-top:10px}.gameover .button{margin-top:14px}.help-modal{max-width:620px}.help-modal ol{padding-left:24px}.help-modal li{padding:8px 0;font-size:14px}.help-modal li p{font-size:13px;color:var(--muted);line-height:1.8;margin:6px 0}.help-modal .button{margin-top:15px}.dialog-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:25px}.empty-inspector{color:var(--muted);text-align:center;padding:60px 0}.empty-inspector h3{font-size:16px}.empty-inspector p,.muted{font-size:12px;color:var(--muted)}@media(min-width:1500px){.equipment-list{grid-template-columns:repeat(7,minmax(0,1fr))}.equipment{flex-wrap:wrap;gap:10px}.equipment em{position:absolute;right:9px;top:9px}.equipment{position:relative}.equipment>span:nth-child(2){width:100%}.canvas-wrap,.network-svg{min-height:550px}}@media(max-width:1200px){.app-header{padding:0 24px}main{padding:22px 24px 0}.stat{padding:0 16px;min-width:112px}.stat:first-child{min-width:190px}.stat strong{font-size:20px}.health-track,.stat.capacity{display:none}.health{flex:1}.workspace{grid-template-columns:minmax(0,1fr) 254px}.inspector{padding:22px 18px}.map-toolbar{padding:16px 14px}.online-count{display:none}.equipment-list{grid-template-columns:repeat(3,minmax(0,1fr))}.first-tip{left:20px;bottom:30px;max-width:280px;padding:14px}.first-tip>b{font-size:15px}.first-tip p{font-size:10px}.map-footer{padding:14px;font-size:10px}.legend{gap:10px}.map-footer>span{display:none}}@media(max-width:850px){.workspace{grid-template-columns:1fr}.workspace aside{display:grid;grid-template-columns:1fr 210px;border-left:0;border-top:1px solid var(--border)}.inspector{display:grid;grid-template-columns:160px 1fr;gap:12px 20px;padding:20px}.inspector>.panel-eyebrow{grid-column:1/-1}.device-heading{margin:0}.status-pill{align-self:start;justify-self:start}.specs{margin:0;grid-column:2;grid-row:2/5}.specs>div{margin:9px 0}.meter-caption,.inspector>.meter,.connections-label,.connections,.remove{display:none}.full{margin:0;font-size:11px;grid-column:1}.upgrade-progress{border-top:0;border-left:1px solid var(--border);align-self:stretch;display:flex;flex-direction:column;justify-content:center}.canvas-wrap,.network-svg{min-height:400px}.telemetry{flex-wrap:wrap;gap:14px 0}.stat{padding:0 18px}.stat:first-child{min-width:180px}.stat.score{min-width:110px}.stat.health{min-width:160px}.stat:nth-child(4){min-width:160px;border:0}.stat>span{font-size:9px}.play-button{min-width:100px;margin-left:auto}.inventory{gap:20px}.inventory-title{min-width:112px}.equipment-list{grid-template-columns:repeat(3,minmax(0,1fr))}.equipment small{display:none}.equipment{gap:8px;padding:10px;min-height:65px}.equipment b{font-size:11px}.equipment-icon svg{width:20px}.event-list{grid-template-columns:1fr}.first-tip{bottom:22px}.canvas-wrap{aspect-ratio:5/3}.network-svg{position:absolute;inset:0}.upgrade-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:550px){.app-header{height:65px;padding:0 16px}.wordmark{font-size:19px;gap:10px}.prototype{display:none}.header-right{gap:15px}.save-state{display:none}main{padding:20px 12px 0}.telemetry{gap:20px 0}.stat:first-child{min-width:54%;padding-left:5px}.stat.score{min-width:46%;border:0}.stat.health{min-width:54%;padding-left:5px}.stat:nth-child(4){min-width:46%}.stat>span{font-size:10px}.play-button{width:100%;margin:0}.map-toolbar{align-items:flex-start;gap:14px;flex-direction:column}.map-toolbar h1{font-size:14px}.mode-switch{width:100%}.mode-switch button{flex:1}.canvas-wrap{overflow:auto;min-height:370px;aspect-ratio:auto}.network-svg{min-width:640px;min-height:370px;height:384px;position:relative}.first-tip{bottom:12px;left:12px;max-width:230px;padding:12px;pointer-events:none}.first-tip span{font-size:8px}.first-tip>b{font-size:13px}.first-tip p{font-size:9px}.workspace aside{display:block}.upgrade-progress{padding:18px;border-left:0;border-top:1px solid var(--border)}.upgrade-progress p{display:none}.inspector{grid-template-columns:140px 1fr;padding:16px}.inventory{display:block;padding:20px 0}.inventory-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.inventory-title>.panel-eyebrow{display:none}.inventory h2{margin:0}.equipment-list{grid-template-columns:repeat(2,minmax(0,1fr))}.equipment b{font-size:13px}.equipment{min-height:60px}.page-footer{display:block;line-height:2}.page-footer>span{display:block}.event time{font-size:9px}.event-log{padding:20px 0}.modal{padding:24px 20px;width:100%;min-width:0}.modal h2{font-size:22px}.upgrade-grid{gap:8px}.upgrade-grid button{padding:14px}.upgrade-grid strong{font-size:13px}.upgrade-grid button>span:not(.upgrade-symbol){font-size:10px}.connection-tip{font-size:10px;gap:8px;padding:10px;position:sticky;left:8px;transform:none;bottom:10px;height:40px;align-self:end;margin-left:-630px}.paused-badge{left:20px;transform:none;z-index:1}.edge-popover{left:10px;transform:none;gap:10px}.toast{font-size:12px;width:90vw}.modal-backdrop{padding:14px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}.network-svg{touch-action:pan-x pan-y}.device{touch-action:none}.panel-eyebrow{font-family:IBM Plex Mono,Noto Sans JP,monospace}@media(max-width:550px){.canvas-wrap{display:block}.connection-tip{position:sticky;left:8px;bottom:10px;transform:none;width:max-content;max-width:calc(100vw - 60px);height:auto;margin:-50px 8px 10px}.map-footer:after{content:"図を左右にスクロール";font-size:9px;color:var(--muted)}}.transformer-halo{fill:transparent;stroke:transparent;stroke-width:1.5}.transformer.selected .transformer-halo{stroke:var(--device-color);fill:#7bdfba07;stroke-opacity:.5}.transformer.connectable .transformer-halo{stroke:var(--accent);stroke-dasharray:5 4;stroke-opacity:.6}.transformer-header{cursor:grab;touch-action:none}.transformer-header:active{cursor:grabbing}.transformer-title{fill:#294052;stroke:#7794a6;stroke-width:1.2}.transformer.selected .transformer-title{fill:#294a4b;stroke:var(--device-color)}.transformer-header:hover .transformer-title{stroke:var(--device-color);filter:brightness(1.15)}.transformer-name{font:600 12px DM Sans,sans-serif;fill:#edf6fa}.port-row{cursor:crosshair;touch-action:none}.port-row.occupied{cursor:pointer}.port-background{fill:#1e303e;stroke:#486070;stroke-width:1}.port-label{font:11px DM Sans,sans-serif;fill:#c8d9e5;pointer-events:none}.port-detail{font:9px IBM Plex Mono,Noto Sans JP,monospace;fill:#8ba8ba;pointer-events:none}.port-triangle{fill:#537483;stroke:#a6c6d6;stroke-width:1.2}.port-row.available .port-triangle{fill:var(--canvas);stroke:var(--accent);stroke-width:1.7}.port-row.available .port-detail{fill:var(--accent)}.port-row:hover .port-background,.port-row:focus-visible .port-background{fill:#304e5b;stroke:var(--accent)}.port-row.eligible .port-background{stroke:#7bdfba80}.port-row.origin .port-background,.port-row.snap .port-background{fill:#2b5d50;stroke:var(--accent);stroke-width:2}.port-row.origin .port-triangle,.port-row.snap .port-triangle{fill:var(--accent);stroke:#dcfff0}.transformer-caption{font:9px IBM Plex Mono,monospace;fill:var(--muted);pointer-events:none}.wire-preview{stroke:var(--accent);stroke-width:3;stroke-dasharray:7 5;opacity:.85}.wire-preview.snapped{stroke-width:4;stroke-dasharray:none;opacity:1}.transformer-canvas .connect-hint{font:10px Noto Sans JP,sans-serif}.transformer-canvas .edge-label{font-size:9px}.pan-surface{cursor:grab}.pan-surface:active{cursor:grabbing}.zoom-controls{position:absolute;right:15px;bottom:14px;display:flex;align-items:center;gap:2px;padding:4px;background:#1e303be9;border:1px solid #48606d;border-radius:7px;box-shadow:0 4px 18px #0004;z-index:3}.zoom-controls button{min-width:28px;height:28px;background:transparent;color:#e6edf4;border:0;border-radius:4px;font-size:16px;padding:0 5px}.zoom-controls button:hover{background:#36505d}.zoom-controls button:last-child{font-size:11px}.zoom-controls output{font:11px IBM Plex Mono,monospace;min-width:40px;text-align:center;color:var(--accent)}.wifi-range{fill:#79d6d00b;stroke:#79d6d0;stroke-dasharray:8 9;stroke-width:1.7;opacity:.8}.wifi-signal{fill:none;stroke:#79d6d0;stroke-width:2;stroke-dasharray:4 6;opacity:.65}.wifi-label{fill:#79d6d0;font:10px IBM Plex Mono,monospace}.wire-preview.disconnect-preview{stroke:var(--danger);stroke-dasharray:4 4}.context-menu{position:fixed;z-index:70;width:195px;background:#253842;border:1px solid #59727e;box-shadow:0 16px 42px #0007;border-radius:8px;padding:6px}.context-menu>strong{display:block;color:var(--muted);font:10px IBM Plex Mono,monospace;padding:9px 11px 7px;overflow:hidden;text-overflow:ellipsis}.context-menu button{display:block;width:100%;text-align:left;border:0;background:transparent;border-radius:5px;color:#e6edf4;padding:9px 11px;font-size:13px}.context-menu button:hover{background:#365462}.context-menu button.danger{color:var(--danger)}.context-menu button:disabled{opacity:.35}.device-settings{width:min(460px,100%)}.device-settings label{display:block;margin:24px 0;color:var(--muted);font-size:13px}.device-settings input:not([type=range]){display:block;width:100%;padding:11px 12px;margin-top:9px;background:#10212a;color:#e6edf4;border:1px solid #4b6270;border-radius:6px;font:14px Noto Sans JP,sans-serif}.device-settings input[type=range]{display:block;width:100%;accent-color:var(--accent);margin:13px 0}.device-settings label strong{float:right;color:var(--accent);font-family:IBM Plex Mono,monospace}.device-settings label small{font-size:11px;color:var(--muted)}.settings-spec{display:flex;gap:14px;color:var(--muted);font:12px IBM Plex Mono,monospace}.mode-tabs{display:flex;gap:5px;border:1px solid var(--border);padding:3px;border-radius:7px;background:#13232d;margin-left:26px}.mode-tabs button{border:0;background:transparent;color:var(--muted);padding:7px 12px;border-radius:4px;font-size:12px}.mode-tabs button.active{color:#15382d;background:var(--accent)}.learn-banner{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:22px 25px;margin-bottom:19px;border:1px solid #44615f;background:#1a3538;border-radius:9px}.learn-banner h2{margin:7px 0;font-size:19px;font-weight:600}.learn-banner p{margin:0;color:#bed0d4;font-size:12px}.learn-banner .hint{margin-top:8px;color:var(--muted)}.learn-banner .button{white-space:nowrap}.app-shell.learning .telemetry,.app-shell.learning .inventory,.app-shell.learning .event-log,.app-shell.learning .upgrade-progress{display:none}.app-shell.learning .workspace{min-height:620px}@media(max-width:800px){.mode-tabs{margin-left:0}.app-header{gap:10px}.wordmark{font-size:18px}.learn-banner{display:block}.learn-banner .button{margin-top:12px}}@media(max-width:550px){.mode-tabs{margin:auto 0}.mode-tabs button{font-size:11px;padding:6px}.header-right{gap:8px}.header-right>.text-button{display:none}.wordmark{font-size:15px;letter-spacing:1px}.zoom-controls{right:10px;bottom:10px}.learn-banner{padding:16px}.app-shell.learning .workspace{min-height:0}}.service-detail{border:1px solid #36535c;background:#20363a;border-radius:6px;padding:12px;margin-top:22px}.service-detail>span{display:block;color:var(--muted);font:10px IBM Plex Mono,monospace;letter-spacing:1.2px}.service-detail strong{display:block;font-size:14px;color:var(--accent);margin:7px 0}.service-detail small{font-size:11px;color:#a7bfc5}.service-stat{min-width:165px}@media(max-width:1350px){.service-stat{display:none}}.lesson-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}@media(max-width:800px){.lesson-actions{justify-content:flex-start;margin-top:14px}.lesson-actions .button{margin-top:0}}.pan-surface{touch-action:none}.board-boundary{fill:#7bdfba03;stroke:#6fae9b;stroke-width:1.4;stroke-dasharray:11 8;opacity:.56}.board-label{font:10px IBM Plex Mono,monospace;fill:#78a99d;letter-spacing:1px}.drag-boundary{fill:#7bdfba08;stroke:var(--accent);stroke-width:1.5;stroke-dasharray:7 5;opacity:.9}.junction-body{fill:#2d4149;stroke:#e7c57d;stroke-width:2}.junction.selected .junction-body{fill:#675737;stroke:#ffe0a0}.junction-cross{stroke:#ffe0a0;stroke-width:1.5;stroke-linecap:round;pointer-events:none}.junction>g[role=button]:first-child{cursor:grab;touch-action:none}.junction>g[role=button]:first-child:active{cursor:grabbing}.junction-port{cursor:crosshair;touch-action:none}.junction-port.occupied{cursor:pointer}.junction-socket{fill:#22363b;stroke:#e7c57d;stroke-width:1.5}.junction-port:not(.occupied) .junction-socket{fill:#b9a16c}.junction-port:hover .junction-socket,.junction-port.origin .junction-socket{fill:var(--accent);stroke:#eafff4}.junction-label{fill:#e8d39c;font:10px DM Sans,sans-serif;pointer-events:none}.event.warning,.event.good,.event.info{background:transparent}.compact-body{cursor:grab;touch-action:none}.compact-body:active{cursor:grabbing}.compact-background{fill:#294052;stroke:#7794a6;stroke-width:1.2}.compact-device.selected .compact-background{fill:#294a4b;stroke:var(--device-color);stroke-width:2}.compact-device.connectable .compact-background{stroke:var(--accent);stroke-dasharray:5 3}.compact-name{font:600 10px DM Sans,sans-serif;fill:#edf6fa;pointer-events:none}.compact-port{cursor:crosshair;touch-action:none}.compact-port.occupied{cursor:pointer}.compact-port-triangle{fill:var(--canvas);stroke:var(--accent);stroke-width:1.6}.compact-port:hover .compact-port-triangle,.compact-port.origin .compact-port-triangle{fill:var(--accent);stroke:#dcfff0}.toolbar-hint{font:11px IBM Plex Mono,Noto Sans JP,monospace;color:var(--muted)}.offline-timer{margin:15px 0 17px;padding:12px;border:1px solid var(--warning);border-radius:7px;background:#e9bd7810}.offline-timer>div:first-child{display:flex;justify-content:space-between;gap:10px;font-size:11px}.offline-timer b{color:var(--warning);font-size:11px}.offline-timer.expired{border-color:var(--danger);background:#f09b9010}.offline-timer.expired b{color:var(--danger)}.offline-timer-track{height:6px;background:#42505a;border-radius:8px;overflow:hidden;margin:9px 0 5px}.offline-timer-track i{display:block;height:100%;background:var(--warning);transition:width .3s}.offline-timer small{font-size:10px;color:var(--muted)}.node-offline-bar>rect:first-child{fill:#42505a}.node-offline-bar .remaining{fill:var(--warning);transition:width .3s}.node-offline-bar.expired>rect:first-child{fill:var(--danger)}.offline-bar-label{font:9px IBM Plex Mono,Noto Sans JP,monospace;fill:var(--warning)}.node-offline-bar.expired .offline-bar-label{fill:var(--danger)}.upgrade-grid .upgrade-choice{border:1px solid #3e5960;border-radius:9px;background:#20343b;color:var(--accent);padding:19px 16px;display:flex;flex-direction:column;align-items:stretch;min-width:0}.upgrade-grid .upgrade-choice strong{margin:20px 0 10px}.upgrade-choice>span:not(.upgrade-symbol){font-size:11px;color:#9fb3bf;line-height:1.7;min-height:43px}.upgrade-choice label{font-size:10px;color:var(--muted);margin-top:auto;display:block}.upgrade-choice select{display:block;width:100%;margin:7px 0 10px;padding:8px 6px;background:#13242e;color:#e6edf4;border:1px solid #607784;border-radius:5px;font:11px Noto Sans JP,sans-serif}.upgrade-grid .upgrade-choice button{margin:0;padding:9px 8px;display:block;text-align:center;width:100%;font-size:11px;border-color:#6bad98}.upgrade-grid .upgrade-choice button:disabled{opacity:.45;cursor:not-allowed}@media(max-width:550px){.toolbar-hint{font-size:10px}.upgrade-grid .upgrade-choice{padding:14px 10px}.upgrade-choice select{font-size:10px}}@media(min-width:851px){.upgrade-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:550px){.upgrade-grid{margin:16px 0;gap:7px}.upgrade-grid>button,.upgrade-grid .upgrade-choice{padding:12px}.upgrade-grid strong,.upgrade-grid .upgrade-choice strong{margin:12px 0 6px}.upgrade-grid>button>span:not(.upgrade-symbol){min-height:34px;line-height:1.5}.upgrade-grid>button b{margin-top:11px}.upgrade-choice>span:not(.upgrade-symbol){min-height:32px;line-height:1.5}.upgrade-choice select{margin:5px 0 8px}}.sound-toggle{border:1px solid var(--border);border-radius:5px;background:#1b2a34;color:var(--muted);font:11px IBM Plex Mono,monospace;padding:7px 9px;white-space:nowrap}.sound-toggle[aria-pressed=true]{color:var(--accent);border-color:#4e776d}.transformer.outage .transformer-halo{stroke:var(--danger);fill:#f27e8214;stroke-opacity:.85}.transformer.outage .transformer-title{fill:#633039;stroke:var(--danger);stroke-width:2}.transformer.outage .transformer-name{fill:#fff1f1}.transformer.outage .port-background{stroke:#c96771}.transformer.outage .transformer-caption{fill:var(--danger)}.network-svg.upgrade-picking .transformer:not(.upgrade-candidate),.network-svg.upgrade-picking .compact-device,.network-svg.upgrade-picking .junction{opacity:.4}.network-svg.upgrade-picking .upgrade-candidate .transformer-halo{stroke:var(--accent);stroke-width:2.5;fill:#7bdfba16;stroke-opacity:1}.network-svg.upgrade-picking .upgrade-candidate .transformer-title{stroke:var(--accent);stroke-width:2}.network-svg.upgrade-picking .upgrade-candidate .transformer-header,.network-svg.upgrade-picking .upgrade-candidate .port-row{cursor:pointer}.upgrade-target-tip{position:absolute;top:14px;left:14px;z-index:5;display:flex;align-items:center;gap:12px;max-width:calc(100% - 28px);padding:10px 13px;background:#203c32f2;border:1px solid var(--accent);border-radius:7px;box-shadow:0 8px 30px #0006}.upgrade-target-tip span{font:9px IBM Plex Mono,monospace;color:var(--accent);white-space:nowrap}.upgrade-target-tip strong{font-size:11px;font-weight:500}.upgrade-target-tip button{border:0;background:transparent;color:var(--accent);font-size:11px;white-space:nowrap}.upgrade-grid .upgrade-choice button{margin-top:auto}.outage-popup{position:fixed;top:94px;right:22px;z-index:65;display:flex;align-items:flex-start;gap:18px;width:min(360px,calc(100vw - 30px));padding:17px 18px;background:#3d252c;border:1px solid var(--danger);border-left:5px solid var(--danger);border-radius:9px;box-shadow:0 14px 45px #0008}.outage-popup span{display:block;color:var(--danger);font:10px IBM Plex Mono,monospace;letter-spacing:1px;margin-bottom:7px}.outage-popup strong{font-size:14px}.outage-popup p{font-size:11px;color:#f1cbd0;line-height:1.6;margin:7px 0 0}.outage-popup button{border:0;background:transparent;color:#f1cbd0;font-size:20px;line-height:1}.cable-size-legend{gap:5px!important}.cable-size-legend .thin-cable,.cable-size-legend .thick-cable{display:inline-block;width:20px;height:0;border-top:3px solid var(--accent);border-radius:2px;margin:0 3px}.cable-size-legend .thick-cable{border-top-width:7px}@media(max-width:550px){.sound-toggle{font-size:10px;padding:5px 6px}.upgrade-target-tip{display:block;max-width:250px}.upgrade-target-tip strong{display:block;margin:5px 0}.outage-popup{top:72px;right:10px}.cable-size-legend{display:none!important}}.port-row.wan-port .port-background{stroke:#8caac7;fill:#253a4b}.port-row.wan-port .port-label{fill:#b8d9f0}.port-row.wan-port.available .port-triangle{stroke:#8dc4eb}.port-row.wan-port.available .port-detail{fill:#8dc4eb}.cable>path:first-child{transition:stroke-width .35s ease}.health-readout{display:flex;align-items:center;gap:14px;min-height:49px;padding:9px 14px;margin:-12px 0 17px;border:1px solid var(--border);border-radius:7px;background:#162530;color:var(--muted);font-size:11px}.health-readout>span{font:10px IBM Plex Mono,monospace;letter-spacing:.8px;white-space:nowrap}.health-readout>strong{min-width:85px;font:12px IBM Plex Mono,monospace;white-space:nowrap}.health-readout .falling,.health-readout em{color:var(--danger)}.health-readout .recovering{color:var(--accent)}.health-readout>div{display:flex;align-items:center;gap:13px;flex-wrap:wrap}.health-readout>div b{font-weight:500;color:#c7d7df;white-space:nowrap}.health-readout>div span{white-space:nowrap}.health-readout em{font-style:normal;font-family:IBM Plex Mono,monospace}.health-readout details{margin-left:auto;position:relative;white-space:nowrap}.health-readout summary{cursor:pointer;color:var(--accent)}.health-readout ul{position:absolute;z-index:15;right:0;top:17px;width:max-content;max-width:min(420px,80vw);padding:13px 16px 13px 30px;margin:0;border:1px solid var(--border);border-radius:7px;background:#20323d;box-shadow:0 10px 25px #0007;white-space:normal;line-height:1.8}.workspace{grid-template-columns:190px minmax(0,1fr) 284px}.workspace .inventory{grid-column:1;grid-row:1;display:flex;flex-direction:column;gap:14px;min-width:0;padding:18px 12px;border-right:1px solid var(--border);border-bottom:0;background:var(--panel)}.workspace .inventory-title{min-width:0;padding:0;margin:0}.workspace .inventory-title h2{font-size:15px;margin:6px 0}.workspace .inventory-title p{font-size:10px;margin:0;color:var(--muted)}.workspace .equipment-list{display:flex;flex-direction:column;gap:8px;flex:0}.workspace .equipment{position:relative;display:flex;flex-wrap:nowrap;gap:8px;min-height:58px;padding:9px;cursor:grab}.workspace .equipment:active{cursor:grabbing}.workspace .equipment>span:nth-child(2){width:auto;min-width:0}.workspace .equipment b{font-size:12px}.workspace .equipment small{display:block;font-size:9px;line-height:1.35}.workspace .equipment em{position:static;margin-left:auto;padding:2px 4px;white-space:nowrap;font-size:10px}.workspace .map-panel{grid-column:2;grid-row:1}.workspace>aside{grid-column:3;grid-row:1}.app-shell.learning .workspace{grid-template-columns:minmax(0,1fr) 284px}.app-shell.learning .map-panel{grid-column:1}.app-shell.learning .workspace>aside{grid-column:2}.canvas-wrap.equipment-dragging:after{content:"";position:absolute;inset:8px;border:2px dashed var(--accent);border-radius:7px;background:#7bdfba0b;pointer-events:none;z-index:2}.equipment-drop-hint{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:5;padding:12px 18px;border:1px solid var(--accent);border-radius:7px;background:#203c32eb;color:#e5fff4;font-size:13px;white-space:nowrap;pointer-events:none}@media(max-width:1200px){.workspace{grid-template-columns:166px minmax(0,1fr) 254px}.workspace .equipment small{display:none}.workspace .equipment em{font-size:9px}}@media(max-width:850px){.workspace,.app-shell.learning .workspace{grid-template-columns:1fr}.workspace .inventory{grid-column:1;grid-row:1;border-right:0;border-bottom:1px solid var(--border);padding:14px}.workspace .inventory-title{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.workspace .inventory-title .panel-eyebrow{display:none}.workspace .inventory-title h2{margin:0}.workspace .equipment-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.workspace .map-panel{grid-column:1;grid-row:2}.workspace>aside{grid-column:1;grid-row:3}.app-shell.learning .map-panel{grid-column:1;grid-row:1}.app-shell.learning .workspace>aside{grid-column:1;grid-row:2}}@media(max-width:550px){.health-readout{margin:0 0 16px;align-items:flex-start;flex-wrap:wrap;gap:5px 12px}.health-readout>div{width:100%;gap:3px 12px}.health-readout>div span{white-space:normal}.workspace .inventory{padding:12px}.workspace .inventory-title p{font-size:9px}.workspace .equipment-list{display:flex;flex-direction:row;overflow-x:auto;padding-bottom:3px}.workspace .equipment{flex:0 0 135px}.workspace .equipment-icon svg{width:20px}.equipment-drop-hint{font-size:10px;padding:9px;max-width:220px;white-space:normal;text-align:center}}.health-readout>strong{font-family:IBM Plex Mono,Noto Sans JP,monospace}.workspace .equipment-list{flex:none}@media(min-width:851px)and (max-width:1200px){.workspace{grid-template-columns:166px minmax(0,1fr)}.workspace>aside{grid-column:1/-1;grid-row:2;display:grid;grid-template-columns:minmax(0,1fr) 220px;border-left:0;border-top:1px solid var(--border)}.workspace .inspector{display:grid;grid-template-columns:220px 1fr;gap:8px 16px}.workspace .inspector>.panel-eyebrow{grid-column:1/-1}.workspace .inspector .specs{grid-column:2;grid-row:2/5;margin:0}.workspace .inspector .connections,.workspace .inspector .connections-label{display:none}.workspace .upgrade-progress{border-top:0;border-left:1px solid var(--border)}.app-shell.learning .workspace{grid-template-columns:1fr}.app-shell.learning .workspace>aside{grid-column:1;grid-row:2}}.sandbox-banner{display:flex;align-items:center;gap:14px;margin:-12px 0 17px;padding:12px 15px;border:1px solid #4b7467;border-radius:7px;background:#1b3836;font-size:11px;color:#bed7ce}.sandbox-banner b{font-size:12px;color:var(--accent);white-space:nowrap}.sandbox .sandbox-title strong{font-size:18px;letter-spacing:1px;color:var(--accent)}.sandbox .workspace .inventory{max-height:710px;overflow-y:auto}.sandbox .workspace .equipment{flex-shrink:0}.sandbox-controls{display:flex;flex-direction:column;gap:8px;padding:14px 0;margin-top:18px;border-top:1px solid var(--border)}.sandbox-controls>.panel-eyebrow{margin-bottom:3px}.sandbox-controls label{font-size:11px;color:var(--muted)}.sandbox-controls label b{float:right;color:var(--accent)}.sandbox-controls input[type=range]{display:block;width:100%;margin:11px 0 4px;accent-color:var(--accent)}.sandbox-controls button{padding:8px 10px;border:1px solid #49665f;border-radius:5px;background:#203b37;color:#d9f8e8;text-align:left;font-size:11px}.sandbox-controls button:hover{border-color:var(--accent)}@media(max-width:850px){.sandbox .workspace .inventory{max-height:none;overflow:visible}.sandbox .workspace .equipment-list{max-height:175px;overflow-y:auto}.sandbox .inspector .sandbox-controls{grid-column:1/-1}}@media(max-width:650px){.app-header{height:auto;min-height:80px;display:grid;grid-template-columns:auto 1fr;gap:9px;padding:11px 16px}.app-header .wordmark{grid-column:1;grid-row:1}.app-header .header-right{grid-column:2;grid-row:1;justify-self:end}.app-header .mode-tabs{grid-column:1/-1;grid-row:2;width:100%;margin:0}.app-header .mode-tabs button{flex:1}.sandbox-banner{display:block;margin:0 0 16px}.sandbox-banner b{display:block;margin-bottom:5px}.sandbox .sandbox-title strong{font-size:15px}}@media(max-width:550px){.sandbox .workspace .equipment-list{max-height:none;overflow-x:auto;overflow-y:hidden}.sandbox .telemetry .stat{min-width:50%;padding:0 10px}.sandbox .telemetry .stat:first-child{min-width:50%;padding-left:5px}.sandbox .telemetry .stat:nth-child(3){min-width:100%;border:0;padding-left:5px}}.sandbox .node-offline-bar{display:none}.sandbox .inspector .remove{display:block}.sandbox .sandbox-controls:empty{display:none}@media(min-width:851px)and (max-width:1200px){.sandbox .workspace>aside{grid-template-columns:1fr}}html,body,#root{width:100%;height:100%;overflow:hidden}.app-shell{height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden}.app-header{height:64px;min-height:64px;flex:none;padding:0 22px}main{flex:1;min-height:0;display:flex;flex-direction:column;gap:10px;padding:12px 18px;overflow:hidden}.telemetry{flex:none;margin:0;min-width:0}.stat{padding:0 18px}.stat>span{margin-bottom:5px}.health-readout,.sandbox-banner{flex:none;margin:0;min-height:36px;padding:7px 12px}.health-readout>div{flex:1;min-width:0;flex-wrap:nowrap;overflow:hidden}.health-readout>div>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.health-readout details{flex:none}.learn-banner{flex:none;margin:0;padding:12px 18px}.workspace,.app-shell.learning .workspace{flex:1;min-height:0;grid-template-rows:minmax(0,1fr)}.workspace .inventory,.sandbox .workspace .inventory{min-height:0;max-height:none;overflow-y:auto;overscroll-behavior:contain}.workspace .inventory-title{flex:none}.workspace .equipment{flex-shrink:0}.workspace .map-panel{min-height:0;overflow:hidden}.map-toolbar{flex:none;min-height:46px;padding:10px 14px}.canvas-wrap{flex:1;min-height:0;min-width:0;aspect-ratio:auto;overflow:hidden;display:block}.network-svg{position:absolute;inset:0;width:100%;height:100%;min-width:0;min-height:0}.map-footer{flex:none;padding:9px 14px;min-height:32px}.workspace>aside{min-height:0;min-width:0;overflow-y:auto;overscroll-behavior:contain}.inspector{flex:none}.upgrade-progress{flex:none;margin-top:auto;padding:14px 18px}.event-log{flex:none;display:flex;gap:16px;align-items:center;min-width:0;padding:0;height:52px}.event-log>.panel-eyebrow{flex:none;margin:0}.event-log>.panel-eyebrow>span{display:none}.event-list{display:flex;gap:24px;flex:1;min-width:0;height:100%;overflow:auto;align-items:center;overscroll-behavior:contain}.event{flex:0 0 280px;min-width:0}.event>div{min-width:0}.event b,.event p{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.event p{margin:3px 0 0}.page-footer{display:none}.connection-tip{position:absolute;left:50%;bottom:14px;transform:translate(-50%);margin:0;height:auto;max-width:calc(100% - 24px);white-space:normal}.edge-popover{max-width:calc(100% - 20px);white-space:normal}.map-footer:after{display:none}@media(min-width:851px)and (max-width:1200px){.workspace{grid-template-columns:150px minmax(0,1fr) 230px}.workspace>aside,.sandbox .workspace>aside{grid-column:3;grid-row:1;display:flex;flex-direction:column;border-top:0;border-left:1px solid var(--border)}.workspace .inspector{display:block;padding:18px 14px}.workspace .inspector .specs{margin:18px 0}.workspace .inspector .connections{display:block}.workspace .inspector .connections-label{display:flex}.workspace .upgrade-progress{border-left:0;border-top:1px solid var(--border)}.app-shell.learning .workspace{grid-template-columns:minmax(0,1fr) 230px}.app-shell.learning .workspace>aside{grid-column:2;grid-row:1}}@media(max-width:850px){.app-header{padding:0 14px}main{padding:8px 10px;gap:7px}.telemetry,.sandbox .telemetry{flex-wrap:nowrap;gap:0;overflow-x:auto;overflow-y:hidden;padding:2px 0 4px}.telemetry .stat,.sandbox .telemetry .stat{flex:none;min-width:0;width:auto;padding:0 10px;border-right:1px solid var(--border)}.telemetry .stat:first-child,.sandbox .telemetry .stat:first-child{min-width:0;padding-left:0}.telemetry .stat strong{font-size:17px}.telemetry .stat .time-value{font-size:14px}.telemetry .stat>span{font-size:9px}.telemetry .play-button{flex:none;width:auto;min-width:92px;min-height:36px;margin:0 0 0 10px;padding:6px 10px}.health-readout{flex-wrap:nowrap;align-items:center;gap:8px;font-size:10px}.health-readout>span{display:none}.health-readout>strong{min-width:72px;font-size:10px}.health-readout>div{width:auto}.health-readout>div b{display:none}.workspace{grid-template-columns:minmax(0,1fr);grid-template-rows:76px minmax(0,1fr) 140px}.workspace .inventory,.sandbox .workspace .inventory{grid-column:1;grid-row:1;padding:8px 10px;gap:6px;overflow:hidden}.workspace .inventory-title{display:none}.workspace .equipment-list,.sandbox .workspace .equipment-list{display:flex;flex-direction:row;max-height:none;overflow-x:auto;overflow-y:hidden;padding-bottom:3px}.workspace .equipment{flex:0 0 128px;min-height:52px}.workspace .map-panel{grid-column:1;grid-row:2}.workspace>aside,.sandbox .workspace>aside{grid-column:1;grid-row:3;display:block;overflow:auto;border-left:0;border-top:1px solid var(--border)}.workspace .inspector{display:block;padding:12px 14px}.workspace .inspector .device-heading,.workspace .inspector .specs{margin:12px 0}.workspace .inspector .meter-caption,.workspace .inspector .connections-label{display:flex}.workspace .inspector>.meter,.workspace .inspector .connections,.workspace .inspector .remove{display:block}.workspace .inspector .connections{max-height:none}.workspace .upgrade-progress{border-left:0;border-top:1px solid var(--border)}.app-shell.learning .workspace{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) 140px}.app-shell.learning .map-panel{grid-column:1;grid-row:1}.app-shell.learning .workspace>aside{grid-column:1;grid-row:2}.map-toolbar{flex-direction:row;align-items:center;min-height:38px;padding:8px 10px}.toolbar-hint{display:none}.map-footer{min-height:28px;padding:7px 10px}.legend{gap:10px}.sandbox-banner{padding:6px 10px;font-size:10px}.sandbox-banner b{display:none}.learn-banner{padding:9px 12px;max-height:150px;overflow-y:auto}.learn-banner h2{font-size:15px;margin:4px 0}.learn-banner p{font-size:11px}.lesson-actions{margin-top:7px}.lesson-actions .button{min-height:32px;padding:6px 10px}.event-log{height:32px;gap:8px}.event-log>.panel-eyebrow{display:none}.event p{display:none}.event{flex-basis:240px}.first-tip{bottom:44px;max-width:220px;padding:9px 12px}}@media(max-width:650px){.app-header{height:80px;min-height:80px;padding:9px 12px;gap:7px}.app-header .mode-tabs{padding:2px}.mode-tabs button{padding:5px 6px}}@media(max-height:650px){.event-log{height:28px}.event p,.first-tip p{display:none}.map-toolbar{min-height:34px;padding-top:7px;padding-bottom:7px}.workspace .inventory-title p{display:none}}@media(max-height:650px)and (max-width:850px){.workspace{grid-template-rows:60px minmax(0,1fr) 90px}.workspace .equipment{min-height:40px;padding:6px 8px}.app-shell.learning .workspace{grid-template-rows:minmax(0,1fr) 90px}.learn-banner{max-height:110px}}@media(max-height:500px)and (min-width:651px){.app-header{height:48px;min-height:48px;padding:0 12px;gap:8px}.prototype,.save-state{display:none}.mode-tabs{margin-left:0}.mode-tabs button{padding:5px 7px;font-size:11px}.header-right{gap:10px}main{padding:6px 10px;gap:6px}.health-readout{min-height:28px;padding:4px 9px}.workspace{grid-template-columns:126px minmax(0,1fr) 200px;grid-template-rows:minmax(0,1fr)}.workspace .inventory,.sandbox .workspace .inventory{grid-column:1;grid-row:1;padding:10px 8px;overflow-y:auto;border-bottom:0;border-right:1px solid var(--border)}.workspace .equipment-list,.sandbox .workspace .equipment-list{flex-direction:column;overflow:visible}.workspace .equipment{flex:0 0 auto;min-height:42px;padding:7px;gap:6px}.workspace .map-panel{grid-column:2;grid-row:1}.workspace>aside,.sandbox .workspace>aside{grid-column:3;grid-row:1;border-top:0;border-left:1px solid var(--border)}.app-shell.learning .workspace{grid-template-columns:minmax(0,1fr) 200px;grid-template-rows:minmax(0,1fr)}.app-shell.learning .map-panel{grid-column:1;grid-row:1}.app-shell.learning .workspace>aside{grid-column:2;grid-row:1}.learn-banner{max-height:90px}.map-footer .cable-size-legend{display:none}}.grant-count{color:var(--accent);font:600 12px Noto Sans JP,sans-serif;letter-spacing:0}.grant-devices{padding:12px;margin:14px 0;border:1px solid var(--border);border-radius:8px;background:#13232d}.grant-devices>div:first-child{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:9px;font-size:12px}.grant-devices button{border:1px solid #3e5960;background:#20343b;color:#dce7ef;border-radius:5px;padding:7px 9px;font-size:11px}.grant-devices>div:first-child>button{color:var(--accent)}.grant-device-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;max-height:150px;overflow-y:auto}.grant-device-list button{text-align:left}.grant-device-list button>span{display:flex;align-items:center;gap:7px}.grant-device-list b{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.grant-device-list em{font-style:normal;font-size:10px;color:var(--accent)}.grant-device-list em.offline{color:var(--muted)}.grant-device-list em.warning{color:var(--warning)}.grant-device-list em.overload{color:var(--danger)}.grant-device-list small{display:block;color:var(--muted);margin-top:6px;font-size:10px}.grant-review-banner{flex:none;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:8px 12px;border:1px solid #4b7467;border-radius:7px;background:#1b3836;font-size:11px;color:#bed7ce}.grant-review-banner b{display:block;color:var(--accent);margin-bottom:4px}.grant-review-banner .button{min-height:34px;padding:7px 12px;flex:none;font-size:11px}.upgrade-target-tip{flex-wrap:wrap;max-width:calc(100% - 20px);white-space:normal}.upgrade-target-tip .target-confirm{background:var(--accent);color:#102b23;border-radius:5px;padding:7px 10px}@media(max-width:550px){.grant-device-list{grid-template-columns:minmax(0,1fr);max-height:135px}.grant-review-banner{gap:8px;padding:6px 8px;font-size:10px}.grant-review-banner .button{padding:6px 8px;font-size:10px}}.grant-target-banner{flex:none;display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:8px 12px;border:1px solid var(--accent);border-radius:7px;background:#203c32}.grant-target-banner>span{font:9px IBM Plex Mono,monospace;color:var(--accent)}.grant-target-banner>strong{flex:1;font-size:11px;font-weight:500}.grant-target-banner button{border:0;background:transparent;color:var(--accent);font-size:11px;padding:7px 9px}.grant-target-banner .target-confirm{background:var(--accent);color:#102b23;border-radius:5px}@media(max-width:550px){.grant-target-banner{padding:6px 8px;gap:5px}.grant-target-banner>span{display:none}.grant-target-banner>strong{flex-basis:100%;font-size:10px}.grant-target-banner button{font-size:10px}}.storage-panel{margin-top:18px;padding:13px 0;border-top:1px solid var(--border)}.storage-panel .panel-eyebrow b{color:var(--muted);font:10px Noto Sans JP,sans-serif;letter-spacing:0}.storage-capacity{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:13px 0 9px}.storage-capacity strong{font:17px IBM Plex Mono,monospace}.storage-capacity small{color:var(--muted);font-size:11px}.storage-capacity>span{font-size:10px;color:var(--warning)}.storage-panel dl{font-size:11px;margin:12px 0}.storage-panel dl>div{display:flex;justify-content:space-between;gap:6px;margin:7px 0}.storage-panel dt{color:var(--muted)}.storage-panel dd{margin:0;font-family:IBM Plex Mono,monospace}.storage-alert{padding:9px;border:1px solid var(--danger);border-radius:5px;background:#f27e8210;color:var(--danger);font-size:11px;line-height:1.7}.storage-hint{display:block;font-size:10px;color:var(--muted);line-height:1.7}.drive-list>div{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--border)}.drive-list>div>span{flex:1}.drive-list b{font-size:12px}.drive-list small{display:block;margin-top:3px;color:var(--muted);font:10px IBM Plex Mono,monospace}.drive-list button{padding:5px 7px;border:1px solid #49665f;background:transparent;color:var(--muted);border-radius:5px;font-size:10px}.drive-attach{display:flex;gap:7px;margin:12px 0}.drive-attach button{flex:1;padding:8px 5px;border:1px solid #49665f;background:#203b37;color:#d9f8e8;border-radius:5px}.drive-attach b{display:block;font-size:11px}.drive-attach small{display:block;font-size:9px;color:var(--muted);margin-top:5px}.storage-data-control{display:block;font-size:11px;color:var(--muted);margin-top:16px}.storage-data-control b{float:right;color:var(--accent)}.storage-data-control input{display:block;width:100%;margin-top:12px;accent-color:var(--accent)}.sandbox-clock{flex:none;margin-left:auto;white-space:nowrap}.sandbox-clock select{margin-left:6px;padding:4px 6px;background:var(--canvas);border:1px solid var(--border);color:var(--accent);border-radius:5px;font-size:11px}@media(max-width:850px){.sandbox-banner{display:flex;gap:7px}.sandbox-banner>span{flex:1;min-width:0}}.storage-node-label{font:9px IBM Plex Mono,Noto Sans JP,monospace;pointer-events:none}
