/* TTAH Track — mobile-first styles */
:root{
  --blue:#5a2c3c; --blue-2:#723b4e; --blue-3:#f5ecdc; --navy:#4a2232; --gold:#dbbd89; --gold-2:#c9a463; --ink:#0f172a; --muted:#5b6475;
  --line:#e3e8f0; --bg:#f4f7fb; --card:#fff; --ok:#15803d; --warn:#b45309; --warn-bg:#fff7e6;
  --radius:16px; --shadow:0 1px 2px rgba(15,23,42,.06),0 6px 24px rgba(15,23,42,.06);
  font-family: system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  color:var(--ink); -webkit-text-size-adjust:100%;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg)}
body{min-height:100vh;display:flex;flex-direction:column;line-height:1.45}
a{color:var(--blue-2)}
button,input,select{font:inherit}
:focus-visible{outline:3px solid var(--gold-2);outline-offset:2px;border-radius:8px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* header */
.top{background:linear-gradient(135deg,var(--navy),var(--blue-2));border-bottom:3px solid var(--gold);color:#fff;padding:14px 16px 16px;padding-top:max(14px,env(safe-area-inset-top))}
.top-in{max-width:1100px;margin:0 auto;display:flex;align-items:center;gap:12px}
.brand{display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none;min-width:0}
.logo{width:44px;height:44px;border-radius:10px;overflow:hidden;flex:none;box-shadow:0 0 0 2px rgba(255,255,255,.4)}
.logo img{width:44px;height:44px;display:block}
.brand b{display:block;font-size:17px;letter-spacing:.1px}
.brand small{display:block;font-size:12.5px;color:var(--gold)}
.top nav{margin-left:auto;display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.top nav a{color:#f3e6cc;text-decoration:none;font-size:14px;padding:6px 10px;border-radius:999px}
.top nav a[aria-current=page],.top nav a:hover{background:rgba(255,255,255,.14);color:#fff}
@media (max-width:640px){ .top nav{display:none} }

main{flex:1;width:100%;max-width:1100px;margin:0 auto;padding:16px}
.narrow{max-width:620px}
footer.foot{max-width:1100px;margin:0 auto;padding:18px 16px 110px;color:var(--muted);font-size:13px;width:100%}
footer.foot nav{display:flex;flex-wrap:wrap;gap:6px 16px;margin-bottom:8px}
footer.foot a{color:var(--muted)}

h1{font-size:26px;line-height:1.2;margin:4px 0 6px;letter-spacing:-.2px}
h2{font-size:19px;margin:0 0 10px}
h3{font-size:16px;margin:0 0 6px}
p{margin:0 0 10px}
.lead{color:var(--muted);font-size:16px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin-bottom:14px}
.muted{color:var(--muted)}
.small{font-size:13px}
.pill{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;padding:4px 10px;border-radius:999px;background:var(--blue-3);color:var(--blue)}
.pill.demo{background:#ede9fe;color:#5b21b6}
.pill.off{background:#eef1f6;color:#475569}
.pill.warn{background:var(--warn-bg);color:var(--warn)}
.pill.ok{background:#dcfce7;color:var(--ok)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:12px;padding:12px 16px;font-weight:650;cursor:pointer;background:var(--blue-2);color:#fff;text-decoration:none;min-height:46px}
.btn:hover{background:var(--blue)}
.btn.ghost{background:#fff;color:var(--blue-2);border:1.5px solid #e2cfae}
.btn.block{width:100%}
.field{display:block;width:100%;padding:12px 14px;border:1.5px solid #cbd5e1;border-radius:12px;background:#fff;font-size:17px;min-height:48px}
label.lbl{display:block;font-weight:600;margin:0 0 6px}

/* route picker */
.routes{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.route-btn{display:flex;align-items:center;gap:12px;padding:14px;border-radius:14px;border:1.5px solid var(--line);background:#fff;text-decoration:none;color:var(--ink);font-weight:650;font-size:16px;min-height:64px;box-shadow:var(--shadow)}
.route-btn:hover{border-color:var(--gold)}
.route-btn small{display:block;font-weight:500;color:var(--muted);font-size:12.5px}
.chip{width:34px;height:34px;border-radius:50%;flex:none;background:var(--c);display:grid;place-items:center;box-shadow:inset 0 0 0 1px rgba(15,23,42,.12)}
.chip.light{box-shadow:inset 0 0 0 2px #cbd5e1}
.chip .mk{display:block;width:76%;height:76%;background:var(--i);-webkit-mask:url(../brand/mark.png) center/contain no-repeat;mask:url(../brand/mark.png) center/contain no-repeat}

/* tracking headline */
.headline{display:flex;gap:14px;align-items:flex-start}

.big{font-size:25px;font-weight:800;line-height:1.18;letter-spacing:-.3px;margin:0}
.big .sub{display:block;font-size:18px;font-weight:600;color:#334155;margin-top:4px;letter-spacing:0}
.facts{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}
.fact{background:#f7f9fd;border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.fact span{display:block;font-size:12px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.4px}
.fact b{display:block;font-size:15.5px;margin-top:2px}
.fact.wide{grid-column:1/-1}
.updated{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--muted);margin-top:12px}
.dot{width:10px;height:10px;border-radius:50%;background:#22c55e;box-shadow:0 0 0 0 rgba(34,197,94,.6);animation:pulse 2s infinite}
.dot.stale{background:#f59e0b;animation:none}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(34,197,94,.55)}70%{box-shadow:0 0 0 9px rgba(34,197,94,0)}100%{box-shadow:0 0 0 0 rgba(34,197,94,0)}}
@media (prefers-reduced-motion:reduce){.dot{animation:none}}
.alert{display:flex;gap:10px;align-items:flex-start;background:var(--warn-bg);border:1px solid #fcd9a5;color:#7c2d12;border-radius:12px;padding:12px;margin-top:12px;font-weight:600}
.change-stop{background:none;border:0;color:var(--blue-2);font-weight:600;padding:6px 0;cursor:pointer;text-decoration:underline}

/* map */
.map{height:52vh;min-height:300px;max-height:560px;border-radius:var(--radius);border:1px solid var(--line);overflow:hidden;box-shadow:var(--shadow);margin-bottom:14px;background:#e8edf3}
.map.tall{height:62vh}
.veh{width:38px;height:38px;border-radius:50%;background:var(--c);color:var(--i);display:grid;place-items:center;border:3px solid #fff;box-shadow:0 2px 10px rgba(0,0,0,.4)}
.veh.light{border-color:#334155}
.veh svg{width:21px;height:21px}
.veh.stale{filter:grayscale(1);opacity:.65}
.veh-label{background:#fff;border-radius:8px;padding:2px 7px;font-size:12px;font-weight:700;box-shadow:0 1px 4px rgba(0,0,0,.25);white-space:nowrap}
.school-pin{width:34px;height:34px;border-radius:9px;background:#fff;display:grid;place-items:center;box-shadow:0 2px 6px rgba(0,0,0,.35)}
.school-pin{overflow:hidden}
.school-pin img{width:34px;height:34px}
.leaflet-container{font:inherit}
/* map credits: required, kept small */
.leaflet-control-attribution{font-size:9px;line-height:1.3;padding:0 4px!important;background:rgba(255,255,255,.7)!important;color:#555}
.leaflet-control-attribution a{color:#555}
.leaflet-container .maplibregl-canvas{outline:none}
.leaflet-tooltip.mystop{background:var(--blue-2);color:#fff;border:0;font-weight:700}
.leaflet-tooltip.mystop::before{border-top-color:var(--blue-2)}

/* stop timeline */
.stops{list-style:none;margin:0;padding:0}
.stops li{display:flex;align-items:center;gap:12px;padding:10px 4px;border-bottom:1px solid var(--line)}
.stops li:last-child{border-bottom:0}
.stops .bullet{width:14px;height:14px;border-radius:50%;border:3px solid #94a3b8;background:#fff;flex:none}
.stops li.passed{color:#94a3b8}
.stops li.passed .bullet{background:#cbd5e1;border-color:#cbd5e1}
.stops li.next .bullet{border-color:var(--blue-2);background:var(--blue-2)}
.stops li.here .bullet{border-color:#16a34a;background:#16a34a}
.stops li.mine{background:#eff6ff;border-radius:10px;font-weight:700}
.stops .eta{margin-left:auto;font-size:14px;color:var(--muted);white-space:nowrap}
.stops .tag{font-size:11px;font-weight:700;background:var(--blue-2);color:#fff;border-radius:6px;padding:1px 6px;margin-left:6px}

/* off hours */
.off{text-align:center;padding:28px 18px}
.off .ico{width:64px;height:64px;border-radius:20px;background:var(--blue-3);display:grid;place-items:center;margin:0 auto 12px;color:var(--blue)}
.off .ico svg{width:34px;height:34px}
.hours{width:100%;border-collapse:collapse;font-size:14px;margin-top:10px;text-align:left}
.hours td{padding:7px 4px;border-bottom:1px solid var(--line)}
.hours td:last-child{text-align:right;color:var(--muted)}

/* demo bar */
.demobar{position:fixed;left:0;right:0;bottom:0;z-index:1000;background:#1e1b4b;color:#e0e7ff;padding:10px 12px;padding-bottom:max(10px,env(safe-area-inset-bottom));box-shadow:0 -4px 20px rgba(0,0,0,.2)}
.demobar .in{max-width:1100px;margin:0 auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.demobar b{font-size:12px;letter-spacing:.6px;text-transform:uppercase;color:#c4b5fd;margin-right:4px}
.demobar button{background:#312e81;color:#e0e7ff;border:1px solid #4338ca;border-radius:999px;padding:6px 11px;font-size:13px;font-weight:600;cursor:pointer;min-height:34px}
.demobar button[aria-pressed=true]{background:#a78bfa;color:#1e1b4b;border-color:#a78bfa}
.demobar .grp{display:flex;gap:4px;align-items:center}
.demobar .hide{margin-left:auto;background:transparent;border-color:transparent}
.demobar.min{left:auto;right:12px;bottom:12px;background:transparent;box-shadow:none;padding:0}
.demobar.min .opt{display:none}
.demobar.min .hide{background:#1e1b4b;border-color:#4338ca;opacity:.85;font-size:12px}

/* admin */
.table{width:100%;border-collapse:collapse;font-size:14.5px}
.table th{font-size:12px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);text-align:left;padding:8px;border-bottom:1px solid var(--line)}
.table td{padding:10px 8px;border-bottom:1px solid var(--line);vertical-align:middle}
.vcell{display:flex;align-items:center;gap:10px;font-weight:650}
.vcell .chip{width:28px;height:28px}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}
.kpi{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px;box-shadow:var(--shadow)}
.kpi b{display:block;font-size:24px}
.kpi span{font-size:12.5px;color:var(--muted);font-weight:600}
@media (max-width:640px){
  .kpis{grid-template-columns:repeat(2,1fr)}
  .table .hide-sm{display:none}
}
.grid2{display:grid;grid-template-columns:1.3fr 1fr;gap:16px;align-items:start}
@media (max-width:860px){.grid2{grid-template-columns:1fr}}

/* call simulator */
.phone{max-width:360px;margin:0 auto;background:#0b1220;border-radius:36px;padding:16px 16px 20px;box-shadow:0 18px 50px rgba(2,6,23,.35)}
.screen{background:#111a2e;color:#e2e8f0;border-radius:22px;padding:14px;min-height:190px;font-size:15px;display:flex;flex-direction:column;gap:8px;max-height:280px;overflow:auto}
.screen .who{font-size:11px;letter-spacing:.6px;text-transform:uppercase;color:#93c5fd;font-weight:700}
.screen .line{background:#1d2a47;border-radius:12px;padding:8px 10px}
.screen .line.you{align-self:flex-end;background:#1d4ed8;color:#fff}
.screen .status{font-size:12.5px;color:#94a3b8;text-align:center}
.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:16px}
.key{aspect-ratio:1.35;border-radius:18px;border:0;background:#1e293b;color:#fff;font-size:26px;font-weight:600;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1}
.key small{font-size:9.5px;font-weight:700;letter-spacing:.5px;margin-top:4px;max-width:90%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#cbd5e1}
.key:active,.key.hit{background:#334155}
.key:disabled{opacity:.4;cursor:default}
.callrow{display:flex;gap:12px;margin-top:14px}
.callrow .btn{flex:1;border-radius:999px}
.btn.green{background:#16a34a}.btn.green:hover{background:#15803d}
.btn.hang{background:#ef4444}.btn.hang:hover{background:#dc2626}
.flow{display:grid;gap:10px}
.node{border:1.5px solid #e6d5b8;background:#fdfaf4;border-radius:12px;padding:10px 12px;position:relative}
.node .k{font-size:11.5px;font-weight:800;color:var(--blue-2);text-transform:uppercase;letter-spacing:.5px}
.node q{display:block;font-style:italic;color:#1e293b;margin-top:2px}
.node q::before,.node q::after{content:""}
.arrow{text-align:center;color:#94a3b8;font-size:18px;line-height:1}
.branches{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media (max-width:520px){.branches{grid-template-columns:1fr}}
pre.code{background:#0b1220;color:#dbeafe;border-radius:12px;padding:12px;overflow:auto;font-size:12.5px;line-height:1.5;max-width:100%}
code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.92em}

/* how it goes live */
.arch{display:grid;gap:8px}
.arch .box{display:flex;gap:12px;align-items:center;background:#fff;border:1.5px solid var(--line);border-radius:14px;padding:12px}
.arch .n{width:30px;height:30px;border-radius:50%;background:var(--blue-2);color:#fff;font-weight:800;display:grid;place-items:center;flex:none}
.steps{padding-left:20px;margin:0}
.steps li{margin-bottom:8px}
.tag-ok{color:var(--ok);font-weight:700}
.tag-unv{color:var(--warn);font-weight:700}
.install{display:flex;gap:12px;align-items:center}
.install .logo{background:var(--blue-3)}

/* ── parent view: one screen, huge sentence ── */
.parent main{padding:12px 14px}
.say{font-size:30px;font-weight:800;line-height:1.15;letter-spacing:-.4px;margin:0}
.say small{display:block;font-size:19px;font-weight:600;color:#334155;margin-top:8px;letter-spacing:0;line-height:1.3}
.status-card{padding:18px}
.status-card .row{display:flex;gap:14px;align-items:flex-start}
.status-card .row .chip{width:56px;height:56px}
.meta{font-size:15.5px;color:#334155;margin-top:12px;display:grid;gap:4px}
.meta b{font-weight:700}
.parent .map{height:calc(100vh - 330px);min-height:280px;max-height:none}
.pick{display:grid;gap:10px}
.pick a,.pick button{display:flex;align-items:center;gap:14px;width:100%;text-align:left;padding:14px 16px;min-height:68px;border-radius:16px;border:2px solid var(--line);background:#fff;color:var(--ink);font-size:21px;font-weight:700;text-decoration:none;cursor:pointer;box-shadow:var(--shadow)}
.pick a:hover,.pick button:hover{border-color:var(--gold)}
.pick .chip{width:46px;height:46px}
.pick .num{width:40px;height:40px;border-radius:50%;background:var(--blue-3);color:var(--blue);display:grid;place-items:center;font-size:17px;flex:none}
.q{font-size:27px;font-weight:800;margin:6px 0 14px;line-height:1.2}
.under{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;font-size:15px;color:var(--muted);padding:2px 2px 8px}
.under button{font-size:16px}
.demo-link{background:none;border:1px dashed #a78bfa;color:#5b21b6;border-radius:10px;padding:8px 12px;font-weight:600;cursor:pointer;margin-top:14px}
.back{background:none;border:0;color:var(--blue-2);font-size:17px;font-weight:600;padding:8px 0;cursor:pointer}

.home-pin{width:30px;height:30px;border-radius:50%;background:#fff;color:var(--blue-2);display:grid;place-items:center;border:3px solid var(--blue-2);box-shadow:0 2px 6px rgba(0,0,0,.3)}
.home-pin svg{width:16px;height:16px}
.vname{font-size:30px;font-weight:800;line-height:1.1;letter-spacing:-.4px;margin:0}
.vupd{display:flex;align-items:center;gap:8px;font-size:18px;color:#334155;margin-top:6px;font-weight:600}
.where{font-size:20px;font-weight:700;margin:12px 0 0;line-height:1.3}
.eta-home{font-size:22px;font-weight:800;color:var(--blue-2);margin:8px 0 0}
.eta-home small{font-size:14px;font-weight:600;color:var(--muted)}
.status-card.is-stale{border-color:#fcd9a5}
.parent .map{height:calc(100vh - 360px);height:calc(100dvh - 360px);min-height:300px;max-height:none;margin-bottom:8px}

/* parent page fills the screen: card on top, map takes the rest */
body.parent{min-height:100vh;min-height:100dvh}
.parent main{display:flex;flex-direction:column;flex:1;min-height:0}
.parent #mapwrap{flex:1;display:flex;min-height:300px}
.parent #mapwrap[hidden]{display:none}
.parent .map{flex:1;height:auto;min-height:300px;margin:0 0 8px}
.parent .status-card{margin-bottom:10px}
.demobar.min{top:max(16px,env(safe-area-inset-top));bottom:auto}
.hero{width:100%;height:auto;border-radius:12px;display:block;margin:0 0 10px}
.hero-card h1{margin-top:6px}
.brand b{font-size:16px;line-height:1.2}

/* AM | PM switch */
.ampm{display:grid;grid-template-columns:1fr 1fr;gap:6px;background:#efe6d6;padding:5px;border-radius:16px;margin-bottom:10px}
.ampm button{border:0;background:transparent;border-radius:12px;padding:8px 6px;font-size:22px;font-weight:800;color:#6b5a4a;cursor:pointer;min-height:58px;line-height:1.1}
.ampm button small{display:block;font-size:13px;font-weight:600;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ampm button[aria-pressed=true]{background:var(--blue-2);color:#fff;box-shadow:0 2px 8px rgba(90,44,60,.3)}
.ampm button[aria-pressed=true] small{color:var(--gold)}
.pick .same{border-color:var(--gold);background:#fdf8ee}
.pick span small{display:block;font-size:15px;font-weight:600;color:var(--muted)}

/* admin */
.admin-top{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.small-btn{min-height:38px;padding:6px 12px;font-size:14px;border-radius:10px}
.btn.big{min-height:54px;font-size:17px}
.btn.danger{color:#b91c1c;border-color:#fecaca}
.tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
@media (max-width:640px){.tabs{display:grid;grid-template-columns:repeat(3,1fr)}.tabs button{padding:10px 6px;font-size:14px;border-radius:14px}}
.tabs button{flex:none;border:1.5px solid #e2cfae;background:#fff;color:var(--blue);border-radius:999px;padding:10px 16px;font-weight:700;font-size:15px;cursor:pointer;min-height:44px}
.tabs button[aria-pressed=true]{background:var(--blue-2);color:#fff;border-color:var(--blue-2)}
.switch{position:relative;width:58px;height:34px;border-radius:999px;border:0;background:#cbd5e1;cursor:pointer;flex:none;padding:0}
.switch span{position:absolute;top:3px;left:3px;width:28px;height:28px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.3);transition:left .15s}
.switch[aria-checked=true]{background:#16a34a}
.switch[aria-checked=true] span{left:27px}
.master{display:flex;align-items:center;justify-content:space-between;gap:14px;border-left:5px solid var(--gold)}
.toast{position:fixed;left:50%;top:14px;transform:translate(-50%,-160%);opacity:0;visibility:hidden;background:#14532d;color:#fff;padding:10px 16px;border-radius:12px;font-weight:700;z-index:2000;transition:transform .2s;max-width:92vw;text-align:center}
.toast.on{transform:translate(-50%,0);opacity:1;visibility:visible}
.rlist{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}
@media (max-width:400px){.rlist{grid-template-columns:1fr}}
.rcard{margin:0}
.rhead{display:flex;align-items:center;gap:10px}
.rhead .chip{width:44px;height:44px}
.rhead .key{font-size:12px;font-weight:800;background:var(--blue-3);color:var(--blue);border-radius:8px;padding:4px 7px;white-space:nowrap}
.rname{font-weight:700;font-size:18px}
.swatches{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}
.sw{width:34px;height:34px;border-radius:50%;background:var(--c);border:2px solid #cbd5e1;cursor:pointer;padding:0;position:relative}
.sw.on{outline:3px solid var(--blue-2);outline-offset:2px}
.sw.custom{background:conic-gradient(red,yellow,lime,cyan,blue,magenta,red);overflow:hidden;display:inline-block}
.sw.custom input{opacity:0;width:100%;height:100%;cursor:pointer}
.rrow{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}
.rrow label{flex:1;min-width:130px;font-size:13px;font-weight:700;color:var(--muted)}
.rrow .field{margin-top:4px;font-size:16px;min-height:44px;padding:8px 10px}
.rrow2{display:flex;justify-content:space-between;align-items:center;margin-top:12px;gap:8px;flex-wrap:wrap}
.rrow2 .lv{display:flex;align-items:center;gap:8px;font-weight:700}
.grp{display:flex;gap:6px}
.hours-edit .table td{vertical-align:middle}
.hw{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.hw .tm{width:auto;min-height:40px;padding:6px 8px;font-size:15px}
.hw .tm:disabled{opacity:.4}
.scroll-x{overflow-x:auto;-webkit-overflow-scrolling:touch}
.trips td,.trips th{white-space:nowrap}
.avg{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:8px;font-size:15px}
.linkrow{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}
.linkrow b{min-width:90px}
.linkrow code{flex:1;overflow-wrap:anywhere;min-width:180px;font-size:12.5px}
.batt{display:inline-block;min-width:54px;padding:2px 8px;border-radius:8px;font-weight:700;font-size:13px;background:linear-gradient(90deg,#bbf7d0 var(--p),#f1f5f9 var(--p));border:1px solid #cbd5e1}
.kpi b small{font-size:14px;color:var(--muted)}
.login .field{font-size:18px}

.has-demo .brand{padding-right:70px}
@media (min-width:641px){.has-demo .brand{padding-right:0}}
.demobar.min .hide{font-size:12px;padding:5px 10px;min-height:30px}
.days{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.day{border:1px solid var(--line);border-radius:14px;padding:12px;background:#fff}
.day h3{margin:0 0 8px;font-size:17px}
.day.offday{background:#f8fafc}
.hw{display:flex;align-items:center;gap:8px;margin:6px 0;flex-wrap:nowrap}
.hw .lab{width:34px;font-weight:800;color:var(--blue)}
.hw .tm{width:auto;flex:1;min-width:0;min-height:42px;padding:6px 8px;font-size:15px}
.trk{display:grid;gap:10px}
.trkrow{display:flex;align-items:center;gap:12px;flex-wrap:wrap;border:1px solid var(--line);border-radius:14px;padding:12px}
.trkrow .id{flex:1;min-width:150px}
.trkrow .id code{font-size:13px;color:var(--muted);display:block;margin-top:4px}
.trkrow .seen{min-width:110px;font-size:14px}
.trkrow .seen b{display:block}

.hw input[type=time]::-webkit-calendar-picker-indicator{display:none}
@media (max-width:640px){
  .hours-card{padding:12px 8px}
  .day{padding:10px}
  .hw{gap:6px}
  .hw .lab{width:28px}
  .hw .switch{width:48px;height:28px}
  .hw .switch span{width:22px;height:22px}
  .hw .switch[aria-checked=true] span{left:23px}
  .hw .tm{font-size:15px;padding:4px 6px;text-align:center}
}

/* ── parent map screen: everything on ONE phone screen, no page scroll ── */
body.onescreen{height:100vh;height:100dvh;min-height:0;overflow:hidden}
.onescreen .top{padding:6px 12px 7px;padding-top:max(6px,env(safe-area-inset-top));border-bottom-width:2px}
.onescreen .logo{width:32px;height:32px;border-radius:8px}
.onescreen .logo img{width:32px;height:32px}
.onescreen .brand{gap:8px}
.onescreen .brand b{font-size:14.5px;line-height:1.15}
.onescreen .brand small{font-size:11.5px;line-height:1.2}
.onescreen .demobar.min{top:calc(env(safe-area-inset-top) + 8px)}
.onescreen .demobar.min .hide{min-height:26px;padding:3px 9px;font-size:11.5px}
.onescreen main{flex:1;min-height:0;display:flex;flex-direction:column;padding:8px 10px 0;overflow:hidden}
.onescreen #app{flex:none}
.onescreen:not(.maplive) #app{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch}
/* compact AM | PM */
.onescreen .ampm{gap:4px;padding:3px;border-radius:12px;margin-bottom:6px}
.onescreen .ampm button{min-height:38px;padding:4px 8px;border-radius:9px;font-size:16px;display:flex;align-items:baseline;justify-content:center;gap:6px;min-width:0}
.onescreen .ampm button small{display:inline;font-size:13px;margin:0;min-width:0}
/* compact status card: name + updated on one line, street, ETA */
.onescreen .status-card{padding:9px 12px;margin-bottom:6px;border-radius:14px}
.onescreen .status-card .row{gap:10px;align-items:center}
.onescreen .status-card .row .chip{width:40px;height:40px}
.status-card .body{min-width:0;flex:1}
.vhead{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;row-gap:0}
.onescreen .vname{font-size:20px;line-height:1.2;letter-spacing:-.2px}
.onescreen .vupd{font-size:13px;margin:0;gap:5px;font-weight:600;color:var(--muted)}
.onescreen .vupd .pill{font-size:10.5px;padding:1px 6px}
.onescreen .where{font-size:15.5px;margin:2px 0 0;line-height:1.25}
.onescreen .eta-home{font-size:16.5px;margin:2px 0 0;line-height:1.25}
.onescreen .eta-home small{font-size:12px}
.onescreen .status-card .alert{margin-top:4px;padding:6px 8px;font-size:14px}
.onescreen .card.off{padding:14px 14px;margin-bottom:8px}
.onescreen .card.off .vname{font-size:22px}
/* map takes all the room that is left */
.onescreen #mapwrap{flex:1 1 auto;min-height:120px;display:flex}
.onescreen #mapwrap[hidden]{display:none}
.onescreen .map{flex:1;height:auto;min-height:0;margin:0;border-radius:14px}
/* bottom: Change route button + small phone row */
.onescreen .under{flex:none;display:block;padding:7px 0 0;padding-bottom:max(6px,env(safe-area-inset-bottom));font-size:12.5px}
.actions{display:flex;gap:8px}
.route-btn,.addr-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:42px;border-radius:999px;font-weight:800;cursor:pointer;padding:0 14px;white-space:nowrap}
.route-btn{flex:1.35;background:var(--blue);color:var(--gold);border:2px solid var(--gold);font-size:16.5px;box-shadow:0 2px 8px rgba(90,44,60,.28)}
.route-btn:active{background:var(--navy)}
.addr-btn{flex:1;background:#fff;color:var(--blue);border:2px solid var(--gold);font-size:14.5px}
.phones{margin:6px 0 0;text-align:center;color:var(--muted);font-size:12.5px;line-height:1.35;display:flex;flex-wrap:wrap;justify-content:center;align-items:baseline;column-gap:5px}
.phones a{color:var(--blue-2);font-weight:700;text-decoration:none}
.phones .soon{font-weight:600;color:#7a6a58}
@media (max-width:380px){
  .route-btn{font-size:15.5px;padding:0 10px}
  .addr-btn{font-size:13.5px;padding:0 10px}
  .phones{font-size:12px}
  .onescreen .vname{font-size:18.5px}
  .onescreen .vhead{gap:6px}
  .onescreen .vupd{font-size:12px;gap:4px}
  .onescreen .vupd .dot{width:8px;height:8px}
  .onescreen .vupd .pill{font-size:10px;padding:0 5px}
}


/* ══ Professional theme (Oct 28): neutral surfaces, dark text, thin borders.
   The maroon header stays exactly as it was; maroon is only a small accent below it. ══ */
:root{
  --ink:#1f2328; --ink-2:#111827; --muted:#6b7280; --line:#e5e7eb; --line-2:#d1d5db;
  --bg:#f5f6f8; --card:#fff; --accent:#5a2c3c; --charcoal:#1f2328;
  --radius:10px; --shadow:0 1px 2px rgba(16,24,40,.06);
}
body{background:var(--bg);color:var(--ink)}
a{color:var(--accent)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}
h1{font-size:22px;font-weight:700;letter-spacing:-.2px}
h2{font-size:17px;font-weight:700}
.card{border-radius:var(--radius);border:1px solid var(--line);box-shadow:var(--shadow)}
.lead{color:var(--muted);font-size:15px}

/* buttons: charcoal primary, white secondary, 8px radius, no pills */
.btn{background:var(--charcoal);color:#fff;border:1px solid var(--charcoal);border-radius:8px;font-weight:600;min-height:44px;padding:10px 16px;box-shadow:none}
.btn:hover{background:var(--ink-2)}
.btn.ghost{background:#fff;color:var(--ink);border:1px solid var(--line-2)}
.btn.ghost:hover{background:#f9fafb}
.btn.danger{color:#b42318;border-color:var(--line-2)}
.btn.big{min-height:46px;font-size:16px}
.small-btn{min-height:36px;padding:6px 12px;font-size:14px;border-radius:8px}
.field{border:1px solid var(--line-2);border-radius:8px;font-size:16px;min-height:44px}
.field:focus{border-color:var(--ink);outline:none;box-shadow:0 0 0 3px rgba(31,35,40,.08)}
label.lbl{font-weight:600;font-size:14px;color:var(--ink)}
.change-stop,.demo-link{color:var(--ink);font-weight:600}
.back{color:var(--ink);font-size:16px;font-weight:600}

/* pills: quiet labels, not candy */
.pill{border-radius:6px;font-weight:600;font-size:12px;padding:2px 8px;background:#f3f4f6;color:#374151;border:1px solid var(--line)}
.pill.demo{background:#f3f4f6;color:#4b5563;border-color:var(--line)}
.pill.off{background:#f3f4f6;color:#4b5563}
.pill.ok{background:#ecfdf3;color:#067647;border-color:#d1fadf}
.pill.warn{background:#fffaeb;color:#b54708;border-color:#fef0c7}

/* route color: a small icon only */
.chip{box-shadow:inset 0 0 0 1px rgba(0,0,0,.10)}

/* demo controls: charcoal, neutral */
.demobar{background:#1f2328;color:#e5e7eb}
.demobar b{color:#9ca3af}
.demobar button{background:#2d333b;color:#e5e7eb;border:1px solid #444c56;border-radius:6px}
.demobar button[aria-pressed=true]{background:#fff;color:#111827;border-color:#fff}
.demobar .hide{background:transparent;border-color:transparent}
.demobar.min .hide{background:rgba(255,255,255,.12);color:#fff;border:1px solid rgba(255,255,255,.35);border-radius:6px;opacity:1}

/* route picker + welcome */
.q{font-size:22px;font-weight:700;letter-spacing:-.2px;margin:6px 0 12px}
.hero{border-radius:10px}
.pick{gap:8px}
.pick a,.pick button{border:1px solid var(--line);border-radius:10px;min-height:56px;padding:10px 14px;font-size:17px;font-weight:600;color:var(--ink);box-shadow:var(--shadow);gap:12px}
.pick a:hover,.pick button:hover{border-color:var(--line-2);background:#fafafa}
.pick .chip{width:30px;height:30px}
.pick .same{border-color:var(--line-2);background:#fafafa}
.pick span small{font-size:14px;font-weight:500}
.pick .num{background:#f3f4f6;color:#374151;border-radius:8px}
.routes .route-btn{border:1px solid var(--line);border-radius:10px;font-weight:600;box-shadow:var(--shadow)}

/* AM | PM: neutral segmented control, labels centered both ways */
.ampm{background:#eceef1;border-radius:10px;padding:3px;gap:3px}
.ampm button{display:flex;align-items:center;justify-content:center;text-align:center;gap:6px;border-radius:8px;color:#4b5563;font-size:15px;font-weight:600;line-height:1;padding:0 8px;min-width:0}
.ampm button small{display:inline-block;margin:0;font-size:13px;font-weight:500;color:#6b7280;line-height:1;min-width:0}
.ampm button[aria-pressed=true]{background:#fff;color:var(--ink-2);box-shadow:0 1px 2px rgba(16,24,40,.12),0 0 0 1px rgba(16,24,40,.04)}
.ampm button[aria-pressed=true] small{color:#4b5563}
.onescreen .ampm{border-radius:10px;padding:3px;gap:3px}
.onescreen .ampm button{min-height:36px;padding:0 8px;border-radius:8px;font-size:15px;align-items:center;gap:6px}
.onescreen .ampm button small{display:inline-block;font-size:13px}

/* status card */
.onescreen .status-card{border-radius:10px;padding:9px 12px}
.onescreen .status-card .row .chip{width:34px;height:34px}
.onescreen .vname{font-size:18px;font-weight:700;color:var(--ink-2);letter-spacing:-.1px}
.onescreen .vupd{font-size:13px;font-weight:400;color:var(--muted)}
.onescreen .where{font-size:15px;color:var(--ink);font-weight:400}
.eta-home,.onescreen .eta-home{font-size:13px;font-weight:400;color:var(--muted);margin:1px 0 0;line-height:1.3}
.onescreen .eta-home small{font-size:13px;color:var(--muted)}
.status-card.is-stale{border-color:#fedf89}
.onescreen .map{border-radius:10px;border:1px solid var(--line)}

/* bottom actions: classy, quiet */
.route-btn,.addr-btn{border-radius:8px;min-height:42px;font-weight:600;box-shadow:none}
.route-btn{background:var(--charcoal);color:#fff;border:1px solid var(--charcoal);font-size:15px}
.route-btn:hover{background:var(--ink-2)}
.route-btn:active{background:#000}
.addr-btn{background:#fff;color:var(--ink);border:1px solid var(--line-2);font-size:15px}
.addr-btn:active{background:#f3f4f6}
.phones{color:var(--muted);font-size:12px}
.phones a{color:var(--ink);font-weight:600}
.phones .soon{color:var(--muted);font-weight:400}
@media (max-width:380px){
  .route-btn,.addr-btn{font-size:14px;padding:0 10px}
  .onescreen .vname{font-size:17px}
  .phones{font-size:11.5px}
}

/* admin: standard dashboard */
.admin-top h1{font-size:22px;font-weight:700}
.tabs{display:flex;flex-wrap:nowrap;gap:0;overflow-x:auto;-webkit-overflow-scrolling:touch;border-bottom:1px solid var(--line);margin-bottom:14px;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tabs button,.tabs button[aria-pressed]{flex:none;background:none;border:0;border-bottom:2px solid transparent;border-radius:0;color:var(--muted);font-weight:600;font-size:14px;padding:10px 12px;min-height:40px;margin-bottom:-1px;white-space:nowrap}
.tabs button:hover{color:var(--ink)}
.tabs button[aria-pressed=true]{background:none;color:var(--ink-2);border-bottom-color:var(--accent)}
@media (max-width:640px){.tabs{display:flex;grid-template-columns:none}.tabs button{padding:10px 10px;font-size:14px;border-radius:0}}
.kpi{border-radius:10px;box-shadow:var(--shadow);border:1px solid var(--line)}
.kpi b{font-size:22px;font-weight:700;color:var(--ink-2)}
.kpi span{font-weight:500;color:var(--muted)}
.table th{font-weight:600;letter-spacing:.3px;color:var(--muted)}
.vcell{font-weight:600}
.vcell .chip{width:22px;height:22px}
.master{border-left:3px solid var(--accent)}
.switch{width:44px;height:26px;background:#d0d5dd}
.switch span{top:3px;left:3px;width:20px;height:20px;box-shadow:0 1px 2px rgba(0,0,0,.25)}
.switch[aria-checked=true]{background:#15803d}
.switch[aria-checked=true] span{left:21px}
.hw .switch{width:44px;height:26px}
.hw .switch span{width:20px;height:20px}
.hw .switch[aria-checked=true] span{left:21px}
.rhead .chip{width:28px;height:28px}
.rhead .key{background:#f3f4f6;color:#374151;border:1px solid var(--line);border-radius:6px;font-weight:600}
.sw{width:24px;height:24px;border:1px solid rgba(0,0,0,.15)}
.sw.on{outline:2px solid var(--ink);outline-offset:2px}
.day,.trkrow{border-radius:10px;border-color:var(--line)}
.day.offday{background:#fafafa}
.hw .lab{color:#374151;font-weight:700}
.batt{border-radius:6px;font-weight:600;background:linear-gradient(90deg,#dcfae6 var(--p),#f3f4f6 var(--p));border:1px solid var(--line-2)}
.toast{background:#1f2328;border-radius:8px;font-weight:600}
.linkrow{border-color:var(--line)}
.rrow label{font-weight:600}
.off .ico{background:#f3f4f6;color:#4b5563;border-radius:12px}
.install .logo{background:#f3f4f6}

/* fixes + add-ons (Oct 28) */
.under[hidden]{display:none!important}
.phones{flex-direction:column;align-items:center;row-gap:0;margin-top:5px}
.phones .sep{display:none}
.actions.three{display:grid;grid-template-columns:1.25fr 1fr 1fr;gap:6px}
.actions.three .route-btn,.actions.three .addr-btn{flex-direction:column;gap:2px;min-height:48px;padding:4px 4px;font-size:13px;line-height:1.1;white-space:nowrap}
.actions.three svg{width:17px;height:17px}
.notice{background:#f9fafb;border:1px solid var(--line-2);border-left:3px solid var(--accent);border-radius:8px;padding:10px 12px;font-size:14.5px;color:var(--ink);margin:0 0 12px;font-weight:600}
/* install sheet */
.sheet-wrap{position:fixed;inset:0;z-index:3000;background:rgba(17,24,39,.45);display:flex;align-items:flex-end;justify-content:center;padding:12px;padding-bottom:max(12px,env(safe-area-inset-bottom))}
@media (min-width:641px){.sheet-wrap{align-items:center}}
.sheet{background:#fff;border-radius:12px;max-width:420px;width:100%;padding:18px 16px 16px;box-shadow:0 10px 40px rgba(0,0,0,.25);max-height:calc(100dvh - 24px);overflow:auto}
.sheet-head{display:flex;gap:12px;align-items:center;margin-bottom:12px}
.sheet-head img{border-radius:9px;flex:none}
.sheet-head h2{font-size:17px;margin:0;color:var(--ink-2)}
.sheet-head p{margin:2px 0 0;font-size:13.5px;color:var(--muted)}
.steps{list-style:none;margin:0 0 10px;padding:0;display:grid;gap:8px}
.steps li{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:15px;line-height:1.4;color:var(--ink)}
.steps .n{width:22px;height:22px;border-radius:50%;background:#f3f4f6;color:#374151;font-weight:700;font-size:12.5px;display:grid;place-items:center;flex:none;margin-top:1px}
.steps svg{vertical-align:-4px;color:#0a84ff}
.sheet-note{background:#fffaeb;border:1px solid #fef0c7;border-radius:8px;padding:10px 12px;font-size:14px;color:#7a2e0e;margin-bottom:10px;line-height:1.4}
.sheet-small{font-size:13px;color:var(--muted);margin:0 0 12px}
/* admin: share app link */
.share-card{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap}
.share-card .info{flex:1;min-width:220px}
.share-card h2{margin:0 0 4px}
.share-card code{display:block;background:#f9fafb;border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:12.5px;overflow-wrap:anywhere;margin:8px 0}
.share-actions{display:flex;gap:6px;flex-wrap:wrap}
.qr{flex:none;text-align:center}
.qr canvas{display:block;width:128px;height:128px;border:1px solid var(--line);border-radius:8px;padding:6px;background:#fff;image-rendering:pixelated}
.qr .small-btn{margin-top:6px}
.splash{display:flex;flex-direction:column;align-items:center;gap:6px;width:100%;max-width:620px;margin:8px auto 0;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);padding:12px 12px 18px;cursor:pointer;font:inherit;color:var(--ink);animation:fadein .25s ease-out}
.splash .hero{margin:0 0 6px}
.splash-t{font-size:22px;font-weight:700;color:var(--ink-2)}
.splash-s{font-size:14px;color:var(--muted)}
@keyframes fadein{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.splash{animation:none}}

/* ── route list (main screen) + map back bar + subtle tools (Oct 28, add-on 5) ── */
.listview main{padding:10px 12px 0;display:flex;flex-direction:column}
.list-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin:2px 2px 8px}
.list-t{font-size:20px;font-weight:700;margin:0;color:var(--ink-2)}
.list-s{font-size:12.5px;color:var(--muted)}
.rlist2{background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);overflow:hidden}
.ritem{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:#fff;border:0;border-bottom:1px solid var(--line);padding:11px 12px;min-height:60px;cursor:pointer;font:inherit;color:var(--ink)}
.ritem:last-child{border-bottom:0}
.ritem:hover{background:#fafafa}
.ritem:active{background:#f3f4f6}
.ritem .chip{width:30px;height:30px}
.rtext{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.rname2{font-size:16px;font-weight:600;color:var(--ink-2);display:flex;align-items:center;gap:8px}
.rstat{font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:6px}
.ritem.run .rstat{color:#374151}
.rstat.warn{color:#b54708}
.live-dot{width:7px;height:7px;border-radius:50%;background:#16a34a;flex:none;display:inline-block}
.rstat.warn .live-dot{background:#f59e0b}
.tag-last{font-size:11px;font-weight:600;color:#4b5563;background:#f3f4f6;border:1px solid var(--line);border-radius:5px;padding:0 6px;line-height:18px}
.chev{color:#9ca3af;flex:none}
.note{display:flex;gap:10px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:8px;font-size:14px;color:var(--ink);line-height:1.4}
.note svg{width:20px;height:20px;flex:none;color:#6b7280;margin-top:1px}
.note .demo-link{background:none;border:0;padding:4px 0 0;font:inherit;font-size:13.5px;text-decoration:underline;cursor:pointer}
.list-tools{padding:10px 0 max(8px,env(safe-area-inset-bottom))}
.tools{display:flex;justify-content:center;gap:8px;flex-wrap:wrap}
.tool{display:inline-flex;align-items:center;gap:6px;background:transparent;border:1px solid var(--line-2);border-radius:8px;color:#4b5563;font:inherit;font-size:13px;font-weight:500;min-height:32px;padding:0 10px;cursor:pointer;white-space:nowrap}
.tool:hover{background:#fff;color:var(--ink)}
.tool svg{width:15px;height:15px}
.mapbar{display:flex;align-items:center;margin:0 0 6px}
.allroutes{display:inline-flex;align-items:center;gap:2px;background:none;border:0;padding:4px 6px 4px 0;font:inherit;font-size:15px;font-weight:600;color:var(--ink);cursor:pointer;min-height:32px}
.allroutes svg{width:18px;height:18px;margin-left:-3px}
.back{display:inline-flex;align-items:center;gap:2px}
.back svg{margin-left:-4px}
.onescreen .under .tools{margin:0}
.onescreen .under .phones{margin-top:5px}
/* address suggestions */
.ac{position:relative}
.ac-list{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:50;list-style:none;margin:0;padding:4px 0;background:#fff;border:1px solid var(--line-2);border-radius:8px;box-shadow:0 8px 24px rgba(16,24,40,.12);max-height:260px;overflow:auto}
.ac-list li{display:flex;flex-direction:column;padding:9px 12px;cursor:pointer;line-height:1.3}
.ac-list li b{font-weight:600;font-size:15px;color:var(--ink-2)}
.ac-list li span{font-size:13px;color:var(--muted)}
.ac-list li[aria-selected=true],.ac-list li:hover{background:#f3f4f6}

/* Privacy & Text Terms link + page */
.phones a.legal-link,.legal-gate a.legal-link{font-weight:400;color:var(--muted);text-decoration:underline;text-underline-offset:2px}
.legal-gate{text-align:center;margin:12px 0 0}
.legal-page{padding-bottom:40px}
.legal-page ul.plain{margin:0;padding-left:20px;list-style:disc}
.legal-page ul.plain li{margin:0 0 8px;padding:0;background:none;border:0;display:list-item}

/* Privacy page: fine-print / terms-and-conditions style */
.legal-page{font-size:12.5px;line-height:1.45;color:#6b6b6b;max-width:640px;padding-top:6px}
.legal-page h1{font-size:17px;line-height:1.3;margin:14px 0 2px;color:#3a3a3a;font-weight:700;letter-spacing:0}
.legal-page .lead{font-size:13px;margin:0 0 2px;color:#6b6b6b}
.legal-page .small{font-size:11.5px}
.legal-page .card{background:none;border:0;box-shadow:none;border-radius:0;padding:0;margin:0 0 12px}
.legal-page h2{font-size:14px;line-height:1.3;font-weight:700;color:#3a3a3a;margin:0 0 4px}
.legal-page p{margin:0 0 6px}
.legal-page ul.plain{padding-left:18px}
.legal-page ul.plain li{margin:0 0 3px}
.legal-page b{color:#4a4a4a;font-weight:600}
.legal-page a{color:inherit;text-decoration:underline;text-underline-offset:2px}

/* public opt-in / call-to-action page (/text) */
.text-page{max-width:640px;padding-top:10px;padding-bottom:40px;font-size:16px;line-height:1.5;color:#2f2f2f}
.text-page .eyebrow{font-size:13px;color:#6b6b6b;margin:14px 0 2px}
.text-page h1{font-size:22px;line-height:1.25;margin:0 0 12px;color:#2a2a2a}
.text-page p{margin:0 0 12px}
.text-page a{color:var(--maroon,#5a2c3c)}
.text-page .consent-box{border:2px solid #5a2c3c;border-radius:10px;background:#fbf7f8;padding:14px 16px;margin:16px 0;font-size:15px;color:#2a2a2a}
.text-page .consent-box p{margin:0}
.text-page .text-links{font-size:15px}
.text-page .org{font-size:13px;margin-top:18px}

/* call/text instructions (Nov 1): keypad label in the route list, clearer footer, Text & Call page sections */
.rkey{font-size:12.5px;color:var(--muted);line-height:1.2}
.phones .track-line{font-size:13.5px;font-weight:600;color:var(--ink)}
.phones .track-line a{font-size:15px;font-weight:700;color:var(--ink)}
.phones .office-line{font-size:12px;color:var(--muted);margin-top:2px}
.phones .office-line a{font-weight:500;color:var(--muted)}
.phones .foot-links{margin-top:3px}
.phones .foot-links .sep{display:inline;margin:0 5px}
.text-page .howto{border:1px solid var(--line,#e5e7eb);border-radius:10px;background:#fff;padding:14px 16px;margin:16px 0}
.text-page .howto h2{font-size:14px;letter-spacing:.06em;text-transform:uppercase;color:var(--maroon,#5a2c3c);margin:0 0 8px}
.text-page .howto p{margin:0 0 6px}
.text-page .howto-num{font-size:26px;font-weight:700;letter-spacing:.01em;margin:2px 0 10px!important}
.text-page .howto-num a{text-decoration:none}
.text-page .howto ul{list-style:none;padding:0;margin:0 0 8px}
.text-page .howto-examples li{display:inline-block;margin:0 10px 4px 0;padding:2px 10px;border:1px solid var(--line,#e5e7eb);border-radius:6px;background:#fafafa;font-size:15px}
.text-page .howto-keys li{padding:3px 0;font-size:16px}
.text-page .howto-keys b{display:inline-block;min-width:1.4em;font-size:17px}
.text-page .consent-box{border:1px solid #d9c9ce;border-width:1px;background:#fbf7f8;padding:10px 12px;font-size:13.5px;color:#4a4a4a}
