@font-face{font-family:"Source Sans 3";src:url(/fonts/SourceSans3VF-Upright.woff2)format("woff2");font-weight:200 900;font-style:normal;font-display:swap}:root{--c-bg:#fff;--c-band:#efefef;--c-surface:#fff;--c-text:#333;--c-heading:#200a58;--c-muted:#5e5a6e;--c-border:#d6d3df;--c-input-bg:#f5f4f9;--gradient-cgi:linear-gradient(90deg, #e31937, #5236ab);--c-primary:#5236ab;--c-primary-dark:#3a2679;--c-primary-text:#fff;--c-danger:#e31937;--c-ok:#1f7a4d;--c-warn-bg:#fff4d6;--c-warn-text:#5c4300;--c-info-bg:#e6e3f3;--c-info-text:#200a58;--c-highlight:#f2a200;--c-highlight-text:#2b1a00;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--radius:4px;--radius-sm:4px;--radius-pill:999px;--tabbar-h:60px;--safe-bottom:env(safe-area-inset-bottom,0px);--font:"Source Sans 3", "Source Sans Pro", "Segoe UI", system-ui, -apple-system, Roboto, Arial, sans-serif}*{box-sizing:border-box}html,body{background:var(--c-bg);color:var(--c-text);font-family:var(--font);-webkit-text-size-adjust:100%;margin:0;font-size:16px;line-height:1.45}#app{min-height:100dvh}h1,h2,h3{margin:0 0 var(--space-3);color:var(--c-heading);line-height:1.25}h1{font-size:1.85rem;font-weight:600}h2{font-size:1.5rem;font-weight:400}h3{font-size:1.125rem;font-weight:600}p{margin:0 0 var(--space-3)}a{color:var(--c-primary)}.eyebrow{color:var(--c-primary);text-transform:uppercase;letter-spacing:.04em;margin-bottom:var(--space-1);font-size:1.05rem;font-weight:400;display:block}.hero{background:var(--c-band);position:relative;overflow:hidden}.hero-inner{z-index:1;max-width:720px;padding:var(--space-6) var(--space-4);margin:0 auto;position:relative}.hero h1{margin-bottom:var(--space-2);font-size:clamp(2rem,7vw,2.6rem)}.hero-sub{color:var(--c-heading);max-width:70%;margin:0;font-size:1.25rem}.hero:after{--ring:clamp(120px, 32vw, 280px);content:"";right:calc(var(--ring) * -.55);width:var(--ring);height:var(--ring);opacity:.9;background:linear-gradient(200deg,#e31937 20%,#5236ab 80%);border-radius:50%;position:absolute;top:50%;transform:translateY(-50%);-webkit-mask:radial-gradient(circle,#0000 52%,#000 53%);mask:radial-gradient(circle,#0000 52%,#000 53%)}.page{max-width:720px;padding:var(--space-4);margin:0 auto}.page-wide{max-width:1100px}.page-tabbed{padding-bottom:calc(var(--tabbar-h) + var(--safe-bottom) + var(--space-4))}.center{text-align:center}.muted{color:var(--c-muted)}.small{font-size:.875rem}.stack>*+*{margin-top:var(--space-3)}.row{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.row-between{justify-content:space-between}.grow{flex:auto;min-width:0}.hidden{display:none!important}.btn{justify-content:center;align-items:center;gap:var(--space-2);min-height:44px;padding:var(--space-2) var(--space-5);border:1px solid var(--c-border);border-radius:var(--radius-pill);background:var(--c-surface);color:var(--c-primary);font:inherit;cursor:pointer;white-space:nowrap;-webkit-tap-highlight-color:transparent;flex-shrink:0;font-weight:600;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--c-primary);border-color:var(--c-primary);color:var(--c-primary-text)}.btn-primary:not(:disabled):hover,.btn-primary:not(:disabled):active{background:var(--c-primary-dark);border-color:var(--c-primary-dark)}.btn:not(.btn-primary):not(:disabled):hover{background:var(--c-input-bg);border-color:var(--c-primary)}.btn-danger{color:var(--c-danger)}.btn-danger:not(:disabled):hover{border-color:var(--c-danger)!important}.btn-big{width:100%;min-height:56px;font-size:1.15rem}.btn-small{min-height:36px;padding:var(--space-1) var(--space-4);font-size:.875rem}.btn-icon{min-width:44px;padding:var(--space-2);color:var(--c-muted);background:0 0;border-color:#0000}.btn-icon:disabled{opacity:.3}.btn-link{color:var(--c-primary-dark);padding:var(--space-2);cursor:pointer;min-height:44px;font-weight:500;font:inherit;background:0 0;border:none;text-decoration:underline}.sheet{width:100%;max-width:480px;padding:var(--space-5) var(--space-4) calc(var(--space-4) + var(--safe-bottom));background:var(--c-surface);color:var(--c-text);border:none;border-radius:12px 12px 0 0;margin:auto auto 0}.sheet::backdrop{background:#200a5873}.sheet-title{color:var(--c-heading);text-align:center;margin-bottom:var(--space-4);font-size:1.15rem;font-weight:600}.sheet-cancel{width:100%;display:block}.modal{width:calc(100% - 2 * var(--space-4));border-radius:var(--radius);background:var(--c-surface);max-width:420px;color:var(--c-text);border:none;padding:0}.modal::backdrop{background:#200a5873}.modal-body{gap:var(--space-4);padding:var(--space-5);flex-direction:column;display:flex}.modal-title{color:var(--c-heading);margin:0;font-size:1.15rem;font-weight:600}.modal-actions{justify-content:flex-end;gap:var(--space-2);flex-wrap:wrap;display:flex}.modal .btn-danger{background:var(--c-danger);border-color:var(--c-danger);color:#fff}.modal .btn-danger:not(:disabled):hover{background:#b81430;border-color:#b81430!important}label{margin-bottom:var(--space-1);font-weight:600;display:block}.field+.field{margin-top:var(--space-3)}input[type=text],input[type=email],input[type=password],input[type=number],input[type=tel],select,textarea{width:100%;min-height:44px;padding:var(--space-2) var(--space-3);border:1px solid var(--c-border);border-radius:var(--radius-sm);background:var(--c-input-bg);color:var(--c-text);font:inherit}input:focus,select:focus,textarea:focus{background:var(--c-surface)}textarea{resize:vertical;min-height:72px}input:focus-visible,select:focus-visible,textarea:focus-visible,.btn:focus-visible,.cell:focus-visible{outline:3px solid var(--c-primary);outline-offset:2px}.input-code{text-transform:uppercase;letter-spacing:.3em;text-align:center;font-size:2rem;font-weight:700}.error{color:var(--c-danger);font-weight:600}.checkbox{gap:var(--space-2);align-items:center;min-height:44px;font-weight:600;display:flex}.checkbox input{width:22px;height:22px}.card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);padding:var(--space-4)}.card+.card{margin-top:var(--space-4)}.card h2{font-size:1.25rem}.choice-list{gap:var(--space-3);display:grid}.choice{align-items:center;gap:var(--space-3);width:100%;min-height:56px;padding:var(--space-3) var(--space-4);border:1px solid var(--c-border);border-radius:var(--radius);background:var(--c-surface);font:inherit;text-align:left;cursor:pointer;color:var(--c-text);font-size:1.1rem;font-weight:600;display:flex}.dot{border:2px solid #00000026;border-radius:50%;flex:none;width:16px;height:16px;display:inline-block}.pill{color:#2f2a40;white-space:nowrap;background:#e8e6ef;border-radius:999px;padding:2px 10px;font-size:.8rem;font-weight:700;display:inline-block}.pill-lobby{color:#173c80;background:#e0ecff}.pill-running{color:#12502f;background:#d9f2e3}.pill-closed{color:#7a1b15;background:#fde2e0}.pill-presenting{color:#200a58;background:#e6e3f3}.badge{background:var(--c-info-bg);color:var(--c-info-text);border-radius:6px;padding:2px 8px;font-size:.8rem;font-weight:700;display:inline-block}.badge-bingo{background:var(--c-highlight);color:var(--c-highlight-text);letter-spacing:.08em}.banner{padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);background:var(--c-info-bg);color:var(--c-info-text);margin-bottom:var(--space-4);font-weight:600}.banner-warn{background:var(--c-warn-bg);color:var(--c-warn-text)}.offline-banner{z-index:100;padding:var(--space-1) var(--space-3);color:#fff;text-align:center;padding-top:calc(env(safe-area-inset-top,0px) + var(--space-1));background:#2f2a40;font-size:.8rem;position:fixed;top:0;left:0;right:0}.topbar{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--c-surface);border-bottom:1px solid var(--c-border);border-top:6px solid var(--team-color,var(--c-primary));z-index:10;display:flex;position:sticky;top:0}.topbar h1{margin:0;font-size:1.15rem}.tabbar{z-index:20;background:var(--c-surface);border-top:1px solid var(--c-border);padding-bottom:var(--safe-bottom);display:flex;position:fixed;bottom:0;left:0;right:0}.tabbar-inline{border:none;border-bottom:1px solid var(--c-border);margin-bottom:var(--space-4);padding:0;position:static;overflow-x:auto}.tab{min-height:var(--tabbar-h);font:inherit;color:var(--c-muted);cursor:pointer;background:0 0;border:none;border-top:3px solid #0000;flex:1 1 0;font-weight:600}.tabbar-inline .tab{padding:0 var(--space-3);white-space:nowrap;border-top:none;border-bottom:3px solid #0000;flex:1 0 auto;min-height:48px}.tab-active{color:var(--c-primary-dark);border-top-color:var(--c-primary)}.tabbar-inline .tab-active{border-bottom-color:var(--c-primary)}.grid{--cols:3;grid-template-columns:repeat(var(--cols), minmax(0, 1fr));gap:var(--space-2);display:grid}.cell{aspect-ratio:1;border:2px dashed var(--c-border);border-radius:var(--radius-sm);background:var(--c-surface);font:inherit;color:var(--c-text);cursor:pointer;justify-content:center;align-items:center;padding:0;display:flex;position:relative;overflow:hidden}.cell:disabled{cursor:default}.cell img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.cell-text{padding:var(--space-1) var(--space-2);text-align:center;overflow-wrap:anywhere;font-size:.8rem;font-weight:600;line-height:1.2;position:relative}.cell-done{border-style:solid;border-color:var(--c-primary)}.cell-done .cell-text,.cell-rejected .cell-text,.cell-failed .cell-text{color:#fff;background:#0000009e;position:absolute;bottom:0;left:0;right:0}.cell-rejected{border:3px solid var(--c-danger)}.cell-failed{border:2px solid var(--c-danger)}.cell-overlay{align-content:center;place-items:center;gap:var(--space-1);color:var(--c-text);background:#ffffffc7;font-size:.85rem;font-weight:700;display:grid;position:absolute;inset:0}.cell-rejected .cell-overlay,.cell-failed .cell-overlay{color:var(--c-danger)}.spinner{border:3px solid #00000026;border-top-color:var(--c-primary);border-radius:50%;width:28px;height:28px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.toast{left:50%;bottom:calc(var(--tabbar-h) + var(--safe-bottom) + var(--space-4));max-width:calc(100% - 32px);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);color:#fff;opacity:0;pointer-events:none;z-index:200;background:#200a58;font-weight:600;transition:opacity .2s,transform .2s;position:fixed;transform:translate(-50%,20px)}.toast-ok{background:var(--c-ok)}.toast-error{background:var(--c-danger)}.toast-show{opacity:1;transform:translate(-50%)}.station-card h2{font-size:1.5rem}.station-step{color:var(--c-primary);text-transform:uppercase;letter-spacing:.04em;font-size:1rem;font-weight:400}.station-location{font-weight:600}.sticky-head{z-index:10;background:var(--c-bg);padding:var(--space-3) 0;border-bottom:1px solid var(--c-border);margin-bottom:var(--space-4);position:sticky;top:0}.score-entry{gap:var(--space-3);margin:var(--space-4) 0;grid-template-columns:72px 1fr 72px;align-items:center;display:grid}.score-entry .btn{min-height:72px;font-size:2rem}.score-value{text-align:center;font-variant-numeric:tabular-nums;font-size:4rem;font-weight:800}.pin-input{letter-spacing:.4em;text-align:center;font-size:2rem;font-weight:700}.big-code{letter-spacing:.15em;font-variant-numeric:tabular-nums;font-size:3rem;font-weight:800}.edit-row{gap:var(--space-2);padding:var(--space-2) 0;border-bottom:1px solid var(--c-border);align-items:flex-start;display:flex}.edit-row:last-child{border-bottom:none}.task-fields{gap:var(--space-2);grid-template-columns:1fr 1fr;display:grid}.task-fields .span-2{grid-column:span 2}.task-fields input,.task-fields textarea{min-height:40px}.table-wrap{overflow-x:auto}table{border-collapse:collapse;background:var(--c-surface);width:100%}th,td{text-align:left;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--c-border);white-space:nowrap}th{color:var(--c-muted);font-size:.85rem}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}tr.clickable{cursor:pointer}tr.expanded-row td{white-space:normal;background:#faf9fd}.score-input{width:90px!important}.photo-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(150px,1fr));display:grid}.photo-tile{border-radius:var(--radius-sm);background:var(--c-surface);font:inherit;text-align:left;cursor:pointer;color:var(--c-text);border:3px solid #0000;padding:0;overflow:hidden}.photo-tile img{aspect-ratio:1;object-fit:cover;width:100%;display:block}.photo-tile .caption{padding:var(--space-2);justify-content:space-between;gap:var(--space-2);font-weight:600;display:flex}.photo-tile-rejected{border-color:var(--c-danger)}.photo-tile-rejected img{opacity:.5}.photo-tile-selected{border-color:var(--c-primary);box-shadow:0 0 0 3px var(--c-primary)}.join-tab{position:relative}.join-toolbar{align-items:flex-start;min-height:36px;display:flex;position:relative}.pin-panel{z-index:2;max-width:100%;position:absolute;top:0;right:0}.pin-panel-open{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);padding:var(--space-3);overflow-wrap:anywhere;box-shadow:0 4px 16px #0000001f}.join-display{text-align:center;justify-content:center;align-items:center;gap:var(--space-3);padding:var(--space-5) 0;background:var(--c-bg);--join-qr:max(140px, min(calc(100dvh - 560px), 80vw));--join-code:clamp(2.5rem, min(12vw, 11vh), 9rem);flex-direction:column;display:flex}.join-display:fullscreen{min-height:100vh;padding:var(--space-6);--join-qr:max(160px, min(calc(100dvh - 22vh - 300px), 80vw));--join-code:clamp(3rem, min(12vw, 18vh), 9rem)}.join-name{font-size:clamp(1.25rem,3vw,2.25rem);font-weight:700}.join-label{color:var(--c-primary);text-transform:uppercase;letter-spacing:.1em;font-size:clamp(.9rem,1.5vw,1.25rem)}.join-name,.display-code{color:var(--c-heading)}.display-code{font-size:var(--join-code);letter-spacing:.15em;font-variant-numeric:tabular-nums;margin-right:-.15em;font-weight:800;line-height:1}.join-qr{aspect-ratio:1;border-radius:var(--radius-sm);background:#fff;width:var(--join-qr)!important;height:auto!important}.join-link{overflow-wrap:anywhere;font-size:clamp(1rem,2.5vw,1.75rem);font-weight:600}.present{--c-bg:#3d2a8a;--c-surface:#4b38a0;--c-text:#fff;--c-heading:#fff;--c-muted:#d4ccf2;--c-border:#6553b5;background:var(--c-bg);height:100dvh;color:var(--c-text);border-top:6px solid #0000;border-image:var(--gradient-cgi) 1;flex-direction:column;font-size:22px;display:flex}.present .eyebrow{color:var(--c-muted)}.present-main{flex-direction:column;flex:1;min-height:0;padding:32px 48px;display:flex;overflow:hidden}.present h1{flex:none;margin-bottom:24px;font-size:3rem}.present h2{font-size:2rem}.present-controls{border-top:1px solid var(--c-border);background:#32227a;justify-content:space-between;align-items:center;gap:12px;padding:12px 24px;display:flex}.present .btn{background:var(--c-surface);color:var(--c-text);border-color:var(--c-border)}.present .btn-primary{color:#3a2679;background:#fff;border-color:#fff}.present .btn-primary:not(:disabled):hover{background:#e6e3f3;border-color:#e6e3f3}.present .btn:not(.btn-primary):not(:disabled):hover{background:var(--c-border);border-color:var(--c-muted)}.present-photos{grid-template-columns:repeat(var(--cols,3), minmax(0, 1fr));grid-template-rows:repeat(var(--rows,1), minmax(0, 1fr));flex:1;gap:24px;min-height:0;display:grid}.present-photo{background:var(--c-surface);border-radius:var(--radius);border:4px solid #0000;flex-direction:column;min-height:0;display:flex;overflow:hidden}.present-photo-leader{border-color:var(--c-highlight)}.present-photo img,.present-photo .empty,.present-photo .photo-gone{object-fit:contain;background:#2c1d6e;flex:1;width:100%;min-height:0;display:block}.present-photo .empty{color:var(--c-muted);background:#42309a;place-items:center;display:grid}.present-photo .caption{white-space:nowrap;flex:none;justify-content:space-between;align-items:center;gap:12px;height:56px;padding:0 14px;font-weight:700;display:flex;overflow:hidden}.present-photo-team{flex-wrap:nowrap;min-width:0}.present-photo-name{text-overflow:ellipsis;min-width:0;overflow:hidden}.present-photo-votes{flex:none}.present-photo{container-type:inline-size}@container (width<=300px){.present-photo .caption{flex-direction:column;justify-content:center;align-items:stretch;gap:2px;font-size:16px;line-height:1.2}.present-photo-votes{color:var(--c-muted);font-weight:400}}.present table{font-size:calc(1.6rem * var(--table-scale,1));background:0 0}.present th,.present td{padding:calc(14px * var(--table-scale,1)) 20px}.present td.present-breakdown{font-size:calc(1rem * max(var(--table-scale,1), .75))}.present-main:has(>table){overflow-y:auto}.present th{font-size:1.1rem}.scoreboard-row-winner td{background:#f2a2001f;font-weight:700}.scoreboard-row-winner td:first-child{box-shadow:inset 6px 0 var(--c-highlight)}.present .dot{border-color:#ffffffb3}.winner-banner{background:var(--c-highlight);color:var(--c-highlight-text);letter-spacing:.06em;border-radius:999px;flex:none;align-self:flex-start;margin-bottom:24px;padding:12px 32px;font-size:2.4rem;font-weight:800;display:inline-block}.present-start{text-align:center;align-content:center;place-items:center;gap:24px;min-height:60vh;display:grid}.follower-big{text-align:center;padding:var(--space-6) 0;font-size:1.6rem;font-weight:800}.photo-gone{width:100%;padding:var(--space-2);text-align:center;background:var(--c-border);color:var(--c-muted);place-items:center;font-size:.8rem;display:grid}.cell .photo-gone{height:100%;position:absolute;inset:0}.photo-tile .photo-gone{aspect-ratio:1}.present-photo .photo-gone{background:#42309a;font-size:1.4rem;display:grid}
