:root{--navy:#0b2545;--blue:#13315c;--green:#1b8a3c;--red:#c62828;--orange:#f77f00;--bg:#eef2f7;--card:#fff;--ink:#102030;--mute:#5b6b7c;--line:#d7dee7}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--ink);font:18px/1.35 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
body{min-height:100vh;padding-bottom:calc(84px + env(safe-area-inset-bottom))}
.top{background:var(--navy);color:#fff;padding:calc(10px + env(safe-area-inset-top)) 16px 10px}
.top-in{display:flex;justify-content:space-between;align-items:baseline;max-width:640px;margin:0 auto;font-size:20px}
.muted-w{color:#b9c7da;font-size:15px}
main{max-width:640px;margin:0 auto;padding:14px 14px 20px}
h1{font-size:26px;margin:4px 0 10px}h2{font-size:20px;margin:0 0 8px}
.card{background:var(--card);border-radius:18px;padding:18px;margin:0 0 14px;box-shadow:0 1px 3px rgba(11,37,69,.12)}
.muted,.note{color:var(--mute);font-size:16px}.note{margin:6px 0}
.loading{text-align:center;color:var(--mute);padding:40px 0}
.status{text-align:center}
.pill{display:inline-block;border-radius:999px;padding:6px 14px;font-size:17px;font-weight:700;color:#fff;background:var(--mute)}
.pill.in{background:var(--green)}.pill.warn{background:var(--orange)}
.since{font-size:28px;font-weight:800;margin:10px 0 2px}
.elapsed{font-size:20px;color:var(--mute)}
.bigbtn{display:block;width:100%;border:0;border-radius:22px;color:#fff;font-size:34px;font-weight:800;padding:34px 10px;margin:0 0 14px;letter-spacing:.5px;box-shadow:0 3px 8px rgba(0,0,0,.2);font-family:inherit}
.bigbtn.in{background:var(--green)}.bigbtn.out{background:var(--red)}
.bigbtn:disabled{opacity:.6}
.bigbtn small{display:block;font-size:17px;font-weight:600;opacity:.9;margin-top:6px}
.btn{display:block;width:100%;border:0;border-radius:14px;background:var(--navy);color:#fff;font-weight:700;font-size:19px;line-height:1.1;font-family:inherit;padding:17px 12px;margin:8px 0 0;text-align:center;text-decoration:none}
.btn.alt{background:#fff;color:var(--navy);border:2px solid var(--navy)}
.btn.small{display:inline-block;width:auto;padding:12px 16px;font-size:16px;margin:6px 6px 0 0}
.btn:disabled{opacity:.55}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.stat{text-align:center;padding:14px 8px}
.stat b{display:block;font-size:26px}.stat span{color:var(--mute);font-size:15px}.stat small{display:block;color:var(--mute);font-size:15px}
.list{list-style:none;margin:0;padding:0}
.list li{display:flex;justify-content:space-between;gap:8px;padding:10px 0;border-top:1px solid var(--line);font-size:17px}
.list li:first-child{border-top:0}
.list .t-in{color:var(--green);font-weight:800}.list .t-out{color:var(--red);font-weight:800}
a{color:#0b5cad}
label{display:block;font-weight:700;margin:12px 0 4px}
input[type=password],input[type=text],input[type=tel],select{width:100%;font:inherit;font-size:24px;padding:14px;border:2px solid var(--line);border-radius:12px;background:#fff;color:var(--ink)}
select{font-size:19px}
.err{color:var(--red);font-weight:700;min-height:1.3em;margin:8px 0 0}
.tabs{position:fixed;left:0;right:0;bottom:0;display:flex;background:#fff;border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);z-index:5}
.tabs[hidden]{display:none}
.tabs a{flex:1;text-align:center;padding:9px 2px 8px;color:var(--mute);text-decoration:none;font-size:13px;font-weight:700}
.tabs a i{display:block;font-style:normal;font-size:24px;line-height:1.2}
.tabs a.on{color:var(--navy);background:#e6edf6}
.weeknav{display:flex;gap:8px;align-items:center;margin-bottom:12px}
.weeknav button{flex:0 0 54px;height:54px;border-radius:12px;border:2px solid var(--navy);background:#fff;color:var(--navy);font-size:24px;font-weight:800}
.weeknav button:disabled{opacity:.3}
.weeknav select{flex:1;min-width:0}
.day{padding:12px 14px;margin-bottom:8px}
.day.empty{background:transparent;box-shadow:none;border:1px dashed var(--line);color:var(--mute);padding:8px 14px}
.day-h{display:flex;justify-content:space-between;font-weight:800}
.shift{margin-top:6px;font-size:18px}
.shift .loc{font-size:15px;color:var(--mute)}
.total{background:var(--navy);color:#fff;text-align:center;font-size:22px;font-weight:800}
.total small{display:block;font-weight:600;color:#c9d6e8;font-size:16px}
pre.txt{white-space:pre-wrap;font:14px/1.4 ui-monospace,Menlo,monospace;background:#f4f7fb;border-radius:10px;padding:10px;margin:8px 0 0;overflow-wrap:anywhere}
details summary{font-weight:700;color:var(--navy);padding:8px 0}
.soon{display:flex;justify-content:space-between;align-items:center;padding:16px 4px;border-top:1px solid var(--line);color:#8a97a6;font-size:19px}
.soon:first-of-type{border-top:0}.soon em{font-style:normal;font-size:13px;font-weight:700;background:#e3e9f0;border-radius:999px;padding:4px 10px}
.res{border-left:8px solid var(--mute);}
.res.ok{border-color:var(--green)}.res.bad{border-color:var(--red)}.res.mid{border-color:var(--orange)}
.res h2{margin-bottom:6px}.res p{margin:8px 0}
.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:17px}.kv b{color:var(--mute);font-weight:600}
.toast{pointer-events:none;position:fixed;left:14px;right:14px;bottom:calc(96px + env(safe-area-inset-bottom));background:#102030;color:#fff;border-radius:14px;padding:14px 16px;font-size:17px;z-index:9;text-align:center}
