
:root{
  --bg:#0b1220; --panel:#0f172a; --card:#111c33; --muted:#94a3b8; --text:#e5e7eb;
  --accent:#2563eb; --ok:#16a34a; --warn:#f59e0b; --bad:#dc2626; --bus:#a855f7; --line:#1f2a44;
  --bg-gradient: radial-gradient(1200px 600px at 30% -10%, #1b2a55 0%, #0b1220 55%);
  --header-gradient: linear-gradient(90deg, rgba(17,24,39,.92), rgba(15,23,42,.92));
  --card-gradient: linear-gradient(180deg, rgba(17,28,51,.92), rgba(15,23,42,.9));
  --muted-strong:#cbd5e1;
  --toolbar-bg: rgba(15,23,42,.92);
  --thead-bg: rgba(15,23,42,.95);
  --card-border: rgba(148,163,184,.16);
  --btn-bg: rgba(37,99,235,.12);
  --btn-border: rgba(148,163,184,.25);
  --btn-primary-bg: rgba(37,99,235,.32);
  --btn-primary-border: rgba(96,165,250,.68);
  --btn-primary-text: #eff6ff;
  --btn-ghost-bg: rgba(148,163,184,.08);
  --lang-active-bg: rgba(37,99,235,.4);
  --lang-active-text:#eff6ff;
  --tab-bg: rgba(148,163,184,.1);
  --tab-border: rgba(148,163,184,.2);
  --tab-text: var(--muted-strong);
  --tab-active-bg: rgba(37,99,235,.44);
  --tab-active-border: rgba(96,165,250,.76);
  --tab-active-text: #eff6ff;
  --pill-bg: rgba(148,163,184,.08);
  --pill-border: rgba(148,163,184,.22);
  --pill-text: var(--muted-strong);
  --control-bg: rgba(148,163,184,.08);
  --control-border: rgba(148,163,184,.18);
  --row-border: rgba(31,42,68,.8);
  --row-hover-bg: rgba(148,163,184,.06);
  --modal-backdrop: rgba(2,6,23,.62);
  --panel-bg: linear-gradient(180deg, rgba(17,28,51,.98), rgba(15,23,42,.98));
  --panel-border: rgba(148,163,184,.2);
  --notice-bg: rgba(148,163,184,.06);
  --notice-border: rgba(148,163,184,.18);
  --notice-text: var(--muted-strong);
  --diff-bg: rgba(2,6,23,.35);
  --diff-border: rgba(148,163,184,.16);
  --progress-track: rgba(148,163,184,.14);
  --progress-fill: rgba(37,99,235,.68);
  --group-row-bg: rgba(37,99,235,.12);
  --warning-row-bg: rgba(245,158,11,.08);
  --warning-bg: rgba(245,158,11,.12);
  --warning-border: rgba(245,158,11,.4);
  --warning-text:#fde68a;
  --src-auto:#93c5fd;
  --src-manual:#fca5a5;
  --src-planned:#c4b5fd;
  --src-model:#7dd3fc;
  --lock-text:#fca5a5;
  --link-color:#7dd3fc;
  --link-hover-color:#bae6fd;
  --link-visited-color:#c4b5fd;
  --badge-ok-bg: rgba(22,163,74,.16);
  --badge-ok-border: rgba(22,163,74,.35);
  --badge-ok-text:#a7f3d0;
  --badge-warn-bg: rgba(245,158,11,.16);
  --badge-warn-border: rgba(245,158,11,.35);
  --badge-warn-text:#fde68a;
  --badge-bad-bg: rgba(220,38,38,.16);
  --badge-bad-border: rgba(220,38,38,.35);
  --badge-bad-text:#fecaca;
  --badge-bus-bg: rgba(168,85,247,.16);
  --badge-bus-border: rgba(168,85,247,.35);
  --badge-bus-text:#e9d5ff;
  --badge-model-bg: rgba(14,165,233,.16);
  --badge-model-border: rgba(14,165,233,.35);
  --badge-model-text:#bae6fd;
  --sticky-banner-top: 0px;
  --sticky-tabs-top: 0px;
  --sticky-toolbar-top: 0px;
  --sticky-table-head-top: 0px;
}

body[data-theme="via-night"]{
  --bg:#0b1220; --panel:#0f172a; --card:#111c33; --muted:#94a3b8; --text:#e5e7eb;
  --accent:#2563eb; --line:#1f2a44;
  --bg-gradient: radial-gradient(1200px 600px at 30% -10%, #1b2a55 0%, #0b1220 55%);
  --header-gradient: linear-gradient(90deg, rgba(17,24,39,.92), rgba(15,23,42,.92));
  --card-gradient: linear-gradient(180deg, rgba(17,28,51,.92), rgba(15,23,42,.9));
  --muted-strong:#cbd5e1;
  --toolbar-bg: rgba(15,23,42,.92);
  --thead-bg: rgba(15,23,42,.95);
}

body[data-theme="via-day"]{
  --bg:#e7edf7; --panel:#f3f7fc; --card:#ffffff; --muted:#4b5d7c; --text:#0b1b36;
  --accent:#0f4aa3; --line:#c9d7ed;
  --bg-gradient: radial-gradient(1200px 620px at 18% -12%, #f6f9ff 0%, #dbe8f8 52%, #e7edf7 100%);
  --header-gradient: linear-gradient(90deg, rgba(240,246,255,.96), rgba(231,239,251,.95));
  --card-gradient: linear-gradient(180deg, rgba(255,255,255,.96), rgba(246,250,255,.96));
  --muted-strong:#334155;
  --toolbar-bg: rgba(246,250,255,.95);
  --thead-bg: rgba(238,245,255,.98);
  --card-border: #bfd0ea;
  --btn-bg: rgba(15,74,163,.1);
  --btn-border: rgba(82,116,166,.34);
  --btn-primary-bg: #0f4aa3;
  --btn-primary-border: #0b3d86;
  --btn-primary-text: #f8fbff;
  --btn-ghost-bg: rgba(82,116,166,.08);
  --lang-active-bg: #0f4aa3;
  --lang-active-text:#f8fbff;
  --tab-bg: rgba(15,74,163,.08);
  --tab-border: rgba(82,116,166,.3);
  --tab-text: #14375e;
  --tab-active-bg: #0f4aa3;
  --tab-active-border: #0b3d86;
  --tab-active-text: #f8fbff;
  --pill-bg: rgba(15,74,163,.08);
  --pill-border: rgba(82,116,166,.28);
  --pill-text: #14375e;
  --control-bg: #ffffff;
  --control-border: #b8cbe8;
  --row-border: #cfe0f4;
  --row-hover-bg: rgba(15,74,163,.05);
  --modal-backdrop: rgba(30,58,107,.3);
  --panel-bg: linear-gradient(180deg, rgba(255,255,255,.99), rgba(245,249,255,.99));
  --panel-border: #b8cbe8;
  --notice-bg: #eef4ff;
  --notice-border: #c7d8f3;
  --notice-text: #20456b;
  --diff-bg: #f5f9ff;
  --diff-border: #c8d8f0;
  --progress-track: #d1dff2;
  --progress-fill: #0f4aa3;
  --group-row-bg: rgba(15,74,163,.09);
  --warning-row-bg: #fff8e7;
  --warning-bg: #fff4db;
  --warning-border: #f5c871;
  --warning-text:#8a4b00;
  --src-auto:#0f4aa3;
  --src-manual:#b42318;
  --src-planned:#6b21a8;
  --src-model:#0369a1;
  --lock-text:#b42318;
  --link-color:#0f4aa3;
  --link-hover-color:#0b3f8a;
  --link-visited-color:#6b21a8;
  --badge-ok-bg: rgba(22,163,74,.14);
  --badge-ok-border: rgba(22,163,74,.32);
  --badge-ok-text:#166534;
  --badge-warn-bg: rgba(245,158,11,.16);
  --badge-warn-border: rgba(245,158,11,.34);
  --badge-warn-text:#92400e;
  --badge-bad-bg: rgba(220,38,38,.14);
  --badge-bad-border: rgba(220,38,38,.32);
  --badge-bad-text:#991b1b;
  --badge-bus-bg: rgba(168,85,247,.14);
  --badge-bus-border: rgba(168,85,247,.32);
  --badge-bus-text:#6b21a8;
  --badge-model-bg: rgba(14,165,233,.12);
  --badge-model-border: rgba(14,165,233,.3);
  --badge-model-text:#075985;
}

body[data-theme="corridor-blue"]{
  --bg:#061426; --panel:#0b1e38; --card:#0d2746; --muted:#90aeca; --text:#e3edf8;
  --accent:#1892d0; --line:#173b63;
  --bg-gradient: radial-gradient(1400px 640px at 22% -8%, #0b3d73 0%, #061426 58%);
  --header-gradient: linear-gradient(90deg, rgba(8,28,50,.94), rgba(7,21,39,.92));
  --card-gradient: linear-gradient(180deg, rgba(13,39,70,.95), rgba(8,23,42,.95));
  --muted-strong:#c8def4;
  --toolbar-bg: rgba(10,27,48,.93);
  --thead-bg: rgba(8,24,43,.97);
  --card-border: rgba(84,130,181,.3);
  --btn-bg: rgba(24,146,208,.16);
  --btn-border: rgba(84,130,181,.34);
  --btn-primary-bg: #1892d0;
  --btn-primary-border: #2db4ed;
  --btn-primary-text: #052640;
  --btn-ghost-bg: rgba(84,130,181,.14);
  --lang-active-bg: #1892d0;
  --lang-active-text:#052640;
  --tab-bg: rgba(84,130,181,.16);
  --tab-border: rgba(84,130,181,.33);
  --tab-text: #d7e8fa;
  --tab-active-bg: #1892d0;
  --tab-active-border: #2db4ed;
  --tab-active-text: #052640;
  --pill-bg: rgba(84,130,181,.15);
  --pill-border: rgba(84,130,181,.3);
  --pill-text: #d5e6f8;
  --control-bg: rgba(84,130,181,.14);
  --control-border: rgba(84,130,181,.3);
  --row-border: rgba(23,59,99,.85);
  --row-hover-bg: rgba(24,146,208,.11);
  --modal-backdrop: rgba(2,12,22,.66);
  --panel-bg: linear-gradient(180deg, rgba(13,39,70,.98), rgba(8,23,42,.98));
  --panel-border: rgba(84,130,181,.34);
  --notice-bg: rgba(24,146,208,.12);
  --notice-border: rgba(24,146,208,.32);
  --notice-text: #b8e8ff;
  --diff-bg: rgba(7,27,48,.46);
  --diff-border: rgba(84,130,181,.3);
  --progress-track: rgba(84,130,181,.24);
  --progress-fill: rgba(24,146,208,.82);
  --group-row-bg: rgba(24,146,208,.16);
  --warning-row-bg: rgba(245,158,11,.1);
}

body[data-theme="maple-sunrise"]{
  --bg:#1d1112; --panel:#2a1718; --card:#321c1d; --muted:#e0b5a5; --text:#fff0ea;
  --accent:#d9572c; --line:#5b2b2d;
  --bg-gradient: radial-gradient(1200px 620px at 18% -12%, #c54f2a 0%, #5b2723 40%, #1d1112 74%);
  --header-gradient: linear-gradient(90deg, rgba(58,25,24,.94), rgba(35,17,18,.94));
  --card-gradient: linear-gradient(180deg, rgba(60,29,31,.95), rgba(34,17,18,.95));
  --muted-strong:#ffe0d5;
  --toolbar-bg: rgba(52,24,25,.92);
  --thead-bg: rgba(42,19,20,.96);
  --card-border: rgba(213,114,88,.25);
  --btn-bg: rgba(217,87,44,.16);
  --btn-border: rgba(213,114,88,.32);
  --btn-primary-bg: #e56b35;
  --btn-primary-border: #f08857;
  --btn-primary-text: #fff7f2;
  --btn-ghost-bg: rgba(213,114,88,.12);
  --lang-active-bg: #e56b35;
  --lang-active-text:#fff7f2;
  --tab-bg: rgba(213,114,88,.15);
  --tab-border: rgba(213,114,88,.3);
  --tab-text: #ffe6db;
  --tab-active-bg: #e56b35;
  --tab-active-border: #f08857;
  --tab-active-text: #fff7f2;
  --pill-bg: rgba(213,114,88,.14);
  --pill-border: rgba(213,114,88,.28);
  --pill-text: #ffe6db;
  --control-bg: rgba(213,114,88,.12);
  --control-border: rgba(213,114,88,.28);
  --row-border: rgba(91,43,45,.86);
  --row-hover-bg: rgba(217,87,44,.1);
  --modal-backdrop: rgba(21,8,9,.68);
  --panel-bg: linear-gradient(180deg, rgba(60,29,31,.98), rgba(34,17,18,.98));
  --panel-border: rgba(213,114,88,.3);
  --notice-bg: rgba(217,87,44,.12);
  --notice-border: rgba(217,87,44,.3);
  --notice-text: #ffd6c7;
  --diff-bg: rgba(38,15,16,.44);
  --diff-border: rgba(213,114,88,.28);
  --progress-track: rgba(213,114,88,.24);
  --progress-fill: rgba(217,87,44,.8);
  --group-row-bg: rgba(217,87,44,.16);
  --warning-row-bg: rgba(245,158,11,.11);
}

body[data-theme="via-classic"]{
  --bg:#05162f; --panel:#0a2243; --card:#0e2c55; --muted:#99afd0; --text:#edf4ff;
  --accent:#ffcd00; --line:#1f3f6e;
  --bg-gradient: radial-gradient(1300px 640px at 20% -12%, #0d2d5d 0%, #05162f 62%);
  --header-gradient: linear-gradient(90deg, rgba(7,27,54,.95), rgba(6,22,47,.94));
  --card-gradient: linear-gradient(180deg, rgba(12,37,70,.96), rgba(7,26,52,.95));
  --muted-strong:#d5e2f7;
  --toolbar-bg: rgba(9,30,58,.93);
  --thead-bg: rgba(8,27,52,.97);
  --card-border: rgba(144,173,214,.22);
  --btn-bg: rgba(255,205,0,.12);
  --btn-border: rgba(255,205,0,.32);
  --btn-primary-bg: #ffcd00;
  --btn-primary-border: #e5b900;
  --btn-primary-text: #1a2842;
  --btn-ghost-bg: rgba(153,175,208,.14);
  --lang-active-bg: #ffcd00;
  --lang-active-text:#1a2842;
  --tab-bg: rgba(153,175,208,.12);
  --tab-border: rgba(153,175,208,.28);
  --tab-text: #dce7fa;
  --tab-active-bg: #ffcd00;
  --tab-active-border: #e5b900;
  --tab-active-text: #1a2842;
  --pill-bg: rgba(153,175,208,.14);
  --pill-border: rgba(153,175,208,.28);
  --pill-text: #dbe7fb;
  --control-bg: rgba(153,175,208,.12);
  --control-border: rgba(153,175,208,.26);
  --row-border: rgba(31,63,110,.7);
  --row-hover-bg: rgba(255,205,0,.08);
  --modal-backdrop: rgba(2,10,24,.68);
  --panel-bg: linear-gradient(180deg, rgba(13,39,74,.98), rgba(8,28,55,.98));
  --panel-border: rgba(255,205,0,.3);
  --notice-bg: rgba(255,205,0,.08);
  --notice-border: rgba(255,205,0,.28);
  --notice-text: #f7e7a8;
  --diff-bg: rgba(6,21,41,.45);
  --diff-border: rgba(153,175,208,.25);
  --progress-track: rgba(153,175,208,.24);
  --progress-fill: rgba(255,205,0,.85);
  --group-row-bg: rgba(255,205,0,.12);
  --warning-row-bg: rgba(245,158,11,.12);
  --link-color:#ffcd00;
  --link-hover-color:#f7da6d;
  --link-visited-color:#ffd866;
}

body[data-theme="via-gold"]{
  --bg:#f5efe0; --panel:#fbf7ec; --card:#fffdf7; --muted:#6e6758; --text:#1f2c3d;
  --accent:#0f4aa3; --line:#d8cbaa;
  --bg-gradient: radial-gradient(1250px 650px at 18% -10%, #fff7df 0%, #efe4c8 58%, #f5efe0 100%);
  --header-gradient: linear-gradient(90deg, rgba(251,246,232,.97), rgba(244,236,214,.95));
  --card-gradient: linear-gradient(180deg, rgba(255,253,247,.98), rgba(250,244,231,.98));
  --muted-strong:#4f4a3f;
  --toolbar-bg: rgba(251,246,232,.95);
  --thead-bg: rgba(246,236,211,.98);
  --card-border: #d7c8a0;
  --btn-bg: rgba(15,74,163,.08);
  --btn-border: rgba(15,74,163,.24);
  --btn-primary-bg: #0f4aa3;
  --btn-primary-border: #0b3a7f;
  --btn-primary-text: #f8fbff;
  --btn-ghost-bg: rgba(125,111,76,.08);
  --lang-active-bg: #0f4aa3;
  --lang-active-text:#f8fbff;
  --tab-bg: rgba(125,111,76,.1);
  --tab-border: rgba(125,111,76,.24);
  --tab-text: #3e3a31;
  --tab-active-bg: #f0c94a;
  --tab-active-border: #d9b13d;
  --tab-active-text: #2f2a1f;
  --pill-bg: rgba(125,111,76,.1);
  --pill-border: rgba(125,111,76,.22);
  --pill-text: #3f3a31;
  --control-bg: #fffdf7;
  --control-border: #d6c8a4;
  --row-border: rgba(216,203,170,.85);
  --row-hover-bg: rgba(15,74,163,.05);
  --modal-backdrop: rgba(45,37,15,.3);
  --panel-bg: linear-gradient(180deg, rgba(255,253,248,.99), rgba(249,243,230,.99));
  --panel-border: #d6c8a4;
  --notice-bg: #f7edd0;
  --notice-border: #dec58a;
  --notice-text: #5a4a23;
  --diff-bg: #fff8e8;
  --diff-border: #dec58a;
  --progress-track: rgba(151,132,78,.24);
  --progress-fill: #0f4aa3;
  --group-row-bg: rgba(240,201,74,.2);
  --warning-row-bg: #fff8e7;
  --warning-bg: #fff4db;
  --warning-border: #e8c273;
  --warning-text:#8a4b00;
  --src-auto:#0f4aa3;
  --src-manual:#b42318;
  --src-planned:#6b21a8;
  --src-model:#0369a1;
  --lock-text:#b42318;
  --link-color:#0f4aa3;
  --link-hover-color:#0b3f8a;
  --link-visited-color:#6b21a8;
  --badge-ok-bg: rgba(22,163,74,.14);
  --badge-ok-border: rgba(22,163,74,.32);
  --badge-ok-text:#166534;
  --badge-warn-bg: rgba(245,158,11,.16);
  --badge-warn-border: rgba(245,158,11,.34);
  --badge-warn-text:#92400e;
  --badge-bad-bg: rgba(220,38,38,.14);
  --badge-bad-border: rgba(220,38,38,.32);
  --badge-bad-text:#991b1b;
  --badge-bus-bg: rgba(168,85,247,.14);
  --badge-bus-border: rgba(168,85,247,.32);
  --badge-bus-text:#6b21a8;
  --badge-model-bg: rgba(14,165,233,.12);
  --badge-model-border: rgba(14,165,233,.3);
  --badge-model-text:#0c4a6e;
}

body[data-theme="atlantic-teal"]{
  --bg:#051b22; --panel:#0a2931; --card:#103440; --muted:#87aeb8; --text:#dff6fb;
  --accent:#2bb6b8; --line:#1d4754;
  --bg-gradient: radial-gradient(1250px 640px at 24% -10%, #11616f 0%, #051b22 62%);
  --header-gradient: linear-gradient(90deg, rgba(8,36,45,.95), rgba(6,27,34,.94));
  --card-gradient: linear-gradient(180deg, rgba(15,53,63,.96), rgba(9,33,41,.95));
  --muted-strong:#c9e6ee;
  --toolbar-bg: rgba(9,34,43,.93);
  --thead-bg: rgba(8,30,39,.97);
  --card-border: rgba(118,166,178,.23);
  --btn-bg: rgba(43,182,184,.14);
  --btn-border: rgba(118,166,178,.34);
  --btn-primary-bg: #2bb6b8;
  --btn-primary-border: #1d9496;
  --btn-primary-text: #032022;
  --btn-ghost-bg: rgba(118,166,178,.13);
  --lang-active-bg: #2bb6b8;
  --lang-active-text:#032022;
  --tab-bg: rgba(118,166,178,.13);
  --tab-border: rgba(118,166,178,.3);
  --tab-text: #d3eef4;
  --tab-active-bg: #2bb6b8;
  --tab-active-border: #1d9496;
  --tab-active-text: #032022;
  --pill-bg: rgba(118,166,178,.14);
  --pill-border: rgba(118,166,178,.28);
  --pill-text: #d3eef4;
  --control-bg: rgba(118,166,178,.12);
  --control-border: rgba(118,166,178,.27);
  --row-border: rgba(29,71,84,.78);
  --row-hover-bg: rgba(43,182,184,.09);
  --modal-backdrop: rgba(0,10,14,.66);
  --panel-bg: linear-gradient(180deg, rgba(12,44,54,.98), rgba(9,34,43,.98));
  --panel-border: rgba(43,182,184,.28);
  --notice-bg: rgba(43,182,184,.11);
  --notice-border: rgba(43,182,184,.29);
  --notice-text: #b6e9ea;
  --diff-bg: rgba(4,22,28,.45);
  --diff-border: rgba(118,166,178,.24);
  --progress-track: rgba(118,166,178,.24);
  --progress-fill: rgba(43,182,184,.8);
  --group-row-bg: rgba(43,182,184,.16);
  --warning-row-bg: rgba(245,158,11,.1);
  --link-color:#67e8f9;
  --link-hover-color:#a5f3fc;
  --link-visited-color:#c4b5fd;
}

*{box-sizing:border-box}
body{
  margin:0;
  font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
  background: var(--bg-gradient);
  color:var(--text);
}
a{
  color:var(--link-color);
  text-decoration-color: var(--link-color);
  text-underline-offset: 2px;
  text-decoration-thickness: 1.5px;
}
a:hover{
  color:var(--link-hover-color);
  text-decoration-color: var(--link-hover-color);
}
a:visited{
  color:var(--link-visited-color);
  text-decoration-color: var(--link-visited-color);
}
.header{
  position:-webkit-sticky;
  position:sticky; top:0; z-index:40;
  background: var(--header-gradient);
  backdrop-filter: blur(8px);
  border-bottom:1px solid var(--line);
  padding:14px 18px;
  display:flex; align-items:center; justify-content:space-between; gap:12px;
}
.brand{display:flex; flex-direction:column; gap:2px}
.brand h1{margin:0; font-size:18px; font-weight:800}
.brand .sub{font-size:12px; color:var(--muted)}
.actions{display:flex; gap:10px; align-items:center; flex-wrap:wrap; justify-content:flex-end}
.langswitch{
  display:inline-flex;
  border:1px solid var(--tab-border);
  border-radius:10px;
  overflow:hidden;
}
.langbtn{
  border:0;
  border-radius:0;
  min-width:38px;
  padding:8px 10px;
}
.langbtn + .langbtn{
  border-left:1px solid var(--tab-border);
}
.langbtn.active{
  background: var(--lang-active-bg);
  color:var(--lang-active-text);
}
.btn{
  border:1px solid var(--btn-border);
  background: var(--btn-bg);
  color:var(--text);
  text-decoration:none;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:8px 10px;
  border-radius:10px;
  cursor:pointer;
  font-weight:700;
  font-size:13px;
}
.btn:hover{filter:brightness(1.08)}
.btn.primary{
  background: var(--btn-primary-bg);
  border-color: var(--btn-primary-border);
  color: var(--btn-primary-text);
}
.btn.ghost{background: var(--btn-ghost-bg)}
a.btn, a.btn:hover, a.btn:visited{
  color:var(--text);
  text-decoration:none;
}
.pill{
  padding:6px 10px;
  border-radius:999px;
  font-size:12px;
  color:var(--pill-text);
  font-weight:700;
  border:1px solid var(--pill-border);
  background: var(--pill-bg);
}
.pill.warn{
  border-color: var(--warning-border);
  background: var(--warning-bg);
  color: var(--warning-text);
}
.tabs{
  padding:12px 18px 10px 18px;
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  position:-webkit-sticky;
  position:sticky;
  top:var(--sticky-tabs-top);
  z-index:34;
  background: var(--header-gradient);
  border-bottom:1px solid rgba(148,163,184,.14);
  backdrop-filter: blur(7px);
}
.tab{
  padding:9px 12px; border-radius:12px; cursor:pointer;
  border:1px solid var(--tab-border);
  background: var(--tab-bg);
  color:var(--tab-text);
  font-weight:800; font-size:13px;
}
.tab.active{
  background: var(--tab-active-bg);
  border-color: var(--tab-active-border);
  color:var(--tab-active-text);
}
.importantMessageBanner{
  padding:12px 18px 0 18px;
  position:-webkit-sticky;
  position:sticky;
  top:var(--sticky-banner-top);
  z-index:33;
  background: var(--header-gradient);
  backdrop-filter: blur(7px);
}
.importantMessageBanner:empty{
  display:none;
}
.importantMessageBannerCard{
  display:flex;
  align-items:flex-start;
  gap:10px;
  padding:12px 14px;
  border-radius:14px;
  border:1px solid rgba(254,215,170,.72);
  background: linear-gradient(135deg, rgba(127,29,29,.96), rgba(194,65,12,.93));
  color:#fff7ed;
  box-shadow: 0 12px 28px rgba(127,29,29,.22);
}
.importantMessageBannerLabel{
  flex:0 0 auto;
  padding:4px 8px;
  border-radius:999px;
  background: rgba(255,247,237,.18);
  border:1px solid rgba(255,247,237,.28);
  font-size:11px;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.importantMessageBannerText{
  font-size:14px;
  font-weight:800;
  line-height:1.45;
}
.container{padding:14px 18px 28px 18px}
.card{
  background: var(--card-gradient);
  border:1px solid var(--card-border);
  border-radius:16px;
  overflow:visible;
  box-shadow: 0 18px 45px rgba(0,0,0,.28);
}
.toolbar{
  display:flex; gap:10px; align-items:center; justify-content:space-between;
  padding:12px 12px; border-bottom:1px solid var(--line); flex-wrap:wrap;
  position:-webkit-sticky;
  position:sticky;
  top:var(--sticky-toolbar-top);
  z-index:30;
  background: var(--toolbar-bg);
  backdrop-filter: blur(6px);
}
.shiftBriefings{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(210px, 1fr));
  gap:10px;
  padding:10px 12px;
  border-bottom:1px solid var(--line);
  background: var(--toolbar-bg);
}
.dashboardTopSection{
  display:flex;
  flex-direction:column;
}
.dashboardTopSectionBar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:8px 12px;
  border-bottom:1px solid var(--line);
  background: var(--toolbar-bg);
}
.dashboardTopSectionTitle{
  font-size:12px;
  font-weight:900;
  color:var(--muted-strong);
}
.dashboardTopSectionBody{
  display:flex;
  flex-direction:column;
}
.dashboardTopSection.collapsed .dashboardTopSectionBody{
  display:none;
}
.sectionToggleBtn{
  padding:6px 10px;
  font-size:12px;
  white-space:nowrap;
}
.briefCard{
  border:1px solid var(--control-border);
  border-radius:12px;
  background: var(--control-bg);
  padding:10px;
}
.briefTitle{
  font-size:12px;
  font-weight:900;
  color:var(--muted-strong);
}
.briefMetric{
  font-size:22px;
  font-weight:900;
  color:var(--text);
  line-height:1.1;
  margin-top:2px;
}
.briefLabel{
  font-size:11px;
  color:var(--muted);
  margin-top:2px;
}
.briefMeta{
  margin-top:8px;
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  font-size:11px;
  color:var(--muted-strong);
}
.knownIssuesPanel{
  padding:10px 12px;
  border-bottom:1px solid var(--line);
  display:flex;
  flex-direction:column;
  gap:8px;
  background: var(--card-gradient);
}
.knownIssuesHeader{
  font-size:12px;
  font-weight:900;
  color:var(--muted-strong);
}
.knownIssueItem{
  border:1px solid var(--control-border);
  border-radius:12px;
  background: var(--control-bg);
  padding:10px;
}
.knownIssueTop{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
}
.knownIssueTitle{
  margin-top:6px;
  font-weight:800;
  font-size:13px;
  color:var(--text);
}
.knownIssueMeta{
  font-size:11px;
  color:var(--muted);
}
.knownIssueWorkaround{
  margin-top:6px;
  font-size:12px;
  color:var(--muted-strong);
}
.knownIssuesEmpty{
  border:1px dashed var(--control-border);
  border-radius:12px;
  padding:9px 10px;
  font-size:12px;
  color:var(--muted);
  background: var(--control-bg);
}
.search{display:flex; gap:10px; align-items:center; flex-wrap:wrap}
.search input{
  background: var(--control-bg);
  border:1px solid var(--control-border);
  color:var(--text);
  padding:9px 10px;
  border-radius:12px;
  min-width:220px;
}
.smallmuted{font-size:12px; color:var(--muted-strong); font-weight:700}
#counts{white-space:nowrap}
#lastUpdated{text-align:right}
.toolbarOvernightWarning{
  display:inline-block;
  max-width:540px;
  white-space:normal;
  line-height:1.3;
  margin-bottom:4px;
  padding:4px 8px;
  border-radius:10px;
  border:1px solid var(--warning-border);
  background: var(--warning-bg);
  color:var(--warning-text);
  font-size:12px;
  font-weight:900;
}
.tablewrap{
  overflow-x:auto;
  overflow-y:visible;
}
table{width:100%; border-collapse:separate; border-spacing:0}
table.overnightTable thead th{
  text-transform:none;
  letter-spacing:.01em;
  line-height:1.2;
}
table.overnightTable thead th:nth-child(1){width:170px}
table.overnightTable thead th:nth-child(2){width:170px}
table.overnightTable thead th:nth-child(3){width:120px}
table.overnightTable thead th:nth-child(4){width:90px}
table.overnightTable thead th:nth-child(5){width:290px}
table.overnightTable thead th:nth-child(6){width:360px}
table.overnightTable thead th:nth-child(7){width:170px}
table.overnightTable thead th:nth-child(8){width:110px}
table.hideActions thead th:last-child,
table.hideActions tbody td:last-child{
  display:none;
}
thead th{
  position:static;
  top:auto;
  background: var(--thead-bg);
  border-bottom:1px solid var(--line);
  font-size:12px; text-transform:uppercase; letter-spacing:.06em;
  color:var(--muted-strong);
  font-weight:800;
  padding:12px 12px; text-align:left;
  z-index:16;
}
tbody td{
  padding:12px 12px;
  border-bottom:1px solid var(--row-border);
  vertical-align:top;
}
tbody tr:hover{background: var(--row-hover-bg)}
body[data-density="compact"] thead th{
  padding:9px 10px;
  font-size:11px;
}
body[data-density="compact"] tbody td{
  padding:8px 10px;
}
body[data-density="compact"] .mini{
  margin-top:3px;
}
.badge{
  display:inline-flex; align-items:center; gap:6px;
  padding:6px 10px; border-radius:999px;
  font-size:12px; font-weight:900;
  border:1px solid rgba(148,163,184,.18);
}
.badge.ok{background: var(--badge-ok-bg); border-color: var(--badge-ok-border); color:var(--badge-ok-text)}
.badge.warn{background: var(--badge-warn-bg); border-color: var(--badge-warn-border); color:var(--badge-warn-text)}
.badge.bad{background: var(--badge-bad-bg); border-color: var(--badge-bad-border); color:var(--badge-bad-text)}
.badge.bus{background: var(--badge-bus-bg); border-color: var(--badge-bus-border); color:var(--badge-bus-text)}
.confidenceBadge{
  font-size:10px;
  padding:4px 8px;
}
.kv{display:flex; flex-direction:column; gap:2px}
.kv .k{font-size:12px; color:var(--muted)}
.kv .v{font-weight:900}
.trainlink{
  border:0;
  padding:0;
  background:transparent;
  color:var(--text);
  font:inherit;
  font-weight:900;
  text-decoration:underline;
  cursor:pointer;
}
.src{font-size:12px; font-weight:900; padding:5px 8px; border-radius:10px; border:1px solid var(--control-border); background: var(--control-bg)}
.src.auto{color:var(--src-auto)}
.src.manual{color:var(--src-manual)}
.src.planned{color:var(--src-planned)}
.src.model{color:var(--src-model)}
.lock{font-size:12px; color:var(--lock-text); font-weight:900; margin-top:6px}
.lock .badge{padding:3px 8px; font-size:10px; margin-right:6px}
.rowLocked > td{
  box-shadow: inset 0 0 0 1px rgba(239, 68, 68, 0.35);
}
.rowLocked > td:first-child{
  border-left:3px solid var(--lock-text);
}
.rowbtn{
  background: transparent;
  border:1px solid var(--control-border);
  color:var(--text);
  padding:6px 8px;
  border-radius:10px;
  cursor:pointer;
  font-weight:900;
  font-size:12px;
}
.rowbtn:hover{background: var(--row-hover-bg)}
.rowactions{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
}
.modal{
  position:fixed; inset:0;
  background: var(--modal-backdrop);
  display:none;
  align-items:center; justify-content:center;
  padding:18px;
  z-index:50;
}
.modal.show{display:flex}
.panel{
  width:min(920px, 96vw);
  background: var(--panel-bg);
  border:1px solid var(--panel-border);
  border-radius:18px;
  overflow:hidden;
  max-height:92vh;
  display:flex;
  flex-direction:column;
}
.panel.panelWide{
  width:min(1480px, 99vw);
}
.panelhdr{
  padding:14px 14px;
  border-bottom:1px solid var(--line);
  display:flex; align-items:center; justify-content:space-between; gap:12px;
}
.panelhdr .title{font-weight:900}
.panelbody{
  padding:14px;
  overflow:auto;
  flex:1 1 auto;
  min-height:0;
}
.grid{display:grid; grid-template-columns: 1fr 1fr; gap:12px}
@media (max-width:800px){.grid{grid-template-columns:1fr}}
.field label{display:block; font-size:12px; color:var(--muted); margin-bottom:6px; font-weight:900}
.field input, .field select, .field textarea{
  width:100%;
  background: var(--control-bg);
  border:1px solid var(--control-border);
  color:var(--text);
  padding:10px 10px;
  border-radius:12px;
}
.field textarea{min-height:110px; resize:vertical}
.panelactions{
  display:flex;
  gap:10px;
  justify-content:flex-end;
  padding:14px;
  border-top:1px solid var(--line);
  flex-wrap:wrap;
  flex:0 0 auto;
}
.notice{
  border:1px solid var(--notice-border);
  background: var(--notice-bg);
  border-radius:14px;
  padding:10px 12px;
  color:var(--notice-text);
  font-size:12px;
}
.notice.warn{
  border-color: var(--warning-border);
  background: var(--warning-bg);
  color: var(--warning-text);
}
.saveToast{
  position:fixed;
  right:16px;
  bottom:16px;
  z-index:1200;
  max-width:min(420px, calc(100vw - 32px));
  border:1px solid rgba(34,197,94,.22);
  background: rgba(22,101,52,.94);
  color:#ecfdf5;
  border-radius:14px;
  padding:11px 14px;
  font-size:12px;
  line-height:1.45;
  box-shadow:0 16px 36px rgba(2,6,23,.28);
  opacity:0;
  transform:translateY(10px);
  pointer-events:none;
  transition:opacity .18s ease, transform .18s ease;
}
.saveToast.is-visible{
  opacity:1;
  transform:translateY(0);
}
.saveToast.warn{
  border-color: var(--warning-border);
  background: var(--warning-bg);
  color: var(--warning-text);
}
.saveToast.ok{
  border-color: rgba(34,197,94,.22);
}
.diff{
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size:12px;
  white-space:pre-wrap;
  background: var(--diff-bg);
  border:1px solid var(--diff-border);
  border-radius:14px;
  padding:10px 12px;
  max-height:240px;
  overflow:auto;
}
.detailProjectionList{
  display:flex;
  flex-direction:column;
  gap:8px;
  max-height:240px;
  overflow:auto;
}
.detailProjectionItem{
  border:1px solid var(--diff-border);
  background: var(--diff-bg);
  border-radius:14px;
  padding:10px 12px;
}
.overnightTimelineWrap{
  border:1px solid var(--diff-border);
  border-radius:16px;
  background: linear-gradient(180deg, var(--diff-bg), var(--control-bg));
  max-height:min(42vh, 360px);
  overflow:auto;
}
.overnightTimelineTable{
  width:100%;
  min-width:920px;
  border-collapse:separate;
  border-spacing:0;
}
.overnightTimelineTable thead th{
  position:-webkit-sticky;
  position:sticky;
  top:0;
  z-index:2;
  background: var(--thead-bg);
  border-bottom:1px solid var(--line);
  box-shadow:0 1px 0 rgba(255,255,255,.08);
}
.overnightTimelineTable thead th:first-child{border-top-left-radius:16px}
.overnightTimelineTable thead th:last-child{border-top-right-radius:16px}
.overnightTimelineTable thead th:nth-child(1){min-width:190px}
.overnightTimelineTable thead th:nth-child(2){min-width:92px}
.overnightTimelineTable thead th:nth-child(n+3){min-width:126px}
.overnightTimelineTable tbody td{
  border-bottom:1px solid var(--diff-border);
  background: transparent;
}
.overnightTimelineTable tbody tr:nth-child(even) td{
  background: var(--row-hover-bg);
}
.overnightTimelineTable tbody tr:last-child td{
  border-bottom:0;
}
.overnightTimelineStop{
  font-weight:900;
  color:var(--text);
  line-height:1.35;
}
.overnightTimelineMeta{
  margin-top:6px;
}
.overnightTimelineChip,
.overnightTimelineDay{
  display:inline-flex;
  align-items:center;
  min-height:24px;
  padding:3px 9px;
  border-radius:999px;
  border:1px solid var(--control-border);
  background: var(--control-bg);
  color:var(--muted-strong);
  font-size:11px;
  font-weight:900;
  line-height:1;
  white-space:nowrap;
}
.overnightTimelineChip{
  text-transform:uppercase;
  letter-spacing:.03em;
}
.overnightTimelineValue{
  display:block;
  color:var(--text);
  font-variant-numeric:tabular-nums;
  line-height:1.45;
}
.detailProjectionHead{
  display:flex;
  flex-wrap:wrap;
  gap:8px 12px;
  align-items:baseline;
  justify-content:space-between;
}
.detailProjectionStation{
  color:var(--text);
  font-weight:900;
}
.detailProjectionEta{
  color:var(--muted-strong);
  font-size:12px;
  font-weight:800;
}
.detailProjectionMeta{
  display:flex;
  flex-wrap:wrap;
  gap:6px 12px;
  margin-top:6px;
  font-size:11px;
  color:var(--muted);
}
.adminHub{
  display:flex;
  flex-direction:column;
  gap:14px;
}
.adminSummaryGrid{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(140px, 1fr));
  gap:10px;
}
.adminSummaryCard{
  border:1px solid var(--control-border);
  border-radius:14px;
  background: var(--control-bg);
  padding:12px;
}
.adminSummaryCard .label{
  font-size:11px;
  color:var(--muted);
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.04em;
}
.adminSummaryCard .value{
  margin-top:6px;
  font-size:24px;
  line-height:1;
  color:var(--text);
  font-weight:900;
}
.adminSection{
  border:1px solid var(--control-border);
  border-radius:16px;
  background: var(--control-bg);
  padding:14px;
}
.adminSectionTitle{
  font-size:13px;
  color:var(--muted-strong);
  font-weight:900;
}
.adminSectionCopy{
  margin-top:4px;
  font-size:12px;
  color:var(--muted);
}
.adminSectionActions{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin-top:12px;
}
.adminToolGrid{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(220px, 1fr));
  gap:12px;
  margin-top:12px;
}
.adminToolCard{
  border:1px solid var(--diff-border);
  border-radius:14px;
  background: var(--diff-bg);
  padding:12px;
  display:flex;
  flex-direction:column;
  gap:8px;
}
.adminToolTitle{
  font-size:13px;
  color:var(--text);
  font-weight:900;
}
.adminToolCopy{
  font-size:12px;
  color:var(--muted);
  line-height:1.4;
}
.adminToolActions{
  margin-top:auto;
}
.adminToolActions .btn{
  width:100%;
  justify-content:center;
}
.adminSettingsNotice{
  margin-top:0;
}
.adminWorkspace{
  display:flex;
  flex-direction:column;
  gap:14px;
  min-width:0;
}
.adminWorkspaceStatusBanner{
  border:1px solid var(--control-border);
  border-radius:14px;
  padding:10px 12px;
  font-size:12px;
  line-height:1.45;
  font-weight:800;
}
.adminWorkspaceStatusBanner.is-info{
  border-color:rgba(96,165,250,.35);
  background:rgba(30,64,175,.2);
  color:#dbeafe;
}
.adminWorkspaceStatusBanner.is-success{
  border-color:rgba(34,197,94,.38);
  background:rgba(22,101,52,.2);
  color:#dcfce7;
}
.adminWorkspaceStatusBanner.is-error{
  border-color:rgba(248,113,113,.4);
  background:rgba(127,29,29,.32);
  color:#fecaca;
}
.adminWorkspaceStatusBanner.is-hidden{
  display:none;
}
.adminWorkspaceShell{
  display:flex;
  flex-direction:column;
  gap:14px;
  min-width:0;
}
.adminWorkspaceRail{
  min-width:0;
}
.adminWorkspaceRailMeta{
  border:1px solid var(--control-border);
  border-radius:16px;
  background:
    radial-gradient(circle at top right, rgba(96,165,250,.08), transparent 38%),
    linear-gradient(180deg, rgba(255,255,255,.018), rgba(255,255,255,.006));
  padding:12px;
  margin-bottom:12px;
  box-shadow:0 16px 36px rgba(2,6,23,.14);
}
.adminWorkspaceRailTitle{
  font-size:12px;
  font-weight:900;
  color:var(--muted-strong);
  text-transform:uppercase;
  letter-spacing:.04em;
}
.adminWorkspaceRailCopy{
  margin-top:6px;
  font-size:12px;
  line-height:1.5;
  color:var(--muted);
}
.adminWorkspaceTabs{
  display:flex;
  gap:8px;
  flex-wrap:nowrap;
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
  padding-bottom:2px;
}
.adminWorkspaceTabGroup{
  display:flex;
  flex-direction:column;
  gap:6px;
  flex:0 0 min(88vw, 320px);
}
.adminWorkspaceTabGroupLabel{
  font-size:10px;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.06em;
  color:var(--muted);
  padding:0 2px;
}
.adminWorkspaceTab{
  flex:0 0 auto;
  min-height:40px;
  border:1px solid var(--control-border);
  background: var(--control-bg);
  color:var(--muted-strong);
  border-radius:12px;
  padding:8px 12px;
  font-weight:900;
  cursor:pointer;
  white-space:nowrap;
  text-align:left;
  align-items:flex-start;
  justify-content:center;
  display:flex;
  flex-direction:column;
  gap:4px;
}
.adminWorkspaceTab.is-active{
  border-color:var(--accent);
  background: var(--accent-soft);
  color:var(--accent-strong);
  box-shadow:0 0 0 1px rgba(96,165,250,.18) inset;
}
.adminWorkspaceTabLabel{
  display:block;
  font-size:12px;
  font-weight:900;
  line-height:1.2;
}
.adminWorkspaceTabCopy{
  display:none;
  font-size:11px;
  line-height:1.45;
  font-weight:700;
  color:var(--muted);
  white-space:normal;
}
.adminWorkspaceTab.is-active .adminWorkspaceTabCopy{
  color:inherit;
  opacity:.92;
}
.adminWorkspaceBodyWrap{
  min-width:0;
  border:1px solid var(--control-border);
  border-radius:18px;
  background:
    radial-gradient(circle at top right, rgba(96,165,250,.08), transparent 42%),
    linear-gradient(180deg, rgba(255,255,255,.015), rgba(255,255,255,.005));
  padding:14px;
  box-shadow:0 18px 40px rgba(2,6,23,.14);
}
.adminWorkspaceContext{
  border-bottom:1px solid var(--line);
  padding-bottom:12px;
  margin-bottom:14px;
}
.adminWorkspaceContextEyebrow{
  font-size:11px;
  font-weight:900;
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:.04em;
}
.adminWorkspaceContextTitle{
  margin-top:4px;
  font-size:18px;
  line-height:1.2;
  font-weight:900;
  color:var(--text);
}
.adminWorkspaceContextCopy{
  margin-top:6px;
  font-size:12px;
  line-height:1.5;
  color:var(--muted);
  max-width:68ch;
}
.adminWorkspaceBody{
  min-width:0;
}
.adminWorkspaceSection{
  display:flex;
  flex-direction:column;
  gap:12px;
  min-width:0;
}
.adminSectionHeading{
  display:flex;
  flex-direction:column;
  gap:6px;
}
.adminSectionHeadingTitle{
  font-size:15px;
  line-height:1.25;
  font-weight:900;
  color:var(--text);
}
.adminSectionHeadingCopy{
  font-size:12px;
  line-height:1.5;
  color:var(--muted);
}
.adminWorkspaceGrid{
  grid-template-columns:1fr;
}
.adminWorkspaceActionRow{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
}
.adminWorkspaceActionRow .btn{
  flex:0 0 auto;
}
.adminWorkspaceEmpty{
  border:1px dashed var(--control-border);
  border-radius:14px;
  background: var(--diff-bg);
  color:var(--muted);
  padding:14px;
  font-size:12px;
  line-height:1.5;
}
.adminWorkspaceCard{
  border:1px solid var(--control-border);
  border-radius:14px;
  background: var(--control-bg);
  padding:12px;
}
.adminWorkspaceCardTitle{
  font-size:13px;
  font-weight:900;
  color:var(--text);
}
.adminWorkspaceMeta{
  margin-top:6px;
  font-size:12px;
  color:var(--muted);
  line-height:1.45;
}
.fieldReq{
  color:#ef4444;
  font-weight:900;
}
.fieldHint{
  margin-top:6px;
  font-size:11px;
  line-height:1.45;
  color:var(--muted);
}
.adminAdvancedToggle{
  min-width:220px;
}
.adminAdvancedBlock{
  display:flex;
  flex-direction:column;
  gap:10px;
  padding-top:2px;
}
.adminAdvancedBlock.is-hidden{
  display:none;
}
.adminInlineButtons{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:flex-end;
}
.adminInlineButtons .btn{
  flex:0 0 auto;
}
.templatePlaceholderStrip{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  margin-top:8px;
}
.templatePlaceholderChip{
  border:1px solid rgba(96,165,250,.35);
  background:rgba(30,64,175,.24);
  color:#dbeafe;
  border-radius:999px;
  padding:4px 10px;
  font-size:11px;
  font-weight:800;
  cursor:pointer;
}
.templatePlaceholderChip:hover{
  background:rgba(37,99,235,.35);
}
.templatePreviewGrid{
  display:grid;
  grid-template-columns:1fr;
  gap:10px;
  margin-top:8px;
}
.templatePreviewLabel{
  font-size:11px;
  color:var(--muted-strong);
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.04em;
}
.templatePreviewText{
  margin-top:6px;
  border:1px solid var(--control-border);
  border-radius:12px;
  background: var(--control-bg);
  padding:10px;
  font-size:12px;
  line-height:1.45;
  color:var(--text);
  min-height:48px;
}
.templateQualityPill{
  margin-top:10px;
  display:inline-flex;
  align-items:center;
  border:1px solid rgba(148,163,184,.35);
  border-radius:999px;
  padding:4px 10px;
  font-size:11px;
  font-weight:900;
  color:var(--muted-strong);
  background:rgba(8,17,40,.35);
}
.adminWorkspacePreviewCard{
  gap:8px;
}
.adminWorkspacePreviewFrame{
  margin-top:10px;
  border:1px solid rgba(96,165,250,.2);
  border-radius:16px;
  background:
    radial-gradient(circle at top right, rgba(96,165,250,.1), transparent 42%),
    linear-gradient(180deg, rgba(8,17,40,.66), rgba(8,17,40,.82));
  padding:12px;
  display:flex;
  flex-direction:column;
  gap:10px;
}
.adminWorkspacePreviewHeader{
  display:flex;
  justify-content:space-between;
  gap:10px;
  align-items:flex-start;
}
.adminWorkspacePreviewBrand{
  display:flex;
  flex-direction:column;
  gap:3px;
  min-width:0;
}
.adminWorkspacePreviewBrand strong{
  font-size:14px;
  line-height:1.2;
  color:var(--text);
}
.adminWorkspacePreviewBrand span,
.adminWorkspacePreviewMeta span,
.adminWorkspacePreviewMuted{
  font-size:11px;
  line-height:1.45;
  color:var(--muted);
}
.adminWorkspacePreviewMeta{
  display:flex;
  flex-direction:column;
  gap:3px;
  align-items:flex-end;
  text-align:right;
}
.adminWorkspacePreviewBanner{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
  border:1px solid rgba(255,255,255,.06);
  border-radius:14px;
  background: rgba(255,255,255,.035);
  padding:10px;
}
.adminWorkspacePreviewBannerImage{
  flex:0 0 auto;
  display:flex;
  align-items:center;
  justify-content:center;
  min-width:88px;
  max-width:140px;
  min-height:58px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.08);
  background: rgba(3,7,18,.28);
  overflow:hidden;
}
.adminWorkspacePreviewBannerImage img{
  display:block;
  width:100%;
  height:100%;
  max-height:84px;
  object-fit:contain;
}
.adminWorkspacePreviewBannerText{
  flex:1 1 220px;
  font-size:12px;
  line-height:1.5;
  color:var(--text);
}
.adminWorkspacePreviewAlert{
  border-radius:12px;
  border:1px solid rgba(254,215,170,.3);
  background: linear-gradient(135deg, rgba(127,29,29,.9), rgba(194,65,12,.86));
  color:#fff7ed;
  padding:10px 12px;
  font-size:12px;
  line-height:1.45;
  font-weight:800;
}
.adminHiddenFileInput{
  position:absolute;
  width:1px;
  height:1px;
  opacity:0;
  pointer-events:none;
}
.adminBannerMediaCard{
  border:1px solid var(--control-border);
  border-radius:16px;
  background: linear-gradient(180deg, rgba(255,255,255,.018), rgba(255,255,255,.008));
  padding:12px;
}
.adminBannerMediaDrop{
  display:grid;
  grid-template-columns:minmax(120px, 180px) minmax(0, 1fr);
  gap:12px;
  align-items:center;
  border:1px dashed rgba(96,165,250,.34);
  border-radius:14px;
  background:
    radial-gradient(circle at top right, rgba(96,165,250,.1), transparent 45%),
    rgba(8,20,45,.34);
  padding:12px;
  cursor:pointer;
}
.adminBannerMediaDrop.has-image{
  border-style:solid;
}
.adminBannerMediaPreview{
  min-height:88px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.08);
  background: rgba(3,7,18,.42);
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
}
.adminBannerMediaPreview img{
  width:100%;
  height:100%;
  max-height:116px;
  object-fit:contain;
  display:block;
}
.adminBannerMediaPlaceholder{
  font-size:12px;
  line-height:1.45;
  text-align:center;
  color:var(--muted);
  padding:10px;
}
.adminBannerMediaBody{
  min-width:0;
}
.adminBannerMediaTitle{
  font-size:13px;
  font-weight:900;
  color:var(--text);
}
.adminBannerMediaText{
  margin-top:6px;
  font-size:12px;
  line-height:1.5;
  color:var(--muted);
}
.adminBannerMediaActions{
  margin-top:10px;
}
.adminLayoutBuilder{
  display:grid;
  grid-template-columns:1fr;
  gap:16px;
  align-items:start;
}
.adminLayoutPane{
  min-width:0;
  border:1px solid var(--control-border);
  border-radius:16px;
  background:
    radial-gradient(circle at top right, rgba(96,165,250,.08), transparent 38%),
    linear-gradient(180deg, rgba(255,255,255,.018), rgba(255,255,255,.006));
  padding:12px 12px 14px;
  box-shadow:0 16px 36px rgba(2,6,23,.16);
}
.adminLayoutPaneTitle{
  font-size:12px;
  color:var(--muted-strong);
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.04em;
}
.adminLayoutPresetList{
  display:flex;
  flex-direction:column;
  gap:8px;
  margin-top:10px;
}
.adminLayoutPresetPane .adminWorkspaceActionRow{
  margin-top:10px;
  flex-direction:column;
  align-items:stretch;
}
.adminLayoutPresetPane .adminWorkspaceActionRow .btn{
  width:100%;
  justify-content:center;
}
.adminLayoutPresetCard{
  width:100%;
  text-align:left;
  border:1px solid var(--diff-border);
  border-radius:12px;
  background: var(--diff-bg);
  color:var(--text);
  padding:10px 12px;
  cursor:pointer;
}
.adminLayoutPresetCard.is-active{
  border-color:var(--accent);
  background: var(--accent-soft);
}
.adminLayoutPresetName{
  display:block;
  font-size:13px;
  font-weight:900;
}
.adminLayoutPresetMeta{
  display:block;
  margin-top:4px;
  font-size:11px;
  color:var(--muted);
}
.adminLayoutPreview{
  display:flex;
  flex-direction:column;
  gap:8px;
  margin-top:10px;
}
.adminLayoutPreviewHint{
  font-size:12px;
  line-height:1.35;
  color:var(--muted);
}
.adminLayoutPreviewMasthead{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  border:1px solid rgba(255,255,255,.06);
  border-radius:14px;
  background: rgba(8,20,45,.38);
  padding:10px 12px;
}
.adminLayoutPreviewBrand{
  font-size:12px;
  font-weight:900;
  color:var(--text);
  text-transform:uppercase;
  letter-spacing:.04em;
}
.adminLayoutPreviewDevice{
  font-size:11px;
  color:var(--muted);
  text-align:right;
}
.adminLayoutPreviewFrame{
  border:1px solid rgba(148,163,184,.18);
  border-radius:18px;
  background:
    linear-gradient(180deg, rgba(8,17,40,.94), rgba(5,12,31,.96)),
    radial-gradient(circle at top right, rgba(96,165,250,.14), transparent 36%);
  padding:10px;
  min-height:clamp(560px, 62vh, 760px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05);
}
.adminLayoutPreviewHeader{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(220px, 1fr));
  gap:8px;
  align-items:start;
  margin-bottom:10px;
}
.adminLayoutPreviewFrame > .adminLayoutZone--banner{
  margin-bottom:8px;
}
.adminLayoutZone{
  border:1px dashed var(--diff-border);
  border-radius:14px;
  background: linear-gradient(180deg, rgba(15,23,42,.68), rgba(15,23,42,.4));
  padding:8px;
  min-width:0;
  overflow:hidden;
}
.adminLayoutZone--main{
  min-height:240px;
}
.adminLayoutZone--banner{
  min-height:84px;
}
.adminLayoutZone--footer{
  margin-top:8px;
}
.adminLayoutZoneLabel{
  font-size:11px;
  color:var(--muted-strong);
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.04em;
}
.adminLayoutZoneItems{
  display:flex;
  flex-direction:column;
  gap:6px;
  margin-top:7px;
  min-height:44px;
  min-width:0;
}
.adminLayoutZoneEmpty{
  border:1px dashed rgba(255,255,255,.08);
  border-radius:12px;
  color:var(--muted);
  font-size:11px;
  padding:8px;
}
.adminLayoutSectionCard{
  width:100%;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:8px;
  text-align:left;
  border:1px solid rgba(96,165,250,.18);
  border-radius:14px;
  background:
    linear-gradient(180deg, rgba(13,31,70,.9), rgba(8,21,51,.92)),
    radial-gradient(circle at top right, rgba(96,165,250,.14), transparent 34%);
  color:var(--text);
  padding:9px 10px;
  cursor:grab;
  transition:border-color .16s ease, transform .16s ease, opacity .16s ease;
  min-width:0;
  overflow:hidden;
}
.adminLayoutSectionCard:hover{
  border-color:rgba(96,165,250,.34);
}
.adminLayoutSectionCard.is-active{
  border-color:var(--accent);
  box-shadow:0 0 0 1px rgba(96,165,250,.2) inset, 0 10px 20px rgba(2,6,23,.14);
  transform:translateY(-1px);
}
.adminLayoutSectionCard:active{
  cursor:grabbing;
}
.adminLayoutSectionHead{
  width:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  min-width:0;
}
.adminLayoutSectionTitleWrap{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:4px;
  min-width:0;
}
.adminLayoutSectionTitle{
  font-size:12px;
  font-weight:900;
  max-width:100%;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.adminLayoutSectionMeta{
  font-size:11px;
  color:var(--muted);
  max-width:100%;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.adminLayoutVisibilityToggle{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border:1px solid rgba(96,165,250,.22);
  border-radius:999px;
  padding:4px 10px;
  font-size:10px;
  font-weight:900;
  letter-spacing:.04em;
  text-transform:uppercase;
  background: rgba(255,255,255,.06);
  color:var(--text);
}
.adminLayoutVisibilityToggle.is-visible{
  border-color:rgba(34,197,94,.22);
  background:rgba(34,197,94,.14);
  color:#dcfce7;
}
.adminLayoutVisibilityToggle.is-hidden{
  border-color:rgba(248,113,113,.18);
  background:rgba(248,113,113,.12);
  color:#fecaca;
}
.adminLayoutVisibilityToggle.is-locked{
  border-color:rgba(148,163,184,.18);
  background:rgba(148,163,184,.1);
  color:var(--muted);
}
.adminLayoutSectionSample{
  width:100%;
  display:flex;
  flex-direction:column;
  gap:5px;
  padding:8px;
  border-radius:10px;
  background: rgba(255,255,255,.035);
  border:1px solid rgba(255,255,255,.06);
  min-width:0;
  overflow:hidden;
}
.adminLayoutSampleTitle{
  font-size:13px;
  font-weight:900;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.adminLayoutSampleSubtitle{
  font-size:11px;
  line-height:1.35;
  color:var(--muted);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.adminLayoutSampleText{
  font-size:11px;
  line-height:1.35;
  color:var(--muted);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.adminLayoutSampleBannerVisual{
  display:block;
  width:100%;
  min-height:36px;
  border-radius:10px;
  overflow:hidden;
  border:1px solid rgba(255,255,255,.08);
  background: rgba(3,7,18,.42);
}
.adminLayoutSampleBannerVisual--logo{
  max-width:72px;
  min-height:44px;
}
.adminLayoutSampleBannerVisual--logo img{
  height:44px;
}
.adminLayoutSampleBannerVisual img{
  display:block;
  width:100%;
  height:36px;
  object-fit:contain;
}
.adminLayoutSampleTag{
  display:inline-flex;
  align-items:center;
  align-self:flex-start;
  border-radius:999px;
  padding:2px 8px;
  font-size:10px;
  font-weight:900;
  letter-spacing:.03em;
  text-transform:uppercase;
  background: rgba(96,165,250,.14);
  color:var(--text);
}
.adminLayoutSampleTag.is-alert{
  background: rgba(239,68,68,.18);
  color:#fecaca;
}
.adminLayoutSampleList,
.adminLayoutSampleTable,
.adminLayoutSampleTableRow{
  display:grid;
  gap:4px;
  min-width:0;
}
.adminLayoutSampleList{
  grid-template-columns:1fr;
}
.adminLayoutSampleTable,
.adminLayoutSampleTableRow{
  grid-template-columns:repeat(3, minmax(0, 1fr));
}
.adminLayoutSampleList span,
.adminLayoutSampleTable span,
.adminLayoutSampleTableRow span{
  border-radius:10px;
  padding:4px 6px;
  font-size:10px;
  font-weight:800;
  background: rgba(255,255,255,.05);
  color:var(--text);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.adminLayoutSampleTableRow span{
  background: rgba(96,165,250,.1);
}
.adminLayoutSubhead{
  font-size:11px;
  color:var(--muted-strong);
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.04em;
}
.adminLayoutHiddenTray{
  margin-top:12px;
  padding-top:12px;
  border-top:1px solid var(--line);
}
.adminLayoutHiddenList{
  display:flex;
  flex-direction:column;
  gap:8px;
  margin-top:8px;
}
.adminLayoutHiddenCard{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  border:1px solid var(--diff-border);
  border-radius:12px;
  background: rgba(8,17,40,.32);
  padding:8px 10px;
  cursor:grab;
}
.adminLayoutHiddenCard:active{
  cursor:grabbing;
}
.adminLayoutHiddenText{
  display:flex;
  flex-direction:column;
  gap:3px;
  min-width:0;
}
.adminLayoutHiddenTitle{
  font-size:12px;
  font-weight:800;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.adminLayoutHiddenMeta{
  font-size:11px;
  color:var(--muted);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.adminLayoutHiddenEmpty{
  border:1px dashed rgba(255,255,255,.08);
  border-radius:12px;
  padding:8px 10px;
  font-size:11px;
  color:var(--muted);
}
.adminLayoutInspectorBlock{
  margin-top:12px;
  border-top:1px solid var(--line);
  padding-top:12px;
  display:flex;
  flex-direction:column;
  gap:10px;
}
.adminLayoutInspectorBlock .field{
  margin:0;
}
.adminLayoutInspectorStatus{
  border:1px solid rgba(148,163,184,.18);
  border-radius:12px;
  background: rgba(8,17,40,.32);
  padding:9px 10px;
  font-size:12px;
  color:var(--text);
}
.adminLayoutInspectorActions{
  display:flex;
  flex-direction:column;
  gap:8px;
}
.adminLayoutInspectorActions .btn{
  width:100%;
  justify-content:center;
}
@media (min-width: 901px){
  .adminWorkspaceShell{
    display:grid;
    grid-template-columns:minmax(240px, 280px) minmax(0, 1fr);
    align-items:start;
    gap:18px;
  }
  .adminWorkspaceRail{
    position:sticky;
    top:0;
  }
  .adminWorkspaceTabs{
    flex-direction:column;
    overflow:visible;
    padding-bottom:0;
    gap:10px;
  }
  .adminWorkspaceTabGroup{
    min-width:0;
    flex:0 0 auto;
  }
  .adminWorkspaceTab{
    width:100%;
    min-height:74px;
    white-space:normal;
  }
  .adminWorkspaceTabCopy{
    display:block;
  }
  .adminWorkspaceBodyWrap{
    min-height:100%;
  }
  .adminLayoutBuilder{
    grid-template-columns:minmax(0, 1.85fr) minmax(300px, 380px);
    grid-template-areas:
      "preview presets"
      "preview inspector";
  }
  .adminLayoutPreviewPane{
    grid-area:preview;
    min-width:0;
  }
  .adminLayoutPresetPane{
    grid-area:presets;
  }
  .adminLayoutInspectorPane{
    grid-area:inspector;
  }
}
@media (max-width: 1320px){
  .adminLayoutBuilder{
    grid-template-columns:1fr;
    grid-template-areas:none;
  }
  .adminLayoutPreviewFrame{
    min-height:460px;
  }
}

@media (max-width:800px){
  .adminSectionActions{
    flex-direction:column;
    align-items:stretch;
  }
  .adminInlineButtons{
    align-items:stretch;
  }
  .adminInlineButtons .btn{
    width:100%;
    justify-content:center;
  }
}
@media (max-width:800px){
  .detailProjectionHead,
  .detailProjectionMeta{
    flex-direction:column;
    align-items:flex-start;
    gap:4px;
  }
}

.pbar{height:8px; border-radius:999px; background: var(--progress-track); overflow:hidden; margin-top:8px}
.pbar > i{display:block; height:100%; background: var(--progress-fill)}
.mini{font-size:11px; color: var(--muted); margin-top:6px}
.qualityWarn{color:var(--badge-warn-text); font-weight:800}
.k2{font-size:11px; color: var(--muted); font-weight:900; margin-top:6px}
.groupRow td{background: var(--group-row-bg); border-bottom:1px solid var(--line); font-weight:900}
.badge.model{background: var(--badge-model-bg); border-color: var(--badge-model-border); color:var(--badge-model-text)}
.overnightHint td{background: var(--warning-row-bg)}
.overnightBanner{
  border:1px solid var(--warning-border);
  background: var(--warning-bg);
  border-radius:12px;
  padding:10px 12px;
  font-size:12px;
  color:var(--warning-text);
  font-weight:800;
}
.overnightTimes{
  display:flex;
  flex-direction:column;
  gap:4px;
  margin-top:8px;
}
.overnightTimes .tzrow{
  font-size:11px;
  color:var(--muted);
}
.overnightTimes .label{
  color:var(--text);
  font-weight:900;
  margin-right:6px;
}
.overnightMeta{
  font-size:11px;
  color:var(--muted);
  margin-top:8px;
}
.overnightCellTitle{
  font-size:12px;
  font-weight:900;
  color:var(--muted-strong);
  margin-bottom:4px;
}
.overnightKeyLine{
  font-size:12px;
  color:var(--text);
  margin-top:4px;
  display:flex;
  flex-wrap:wrap;
  gap:6px;
}
.overnightKeyLine .label{
  color:var(--muted-strong);
  font-weight:900;
}
.toggle{display:inline-flex; gap:8px; align-items:center; white-space:nowrap}
.toggle input{width:16px; height:16px; margin:0; flex:0 0 auto}
#groupControl,
#hideArrivedControl{
  display:inline-flex;
  align-items:center;
  justify-content:flex-start;
  gap:8px;
  flex:0 0 auto;
  border:1px solid var(--control-border);
  background: var(--control-bg);
  border-radius:10px;
  padding:6px 10px;
}
#groupControl .smallmuted,
#hideArrivedControl .smallmuted{
  color:var(--text);
  font-weight:800;
  line-height:1.1;
}
select.sel{background: var(--control-bg); border:1px solid var(--control-border); color:var(--text); padding:9px 10px; border-radius:12px}

.nextstop{font-weight:800}
.nexteta{font-size:11px;color:var(--muted);margin-top:4px}

@media (max-width: 900px){
  .panel.panelWide{
    width:min(100%, 98vw);
  }
  .header{
    padding:10px 12px;
    flex-direction:column;
    align-items:flex-start;
    gap:10px;
  }
  .brand,
  .actions{
    width:100%;
  }
  .actions{
    justify-content:flex-start;
    flex-wrap:nowrap;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
    padding-bottom:2px;
  }
  .actions > *{
    flex:0 0 auto;
  }
  .tabs{
    padding:8px 12px;
    flex-wrap:nowrap;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
  }
  .importantMessageBanner{
    padding:8px 12px 0 12px;
  }
  .importantMessageBannerCard{
    flex-direction:column;
    gap:8px;
  }
  .toolbar{
    position:static;
    padding:10px;
    gap:8px;
  }
  .dashboardTopSectionBar{
    flex-wrap:wrap;
    align-items:flex-start;
  }
  .search{
    width:100%;
    align-items:center;
  }
  .search input{
    min-width:0;
    flex:1 1 100%;
  }
  .search .sel{
    flex:1 1 auto;
    min-width:140px;
  }
  #groupControl,
  #hideArrivedControl{
    flex:0 0 auto;
    white-space:nowrap;
  }
  #lastUpdated{
    width:100%;
    text-align:left;
  }
  .container{
    padding:10px 12px 20px 12px;
  }
  .adminWorkspaceRailMeta{
    margin-bottom:10px;
  }
  .adminWorkspaceGrid{
    grid-template-columns:1fr;
  }
  .adminLayoutBuilder{
    grid-template-columns:1fr;
  }
  .adminBannerMediaDrop{
    grid-template-columns:1fr;
  }
  .adminWorkspacePreviewHeader{
    flex-direction:column;
    align-items:flex-start;
  }
  .adminWorkspacePreviewMeta{
    align-items:flex-start;
    text-align:left;
  }
  .adminLayoutPreviewMasthead{
    flex-direction:column;
    align-items:flex-start;
  }
  .adminLayoutPreviewDevice{
    text-align:left;
  }
  .adminLayoutPreviewFrame{
    min-height:360px;
  }
}

@media (max-width: 900px){
  .adminLayoutPreviewHeader{
    grid-template-columns:1fr;
  }
}

@media (max-width: 700px){
  .adminWorkspaceBodyWrap{
    padding:12px;
  }
  .adminWorkspaceContextTitle{
    font-size:16px;
  }
  .adminLayoutBuilder{
    grid-template-columns:1fr;
  }
  .adminWorkspaceActionRow{
    flex-direction:column;
    align-items:stretch;
  }
  .adminWorkspaceActionRow .btn{
    width:100%;
    justify-content:center;
  }
  .adminLayoutPreviewFrame{
    padding:10px;
  }
  .adminLayoutZone{
    padding:8px;
  }
  .adminLayoutSectionCard{
    padding:10px;
  }
  .adminLayoutSectionHead{
    align-items:flex-start;
  }
  .adminBannerMediaCard{
    padding:10px;
  }
  .adminWorkspacePreviewBanner{
    padding:8px;
  }
}

@media (max-width: 480px){
  .modal{
    padding:10px;
  }
  .adminWorkspaceRailMeta{
    padding:10px;
  }
  .adminWorkspaceBodyWrap{
    padding:10px;
    border-radius:16px;
  }
  .panelbody,
  .panelactions,
  .panelhdr{
    padding-left:12px;
    padding-right:12px;
  }
  .adminWorkspaceTab{
    gap:2px;
    min-height:38px;
    padding:8px 10px;
  }
  .adminLayoutPane{
    padding:10px;
  }
  .adminBannerMediaDrop{
    padding:10px;
  }
  .adminWorkspacePreviewFrame{
    padding:10px;
  }
  .adminLayoutSectionHead{
    flex-direction:column;
    align-items:flex-start;
  }
  .adminLayoutVisibilityToggle{
    width:100%;
  }
  .adminLayoutPreviewFrame{
    padding:8px;
    border-radius:16px;
  }
  .saveToast{
    left:12px;
    right:12px;
    bottom:12px;
    max-width:none;
  }
}


/* v4.4.2 readability patch */
.modal, .dialog, .sheet, .overlay-card{
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}
/* Make dropdowns readable */
select, option{
  font-size: 14px !important;
}
select{
  background: var(--control-bg) !important;
  color: var(--text) !important;
  border: 1px solid var(--control-border) !important;
}
option{
  background: var(--card) !important;
  color: var(--text) !important;
}
/* Improve list-like selects inside editor */
#msgPick, #statusPick, .editor select{
  width: 100%;
  min-height: 44px;
}
/* If the editor uses a large select list, ensure it’s not tiny */
#msgPick{
  line-height: 1.35;
}
