:root{--bg:#101a2b;--bg-soft:#1a2b46;--ink:#f2f4f8;--muted:#b5c0d4;--line:#2f4670;--accent:#ffb45f;--accent-strong:#ff8f3f;--ok:#63f0b3;--error:#ff7b7b;--idle:#a8b3c7;--mono:"IBM Plex Mono", "Consolas", "Courier New", monospace;--display:"Sora", "Segoe UI", sans-serif}*{box-sizing:border-box}html,body{min-height:100%;margin:0}#app{min-height:100dvh}body{font-family:var(--display);color:var(--ink);background:radial-gradient(1200px 700px at 88% -10%,#ffb45f40,#0000 60%),radial-gradient(900px 600px at 0 10%,#63f0b326,#0000 65%),linear-gradient(#0d1524 0%,#142038 50%,#101a2b 100%)}body:before{content:"";pointer-events:none;background-image:linear-gradient(#adc0df14 1px,#0000 1px),linear-gradient(90deg,#adc0df14 1px,#0000 1px);background-size:42px 42px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#0003,#000000bf);mask-image:linear-gradient(#0003,#000000bf)}.site{grid-template-columns:minmax(0,1fr);gap:.7rem;width:100%;max-width:none;min-height:100dvh;margin:0 auto;padding:.7rem;display:grid}.site[hidden]{display:none!important}.auth-gate{z-index:120;background:#0d1524;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.auth-gate[hidden]{display:none!important}.auth-card{gap:.58rem;width:min(420px,100%);padding:1rem;display:grid}.auth-card h1{font-size:1.16rem}.auth-card p{color:var(--muted);margin:0;font-size:.82rem}.auth-form{gap:.35rem;margin-top:.32rem;display:grid}.auth-form button{width:100%;margin-top:.24rem}.auth-error{color:var(--error);margin:.2rem 0 0;font-size:.76rem}h1,h2,h3{margin:0}.panel{border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:linear-gradient(160deg,#16243de6,#111c2ff2);border-radius:18px;min-height:0}.map-stage{min-height:52dvh;padding:.52rem}.panel-head{justify-content:space-between;align-items:center;gap:.55rem;display:flex}.badge{border:1px solid var(--line);text-transform:uppercase;letter-spacing:.08em;border-radius:999px;padding:.26rem .55rem;font-size:.68rem;font-weight:700}.badge.idle{color:var(--idle)}.badge.loading{color:var(--accent)}.badge.ok{color:var(--ok)}.badge.error{color:var(--error)}.map-frame{border:1px solid var(--line);touch-action:none;cursor:default;background:#101a2c;border-radius:14px;height:clamp(420px,65dvh,860px);position:relative;overflow:hidden}.map-frame.is-ready{cursor:grab}.map-frame.dragging{cursor:grabbing}#map-image{transform-origin:50%;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;pointer-events:none;image-rendering:auto;background:#0e1828;position:absolute;top:50%;left:50%}.map-empty{color:var(--muted);font-family:var(--mono);text-align:center;justify-content:center;align-items:center;height:100%;margin:0;padding:4rem 1rem 3.2rem;font-size:.84rem;display:flex}.map-overlay{pointer-events:none;gap:.55rem;padding:.65rem;display:flex;position:absolute;left:0;right:0}.map-overlay-top{justify-content:space-between;align-items:flex-start;top:0}.map-overlay-bottom{align-items:flex-end;bottom:0}.map-overlay-left{justify-content:flex-start}.overlay-card{pointer-events:auto;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0f192ad6;border:1px solid #2f4670db;border-radius:12px}.map-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;padding:.45rem .55rem;display:flex}.map-controls{gap:.35rem;display:flex}.map-tool{border:1px solid var(--line);min-width:2.2rem;color:var(--ink);background:#14223a;border-radius:9px;padding:.36rem .62rem;font-size:.78rem;font-weight:700}.map-tool:disabled{opacity:.45}.map-zoom-value{text-align:right;min-width:2.8rem;font-family:var(--mono);color:var(--muted);margin:0;font-size:.75rem}.map-session{max-width:min(72vw,900px);padding:.3rem .44rem}.map-session-metrics{align-items:stretch;gap:.32rem;margin:0;display:flex;overflow:hidden}.map-session-metrics div{border:1px solid var(--line);background:#111d31e6;border-radius:9px;min-width:0;padding:.28rem .44rem}.map-session-metrics dt{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-size:.62rem}.map-session-metrics dd{font-family:var(--mono);white-space:nowrap;text-overflow:ellipsis;margin:.08rem 0 0;font-size:.7rem;line-height:1.15;overflow:hidden}.console-column{grid-template-rows:auto minmax(0,1fr);align-content:start;gap:.65rem;height:100%;min-height:0;display:grid;overflow:hidden}.compact-panel{padding:.72rem}.sidebar-menu{flex-wrap:wrap;align-items:center;gap:.34rem;padding:.5rem;display:flex}.sidebar-auth{align-items:center;gap:.35rem;margin-left:auto;display:flex}.sidebar-tab{border:1px solid var(--line);color:var(--ink);letter-spacing:.05em;text-transform:uppercase;background:#14223a;border-radius:999px;padding:.28rem .62rem;font-size:.71rem;font-weight:700}.sidebar-tab.is-active{border-color:var(--accent);color:#1f1200;background:linear-gradient(135deg, var(--accent), var(--accent-strong))}.sidebar-section{height:100%;min-height:0;display:none;overflow:auto}.sidebar-section.is-active{display:block}.sidebar-section.console-log-panel.is-active{display:flex}.sidebar-section[hidden]{display:none!important}.panel-head h2{font-size:.98rem}.panel-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0;font-size:.73rem}.probe-form{gap:.4rem;margin-top:.65rem;display:grid}label{color:var(--muted);font-size:.78rem}.row{flex-wrap:wrap;gap:.45rem;display:flex}input,button{font:inherit}input{border:1px solid var(--line);min-width:0;color:var(--ink);background:#121f35;border-radius:10px;flex:210px;padding:.55rem .68rem;font-size:.84rem}input:focus{outline-offset:1px;outline:2px solid #ffb45f99}button{color:#2f1a00;background:linear-gradient(135deg, var(--accent), var(--accent-strong));cursor:pointer;border:0;border-radius:10px;flex:none;padding:.55rem .75rem;font-size:.8rem;font-weight:700}button:disabled{opacity:.6;cursor:not-allowed}.metrics{grid-template-columns:1fr;gap:.4rem;margin:.62rem 0 0;display:grid}.metrics div{border:1px solid var(--line);background:#111d31;border-radius:10px;padding:.5rem .58rem}dt{color:var(--muted);font-size:.74rem}dd{font-family:var(--mono);word-break:break-word;margin:.16rem 0 0;font-size:.78rem}.payload{border:1px solid var(--line);white-space:pre-wrap;font-size:.74rem;font-family:var(--mono);color:#d8e0ed;background:#101a2c;border-radius:11px;margin:.6rem 0 0;padding:.68rem}.console-log-panel{flex-direction:column;min-height:0;display:flex}.quick-actions{flex-wrap:wrap;gap:.33rem;margin-top:.6rem;display:flex}.chip-action{color:var(--ink);border:1px solid var(--line);background:#14223a;padding:.28rem .6rem}.chip-action:hover{border-color:var(--accent);background:#1a2b49}.chip{border:1px solid var(--line);color:var(--ink);cursor:pointer;background:#14223a;border-radius:999px;padding:.27rem .56rem;font-size:.73rem;font-weight:600}.chip:hover{border-color:var(--accent);background:#1a2b49}.switches-meta{color:var(--muted);margin:.62rem 0 0;font-size:.75rem}.switches-hint{color:var(--muted);margin:.45rem 0 0;font-size:.68rem;line-height:1.35}.switch-group-form{flex-wrap:wrap;gap:.34rem;margin-top:.52rem;display:flex}.switch-group-form input{flex:170px;min-width:0}.switch-group-form .chip-action{padding-inline:.68rem}.profile-summary{color:var(--muted);margin:.62rem 0 0;font-size:.75rem}.profile-form{gap:.34rem;margin-top:.62rem;display:grid}.profile-actions{gap:.4rem;margin-top:.72rem;display:grid}.profile-actions button{width:100%}.profile-title{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0;font-size:.78rem}.profile-message{margin:.7rem 0 0;font-size:.75rem}.profile-message[data-state=success]{color:var(--ok)}.profile-message[data-state=error]{color:var(--error)}.profile-password-modal{z-index:140;place-items:center;padding:.9rem;display:grid;position:fixed;inset:0}.profile-password-modal[hidden]{display:none!important}.profile-password-modal-backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#070c16b8;position:absolute;inset:0}.profile-password-modal-card{z-index:1;width:min(460px,100%);padding:.78rem;position:relative}.profile-password-form{margin-top:0}.profile-password-message{margin:.08rem 0 .02rem;font-size:.75rem}.profile-password-message[data-state=success]{color:var(--ok)}.profile-password-message[data-state=error]{color:var(--error)}.profile-password-modal-actions{gap:.4rem;margin-top:.2rem;display:grid}.profile-password-modal-actions button{width:100%}.switches-list{gap:.46rem;margin-top:.52rem;display:grid}.switch-groups{gap:.42rem;margin-top:.55rem;display:grid}.switch-group-empty{border:1px dashed var(--line);color:var(--muted);border-radius:10px;margin:0;padding:.56rem;font-size:.72rem}.switch-group-row{border:1px solid var(--line);background:#111d31;border-radius:11px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.48rem;padding:.46rem .54rem;display:flex}.switch-group-row.group-all-on{background:linear-gradient(135deg,#63f0b31f,#111d31f5 55%);border-color:#63f0b36b}.switch-group-row.group-all-off{background:linear-gradient(135deg,#ff7b7b1f,#111d31f5 55%);border-color:#ff7b7b70}.switch-group-copy{min-width:0}.switch-group-title{align-items:center;gap:.38rem;min-width:0;display:flex}.group-status-dot{background:#6f809f;border:1px solid #ffffff59;border-radius:999px;flex:none;width:.62rem;height:.62rem}.group-status-dot.on{background:var(--ok)}.group-status-dot.off{background:var(--error)}.group-status-dot.mixed{background:var(--accent-strong)}.switch-group-copy h4{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:.76rem;line-height:1.2;overflow:hidden}.switch-group-copy p{color:var(--muted);font-size:.67rem;font-family:var(--mono);margin:.1rem 0 0}.switch-group-actions{gap:.32rem;margin-left:auto;display:flex}.switch-group-drop{transition:border-color .13s,box-shadow .13s,transform .13s}.switch-group-drop.drop-active{border-color:var(--accent);transform:translateY(-1px);box-shadow:0 0 0 1px #ffb45f66}.switch-group-row.ungrouped{border-style:dashed}.switch-empty{border:1px dashed var(--line);color:var(--muted);border-radius:10px;margin:0;padding:.62rem;font-size:.75rem}.switch-row{border:1px solid var(--line);background:#111d31;border-radius:12px;gap:.5rem;padding:.52rem .6rem;display:grid}.switch-row.draggable-switch{cursor:grab}.switch-row.draggable-switch.is-dragging{opacity:.45}.switch-heading{align-items:center;gap:.55rem;min-width:0;display:flex}.switch-copy{min-width:0}.switch-copy h4{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:.84rem;line-height:1.2;overflow:hidden}.switch-copy p{color:var(--muted);font-size:.7rem;font-family:var(--mono);margin:.14rem 0 0}.switch-group-line{margin-top:.22rem}.switch-dot{border:1px solid #ffffff59;border-radius:999px;flex:none;width:.72rem;height:.72rem}.switch-dot.on{background:var(--ok)}.switch-dot.off{background:var(--error)}.switch-dot.unknown{background:#6f809f}.switch-trailing{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.switch-value{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:.75rem;font-weight:700}.switch-actions{gap:.32rem;display:flex}.switch-readonly{border:1px solid var(--line);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);border-radius:999px;padding:.2rem .52rem;font-size:.67rem}.switch-btn{border:1px solid var(--line);color:var(--ink);background:#14223a;border-radius:8px;padding:.3rem .58rem;font-size:.72rem;line-height:1.1}.switch-btn.on{border-color:#63f0b366}.switch-btn.off{border-color:#ff7b7b73}.switch-group-row.group-all-on .switch-btn.on:disabled{color:#d9f8ea;background:#63f0b333;border-color:#63f0b39e}.switch-group-row.group-all-off .switch-btn.off:disabled{color:#ffe2e2;background:#ff7b7b33;border-color:#ff7b7b9e}.switch-context-menu{z-index:50;border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0e1828f5;border-radius:10px;gap:.2rem;min-width:140px;padding:.3rem;display:grid;position:fixed;box-shadow:0 10px 24px #00000059}.switch-context-menu[hidden]{display:none!important}.switch-context-item{color:var(--ink);text-align:left;background:#14223a;border:1px solid #0000;border-radius:7px;padding:.35rem .5rem;font-size:.74rem;font-weight:600}.switch-context-item:hover{border-color:var(--accent);background:#1a2b49}.console-output{min-height:180px;max-height:45dvh;overflow:auto}code{font-family:var(--mono);color:var(--ok);word-break:break-all}.animate-in{opacity:0;animation:.52s ease-out forwards rise;transform:translateY(14px)}.delay-1{animation-delay:.12s}.delay-2{animation-delay:.22s}.delay-3{animation-delay:.32s}@keyframes rise{to{opacity:1;transform:translateY(0)}}@media (width<=620px){.map-overlay{gap:.42rem;padding:.5rem}.map-overlay-top{flex-direction:column;align-items:stretch}.map-toolbar{width:fit-content}.map-overlay-bottom{align-items:stretch}.map-session{width:min(100%,92vw)}.map-session-metrics{grid-template-columns:1fr;gap:.24rem;display:grid}}@media (width>=540px){.profile-actions{grid-template-columns:1fr auto;align-items:center}.profile-actions button{width:auto}.profile-password-modal-actions{grid-template-columns:1fr 1fr}}@media (width>=960px){body{overflow:hidden}#app{height:100dvh}.site{grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr) clamp(260px,22vw,360px);gap:.75rem;height:100dvh;min-height:0;padding:.8rem}.map-stage{min-height:0;padding:.55rem}.map-frame{height:100%;min-height:0}.console-column{grid-template-rows:auto minmax(0,1fr);align-content:stretch;overflow:hidden}.console-log-panel{overflow:hidden}.console-output{flex:1;min-height:0;max-height:none}}
