:root{--fs-label: .8125rem;--fs-small: .875rem;--fs-body: 1rem;--fs-title: 1.25rem;--fs-name: 1.75rem;--fs-verdict: 2.75rem;--cp-gate: #173b56;--cp-gate-tint: #e7eef4;--cp-zone: #00687a;--cp-zone-tint: #e2f1f3;--cp-session: #5b3a9e;--cp-session-tint: #eee8f7;--cp-desk: #4e5d6c;--cp-desk-tint: #eceff2;--exit: #b34700;font-family:Arial,system-ui,sans-serif;color:#102f44;background:#f5f7f9;font-synthesis:none}*{box-sizing:border-box}body{margin:0}main{max-width:760px;margin:auto;padding:16px 16px 48px}.setup{max-width:500px;padding-top:10vh}h1{font-size:1.7rem;line-height:1.2;margin:8px 0 16px}h2{font-size:1.4rem;overflow-wrap:anywhere}header{background:#173b56;color:#fff;padding:20px;border-radius:14px}.eyebrow{font-size:.8rem;font-weight:700;letter-spacing:.09em}.stats{display:flex;justify-content:space-between;gap:12px;margin-bottom:14px}nav{display:flex;gap:6px;overflow:auto;margin:16px 0}nav button{flex:1;min-width:60px;padding:12px 8px}button,input,select{font:inherit;min-height:48px;border-radius:8px}button{border:2px solid transparent;background:#173b56;color:#fff;padding:12px 18px;font-weight:700;cursor:pointer}button:disabled{opacity:.5;cursor:default}button.secondary{background:#fff;color:#173b56;border-color:#b8c8d4}button.active,button[aria-pressed=true]{background:#09624c;color:#fff}button:focus-visible,input:focus-visible,summary:focus-visible{outline:4px solid #ed9b00;outline-offset:3px}label{display:block;margin:14px 0;font-weight:700}input{display:block;width:100%;border:2px solid #91a9ba;padding:12px;background:#fff;color:#102f44;margin-top:6px}form button{width:100%;margin:0 0 12px}section{padding:8px 0}section>button{margin:8px 0}small{display:block}.mode{display:flex;gap:12px}.mode button{flex:1}article{padding:20px;border:1px solid #c5d2dc;border-radius:12px;background:#fff;margin:12px 0}article h2{font-size:2rem;margin:0}.notice{padding:14px;border-radius:8px;background:#fff1c7;color:#533c00;margin:12px 0;line-height:1.4}.notice.bad{background:#ffebe8;color:#851c18}.list{display:block;width:100%;text-align:start;margin:10px 0;padding:18px}.list small{font-weight:400;padding-top:8px}.demo{background:#fff1c7;color:#533c00;padding:10px;margin-bottom:12px;font-weight:700}video{width:100%;max-height:50vh;background:#102f44;border-radius:12px;margin-top:12px}details{margin:16px 0}summary{padding:12px;cursor:pointer}details>button{margin:6px}.verdict{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;flex-direction:column;justify-content:safe center;align-items:center;padding:28px;text-align:center;color:#fff;overflow:auto}.verdict.good{background:#3dbe5a;color:#000}.verdict.bad{background:#8e1212;color:#fff;border:12px solid #ffffff;border-image:repeating-linear-gradient(45deg,#fff 0,#fff 10px,#8e1212 10px,#8e1212 20px) 12}.verdict.blocked,.stopped-panel{background:#263238;color:#fff}.verdict .icon{display:flex;align-items:center;justify-content:center;flex:0 0 auto;width:104px;height:104px;border-radius:50%;background:#fff;color:#000;font-size:4.2rem;font-weight:900;line-height:1;margin:0 0 12px}.verdict.bad .icon{color:#8e1212}.verdict.exit .icon{color:#1565c0}.verdict .headline{font-size:clamp(2.75rem,12vw,3.25rem);font-weight:800;line-height:1.1;margin:0}.verdict .detail{font-size:var(--fs-title);font-weight:700;margin:12px 0 0}.verdict .say,.stopped-panel .say{font-size:1.0625rem;line-height:1.35;background:#ffffff29;border-radius:8px;padding:10px 14px;margin:16px 0 0}.verdict h2{font-size:clamp(2.25rem,9vw,2.75rem);line-height:1.2;max-width:100%;margin:16px 0 8px}.verdict button{margin-top:20px;background:#fff;color:#173b56}.verdict p{font-size:1.125rem;margin:4px 0}@media(max-width:380px){main{padding:10px}nav button{font-size:.8rem;padding:10px 5px}header{padding:16px}.verdict .icon{width:72px;height:72px;font-size:3rem;margin-bottom:6px}.verdict h2{font-size:clamp(2.25rem,9vw,2.75rem)}.verdict .say{margin-top:10px}.verdict button{min-height:52px;margin-top:10px}.pill{font-size:var(--fs-label);padding:4px 10px}}.toggle{display:flex;align-items:center;gap:12px;min-height:48px}.toggle input[type=checkbox]{width:28px;height:28px;min-height:28px;margin:0;flex:0 0 28px}.install-guide{margin:16px 0;padding:12px 16px;border:1px solid #9cabb8;border-radius:10px;background:#fff;color:#173b56}.install-guide summary{cursor:pointer;font-weight:700;min-height:44px;display:list-item;padding:8px 0}.install-guide p,.install-status{font-size:1rem;line-height:1.5}.install-guide button{width:100%}.stopped-panel{margin-top:16px;padding:24px 20px;border-radius:14px;text-align:center}.stopped-panel h2{margin:0 0 12px;font-size:var(--fs-small);letter-spacing:.06em;text-transform:uppercase}.stopped-panel .headline{font-size:1.75rem;font-weight:800;margin:0}.stopped-panel .detail{font-size:var(--fs-title);font-weight:700;margin:12px 0 0}.stopped-panel button{width:100%;margin-top:20px;background:#fff;color:#173b56}.mode-band{flex:none;margin:0;padding:6px 10px;border-radius:8px;background:var(--exit);color:#fff;font-size:var(--fs-small);font-weight:800;letter-spacing:.04em;text-align:center}.exit-mode .scan-main{border-color:var(--exit);border-width:3px}.mode button[aria-pressed=false]{background:#fff;color:#173b56;border-color:#173b56}.mode button.exit[aria-pressed=true]{background:#b34700}.exit-mode input{border-color:#b34700;border-width:3px}.verdict.exit{background:#1565c0;color:#fff}.verdict.wait{background:#ffc400;color:#111;z-index:30}.verdict.wait .say{background:#00000014}.verdict .note{font-size:1rem;opacity:.9;margin:10px 0 0}main.app{height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden;padding:max(8px,env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left))}main.app .demo{margin:0 0 6px;padding:3px 8px;font-size:var(--fs-label);border-radius:6px}main.app nav{flex:none;margin:6px 0;gap:0;border:1px solid #b8c8d4;border-radius:10px;overflow:hidden;background:#fff}main.app nav button{min-width:0;min-height:44px;padding:6px 2px;border-radius:0;border:0;font-size:var(--fs-small)}main.app nav button+button{border-left:1px solid #d5e0e8}main.app nav button.secondary{background:#fff;color:#173b56}main.app nav button.active{background:#173b56}.checkpoint{flex:none;display:grid;grid-template-columns:auto 1fr;column-gap:10px;align-items:center;padding:6px 10px 6px 6px;border-radius:10px;border-left:6px solid var(--cp, #91a9ba);background:var(--cp-tint, white);color:#102f44}.checkpoint p,.checkpoint h1{margin:0}.checkpoint-type{grid-row:span 2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;width:76px;padding:4px;border-radius:8px;background:var(--cp);color:#fff;font-size:.6875rem;font-weight:800;letter-spacing:.05em;line-height:1.1;text-align:center}main.app .checkpoint-name{font-size:var(--fs-body);font-weight:800;line-height:1.25;overflow-wrap:anywhere}.checkpoint-detail{font-size:var(--fs-label);font-weight:700;color:#3c5568}.cp-day{--cp: var(--cp-gate);--cp-tint: var(--cp-gate-tint)}.cp-zone{--cp: var(--cp-zone);--cp-tint: var(--cp-zone-tint)}.cp-session{--cp: var(--cp-session);--cp-tint: var(--cp-session-tint)}.cp-desk{--cp: var(--cp-desk);--cp-tint: var(--cp-desk-tint)}.status-line{flex:none;display:flex;flex-wrap:wrap;align-items:center;gap:2px 10px;margin:4px 2px 0;font-size:var(--fs-label);color:#3c5568}main.app .content{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain}main.app .content.scan-screen{display:flex;flex-direction:column;overflow:hidden}main.app .content .notice{margin:0 0 8px;padding:8px 12px;font-size:var(--fs-small)}main.app .content.scan-screen>.notice,main.app .content.scan-screen>section.notice{flex:none;max-height:30%;overflow:auto}.scan{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px;padding:0}.controls{flex:none;display:flex;gap:8px}.controls>.mode,.controls>.input-mode{display:flex;border-radius:10px;overflow:hidden}.controls>.mode{flex:3;gap:0;border:2px solid #173b56}.input-mode{flex:2;border:2px solid #91a9ba}.controls button{flex:1;min-width:0;min-height:44px;padding:4px 6px;border-radius:0;border:0;font-size:var(--fs-small)}.input-mode button{background:#fff;color:#173b56}.input-mode button[aria-pressed=true]{background:#173b56;color:#fff}.controls .mode button[aria-pressed=false]{background:#fff;color:#173b56}.scan>.notice{flex:none;margin:0;padding:6px 10px;font-size:var(--fs-label)}.scan-main{flex:1;min-height:0;position:relative;display:flex;border-radius:12px;overflow:hidden;background:#fff;border:2px solid #c5d2dc}.scan-main .ready{margin:auto;padding:12px;text-align:center}.scan-main .ready h2{font-size:var(--fs-title);margin:0 0 4px}.scan-main .ready p{margin:0;font-size:var(--fs-body);color:#3c5568}.scan-main.camera{background:#102f44;border-color:#102f44}.scan-main video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;max-height:none;margin:0;object-fit:cover;border-radius:0}.camera-state{position:absolute;left:0;right:0;top:0;padding:10px 14px;background:#102f44d1;color:#fff;font-size:var(--fs-body);font-weight:700}.camera-state h2{font-size:var(--fs-body);margin:0 0 2px}.camera-state p{margin:0}.camera-state p+p{margin-top:6px;font-weight:400;color:#ffe08a}.camera-error{margin:auto 12px}.camera-error button{width:100%;margin-top:8px}.bottom-bar{flex:none;position:relative}.bottom-bar form{display:flex;gap:8px}.bottom-bar input{flex:1;min-width:0;margin:0;min-height:44px;padding:8px 10px}.bottom-bar form button{min-height:44px;padding:8px 12px;font-size:var(--fs-small)}.bottom-actions{display:flex;gap:8px;margin-top:6px}.bottom-actions:empty{display:none}.bottom-actions>button{flex:1;min-height:44px;padding:6px 10px;font-size:var(--fs-small)}.bottom-bar form button{width:auto;margin:0;flex:none}.exit-mode .bottom-bar input{border-color:#b34700;border-width:3px}.drawer{flex:1;margin:0}.drawer summary{padding:6px 10px;min-height:44px;display:flex;align-items:center;justify-content:center;font-size:var(--fs-small);border:1px dashed #91a9ba;border-radius:8px}.drawer[open]>button{display:block;width:100%;margin:6px 0}.drawer[open]{position:absolute;left:0;right:0;bottom:0;z-index:10;max-height:60vh;max-height:60dvh;overflow:auto;background:#fff;border:2px solid #173b56;border-radius:12px;padding:0 8px 8px}.verdict.checking{background:#173b56}.verdict{padding:max(28px,env(safe-area-inset-top)) 20px max(28px,env(safe-area-inset-bottom))}main.app .content :is(button,input,summary):focus-visible{outline-offset:-4px}.pill{display:inline-block;margin:6px 0 0;padding:6px 12px;border-radius:999px;font-weight:700;font-size:.95rem;background:#dff5e4;color:#0b3d1a}.pill.stale{background:#ffe08a;color:#3d2a00}.pill.old{background:#ffd6d2;color:#6b0f0a}.status-line .list-when{font-weight:700}.status-line .handover-btn{width:auto;min-height:44px;margin:0 0 0 auto;padding:4px 12px;font-size:var(--fs-small)}.battery.low{background:#ffd6d2;color:#6b0f0a;border-radius:6px;padding:0 6px;font-weight:800}.day-mismatch{display:flex;flex-direction:column;gap:10px}.day-mismatch b{font-size:1.15rem}.list .when{font-weight:700;padding-top:6px}.verdict .check{background:#fff;color:#000;border:4px solid #000000;border-radius:10px;padding:8px 16px;margin:12px 0 0;font-size:1.6rem;font-weight:900}.badge-chip{display:inline-block;background:transparent;border:2px solid currentColor;border-radius:6px;padding:2px 10px;font-weight:800;letter-spacing:.05em}.verdict .person-meta,.verdict .days,.verdict .last-entry{margin:6px 0 0;font-size:1.2rem}.verdict .last-entry{font-weight:800}.verdict button.danger,.confirm button.danger{background:#000;color:#fff;border-color:#fff}.verdict.good button.danger{background:#000;color:#fff}.verdict button{min-height:56px;width:100%;max-width:420px;margin-top:14px}.verdict .confirm{width:100%;max-width:420px;margin-top:14px;background:#0000001f;border-radius:10px;padding:10px}.verdict .confirm p{margin:0;font-weight:800}.sheet{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;overflow:auto;background:#f5f7f9;padding:20px 16px 40px}.sheet>button,.sheet form>button{width:100%;margin-top:12px}.chips{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}.chips button{min-height:44px;padding:8px 12px}.counts,.checklist{list-style:none;padding:0;margin:12px 0;font-size:1.15rem;line-height:1.6}.safe{font-size:1.3rem;font-weight:800;padding:12px;border-radius:10px;background:#ffd6d2;color:#6b0f0a}.safe.ok{background:#dff5e4;color:#0b3d1a}.card-meta{color:#3b5568}.confirm{border:2px solid #173b56;border-radius:10px;padding:12px;margin-top:10px}.confirm button{margin:8px 8px 0 0}.verdict.good,.verdict.bad,.verdict.exit,.verdict.unknown{justify-content:space-between;gap:10px;overflow:hidden;padding:max(12px,env(safe-area-inset-top)) 14px max(12px,env(safe-area-inset-bottom))}.verdict-body{flex:1 1 auto;min-height:0;width:100%;overflow:auto;display:flex;flex-direction:column;align-items:center;justify-content:center}.verdict-head{display:flex;align-items:center;justify-content:center;gap:14px}.verdict-head .icon{width:72px;height:72px;font-size:2.9rem;margin:0}.verdict-body h2{margin:10px 0 4px}.verdict-body .say{margin-top:10px}.verdict-actions{flex:none;width:100%;max-width:420px;display:flex;flex-wrap:wrap;gap:8px}.verdict-actions>*{flex:1 1 40%}.verdict-actions>.confirm{flex-basis:100%}.verdict .verdict-actions button{margin:0;min-height:52px;max-width:none;width:auto;padding:8px 10px}.verdict .verdict-actions .confirm{margin:0;display:grid;grid-template-columns:1fr 1fr;gap:8px}.verdict-actions .confirm p{grid-column:1 / -1}@media(max-height:700px){.verdict-head .icon{width:52px;height:52px;font-size:2.1rem}.verdict .headline{font-size:2.75rem}.verdict-body h2{margin:4px 0 2px}.verdict-body .detail{font-size:1.05rem;margin-top:4px}.verdict-body .person-meta,.verdict-body .days,.verdict-body .last-entry{font-size:1rem;margin-top:2px}.verdict-body .say{font-size:.95rem;margin-top:6px;padding:6px 10px}.verdict .verdict-actions button{min-height:48px}}.override-sheet{display:flex;flex-direction:column;padding:max(12px,env(safe-area-inset-top)) 14px max(12px,env(safe-area-inset-bottom))}.override-sheet h2{margin:0 0 4px;font-size:var(--fs-title)}.override-sheet>p{margin:0 0 6px;font-size:var(--fs-small)}.override-sheet form{flex:1;min-height:0;display:flex;flex-direction:column;gap:6px}.override-sheet label{margin:0;font-size:var(--fs-small)}.override-sheet input{min-height:44px;margin-top:2px}.override-sheet .creds{display:grid;grid-template-columns:1fr 1fr;gap:8px}.override-sheet .chips{margin:2px 0;gap:6px}.override-sheet .chips button{width:auto;flex:1 1 auto;min-height:40px;padding:4px 10px;font-size:var(--fs-small);margin:0}.override-sheet .small{margin:0;font-size:var(--fs-label)}.override-sheet .notice{margin:0}.override-sheet .sheet-actions{margin-top:auto;display:flex;gap:8px}.override-sheet .sheet-actions button{flex:1;width:auto;margin:0;min-height:52px}.verdict.good.reentry{background:#fff;color:#000;border:12px solid #3dbe5a}.verdict.good.reentry .icon{background:#3dbe5a;color:#000}.verdict.good.reentry .say{background:#3dbe5a2e}.verdict.good.override .icon{color:#000}.verdict.unknown{background:#455a64;color:#fff}.verdict.unknown .icon{color:#455a64}.verdict.unknown .say{background:#ffffff29}.verdict.exit.exit-warn{border:12px dashed #ffffff}.verdict .check{font-size:clamp(2.5rem,10.5vw,3rem);line-height:1.1;padding:6px 12px;margin:8px 0 0}.verdict.has-check .headline{font-size:2.25rem}main.app nav{margin:6px 0 0}main.app nav button{min-height:48px}.scan .controls .mode button{min-height:56px;font-size:var(--fs-body);font-weight:800}.scan .controls .input-mode button{min-height:56px}.scan-main{min-height:64px}.bottom-bar input,.bottom-bar form button,.bottom-actions>button,.drawer summary{min-height:48px}.status-line{min-height:0}.scan-main .ready .no-enter{font-size:var(--fs-small);font-weight:700;color:#533c00;background:#fff1c7;border-radius:8px;padding:4px 8px;margin-top:4px}.notice.day-mismatch{flex-direction:row;align-items:center;gap:8px;padding:6px 10px;margin:4px 0 0}.notice.day-mismatch b{font-size:var(--fs-small);flex:1}.notice.day-mismatch button{width:auto;flex:none;min-height:48px;padding:4px 10px;font-size:var(--fs-small);margin:0}.override-sheet .chips button{min-height:48px}
