:root{--ink:#1b1f24;--ink-2:#3a414b;--muted:#5a6270;--line:#e1e4e8;--line-soft:#eef0f2;--input-line:#c9ced6;--ground:#f6f7f9;--surface:#fff;--brand:#0f6e6e;--brand-dark:#0b5454;--brand-deep:#0f4c4c;--brand-tint:#dcefef;--brand-wash:#eaf5f5;--warn:#92400e;--warn-line:#d97706;--warn-wash:#fffbeb;--danger:#9b1c1c;--danger-line:#f3b7b7;--danger-wash:#fdecec;--radius:8px;color:var(--ink);background:var(--ground);-webkit-font-smoothing:antialiased;font-family:IBM Plex Sans,system-ui,sans-serif}*{box-sizing:border-box}body,h1,h2,h3,p{margin:0}a{color:var(--brand)}a:hover{color:var(--brand-dark)}:focus-visible{outline:2px solid var(--brand);outline-offset:1px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.btn{border-radius:var(--radius);cursor:pointer;white-space:nowrap;border:1px solid var(--input-line);background:var(--surface);height:44px;color:var(--ink);justify-content:center;align-items:center;gap:8px;padding:0 18px;font-family:inherit;font-size:15px;font-weight:500;line-height:1;text-decoration:none;display:inline-flex}.btn:hover{background:var(--ground);color:var(--ink)}.btn:disabled{opacity:.6;cursor:default}.btn-primary{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}.btn-primary:hover{background:var(--brand-dark);color:#fff}.btn-danger{color:var(--danger);border-color:var(--danger-line)}.btn-danger:hover{background:var(--danger-wash);color:var(--danger)}.btn-sm{height:38px;padding:0 14px;font-size:14px}.btn-icon{width:38px;height:38px;color:var(--ink-2);background:0 0;border-color:#0000;padding:0}.btn-block{width:100%}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field label,.label{font-size:14px;font-weight:500}.input{border:1px solid var(--input-line);border-radius:var(--radius);width:100%;height:44px;color:var(--ink);background:var(--surface);padding:0 12px;font-family:inherit;font-size:15px}textarea.input{resize:vertical;height:auto;padding:10px 12px}.input.uncertain{border:1.5px solid var(--warn-line);background:var(--warn-wash)}.input.invalid{border:1.5px solid #c53030}.hint-warn{color:var(--warn);align-items:center;gap:6px;font-size:12px;display:flex}.hint-error{color:#b42318;font-size:12px}.check{color:var(--ink-2);align-items:center;gap:8px;font-size:14px;display:flex}.check input{width:18px;height:18px;accent-color:var(--brand);margin:0}.alert{border-radius:var(--radius);background:var(--danger-wash);border:1px solid var(--danger-line);color:var(--danger);align-items:flex-start;gap:10px;padding:12px 14px;font-size:14px;line-height:1.4;display:flex}.alert svg{flex:none;margin-top:1px}.app-header{background:var(--surface);border-bottom:1px solid var(--line)}.app-header-inner{justify-content:space-between;align-items:center;gap:16px;max-width:1200px;height:64px;margin:0 auto;padding:0 16px;display:flex}.brand{color:var(--brand-deep);align-items:center;gap:10px;font-weight:600;text-decoration:none;display:flex}.brand:hover{color:var(--brand-deep)}.brand-logo{object-fit:contain;width:auto;max-width:160px;height:32px;display:block}.login-hero .brand-logo{box-sizing:content-box;background:#fff;border-radius:8px;max-width:200px;height:40px;padding:6px 10px}.logo-preview{border:1px dashed var(--line);background:var(--line-soft);border-radius:12px;justify-content:center;align-items:center;min-height:120px;padding:24px;display:flex}.logo-preview img{object-fit:contain;max-width:100%;max-height:96px}.user-box{align-items:center;gap:16px;font-size:14px;display:flex}.avatar{background:var(--brand-tint);width:34px;height:34px;color:var(--brand-deep);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:flex}.avatar.neutral{background:var(--line-soft);width:36px;height:36px;color:var(--ink-2)}.user-name{color:var(--ink-2)}.link-button{font:inherit;color:var(--brand);cursor:pointer;background:0 0;border:none;padding:8px 0}.link-button:hover{color:var(--brand-dark);text-decoration:underline}.page{flex-direction:column;gap:24px;max-width:1200px;margin:0 auto;padding:24px 16px 48px;display:flex}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.page-title{flex-direction:column;gap:6px;display:flex}.page-title h1{font-size:28px;font-weight:600}.subtle{color:var(--muted);font-size:15px}.back-link{align-items:center;gap:6px;font-size:14px;text-decoration:none;display:inline-flex}.actions{flex-wrap:wrap;gap:12px;display:flex}.card{background:var(--surface);border:1px solid var(--line);border-radius:12px}.card-pad{padding:24px}.split{flex-wrap:wrap;align-items:flex-start;gap:24px;display:flex}.split-main{flex:999 560px;min-width:0}.split-side{flex-direction:column;flex:320px;gap:16px;min-width:0;display:flex}.contact-form{flex-direction:column;gap:28px;padding:28px;display:flex}.contact-form fieldset{border:none;flex-direction:column;gap:16px;margin:0;padding:0;display:flex}.contact-form fieldset+fieldset{border-top:1px solid var(--line-soft);padding-top:24px}.contact-form legend{float:left;width:100%;margin-bottom:0;padding:0;font-size:16px;font-weight:600}.row{flex-wrap:wrap;gap:16px;display:flex}.row>.field{flex:220px}.row>.field.w-s{flex:100px}.row>.field.w-l{flex:3 200px}.row>.field.w-m{flex:2 160px}.row>.field.w-xl{flex:100%}.details{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px 24px;margin:0;display:grid}.details dt{color:var(--muted);font-size:13px}.details dd{overflow-wrap:anywhere;margin:2px 0 0;font-size:15px}.form-footer{border-top:1px solid var(--line-soft);flex-wrap:wrap;justify-content:flex-end;gap:12px;padding-top:24px;display:flex}.form-footer .spacer{flex:1}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.search{flex:320px;max-width:420px;position:relative}.search svg{color:var(--muted);position:absolute;top:13px;left:12px}.search .input{padding-left:38px}.segmented{background:#e9ecef;border-radius:10px;gap:4px;padding:4px;display:flex}.segmented button{height:36px;color:var(--ink-2);cursor:pointer;background:0 0;border:none;border-radius:7px;padding:0 14px;font-family:inherit;font-size:14px;font-weight:500}.segmented button[aria-pressed=true]{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:0 1px 2px #00000014}.table-wrap{overflow-x:auto}.table{border-collapse:collapse;width:100%;min-width:920px;font-size:14px}.table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);padding:14px 16px;font-size:13px;font-weight:500}.table td{border-bottom:1px solid var(--line-soft);padding:12px 16px}.table tbody tr{cursor:pointer}.table tbody tr:hover{background:var(--ground)}.table tbody tr:last-child td{border-bottom:none}.person{align-items:center;gap:12px;display:flex}.person-name{font-weight:500}.person-role{color:var(--muted);font-size:13px}.nowrap{white-space:nowrap}.muted{color:var(--muted)}.badge{background:var(--line-soft);color:var(--ink-2);border-radius:999px;padding:3px 10px;font-size:12px;font-weight:500;display:inline-flex}.badge.scan{background:var(--brand-tint);color:var(--brand-dark)}.badge.off{background:var(--danger-wash);color:var(--danger)}.alert-ok{background:var(--brand-wash);color:#0b4545;border-color:#c5e2e2}.dialog{width:min(440px,100vw - 32px);color:var(--ink);border:none;border-radius:12px;padding:24px;font-family:inherit;box-shadow:0 12px 40px #00000040}.dialog::backdrop{background:#0f141973}.filters{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.filters .field{flex:180px}.filters .field.wide{flex:2 260px}.log-time{white-space:nowrap;font-variant-numeric:tabular-nums}.log-action{background:var(--line-soft);color:var(--ink-2);white-space:nowrap;border-radius:6px;padding:3px 8px;font-size:12px;font-weight:500;display:inline-flex}.log-action.warn{background:var(--danger-wash);color:var(--danger)}.log-action.auth{background:var(--brand-tint);color:var(--brand-dark)}.log-sub{color:var(--muted);font-size:12px}.table-static tbody tr{cursor:default}.main-nav{gap:4px;margin-left:24px;margin-right:auto;display:flex}.main-nav a{border-radius:var(--radius);color:var(--ink-2);padding:8px 12px;font-size:14px;font-weight:500;text-decoration:none}.main-nav a:hover{background:var(--ground);color:var(--ink)}.main-nav a.active{background:var(--brand-wash);color:var(--brand-dark)}@media (width<=600px){.main-nav{margin-left:8px}.user-name{display:none}}.empty{text-align:center;color:var(--muted);padding:48px 16px;font-size:15px}.pager{color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;font-size:14px;display:flex}.login{flex-wrap:wrap;min-height:100vh;display:flex}.login-hero{background:var(--brand-deep);color:#fff;flex-direction:column;flex:420px;justify-content:space-between;gap:48px;padding:56px 48px;display:flex}.login-hero h1{max-width:460px;font-size:40px;font-weight:600;line-height:1.15}.login-hero p{color:#ffffffd9;max-width:460px;font-size:17px;line-height:1.55}.login-hero small{color:#ffffffbf;font-size:13px}.login-main{flex:480px;justify-content:center;align-items:center;padding:48px 16px;display:flex}.login-form{flex-direction:column;gap:20px;width:100%;max-width:400px;padding:40px 32px;display:flex}.login-form h2{font-size:26px;font-weight:600}@media (width<=600px){.login-hero{gap:24px;padding:32px 24px}.login-hero h1{font-size:28px}.login-form{padding:28px 20px}.contact-form{padding:20px}}.stepper{flex-wrap:wrap;gap:8px;margin:0;padding:0;font-size:14px;list-style:none;display:flex}.stepper li{color:var(--muted);align-items:center;gap:8px;display:flex}.stepper .dot{background:var(--line-soft);width:26px;height:26px;color:var(--muted);border-radius:50%;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:flex}.stepper li.done .dot{background:var(--brand-tint);color:var(--brand-dark)}.stepper li.current{color:var(--ink);font-weight:600}.stepper li.current .dot{background:var(--brand);color:#fff}.stepper .sep{background:var(--input-line);width:28px;height:1px;margin-left:4px}.dropzone{border:2px dashed var(--input-line);text-align:center;border-radius:12px;flex-direction:column;align-items:center;gap:14px;width:100%;max-width:640px;padding:48px 24px;display:flex}.dropzone.over{border-color:var(--brand);background:var(--brand-wash)}.dropzone h2{font-size:20px;font-weight:600}.dropzone p{color:var(--muted);max-width:440px;font-size:15px;line-height:1.5}.center-col{flex-direction:column;align-items:center;gap:20px;padding:32px 24px;display:flex}.photo-frame{background:#2a3038;border-radius:10px;justify-content:center;padding:20px;display:flex}.photo-frame img{border-radius:4px;max-width:100%;max-height:320px;display:block}.scanning{position:relative;overflow:hidden}.scanning:after{content:"";background:#2bb3b3;height:3px;animation:1.6s ease-in-out infinite scan;position:absolute;left:0;right:0;box-shadow:0 0 12px #2bb3b3}@keyframes scan{0%{top:6%}50%{top:90%}to{top:6%}}@media (prefers-reduced-motion:reduce){.scanning:after{animation:none;top:50%}}.ocr-text{color:var(--ink-2);white-space:pre-wrap;margin:12px 0 0;font-family:IBM Plex Mono,monospace;font-size:12px;line-height:1.6}details summary{cursor:pointer;font-size:14px;font-weight:600}.info-box{background:var(--brand-wash);border:1px solid #c5e2e2;border-radius:12px;flex-direction:column;gap:10px;padding:20px 24px;display:flex}.info-box h2{color:#0b4545;font-size:15px;font-weight:600}.info-box p{color:#24504f;font-size:14px;line-height:1.5}.side-title{font-size:16px;font-weight:600}.meta{color:var(--muted);font-size:13px;line-height:1.6}.spinner{border:2px solid var(--brand-tint);border-top-color:var(--brand);border-radius:50%;width:20px;height:20px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.loading{justify-content:center;padding:48px;display:flex}
