
:root{--navy:#1f1d4e;--brand:#2b2a72;--gold:#f5b400;--gold-lt:#ffe28a;--bg:#f5f5f2;--card:#fff;--ink:#1d1b33;--muted:#5f5d72;--line:#d9d3c4;--red:#b3261e;--redbg:#fde8e6;--green:#1b6e2a;--greenbg:#e3f4e5;--yel:#fff4c7;--r:10px}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font:17px/1.4 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif}
[hidden]{display:none!important}
a{color:var(--brand)}
button{font:inherit;color:inherit;cursor:pointer}
input,select{font:inherit}
.top{position:sticky;top:0;z-index:20;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:10px 12px;padding-top:max(10px,env(safe-area-inset-top));gap:8px}
.brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:18px;min-width:0}
.brand img{width:28px;height:28px;background:var(--gold);border-radius:7px;padding:3px}
.brand span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topr{display:flex;gap:6px;flex:none}
.tbtn{background:rgba(255,255,255,.12);border:0;color:#fff;border-radius:8px;padding:8px 10px;font-size:15px}
.tbtn.gold{background:var(--gold);color:var(--navy);font-weight:700}
main{max-width:760px;margin:0 auto;padding:12px 12px 80px}
.loading{padding:40px;text-align:center;color:var(--muted)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line);background:#fff;border-radius:var(--r);padding:10px 14px;font-weight:600;min-height:46px;text-decoration:none;color:var(--ink)}
.btn.primary{background:var(--navy);color:#fff;border-color:var(--navy)}
.btn.gold{background:var(--gold);border-color:var(--gold);color:var(--navy)}
.btn.green{background:var(--green);border-color:var(--green);color:#fff}
.btn.sm{min-height:36px;padding:6px 10px;font-size:15px}
.btn.wide{width:100%}
.btn.danger{color:var(--red)}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.muted{color:var(--muted)}
.small{font-size:14px}
.err{color:var(--red);font-weight:600;min-height:1.3em}
/* login */
.login{position:relative;isolation:isolate;max-width:340px;margin:10px auto 24px;text-align:center}
.loginbg{position:fixed;z-index:-1;left:50%;top:54%;width:min(96vw,620px);aspect-ratio:1557/1365;transform:translate(-50%,-50%);background:url(/img/school-logo-900.webp) center/contain no-repeat;opacity:.13;pointer-events:none}
.loginlogo{display:block;width:96px;height:auto;margin:6px auto 2px;filter:drop-shadow(0 3px 6px rgba(31,29,78,.25))}
.login h1{font-size:24px;margin:8px 0 4px}
.pinbox{display:flex;justify-content:center;gap:12px;margin:18px 0 8px}
.pinbox i{width:18px;height:18px;border-radius:50%;border:2px solid var(--navy);display:block}
.pinbox i.on{background:var(--navy)}
.pad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px}
.pad button{height:66px;font-size:28px;font-weight:600;border-radius:14px;border:1px solid var(--line);background:rgba(255,255,255,.62);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);color:var(--ink)}
.pad button:active{background:var(--gold-lt)}
.pad .go{background:var(--gold);border-color:var(--gold);font-size:20px}
/* chips */
.chips{display:flex;gap:6px;overflow-x:auto;padding:2px 0 8px}
.chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 14px;white-space:nowrap;font-weight:600;font-size:15px}
.chip.on{background:var(--navy);color:#fff;border-color:var(--navy)}
.chip input{border:0;background:transparent;font-size:15px;padding:0;width:130px}
.upd{font-size:13px;color:var(--muted);margin:2px 0 10px}
.upd.stale{color:var(--red)}
.banner{border-radius:var(--r);padding:12px 14px;margin:0 0 10px;font-weight:700}
.banner.cover{background:var(--gold);color:var(--navy)}
.banner.replaced{background:var(--redbg);color:var(--red);border:2px solid var(--red)}
/* next stop */
.next{background:var(--navy);color:#fff;border-radius:16px;padding:14px;margin-bottom:14px;box-shadow:0 4px 14px rgba(31,29,78,.25)}
.next .lbl{font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--gold);font-weight:800}
.next .addr{font-size:26px;font-weight:800;line-height:1.15;margin:4px 0 2px}
.next .run{font-size:14px;opacity:.85}
.next .kids{margin:10px 0}
.next .kid{background:rgba(255,255,255,.1);border-radius:10px;padding:8px 10px;margin:6px 0;font-size:18px;font-weight:600}
.next .kid.out,.next .kid.notcoming,.next .kid.movedOut{background:#fff;color:var(--red);border:3px solid var(--red)}
.next .kid.in,.next .kid.movedIn{background:#fff;color:var(--green);border:3px solid #3bb54a}
.next .kid.note{background:var(--yel);color:var(--ink)}
.next .btns{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
.next .btns .btn{min-height:52px;font-size:16px;padding:6px}
.next.none{background:#fff;color:var(--ink);border:1px solid var(--line)}
.gpsline{font-size:13px;opacity:.8;margin-top:8px}
/* runs */
.runcard{background:#fff;border:1px solid var(--line);border-radius:14px;margin:0 0 12px;overflow:hidden}
.runhead{display:flex;align-items:center;gap:10px;padding:12px 14px;width:100%;border:0;background:#fff;text-align:left}
.runhead .t{font-size:22px;font-weight:800;min-width:92px}
.runhead .n{flex:1;min-width:0}
.runhead .n b{display:block;font-size:16px}
.runhead .n span{font-size:14px;color:var(--muted)}
.badge{display:inline-block;border-radius:999px;padding:2px 9px;font-size:13px;font-weight:800}
.badge.ch{background:var(--red);color:#fff}
.badge.cov{background:var(--gold);color:var(--navy)}
.badge.now{background:#3bb54a;color:#fff}
.runcard.current{border:3px solid var(--gold)}
.runnote{background:var(--yel);padding:8px 14px;font-weight:600;font-size:15px}
.stops{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.stop{display:flex;gap:10px;padding:12px 14px;border-bottom:1px solid #eee;cursor:pointer}
.stop:last-child{border-bottom:0}
.stop .num{flex:none;width:34px;height:34px;border-radius:50%;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:16px}
.stop.done{opacity:.5}
.stop.done .num{background:#8a8a99}
.stop.isnext{background:#fffbe8}
.stop.isnext .num{background:var(--gold);color:var(--navy)}
.stop.haschg{background:#fff6f5}
.stop .body{flex:1;min-width:0}
.stop .a{font-weight:700;font-size:18px}
.stop .who{font-size:16px;margin-top:2px}
.stop .arr{font-size:12px;color:var(--green);font-weight:700}
.chg{display:block;border-radius:8px;padding:6px 9px;margin:5px 0 0;font-weight:700;font-size:15px}
.chg.out,.chg.notcoming,.chg.movedOut{background:var(--redbg);color:var(--red);border-left:5px solid var(--red)}
.chg.in,.chg.movedIn{background:var(--greenbg);color:var(--green);border-left:5px solid #3bb54a}
.chg.note{background:var(--yel);color:#6b4d00;border-left:5px solid var(--gold)}
.strike{text-decoration:line-through;opacity:.7}
/* sheet */
.sheet{position:fixed;inset:0;z-index:50;display:flex;align-items:flex-end;justify-content:center}
.sheetbg{position:absolute;inset:0;background:rgba(20,18,50,.45)}
.sheetcard{position:relative;background:#fff;width:100%;max-width:640px;max-height:88vh;overflow:auto;border-radius:18px 18px 0 0;padding:16px 16px calc(20px + env(safe-area-inset-bottom))}
@media(min-width:700px){.sheet{align-items:center}.sheetcard{border-radius:18px}}
.sheetcard h2{margin:0 0 4px;font-size:22px}
.kidcard{border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin:10px 0}
.kidcard .nm{font-size:19px;font-weight:800}
.phone{display:flex;justify-content:space-between;align-items:center;border:1px solid var(--line);border-radius:10px;padding:8px 10px;margin:6px 0;text-decoration:none;color:var(--ink);font-weight:700}
.phone .pl{font-size:14px;color:var(--muted);font-weight:700}
.phone .pn{font-size:17px;color:var(--ink);font-weight:800;white-space:nowrap}
.phone.mom{border-color:#e7a3c4;background:#fdf1f7}
.phone.mom .pl{color:#9c2766}
.close{position:sticky;top:0;float:right;border:0;background:#eee;border-radius:50%;width:38px;height:38px;font-size:20px}
/* admin */
.tabs{display:flex;gap:6px;overflow-x:auto;margin:0 0 12px}
.tabs a{flex:none;text-decoration:none;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:999px;padding:8px 14px;font-weight:700;font-size:15px}
.tabs a.on{background:var(--navy);color:#fff;border-color:var(--navy)}
.busgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px}
.busgrid a{display:flex;align-items:center;justify-content:center;height:76px;border-radius:14px;background:var(--gold);color:var(--navy);font-size:26px;font-weight:900;text-decoration:none;border:2px solid var(--goldd,#a77a00)}
h2.sec{font-size:18px;margin:18px 0 8px;color:var(--navy)}
.card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin:0 0 8px}
.card .t1{font-weight:800}
.card .t2{font-size:15px;color:var(--muted)}
.flow{font-weight:800;font-size:16px;margin:3px 0}
.flow .from{color:var(--red)}.flow .to{color:var(--green)}
.search{width:100%;font-size:18px;padding:12px;border:2px solid var(--line);border-radius:12px;margin-bottom:10px}
mark{background:var(--gold-lt);padding:0 2px;border-radius:3px}
.users .card{display:flex;justify-content:space-between;align-items:center;gap:8px}
.bcheck{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:8px 0}
.bcheck label{border:1px solid var(--line);border-radius:10px;padding:10px 4px;text-align:center;font-weight:800}
.bcheck input{margin-right:4px}
.field{display:block;margin:10px 0}
.field input[type=text],.field input[type=tel]{width:100%;font-size:18px;padding:10px;border:1px solid var(--line);border-radius:10px;margin-top:4px}
.empty{background:#fff;border:1px dashed var(--line);border-radius:12px;padding:18px;text-align:center;color:var(--muted)}
.printonly{display:none}
@media print{
 .top,.chips,.next,.tabs,.noprint,.sheet{display:none!important}
 body{font-size:12px;background:#fff}
 main{max-width:none;padding:0}
 .printonly{display:block}
 .runcard{break-inside:avoid-page;border:1px solid #999;border-radius:4px;margin:0 0 6px}
 .runhead{padding:4px 8px}.runhead .t{font-size:15px}
 .stops{display:block!important}
 .stop{padding:3px 8px}.stop .a{font-size:13px}.stop .who{font-size:12px}
 .stop .num{width:22px;height:22px;font-size:12px}
 .chg{font-size:11px;padding:1px 4px}
}

.legs{display:flex;flex-wrap:wrap;gap:6px;padding:8px 14px;border-top:1px solid var(--line)}
.maplink{flex:none;align-self:center;font-size:22px;text-decoration:none;padding:6px;border:1px solid var(--line);border-radius:10px;background:#fff}

a.chip{text-decoration:none;color:inherit}
a.chip.on{color:#fff}

/* v2: download + phone location */
.dlbox{background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px 16px;text-align:center;margin:8px 0 14px}
.dlbus{font-size:30px;font-weight:900;color:var(--navy)}
.dlbtn{width:100%;min-height:72px;font-size:22px;font-weight:800;margin:16px 0 10px;border-radius:14px}
.dlbtn:disabled{opacity:.7}
.oldnote{background:var(--yel);border-radius:10px;padding:10px;margin:12px 0 0;font-weight:700}
.linkbtn{border:0;background:none;color:var(--brand);text-decoration:underline;font-size:13px;padding:0 0 0 6px;font-weight:700}
.dlline{display:flex;flex-wrap:wrap;align-items:center}
.trk{background:rgba(255,255,255,.14);border-radius:10px;padding:8px 10px;margin:8px 0 0;font-size:16px}
.trk.err{background:#fff;color:var(--red);font-weight:700}
.trk .acc{opacity:.75;font-size:13px}
.trkrow{margin-top:8px;display:flex}
.startbtn{min-height:56px;font-size:18px;border:2px solid #7fd88b}
.trkstop{width:100%;min-height:44px;background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.35);color:#fff}
.next.none .trkstop,.next.none #trkoff{color:var(--ink);background:#fff;border-color:var(--line);width:auto}
.herebar{background:#3bb54a;color:#fff;font-weight:800;padding:8px 14px;font-size:15px;list-style:none}
.badge.here{background:#3bb54a;color:#fff}
.stop.atstop{background:#e3f4e5;outline:3px solid #3bb54a;outline-offset:-3px}
.userun{padding:8px 14px 0}

/* v6: Now | All routes tabs */
.bustabs{display:flex;gap:6px;margin:0 0 12px;background:#e9e6dc;border-radius:12px;padding:4px}
.bustabs button{flex:1;min-width:0;border:0;background:transparent;border-radius:9px;padding:10px 6px;font-size:15px;font-weight:800;color:var(--muted);min-height:46px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bustabs button.on{background:var(--navy);color:#fff;box-shadow:0 2px 6px rgba(31,29,78,.25)}
.runtools{padding:8px 14px 0;display:flex;gap:6px}
.rlrow{display:flex;align-items:center;gap:6px;background:#fff}
.rlrow .runhead{flex:1;min-width:0}
.rlrow .prbtn{flex:none;margin-right:10px}
/* v6: print sheets */
#printarea{display:none}
@media print{
 body.printing > *:not(#printarea){display:none!important}
 body.printing #printarea{display:block}
 @page{margin:10mm}
 .psheet{page-break-after:always;break-after:page;font:11.5px/1.3 Arial,Helvetica,sans-serif;color:#000;-webkit-print-color-adjust:exact;print-color-adjust:exact}
 .psheet:last-child{page-break-after:auto;break-after:auto}
 .ph{display:flex;align-items:center;gap:12px;border-bottom:2px solid #000;padding-bottom:6px;margin-bottom:6px}
 .ph img{width:62px;height:auto}
 .pt{font-size:20px;font-weight:800}
 .ps{font-size:12px}
 .pnote{border:1px solid #000;padding:3px 6px;margin:4px 0;font-weight:700}
 table.pt2{width:100%;border-collapse:collapse}
 .pt2 th{text-align:left;border-bottom:1.5px solid #000;padding:3px 4px;font-size:11px}
 .pt2 td{border-bottom:1px solid #999;padding:3px 4px;vertical-align:top}
 .pt2 tr{break-inside:avoid;page-break-inside:avoid}
 .pt2 tr.psub td{border-top:1px dotted #bbb}
 .pt2 tr.pfirst td{border-top:1px solid #777}
 .pt2 td{border-bottom:0}
 .pt2 td.pn{width:22px;font-weight:800;font-size:14px}
 .pt2 td.pa{width:28%;font-weight:700}
 .pt2 td.pp{width:30%;white-space:nowrap;font-size:11px}
 .pt2 tr.hasc td{background:#f3f3f3}
 .pk{margin:1px 0}.pk.struck{text-decoration:line-through;text-decoration-thickness:1px}
 .pk.struck .pc{text-decoration:none;display:inline-block}
 .pcl{color:#444;font-size:10.5px}
 .pc{font-weight:800}.pc.out{color:#b3261e}.pc.in{color:#1b6e2a}
 .pf{margin-top:6px;font-size:9.5px;color:#444}
}

/* v4 extra stop (bus change kid = own stop) */
.xstop{display:block;margin:5px 0 2px;padding:5px 9px;border-radius:8px;background:#1b8a3a;color:#fff;font-weight:800;font-size:14px;letter-spacing:.2px}
.xstop.merged{background:var(--greenbg);color:var(--green);border:2px solid #3bb54a}
.xstop.x-card{font-size:16px;padding:7px 10px;margin:6px 0}
.xstop.x-sheet{font-size:16px;margin:4px 0 8px;clear:both}
li.stop:has(.xstop:not(.merged)){background:#eefaf0;border-left:5px solid #1b8a3a}
li.stop:has(.xstop:not(.merged)) .num{background:#1b8a3a;color:#fff}
@media print{ .xstop{background:none!important;color:#1b6e2a!important;border:1px solid #1b6e2a;padding:1px 4px;font-size:11px} tr.pextra td{background:#eaf6ec!important;-webkit-print-color-adjust:exact;print-color-adjust:exact} }
tr.pextra td{background:#eaf6ec}

/* v6 usual stop times */
.avg{font-size:12.5px;color:#1e56d6;font-weight:600;margin-top:2px}
.avg.big{font-size:15px;margin:4px 0 2px}
.stop.done .avg{color:#8a8fa3}
.avgcard{display:flex;gap:10px;align-items:center;margin-top:14px}
.ptm{white-space:nowrap;font-weight:600;text-align:center}

/* v7: Yiddish / Hebrew names (GeoTrack FirstNameH + FamilyHName), right-to-left, bundled Hebrew font so phones, PCs and printers all show it */
@font-face{font-family:"KrulaHeb";src:url(/img/hebrew-Regular.woff2) format("woff2");font-weight:400;font-display:swap;unicode-range:U+0590-05FF,U+FB1D-FB4F}
@font-face{font-family:"KrulaHeb";src:url(/img/hebrew-Bold.woff2) format("woff2");font-weight:600 900;font-display:swap;unicode-range:U+0590-05FF,U+FB1D-FB4F}
.yi,.nmy{font-family:"KrulaHeb","Arial Hebrew","Noto Sans Hebrew","David",Arial,sans-serif;unicode-bidi:isolate;direction:rtl}
.yi{margin-left:.35em;font-weight:inherit;white-space:nowrap}
.nmy{font-size:1.15em;font-weight:700;text-align:left;margin:-2px 0 2px}
.kid .yi{opacity:.95}

/* v7: Print page (admin) */
.prt .prow{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:8px 0}
.prt label{font-weight:700}
.prt input[type=date],.prt select{font-size:17px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:#fff;margin-left:6px}
.chips.inl{display:inline-flex;padding:0}
.pgrp{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px;margin:10px 0}
.pgh{font-weight:800;display:flex;align-items:center;gap:6px;margin-bottom:6px}
.pgh .chip{padding:4px 10px;font-size:13px}
.pchk{display:flex;flex-direction:column;gap:4px}
.pchk.buses{flex-direction:row;flex-wrap:wrap}
.pchk label{border:1px solid var(--line);border-radius:10px;padding:8px 10px;font-weight:600}
.pchk label.on{background:var(--yel);border-color:var(--gold)}
.pact{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 14px}
.pvh{font-weight:800;margin:6px 0}
#pbook{width:max-content}
.qpage{width:195mm;height:257mm;overflow:hidden;background:#fff;color:#000;margin:0 0 14px;box-shadow:0 1px 6px rgba(0,0,0,.25);font-family:Arial,Helvetica,"KrulaHeb",sans-serif;line-height:1.22;font-size:10px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.qpage.qover{height:auto;min-height:257mm}
.qin{width:100%}
.qh{display:flex;align-items:center;gap:.8em;border-bottom:2px solid #000;padding-bottom:.4em;margin-bottom:.4em}
.qh img{width:4.6em;height:auto}
.qbus{font-size:2.4em;font-weight:900;line-height:1}
.qday{font-size:1.25em;font-weight:700}
.qhr{margin-left:auto;text-align:right;font-size:1em}
.qsmall{font-size:.85em;color:#333;font-weight:400}
.qnote{border:1px solid #000;padding:.2em .5em;margin:.25em 0;font-weight:700}
.qbody{column-count:var(--qcols,1);column-gap:1.4em;column-rule:1px solid #bbb}
.qrun{margin:0 0 .7em}
.qrh{font-size:1.2em;border-bottom:1.5px solid #000;background:#e8e8e8;padding:.15em .35em;break-after:avoid;page-break-after:avoid}
table.qt{width:100%;border-collapse:collapse;font-size:1em}
.qt th{text-align:left;font-size:.82em;border-bottom:1px solid #000;padding:.1em .3em}
.qt td{padding:.12em .3em;vertical-align:top}
.qt tr{break-inside:avoid;page-break-inside:avoid}
.qt tr.qfirst td{border-top:1px solid #777}
.qt tr.qchg td{background:#f2f2f2}
.qt tr.qextra td{background:#e6f4e8}
.qnum{font-weight:900;font-size:1.15em;width:1.7em}
.qtm{white-space:nowrap;width:1%}
.qad{font-weight:700;width:26%}
.qkids{}
.qg{padding:.05em 0}.qg+.qg{border-top:1px dotted #bbb}
.qphl{font-size:.92em;color:#111}
.qph{white-space:nowrap;margin-right:.7em;display:inline-block}
.qk{margin:.04em 0}
.qn{font-weight:700}
.qy{font-weight:700;font-size:1.05em}
.qc{color:#333;font-size:.9em}
.qk.struck .qn,.qk.struck .qy{text-decoration:line-through}
.qpage .pc{font-weight:800}.qpage .pc.out{color:#b3261e}.qpage .pc.in{color:#1b6e2a}
.qf{margin-top:.5em;font-size:.8em;color:#444;border-top:1px solid #999;padding-top:.2em}
@media print{
 body.printbook{background:#fff}
 body.printbook .top,body.printbook .tabs,body.printbook .prt,body.printbook .pvh,body.printbook #sheet,body.printbook #printarea{display:none!important}
 body.printbook #app,body.printbook main{max-width:none!important;padding:0!important;margin:0!important}
 body.printbook #pbook{zoom:1!important;width:auto}
 body.printbook .qpage{box-shadow:none;margin:0;break-after:page;page-break-after:always}
 body.printbook .qpage:last-child{break-after:auto;page-break-after:auto}
 @page{size:letter;margin:10mm}
}

/* v9: each bus's own color (from moshe's Krula Bus Routes planner) */
.busgrid a{background:var(--bc,var(--gold));color:var(--bf,var(--navy));border:2px solid var(--be,#a77a00);flex-direction:column;line-height:1.05;box-shadow:0 1px 3px rgba(0,0,0,.18)}
.busgrid a small{font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;margin-top:4px;opacity:.9}
.bbadge{display:inline-block;min-width:2.5em;text-align:center;background:var(--bc);color:var(--bf);border:2px solid var(--be);border-radius:8px;padding:0 .3em;font-weight:900;line-height:1.25;-webkit-print-color-adjust:exact;print-color-adjust:exact}
#title .bbadge{font-size:17px;margin-left:4px;vertical-align:1px}
.dlbus .bbadge{font-size:30px;border-radius:12px;padding:2px 12px}
.busband{display:flex;align-items:center;gap:10px;background:var(--bc);color:var(--bf);border:2px solid var(--be);border-radius:12px;padding:6px 12px;margin:0 0 10px;font-weight:800;font-size:16px}
.busband .bn{font-size:28px;font-weight:900;line-height:1}
.runcard.bcol,.runcard.current.bcol{border-left:9px solid var(--bs)}
.mpin.bcol{background:var(--bc);color:var(--bf);border-color:var(--be)}
.mpin.bcol.done{background:#fff;color:#555;border-color:#777}
.maplbl .bbadge{font-size:13px;margin-right:4px}
.pchk.buses label.bcol{background:var(--bc);color:var(--bf);border:2px solid var(--be);min-width:64px;text-align:center;font-weight:900;font-size:17px}
.pchk.buses label.bcol:not(.on){opacity:.4}
.busgrid.pbus{grid-template-columns:repeat(auto-fill,minmax(62px,1fr));gap:7px;margin:6px 0 4px}
.busgrid.pbus a{height:48px;font-size:19px;border-radius:11px}
.busgrid.pbus a small{font-size:9px;margin-top:2px}
.busgrid.pbus a.all{background:#fff;color:var(--navy);border-color:var(--line)}
.busgrid.pbus a.on{outline:4px solid var(--navy);outline-offset:2px}
.busgrid.pbus a.off{opacity:.55}
.qbus .bbadge{font-size:1em;border-width:.07em;border-radius:.18em;padding:0 .18em}
.qcol{font-size:.32em;font-weight:800;letter-spacing:.08em;text-transform:uppercase;margin-left:.35em;vertical-align:middle}
.pt .bbadge{font-size:1.15em}
@media print{.bbadge{border-color:#000!important}}

/* v10 Live map */
.lvbar{display:flex;align-items:center;gap:10px;margin:0 0 8px;flex-wrap:wrap}
.lvref{min-height:46px;font-size:17px;padding:0 18px}
.lvref:disabled{opacity:.7}
.lvupd{font-size:14px;color:#555;flex:1;min-width:150px}
.lvwrap{position:relative}
.livemap{height:min(56vh,560px);min-height:300px;border-radius:12px;border:1px solid var(--line);overflow:hidden;background:#e8eef3;z-index:0}
.lvall{position:absolute;right:10px;top:10px;z-index:500;background:#fff;border:1px solid var(--line);border-radius:999px;padding:7px 12px;font-weight:700;font-size:14px;box-shadow:0 1px 4px rgba(0,0,0,.2)}
.lvpin{width:36px;height:36px;border-radius:50%;background:var(--bc);color:var(--bf);border:3px solid var(--be);box-shadow:0 0 0 2px #fff,0 2px 6px rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;position:relative;margin:2px}
.lvpin.fol{box-shadow:0 0 0 3px var(--gold),0 0 0 6px var(--navy),0 2px 8px rgba(0,0,0,.5)}
.lvpin.stale{opacity:.5;filter:grayscale(.35)}
.lvpin em{position:absolute;top:36px;left:50%;transform:translateX(-50%);white-space:nowrap;font-style:normal;font-size:11px;font-weight:700;color:#333;background:rgba(255,255,255,.92);border-radius:6px;padding:0 4px}
.lvdir{position:absolute;inset:-11px;pointer-events:none}
.lvdir::before{content:"";position:absolute;left:50%;top:0;transform:translateX(-50%);border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:9px solid var(--navy)}
.lvpop{font-size:14px;line-height:1.45}
.lvph{display:flex;align-items:center;gap:6px;margin-bottom:3px}
.lvold{background:#fde68a;color:#7a5a00;border-radius:6px;padding:0 5px;font-size:12px;font-weight:700}
.lvrun{margin-top:3px}
.lvnav{display:inline-block;margin-top:5px;font-weight:700}
.lvlist{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.lvrow{display:flex;align-items:center;gap:10px;text-align:left;background:#fff;border:1px solid var(--line);border-radius:12px;padding:9px 10px;font-size:15px;color:var(--ink);width:100%}
.lvrow .bbadge{flex:none;min-width:44px;text-align:center}
.lvrow.on{border-color:var(--navy);box-shadow:0 0 0 2px var(--gold)}
.lvrow.stale{opacity:.6}
.lvrow:disabled{opacity:.45}
.lvt{display:flex;flex-direction:column;min-width:0;flex:1}
.lvl1{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lvl2{font-size:13px;overflow:hidden;text-overflow:ellipsis}
.lvfol{flex:none;font-size:12px;font-weight:800;background:var(--navy);color:#fff;border-radius:999px;padding:3px 8px}
.lvnote{margin:10px 2px 20px}
.livebtn{display:block;text-align:center;margin:14px 0 0;text-decoration:none}

/* v11: bus changes filter + print, Changes viewer, bus sticker cards */
.chgdate{margin-bottom:6px}.chgdate .chips{margin-bottom:6px}
.chgdate input[type=date]{font-size:15px;border:0;background:transparent}
.chgf{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px;margin:10px 0}
.chgf .busgrid{grid-template-columns:repeat(auto-fill,minmax(64px,1fr))}
.chgf .busgrid a{height:54px;font-size:20px}
.busgrid a.on{outline:3px solid var(--navy);outline-offset:2px}
.busgrid a.off{opacity:.38}
.chgf input[type=search]{width:100%;font-size:17px;padding:10px;border:1px solid var(--line);border-radius:10px}
.cfprint{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:6px}
.ctag{display:inline-block;font-size:11px;font-weight:800;letter-spacing:.04em;border-radius:6px;padding:1px 6px;margin-right:6px;vertical-align:2px}
.ctag.in{background:var(--greenbg);color:var(--green)}.ctag.out{background:var(--redbg);color:var(--red)}.ctag.st{background:var(--yel);color:#6b5200}
.badge.rolecv{background:#e8e6ff;color:var(--brand)}
.cardsbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px;margin:6px 0 4px}
.cardsbar .btn{text-decoration:none}
#chgprint{display:none}
@media print{
 body.printchg > *:not(#chgprint){display:none!important}
 body.printchg #chgprint{display:block;font:10.5px/1.28 Arial,Helvetica,"KrulaHeb",sans-serif;color:#000}
}
#chgprint .cph{display:flex;align-items:center;gap:12px;border-bottom:2px solid #000;padding-bottom:6px;margin-bottom:8px}
#chgprint .cph img{width:58px;height:auto}
#chgprint .cpt{font-size:20px;font-weight:800}
#chgprint .cps{font-size:11.5px}
#chgprint .cprep{border:1px solid #000;padding:4px 6px;margin:0 0 8px}
#chgprint h2{font-size:15px;margin:10px 0 4px;break-after:avoid;page-break-after:avoid}
#chgprint h2 .bbadge{font-size:15px;border-color:#000}
#chgprint .cpn{font-size:11px;font-weight:400}
#chgprint .cpbus.brk{break-before:page;page-break-before:always}
#chgprint table{width:100%;border-collapse:collapse;margin-bottom:6px;table-layout:fixed;word-wrap:break-word}
#chgprint th,#chgprint td{border:1px solid #555;padding:3px 4px;text-align:left;vertical-align:top}
#chgprint th{background:#e6e6e6;font-size:10px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
#chgprint tr{break-inside:avoid;page-break-inside:avoid}
#chgprint td.ty{font-weight:800;white-space:nowrap}
#chgprint tr.t-out td.ty,#chgprint tr.t-nc td.ty{text-decoration:underline}
#chgprint .cpd{color:#333;font-size:9.5px}
/* cards: one page = 8.5in x 11in; card = 4in x 3.333in */
.cbuses{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:6px;margin:8px 0}
.cbrow{display:flex;align-items:center;gap:6px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:4px 6px}
.cbrow .bbadge{font-size:16px}.cbrow .cbn{flex:1;font-size:13px}.cbrow .cbc{min-width:20px;text-align:center}
.cardprev{--z:.45;margin:10px 0 30px}
.cpage{position:relative;width:8.5in;height:11in;background:#fff;overflow:hidden;zoom:var(--z);box-shadow:0 1px 8px rgba(0,0,0,.3);margin:0 auto 16px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cslot{position:absolute;width:4in;height:3.333in}
.bcard{position:absolute;inset:0;background:var(--bc);color:var(--bf);border-radius:.13in;overflow:hidden;font-family:Arial,Helvetica,"KrulaHeb",sans-serif;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cpage.plain .bcard{border-radius:0}
.bcard.white{box-shadow:inset 0 0 0 .045in #9a9a9a}
.bclogo{position:absolute;left:.15in;top:.15in;width:1.24in;height:1.09in;background:#fff;border-radius:.16in;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 .02in rgba(0,0,0,.25)}
.bcard.white .bclogo{box-shadow:0 0 0 .02in #9a9a9a}
.bclogo img{width:1.1in;height:auto;max-height:.97in;object-fit:contain}
.bcbus{position:absolute;right:.2in;top:.17in;text-align:right;font-weight:900;font-size:24pt;line-height:1.02;letter-spacing:.04em}
.bcbus .yi{font-size:20pt;letter-spacing:0}
.bcnum{position:absolute;left:0;right:0;top:1.1in;text-align:center;font-weight:900;font-size:112pt;line-height:1;letter-spacing:-.01em}
.bcname{position:absolute;left:0;right:0;bottom:.16in;text-align:center;font-weight:900;font-size:25pt;line-height:1;letter-spacing:.05em}
.bcname .yi{letter-spacing:0;font-size:24pt}.bcsep{opacity:.6}
.cut{position:absolute;display:block;z-index:3}
.cut.v{top:.1in;bottom:.1in;width:0;border-left:.012in dashed #777}
.cut.h{left:.08in;right:.08in;height:0;border-top:.012in dashed #777}
@media print{
 body.printcards > *:not(main){display:none!important}
 body.printcards main > *:not(#cardprev){display:none!important}
 body.printcards #app,body.printcards main{max-width:none!important;padding:0!important;margin:0!important}
 body.printcards .cardprev{margin:0}
 body.printcards .cpage{zoom:1;box-shadow:none;margin:0;break-after:page;page-break-after:always}
 body.printcards .cpage:last-child{break-after:auto;page-break-after:auto}
}
/* v12: bus CHANGE cards (4in x 3.333in, same sheet as .bcard) */
.ccard{position:absolute;inset:0;background:var(--bc);color:var(--bf);border-radius:.13in;overflow:hidden;font-family:Arial,Helvetica,"KrulaHeb",sans-serif;padding:.11in .13in .12in;display:flex;flex-direction:column;gap:.045in;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cpage.plain .ccard{border-radius:0}
.ccard.white{box-shadow:inset 0 0 0 .045in #9a9a9a}
.ccard *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cchead{display:flex;align-items:flex-start;justify-content:space-between;height:.9in;flex:none}
.cclogo{width:1.04in;height:.88in;background:#fff;border-radius:.13in;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 .02in rgba(0,0,0,.25);flex:none}
.ccard.white .cclogo{box-shadow:0 0 0 .02in #9a9a9a}
.cclogo img{width:.94in;height:auto;max-height:.8in;object-fit:contain}
.ccbus{text-align:right;line-height:1;font-weight:900}
.ccbl{font-size:10pt;letter-spacing:.08em}.ccbl .yi{font-size:10pt;letter-spacing:0}
.ccbn{font-size:41pt;letter-spacing:-.01em;line-height:.9;margin-top:.005in}
.ccbc{font-size:11pt;letter-spacing:.05em;margin-top:.03in;white-space:nowrap}.ccbc .yi{font-size:11pt;letter-spacing:0}
.cctype{flex:none;height:.42in;background:#fff;border-radius:.09in;display:flex;align-items:center;gap:.07in;padding:0 .1in 0 .07in;color:var(--tc);box-shadow:0 0 0 .015in rgba(0,0,0,.18)}
.ccard.white .cctype{box-shadow:0 0 0 .02in #9a9a9a}
.t-in{--tc:#0d7a32}.t-out{--tc:#c41a1a}.t-stop{--tc:#1f1d4e}.t-nc{--tc:#5b5b5b}
.ccic{flex:none;width:.29in;height:.29in;border-radius:50%;background:var(--tc);color:#fff;font:900 17pt/0.29in Arial,sans-serif;text-align:center}
.t-stop .ccic{font-size:13pt;background:#e0a800;color:#1f1d4e}
.ccten{font-weight:900;font-size:17pt;letter-spacing:.02em;white-space:nowrap;overflow:hidden;flex:1 1 auto;min-width:0}
.ccty{font-weight:800;font-size:15pt;white-space:nowrap;overflow:hidden;flex:0 0 auto;min-width:0;max-width:1.2in}
.ccname{flex:none;font-weight:900;font-size:24pt;line-height:1.06;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:.02in}
.ccsub{flex:none;font-size:15pt;font-weight:700;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-height:.2in}
.ccsub .yi{font-weight:800}.cccls{opacity:.92}
.ccbox{flex:1 1 auto;min-height:0;background:#fff;color:#111;border-radius:.09in;padding:.05in .09in;display:flex;flex-direction:column;justify-content:space-around;box-shadow:0 0 0 .015in rgba(0,0,0,.18);overflow:hidden}
.ccard.white .ccbox{box-shadow:0 0 0 .02in #9a9a9a}
.ccrow{display:flex;align-items:center;gap:.07in;line-height:1.15;min-width:0}
.ccl{flex:none;width:.42in;font-size:7pt;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#666}
.ccv{flex:1;min-width:0;font-size:10.5pt;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ccv b{font-weight:900}
.ccb{display:inline-block;background:var(--bc);color:var(--bf);border:.012in solid var(--be);border-radius:.05in;padding:0 .05in;font-weight:900;line-height:1.25}
.ccar{font-weight:900;color:#444}
.ccfam{color:#444}
.prt .chips,.chgf .chips,.chgdate .chips{flex-wrap:wrap;overflow:visible;white-space:normal}

/* v15: Daily report (#/report) */
main.rptwide{max-width:1180px}
.rpbox .chips{flex-wrap:wrap}
.rprow{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end;margin-top:6px}
.rpcol{padding:10px}
.rpch{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.rpch select{font-size:15px;padding:6px;border:1px solid var(--line);border-radius:8px;max-width:100%}
.rpcb{margin-left:auto;display:flex;gap:2px}.rpcb .linkbtn{font-size:18px;text-decoration:none;padding:2px 8px}.rpcb .linkbtn:disabled{opacity:.3}
.linkbtn.danger{color:var(--red)}
.rpf{display:flex;flex-direction:column;font-size:13px;font-weight:700;color:var(--muted);gap:3px;margin:4px 0}
.rpf.grow{flex:1;min-width:160px}
.rpf select,.rpf input{font-size:16px;padding:7px;border:1px solid var(--line);border-radius:8px;color:var(--ink);background:#fff;font-weight:400;max-width:100%}
.rpf input[type=time]{min-width:118px}
.rpsel{font-size:16px;color:var(--ink);font-weight:400}
.rpsearch input{width:100%;font-size:16px;padding:9px;border:1px solid var(--line);border-radius:8px}
.rplist{display:flex;flex-direction:column;gap:2px;margin-top:4px}
.rplist button{text-align:left;border:1px solid var(--line);background:#fafaf7;border-radius:8px;padding:8px 10px;font-size:15px}
.rplist button:hover{background:var(--gold-lt)}
.rpchk{display:flex;align-items:center;gap:6px;font-size:14px;margin:6px 0 2px}
.rpgo{margin:12px 0}
.rpbar{height:8px;background:#e6e3d8;border-radius:5px;overflow:hidden;margin:6px 0 4px}.rpbar i{display:block;height:100%;background:var(--gold)}
.rpout{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px;margin:10px 0 40px}
.rphead{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}.rphead .bbadge{font-size:22px}.rphead .btn{margin-left:auto}
.rpscroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-bottom:8px}
.rpsum,.rpmain{border-collapse:collapse;font-size:14px}
.rpsum th,.rpsum td{border:1px solid var(--line);padding:4px 8px;text-align:center;white-space:nowrap}
.rpsum thead th{font-size:12px;background:#f2f0ea;white-space:normal;min-width:90px}.rpsum tbody th{text-align:left;background:#f7f6f2}
.rpsum tr.sch td{background:#f7f3e3;font-weight:700}
.rpmain{width:100%}
.rpmain th{background:var(--navy);color:#fff;text-align:left;padding:5px 6px;font-size:12px;line-height:1.2;vertical-align:bottom}
.rpmain th .s{color:#ddd}
.rpmain td{border-bottom:1px solid #e6e3da;padding:4px 6px;vertical-align:top}
.rpmain tr:nth-child(even) td{background:#f8f7f3}
.rpmain td.t{font-weight:800;white-space:nowrap}.rpmain td.na{color:#888;font-size:13px;white-space:nowrap}
.rpmain td.note{font-size:12px;min-width:140px;color:#333}.rpmain td.cnt{text-align:center}.rpmain td.cnt input{width:20px;height:20px}
.rpmain tr.xrow td{opacity:.5}
.rpmain .s,.rpsum .s{font-weight:400;font-size:11.5px;color:#555}
.late,.rpmain td.late{color:#b3261e!important}.df.late{font-weight:800}.df.ok{color:#2a7a35}
.rprules{font-size:13px;color:#333}.rprules summary{cursor:pointer;font-weight:700}
#rptprint{display:none}
@media print{
 body.printrpt > *:not(#rptprint){display:none!important}
 body.printrpt #rptprint{display:block;font:8.8pt/1.25 Arial,Helvetica,"KrulaHeb",sans-serif;color:#111}
}
#rptprint *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
#rptprint .hd{display:flex;align-items:center;gap:14px;border-bottom:3px solid #1f2a44;padding-bottom:7px}
#rptprint .hd img{width:54px;height:54px;object-fit:contain}
#rptprint .hd .tt{flex:1}#rptprint .hd h1{font-size:18pt;margin:0;color:#1f2a44}
#rptprint .hd .sub{color:#444;margin-top:3px;font-size:9.3pt}
#rptprint .badge{border-radius:10px;padding:6px 14px;text-align:center;min-width:74px}
#rptprint .badge .num{font-size:21pt;font-weight:bold;line-height:1}#rptprint .badge .cn{font-size:8.5pt;letter-spacing:1.5px}
#rptprint table{border-collapse:collapse}
#rptprint .rpsum{margin:9px 0}
#rptprint .rpsum th,#rptprint .rpsum td{border:1px solid #cfd4dc;padding:3.5px 10px;font-size:9.2pt;text-align:center;white-space:normal}
#rptprint .rpsum tbody th{background:#eef1f6;text-align:left;white-space:nowrap}#rptprint .rpsum thead th{font-size:8.4pt;background:#fff}
#rptprint .rpsum tr.sch td{color:#1f2a44;font-weight:bold;background:#f7f3e3}
#rptprint .rpmain{width:100%;table-layout:fixed;font-size:8.8pt}
#rptprint .rpmain th{background:#1f2a44;color:#fff;text-align:left;padding:4px 6px;font-size:8.4pt;line-height:1.2}
#rptprint .rpmain th.dt{width:6%}#rptprint .rpmain th.dw{width:4.5%}#rptprint .rpmain th.note{width:22%}
#rptprint .rpmain td{border-bottom:1px solid #dde1e7;padding:2.4px 6px;vertical-align:top}
#rptprint .rpmain tr:nth-child(even) td{background:#f5f6f8}
#rptprint .rpmain tr{page-break-inside:avoid;break-inside:avoid}
#rptprint td.t{font-weight:bold;font-size:9.6pt;white-space:nowrap}#rptprint td.late{color:#b3261e}
#rptprint td.na{color:#888;font-size:8.2pt}
#rptprint .s{font-weight:normal;font-size:7.4pt;color:#555}
#rptprint td.note{font-size:7.8pt;color:#333}
#rptprint h2{font-size:10pt;color:#1f2a44;margin:10px 0 3px}
#rptprint ol{margin:0;padding-left:17px;font-size:7.9pt;color:#222}#rptprint ol li{margin-bottom:2px}
@media (max-width:600px){.rpmain{font-size:13px}.rpmain td.note{min-width:120px}.rphead .btn{margin-left:0;width:100%}}
.rpmain td[data-xc]{cursor:pointer}.rpmain td.xc{text-decoration:line-through;text-decoration-color:#999;opacity:.6}
#rptprint td.xc{color:#888}
#rptprint td.t{white-space:normal}#rptprint td.xc{text-decoration:none;opacity:1;color:#8a8a8a}#rptprint tr.xrow td{opacity:1;color:#8a8a8a}#rptprint td.dt,#rptprint td.dw{white-space:nowrap}
.rpmain td.t{white-space:normal;min-width:96px}.rpmain .tm{white-space:nowrap}.rpmain td.dt,.rpmain td.dw{white-space:nowrap}.rpmain td.xc{text-decoration:none;opacity:.5}.rpmain td.note{min-width:170px}
.rpdet{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px;margin:10px 0}.rpdet>summary{cursor:pointer;list-style:none}.rpdet>summary::-webkit-details-marker{display:none}.rpdet .rped{float:right;color:var(--brand);font-weight:700;text-decoration:underline;font-size:14px}.rpdet[open]>summary{margin-bottom:8px}.rpdet .rpcols .card{background:#fbfaf6}
#rptprint .rpmain th .s{color:#d8dce6}
.rpmain td.na{white-space:normal;min-width:96px}#rptprint td.na{white-space:normal}@media print{body.printrpt,html:has(body.printrpt){background:#fff!important}}

/* admin.krulahelp.org: Krula admin menu (v17) */
.kmenu{background:#14123a;color:#fff;display:flex;align-items:center;gap:10px;padding:6px 12px;padding-top:max(6px,env(safe-area-inset-top));font-size:13px;border-bottom:3px solid var(--gold)}
.kmenu .km-t{font-weight:800;color:var(--gold);white-space:nowrap;letter-spacing:.2px}
.kmenu .km-l{display:flex;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.kmenu .km-l::-webkit-scrollbar{display:none}
.kmenu a{color:#fff;text-decoration:none;white-space:nowrap;padding:4px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.06)}
.kmenu a:hover{background:rgba(255,255,255,.16)}
.kmenu a.on{background:var(--gold);color:var(--navy);border-color:var(--gold);font-weight:700}
.kmenu~.top{padding-top:10px}
@media print{.kmenu{display:none!important}}
body.printbook .kmenu{display:none!important}
