@import url('https://fonts.googleapis.com/css2?family=Share+Tech+Mono&family=Barlow+Condensed:wght@300;400;500;600;700&family=Barlow:wght@300;400;500&display=swap');

:root {
  --bg: #0b0c0e; --bg2: #111318; --bg3: #181b22;
  --border: #2a2e3a; --border2: #3a4050;
  --accent: #f5a623; --accent2: #e8901a;
  --blue: #2196f3; --green: #43a047; --red: #e53935; --purple: #8b5cf6;
  --text: #e8eaf0; --text2: #9099b0; --text3: #555e75;
  --mono: 'Share Tech Mono', monospace;
  --sans: 'Barlow Condensed', sans-serif;
  --body: 'Barlow', sans-serif;
  --radius: 6px;

  /* Board color themes */
  --dep-accent: #f5a623;    /* orange — départs */
  --dep-row-bg: #0d0e12;
  --dep-first-bg: #12100a;
  --dep-border: #2a2416;

  --arr-accent: #42a5f5;    /* bleu — arrivées */
  --arr-row-bg: #0a0e14;
  --arr-first-bg: #0a1018;
  --arr-border: #16232e;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html,body{background:var(--bg);color:var(--text);font-family:var(--body);font-size:15px;min-height:100vh;}

/* ── NAV ── */
.nav{background:var(--bg2);border-bottom:1px solid var(--border);padding:0 24px;display:flex;align-items:center;gap:0;height:52px;position:sticky;top:0;z-index:100;}
.nav-logo{font-family:var(--mono);font-size:15px;color:var(--accent);letter-spacing:3px;padding-right:28px;border-right:1px solid var(--border);margin-right:8px;text-decoration:none;}
.nav a{font-family:var(--sans);font-size:13px;font-weight:500;letter-spacing:1.5px;color:var(--text3);text-decoration:none;padding:0 16px;height:52px;display:flex;align-items:center;border-bottom:2px solid transparent;transition:all .15s;text-transform:uppercase;}
.nav a:hover{color:var(--text2);}
.nav a.active{color:var(--accent);border-bottom-color:var(--accent);}
.nav a.admin{color:var(--purple);}
.nav a.admin.active{border-bottom-color:var(--purple);}
.nav-right{margin-left:auto;display:flex;align-items:center;gap:16px;}
.nav-clock{font-family:var(--mono);font-size:16px;color:var(--accent);letter-spacing:2px;}

/* ── LAYOUT ── */
.page{padding:28px;max-width:1400px;margin:0 auto;}
.page-title{font-family:var(--sans);font-size:26px;font-weight:600;letter-spacing:2px;text-transform:uppercase;color:var(--text);margin-bottom:4px;}
.page-subtitle{font-size:13px;color:var(--text3);letter-spacing:1px;margin-bottom:28px;}

/* ── CARDS ── */
.card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);padding:20px;}
.card-title{font-family:var(--sans);font-size:13px;font-weight:600;letter-spacing:2px;text-transform:uppercase;color:var(--text2);margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid var(--border);}

/* ── FORMS ── */
.form-group{margin-bottom:16px;}
.form-label{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:2px;text-transform:uppercase;color:var(--text3);display:block;margin-bottom:6px;}
.form-input,.form-select,.form-textarea{background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-family:var(--mono);font-size:13px;padding:9px 12px;width:100%;transition:border .15s;}
.form-input:focus,.form-select:focus,.form-textarea:focus{outline:none;border-color:var(--accent);}
.form-select option{background:var(--bg2);}
.form-textarea{resize:vertical;min-height:80px;}

/* ── BUTTONS ── */
.btn{font-family:var(--sans);font-size:12px;font-weight:600;letter-spacing:2px;text-transform:uppercase;padding:9px 18px;border-radius:var(--radius);border:1px solid var(--border2);background:transparent;color:var(--text2);cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;gap:7px;text-decoration:none;}
.btn:hover{background:var(--bg3);color:var(--text);}
.btn-primary{background:var(--accent);border-color:var(--accent);color:#000;font-weight:700;}
.btn-primary:hover{background:var(--accent2);border-color:var(--accent2);color:#000;}
.btn-danger{border-color:var(--red);color:var(--red);}
.btn-danger:hover{background:rgba(229,57,53,.12);}
.btn-success{border-color:var(--green);color:var(--green);}
.btn-success:hover{background:rgba(67,160,71,.12);}
.btn-purple{border-color:var(--purple);color:var(--purple);}
.btn-purple:hover{background:rgba(139,92,246,.12);}
.btn-blue{border-color:var(--blue);color:var(--blue);}
.btn-blue:hover{background:rgba(33,150,243,.12);}
.btn-sm{padding:5px 11px;font-size:11px;}

/* ── BADGES ── */
.badge{font-family:var(--mono);font-size:10px;padding:2px 7px;border-radius:3px;font-weight:500;letter-spacing:1px;text-transform:uppercase;}
.badge-tgv{background:#c41230;color:#fff;} .badge-ter{background:#0050a0;color:#fff;}
.badge-ic{background:#e5a000;color:#000;} .badge-ouigo{background:#e84d8a;color:#fff;}
.badge-bus{background:#388e3c;color:#fff;} .badge-metro{background:#1565c0;color:#fff;}
.badge-tram{background:#6a1b9a;color:#fff;}
.status-badge{font-family:var(--mono);font-size:10px;padding:3px 8px;border-radius:3px;letter-spacing:1px;}
.status-ok{background:rgba(67,160,71,.15);color:#66bb6a;border:1px solid rgba(67,160,71,.3);}
.status-late{background:rgba(245,166,35,.15);color:var(--accent);border:1px solid rgba(245,166,35,.3);}
.status-sup{background:rgba(229,57,53,.15);color:#ef5350;border:1px solid rgba(229,57,53,.3);}
.status-arr{background:rgba(33,150,243,.15);color:#42a5f5;border:1px solid rgba(33,150,243,.3);}

/* ── TABLES ── */
.data-table{width:100%;border-collapse:collapse;}
.data-table th{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:2px;text-transform:uppercase;color:var(--text3);padding:8px 12px;border-bottom:1px solid var(--border);text-align:left;}
.data-table td{padding:11px 12px;border-bottom:1px solid var(--border);font-size:13px;vertical-align:middle;}
.data-table tr:last-child td{border-bottom:none;}
.data-table tr:hover td{background:var(--bg3);}

/* ── GRIDS ── */
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
.grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px;}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;}

/* ══════════════════════════════════════
   DEPARTURE BOARD — ORANGE THEME
══════════════════════════════════════ */
.board{background:#060708;border-radius:10px;overflow:hidden;border:2px solid #1a1d24;font-family:var(--mono);}
.board.board-dep{border-color:#2a2010;}
.board.board-arr{border-color:#0e1a28;}

.board-header{background:#0d0e12;padding:14px 24px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #1e2230;}
.board-dep .board-header{background:#0d0b08;border-bottom-color:#2a1e08;}
.board-arr .board-header{background:#080c12;border-bottom-color:#0a1e30;}

.board-station{font-size:20px;letter-spacing:4px;text-transform:uppercase;}
.board-dep .board-station{color:var(--dep-accent);}
.board-arr .board-station{color:var(--arr-accent);}

.board-sub{font-size:10px;color:#444;letter-spacing:3px;margin-top:2px;}
.board-time{font-size:26px;letter-spacing:3px;}
.board-dep .board-time{color:var(--dep-accent);}
.board-arr .board-time{color:var(--arr-accent);}

.board-cols-dep,.board-cols-arr{display:grid;padding:7px 24px;background:#0d0e12;border-bottom:1px solid #1a1d24;font-size:10px;letter-spacing:2px;color:#444;text-transform:uppercase;}
.board-cols-dep{grid-template-columns:60px 70px 1fr 140px 80px 100px;gap:8px;background:#0a0904;}
.board-cols-arr{grid-template-columns:60px 70px 1fr 140px 80px 100px;gap:8px;background:#060a10;}

.board-row{display:grid;padding:10px 24px;border-bottom:1px solid #0f1015;gap:8px;align-items:center;transition:background .1s;position:relative;}
.board-row-dep{grid-template-columns:60px 70px 1fr 140px 80px 100px;}
.board-row-arr{grid-template-columns:60px 70px 1fr 140px 80px 100px;}

/* Left accent bar */
.board-row::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;}
.board-row-dep::before{background:var(--dep-accent);opacity:0;}
.board-row-arr::before{background:var(--arr-accent);opacity:0;}
.board-row.first::before{opacity:1;}
.board-row.first.board-row-dep{background:#100d05;}
.board-row.first.board-row-arr{background:#050b14;}
.board-row-dep:hover{background:#0d0b08;}
.board-row-arr:hover{background:#080c12;}

.row-date{font-size:10px;color:#555;letter-spacing:0.5px;}
.row-time{font-size:16px;letter-spacing:1px;color:#eee;}
.row-time.dep-time.soon{color:var(--dep-accent);}
.row-time.arr-time.soon{color:var(--arr-accent);}
.row-dest{font-size:14px;color:#ddd;}
.row-via{font-size:10px;color:#444;margin-top:2px;letter-spacing:1px;}
.row-train{display:flex;align-items:center;gap:7px;}
.row-num{font-size:11px;color:#555;}

/* Voie — different color per board */
.row-voie{font-size:17px;text-align:center;font-weight:500;}
.board-dep .row-voie{color:var(--dep-accent);}
.board-arr .row-voie{color:var(--arr-accent);}
.row-voie.pending{color:#333;font-size:12px;letter-spacing:1px;}

.row-status{font-size:11px;text-align:right;letter-spacing:1px;}
.row-status.ok{color:var(--green);}
.row-status.late{color:var(--accent);}
.row-status.sup{color:var(--red);}
.row-status.arr{color:var(--blue);}

.board-ticker{padding:5px 24px;font-size:10px;letter-spacing:2px;overflow:hidden;white-space:nowrap;border-top:1px solid #111;}
.board-dep .board-ticker{background:#0a0804;color:#3a2a10;}
.board-arr .board-ticker{background:#06090e;color:#0e2030;}
.board-empty{padding:40px 24px;text-align:center;font-size:13px;letter-spacing:3px;color:#2a2e3a;}

/* ── BOARD CONTROLS ── */
.board-controls{background:var(--bg2);border-bottom:1px solid var(--border);padding:12px 28px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.board-outer{padding:20px;}

/* ── ADMIN SIDEBAR ── */
.admin-grid{display:grid;grid-template-columns:220px 1fr;min-height:calc(100vh - 52px);}
.admin-sidebar{background:var(--bg2);border-right:1px solid var(--border);padding:20px 0;}
.sidebar-item{display:flex;align-items:center;gap:10px;padding:11px 20px;font-family:var(--sans);font-size:13px;font-weight:500;letter-spacing:1px;color:var(--text3);cursor:pointer;transition:all .15s;border-left:2px solid transparent;text-transform:uppercase;}
.sidebar-item:hover{color:var(--text2);background:var(--bg3);}
.sidebar-item.active{color:var(--accent);border-left-color:var(--accent);background:rgba(245,166,35,.05);}
.sidebar-item.admin-sep{color:var(--text3);font-size:10px;letter-spacing:2px;padding:16px 20px 6px;cursor:default;border:none;pointer-events:none;}
.admin-content{padding:28px;overflow-y:auto;}
.tab-panel{display:none;} .tab-panel.visible{display:block;}

/* ── CONTROL PAGE ── */
.control-layout{display:grid;grid-template-columns:360px 1fr;min-height:calc(100vh - 52px);}
.control-left{background:var(--bg2);border-right:1px solid var(--border);padding:24px;overflow-y:auto;}
.control-right{padding:24px;overflow-y:auto;}
.line-select-card{background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius);padding:14px;cursor:pointer;margin-bottom:8px;transition:all .15s;}
.line-select-card:hover{border-color:var(--border2);}
.line-select-card.selected{border-color:var(--accent);background:rgba(245,166,35,.06);}
.auth-panel{background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius);padding:20px;margin-top:16px;}
.auth-input{font-family:var(--mono);font-size:28px;letter-spacing:8px;text-align:center;background:var(--bg3);border:2px solid var(--border);border-radius:var(--radius);color:var(--accent);padding:14px;width:100%;}
.auth-input:focus{outline:none;border-color:var(--accent);}

/* Mission control */
.mission-header{display:flex;align-items:center;gap:12px;background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:20px;}
.mission-code{font-family:var(--mono);font-size:28px;color:var(--accent);}
.mission-name{font-family:var(--sans);font-size:18px;font-weight:600;}
.action-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px;}
.action-btn{background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius);padding:16px;cursor:pointer;text-align:center;transition:all .15s;font-family:var(--sans);font-size:13px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:var(--text2);}
.action-btn:hover{border-color:var(--border2);color:var(--text);}
.action-btn .action-icon{font-size:22px;display:block;margin-bottom:6px;}
.action-btn.primary{border-color:var(--accent);color:var(--accent);}
.action-btn.primary:hover{background:rgba(245,166,35,.1);}
.action-btn.danger{border-color:var(--red);color:var(--red);}
.action-btn.danger:hover{background:rgba(229,57,53,.1);}
.action-btn.green{border-color:var(--green);color:var(--green);}
.action-btn.green:hover{background:rgba(67,160,71,.1);}
.action-btn.blue{border-color:var(--blue);color:var(--blue);}
.action-btn.blue:hover{background:rgba(33,150,243,.1);}
.action-btn:disabled{opacity:.3;cursor:not-allowed;}

/* Voie grid */
.voie-grid{display:flex;flex-wrap:wrap;gap:8px;}
.voie-btn{width:44px;height:44px;background:var(--bg3);border:1px solid var(--border);border-radius:4px;font-family:var(--mono);font-size:14px;color:var(--text2);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;}
.voie-btn:hover{border-color:var(--border2);color:var(--text);}
.voie-btn.selected{border-color:var(--accent);color:var(--accent);background:rgba(245,166,35,.1);}

/* Event log */
.event-log{background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius);padding:14px;max-height:220px;overflow-y:auto;font-family:var(--mono);font-size:11px;color:var(--text3);line-height:2;}
.log-entry{display:flex;gap:12px;}
.log-time{color:var(--text3);min-width:56px;}
.log-msg.ok{color:var(--green);} .log-msg.warn{color:var(--accent);} .log-msg.err{color:var(--red);} .log-msg.info{color:var(--blue);}

/* Status dot */
.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:6px;}
.dot-idle{background:var(--text3);} .dot-active{background:var(--green);animation:pulse 1.5s infinite;}
.dot-warning{background:var(--accent);animation:pulse 1s infinite;}
@keyframes pulse{0%,100%{opacity:1;}50%{opacity:.4;}}

/* Schedule type selector */
.sched-tabs{display:flex;gap:4px;flex-wrap:wrap;}
.sched-tab{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:1px;text-transform:uppercase;padding:6px 12px;border-radius:4px;border:1px solid var(--border);background:transparent;color:var(--text3);cursor:pointer;transition:all .15s;}
.sched-tab.active{background:var(--bg3);border-color:var(--accent);color:var(--accent);}
.sched-panel{display:none;background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-top:10px;}
.sched-panel.visible{display:block;}

/* Days checkboxes */
.days-row{display:flex;gap:6px;flex-wrap:wrap;}
.day-btn{width:40px;height:36px;background:var(--bg3);border:1px solid var(--border);border-radius:4px;font-family:var(--mono);font-size:11px;color:var(--text3);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;letter-spacing:1px;}
.day-btn:hover{border-color:var(--border2);color:var(--text);}
.day-btn.active{border-color:var(--accent);color:var(--accent);background:rgba(245,166,35,.1);}

/* Fixed times list */
.fixed-time-item{display:flex;align-items:center;gap:8px;background:var(--bg3);border:1px solid var(--border);border-radius:4px;padding:7px 10px;margin-bottom:6px;font-family:var(--mono);font-size:13px;}
.time-remove{cursor:pointer;color:var(--red);margin-left:auto;}

/* Tags */
.tag-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;}
.tag{background:var(--bg3);border:1px solid var(--border2);border-radius:4px;font-family:var(--mono);font-size:11px;color:var(--text2);padding:3px 8px;display:flex;align-items:center;gap:5px;}
.tag-remove{cursor:pointer;color:var(--red);font-size:13px;line-height:1;}

/* Stop list */
.stop-list{list-style:none;padding:0;}
.stop-item{display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--bg3);border:1px solid var(--border);border-radius:4px;margin-bottom:6px;font-family:var(--mono);font-size:12px;}
.stop-num{color:var(--text3);min-width:20px;} .stop-name{flex:1;} .stop-remove{color:var(--red);cursor:pointer;font-size:16px;}

/* Stats */
.stat-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);padding:16px 20px;}
.stat-label{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:2px;color:var(--text3);text-transform:uppercase;margin-bottom:6px;}
.stat-value{font-family:var(--mono);font-size:28px;color:var(--text);}
.stat-value.accent{color:var(--accent);} .stat-value.green{color:var(--green);} .stat-value.blue{color:var(--blue);}

/* Modal */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;z-index:200;}
.modal{background:var(--bg2);border:1px solid var(--border2);border-radius:8px;padding:24px;width:500px;max-width:95vw;max-height:90vh;overflow-y:auto;}
.modal-title{font-family:var(--sans);font-size:16px;font-weight:600;letter-spacing:2px;text-transform:uppercase;margin-bottom:20px;}

/* Sound item */
.sound-item{background:var(--bg3);border:1px solid var(--border);border-radius:4px;padding:10px 12px;display:flex;align-items:center;gap:10px;margin-bottom:8px;}

/* AI route box */
.ai-route-box{background:var(--bg3);border:1px solid var(--border);border-radius:6px;padding:16px;margin-top:12px;font-family:var(--mono);font-size:12px;color:var(--text2);min-height:80px;line-height:1.7;white-space:pre-wrap;}

/* Kiosk mode */
body.kiosk-mode .nav{display:none;}
body.kiosk-mode .board-controls{display:none;}
body.kiosk-mode .board-outer{padding:0;}
body.kiosk-mode .board{border-radius:0;border:none;height:100vh;display:flex;flex-direction:column;}
body.kiosk-mode .board-header{padding:20px 32px;}
body.kiosk-mode .board-station{font-size:28px;}
body.kiosk-mode .board-time{font-size:36px;}
body.kiosk-mode .board-row{padding:14px 32px;}
body.kiosk-mode .row-time{font-size:20px;}
body.kiosk-mode .row-dest{font-size:17px;}
body.kiosk-mode #board-rows{flex:1;overflow:hidden;}
.kiosk-btn{position:fixed;bottom:12px;right:12px;z-index:999;opacity:.3;}
.kiosk-btn:hover{opacity:1;}

/* Misc */
.sep{height:1px;background:var(--border);margin:20px 0;}
.flex{display:flex;} .flex-center{display:flex;align-items:center;}
.gap-8{gap:8px;} .gap-12{gap:12px;} .gap-16{gap:16px;} .gap-20{gap:20px;}
.mb-4{margin-bottom:4px;} .mb-8{margin-bottom:8px;} .mb-12{margin-bottom:12px;}
.mb-16{margin-bottom:16px;} .mb-20{margin-bottom:20px;} .mb-28{margin-bottom:28px;}
.ml-auto{margin-left:auto;} .text-muted{color:var(--text2);} .text-dim{color:var(--text3);}
.text-accent{color:var(--accent);} .text-mono{font-family:var(--mono);} .text-sm{font-size:12px;} .text-xs{font-size:11px;}
.alert{padding:12px 16px;border-radius:var(--radius);font-size:13px;margin-bottom:16px;font-family:var(--mono);letter-spacing:.5px;}
.alert-success{background:rgba(67,160,71,.1);border:1px solid rgba(67,160,71,.3);color:#66bb6a;}
.alert-error{background:rgba(229,57,53,.1);border:1px solid rgba(229,57,53,.3);color:#ef5350;}
.alert-info{background:rgba(33,150,243,.1);border:1px solid rgba(33,150,243,.3);color:#42a5f5;}
.alert-warning{background:rgba(245,166,35,.1);border:1px solid rgba(245,166,35,.3);color:var(--accent);}
.color-dot{width:10px;height:10px;border-radius:50%;display:inline-block;margin-right:6px;}
.tabs{display:flex;gap:4px;margin-bottom:20px;background:var(--bg2);padding:4px;border-radius:var(--radius);border:1px solid var(--border);width:fit-content;}
.tab{font-family:var(--sans);font-size:12px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;padding:6px 16px;border-radius:4px;border:none;background:transparent;color:var(--text3);cursor:pointer;transition:all .15s;}
.tab.active{background:var(--bg3);color:var(--text);border:1px solid var(--border2);}
::-webkit-scrollbar{width:5px;height:5px;} ::-webkit-scrollbar-track{background:var(--bg);} ::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px;}
@media(max-width:900px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr;}.admin-grid,.control-layout{grid-template-columns:1fr;}}

/* ── NOTIFICATION BELL ── */
.notif-bell{position:fixed;top:60px;right:16px;z-index:500;}
.bell-btn{background:var(--bg2);border:1px solid var(--border);border-radius:50%;width:42px;height:42px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:18px;position:relative;transition:all .15s;}
.bell-btn:hover{border-color:var(--border2);}
.bell-badge{position:absolute;top:-4px;right:-4px;background:var(--red);color:#fff;font-family:var(--mono);font-size:10px;width:18px;height:18px;border-radius:50%;align-items:center;justify-content:center;display:none;}
.notif-panel{position:fixed;top:110px;right:16px;width:320px;background:var(--bg2);border:1px solid var(--border2);border-radius:8px;z-index:499;box-shadow:0 8px 32px rgba(0,0,0,.6);display:none;max-height:400px;overflow-y:auto;}
.notif-header{padding:12px 16px;border-bottom:1px solid var(--border);font-family:var(--sans);font-size:12px;font-weight:600;letter-spacing:2px;text-transform:uppercase;display:flex;align-items:center;gap:8px;}
.notif-item{padding:12px 16px;border-bottom:1px solid var(--border);display:flex;gap:10px;align-items:flex-start;}
.notif-item.unread{background:rgba(245,166,35,.04);}
.notif-item:last-child{border-bottom:none;}
.notif-icon{font-size:16px;margin-top:1px;}
.notif-msg{font-size:12px;color:var(--text2);line-height:1.5;flex:1;}
.notif-time{font-family:var(--mono);font-size:10px;color:var(--text3);white-space:nowrap;}
.notif-empty{padding:20px;text-align:center;color:var(--text3);font-size:12px;letter-spacing:1px;}

/* ── LIVE FLOATING ALERT ── */
.live-alert{position:fixed;bottom:80px;left:50%;transform:translateX(-50%);z-index:800;pointer-events:none;opacity:0;transition:opacity .3s;white-space:nowrap;}
.live-alert.show{opacity:1;}
.live-alert-inner{background:var(--bg2);border:1px solid var(--border2);border-radius:8px;padding:14px 24px;font-family:var(--mono);font-size:13px;letter-spacing:1px;display:flex;align-items:center;gap:12px;box-shadow:0 8px 32px rgba(0,0,0,.7);}
.live-alert-inner.type-warn{border-color:rgba(245,166,35,.5);background:rgba(245,166,35,.08);}
.live-alert-inner.type-err{border-color:rgba(229,57,53,.5);background:rgba(229,57,53,.08);}
.live-alert-inner.type-ok{border-color:rgba(67,160,71,.5);background:rgba(67,160,71,.08);}

/* ── TOGGLE SWITCH ── */
.toggle{width:36px;height:20px;background:var(--border2);border-radius:10px;cursor:pointer;position:relative;transition:background .2s;flex-shrink:0;}
.toggle.on{background:var(--green);}
.toggle::after{content:'';position:absolute;width:14px;height:14px;background:#fff;border-radius:50%;top:3px;left:3px;transition:left .2s;}
.toggle.on::after{left:19px;}

/* ── MOBILE RESPONSIVE CONTROL ── */
@media (max-width:600px) {
  .nav{padding:0 12px;}
  .nav a{padding:0 8px;font-size:11px;letter-spacing:0.5px;}
  .nav-logo{padding-right:12px;font-size:13px;}
  .control-layout{grid-template-columns:1fr;}
  .mission-header{flex-wrap:wrap;}
  .action-grid{grid-template-columns:1fr 1fr;}
  .board-cols-dep,.board-cols-arr{grid-template-columns:55px 60px 1fr 60px 80px;gap:4px;}
  .board-row-dep,.board-row-arr{grid-template-columns:55px 60px 1fr 60px 80px;gap:4px;padding:10px 12px;}
  .board-header{padding:10px 14px;}
  .board-station{font-size:15px;letter-spacing:2px;}
  .board-time{font-size:20px;}
}

/* ── ANN TTS PREVIEW ── */
.tts-preview{background:var(--bg3);border:1px solid var(--border);border-radius:4px;padding:10px 14px;font-family:var(--mono);font-size:12px;color:var(--text2);line-height:1.7;margin-top:8px;}
.var-chip{display:inline-block;background:rgba(245,166,35,.15);color:var(--accent);border:1px solid rgba(245,166,35,.3);border-radius:3px;padding:1px 6px;font-size:10px;margin:2px;}
