:root{--brand: #617069;--accent: #dfe5e2;--ink: #15251f;--muted: #6c7b74;--line: #dce4df;color:var(--ink);background:#f1f5f2;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0;background:radial-gradient(circle at 10% 0,color-mix(in srgb,var(--accent) 23%,transparent),transparent 32%),#f1f5f2}button,input,textarea{font:inherit}button{-webkit-tap-highlight-color:transparent}.gate{min-height:100vh;padding:24px;display:grid;place-items:center}.gate-card{width:min(420px,100%);padding:28px;border:1px solid var(--line);border-radius:16px;background:#fffffff5;box-shadow:0 24px 70px #14342921}.gate-card>img,.gate-brand-placeholder{width:45px;height:45px;margin-bottom:18px;border-radius:11px;object-fit:contain}.gate-brand-placeholder{background:#e2e7e5;display:block}.gate-loading small{margin-top:12px;color:var(--muted);display:block;font-size:10px}.capture-skeleton{position:relative;overflow:hidden;border-radius:7px;background:#e4ebe7}.capture-skeleton:after{position:absolute;inset:0;content:"";background:linear-gradient(100deg,transparent 25%,rgb(255 255 255 / 76%) 45%,transparent 65%);transform:translate(-100%);animation:skeleton-sweep 1.3s ease-in-out infinite}.capture-skeleton.title{width:72%;height:26px;margin:9px 0 15px}.capture-skeleton.line{width:92%;height:10px;margin-top:8px}.capture-skeleton.line.short{width:58%}.capture-skeleton.heading{width:42%;height:22px}.capture-skeleton.card{width:100%;height:61px}.view-skeleton{display:grid;gap:9px}.capture-progress{height:2px;overflow:hidden;opacity:0;background:color-mix(in srgb,var(--brand) 16%,transparent);transition:opacity .15s ease}.capture-progress.active{opacity:1}.capture-progress i{width:38%;height:100%;background:var(--brand);display:block;animation:capture-progress 1s ease-in-out infinite}.gate-card h1{margin:0;font-size:25px;letter-spacing:-.7px}.gate-card>p,.login-form>p{margin:9px 0 18px;color:var(--muted);font-size:13px;line-height:1.5}.eyebrow{margin:0 0 6px!important;color:var(--brand)!important;font-size:9px!important;font-weight:800;letter-spacing:1px;text-transform:uppercase}.login-form{display:grid;gap:11px}.login-form h1{margin-top:2px}.login-form input,.settings-card input{width:100%;height:42px;padding:0 11px;border:1px solid #d3ddd7;border-radius:8px;outline:none;background:#fff;font-size:13px}.login-form input:focus,.settings-card input:focus{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 14%,transparent)}.primary,.save-button{min-height:42px;padding:0 15px;border:0;border-radius:8px;color:#fff;background:var(--brand);cursor:pointer;font-size:12px;font-weight:750}.primary:disabled,.save-button:disabled,.secondary:disabled,.sync-button:disabled{opacity:.55;cursor:wait}.text-button{padding:7px;border:0;color:var(--brand);background:transparent;cursor:pointer;font-size:10px;font-weight:700}.form-error:empty{display:none}.form-error{padding:9px 10px;border-radius:7px;color:#8f473a;background:#fff0ec;font-size:10px}.form-notice{padding:9px 10px;border-radius:7px;color:#356b56;background:#e8f4ee;font-size:10px}.route-recovery{margin-top:16px}.route-choices{margin-top:16px;padding-top:14px;border-top:1px solid var(--line);display:grid;gap:8px}.route-choices p{margin:0 0 2px;color:var(--muted);font-size:10px;line-height:1.45}.route-choices .secondary{width:100%;min-height:40px;text-align:left}.capture-header{position:sticky;top:0;z-index:20;min-height:58px;padding:max(8px,env(safe-area-inset-top)) 13px 8px;border-bottom:1px solid rgb(209 220 214 / 90%);background:#fffffff0;backdrop-filter:blur(14px);display:flex;align-items:center;justify-content:space-between;gap:8px}.capture-brand{min-width:0;display:flex;align-items:center;gap:9px}.capture-brand>img{width:34px;height:34px;flex:0 0 auto;object-fit:contain;border-radius:9px;background:#fff}.capture-brand strong,.capture-brand span{max-width:52vw;overflow:hidden;display:block;text-overflow:ellipsis;white-space:nowrap}.capture-brand strong{font-size:12px}.capture-brand span{margin-top:2px;color:var(--muted);font-size:8px}.capture-status{display:flex;align-items:center;gap:5px}.online-pill,.pending-pill{min-height:25px;padding:0 7px;border:0;border-radius:999px;color:#2f6e57;background:#e6f4ed;font-size:8px;font-weight:800;text-transform:uppercase}.online-pill.offline{color:#965247;background:#fae9e5}.pending-pill{min-width:27px;color:#fff;background:#d17345;cursor:pointer}.pending-pill[hidden]{display:none}.pending-pill.clear{color:#547168;background:#edf2ef}.capture-main{width:min(680px,100%);min-height:calc(100vh - 126px);margin:0 auto;padding:14px 13px 110px}.capture-form{display:grid;gap:10px}.capture-form-section{min-width:0;display:grid;gap:10px}.capture-form-section>header{padding:5px 2px 1px}.capture-form-section>header h2{margin:0;font-size:14px}.capture-form-section>header p{margin:4px 0 0;color:var(--muted);font-size:9px;line-height:1.45}.field{padding:12px;border:1px solid var(--line);border-radius:10px;background:#fff;display:grid;gap:8px}.field[hidden]{display:none}.field>span{color:#50615a;font-size:9px;font-weight:750;letter-spacing:.25px;text-transform:uppercase}.field>span b{color:#c35d47}.field input:not([type=checkbox]),.field textarea{width:100%;min-height:39px;padding:9px 10px;border:1px solid #d4ddd8;border-radius:8px;outline:none;color:var(--ink);background:#fff;font-size:13px}.field textarea{resize:vertical;line-height:1.45}.field input:focus,.field textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 12%,transparent)}.field-help{color:var(--muted);font-size:8px;line-height:1.45}.photo-preview{position:relative;min-height:116px;overflow:hidden;border:1px dashed color-mix(in srgb,var(--brand) 42%,#ccd7d1);border-radius:10px;background:color-mix(in srgb,var(--accent) 10%,#f8faf9);display:grid;place-items:center}.photo-preview.has-photo{aspect-ratio:1.586 / 1;min-height:0;border-style:solid;background:#e9eeeb}.photo-preview.preparing{cursor:wait}.photo-preview.preparing:after{position:absolute;inset:auto 0 0;height:3px;content:"";background:var(--brand);animation:photo-progress 1s ease-in-out infinite}.photo-preview>img{width:100%;height:100%;object-fit:contain;background:#edf1ef}.photo-placeholder{padding:16px;color:#65756e;display:grid;justify-items:center;gap:5px;text-align:center}.photo-placeholder i{width:42px;aspect-ratio:1.586 / 1;border:2px solid color-mix(in srgb,var(--brand) 50%,#aebbb5);border-radius:4px;display:block;box-shadow:inset 0 0 0 3px #fff}.photo-placeholder strong{color:#465850;font-size:11px}.photo-placeholder span{max-width:280px;font-size:8px;line-height:1.45}.photo-source{position:absolute;left:7px;bottom:7px;padding:4px 6px;border-radius:999px;color:#fff;background:#12271fc2;backdrop-filter:blur(5px);font-size:7px;font-weight:800;letter-spacing:.35px;text-transform:uppercase}.photo-remove{position:absolute;top:7px;right:7px;min-height:31px;padding:0 8px;border:1px solid rgb(255 255 255 / 75%);border-radius:7px;color:#7e3f35;background:#ffffffeb;cursor:pointer;font-size:8px;font-weight:800}.photo-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}.photo-action{min-height:44px;padding:0 12px;border:1px solid #cdd9d3;border-radius:8px;cursor:pointer;font-size:10px;font-weight:800}.photo-action.capture-card{border-color:var(--brand);color:#fff;background:var(--brand)}.photo-action.upload-card{color:var(--brand);background:#fff}.photo-action:disabled{opacity:.55;cursor:wait}.photo-status{min-height:24px;color:var(--muted);font-size:8px;line-height:1.45}.scanner-open{overflow:hidden}.card-scanner-backdrop{position:fixed;inset:0;z-index:200;padding:max(12px,env(safe-area-inset-top)) 12px max(12px,env(safe-area-inset-bottom));background:#050c09e0;display:grid;place-items:center}.card-scanner-dialog{width:min(680px,100%);max-height:100%;overflow:auto;border-radius:14px;color:#fff;background:#101713;box-shadow:0 28px 80px #00000073}.card-scanner-dialog>header{padding:13px 14px;display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.card-scanner-dialog h2{margin:0;font-size:17px}.card-scanner-dialog header p{margin:4px 0 0;color:#b7c3bd;font-size:9px;line-height:1.45}.card-scanner-close,.card-scanner-cancel,.card-scanner-capture{min-height:44px;padding:0 13px;border-radius:8px;cursor:pointer;font-size:10px;font-weight:800}.card-scanner-close{min-width:44px;padding:0 8px;border:1px solid #3c4943;color:#dfe7e3;background:transparent}.card-scanner-stage{position:relative;width:100%;min-height:260px;max-height:min(64vh,620px);overflow:hidden;background:#060907;display:grid;place-items:center}.card-scanner-stage video{width:100%;max-height:min(64vh,620px);object-fit:cover}.card-scan-guide{position:absolute;left:7%;top:50%;width:86%;aspect-ratio:1.586 / 1;border:1px solid rgb(255 255 255 / 64%);border-radius:8px;box-shadow:0 0 0 120vmax #0000004d;transform:translateY(-50%)}.card-scan-guide span{position:absolute;width:28px;height:28px;border-color:#fff;border-style:solid}.card-scan-guide span:nth-child(1){left:-2px;top:-2px;border-width:3px 0 0 3px;border-radius:8px 0 0}.card-scan-guide span:nth-child(2){right:-2px;top:-2px;border-width:3px 3px 0 0;border-radius:0 8px 0 0}.card-scan-guide span:nth-child(3){right:-2px;bottom:-2px;border-width:0 3px 3px 0;border-radius:0 0 8px}.card-scan-guide span:nth-child(4){left:-2px;bottom:-2px;border-width:0 0 3px 3px;border-radius:0 0 0 8px}.card-scanner-tip{padding:10px 14px 2px;color:#aebbb5;font-size:8px;line-height:1.45}.card-scanner-dialog>footer{padding:11px 14px 14px;display:grid;grid-template-columns:1fr 1.4fr;gap:8px}.card-scanner-cancel{border:1px solid #3f4b45;color:#fff;background:transparent}.card-scanner-capture{border:0;color:#102018;background:#9fe5c2}.card-scanner-capture:disabled{opacity:.48;cursor:wait}.choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.choices.grades{grid-template-columns:repeat(4,1fr)}.choices button{min-height:43px;padding:7px;border:1px solid #d6dfda;border-radius:8px;color:#465850;background:#fff;cursor:pointer}.choices button[aria-pressed=true]{border-color:var(--brand);color:var(--brand);background:color-mix(in srgb,var(--accent) 20%,white);box-shadow:inset 0 0 0 1px var(--brand)}.choices strong,.choices small{display:block}.choices strong{font-size:10px}.choices small{margin-top:3px;color:var(--muted);font-size:8px}.grades button{min-height:50px;font-size:15px}.boolean-field{grid-template-columns:1fr auto;align-items:center}.boolean-field>span{grid-column:1}.boolean-field input{width:22px;height:22px;grid-column:2;grid-row:1;accent-color:var(--brand)}.save-bar{position:fixed;left:0;right:0;bottom:calc(48px + env(safe-area-inset-bottom));z-index:12;padding:8px 13px;border-top:1px solid var(--line);background:#fffffff2;backdrop-filter:blur(12px)}.save-button{width:min(654px,calc(100% - 26px));margin:0 auto;display:block}.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:15;height:calc(49px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);border-top:1px solid var(--line);background:#fff;display:grid;grid-template-columns:repeat(3,1fr)}.bottom-nav button{border:0;color:#73817a;background:transparent;font-size:9px;font-weight:750;cursor:pointer}.bottom-nav button[aria-current]{color:var(--brand);background:color-mix(in srgb,var(--accent) 14%,white)}.capture-footer{position:fixed;right:6px;bottom:calc(51px + env(safe-area-inset-bottom));z-index:11;padding:2px 5px;border-radius:4px 4px 0 0;color:#789087;background:#ffffffe0;font-size:6px;font-weight:700;letter-spacing:.3px;text-transform:uppercase}.toast{position:fixed;left:50%;bottom:calc(112px + env(safe-area-inset-bottom));z-index:100;max-width:calc(100% - 32px);padding:9px 12px;border-radius:8px;color:#fff;background:#244f40;box-shadow:0 10px 30px #102a2138;transform:translate(-50%);font-size:10px;font-weight:700}.toast.error{background:#9b4d40}.queue-heading{margin-bottom:10px;display:flex;align-items:center;justify-content:space-between}.queue-heading p{margin:0 0 3px;color:var(--brand);font-size:8px;font-weight:800;text-transform:uppercase}.queue-heading h2{margin:0;font-size:20px}.sync-button,.secondary{min-height:34px;padding:0 10px;border:1px solid #cfdbd5;border-radius:7px;color:var(--brand);background:#fff;cursor:pointer;font-size:9px;font-weight:750}.queue-list,.settings-card,.offline-card{overflow:hidden;border:1px solid var(--line);border-radius:10px;background:#fff}.queue-list article{min-height:59px;padding:9px 11px;border-top:1px solid #e9eeeb;display:grid;grid-template-columns:10px 1fr auto;gap:9px;align-items:center}.queue-list article:first-child{border-top:0}.queue-list strong,.queue-list span,.queue-list small{display:block}.queue-list strong{font-size:10px}.queue-list span{margin-top:3px;color:var(--muted);font-size:8px}.queue-list small{margin-top:3px;color:#a14d40;font-size:8px}.queue-list article>b{color:#67766f;font-size:8px;text-transform:uppercase}.sync-dot{width:8px;height:8px;border-radius:50%;background:#d7934e}.sync-dot.synced{background:#3c9673}.sync-dot.rejected{background:#b95043}.empty{padding:28px;color:var(--muted);text-align:center;font-size:10px}.settings-card{margin-bottom:10px;padding:13px;display:grid;gap:7px}.settings-card h2{margin:0;font-size:15px}.settings-card>span,.settings-card>p:not(.eyebrow){margin:0;color:var(--muted);font-size:9px;line-height:1.45}.settings-card label{margin-top:5px;color:#52625b;display:grid;gap:5px;font-size:9px;font-weight:700}.settings-card .secondary{justify-self:start}.diagnostics>div{min-height:33px;border-top:1px solid #ebefed;display:flex;align-items:center;justify-content:space-between;font-size:9px}.diagnostics>div span{color:var(--muted)}.diagnostics>div b{font-size:9px}.danger{border-color:#ead5cf}.offline-card{padding:18px}.offline-card strong{font-size:14px}.offline-card p{margin:7px 0 0;color:var(--muted);font-size:10px;line-height:1.5}@media(min-width:700px){.capture-main{padding-top:20px}.capture-form{grid-template-columns:1fr 1fr;align-items:start}.capture-form-section{grid-column:1 / -1;grid-template-columns:1fr 1fr;align-items:start}.capture-form-section>header{grid-column:1 / -1}.field-photo,.field-single,.field-multi,.field-textarea,.form-error{grid-column:1 / -1}.save-bar{left:50%;right:auto;width:680px;transform:translate(-50%)}}@keyframes skeleton-sweep{to{transform:translate(100%)}}@keyframes capture-progress{0%{transform:translate(-100%)}to{transform:translate(265%)}}@keyframes photo-progress{0%{transform:translate(-100%)}to{transform:translate(100%)}}@media(prefers-reduced-motion:reduce){.capture-skeleton:after,.capture-progress i,.photo-preview.preparing:after{animation:none}}
