:root{--bg: #f5f6f8;--surface: #ffffff;--surface-2: #eef0f3;--text: #16191d;--muted: #5b636e;--border: #d8dce2;--accent: #1f5fbf;--accent-text: #ffffff;--ok: #1d7a46;--warn: #9a6200;--danger: #b3261e;--focus: #1f5fbf55;--radius: 8px;color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: #111418;--surface: #1a1e24;--surface-2: #232830;--text: #e8eaee;--muted: #9aa3ae;--border: #2f3640;--accent: #6ea0f0;--accent-text: #0d1117;--ok: #5cc98b;--warn: #e0a84a;--danger: #f2817a;--focus: #6ea0f055;color-scheme:dark}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.45 system-ui,-apple-system,Segoe UI,sans-serif}a{color:var(--accent)}h1,h2,h3{line-height:1.2;margin:0 0 12px}h1{font-size:22px}h2{font-size:18px}h3{font-size:15px}.topbar{display:flex;align-items:center;gap:16px;padding:10px 16px;background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap}.brand{font-weight:700;letter-spacing:.02em}.topbar nav{display:flex;gap:4px;flex-wrap:wrap}.topbar nav a{padding:6px 10px;border-radius:var(--radius);text-decoration:none;color:var(--text)}.topbar nav a[aria-current=page]{background:var(--surface-2);font-weight:600}.spacer{flex:1}.who{color:var(--muted);font-size:14px}main{max-width:1100px;margin:0 auto;padding:16px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:16px}.grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:8px;border-bottom:1px solid var(--border);vertical-align:top}th{color:var(--muted);font-weight:600;font-size:13px}.table-wrap{overflow-x:auto}label{display:grid;gap:4px;font-size:13px;color:var(--muted)}input,select,button{font:inherit;color:var(--text)}input,select{padding:7px 9px;border:1px solid var(--border);border-radius:6px;background:var(--surface);min-width:0}input:focus-visible,select:focus-visible,button:focus-visible,a:focus-visible{outline:3px solid var(--focus);outline-offset:1px}button{padding:7px 12px;border-radius:6px;border:1px solid var(--border);background:var(--surface-2);cursor:pointer}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}button.danger{color:var(--danger)}button:disabled{opacity:.55;cursor:default}.form-row{display:flex;gap:10px;flex-wrap:wrap;align-items:end}.form-row>label{flex:1 1 160px}.check{display:flex;align-items:center;gap:6px;color:var(--text)}.pill{display:inline-block;padding:1px 8px;border-radius:999px;font-size:12px;background:var(--surface-2);border:1px solid var(--border);margin:0 4px 4px 0;white-space:nowrap}.pill.ok{color:var(--ok)}.pill.warn{color:var(--warn)}.pill.danger{color:var(--danger)}.muted{color:var(--muted)}.mono{font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:13px}td.mono{white-space:nowrap}.error{color:var(--danger);margin:8px 0}.notice{color:var(--ok);margin:8px 0}.tabs{display:flex;gap:4px;margin-bottom:16px;flex-wrap:wrap}.tabs button[aria-selected=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.login{max-width:380px;margin:10vh auto}.login form{display:grid;gap:12px}.row-actions{display:flex;gap:6px;flex-wrap:wrap}.shell{display:flex;flex-direction:column;height:100dvh}.shell>.topbar{flex:none}main.wide{max-width:none;margin:0;width:100%;padding:0;flex:1;min-height:0}.console{display:flex;flex-direction:column;height:100%;min-height:0}.console-toolbar{display:flex;align-items:center;gap:12px;padding:8px 16px;border-bottom:1px solid var(--border);flex-wrap:wrap}.console-toolbar .pill{margin:0}label.inline{display:flex;align-items:center;gap:6px}.seg{display:inline-flex}.seg button{border-radius:0;padding:5px 10px}.seg button:first-child{border-radius:6px 0 0 6px}.seg button:last-child{border-radius:0 6px 6px 0}.seg button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.console-grid{flex:1;min-height:0;display:grid}.console-tabs{flex:1;min-height:0;display:flex;flex-direction:column;padding:8px 16px 0}.console-tabs .tabs{margin-bottom:8px}.console-tabs .pane{flex:1;border:1px solid var(--border);border-radius:var(--radius)}.pane{display:flex;flex-direction:column;min-height:0;min-width:0;border-left:1px solid var(--border)}.console-grid>.pane:first-child{border-left:0}.pane-head{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--border);background:var(--surface)}.pane-head h2{margin:0;font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);flex:1}.pane-body{flex:1;min-height:0;overflow:auto;padding:12px}.splitter{cursor:col-resize;background:var(--border);touch-action:none}.splitter:hover,.splitter:focus-visible{background:var(--accent);outline:none}.picker{position:relative;font-size:13px}.picker summary{cursor:pointer;color:var(--accent)}.picker-list{position:absolute;right:0;z-index:5;min-width:220px;max-height:50vh;overflow:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px;box-shadow:0 6px 20px #0003;display:grid;gap:6px}.tiles{--tile-min: 220px;display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(var(--tile-min),1fr));align-content:start;min-height:100%}.tiles.size-s{--tile-min: 160px}.tiles.size-l{--tile-min: 300px}.tile{background:var(--surface);border:1px solid var(--border);border-left:5px solid var(--border);border-radius:var(--radius);padding:10px 12px;display:grid;gap:6px;cursor:grab}.tile header{display:flex;align-items:center;gap:8px}.tile h3{margin:0;flex:1;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tile .owner{font-size:12px;color:var(--muted)}.tile .activity{min-height:1.45em;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tile footer{display:flex;gap:6px;flex-wrap:wrap}.tile footer button{padding:4px 9px;font-size:13px}.tile footer button[aria-pressed=true]:not(.primary){border-color:var(--ok);color:var(--ok)}.tiles.size-s .tile footer button{padding:3px 7px;font-size:12px}.tiles.size-l .tile h3{font-size:18px}.tiles.size-l .tile .activity{font-size:16px}.tile.target{border-left-color:var(--accent)}.tile.rx{border-color:var(--ok);border-left-color:var(--ok);box-shadow:0 0 0 1px var(--ok) inset}.tile.tx{border-color:var(--danger);border-left-color:var(--danger);box-shadow:0 0 0 1px var(--danger) inset}.tile.off{opacity:.7}.state{font-size:11px;font-weight:700;letter-spacing:.06em;padding:1px 7px;border-radius:4px;background:var(--surface-2);color:var(--muted)}.state.rx{background:var(--ok);color:var(--surface)}.state.tx{background:var(--danger);color:var(--surface)}.logpanel{display:grid;gap:16px}.logpanel h3{font-size:13px;color:var(--muted);margin-bottom:0}.logpanel textarea{width:100%;font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:8px;resize:vertical;margin-bottom:6px}.logpanel textarea:focus-visible{outline:3px solid var(--focus)}.draft-note{font-size:12px;color:var(--warn);margin-bottom:6px}.logpanel ol{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:4px;font-size:14px}.logpanel li{padding:4px 6px;border-radius:4px;background:var(--surface);border:1px solid var(--border)}.txlog li.live{border-color:var(--ok)}.txlog li.denied{color:var(--muted)}button.link{border:0;background:none;color:var(--accent);padding:0 4px;font-size:13px;float:right}.situation{display:grid;gap:10px}.placeholder{border:1px dashed var(--border);border-radius:var(--radius);padding:24px 12px;text-align:center;color:var(--muted)}.pttbar{display:flex;align-items:center;gap:16px;padding:10px 16px;border-top:1px solid var(--border);background:var(--surface);flex-wrap:wrap}.ptt{display:grid;min-width:240px;padding:10px 20px;border-radius:10px;border:2px solid var(--accent);background:var(--surface-2);text-align:left;-webkit-user-select:none;user-select:none;touch-action:none}.ptt-label{font-weight:800;letter-spacing:.08em}.ptt-target{font-size:13px;color:var(--muted)}.pttbar.requesting .ptt{border-color:var(--warn)}.pttbar.granted .ptt{background:var(--danger);border-color:var(--danger);color:var(--surface)}.pttbar.granted .ptt-target{color:var(--surface)}.pttbar.denied .ptt{border-color:var(--danger)}.ptt-status{font-weight:600}.pttbar.denied .ptt-status,.pttbar.granted .ptt-status{color:var(--danger)}@media(max-width:600px){.ptt{flex:1;min-width:0}}.picker-row{display:flex;align-items:center;gap:4px}.picker-row .check{flex:1}.picker-row button{padding:1px 8px}.tiles.stack{grid-template-columns:minmax(0,1fr);gap:6px}.tiles.stack .tile{grid-template-columns:minmax(150px,1fr) minmax(0,2fr) auto;align-items:center;column-gap:14px;row-gap:0;padding:6px 12px}.tiles.stack .tile header{grid-column:1}.tiles.stack .tile .owner{grid-column:1}.tiles.stack .tile .activity{grid-column:2;grid-row:1 / span 2}.tiles.stack .tile footer{grid-column:3;grid-row:1 / span 2;flex-wrap:nowrap}@media(max-width:600px){.tiles.stack .tile{grid-template-columns:minmax(0,1fr) auto}.tiles.stack .tile .activity{grid-column:1;grid-row:auto}.tiles.stack .tile footer{grid-column:2;grid-row:1 / span 3}}.console-grid{display:flex}.layout-col{display:flex;flex-direction:column;min-width:0;min-height:0}.layout-cell{display:flex;flex-direction:column;min-height:80px}.layout-cell>.pane{flex:1;border-left:0}.splitter.col{flex:0 0 6px}.splitter.row{flex:0 0 6px;cursor:row-resize}.pane.editing{outline:2px dashed var(--accent);outline-offset:-3px}.pane-edit{display:inline-flex;gap:4px}.pane-edit button{padding:1px 8px}.layout-editbar{display:flex;align-items:center;gap:8px;padding:8px 16px;border-bottom:1px solid var(--border);background:var(--surface-2);flex-wrap:wrap;font-size:13px}.layout-editbar input{width:180px}ol.txlog{list-style:none;margin:0;padding:0;display:grid;gap:4px;font-size:14px}ol.txlog li{padding:4px 6px;border-radius:4px;background:var(--surface);border:1px solid var(--border)}.incident-log{display:grid;gap:8px}.incident-bar,.incident-new{display:flex;gap:6px;flex-wrap:wrap}.incident-bar select,.incident-new input{flex:1 1 180px}.brand{text-transform:uppercase;font-weight:800;letter-spacing:.04em}.brand-accent{color:#2fa4ff}.login-page{--login-navy: #07111f;--login-slate: #13213a;--login-line: #ffffff1f;--login-text: #e8eef7;--login-muted: #9fb0c6;--logo-blue: #2fa4ff;max-width:none;margin:0;min-height:100dvh;padding:16px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:20px;background:var(--login-navy);color:var(--login-text)}.login-stack{width:100%;max-width:640px;display:flex;flex-direction:column;align-items:center;gap:16px}.login-banner{display:block;width:100%;max-height:min(30dvh,240px);object-fit:contain;height:auto;border-radius:var(--radius)}.login-page .card.login{width:100%;max-width:380px;margin:0;background:var(--login-slate);border:1px solid var(--login-line);border-radius:12px;box-shadow:0 10px 30px #0008;color:var(--login-text)}.login-page .card.login .muted,.login-page .card.login label{color:var(--login-muted)}.login-page .card.login input{background:var(--login-navy);border-color:var(--login-line);color:var(--login-text)}.login-page .card.login button.primary{background:var(--logo-blue);border-color:var(--logo-blue);color:#04121f}.login-page .card.login button.primary:hover:not(:disabled){filter:brightness(1.08)}.login-page .error{color:#ff8f87}.login-footer{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;font-size:13px;color:var(--login-muted)}.login-footer a{color:var(--logo-blue)}.grant-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:6px}body.radio-mode .shell>.topbar{display:none}.radio{--tx: var(--danger);--rx: var(--ok);height:100%;min-height:0;display:flex;flex-direction:column;gap:10px;padding:max(10px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left));overflow-y:auto;-webkit-tap-highlight-color:transparent}.radio-top{display:flex;align-items:center;gap:10px}.radio-top .brand{flex:1;font-size:18px}.radio-link{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600}.radio-link .dot{width:10px;height:10px;border-radius:50%;background:var(--warn)}.radio-link.ok .dot{background:var(--ok)}.radio-link.bad{color:var(--warn)}.radio-icon{min-width:44px;min-height:44px;font-size:22px;line-height:1;padding:0 10px}.radio-operator{font-size:15px}.radio-detail{font-size:13px;color:var(--warn);margin-top:2px}.radio-channel{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:10px;display:grid;gap:10px}.radio-channel>*{min-width:0}.radio-select{display:flex;gap:6px;align-items:center;min-width:0}.radio-select select{flex:1 1 0;width:0;min-width:0;text-overflow:ellipsis;min-height:48px;font-size:18px;font-weight:700}.radio-state{display:flex;align-items:center;gap:10px;min-height:28px}.radio-badge{font-size:12px;font-weight:800;letter-spacing:.08em;padding:3px 8px;border-radius:6px;background:var(--surface-2);color:var(--muted);white-space:nowrap}.radio-state.tx .radio-badge,.radio-state.keying .radio-badge{background:var(--tx);color:var(--surface)}.radio-state.rx .radio-badge{background:var(--rx);color:var(--surface)}.radio-speaker{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.radio-ptt-area{flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px}.radio-ptt{width:clamp(160px,min(70vw,44dvh),300px);aspect-ratio:1;border-radius:50%;border:6px solid var(--accent);background:var(--surface-2);display:grid;place-content:center;gap:4px;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.radio-ptt-label{font-size:30px;font-weight:900;letter-spacing:.08em}.radio-ptt-tg{font-size:14px;color:var(--muted);max-width:min(220px,60vw);margin:0 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.radio-ptt.keying{border-color:var(--warn)}.radio-ptt.tx{background:var(--tx);border-color:var(--tx);color:var(--surface);box-shadow:0 0 0 10px color-mix(in srgb,var(--tx) 25%,transparent)}.radio-ptt.tx .radio-ptt-tg{color:var(--surface)}.radio-ptt.busy{border-color:var(--rx)}.radio-ptt:disabled{opacity:.45}.radio-status{font-size:16px;font-weight:600;text-align:center;min-height:1.4em}.radio-status.bad{color:var(--danger)}.radio-others h2{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 6px}.radio-others ul{list-style:none;margin:0;padding:0;display:flex;gap:6px;overflow-x:auto}.radio-others li{flex:none;display:grid;padding:6px 10px;border-radius:8px;background:var(--surface);border:1px solid var(--border);font-size:13px;max-width:60vw}.radio-others li.rx{border-color:var(--rx);box-shadow:0 0 0 1px var(--rx) inset}.radio-others .name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.radio-sheet{position:fixed;left:0;right:0;bottom:0;z-index:20;background:var(--surface);border-top:1px solid var(--border);border-radius:16px 16px 0 0;box-shadow:0 -10px 30px #0006;padding:16px max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));display:grid;gap:14px}.radio-sheet .check{min-height:44px;font-size:16px}.radio-sheet-actions{display:flex;gap:8px;flex-wrap:wrap}.radio-sheet-actions button{flex:1;min-height:44px}@media(orientation:landscape)and (max-height:540px){.radio{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto 1fr auto;column-gap:16px}.radio-top,.radio-operator,.radio-channel,.radio-others{grid-column:1}.radio-ptt-area{grid-column:2;grid-row:1 / span 4}.radio-ptt{width:clamp(140px,62dvh,260px)}}.radio-others li{padding:0}.radio-others li button{display:grid;text-align:left;gap:1px;padding:6px 10px;min-height:44px;border:0;background:none;border-radius:8px;max-width:60vw}.radio-others li.off{opacity:.6}.radio-others ul{scroll-behavior:smooth}.radio-channel{grid-template-columns:minmax(0,1fr)}.radio-state .radio-speaker{flex:1;min-width:0}.radio-mute{font-size:20px}.radio-mute.on{border-color:var(--warn);background:color-mix(in srgb,var(--warn) 18%,var(--surface-2))}.radio-ptt-muted{font-size:13px;font-weight:700;color:var(--warn)}
