/* ============================================================
   Tracpoint Modern - prototype stylesheet
   Palette, type and component vocabulary taken verbatim from the
   TerraMar house style (terramar-tachograph-analysis.html).
   ============================================================ */
:root{
  --green:#51ae32; --dgreen:#3c8a25; --blue:#006f9e; --dblue:#004563;
  --grey:#36393b; --lgrey:#999b9b; --xlgrey:#ebebeb; --lgreen:#e0edd5;
  --red:#e62143; --amber:#fcc100; --yellow:#f5c800; --orange:#e07b20;
  --purple:#7b4fa6; --white:#ffffff;
  --bg:#e2e4e5; --line:#e1e3e4; --line-2:#eef0f1; --muted:#6b6e70; --text:#36393b;
  /* app shell additions */
  --rail:#2b2e30; --rail-hover:#3f4345;
  /* asset status, mapped onto the house palette */
  --st-moving:var(--green); --st-idling:var(--amber);
  --st-stopped:var(--blue); --st-nosignal:var(--red);
}
*{box-sizing:border-box;margin:0;padding:0;}
html,body{height:100%;}
body{background:var(--bg);color:var(--text);
  font-family:'Roboto',system-ui,sans-serif;font-size:14.5px;line-height:1.55;
  -webkit-font-smoothing:antialiased;overflow:hidden;}
.cond{font-family:'Roboto Condensed','Roboto',sans-serif;}
.num{font-variant-numeric:tabular-nums;}
button{font:inherit;cursor:pointer;border:none;background:none;color:inherit;}
input{font:inherit;}

/* ---------- App shell ---------- */
.app{display:flex;flex-direction:column;height:100vh;}
.shell{flex:1;display:flex;min-height:0;}

/* ---------- Header ---------- */
header{background:var(--grey);padding:0 20px 0 0;display:flex;align-items:stretch;
  justify-content:space-between;gap:20px;border-bottom:3px solid var(--green);flex:0 0 auto;}
.brand{display:flex;align-items:center;gap:14px;padding:12px 20px;}
.brand .burger{color:var(--lgrey);font-size:18px;line-height:1;padding:4px 6px;}
.brand .burger:hover{color:#fff;}
.brand h1{font-family:'Roboto Condensed',sans-serif;font-weight:700;font-size:23px;
  color:#fff;letter-spacing:1px;line-height:1;}
.brand h1 span{color:var(--green);}
.brand p{font-family:'Roboto Condensed',sans-serif;font-size:9px;letter-spacing:3px;
  text-transform:uppercase;color:var(--lgrey);margin-top:3px;}

.hdr-right{align-self:center;font-family:'Roboto Condensed',sans-serif;font-size:10px;
  color:var(--lgrey);text-align:right;letter-spacing:1.5px;text-transform:uppercase;line-height:1.9;}
.hdr-right b{color:var(--green);font-weight:700;letter-spacing:1px;}
.demo-note{display:inline-flex;align-items:center;gap:5px;font-family:'Roboto Condensed',sans-serif;
  font-size:9px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:var(--grey);
  background:var(--amber);padding:3px 10px;border-radius:20px;margin-bottom:5px;}

/* ---------- Module rail (the Switcher) ---------- */
.rail{flex:0 0 206px;background:var(--rail);overflow-y:auto;overflow-x:hidden;
  display:flex;flex-direction:column;transition:flex-basis .18s ease;}
.rail.collapsed{flex-basis:54px;}
.rail-grp{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;
  font-family:'Roboto Condensed',sans-serif;font-size:9px;letter-spacing:2px;font-weight:600;
  text-transform:uppercase;color:#6c7072;padding:16px 16px 7px;white-space:nowrap;text-align:left;}
.rail-grp:hover{color:#b9bcbd;}
.rail-grp .chev{flex:0 0 auto;transition:transform .15s ease;opacity:.8;}
.rail-group.closed .rail-grp .chev{transform:rotate(-90deg);}
.rail-group.closed .rail-items{display:none;}
/* Icon-only rail: group headers are gone, so nothing may stay collapsed -
   otherwise those modules would be unreachable. */
.rail.collapsed .rail-grp{display:none;}
.rail.collapsed .rail-group.closed .rail-items{display:block;}
.rail a{display:flex;align-items:center;gap:12px;padding:9px 16px;text-decoration:none;
  color:#b9bcbd;font-family:'Roboto Condensed',sans-serif;font-size:12px;font-weight:600;
  letter-spacing:1.1px;text-transform:uppercase;border-left:3px solid transparent;
  white-space:nowrap;}
.rail a:hover{background:var(--rail-hover);color:#fff;}
.rail a.active{background:var(--grey);color:#fff;border-left-color:var(--green);}
.rail a .ic{flex:0 0 18px;height:18px;display:flex;align-items:center;justify-content:center;
  color:var(--green);font-size:14px;}
.rail a:hover .ic,.rail a.active .ic{color:var(--green);}
.rail.collapsed a{padding:11px 0;justify-content:center;}
.rail.collapsed a .lbl{display:none;}

/* ---------- Content area ---------- */
.content{flex:1;min-width:0;display:flex;flex-direction:column;}
.view{flex:1;min-height:0;display:none;}
.view.active{display:flex;}

/* ---------- Live map view ---------- */
.mapview{min-height:0;}

.panel{flex:0 0 352px;background:#fff;border-right:1px solid var(--line);
  display:flex;flex-direction:column;min-height:0;}
.panel-hd{background:var(--grey);color:#fff;padding:10px 16px;border-bottom:3px solid var(--green);
  display:flex;align-items:center;justify-content:space-between;gap:12px;flex:0 0 auto;}
.panel-hd h3{font-family:'Roboto Condensed',sans-serif;font-weight:700;font-size:13px;
  letter-spacing:1.6px;text-transform:uppercase;}
.panel-hd .count{font-family:'Roboto Condensed',sans-serif;font-size:11px;color:var(--lgrey);
  letter-spacing:1px;font-variant-numeric:tabular-nums;}

.filter{padding:12px 14px 0;flex:0 0 auto;}
.filter input{width:100%;padding:8px 10px;border:1px solid var(--line);font-size:13px;
  background:#fafbfb;}
.filter input:focus{outline:none;border-color:var(--green);background:#fff;}
.chips{display:flex;gap:5px;flex-wrap:wrap;padding:10px 14px 12px;border-bottom:1px solid var(--line);}
.chip{font-family:'Roboto Condensed',sans-serif;font-size:10.5px;font-weight:600;letter-spacing:.6px;
  text-transform:uppercase;padding:5px 9px;border-radius:3px;background:var(--xlgrey);
  color:var(--grey);display:inline-flex;align-items:center;gap:6px;}
.chip .n{font-variant-numeric:tabular-nums;font-weight:700;}
.chip:hover{background:#dcdedf;}
.chip.on{background:var(--grey);color:#fff;}
.chip .dot{width:7px;height:7px;border-radius:50%;}

.alist{flex:1;overflow-y:auto;min-height:0;}
.arow{display:grid;grid-template-columns:10px 1fr auto;gap:11px;align-items:center;
  padding:9px 14px;border-bottom:1px solid var(--line-2);cursor:pointer;}
.arow:hover{background:#f4f5f6;}
.arow.sel{background:var(--lgreen);box-shadow:inset 3px 0 0 var(--green);}
.arow .sdot{width:10px;height:10px;border-radius:50%;}
.arow .nm{font-family:'Roboto Condensed',sans-serif;font-weight:700;font-size:14px;
  color:var(--grey);letter-spacing:.3px;line-height:1.2;}
.arow .meta{font-size:11.5px;color:var(--muted);margin-top:2px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:215px;}
.arow .right{text-align:right;}
.arow .spd{font-family:'Roboto Condensed',sans-serif;font-weight:700;font-size:14px;
  color:var(--grey);font-variant-numeric:tabular-nums;line-height:1.2;}
.arow .spd small{font-weight:600;font-size:9.5px;color:var(--muted);letter-spacing:.8px;}
.arow .ago{font-family:'Roboto Condensed',sans-serif;font-size:10.5px;color:var(--muted);
  letter-spacing:.6px;text-transform:uppercase;margin-top:2px;}
.arow .ago.stale{color:var(--red);font-weight:700;}
.empty{padding:30px 16px;text-align:center;color:var(--muted);font-size:13px;}

/* ---------- Map ---------- */
.map-wrap{flex:1;position:relative;min-width:0;}
#map{position:absolute;inset:0;background:#dfe3e6;}
.leaflet-container{font-family:'Roboto',sans-serif;}

.mk{position:relative;width:26px;height:26px;}
.mk .body{position:absolute;inset:0;border-radius:50%;border:2.5px solid #fff;
  box-shadow:0 1px 5px rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;
  color:#fff;font-size:12px;}
.mk.moving .body{background:var(--st-moving);}
.mk.idling .body{background:var(--st-idling);color:var(--grey);}
.mk.stopped .body{background:var(--st-stopped);}
.mk.nosignal .body{background:var(--st-nosignal);}
.mk.sel .body{box-shadow:0 0 0 5px rgba(81,174,50,.35),0 1px 5px rgba(0,0,0,.4);}
.mk .arr{position:absolute;top:-9px;left:50%;width:0;height:0;margin-left:-5px;
  border-left:5px solid transparent;border-right:5px solid transparent;
  border-bottom:8px solid var(--dgreen);transform-origin:50% 22px;}
.mk .tag{position:absolute;top:28px;left:50%;transform:translateX(-50%);
  font-family:'Roboto Condensed',sans-serif;font-size:10px;font-weight:700;letter-spacing:.5px;
  background:rgba(54,57,59,.88);color:#fff;padding:1px 6px;white-space:nowrap;border-radius:2px;}

.mk:not(.moving) .arr{display:none;}
.map-wrap.no-labels .mk .tag{display:none;}

.map-tools{position:absolute;top:12px;right:12px;z-index:450;display:flex;flex-direction:column;gap:6px;}
.map-tools button{background:#fff;border:1px solid var(--line);padding:7px 12px;
  font-family:'Roboto Condensed',sans-serif;font-size:10.5px;font-weight:700;letter-spacing:1.2px;
  text-transform:uppercase;color:var(--grey);box-shadow:0 1px 4px rgba(0,0,0,.14);}
.map-tools button:hover{background:var(--grey);color:#fff;}
.map-tools button.on{background:var(--green);color:#fff;border-color:var(--dgreen);}

/* ---------- Detail slide-over ---------- */
.detail{position:absolute;top:0;right:0;bottom:0;width:392px;max-width:100%;background:#fff;
  border-left:1px solid var(--line);z-index:500;display:flex;flex-direction:column;
  transform:translateX(102%);transition:transform .2s ease;box-shadow:-6px 0 20px rgba(54,57,59,.13);}
.detail.open{transform:none;}
.detail .dhd{background:var(--grey);color:#fff;padding:16px 20px;border-bottom:3px solid var(--green);
  position:relative;}
.detail .dhd .eyebrow{font-family:'Roboto Condensed',sans-serif;font-size:9.5px;font-weight:600;
  letter-spacing:2.5px;text-transform:uppercase;color:var(--green);}
.detail .dhd h2{font-family:'Roboto Condensed',sans-serif;font-weight:700;font-size:25px;
  line-height:1.1;letter-spacing:.5px;margin-top:5px;}
.detail .dhd .reg{font-family:'Roboto Condensed',sans-serif;font-weight:700;font-size:16px;
  letter-spacing:2px;background:#2b2e30;border:1px solid rgba(255,255,255,.12);
  padding:4px 11px;display:inline-block;margin-top:9px;}
.detail .close{position:absolute;top:12px;right:14px;color:var(--lgrey);font-size:20px;line-height:1;}
.detail .close:hover{color:#fff;}
.dbody{flex:1;overflow-y:auto;min-height:0;}

.verdict{display:flex;align-items:center;gap:14px;background:#fff;border-bottom:1px solid var(--line);
  border-left:5px solid var(--amber);padding:13px 18px;}
.verdict.ok{border-left-color:var(--green);}
.verdict.alert{border-left-color:var(--red);}
.verdict.info{border-left-color:var(--blue);}
.v-light{width:11px;height:11px;border-radius:50%;flex:0 0 11px;background:var(--amber);
  box-shadow:0 0 0 4px rgba(252,193,0,.18);}
.verdict.ok .v-light{background:var(--green);box-shadow:0 0 0 4px rgba(81,174,50,.18);}
.verdict.alert .v-light{background:var(--red);box-shadow:0 0 0 4px rgba(230,33,67,.18);}
.verdict.info .v-light{background:var(--blue);box-shadow:0 0 0 4px rgba(0,111,158,.18);}
.verdict h3{font-family:'Roboto Condensed',sans-serif;font-weight:700;font-size:14px;
  letter-spacing:.5px;text-transform:uppercase;color:var(--grey);}
.verdict h3 small{display:block;font-family:'Roboto',sans-serif;font-weight:400;
  text-transform:none;letter-spacing:0;color:var(--muted);font-size:12px;margin-top:2px;}

/* actions - the whole point: one click, no menu */
.acts{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);
  border-bottom:1px solid var(--line);}
.acts button{background:#fff;padding:13px 6px 11px;display:flex;flex-direction:column;
  align-items:center;gap:6px;font-family:'Roboto Condensed',sans-serif;font-size:9.5px;
  font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--grey);}
.acts button .ic{font-size:16px;color:var(--green);line-height:1;}
.acts button:hover{background:var(--lgreen);}

.dsec{padding:16px 20px;border-bottom:1px solid var(--line);}
.dsec .stitle{display:flex;align-items:baseline;gap:10px;margin-bottom:12px;}
.dsec .stitle .idx{font-family:'Roboto Condensed',sans-serif;font-weight:700;font-size:11px;
  color:var(--green);letter-spacing:1px;}
.dsec .stitle h4{font-family:'Roboto Condensed',sans-serif;font-weight:700;font-size:12px;
  letter-spacing:2px;text-transform:uppercase;color:var(--grey);}
.dsec .stitle .rule{flex:1;height:2px;background:var(--xlgrey);}
.dsec dl{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;}
.dsec dt{font-family:'Roboto Condensed',sans-serif;font-size:10px;letter-spacing:1.2px;
  text-transform:uppercase;color:var(--muted);align-self:center;}
.dsec dd{font-size:13px;color:var(--text);font-variant-numeric:tabular-nums;}
.tag{font-family:'Roboto Condensed',sans-serif;font-size:10.5px;font-weight:600;letter-spacing:.5px;
  padding:3px 9px;border-radius:3px;background:var(--xlgrey);color:var(--grey);
  display:inline-block;text-transform:uppercase;}
.tag.ok{background:var(--lgreen);color:var(--dgreen);}
.tag.warn{background:#fdf2cf;color:#8a6400;}
.tag.alert{background:#fbe2e6;color:#b3142b;}
.tag.info{background:#dceaf1;color:var(--dblue);}
.tags{display:flex;gap:6px;flex-wrap:wrap;}

.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);
  border:1px solid var(--line);}
.kpi{background:#fff;padding:13px 14px 12px;}
.kpi .n{font-family:'Roboto Condensed',sans-serif;font-weight:700;font-size:23px;
  color:var(--grey);line-height:1;font-variant-numeric:tabular-nums;}
.kpi .n.flag{color:var(--red);}
.kpi .l{font-family:'Roboto Condensed',sans-serif;font-size:9.5px;letter-spacing:1.2px;
  text-transform:uppercase;color:var(--muted);margin-top:7px;line-height:1.35;}

/* 24h activity track, same language as the tacho calendar */
.track{position:relative;height:13px;background:var(--xlgrey);overflow:hidden;}
.track .seg{position:absolute;top:0;height:100%;}
.track .grid{position:absolute;top:0;height:100%;width:1px;background:rgba(0,0,0,.07);}
.track-hrs{display:flex;justify-content:space-between;font-family:'Roboto Condensed',sans-serif;
  font-size:9.5px;color:var(--muted);letter-spacing:1px;margin-top:5px;}
.act-legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:11px;}
.act-legend span{display:inline-flex;align-items:center;gap:6px;
  font-family:'Roboto Condensed',sans-serif;letter-spacing:.5px;text-transform:uppercase;
  font-size:10px;color:var(--muted);}
.sw{width:12px;height:12px;display:inline-block;}

/* ---------- Placeholder module pages ---------- */
.ph{flex:1;overflow-y:auto;padding:34px 36px 44px;}
.ph .wrap{max-width:1060px;margin:0 auto;}
.ph .stitle{display:flex;align-items:baseline;gap:12px;margin-bottom:16px;}
.ph .stitle .idx{font-family:'Roboto Condensed',sans-serif;font-weight:700;font-size:13px;
  color:var(--green);letter-spacing:1px;}
.ph .stitle h2{font-family:'Roboto Condensed',sans-serif;font-weight:700;font-size:15px;
  letter-spacing:2.5px;text-transform:uppercase;color:var(--grey);}
.ph .stitle .rule{flex:1;height:2px;background:var(--xlgrey);}
.ph .card{background:#fff;border:1px solid var(--line);border-top:3px solid var(--green);
  padding:26px 28px;}
.ph .card .eyebrow{font-family:'Roboto Condensed',sans-serif;font-size:10px;font-weight:600;
  letter-spacing:2.5px;text-transform:uppercase;color:var(--green);margin-bottom:9px;}
.ph .card h2{font-family:'Roboto Condensed',sans-serif;font-weight:700;font-size:31px;
  line-height:1.05;color:var(--grey);letter-spacing:.5px;}
.ph .card p{color:var(--muted);font-size:13.5px;margin-top:11px;max-width:62ch;}
.ph .card .tags{margin-top:18px;}

/* ---------- History / route replay ---------- */
.histview{min-height:0;}
#hmap{position:absolute;inset:0;background:#dfe3e6;}
.hsel{width:100%;padding:8px 10px;border:1px solid var(--line);border-top:3px solid var(--green);
  background:#fff;font-size:13px;color:var(--text);}
.hsel:focus{outline:none;border-color:var(--green);}
.chips .chip.day{text-transform:none;letter-spacing:.3px;}

.jrow{display:grid;grid-template-columns:auto 1fr auto;gap:11px;align-items:start;
  padding:11px 14px;border-bottom:1px solid var(--line-2);cursor:pointer;}
.jrow:hover{background:#f4f5f6;}
.jrow.sel{background:var(--lgreen);box-shadow:inset 3px 0 0 var(--green);}
.jrow .seq{font-family:'Roboto Condensed',sans-serif;font-weight:700;font-size:11px;
  color:var(--green);letter-spacing:1px;padding-top:2px;}
.jrow .ends{font-family:'Roboto Condensed',sans-serif;font-weight:700;font-size:13.5px;
  color:var(--grey);letter-spacing:.3px;line-height:1.3;}
.jrow .ends .arrow{color:var(--lgrey);margin:0 5px;}
.jrow .meta{font-size:11.5px;color:var(--muted);margin-top:3px;}
.jrow .right{text-align:right;}
.jrow .km{font-family:'Roboto Condensed',sans-serif;font-weight:700;font-size:14px;
  color:var(--grey);font-variant-numeric:tabular-nums;line-height:1.2;}
.jrow .km small{font-weight:600;font-size:9.5px;color:var(--muted);letter-spacing:.8px;}
.jrow .mins{font-family:'Roboto Condensed',sans-serif;font-size:10.5px;color:var(--muted);
  letter-spacing:.6px;text-transform:uppercase;margin-top:3px;}
.jrow .flag{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--red);
  margin-left:6px;vertical-align:middle;}

/* replay bar */
.replay{position:absolute;left:16px;right:16px;bottom:16px;z-index:450;background:#fff;
  border:1px solid var(--line);border-top:3px solid var(--green);padding:10px 14px;
  display:none;align-items:center;gap:14px;box-shadow:0 2px 12px rgba(54,57,59,.18);}
.replay.on{display:flex;}
.replay.narrowed{right:408px;}
.replay .play{flex:0 0 auto;width:34px;height:34px;background:var(--green);color:#fff;
  display:flex;align-items:center;justify-content:center;}
.replay .play:hover{background:var(--dgreen);}
.replay .play.playing{background:var(--grey);}
.replay input[type=range]{flex:1;min-width:80px;accent-color:var(--green);height:4px;}
.replay .rtime{flex:0 0 auto;text-align:right;font-family:'Roboto Condensed',sans-serif;
  min-width:96px;}
.replay .rtime b{display:block;font-size:16px;color:var(--grey);letter-spacing:.5px;
  font-variant-numeric:tabular-nums;line-height:1.1;}
.replay .rtime span{font-size:10px;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted);}

/* route marks */
.rmk{width:16px;height:16px;border-radius:50%;border:2.5px solid #fff;
  box-shadow:0 1px 4px rgba(0,0,0,.4);}
.rmk.start{background:var(--green);}
.rmk.end{background:var(--grey);}
.rmk.ev{width:13px;height:13px;}
.rmk.ev.a{background:var(--red);}
.rmk.ev.w{background:var(--amber);}
.rmk.ev.i{background:var(--blue);}
.ghost{width:22px;height:22px;border-radius:50%;background:var(--green);
  border:3px solid #fff;box-shadow:0 0 0 4px rgba(81,174,50,.3),0 1px 5px rgba(0,0,0,.35);}

/* event list in the detail panel */
.evlist{display:grid;gap:1px;background:var(--line);border:1px solid var(--line);}
.ev{background:#fff;padding:10px 14px;display:grid;grid-template-columns:auto 1fr auto;
  gap:12px;align-items:start;}
.ev .sev{width:9px;height:9px;border-radius:50%;margin-top:5px;}
.ev .sev.a{background:var(--red);} .ev .sev.w{background:var(--amber);} .ev .sev.i{background:var(--blue);}
.ev .et{font-weight:500;font-size:13px;color:var(--grey);}
.ev .ed{font-size:12px;color:var(--muted);line-height:1.45;}
.ev .ex{font-family:'Roboto Condensed',sans-serif;font-size:11px;color:var(--muted);
  white-space:nowrap;text-align:right;font-variant-numeric:tabular-nums;}

/* ---------- Assets grid view ---------- */
.grid-view{flex:1;display:flex;flex-direction:column;min-height:0;padding:26px 30px 0;}
.grid-hd{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;
  flex-wrap:wrap;margin-bottom:14px;}
.grid-hd .stitle{display:flex;align-items:baseline;gap:12px;flex:1;min-width:280px;}
.grid-hd .stitle .idx{font-family:'Roboto Condensed',sans-serif;font-weight:700;font-size:13px;
  color:var(--green);letter-spacing:1px;}
.grid-hd .stitle h2{font-family:'Roboto Condensed',sans-serif;font-weight:700;font-size:15px;
  letter-spacing:2.5px;text-transform:uppercase;color:var(--grey);white-space:nowrap;}
.grid-hd .stitle .rule{flex:1;height:2px;background:var(--xlgrey);}
.grid-hd input{flex:0 0 280px;padding:8px 10px;border:1px solid var(--line);font-size:13px;background:#fff;}
.grid-hd input:focus{outline:none;border-color:var(--green);}
.grid-scroll{flex:1;min-height:0;overflow:auto;background:#fff;border:1px solid var(--line);
  border-top:3px solid var(--green);margin-bottom:0;}
table.grid{width:100%;border-collapse:collapse;font-size:13px;}
table.grid th{position:sticky;top:0;z-index:2;background:#f4f5f6;text-align:left;
  font-family:'Roboto Condensed',sans-serif;font-size:10px;letter-spacing:1.2px;
  text-transform:uppercase;color:var(--muted);font-weight:600;padding:10px 14px;
  border-bottom:1px solid var(--line);cursor:pointer;white-space:nowrap;}
table.grid th:hover{color:var(--grey);}
table.grid th.r{text-align:right;}
table.grid th.sorted{color:var(--dgreen);}
table.grid th.sorted:after{content:'';display:inline-block;margin-left:6px;
  border-left:4px solid transparent;border-right:4px solid transparent;
  border-bottom:5px solid var(--green);vertical-align:middle;}
table.grid th.sorted.desc:after{border-bottom:none;border-top:5px solid var(--green);}
table.grid td{padding:9px 14px;border-bottom:1px solid var(--line-2);
  font-variant-numeric:tabular-nums;white-space:nowrap;}
table.grid td.r{text-align:right;}
table.grid td.wide{white-space:normal;color:var(--muted);font-size:12.5px;}
table.grid tbody tr{cursor:pointer;}
table.grid tbody tr:nth-child(even){background:#fafbfb;}
table.grid tbody tr:hover{background:var(--lgreen);}
table.grid .nm{font-family:'Roboto Condensed',sans-serif;font-weight:700;font-size:13.5px;
  color:var(--grey);letter-spacing:.3px;}
table.grid .sdot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:7px;
  vertical-align:middle;}
.grid-foot{flex:0 0 auto;padding:11px 2px 16px;font-family:'Roboto Condensed',sans-serif;
  font-size:10.5px;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted);}

/* ---------- Tacho iframe ---------- */
.frame{flex:1;border:none;width:100%;min-height:0;background:var(--bg);}

/* ---------- Status bar ---------- */
.statusbar{flex:0 0 auto;background:var(--grey);color:var(--lgrey);padding:7px 20px;
  font-family:'Roboto Condensed',sans-serif;font-size:10.5px;letter-spacing:.8px;
  display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;text-transform:uppercase;}
.statusbar .brand-f{font-weight:700;color:#fff;letter-spacing:1px;}
.statusbar .brand-f span{color:var(--green);}
.statusbar b{color:#cfd1d2;font-weight:500;}
.pulse{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--green);
  margin-right:6px;animation:pulse 2s ease-in-out infinite;vertical-align:middle;}
@keyframes pulse{0%,100%{opacity:1;}50%{opacity:.25;}}

/* ---------- Toast ---------- */
.toast{position:fixed;left:50%;bottom:34px;transform:translateX(-50%) translateY(8px);z-index:900;
  display:none;max-width:88vw;padding:12px 18px;background:var(--grey);color:#fff;font-size:13px;
  font-weight:500;box-shadow:0 10px 34px rgba(54,57,59,.34);border-left:4px solid var(--green);}
.toast.show{display:block;animation:toast-in .2s ease both;}
@keyframes toast-in{from{opacity:0;transform:translateX(-50%) translateY(8px);}
  to{opacity:1;transform:translateX(-50%) translateY(0);}}

@media (max-width:1100px){
  .panel{flex-basis:300px;}
}
@media (max-width:880px){
  .rail{flex-basis:54px;}
  .rail .lbl,.rail .rail-grp{display:none;}
  .rail .rail-group.closed .rail-items{display:block;}
  .rail a{padding:11px 0;justify-content:center;}
  .panel{flex-basis:260px;}
  .detail{width:100%;}
  .hdr-right{display:none;}
}
