.image-viewer-mask[data-v-a7454853]{position:fixed;inset:0;z-index:80;display:grid;grid-template-rows:auto minmax(0,1fr);gap:10px;padding:calc(14px + env(safe-area-inset-top)) 14px calc(14px + env(safe-area-inset-bottom));background:#081812d6}.image-viewer-toolbar[data-v-a7454853]{justify-self:end;display:flex;gap:8px;flex-wrap:wrap}.image-viewer-toolbar button[data-v-a7454853]{min-width:42px;min-height:34px;border:0;border-radius:999px;color:var(--green-dark);background:#edf5ef;padding:0 12px;font-size:13px;font-weight:900}.image-viewer-stage[data-v-a7454853]{min-width:0;min-height:0;display:grid;place-items:center;overflow:hidden;touch-action:none;cursor:zoom-in}.image-viewer-stage.movable[data-v-a7454853]{cursor:grab}.image-viewer-stage img[data-v-a7454853]{max-width:100%;max-height:100%;border-radius:12px;object-fit:contain;background:#fff;box-shadow:0 24px 60px #08181252;transition:transform .12s ease;-webkit-user-select:none;user-select:none}:root{--bg-1: #eef7ef;--bg-2: #dfeee6;--card: #ffffff;--text: #183527;--muted: #6d8276;--line: #d7e5dc;--green: #1f8f5f;--green-dark: #146f48;--blue: #2f75a8;--orange: #c87924;--red: #c84d3b;--shadow: 0 12px 28px rgba(24, 53, 39, .12)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body{margin:0;min-height:100vh;font-family:Microsoft YaHei,PingFang SC,Arial,sans-serif;color:var(--text);background:linear-gradient(180deg,#e6f1ea,#d6e6dd)}button,input,select,textarea{font:inherit}.app-shell{min-height:100vh;padding:calc(14px + env(safe-area-inset-top)) 14px calc(24px + env(safe-area-inset-bottom));background:radial-gradient(circle at 15% 0%,rgba(31,143,95,.16),transparent 28%),linear-gradient(180deg,#f8fcf9f5,#ebf4eff5)}.login-page{min-height:calc(100vh - 40px);display:grid;align-content:center}.login-logo,.icon{display:grid;place-items:center;color:#fff;font-weight:900}.login-logo{width:68px;height:68px;margin-bottom:18px;border-radius:24px;background:linear-gradient(145deg,var(--green),var(--green-dark));font-size:32px;box-shadow:0 16px 32px #1f8f5f3d}h1,h2,p{margin:0}.login-page h1{font-size:30px}.login-page p,.record-meta,.menu-btn small{color:var(--muted)}.panel,.record-card{margin-top:12px;border:1px solid rgba(255,255,255,.84);border-radius:24px;background:#ffffffeb;box-shadow:var(--shadow);padding:16px}.login-form{display:grid;gap:12px;margin-top:22px}.captcha-row{display:grid;grid-template-columns:1fr 118px;gap:8px;align-items:center}.captcha-img{height:42px;border:1px solid var(--line);border-radius:13px;overflow:hidden;color:var(--green-dark);background:#f7fbf8;font-size:13px;font-weight:800}.captcha-img img{display:block;width:100%;height:100%;object-fit:cover}.captcha-hint{color:var(--red);font-size:12px;font-weight:700}label{display:grid;gap:6px;min-width:0;color:#344d40;font-size:13px;font-weight:700}input,select,textarea{width:100%;min-width:0;border:1px solid var(--line);border-radius:13px;color:var(--text);background:#fff;outline:none;font-size:14px}input,select{height:42px;padding:0 11px}textarea{min-height:76px;resize:vertical;padding:10px 11px}input.invalid,select.invalid,textarea.invalid{border-color:#dc3545bf}.field-error{color:var(--red);font-size:12px;font-weight:700}.field-hint{color:var(--muted);font-size:12px;font-weight:700}.btn{min-height:46px;border:0;border-radius:15px;color:#fff;font-size:15px;font-weight:800}.btn.loading{display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn.loading:before{content:"";width:16px;height:16px;border:2px solid rgba(255,255,255,.52);border-top-color:#fff;border-radius:50%;animation:recognition-spin .8s linear infinite}.btn:disabled{opacity:.65}.btn.secondary{color:#234836;background:#e7f2eb}.entry-bg{background:linear-gradient(135deg,var(--green),var(--green-dark))}.exit-bg{background:linear-gradient(135deg,var(--blue),#1f557f)}.record-bg{background:linear-gradient(135deg,var(--orange),#9c5718)}.neutral-bg{background:linear-gradient(135deg,#637381,#364554)}.ghost-btn{border:0;border-radius:999px;color:var(--green-dark);background:#ffffffe6;padding:8px 12px;font-size:13px;font-weight:800}.page-topbar{position:sticky;top:0;z-index:6;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;margin:calc(-2px - env(safe-area-inset-top)) -2px 12px;padding:calc(10px + env(safe-area-inset-top)) 2px 10px;background:#f6fbf8db;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.page-topbar h1{min-width:0;margin:0;text-align:center;font-size:22px;line-height:1.25}.menu-topbar{margin-bottom:12px}.topbar-placeholder{width:52px}.back-btn{border:0;border-radius:999px;color:var(--green-dark);background:#ffffffeb;box-shadow:0 6px 14px #18352714;padding:9px 12px;font-size:14px;font-weight:800}.page-chip{min-width:52px;border-radius:999px;color:#fff;padding:7px 10px;text-align:center;font-size:12px;font-weight:900}.form-tabs{display:grid;gap:6px;margin:14px 0;padding:4px;border-radius:14px;background:#edf5ef}.form-tabs{grid-template-columns:repeat(4,1fr)}.form-tabs button{min-height:36px;border:0;border-radius:11px;color:#526b5e;background:transparent;font-size:13px;font-weight:900}.form-tabs button.active{color:#fff;background:linear-gradient(135deg,var(--green),var(--green-dark));box-shadow:0 8px 16px #1f8f5f33}.menu-page{display:grid;gap:12px}.menu-summary{border-radius:24px;color:#fff;background:linear-gradient(135deg,var(--green),var(--green-dark));box-shadow:0 14px 26px #1f8f5f33;padding:18px}.menu-summary>strong{display:block;color:#ffffffd1;font-size:13px}.menu-summary h2{margin-top:8px;font-size:22px;line-height:1.25}.menu-summary p{margin-top:7px;color:#ffffffd1;font-size:13px;line-height:1.6}.menu{display:grid;gap:10px}.menu-btn{width:100%;min-height:74px;border:1px solid rgba(215,229,220,.92);border-radius:18px;color:var(--text);background:#fffffff0;box-shadow:0 10px 22px #18352714;display:grid;grid-template-columns:44px 1fr auto;align-items:center;gap:12px;padding:13px 14px;text-align:left}.icon{width:44px;height:44px;border-radius:14px;font-size:20px}.menu-btn strong,.menu-btn small{display:block}.menu-btn strong{font-size:18px;line-height:1.25}.menu-btn small{margin-top:4px;font-size:12px}.menu-arrow{color:#9bb0a5;font-size:24px;line-height:1}.panel-head,.record-main{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.panel-head h2{font-size:18px}.panel-head span{color:var(--muted);font-size:12px}.form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.animal-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.plate-field{position:relative}.plate-suggestions{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:8;display:grid;gap:6px;max-height:240px;overflow-y:auto;overscroll-behavior:contain;padding:8px;border:1px solid var(--line);border-radius:13px;background:#fff;box-shadow:0 14px 32px #18352729}.plate-suggestions button{display:grid;gap:3px;width:100%;min-height:48px;border:0;border-radius:10px;color:var(--text);background:#f7fbf8;padding:8px 10px;text-align:left}.plate-suggestions strong,.plate-suggestions span{min-width:0;overflow-wrap:anywhere}.plate-suggestions span{color:var(--muted);font-size:12px}.full{grid-column:1 / -1}.span-2{grid-column:span 2}.span-1{grid-column:span 1}.row-start{grid-column-start:1}.span-3{grid-column:span 3}.checkbox-line{grid-column:span 2;display:flex;align-items:center;gap:8px;min-height:42px}.checkbox-line input{width:18px;height:18px}.record-list{display:grid;gap:10px}.record-card{margin-top:0;width:100%;border-color:#d7e5dceb;color:var(--text);text-align:left}.record-main strong{font-size:18px}.record-main p,.record-meta{margin-top:5px;font-size:12px;line-height:1.5}.records-view{display:grid;gap:12px}.record-card{cursor:pointer}.record-card:active{transform:translateY(1px)}.record-more{display:block;margin-top:10px;color:var(--green-dark);font-size:12px;font-weight:900}.record-detail-card{display:grid;gap:12px}.record-detail-card header{display:flex;align-items:center;justify-content:space-between;gap:12px}.record-detail-card header span,.record-detail-grid span{color:var(--muted);font-size:12px}.record-detail-card header strong{display:block;margin-top:4px;font-size:20px}.record-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:hidden;border:1px solid var(--line);border-radius:16px;background:#fff}.record-detail-grid p{display:grid;gap:5px;min-width:0;padding:12px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.record-detail-grid p:nth-child(2n),.record-detail-grid p:last-child{border-right:0}.record-detail-grid p:nth-last-child(-n+2){border-bottom:0}.record-detail-grid p.wide{grid-column:1 / -1;border-right:0}.record-detail-grid p.wide+p.wide{border-top:1px solid var(--line)}.record-detail-grid strong{min-width:0;overflow-wrap:anywhere;font-size:14px}.chip{min-width:52px;border-radius:999px;color:#fff;padding:7px 10px;text-align:center;font-size:12px;font-weight:800}.empty{padding:32px 14px;border:1px dashed #a9c7b5;border-radius:18px;color:var(--muted);background:#ffffffb8;text-align:center;font-size:14px}.upload-list{display:grid;gap:8px}.upload-row,.camera-row{min-height:42px;border:1px dashed #9ec0ac;border-radius:13px;background:#f8fcf9;display:grid;grid-template-columns:1fr auto;align-items:center;gap:10px;padding:8px 10px}.upload-row.quarantine-upload{grid-template-columns:minmax(92px,.85fr) minmax(0,2fr);align-items:stretch;gap:12px;padding:12px;border-style:solid;background:linear-gradient(180deg,#fbfffc,#f3faf6)}.upload-copy{display:grid;align-content:center;gap:4px;min-width:0}.quarantine-card{display:grid;grid-template-columns:48px minmax(0,1fr);gap:10px;min-width:0;padding:10px;border:1px solid #cfe1d6;border-radius:16px;background:#fff;box-shadow:0 8px 18px #18352712}.quarantine-card .doc-thumb{width:48px;height:48px;border-radius:14px}.doc-thumb-button{width:48px;height:48px;border:0;border-radius:14px;background:transparent;padding:0}.quarantine-card img.doc-thumb{display:block;object-fit:cover}.quarantine-card .doc-meta{align-self:center}.quarantine-card .doc-meta strong{color:var(--green-dark);font-size:13px}.quarantine-card .doc-meta small{margin-top:4px;white-space:normal;line-height:1.35}.quarantine-actions{grid-column:1 / -1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.upload-row input,.camera-row input{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.upload-row strong,.camera-row strong{display:block;font-size:13px;line-height:1.2}.upload-row small,.camera-row small{display:block;margin-top:2px;color:var(--muted);font-size:10px;line-height:1.2}.upload-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap}.scene-capture{display:grid;grid-template-columns:repeat(2,auto);align-items:center;justify-content:end;gap:6px}.scene-capture .btn{min-height:34px;border-radius:11px;padding:0 10px;font-size:12px}.scene-capture .upload-action{min-height:34px;border-radius:11px}.scene-photo-preview .scene-photo-action{min-height:30px;border-radius:9px;padding:0 8px;font-size:12px;white-space:nowrap}.upload-action{min-width:68px;min-height:30px;border:0;border-radius:10px;color:#fff;background:linear-gradient(135deg,var(--green),var(--green-dark));display:grid;place-items:center;padding:0 10px;font-size:12px;font-weight:900}.upload-action:disabled{opacity:.62}.upload-action.secondary{color:#234836;background:#e7f2eb}.upload-action.confirm{background:linear-gradient(135deg,var(--orange),#9c5718)}.file-name{max-width:110px;overflow:hidden;color:var(--green-dark);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:700}.doc-preview{min-width:190px;max-width:min(58vw,260px);min-height:58px;display:grid;grid-template-columns:64px minmax(0,1fr) auto;align-items:center;gap:8px;border:1px solid #cfe1d6;border-radius:12px;background:#fff;padding:6px;box-shadow:0 8px 18px #1835270f}.doc-preview img,.doc-preview-thumb,.doc-thumb{width:64px;height:46px;border-radius:8px;border:1px solid var(--line);background:#eef7ef}.doc-preview-thumb{border:0;padding:0}.doc-preview img{width:100%;height:100%;display:block;object-fit:cover}.doc-thumb{display:grid;place-items:center;color:var(--green-dark);font-size:14px;font-weight:900}.doc-meta{min-width:0}.doc-meta strong,.doc-meta small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.doc-meta strong{color:var(--green-dark);font-size:12px}.doc-meta small{color:var(--muted);font-size:10px}.doc-delete{min-width:44px;min-height:30px;border:0;border-radius:9px;color:#fff;background:var(--red);padding:0 8px;font-size:12px;font-weight:900}.recognition-card{display:grid;grid-template-columns:24px minmax(0,1fr);gap:10px;align-items:start;padding:12px;border:1px solid #cfe0f5;border-radius:12px;background:#f7fbff}.recognition-card p{margin:4px 0 0;color:#64748b;font-size:12px;line-height:1.5}.recognition-spinner{width:18px;height:18px;margin-top:2px;border:2px solid #b9d4f4;border-top-color:#285fbd;border-radius:50%;animation:recognition-spin .8s linear infinite}.recognition-actions{grid-column:1 / -1;display:grid;grid-template-columns:1fr 1fr;gap:8px}.recognition-status{margin-top:8px;color:var(--green-dark);font-size:12px;font-weight:800}.recognition-status.warning{color:#b45309}.recognition-status.success{color:var(--green-dark)}.exit-certificate-review{display:grid;gap:10px;border:1px solid #f2c46d;border-radius:16px;background:#fffaf0;padding:12px}.exit-certificate-review header{display:flex;align-items:center;justify-content:space-between;gap:10px}.exit-certificate-review header strong{color:var(--green-dark);font-size:15px}.exit-certificate-review header span{color:#b45309;font-size:12px;font-weight:800}.exit-certificate-review img{width:100%;max-height:220px;object-fit:contain;border:1px solid #f1d49a;border-radius:12px;background:#fff}.exit-certificate-review label{display:grid;gap:6px;color:var(--green-dark);font-size:13px;font-weight:800}.exit-certificate-review input,.exit-certificate-review textarea{width:100%;border:1px solid #dbe8de;border-radius:12px;padding:10px 12px;font:inherit;background:#fff}.exit-certificate-review textarea{min-height:90px;resize:vertical}.review-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}@keyframes recognition-spin{to{transform:rotate(360deg)}}.actions{display:grid;grid-template-columns:1fr;gap:10px;margin-top:14px;position:sticky;bottom:calc(14px + env(safe-area-inset-bottom));z-index:4;padding:8px;border-radius:20px;background:#f6fbf8db;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.flow-card{border:1px solid rgba(215,229,220,.92);border-radius:20px;background:#ffffffe0;box-shadow:0 10px 22px #18352712;padding:14px}.flow-card.compact{margin-bottom:12px}.flow-card strong,.flow-card p{display:block}.flow-card strong{margin-bottom:8px;font-size:15px}.flow-card p,.weigh-status p{color:var(--muted);font-size:12px;line-height:1.6}.weigh-status{display:grid;gap:8px}.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));z-index:20;max-width:calc(100% - 40px);padding:12px 16px;border-radius:999px;color:#fff;background:#12261ce6;font-size:14px;opacity:0;pointer-events:none;transform:translate(-50%) translateY(18px);transition:.22s ease}.toast.show{opacity:1;transform:translate(-50%) translateY(0)}.selected-summary{padding:10px 12px;border:1px solid #dfe7f3;border-radius:10px;background:#f8fbff}.settlement-detail-page{display:block;padding:10px;background:#fff}.detail-loading{color:var(--muted);text-align:center;font-size:13px}.exit-ticket-paper{width:min(100%,760px);margin:0 auto;padding:18px 14px 22px;border:2px solid #b91c1c;color:#171717;background:repeating-linear-gradient(115deg,rgba(185,28,28,.035) 0 1px,transparent 1px 12px),#fffdfb}.exit-ticket-head{display:grid;grid-template-columns:1fr auto;gap:6px 16px;align-items:end;padding:0 4px 14px;color:#b91c1c}.exit-ticket-head span{grid-column:1 / -1;color:#7f1d1d;text-align:center;font-size:13px;font-weight:800}.exit-ticket-head h1{margin:0;color:#111827;text-align:center;font-size:25px;line-height:1.25;font-weight:900}.exit-ticket-head strong{color:#dc2626;font-size:18px}.exit-ticket-table{display:grid;border-top:1px solid #b91c1c;border-left:1px solid #b91c1c}.exit-ticket-table p{display:grid;grid-template-columns:104px minmax(0,1fr) 104px minmax(0,1fr);min-height:42px;margin:0}.exit-ticket-table p.wide{grid-template-columns:104px minmax(0,1fr)}.exit-ticket-table span,.exit-ticket-table strong{display:flex;align-items:center;min-width:0;padding:9px 10px;border-right:1px solid #b91c1c;border-bottom:1px solid #b91c1c;overflow-wrap:anywhere;line-height:1.5}.exit-ticket-table span{justify-content:center;color:#991b1b;font-weight:900}.exit-ticket-table strong{font-weight:800}.settlement-order-details{display:grid;gap:10px;margin-top:14px}.settlement-order-details>header{display:flex;justify-content:space-between;gap:12px;align-items:center;color:#7f1d1d;font-weight:900}.settlement-order-details>header strong{color:#dc2626}.settlement-order-card{display:grid;gap:10px;padding:12px;border:1px solid rgba(185,28,28,.5);border-radius:8px;background:#fffbeb7a}.settlement-order-head{display:flex;justify-content:space-between;gap:12px;align-items:center}.settlement-order-head strong{min-width:0;color:#111827;overflow-wrap:anywhere;font-size:16px}.settlement-order-head span{flex:0 0 auto;color:#b91c1c;font-weight:900}.settlement-order-meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.settlement-order-meta p{display:grid;gap:2px;margin:0;min-width:0}.settlement-order-meta span,.settlement-order-items em{color:#7f1d1d;font-size:12px;font-style:normal}.settlement-order-meta strong{min-width:0;color:#111827;overflow-wrap:anywhere;font-size:14px}.settlement-order-items{display:grid;gap:6px}.settlement-order-items p{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(70px,.7fr) minmax(0,1fr);gap:8px;align-items:center;margin:0;padding:8px 10px;border:1px dashed rgba(185,28,28,.36);border-radius:6px;background:#ffffffb8}.settlement-order-items span,.settlement-order-items strong,.settlement-order-items em{min-width:0;overflow-wrap:anywhere}.settlement-order-items span{color:#111827;font-weight:900}.settlement-order-items strong{color:#111827}.settlement-order-empty{margin:0;color:#7f1d1d;font-size:13px}.exit-ticket-foot{display:grid;gap:18px;padding:18px 8px 0;color:#7f1d1d;line-height:1.7;font-weight:800}.exit-ticket-foot p{margin:0;text-align:center}.exit-ticket-foot div{display:flex;justify-content:space-between;gap:16px;align-items:end}.exit-ticket-foot strong{display:inline-flex;align-items:center;justify-content:center;min-width:86px;min-height:86px;border:3px solid #dc2626;border-radius:999px;color:#dc2626;font-size:18px}.selected-summary p{margin:4px 0;color:#5b6677}.selected-summary strong{display:inline-block;min-width:44px;margin-right:8px;color:#1f2937}.helper-text{margin:0;color:#64748b;font-size:13px}.ticket-scan-card{display:grid;gap:10px;margin:0 0 14px;padding:12px;border:1px solid #cfe0f5;border-radius:10px;background:#f7fbff}.ticket-scan-card.done{border-color:#9bd5b4;background:#f4fbf7}.ticket-scan-primary{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px}.ticket-scan-primary p{margin:4px 0 0;color:#64748b;font-size:13px;line-height:1.5}.manual-toggle{justify-self:start;border:0;color:#285fbd;background:transparent;padding:2px 0;font-size:13px;font-weight:800}.scanner-mask{position:fixed;inset:0;z-index:40;display:grid;place-items:end center;padding:18px;background:#081812b8}.scanner-panel{display:grid;gap:12px;width:min(100%,460px);max-height:calc(100vh - 36px);overflow:auto;border-radius:18px;background:#fff;box-shadow:0 24px 60px #08181247;padding:14px}.scanner-head{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:12px}.scanner-head p{margin:4px 0 0;color:#64748b;font-size:13px;line-height:1.5}.scanner-close{border:0;border-radius:999px;color:var(--green-dark);background:#edf5ef;padding:8px 12px;font-size:13px;font-weight:900}.scanner-viewport{position:relative;aspect-ratio:1;overflow:hidden;border-radius:14px;background:#0f172a}.scanner-viewport video,.scanner-viewport canvas{border-radius:14px}.scanner-frame{position:absolute;inset:18%;border:3px solid rgba(255,255,255,.92);border-radius:16px;box-shadow:0 0 0 999px #0818123d}.scanner-offline{display:grid;place-content:center;gap:8px;min-height:100%;padding:24px;color:#fff;text-align:center}.scanner-offline p{margin:0;color:#ffffffc7;font-size:13px;line-height:1.55}.scanner-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.ticket-scan-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px}.option-picker{display:grid;gap:8px;color:#334155;font-size:13px;font-weight:700}.option-list{display:grid;gap:8px;max-height:220px;overflow-y:auto;overscroll-behavior:contain;padding:8px;border:1px solid #dfe7f3;border-radius:10px;background:#fff}.option-list.compact{max-height:190px}.option-card{display:grid;gap:4px;width:100%;min-height:58px;padding:10px;border:1px solid #d8e3f2;border-radius:8px;color:#334155;text-align:left;background:#fbfdff}.option-card.selected{border-color:#2563eb;background:#eef5ff;box-shadow:0 0 0 2px #2563eb1a}.option-card strong,.option-card span{min-width:0;overflow-wrap:anywhere}.option-card span{color:#64748b;font-size:12px;line-height:1.45}.option-empty{margin:0;padding:14px 8px;color:#64748b;text-align:center;font-size:13px;font-weight:400}.supply-picker{display:grid;gap:10px;padding:12px;border:1px solid #dfe7f3;border-radius:10px;background:#fbfdff}.supply-picker-head,.supply-search{display:grid;align-items:center;gap:10px}.supply-picker-head{grid-template-columns:minmax(0,1fr) auto}.supply-picker-head div{display:grid;gap:3px;min-width:0}.supply-picker-head strong{color:#334155;font-size:14px}.supply-picker-head span{color:#64748b;font-size:12px}.supply-search{grid-template-columns:minmax(0,1fr) auto}.supply-candidate-list{padding:0;border:0;background:transparent}.allocation-list{display:grid;gap:10px}.allocation-card{display:grid;gap:10px;padding:12px;border:1px solid #dfe7f3;border-radius:10px;background:#fbfdff}.allocation-card.is-new{animation:allocation-enter .62s ease-out}.derived-batch{display:grid;gap:6px;padding:10px;border:1px solid #dfe7f3;border-radius:8px;background:#f8fbff}.derived-batch strong{color:#334155;font-size:13px}.derived-batch p{max-height:92px;overflow:auto;margin:0;color:#64748b;font-size:13px;line-height:1.55;overflow-wrap:anywhere}@keyframes allocation-enter{0%{opacity:0;transform:translateY(-10px);border-color:#2563eb;background:#eef5ff}to{opacity:1;transform:translateY(0);border-color:#dfe7f3;background:#fbfdff}}.certificate-batch-list{display:grid;gap:12px}.certificate-batch-card{display:grid;gap:10px;padding:12px;border:1px solid #dfe7f3;border-radius:10px;background:#fbfdff}.certificate-batch-card header,.certificate-actions,.certificate-preview{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.certificate-batch-card header{display:grid;grid-template-columns:minmax(0,1fr) auto auto;color:#334155}.certificate-batch-card header span,.certificate-preview small{color:#64748b;font-size:13px}.certificate-delete{min-width:44px;min-height:28px;border:0;border-radius:8px;color:#fff;background:#c94b3f;padding:0 9px;font-size:12px;font-weight:900}.certificate-preview-thumb{border:0;background:transparent;padding:0}.certificate-preview img,.certificate-preview-thumb{width:56px;height:42px;border-radius:8px}.certificate-preview img{display:block;object-fit:cover;border-radius:8px}.exit-certificate-fields{align-items:start}.image-preview-mask{position:fixed;inset:0;z-index:45;display:grid;place-items:center;padding:18px;background:#081812c7}.image-preview-panel{display:grid;gap:12px;justify-items:end;width:min(100%,720px);max-height:calc(100vh - 36px)}.image-preview-panel img{justify-self:center;max-width:100%;max-height:calc(100vh - 96px);border-radius:12px;object-fit:contain;background:#fff;box-shadow:0 24px 60px #08181252}.search-field input{border-color:#bfd4f5;background:#f8fbff}.exit-steps{display:grid;gap:12px}.exit-step{display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:10px;padding:12px;border:1px solid #dfe7f3;border-radius:10px;background:#fbfdff}.exit-step.done{border-color:#9bd5b4;background:#f4fbf7}.exit-step p{margin:3px 0 0;color:#64748b;font-size:13px}.release-checks{display:grid;gap:8px;padding:10px 12px;border:1px solid #f3d6a4;border-radius:10px;background:#fffaf0}.release-checks p{display:grid;grid-template-columns:52px minmax(0,1fr);gap:8px;margin:0;color:#92400e;font-size:13px;line-height:1.5}.release-checks p.passed{color:#166534}.release-checks strong{font-weight:900}.step-index{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;color:#fff;background:#285fbd;font-weight:700}.exit-step input[type=file],.ticket-scan-card input[type=file],.upload-row input[type=file],.hidden-file-input{display:none}@media(max-width:560px){.settlement-detail-page{padding:6px}.exit-ticket-paper{padding:14px 8px 18px}.exit-ticket-head{grid-template-columns:1fr;text-align:center}.exit-ticket-head h1{font-size:21px}.exit-ticket-table p,.exit-ticket-table p.wide{grid-template-columns:88px minmax(0,1fr)}.exit-ticket-table p:not(.wide) span:nth-of-type(2),.exit-ticket-table p:not(.wide) strong:nth-of-type(2){grid-column:auto}.exit-ticket-table p:not(.wide){grid-auto-rows:minmax(40px,auto)}.settlement-order-meta,.settlement-order-items p,.upload-row.quarantine-upload,.ticket-scan-form,.exit-certificate-fields{grid-template-columns:1fr}.exit-certificate-fields .span-1,.exit-certificate-fields .span-2{grid-column:1 / -1}.supply-picker-head,.supply-search,.ticket-scan-primary{grid-template-columns:1fr}.ticket-scan-primary .btn{width:100%}.scanner-mask{align-items:end;padding:10px}.scanner-panel{max-height:calc(100vh - 20px);border-radius:16px}.scanner-actions,.recognition-actions{grid-template-columns:1fr}.exit-step{grid-template-columns:34px 1fr}.exit-step>.btn,.exit-step>.upload-actions{grid-column:1 / -1}}@media(min-width:960px){.app-shell{padding:24px 32px 40px}.login-page{width:min(100%,460px);margin:0 auto}.page-topbar,.menu-page,.entry-workspace,.records-view,.app-shell>.panel{width:min(100%,1440px);margin-right:auto;margin-left:auto}.page-topbar{padding-right:4px;padding-left:4px}.menu-page{grid-template-columns:minmax(280px,.72fr) minmax(560px,1.28fr);align-items:start;gap:18px}.menu{grid-template-columns:repeat(2,minmax(0,1fr))}.entry-workspace{display:grid;grid-template-columns:minmax(360px,.78fr) minmax(560px,1.22fr);align-items:start;gap:16px}.entry-workspace>.panel{margin-top:0}.app-shell>.panel{max-width:1200px}.records-view .record-list{grid-template-columns:repeat(2,minmax(0,1fr))}.records-view.has-detail{grid-template-columns:minmax(360px,.8fr) minmax(0,1.2fr);align-items:start}.records-view.has-detail .record-detail-card{position:sticky;top:82px;margin-top:0}.records-view.has-detail .record-list{grid-template-columns:1fr}.scanner-mask{place-items:center}}.public-pass-page{width:min(100%,760px);min-height:100vh;margin:0 auto;padding:max(20px,env(safe-area-inset-top)) 18px max(30px,env(safe-area-inset-bottom));color:#17251d;background:#f5f8f6;font-size:18px}.public-pass-header{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:58px;margin-bottom:28px}.public-pass-header>strong{font-size:22px}.language-switch{display:grid;grid-template-columns:1fr 1fr;min-width:150px;padding:3px;border:2px solid #235f42;border-radius:8px;background:#fff}.language-switch button{min-height:44px;border:0;border-radius:5px;color:#235f42;background:#fff;font-size:17px;font-weight:800}.language-switch button.active{color:#fff;background:#235f42}.role-step h1,.public-pass-form-wrap h1,.public-pass-result h1{margin:0 0 24px;text-align:center;font-size:30px;line-height:1.35;letter-spacing:0}.role-choices{display:grid;gap:18px}.role-choice{display:grid;grid-template-columns:150px minmax(0,1fr);align-items:center;gap:20px;width:100%;min-height:180px;padding:14px;border:3px solid #b8322a;border-radius:8px;color:#8b1f19;background:#fff;text-align:left;box-shadow:0 8px 20px #14432d1a}.role-choice.buyer-choice{border-color:#28659a;color:#143f65}.role-visual{position:relative;display:block;width:150px;aspect-ratio:1}.role-visual img{display:block;width:150px;aspect-ratio:1;border-radius:6px;object-fit:cover}.role-visual b{position:absolute;top:7px;left:7px;display:grid;place-items:center;width:48px;height:48px;border:3px solid #fff;border-radius:50%;color:#fff;background:#b8322a;font-size:28px;line-height:1;box-shadow:0 2px 6px #0000003d}.buyer-choice .role-visual b{background:#28659a}.role-choice strong{min-width:0;overflow-wrap:anywhere;font-size:30px;line-height:1.35;letter-spacing:0}.large-back{min-height:52px;margin-bottom:16px;border:2px solid #235f42;border-radius:8px;color:#235f42;background:#fff;padding:0 18px;font-size:19px;font-weight:800}.public-pass-form{display:grid;gap:20px}.public-pass-form>label{gap:9px;color:#17251d;font-size:19px}.public-pass-form input{height:58px;border:2px solid #9aada1;border-radius:8px;padding:0 15px;font-size:20px}.elder-upload{display:grid;gap:12px;padding:18px 0;border-top:2px solid #d5dfd9}.elder-upload>div{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.elder-upload strong{font-size:21px}.elder-upload span,.elder-upload p{color:#51675a;font-size:16px}.elder-upload-button,.public-pass-submit{display:flex;align-items:center;justify-content:center;min-height:62px;border:0;border-radius:8px;color:#fff;background:#28659a;padding:10px 18px;font-size:21px;font-weight:900;text-align:center}.elder-upload-button input{display:none}.public-pass-submit{width:100%;background:#235f42}.public-pass-submit:disabled{opacity:.62}.public-pass-error{padding:14px;border-left:5px solid #b8322a;color:#8b1f19;background:#fff2f1;font-size:18px;font-weight:800;line-height:1.5}.pass-warning{width:100%;margin:0;padding:14px;border-left:5px solid #b36b00;color:#704600;background:#fff7df;font-size:18px;font-weight:800;line-height:1.5}.public-pass-result{display:grid;justify-items:center;gap:18px}.pass-status{width:100%;padding:18px;border:3px solid currentColor;border-radius:8px;text-align:center;font-size:22px;font-weight:900}.pass-status.allowed{color:#17613b;background:#edf8f1}.pass-status.denied{color:#a12b24;background:#fff2f1}.pass-qr{width:min(82vw,320px);aspect-ratio:1;border:10px solid #fff;image-rendering:pixelated}.missing-fields,.valid-today{width:100%;text-align:center;font-size:19px;line-height:1.6}.secondary-action{color:#235f42;background:#e4eee8}@media(min-width:760px){.public-pass-page{padding-inline:34px}.role-choices{grid-template-columns:1fr 1fr}.role-choice{grid-template-columns:1fr;justify-items:center;text-align:center;min-height:290px}.role-visual,.role-visual img{width:180px}}@media(max-width:430px){.public-pass-page{padding-inline:14px}.public-pass-header{align-items:flex-start}.public-pass-header>strong{max-width:130px}.language-switch{min-width:142px}.role-step h1,.public-pass-form-wrap h1,.public-pass-result h1{font-size:27px}.role-choice{grid-template-columns:120px minmax(0,1fr);min-height:150px;gap:14px}.role-visual,.role-visual img{width:120px}.role-choice strong{font-size:27px}}.access-pass-workbench{display:grid;gap:18px;width:min(100%,1280px);margin:0 auto;padding:16px}.access-pass-list-pane,.access-pass-detail-pane{min-width:0}.workbench-actions,.completion-actions{display:flex;flex-wrap:wrap;gap:10px}.workbench-actions .btn,.completion-actions .btn,.identity-match .btn{min-height:48px}.access-pass-workbench .btn.primary{color:#fff;background:#216247}.file-action{position:relative;overflow:hidden;cursor:pointer}.file-action.disabled{opacity:.55;cursor:not-allowed}.converted-pass{align-self:center;color:#17613b;font-weight:700}.file-action input,.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.token-search{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin-top:12px}.token-search input{min-width:0;height:48px;border:1px solid #a8b5ae;border-radius:6px;padding:0 12px;font-size:16px}.workbench-error,.missing-summary{margin:12px 0;color:#9c2d26;font-weight:700}.access-pass-records{display:grid;gap:8px;margin-top:14px}.access-pass-records>button,.identity-match>button{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:70px;border:1px solid #c9d2cd;border-radius:6px;padding:12px;color:#1d2b24;background:#fff;text-align:left}.access-pass-records>button.active{border:2px solid #216247;background:#f0f7f3}.access-pass-records span{display:grid;gap:5px;min-width:0}.access-pass-records small{color:#617168}.status-pass{color:#17613b}.status-deny{color:#a12b24}.empty-pass-list,.empty-pass-detail{color:#65746c;text-align:center;padding:32px 12px}.pass-detail-content,.staff-pass-create{display:grid;gap:18px}.staff-pass-create h2{margin:0;font-size:22px}.staff-role-switch{display:grid;grid-template-columns:1fr 1fr;padding:3px;border:2px solid #216247;border-radius:6px}.staff-role-switch button{min-height:48px;border:0;color:#216247;background:#fff;font-size:18px;font-weight:800}.staff-role-switch button.active{color:#fff;background:#216247}.staff-pass-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.staff-pass-fields label{display:grid;gap:7px;font-weight:700}.staff-pass-fields input{min-width:0;height:48px;border:1px solid #a8b5ae;border-radius:6px;padding:0 12px;font-size:17px}.staff-pass-qr{width:min(240px,100%);aspect-ratio:1;justify-self:center;border:8px solid #fff}.pass-verdict{display:grid;gap:6px;padding:18px;border-left:7px solid currentColor}.pass-verdict.allowed{color:#17613b;background:#edf8f1}.pass-verdict.denied{color:#a12b24;background:#fff2f1}.pass-verdict strong{font-size:26px}.pass-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin:0;border-top:1px solid #d9e0dc}.pass-fields>div{min-width:0;padding:12px 8px;border-bottom:1px solid #d9e0dc}.pass-fields dt{color:#65746c;font-size:14px}.pass-fields dd{margin:5px 0 0;overflow-wrap:anywhere;font-weight:700}.identity-match{display:grid;gap:10px;padding-top:18px;border-top:1px solid #d9e0dc}.identity-match h2{margin:0;font-size:18px}@media(min-width:960px){.access-pass-workbench{grid-template-columns:minmax(360px,.9fr) minmax(520px,1.35fr);align-items:start}.access-pass-list-pane{max-height:calc(100vh - 105px);overflow:auto;padding-right:10px;border-right:1px solid #d9e0dc}.access-pass-detail-pane{min-height:500px;padding:4px 14px}}@media(max-width:540px){.access-pass-workbench{padding:12px}.token-search{grid-template-columns:1fr}.token-search .btn,.workbench-actions .btn,.completion-actions .btn{width:100%}.pass-fields,.staff-pass-fields{grid-template-columns:1fr}}
