.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 .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 .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(240px * var(--zoom, 1));height:calc(320px * 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)}.kb{margin-top:10px;display:grid;grid-template-columns:minmax(0,1fr) 78px;gap:5px;width:calc(240px * var(--zoom, 1));max-width:100%}.kb-fn{grid-column:1 / -1;display:grid;grid-template-columns:repeat(6,1fr);gap:4px}.kb-main{display:flex;flex-direction:column;gap:4px;min-width:0}.kb-row{display:flex;gap:4px}.kb-dpad{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);gap:4px;align-self:end}.key{position:relative;flex:1 1 0;min-width:0;height:22px;border-radius:4px;border:1px solid #00000066;background:linear-gradient(180deg,var(--dust-700),var(--dust-800));color:var(--text);font-family:var(--label);font-size:.56rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 1px #ffffff0f inset,0 1px 2px #0008;padding:0}.key:hover{background:var(--dust-700);color:var(--signal)}.key:active{transform:translateY(1px);background:var(--signal);color:#000}.key[aria-pressed=true]{background:var(--signal);color:#000}.key:disabled{opacity:.45;cursor:default}.key-fn{font-size:.5rem;letter-spacing:.04em;color:var(--dim)}.key-nav{font-size:.6rem;color:var(--signal);height:22px}.key-mod{font-size:.46rem;color:var(--dim);flex-grow:1.5;letter-spacing:0}.key .symface{position:absolute;top:1px;right:3px;font-size:.42rem;color:var(--faint)}.kb-dpad>span{display:block}.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 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}.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(240px,72vw);height:auto}.kb{width:min(240px,72vw)}}.mk{--mk: var(--signal);position:relative;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-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))}
