*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
:root{--b:#1c3d7a;--bg:#f4f6fa;--card:#fff;--t:#1a1d24;--m:#6b7280;--r:14px}
html,body{margin:0;background:var(--bg);color:var(--t);font:17px/1.35 -apple-system,system-ui,Segoe UI,Roboto,sans-serif}
#app{max-width:640px;margin:0 auto;padding:calc(env(safe-area-inset-top) + 8px) calc(env(safe-area-inset-right) + 12px) calc(env(safe-area-inset-bottom) + 96px) calc(env(safe-area-inset-left) + 12px)}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
.in{width:100%;font:inherit;font-size:17px;padding:12px;border:1px solid #cfd5e1;border-radius:12px;background:#fff;min-height:48px;color:var(--t)}
.in.big{font-size:20px;min-height:56px}
textarea.in{resize:vertical}
.btn{display:block;width:100%;text-align:center;padding:14px;border-radius:12px;background:#e8ecf4;margin:8px 0;min-height:52px;text-decoration:none;color:var(--t);font-weight:600}
.btn.primary{background:var(--b);color:#fff}.btn.danger{background:#fde8e8;color:#b42318}.btn.big{font-size:19px}
.link{color:var(--b);padding:10px;min-height:44px;font-weight:600}.link.red{color:#b42318}.link.b{font-weight:800}
.muted{color:var(--m)}.pad{padding:16px}.err{color:#b42318;min-height:1.2em;margin:6px 0}
.login{display:flex;flex-direction:column;gap:12px;align-items:stretch;text-align:center;padding-top:10vh}.login img{align-self:center;border-radius:16px}.login h1{margin:0 0 8px}
.top{display:flex;align-items:center;gap:10px;margin-bottom:8px}.top div{flex:1;display:flex;flex-direction:column}.top b{font-size:22px}.top small{color:var(--m);font-size:13px}
.ic{min-width:48px;min-height:48px;font-size:24px;border-radius:12px}
.sync{width:12px;height:12px;border-radius:50%;background:#bbb}.sync.ok{background:#1f9d55}.sync.busy{background:#e8b41a}.sync.off{background:#d64545}
.next{display:flex;flex-direction:column;width:100%;text-align:left;background:var(--card);border-left:6px solid var(--c,#2f6fec);border-radius:var(--r);padding:12px 14px;margin:6px 0 10px;box-shadow:0 1px 3px #0001}
.next small{color:var(--m);font-weight:700;font-size:12px;letter-spacing:.05em}.next b{font-size:19px}.next span{color:var(--m)}.next.none{color:var(--m)}
.who{margin-bottom:8px}
.tabs{display:flex;background:#e3e8f1;border-radius:12px;padding:4px;gap:4px}.tabs button{flex:1;min-height:44px;border-radius:9px;font-weight:600;color:var(--m)}.tabs button.on{background:#fff;color:var(--t);box-shadow:0 1px 2px #0002}
.navr{display:flex;justify-content:space-between;align-items:center;margin:4px 0}
.strip{display:flex;gap:4px;margin-bottom:8px}.sd{flex:1;display:flex;flex-direction:column;align-items:center;padding:6px 0;border-radius:12px;background:var(--card);min-height:64px}
.sd span{font-size:12px;color:var(--m)}.sd b{font-size:19px}.sd i{font-style:normal;color:var(--b);height:12px;line-height:10px}.sd.td b{color:var(--b)}.sd.on{background:var(--b);color:#fff}.sd.on span,.sd.on i{color:#cfe0ff}.sd.on b{color:#fff}
.dh{font-size:20px;margin:10px 2px}.lh{font-size:15px;color:var(--m);margin:14px 2px 6px}
.ev{display:flex;flex-direction:column;width:100%;text-align:left;background:var(--card);border-left:6px solid var(--c);border-radius:var(--r);padding:12px 14px;margin:8px 0;min-height:56px;box-shadow:0 1px 2px #0001}
.ev .t{font-size:14px;color:var(--m);font-weight:600}.ev .ti{font-size:18px;font-weight:600}.ev .loc,.ev .who{font-size:14px;color:var(--m)}
.ev.clash{outline:2px solid #e8811a}.warn{color:#b45309;font-size:14px;font-weight:600}
.empty{width:100%;padding:18px;border:2px dashed #cfd5e1;border-radius:var(--r);color:var(--m);margin:6px 0}.empty.sm{padding:10px}
.wd{margin-bottom:6px}.wdh{font-weight:700;padding:8px 2px;min-height:40px}.wd.td .wdh{color:var(--b)}
.mg{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.mdw{text-align:center;color:var(--m);font-size:12px}
.mc{aspect-ratio:1;background:var(--card);border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:600}
.mc i{font-style:normal;font-size:11px;background:var(--b);color:#fff;border-radius:8px;padding:0 6px;margin-top:2px}.mc.out{opacity:.4}.mc.td{color:var(--b)}.mc.on{outline:2px solid var(--b)}
.sheet{background:var(--card);border-radius:var(--r);padding:12px 14px;margin-top:16px;box-shadow:0 1px 2px #0001}.sheet h3{margin:0 0 6px;font-size:17px}.sheet h3 span{font-weight:400;font-size:14px}
.lbl{display:block;font-size:13px;font-weight:700;color:var(--m);margin:10px 0 4px}
.pr{display:flex;gap:6px;margin-bottom:6px}.pr .pp{flex:1}.pr .pq{width:84px}
.fab{position:fixed;right:calc(env(safe-area-inset-right) + 18px);bottom:calc(env(safe-area-inset-bottom) + 18px);width:64px;height:64px;border-radius:50%;background:var(--b);color:#fff;font-size:32px;box-shadow:0 4px 12px #0004}
body.ro .fab{background:#9aa3b2}
.modal{position:fixed;inset:0;background:#0006;display:flex;align-items:flex-end;justify-content:center;z-index:10}
.sheetm{background:var(--bg);width:100%;max-width:640px;max-height:92vh;overflow:auto;border-radius:18px 18px 0 0;padding:8px 16px calc(env(safe-area-inset-bottom) + 16px)}
.mh{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.chip{padding:10px 14px;border-radius:22px;background:#fff;border:1px solid #cfd5e1;min-height:44px;font-weight:600}.chip.on{background:var(--b);color:#fff;border-color:var(--b)}
.row2{display:flex;gap:8px}.row2 label{flex:1;font-size:13px;font-weight:700;color:var(--m)}
details{margin-top:8px}summary{padding:12px 0;font-weight:700;color:var(--b);min-height:44px}
.colors{display:flex;gap:10px}.sw input{display:none}.sw span{display:block;width:36px;height:36px;border-radius:50%;background:var(--c)}.sw input:checked+span{outline:3px solid var(--t);outline-offset:2px}
.person{display:flex;align-items:center;gap:4px;padding:6px 0;border-bottom:1px solid #e3e8f1}.person span{flex:1}
.chk{display:flex;gap:8px;align-items:center;padding:12px 0}
ol{padding-left:22px}li{margin:6px 0}
.whos{display:flex;gap:6px;overflow-x:auto;padding:2px 0 8px;scrollbar-width:none}.whos button{flex:none;padding:10px 14px;min-height:44px;border-radius:22px;background:#fff;border:1px solid #cfd5e1;font-weight:600;white-space:nowrap}.whos button.on{background:var(--b);color:#fff;border-color:var(--b)}
/* v2 layout */
#app{padding-bottom:calc(env(safe-area-inset-bottom) + 150px)}
html.big #app,html.big .sheetm{zoom:1.2}
.top .ic{font-size:18px;font-weight:800}
#upd.offl{color:#b42318;font-weight:700}
.tabbar{position:fixed;left:0;right:0;bottom:0;display:flex;background:#fff;border-top:1px solid #dde3ee;padding-bottom:env(safe-area-inset-bottom);z-index:5}
.tabbar button{flex:1;display:flex;flex-direction:column;align-items:center;padding:8px 0 6px;min-height:60px;font-size:14px;font-weight:700;color:var(--m);position:relative}
.tabbar button span{font-size:22px}.tabbar button.on{color:var(--b)}
.tabbar i{position:absolute;top:4px;left:calc(50% + 8px);background:#d64545;color:#fff;font-style:normal;font-size:12px;border-radius:10px;padding:0 6px;line-height:18px}.tabbar i:empty{display:none}
#addbar{position:fixed;left:0;right:0;bottom:calc(env(safe-area-inset-bottom) + 64px);display:flex;justify-content:center;padding:0 12px 8px;z-index:4;pointer-events:none}
.addjob{pointer-events:auto;width:100%;max-width:616px;min-height:60px;border-radius:16px;background:var(--b);color:#fff;font-size:20px;font-weight:800;box-shadow:0 4px 14px #0003}

.th{display:flex;align-items:center;justify-content:space-between;gap:8px}
.tgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tbtn{background:#fff;border-radius:16px;padding:18px 12px;min-height:92px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;box-shadow:0 1px 3px #0002;text-align:left;border:2px solid transparent}
.tbtn b{font-size:20px}.tbtn small{color:var(--m)}.tbtn.all{grid-column:1/-1;background:var(--b);color:#fff}.tbtn.all small{color:#cfe0ff}
.seg{display:flex;background:#e3e8f1;border-radius:12px;padding:4px;gap:4px;margin:6px 0}.seg button{flex:1;min-height:44px;border-radius:9px;font-weight:700;color:var(--m)}.seg button.on{background:#fff;color:var(--t);box-shadow:0 1px 2px #0002}
.seg.big3 button{min-height:50px;font-size:15px}
.wdh{display:flex;width:100%;justify-content:space-between;font-size:17px}.go{color:var(--m)}
.none{color:var(--m);margin:4px 2px 10px}
.ev{position:relative}.ev .who{font-size:14px;font-weight:800;color:var(--c);text-transform:uppercase;letter-spacing:.03em}
.dot{position:absolute;top:12px;right:12px;width:12px;height:12px;border-radius:50%;background:#d64545}
.saved{font-size:14px;color:#1f9d55;font-weight:700}
.sh{display:flex;justify-content:space-between;align-items:center}
.btn.sm{display:inline-block;width:auto;min-height:44px;padding:10px 14px;margin:4px 0}
.chips.scroll{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.chips.scroll .chip{flex:none}
.chip.other{position:relative;overflow:hidden}.chip.other input{position:absolute;inset:0;opacity:0}
.step{margin-bottom:6px}
.pn{flex:1;text-align:left;display:flex;flex-direction:column;font-size:18px;font-weight:700;min-height:52px}.pn small{color:var(--m);font-weight:400;font-size:13px}
.person{gap:6px}
.pcount{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:8px 2px}.pcount .chip{margin-left:auto}
.prow{display:flex;gap:10px;background:#fff;border-left:6px solid var(--c);border-radius:14px;padding:10px;margin:8px 0;box-shadow:0 1px 2px #0001;position:relative}
.pchk{flex:none}.pchk input{display:none}.pchk span{display:flex;align-items:center;justify-content:center;width:52px;height:52px;border:3px solid #9aa3b2;border-radius:12px;font-size:28px;color:transparent;background:#fff}
.pchk input:checked+span{background:#1f9d55;border-color:#1f9d55;color:#fff}
.pmain{flex:1;min-width:0}.pl1{font-size:15px}.pl2{font-size:17px;font-weight:600;margin-bottom:6px}.pc{min-height:44px;font-size:16px;padding:8px 10px}
.attn{background:#fff4e5;border:2px solid #e8811a;border-radius:14px;padding:10px 12px;margin:6px 0 10px}.attn b{color:#9a3412;display:block;margin-bottom:4px}
.attn button{display:block;width:100%;text-align:left;padding:10px 4px;min-height:44px;border-top:1px solid #f6d7b0;font-weight:600}
.lg{background:#fff;border-radius:12px;padding:10px 12px;margin:6px 0;cursor:pointer}.lg.unseen{font-weight:800;border-left:5px solid #d64545}
.lgh{display:flex;justify-content:space-between;gap:8px}.when{color:var(--m);font-size:14px;font-weight:400;padding:0}
.chg{font-size:15px;color:#374151;margin-top:3px}.chg s{color:#9aa3b2}
#toast{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom) + 140px);transform:translateX(-50%) translateY(20px);background:#1a1d24;color:#fff;padding:12px 18px;border-radius:24px;font-weight:700;opacity:0;transition:.2s;z-index:20;pointer-events:none;max-width:90vw;text-align:center}
#toast.show{opacity:1;transform:translateX(-50%)}
.modal.top{z-index:15}
[hidden]{display:none!important}
.tag{font-style:normal;font-size:13px;font-weight:800;background:#fde047;color:#713f12;border-radius:6px;padding:1px 6px;vertical-align:middle}
.ev.tent{background:#fffbe6}.ev.off{background:#f1f5f9;border-left-color:#64748b}.ev.off .ti{color:#334155}
.chip.tentc.on{background:#fde047;color:#713f12;border-color:#eab308}

/* ===== Art's rule: big + bold everywhere, silky controls ===== */
html{font-size:18px;-webkit-text-size-adjust:100%}
body,input,textarea,select,button{font-size:18px;font-weight:600}
body *{font-weight:inherit}
label,button,.btn,.chip,.seg *,.tab,.tabbar *,.tag,th{font-weight:700}
h1,h2,h3,h4,.title,.hdr,header b{font-weight:800}
small,.sub,.muted,.meta{font-size:16px;font-weight:600}
button,.btn,.chip,a,[role=button],.tab,input,label,select{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
button,.btn,.chip,.tab,[role=button],.card,.tbtn{transition:transform 90ms ease-out,background-color 90ms ease-out,color 90ms ease-out,opacity 150ms ease-out;will-change:transform}
button:active,.btn:active,.chip:active,.tab:active,[role=button]:active,.card:active,.tbtn:active{transform:scale(.97);filter:brightness(.92)}
button[disabled],button.busy{opacity:.6;pointer-events:none}
.tabbar button,.seg button{transition:background-color 180ms ease-out,color 180ms ease-out,transform 90ms ease-out}
input[type=checkbox]{appearance:none;-webkit-appearance:none;position:relative;width:60px;height:36px;min-width:60px;border-radius:18px;background:#c9ced8;transition:background-color 180ms ease-out;cursor:pointer;vertical-align:middle;margin:0;border:0}
input[type=checkbox]::after{content:"";position:absolute;top:3px;left:3px;width:30px;height:30px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.3);transition:transform 180ms ease-out}
input[type=checkbox]:checked{background:#1f9d55}
input[type=checkbox]:checked::after{transform:translateX(24px)}
main,.scroll{-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.card{box-shadow:0 1px 2px rgba(0,0,0,.08)}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}button:active,.btn:active,.chip:active,.card:active{transform:none}}
/* Suggestions */
.sg-pics{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.sg-pics img{width:84px;height:84px;object-fit:cover;border-radius:10px;border:1px solid #d5d9e2}
.sg-th{position:relative}.sg-th button{position:absolute;top:-8px;right:-8px;width:32px;height:32px;border-radius:50%;border:0;background:#b42318;color:#fff;font-weight:800}
.sg-item{background:#fff;border-radius:14px;padding:14px;margin:10px 0;box-shadow:0 1px 2px rgba(0,0,0,.08)}
.sg-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.sg-chip{padding:6px 12px;border-radius:999px;font-weight:800;font-size:16px}
.sg-new{background:#e5e7eb;color:#374151}.sg-work{background:#dbeafe;color:#1d4ed8}.sg-done{background:#16a34a;color:#fff;font-size:18px}.sg-no{background:#fee2e2;color:#991b1b}
.sg-reply{margin-top:8px;padding:10px;border-radius:10px;background:#f3f4f6}
/* Login: name buttons */
.namegrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:100%;margin:12px 0}
.namebtn{min-height:72px;border-radius:16px;border:2px solid #d5d9e2;background:#fff;padding:10px;text-align:left;font-size:20px}
.namebtn b{display:block;font-weight:800}.namebtn small{display:block;color:#1f9d55;font-size:14px;font-weight:700}
.namebtn:first-child{grid-column:1/-1;background:#1e3a7b;color:#fff;border-color:#1e3a7b}.namebtn:first-child small{color:#bfe8cf}
.namebtn.other{grid-column:1/-1;background:#f3f4f6}
.in.pin{font-size:28px;letter-spacing:8px;text-align:center}
/* 📎 (Day view + opened job only) */
.clip{font-style:normal;font-weight:800;font-size:16px;background:#e8edf7;color:#1e3a7b;border-radius:999px;padding:1px 8px;white-space:nowrap;align-self:flex-start}
/* Week: rolling 7 days, compact "Fit week" mode (fits iPhone 13 / Pixel 5 portrait) */
.fitbar{display:flex;gap:8px;justify-content:flex-end;margin:-4px 0 6px}.fitbar .chip{min-height:36px;padding:4px 12px;font-size:15px}
.wfit{display:flex;flex-direction:column;gap:4px}
.wrow{display:flex;align-items:stretch;gap:8px;min-height:48px;width:100%;text-align:left;background:#fff;border:1px solid #dfe3eb;border-radius:12px;padding:4px 8px;font-size:15px;font-weight:700}
.wrow.td{border:2px solid #1e3a7b}
.wdl{display:flex;flex-direction:column;align-items:center;justify-content:center;width:38px;flex:none;line-height:1.05}
.wdl b{font-size:14px;font-weight:800;color:#1e3a7b}.wdl i{font-style:normal;font-size:19px;font-weight:800}
.wjobs{display:flex;flex-direction:column;justify-content:center;min-width:0;flex:1}
.wl{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14.5px;font-weight:700;line-height:1.3}
.wl.open{color:#8a93a3}.wl.more{color:#1e3a7b;font-size:14px}.wl.off{color:#6b7280}.wl.off::before{content:"🚫 "}.wl.tent{background:#fff3c4;border-radius:4px;padding:0 3px}.wl.bad::after{content:" ⚠";color:#b45309}
/* Month: taken days get a big navy X */
.mc.taken{position:relative;color:#1e3a7b}
.mc .mx{font-size:26px;font-weight:900;line-height:1;color:#1e3a7b}
.wnav{gap:2px}.wnav .link{flex:1;font-size:17px;white-space:nowrap;align-self:flex-start}
.fitseg{display:flex;background:#e3e8f1;border-radius:10px;padding:3px;gap:2px;flex:none}
.fitseg .chip{min-height:44px;padding:0 10px;font-size:15px;border:0;background:transparent}.fitseg .chip.on{background:#1e3a7b;color:#fff}
.wfit{gap:3px}.wrow{min-height:44px;padding:2px 8px}
body:has(.wfit) .seg{margin:3px 0}body:has(.wfit) .wnav{margin:0}.wfit{gap:2px}
body:has(.wfit) .addjob{min-height:52px}
.mg{grid-template-columns:repeat(7,minmax(0,1fr))}.mc{min-width:0;padding:0;gap:0}.mc .mx{font-size:24px}
.helpm{padding:0}.helpwrap{position:fixed;inset:0;background:#fff;display:flex;flex-direction:column;z-index:60}
.helpwrap .mh{padding:10px 14px;border-bottom:1px solid #dfe3eb}.helpwrap iframe{flex:1;border:0;width:100%}
.helpbtn{width:100%;margin:4px 0 10px;background:#1e3a7b;color:#fff;min-height:56px;font-size:20px;font-weight:800}
/* 🎤 voice entry */
.vwrap{display:flex;gap:8px;align-items:center;width:100%}.vwrap.ta{align-items:flex-start}.vwrap>input,.vwrap>textarea{flex:1;min-width:0}
.micbtn{flex:none;width:56px;height:56px;border-radius:50%;background:#e8edf7;border:2px solid #1e3a7b;font-size:26px;line-height:1;display:flex;align-items:center;justify-content:center;transition:transform .08s}
.micbtn:active{transform:scale(.92)}
.micbtn.on{background:#dc2626;border-color:#dc2626;animation:micpulse 1.1s ease-out infinite}
@keyframes micpulse{0%{box-shadow:0 0 0 0 #dc262699}100%{box-shadow:0 0 0 16px #dc262600}}
@media (prefers-reduced-motion:reduce){.micbtn.on{animation:none;box-shadow:0 0 0 5px #dc262655}}
.vmsg{font-size:15px;font-weight:700;color:#b91c1c;min-height:0;margin:2px 0}.vmsg:empty{display:none}
.vhint{font-size:13px;font-weight:600;color:#6b7280;margin:2px 0 6px}
.wtag{font-style:normal;font-weight:800;font-size:14px;background:#f59e0b;color:#fff;border-radius:6px;padding:0 5px;margin-right:2px}

/* B18: big-and-bold floor (18px / 600+) for everything except Art's approved compact week (.wfit/.wnav/.fitseg/.fitbar keep 14-15px bold) */
:is(small, label, .lbl, .muted, .pl1, .pl2, .loc, .t, .mdw, .when, h3, textarea, input, select, nav button, nav i, .seg button, main button, main b, header button, header small):not(.wfit *, .wnav *, .fitseg *, .fitbar *, .wfit, .fitseg button, .pinrow *) { font-size: max(18px, 1em) !important; }
:is(small, label, .lbl, .muted, .pl1, .pl2, .loc, .t, .mdw, .when, textarea, input, nav button, .seg button, main b):not(.wfit *, .wnav *, .fitseg *, .fitbar *, .pinrow *) { font-weight: 700 !important; }
.mdw { font-size: 18px !important; }
nav i { min-width: 24px; height: 24px; line-height: 24px; }
.seg{overflow-x:auto;scrollbar-width:none;max-width:100%}.seg::-webkit-scrollbar{display:none}.seg button{flex:1 0 auto;padding:0 10px;white-space:nowrap;align-self:flex-start}
html,body{overflow-x:hidden;max-width:100vw}
.tag,.who{font-size:18px!important;font-weight:700}.wfit .tag,.wfit .who{font-size:inherit!important}
/* B19: press feedback without any movement — colour/shadow only, instant (no transform, so nothing nearby ever shifts) */
button:active,.btn:active,.chip:active,.tab:active,[role=button]:active,.card:active,.tbtn:active,.micbtn:active{transform:none!important;filter:brightness(.85);box-shadow:inset 0 0 0 3px #0003}
button,.btn,.chip,.tab,.card,.tbtn,.seg button,.tabbar button{transition:background-color 120ms ease-out,color 120ms ease-out,filter 0s,box-shadow 0s!important}
.vhint{font-size:18px!important;font-weight:600}
/* Back button: standard nav-bar size, high-contrast pill. #C2410C/#fff = 5.2:1 (WCAG AA); #E8590C/#fff is only 3.6:1 so it fails AA. */
.backbtn{display:inline-flex;align-items:center;gap:2px;background:#C2410C;color:#fff;font-weight:700;font-size:18px !important;line-height:1;min-height:44px;min-width:44px;padding:0 14px 0 10px;border:0;border-radius:22px;box-shadow:0 0 0 2px #fff;cursor:pointer;flex:0 0 auto}
.backbtn:active{background:#9A3412}
.mh .backbtn{margin-right:8px}.mbar{display:flex;align-items:center;margin:0 0 8px}
.top .whoami{font-size:18px;font-weight:700;color:#1c3d7a;background:#e6ecf7;border-radius:999px;padding:1px 8px;margin-left:4px;white-space:nowrap;align-self:flex-start}
.pinrow{display:flex;flex-wrap:nowrap;align-items:center;gap:6px;margin:2px 0 6px;padding:4px 6px 4px 10px;border:1px dashed #b45309;border-radius:10px;background:#fffbeb;font-size:14px}
.pinrow .pl{font-weight:700;white-space:nowrap;flex:none}.pinrow .pl small{font-weight:400;color:#6b7280;font-size:11px}
.pinrow .pv{flex:1;font:600 14px ui-monospace,monospace;letter-spacing:.05em;white-space:nowrap}
.pinrow .btn.sm{margin:0;min-height:36px;min-width:44px;padding:2px 8px;font-size:14px;flex:none}
@media (max-width:360px){.pinrow .pl small{display:none}}
.invl{font-size:14px;margin-left:auto;margin-right:6px;padding:8px 4px;min-height:36px;white-space:nowrap}
.pinrow button.btn.sm{font-size:13px!important;padding:2px 7px!important;min-height:34px!important;min-width:44px;line-height:1.1}
.pinrow .pv{min-width:3.2em}
.wnav .link{min-width:0;overflow:hidden;text-overflow:ellipsis}@media (max-width:380px){.wnav .link{font-size:15px;overflow:visible}.wnav .ic{min-width:34px;width:34px;padding:0}.fitseg .chip{padding:0 7px;font-size:14px}}
.seg{overflow:clip}.seg button{flex:1 1 0;min-width:0;padding:0 6px}
#upd{font-variant-numeric:tabular-nums}
/* B19: "Loading…" → "Up to date · time" must never wrap or resize the header (caused intermittent layout shift on iPhone SE presses) */
header.top>div{min-width:0}header.top small#upd{display:block!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;height:1.35em!important;line-height:1.35em!important;max-width:100%}
/* B18 follow-up: the PIN row was below Art's 18px floor (14px/13px). Big + bold like the rest; wraps on narrow phones. */
.pinrow{flex-wrap:wrap;font-size:18px;row-gap:4px}
.pinrow .pl{font-size:18px;font-weight:700}.pinrow .pv{font:700 18px ui-monospace,monospace}
.pinrow button.btn.sm{font-size:18px!important;font-weight:700;min-height:44px!important;padding:2px 12px!important}
/* Oct 25: Plan period tabs overlapped on phones (flex 1 1 0 + 18px floor squeezed labels into each other). Each tab now keeps its full label; row scrolls sideways if it can't fit. */
.seg.big3{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none}.seg.big3::-webkit-scrollbar{display:none}
.seg.big3 button{flex:1 0 auto;min-width:max-content;padding:0 9px;white-space:nowrap;overflow:visible}

/* Oct 26: Week lists empty days; keep top tabs clear of the iOS status bar in the installed PWA */
.pempty{font-size:14px;color:var(--m);font-style:italic;padding:6px 12px;margin:0 0 4px;border-left:4px solid #dde3ee;border-radius:6px;background:#fff8}
body::before{content:"";position:fixed;top:0;left:0;right:0;height:env(safe-area-inset-top);background:var(--bg);z-index:6;pointer-events:none}
.seg.big3{position:sticky;top:calc(env(safe-area-inset-top) + 4px);z-index:5}
.pslider{display:flex;background:#e3e8f1;border-radius:10px;padding:3px;gap:3px;margin:6px 0}
.pslider button{flex:1 1 0;min-width:0;min-height:44px;border-radius:8px;font-weight:700;font-size:13px;line-height:1.15;color:var(--m);padding:2px 4px;white-space:normal}
.pslider button.on{background:#fff;color:var(--t);box-shadow:0 1px 2px #0002}
.pslider button.on[data-pst=need]{background:#fde8e8;color:#b42318}.pslider button.on[data-pst=ready]{background:#e6f6ec;color:#17803d}
.pup{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}.pup button{flex:1 1 0;min-width:0;min-height:44px;border-radius:10px;background:#eef2fa;border:1px solid #c9d3e6;color:#1c3d7a;font-weight:700;font-size:13px;padding:2px 4px}
.pupmsg{flex-basis:100%;font-size:13px;color:var(--m)}.pupmsg:empty{display:none}
.updbar{position:fixed;left:12px;right:12px;top:calc(env(safe-area-inset-top) + 8px);z-index:30;background:#1c3d7a;color:#fff;font-weight:700;min-height:48px;border-radius:12px;border:0}
.modal .pslider button,dialog .pslider button{font-size:18px;min-height:52px}
.dcard{margin-bottom:10px}.dcard>.ev{margin-bottom:0}.dfx{padding:0 4px 6px}.dfl{list-style:none;margin:0;padding:0}.dfi{display:flex;align-items:center;gap:8px;padding:6px 0;border-top:1px solid #e3e8f2}.dfn{flex:1;min-width:0;overflow-wrap:anywhere;font-size:14px}.dfn small{color:var(--m)}.dfd{min-height:44px;padding:0 12px;border-radius:10px;border:1px solid #c9d3e6;background:#fff;color:#1c3d7a;font-weight:700;white-space:nowrap}

/* Oct 26, 2026: whole UI 20% smaller (Art). Tap targets 44px*0.8 = ~35-36px. */
html{zoom:.8}
html,body{max-width:none}
.pup button,.dfd,.seg button,.pslider button{min-height:46px}
.dfsel{margin-bottom:6px}.dfe{list-style:none;color:var(--m);font-size:15px;padding:4px 0}
/* Oct 26, 2026: Day view fits one iPhone screen (css px here x0.8 = on-screen px) */
#sheet{padding:8px 10px;margin-top:8px}#sheet h3{margin:0 0 2px}
#sheet .lbl{margin:4px 0 2px}
#sheet .porow{display:flex;align-items:center;gap:8px}#sheet .porow .lbl{margin:0;flex:none}#sheet .porow .vwrap{flex:1}
#sheet .in{padding:6px 10px;min-height:46px}#sheet textarea.in{min-height:0;resize:none;overflow:hidden}
#sheet .vwrap{gap:6px}#sheet .micbtn{width:46px;height:46px;min-width:46px;min-height:46px;padding:0;font-size:20px}
#sheet .dfgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:2px}#sheet .dfgrid .lbl{margin:2px 0}
#sheet .dfx .pup{margin:0}#sheet .dfx .pup button{min-height:46px}#sheet .dfe{padding:2px 0}#sheet .dfi{flex-wrap:wrap;gap:4px;padding:4px 0}#sheet .dfd{min-height:46px}
#sheet [data-hist]{min-height:46px;padding:0 4px}
.navr{margin:4px 0}.seg{margin-bottom:4px}
.addjob{min-height:46px;border-radius:12px}
.segrow{gap:6px;margin:0 0 4px}.segrow .seg{flex:1;margin:0}.segrow .backbtn{min-height:46px}
#sheet .sh{display:flex;align-items:center;gap:6px}#sheet .sh h3{flex:1}#sheet .sh [data-hist]{min-height:46px;padding:0 4px;white-space:nowrap}
#sheet .porow{margin-top:4px}#sheet .porow .lbl{width:56px}#sheet .porow.ta{align-items:flex-start}#sheet .porow.ta .lbl{padding-top:10px}
#sheet .dfgrid{margin-top:6px}#sheet .dfx .pup{display:flex;gap:4px;flex-wrap:wrap}#sheet .dfx .pup>button{flex:1 1 0;min-width:0;padding:0 4px}#sheet .dfpaste{flex:0 0 auto!important;padding:0 8px!important}
#sheet .pupmsg{font-size:18px;flex-basis:100%}#sheet .dfe{font-size:18px}
.ev{margin:4px 0;padding:8px 12px}
#sheet .dfn,#sheet .dfn small{font-size:18px}#sheet .dfi .dfd{min-height:46px}
#sheet .dfi{display:grid;grid-template-columns:1fr;gap:2px}#sheet .dfn{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#sheet .dfi1{list-style:none;margin-top:4px}#sheet .dfd1{width:100%;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:18px}
/* v44: File upload + Paste on one row, share icon, viewer */
#sheet .dfx[data-dfx="invoice"] .pup{display:flex;gap:6px;flex-wrap:nowrap}
#sheet .dfx[data-dfx="invoice"] .pup [data-upk]{flex:1 1 55%;min-height:44px;white-space:normal;line-height:1.1}
#sheet .dfpaste{flex:1 1 45%;min-height:44px;font-weight:700;background:#1e3a7a;color:#fff;border-radius:10px;border:0}
.dfi1{display:flex;gap:6px;align-items:stretch}.dfi1 .dfd1{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dfsh{min-width:44px;min-height:44px;border-radius:10px;border:1px solid #c9d3e6;background:#fff;font-size:20px}
.dfview{position:fixed;inset:0;z-index:9999;background:#fff;display:flex;flex-direction:column}
.dfvh{display:flex;align-items:center;gap:8px;padding:8px;padding-top:max(8px,env(safe-area-inset-top));border-bottom:1px solid #ddd}
.dfvh b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dfvh button{min-height:44px;padding:0 12px;border-radius:10px;border:1px solid #c9d3e6;background:#f2f5fb;font-weight:700}
.dfvb{flex:1;width:100%;border:0;object-fit:contain;background:#eee}
/* v44 tall phones, one job: 16px text, 44px buttons, fill height */
body.dtall #sheet,body.dtall #sheet .in,body.dtall #sheet .lbl,body.dtall #sheet button,body.dtall #sheet .dfe,body.dtall #sheet .pupmsg{font-size:20px}
body.dtall #sheet .pup button,body.dtall #sheet .dfd1,body.dtall #sheet .dfsh{min-height:55px}
body.dtall #sheet .in{min-height:52px}
/* v45 week fills the screen, ~15-16px text */
body.wtall .wfit .wl,body.wtall .wd .ev,body.wtall .wdh,body.wtall .pl1,body.wtall .pl2,body.wtall .pempty,body.wtall h3.lh{font-size:19.5px}
body.wtall .wfit .wdl b,body.wtall .wfit .wdl i{font-size:20px}
body.wtall .wfit .wrow{align-items:center}
body.wtall .wfit .wl.open,body.wtall .pempty{font-size:18px}

#sheet .dfph{padding:0;margin-top:4px}#sheet .dfatl{margin:2px 0}#sheet .dfph .pup{display:flex;align-items:center;gap:8px;flex-wrap:wrap}#sheet .dfph .pup [data-upk]{flex:0 0 auto;padding:0 14px}
#sheet .dfth0{font-size:16px;color:var(--m)}#sheet .dfat{margin:0}#sheet .dfat:empty{display:none}#sheet .dfat1{display:flex;gap:6px}#sheet .dfat1 .dfd1{flex:1;min-width:0}#sheet .dfph .dfsel{margin-bottom:4px}
.addday{display:block;margin:-2px 0 6px auto;min-height:40px;padding:0 12px;border-radius:10px;border:1px solid #c9d3e6;background:#eef2fa;color:#1c3d7a;font-weight:700;font-size:15px}
.adm .adt{margin:4px 0;font-weight:700}.adm .adg{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center}.adm .adc{min-height:46px;border-radius:10px;border:1px solid #c9d3e6;background:#fff;font-size:18px;font-weight:600}
.adm .adc.on{background:#1c3d7a;color:#fff;border-color:#1c3d7a}.adm .adc.orig{background:#e3e8f2;color:#8a93a6;text-decoration:underline}.adm .adsel{min-height:22px;color:var(--m)}.adm [data-adok][disabled]{opacity:.5}

.dcw{position:relative}.dcw>.ev{padding-right:12px}.dcw>.addday{position:absolute;right:8px;bottom:8px;margin:0;min-height:38px;font-size:14px;padding:0 10px;z-index:2}
#sheet .dfatl{font-size:16px;color:var(--m);font-weight:600}#sheet .dfat{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}#sheet .dfat1{flex:1 1 calc(50% - 4px);min-width:0;gap:2px;margin-top:0}
#sheet .dfat1 .dfd1,body.dtall #sheet .dfat1 .dfd1{min-height:40px;font-size:15px;padding:0 6px}#sheet .dfat1 .dfd1 small{display:none}#sheet .dfat1 .dfsh,body.dtall #sheet .dfat1 .dfsh{min-height:40px;min-width:36px;font-size:16px}
body.dtall #sheet .dfph .pup [data-upk]{min-height:46px}
#sheet .dfat1{flex:1 1 calc(33.3% - 4px)}#sheet .dfat1 .dfd1{padding:0 4px;font-size:14px!important}#sheet .dfat1 .dfsh{min-width:30px!important;padding:0}
#sheet .dfph{margin-top:2px}#sheet .dfph .pup{gap:6px}body.dtall #sheet .porow{margin-top:3px}
body.dtall #sheet .in{min-height:48px}body.dtall #sheet .pup button,body.dtall #sheet .dfd1,body.dtall #sheet .dfsh{min-height:48px}body.dtall #sheet .dfph .pup [data-upk]{min-height:44px}
.dcw>.ev{margin-bottom:6px}#sheet{margin-top:4px}
