:root{color-scheme:light;--canvas:#f6f8f5;--surface:#fff;--surface-soft:#eaf0e9;--ink:#1e2e29;--muted:#5d6d64;--line:#dce4dc;--green:#315f50;--green-soft:#e5f0e9;--warning:#935109;--warning-soft:#fff1de;--danger:#a23f37;--danger-soft:#fbe9e5;--radius:16px;--small-radius:12px;--space:20px;--motion:180ms;--font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans CJK SC","Microsoft YaHei",sans-serif;font:16px/1.55 var(--font);background:#edf1ec;color:var(--ink)}
*{box-sizing:border-box}body{margin:0 auto;max-width:600px;min-height:100dvh;background:var(--canvas);padding-bottom:calc(100px + env(safe-area-inset-bottom,0px));overscroll-behavior-y:none}button,input,textarea,select{font:inherit}button,a,input,textarea,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer;touch-action:manipulation}button:disabled{cursor:default;opacity:.45}button,a,summary{transition:background-color var(--motion),border-color var(--motion),color var(--motion)}[hidden]{display:none!important}h1,h2,h3,p{margin:0}h1,h2{font-size:18px;line-height:1.4;font-weight:650}pre{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit}a{color:var(--green)}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--green);outline-offset:3px}svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;pointer-events:none}button>*{pointer-events:none}button:active:not(:disabled){filter:brightness(.96)}
.app-header{display:flex;align-items:center;justify-content:space-between;padding:calc(8px + env(safe-area-inset-top,0px)) var(--space) 8px;min-height:64px;background:var(--canvas)}.brand{font-size:21px;font-weight:700;letter-spacing:.02em}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border:0;border-radius:50%;background:transparent;color:var(--ink);flex-shrink:0}.icon-button:hover{background:var(--surface-soft)}main{padding:8px var(--space) 20px}.batch-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--surface-soft);border-radius:var(--radius);padding:16px 18px;margin-bottom:18px;min-height:82px}.batch-summary h1{font-size:16px}.batch-summary p{font-size:13px;color:var(--muted);margin-top:4px;overflow-wrap:anywhere}.saved-mark{width:30px;height:30px;display:grid;place-items:center;border-radius:50%;background:var(--green-soft);color:var(--green)}.saved-mark svg{width:18px;height:18px}.save-error{color:var(--danger)!important}.batch-summary:has(.save-error){background:var(--danger-soft)}.batch-summary:has(.save-error) .saved-mark{display:none}
.filter-group,.choice-group{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;background:var(--surface-soft);border-radius:var(--small-radius);margin-bottom:18px}.filter-group button,.choice-group button{min-height:48px;border:0;border-radius:9px;background:transparent;color:var(--muted);font-size:14px;font-weight:550;padding:8px 12px}.filter-group button[aria-pressed=true]{background:var(--green);color:#fff}.filter-group span{font-variant-numeric:tabular-nums;margin-left:7px}.filter-group button:hover:not([aria-pressed=true]){background:#dfe9de}.choice-group{margin:8px 0 18px}.choice-group button[aria-pressed=true]{background:var(--surface);color:var(--green);box-shadow:0 1px 3px #193e2310}.choice-group button{font-size:13px}
.vehicle{margin-bottom:10px}.vehicle-row{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;text-align:left;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);padding:16px;min-height:102px}.vehicle-row:hover{border-color:#a6bba9;background:#fcfdfb}.vehicle-row>div:first-child{min-width:0}.row-plate{display:block;font-size:20px;line-height:1.4;letter-spacing:.025em;font-weight:650;font-variant-numeric:tabular-nums}.row-person{font-size:14px;color:var(--muted);margin-top:6px;overflow-wrap:anywhere}.vehicle-row-right{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex-shrink:0}.vehicle-row-right>svg{width:17px;height:17px;color:#738179}.vehicle-status{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:7px;background:var(--green-soft);color:var(--green);font-size:12px;line-height:1.5;white-space:nowrap}.vehicle-status.needs-check{background:var(--warning-soft);color:var(--warning)}.vehicle-status svg{width:14px;height:14px;stroke-width:1.8}.list-hint{font-size:12px;text-align:center;color:var(--muted);margin:18px 0}.empty-state{padding:50px 16px;text-align:center}.empty-drawing{display:grid;place-items:center;width:72px;height:72px;margin:0 auto 20px;border-radius:22px;background:var(--surface-soft);color:var(--green)}.empty-drawing svg{width:46px;height:46px;stroke-width:1.5}.empty-state h2{font-size:18px}.empty-state p{font-size:14px;color:var(--muted);margin-top:10px;line-height:1.8}.filter-empty{padding:36px 12px}.filter-empty .text-button{margin-top:16px}
.primary,.secondary,.text-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:12px 16px;border-radius:var(--small-radius);font-size:15px;font-weight:600;line-height:1.4}.primary{background:var(--green);border:1px solid var(--green);color:#fff}.primary:hover:enabled{background:#274d40}.secondary{background:var(--surface);border:1px solid var(--line);color:var(--green)}.secondary:hover:enabled{background:var(--green-soft)}.text-button{background:transparent;border:0;color:var(--green);font-weight:550}.text-button:hover:enabled{background:var(--surface-soft)}.full-width{width:100%}.action-dock{position:fixed;z-index:10;left:50%;bottom:0;transform:translateX(-50%);width:min(100%,600px);display:grid;grid-template-columns:1fr 1.45fr;gap:12px;padding:12px var(--space) calc(12px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line);background:var(--canvas)}.action-dock button{min-height:54px}.action-dock svg{width:21px;height:21px}
.app-sheet{width:min(100%,600px);max-width:600px;max-height:calc(100dvh - env(safe-area-inset-top,0px) - 16px);border:0;border-radius:24px 24px 0 0;padding:0;margin:auto auto 0;background:var(--canvas);color:var(--ink);overflow:hidden;box-shadow:0 -8px 40px #10282012}.app-sheet::backdrop{background:#132b2466}.app-sheet[open]{display:flex;flex-direction:column;animation:sheet-enter var(--motion) ease-out}.sheet-handle{width:32px;height:4px;background:#c9d3c8;border-radius:8px;margin:10px auto 0;flex-shrink:0}.sheet-top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px var(--space) 12px;min-height:68px;flex-shrink:0}.sheet-top h2{font-size:19px;outline:none}.sheet-body{padding:4px var(--space) 24px;overflow-y:auto;min-height:0;overscroll-behavior:contain}.sheet-footer{padding:12px var(--space) calc(16px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line);background:var(--canvas);flex-shrink:0}.sheet-intro{font-size:14px;color:var(--muted);margin-bottom:20px}.sheet-body>label,.field label,.defaults label{display:block;font-size:14px;color:var(--muted);font-weight:500;margin:18px 0 8px}.sheet-body>label:first-child{margin-top:0}input[type=text],textarea{width:100%;min-height:52px;border:1px solid #cbd7cc;border-radius:var(--small-radius);background:var(--surface);color:var(--ink);padding:13px 14px;font-size:16px;outline:none;max-width:100%}textarea{resize:vertical;min-height:160px;line-height:1.65}input:focus,textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px var(--green-soft)}input::placeholder,textarea::placeholder{color:#77827b}input[type=file]{width:100%;font:inherit;font-size:13px;color:var(--muted);padding:10px 0}input[type=file]::file-selector-button{font:inherit;min-height:48px;border:1px solid var(--line);border-radius:10px;color:var(--green);background:var(--surface);padding:8px 12px;margin-right:8px}.field{margin-bottom:18px}.field label{margin:0 0 8px}.plate-field input{font-size:21px;font-weight:600;letter-spacing:.025em}.id-field input{font-size:16px;font-variant-numeric:tabular-nums}.field-invalid input{border-color:#d6b988;background:#fffbf4}.editor-status{margin-bottom:18px}.autosave-hint{font-size:12px;color:var(--muted);margin-top:5px}.issues{font-size:13px;color:var(--warning);line-height:1.75;margin:12px 0}.issues p{margin:4px 0}.issues .issue-ok{color:var(--green)}.remove{border:0;background:transparent;color:var(--danger);font-size:14px;min-height:48px;padding:12px;margin:12px 0 0;border-radius:10px;width:100%}.remove:hover{background:var(--danger-soft)}.delete-confirm{padding:14px;margin-top:12px;border-radius:var(--small-radius);background:var(--danger-soft);font-size:14px}.delete-confirm p{margin-bottom:12px}.danger{background:var(--danger);border-color:var(--danger)}.button-pair{display:flex;gap:10px;margin-top:12px}.button-pair>*{flex:1;min-width:0}
.intake-tools{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0 4px}.upload-button{position:relative;cursor:pointer;font-weight:550}.upload-button:focus-within{outline:3px solid var(--green);outline-offset:2px}.upload-button svg{width:20px;height:20px}.notice,.conflict{padding:14px;border:1px solid var(--line);border-radius:var(--small-radius);font-size:13px;background:var(--surface);line-height:1.7;margin:12px 0;overflow-wrap:anywhere}.warning,.conflict{border-color:#e4cda4;background:var(--warning-soft)}.conflict p{margin-bottom:10px}.conflict button{margin:4px 4px 0 0;font-size:13px;padding:10px 12px}.ocr-status{font-size:13px;color:var(--green);margin:12px 0}.ocr-status:empty{display:none}.thumbnails{display:grid;gap:12px}.thumb{display:grid;grid-template-columns:56px minmax(0,1fr);gap:8px 12px;padding:12px;border:1px solid var(--line);border-radius:var(--small-radius);background:var(--surface)}.thumb>a{grid-row:1/3}.thumb img{width:56px;height:72px;object-fit:cover;border-radius:8px}.shot-status{font-size:12px;color:var(--muted)}.thumb button{border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--green);min-height:48px;padding:8px 12px;font:inherit;font-size:13px}.thumb>button{grid-column:2}.thumb details{grid-column:1/-1}.thumb textarea{margin:10px 0;font-size:14px}.disclosure{border-top:1px solid var(--line);padding:16px 0;margin-top:20px}.disclosure>summary{font-size:14px;color:var(--muted);min-height:32px;cursor:pointer}.disclosure[open]>summary{margin-bottom:12px}details pre{font-size:13px;color:var(--muted);line-height:1.8}#history{max-height:300px;overflow:auto}#history details{padding:12px 0;border-bottom:1px solid var(--line)}#history summary{font-size:13px;cursor:pointer}
.export-brief{padding-bottom:16px;border-bottom:1px solid var(--line);margin-bottom:20px}.export-brief strong{font-size:18px;font-weight:650}.export-brief p{font-size:13px;color:var(--muted);margin-top:6px}.export-brief b{font-weight:600}.confirm{display:flex!important;align-items:flex-start;gap:12px;color:var(--ink)!important;padding:16px 0;margin-bottom:0!important;font-size:14px!important}.confirm input{width:22px;height:22px;accent-color:var(--green);flex-shrink:0;margin:0;margin-top:1px}.export-hint{font-size:13px;color:var(--warning);line-height:1.75;margin:8px 0 16px}.help{font-size:13px;color:var(--muted);line-height:1.75;overflow-wrap:anywhere}.menu-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 2px;min-height:60px;border:0;border-bottom:1px solid var(--line);background:transparent;font:inherit;font-size:15px;color:var(--ink);text-decoration:none}.menu-row svg{width:18px;height:18px;color:var(--muted)}.menu-row:hover{background:var(--surface-soft)}.settings-note{padding-top:22px}.update-status{font-size:15px;line-height:1.8;outline:none}#updateNotes{font-size:14px;color:var(--muted);line-height:1.8;margin:18px 0}#updatePanel .sheet-footer:has(button[hidden]){display:none}
#toast{position:fixed;z-index:100;left:50%;transform:translateX(-50%);bottom:calc(100px + env(safe-area-inset-bottom,0px));width:max-content;max-width:calc(100vw - 40px);background:var(--ink);color:white;padding:12px 16px;border-radius:12px;box-shadow:0 4px 16px #18282020;font-size:14px;line-height:1.6;pointer-events:none}body:has(dialog[open]){overflow:hidden}body:has(dialog[open]) #toast{visibility:hidden}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@keyframes sheet-enter{from{transform:translateY(18px);opacity:.6}to{transform:translateY(0);opacity:1}}@media(min-width:640px){body{box-shadow:0 0 0 1px var(--line)}.app-sheet{margin:auto;border-radius:24px;max-height:90dvh}.sheet-footer{padding-bottom:20px}.app-header{padding-top:16px}}@media(max-width:360px){:root{--space:16px}.row-person{font-size:13px}.vehicle-row{padding:14px 12px;gap:8px}.row-plate{font-size:19px}.action-dock{gap:8px}.action-dock button{padding:12px 8px;font-size:14px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
