@font-face{font-family:Schmalfette Grotesk;src:url(/fonts/SchmalfetteGrotesk.otf)format("opentype");font-weight:700;font-style:normal;font-display:swap}:root{--bg:#0a0a0b;--cream:#fff6da;--muted:#fff6da9e;--line:#fff6da29;--sans:"IBM Plex Sans", system-ui, sans-serif;--display:"Schmalfette Grotesk", "Arial Narrow", "IBM Plex Sans Condensed", sans-serif;--good:#7fd88f;--warn:#ff6b6b;--surface:#ffffff0a;--surface-subtle:#ffffff08;--surface-active:#ffffff14;--surface-recessed:#00000038;--warn-bg:#ff6b6b24;--warn-border:#ff6b6b80;--warn-text:#ffd7d7;--ok-bg:#7fd88f1f;--ok-border:#7fd88f73;--ok-text:#d7f5dd;--badge-checked-bg:#7fd88f29;--vip-gold:#e8b923;--badge-vip-bg:#e8b9232e;--dup-purple:#a389e0;--badge-dup-bg:#a389e02e;--row-dup-bg:#a389e012;--row-dup-border:#a389e052;color:var(--cream);background:var(--bg);font-family:var(--sans);-webkit-font-smoothing:antialiased}[data-theme=light]{--bg:#fdfbf5;--cream:#1a1a1b;--muted:#1a1a1b99;--line:#1a1a1b24;--good:#1f8a3b;--warn:#c0392b;--surface:#00000009;--surface-subtle:#00000006;--surface-active:#00000012;--surface-recessed:#0000000f;--warn-bg:#c0392b1a;--warn-border:#c0392b66;--warn-text:#7a1f14;--ok-bg:#1f8a3b1a;--ok-border:#1f8a3b59;--ok-text:#14532a;--badge-checked-bg:#1f8a3b29;--vip-gold:#8a6a00;--badge-vip-bg:#8a6a0024;--dup-purple:#6b46c1;--badge-dup-bg:#6b46c124;--row-dup-bg:#6b46c10d;--row-dup-border:#6b46c145}*{box-sizing:border-box}html,body,#root{width:100%;min-height:100%}body{background:var(--bg);overscroll-behavior-y:contain;margin:0}.app{min-height:100dvh;padding:16px;padding-bottom:max(16px, env(safe-area-inset-bottom));flex-direction:column;gap:16px;max-width:520px;margin:0 auto;display:flex;position:relative}#screen-content{flex-direction:column;flex:1;gap:16px;min-height:0;display:flex}.greeting-overlay{z-index:6;padding:16px;padding-bottom:max(16px, env(safe-area-inset-bottom));background:var(--bg);flex-direction:column;transition:transform .4s;display:flex;position:absolute;inset:0;transform:translateY(0)}.greeting-overlay--up{transform:translateY(-100%)}.app-header{z-index:5;background:var(--bg);border-bottom:1px solid var(--line);padding-top:max(4px, env(safe-area-inset-top));align-items:center;gap:10px;margin-top:8px;padding-bottom:14px;display:flex;position:sticky;top:0}.back-button{border:1px solid var(--line);width:2.25rem;height:2.25rem;color:var(--cream);cursor:pointer;background:0 0;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:1.4rem;line-height:1;display:flex}.app-logo{flex-shrink:0;width:auto;height:22px;display:none}@media (width>=380px){.app-logo{display:block}}h1{margin:8px 0 0;font-size:1.1rem;font-weight:700}.app-header h1{flex:1;min-width:0;margin:0}h2{color:var(--muted);margin:0 0 4px;font-size:1rem;font-weight:600}.field{flex-direction:column;gap:6px;display:flex}.field label,.field-label{color:var(--muted);font-size:.8rem}.field-checkbox{align-items:center;gap:8px;font-size:.95rem;display:flex}.field-checkbox input[type=checkbox]{width:1.2rem;height:1.2rem;accent-color:var(--cream);flex-shrink:0}.field-error{color:var(--warn-text);font-size:.8rem}input[type=text],input[type=email],input[type=password],select,textarea{font-family:var(--sans);border:1px solid var(--line);background:var(--surface);color:var(--cream);border-radius:10px;padding:14px 16px;font-size:1.1rem}textarea{resize:vertical}#offline-import::placeholder{color:var(--muted);font-size:.95rem}.import-field{position:relative}.import-field textarea{resize:none;width:100%;padding-bottom:52px}.import-field-action{position:absolute;bottom:12px;right:12px}.import-field-clear{color:var(--muted);cursor:pointer;background:0 0;border:none;font-size:1.3rem;line-height:1;position:absolute;bottom:12px;left:12px}.import-field-paste{color:var(--muted);cursor:pointer;background:0 0;border:none;font-size:.85rem;text-decoration:underline;position:absolute;bottom:12px;left:12px}option{font-size:1.1rem}input[type=text]:focus,input[type=email]:focus,input[type=password]:focus,select:focus,textarea:focus{outline:2px solid var(--cream);outline-offset:1px}#screen-content:focus{outline:none}.select{position:relative}.select-button{width:100%;font-family:var(--sans);text-align:left;border:1px solid var(--line);background:var(--surface);color:var(--cream);cursor:pointer;border-radius:10px;justify-content:space-between;align-items:center;gap:8px;padding:14px 16px;font-size:1.1rem;display:flex}.select-button:focus{outline:2px solid var(--cream);outline-offset:1px}.select-placeholder{color:var(--muted)}.select-chevron{color:var(--muted);flex-shrink:0;font-size:1.1rem;transform:rotate(90deg)}.select-listbox{z-index:20;border:1px solid var(--line);background:var(--bg);border-radius:10px;width:100%;max-height:260px;position:absolute;top:calc(100% + 4px);left:0;overflow-y:auto;box-shadow:0 8px 24px #00000059}.select-option{min-height:44px;color:var(--cream);cursor:pointer;align-items:center;padding:10px 16px;font-size:1.1rem;display:flex}.select-option.active{background:var(--cream);color:var(--bg);font-weight:600}.search-field{display:flex;position:relative}.search-field input[type=text]{width:100%;padding-right:40px}.search-clear{color:var(--muted);cursor:pointer;background:0 0;border:none;font-size:1.3rem;line-height:1;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.pin-field{display:flex;position:relative}.pin-field input{width:100%;padding-right:64px}.pin-reveal{font-family:var(--sans);color:var(--muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:4px;font-size:.85rem;line-height:1;display:inline-flex;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.results{scrollbar-width:auto;scrollbar-color:var(--muted) transparent;flex-direction:column;gap:6px;max-height:40vh;display:flex;overflow-y:auto}.results::-webkit-scrollbar{width:12px}.results::-webkit-scrollbar-track{background:0 0}.results::-webkit-scrollbar-thumb{background:var(--muted);border:3px solid var(--bg);border-radius:6px}.spinner-wrap{justify-content:center;padding:48px 0;display:flex}.spinner{border:6px solid var(--line);border-top-color:var(--cream);border-radius:50%;width:76px;height:76px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.pull-indicator{justify-content:center;align-items:center;transition:height .12s;display:flex;overflow:hidden}.pull-spinner{border:3px solid var(--line);border-top-color:var(--muted);opacity:.6;border-radius:50%;width:28px;height:28px;animation:.8s linear infinite spin}.pull-indicator.ready .pull-spinner{border-top-color:var(--cream);opacity:1}.result-row-flex{border:1px solid var(--line);background:var(--surface-subtle);border-radius:10px;align-items:center;gap:4px;display:flex}.result-row-flex:active{background:var(--surface-active)}.result-row{text-align:left;color:var(--cream);font-family:var(--sans);background:0 0;border:none;flex:1;padding:12px 14px;font-size:1rem}.chevron-toggle{width:2.5rem;color:var(--muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-self:stretch;align-items:center;font-size:1.1rem;transition:transform .15s;display:inline-flex}.chevron-toggle[aria-expanded=true]{transform:rotate(90deg)}.chevron-toggle.warn{color:var(--warn-text)}.chevron-toggle:disabled{opacity:.4;cursor:not-allowed}.guest-details{color:var(--muted);border-top:1px solid var(--line);padding:8px 14px;font-size:.85rem}.guest-details strong{color:var(--cream)}.disclosure{flex-direction:column;display:flex}.disclosure-summary{width:100%;font-family:var(--sans);border:1px solid var(--line);color:var(--cream);cursor:pointer;background:0 0;border-radius:10px;justify-content:space-between;align-items:center;gap:8px;padding:10px 14px;font-size:.95rem;display:flex}.disclosure-summary-label{text-align:center;flex:1}.disclosure-chevron{color:var(--muted);flex-shrink:0;font-size:1.1rem;transition:transform .15s}.disclosure-summary[aria-expanded=true] .disclosure-chevron{transform:rotate(90deg)}.disclosure-collapse{grid-template-rows:0fr;transition:grid-template-rows .22s;display:grid}.disclosure-collapse--open{grid-template-rows:1fr}.disclosure-body{flex-direction:column;gap:12px;min-height:0;padding:12px 2px 0;display:flex;overflow:hidden}.disclosure-drawer-box{border:1px solid var(--line);background:var(--surface-recessed);border-radius:10px;flex-direction:column;gap:6px;margin-top:6px;padding:8px;display:flex}.status-banner{border:1px solid var(--line);border-radius:10px;padding:14px;font-size:.95rem;line-height:1.4}.status-banner.warn{background:var(--warn-bg);border-color:var(--warn-border);color:var(--warn-text)}.status-banner.ok{background:var(--ok-bg);border-color:var(--ok-border);color:var(--ok-text)}.status-banner.error{background:var(--warn-bg);border-color:var(--warn-border);color:var(--warn-text)}.error-banner-message{margin-bottom:10px}.error-banner-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.update-banner{background:var(--badge-vip-bg);border-color:var(--vip-gold);justify-content:space-between;align-items:center;gap:12px;display:flex}.status-banner.install{background:var(--surface);justify-content:space-between;align-items:center;gap:12px;display:flex}.install-banner-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.install-modal-backdrop{z-index:1000;background:#000000b8;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.install-modal-card.status-banner.install{background:var(--bg);flex-direction:column;align-items:stretch;width:100%;max-width:480px;padding:44px 24px 24px;font-size:1.1rem;position:relative;box-shadow:0 12px 40px #00000073}.install-modal-close{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:4px 8px;font-size:1.3rem;line-height:1;position:absolute;top:8px;left:8px}.install-modal-card .install-banner-actions{justify-content:flex-end;margin-top:16px}.confirm-modal-backdrop{z-index:1000;background:#000000b8;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.confirm-modal-card{border:1px solid var(--line);background:var(--bg);border-radius:10px;flex-direction:column;gap:16px;width:100%;max-width:400px;padding:20px;font-size:1.05rem;display:flex;box-shadow:0 12px 40px #00000073}.confirm-modal-card.warn{border-color:var(--warn-border)}.confirm-modal-card.ok{border-color:var(--ok-border)}.confirm-modal-message{margin:0}.confirm-modal-actions{justify-content:flex-end;gap:8px;display:flex}button.primary{font-family:var(--sans);background:var(--cream);color:var(--bg);border:none;border-radius:12px;width:100%;padding:16px;font-size:1.05rem;font-weight:600}button.primary:disabled{opacity:.4}button.primary.warn{background:var(--warn);color:#fff}button.secondary{font-family:var(--sans);border:1px solid var(--line);color:var(--cream);background:0 0;border-radius:10px;padding:10px 14px;font-size:.95rem}button.secondary.warn{border-color:var(--warn-border);color:var(--warn-text)}button.secondary.ok{border-color:var(--ok-border);color:var(--ok-text)}.selected-guest{border:1px solid var(--line);background:var(--surface-subtle);border-radius:10px;flex-direction:column;gap:4px;padding:14px;display:flex}.selected-guest .name{font-size:1.1rem;font-weight:700}.muted{color:var(--muted);font-size:.85rem}.dev-tools-link{color:var(--muted);background:0 0;border:none;align-self:center;padding:6px;font-size:.8rem;text-decoration:underline}.roster-controls{flex-direction:column;gap:10px;display:flex}.toggle-group{gap:6px;display:flex}.toggle-button{font-family:var(--sans);border:1px solid var(--line);color:var(--muted);background:0 0;border-radius:8px;flex:1;padding:8px 10px;font-size:.85rem}.toggle-button.active{background:var(--cream);color:var(--bg);border-color:var(--cream);font-weight:600}.guest-group{flex-direction:column;gap:4px;display:flex}.result-row-flex.plus-one-row-flex{border-left:2px solid var(--line);border-top-left-radius:0;border-bottom-left-radius:0;width:calc(100% - 22px);margin-left:22px}.guest-details.plus-one-details{width:calc(100% - 22px);margin-left:22px}.result-row.plus-one-row{font-size:.92rem}.result-row-flex.plus-one-row-flex:active{background:var(--surface-active)}.badge{border-radius:999px;margin-left:8px;padding:2px 8px;font-size:.72rem;font-weight:600;display:inline-block}.badge.checked{background:var(--badge-checked-bg);color:var(--good)}.badge.vip{background:var(--badge-vip-bg);color:var(--vip-gold)}.badge.dup{background:var(--badge-dup-bg);color:var(--dup-purple)}.result-row-flex.possible-dup{background:var(--row-dup-bg);border:1px solid var(--row-dup-border);border-radius:10px}.advanced-section{border-top:1px solid var(--line);margin-top:14px;padding-top:16px}.walkin-entry{border-top:1px solid var(--line);flex-direction:column;margin-top:14px;padding-top:16px;display:flex}.about-panel{flex-direction:column;gap:2px;display:flex}.app-footer{border-top:1px solid var(--line);margin-top:auto;padding-top:16px}.event-ended-message{text-align:center;font-family:var(--display);letter-spacing:.01em;text-transform:uppercase;color:var(--cream);flex:1;justify-content:center;align-items:center;margin:0;padding:16px;font-size:clamp(1.6rem,6vw,2.6rem);font-weight:700;line-height:1.15;display:flex}.identify-hero{background:var(--bg);border-radius:14px;flex:1;min-height:0;position:relative;overflow:hidden}.identify-hero-media{object-fit:cover;width:100%;height:100%;transition:opacity .3s;position:absolute;inset:0}.identify-hero-title{z-index:1;font-family:var(--display);font-weight:700;font-size:clamp(2rem, min(17.33vw, calc(var(--hero-h,300px) * .24)), 4.53rem);letter-spacing:.02em;text-transform:uppercase;color:#fff6da;text-shadow:0 0 20px #fff6da40;text-align:left;pointer-events:none;flex-direction:column;justify-content:flex-end;align-items:flex-start;margin:0;padding:0 16px 8%;line-height:.88;display:flex;position:absolute;inset:0}.identify-hero-title .word{display:block}.results-summary{justify-content:space-between;align-items:center;gap:8px;display:flex}.show-all-attendees{font-family:var(--sans);color:var(--muted);background:0 0;border:none;padding:6px 10px;font-size:.8rem;text-decoration:underline}.greeting{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;height:40dvh;padding:26px 0;display:flex}.greeting h2{margin:0;font-size:2.1rem}
