:root{
  --bg0:#070b14;
  --border:rgba(148,163,184,.14);
  --text:#e5e7eb;
  --muted:#93a4bd;
  --text-dim:#6b7a93;
  --text-muted:#4b5563;

  --accent:#22c55e;
  --accent2:#38bdf8;
  --warn:#f59e0b;
  --bad:#ef4444;

  --shadow: 0 10px 30px rgba(0,0,0,.45);
  --r:14px;
}

*{box-sizing:border-box;margin:0;padding:0}

body{
  font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial;
  background:
    radial-gradient(1200px 800px at 10% 10%, rgba(56,189,248,.10), transparent 55%),
    radial-gradient(1000px 700px at 90% 20%, rgba(34,197,94,.08), transparent 60%),
    linear-gradient(180deg, var(--bg0), #040612 60%, #040612);
  color:var(--text);
  padding:22px;
  min-height:100vh;
}

.container{max-width:1500px;margin:0 auto}

.qs-chip{
  display:flex;align-items:center;gap:7px;
  padding:6px 11px;border-radius:999px;
  border:1px solid var(--border);background:rgba(255,255,255,.03);
  white-space:nowrap;flex-shrink:0;
}
.qs-icon{font-size:15px;flex-shrink:0}
.qs-lbl{font-size:10px;letter-spacing:.7px;text-transform:uppercase;color:var(--muted);font-weight:800;margin-bottom:1px}
.qs-val{font-size:13px;font-weight:900;color:var(--text)}

.main-layout{
  display:flex;
  gap:16px;
  align-items:flex-start;
}

.sidebar{
  width:200px;
  flex-shrink:0;
  border:1px solid var(--border);
  background:linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,.02));
  border-radius:var(--r);
  padding:12px;
  box-shadow:var(--shadow);
  position:sticky;
  top:22px;
}

.sidebar-title{
  font-size:11px;
  letter-spacing:1.2px;
  text-transform:uppercase;
  color:var(--muted);
  margin-bottom:12px;
  font-weight:900;
  padding:8px 10px;
}

.nav-item{
  padding:12px 14px;
  border-radius:10px;
  margin-bottom:6px;
  cursor:pointer;
  transition:all 0.2s ease;
  border:1px solid transparent;
  font-size:13px;
  font-weight:700;
  color:var(--muted);
  display:flex;
  align-items:center;
  gap:10px;
}

.nav-item:hover{
  background:rgba(255,255,255,.05);
  border-color:rgba(148,163,184,.18);
}

.nav-item.active{
  background:linear-gradient(135deg, rgba(56,189,248,.18), rgba(34,197,94,.12));
  border-color:rgba(56,189,248,.35);
  color:var(--accent2);
  box-shadow:0 4px 12px rgba(56,189,248,.15);
}

.nav-icon{
  font-size:16px;
  width:20px;
  text-align:center;
}

.content-area{
  flex:1;
  min-width:0;
}

.window{
  display:none;
}

.window.active{
  display:block;
  animation:fadeIn 0.3s ease;
}

@keyframes fadeIn{
  from{opacity:0;transform:translateY(10px)}
  to{opacity:1;transform:translateY(0)}
}

.header{
  display:grid;
  grid-template-columns: 1fr auto;
  gap:16px;
  padding:16px 18px;border:1px solid var(--border);
  background:linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,.02));
  border-radius:var(--r);box-shadow:var(--shadow);margin-bottom:16px;
  align-items:center;
}

.title h1{font-size:18px;font-weight:800;letter-spacing:.3px}
.subtitle{margin-top:2px;color:var(--muted);font-size:12.5px}

.top-right{display:flex; gap:12px; align-items:center; justify-content:flex-end; flex-wrap:wrap;}

.chip{
  display:flex;align-items:center;gap:10px;
  padding:8px 10px;border-radius:999px;
  border:1px solid var(--border);background:rgba(255,255,255,.03);
  color:var(--muted);font-size:12.5px;white-space:nowrap;
}

.dot{width:8px;height:8px;border-radius:50%;background:var(--accent);
  box-shadow:0 0 0 3px rgba(34,197,94,.16)}

.battery-hero{
  display:flex; align-items:center; gap:12px;
  padding:10px 12px; border-radius:999px;
  border:1px solid var(--border);
  background: rgba(255,255,255,.03);
  min-width: 260px;
  justify-content:space-between;
}

.battery-left{display:flex;flex-direction:column;gap:2px}

.battery-big{
  font-size:22px; font-weight:900; letter-spacing:.2px;
  display:flex; align-items:baseline; gap:8px;
}

.battery-big .arrow{font-size:18px;font-weight:900;color:var(--muted)}
.battery-sub{color:var(--muted);font-size:12px;font-weight:650}

.battery-bar{
  width:110px;height:10px;border-radius:999px;overflow:hidden;
  background: rgba(148,163,184,.12);
  border: 1px solid rgba(148,163,184,.10);
}

.battery-bar > div{
  height:100%; width:0%;
  background: linear-gradient(90deg, var(--accent2), rgba(34,197,94,.95));
  transition: width .45s ease;
}

.section{
  margin-bottom:20px;
  border:1px solid var(--border);
  background:linear-gradient(180deg, rgba(255,255,255,.03), rgba(255,255,255,.01));
  border-radius:var(--r);
  padding:18px;
  box-shadow:var(--shadow);
}

.section-title{
  font-size:13px;
  letter-spacing:1px;
  text-transform:uppercase;
  color:var(--accent2);
  margin-bottom:16px;
  font-weight:900;
  padding-bottom:10px;
  border-bottom:1px solid var(--border);
}

.grid{
  display:grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap:14px;
}

.card{
  border:1px solid var(--border);
  background:linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,.02));
  border-radius:var(--r);padding:16px;box-shadow:var(--shadow);
}

.card h2{
  font-size:12.5px;letter-spacing:.55px;text-transform:uppercase;
  color:var(--muted);margin-bottom:12px;display:flex;justify-content:space-between;align-items:center;
}

.kpi{display:flex;align-items:baseline;gap:10px;margin-bottom:10px}
.kpi .value{font-size:30px;font-weight:900}
.kpi .unit{font-size:13px;color:var(--muted);font-weight:800}

.rows{display:flex;flex-direction:column;gap:8px}

.stat{
  display:flex;justify-content:space-between;gap:14px;
  padding:10px 12px;border-radius:12px;
  border:1px solid rgba(148,163,184,.12);
  background:rgba(2,6,23,.28);
}

.stat-label{color:var(--muted);font-size:12.5px;font-weight:700}
.stat-value{color:var(--text);font-size:12.5px;font-weight:800;max-width:70%;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.progress{height:10px;border-radius:999px;overflow:hidden;
  background:rgba(148,163,184,.12);border:1px solid rgba(148,163,184,.10);margin-top:10px}
.progress > div{height:100%;width:0%;
  background:linear-gradient(90deg, var(--accent2), rgba(34,197,94,.95));
  transition:width .45s ease;border-radius:999px}
.progress-meta{display:flex;justify-content:space-between;margin-top:8px;color:var(--muted);font-size:12px}

.pill{
  padding:6px 10px;border-radius:999px;font-size:12px;font-weight:900;
  border:1px solid transparent;width:fit-content;white-space:nowrap;
}
.pill.ok{background:rgba(34,197,94,.14);border-color:rgba(34,197,94,.30);color:#86efac}
.pill.bad{background:rgba(239,68,68,.12);border-color:rgba(239,68,68,.25);color:#fecaca}

.chart-wrap{
  height: 190px;
  border:1px solid rgba(148,163,184,.10);
  background:rgba(2,6,23,.18);
  border-radius:12px;
  padding:10px;
  position: relative;
}

.gauge-wrap{ 
  padding: 10px;
  height: 220px !important;
  overflow: visible !important;
}

.gauge-wrap canvas{ 
  width: 100% !important; 
  height: 100% !important; 
  display: block;
}

.gauge-center{
  position: absolute;
  left: 50%;
  top: 65%;
  transform: translate(-50%, -50%);
  text-align: center;
  pointer-events: none;
  z-index: 10;
}

/* Brightness */
input[type="range"]{
  width:100%;
  -webkit-appearance:none;
  appearance:none;
  height:6px;
  border-radius:999px;
  background: rgba(148,163,184,.18);
  outline:none;
}
input[type="range"]::-webkit-slider-thumb{
  -webkit-appearance:none;
  appearance:none;
  width:16px;height:16px;border-radius:50%;
  background: var(--accent2);
  border:2px solid rgba(15,23,42,.9);
  box-shadow: 0 0 0 4px rgba(56,189,248,.18);
  cursor:pointer;
}
input[type="range"]::-moz-range-thumb{
  width:16px;height:16px;border-radius:50%;
  background: var(--accent2);
  border:2px solid rgba(15,23,42,.9);
  cursor:pointer;
}

.btnrow{display:flex;gap:8px;margin-top:10px}

.btn{
  flex:1;
  padding:10px 12px;
  border-radius:12px;
  border:1px solid rgba(148,163,184,.16);
  background:rgba(255,255,255,.03);
  color:var(--text);
  font-weight:850;
  cursor:pointer;
}

.btn:hover{
  border-color: rgba(56,189,248,.28);
  background: rgba(255,255,255,.05);
}

/* ---- Terminal ---- */
.term-lock-box{
  display:flex;flex-direction:column;align-items:center;gap:14px;
  max-width:340px;margin:60px auto;
  padding:36px 32px;border:1px solid var(--border);
  background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.02));
  border-radius:var(--r);box-shadow:var(--shadow);
}
.term-lock-icon{font-size:36px}
.term-lock-title{font-size:16px;font-weight:900;color:var(--text)}
.term-lock-sub{font-size:12.5px;color:var(--muted);text-align:center}
#term-login-form{display:flex;flex-direction:column;gap:10px;width:100%;}
.term-password-input{
  width:100%;padding:11px 14px;border-radius:10px;
  border:1px solid rgba(148,163,184,.22);
  background:rgba(2,6,23,.55);color:var(--text);font-size:14px;outline:none;
  transition:border-color .2s;
}
.term-password-input:focus{border-color:var(--accent2)}
.term-login-btn{padding:11px 16px;font-size:13px;border-radius:10px}
.term-login-error{color:var(--bad);font-size:12.5px;min-height:18px;text-align:center}

.term-topbar{
  display:flex;align-items:center;justify-content:space-between;
  padding:8px 14px;border-radius:10px 10px 0 0;
  background:rgba(2,6,23,.55);border:1px solid var(--border);border-bottom:none;
}
.term-cwd{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;color:var(--accent2);font-weight:700;word-break:break-all}
.term-logout-btn{padding:6px 12px;font-size:11px;flex-shrink:0}

.term-body{
  min-height:380px;max-height:520px;overflow-y:auto;
  background:rgba(2,6,23,.72);border:1px solid var(--border);border-bottom:none;
  padding:14px;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:13px;line-height:1.65;
  scroll-behavior:smooth;
}
.term-line{white-space:pre-wrap;word-break:break-all;margin:0}
.term-line.cmd{color:var(--accent2)}
.term-line.cmd .term-ps1{color:#86efac}
.term-line.out{color:#d1d5db}
.term-line.err{color:var(--bad)}
.term-line.info{color:var(--muted);font-style:italic}

.term-input-row{
  display:flex;align-items:center;gap:8px;padding:10px 14px;
  background:rgba(2,6,23,.72);border:1px solid var(--border);border-radius:0 0 10px 10px;
}
.term-prompt{
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:13px;color:#86efac;font-weight:900;flex-shrink:0;white-space:nowrap;
}
.term-input{
  flex:1;background:transparent;border:none;outline:none;
  color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:13px;caret-color:var(--accent2);
}

.footer{display:flex;justify-content:center;margin-top:14px;color:var(--muted);font-size:12px}

/* Rally Bot Styles */
.rally-filters{
  display:flex;gap:12px;align-items:flex-end;margin-bottom:20px;
  padding:16px;border-radius:12px;flex-wrap:wrap;
  background:rgba(2,6,23,.28);border:1px solid rgba(148,163,184,.12);
}

.filter-group{
  display:flex;flex-direction:column;gap:6px;
  flex:1;min-width:160px;
}

.filter-group-btn{justify-content:flex-end;align-self:flex-end;flex:0}

.min-days-input-wrap{
  display:flex;align-items:center;gap:6px;
  padding:0 6px 0 12px;border-radius:8px;
  border:1px solid rgba(148,163,184,.22);
  background:rgba(2,6,23,.55);
  height:38px;
}
.min-days-input{
  width:50px;background:transparent;border:none;color:var(--text);
  font-size:13px;outline:none;text-align:center;
  -moz-appearance:textfield;
}
.min-days-input::-webkit-outer-spin-button,
.min-days-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.min-days-suffix{font-size:12px;color:var(--muted);flex-shrink:0}
.min-days-apply{padding:4px 10px;border-radius:6px;border:1px solid rgba(56,189,248,.28);background:rgba(56,189,248,.10);color:var(--accent);font-size:12px;font-weight:700;cursor:pointer;flex-shrink:0;white-space:nowrap}
.min-days-apply:hover{background:rgba(56,189,248,.2)}

/* ---- Saved filter presets ---- */
.btn-save-preset{background:rgba(99,179,237,.12);border-color:rgba(99,179,237,.35);color:var(--accent);font-size:12px}
.btn-save-preset:hover{background:rgba(99,179,237,.22)}
.btn-presets-toggle{background:rgba(99,179,237,.12);border-color:rgba(99,179,237,.35);color:var(--accent);font-size:12px;white-space:nowrap}
.btn-presets-toggle:hover{background:rgba(99,179,237,.22)}
.presets-dropdown-wrap{position:relative;display:flex;flex-direction:column;gap:4px;align-items:stretch}
.presets-dropdown{
  display:none;position:absolute;top:calc(100% + 6px);right:0;
  min-width:240px;max-width:320px;
  background:#0b1121;border:1px solid var(--accent2);
  border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.6);
  z-index:500;overflow:hidden;
}
.presets-dropdown.open{display:block}
.preset-item{
  display:flex;align-items:center;gap:8px;padding:10px 12px;
  cursor:pointer;border-bottom:1px solid rgba(148,163,184,.12);
  transition:background .15s;
}
.preset-item:last-child{border-bottom:none}
.preset-item:hover{background:rgba(99,179,237,.1)}
.preset-name{font-size:13px;font-weight:700;color:var(--accent);white-space:nowrap;flex-shrink:0}
.preset-summary{font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.preset-del{background:none;border:none;color:var(--muted);font-size:16px;cursor:pointer;padding:0 2px;line-height:1;flex-shrink:0}
.preset-del:hover{color:#fc8181}

.filter-label{
  font-size:11px;letter-spacing:.8px;text-transform:uppercase;
  color:var(--muted);font-weight:900
}

.filter-input{
  padding:9px 12px;border-radius:8px;
  border:1px solid rgba(148,163,184,.22);
  background:rgba(2,6,23,.55);color:var(--text);
  font-size:13px;outline:none;transition:border-color .2s;
  cursor:pointer;
}

.filter-input:hover{border-color:rgba(148,163,184,.30)}
.filter-input:focus{border-color:var(--accent2)}

/* Multi-select dropdown */
.ms-wrapper{
  position:relative;
  z-index:1;
}

.ms-wrapper.open{
  z-index:200;
}

.ms-trigger{
  width:100%;display:flex;justify-content:space-between;align-items:center;
  padding:9px 12px;border-radius:8px;
  border:1px solid rgba(148,163,184,.22);
  background:rgba(2,6,23,.55);color:var(--text);
  font-size:13px;cursor:pointer;text-align:left;
  transition:border-color .2s;
  gap:8px;
}

.ms-trigger:hover{border-color:rgba(148,163,184,.35)}

.ms-wrapper.open .ms-trigger{
  border-color:var(--accent2);
  border-bottom-left-radius:0;
  border-bottom-right-radius:0;
}

.ms-label{
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  flex:1;
}

.ms-label.has-selection{color:var(--accent2);font-weight:800}

.ms-chevron{
  flex-shrink:0;font-size:11px;color:var(--muted);
  transition:transform .15s;
}

.ms-wrapper.open .ms-chevron{transform:rotate(180deg)}

.ms-panel{
  display:none;
  position:absolute;top:100%;left:0;right:0;z-index:100;
  background:#0b1121;
  border:1px solid var(--accent2);
  border-top:none;
  border-radius:0 0 8px 8px;
  box-shadow:0 8px 24px rgba(0,0,0,.55);
  overflow:hidden;
}

.ms-wrapper.open .ms-panel{display:block}

.ms-search{
  width:100%;padding:8px 10px;
  background:rgba(2,6,23,.7);
  border:none;border-bottom:1px solid rgba(148,163,184,.14);
  color:var(--text);font-size:12px;outline:none;
}

.ms-options{
  max-height:200px;overflow-y:auto;
}

.ms-options::-webkit-scrollbar{width:6px}
.ms-options::-webkit-scrollbar-track{background:transparent}
.ms-options::-webkit-scrollbar-thumb{background:rgba(148,163,184,.2);border-radius:6px}

.ms-option{
  display:flex;align-items:center;gap:9px;
  padding:8px 12px;cursor:pointer;
  font-size:13px;color:var(--muted);
  transition:background .1s;
}

.ms-option:hover{background:rgba(56,189,248,.08);color:var(--text)}

.ms-option input[type=checkbox]{
  accent-color:var(--accent2);
  width:14px;height:14px;cursor:pointer;flex-shrink:0;
}

.ms-option.checked{color:var(--text)}

/* ---- Grouped multiselect ---- */
.ms-group-header{
  display:flex;align-items:center;gap:9px;padding:7px 12px;
  cursor:pointer;font-size:12px;font-weight:800;letter-spacing:.3px;
  color:var(--accent2);background:rgba(56,189,248,.06);
  border-top:1px solid rgba(148,163,184,.08);
  position:sticky;top:0;z-index:1;
}
.ms-group-header:first-child{border-top:none}
.ms-group-header input[type=checkbox]{
  accent-color:var(--accent2);width:14px;height:14px;cursor:pointer;flex-shrink:0;
}
.ms-group-name{flex:1}
.ms-group-count{
  font-size:10px;color:var(--muted);font-weight:600;
  background:rgba(148,163,184,.12);border-radius:8px;padding:1px 7px;
}
.ms-grouped-option{padding-left:28px !important}

/* ---- Calendar picker ---- */
.cal-panel{
  width:300px;min-width:300px;padding:14px 12px 10px;
}

.cal-header{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:8px;
}

.cal-month-label{
  font-size:13px;font-weight:700;color:var(--text);letter-spacing:.3px;
}

.cal-nav{
  background:none;border:1px solid rgba(148,163,184,.2);color:var(--text-dim);
  border-radius:6px;width:26px;height:26px;cursor:pointer;font-size:14px;
  display:flex;align-items:center;justify-content:center;
  transition:background .15s,color .15s;
}
.cal-nav:hover{background:var(--accent2);color:#fff;border-color:var(--accent2);}

.cal-weekdays{
  display:grid;grid-template-columns:repeat(7,1fr);
  gap:2px;margin-bottom:4px;
  font-size:11px;font-weight:600;color:var(--text-muted);
  text-align:center;
}

.cal-days{
  display:grid;grid-template-columns:repeat(7,1fr);gap:2px;
}

.cal-day{
  background:none;border:none;color:var(--text);font-size:12px;
  height:30px;border-radius:6px;cursor:pointer;
  transition:background .12s,color .12s;
  display:flex;align-items:center;justify-content:center;
}
.cal-day:hover:not(.cal-day-blank){background:rgba(148,163,184,.15);}
.cal-day-blank{cursor:default;pointer-events:none;}
.cal-day-past{color:var(--text-muted);opacity:.45;}
.cal-day-start,.cal-day-end{
  background:var(--accent2)!important;color:#fff!important;font-weight:700;
}
.cal-day-range{background:rgba(56,189,248,.18);border-radius:0;}
.cal-day-start{border-radius:6px 0 0 6px!important;}
.cal-day-end{border-radius:0 6px 6px 0!important;}
.cal-day-start.cal-day-end{border-radius:6px!important;}

.cal-footer{
  margin-top:10px;border-top:1px solid rgba(148,163,184,.12);padding-top:8px;
  display:flex;align-items:center;justify-content:space-between;gap:6px;
}

.cal-selection-txt{
  font-size:11px;color:var(--text-dim);flex:1;min-width:0;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}

.cal-footer-btns{display:flex;gap:6px;}

.cal-clear-btn{
  padding:4px 10px!important;font-size:12px!important;
  background:rgba(148,163,184,.12)!important;color:var(--text-dim)!important;
  border:1px solid rgba(148,163,184,.2)!important;
}
.cal-clear-btn:hover{background:rgba(148,163,184,.25)!important;}

.cal-apply-btn{
  padding:4px 10px!important;font-size:12px!important;
  background:var(--accent2)!important;color:#fff!important;
  border:1px solid var(--accent2)!important;
}
.cal-apply-btn:hover{filter:brightness(1.1);}

.rally-stats{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
  gap:14px;margin-bottom:20px
}

.rally-stat-card{
  padding:18px 20px;border-radius:12px;
  border:1px solid rgba(148,163,184,.12);
  background:linear-gradient(135deg,rgba(56,189,248,.08),rgba(34,197,94,.05));
  text-align:center
}

.rally-stat-value{
  font-size:32px;font-weight:900;color:var(--accent2);margin-bottom:6px
}

.rally-stat-label{
  font-size:12px;letter-spacing:.8px;text-transform:uppercase;
  color:var(--muted);font-weight:800
}

/* Compact table */
.rally-routes{
  max-height:560px;overflow-y:auto;
  border:1px solid rgba(148,163,184,.12);border-radius:12px;
}

.rally-routes::-webkit-scrollbar{width:8px}
.rally-routes::-webkit-scrollbar-track{background:rgba(148,163,184,.08);border-radius:10px}
.rally-routes::-webkit-scrollbar-thumb{background:rgba(148,163,184,.22);border-radius:10px}
.rally-routes::-webkit-scrollbar-thumb:hover{background:rgba(148,163,184,.35)}

/* ---- Route cards ---- */
.route-list{
  display:flex;flex-direction:column;
}

.route-card{
  display:flex;flex-direction:column;gap:5px;
  padding:11px 14px;
  border-bottom:1px solid rgba(148,163,184,.08);
  transition:background .15s;
}
.route-card:last-child{border-bottom:none}
.route-card:hover{background:rgba(56,189,248,.04);border-radius:10px}

.rc-header{
  display:flex;align-items:center;gap:6px;flex-wrap:wrap;
}
.rc-origin{
  font-weight:800;color:var(--accent2);font-size:13.5px;
}
.rc-arrow{
  color:var(--muted);font-size:12px;flex-shrink:0;
}
.rc-dest{
  font-weight:700;color:var(--text);font-size:13.5px;
}

.rc-dates-list{
  display:flex;flex-direction:column;
  margin-top:4px;
}

.rc-date-row{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  padding:5px 0;
  border-top:1px solid rgba(148,163,184,.07);
}
.rc-date-row:first-child{border-top:none}

.rc-model{
  font-size:11.5px;color:var(--text-dim);
  background:rgba(148,163,184,.1);border:1px solid rgba(148,163,184,.15);
  border-radius:6px;padding:2px 8px;
  white-space:nowrap;
}
.rc-dates{
  font-size:12px;color:var(--muted);white-space:nowrap;
}
.rc-datesep{color:rgba(148,163,184,.45);margin:0 5px}

.rc-duration{
  font-size:11px;color:var(--text-dim);white-space:nowrap;
}
.rc-rate{
  font-size:11px;color:var(--accent2);white-space:nowrap;
}

.rc-book{
  margin-left:auto;
  display:inline-block;padding:5px 13px;
  background:linear-gradient(135deg,rgba(56,189,248,.18),rgba(34,197,94,.12));
  border:1px solid rgba(56,189,248,.35);
  border-radius:8px;color:var(--accent2);
  text-decoration:none;font-size:11px;font-weight:900;
  letter-spacing:.5px;white-space:nowrap;
  transition:all .15s ease;
  flex-shrink:0;
}
.rc-book:hover{
  background:linear-gradient(135deg,rgba(56,189,248,.28),rgba(34,197,94,.18));
  box-shadow:0 4px 12px rgba(56,189,248,.15)
}

.rc-van-img{
  width:48px;
  height:34px;
  object-fit:cover;
  border-radius:6px;
  border:1px solid rgba(148,163,184,.18);
  flex-shrink:0;
  background:rgba(148,163,184,.08);
}

.loading-message{
  text-align:center;padding:40px;
  color:var(--muted);font-size:14px
}

/* Responsive */
@media (max-width: 1200px){
  .grid{grid-template-columns: repeat(2, minmax(0, 1fr));}
  .header{grid-template-columns: 1fr;}
  .top-right{justify-content:flex-start;}
  .battery-hero{min-width: 0; width: 100%;}
}

@media (max-width: 1024px){
  .main-layout{flex-direction:column;}
  .sidebar{width:100%;position:relative;top:0;}
  .sidebar-title{display:none;}
  .nav-item{display:inline-flex;margin-right:8px;}

}

/* ============================================================
   MOBILE  (≤ 768 px)
   Sidebar → fixed bottom tab bar; single-column layout
   ============================================================ */
@media (max-width: 768px){

  /* ---- global ---- */
  body{
    padding: 10px 10px calc(74px + env(safe-area-inset-bottom, 0px));
  }

  /* ---- header ---- */
  .header{
    grid-template-columns: 1fr;
    gap:10px;
    padding:12px 14px;
  }
  .title h1{font-size:16px}
  .top-right{
    justify-content:flex-start;
    flex-wrap:wrap;
    gap:8px;
  }
  .battery-hero{
    min-width:0;
    flex:1;
    padding:8px 12px;
    border-radius:12px;
  }
  .battery-big{font-size:18px}
  .battery-bar{width:80px}
  .chip{font-size:11.5px;padding:6px 10px}

  .qs-chip{padding:5px 9px;gap:5px}
  .qs-icon{font-size:13px}
  .qs-lbl{font-size:9px}
  .qs-val{font-size:12px}

  /* ---- main layout: stack vertically, sidebar last (hidden visually) ---- */
  .main-layout{
    flex-direction:column;
    gap:10px;
  }
  .content-area{width:100%}

  /* ---- sidebar → fixed bottom tab bar ---- */
  .sidebar{
    position:fixed;
    bottom:0;left:0;right:0;
    width:100%;
    /* reset desktop positioning */
    top:unset;
    border-radius:0;
    border:none;
    border-top:1px solid rgba(148,163,184,.18);
    background:rgba(7,11,20,.94);
    -webkit-backdrop-filter:blur(16px);
    backdrop-filter:blur(16px);
    box-shadow:0 -6px 28px rgba(0,0,0,.55);
    display:flex;
    flex-direction:row;
    align-items:stretch;
    padding:4px 6px env(safe-area-inset-bottom, 4px);
    gap:2px;
    z-index:200;
    /* remove desktop card look */
    box-sizing:border-box;
  }

  .sidebar-title{display:none}

  .nav-item{
    display:flex;           /* override inline-flex from 1024px breakpoint */
    flex:1;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:3px;
    padding:6px 2px;
    margin-bottom:0;
    border-radius:10px;
    font-size:9.5px;
    font-weight:700;
    letter-spacing:.2px;
    text-align:center;
  }
  .nav-icon{
    font-size:20px;
    width:auto;
    line-height:1;
  }

  /* ---- content cards / grid ---- */
  .section{padding:12px}
  .section-title{font-size:11px;margin-bottom:12px}

  .grid{grid-template-columns:1fr}

  /* override any inline grid-column: span 2 on cards */
  .card[style*="grid-column"]{grid-column:1 !important}

  .card{padding:12px}
  .kpi .value{font-size:26px}
  .chart-wrap{height:160px}

  /* ---- rally filters: stack vertically ---- */
  .rally-filters{flex-direction:column;gap:8px;padding:12px}
  .filter-group{min-width:0;width:100%;flex:none}
  .filter-group-btn{align-self:stretch;flex-direction:row !important;gap:8px}
  .filter-group-btn .btn{flex:1}

  /* multi-select dropdowns: full width, above bottom nav */
  .ms-wrapper{width:100%;position:relative;z-index:1}
  .ms-wrapper.open{z-index:400}
  .ms-trigger{width:100%}
  .ms-panel{
    width:100% !important;
    min-width:unset !important;
    left:0;right:0;
    z-index:300 !important;
  }
  .ms-options{max-height:40vh}

  /* calendar panel: full width, above bottom nav */
  .cal-panel{
    width:100% !important;
    min-width:unset !important;
    z-index:300 !important;
  }
  .cal-days .cal-day{height:36px;font-size:13px}

  /* route cards: ensure book link stays on same row on small screens */
  .rc-footer{gap:8px}
  .rc-book{margin-left:auto}

  /* rally stats cards */
  .rally-stats{grid-template-columns:1fr 1fr}
  .rally-stat-value{font-size:26px}

  /* ---- terminal ---- */
  .term-body{min-height:220px;max-height:320px;font-size:12px}
  .term-input{font-size:12px}
  .term-prompt{font-size:12px}
  .term-lock-box{margin:24px auto;padding:24px 18px}

  /* ---- tmux ---- */
  .tmux-session-card{padding:10px 12px}

  /* ---- buttons: larger tap targets ---- */
  .btn{padding:11px 14px;font-size:13px}
  .btnrow{gap:6px}

  /* ---- footer ---- */
  .footer{margin-bottom:4px;font-size:11px}
}

/* ============================================================
   TODO LIST
   ============================================================ */

.todo-toolbar{
  display:flex;justify-content:flex-end;margin-bottom:16px;
}

.todo-add-btn{
  flex:none !important;
  padding:10px 18px !important;
  background:linear-gradient(135deg,rgba(56,189,248,.18),rgba(34,197,94,.12)) !important;
  border-color:rgba(56,189,248,.35) !important;
  color:var(--accent2) !important;
  font-weight:900 !important;
  letter-spacing:.3px;
}
.todo-add-btn:hover{
  background:linear-gradient(135deg,rgba(56,189,248,.28),rgba(34,197,94,.20)) !important;
}

/* Open-item list */
.todo-list{
  display:flex;flex-direction:column;gap:8px;
  margin-bottom:20px;
}

.todo-empty{
  text-align:center;padding:32px 16px;
  color:var(--muted);font-size:13.5px;
  border:1px dashed rgba(148,163,184,.18);
  border-radius:12px;
}

/* Individual open item */
.todo-item{
  display:flex;align-items:center;gap:10px;
  padding:12px 14px;
  border:1px solid rgba(148,163,184,.14);
  border-radius:12px;
  background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.02));
  box-shadow:var(--shadow);
  cursor:default;
  transition:border-color .15s, background .15s, opacity .2s;
}

.todo-item:hover{
  border-color:rgba(56,189,248,.25);
  background:linear-gradient(180deg,rgba(56,189,248,.06),rgba(56,189,248,.02));
}

.todo-item.dragging{
  opacity:.45;
  border-color:var(--accent2);
}

.todo-item.drag-over{
  border-color:var(--accent2);
  background:linear-gradient(180deg,rgba(56,189,248,.12),rgba(56,189,248,.04));
  box-shadow:0 0 0 2px rgba(56,189,248,.25);
}

/* Drag handle */
.todo-drag-handle{
  color:var(--muted);font-size:18px;cursor:grab;flex-shrink:0;
  opacity:.45;transition:opacity .15s;
  user-select:none;line-height:1;
}
.todo-item:hover .todo-drag-handle{ opacity:.75; }
.todo-drag-handle:active{ cursor:grabbing; }

/* Done button (circle) */
.todo-done-btn{
  flex-shrink:0;
  width:22px;height:22px;border-radius:50%;
  border:2px solid rgba(148,163,184,.35);
  background:transparent;
  color:var(--muted);
  font-size:14px;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;
  transition:border-color .15s, background .15s, color .15s;
  line-height:1;
  padding:0;
}
.todo-done-btn:hover{
  border-color:var(--accent);
  background:rgba(34,197,94,.14);
  color:var(--accent);
}

/* Main clickable content */
.todo-item-main{
  flex:1;min-width:0;cursor:pointer;
}

.todo-item-title{
  font-size:13.5px;font-weight:700;color:var(--text);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}

.todo-item-title-done{
  text-decoration:line-through;
  color:var(--muted) !important;
}

.todo-item-desc{
  font-size:12px;color:var(--muted);margin-top:3px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}

.todo-item-due{
  display:inline-block;
  margin-top:4px;
  font-size:11px;font-weight:700;
  padding:2px 8px;border-radius:999px;
  background:rgba(148,163,184,.12);border:1px solid rgba(148,163,184,.18);
  color:var(--muted);
}

.todo-item-due.due-soon{
  background:rgba(245,158,11,.14);border-color:rgba(245,158,11,.35);
  color:#fcd34d;
}

.todo-item-due.due-overdue{
  background:rgba(239,68,68,.12);border-color:rgba(239,68,68,.25);
  color:#fca5a5;
}

/* ---- Archive section ---- */
.todo-archive-toggle{
  display:flex;align-items:center;gap:10px;
  padding:10px 14px;
  border:1px solid rgba(148,163,184,.12);
  border-radius:10px;
  cursor:pointer;
  font-size:12.5px;font-weight:700;
  color:var(--muted);
  transition:background .15s;
  user-select:none;
  margin-bottom:4px;
}
.todo-archive-toggle:hover{ background:rgba(255,255,255,.04); }

.todo-archive-count{
  font-size:11px;
  background:rgba(148,163,184,.14);
  border:1px solid rgba(148,163,184,.2);
  border-radius:999px;
  padding:1px 8px;
  color:var(--text-dim);
}

.todo-archive-chevron{ margin-left:auto;font-size:12px; }

#todo-archive-list{
  display:flex;flex-direction:column;gap:6px;
  padding-top:6px;
}

.todo-archive-item{
  display:flex;align-items:center;gap:10px;
  padding:10px 14px;
  border:1px solid rgba(148,163,184,.09);
  border-radius:10px;
  background:rgba(2,6,23,.20);
}

.todo-archive-check{
  flex-shrink:0;
  width:22px;height:22px;border-radius:50%;
  background:rgba(34,197,94,.14);border:2px solid rgba(34,197,94,.35);
  display:flex;align-items:center;justify-content:center;
  font-size:11px;color:#86efac;font-weight:900;
}

.todo-reopen-btn,
.todo-del-btn{
  flex-shrink:0;
  background:transparent;
  border:1px solid rgba(148,163,184,.18);
  border-radius:8px;
  color:var(--muted);
  font-size:13px;
  width:28px;height:28px;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;
  transition:border-color .15s,background .15s,color .15s;
}
.todo-reopen-btn:hover{ border-color:var(--accent2);color:var(--accent2); }
.todo-del-btn:hover{ border-color:var(--bad);color:var(--bad); }

/* ============================================================
   TODO MODAL
   ============================================================ */

.todo-modal-overlay{
  display:none;
  position:fixed;inset:0;
  z-index:500;
  background:rgba(4,6,18,.72);
  -webkit-backdrop-filter:blur(6px);
  backdrop-filter:blur(6px);
  align-items:center;
  justify-content:center;
  padding:20px;
}

.todo-modal-overlay.open{
  display:flex;
  animation:fadeIn .2s ease;
}

.todo-modal{
  width:100%;max-width:560px;
  border:1px solid rgba(148,163,184,.2);
  background:linear-gradient(180deg,rgba(14,24,42,.97),rgba(7,11,20,.98));
  border-radius:var(--r);
  box-shadow:0 24px 64px rgba(0,0,0,.7);
  display:flex;flex-direction:column;
  max-height:90vh;
  overflow:hidden;
}

.todo-modal-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:18px 20px 14px;
  border-bottom:1px solid var(--border);
  flex-shrink:0;
}

.todo-modal-heading{
  font-size:15px;font-weight:900;color:var(--text);
}

.todo-modal-close{
  background:transparent;
  border:1px solid rgba(148,163,184,.2);
  border-radius:8px;
  color:var(--muted);
  font-size:14px;
  width:30px;height:30px;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;
  transition:border-color .15s,color .15s;
}
.todo-modal-close:hover{ border-color:var(--bad);color:var(--bad); }

.todo-modal-body{
  padding:20px;
  display:flex;flex-direction:column;gap:16px;
  overflow-y:auto;
}

.todo-modal-footer{
  display:flex;align-items:center;gap:10px;
  padding:14px 20px;
  border-top:1px solid var(--border);
  flex-shrink:0;
}

.todo-modal-delete-btn{
  background:rgba(239,68,68,.10) !important;
  border-color:rgba(239,68,68,.28) !important;
  color:#fca5a5 !important;
  flex:none !important;
}
.todo-modal-delete-btn:hover{
  background:rgba(239,68,68,.18) !important;
}

.todo-modal-save-btn{
  background:linear-gradient(135deg,rgba(56,189,248,.18),rgba(34,197,94,.12)) !important;
  border-color:rgba(56,189,248,.35) !important;
  color:var(--accent2) !important;
  font-weight:900 !important;
  flex:none !important;
}
.todo-modal-save-btn:hover{
  background:linear-gradient(135deg,rgba(56,189,248,.28),rgba(34,197,94,.20)) !important;
}

/* Form fields */
.todo-field{
  display:flex;flex-direction:column;gap:6px;
}

.todo-label{
  font-size:11px;letter-spacing:.8px;text-transform:uppercase;
  font-weight:900;color:var(--muted);
}

.todo-input{
  width:100%;
  padding:10px 13px;
  border-radius:10px;
  border:1px solid rgba(148,163,184,.22);
  background:rgba(2,6,23,.55);
  color:var(--text);
  font-size:13.5px;
  outline:none;
  transition:border-color .2s;
  font-family:inherit;
}
.todo-input:focus{ border-color:var(--accent2); }

.todo-textarea{
  width:100%;
  padding:10px 13px;
  border-radius:10px;
  border:1px solid rgba(148,163,184,.22);
  background:rgba(2,6,23,.55);
  color:var(--text);
  font-size:13px;line-height:1.55;
  outline:none;
  transition:border-color .2s;
  resize:vertical;
  font-family:inherit;
  min-height:80px;
}
.todo-textarea:focus{ border-color:var(--accent2); }

/* date input colour-fix in dark theme */
input[type="date"].todo-input::-webkit-calendar-picker-indicator{
  filter:invert(0.7);cursor:pointer;
}

@media (max-width:768px){
  .todo-modal{ max-height:95vh; }
  .todo-modal-header{ padding:14px 16px; }
  .todo-modal-body{ padding:14px 16px; gap:12px; }
  .todo-modal-footer{ padding:12px 16px; }
}

/* ============================================================
   ADMIN LOCK / AUTH
   ============================================================ */

/* Header title row (lock button + title text) */
.title-row{
  display:flex;
  align-items:center;
  gap:12px;
}

.admin-lock-btn{
  width:40px;height:40px;
  border-radius:50%;
  border:1px solid var(--border);
  background:rgba(255,255,255,.04);
  color:var(--text);
  font-size:19px;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;
  flex-shrink:0;
  transition:background .18s, border-color .18s, transform .15s, box-shadow .18s;
  padding:0;
}

.admin-lock-btn:hover{
  background:rgba(56,189,248,.12);
  border-color:rgba(56,189,248,.40);
  transform:scale(1.08);
  box-shadow:0 0 0 4px rgba(56,189,248,.12);
}

/* Admin nav section divider */
.nav-admin-divider{
  font-size:10px;
  letter-spacing:1.2px;
  text-transform:uppercase;
  color:var(--text-muted);
  font-weight:900;
  padding:12px 10px 6px;
  border-top:1px solid var(--border);
  margin-top:6px;
  display:none;
}

/* Hide admin nav items until unlocked (toggled by JS) */
.nav-admin-item{
  display:none;
}

/* ---- Admin password modal ---- */
.admin-modal-overlay{
  display:none;
  position:fixed;inset:0;
  z-index:600;
  background:rgba(4,6,18,.75);
  -webkit-backdrop-filter:blur(8px);
  backdrop-filter:blur(8px);
  align-items:center;
  justify-content:center;
  padding:20px;
}

.admin-modal-overlay.open{
  display:flex;
  animation:fadeIn .2s ease;
}

.admin-modal{
  display:flex;flex-direction:column;align-items:center;gap:16px;
  max-width:380px;width:100%;
  padding:40px 36px;
  border:1px solid var(--border);
  background:linear-gradient(180deg, rgba(14,24,42,.97), rgba(7,11,20,.98));
  border-radius:var(--r);
  box-shadow:0 24px 64px rgba(0,0,0,.75);
}

.admin-modal-icon{font-size:42px;line-height:1}
.admin-modal-title{font-size:17px;font-weight:900;color:var(--text)}
.admin-modal-sub{font-size:12.5px;color:var(--muted);text-align:center;line-height:1.5}

.admin-modal #admin-login-form{
  display:flex;flex-direction:column;gap:10px;width:100%;
}

/* Clickable stat cards */
.rbs-clickable{
  cursor:pointer;
  transition:transform .15s, box-shadow .15s;
}
.rbs-clickable:hover{
  transform:translateY(-2px);
  box-shadow:0 6px 20px rgba(0,0,0,.35);
}

/* RBS detail modal */
.rbs-detail-overlay{
  display:none;
  position:fixed;inset:0;
  z-index:600;
  background:rgba(4,6,18,.78);
  -webkit-backdrop-filter:blur(8px);
  backdrop-filter:blur(8px);
  align-items:center;
  justify-content:center;
  padding:20px;
}
.rbs-detail-overlay.open{
  display:flex;
  animation:fadeIn .2s ease;
}
.rbs-detail-modal{
  display:flex;flex-direction:column;gap:0;
  width:min(720px,100%);max-height:80vh;
  border:1px solid var(--border);
  background:linear-gradient(180deg,rgba(14,24,42,.97),rgba(7,11,20,.98));
  border-radius:var(--r);
  box-shadow:0 24px 64px rgba(0,0,0,.75);
  overflow:hidden;
}
.rbs-detail-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:16px 20px;
  border-bottom:1px solid var(--border);
  font-weight:800;font-size:14px;color:var(--text);
  flex-shrink:0;
}
.rbs-detail-modal .rbs-log{
  flex:1;max-height:none;border:none;border-radius:0;
  padding:16px 18px;
}

@media(max-width:768px){
  .admin-modal{padding:28px 20px}
  .admin-lock-btn{width:36px;height:36px;font-size:17px}
}

/* ---- Rally Bot Stats window ---- */
.rbs-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
  gap:16px;
  margin-top:16px;
}

/* Stat card colour overrides */
.rbs-warn-card{ background:linear-gradient(135deg,rgba(251,191,36,.1),rgba(251,191,36,.04))!important; border-color:rgba(251,191,36,.2)!important; }
.rbs-err-card{  background:linear-gradient(135deg,rgba(239,68,68,.1),rgba(239,68,68,.04))!important;  border-color:rgba(239,68,68,.2)!important; }
.rbs-warn-value{ color:#fbbf24; }
.rbs-err-value{  color:#ef4444; }
/* Highlight only when truly non-zero */
.rbs-active-warn .rbs-warn-value{ color:#f59e0b; text-shadow:0 0 12px rgba(251,191,36,.5); }
.rbs-active-err  .rbs-err-value{  color:#ef4444; text-shadow:0 0 12px rgba(239,68,68,.5); }

/* Horizontal bar rows */
.rbs-table-wrap{ display:flex; flex-direction:column; gap:7px; margin-top:10px; }
.rbs-row{
  display:flex; align-items:center; gap:8px;
  font-size:12.5px;
}
.rbs-row-label{
  flex:0 0 140px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  color:var(--text); font-weight:600;
}
.rbs-bar-wrap{
  flex:1; height:6px; background:rgba(148,163,184,.1); border-radius:10px; overflow:hidden;
}
.rbs-bar{
  height:100%; border-radius:10px;
  background:linear-gradient(90deg,var(--accent2),var(--accent));
  transition:width .4s ease;
}
.rbs-bar-alt{
  background:linear-gradient(90deg,#a78bfa,#818cf8);
}
.rbs-row-val{
  flex:0 0 30px; text-align:right; color:var(--muted); font-size:12px; font-weight:700;
}

/* Log tail */
.rbs-log{
  max-height:320px; overflow-y:auto;
  background:rgba(4,6,18,.6); border:1px solid rgba(148,163,184,.1);
  border-radius:10px; padding:12px 14px;
  font-family:'Courier New',monospace; font-size:11.5px; line-height:1.6;
}
.rbs-log::-webkit-scrollbar{width:6px}
.rbs-log::-webkit-scrollbar-track{background:transparent}
.rbs-log::-webkit-scrollbar-thumb{background:rgba(148,163,184,.2);border-radius:10px}
.rbs-log-line{ white-space:pre-wrap; word-break:break-all; color:var(--muted); }
.rbs-log-err{  color:#f87171; }
.rbs-log-warn{ color:#fbbf24; }
.rbs-log-info{ color:rgba(148,163,184,.7); }

/* Map continent-exclusion toggles */
.map-exclude-toggle{ display:flex; align-items:center; gap:7px; cursor:pointer; font-size:.82rem; color:var(--muted); user-select:none; white-space:nowrap; }
.map-exclude-toggle input[type=checkbox]{ width:15px; height:15px; accent-color:var(--accent); cursor:pointer; flex-shrink:0; }
.map-exclude-toggle:hover span{ color:var(--text); }
.map-exclude-toggle input:checked + span{ color:var(--accent); font-weight:600; }

/* ---- Language picker ---- */
.lang-picker{ display:flex; gap:3px; flex-shrink:0; }
.lang-btn{ background:var(--card-bg,rgba(2,6,23,.55)); border:1px solid var(--border); border-radius:6px; color:var(--muted); padding:4px 10px; font-size:.78rem; font-weight:800; cursor:pointer; letter-spacing:.5px; transition:background .15s,color .15s,border-color .15s; }
.lang-btn:hover{ background:rgba(99,179,237,.1); color:var(--text); border-color:rgba(99,179,237,.4); }
.lang-btn.active{ background:rgba(99,179,237,.15); color:var(--accent); border-color:var(--accent); }

/* ---- View toggle (List / Map) ---- */
.view-toggle{ display:flex; gap:6px; flex-shrink:0; }
.view-btn{ background:var(--card-bg); border:1px solid var(--border); border-radius:6px; color:var(--muted); padding:5px 13px; font-size:.82rem; cursor:pointer; transition:background .15s,color .15s,border-color .15s; }
.view-btn:hover{ background:rgba(99,179,237,.1); color:var(--text); border-color:rgba(99,179,237,.4); }
.view-btn.active{ background:rgba(99,179,237,.15); color:var(--accent); border-color:var(--accent); font-weight:600; }

/* ---- Route Map ---- */
#map-container{ height:560px; border-radius:10px; overflow:hidden; border:1px solid var(--border); position:relative; z-index:0; }
/* Ensure map filter dropdowns appear above the Leaflet layers */
#window-rally .ms-wrapper{ position:relative; z-index:1000; }
#window-rally .ms-wrapper.open{ z-index:1010; }
#window-rally .ms-panel{ z-index:1001; }
.map-date-input{
  background:var(--card-bg); border:1px solid var(--border); border-radius:6px;
  color:var(--text); padding:6px 10px; font-size:.85rem; width:100%;
  -webkit-appearance:none; appearance:none;
}
.map-date-input:focus{ outline:none; border-color:var(--accent); }
/* Leaflet popup dark theme */
.leaflet-popup-content-wrapper{ background:var(--card-bg,#1e293b); color:var(--text,#e2e8f0); border:1px solid var(--border,rgba(255,255,255,.1)); border-radius:8px; box-shadow:0 4px 20px rgba(0,0,0,.5); }
.leaflet-popup-tip{ background:var(--card-bg,#1e293b); }
.leaflet-popup-close-button{ color:var(--muted,#94a3b8) !important; }
.map-popup{ font-size:.82rem; min-width:160px; }
.map-popup-scroll{ max-height:260px; overflow-y:auto; padding-right:2px; margin-top:2px; }
.map-popup-scroll::-webkit-scrollbar{ width:4px; }
.map-popup-scroll::-webkit-scrollbar-thumb{ background:rgba(148,163,184,.3); border-radius:2px; }
.map-popup-title{ font-weight:700; font-size:.9rem; color:var(--accent,#63b3ed); margin-bottom:6px; border-bottom:1px solid var(--border,rgba(255,255,255,.1)); padding-bottom:4px; }
.map-popup-model{ font-weight:600; color:var(--text,#e2e8f0); margin-top:6px; }
.map-popup-date{ color:var(--muted,#94a3b8); padding-left:12px; }
.map-popup-img{ width:100%; border-radius:6px; margin:8px 0 4px; display:block; object-fit:cover; max-height:140px; }
.map-popup-book{ display:inline-block; margin-left:8px; padding:1px 8px; background:rgba(99,179,237,.15); border:1px solid var(--accent,#63b3ed); border-radius:4px; color:var(--accent,#63b3ed); font-size:.75rem; text-decoration:none; font-weight:600; white-space:nowrap; vertical-align:middle; }
.map-popup-book:hover{ background:rgba(99,179,237,.3); }

/* ---- File Storage ---- */
.files-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.files-breadcrumb{display:flex;align-items:center;gap:2px;flex-wrap:wrap;font-size:.85rem;min-height:28px}
.files-crumb{color:var(--accent);cursor:pointer;padding:2px 5px;border-radius:4px;transition:background .15s}
.files-crumb:hover{background:rgba(99,179,237,.15)}
.files-crumb-active{color:var(--text);cursor:default}
.files-crumb-active:hover{background:none}
.files-crumb-sep{color:var(--muted);user-select:none}
.files-drop-zone{border:2px dashed rgba(99,179,237,.3);border-radius:8px;padding:18px;text-align:center;color:var(--muted);font-size:.85rem;transition:border-color .2s,background .2s;margin-bottom:14px;cursor:default}
.files-drop-zone.drag-over{border-color:var(--accent);background:rgba(99,179,237,.08);color:var(--accent)}
.files-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}
.file-card{position:relative;background:var(--card-bg);border:1px solid var(--border);border-radius:8px;padding:10px 8px 8px;display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer;transition:background .2s,border-color .2s;min-width:0;overflow:hidden}
.file-card:hover{background:rgba(99,179,237,.07);border-color:rgba(99,179,237,.4)}
.file-card-dir{border-style:dashed}
.file-card-img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:4px;flex-shrink:0}
.file-card-icon{font-size:2.2rem;line-height:1;flex-shrink:0}
.file-card-name{font-size:.75rem;color:var(--text);text-align:center;word-break:break-all;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;width:100%}
.file-card-meta{font-size:.65rem;color:var(--muted);text-align:center}
.file-delete-btn{position:absolute;top:4px;right:4px;background:rgba(248,113,113,.15);border:none;border-radius:4px;color:#f87171;font-size:.65rem;padding:2px 5px;cursor:pointer;opacity:0;transition:opacity .15s;line-height:1.4}
.file-card:hover .file-delete-btn{opacity:1}


