.sim{display:flex;flex-direction:column;height:100dvh;overflow:hidden;background:var(--dust-950)}.sim-bar{display:flex;align-items:center;gap:.75rem;padding:.5rem .85rem;border-bottom:1px solid var(--line);background:var(--dust-900);flex-wrap:wrap}.sim-bar .mark{font-size:1.05rem}.sim-bar .sep{width:1px;align-self:stretch;background:var(--line);margin:0 .15rem}.sim-bar .grow{flex:1}.clock{font-family:var(--label);font-size:.9rem;font-weight:500;letter-spacing:.04em;color:var(--signal);font-variant-numeric:tabular-nums;min-width:6.5ch}.clock .unit{color:var(--faint);font-size:.62rem;letter-spacing:.1em}.seg{display:inline-flex;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}.seg>button{font-family:var(--label);font-size:.62rem;letter-spacing:.06em;background:var(--dust-850);color:var(--dim);border:0;border-right:1px solid var(--line);padding:.42rem .55rem;cursor:pointer}.seg>button:last-child{border-right:0}.seg>button:hover{color:var(--text)}.seg>button[aria-pressed=true]{background:var(--signal);color:#000;font-weight:600}select.field,input.field{font-family:var(--ui);font-size:.82rem;background:var(--dust-850);color:var(--text);border:1px solid var(--line);border-radius:var(--r);padding:.4rem .5rem}select.field:hover,input.field:hover{border-color:var(--faint)}.sim-grid{flex:1;min-height:0;display:grid;grid-template-columns:306px minmax(0,1fr) 396px}.sim[data-zoom="2"] .sim-grid{grid-template-columns:306px minmax(0,1fr) 556px}.rail,.bay{min-height:0;overflow-y:auto;overscroll-behavior:contain;background:var(--dust-900);scrollbar-width:thin;scrollbar-color:var(--line) transparent}.rail{border-right:1px solid var(--line)}.bay{border-left:1px solid var(--line)}.stage{position:relative;display:flex;flex-direction:column;min-height:0}.canvaswrap{position:relative;flex:1;min-height:0;background:var(--dust-950)}#map,#field{position:absolute;inset:0;width:100%;height:100%}#field{display:block;touch-action:none;cursor:grab}.sim[data-view=map] #field,.sim[data-view=field] #map{display:none}.stage-hud{position:absolute;left:10px;bottom:10px;z-index:5;display:flex;gap:.4rem;align-items:center;pointer-events:none}.stage-hud>*{pointer-events:auto}.readout{font-family:var(--label);font-size:.6rem;letter-spacing:.08em;color:var(--dim);background:color-mix(in srgb,var(--dust-950) 82%,transparent);border:1px solid var(--line);border-radius:var(--r);padding:.35rem .55rem;backdrop-filter:blur(6px)}.readout b{color:var(--signal);font-weight:500}.panel{border-bottom:1px solid var(--line)}.panel>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:.5rem;padding:.55rem .8rem;font-family:var(--label);font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);background:var(--dust-850);user-select:none}.panel>summary::-webkit-details-marker{display:none}.panel>summary:before{content:"+";color:var(--faint);width:.7em}.panel[open]>summary:before{content:"−"}.panel>summary:hover{color:var(--text)}.panel .body{padding:.7rem .8rem .9rem;display:flex;flex-direction:column;gap:.55rem}.row{display:flex;align-items:center;gap:.5rem}.row>label{font-family:var(--label);font-size:.58rem;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);flex:0 0 5.4rem}.row>.val{font-family:var(--label);font-size:.66rem;color:var(--text);font-variant-numeric:tabular-nums;min-width:4ch;text-align:right}.row input[type=range]{flex:1;min-width:0;accent-color:var(--signal)}.row select.field,.row input.field{flex:1;min-width:0}.hint{font-size:.72rem;color:var(--faint);line-height:1.4}.nodelist{display:flex;flex-direction:column;gap:2px}.nodeitem{display:grid;grid-template-columns:12px 1fr auto;align-items:center;gap:.5rem;padding:.4rem .5rem;border:1px solid transparent;border-radius:var(--r);background:var(--dust-850);cursor:pointer;text-align:left;color:var(--text);font-family:var(--ui);font-size:.85rem}.nodeitem:hover{border-color:var(--line)}.nodeitem[aria-selected=true]{border-color:var(--signal);background:var(--dust-800)}.nodeitem .swatch{width:10px;height:10px;border-radius:50%}.nodeitem .swatch.sq{border-radius:2px}.nodeitem .tagglyph{display:inline-block;margin-left:.4rem;padding:0 .3rem;border:1px solid var(--line);border-radius:2px;font-family:var(--label);font-size:.5rem;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);vertical-align:middle}.nodeitem .meta{font-family:var(--label);font-size:.58rem;color:var(--faint);letter-spacing:.06em}.nodeitem.dead .name{color:var(--faint);text-decoration:line-through}.device{padding:.8rem;display:flex;flex-direction:column;gap:.7rem;align-items:center}.devhead{width:100%;display:flex;align-items:baseline;gap:.5rem}.devhead .name{font-family:var(--display);font-variation-settings:"wdth" 112;font-weight:600;font-size:1.1rem}.devhead .kind{font-family:var(--label);font-size:.5rem;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);border:1px solid var(--line);border-radius:2px;padding:.05rem .3rem}.devhead .crew{font-family:var(--label);font-size:.6rem;letter-spacing:.08em;color:var(--signal)}.devhead .pk{font-family:var(--code);font-size:.62rem;color:var(--faint);margin-left:auto}.shell{background:linear-gradient(180deg,var(--dust-800),var(--dust-850));border:1px solid var(--line);border-radius:12px;padding:10px 10px 12px;box-shadow:0 12px 30px -18px #000,inset 0 1px #ffffff0d;width:max-content;max-width:100%}.shell.focused{border-color:var(--signal);box-shadow:0 0 0 1px var(--signal),0 12px 30px -18px #000}.screenframe{position:relative;background:#000;border:1px solid #000;border-radius:4px;overflow:hidden;line-height:0;outline:none}.screenframe canvas{display:block;image-rendering:pixelated;width:calc(320px * var(--zoom, 1));height:calc(240px * var(--zoom, 1))}.screenframe .glare{position:absolute;inset:0;pointer-events:none;background:linear-gradient(160deg,#ffffff10,#fff0 38%)}.kbcap{margin:0;font-family:var(--label);font-size:.52rem;letter-spacing:.11em;text-transform:uppercase;color:var(--faint);text-align:center}.device:has(.shell.focused) .kbcap{color:var(--signal)}.tagcard{--tag: var(--signal);width:calc(240px * var(--zoom, 1));max-width:100%;aspect-ratio:1 / 1.586;box-sizing:border-box;padding:14px 16px 12px;border-radius:14px;background:radial-gradient(120% 70% at 20% 0%,#ffffff10,transparent 60%),linear-gradient(165deg,#2a2620,#14120e 70%);border:1px solid var(--line);box-shadow:0 14px 34px -18px #000,inset 0 1px #ffffff14,inset 0 0 0 5px #0d0b0980;display:flex;flex-direction:column;gap:6px;outline:none;cursor:default;position:relative;user-select:none;-webkit-user-select:none}.tagcard:after{content:"";position:absolute;inset:5px;border-radius:10px;border:1px solid #ffffff08;pointer-events:none}.tagcard.focused{border-color:var(--signal);box-shadow:0 0 0 1px var(--signal),0 14px 34px -18px #000,inset 0 0 0 5px #0d0b0980}.tagtop{display:flex;align-items:center;justify-content:space-between}.tagbrand{font-family:var(--label);font-size:.52rem;letter-spacing:.16em;text-transform:uppercase;color:var(--faint)}.led{width:9px;height:9px;border-radius:50%;background:#1a1713;border:1px solid #000;box-shadow:inset 0 1px 1px #ffffff14;flex:none;transition:box-shadow 80ms}.led.on{box-shadow:0 0 8px 2px currentColor;border-color:#fff8}.tagname{font-family:var(--display);font-variation-settings:"wdth" 112;font-weight:600;font-size:1.15rem;color:var(--tag);line-height:1.1}.tagstatus{display:flex;flex-wrap:wrap;gap:3px 8px;min-height:2.2em}.tagstatus .bit{font-family:var(--label);font-size:.54rem;letter-spacing:.06em;color:var(--dim);white-space:nowrap}.tagstatus .bit.ok{color:var(--ok)}.tagstatus .bit.warn{color:var(--warn)}.tagstatus .bit.hot{color:#fff;animation:bitblink 1s steps(2,start) infinite}@keyframes bitblink{to{opacity:.45}}.tagbtnwrap{position:relative;width:62%;aspect-ratio:1;margin:auto;flex:none}.holdring{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.holdring .track{fill:none;stroke:#2c261e;stroke-width:4}.holdring .arc{fill:none;stroke:var(--signal);stroke-width:4;stroke-linecap:round}.holdring .arc.help{stroke:var(--warn)}.holdring .arc.forget{stroke:var(--c-red)}.holdring .mark{stroke:var(--faint);stroke-width:2}.holdring .mark.help{stroke:var(--warn)}.holdring .mark.forget{stroke:var(--c-red)}.tagbtn{position:absolute;inset:12%;border-radius:50%;border:1px solid #000;background:radial-gradient(circle at 40% 35%,#3a3329,#1a1713 70%);box-shadow:0 4px 10px #000a,inset 0 1px #ffffff1a,inset 0 -3px 6px #0008;cursor:pointer;touch-action:none;-webkit-tap-highlight-color:transparent;outline:none}.tagbtn:after{content:"";position:absolute;inset:40%;border-radius:50%;border:1px solid #ffffff1c}.tagcard.pressed .tagbtn{transform:translateY(2px);box-shadow:0 1px 3px #000a,inset 0 2px 6px #000c;background:radial-gradient(circle at 40% 35%,#2c261e,#110f0c 70%)}.holdlabel{min-height:1.2em;text-align:center;font-family:var(--label);font-size:.54rem;letter-spacing:.08em;color:var(--text);font-variant-numeric:tabular-nums}.taglegend{list-style:none;margin:0;padding:0;display:grid;gap:2px}.taglegend li{display:flex;justify-content:space-between;gap:.5rem;font-family:var(--label);font-size:.5rem;letter-spacing:.06em}.taglegend .k{color:var(--faint);text-transform:uppercase}.taglegend .v{color:var(--dim)}.device .tagcard[hidden],.device .shell[hidden],.device .kbcap[hidden],.device .row[hidden]{display:none}.stats{width:100%;display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}.stat{background:var(--dust-850);padding:.4rem .5rem}.stat .k{font-family:var(--label);font-size:.5rem;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);display:block}.stat .v{font-family:var(--label);font-size:.78rem;color:var(--text);font-variant-numeric:tabular-nums}.stat .v.warn{color:var(--warn)}.stat .v.ok{color:var(--ok)}table.peers{width:100%;border-collapse:collapse;font-size:.74rem}table.peers th{font-family:var(--label);font-size:.5rem;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);text-align:right;font-weight:400;padding:0 .35rem .25rem;border-bottom:1px solid var(--line)}table.peers th:first-child,table.peers td:first-child{text-align:left}table.peers td{text-align:right;padding:.22rem .35rem;font-variant-numeric:tabular-nums;color:var(--dim);border-bottom:1px solid var(--line-soft)}table.peers td.name{color:var(--text);display:flex;align-items:center;gap:.4rem}table.peers td.name .swatch{width:8px;height:8px;border-radius:50%;flex:none}table.peers td.name .swatch.sq{border-radius:1.5px}table.peers td.name .wants{font-family:var(--label);font-size:.5rem;letter-spacing:.06em;color:#fff;text-transform:uppercase;animation:bitblink 1s steps(2,start) infinite}table.peers tr.stale td{opacity:.5}.empty{color:var(--faint);font-size:.78rem;padding:.6rem 0}.wall{display:grid;grid-template-columns:repeat(auto-fill,minmax(58px,1fr));gap:6px;padding:.7rem .8rem}.wallcell{border:1px solid var(--line);border-radius:3px;padding:0;background:#000;cursor:pointer;position:relative;line-height:0;overflow:hidden}.wallcell canvas{width:100%;height:auto;display:block;image-rendering:pixelated}.wallcell[aria-selected=true]{border-color:var(--signal);box-shadow:0 0 0 1px var(--signal)}.wallcell .tag{position:absolute;left:0;right:0;bottom:0;font-family:var(--label);font-size:.44rem;letter-spacing:.04em;color:#000;padding:1px 2px;line-height:1.2;text-align:left;white-space:nowrap;overflow:hidden}.wallcell.tagcell{--tag: var(--signal);aspect-ratio:3 / 4;background:linear-gradient(165deg,#2a2620,#14120e 70%)}.wallcell.tagcell .cardface{position:absolute;inset:6px 6px 12px;border-radius:5px;border:1px solid var(--line);background:linear-gradient(165deg,#221e18,#13110e);display:flex;flex-direction:column;align-items:flex-end;justify-content:space-between;padding:4px}.wallcell.tagcell .cardface .glyph{align-self:center;font-family:var(--label);font-size:.42rem;letter-spacing:.14em;text-transform:uppercase;color:var(--faint)}.wallcell.tagcell .led{width:6px;height:6px}.wallcell.tagcell.claim .cardface{border-color:#fff;animation:claimblink 1s steps(2,start) infinite}@keyframes claimblink{to{border-color:var(--line)}}.drawer{border-top:1px solid var(--line);background:var(--dust-900);display:flex;flex-direction:column;height:216px;flex:none}.drawer[data-collapsed=true]{height:33px}.drawer[data-collapsed=true] .logscroll{display:none}.drawer-head{display:flex;align-items:center;gap:.5rem;padding:.25rem .6rem;border-bottom:1px solid var(--line-soft);flex:none}.logscroll{flex:1;min-height:0;overflow-y:auto;padding:.3rem .6rem .6rem;scrollbar-width:thin}.logline{font-family:var(--code);font-size:11px;line-height:1.45;white-space:pre;color:var(--dim)}.logline .t{color:var(--faint)}.logline .n{color:var(--text)}.logline.tx .k{color:var(--signal)}.logline.rx .k{color:var(--ok)}.logline.drop .k{color:var(--warn)}.logline.serial{color:var(--faint)}.logline.serial .n{color:var(--dim)}@media(max-width:1120px){.sim{height:auto;overflow:visible}.sim-grid,.sim[data-zoom="2"] .sim-grid{grid-template-columns:1fr}.rail,.bay{overflow:visible;border:0;border-top:1px solid var(--line)}.canvaswrap{height:52vh;flex:none}.stage{order:1}.bay{order:2}.rail{order:3}.drawer{height:200px}.sim-bar{position:sticky;top:0;z-index:50}}@media(max-width:520px){.device{padding:.6rem .4rem}.shell{padding:8px}.screenframe canvas{width:min(320px,86vw);height:auto}.kb{width:min(320px,86vw)}}.mk{--mk: var(--signal);position:absolute;top:0;left:0;width:18px;height:18px;cursor:grab}.mk-dot{position:absolute;inset:3px;border-radius:50%;background:var(--mk);border:1px solid #00000088;box-shadow:0 0 0 1px #0009,0 0 10px -2px var(--mk)}.mk-dot:after{content:"";position:absolute;left:50%;top:-7px;width:0;height:0;transform:translate(-50%);border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:6px solid var(--mk)}.mk{transform-origin:50% 50%}.mk-dot{transform:rotate(var(--hdg, 0deg))}.mk.sel .mk-dot{box-shadow:0 0 0 2px #fff,0 0 14px -1px var(--mk)}.mk.sq .mk-dot{border-radius:3px;transform:none}.mk.sq .mk-dot:after{display:none}.mk.sq .mk-ring{border-radius:4px}.mk-led{position:absolute;top:0;right:0;width:6px;height:6px;border-radius:50%;border:1px solid #0009;background:transparent;display:none;z-index:2}.mk.sq .mk-led{display:block}.mk-led.on{border-color:#fff;box-shadow:0 0 6px 1px currentColor}.mk.sq.claim .mk-dot{animation:claimpulse 1.2s ease-out infinite}.mk.sq.claim .mk-dot:before{content:"+";position:absolute;inset:0;display:grid;place-items:center;font:700 11px/1 var(--label);color:#000}@keyframes claimpulse{0%{box-shadow:0 0 0 1px #0009,0 0 #fffb}to{box-shadow:0 0 0 1px #0009,0 0 0 12px #fff0}}.mk-ring{position:absolute;inset:0;border-radius:50%;border:1px solid var(--mk);opacity:0}.mk.tx .mk-ring{animation:mkpulse .7s ease-out 1}@keyframes mkpulse{0%{opacity:.75;transform:scale(1)}to{opacity:0;transform:scale(5.5)}}.mk-tag{position:absolute;top:20px;left:50%;transform:translate(-50%);font-family:var(--label);font-size:.52rem;letter-spacing:.04em;white-space:nowrap;color:var(--text);text-shadow:0 0 4px #000,0 0 8px #000;pointer-events:none}.maplibregl-ctrl-attrib{font-size:10px}.maplibregl-ctrl-attrib,.maplibregl-ctrl-attrib a{color:var(--dim)!important;background:#0d0b09cc!important}.maplibregl-ctrl-group{background:var(--dust-850)!important;border:1px solid var(--line)!important}.maplibregl-ctrl-group button+button{border-top:1px solid var(--line)!important}.maplibregl-ctrl-group button span{filter:invert(1) hue-rotate(180deg)}.maplibregl-ctrl-scale{background:#0d0b09cc!important;border-color:var(--line)!important;color:var(--dim)!important;font-family:var(--label);font-size:9px}.readout.note{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 45%,var(--line))}.help{width:min(720px,calc(100vw - 2rem));max-height:calc(100vh - 2rem);padding:0;border:1px solid var(--line);border-radius:10px;background:var(--dust-900, #14120e);color:var(--text);box-shadow:0 20px 60px #000c}.help::backdrop{background:#000a;backdrop-filter:blur(2px)}.help-head{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;padding:.8rem 1rem;border-bottom:1px solid var(--line);background:var(--dust-900, #14120e)}.help-head h2{margin:0;font-family:var(--label);font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;color:var(--signal)}.help-body{padding:.5rem 1rem 1.2rem;display:grid;gap:1.2rem}.help-body section h3{margin:.8rem 0 .35rem;font-family:var(--label);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}.help-body .hint{margin:.2rem 0 .5rem}.help-table{width:100%;border-collapse:collapse;font-size:.82rem}.help-table td{padding:.35rem .5rem .35rem 0;vertical-align:top;border-top:1px solid var(--line-soft)}.help-table td:first-child{width:34%;color:var(--dim);white-space:nowrap;font-family:var(--label);font-size:.7rem}.help-table td .fnicon{display:inline-flex;vertical-align:middle;margin-right:.4rem;color:var(--text)}.help-table td .fnicon svg{width:16px;height:16px}.help-table code{font-family:var(--label);font-size:.7rem;color:var(--text)}.help-table kbd{font-family:var(--label);font-size:.66rem;padding:.08rem .35rem;border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;background:var(--dust-800);color:var(--text)}@media(max-width:520px){.help-table td:first-child{width:42%;white-space:normal}}
