:root{
  --bg:#050d19;--bg2:#071426;--panel:#0a1728cc;--panel2:#0c1d31;
  --line:#163b5f;--line2:#1e567f;--text:#e9f7ff;--muted:#7fa5bd;
  --cyan:#2bd3ff;--cyan2:#78edff;--green:#6df7b5;--amber:#ffd56a;
  --red:#ff6680;--sidebar:238px;
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:
 radial-gradient(circle at 70% 10%,#0b335033,transparent 28%),
 radial-gradient(circle at 15% 85%,#0c2d5738,transparent 24%),
 linear-gradient(160deg,var(--bg),#030811 78%);color:var(--text);
 font:14px/1.45 Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;min-height:100vh}
body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.16;background-image:
 linear-gradient(#1c628722 1px,transparent 1px),linear-gradient(90deg,#1c628722 1px,transparent 1px);
 background-size:34px 34px;mask-image:linear-gradient(to bottom,#000,transparent 78%)}
button,select,input{font:inherit}.app{min-height:100vh}.sidebar{position:fixed;z-index:30;left:0;top:0;bottom:0;width:var(--sidebar);
 background:#06111fee;border-right:1px solid #123753;padding:22px 15px;backdrop-filter:blur(18px)}
.brand{display:flex;gap:12px;align-items:center;padding:4px 6px 24px;border-bottom:1px solid #11334d}
.brand-mark{width:43px;height:43px;border:1px solid var(--cyan);border-radius:50%;display:grid;place-items:center;
 color:var(--cyan2);font-weight:900;box-shadow:0 0 26px #2bd3ff33,inset 0 0 16px #2bd3ff16}
.brand b,.brand span,.brand small{display:block}.brand b{font-size:20px;letter-spacing:1.2px}.brand span{font-size:10px;color:var(--cyan);letter-spacing:1.8px}.brand small{font-size:9px;color:#5e859e;margin-top:2px}
nav{display:grid;gap:5px;margin-top:20px}.nav{border:0;background:transparent;color:#7ea5bd;text-align:left;padding:11px 12px;border-radius:9px;cursor:pointer}
.nav:hover,.nav.active{color:#eaffff;background:#0d2940;box-shadow:inset 2px 0 var(--cyan)}.nav i{float:right;font-size:8px;color:#55788c;font-style:normal}
.sidebar-foot{position:absolute;left:21px;right:21px;bottom:20px;color:#6b93aa}.sidebar-foot>div{display:flex;align-items:center;gap:8px}.sidebar-foot small{display:block;margin-top:5px}
.dot{width:8px;height:8px;border-radius:50%;background:#31566c}.dot.on{background:var(--green);box-shadow:0 0 12px #6df7b5}
main{margin-left:var(--sidebar);min-width:0}header{height:62px;border-bottom:1px solid #10334e;background:#06111fa8;backdrop-filter:blur(14px);
 display:flex;align-items:center;padding:0 28px;position:sticky;top:0;z-index:20}.crumb{color:#739bb2}.crumb span{padding:0 7px;color:#315873}.crumb b{color:#dff8ff}.head-actions{margin-left:auto;display:flex;gap:9px;align-items:center}
.readonly,.badge{border:1px solid #1b5479;background:#082238;padding:5px 9px;border-radius:20px;font-size:9px;letter-spacing:.9px;color:#8bdfff}
.alpha{border-color:#5a536d;color:#c6a8ff;background:#1c1631}select,input{background:#07192a;color:#ccecf7;border:1px solid #1a4564;border-radius:8px;padding:7px 9px}
#menu{display:none;background:none;color:white;border:0;font-size:20px}.page{padding:28px;max-width:1680px;margin:auto}.hero{display:flex;justify-content:space-between;align-items:end;padding:20px 2px 25px}
.eyebrow{color:var(--cyan);font-size:10px;letter-spacing:1.7px}.hero h1{font-size:34px;margin:6px 0 4px;letter-spacing:-1px}.hero p{margin:0;color:var(--muted)}
.hero-state{display:flex;align-items:center;gap:10px;border:1px solid #184567;border-radius:13px;padding:10px 14px;background:#081a2b}.hero-state small{display:block;color:#6c95aa;font-size:8px}.hero-state strong{color:var(--green)}
.pulse-dot,.live-pulse{width:10px;height:10px;border-radius:50%;background:var(--green);box-shadow:0 0 0 0 #6df7b577;animation:pulse 1.7s infinite}
@keyframes pulse{70%{box-shadow:0 0 0 9px #6df7b500}100%{box-shadow:0 0 0 0 #6df7b500}}
.gauges{display:grid;grid-template-columns:repeat(6,minmax(130px,1fr));gap:13px}.gauge-card{background:linear-gradient(180deg,#0a1b2dce,#07121fce);border:1px solid #143d5c;border-radius:15px;padding:16px;text-align:center;box-shadow:0 12px 45px #0004}
.ring{--v:72;--ring:var(--cyan);width:105px;height:105px;margin:auto;border-radius:50%;display:grid;place-items:center;
 background:conic-gradient(var(--ring) calc(var(--v)*1%),#11293c 0);position:relative;filter:drop-shadow(0 0 8px #2bd3ff22)}
.ring:before{content:"";position:absolute;inset:8px;background:#071523;border-radius:50%;box-shadow:inset 0 0 22px #02060a}
.ring>div{position:relative;z-index:1}.ring strong,.ring small{display:block}.ring strong{font-size:22px}.ring small{font-size:8px;color:#78a3b9;letter-spacing:1px}.gauge-card p{margin:10px 0 0;color:#6f98ae;font-size:11px}
.protocols{display:grid;grid-template-columns:repeat(3,1fr);gap:13px;margin-top:13px}.protocols article{background:linear-gradient(120deg,#0b1a2b,#091726);border:1px solid #153e5e;border-radius:14px;padding:14px 16px;display:flex;align-items:center;gap:13px;position:relative}
.proto-icon{width:49px;height:49px;border-radius:50%;display:grid;place-items:center;border:1px solid #1b587e;color:var(--cyan2);font-weight:900;background:#071827;box-shadow:inset 0 0 18px #2bd3ff15}
.proto-icon.nxdn{color:#8db5ff}.proto-icon.m17{color:#9bffda;font-size:11px}.protocols small,.protocols b,.protocols p{display:block;margin:0}.protocols small{font-size:9px;color:#6991a7}.protocols b{font-size:15px}.protocols p{color:#78a3b9;margin-top:3px;font-size:11px}.state{position:absolute;right:13px;top:13px;width:7px;height:7px;border-radius:50%}.state.on{background:var(--green);box-shadow:0 0 10px #6df7b5}
.grid.two{display:grid;grid-template-columns:1.12fr .88fr;gap:13px;margin-top:13px}.panel{background:linear-gradient(180deg,#0a1829e8,#07121fe8);border:1px solid #153d5c;border-radius:15px;margin-top:13px;overflow:hidden;box-shadow:0 14px 48px #0003}
.grid.two>.panel{margin-top:0}.panel-head{min-height:57px;padding:12px 16px;border-bottom:1px solid #123651;display:flex;align-items:center;justify-content:space-between}.panel-head small{font-size:8px;letter-spacing:1.3px;color:#53809a}.panel-head h2{font-size:15px;margin:2px 0}.filters{display:flex;gap:7px}
.orbit{height:310px;position:relative;overflow:hidden;background:radial-gradient(circle at center,#0f49614b,transparent 18%,transparent),linear-gradient(#06111c,#050e18)}
.orbit-line{position:absolute;border:1px solid #1b526f66;border-radius:50%;left:50%;top:50%;transform:translate(-50%,-50%)}.o1{width:300px;height:180px}.o2{width:480px;height:280px}
.core{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:100px;height:100px;border-radius:50%;display:grid;place-content:center;text-align:center;border:1px solid var(--cyan);background:#082239;box-shadow:0 0 35px #2bd3ff44,inset 0 0 24px #2bd3ff17}
.core strong{font-size:16px}.core small{font-size:8px;color:#6fa0b7}.core i{position:absolute;inset:-8px;border:1px solid #2bd3ff33;border-radius:50%;animation:spin 8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.orbit-node{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);min-width:66px;padding:6px 8px;border:1px solid #235779;background:#071b2c;border-radius:9px;text-align:center;font-size:9px;color:#b8eafb;box-shadow:0 0 15px #0008}
.orbit-node b,.orbit-node small{display:block}.orbit-node small{color:#5f8fa8;font-size:7px}
#liveRows{padding:10px 14px}.empty{min-height:250px;display:grid;place-items:center;color:#5d849b}.live-row{display:grid;grid-template-columns:76px 50px 1fr 1fr 1fr 62px;gap:7px;border-bottom:1px solid #12334c;padding:10px 3px;align-items:center}.live-row:first-child{color:#dffaff}.live-row div:nth-child(2){color:var(--green)}
.table{overflow:auto}table{width:100%;border-collapse:collapse;min-width:760px}th,td{text-align:left;padding:10px 13px;border-bottom:1px solid #102f47}th{font-size:9px;color:#5f8ca5;letter-spacing:.6px}td{font-size:12px;color:#a9cbdc}.tag{border:1px solid #1a5574;border-radius:12px;padding:2px 6px;font-size:9px}
.services{padding:12px 16px;display:grid;gap:4px}.service{display:flex;align-items:center;gap:18px;padding:7px 2px;border-bottom:1px solid #102d43}.service b{font-size:10px}.service b.online{color:var(--green)}.service b.offline{color:var(--red)}
.quality{padding:14px 16px;display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.quality>div{background:#071827;border:1px solid #143d5a;border-radius:10px;padding:10px}.quality small,.quality strong{display:block}.quality small{font-size:8px;color:#6d95aa}.quality strong{font-size:20px}.quality ul{grid-column:1/-1;color:#7198ae;margin:4px 0 0;padding-left:18px;font-size:11px}
.admin-preview{display:flex;gap:18px;align-items:center;padding:18px}.admin-lock{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;border:1px solid #584c76;color:#c9aaff;background:#171129}.admin-preview h2{margin:2px 0}.admin-preview p{color:#789bb0;margin:3px 0}.admin-preview button{margin-left:auto;padding:9px 13px;border-radius:9px;border:1px solid #31485e;background:#111b26;color:#617b8b}
footer{padding:18px 28px 28px;color:#456e86;font-size:10px}
@media(max-width:1150px){.gauges{grid-template-columns:repeat(3,1fr)}.grid.two{grid-template-columns:1fr}}
@media(max-width:760px){:root{--sidebar:0px}.sidebar{transform:translateX(-100%);width:238px;transition:.2s}.sidebar.open{transform:none}main{margin-left:0}#menu{display:block}.crumb{display:none}.page{padding:15px}.hero{align-items:start;gap:15px}.hero h1{font-size:27px}.gauges{grid-template-columns:repeat(2,1fr)}.protocols{grid-template-columns:1fr}.readonly{display:none}.live-row{grid-template-columns:64px 45px 1fr}.live-row div:nth-child(n+4){display:none}.filters{flex-wrap:wrap}.admin-preview{align-items:flex-start}.admin-preview button{display:none}}

/* === V7 Alpha 2 Admin/NOC === */
.hidden{display:none!important}.admin-zone{overflow:visible}.admin-badge{font-size:9px;letter-spacing:1px;padding:5px 9px;border-radius:14px;border:1px solid #5a536d;color:#c6a8ff;background:#1c1631}
.admin-badge.online{color:var(--green);border-color:#2f7b61;background:#0d2c25}.admin-login{display:flex;align-items:center;gap:15px;padding:18px}.admin-login>div:nth-child(2){flex:1}.admin-login b{font-size:15px}.admin-login p{margin:3px 0;color:#7198ae}.admin-login form{display:flex;gap:8px}.admin-login button,.admin-console button{background:#0b3651;border:1px solid #24729a;color:#dff9ff;border-radius:8px;padding:8px 11px;cursor:pointer}.admin-login button:hover,.admin-console button:hover{border-color:var(--cyan);box-shadow:0 0 15px #2bd3ff20}
.admin-login #adminLoginMsg{font-size:10px;color:var(--red);min-width:90px}.admin-console{padding:14px}.admin-toolbar{display:flex;align-items:center;gap:8px;padding:5px 3px 14px}.admin-toolbar>div{display:flex;align-items:center;gap:8px}.admin-toolbar small{color:#608ba3}.admin-toolbar button:first-of-type{margin-left:auto}.ghost{background:#091c2b!important;border-color:#1b4e6c!important}.danger-soft{background:#2a121c!important;border-color:#713247!important;color:#ff9bac!important}
.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.admin-card{background:#071522;border:1px solid #153d5b;border-radius:12px;padding:13px;min-width:0}.admin-card.span2{grid-column:1/-1}.admin-card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.admin-card-head small{font-size:8px;color:#547f98;letter-spacing:1.1px}.admin-card-head h3{font-size:14px;margin:1px 0}.admin-card-head>span{font-size:9px;color:#628da5}
.admin-services{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.admin-service{border:1px solid #123a56;background:#081927;border-radius:9px;padding:10px;display:grid;grid-template-columns:1fr auto;gap:4px 8px;align-items:center}.admin-service small{grid-column:1/-1;color:#5f8ca4}.admin-service .ok{color:var(--green)}.admin-service .bad{color:var(--red)}.admin-service button{font-size:9px;padding:4px 7px}
.metric-list{display:grid;gap:7px;margin-bottom:10px}.metric{display:grid;grid-template-columns:1fr auto;gap:12px;padding:8px 0;border-bottom:1px solid #102d43}.metric span{color:#7099af}.metric b{font-size:11px}.metric b.ok{color:var(--green)}.metric b.warn{color:var(--amber)}.wide{width:100%}.sim-form,.rule-form{display:grid;grid-template-columns:1fr 70px 90px;gap:7px}.rule-form{grid-template-columns:1fr 105px}
.button-row{display:flex;gap:7px;margin-top:8px}.button-row button{flex:1}.mini-state{border:1px solid #31506a;border-radius:12px;padding:3px 7px}.mini-state.on{border-color:#2f7b61;color:var(--green);background:#0c2b24}
.admin-card pre{white-space:pre-wrap;word-break:break-word;background:#040b12;border:1px solid #102f45;border-radius:8px;padding:9px;max-height:230px;overflow:auto;color:#8bb2c6;font:10px/1.45 ui-monospace,SFMono-Regular,Menlo,monospace}.rules-list{display:grid;gap:6px;margin-top:9px}.rule-row{display:grid;grid-template-columns:1fr auto auto;gap:7px;align-items:center;border-top:1px solid #102e44;padding-top:7px}.rule-row small{display:block;color:#668fa5}.rule-row button{font-size:9px;padding:4px 7px}.inline-controls{display:flex;gap:6px}.inline-controls select{max-width:230px}.audit-rows{display:grid;gap:4px}.audit-row{display:grid;grid-template-columns:150px 90px 65px 1fr;gap:8px;border-bottom:1px solid #102c42;padding:6px 0;font-size:10px}.audit-row .yes{color:var(--green)}.audit-row .no{color:var(--red)}
@media(max-width:900px){.admin-grid{grid-template-columns:1fr}.admin-card.span2{grid-column:auto}.admin-services{grid-template-columns:1fr 1fr}.admin-login{align-items:flex-start;flex-wrap:wrap}.admin-login form{width:100%}.admin-login form input{flex:1}}
@media(max-width:600px){.admin-services{grid-template-columns:1fr}.audit-row{grid-template-columns:1fr 70px}.audit-row span:nth-child(4){grid-column:1/-1}.sim-form,.rule-form{grid-template-columns:1fr}.admin-toolbar{flex-wrap:wrap}}

/* === V7 Alpha 2.1 — roomier admin controls === */
.admin-grid{gap:14px}
.admin-card{padding:15px}
.admin-card-head{margin-bottom:12px}
.admin-console button{
  min-height:36px;
  padding:8px 14px;
  line-height:1.15;
  white-space:nowrap;
}
.admin-toolbar{gap:10px}
.admin-toolbar button{min-width:104px}
.admin-services{gap:9px}
.admin-service{
  grid-template-columns:minmax(0,1fr) auto;
  gap:5px 10px;
  padding:11px 12px;
}
.admin-service>small{grid-column:1/-1}
.admin-service>button{
  grid-column:1/-1;
  width:100%;
  min-height:33px;
  margin-top:4px;
}
.sim-form{
  grid-template-columns:minmax(150px,1fr) 86px 108px;
  gap:9px;
}
.button-row{gap:9px;margin-top:10px}
.button-row button{min-height:38px}
.rule-form{
  display:grid;
  grid-template-columns:repeat(12,minmax(0,1fr));
  gap:9px;
}
.rule-form>*:nth-child(1){grid-column:span 6}
.rule-form>*:nth-child(2){grid-column:span 3}
.rule-form>*:nth-child(5){grid-column:span 3}
.rule-form>*:nth-child(3){grid-column:span 8}
.rule-form>*:nth-child(4){grid-column:span 4}
#ruleSave{margin-top:10px;min-height:38px}
.rule-row{
  grid-template-columns:minmax(0,1fr) 84px 42px;
  gap:9px;
}
.rule-row button{min-width:0!important;width:100%}
.inline-controls{gap:9px}
.inline-controls button{min-width:96px}
.active-rule{
  margin:12px 14px 0;
  padding:9px 11px;
  border:1px solid #1f6f8f;
  border-radius:9px;
  background:#08243a;
  color:#a7eaff;
  font-size:11px;
}
.active-rule b{color:#e9fbff}
.active-rule button{
  float:right;
  border:0;
  background:transparent;
  color:#86b8cd;
  cursor:pointer;
  padding:0 3px;
}
@media(max-width:1000px){
  .admin-services{grid-template-columns:1fr 1fr}
  .rule-form>*{grid-column:1/-1!important}
}
@media(max-width:620px){
  .admin-services{grid-template-columns:1fr}
  .sim-form{grid-template-columns:1fr}
  .admin-toolbar button{min-width:0}
  .inline-controls{width:100%;flex-wrap:wrap}
  .inline-controls select{max-width:none;flex:1}
}

/* === V7 Alpha 2.4 Synthetic History LAB === */
.lab-divider{
  height:1px;
  background:#12354d;
  margin:14px 0;
}
.admin-card-head.compact{margin-bottom:6px}
.lab-help{
  margin:0 0 10px;
  color:#6d95aa;
  font-size:10px;
}
.history-test-form{
  display:grid;
  grid-template-columns:minmax(130px,1fr) 105px minmax(150px,1fr) 92px;
  gap:8px;
}
.synthetic-history-list{
  display:grid;
  gap:6px;
  margin-top:10px;
}
.synthetic-history-row{
  display:grid;
  grid-template-columns:82px 90px minmax(100px,1fr) 72px 42px;
  gap:8px;
  align-items:center;
  border-top:1px solid #102f45;
  padding-top:7px;
  color:#83aec2;
  font-size:10px;
}
.synthetic-history-row b{color:#e7fbff}
.synthetic-history-row .sim-tag{
  display:inline-block;
  width:max-content;
  padding:2px 6px;
  border:1px solid #6d4f87;
  border-radius:10px;
  color:#d5b7ff;
  background:#1a1126;
  font-size:8px;
}
.synthetic-history-row button{
  min-width:0!important;
  padding:4px 7px!important;
  min-height:28px!important;
}
tr.synthetic-event td{
  background:#15102355;
}
tr.synthetic-event td:first-child{
  box-shadow:inset 3px 0 #ad78ff;
}
.tag.sim{
  border-color:#755195;
  color:#d9b8ff;
  background:#1b1228;
}
@media(max-width:800px){
  .history-test-form{grid-template-columns:1fr 1fr}
  .synthetic-history-row{grid-template-columns:70px 80px 1fr 38px}
  .synthetic-history-row span:nth-child(4){display:none}
}
@media(max-width:520px){
  .history-test-form{grid-template-columns:1fr}
}

/* === V7 RC1 — Network Pulse / NOC === */
.onair-strip{
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto auto;
  gap:12px;
  align-items:center;
  margin-bottom:13px;
  padding:11px 14px;
  border:1px solid #174563;
  border-radius:13px;
  background:linear-gradient(90deg,#071827,#091b2d);
  box-shadow:0 10px 32px #0003;
}
.onair-icon{width:31px;height:31px;border-radius:50%;display:grid;place-items:center;background:#082236;border:1px solid #1c5877}
.onair-strip.idle .onair-icon .pulse-dot{animation:none;background:#4f7488;box-shadow:none}
.onair-main{display:flex;align-items:baseline;gap:9px;min-width:0}
.onair-main small{font-size:8px;letter-spacing:1px;color:#5e8aa3}
.onair-main strong{font-size:15px;color:#ecfbff}
.onair-main span{color:#74a0b7;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.onair-timer{font:700 16px ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--green)}
.connect-jump{border:1px solid #1e6686;background:#09263a;color:#a7e9ff;border-radius:9px;padding:7px 10px;cursor:pointer;font-size:9px;letter-spacing:.5px}

.public-insight{align-items:stretch}
.today-chips{display:flex;gap:6px}.today-chips span{border:1px solid #17405d;background:#071a29;border-radius:12px;padding:4px 7px;font-size:8px;color:#6c96ad}.today-chips b{color:#dffaff}
.activity24{height:185px;padding:16px 14px 8px;display:grid;grid-template-columns:repeat(24,1fr);gap:3px;align-items:end}
.hour-stack{height:100%;display:flex;flex-direction:column-reverse;gap:1px;justify-content:flex-start;position:relative}
.hour-stack i{display:block;border-radius:2px 2px 0 0;min-height:1px}
.hour-stack i.dstar{background:#2bd3ff}
.hour-stack i.nxdn{background:#809dff}
.hour-stack i.m17{background:#6df7b5}
.hour-stack:hover:after{content:attr(data-label);position:absolute;bottom:100%;left:50%;transform:translateX(-50%);background:#02080e;border:1px solid #1b526f;padding:4px 6px;border-radius:6px;font-size:8px;white-space:nowrap;z-index:5}
.activity-legend{display:flex;gap:14px;padding:0 14px 12px;color:#668fa6;font-size:9px}.activity-legend span:before{content:"●";margin-right:5px}.activity-legend span:nth-child(1):before{color:#2bd3ff}.activity-legend span:nth-child(2):before{color:#809dff}.activity-legend span:nth-child(3):before{color:#6df7b5}
.last-heard-mini{padding:6px 14px 10px;display:grid;gap:2px}.lh-mini-row{display:grid;grid-template-columns:80px 66px minmax(90px,1fr) minmax(90px,1fr) 60px;gap:7px;padding:8px 2px;border-bottom:1px solid #102e45;align-items:center;font-size:10px}.lh-mini-row time{color:#587e95}.lh-mini-row b{color:#e4f9ff}.lh-mini-row span{color:#7199ae}.lh-mini-row .proto{color:#88dff8}

.connect-guide{scroll-margin-top:72px}.connect-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:14px}.connect-grid article{display:flex;gap:12px;align-items:center;border:1px solid #143d5b;background:#071827;border-radius:11px;padding:12px}.connect-grid small,.connect-grid b,.connect-grid p{display:block;margin:0}.connect-grid small{font-size:8px;color:#658fa6}.connect-grid p{margin-top:3px;color:#6f99ae;font-size:10px}

.orbit-node.terminal-node{border-color:#8c74ff;color:#ddd5ff}
.orbit-node.terminal-node:before{content:"ICOM TERMINAL";display:block;color:#a891ff;font-size:6px;letter-spacing:.5px}

.access-layout{display:grid;grid-template-columns:1.1fr .9fr;gap:14px}.admin-subtitle{display:block;font-size:10px;color:#87bdd3;margin-bottom:7px}.connected-stations,.ban-list{display:grid;gap:5px;max-height:260px;overflow:auto}.connected-row,.ban-row{display:grid;grid-template-columns:minmax(80px,1fr) 82px 80px;gap:7px;align-items:center;border:1px solid #113650;background:#061622;border-radius:8px;padding:7px 9px;font-size:10px}.connected-row b,.ban-row b{color:#e5faff}.connected-row span,.ban-row span{color:#6995aa}.connected-row .live-dot{color:var(--green)}.ban-row button{min-height:28px!important;padding:4px 7px!important}.ban-form{display:grid;grid-template-columns:1fr 75px;gap:7px;margin-bottom:8px}
.diagnostic-rows,.backup-status{display:grid;gap:5px;margin-top:10px}.diag-row,.backup-row{display:grid;grid-template-columns:minmax(100px,1fr) 60px minmax(90px,1fr);gap:7px;padding:7px 2px;border-bottom:1px solid #102e44;font-size:10px}.diag-row b.ok{color:var(--green)}.diag-row b.bad{color:var(--amber)}.diag-row span:last-child,.backup-row span:last-child{color:#6d96ab}.backup-row{grid-template-columns:minmax(120px,1fr) 95px 75px}
#diagScore.pass{color:var(--green)}#diagScore.attn{color:var(--amber)}

@media(max-width:900px){
  .onair-strip{grid-template-columns:auto 1fr auto}.connect-jump{grid-column:1/-1}
  .connect-grid{grid-template-columns:1fr}
  .access-layout{grid-template-columns:1fr}
}
@media(max-width:650px){
  .onair-main{display:grid;gap:1px}.onair-timer{font-size:13px}
  .today-chips{display:none}
  .lh-mini-row{grid-template-columns:62px 58px 1fr}.lh-mini-row>*:nth-child(n+4){display:none}
}

/* === V7 RC1 — Callsign provenance === */
.call-inferred{
  color:#dffaff!important;
  text-decoration:underline dotted #4f9cb9;
  text-underline-offset:3px;
}
.call-unresolved{
  color:#6d8796!important;
  font-style:italic;
}

/* === V7 RC1 — Admin login === */
#adminPassword{
  min-width:230px;
}
#adminPassword:focus{
  outline:none;
  border-color:var(--cyan);
  box-shadow:0 0 0 2px #2bd3ff18,0 0 18px #2bd3ff12;
}

/* === V7 RC1 — Login feedback === */
#adminLoginForm button:disabled{
  opacity:.58!important;
  cursor:wait!important;
}
#adminLoginMsg{
  min-width:160px;
}

/* === V7 RC1 — Access / NOC === */
.access-selection{
  display:grid;
  grid-template-columns:minmax(150px,1fr) 120px;
  gap:8px;
  align-items:center;
  margin:0 0 9px;
  padding:8px;
  border:1px solid #174561;
  background:#071a28;
  border-radius:9px;
}
.access-selection>span:first-child{color:#9bd5e9;font-size:10px}
.access-result{grid-column:1/-1;color:#72a2b8;font-size:9px;min-height:12px}
.access-user-row{
  width:100%;
  display:grid!important;
  grid-template-columns:22px 90px minmax(150px,1fr) 70px 70px;
  gap:7px;
  align-items:center;
  text-align:left!important;
  border:1px solid #12364e!important;
  background:#061622!important;
  color:#7199ae!important;
  border-radius:8px!important;
  padding:8px 9px!important;
  min-height:38px!important;
  cursor:pointer!important;
}
.access-user-row:hover{border-color:#236884!important;background:#082033!important}
.access-user-row.selected{
  border-color:#3fcad3!important;
  background:#092838!important;
  box-shadow:inset 3px 0 #67e5d1,0 0 18px #39d8cf13;
}
.access-user-row b{color:#e9fbff}
.access-radio{font-size:15px;color:#6fe6d0}
.is-banned{color:#ff8b91!important;font-weight:700;font-size:9px}
.reindex-result{
  margin-top:7px;
  min-height:18px;
  padding:6px 8px;
  border-radius:7px;
  background:#061722;
  border:1px solid #102f45;
  color:#78a8bd;
  font:9px/1.35 ui-monospace,SFMono-Regular,Menlo,monospace;
  white-space:pre-wrap;
  word-break:break-word;
}
@media(max-width:760px){
  .access-user-row{grid-template-columns:20px 82px 1fr 62px}
  .access-user-row>*:nth-child(5){display:none}
  .access-selection{grid-template-columns:1fr}
}

/* === V7 RC1 — Fast Admin === */
#adminLoginForm button:disabled,
#simStart:disabled,
#simStop:disabled{
  opacity:.58!important;
  cursor:wait!important;
}
#sessionTtl{
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
}
.access-user-row.selected{
  outline:1px solid #6ee7d2;
  outline-offset:1px;
}
#backupStatus .backup-row b{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

/* === V7 RC1 — active radio traffic is RED === */
.onair-strip.live{
  border-color:#ff4054!important;
  box-shadow:
    0 0 30px rgba(255,50,72,.20),
    inset 3px 0 #ff4054!important;
}
.onair-strip.live .onair-icon{
  border-color:#ff4054!important;
  background:rgba(255,45,65,.12)!important;
}
.onair-strip.live .pulse-dot{
  background:#ff4054!important;
  box-shadow:0 0 0 5px rgba(255,64,84,.12),0 0 18px #ff4054!important;
}
.onair-strip.live .onair-main small,
.onair-strip.live .onair-main strong,
.onair-strip.live .onair-timer{
  color:#ff6677!important;
}

.orbit-node.live-node{
  border-color:#ff4054!important;
  color:#fff1f3!important;
  background:#351019!important;
  box-shadow:
    0 0 18px rgba(255,64,84,.55),
    0 0 38px rgba(255,64,84,.25)!important;
  animation:v37RedTxPulse 1.05s ease-in-out infinite!important;
}
.orbit-node.live-node small{
  color:#ff7787!important;
}
@keyframes v37RedTxPulse{
  0%,100%{
    box-shadow:0 0 14px rgba(255,64,84,.45),0 0 28px rgba(255,64,84,.18);
    filter:brightness(1);
  }
  50%{
    box-shadow:0 0 24px rgba(255,64,84,.8),0 0 48px rgba(255,64,84,.32);
    filter:brightness(1.18);
  }
}

/* === V7 RC1 — rollback role === */
.service b.standby{
  color:#8bbbd0!important;
  border-color:#28566f!important;
  background:#0a2130!important;
}

/* === V7 RC1 — consolidated UI === */
.readonly.admin-mode{
  border-color:#8a6840;
  background:#2b1c0e;
  color:#ffd39b;
}
.backup-download-hint{
  margin:10px 0 0;
  padding:10px;
  border:1px solid #174561;
  border-radius:8px;
  background:#061722;
  color:#8fcfe5;
  font:9px/1.45 ui-monospace,SFMono-Regular,Menlo,monospace;
  white-space:pre-wrap;
  overflow-wrap:anywhere;
}

/* === V7 RC1c — explicit LIVE semantics: TX vs CONNECTED === */
.live-row.tx div:nth-child(2){color:var(--red);font-weight:800}
.live-row.connected div:nth-child(2){color:var(--cyan2);font-weight:700}
.live-row.connected{background:linear-gradient(90deg,#0a294022,transparent 65%)}
.orbit-node.connected-node{border-color:#2f7c98}
.link-dot{color:var(--cyan2)!important}


/* === V7 RC1d — collision-free Orbit === */
.orbit{height:340px;min-height:340px}
#orbitNodes{position:absolute;inset:0;z-index:3}
.orbit-line{z-index:1;pointer-events:none}
.core{z-index:2}
.orbit-node{
  z-index:4;
  min-width:92px;
  max-width:118px;
  padding:7px 9px;
  line-height:1.12;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.orbit-node b{font-size:9px;overflow:hidden;text-overflow:ellipsis}
.orbit-node small{font-size:6.5px;letter-spacing:.1px;overflow:hidden;text-overflow:ellipsis}
.orbit-node.connected-node{
  border-color:#2f9fc8!important;
  color:#d8f7ff!important;
  background:#082538!important;
  box-shadow:0 0 16px rgba(43,211,255,.24),0 0 28px rgba(43,211,255,.10)!important;
}
.orbit-node.connected-node small{color:#70d9f4!important}
@media(max-width:760px){
  .orbit{height:330px;min-height:330px}
  .orbit-node{min-width:78px;max-width:92px;padding:6px 7px}
  .orbit-node b{font-size:8px}.orbit-node small{font-size:6px}
  .core{width:88px;height:88px}
}


/* === V7 RC1e — LIVE legibility + CONNECTED green state === */

/* Prevent the status/callsign columns from ever painting over each other. */
.live-row{
  grid-template-columns:
    68px
    minmax(108px,120px)
    minmax(78px,1fr)
    minmax(78px,1fr)
    minmax(92px,1.08fr)
    50px;
  gap:8px;
  font-size:12px;
}
.live-row>div{
  min-width:0;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

/* CONNECTED is a link state, not traffic: green, calm glow. */
.live-row.connected{
  background:linear-gradient(90deg,rgba(52,245,166,.105),rgba(52,245,166,.018) 58%,transparent);
  box-shadow:inset 3px 0 #55efad;
}
.live-row.connected div:nth-child(2){
  color:#6df7b5!important;
  font-weight:850;
  text-shadow:0 0 11px rgba(109,247,181,.40);
}

/* TX keeps the established red ON-AIR language. */
.live-row.tx{
  background:linear-gradient(90deg,rgba(255,64,84,.105),rgba(255,64,84,.018) 58%,transparent);
  box-shadow:inset 3px 0 #ff4054;
}
.live-row.tx div:nth-child(2){
  color:#ff6677!important;
  font-weight:850;
  text-shadow:0 0 11px rgba(255,64,84,.42);
}

/* Orbit: CONNECTED gets a distinct green node. TX rules remain red and win. */
.orbit-node.connected-node:not(.live-node){
  border-color:#55efad!important;
  color:#eafff6!important;
  background:#082820!important;
  box-shadow:
    0 0 17px rgba(85,239,173,.38),
    0 0 34px rgba(85,239,173,.15)!important;
  animation:v7ConnectedGlow 2.2s ease-in-out infinite!important;
}
.orbit-node.connected-node:not(.live-node) small{
  color:#6df7b5!important;
}
@keyframes v7ConnectedGlow{
  0%,100%{
    box-shadow:0 0 12px rgba(85,239,173,.28),0 0 25px rgba(85,239,173,.10);
    filter:brightness(1);
  }
  50%{
    box-shadow:0 0 20px rgba(85,239,173,.46),0 0 38px rgba(85,239,173,.18);
    filter:brightness(1.06);
  }
}

/* At phone width we still reserve enough room for POŁĄCZONY / CONNECTED. */
@media(max-width:760px){
  .live-row{
    grid-template-columns:58px minmax(96px,108px) minmax(0,1fr);
    gap:7px;
    font-size:11px;
  }
  .live-row div:nth-child(n+4){display:none}
}

/* === XLX474 V7 PROTOCOL COLORS v1 === */
:root{
  --proto-dstar:#45f3a1;
  --proto-dstar-glow:rgba(69,243,161,.36);
  --proto-nxdn:#ffd84a;
  --proto-nxdn-glow:rgba(255,216,74,.34);
  --proto-m17:#b66cff;
  --proto-m17-glow:rgba(182,108,255,.36);
  --proto-tx:#ff5b68;
  --proto-tx-glow:rgba(255,91,104,.38);
}
.live-row.connected.proto-d-star{box-shadow:inset 4px 0 0 var(--proto-dstar);background:linear-gradient(90deg,var(--proto-dstar-glow),transparent 35%)!important}
.live-row.connected.proto-d-star div:nth-child(2){color:var(--proto-dstar)!important;text-shadow:0 0 10px var(--proto-dstar-glow)}
.live-row.connected.proto-nxdn{box-shadow:inset 4px 0 0 var(--proto-nxdn);background:linear-gradient(90deg,var(--proto-nxdn-glow),transparent 35%)!important}
.live-row.connected.proto-nxdn div:nth-child(2){color:var(--proto-nxdn)!important;text-shadow:0 0 10px var(--proto-nxdn-glow)}
.live-row.connected.proto-m17{box-shadow:inset 4px 0 0 var(--proto-m17);background:linear-gradient(90deg,var(--proto-m17-glow),transparent 35%)!important}
.live-row.connected.proto-m17 div:nth-child(2){color:var(--proto-m17)!important;text-shadow:0 0 10px var(--proto-m17-glow)}
.orbit-node.connected-node.proto-d-star:not(.live-node){border-color:var(--proto-dstar)!important;box-shadow:0 0 22px var(--proto-dstar-glow),inset 0 0 18px rgba(69,243,161,.07)!important}
.orbit-node.connected-node.proto-d-star:not(.live-node) small{color:var(--proto-dstar)!important}
.orbit-node.connected-node.proto-nxdn:not(.live-node){border-color:var(--proto-nxdn)!important;box-shadow:0 0 22px var(--proto-nxdn-glow),inset 0 0 18px rgba(255,216,74,.07)!important}
.orbit-node.connected-node.proto-nxdn:not(.live-node) small{color:var(--proto-nxdn)!important}
.orbit-node.connected-node.proto-m17:not(.live-node){border-color:var(--proto-m17)!important;box-shadow:0 0 22px var(--proto-m17-glow),inset 0 0 18px rgba(182,108,255,.07)!important}
.orbit-node.connected-node.proto-m17:not(.live-node) small{color:var(--proto-m17)!important}
.live-row.tx{box-shadow:inset 4px 0 0 var(--proto-tx)!important}
.live-row.tx div:nth-child(2){color:var(--proto-tx)!important;text-shadow:0 0 10px var(--proto-tx-glow)!important}
.orbit-node.live-node{border-color:var(--proto-tx)!important;box-shadow:0 0 24px var(--proto-tx-glow),inset 0 0 18px rgba(255,91,104,.08)!important}
.orbit-node.live-node small{color:var(--proto-tx)!important}

/* XLX474-RADIO-MODEL-V2 */
.radio-model{font-size:.76em;opacity:.72;font-weight:500;letter-spacing:.01em;white-space:nowrap}

/* FAST-LIVE-RADIO-STACK-V3 */
.live-identity{min-width:0;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:.18rem;line-height:1.08;overflow:hidden}
.live-identity strong,.live-identity .radio-model{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.live-identity strong{font-weight:800}
.live-identity .radio-model{font-size:.72em;opacity:.72;font-weight:500}


/* RECORD_COMPLETENESS_PROTOCOL_COLORS_V1 */
/* Aktywność 24H używa dokładnie tej samej palety co Network Orbit i Sieć na żywo. */
.hour-stack i.dstar{background:var(--proto-dstar)!important;box-shadow:0 0 8px var(--proto-dstar-glow)}
.hour-stack i.nxdn{background:var(--proto-nxdn)!important;box-shadow:0 0 8px var(--proto-nxdn-glow)}
.hour-stack i.m17{background:var(--proto-m17)!important;box-shadow:0 0 8px var(--proto-m17-glow)}
.activity-legend span:nth-child(1):before{color:var(--proto-dstar)!important}
.activity-legend span:nth-child(2):before{color:var(--proto-nxdn)!important}
.activity-legend span:nth-child(3):before{color:var(--proto-m17)!important}
.quality-explainer{color:#9ac9dc;font-weight:650;margin-bottom:5px}


/* DCS_TRANSPORT_UI_V1 */
.tx-transport{min-width:145px}
.tx-transport>span{display:block;color:#bde6f5;font-weight:700}
.dcs-transport{display:block;margin-top:4px;font-size:9px;line-height:1.35;white-space:nowrap;font-weight:650;color:#6f98ad}
.dcs-transport.measured{color:var(--proto-dstar)}
.dcs-transport.incomplete{color:var(--proto-nxdn)}


/* V7_UI_AUDIT_FIXES_V1 */
/* Six columns remain visible on desktop, but no child may force the grid wider. */
@media (min-width:761px){
  .live-row{
    grid-template-columns:64px 86px minmax(0,1.25fr) minmax(0,.95fr) minmax(0,1.05fr) 52px;
    gap:5px;
  }
  .live-row>div{
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
  .live-row>.live-identity{white-space:normal}
}


/* === KAB FUSION / YSF V7 === */
:root{
  --proto-ysf:#ff8a3d;
  --proto-ysf-glow:rgba(255,138,61,.36);
}

.proto-icon.ysf{
  color:var(--proto-ysf)!important;
  font-size:11px;
  text-shadow:0 0 10px var(--proto-ysf-glow);
}

.hour-stack i.ysf{
  background:var(--proto-ysf)!important;
  box-shadow:0 0 8px var(--proto-ysf-glow);
}

.live-row.connected.proto-ysf{
  box-shadow:
    inset 4px 0 0 var(--proto-ysf);
  background:
    linear-gradient(
      90deg,
      var(--proto-ysf-glow),
      transparent 35%
    )!important;
}

.live-row.connected.proto-ysf div:nth-child(2){
  color:var(--proto-ysf)!important;
  text-shadow:0 0 10px var(--proto-ysf-glow);
}

/*
 * TX pozostaje czerwony zgodnie z istniejącym
 * językiem ON AIR. Pomarańczowy = stan/protokół YSF.
 */
.orbit-node.connected-node.proto-ysf:not(.live-node){
  border-color:var(--proto-ysf)!important;
  box-shadow:
    0 0 22px var(--proto-ysf-glow),
    inset 0 0 18px rgba(255,138,61,.07)!important;
}

.orbit-node.connected-node.proto-ysf:not(.live-node) small{
  color:var(--proto-ysf)!important;
}

.activity-legend span:nth-child(4):before{
  color:var(--proto-ysf)!important;
}

@media (min-width:1181px){
  .protocols{
    grid-template-columns:repeat(4,1fr)!important;
  }
}

@media (min-width:761px) and (max-width:1180px){
  .protocols{
    grid-template-columns:repeat(2,1fr)!important;
  }
}
