:root{--bg: #0f1419;--surface: #1a222c;--text: #e8eef4;--muted: #8b9aab;--accent: #3d9cf0;--border: #2a3542;--ok: #3ecf8e;--err: #f07178;font-family:IBM Plex Sans,Segoe UI,system-ui,sans-serif;color:var(--text);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(ellipse at top left,#1a2a3a 0%,transparent 55%),var(--bg)}a{color:var(--accent)}.centered{min-height:100vh;display:grid;place-items:center;color:var(--muted)}.layout{max-width:960px;margin:0 auto;padding:2rem 1.25rem 3rem;display:grid;gap:1.5rem}.header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.header h1{margin:0 0 .25rem;font-size:1.85rem;letter-spacing:-.02em}.muted{color:var(--muted);margin:0}.panel,.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1rem}.panel h2{margin:0 0 .85rem;font-size:1.15rem}.user-management-panel{border-color:#35627e;background:#182832}.section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}.section-kicker{color:var(--accent);font-size:.78rem;text-transform:uppercase;letter-spacing:.08em}#reader{overflow:hidden;border-radius:8px;min-height:240px;background:#0a0e12}.controls{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1rem}button{border:1px solid var(--border);background:#243040;color:var(--text);padding:.55rem 1rem;border-radius:8px;cursor:pointer;font:inherit}button.ghost{background:transparent}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.45;cursor:not-allowed}.status{margin:.85rem 0 0;color:var(--muted)}.status.ok{color:var(--ok)}.status.err,.error{color:var(--err)}.email-error-tooltip{position:relative;display:inline-block;cursor:help}.email-error-tooltip:after{position:absolute;z-index:10;left:0;bottom:calc(100% + .5rem);width:max-content;max-width:min(420px,70vw);padding:.6rem .75rem;border:1px solid var(--border);border-radius:6px;background:#0a0e12;color:var(--text);content:attr(data-tooltip);font-size:.82rem;font-weight:400;line-height:1.35;white-space:pre-wrap;overflow-wrap:anywhere;opacity:0;pointer-events:none;transform:translateY(.25rem);transition:opacity .12s ease,transform .12s ease}.email-error-tooltip:hover:after,.email-error-tooltip:focus-visible:after{opacity:1;transform:translateY(0)}.scan-list{list-style:none;margin:0;padding:0;display:grid;gap:.65rem}.scan-list li{border:1px solid var(--border);border-radius:8px;padding:.75rem .9rem}.meta{display:flex;flex-wrap:wrap;gap:.75rem;color:var(--muted);font-size:.8rem;margin-bottom:.35rem}.payload{word-break:break-word;font-family:IBM Plex Mono,ui-monospace,Menlo,monospace;font-size:.9rem}.auth-layout{min-height:100vh;display:grid;place-items:center;padding:1.5rem}.auth-card{width:min(100%,420px);display:grid;gap:.85rem}.auth-card h1{margin:0}.auth-card label{display:grid;gap:.35rem;font-size:.9rem;color:var(--muted)}.auth-card input{border:1px solid var(--border);background:#0f1419;color:var(--text);border-radius:8px;padding:.65rem .75rem;font:inherit}.auth-card button{margin-top:.25rem}.year-form{margin-bottom:1rem}.year-form label,.year-select{display:grid;gap:.35rem;color:var(--muted);font-size:.9rem}.year-form input,.year-select select{border:1px solid var(--border);background:#0f1419;color:var(--text);border-radius:8px;padding:.65rem .75rem;font:inherit;max-width:220px}.year-select{margin-top:.5rem}.row-actions{display:grid;gap:.35rem;justify-items:start}.layout-wide{max-width:1100px}.header-actions{display:flex;gap:.65rem;align-items:center}.button-link{display:inline-flex;align-items:center;border:1px solid var(--border);background:#243040;color:var(--text);padding:.55rem 1rem;border-radius:8px;text-decoration:none;font:inherit}.button-link:hover{border-color:var(--accent)}.upload-hint{margin:0 0 1rem;font-size:.9rem}.upload-form{display:grid;gap:.85rem;justify-items:start}.checkbox-row{display:flex;align-items:center;gap:.5rem;color:var(--muted);font-size:.9rem}.history-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.85rem}.history-header h2{margin:0}.table-wrap{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;font-size:.9rem}.data-table th,.data-table td{border-bottom:1px solid var(--border);padding:.65rem .5rem;text-align:left;vertical-align:top}.data-table th{color:var(--muted);font-weight:600}.qr-thumb{display:block;width:72px;height:72px;border-radius:6px;background:#fff;image-rendering:pixelated}.qr-preview{display:grid;gap:.35rem;justify-items:start;max-width:160px}.qr-name{font-size:.72rem;color:var(--muted);word-break:break-all;font-family:IBM Plex Mono,ui-monospace,Menlo,monospace;line-height:1.25}.checkin-card h2{margin:.35rem 0 1rem;font-size:1.35rem}.checkin-card.fresh{border-color:#2f6f52}.checkin-card.repeat{border-color:#7a6230}.checkin-badge{display:inline-block;font-size:.8rem;letter-spacing:.02em;text-transform:uppercase;color:var(--muted)}.checkin-card.fresh .checkin-badge{color:var(--ok)}.checkin-card.repeat .checkin-badge{color:#e0b45a}.checkin-fields{margin:0;display:grid;gap:.75rem;width:100%;text-align:left}.checkin-fields div{display:grid;gap:.15rem}.checkin-fields dt{color:var(--muted);font-size:.8rem}.checkin-fields dd{margin:0;font-size:1rem}.history-qr{margin-top:.35rem;font-size:.8rem;word-break:break-all;font-family:IBM Plex Mono,ui-monospace,Menlo,monospace}.scan-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#080c10b8;display:grid;place-items:center;padding:1.25rem}.scan-modal{width:min(100%,420px);background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:1.75rem 1.35rem 1.35rem;display:grid;justify-items:center;gap:.85rem;text-align:center}.scan-modal-ok{border-color:#2f6f52}.scan-modal-err{border-color:#8a3a42}.scan-modal-icon.ok{color:var(--ok)}.scan-modal-icon.err{color:var(--err)}.scan-modal h2{margin:0;font-size:1.25rem;line-height:1.3}.scan-modal-name{margin:0;font-size:1.1rem;font-weight:600}.scan-modal button{margin-top:.35rem;width:100%}.scanner-layout{max-width:1200px;padding-bottom:max(1.5rem,env(safe-area-inset-bottom))}.scanner-layout .header>div,.scanner-grid>*,.scanner-layout .scan-list li{min-width:0}.scanner-layout .header .muted,.scanner-layout .status,.scanner-layout .meta,.scanner-layout .payload{overflow-wrap:anywhere}.scanner-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:start;gap:1.25rem}.scanner-camera-panel .year-select{margin:0 0 1rem}.scanner-camera-panel .year-select select{width:100%;max-width:none;min-height:44px;font-size:1rem}.scanner-viewport{position:relative;max-width:520px;margin-inline:auto}.scanner-layout #reader{width:100%;min-height:clamp(180px,50vw,300px)}.scanner-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.65rem;padding:1rem;text-align:center;color:var(--muted);pointer-events:none}.scanner-placeholder svg{color:var(--accent)}.scanner-placeholder p{margin:0;color:var(--text)}.scanner-placeholder span{font-size:.85rem}.scanner-layout .controls{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.scanner-layout button,.scanner-layout .button-link{min-height:44px;justify-content:center}.scanner-layout .controls button:first-child:not(:disabled){background:#1964a5;border-color:var(--accent)}.scanner-history-panel .history-header{flex-wrap:wrap}.scanner-history-panel .scan-list{max-height:70vh;max-height:70dvh;overflow-y:auto}.scanner-layout .scan-modal-backdrop{overflow-y:auto;padding:max(.75rem,env(safe-area-inset-top)) max(.75rem,env(safe-area-inset-right)) max(.75rem,env(safe-area-inset-bottom)) max(.75rem,env(safe-area-inset-left))}.scanner-layout .scan-modal{min-width:0;max-height:calc(100vh - 3rem);max-height:calc(100dvh - 3rem);overflow-y:auto;overflow-wrap:anywhere;overscroll-behavior:contain}.scanner-layout .scan-modal>*,.scanner-layout .checkin-fields div{min-width:0;max-width:100%}@media(max-width:760px){.scanner-layout{gap:1rem;padding:1rem .75rem max(1.5rem,env(safe-area-inset-bottom))}.scanner-grid{grid-template-columns:minmax(0,1fr);gap:1rem}.scanner-layout .header{flex-wrap:wrap}.scanner-layout .header h1{font-size:clamp(1.35rem,5vw,1.85rem)}.scanner-layout .header-actions{flex-wrap:wrap}.scanner-history-panel .scan-list{max-height:none;overflow:visible}}@media(max-width:420px){.scanner-layout .header-actions{width:100%}.scanner-layout .header-actions>*{flex:1}.scanner-layout .panel{padding:.75rem}.scanner-layout .meta{gap:.35rem .65rem}.scanner-layout .scan-modal{padding:1rem}}
