:root{--bg:#f5f6f8;--panel:#fff;--ink:#1c2430;--muted:#6b7686;--line:#dfe3ea;--accent:#2a6f97;--accent-ink:#fff;
--ok:#2e7d4f;--okbg:#e3f3ea;--warn:#a05a00;--warnbg:#fff1d6;--bad:#b3261e;--badbg:#fde6e4;--weekend:#eef0f4;--leave:#fbf3e4;--hl:#e8f1f8}
@media (prefers-color-scheme:dark){:root{--bg:#12161c;--panel:#1b212a;--ink:#e6eaf0;--muted:#93a0b2;--line:#2c3541;--accent:#5aa9d6;--accent-ink:#0c1218;
--ok:#6cc392;--okbg:#17332470;--warn:#e5ad4f;--warnbg:#3a2d12;--bad:#f08a82;--badbg:#3d1b19;--weekend:#171c23;--leave:#262219;--hl:#1e2f3d}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
.top{display:flex;align-items:center;gap:24px;padding:0 20px;height:52px;background:var(--panel);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}
.brand{font-weight:700;font-size:17px;color:var(--ink);text-decoration:none}
nav a{color:var(--muted);text-decoration:none;padding:15px 12px;display:inline-block;font-weight:500}
nav a.on{color:var(--accent);box-shadow:inset 0 -2px var(--accent)}
main{padding:20px;max-width:1500px;margin:0 auto}
h1{font-size:22px;margin:0 0 14px}h2{font-size:16px;margin:0 0 10px}
.muted{color:var(--muted)}
.row{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end}
.spacer{flex:1}
.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px;margin-bottom:16px}
label.f{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--muted);font-weight:500}
input,select,textarea,button{font:inherit;color:var(--ink)}
input[type=text],input[type=month],input[type=date],select,textarea{background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:6px 8px;min-width:0}
input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}
button,.btn{background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:6px 12px;cursor:pointer;text-decoration:none;display:inline-block}
button:hover{background:var(--hl)}
button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}
button.danger{color:var(--bad)}
button:disabled{opacity:.5;cursor:default}
table.list{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--line);border-radius:10px;overflow:hidden}
table.list th,table.list td{padding:8px 12px;text-align:left;border-bottom:1px solid var(--line)}
table.list th{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;background:var(--bg)}
table.list tr.click{cursor:pointer}table.list tr.click:hover td{background:var(--hl)}
td.n,th.n{text-align:right;font-variant-numeric:tabular-nums}
.badge{display:inline-block;padding:2px 9px;border-radius:99px;font-size:12px;font-weight:600;background:var(--weekend);color:var(--muted)}
.badge.submitted{background:var(--warnbg);color:var(--warn)}.badge.site_approved{background:var(--hl);color:var(--accent)}.badge.approved{background:var(--okbg);color:var(--ok)}
/* sheet */
.sheetbar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:12px}
.steps{display:flex;list-style:none;margin:0;padding:0;gap:4px;font-size:12px}
.steps li{padding:3px 10px;border-radius:99px;background:var(--weekend);color:var(--muted)}
.steps li.done{background:var(--okbg);color:var(--ok)}.steps li.now{background:var(--accent);color:var(--accent-ink);font-weight:600}
.card.slim{padding:10px 14px;margin-bottom:10px}.card.slim summary{cursor:pointer;font-weight:600}
.sheethead{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;align-items:end;margin-top:12px}
.sheethead input[type=text]{width:100%}
.chk{display:flex;gap:6px;align-items:center;font-size:13px}
.toolbar{display:flex;gap:8px;align-items:center;margin-bottom:8px;flex-wrap:wrap}
.attn{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.okpill,.warnpill,.badpill{padding:3px 10px;border-radius:99px;font-size:12px;font-weight:600}
.okpill{background:var(--okbg);color:var(--ok)}.warnpill{background:var(--warnbg);color:var(--warn)}.badpill{background:var(--badbg);color:var(--bad)}
.gridwrap{overflow:auto;border:1px solid var(--line);border-radius:10px;background:var(--panel);max-height:calc(100vh - 230px)}
table.grid{border-collapse:separate;border-spacing:0;font-size:13px;width:max-content;min-width:100%}
table.grid td,table.grid th{border-bottom:1px solid var(--line);border-right:1px solid var(--line);padding:0;text-align:center}
table.grid thead th{position:sticky;top:0;z-index:5;background:var(--bg);padding:6px 6px 4px;vertical-align:top;min-width:92px;border-top:4px solid var(--c,var(--line))}
table.grid thead th.corner{left:0;z-index:7;min-width:92px;border-top-color:var(--line)}
th.addcol{min-width:110px!important;border-top-color:var(--line)!important}
.ch .code{font-weight:700;font-size:13px}.ch .nm{font-size:12px;max-width:110px;margin:0 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ch .pc{font-size:11px;color:var(--muted);font-weight:400}
.ch .tools{height:20px;display:flex;justify-content:center;gap:2px;opacity:0;transition:opacity .15s}.ch:hover .tools,.ch:focus-within .tools{opacity:1}
button.mini{border:0;background:transparent;padding:0 5px;font-size:13px;line-height:18px;border-radius:4px;color:var(--muted)}button.mini:hover{background:var(--hl);color:var(--accent)}
th.day{position:sticky;left:0;z-index:2;background:var(--panel);text-align:left!important;padding:0 8px!important;min-width:92px;white-space:nowrap;border-right:2px solid var(--line)!important;font-weight:500}
th.day .dn{display:inline-block;width:38px;color:var(--muted);font-size:12px}th.day .dd{font-weight:700}
th.day .cp{opacity:0;margin-left:2px}tr:hover th.day .cp{opacity:1}
tr.we th.day,tr.we td{background:var(--weekend)}tr.out{opacity:.4}
tr.wk th.day,tr.wk td,tr.mo th.day,tr.mo td{background:var(--hl);font-weight:700;padding:5px 4px}
tr.mo th.day,tr.mo td{border-top:2px solid var(--line)}
td.ok,.ok{color:var(--ok)}td.bad{color:var(--bad)}
tr.flash th.day,tr.flash td{animation:fl 1.4s}@keyframes fl{0%,60%{background:var(--warnbg)}}
td.c{padding:3px!important;min-width:92px}
button.cell{width:100%;height:36px;border:1px dashed transparent;border-radius:7px;background:transparent;cursor:pointer;position:relative;display:flex;align-items:center;justify-content:center;gap:2px;padding:0}
button.cell .plus{color:transparent;font-size:18px;font-weight:300}
tr:hover button.cell:not(:disabled) .plus{color:var(--line)}button.cell:not(:disabled):hover{border-color:var(--c);background:color-mix(in srgb,var(--c) 8%,transparent)}
button.cell:hover .plus{color:var(--c)!important}
button.cell:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
button.cell:disabled{cursor:default}
button.cell.has{background:color-mix(in srgb,var(--c) 24%,var(--panel));border:1px solid var(--c);border-style:solid}
button.cell .v{font-size:15px;min-width:24px}
button.cell .step{width:18px;height:22px;line-height:20px;border-radius:5px;color:var(--muted);opacity:0;font-size:15px}
button.cell:hover .step,button.cell:focus-visible .step{opacity:1}.step:hover{background:var(--panel);color:var(--ink)}
button.cell small{position:absolute;bottom:0;left:0;right:0;font-size:9px;line-height:10px;color:var(--muted);text-align:center;pointer-events:none}
button.cell.has:has(small){padding-bottom:6px}
td.dt{min-width:84px;position:sticky;right:0;background:var(--panel);border-left:2px solid var(--line);font-variant-numeric:tabular-nums}
td.dt .bar{display:block;height:4px;background:var(--weekend);margin:2px 8px 0;border-radius:2px;overflow:hidden}td.dt .bar i{display:block;height:100%;background:var(--muted)}
td.dt.ok{background:var(--okbg)}td.dt.ok .bar i{background:var(--ok)}td.dt.warn{background:var(--warnbg);color:var(--warn)}td.dt.warn .bar i{background:var(--warn)}td.dt.bad{background:var(--badbg);color:var(--bad)}td.dt.bad .bar i{background:var(--bad)}
.legend{font-size:12px;color:var(--muted);margin:8px 2px}.sw{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px}
.sigs{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:16px}
.sig{border-top:2px solid var(--ink);padding-top:6px;min-height:70px}.sig .who{font-style:italic;font-family:Georgia,serif;font-size:17px}
.savestate{font-size:12px;color:var(--muted)}
/* tooltip + popovers */
#tip{position:fixed;display:none;z-index:200;background:#1c2430;color:#fff;font-size:12px;line-height:1.35;padding:6px 9px;border-radius:6px;max-width:260px;pointer-events:none;box-shadow:0 4px 14px #0004}
.pop{position:fixed;z-index:100;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px;box-shadow:0 10px 30px #0004;max-height:80vh;overflow:auto}
.cellpop .ph{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;gap:8px}
.tagc{font-size:12px;padding:2px 8px;border-radius:99px;background:color-mix(in srgb,var(--c) 22%,var(--panel));border:1px solid var(--c);max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lbl{font-size:12px;color:var(--muted);margin:10px 0 4px;font-weight:600}.lbl b{color:var(--ink);float:right}
.stepper{display:flex;gap:6px;align-items:center}.stepper input[type=range]{flex:1;accent-color:var(--accent)}.stepper input[type=number]{flex:1;text-align:center}
.stepper button{width:40px;padding:6px 0;font-weight:700}
.ticks{display:flex;justify-content:space-between;font-size:10px;color:var(--muted);padding:0 46px}
.dayline{margin:8px 0 2px;font-size:12px}
button.link{border:0;background:none;color:var(--accent);padding:2px 0;font-size:12px;text-decoration:underline}
.seg{display:flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}.seg button{flex:1;border:0;border-radius:0;border-right:1px solid var(--line);padding:6px 0}.seg button:last-child{border:0}
.seg button.on{background:var(--accent);color:var(--accent-ink);font-weight:600}
.tabs{display:flex;gap:4px;margin-bottom:10px}.tabs button{flex:1}.tabs button.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.plist{max-height:260px;overflow:auto;margin-top:8px}.pg{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:8px 0 2px}
button.pi{display:block;width:100%;text-align:left;border:0;padding:6px 8px;border-radius:6px;background:transparent}button.pi:hover{background:var(--hl)}
.formcol{display:flex;flex-direction:column;gap:10px}.formcol .f input,.formcol .f select{width:100%}
.helppop ul{padding-left:18px;margin:0;font-size:13px}.helppop li{margin-bottom:6px}
kbd{border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;padding:0 4px;font-size:11px;background:var(--bg)}
button.pen{border:0;background:transparent;font-size:16px;color:var(--muted)}button.pen:hover{color:var(--accent)}
/* analysis */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:16px}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px}
.kpi b{display:block;font-size:26px;font-variant-numeric:tabular-nums}.kpi span{color:var(--muted);font-size:12px}
.charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(460px,1fr));gap:16px}
.chartbox{position:relative;height:320px}
.heat{border-collapse:collapse;font-size:12px}.heat td,.heat th{padding:4px 8px;border:1px solid var(--panel);text-align:center;font-variant-numeric:tabular-nums}
.heat th{font-weight:600;color:var(--muted)}.heat th.l{text-align:left;color:var(--ink)}
.ms{display:flex;gap:6px;flex-wrap:wrap}
.chip{border:1px solid var(--line);border-radius:99px;padding:2px 10px;cursor:pointer;font-size:12px;background:var(--panel);user-select:none}
.chip.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
#toast{position:fixed;bottom:18px;right:18px;background:var(--ink);color:var(--bg);padding:8px 14px;border-radius:8px;opacity:0;transition:.25s;pointer-events:none;z-index:50}
#toast.show{opacity:1}
dialog{border:1px solid var(--line);border-radius:12px;background:var(--panel);color:var(--ink);padding:20px;min-width:340px}
dialog::backdrop{background:#0006}
@media (max-width:700px){main{padding:10px}.charts{grid-template-columns:1fr}.sigs{grid-template-columns:1fr}}

th.totc{position:sticky!important;right:0;z-index:6!important;min-width:84px!important;border-left:2px solid var(--line);border-top-color:var(--line)!important}
td.sp{background:transparent;min-width:20px}tr.we td.sp{background:var(--weekend)}
td.stkr{position:sticky;right:0;border-left:2px solid var(--line);background:var(--hl)}
.stepper button[data-m]{width:52px}
th.ch.lv{min-width:84px!important}

/* notes, overage, details affordances */
button.cell .more{position:absolute;top:0;right:1px;width:18px;height:14px;line-height:12px;font-size:14px;font-weight:700;color:var(--muted);border-radius:4px;opacity:.55}
button.cell .more:hover,button.cell:hover .more{opacity:1;background:var(--panel);color:var(--accent)}
.ndot{position:absolute;top:3px;left:3px;width:7px;height:7px;border-radius:50%;background:var(--accent);pointer-events:none}
button.cell.has.over{background:color-mix(in srgb,var(--bad) 22%,var(--panel));border:2px solid var(--bad)}
button.cell.over .v{color:var(--bad)}
tr.overday th.day{box-shadow:inset 4px 0 var(--bad)}
small.ov{display:block;font-size:10px;line-height:11px;color:var(--bad);font-weight:600}
td.dt.bad b{color:var(--bad)}
.chip.overchip{border-color:var(--bad);color:var(--bad)}
button.mini.nt{opacity:0}tr:hover button.mini.nt,button.mini.nt.has{opacity:1}
.exact{display:flex;align-items:center;gap:8px;margin-top:6px;font-size:12px;color:var(--muted)}.exact input{width:80px;text-align:center}
.sugg{font-size:12px;margin-top:4px}
.notescard textarea{width:100%;margin-top:4px}
.signote{font-size:12px;color:var(--muted);margin-top:2px}
.printonly,.printnotes{display:none}
textarea{font:inherit;resize:vertical}
/* ---- print: A4 landscape, laid out like the original Excel timesheet ---- */
#printroot{display:none}
@page{size:A4 landscape;margin:7mm}
@media print{
  *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  body.print-sheet{background:#fff;color:#000}
  body.print-sheet>*:not(#printroot){display:none!important}
  body.print-sheet #printroot{display:block}
  .pt{font-family:Calibri,Carlito,'Liberation Sans',Arial,sans-serif;font-size:var(--fs);color:#000}
  .pt .ptitle{text-align:center;font-weight:700;font-size:12pt;line-height:1.2;margin-bottom:1.5mm}.pt .ptitle .reg{font-size:10pt}
  .pbox{display:grid;grid-template-columns:19% 1fr 14%;border:1.2px solid #000;height:12mm;font-size:8pt;margin-bottom:1.5mm}
  .pbox>div{padding:1mm 1.5mm;border-right:1px solid #000}.pbox>div:last-child{border:0}.pb1{border-bottom:1px solid #000}
  .pb3 .who{font-style:italic;font-family:Georgia,serif;font-size:10pt;margin-top:2mm}.pb3 .when{font-size:7pt}
  .pinfo{display:grid;grid-template-columns:1.2fr 1fr 1.2fr;font-size:8.5pt;margin-bottom:1mm}.pinfo p{margin:0 0 .6mm}.pinfo u{text-decoration:none;border-bottom:1px solid #000;padding:0 8mm 0 1mm;display:inline-block;min-width:30mm}
  table.ptable{width:100%;table-layout:fixed;border-collapse:collapse;font-size:var(--fs)}
  .ptable th,.ptable td{border:.5px solid #000;padding:0 1px;height:var(--rh);max-height:var(--rh);line-height:calc(var(--rh) - 1px);overflow:hidden;white-space:nowrap;font-size:var(--fs)}
  .ptable thead th{font-weight:400;text-align:center;white-space:normal;line-height:1.05;max-height:none;height:auto;padding:.4mm 0}
  .ptable th.l{text-align:left}.ptable th.sm{font-size:.85em}.ptable th.tot{vertical-align:bottom;font-weight:700}
  .ptable .g{border-left:1.3px solid #000}.ptable .yl,.ptable td.yl{background:#ff0}
  .ptable .sub{font-size:.95em}
  .ptable td.l{text-align:left}.ptable td.r{text-align:right;padding-right:1.2mm}.ptable td.ctr{text-align:center}
  .ptable tr.pwe td{background:#dce6f1}
  .ptable tr.pwk td{background:#bfbfbf;font-weight:700}
  .ptable td.tot{background:#bfbfbf;font-weight:700}
  .ptable tr.plc td{background:#fff;font-size:.95em}.ptable tr.plc td.yl{background:#ff0}
  .ptable tr.pmo td{background:#bfbfbf;font-weight:700;border-top:1.3px solid #000}
  .pexp{margin-top:2mm;border:1px solid #000;padding:1mm 2mm;font-size:8pt}
  .psigs{display:grid;grid-template-columns:repeat(3,1fr);gap:8mm;margin-top:2.5mm;break-inside:avoid}
  .ps .lab{font-weight:700;font-size:6.5pt}.ps .who{font-family:Georgia,serif;font-style:italic;font-size:10pt;min-height:6mm;border-bottom:1px solid #000}.ps .who span{font-size:7pt;font-style:normal;font-family:inherit;margin-left:2mm}
  .ps .sn{font-size:6.5pt;color:#333}
  .pnotes{margin-top:2mm;font-size:7pt}.pnotes h3{margin:0 0 .5mm;font-size:7.5pt}.pnotes p{margin:0}
}
/* ---------------- mobile ---------------- */
#burger{display:none;margin-left:auto;font-size:20px;padding:4px 12px;border:0;background:transparent}
.badge.mobonly{display:none}
.mstrip{margin-bottom:10px}
.wkhead{display:flex;align-items:center;justify-content:space-between;font-size:13px;color:var(--muted);margin-bottom:6px}
.wkhead button{border:0;background:transparent;font-size:24px;padding:0 14px;line-height:1}
.dchips{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.dchip{display:flex;flex-direction:column;align-items:center;gap:1px;padding:6px 0 5px;border-radius:10px;border:1px solid var(--line);background:var(--panel);font-size:11px;color:var(--muted);position:relative}
.dchip b{font-size:16px;color:var(--ink)}.dchip .dot{width:6px;height:6px;border-radius:50%;background:var(--line)}
.dchip.ok .dot{background:var(--ok)}.dchip.warn .dot{background:var(--warn)}.dchip.bad .dot{background:var(--bad)}
.dchip.we{background:var(--weekend)}.dchip.off{opacity:.35}
.dchip.cur{border:2px solid var(--accent);background:var(--hl)}
.mdaycard{padding:14px}
.mdayh{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.mdayh h2{margin:0;font-size:18px}
.mtot{font-size:13px;color:var(--muted);text-align:right}.mtot b{font-size:30px;line-height:1;color:var(--ink)}.mtot.ok b{color:var(--ok)}.mtot.warn b{color:var(--warn)}.mtot.bad b{color:var(--bad)}
.mprog{height:6px;border-radius:3px;background:var(--weekend);margin:8px 0;overflow:hidden}.mprog i{display:block;height:100%;background:var(--muted)}
.mprog.ok i{background:var(--ok)}.mprog.warn i{background:var(--warn)}.mprog.bad i{background:var(--bad)}
.mtools{display:flex;gap:8px;margin:8px 0 4px;flex-wrap:wrap}.mtools button{font-size:13px;padding:8px 12px}.mtools button.hasnote{border-color:var(--accent);color:var(--accent)}
.mgroup{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:14px 0 6px}
.mrow{display:flex;align-items:stretch;gap:6px;margin-bottom:6px;border:1px solid var(--line);border-left:5px solid var(--c);border-radius:10px;background:var(--panel);min-height:54px}
.mrow.has{background:color-mix(in srgb,var(--c) 14%,var(--panel));border-color:var(--c)}
.mrow.over{border-color:var(--bad);background:color-mix(in srgb,var(--bad) 12%,var(--panel))}
.mmain{flex:1;min-width:0;text-align:left;border:0;background:transparent;padding:8px 6px 8px 10px;display:flex;flex-direction:column;justify-content:center;border-radius:0}
.mname{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mname span{color:var(--muted);font-size:12px}.mmain small{color:var(--muted);font-size:11px}
.mstep{display:flex;align-items:center}.mstep button{width:42px;height:42px;font-size:22px;border-radius:50%;padding:0;margin:auto 0}.mstep b{min-width:30px;text-align:center;font-size:17px}
.mplus{width:46px;border:0;background:transparent;font-size:26px;color:var(--c);padding:0}
.micon{width:34px;border:0;background:transparent;font-size:16px;color:var(--muted);padding:0}
.madd{width:100%;margin:6px 0;padding:12px}
.mbar{display:none}
@media (max-width:760px){
  .top{flex-wrap:wrap;height:auto;min-height:52px;gap:0 12px;padding:0 12px}
  .brand{line-height:52px}#burger{display:block}
  #nav{display:none;width:100%;flex-direction:column;border-top:1px solid var(--line);padding:4px 0 8px}
  .top.open #nav{display:flex}
  #nav a{padding:12px 4px;font-size:16px}nav a.on{box-shadow:none;font-weight:700}
  main{padding:12px 12px 90px}
  h1{font-size:19px}
  .hm{display:none!important}
  table.list th,table.list td{padding:10px 8px}
  .row{gap:8px}
  .row>label.f,.row>.f{flex:1 1 140px}
  .charts{grid-template-columns:1fr!important}.chartbox{height:260px}
  .kpis{grid-template-columns:repeat(2,1fr)}
  .sigs{grid-template-columns:1fr}
  .sheethead{grid-template-columns:1fr 1fr}
  .sheetbar .steps{display:none}
  .mbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--panel);border-top:1px solid var(--line);padding:8px 12px calc(8px + env(safe-area-inset-bottom));gap:10px;align-items:center;justify-content:space-between;box-shadow:0 -4px 14px #0002}
  .mbar button{flex:0 0 96px;padding:12px 0;font-size:15px}
  .mbt{flex:1;text-align:center;font-size:13px;color:var(--muted)}.mbt b{font-size:22px;color:var(--ink);margin-right:2px}.mbt span{display:block;font-size:11px}
  .mbt.ok b{color:var(--ok)}.mbt.warn b{color:var(--warn)}.mbt.bad b{color:var(--bad)}
  /* popovers become bottom sheets */
  .pop{left:0!important;right:0!important;top:auto!important;bottom:0!important;width:auto!important;border-radius:16px 16px 0 0;max-height:85vh;padding:16px 16px calc(16px + env(safe-area-inset-bottom));box-shadow:0 -10px 40px #0006}
  .stepper button{height:44px}.seg button{padding:12px 0}
  .stepper input[type=range]{height:34px}
  input,select,textarea{font-size:16px} /* stops iOS zoom-on-focus */
  dialog{min-width:0;width:calc(100vw - 24px);max-height:90vh;overflow:auto}
  #tip{display:none!important}
}
a.btn{color:var(--ink)}

.mtable{margin-top:8px}.mtable th,.mtable td{padding:5px 10px}.mtable tr.totrow td{font-weight:700;background:var(--hl)}
.mtable td.n,.mtable th.n{text-align:right}
