
: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:#102338; --panel:#17314d; --card:#1d3d5c; --muted:#a7b8ca; --text:#f6f1e8;
  --accent:#f0c64d; --line:#35516e;
  --bg-gradient: radial-gradient(1240px 620px at 24% -12%, #274b74 0%, #17314d 46%, #102338 100%);
  --header-gradient: linear-gradient(90deg, rgba(19,40,63,.95), rgba(16,35,56,.94));
  --card-gradient: linear-gradient(180deg, rgba(31,63,93,.97), rgba(23,49,77,.95));
  --muted-strong:#d8e2ec;
  --toolbar-bg: rgba(19,40,63,.92);
  --thead-bg: rgba(18,38,60,.96);
  --card-border: rgba(187,199,214,.18);
  --btn-bg: rgba(240,198,77,.1);
  --btn-border: rgba(240,198,77,.26);
  --btn-primary-bg: #f0c64d;
  --btn-primary-border: #d5aa2d;
  --btn-primary-text: #1a2e45;
  --btn-ghost-bg: rgba(216,226,236,.1);
  --lang-active-bg: #f0c64d;
  --lang-active-text:#1a2e45;
  --tab-bg: rgba(216,226,236,.11);
  --tab-border: rgba(216,226,236,.2);
  --tab-text: #edf3fa;
  --tab-active-bg: #f0c64d;
  --tab-active-border: #d5aa2d;
  --tab-active-text: #1a2e45;
  --pill-bg: rgba(216,226,236,.09);
  --pill-border: rgba(216,226,236,.2);
  --pill-text: #edf3fa;
  --control-bg: rgba(216,226,236,.08);
  --control-border: rgba(216,226,236,.18);
  --row-border: rgba(53,81,110,.82);
  --row-hover-bg: rgba(240,198,77,.08);
  --modal-backdrop: rgba(7,17,27,.62);
  --panel-bg: linear-gradient(180deg, rgba(28,58,87,.98), rgba(18,39,60,.98));
  --panel-border: rgba(216,226,236,.22);
  --notice-bg: rgba(240,198,77,.1);
  --notice-border: rgba(240,198,77,.26);
  --notice-text: #f7e5a2;
  --diff-bg: rgba(7,17,27,.32);
  --diff-border: rgba(216,226,236,.16);
  --progress-track: rgba(216,226,236,.16);
  --progress-fill: #f0c64d;
  --group-row-bg: rgba(240,198,77,.14);
  --warning-row-bg: rgba(245,158,11,.11);
  --link-color:#f7dd8c;
  --link-hover-color:#fff1c0;
  --link-visited-color:#ddd6fe;
  --badge-ok-bg: rgba(34,197,94,.16);
  --badge-ok-border: rgba(34,197,94,.3);
  --badge-ok-text:#dcfce7;
  --badge-warn-bg: rgba(245,158,11,.18);
  --badge-warn-border: rgba(245,158,11,.34);
  --badge-warn-text:#fde68a;
  --badge-bad-bg: rgba(248,113,113,.16);
  --badge-bad-border: rgba(248,113,113,.3);
  --badge-bad-text:#fee2e2;
  --badge-bus-bg: rgba(192,132,252,.18);
  --badge-bus-border: rgba(192,132,252,.32);
  --badge-bus-text:#f3e8ff;
  --badge-model-bg: rgba(125,211,252,.16);
  --badge-model-border: rgba(125,211,252,.32);
  --badge-model-text:#e0f2fe;
}

body[data-theme="via-day"]{
  --bg:#ecf2f7; --panel:#f7fafc; --card:#ffffff; --muted:#607086; --text:#102541;
  --accent:#0d4ea6; --line:#d2dde9;
  --bg-gradient: radial-gradient(1260px 640px at 18% -12%, #ffffff 0%, #e2ebf4 54%, #ecf2f7 100%);
  --header-gradient: linear-gradient(90deg, rgba(248,251,255,.97), rgba(238,244,250,.96));
  --card-gradient: linear-gradient(180deg, rgba(255,255,255,.99), rgba(247,250,252,.98));
  --muted-strong:#34455d;
  --toolbar-bg: rgba(248,251,255,.95);
  --thead-bg: rgba(241,246,251,.98);
  --card-border: #c8d4e1;
  --btn-bg: rgba(13,78,166,.08);
  --btn-border: rgba(95,119,155,.28);
  --btn-primary-bg: #0f4aa3;
  --btn-primary-border: #0b3d86;
  --btn-primary-text: #f8fbff;
  --btn-ghost-bg: rgba(95,119,155,.08);
  --lang-active-bg: #0f4aa3;
  --lang-active-text:#f8fbff;
  --tab-bg: rgba(13,78,166,.07);
  --tab-border: rgba(95,119,155,.25);
  --tab-text: #214468;
  --tab-active-bg: #0f4aa3;
  --tab-active-border: #0b3d86;
  --tab-active-text: #f8fbff;
  --pill-bg: rgba(13,78,166,.06);
  --pill-border: rgba(95,119,155,.24);
  --pill-text: #214468;
  --control-bg: #ffffff;
  --control-border: #c2d0dd;
  --row-border: #d7e2ec;
  --row-hover-bg: rgba(13,78,166,.05);
  --modal-backdrop: rgba(24,45,78,.24);
  --panel-bg: linear-gradient(180deg, rgba(255,255,255,.99), rgba(245,249,255,.99));
  --panel-border: #c5d4e2;
  --notice-bg: #eff5fb;
  --notice-border: #cfdae5;
  --notice-text: #29445f;
  --diff-bg: #f5f9ff;
  --diff-border: #d3dde8;
  --progress-track: #d5dee8;
  --progress-fill: #0f4aa3;
  --group-row-bg: rgba(13,78,166,.08);
  --warning-row-bg: #fff8ea;
  --warning-bg: #fff4df;
  --warning-border: #eabf6d;
  --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:#eaf3fa; --panel:#f5f9fd; --card:#ffffff; --muted:#5f7186; --text:#102640;
  --accent:#0f63b7; --line:#cbdbea;
  --bg-gradient: radial-gradient(1280px 650px at 18% -12%, #ffffff 0%, #dcebf8 56%, #eaf3fa 100%);
  --header-gradient: linear-gradient(90deg, rgba(246,250,255,.97), rgba(233,242,251,.96));
  --card-gradient: linear-gradient(180deg, rgba(255,255,255,.99), rgba(244,249,253,.98));
  --muted-strong:#345270;
  --toolbar-bg: rgba(246,250,255,.95);
  --thead-bg: rgba(236,244,251,.98);
  --card-border: #bfd3e6;
  --btn-bg: rgba(15,99,183,.08);
  --btn-border: rgba(89,125,167,.27);
  --btn-primary-bg: #0f63b7;
  --btn-primary-border: #0b4f92;
  --btn-primary-text: #f7fbff;
  --btn-ghost-bg: rgba(89,125,167,.08);
  --lang-active-bg: #0f63b7;
  --lang-active-text:#f7fbff;
  --tab-bg: rgba(15,99,183,.07);
  --tab-border: rgba(89,125,167,.24);
  --tab-text: #214d78;
  --tab-active-bg: #0f63b7;
  --tab-active-border: #0b4f92;
  --tab-active-text: #f7fbff;
  --pill-bg: rgba(15,99,183,.06);
  --pill-border: rgba(89,125,167,.22);
  --pill-text: #214d78;
  --control-bg: #ffffff;
  --control-border: #bed2e4;
  --row-border: #d1e1ef;
  --row-hover-bg: rgba(15,99,183,.05);
  --modal-backdrop: rgba(19,43,74,.24);
  --panel-bg: linear-gradient(180deg, rgba(255,255,255,.99), rgba(244,249,253,.98));
  --panel-border: #bed2e4;
  --notice-bg: #eff7ff;
  --notice-border: #c8def2;
  --notice-text: #28517c;
  --diff-bg: #f6fbff;
  --diff-border: #cfe1f0;
  --progress-track: #d7e4f0;
  --progress-fill: #0f63b7;
  --group-row-bg: rgba(15,99,183,.08);
  --warning-row-bg: #fff8e8;
  --warning-bg: #fff5dd;
  --warning-border: #e9c672;
  --warning-text:#8a4b00;
  --src-auto:#0f63b7;
  --src-manual:#b42318;
  --src-planned:#6b21a8;
  --src-model:#0369a1;
  --lock-text:#b42318;
  --link-color:#0f63b7;
  --link-hover-color:#0b528f;
  --link-visited-color:#6b21a8;
}

body[data-theme="maple-sunrise"]{
  --bg:#f8efe5; --panel:#fcf7ef; --card:#fffdf9; --muted:#73645a; --text:#2b3340;
  --accent:#b88a2c; --line:#dcc7b0;
  --bg-gradient: radial-gradient(1260px 640px at 22% -10%, #fff9f1 0%, #f0dfc8 58%, #f8efe5 100%);
  --header-gradient: linear-gradient(90deg, rgba(252,247,239,.97), rgba(246,236,223,.96));
  --card-gradient: linear-gradient(180deg, rgba(255,253,249,.99), rgba(252,244,234,.98));
  --muted-strong:#55463d;
  --toolbar-bg: rgba(252,247,239,.95);
  --thead-bg: rgba(247,238,224,.98);
  --card-border: #d9c3a9;
  --btn-bg: rgba(184,138,44,.08);
  --btn-border: rgba(124,102,74,.24);
  --btn-primary-bg: #b88a2c;
  --btn-primary-border: #9f7416;
  --btn-primary-text: #fffaf2;
  --btn-ghost-bg: rgba(124,102,74,.08);
  --lang-active-bg: #b88a2c;
  --lang-active-text:#fffaf2;
  --tab-bg: rgba(124,102,74,.1);
  --tab-border: rgba(124,102,74,.22);
  --tab-text: #52463d;
  --tab-active-bg: #e0bd72;
  --tab-active-border: #cda757;
  --tab-active-text: #493c28;
  --pill-bg: rgba(124,102,74,.1);
  --pill-border: rgba(124,102,74,.22);
  --pill-text: #52463d;
  --control-bg: #fffdf9;
  --control-border: #d9c3a9;
  --row-border: rgba(220,199,176,.9);
  --row-hover-bg: rgba(184,138,44,.05);
  --modal-backdrop: rgba(52,37,18,.24);
  --panel-bg: linear-gradient(180deg, rgba(255,253,249,.99), rgba(252,244,234,.98));
  --panel-border: #d9c3a9;
  --notice-bg: #f7efe2;
  --notice-border: #dfc79d;
  --notice-text: #624c23;
  --diff-bg: #fff8ef;
  --diff-border: #dec89f;
  --progress-track: rgba(160,132,79,.22);
  --progress-fill: #b88a2c;
  --group-row-bg: rgba(224,189,114,.22);
  --warning-row-bg: #fff8e8;
  --warning-bg: #fff4dd;
  --warning-border: #e7be6c;
  --warning-text:#8a4b00;
  --src-auto:#0f4aa3;
  --src-manual:#b42318;
  --src-planned:#6b21a8;
  --src-model:#0369a1;
  --lock-text:#b42318;
  --link-color:#8e6413;
  --link-hover-color:#6f4d0f;
  --link-visited-color:#6b21a8;
}

body[data-theme="via-classic"]{
  --bg:#14304a; --panel:#1a3b59; --card:#214668; --muted:#afc0d3; --text:#f7f2e7;
  --accent:#efc450; --line:#476688;
  --bg-gradient: radial-gradient(1260px 640px at 22% -12%, #315982 0%, #1a3b59 48%, #14304a 100%);
  --header-gradient: linear-gradient(90deg, rgba(24,55,83,.96), rgba(20,48,74,.95));
  --card-gradient: linear-gradient(180deg, rgba(33,70,104,.97), rgba(24,55,83,.96));
  --muted-strong:#dde6ef;
  --toolbar-bg: rgba(24,55,83,.93);
  --thead-bg: rgba(23,51,77,.97);
  --card-border: rgba(221,230,239,.16);
  --btn-bg: rgba(239,196,80,.1);
  --btn-border: rgba(239,196,80,.24);
  --btn-primary-bg: #efc450;
  --btn-primary-border: #d5aa2d;
  --btn-primary-text: #1f3249;
  --btn-ghost-bg: rgba(221,230,239,.1);
  --lang-active-bg: #efc450;
  --lang-active-text:#1f3249;
  --tab-bg: rgba(221,230,239,.11);
  --tab-border: rgba(221,230,239,.18);
  --tab-text: #f3f7fb;
  --tab-active-bg: #efc450;
  --tab-active-border: #d5aa2d;
  --tab-active-text: #1f3249;
  --pill-bg: rgba(221,230,239,.09);
  --pill-border: rgba(221,230,239,.18);
  --pill-text: #f3f7fb;
  --control-bg: rgba(221,230,239,.08);
  --control-border: rgba(221,230,239,.18);
  --row-border: rgba(71,102,136,.76);
  --row-hover-bg: rgba(239,196,80,.08);
  --modal-backdrop: rgba(8,18,31,.6);
  --panel-bg: linear-gradient(180deg, rgba(33,70,104,.98), rgba(24,55,83,.98));
  --panel-border: rgba(239,196,80,.24);
  --notice-bg: rgba(239,196,80,.09);
  --notice-border: rgba(239,196,80,.24);
  --notice-text: #f6e4a4;
  --diff-bg: rgba(9,23,40,.34);
  --diff-border: rgba(221,230,239,.16);
  --progress-track: rgba(221,230,239,.15);
  --progress-fill: #efc450;
  --group-row-bg: rgba(239,196,80,.13);
  --warning-row-bg: rgba(245,158,11,.1);
  --link-color:#f7dd8c;
  --link-hover-color:#fff1c0;
  --link-visited-color:#e9d5ff;
}

body[data-theme="via-gold"]{
  --bg:#f6f0e2; --panel:#fcf8ee; --card:#fffdf9; --muted:#6b6456; --text:#1c2d43;
  --accent:#0f4aa3; --line:#dbcda8;
  --bg-gradient: radial-gradient(1280px 650px at 18% -10%, #fff8e6 0%, #efe2c1 58%, #f6f0e2 100%);
  --header-gradient: linear-gradient(90deg, rgba(252,247,236,.97), rgba(246,237,216,.96));
  --card-gradient: linear-gradient(180deg, rgba(255,253,249,.99), rgba(250,243,229,.99));
  --muted-strong:#4f483d;
  --toolbar-bg: rgba(252,247,236,.95);
  --thead-bg: rgba(247,237,213,.98);
  --card-border: #d9ca9f;
  --btn-bg: rgba(15,74,163,.08);
  --btn-border: rgba(15,74,163,.22);
  --btn-primary-bg: #0f4aa3;
  --btn-primary-border: #0b3a7f;
  --btn-primary-text: #f8fbff;
  --btn-ghost-bg: rgba(107,100,86,.08);
  --lang-active-bg: #0f4aa3;
  --lang-active-text:#f8fbff;
  --tab-bg: rgba(107,100,86,.1);
  --tab-border: rgba(107,100,86,.22);
  --tab-text: #3d382f;
  --tab-active-bg: #f0c953;
  --tab-active-border: #d9b13d;
  --tab-active-text: #2f2a1f;
  --pill-bg: rgba(107,100,86,.1);
  --pill-border: rgba(107,100,86,.2);
  --pill-text: #3d382f;
  --control-bg: #fffdf9;
  --control-border: #d9ca9f;
  --row-border: rgba(219,205,168,.88);
  --row-hover-bg: rgba(15,74,163,.05);
  --modal-backdrop: rgba(45,37,15,.26);
  --panel-bg: linear-gradient(180deg, rgba(255,253,249,.99), rgba(250,243,229,.99));
  --panel-border: #d9ca9f;
  --notice-bg: #f8efd5;
  --notice-border: #dfc687;
  --notice-text: #5a4a23;
  --diff-bg: #fff8ea;
  --diff-border: #dec58a;
  --progress-track: rgba(151,132,78,.22);
  --progress-fill: #0f4aa3;
  --group-row-bg: rgba(240,201,83,.22);
  --warning-row-bg: #fff8ea;
  --warning-bg: #fff4df;
  --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:#16343d; --panel:#1d4650; --card:#245460; --muted:#adc8cf; --text:#f4f1e8;
  --accent:#f0c75a; --line:#4f727b;
  --bg-gradient: radial-gradient(1260px 640px at 24% -10%, #316673 0%, #1d4650 48%, #16343d 100%);
  --header-gradient: linear-gradient(90deg, rgba(29,70,80,.96), rgba(22,52,61,.95));
  --card-gradient: linear-gradient(180deg, rgba(36,84,96,.97), rgba(29,70,80,.96));
  --muted-strong:#dde8ea;
  --toolbar-bg: rgba(29,70,80,.93);
  --thead-bg: rgba(27,63,72,.97);
  --card-border: rgba(221,232,234,.15);
  --btn-bg: rgba(240,199,90,.1);
  --btn-border: rgba(240,199,90,.24);
  --btn-primary-bg: #f0c75a;
  --btn-primary-border: #d6ac31;
  --btn-primary-text: #21424b;
  --btn-ghost-bg: rgba(221,232,234,.1);
  --lang-active-bg: #f0c75a;
  --lang-active-text:#21424b;
  --tab-bg: rgba(221,232,234,.1);
  --tab-border: rgba(221,232,234,.18);
  --tab-text: #eef6f7;
  --tab-active-bg: #f0c75a;
  --tab-active-border: #d6ac31;
  --tab-active-text: #21424b;
  --pill-bg: rgba(221,232,234,.09);
  --pill-border: rgba(221,232,234,.18);
  --pill-text: #eef6f7;
  --control-bg: rgba(221,232,234,.08);
  --control-border: rgba(221,232,234,.16);
  --row-border: rgba(79,114,123,.76);
  --row-hover-bg: rgba(240,199,90,.08);
  --modal-backdrop: rgba(7,18,21,.58);
  --panel-bg: linear-gradient(180deg, rgba(36,84,96,.98), rgba(29,70,80,.98));
  --panel-border: rgba(240,199,90,.22);
  --notice-bg: rgba(240,199,90,.09);
  --notice-border: rgba(240,199,90,.24);
  --notice-text: #f6e3a4;
  --diff-bg: rgba(7,18,21,.3);
  --diff-border: rgba(221,232,234,.16);
  --progress-track: rgba(221,232,234,.15);
  --progress-fill: #f0c75a;
  --group-row-bg: rgba(240,199,90,.13);
  --warning-row-bg: rgba(245,158,11,.1);
  --link-color:#f7df95;
  --link-hover-color:#fff0c4;
  --link-visited-color:#ddd6fe;
}

*{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)}
.brandLinks{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  align-items:center;
}
.brandChangeLog,
.brandScreenLink{
  align-self:flex-start;
  border:0;
  background:transparent;
  color:var(--link-color);
  cursor:pointer;
  font-size:12px;
  font-weight:800;
  padding:2px 0 0;
  text-decoration:underline;
  text-underline-offset:2px;
}
.brandChangeLog:hover,
.brandScreenLink:hover{
  color:var(--link-hover-color);
}
.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:1380px;
  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:96px}
.overnightTimelineTable thead th:nth-child(3){min-width:92px}
.overnightTimelineTable thead th:nth-child(n+4){min-width:166px}
.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;
}
.overnightTimelineChip.ok{
  border-color:rgba(34,197,94,.4);
  background:rgba(34,197,94,.12);
  color:#8ef0bf;
}
.overnightTimelineChip.warn{
  border-color:rgba(245,158,11,.5);
  background:rgba(245,158,11,.12);
  color:#ffd28a;
}
.overnightTimelineChip.model{
  border-color:rgba(96,165,250,.5);
  background:rgba(96,165,250,.12);
  color:#a6ccff;
}
.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);
}
.detailTimingSummary{
  display:grid;
  grid-template-columns:repeat(5, minmax(0, 1fr));
  gap:8px;
  margin:0 0 10px;
}
.detailTimingMetric{
  border:1px solid var(--diff-border);
  border-radius:8px;
  background:var(--diff-bg);
  padding:8px 10px;
  min-width:0;
}
.detailTimingMetricValue{
  display:block;
  color:var(--text);
  font-size:18px;
  line-height:1.1;
  font-weight:900;
  font-variant-numeric:tabular-nums;
}
.detailTimingMetricLabel{
  display:block;
  margin-top:3px;
  color:var(--muted);
  font-size:10px;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.04em;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.detailTimingMetric.actual{
  border-color:rgba(34,197,94,.35);
  background:rgba(34,197,94,.09);
}
.detailTimingMetric.estimate{
  border-color:rgba(96,165,250,.35);
  background:rgba(96,165,250,.09);
}
.detailTimingMetric.schedule{
  border-color:rgba(245,158,11,.35);
  background:rgba(245,158,11,.08);
}
.detailTimingMetric.missing{
  border-color:rgba(248,113,113,.35);
  background:rgba(248,113,113,.08);
}
.detailStopTableWrap{
  border:1px solid var(--diff-border);
  border-radius:8px;
  background: var(--diff-bg);
  max-height:340px;
  overflow:auto;
}
.detailStopTable{
  width:100%;
  border-collapse:separate;
  border-spacing:0;
  min-width:1040px;
}
.detailStopTable thead th{
  position:sticky;
  top:0;
  z-index:2;
  background: linear-gradient(180deg, var(--surface-2), var(--control-bg));
  color:var(--muted-strong);
  font-size:11px;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.04em;
  padding:10px 10px;
  text-align:left;
  border-bottom:1px solid var(--line);
}
.detailStopTable tbody td{
  padding:10px 10px;
  border-bottom:1px solid var(--diff-border);
  vertical-align:top;
}
.detailStopTable tbody tr:last-child td{
  border-bottom:0;
}
.detailStopTable tbody tr:nth-child(even) td{
  background: var(--row-hover-bg);
}
.detailStopTable tbody tr.detailStopRow--actual td{
  box-shadow:inset 3px 0 0 rgba(34,197,94,.55);
}
.detailStopTable tbody tr.detailStopRow--estimate td{
  box-shadow:inset 3px 0 0 rgba(96,165,250,.55);
}
.detailStopTable tbody tr.detailStopRow--schedule td{
  box-shadow:inset 3px 0 0 rgba(245,158,11,.55);
}
.detailStopTable tbody tr.detailStopRow--missing td{
  box-shadow:inset 3px 0 0 rgba(248,113,113,.55);
}
.detailStopStation{
  display:block;
  color:var(--text);
  font-weight:900;
}
.detailSourceBadge{
  display:inline-flex;
  align-items:center;
  min-height:18px;
  margin-top:5px;
  padding:1px 7px;
  border-radius:999px;
  border:1px solid var(--control-border);
  color:var(--muted-strong);
  background:var(--control-bg);
  font-size:10px;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.03em;
}
.detailSourceBadge.actual{
  border-color:rgba(34,197,94,.38);
  background:rgba(34,197,94,.12);
  color:#93e5b7;
}
.detailSourceBadge.estimate{
  border-color:rgba(96,165,250,.42);
  background:rgba(96,165,250,.12);
  color:#afd0ff;
}
.detailSourceBadge.schedule{
  border-color:rgba(245,158,11,.42);
  background:rgba(245,158,11,.12);
  color:#ffd58d;
}
.detailSourceBadge.missing{
  border-color:rgba(248,113,113,.42);
  background:rgba(248,113,113,.12);
  color:#fecaca;
}
.detailStopState{
  display:inline-flex;
  align-items:center;
  min-height:22px;
  padding:2px 8px;
  border-radius:999px;
  border:1px solid var(--control-border);
  background: var(--control-bg);
  color:var(--muted-strong);
  font-size:11px;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.03em;
}
.detailStopState.past{
  border-color:rgba(34,197,94,.35);
  background:rgba(34,197,94,.12);
  color:#93e5b7;
}
.detailStopState.next{
  border-color:rgba(245,158,11,.45);
  background:rgba(245,158,11,.12);
  color:#ffd58d;
}
.detailStopState.at_station{
  border-color:rgba(96,165,250,.48);
  background:rgba(96,165,250,.12);
  color:#afd0ff;
}
.detailStopDelayPrimary{
  display:block;
  color:var(--text);
  font-weight:800;
  font-variant-numeric:tabular-nums;
}
.detailStopDelaySub{
  display:block;
  margin-top:2px;
  color:var(--muted);
  font-size:11px;
}
.detailStopPhase,
.detailStopZone{
  display:block;
  line-height:1.35;
  color:var(--text);
  font-variant-numeric:tabular-nums;
}
.stationHistorySummary{
  margin:0 0 8px;
  color:var(--muted-strong);
  font-size:12px;
  line-height:1.45;
}
.stationHistoryWrap{
  max-height:min(62vh, 720px);
  margin-bottom:10px;
}
.stationHistoryTable{
  min-width:860px;
}
.appLogList{
  display:flex;
  flex-direction:column;
  gap:10px;
}
.appLogEntry{
  border:1px solid var(--diff-border);
  border-radius:8px;
  background:var(--diff-bg);
  padding:12px;
}
.appLogHead{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
  margin-bottom:8px;
}
.appLogVersion,
.appLogDate,
.appLogArea{
  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;
}
.appLogVersion{
  color:var(--text);
}
.appLogChanges{
  margin:0;
  padding-left:20px;
  color:var(--text);
  line-height:1.45;
}
.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;
  }
  .detailTimingSummary{
    grid-template-columns:repeat(2, minmax(0, 1fr));
  }
}

@media (max-width:1100px){
  .modal{padding:10px}
  .panel.panelWide{width:min(920px, 100%)}
  .detailStopTableWrap{
    max-height:none;
    overflow:visible;
    border:0;
    background:transparent;
  }
  .detailStopTable,
  .stationHistoryTable,
  .detailStopTable tbody{
    display:block;
    width:100%;
    min-width:0;
  }
  .detailStopTable thead{display:none}
  .detailStopTable tbody{
    display:grid;
    gap:10px;
  }
  .detailStopTable tbody tr{
    display:grid;
    grid-template-columns:repeat(2, minmax(0, 1fr));
    overflow:hidden;
    border:1px solid var(--diff-border);
    border-radius:12px;
    background:var(--diff-bg);
  }
  .detailStopTable tbody td,
  .detailStopTable tbody tr:last-child td{
    display:block;
    min-width:0;
    padding:10px 12px;
    border:0;
    border-bottom:1px solid var(--diff-border);
    background:transparent;
    box-shadow:none;
    overflow-wrap:anywhere;
  }
  .detailStopTable tbody td::before{
    content:attr(data-label);
    display:block;
    margin-bottom:6px;
    color:var(--muted);
    font-size:10px;
    font-weight:900;
    letter-spacing:.07em;
    line-height:1.2;
    text-transform:uppercase;
  }
  .detailStopTable tbody tr.detailStopRow--actual{border-left:4px solid rgba(34,197,94,.7)}
  .detailStopTable tbody tr.detailStopRow--estimate{border-left:4px solid rgba(96,165,250,.7)}
  .detailStopTable tbody tr.detailStopRow--schedule{border-left:4px solid rgba(245,158,11,.7)}
  .detailStopTable tbody tr.detailStopRow--missing{border-left:4px solid rgba(248,113,113,.7)}
  .detailStopTable tbody tr:nth-child(even) td{background:transparent}
  .stationHistoryWrap{max-height:none}
}

@media (max-width:620px){
  .detailStopTable tbody tr{grid-template-columns:1fr}
}

.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)}
.overnightLegendRow td{
  background: var(--surface-2);
  border-bottom:1px solid var(--line);
}
.overnightLegend{
  display:flex;
  flex-wrap:wrap;
  gap:10px 16px;
  margin-top:8px;
}
.overnightLegendItem{
  display:flex;
  align-items:flex-start;
  gap:8px;
  min-width:260px;
  flex:1 1 260px;
}
.overnightLegendText{
  font-size:12px;
  color:var(--text);
  line-height:1.35;
}
.overnightLegendNote{
  margin-top:8px;
  font-size:11px;
  color:var(--muted);
}
.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;
}

.timingSummary{
  margin-top: 6px;
  line-height: 1.35;
}

/* Operations command center overhaul */
.srOnly{
  position:absolute !important;
  width:1px !important;
  height:1px !important;
  padding:0 !important;
  margin:-1px !important;
  overflow:hidden !important;
  clip:rect(0, 0, 0, 0) !important;
  white-space:nowrap !important;
  border:0 !important;
}
body{
  min-height:100vh;
  background-color:var(--bg);
  background-image:
    linear-gradient(rgba(148,163,184,.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(148,163,184,.035) 1px, transparent 1px),
    var(--bg-gradient);
  background-size:32px 32px, 32px 32px, auto;
}
.header{
  display:grid;
  grid-template-columns:minmax(270px, .8fr) minmax(520px, 1.8fr);
  align-items:start;
  gap:24px;
  padding:18px clamp(18px, 3vw, 44px) 16px;
  border-bottom:1px solid var(--card-border);
  box-shadow:0 18px 45px rgba(2,6,23,.14);
}
.brand{gap:6px}
.brandEyebrow{
  color:var(--accent);
  font-size:10px;
  font-weight:950;
  letter-spacing:.16em;
  text-transform:uppercase;
}
.brand h1{
  max-width:520px;
  font-size:clamp(21px, 2vw, 30px);
  letter-spacing:-.035em;
  line-height:1.05;
}
.brand .sub{font-size:12px; line-height:1.4; max-width:560px}
.brandLinks{margin-top:3px}
.suiteNav{
  display:inline-flex;
  gap:3px;
  padding:3px;
  border:1px solid var(--control-border);
  border-radius:10px;
  background:var(--control-bg);
}
.suiteNavLink{
  padding:6px 9px;
  border-radius:7px;
  color:var(--muted-strong);
  font-size:11px;
  font-weight:850;
  text-decoration:none;
}
.suiteNavLink:hover{color:var(--text); background:var(--row-hover-bg)}
.suiteNavLink.active{
  color:var(--btn-primary-text);
  background:var(--btn-primary-bg);
}
.actions{gap:7px; align-content:flex-start}
.actions .btn,
.actions .pill{min-height:34px}
.actions .pill{display:inline-flex; align-items:center}
.tabs{
  padding:11px clamp(18px, 3vw, 44px);
  gap:4px;
  box-shadow:0 12px 30px rgba(2,6,23,.1);
}
.tab{
  min-width:112px;
  padding:10px 16px;
  border-color:transparent;
  border-radius:9px;
  transition:transform .18s ease, background .18s ease, color .18s ease;
}
.tab:hover{transform:translateY(-1px)}
.tab.active{box-shadow:0 8px 22px rgba(15,78,166,.2)}
.container{
  width:min(1880px, 100%);
  margin:0 auto;
  padding:18px clamp(14px, 2.4vw, 38px) 42px;
}
.opsPulse{
  display:grid;
  grid-template-columns:minmax(210px, 1.25fr) repeat(5, minmax(126px, .72fr));
  gap:10px;
  margin-bottom:14px;
}
.opsPulseIntro,
.pulseCard{
  min-height:90px;
  border:1px solid var(--card-border);
  border-radius:15px;
  background:var(--card-gradient);
  box-shadow:0 14px 36px rgba(2,6,23,.16);
}
.opsPulseIntro{
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:3px;
  padding:14px 16px;
}
.opsPulseIntro strong{font-size:17px; letter-spacing:-.02em}
.opsPulseIntro > span:last-child{font-size:11px; color:var(--muted)}
.opsPulseKicker{
  color:var(--accent);
  font-size:10px;
  font-weight:950;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.pulseCard{
  position:relative;
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:5px;
  padding:13px 14px 13px 17px;
  overflow:hidden;
}
.pulseCard::before{
  content:"";
  position:absolute;
  inset:0 auto 0 0;
  width:4px;
  background:var(--accent);
}
.pulseCard.ok::before{background:var(--ok)}
.pulseCard.warn::before{background:var(--warn)}
.pulseCard.bad::before{background:var(--bad)}
.pulseValue{font-size:clamp(22px, 2vw, 30px); font-weight:950; letter-spacing:-.04em; line-height:1}
.pulseLabel{font-size:11px; color:var(--muted-strong); font-weight:800; line-height:1.25}
.card{
  border-radius:18px;
  box-shadow:0 24px 64px rgba(2,6,23,.2);
}
.toolbar{
  padding:13px 14px;
  gap:14px;
}
.search{flex:1; gap:8px}
.searchField{
  display:flex;
  flex-direction:column;
  gap:4px;
  min-width:min(100%, 310px);
}
.searchField > span{
  padding-left:2px;
  color:var(--muted);
  font-size:10px;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.searchField input{
  width:100%;
  min-width:280px;
  min-height:42px;
  padding-left:14px;
  font-size:14px;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.02);
}
.searchField input:focus,
.sel:focus{
  outline:2px solid color-mix(in srgb, var(--accent) 55%, transparent);
  outline-offset:1px;
}
.quickFocus{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:7px;
  padding:9px 14px;
  border-bottom:1px solid var(--line);
  background:color-mix(in srgb, var(--toolbar-bg) 88%, transparent);
}
.quickFocusLabel{
  margin-right:3px;
  color:var(--muted);
  font-size:10px;
  font-weight:950;
  letter-spacing:.1em;
  text-transform:uppercase;
}
.focusChip{
  min-height:30px;
  padding:6px 10px;
  border:1px solid var(--control-border);
  border-radius:999px;
  background:var(--control-bg);
  color:var(--muted-strong);
  cursor:pointer;
  font-size:11px;
  font-weight:850;
  transition:all .16s ease;
}
.focusChip:hover{border-color:var(--accent); color:var(--text)}
.focusChip.active{
  color:var(--btn-primary-text);
  border-color:var(--btn-primary-border);
  background:var(--btn-primary-bg);
  box-shadow:0 6px 18px rgba(15,78,166,.16);
}
.dashboardTopSectionBar{padding:9px 14px}
.shiftBriefings{grid-template-columns:repeat(4, minmax(180px, 1fr)); padding:12px 14px}
.knownIssuesPanel{padding:12px 14px}
.briefCard,
.knownIssueItem{border-radius:14px}
.tablewrap{border-radius:0 0 18px 18px}
thead th{
  padding:13px 12px;
  font-size:10px;
  letter-spacing:.1em;
}
tbody td{padding:14px 12px}
tbody tr{transition:background .16s ease, transform .16s ease}
tbody tr:hover{background:var(--row-hover-bg)}
.trainlink{font-size:15px; font-weight:950}
.badge{letter-spacing:.025em}
.pbar{height:5px; border-radius:999px; overflow:hidden}
.rowactions{gap:5px}
.rowbtn{border-radius:8px}
.modal .panel{
  border-radius:20px;
  box-shadow:0 32px 90px rgba(2,6,23,.42);
}

@media (max-width:1280px){
  .header{grid-template-columns:1fr}
  .actions{justify-content:flex-start}
  .opsPulse{grid-template-columns:repeat(3, 1fr)}
  .opsPulseIntro{grid-column:span 3}
  .shiftBriefings{grid-template-columns:repeat(2, minmax(180px, 1fr))}
}
@media (max-width:760px){
  .header{padding:14px}
  .actions{gap:6px}
  .actions .pill{display:none}
  .tabs{padding:8px 10px; overflow-x:auto; flex-wrap:nowrap}
  .tab{min-width:auto; white-space:nowrap}
  .container{padding:12px 8px 28px}
  .opsPulse{grid-template-columns:repeat(2, 1fr); gap:7px}
  .opsPulseIntro{grid-column:span 2}
  .pulseCard{min-height:76px}
  .toolbar{align-items:stretch}
  .search{align-items:stretch}
  .searchField{width:100%}
  .searchField input{min-width:0}
  .search .sel{flex:1; min-width:135px}
  #lastUpdated{text-align:left}
  .quickFocus{overflow-x:auto; flex-wrap:nowrap}
  .focusChip{white-space:nowrap}
  .shiftBriefings{grid-template-columns:1fr}
}

/* Network Control — service-first workspace */
body.dashboardShell{
  --desk-gold:#cba044;
  --desk-shadow:0 3px 18px rgba(24,43,67,.045);
  background:var(--bg);
  font-variant-numeric:tabular-nums;
  -webkit-font-smoothing:antialiased;
}
body.dashboardShell[data-theme="via-gold"]{
  --bg:#f4f5f7; --panel:#fff; --card:#fff; --text:#1b2d45; --muted:#6e7886;
  --muted-strong:#4a586a; --accent:#264c76; --line:#e5e9ee;
  --card-gradient:#fff; --header-gradient:#fff; --toolbar-bg:#fff; --thead-bg:#f7f9fb;
  --card-border:#e1e6ed; --control-bg:#fff; --control-border:#dce2e9;
  --row-border:#e8ecf1; --row-hover-bg:#f6f8fb;
  --btn-bg:#f4f6f9; --btn-border:#dce2e9; --btn-ghost-bg:transparent;
  --btn-primary-bg:#223f61; --btn-primary-border:#223f61; --btn-primary-text:#fff;
  --pill-bg:#f2f5f8; --pill-border:#e2e7ed; --pill-text:#536276;
  --tab-text:#697586; --tab-active-text:#1b2d45;
  --panel-bg:#fff; --panel-border:#e1e6ed; --modal-backdrop:rgba(16,30,47,.36);
  --notice-bg:#f5f7fa; --notice-border:#e1e6ed; --notice-text:#4a586a;
  --diff-bg:#f8fafc; --diff-border:#e2e8f0;
  --progress-track:#e7edf4; --progress-fill:#7895b6; --group-row-bg:#f1f5f9;
  --badge-ok-bg:#edf7f1; --badge-ok-border:#d3eadc; --badge-ok-text:#267149;
  --badge-warn-bg:#fff7e8; --badge-warn-border:#f3e2bc; --badge-warn-text:#976113;
  --badge-bad-bg:#fdf0ef; --badge-bad-border:#f4d6d3; --badge-bad-text:#b34740;
}
.dashboardShell :is(button,a,input,select,summary):focus-visible{
  outline:3px solid var(--accent);
  outline-offset:3px;
}
.skipLink{
  position:fixed; top:10px; left:16px; z-index:1000;
  padding:12px 18px; border-radius:8px;
  color:var(--btn-primary-text); background:var(--btn-primary-bg);
  transform:translateY(-160%);
}
.skipLink:focus{transform:translateY(0)}
.dashboardShell .header{
  position:relative; top:auto;
  display:flex; align-items:center; justify-content:space-between;
  gap:24px; padding:23px clamp(20px,3vw,48px) 20px;
  color:var(--text); background:var(--card);
  border-bottom:1px solid var(--line); box-shadow:none;
}
.dashboardShell .header::before{
  content:""; position:absolute; top:0; left:0; right:0; height:3px;
  background:linear-gradient(90deg,var(--desk-gold),color-mix(in srgb,var(--desk-gold) 20%,var(--card)));
}
.dashboardShell .brand{display:flex; flex-direction:row; align-items:flex-start; gap:16px; min-width:0}
.brandMark{
  display:grid; place-items:center; flex:none;
  width:48px; height:52px; margin-top:3px;
  border:1px solid color-mix(in srgb,var(--desk-gold) 40%,var(--line));
  border-radius:13px; color:var(--desk-gold);
  background:color-mix(in srgb,var(--desk-gold) 7%,var(--card));
}
.brandMark svg{width:30px; height:30px}
.brandText{display:flex; flex-direction:column; align-items:flex-start; gap:7px; min-width:0}
.dashboardShell .brandEyebrow{color:var(--muted); font-size:9px; font-weight:650; letter-spacing:.15em}
.dashboardShell .brand h1{color:var(--text); font-size:27px; font-weight:680; letter-spacing:-.045em; line-height:1.1}
.dashboardShell .brand .sub{color:var(--muted); max-width:460px; font-size:12px; font-weight:400; line-height:1.5}
.dashboardShell .suiteNav{margin-top:3px; padding:0; gap:18px; border:0; border-radius:0; background:transparent}
.dashboardShell .suiteNavLink{padding:3px 0; border-radius:0; color:var(--muted); font-size:11px; font-weight:550}
.dashboardShell .suiteNavLink.active{color:var(--text); background:transparent; box-shadow:none; font-weight:700}
.dashboardShell .suiteNavLink:hover{background:transparent; color:var(--accent)}
.dashboardShell .actions{display:flex; flex-direction:column; align-items:flex-end; gap:15px; overflow:visible}
.dashboardShell .actionControls{flex:0 1 auto; min-width:0}
.dashboardShell .actionStatus,.dashboardShell .actionControls{display:flex; flex-wrap:wrap; justify-content:flex-end; gap:8px; max-height:none; overflow:visible}
.dashboardShell .header .btn{
  min-height:38px; padding:9px 13px; border-radius:8px;
  font-size:12px; font-weight:600; box-shadow:none; text-decoration:none;
}
.dashboardShell .header .btn.ghost{
  border-color:var(--control-border); color:var(--muted-strong); background:var(--btn-ghost-bg);
}
.dashboardShell .header .btn.ghost:hover{border-color:var(--muted); color:var(--text); background:var(--row-hover-bg)}
.dashboardShell .header .btn.primary{color:var(--btn-primary-text); border-color:var(--btn-primary-border); background:var(--btn-primary-bg); box-shadow:0 3px 6px rgba(24,43,67,.09)}
.dashboardShell .header .langswitch{border:1px solid var(--control-border); border-radius:7px; overflow:hidden}
.dashboardShell .header .langbtn{min-height:27px; min-width:32px; padding:4px 7px; border:0; border-radius:0; font-size:10px}
.dashboardShell .header .langbtn.active{background:var(--pill-bg); color:var(--text)}
.dashboardShell .header .langbtn + .langbtn{border-left:1px solid var(--control-border)}
.dashboardShell .header .pill{display:inline-flex; min-height:0; border-color:var(--pill-border); color:var(--pill-text); background:var(--pill-bg); font-size:10px; font-weight:500}
.utilityMenu{position:relative}
.utilityMenu summary{list-style:none; gap:9px; user-select:none}
.utilityMenu summary::-webkit-details-marker{display:none}
.utilityMenu summary::after{content:""; width:5px; height:5px; border-right:1.5px solid currentColor; border-bottom:1.5px solid currentColor; transform:translateY(-2px) rotate(45deg)}
.utilityMenu[open] summary::after{transform:translateY(1px) rotate(225deg)}
.utilityMenuPanel{
  position:absolute; top:calc(100% + 10px); right:0; z-index:80;
  display:flex; flex-direction:column; gap:3px; width:260px; padding:8px;
  border:1px solid var(--card-border); border-radius:12px;
  background:var(--card); box-shadow:0 12px 40px rgba(24,43,67,.14);
}
.dashboardShell .utilityMenuPanel .btn.ghost{justify-content:flex-start; border:0; width:100%}
.utilityDiagnostics{display:flex; flex-direction:column; align-items:flex-start; gap:6px; padding:12px 8px 6px; border-top:1px solid var(--line)}
.dashboardShell #pillBuild{max-width:228px}
.dashboardShell .tabs{
  display:flex; flex-wrap:nowrap; gap:26px; overflow-x:auto;
  padding:0 clamp(20px,3vw,48px); top:var(--sticky-tabs-top);
  border-bottom:1px solid var(--line); background:var(--card);
  box-shadow:none; backdrop-filter:none;
}
.dashboardShell .tab{
  position:relative; flex:none; min-width:0; min-height:52px; padding:15px 3px;
  border:0; border-bottom:3px solid transparent; border-radius:0;
  color:var(--muted); background:transparent; font-size:12px; font-weight:550;
  white-space:nowrap; box-shadow:none; transform:none;
}
.dashboardShell .tab.active{border-bottom-color:var(--desk-gold); color:var(--text); background:transparent; font-weight:750}
.dashboardShell .tab:hover{color:var(--text); background:transparent; transform:none}
.dashboardShell .container{max-width:1640px; padding:27px clamp(18px,3vw,48px) 48px; outline:none}
.dashboardShell .opsPulse{grid-template-columns:repeat(5,minmax(0,1fr)); gap:14px; margin-bottom:25px}
.dashboardShell .opsPulseIntro{
  grid-column:1 / -1; display:grid; grid-template-columns:1fr auto; gap:6px 24px;
  min-height:0; padding:0 0 5px; border:0; border-radius:0; background:transparent; box-shadow:none;
}
.dashboardShell .opsPulseKicker{grid-column:1 / -1; color:var(--muted); font-size:10px; font-weight:600; letter-spacing:.13em}
.dashboardShell .opsPulseIntro strong{color:var(--text); font-size:23px; font-weight:650; letter-spacing:-.035em}
.dashboardShell .opsPulseIntro > span:last-child{align-self:center; font-size:11px; font-weight:400; color:var(--muted)}
.dashboardShell .pulseCard{
  display:flex; flex-direction:column; justify-content:center; align-items:flex-start; gap:10px;
  min-height:111px; padding:20px 22px; border:1px solid var(--card-border); border-radius:11px;
  background:var(--card); box-shadow:var(--desk-shadow);
}
.dashboardShell .pulseCard::before{display:none}
.dashboardShell .pulseValue{font-size:33px; font-weight:620; letter-spacing:-.05em; line-height:1; color:var(--text)}
.dashboardShell .pulseLabel{font-size:11px; font-weight:500; line-height:1.4; color:var(--muted)}
.dashboardShell .pulseCard.warn .pulseValue{color:var(--badge-warn-text)}
.dashboardShell .pulseCard.bad .pulseValue{color:var(--badge-bad-text)}
.dashboardShell .pulseCard.ok .pulseValue{color:var(--badge-ok-text)}
.dashboardShell .card{border-radius:13px; background:var(--card); box-shadow:var(--desk-shadow)}
.serviceBoardHeading{display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:16px; padding:22px 23px 19px}
.serviceBoardHeading h2{margin:0; font-size:18px; font-weight:650; letter-spacing:-.025em}
.serviceBoardHeading p{margin:6px 0 0; color:var(--muted); font-size:11px; line-height:1.5}
.serviceBoardMeta{display:flex; flex-direction:column; align-items:flex-end; gap:9px}
.dashboardShell #counts{padding:5px 9px; border-radius:6px; color:var(--muted-strong); background:var(--pill-bg); font-size:10px; font-weight:600}
.dashboardShell #lastUpdated{color:var(--muted); font-size:10px; font-weight:400; text-align:right}
.dashboardShell .toolbar{padding:0 23px 16px; border-bottom:0; background:var(--card); backdrop-filter:none}
.dashboardShell .search{display:flex; flex:1; gap:12px; min-width:0; align-items:center}
.dashboardShell .searchField{position:relative; flex:1 1 240px; min-width:190px; width:auto}
.searchIcon{position:absolute; width:17px; height:17px; top:12px; left:13px; color:var(--muted); pointer-events:none}
.dashboardShell .searchField input{min-width:0; min-height:42px; padding:11px 13px 11px 39px; border-radius:8px; background:var(--control-bg); font-size:12px}
.dashboardShell .search .sel{min-height:42px; border-radius:8px; font-size:12px !important}
.dashboardShell .search .toggle{display:inline-flex; flex:none; align-items:center; gap:7px; padding:0; border:0; background:transparent; white-space:nowrap}
.dashboardShell .search .toggle input[type="checkbox"]{min-width:15px; width:15px; min-height:15px; height:15px; margin:0; padding:0; accent-color:var(--accent)}
.dashboardShell .search .toggle .smallmuted{color:var(--muted); font-size:11px; font-weight:450}
.dashboardShell .quickFocus{gap:7px; padding:0 23px 17px; border-bottom:1px solid var(--line); background:var(--card)}
.dashboardShell .quickFocusLabel{margin-right:5px; color:var(--muted); font-size:9px; font-weight:600; letter-spacing:.07em}
.dashboardShell .focusChip{min-height:30px; padding:6px 11px; border-color:var(--control-border); background:transparent; color:var(--muted-strong); font-size:10px; font-weight:550; box-shadow:none}
.dashboardShell .focusChip.active{background:var(--btn-primary-bg); border-color:var(--btn-primary-border); color:var(--btn-primary-text)}
.dashboardShell .tablewrap{border-radius:0}
.dashboardShell .serviceTable{table-layout:fixed; min-width:1050px}
.dashboardShell .serviceTable thead th{padding:13px 18px; color:var(--muted); font-size:9px; font-weight:600; letter-spacing:.09em}
.dashboardShell .serviceTable tbody td{padding:18px; font-size:12px; line-height:1.55}
.dashboardShell .serviceTable .trainlink{font-size:24px; font-weight:650; letter-spacing:-.04em; text-decoration:none}
.serviceIdentity{display:flex; flex-direction:column; gap:6px}
.serviceIdentityTop{display:flex; align-items:center; gap:16px}
.serviceRouteLink{font-size:10px; font-weight:500; color:var(--muted); text-decoration:none}
.serviceRoute{font-size:10px; font-weight:600; line-height:1.5; letter-spacing:.025em}
.serviceDate{color:var(--muted); font-size:10px}
.dashboardShell .serviceTable .badge{padding:4px 8px; border-radius:5px; font-size:10px; font-weight:700; letter-spacing:.04em}
.dashboardShell .serviceTable .mini{margin-top:7px; color:var(--muted); font-size:11px; font-weight:400; line-height:1.5}
.dashboardShell .serviceTable .pbar{height:3px; margin-top:6px; max-width:220px}
.dashboardShell .serviceTable .timingSummary{padding-top:7px; border-top:1px solid var(--line)}
.dashboardShell .serviceRow td:nth-child(3) .kv .k{font-size:10px; font-weight:450; color:var(--muted)}
.dashboardShell .serviceRow td:nth-child(3) .kv .v{font-size:22px; font-weight:600; letter-spacing:-.04em; line-height:1.3}
.dashboardShell .serviceRow td:nth-child(4) .src{padding:3px 6px; border-color:var(--line); background:var(--pill-bg); font-size:9px; font-weight:550}
.dashboardShell .serviceRow td:nth-child(7){color:var(--muted); font-size:10px}
.dashboardShell .dashboardTopSection{margin-top:0; border-top:1px solid var(--line); border-radius:0 0 13px 13px; overflow:hidden; background:var(--card)}
.dashboardShell .dashboardTopSectionBar{padding:13px 23px; background:var(--card); border-bottom:0}
.dashboardShell .dashboardTopSectionTitle{font-size:11px; font-weight:600; color:var(--muted-strong)}
.dashboardShell .sectionToggleBtn{border:0; color:var(--muted); font-size:10px; font-weight:500; background:var(--row-hover-bg)}
.dashboardShell .dashboardTopSectionBody{display:grid; grid-template-columns:minmax(260px,.85fr) minmax(0,2fr); gap:20px; padding:0 23px 20px}
.dashboardShell .shiftBriefings{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; padding:0; align-content:start; border:0; background:transparent}
.dashboardShell .briefCard{padding:14px; border:1px solid var(--line); border-radius:9px; background:var(--row-hover-bg)}
.dashboardShell .briefTitle{font-size:10px; font-weight:550; color:var(--muted)}
.dashboardShell .briefMetric{margin-top:8px; font-size:24px; font-weight:600}
.dashboardShell .briefLabel,.dashboardShell .briefMeta{font-size:10px; font-weight:400; line-height:1.5}
.dashboardShell .knownIssuesPanel{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; padding:0; border:0; background:transparent}
.dashboardShell .knownIssuesHeader{grid-column:1/-1; font-size:10px; font-weight:550; color:var(--muted)}
.dashboardShell .knownIssueItem{padding:12px; border:1px solid var(--line); border-radius:9px; background:transparent}
.dashboardShell .knownIssueItem .badge{padding:3px 6px; font-size:9px; font-weight:600}
.dashboardShell .knownIssueTitle{font-size:11px; font-weight:600; line-height:1.5}
.dashboardShell .knownIssueMeta{font-size:9px; line-height:1.5}
.dashboardShell .knownIssueWorkaround{font-size:10px; line-height:1.6}
.dashboardShell .modal .panel{border-radius:16px; box-shadow:0 24px 90px rgba(8,22,39,.2)}
.dashboardShell .stationTimelineList{border-radius:12px; background:var(--card)}
.dashboardShell .stationTimelineRow{min-height:78px; align-items:stretch}
.dashboardShell .stationTimelineRow > div{display:flex; flex-direction:column; justify-content:center; padding:13px 14px}
.dashboardShell .stationTimelineTime .detailStopPhase{font-size:12px; font-weight:600; letter-spacing:0; text-transform:none; margin-bottom:0}
.dashboardShell .stationTimelineActual{background:color-mix(in srgb,var(--badge-ok-bg) 45%,var(--card))}
.dashboardShell .stationTimelineActual .mini{display:block; margin-top:7px; color:var(--muted); font-size:10px; line-height:1.5; font-weight:400}
.dashboardShell[data-density="compact"] .serviceTable tbody td{padding:12px 18px}
.dashboardShell[data-density="compact"] .serviceTable .mini{margin-top:4px}
@media (max-width:1120px){
  .dashboardShell .header{gap:18px; align-items:flex-start}
  .dashboardShell .brand{gap:12px}
  .dashboardShell .actions{min-width:270px}
  .dashboardShell .brand .sub{max-width:350px}
  .dashboardShell .opsPulseIntro{grid-template-columns:1fr}
  .dashboardShell .pulseCard{padding:18px 15px}
  .dashboardShell .dashboardTopSectionBody{grid-template-columns:1fr}
}
@media (max-width:760px){
  .dashboardShell .header{flex-direction:column; padding:22px 18px 16px; gap:20px}
  .dashboardShell .brand h1{font-size:25px}
  .dashboardShell .brand .sub{max-width:unset; font-size:11px}
  .brandMark{width:40px; height:46px; border-radius:10px}
  .brandMark svg{width:27px; height:27px}
  .dashboardShell .brandText{gap:6px}
  .dashboardShell .brandEyebrow{font-size:8px; letter-spacing:.1em}
  .dashboardShell .actions{width:100%; min-width:0; flex-direction:row; align-items:center; justify-content:space-between; gap:8px}
  .dashboardShell .actionControls{flex-wrap:wrap; gap:5px; justify-content:flex-end}
  .dashboardShell .header .btn{min-height:36px; padding:8px 9px; font-size:11px}
  .dashboardShell .header .langbtn{min-height:30px; min-width:28px; padding:4px}
  .dashboardShell .actionStatus{gap:4px}
  .dashboardShell .actionStatus .pill{max-width:100px; font-size:9px}
  .dashboardShell .tabs{gap:23px; padding:0 19px}
  .dashboardShell .tab{min-height:47px; padding:13px 1px; font-size:11px}
  .dashboardShell .container{padding:23px 14px 32px}
  .dashboardShell .opsPulse{grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin-bottom:20px}
  .dashboardShell .opsPulseIntro{grid-column:1/-1; gap:7px; padding:0 2px 6px}
  .dashboardShell .opsPulseIntro strong{font-size:21px}
  .dashboardShell .opsPulseIntro > span:last-child{font-size:10px}
  .dashboardShell .pulseCard{min-height:94px; padding:17px; gap:8px}
  .dashboardShell .pulseCard:last-child{grid-column:1/-1; flex-direction:row; justify-content:space-between; align-items:center; min-height:68px}
  .dashboardShell .pulseValue{font-size:29px}
  .dashboardShell .serviceBoardHeading{padding:19px 16px 16px; gap:12px}
  .serviceBoardMeta{align-items:flex-start; flex-direction:row; align-items:center; gap:10px}
  .dashboardShell #lastUpdated{text-align:left; font-size:9px}
  .dashboardShell .toolbar{padding:0 16px 14px; position:static}
  .dashboardShell .search{gap:10px; align-items:stretch}
  .dashboardShell .searchField{flex-basis:100%; min-width:0; width:100%}
  .dashboardShell .search > .sel{min-width:0; flex:1 1 calc(50% - 6px); width:calc(50% - 6px); font-size:11px !important}
  .dashboardShell .search .toggle{margin:3px 3px 0 0}
  .dashboardShell .quickFocus{padding:0 16px 15px; gap:6px; flex-wrap:nowrap; overflow-x:auto}
  .dashboardShell .quickFocusLabel{display:none}
  .dashboardShell .focusChip{flex:none; min-height:32px}
  .dashboardShell .serviceTable{display:block; min-width:0; width:100%; table-layout:auto}
  .dashboardShell .serviceTable thead{position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(0,0,0,0); clip-path:inset(50%); white-space:nowrap}
  .dashboardShell .serviceTable tbody{display:block}
  .dashboardShell .serviceTable .serviceRow{display:grid; grid-template-columns:minmax(0,1fr) auto; gap:13px; padding:19px 16px; border-bottom:1px solid var(--line)}
  .dashboardShell .serviceTable .serviceRow td{min-width:0; padding:0; border:0; font-size:12px}
  .dashboardShell .serviceRow td:nth-child(1){grid-column:1; grid-row:1}
  .dashboardShell .serviceRow td:nth-child(2){grid-column:1/-1; grid-row:2}
  .dashboardShell .serviceRow td:nth-child(3){grid-column:2; grid-row:1; text-align:right}
  .dashboardShell .serviceRow td:nth-child(4){grid-column:1; grid-row:5}
  .dashboardShell .serviceRow td:nth-child(5){grid-column:1/-1; grid-row:3}
  .dashboardShell .serviceRow td:nth-child(6){grid-column:1/-1; grid-row:4}
  .dashboardShell .serviceRow td:nth-child(6):empty{display:none}
  .dashboardShell .serviceTable .serviceRow td:nth-child(7){grid-column:2; grid-row:5; align-self:center; text-align:right; font-size:9px}
  .dashboardShell .serviceRow td:nth-child(8){grid-column:1/-1; grid-row:6}
  .dashboardShell .serviceTable .serviceRow td .mini{font-size:11px}
  .dashboardShell .serviceTable .serviceRow .pbar{max-width:none}
  .dashboardShell .serviceTable .serviceRow .timingSummary{padding:9px 11px; border:0; border-radius:7px; background:var(--row-hover-bg)}
  .dashboardShell .serviceRoute{font-size:10px}
  .dashboardShell .serviceTable .groupRow{display:block}
  .dashboardShell .serviceTable .groupRow td{display:block; padding:10px 16px}
  .dashboardShell .serviceTable .emptyRowsNotice{display:block; padding:16px}
  .dashboardShell .serviceTable .emptyRowsNotice td{display:block; padding:0}
  .dashboardShell .dashboardTopSectionBar{padding:13px 16px}
  .dashboardShell .dashboardTopSectionBody{padding:0 16px 16px; gap:16px; grid-template-columns:minmax(0,1fr)}
  .dashboardShell .knownIssuesPanel{grid-template-columns:minmax(0,1fr)}
  .dashboardShell .utilityMenuPanel{position:fixed; right:16px; top:auto; margin-top:10px; width:min(280px,calc(100vw - 32px))}
  .dashboardShell .stationTimelineRow{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dashboardShell .stationTimelineRow > div{padding:12px}
  .dashboardShell .stationTimelineStation{grid-column:1/-1}
}
@media (prefers-reduced-motion:reduce){
  .dashboardShell *{scroll-behavior:auto !important; transition:none !important; animation:none !important}
}

.detailTrustNote{
  margin:8px 0 10px;
  padding:10px 12px;
  border:1px solid rgba(96,165,250,.28);
  border-radius:10px;
  color:var(--muted-strong);
  background:rgba(96,165,250,.08);
  font-size:12px;
  font-weight:750;
  line-height:1.45;
}
.detailStopTableWrap,
.stationHistoryWrap{
  max-height:none;
  overflow:visible;
  border:0;
  background:transparent;
}
.detailStopTable,
.stationHistoryTable,
.detailStopTable tbody{
  display:block;
  width:100%;
  min-width:0;
}
.detailStopTable thead{display:none}
.detailStopTable tbody{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
}
.detailStopTable tbody tr{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  align-content:start;
  overflow:hidden;
  border:1px solid var(--diff-border);
  border-left:4px solid var(--control-border);
  border-radius:13px;
  background:var(--diff-bg);
  box-shadow:0 8px 22px rgba(7,26,49,.06);
}
.detailStopTable tbody td,
.detailStopTable tbody tr:last-child td{
  display:block;
  min-width:0;
  padding:10px 12px;
  border:0;
  border-bottom:1px solid var(--diff-border);
  background:transparent;
  box-shadow:none;
  overflow-wrap:anywhere;
}
.detailStopTable tbody td:first-child{grid-column:1 / -1; background:color-mix(in srgb,var(--surface-2) 72%,transparent)}
.detailStopTable tbody td::before{
  content:attr(data-label);
  display:block;
  margin-bottom:5px;
  color:var(--muted);
  font-size:9px;
  font-weight:950;
  letter-spacing:.09em;
  line-height:1.2;
  text-transform:uppercase;
}
.detailStopTable tbody tr.detailStopRow--actual{border-left-color:#22c55e}
.detailStopTable tbody tr.detailStopRow--estimate{border-left-color:#60a5fa}
.detailStopTable tbody tr.detailStopRow--schedule{border-left-color:#f59e0b}
.detailStopTable tbody tr.detailStopRow--missing{border-left-color:#f87171}
.detailStopTable tbody tr:nth-child(even) td{background:transparent}
.detailStopTable tbody tr:nth-child(even) td:first-child{background:color-mix(in srgb,var(--surface-2) 72%,transparent)}
.detailStopPhase--primary{font-size:13px; font-weight:900; color:var(--text)}
.stationHistorySummary{padding:10px 12px; border-left:3px solid #60a5fa; background:rgba(96,165,250,.07); border-radius:0 10px 10px 0}

.stationTimelineList{
  display:flex;
  flex-direction:column;
  overflow:hidden;
  border:1px solid var(--diff-border);
  border-radius:11px;
  background:var(--diff-bg);
}
.stationTimelineRow{
  display:grid;
  grid-template-columns:minmax(125px,.9fr) repeat(3,minmax(190px,1.35fr)) minmax(140px,.85fr);
  align-items:center;
  min-height:54px;
  border-bottom:1px solid var(--diff-border);
}
.stationTimelineRow:last-child{border-bottom:0}
.stationTimelineRow:nth-child(even){background:var(--row-hover-bg)}
.stationTimelineRow > div{
  min-width:0;
  padding:7px 10px;
  border-right:1px solid var(--diff-border);
}
.stationTimelineRow > div:last-child{border-right:0}
.stationTimelineTime > span,
.stationTimelineVariance > span,
.stationTimelineSource > span{
  display:block;
  margin-bottom:4px;
  color:var(--muted);
  font-size:9px;
  font-weight:950;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.stationTimelineScheduled{background:rgba(245,158,11,.035)}
.stationTimelineActual{background:rgba(34,197,94,.035)}
.stationTimelineEstimate{background:rgba(96,165,250,.035)}
.stationTimelineTime .detailStopPhase,
.stationTimelineVariance strong,
.stationTimelineSource strong{
  display:block;
  color:var(--text);
  font-size:12px;
  font-weight:800;
  line-height:1.35;
  overflow-wrap:anywhere;
}
.stationTimelineSource strong{color:var(--muted-strong)}
@media (max-width:900px){
  .stationTimelineRow{grid-template-columns:repeat(2,minmax(0,1fr))}
  .stationTimelineStation{grid-column:1 / -1; background:color-mix(in srgb,var(--surface-2) 72%,transparent)}
  .stationTimelineRow > div{border-bottom:1px solid var(--diff-border)}
}
@media (max-width:560px){
  .stationTimelineRow{grid-template-columns:1fr}
  .stationTimelineStation{grid-column:auto}
  .stationTimelineRow > div{border-right:0}
}

@media (max-width:1180px){
  .header{grid-template-columns:1fr; align-items:start}
  .actions{justify-items:start}
  .actionStatus,.actionControls{justify-content:flex-start}
  .opsPulse{grid-template-columns:repeat(3,minmax(0,1fr))}
  .opsPulseIntro{grid-column:span 3}
}
@media (max-width:860px){
  .detailStopTable tbody{grid-template-columns:1fr}
}
@media (max-width:620px){
  .header{padding:14px}
  .header .brand h1{font-size:27px}
  .header .brandLinks{flex-wrap:wrap}
  .actions .pill{display:none}
  .actionControls{max-height:74px; overflow:auto}
  .detailStopTable tbody tr{grid-template-columns:1fr}
  .detailStopTable tbody td:first-child{grid-column:auto}
}
