:root{color:#0f172a;--page-pad:1rem;--main-max:100%;--tap:3rem;background:#f1f5f9;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}*{box-sizing:border-box}html,body,#root{height:100%;min-height:100dvh}body{overscroll-behavior-y:none;-webkit-tap-highlight-color:transparent;margin:0}.app{flex-direction:column;min-height:100dvh;display:flex}.main{padding:var(--page-pad);padding-bottom:calc(var(--page-pad) + env(safe-area-inset-bottom,0px));max-width:var(--main-max);-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;flex:1;width:100%;margin:0 auto;overflow-y:auto}.ptr-indicator{color:#64748b;justify-content:center;align-items:center;gap:.5rem;font-size:.85rem;transition:height 50ms linear;display:flex;overflow:hidden}.ptr-indicator.visible{margin-bottom:.25rem}.ptr-indicator.ready,.ptr-indicator.refreshing{color:#1e40af}.ptr-spinner{border:2px solid #cbd5e1;border-top-color:#1e40af;border-radius:50%;width:1.1rem;height:1.1rem}.ptr-indicator.refreshing .ptr-spinner{animation:.7s linear infinite ptr-spin}.ptr-hint{margin:0;font-size:.8rem}@keyframes ptr-spin{to{transform:rotate(360deg)}}.header{padding:.65rem var(--page-pad);padding-top:calc(.65rem + env(safe-area-inset-top,0px));color:#fff;background:#1e40af;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.logo{color:#fff;font-size:1.125rem;font-weight:700;text-decoration:none}.header-meta{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.5rem;min-width:0;font-size:.875rem;display:flex}.header-meta>span:first-child{text-overflow:ellipsis;white-space:nowrap;max-width:7.5rem;overflow:hidden}.header .btn-ghost{color:#fff;background:#ffffff2e;min-height:2.25rem;padding:.4rem .65rem;font-size:.85rem}.nav{padding:.35rem var(--page-pad);-webkit-overflow-scrolling:touch;background:#fff;border-bottom:1px solid #e2e8f0;gap:.25rem;display:flex;overflow-x:auto}.nav a{color:#1e40af;white-space:nowrap;min-height:var(--tap);border-radius:999px;align-items:center;padding:.55rem .85rem;font-weight:600;text-decoration:none;display:inline-flex}.center-page{width:100%;min-height:100dvh;padding:max(1rem, env(safe-area-inset-top)) max(1rem, env(safe-area-inset-right)) max(1rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left));box-sizing:border-box;justify-content:center;align-items:center;display:flex}.center-page .card,.login-card{width:min(100%,420px);margin:0}.login-page{z-index:1;background:#f1f5f9;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.login-card h1,.login-card>.muted{text-align:center;margin:0}.card{background:#fff;border-radius:12px;padding:1rem;box-shadow:0 1px 3px #00000014}.stack{flex-direction:column;gap:1rem;display:flex}.row{flex-wrap:wrap;gap:.5rem;display:flex}label{flex-direction:column;gap:.35rem;font-size:.9rem;display:flex}input,select{font:inherit;width:100%;min-height:var(--tap);border:1px solid #cbd5e1;border-radius:8px;padding:.65rem .75rem;font-size:16px}.no-zoom{font-size:16px!important}.btn{font:inherit;min-height:var(--tap);cursor:pointer;border:none;border-radius:10px;padding:.75rem 1rem;font-weight:600}.btn-primary{color:#fff;background:#1e40af}.btn-ghost{color:#0f172a;background:#e2e8f0}.btn-camera{color:#fff;background:#0f766e}.btn:disabled{opacity:.5;cursor:not-allowed}.badge{background:#fff3;border-radius:999px;padding:.15rem .5rem}.badge-inline{color:#1e40af;background:#dbeafe;border-radius:999px;padding:.2rem .6rem;font-size:.85rem;display:inline-block}.muted{color:#64748b}.error{color:#b91c1c}.success{color:#15803d}.grid{grid-template-columns:repeat(2,1fr);gap:.75rem;display:grid}.stat-value{font-size:1.6rem;font-weight:700;display:block}.op-row{min-height:var(--tap);border-bottom:1px solid #f1f5f9;grid-template-columns:auto 1fr auto;align-items:center;gap:.5rem;padding:.65rem 0;display:grid}.link-btn{color:#1e40af;cursor:pointer;font:inherit;text-align:left;background:0 0;border:none;padding:0}.scan-page{align-items:stretch}.scan-page>h2{margin:0;font-size:1.25rem}.scan-cam-btn{color:#fff;cursor:pointer;-webkit-tap-highlight-color:transparent;background:linear-gradient(160deg,#0f766e 0%,#115e59 55%,#134e4a 100%);border:none;border-radius:20px;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;width:100%;min-height:min(56vh,400px);padding:1.5rem 1rem;display:flex;box-shadow:0 10px 28px #0f766e47}.scan-cam-btn:disabled{opacity:.7;cursor:wait}.scan-cam-btn:active{transform:scale(.985)}.scan-cam-icon{width:5.25rem;height:5.25rem}.scan-cam-title{letter-spacing:.01em;font-size:1.4rem;font-weight:700}.scan-cam-sub{opacity:.9;text-align:center;max-width:16rem;font-size:.95rem}.dashboard-panels{flex-direction:column;gap:1rem;display:flex}.scanner-overlay{z-index:50;background:#0f172a;place-items:stretch stretch;padding:0;display:grid;position:fixed;inset:0}.scanner-panel{width:100%;height:100%;max-height:none;padding:1rem;padding-bottom:calc(1rem + env(safe-area-inset-bottom,0px));color:#e2e8f0;box-shadow:none;background:#0f172a;border-radius:0;flex-direction:column;gap:.75rem;display:flex}.scanner-panel .muted{color:#94a3b8}.scanner-panel .btn-ghost{color:#fff;background:#ffffff1f}.scanner-video-wrap{background:#000;border-radius:16px;flex:1;min-height:60vh;position:relative;overflow:hidden}.scanner-video{object-fit:cover;width:100%;height:100%;display:block}.scanner-frame{pointer-events:none;border:2px solid #ffffffe6;border-radius:14px;position:absolute;inset:28% 10%;box-shadow:0 0 0 999px #00000059}@media (width<=379px){:root{--page-pad:.75rem}.scan-cam-icon{width:4.5rem;height:4.5rem}.scan-cam-title{font-size:1.25rem}.scan-cam-btn{min-height:min(52vh,360px)}.header-meta>span:first-child{max-width:5.5rem}.stat-value{font-size:1.35rem}}@media (width>=380px) and (width<=767px){.scan-cam-btn{min-height:min(58vh,440px)}}@media (width>=768px){:root{--page-pad:1.5rem;--main-max:1100px;--tap:2.75rem}.header{padding-top:.85rem;padding-bottom:.85rem}.header-meta>span:first-child{max-width:16rem}.nav{padding:.5rem var(--page-pad);gap:.5rem}.nav a:hover{background:#eff6ff}.grid{grid-template-columns:repeat(4,1fr);gap:1rem}.stat-value{font-size:2rem}.dashboard-panels{grid-template-columns:1.2fr 1fr;align-items:start;gap:1rem;display:grid}.ptr-hint{display:none}.scan-page{max-width:520px;margin:0 auto}.scan-cam-btn{min-height:340px}.scanner-overlay{background:#0f172acc;place-items:center;padding:1.5rem}.scanner-panel{border-radius:16px;width:min(100%,720px);height:min(100%,860px);padding:1.25rem}.scanner-video-wrap{min-height:420px}}@media (width>=1280px){:root{--main-max:1280px;--page-pad:2rem}}
