:root{
  --ink:#16131f; --muted:#5d5870; --bg:#f4f2fb; --card:#fff; --line:#dcd7ea;
  --brand:#3b2a7a; --brand2:#5b3fa8;
  --ready:#14853b; --work:#d9600b; --done:#1f5fd1; --late:#d0102b; --soon:#b88a00;
  --r:16px; --tap:56px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font:18px/1.35 system-ui,-apple-system,"Segoe UI",Roboto,"Noto Sans",Arial,sans-serif;color:var(--ink);background:var(--bg);padding-bottom:calc(84px + env(safe-area-inset-bottom))}
a{color:var(--brand2)}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:3px solid #ffb300;outline-offset:2px}
.skip{position:absolute;left:-999px}.skip:focus{left:8px;top:8px;background:#fff;padding:8px;z-index:99}
.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;background:var(--brand);color:#fff}
.brand{display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none;font-weight:800;letter-spacing:.08em;font-size:20px}
.brand img{background:#fff;border-radius:10px;padding:3px 6px;height:42px;width:auto}
.sync{border:0;border-radius:999px;padding:8px 12px;font-size:15px;font-weight:700;background:#ffffff22;color:#fff;min-height:44px}
.sync.ok{background:#1d9d4d}.sync.local{background:#7a6aa8}.sync.off{background:#b4560c}
main{max-width:760px;margin:0 auto;padding:12px}
main:focus{outline:none}
h1{font-size:26px;margin:6px 0 10px}
h2{font-size:20px;margin:18px 0 8px;display:flex;align-items:center;gap:8px}
.muted{color:var(--muted)}
.small{font-size:15px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:12px;margin:8px 0}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.grow{flex:1 1 auto;min-width:0}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--tap);padding:10px 16px;border-radius:14px;border:2px solid var(--brand2);background:#fff;color:var(--brand);font-weight:800;text-decoration:none;cursor:pointer;font-size:18px}
.btn.solid{background:var(--brand2);color:#fff}
.btn.big{width:100%;font-size:20px}
.btn.sm{min-height:44px;padding:6px 12px;font-size:16px;border-radius:12px}
.btn.danger{border-color:var(--late);color:var(--late)}
.btn[disabled]{opacity:.5}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
/* counters */
.counters{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:8px 0}
.counter{border-radius:14px;padding:10px 6px;text-align:center;color:#fff;font-weight:800}
.counter b{display:block;font-size:34px;line-height:1}
.counter span{font-size:14px;letter-spacing:.02em}
.c-done{background:var(--done)}.c-left{background:#4a4560}.c-ready{background:var(--ready)}.c-work{background:var(--work)}
.donebar{font-weight:800;font-size:20px;margin:6px 2px}
/* banner */
.banner-wrap{max-width:760px;margin:0 auto;padding:0 12px}
.banner{display:flex;gap:10px;align-items:center;border-radius:14px;padding:12px 14px;margin-top:10px;font-weight:800;color:#fff;text-decoration:none;font-size:18px}
.banner.late{background:var(--late)}.banner.soon{background:#ffcf33;color:#2b1d00;border:1px solid #e0a800}
/* chips */
.chips{display:flex;flex-wrap:wrap;gap:8px;overflow-x:visible;padding:4px 0 8px;scrollbar-width:none}
.chip{flex:0 0 auto;min-height:44px;padding:8px 14px;border-radius:999px;border:2px solid var(--line);background:#fff;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.chip[aria-pressed="true"]{border-color:var(--brand2);background:var(--brand2);color:#fff}
.dot{width:14px;height:14px;border-radius:50%;display:inline-block;flex:0 0 auto}
/* bus card */
.bus{background:#fff;border:1px solid var(--line);border-left:10px solid var(--co,#888);border-radius:var(--r);padding:10px 12px;margin:8px 0}
.bus-head{display:flex;align-items:center;gap:10px}
.bus-no{font-size:28px;font-weight:900;letter-spacing:.01em;text-decoration:none;color:var(--ink)}
.co{font-size:14px;font-weight:800;color:var(--co,#555);text-transform:uppercase;letter-spacing:.04em}
.why{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.tag{display:inline-flex;align-items:center;gap:4px;font-size:15px;font-weight:800;border-radius:8px;padding:3px 8px;background:#ece9f6;color:#3a345a}
.tag.late{background:var(--late);color:#fff}.tag.today{background:#ffcf33;color:#3b2a00}.tag.soon{background:#fff1c2;color:#6b5000}
.pill{font-size:14px;font-weight:900;border-radius:999px;padding:4px 10px;color:#fff;white-space:nowrap}
.pill.ready{background:var(--ready)}.pill.work{background:var(--work)}.pill.done{background:var(--done)}.pill.none{background:#9a94ad}
.stbtns{display:grid;grid-template-columns:1fr 1fr 1fr 0.8fr;gap:6px;margin-top:8px}
.st{min-height:var(--tap);border-radius:12px;border:2px solid;background:#fff;font-weight:900;font-size:15px;line-height:1.1;cursor:pointer;padding:4px}
.st .i{display:block;font-size:22px}
.st.ready{border-color:var(--ready);color:var(--ready)}.st.work{border-color:var(--work);color:var(--work)}.st.done{border-color:var(--done);color:var(--done)}.st.note{border-color:#8d86a6;color:#4a4560}
.st.ready.on{background:var(--ready);color:#fff}.st.work.on{background:var(--work);color:#fff}.st.done.on{background:var(--done);color:#fff}
.notebox{margin-top:6px;background:#fff7e0;border-radius:10px;padding:6px 10px;font-weight:700}
/* lists */
.list{list-style:none;margin:0;padding:0}
.li{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-left:8px solid var(--co,#888);border-radius:14px;padding:8px 12px;margin:6px 0;text-decoration:none;color:var(--ink);min-height:var(--tap)}
.li .no{font-size:22px;font-weight:900;min-width:64px}
.li .when{margin-left:auto;text-align:right;font-weight:800}
.li.late{background:#fde8eb;border-color:#f3b4be;border-left-color:var(--late)}
.empty{text-align:center;padding:20px 10px;color:var(--muted)}
.empty .big{font-size:44px;display:block}
/* forms */
label.f{display:block;font-weight:800;margin:10px 0 4px}
input[type=text],input[type=search],input[type=date],input[type=time],select,textarea{width:100%;min-height:52px;border:2px solid var(--line);border-radius:12px;padding:8px 12px;background:#fff;font-size:18px}
textarea{min-height:110px}
input:focus,select:focus,textarea:focus{border-color:var(--brand2);outline:none}
.datebox{border:2px solid var(--line);border-radius:14px;padding:10px;margin:8px 0;background:#fff}
.datebox h3{margin:0 0 6px;font-size:18px;display:flex;align-items:center;gap:8px}
.quick{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.warn{background:#fff1c2;border-radius:10px;padding:6px 10px;font-size:15px;font-weight:700;color:#6b5000}
.log li{border-bottom:1px solid var(--line);padding:8px 0;display:flex;gap:10px}
.log .d{font-weight:800;min-width:92px;color:var(--muted)}
/* nav */
.nav{position:fixed;left:0;right:0;bottom:0;z-index:30;display:grid;grid-template-columns:repeat(6,1fr);background:#fff;border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}
.nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:68px;text-decoration:none;color:#4a4560;font-size:14px;font-weight:800}
.nav a span{font-size:24px}
.nav a.on{color:var(--brand2);background:#efeafd}
/* calendar */
.calbar{display:flex;align-items:center;gap:8px;margin:6px 0}
.calbar .t{flex:1;text-align:center;font-weight:900;font-size:20px}
.mgrid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}
.mgrid .h{font-size:13px;font-weight:800;text-align:center;color:var(--muted)}
.day{min-height:64px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:2px;font-size:12px;cursor:pointer;text-align:left;display:flex;flex-direction:column;gap:2px;overflow:hidden}
.day.out{opacity:.45}.day.today{border:3px solid var(--brand2)}.day.sel{background:#efeafd}
.day .n{font-weight:900;font-size:13px}
.ev{display:block;border-radius:5px;padding:1px 3px;font-weight:800;color:#fff;background:var(--co,#777);white-space:nowrap;overflow:hidden;font-size:12px;text-decoration:none}
.ev small{font-weight:700;opacity:.85;font-size:.8em}
.ev.late{background:var(--late)!important;outline:2px solid #fff;outline-offset:-2px}
.more{font-size:11px;font-weight:800;color:var(--muted)}
.week .wd{background:#fff;border:1px solid var(--line);border-radius:14px;padding:8px 10px;margin:6px 0}
.week .wd.today{border:3px solid var(--brand2)}
.week .wd h3{margin:0 0 6px;font-size:17px}
.week .evs{display:flex;flex-wrap:wrap;gap:6px}
.week .ev{font-size:16px;padding:6px 10px;border-radius:10px}
.legend{display:flex;flex-wrap:wrap;gap:10px;font-size:14px;font-weight:700;margin:8px 0}
.legend span{display:inline-flex;align-items:center;gap:5px}
/* bulk */
.brow{display:grid;grid-template-columns:44px 1fr 1.6fr;gap:8px;align-items:center;background:#fff;border:1px solid var(--line);border-left:8px solid var(--co,#888);border-radius:12px;padding:6px 8px;margin:6px 0}
.brow input[type=checkbox]{width:28px;height:28px}
.brow .no{font-weight:900;font-size:20px}
.brow input[type=date]{min-height:46px;padding:4px 8px}
.sticky{position:sticky;bottom:calc(76px + env(safe-area-inset-bottom));background:#fff;border:2px solid var(--brand2);border-radius:16px;padding:10px;margin-top:10px;box-shadow:0 6px 24px #3b2a7a33}
table.prev{width:100%;border-collapse:collapse;font-size:14px;background:#fff}
table.prev th,table.prev td{border:1px solid var(--line);padding:4px 6px;text-align:left;vertical-align:top}
.prevwrap{overflow-x:auto;max-height:50vh;overflow-y:auto;border-radius:10px}
.act-new{color:var(--ready);font-weight:900}.act-upd{color:var(--done);font-weight:900}.act-skip{color:var(--muted)}.act-err{color:var(--late);font-weight:900}
/* labels */
.lab-pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:6px}
.lab-pick label{display:flex;align-items:center;gap:6px;background:#fff;border:2px solid var(--line);border-radius:10px;padding:8px;font-weight:900;min-height:48px}
.lab-pick input{width:22px;height:22px}
.sheet{display:grid;gap:0;background:#fff;margin-top:12px}
.sheet.big{grid-template-columns:1fr 1fr}
.sheet.small{grid-template-columns:1fr 1fr 1fr}
.label{border:2px dashed #bbb;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:10px;break-inside:avoid;page-break-inside:avoid}
.label .lt{font-weight:900;letter-spacing:.02em;line-height:1.05}
.label .lc{font-weight:900;color:#333}
.sheet.big .label{height:3.5in}.sheet.big .lt{font-size:30px}.sheet.big .lc{font-size:18px}.sheet.big svg{width:1.9in;height:1.9in}
.sheet.small .label{height:2.6in}.sheet.small .lt{font-size:21px}.sheet.small .lc{font-size:14px}.sheet.small svg{width:1.45in;height:1.45in}
.label .lu{font-size:10px;color:#555;word-break:break-all}
.toast{position:fixed;left:50%;bottom:96px;transform:translateX(-50%) translateY(20px);background:#1d1830;color:#fff;border-radius:14px;padding:12px 16px;font-weight:800;opacity:0;pointer-events:none;transition:.2s;z-index:50;max-width:92vw;display:flex;gap:10px;align-items:center}
.toast.show{opacity:1;transform:translateX(-50%);pointer-events:auto}
.toast .btn{min-height:40px;padding:4px 10px;font-size:15px}
dialog{border:0;border-radius:18px;padding:16px;width:min(560px,94vw);box-shadow:0 20px 60px #0006}
dialog::backdrop{background:#16131f99}
.menu a{display:flex;gap:14px;align-items:center;font-size:20px;font-weight:800;text-decoration:none;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;margin:8px 0;min-height:64px}
.menu a span{font-size:28px}
.loading{text-align:center;padding:40px}

@media print{
  body{background:#fff;padding:0}
  .top,.nav,.noprint,.banner-wrap,.toast{display:none!important}
  main{max-width:none;padding:0}
  .sheet{margin:0}
  .label{border:1px dashed #999}
  @page{margin:0.4in}
}

/* ---------- TV board ---------- */
body.tvmode{background:#0e0b1c;color:#fff;padding:0;overflow:hidden}
body.tvmode .top,body.tvmode .nav,body.tvmode .banner-wrap{display:none}
body.tvmode main{max-width:none;padding:0}
.tv{height:100vh;display:grid;grid-template-rows:auto 1fr auto;font-size:1.05vw}
.tv-top{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:1.2vh 1.6vw;background:linear-gradient(90deg,#2a1d5c,#3b2a7a);}
.tv-brand{display:flex;align-items:center;gap:1vw}
.tv-brand img{height:6.2vh;background:#fff;border-radius:.6vw;padding:.4vh .5vw}
.tv-brand b{font-size:2.1vw;letter-spacing:.12em}
.tv-clock{font-size:5.4vw;font-weight:900;font-variant-numeric:tabular-nums;line-height:1;text-align:center}
.tv-clock small{font-size:1.8vw;opacity:.8;margin-left:.3vw}
.tv-date{text-align:right;line-height:1.2}
.tv-date .en{font-size:1.6vw;font-weight:800}
.tv-date .he{font-size:2vw;font-weight:800;color:#ffd75e;direction:rtl;unicode-bidi:isolate}
.tv-date .he2{font-size:1.1vw;opacity:.75}
.tv-main{display:grid;grid-template-columns:2.15fr 1fr;gap:1.2vw;padding:1.4vh 1.6vw;min-height:0}
.tv-panel{background:#1b1631;border:1px solid #2f2752;border-radius:1vw;padding:1.2vh 1.1vw;min-height:0;overflow:hidden;display:flex;flex-direction:column}
.tv-panel h2{margin:0 0 1vh;font-size:1.7vw;letter-spacing:.06em;display:flex;align-items:center;gap:.6vw}
.tv-panel h2 .cnt{margin-left:auto;font-size:1.5vw;font-weight:900;color:#c9c1ea}
.tv-left{display:grid;grid-template-rows:auto 1fr auto;gap:1.2vh;min-height:0}
.tv-counters{display:grid;grid-template-columns:repeat(4,1fr);gap:.8vw}
.tv-counters div{border-radius:.8vw;padding:1vh .6vw;text-align:center;font-weight:900;font-size:1.2vw;letter-spacing:.05em}
.tv-counters b{display:block;font-size:3.6vw;line-height:1}
.tv-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:.8vw;align-content:start;overflow:hidden}
.tv-tile{border-radius:.8vw;padding:1vh .8vw;background:#261f45;border-left:.6vw solid var(--co,#888);min-height:11vh}
.tv-tile .n{font-size:2.6vw;font-weight:900;line-height:1}
.tv-tile .c{font-size:.95vw;font-weight:800;opacity:.8;text-transform:uppercase;letter-spacing:.06em}
.tv-tile .s{display:inline-block;margin-top:.6vh;font-size:1.05vw;font-weight:900;border-radius:99px;padding:.2vh .7vw}
.tv-tile .w{font-size:1vw;font-weight:700;margin-top:.4vh;color:#ffd75e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tv-tile.st-ready{background:#0f3d24}.tv-tile.st-work{background:#4a2408}.tv-tile.st-done{background:#13284f}
.s.ready{background:var(--ready)}.s.work{background:var(--work)}.s.done{background:var(--done)}.s.none{background:#5b5476}
.tv-empty{font-size:2vw;color:#c9c1ea;text-align:center;padding:5vh 0}
.tv-dot{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:repeat(5,auto);grid-auto-flow:column;gap:.5vh .8vw}
.tv-dot li{display:flex;align-items:center;gap:.7vw;background:#261f45;border-left:.5vw solid var(--co,#888);border-radius:.6vw;padding:.7vh .7vw;font-size:1.25vw;font-weight:800}
.tv-dot li .n{font-size:1.7vw;font-weight:900;min-width:4.6vw}
.tv-dot li .d{margin-left:auto;white-space:nowrap}
.tv-dot li .cn{font-size:1vw;opacity:.8;letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tv-dot li.late{background:#5a0f1d}
.tv-dot li.late .d{color:#ff8b9b}
.tv-right{display:grid;grid-template-rows:auto auto 1fr;gap:1.2vh;min-height:0}
.zm{display:grid;grid-template-columns:1fr auto;gap:.5vh 1vw;font-size:1.6vw}
.zm .k{color:#c9c1ea;font-weight:700}
.zm .v{font-weight:900;font-variant-numeric:tabular-nums;text-align:right}
.zm .hl{color:#ffd75e}
.wx-now{display:flex;align-items:center;gap:1vw}
.wx-now .ic{font-size:4.4vw;line-height:1}
.wx-now .t{font-size:4vw;font-weight:900;line-height:1}
.wx-now .w{font-size:1.3vw;color:#c9c1ea;font-weight:700}
.wx-days{display:grid;grid-template-columns:repeat(3,1fr);gap:.6vw;margin-top:1vh;text-align:center}
.wx-days div{background:#261f45;border-radius:.6vw;padding:.6vh .3vw;font-weight:800;font-size:1.1vw}
.wx-days .ic{font-size:2vw;display:block}
.tv-wk{list-style:none;margin:0;padding:0;font-size:1.25vw}
.tv-wk li{display:flex;gap:.6vw;align-items:center;padding:.5vh 0;border-bottom:1px solid #2f2752;font-weight:800}
.tv-wk li .d{color:#c9c1ea;min-width:5.5vw}
.ticker{background:#ffc21a;color:#1b1400;font-weight:900;font-size:2vw;height:7vh;display:flex;align-items:center;overflow:hidden;white-space:nowrap}
.ticker .lbl{background:#d0102b;color:#fff;height:100%;display:flex;align-items:center;padding:0 1.4vw;letter-spacing:.08em;flex:0 0 auto;z-index:1}
.tkwrap{overflow:hidden;flex:1;height:100%;display:flex;align-items:center}
.ticker .run{display:inline-block;padding-left:100%;animation:tick var(--dur,40s) linear infinite}
.ticker .run span{margin-right:4vw}
@keyframes tick{from{transform:translateX(0)}to{transform:translateX(-100%)}}
.tv-old{font-size:1.3vw;color:#9a91c4;padding:.5vh 0}
.tv-exit{position:fixed;right:.6vw;bottom:8vh;opacity:.0;color:#fff;background:#0008;border-radius:8px;padding:6px 10px;text-decoration:none;font-size:14px}
.tv-exit:focus,.tv:hover .tv-exit{opacity:.8}
@media (max-width:900px){ .tv{font-size:14px;height:auto;min-height:100vh} body.tvmode{overflow:auto} .tv-main{grid-template-columns:1fr} }
@media (prefers-reduced-motion:reduce){.tkwrap{overflow:hidden;flex:1;height:100%;display:flex;align-items:center}
.ticker .run{animation-duration:120s}}

/* ===== v2.0.0 ===== */
.nav a{font-size:13px;padding:0 2px;text-align:center;line-height:1.1}
@media (min-width:700px){.nav a{font-size:15px}}
/* top-bar search */
.top{flex-wrap:wrap}
.tsearch{position:relative;flex:1 1 220px;max-width:420px}
.tsearch input{min-height:46px;border:0;border-radius:12px;font-size:19px;font-weight:700;padding:6px 12px;background:#fff;color:var(--ink)}
.tsearch input::placeholder{color:#6f6888;font-weight:700}
@media (max-width:599px){.brand span{display:none}.brand img{height:38px}.tsearch{order:3;flex:1 1 100%;max-width:none}}
.tqres{position:absolute;left:0;right:0;top:calc(100% + 4px);background:#fff;border-radius:14px;box-shadow:0 10px 30px #1a0f4a55;padding:6px;z-index:50;max-height:70vh;overflow:auto}
.mrow{display:flex;align-items:center;gap:10px;width:100%;min-height:56px;padding:6px 10px;margin:3px 0;border-radius:12px;border:1px solid var(--line);border-left:8px solid var(--co,#888);background:#fff;color:var(--ink);text-decoration:none;font-size:18px;cursor:pointer;text-align:left}
.mrow .no{font-size:24px;font-weight:900}
.mrow .co{font-size:14px;font-weight:800;color:var(--muted);text-transform:uppercase}
.mrow b{color:var(--brand2)}
.mnone{margin:8px;color:var(--muted);font-weight:700}
.tqlist{margin-top:6px}
/* small banners */
.banner{padding:6px 12px;font-size:15px;margin-top:6px;border-radius:10px}
/* late DOT line */
.lateline{margin:6px 0 8px;border-radius:10px;background:#fde8eb;border:1px solid #f3b4be}
.lateline summary{cursor:pointer;color:var(--late);font-weight:900;font-size:16px;padding:8px 12px;list-style:none}
.lateline summary::-webkit-details-marker{display:none}
.lateline summary::after{content:' ▾'}
.lateline[open] summary::after{content:' ▴'}
.lateline .list{padding:0 8px 8px}
/* counters as buttons */
.counter{border:0;cursor:pointer;font:inherit;font-weight:800;display:flex;flex-direction:column;align-items:center;gap:2px;line-height:1.1}
.counter em{font-style:normal;font-size:12.5px;font-weight:700;opacity:.92}
.counter span{font-size:13px}
.counter.on{outline:4px solid #ffcf33;outline-offset:2px}
.center{text-align:center}
p.small.center{margin:2px 0 6px}
/* day headers */
.dayhead{display:flex;align-items:center;gap:8px;margin:16px 0 6px;font-size:20px}
.dayhead .cnt{margin-left:auto;font-size:16px;background:#ece9f6;border-radius:999px;padding:3px 10px;white-space:nowrap}
.dayhead.today{color:#7a5a00}.dayhead.today .cnt{background:#ffcf33}
.dayhead.late{color:var(--late)}
h3.dayhead{font-size:19px}
/* check circle */
.chk{flex:0 0 auto;width:52px;height:52px;border-radius:50%;border:4px solid #8d86a6;background:#fff;font-size:30px;font-weight:900;line-height:1;color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0}
.chk:hover{border-color:var(--ready)}
.chk.on{background:var(--ready);border-color:var(--ready)}
.bus.passed{background:#eef8f1}
.chklist .chkrow{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-left:8px solid var(--co,#888);border-radius:14px;padding:8px 10px;margin:6px 0;min-height:68px}
.chkrow.done{background:#eef8f1}
.chkbus{flex:1 1 auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap;text-decoration:none;color:var(--ink);min-width:0}
.chkbus .no{font-size:28px;font-weight:900}
.chkbus .co{font-size:14px;font-weight:800;color:var(--muted);text-transform:uppercase}
.chkrow.done .no{text-decoration:line-through;text-decoration-color:#14853b88}
.xbtn{flex:0 0 auto;width:44px;height:44px;border-radius:50%;border:2px solid var(--line);background:#fff;color:var(--muted);font-size:18px;cursor:pointer}
.dotsum{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:6px 0}
.dotsum div{background:#4a4560;color:#fff;border-radius:14px;padding:10px;text-align:center;font-weight:800}
.dotsum div.ok{background:var(--ready)}
.dotsum b{display:block;font-size:34px;line-height:1}
.stbtns .st{font-size:14px}
/* ===== TV v2 ===== */
.tv{grid-template-rows:auto auto 1fr auto}
.tv-strip{display:flex;align-items:center;gap:2vw;padding:.7vh 1.6vw;background:#1b1631;border-bottom:1px solid #2f2752;font-size:1.25vw;white-space:nowrap;overflow:hidden}
.tv-zm{display:flex;align-items:center;gap:1.4vw;flex:1 1 auto;min-width:0}
.tv-zm .lbl{font-weight:900;color:#c9c1ea}
.tv-zm .zi .k{color:#c9c1ea;font-weight:700}
.tv-zm .zi b{font-variant-numeric:tabular-nums}
.tv-zm .zi.hl,.tv-zm .zi.hl .k{color:#ffd75e}
.tv-wx{display:flex;align-items:center;gap:.8vw;flex:0 0 auto}
.tv-wx .ic{font-size:2vw}.tv-wx .t{font-size:2vw;font-weight:900}
.tv-wx .w{color:#c9c1ea;font-weight:700}
.tv-wx .wd{background:#261f45;border-radius:.5vw;padding:.3vh .6vw;font-weight:800}
.tv-main{grid-template-columns:3fr 1fr}
.tv-big h2{font-size:2.3vw}
.tv-big h2 .cnt{font-size:2vw;color:#7ee2a0}
.tv-sub{font-size:1.4vw;color:#ffd75e;font-weight:800;margin:-.4vh 0 1vh}
.tv-scrollbox{flex:1 1 auto;min-height:0;overflow:hidden;position:relative}
#tvscroll{will-change:transform}
@keyframes tvscroll{0%,12%{transform:translateY(0)}88%,100%{transform:translateY(var(--dist,0))}}
.tv-rows{display:grid;grid-template-columns:1fr 1fr;gap:1vh 1vw}
.tv-row{display:flex;align-items:center;gap:1vw;background:#261f45;border-left:.7vw solid var(--co,#888);border-radius:.9vw;padding:1.2vh 1vw;min-height:10vh;flex-wrap:wrap}
.tv-row .chk{width:5.6vh;height:5.6vh;font-size:3.6vh;border-width:.45vh;background:transparent;border-color:#c9c1ea}
.tv-row .chk.on{background:#14853b;border-color:#2fd16b}
.tv-row .n{font-size:3.4vw;font-weight:900;line-height:1}
.tv-row .c{font-size:1.15vw;font-weight:800;opacity:.85;letter-spacing:.06em}
.tv-row .s{margin-left:auto;font-size:1.3vw;font-weight:900;border-radius:99px;padding:.4vh 1vw;color:#fff}
.tv-row .w{flex:1 1 100%;font-size:1.15vw;color:#ffd75e;font-weight:800;padding-left:6.6vh;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tv-row.done{background:#0f3d24}
.tv-row.done .n{text-decoration:line-through;text-decoration-color:#2fd16b;text-decoration-thickness:.3vh}
.tv-row.st-ready{background:#123d27}.tv-row.st-work{background:#4a2408}
.tv-right{grid-template-rows:auto auto 1fr}
.tv-counters{grid-template-columns:1fr 1fr}
.tv-counters div{font-size:1.05vw}
.tv-counters b{font-size:3.2vw}
.tv-counters em{display:block;font-style:normal;font-size:.9vw;font-weight:700;opacity:.9;letter-spacing:0}
.tv-wk .bl{font-weight:900;white-space:normal}

.tv-strip{font-size:1.1vw;gap:1.5vw}
.tv-zm{overflow:hidden;gap:1.2vw}
.tv-wx{margin-left:auto}
.tv-big h2{font-size:2vw;white-space:nowrap}
.tv-big h2 .cnt{white-space:nowrap}
.tv-row{flex-wrap:nowrap;min-height:0;padding:1.4vh 1vw}
.tv-row .n{white-space:nowrap}
.tv-row .c{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.tv-row .s{font-size:1.1vw;white-space:nowrap;flex:0 0 auto}
.tv-row.hasnote{flex-wrap:wrap}

.tv-rows{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.tv-row{min-width:0;overflow:hidden}
.tv-row .n{font-size:3vw}
.tv-wk li{align-items:flex-start}
.banner{padding:4px 10px;font-size:14px;margin-top:4px}

/* v2.0.3 — clickable TV counters + overlay, Niagara photo, VIN in search */
.tv-counters .tvc{border:0;color:#fff;font:inherit;cursor:pointer;border-radius:.8vw;padding:1vh .6vw;text-align:center;font-weight:900;font-size:1.05vw;letter-spacing:.05em;transition:transform .12s,box-shadow .12s}
.tv-counters .tvc:hover{transform:scale(1.04);box-shadow:0 0 0 .25vw #fff8}
.tv-counters .tvc i{display:block;font-style:normal;font-size:.8vw;font-weight:700;opacity:.75;margin-top:.3vh;letter-spacing:0}
.tv-scrollbox{flex:0 1 auto}
.tv-photo{flex:1 1 0;min-height:0;margin-top:1.2vh;border-radius:1vw;background:#0e0b1c url(niagara2.jpg) center 55%/cover no-repeat;position:relative;box-shadow:inset 0 0 0 1px #ffffff14}
.tv-photo .cr{position:absolute;right:.8vw;bottom:.6vh;font-size:.65vw;color:#fff;opacity:.6;text-shadow:0 1px 2px #000}
.tvov{position:fixed;inset:0;z-index:50;background:#0008;display:flex;align-items:center;justify-content:center;padding:4vh 4vw}
.tvov-box{background:#1b1631;border:.3vw solid var(--kc);border-radius:1.4vw;width:min(78vw,1500px);max-height:88vh;display:flex;flex-direction:column;padding:2vh 2vw;box-shadow:0 2vh 6vh #000a}
.tvov-head{display:flex;align-items:center;gap:1vw;margin-bottom:1.5vh}
.tvov-head h2{margin:0;font-size:2.4vw;flex:1;display:flex;align-items:center;gap:1vw}
.tvov-head h2 .cnt{background:var(--kc);border-radius:99px;padding:.2vh 1.2vw;font-size:2.2vw}
.tvov-x{font:inherit;font-size:3vw;line-height:1;width:6vw;height:6vw;border-radius:50%;border:0;background:#e5484d;color:#fff;cursor:pointer;font-weight:900;flex:none}
.tvov-x:hover{background:#ff6369}
.tvov-list{overflow:auto;display:grid;grid-template-columns:1fr 1fr;gap:1vh 1vw}
.tvov-row{display:flex;align-items:center;flex-wrap:wrap;gap:.4vh 1vw;background:#261f45;border-left:.7vw solid var(--co,#888);border-radius:.8vw;padding:1.2vh 1vw}
.tvov-row .n{font-size:2.8vw;font-weight:900;line-height:1}
.tvov-row .c{font-size:1.2vw;font-weight:800;opacity:.85;letter-spacing:.06em}
.tvov-row .st{margin-left:auto;font-size:1.15vw;font-weight:900;border-radius:99px;padding:.4vh .9vw;background:#4a4560}
.tvov-row .st-done{background:var(--done)}.tvov-row .st-ready{background:var(--ready)}.tvov-row .st-work{background:var(--work)}
.tvov-row .dt{flex:1 1 100%;font-size:1.15vw;font-weight:700;color:#c9c1ea}
.tvov-row .nt{flex:1 1 100%;font-size:1.05vw;color:#ffd75e;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tvov-foot{margin-top:1.5vh;text-align:center;font-size:1vw;opacity:.6}
.mrow .vin{font-size:.8em;font-family:ui-monospace,Menlo,monospace;opacity:.75;margin-left:.4em;white-space:nowrap}
.mrow .vin b{color:#7c3aed;opacity:1}
@media (max-width:900px){ .tv-photo{display:none} .tvov-list{grid-template-columns:1fr} .tvov-head h2,.tvov-row .n{font-size:22px} .tvov-row .c,.tvov-row .st,.tvov-row .dt,.tvov-row .nt,.tvov-foot{font-size:14px} .tvov-x{width:56px;height:56px;font-size:28px} }

/* v2.0.3 — passed buses stay, crossed out; notes on DOT rows */
.tv-row{position:relative}
.tv-row.done{background:#173a2a}
.tv-row.done::after{content:"";position:absolute;left:.6vw;right:.6vw;top:50%;height:.45vh;background:#86efac;border-radius:99px;opacity:.85;pointer-events:none}
.tv-row.hasnote.done::after{top:38%}
.tv-row.done .n,.tv-row.done .c{opacity:.7}
.tv-row .chk.on{background:#86efac;border-color:#4ade80;color:#0b3d1f;font-weight:900}
.chk.on{background:#86efac;border-color:#22c55e;color:#0b3d1f}
.chkrow{flex-wrap:wrap}
.chkrow.done{position:relative}
.chkrow.done .chkbus{text-decoration:line-through;text-decoration-color:#14853b;text-decoration-thickness:3px}
.nbtn{border:1px solid var(--line);background:#fff;border-radius:12px;min-width:52px;height:52px;font-size:20px;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1;cursor:pointer;flex:none}
.nbtn small{font-size:11px;font-weight:700;color:#555;margin-top:2px}
.chknote{flex:1 1 100%;margin:2px 0 0 54px;font-size:14px;font-weight:700;color:#8a5a00;background:#fff7e0;border-radius:8px;padding:4px 8px;cursor:pointer}

/* v2.0.3 — holidays on calendar, TV 5-day forecast */
.hols{display:flex;flex-wrap:wrap;gap:4px;margin:2px 0 4px}
.hol{display:inline-block;font-size:12px;font-weight:800;border-radius:6px;padding:2px 6px;background:#ede9fe;color:#5b21b6;line-height:1.3}
.hol i{font-style:normal;font-weight:600;opacity:.8}
.hol-yt,.hol-us{background:#c2410c;color:#fff}
.hol-fast{background:#e5e7eb;color:#374151}
.hol-rc{background:#f3f0ff;color:#6d28d9}
.wd.holday{background:#fff4ec;border-color:#fdba74}
.mgrid .day .hol{display:block;font-size:9px;padding:0 3px;margin:1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.mgrid .day.holday{background:#fff4ec}
.tv-fc{flex:0 0 auto}
.fc5{display:grid;grid-template-columns:repeat(5,1fr);gap:.5vw}
.fc5 div{background:#261f45;border-radius:.7vw;padding:.6vh .3vw;text-align:center;display:flex;flex-direction:column;align-items:center;line-height:1.15}
.fc5 .d{font-size:1vw;font-weight:900;color:#c9c1ea}
.fc5 .i{font-size:1.9vw}
.fc5 b{font-size:1.3vw}
.fc5 .l{font-size:.95vw;opacity:.7;font-weight:700}
.tv-hol{list-style:none;margin:.8vh 0 0;padding:0;display:flex;flex-direction:column;gap:.4vh;font-size:1.05vw;font-weight:800}
.tv-hol li{background:#2a2350;border-radius:.6vw;padding:.4vh .7vw;display:flex;gap:.7vw;align-items:center}
.tv-hol li.strong{background:#7c2d12}
.tv-hol .d{color:#ffd75e;min-width:5.5vw}
.tv-hol em{font-style:normal;opacity:.8;font-size:.85vw;margin-left:auto}

/* v2.0.4 */
.tv-right{grid-template-rows:auto auto auto 1fr}
.when .exp{display:inline-block;margin-top:3px;font-size:12px;font-weight:800;color:#c2410c;white-space:nowrap}
.tag.none{background:#eceaf3;color:#4a4560}

/* v2.0.5 — TV: smaller bus rows + header, bigger MOVING waterfall; calendar fills the PC screen */
.tv-big h2{font-size:1.25vw;margin:0 0 .4vh}
.tv-big h2 .cnt{font-size:1.15vw}
.tv-sub{font-size:.85vw;margin:0 0 .5vh}
.tv-rows{grid-template-columns:repeat(3,minmax(0,1fr));gap:.6vh .6vw}
.tv-row{padding:.55vh .6vw;gap:.6vw;border-left-width:.45vw;border-radius:.6vw}
.tv-row .chk{width:3.4vh;height:3.4vh;font-size:2.1vh;border-width:.3vh}
.tv-row .n{font-size:1.75vw}
.tv-row .c{font-size:.8vw}
.tv-row .s{font-size:.8vw;padding:.25vh .6vw}
.tv-row .w{font-size:.8vw;padding-left:4vh}
.tv-row.done::after{height:.3vh}
.tv-photo{margin-top:.8vh;overflow:hidden}
.tv-photo video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 55%;border-radius:inherit;display:block}
.tv-photo .cr{z-index:1}

@media (min-width:1000px){
  body.calmode main{max-width:none;padding:12px 22px}
  body.calmode h1{font-size:34px;margin:4px 0 8px}
  body.calmode .chip{font-size:17px;padding:8px 16px}
  body.calmode .btn.sm{font-size:18px;padding:8px 18px}
  body.calmode .calbar .t{font-size:30px}
  body.calmode .legend{font-size:17px}
  body.calmode .mgrid{gap:6px}
  body.calmode .mgrid .h{font-size:18px;padding:4px 0}
  body.calmode .day{min-height:max(84px,calc((100vh - 430px) / 6));padding:6px 7px;gap:4px;border-radius:12px;font-size:16px}
  body.calmode .day .n{font-size:22px}
  body.calmode .mgrid .ev{font-size:16px;padding:3px 7px;border-radius:7px}
  body.calmode .mgrid .ev small{font-size:.8em}
  body.calmode .mgrid .day .hol{font-size:14px;padding:2px 6px;border-radius:6px}
  body.calmode .more{font-size:15px;font-weight:800}
  body.calmode .day.today{border-width:4px}
  body.calmode .week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;align-items:stretch}
  body.calmode .week>h2,body.calmode .week>.evs{grid-column:1/-1}
  body.calmode .week .wd{margin:0;min-height:calc(100vh - 300px);padding:10px}
  body.calmode .week .wd h3{font-size:20px}
  body.calmode .week .evs{flex-direction:column;align-items:stretch}
  body.calmode .week .ev{font-size:18px;padding:8px 10px;white-space:normal}
  body.calmode .hol{font-size:15px}
  body.calmode main h2{font-size:26px}
  body.calmode .list{font-size:18px}
}
.mgrid .pc,.mgrid .xtra,.mgrid .m-pc{display:none}
@media (min-width:1000px){
  body.calmode .mgrid .pc{display:inline}
  body.calmode .mgrid .ev.xtra{display:block}
  body.calmode .mgrid .m-ph{display:none}
  body.calmode .mgrid .m-pc{display:block}
}
.when .exp .xl{color:#dc2626}
.when .exp .xd{color:#111}
.when .exp.past .xd{color:#fff;background:#ef1c1c;border-radius:5px;padding:0 4px}

/* v2.0.13 — TV: no "next DOT days" box, plain "DOT INSPECTION …" header, right column sized to fit any screen (scrolls only if it still overflows) */
.tv{--u:min(1vw,1.78vh)}
.tv-clock{font-size:calc(var(--u)*4.6)}
.tv-clock small{font-size:calc(var(--u)*1.6)}
.tv-date .en{font-size:calc(var(--u)*1.45)}
.tv-date .he{font-size:calc(var(--u)*1.8)}
.tv-date .he2{font-size:calc(var(--u)*1)}
.tv-top{padding:.8vh 1.6vw}
.tv-brand img{height:5.4vh}
.tv-strip{font-size:calc(var(--u)*1.05)}
.tv-after{font-size:calc(var(--u)*.9);font-weight:800;color:#c9c1ea;margin:0 0 .5vh;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tv-right{display:flex;flex-direction:column;gap:1vh;min-height:0;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:#4b3f80 transparent}
.tv-right::-webkit-scrollbar{width:6px}.tv-right::-webkit-scrollbar-thumb{background:#4b3f80;border-radius:3px}
.tv-right>.tv-panel{flex:0 0 auto;overflow:visible;padding:.9vh .9vw}
.tv-right .tv-panel h2{font-size:calc(var(--u)*1.15);margin:0 0 .6vh}
.tv-counters{gap:calc(var(--u)*.5)}
.tv-counters .tvc{padding:.7vh .3vw;font-size:calc(var(--u)*.85);letter-spacing:.02em}
.tv-counters b{font-size:calc(var(--u)*2.7)}
.tv-counters .tvc em{display:block;font-style:normal;font-size:calc(var(--u)*.7);font-weight:700;opacity:.85;letter-spacing:0}
.tv-counters .tvc i{font-size:calc(var(--u)*.62);margin-top:.15vh}
.fc5{gap:calc(var(--u)*.4)}
.fc5 div{padding:.35vh .2vw;line-height:1.1}
.fc5 .d{font-size:calc(var(--u)*.85)}
.fc5 .i{font-size:calc(var(--u)*1.45)}
.fc5 b{font-size:calc(var(--u)*1.1)}
.fc5 .l{font-size:calc(var(--u)*.8)}
.tv-hol{margin:.7vh 0 0;gap:.4vh;font-size:calc(var(--u)*1.05)}
.tv-hol li{padding:.35vh .6vw;gap:.6vw;line-height:1.2}
.tv-hol .d{min-width:calc(var(--u)*6.2);flex:none}
.tv-hol em{font-size:calc(var(--u)*.8)}
.tv-right .tv-wk{font-size:calc(var(--u)*.95)}
.tv-right .tv-wk li{padding:.35vh 0}
.tv-right .tv-wk li .d{min-width:calc(var(--u)*4.8)}
.tv-right .tv-old{font-size:calc(var(--u)*.9)}

/* v2.0.17 — TV: counters hidden; today's DOT buses moved to the right column (one per row, big); waterfall fills the left */
.tv-main{grid-template-columns:minmax(0,2.15fr) minmax(0,1fr)}
.tv-big{display:flex;flex-direction:column}
.tv-big .tv-photo{flex:1 1 0;min-height:0}
.tv-buslist{--bs:calc(var(--u)*2.2)}
.tv-right .tv-buslist h2{font-size:calc(var(--bs)*.62);white-space:nowrap}
.tv-right .tv-buslist h2 .cnt{font-size:1em;color:#7ee2a0;margin-left:auto}
.tv-blist{display:grid;grid-template-columns:minmax(0,1fr);gap:calc(var(--bs)*.16)}
.tv-blist.two{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.tv-brow{display:flex;align-items:center;gap:calc(var(--bs)*.28);background:#261f45;border-left:calc(var(--bs)*.18) solid var(--co,#888);border-radius:calc(var(--bs)*.22);padding:calc(var(--bs)*.07) calc(var(--bs)*.25) calc(var(--bs)*.07) calc(var(--bs)*.2);min-width:0;overflow:hidden;position:relative}
.tv-brow .chk{flex:none;width:calc(var(--bs)*.95);height:calc(var(--bs)*.95);font-size:calc(var(--bs)*.68);border-width:calc(var(--bs)*.08);background:transparent;border-color:#c9c1ea}
.tv-brow .chk.on{background:#86efac;border-color:#4ade80;color:#0b3d1f}
.tv-brow .n{font-size:var(--bs);font-weight:900;line-height:1.05;white-space:nowrap}
.tv-brow .c{font-size:calc(var(--bs)*.5);font-weight:800;opacity:.85;letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.tv-brow .nt{font-size:calc(var(--bs)*.55);flex:none}
.tv-brow .s{margin-left:auto;flex:none;font-size:calc(var(--bs)*.5);font-weight:900;border-radius:99px;padding:calc(var(--bs)*.1) calc(var(--bs)*.3);color:#fff;white-space:nowrap}
.tv-brow.done{background:#173a2a}
.tv-brow.done .n{text-decoration:line-through;text-decoration-color:#86efac;text-decoration-thickness:calc(var(--bs)*.09)}
.tv-brow.done .n,.tv-brow.done .c{opacity:.7}
.tv-brow.st-ready{background:#123d27}.tv-brow.st-work{background:#4a2408}
@media (max-width:900px){ .tv-buslist{--bs:28px} .tv-big .tv-photo{min-height:0} }
.tv-right .fc5 .i{font-size:calc(var(--u)*1.2)}
.tv-right .fc5 div{padding:.25vh .2vw}
.tv-brow .s.done{background:#16a34a}

/* ---------- v2.1.0 spare buses board ---------- */
.nav{grid-template-columns:repeat(5,1fr)}
.nav.n6{grid-template-columns:repeat(6,1fr)}
@media (max-width:480px){.nav a{font-size:11.5px;letter-spacing:-.01em}.nav a span{font-size:22px}}
body.sparemode main{max-width:none;padding:10px 12px}
.sphead{display:flex;align-items:center;justify-content:space-between;gap:8px}
.sphead h1{margin:4px 0 8px}
.spcount{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:8px;margin:6px 0}
.spk{border-radius:14px;padding:10px 8px;text-align:center;color:#fff;font-weight:800;text-decoration:none;display:flex;flex-direction:column;justify-content:center}
.spk b{display:block;font-size:36px;line-height:1}.spk b small{font-size:18px;opacity:.9}
.spk span{font-size:14px;line-height:1.15;margin-top:4px}
.spk.free{background:var(--ready)}.spk.zero{background:var(--late)}.spk.shop{background:var(--work)}.spk.oos{background:#6b1d2a}
.spwarn{background:var(--late);color:#fff;font-weight:900;border-radius:12px;padding:10px 12px;margin:8px 0;font-size:18px}
.spstart pre{background:#f4f2fb;border-radius:8px;padding:6px 10px;margin:6px 0 0;font-size:17px}
.sphelp{margin:4px 2px 8px}
.spboard{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;align-items:stretch}
.spcol{background:#e9e5f5;border-radius:14px;padding:6px 5px 40px;min-height:220px;transition:background .15s,box-shadow .15s}
.spcol h2{margin:0 0 6px;font-size:14px;line-height:1.15;display:flex;align-items:center;justify-content:space-between;gap:4px;padding:2px 3px;text-transform:uppercase;letter-spacing:.02em}
.spcol-reg h2{color:#1c3f7a}.spcol-spare h2{color:#0e6b2f}.spcol-shop h2{color:#a44708}.spcol-oos h2{color:#6b1d2a}
.spcol-reg{background:#e5ecf9}.spcol-spare{background:#e3f4e8}.spcol-shop{background:#fdeee2}.spcol-oos{background:#f8e4e7}
.spt-l{display:none}.spt-s{display:inline}
.spn{background:#fff;border-radius:999px;padding:1px 7px;font-size:13px;color:var(--ink)}
.spcol.over{box-shadow:inset 0 0 0 3px var(--brand2);background:#dcd3fa}
.spcards{display:flex;flex-direction:column;gap:5px}
.spempty{color:var(--muted);font-size:13px;text-align:center;margin:10px 0}
.spc{display:flex;flex-direction:column;align-items:flex-start;gap:1px;width:100%;text-align:left;background:#fff;border:1px solid var(--line);border-left:6px solid var(--co,#888);border-radius:10px;padding:5px 5px 6px 6px;cursor:grab;font:inherit;color:var(--ink);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation;min-height:52px}
.spc:active{cursor:grabbing}
.spc-top{display:flex;align-items:baseline;gap:4px;flex-wrap:wrap;width:100%}
.spc-no{font-size:22px;font-weight:900;line-height:1.05}
.spc-co{font-size:10px;font-weight:900;color:var(--co,#555);text-transform:uppercase;letter-spacing:.02em}
dialog .spc-co{font-size:14px}
.spc-unit{font-size:13px;font-weight:900;background:#1c3f7a;color:#fff;border-radius:6px;padding:1px 6px;margin-top:2px}
.spc-unit.sp{background:#0e6b2f}
.spc-sp{font-size:11px;font-weight:900;background:#0e6b2f;color:#fff;border-radius:6px;padding:0 5px;margin-top:2px}
.spc-line{font-size:12px;font-weight:700;color:var(--muted);line-height:1.2}
.spc-line.bad{color:var(--late);font-weight:900}.spc-line.ok{color:#0e6b2f;font-weight:900}
.spc-note{font-size:12px;font-weight:700;background:#fff7e0;border-radius:6px;padding:1px 5px;margin-top:2px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}
.spc.taken{background:#f0f8f2}
.spc-need{border:2px dashed var(--late);background:#fff0f2;cursor:pointer}
.spc-need .spc-no{font-size:17px;color:var(--late)}
.spc.over{box-shadow:0 0 0 3px var(--brand2)}
.spc.dragging{opacity:.35}
.spghost{position:fixed;z-index:100;pointer-events:none;opacity:.92;box-shadow:0 12px 30px #0005;transform:rotate(2deg)}
body.spdragging,body.spdragging *{-webkit-user-select:none;user-select:none;cursor:grabbing}
.spdlg .spacts{display:grid;gap:8px;margin:8px 0}
.spdlg .spacts .btn{width:100%;justify-content:flex-start;font-size:19px}
.sppick{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px;margin:8px 0}
.sppick .btn{flex-direction:column;gap:0;border-left:8px solid var(--co,var(--brand2));padding:8px}
.sppick .btn b{font-size:24px}.sppick .btn small{font-size:13px;font-weight:700}
.sppick .btn.need{border-color:var(--late);color:var(--late)}
@media (max-width:380px){.spc-no{font-size:19px}.spcol h2{font-size:12px}.spk b{font-size:30px}}
@media (min-width:700px){
  .spboard{gap:10px}.spcol{padding:8px 8px 60px}
  .spt-l{display:inline}.spt-s{display:none}
  .spcol h2{font-size:17px}.spn{font-size:16px}
  .spcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
  .spc{padding:8px 8px 9px 10px;border-left-width:9px;min-height:84px;border-radius:12px}
  .spc-no{font-size:32px}.spc-co{font-size:13px}.spc-unit{font-size:17px;padding:2px 8px}.spc-sp{font-size:14px}
  .spc-line{font-size:15px}.spc-note{font-size:15px;white-space:normal}
  .spc-need .spc-no{font-size:24px}
  .spk b{font-size:52px}.spk b small{font-size:24px}.spk span{font-size:18px}
  .spcount{grid-template-columns:1.5fr 1fr 1fr;max-width:1100px}
}
@media (min-width:1600px){.spc-no{font-size:38px}.spcards{grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}}

/* per-bus files (v2.1.1) */
.flist{list-style:none;margin:0 0 10px;padding:0}
.flist li{display:flex;align-items:stretch;gap:8px;border-bottom:1px solid var(--line);padding:8px 0}
.flist li:last-child{border-bottom:0}
.fopen{flex:1;display:flex;align-items:center;gap:10px;text-decoration:none;color:inherit;min-height:56px;min-width:0}
.fic{font-size:30px;line-height:1}
.fmain{flex:1;display:flex;flex-direction:column;min-width:0}
.ftop{font-size:17px}
.ftype{font-weight:900}
.fdate{font-weight:700;color:var(--muted)}
.fres{display:inline-block;font-weight:800;font-size:14px;padding:1px 8px;border-radius:999px;background:#eef1f5}
.fres.ok{background:#dcf5e3;color:#11672f}.fres.bad{background:#fde2e2;color:#a01818}
.fnote{font-size:14px;margin-top:2px;overflow-wrap:anywhere}
.fname{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fgo{font-weight:800;color:#1a5fd0;white-space:nowrap;align-self:center}
.fdel{align-self:center}
.fbusy{font-weight:800}
.fform{border-top:1px solid var(--line);padding-top:8px;margin-top:4px}
.fform select,.fform input[type=text],.fform input[type=date]{width:100%;box-sizing:border-box}
.fpick{margin-top:10px}.fpick .btn{cursor:pointer;text-align:center}
@media (max-width:420px){.fgo{display:none}}

/* ---------- v2.1.4: drivers list, driver name on spare cards, DOT auto-shop, typed spare ---------- */
.spc-drv{display:block;font-size:12px;font-weight:700;color:#3a3550;line-height:1.15;margin-top:2px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.spc-dot{display:block;font-size:12px;font-weight:900;background:#e8f0ff;color:#173f8a;border-radius:6px;padding:1px 5px;margin-top:3px;line-height:1.2}
.spc-dot.ok{background:#e4f6ea;color:#0e6b2f}
.spc-loose{border-style:dashed}
.sppick .btn small.pdrv{font-weight:600;color:var(--muted);font-size:12px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sptype{margin-top:10px;padding:10px;border-radius:12px;background:#f4f2fb;border:1px solid var(--line)}
.sptype .row{gap:8px;flex-wrap:nowrap}
.sptype input{flex:1 1 120px;min-width:0;font-size:22px;font-weight:800;min-height:56px;padding:6px 12px;border-radius:12px;border:2px solid var(--line)}
.sptype .btn{white-space:nowrap;flex:0 0 auto;width:auto;min-height:56px;padding:0 18px;font-size:20px}
.sptype input{width:auto}
.sptypemsg{margin-top:6px;font-weight:700}.sptypemsg .bad{color:var(--late)}
.drvq{width:100%;font-size:19px;min-height:52px;padding:8px 14px;border-radius:14px;border:2px solid var(--line);background:#fff;margin:2px 0 4px}
.drvinfo{margin:4px 2px 8px}
.qm{display:inline-block;min-width:22px;height:22px;line-height:22px;border-radius:999px;background:#ffb300;color:#1b1400;font-weight:900;font-size:14px;text-align:center;vertical-align:1px}
table.drv{width:100%;border-collapse:separate;border-spacing:0;background:#fff;border:1px solid var(--line);border-radius:14px;font-size:18px}
table.drv thead th{position:sticky;top:58px;z-index:5;background:var(--brand);color:#fff;text-align:left;padding:0;font-size:16px;font-weight:800}
table.drv thead th:first-child{border-top-left-radius:13px}table.drv thead th:last-child{border-top-right-radius:13px}
table.drv thead th>span,table.drv thead th>button{display:block;padding:12px 10px;white-space:nowrap}
table.drv thead th>button{all:unset;display:block;box-sizing:border-box;width:100%;padding:12px 10px;cursor:pointer;font-weight:900;white-space:nowrap;text-decoration:underline dotted 2px;text-underline-offset:4px}
table.drv thead th>button[aria-pressed="true"]{background:#ffc21a;color:#1b1400;text-decoration:none}
table.drv thead th>button:focus-visible{outline:3px solid #ffb300;outline-offset:-3px}
table.drv th.b,table.drv td.b{text-align:right}
table.drv thead th.b>button{text-align:right}
table.drv td{padding:11px 10px;border-top:1px solid var(--line);vertical-align:middle}
table.drv tbody tr{cursor:pointer}
table.drv tbody tr:nth-child(even) td{background:#faf9fe}
table.drv tbody tr:hover td{background:#f0ecfb}
table.drv tbody tr.unsure td{background:#fffaeb}
table.drv tbody tr:last-child td:first-child{border-bottom-left-radius:13px}table.drv tbody tr:last-child td:last-child{border-bottom-right-radius:13px}
table.drv td.u{font-weight:900;font-size:21px;width:3.6em;white-space:nowrap}
table.drv td.n{font-weight:700;line-height:1.25}
table.drv td.p{white-space:nowrap;width:1%}
table.drv td.p a{font-weight:700;text-decoration:none;color:#1f5fd1;display:inline-block;padding:6px 0}
table.drv td.b{width:1%;white-space:nowrap}
.dbus{display:inline-block;min-width:3.2em;text-align:center;font-weight:900;font-size:19px;border-left:7px solid var(--co,#9a94ad);background:#f1eefb;border-radius:9px;padding:6px 8px;text-decoration:none;color:var(--ink)}
.dbus.nob{border-left-color:#c9c4d8;color:var(--muted)}
.drvchk{display:flex;align-items:center;gap:10px;margin:12px 0 4px;font-weight:700}
.drvchk input{width:26px;height:26px}
.drvdlg input[type=text],.drvdlg input[type=tel]{width:100%}
@media (max-width:520px){
  table.drv{font-size:16px;table-layout:fixed}
  table.drv thead th{position:static}
  table.drv th.u{width:15%}table.drv th.p{width:35%}table.drv th.b{width:20%}
  table.drv td.p,table.drv td.b,table.drv td.u{width:auto}
  table.drv td{padding:10px 6px}
  table.drv thead th>span,table.drv thead th>button{padding:12px 6px;font-size:15px}
  table.drv td.u{font-size:19px;width:2.6em}
  table.drv td.p a{font-size:15px}
  .dbus{font-size:17px;min-width:0;padding:6px 5px;border-left-width:5px}
  table.drv td.n{word-break:break-word}
}
@media (max-width:380px){ table.drv td.p a{font-size:13px} }

/* v2.1.5 limited link (view only + Spares) */
.rolebar{position:sticky;top:0;z-index:19;background:#fff4c2;color:#5a4200;border-bottom:1px solid #e8d48a;text-align:center;font-size:14px;font-weight:700;padding:5px 10px;line-height:1.3}
.rolebar a{color:#3b2a7a}
body.tvmode .rolebar{display:none}
@media print{.rolebar{display:none!important}}
body.ro [data-act="addbus"],body.ro [data-act="busadd"],body.ro [data-act="addlog"],body.ro [data-act="dellog"],body.ro [data-act="addmsg"],body.ro [data-act="delmsg"],body.ro [data-act="apptadd"],body.ro [data-act="apptdel"],body.ro [data-act="bset"],body.ro [data-act="bchk"],body.ro [data-act="clr"],body.ro [data-act="coadd"],body.ro [data-act="codel"],body.ro [data-act="delbus"],body.ro [data-act="drvdel"],body.ro [data-act="drvnew"],body.ro [data-act="drvsave"],body.ro [data-act="ffopen"],body.ro [data-act="fdel"],body.ro [data-act="fpick"],body.ro [data-act="impsave"],body.ro [data-act="note"],body.ro [data-act="notesave"],body.ro [data-act="noteclear"],body.ro [data-act="clrnote"],body.ro [data-act="qd"],body.ro [data-act="vinok"]{display:none!important}
body.ro .rolock,body.ro [disabled].rolock{opacity:.75;cursor:default}
body.ro tr.drow{cursor:default}
body.ro .row:has(> #logt){display:none!important}
body.ro input:disabled,body.ro select:disabled,body.ro textarea:disabled{background:#efedf5;color:#2a2440;-webkit-text-fill-color:#2a2440;opacity:1;border-color:#dcd8e8}
body.ro input[type=date]:disabled::-webkit-calendar-picker-indicator{display:none}

/* v2.1.6 — newest MC300 on top, older ones + other papers + Fullbay parts/repairs in dropdowns */
.bplate:empty{display:none}
.bplate{margin-top:4px;font-size:16px}
.mcnew{border:2px solid #cfe9d7;background:#f4fbf6;border-radius:14px;padding:10px 12px;margin:0 0 10px;position:relative}
.mclabel{font-size:13px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.mcopen{display:flex;align-items:center;gap:10px;text-decoration:none;color:inherit;min-height:56px;flex-wrap:wrap}
.mcdate{font-size:26px;font-weight:900;color:var(--ink)}
.mcopen .fres{font-size:16px;padding:3px 10px}
.mcfacts{display:flex;flex-wrap:wrap;gap:4px 16px;font-size:15px;color:#2a2440}
.mcrow-del{position:absolute;top:6px;right:6px}
.mcrow-del .btn{min-height:32px;padding:2px 8px;font-size:13px;opacity:.6}
.mcnew .mcopen{padding-right:0}
.mcnew .mcopen .btn{margin-right:0}
.mcnew .mclabel{padding-right:44px}
.foldbtn{display:flex;align-items:center;width:100%;min-height:56px;gap:8px;padding:10px 14px;margin:8px 0 0;border-radius:12px;border:2px solid var(--line);background:#f7f5fc;color:var(--brand);font-weight:800;font-size:18px;text-align:left;cursor:pointer}
.foldbtn.on{background:#ece7fa;border-color:var(--brand2)}
.foldbtn .fcount{color:var(--muted);font-weight:700}
.foldbtn .fchev{font-size:22px}
.mclist{list-style:none;margin:4px 0 6px;padding:0 0 0 6px;border-left:4px solid #ece7fa}
.mclist li{display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--line)}
.mclist li:last-child{border-bottom:0}
.mclist a{flex:1;display:flex;align-items:center;gap:10px;min-height:52px;text-decoration:none;color:inherit;padding:4px 6px;min-width:0}
.mclist .mcd{font-size:19px;font-weight:800;min-width:82px}
.mclist .mcc{font-size:13px;color:var(--muted);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mclist .fgo,.flist .fgo{color:var(--brand2);font-weight:800;white-space:nowrap}
.mclist .btn.sm{min-height:36px;padding:2px 9px;font-size:13px}
.fbbox{padding:8px 2px 2px}
.fbq{width:100%;min-height:52px;font-size:18px;padding:8px 12px;border:2px solid var(--line);border-radius:12px;box-sizing:border-box}
.fbl{list-style:none;margin:6px 0;padding:0}
.fbl li{border-bottom:1px solid var(--line);padding:8px 2px}
.fbl li:last-child{border-bottom:0}
.fbtop{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--muted)}
.fbd{font-weight:800;color:var(--ink);font-size:15px}
.fbso{font-weight:700}
.fbqty{background:#eef1f5;border-radius:999px;padding:0 8px;font-weight:700;color:#2a2440}
.fbqty.neg{background:#fff2d6;color:#7a5200}
.fbmain{font-size:16px;margin-top:2px;line-height:1.3;word-break:break-word}
.fbpn{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:15px;background:#f2effa;border-radius:6px;padding:0 5px}
.fbcor{font-size:15px;color:#2a2440;margin-top:2px;line-height:1.3}
.fbmeta{text-align:right}
.fbso{white-space:nowrap}
.mclist .btn.sm.fdel{border-color:#ddd;color:#999;background:#fff;min-height:34px;padding:0 8px;font-size:12px}

/* v2.1.7 — work orders + DOT planner */
.wocard{display:block;text-decoration:none;color:inherit;border:1px solid var(--line);border-left:8px solid var(--co,#888);border-radius:14px;padding:10px 12px;margin:8px 0;background:#fff}
.wol1{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.wonum{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:15px;color:var(--muted)}
.wobus{font-size:20px;font-weight:900}
.wol2{display:block;font-size:15px;margin-top:4px}
.wol3{display:block;font-size:14px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wost{font-weight:800;font-size:14px;padding:3px 10px;border-radius:999px;background:#fff6d6;color:#6b5200;white-space:nowrap}
.wost.progress{background:#dde9ff;color:#1a4aa8}
.wost.done{background:#dcf5e3;color:#11672f}
.wohead{border-left:8px solid var(--co,#888)}
.wotitle{margin:6px 0 0;font-size:32px}
.wotitle a{color:inherit;text-decoration:none}
.wostbtns{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;margin:10px 0}
.wostbtns .btn{padding:8px 4px;font-size:16px;border-color:var(--line);color:var(--ink)}
.wostbtns .btn[aria-pressed=true].open{background:#fff1b8;border-color:#c9a400}
.wostbtns .btn[aria-pressed=true].progress{background:#cfe0ff;border-color:#2b6cd8}
.wostbtns .btn[aria-pressed=true].done{background:#c9f0d5;border-color:#14853b}
.wota{width:100%;box-sizing:border-box;font-size:17px;min-height:56px;padding:10px;border:2px solid var(--line);border-radius:12px;font-family:inherit;resize:vertical}
.wotot{margin-top:8px;font-size:17px}
.clkon{color:#14853b;font-weight:800}
.wotype{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.wotype label{display:block;cursor:pointer}
.wotype input{position:absolute;opacity:0;pointer-events:none}
.wotype span{display:flex;align-items:center;justify-content:center;text-align:center;min-height:64px;border:2px solid var(--line);border-radius:14px;font-weight:800;font-size:17px;padding:6px}
.wotype input:checked+span{border-color:var(--brand2);background:#ece7fa;color:var(--brand)}
.wodlg select,.wodlg input,.wodlg textarea{width:100%;box-sizing:border-box;min-height:52px;font-size:18px}
.wodlg textarea{min-height:80px}
.wojob{border-left:6px solid #9b8bd0}
.wojob.jdone{border-left-color:#14853b;background:#fafffb}
.wojh{display:flex;align-items:center;gap:8px;font-size:19px}
.wohrs{font-weight:800;background:#f2effa;border-radius:999px;padding:2px 10px;font-size:15px}
.woparts,.woclk{margin-top:12px;padding-top:8px;border-top:1px dashed var(--line)}
.wopl{list-style:none;margin:4px 0;padding:0}
.wopl li{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--line);font-size:15px}
.woq{font-weight:800;white-space:nowrap}
.wopadd{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:6px}
.wopadd input{min-height:52px;font-size:17px;box-sizing:border-box;width:100%;border:2px solid var(--line);border-radius:12px;padding:6px 10px}
.wopadd .wopn{grid-column:1/3}
.wopadd .wods{grid-column:1/3}
.wopadd .woqi{text-align:center}
.clkrun{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:#e9f9ee;border:2px solid #9fdcb2;border-radius:12px;padding:8px 10px;margin:6px 0;font-size:17px}
.pulse{width:12px;height:12px;border-radius:50%;background:#14853b;box-shadow:0 0 0 0 rgba(20,133,59,.6);animation:ffpulse 1.6s infinite}
@keyframes ffpulse{70%{box-shadow:0 0 0 10px rgba(20,133,59,0)}100%{box-shadow:0 0 0 0 rgba(20,133,59,0)}}
.clkin{display:grid;grid-template-columns:1fr auto;gap:6px;margin-top:6px}
.clkin input{min-height:56px;font-size:18px;border:2px solid var(--line);border-radius:12px;padding:6px 10px;box-sizing:border-box;width:100%}
.clkfin{list-style:none;margin:6px 0 0;padding:0}
.clkfin li{display:flex;gap:8px;align-items:center;padding:5px 0;border-bottom:1px solid var(--line);font-size:15px}
.wojf{margin-top:12px}
.chkhead .row{gap:12px;align-items:center;margin:6px 0}
.chkprog{height:12px;background:#eee;border-radius:999px;overflow:hidden}
.chkprog span{display:block;height:100%;background:#14853b}
.chkbad{color:#a01818;font-weight:800}
.chksec{margin:16px 2px 4px;font-size:17px;color:var(--brand)}
.chkcard{padding:4px 10px}
.wck{padding:10px 0;border-bottom:1px solid var(--line)}
.wck:last-child{border-bottom:0}
.wck.a-D{background:#fff5f5;margin:0 -10px;padding:10px}
.chkt{display:flex;gap:10px;align-items:flex-start}
.chkn{flex:0 0 auto;min-width:30px;text-align:center;font-weight:800;color:var(--muted);font-size:14px;padding-top:2px}
.chki b{display:block;font-size:17px}
.chkins{display:block;font-size:13px;color:var(--muted);line-height:1.3}
.chkb{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:6px;margin-top:8px}
.cb{min-height:52px;border-radius:12px;border:2px solid var(--line);background:#fff;font-weight:800;font-size:16px;cursor:pointer;color:var(--ink)}
.cb.ok[aria-pressed=true]{background:#14853b;border-color:#14853b;color:#fff}
.cb.bad[aria-pressed=true]{background:#c81e1e;border-color:#c81e1e;color:#fff}
.cb.na[aria-pressed=true]{background:#5d5870;border-color:#5d5870;color:#fff}
.chkr{width:100%;box-sizing:border-box;min-height:50px;font-size:17px;margin-top:6px;border:2px solid var(--line);border-radius:12px;padding:6px 10px}
.chkmk,.chkjob{margin-top:8px}
.chkjob{display:inline-block;font-weight:800;color:#a01818;text-decoration:none;padding:8px 0}
.plday{border-left:8px solid #2b6cb0}
.plday.full{border-left-color:#c97a00}
.plday.over{border-left-color:#c81e1e}
.plhead{display:flex;align-items:center;gap:10px;font-size:20px;margin-bottom:4px}
.plcnt{font-weight:900;font-size:18px;background:#eef1f5;border-radius:999px;padding:2px 12px}
.plday.full .plcnt{background:#ffe8c2}
.plday.over .plcnt{background:#fde2e2;color:#a01818}
.plrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;border-left:6px solid var(--co,#888);padding:6px 8px;margin:6px 0;background:#faf9fd;border-radius:10px;min-height:52px}
.plrow.k-pin{background:#f1ecff}
.plrow.k-booked{background:#eaf6ee}
.plbus{font-size:22px;font-weight:900;color:var(--ink);text-decoration:none;min-width:58px}
.plco{font-size:13px;font-weight:700;color:var(--muted)}
.plexp{font-size:14px;font-weight:700}
.plexp.late{color:#c81e1e}
.plexp.soon{color:#a86b00}
.plbadge{font-size:13px;font-weight:800;border-radius:999px;padding:1px 8px;background:#fff}
.plopen{display:block;width:100%;min-height:52px;margin:6px 0;border:2px dashed #b8b0d8;border-radius:12px;background:#fff;color:var(--brand);font-weight:800;font-size:16px;cursor:pointer}
.plcap{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-top:6px}
.plcap .btn.sm{min-width:44px;font-size:20px}
.plwarn{color:#a01818;font-weight:800;font-size:14px}
.plhid{margin:4px 2px}
.pldlg{min-width:0;width:100%;box-sizing:border-box}
.pldlg input[type=search]{width:100%;box-sizing:border-box;min-height:52px;font-size:20px;margin-bottom:8px}
.plpick{display:grid;grid-template-columns:1fr 1fr;gap:6px;max-height:60vh;overflow:auto}
.plpick .btn{flex-direction:column;gap:0;font-size:17px;padding:8px}
.dotsum .late b{color:#c81e1e}
@media (min-width:900px){
  .wopadd{grid-template-columns:2fr 3fr 80px auto}
  .wopadd .wopn,.wopadd .wods{grid-column:auto}
  .chkb{max-width:520px}
  .wck{display:grid;grid-template-columns:1fr 520px;gap:4px 16px;align-items:center}
  .wck .chkb{margin-top:0}
  .wck .chkr,.wck .chkmk,.wck .chkjob{grid-column:2}
  .plpick{grid-template-columns:1fr 1fr 1fr}
}
.dotsum.plsum{display:grid;grid-template-columns:repeat(3,1fr)!important}
body.ro .cb[disabled]{opacity:1;cursor:default}
.plpick .btn.plfull{opacity:.55}
#dlg:has(.pldlg){width:min(94vw,560px);box-sizing:border-box}

/* v2.1.8 spares find-and-drag */
.spfind{position:sticky;top:0;z-index:20;background:var(--bg,#fff);padding:6px 0 4px;margin:4px 0 8px}
.spfind input{width:100%;font-size:18px;padding:10px 12px;border:2px solid #b9b2cc;border-radius:12px;box-sizing:border-box}
.spfound-row{display:flex;flex-wrap:wrap;gap:8px}
.spfound-row .spc{min-width:120px;max-width:200px}

/* v2.1.12 */
.tag .tlbl{font-style:normal;font-size:10px;font-weight:900;letter-spacing:.04em;line-height:1;padding:2px 4px;margin-right:2px;border-radius:4px;background:rgba(0,0,0,.12);text-transform:uppercase}
.tag.late .tlbl{background:rgba(255,255,255,.25)}
.banner .bk2{display:block;font-size:12px;font-weight:700;opacity:.9}
.li .when .tag{white-space:nowrap}

/* v2.1.13 drivers: bus status + spare, swipe actions */
table.drv td.b .dst,table.drv td.b .dspare{display:block;white-space:normal;text-align:right;line-height:1.15;margin-top:4px}
.dst{font-size:12px;font-weight:800;border-radius:7px;padding:3px 5px}
.dst.oos{background:#ffe1e1;color:#a30000}
.dst.shop{background:#fff0d1;color:#7a4600}
.dspare{font-size:12px;font-weight:700;color:#0b6b2e}
.dspare b{display:block;font-size:17px;font-weight:900;color:#fff;background:#13a04a;border-radius:8px;padding:3px 6px;margin-top:2px;text-align:center}
.drvhint{margin:-2px 2px 8px;font-size:14px;font-weight:700;color:#4a4560;background:#eef6ff;border-radius:10px;padding:6px 10px}
.dnoph{font-size:12px;font-style:italic}
table.drv tbody tr.drow{transition:transform .18s ease}
table.drv tbody tr.drow td{touch-action:pan-y}  /* touch-action does not apply to table rows, only cells */
table.drv tbody tr.swiping{transition:none;position:relative;z-index:2}
table.drv tbody tr.sw-r td{background:#d8f6e2!important}
table.drv tbody tr.sw-l td{background:#dce9ff!important}
table.drv tbody tr.dopen td{background:#eef4ff!important}
table.drv tr.dact td{padding:8px 8px 10px;background:#eef4ff;border-top:0}
.dactw{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.dactn{flex:1 1 100%;font-size:13px;font-weight:700;color:#5d5873}
.dactw .btn{flex:1 1 0;min-height:52px;font-size:18px;font-weight:900;text-decoration:none;display:flex;align-items:center;justify-content:center}
.dactw .dsms{background:#1f5fd1;color:#fff;border-color:#1f5fd1}
.dactw .dwa{background:#25d366;color:#05300f;border-color:#25d366}
.dactw .dx{flex:0 0 auto;min-height:52px;min-width:48px;font-size:16px}
@media (max-width:520px){
  table.drv th.b{width:23%} table.drv th.p{width:34%}
  table.drv td{padding-left:6px;padding-right:6px}
  table.drv td.b .dst{font-size:11.5px}
}
.dst small{display:block;font-size:11.5px;font-weight:800;margin-top:1px}
table.drv tbody tr.swiping td.u,table.drv tbody tr.swiping td.b{position:relative;overflow:visible}
table.drv tbody tr.go-r td.u::before{content:'📞 Call';position:absolute;right:100%;top:0;bottom:0;width:140px;display:flex;align-items:center;justify-content:center;background:#8fd9a8;color:#05300f;font-weight:900;font-size:17px}
table.drv tbody tr.go-l td.b::after{content:'💬 Text';position:absolute;left:100%;top:0;bottom:0;width:140px;display:flex;align-items:center;justify-content:center;background:#a9c4f5;color:#0b2a66;font-weight:900;font-size:17px}
table.drv tbody tr.sw-r td.u::before{background:#13a04a;color:#fff}
table.drv tbody tr.sw-l td.b::after{background:#1f5fd1;color:#fff}
.dactw .dwa{font-size:17px}
table.drv td.b .dst{white-space:normal;padding:3px 4px;letter-spacing:-.2px;overflow-wrap:anywhere}
table.drv td.b .dst small{white-space:normal}
table.drv{overflow:clip}  /* the sliding row never widens the page */

/* v2.1.13b (Eli 11/1): compact — spare chip on the same line, left of/next to the bus; status smaller underneath */
.drv td.b{white-space:nowrap}
.drv td.b .dspare{display:inline-block!important;margin:0 0 0 4px!important;vertical-align:middle;font-size:11px;color:#0b6b2e;line-height:1}
.drv td.b .dspare b{display:inline-block!important;font-size:15px!important;padding:4px 5px!important;margin:0!important;border-radius:7px}
.drv td.b .dbus{font-size:16px;padding:4px 4px}
.drv td.b .dst{display:block!important;font-size:10.5px!important;padding:2px 3px!important;margin-top:3px!important;line-height:1.1!important;font-weight:800}
.drv td.b .dst small{display:inline!important;font-size:10.5px!important}
.drv th.b{width:27%}

.drv th.b{width:33%}
.drv th.p{width:31%}
.drv th.u{width:12%}
.drv td.b .dbus{font-size:14px;padding:4px 3px;border-left-width:4px}
.drv td.b .dspare{margin-left:2px!important;font-size:10px}
.drv td.b .dspare b{font-size:14px!important;padding:4px 4px!important}
.drv td.p a{font-size:12.5px}

.drv td.b .dspare.dsp1{display:block!important;margin:0 0 4px 0!important;text-align:right;font-size:11px}
.drv td.b .dspare.dsp1 b{font-size:16px!important;padding:3px 7px!important}
.drv td.b .dbus{font-size:13px;padding:2px 4px;opacity:.8}

/* v2.1.13c (Eli 11/1 6:10): phone under name; status in its own middle column; regular bus red box when out; green = driving now */
.drv td.n .dph{display:block;margin-top:2px}
.drv td.n .dph a{font-size:13px;font-weight:700;color:#1f5fd1;text-decoration:none;padding:2px 0;display:inline-block}
.drv td.n .dph .dnoph{font-size:12px}
.drv td.p{white-space:normal!important;text-align:left;vertical-align:middle}
.drv td.p .dst{display:block!important;margin:0!important;font-size:12px!important;padding:3px 5px!important;line-height:1.15!important;text-align:left}
.drv td.p .dst small{display:block!important;font-size:11.5px!important}
.drv th.u{width:13%}
.drv th.p{width:28%}
.drv th.b{width:24%}
.drv td.b{white-space:nowrap;text-align:right}
.drv td.b .dbus{font-size:17px;padding:5px 5px;opacity:1}
.drv td.b .dbus.dout{border:3px solid #d61f1f;border-left:3px solid #d61f1f;background:#ffecec;color:#a30000}
.drv td.b .dspare.dsp2{display:block!important;margin:4px 0 0 0!important;text-align:right;font-size:11px;color:#0b6b2e}
.drv td.b .dspare.dsp2 b{display:inline-block!important;font-size:16px!important;padding:3px 7px!important;margin:0!important;color:#fff;background:#13a04a;border-radius:8px}

.drv td.n .dph a{white-space:nowrap;font-size:12.5px}
.drv th.n{width:35%}
.drv th.p{width:26%}

.drv td.b .dspare.dsp2{white-space:nowrap}

/* ---------- v2.1.14: work-order finish steps, Find a part, Inventory, Test page ---------- */
.wost.review{background:#ffe2c4;color:#8a3f00;white-space:normal}
.wosback{display:block;margin-top:4px;font-weight:800;color:#b3261e;font-size:15px}
.woview{display:grid;grid-template-columns:1fr 1fr;gap:0;margin:10px 0;border:2px solid var(--brand2);border-radius:14px;overflow:hidden}
.woview button{min-height:48px;border:0;background:#fff;color:var(--brand);font-weight:800;font-size:18px;cursor:pointer}
.woview button[aria-pressed=true]{background:var(--brand2);color:#fff}
.woflow{margin:4px 0 12px}
.flowbox{border-radius:14px;padding:12px 14px;margin:8px 0;background:#eef0f7;border:2px solid var(--line);font-size:17px;line-height:1.35}
.flowbox.review{background:#fff1e0;border-color:#f0a050}
.flowbox.closed{background:#e3f6e9;border-color:#5cc07e}
.flowbox.back{background:#fde8e6;border-color:#e0786c}
.wodonebtn{margin-top:4px}
.worev{border:3px solid #f0a050}
.worev h3{font-size:18px;margin:14px 0 6px}
.revl{list-style:none;margin:0;padding:0}
.revl li{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:7px 0;border-bottom:1px solid var(--line);font-size:16px}
.revl.revp li{display:block}
.revl .row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.mwords{background:#f7f6fb;border-radius:12px;padding:6px 12px;font-size:16px}
.mwords p{margin:6px 0}
.mwl{display:block}
.fitgate{background:#fff6d6;border:2px solid #d9a400;border-radius:14px;padding:10px 12px;margin:12px 0 8px;font-size:16px}
.fitgate p{margin:0 0 8px}
.fitck{display:flex;gap:10px;align-items:center;font-weight:800;font-size:18px;background:#fff;border-radius:12px;padding:10px;border:2px solid #d9a400;cursor:pointer}
.fitck input{width:28px;height:28px;flex:0 0 28px}
.revbtns{margin-top:10px}
.revbtns .btn[disabled]{opacity:.35;filter:grayscale(1);cursor:not-allowed}
.pbus,.pq{width:100%;font-size:19px;min-height:52px}
.pq[disabled]{background:#eee}
.presn{margin:10px 2px 6px}
.pcard,.icard{background:var(--card);border:2px solid var(--line);border-radius:14px;padding:10px 12px;margin:8px 0}
.pcard.lvl-used{border-left:8px solid #d9a400}
.pcard.lvl-marked{border-left:8px solid #2b6cd8}
.pcard.lvl-unknown{border-left:8px solid #b9b5c6}
.ptop{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ptop .fbpn{font-size:17px}
.pdesc{font-size:17px;font-weight:700;margin:2px 0 6px;color:var(--ink)}
.tbadge{display:inline-block;font-weight:900;font-size:15px;letter-spacing:.5px;padding:3px 10px;border-radius:8px;color:#fff;background:#1d1b2a;border:2px solid #000}
.tbadge.drive{background:#123a6b;border-color:#0a2244}
.pfit{font-weight:800;font-size:16px;padding:6px 10px;border-radius:10px;display:inline-block}
.pfit.sm{font-size:14px;padding:3px 8px;margin-top:4px}
.pfit.used{background:#fff1b8;color:#5e4500}
.pfit.marked{background:#dde9ff;color:#1a4aa8}
.pfit.unknown{background:#ecebf1;color:#4a4560}
.pchips{margin-top:8px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.hchip{background:#f1eefb;border:1px solid var(--line);border-radius:999px;padding:3px 10px;font-size:14px;font-weight:700}
.pnote{margin:4px 0}
.paudit{background:#eef3ff;border-radius:10px;padding:8px 10px;font-size:15px;margin:8px 0}
.ptmark{margin-top:8px}
.ist{font-weight:800;font-size:15px;padding:4px 10px;border-radius:999px;white-space:nowrap}
.ist.ok{background:#d6f3df;color:#0f6a2e}
.ist.out{background:#ffe3b0;color:#7a4300}
.ist.unk{background:#e7e6ec;color:#555064;white-space:normal}
.ibtns{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:4px}
.ibtns .btn.sm{font-size:16px;padding:6px 10px}
.ihtog{background:none;border:0;color:var(--brand2);font-weight:800;font-size:15px;padding:8px 0 2px;cursor:pointer}
.ihist,.prlog{list-style:none;margin:0;padding:0}
.ihist li,.prlog li{border-top:1px solid var(--line);padding:6px 0;font-size:15px;display:flex;flex-wrap:wrap;gap:4px 8px}
.ihw{color:var(--muted);font-size:13px;width:100%}
.ihn{color:var(--muted)}
.ihy{width:100%;color:var(--muted);font-size:14px}
.invnote{margin-top:16px;background:#fff8e6}
.invnote ul{margin:6px 0 0;padding-left:20px}
.testban{position:sticky;top:0;z-index:5;background:#ff7a00;color:#fff;font-weight:900;font-size:20px;text-align:center;padding:12px 10px;border-radius:14px;margin:4px 0 10px;box-shadow:0 2px 8px rgba(0,0,0,.2)}
.testtxt{font-size:18px;font-weight:700;background:#fff1e0;border-radius:12px;padding:10px 12px}
.practice{border:3px dashed #ff7a00}
.practice .btn{margin-top:8px}
.practice input{width:100%;font-size:18px}

/* v2.1.15 — Fullbay work orders (closed, read-only) */
.fbwosec{margin-top:18px}
.foldbtn.fbwohead{background:#eceef2;border-color:#c3c8d2;color:#2f3440}
.foldbtn.fbwohead.on{background:#e3e6ec;border-color:#9aa1ae}
.fbro{display:inline-block;font-size:13px;font-weight:800;padding:2px 8px;border-radius:999px;background:#e3e6ec;color:#4a505c;white-space:nowrap;vertical-align:middle}
.fbwobox{background:#f7f8fa;border-color:#d5d9e0}
.wocard.fbwo{background:#fbfbfc;border-color:#dde0e6}
.wocard.fbwo .wonum{font-weight:700}
.fbwoload{font-weight:700;color:var(--muted);margin:10px 2px}
.fbbadge{display:inline-block;font-size:15px;font-weight:900;padding:4px 12px;border-radius:999px;background:#6b7280;color:#fff;white-space:nowrap}
.fbwodet .wobig{font-size:28px;font-weight:900;margin:6px 0 4px}
.fbwodet .wobig a{color:inherit}
.fbwomet{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:16px;font-weight:700;color:#3a3550;margin:4px 0 8px}
.flowbox.fbclosed{background:#eef0f3;border-color:#c3c8d2;color:#2f3440}
.fblab{display:inline-block;font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.04em;color:#fff;background:#8a90a0;border-radius:6px;padding:0 6px;margin-right:4px;vertical-align:1px}
.fbcor .fblab{background:#2f8a52}

/* v2.1.16: ← Back (top-left, finger size) */
.backbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:2px 0 6px}
.backbtn{min-height:48px;min-width:96px;padding:6px 16px;font-size:18px;border-radius:12px}
body.calmode .backbtn{font-size:20px}
@media print{.backbar{display:none}}
.tv-back{right:auto;left:.6vw;border:0;cursor:pointer;font:inherit;font-size:14px}
/* v2.1.16: Regular column sort toggle (Unit # | Bus #) */
.spsort{display:flex;flex-direction:column;align-items:stretch;gap:3px;margin:0 0 6px}
.spsort-l{display:none;font-size:12px;font-weight:800;color:#1c3f7a;margin-right:2px}
.spsort-b{flex:0 0 auto;min-width:0;min-height:32px;padding:2px 3px;border:2px solid #1c3f7a;background:#fff;color:#1c3f7a;border-radius:8px;font:inherit;font-size:11px;font-weight:900;cursor:pointer;white-space:nowrap}
.spsort-b[aria-pressed="true"]{background:#1c3f7a;color:#fff}
@media (min-width:700px){
  .spsort{flex-direction:row;align-items:center;gap:6px}
  .spsort-l{display:inline}
  .spsort-b{flex:0 0 auto;min-height:36px;padding:4px 12px;font-size:14px}
}

/* ---------- v2.1.17: ❓ Unknown buses box (under the free spares; grey, dashed — not real spares) ---------- */
.spunk{margin-top:16px;padding:7px 5px 8px;border:2px dashed #a3a0ae;border-radius:12px;background:#efeef2}
.spunk h3{margin:0 0 3px;font-size:13px;line-height:1.15;color:#4a4758;display:flex;align-items:center;justify-content:space-between;gap:4px;padding:2px 3px;text-transform:uppercase;letter-spacing:.02em}
.spunk-help{font-size:11px;font-weight:600;color:var(--muted);margin:0 3px 6px;line-height:1.25}
.spunk.over,.spcol .spunk.over{box-shadow:inset 0 0 0 3px #a3a0ae}
.spc-unk{background:#f8f8fa;border-style:dashed;border-left-style:solid;color:#3d3a48}
.spc-unk .spc-no{color:#3d3a48}
@media (min-width:700px){
  .spunk{padding:9px 8px 10px}.spunk h3{font-size:16px}.spunk-help{font-size:13px}
}
/* v2.1.17: Unknown cards are smaller than the real board cards */
.spunk .spc{min-height:0;padding:4px 5px 5px 6px}
.spunk .spc-no{font-size:19px}
.spunk .spc-co{font-size:9px}
@media (max-width:699px){.spunk-help{display:none}.spunk h3{flex-wrap:wrap;font-size:12px}}
@media (min-width:700px){
  .spunk .spcards{grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:6px}
  .spunk .spc{min-height:0;padding:5px 6px 6px 8px;border-left-width:7px;border-radius:10px}
  .spunk .spc-no{font-size:24px}.spunk .spc-co{font-size:11px}.spunk .spc-line{font-size:13px}
}
@media (min-width:1600px){.spunk .spc-no{font-size:26px}.spunk .spcards{grid-template-columns:repeat(auto-fill,minmax(118px,1fr))}}

/* v2.1.17: ⟳ Refresh next to the search box (icon only on phones) */
.tsearch{display:flex;align-items:center;gap:8px;max-width:560px}
.tsearch input{flex:1 1 auto;min-width:0;width:auto}
.rfbtn{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:46px;min-width:46px;padding:4px 14px;border:2px solid #ffffff66;border-radius:12px;background:#ffffff22;color:#fff;font-size:17px;font-weight:800;cursor:pointer;line-height:1}
.rfbtn:hover{background:#ffffff38}.rfbtn:active{transform:scale(.96)}
.rfbtn .rfi{font-size:24px;display:inline-block;line-height:1}
.rfbtn.spin .rfi{animation:rfspin .8s linear infinite}
.rfbtn:disabled{opacity:.85;cursor:default}
@keyframes rfspin{to{transform:rotate(360deg)}}
@media (max-width:599px){.rfbtn{padding:4px 0;width:46px}.rfbtn .rfl{display:none}}

/* v2.1.19: TV Back/Exit always visible on phones (no hover) */
@media (hover:none),(max-width:900px){.tv-exit{opacity:.9;bottom:calc(7vh + 10px);z-index:50;font-size:15px;padding:7px 12px}.tv-exit.tv-back{right:auto;left:8px}}

/* v2.1.19: show the Niagara photo/video on phones too */
@media (max-width:900px){.tv-big .tv-photo,.tv-photo{display:block;flex:1 1 auto;min-height:200px}}
