:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--primary:#3d6b5a;--primary-dark:#2f5346;--on-primary:#fff;--surface:#f6f8f7;--surface-high:#e7eeea;--on-surface:#1a1c1b;--outline:#c4cdc8;--muted:#5c6662;--error:#ba1a1a;--shadow:0 8px 32px #1a282214;color:var(--on-surface);background:#d7e0dc;font-family:Segoe UI,system-ui,sans-serif;font-weight:400;line-height:1.4}*{box-sizing:border-box}html,body,#root{height:100%;min-height:100%;margin:0}button,input{font:inherit}button{cursor:pointer}.app-shell{background:var(--surface);max-width:480px;height:100%;min-height:100%;box-shadow:var(--shadow);flex-direction:column;margin:0 auto;display:flex}.app-shell:has(.admin-page){max-width:960px}.page{background:var(--surface);flex-direction:column;height:100%;min-height:100%;display:flex;overflow:hidden}.app-header{justify-content:space-between;align-items:center;gap:8px;min-height:56px;padding:12px 16px;display:flex}.app-header-title{align-items:center;gap:10px;min-width:0;display:flex}.app-header-title h1{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:1.15rem;font-weight:600;overflow:hidden}.app-header-actions{align-items:center;gap:4px;display:flex}.osca-logo{flex:none;display:block}.page-body{flex:1;min-height:0;padding:0 16px 16px;overflow:auto}.centered{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;min-height:40vh;padding:24px;display:flex}.muted{color:var(--muted)}.error-text{color:var(--error)}.icon-btn{background:var(--surface-high);width:40px;height:40px;color:var(--on-surface);border:0;border-radius:999px;justify-content:center;align-items:center;font-size:1.1rem;text-decoration:none;display:inline-flex}.icon-btn:disabled{opacity:.45}.btn-filled,.btn-outlined,.btn-text{border:0;border-radius:999px;padding:12px 18px;font-weight:600}.btn-filled{background:var(--primary);color:var(--on-primary)}.btn-filled:disabled{opacity:.45}.btn-outlined{color:var(--primary);border:1px solid var(--primary);background:0 0}.btn-text{color:var(--primary);background:0 0}.grow{flex:1}.bottom-bar{padding:8px 16px calc(16px + env(safe-area-inset-bottom));gap:12px;display:flex}.scan-list{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.scan-card{border:1px solid var(--outline);text-align:left;background:#fff;border-radius:16px;grid-template-columns:64px 1fr auto;align-items:center;gap:12px;width:100%;padding:8px;display:grid}.scan-card img{object-fit:cover;background:var(--surface-high);border-radius:10px;width:64px;height:64px}.scan-card-copy{flex-direction:column;gap:4px;min-width:0;display:flex}.scan-card-copy span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;overflow:hidden}.chevron{color:var(--muted);font-size:1.4rem}.spinner,.mini-spinner{box-sizing:border-box;border:3px solid var(--outline);border-top-color:var(--primary);border-radius:50%;flex:none;width:28px;height:28px;animation:.8s linear infinite spin}.mini-spinner{border-width:2px;width:18px;height:18px}@keyframes spin{to{transform:rotate(360deg)}}.settings-body{flex-direction:column;gap:16px;padding:8px 20px 24px;display:flex}.settings-body h2{margin:0;font-size:1.05rem}.settings-body input{border:1px solid var(--outline);background:#fff;border-radius:8px;width:100%;padding:12px}.processing-body,.detail-body{flex-direction:column;flex:1;gap:12px;min-height:0;padding:8px 24px 24px;display:flex;overflow:auto}.overlay-stage .centered{height:100%;min-height:100%;padding:0}.processing-preview,.overlay-stage{background:var(--surface-high);border-radius:20px;flex:1;min-height:240px;position:relative;overflow:hidden}.processing-preview img,.overlay-stage img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.overlay-stage img{opacity:0;transition:opacity .28s}.overlay-stage img.visible{opacity:1}.scan-sweep{background:linear-gradient(#3d6b5a00,#3d6b5a8c,#3d6b5a00);height:56px;animation:1.4s linear infinite sweep;position:absolute;left:0;right:0}@keyframes sweep{0%{top:-56px}to{top:100%}}.progress-track{background:var(--surface-high);border-radius:99px;height:8px;overflow:hidden}.progress-fill{background:var(--primary);height:100%}.progress-label{text-align:center;margin:0;font-weight:600}.stage-title{text-align:center;margin:4px 0 0;font-size:1.25rem}.stage-list{margin:0;padding:0;list-style:none;overflow:auto}.stage-list li{color:var(--outline);gap:8px;padding:3px 0;display:flex}.stage-list li.active{color:var(--on-surface);font-weight:600}.stage-list li.done{color:var(--primary)}.pill-row{flex-wrap:wrap;gap:8px;display:flex}.score-chip{border:0;border-radius:999px;padding:6px 12px;font-size:.9rem;font-weight:600}.metric-tile{border-radius:16px;padding:14px 16px}.metric-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.metric-head h3,.detail-body h2{margin:0}.metric-head strong{font-size:1.5rem}.submetrics{margin:12px 0 0;padding:0;font-size:.85rem;list-style:none}.capture-page{color:#fff;background:#000;min-height:100%}.capture-stage{min-height:100dvh;position:relative;overflow:hidden}.capture-video{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.capture-video.mirrored{transform:scaleX(-1)}.oval-overlay{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.capture-countdown{text-align:center;text-shadow:0 0 12px #000;pointer-events:none;font-size:96px;font-weight:700;line-height:1;position:absolute;top:32%;left:0;right:0}.capture-loading{background:#0006;place-items:center;display:grid;position:absolute;inset:0}.capture-close,.capture-switch{z-index:2;position:absolute;top:8px}.capture-close{left:8px}.capture-switch{right:8px}.capture-footer{flex-direction:column;align-items:center;gap:12px;display:flex;position:absolute;bottom:20px;left:16px;right:16px}.capture-instruction{text-align:center;text-shadow:0 0 8px #000;margin:0;font-size:22px;font-weight:600}.capture-checklist{background:#0000008c;border-radius:16px;flex-wrap:wrap;gap:10px;width:100%;padding:10px 12px;font-size:12px;display:flex}.check-ok{color:#8fdba8}.check-wait{color:#fffc}.shutter{background:#fff;border:0;border-radius:50%;width:72px;height:72px;box-shadow:0 0 0 6px #ffffff40}.shutter:disabled{background:#ffffff38}.permission-pane{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;min-height:100dvh;padding:24px;display:flex}.error-block{flex-direction:column;gap:12px;display:flex}.btn-outlined:disabled{opacity:.45}.quota-banner{background:var(--surface-high);border-radius:12px;margin:0 0 12px;padding:10px 12px;font-weight:600}.quota-banner.quota-empty{color:var(--error);background:#f8e8e8}.auth-body{flex-direction:column;flex:1;justify-content:center;gap:12px;padding:32px 24px;display:flex}.auth-body h1{margin:0}.auth-form{flex-direction:column;gap:14px;display:flex}.auth-form label,.quota-field{flex-direction:column;gap:6px;font-size:.9rem;font-weight:600;display:flex}.auth-form input,.admin-row input,.quota-field input{border:1px solid var(--outline);background:#fff;border-radius:8px;width:100%;padding:12px;font-weight:400}.admin-tabs{gap:8px;padding:0 16px 8px;display:flex}.admin-tabs button{color:var(--muted);background:0 0;border:0;border-radius:999px;padding:8px 12px;font-weight:600}.admin-tabs button.active{background:var(--surface-high);color:var(--on-surface)}.admin-panel{flex-direction:column;gap:12px;display:flex}.admin-row{gap:8px;display:flex}.admin-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.admin-card{border:1px solid var(--outline);background:#fff;border-radius:16px;grid-template-columns:1fr 120px auto;align-items:center;gap:12px;padding:12px;display:grid}.wrap{overflow-wrap:anywhere}.check-row{align-items:center;gap:8px;flex-direction:row!important}@media (width<=720px){.admin-card{grid-template-columns:1fr}}@media (width>=720px){.capture-stage{height:100vh;min-height:100%}}
