:root{--brand-primary: #0b2523;--brand-secondary: #3e4c59;--brand-accent: #0b7285;--ink: #0b2523;--bg: #f3f6f5;--card: #ffffff;--line: #dfe8e5;--line-strong: #c9d8d3;--text: #152925;--muted: #5f7570;--faint: #8aa09a;--green: #1e9e5a;--green-bg: #e4f5eb;--yellow: #d89312;--yellow-bg: #fbf1db;--red: #d5484a;--red-bg: #fbe7e7;--gray: #5f7570;--gray-bg: #eef2f1;--amber: #d89312;--radius-card: 14px;--radius-control: 11px;--radius-small: 9px;--shadow: 0 1px 2px rgb(11 37 35 / 5%), 0 10px 28px -14px rgb(11 37 35 / 20%);--tap: 44px;color-scheme:light;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.45;font-variant-numeric:tabular-nums;color:var(--text);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh;min-height:100dvh;-webkit-font-smoothing:antialiased}#root{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}button,input,select,textarea{font:inherit;color:inherit}.topbar{background:var(--ink);color:#fff;display:flex;align-items:center;gap:12px;padding:6px 16px;font-size:12.5px;font-weight:600;letter-spacing:.02em}.topbar .clock{flex:1}.topbar .network{display:inline-flex;align-items:center;gap:6px}.topbar .network:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--green)}.topbar .network[data-online=false]:before{background:var(--amber)}.app-header{background:var(--card);border-bottom:1px solid var(--line);padding:10px 16px;display:flex;align-items:center;gap:12px;position:sticky;top:0;z-index:2}.app-header h1{font-size:1.1rem;margin:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}.offline-bar{background:var(--yellow-bg);color:#7a5200;border-bottom:1px solid var(--yellow);padding:8px 16px;font-size:13px;font-weight:600}.app-main{flex:1;padding:16px;max-width:900px;width:100%;margin:0 auto}.app-main.with-bottom-bar{padding-bottom:96px;padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}.stack{display:flex;flex-direction:column;gap:12px}.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-card);padding:16px;box-shadow:var(--shadow)}.muted{color:var(--muted);font-size:.93rem}.faint{color:var(--faint);font-size:11.5px}.btn{min-height:var(--tap);padding:10px 16px;border-radius:var(--radius-control);border:1.5px solid var(--brand-primary);background:var(--brand-primary);color:#fff;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none}.btn:disabled{opacity:.45;cursor:default}.btn.secondary{background:var(--card);color:var(--text);border-color:var(--line-strong)}.btn.accent{background:var(--brand-accent);border-color:var(--brand-accent);color:#fff}.btn.danger{background:var(--red);border-color:var(--red)}.btn.block{width:100%}.btn.icon{padding:0 12px;min-width:var(--tap)}.field{display:flex;flex-direction:column;gap:6px;padding:12px 0;border-bottom:1px dotted var(--line-strong)}.field:last-of-type{border-bottom:none}.field-head{display:flex;align-items:baseline;gap:12px}.field-head .name{flex:1;font-weight:600;font-size:14px}.field-head .last-value{color:var(--faint);font-size:11.5px;text-align:right;white-space:nowrap}.field label,.field .label{font-weight:600;font-size:14px}.input{min-height:var(--tap);padding:8px 12px;border:1.5px solid var(--line-strong);border-radius:var(--radius-control);background:var(--card);width:100%}.input:focus{outline:2px solid var(--brand-accent);outline-offset:1px;border-color:var(--brand-accent)}.input[data-state=rejected],.input[data-state=invalid]{border-color:var(--red);background:var(--red-bg)}.numeric-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.numeric-row .input{width:110px;font-size:16px;font-weight:600;text-align:right}.numeric-row .unit{color:var(--muted);font-size:12.5px}.semaphore-message{font-size:12px;font-weight:600}.semaphore-message[data-semaphore=green]{color:var(--green)}.semaphore-message[data-semaphore=yellow]{color:var(--yellow)}.semaphore-message[data-semaphore=red],.semaphore-message[data-semaphore=rejected]{color:var(--red)}.semaphore-message[data-semaphore=gray]{color:var(--gray)}.segmented{display:flex;gap:8px}.segmented button{flex:1;min-height:var(--tap);border:1.5px solid var(--line-strong);background:var(--card);border-radius:var(--radius-control);cursor:pointer;font-weight:600}.segmented button[data-kind=ok][aria-pressed=true]{border-color:var(--green);background:var(--green-bg);color:var(--green)}.segmented button[data-kind=fail][aria-pressed=true]{border-color:var(--red);background:var(--red-bg);color:var(--red)}.observation{min-height:74px;padding:10px 12px;border:1.5px solid var(--line-strong);border-radius:var(--radius-control);background:var(--card);width:100%;resize:vertical}.observation:focus{outline:2px solid var(--brand-accent);outline-offset:1px;border-color:var(--brand-accent)}.observation-block{display:flex;flex-direction:column;gap:6px}.observation-block .label{font-size:13px;font-weight:600;color:var(--muted)}.photo-row{display:flex;gap:8px;flex-wrap:wrap}.photo-slot{width:96px;aspect-ratio:4 / 3;border:1.5px dashed var(--line-strong);border-radius:var(--radius-small);display:flex;align-items:center;justify-content:center;color:var(--faint);font-size:12px}.group-nav{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}.group-tab{min-height:var(--tap);padding:0 14px;border-radius:999px;border:1.5px solid var(--line-strong);background:var(--card);white-space:nowrap;cursor:pointer;font-weight:600;font-size:13.5px}.group-tab[aria-current=true]{border-color:var(--brand-primary);background:color-mix(in srgb,var(--brand-primary) 10%,#fff);color:var(--brand-primary)}.group-tab[data-complete=true]{border-color:var(--green);background:var(--green-bg);color:var(--green)}.badge{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:24px;padding:0 8px;border-radius:12px;background:var(--brand-accent);color:#fff;font-weight:700;font-size:12.5px;text-decoration:none}.badge[data-count="0"]{background:var(--faint)}.alert{border-radius:var(--radius-control);padding:12px 16px;border:1px solid transparent;font-size:13px}.alert.error{background:var(--red-bg);color:var(--red);border-color:color-mix(in srgb,var(--red) 45%,#fff)}.alert.info{background:var(--gray-bg);border-color:var(--line)}.alert.warn{background:var(--yellow-bg);color:#7a5200;border-color:var(--yellow)}.alert.success{background:var(--green-bg);color:var(--green);border-color:color-mix(in srgb,var(--green) 45%,#fff)}.missing-list{margin:6px 0 0;padding-left:20px;font-size:13px}.marker{border:1.5px dashed var(--yellow);background:var(--yellow-bg);color:#7a5200;padding:12px;border-radius:var(--radius-control);font-weight:600}.site-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.site-item{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-card);padding:14px 16px;min-height:72px;text-decoration:none;color:inherit;box-shadow:var(--shadow)}.site-item .name{font-weight:700;font-size:1.02rem}.semaphore{display:inline-flex;align-items:center;gap:8px;padding:4px 10px;border-radius:999px;font-weight:700;font-size:12px}.semaphore:before{content:"";width:10px;height:10px;border-radius:50%;background:currentColor}.semaphore[data-semaphore=green]{color:var(--green);background:var(--green-bg)}.semaphore[data-semaphore=yellow]{color:var(--yellow);background:var(--yellow-bg)}.semaphore[data-semaphore=red],.semaphore[data-semaphore=rejected]{color:var(--red);background:var(--red-bg)}.semaphore[data-semaphore=gray]{color:var(--gray);background:var(--gray-bg)}.bottom-bar{position:fixed;left:0;right:0;bottom:0;background:var(--card);border-top:1px solid var(--line);padding:10px 16px;padding:10px max(16px,env(safe-area-inset-right,0px)) max(10px,env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));display:flex;align-items:center;gap:16px;z-index:3;box-shadow:var(--shadow)}.bottom-bar .progress-block{flex:1;display:flex;flex-direction:column;gap:6px}.bottom-bar .progress-label{font-size:12px;font-weight:700;color:var(--muted)}.progress{height:7px;border-radius:4px;background:var(--line);overflow:hidden}.progress>span{display:block;height:100%;background:var(--brand-primary)}.confirmation{display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px;padding:32px 16px}.confirmation .circle{width:74px;height:74px;border-radius:50%;background:var(--green);color:#fff;display:flex;align-items:center;justify-content:center;font-size:36px;font-weight:700}.confirmation h2{margin:0}.dialog{position:fixed;inset:0;background:#0b25238c;display:flex;align-items:flex-end;justify-content:center;z-index:5;padding:16px;padding-bottom:max(16px,env(safe-area-inset-bottom,0px))}.dialog .card{width:100%;max-width:600px;max-height:90vh;max-height:90dvh;overflow-y:auto}.log{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px;font-size:.93rem}.access{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:stretch;justify-content:center;padding:24px;max-width:480px;margin:0 auto;gap:16px}.access .brand{text-align:center}.access .brand .mark{width:64px;height:64px;border-radius:16px;background:var(--brand-primary);margin:0 auto 12px}.access .brand h1{margin:0;color:var(--brand-primary)}.footnote{text-align:center;color:var(--muted);font-size:.85rem;margin-top:24px}.corrective-list{display:flex;flex-direction:column;gap:10px}.photo-strip{display:flex;flex-direction:column;gap:8px}.photo-tile{position:relative;width:96px;margin:0;display:flex;flex-direction:column;gap:4px}.photo-tile img,.photo-tile .photo-slot{width:96px;aspect-ratio:4 / 3;object-fit:cover;border-radius:var(--radius-small);border:1px solid var(--line);background:var(--gray-bg)}.photo-state{font-size:11px;font-weight:600;color:var(--muted)}.photo-tile[data-state=uploaded] .photo-state{color:var(--green)}.photo-tile[data-state=rejected] .photo-state{color:var(--red)}.photo-delete{position:absolute;top:-8px;right:-8px;width:32px;height:32px;border-radius:50%;border:1.5px solid var(--line-strong);background:var(--card);color:var(--red);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--shadow)}.photo-capture{align-self:flex-start}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
