:root{color:#142d28;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--accent:#1d6552;--muted:#586762;--line:#dce3dc;background:#f3f5f1;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0}body.phone-racing{overscroll-behavior:none;overflow:hidden}a{color:var(--accent);text-underline-offset:.2em}button,input{font:inherit}button,.button,input{min-height:48px}button,.button{cursor:pointer;text-align:center;border:1px solid #0000;border-radius:10px;padding:.8rem 1.15rem;font-weight:650;line-height:1.35}button:disabled{cursor:wait;opacity:.6}.button{justify-content:center;align-items:center;gap:.25rem;text-decoration:none;display:inline-flex}.primary{background:var(--accent);color:#fff}.primary:hover:not(:disabled){background:#164e40}.secondary{color:#254d40;background:#fff;border-color:#bdcfc4}.secondary:hover:not(:disabled){background:#eef4ef}.danger{color:#fff;background:#9a3630}.danger:hover:not(:disabled){background:#7c2a25}.text-button{color:var(--accent);text-underline-offset:.2em;background:0 0;padding-left:0;padding-right:0;text-decoration:underline}.compact{min-height:42px;padding:.55rem 1rem}:focus-visible{outline-offset:4px;outline:3px solid #397cb0}h1,h2,p{margin-top:0}h1{letter-spacing:-.055em;overflow-wrap:anywhere;margin-bottom:1rem;font-size:clamp(2.2rem,5.5vw,3.4rem);line-height:1.1}h2{letter-spacing:-.025em;margin-bottom:1rem;font-size:1.25rem;line-height:1.3}p{line-height:1.6}.skip-link{z-index:10;background:#fff;border-radius:8px;padding:1rem;position:absolute;top:-100px;left:1rem}.skip-link:focus{top:1rem}.participant-shell,.admin-shell{max-width:760px;margin:2rem auto 5rem;padding:0 1.5rem}.participant-shell{max-width:640px}.page-heading{margin-bottom:2rem}.page-heading>p:not(.eyebrow):not(.connection){max-width:38rem;color:var(--muted);font-size:1.1rem}.eyebrow{text-transform:uppercase;letter-spacing:.15em;color:var(--accent);margin-bottom:.9rem;font-size:.73rem;font-weight:750}.card{border:1px solid var(--line);background:#fff;border-radius:18px;padding:1.8rem;box-shadow:0 3px 12px #142d2804}.join-card{max-width:520px}form{flex-direction:column;display:flex}label{margin-bottom:.5rem;font-size:.9rem;font-weight:650}input{color:#142d28;background:#fcfdfb;border:1px solid #b8c9bd;border-radius:9px;width:100%;margin-bottom:1.2rem;padding:.9rem 1rem;font-size:1.1rem}input::placeholder{color:#6c7972}input:disabled{opacity:.65}input[aria-describedby]{margin-bottom:.35rem}.field-help{color:var(--muted);margin-bottom:1.3rem;font-size:.8rem}.quiet{color:var(--muted);margin:1.2rem 0 0;font-size:.85rem}.invitation-label{color:#245747;background:#eef6ee;border-radius:9px;padding:.9rem 1rem;font-size:.9rem;font-weight:650}.invitation-label span{margin-top:.1rem;font-size:.8rem;font-weight:450;display:block}.message{color:#28503b;overflow-wrap:anywhere;background:#eaf2ec;border:1px solid #c7d9cb;border-radius:12px;margin-bottom:1.2rem;padding:1rem 1.2rem;font-size:.95rem}.warning{color:#6b4021;background:#fff8ec;border-color:#e7cfaf}.connection{color:var(--muted);align-items:center;gap:.5rem;margin:1rem 0 0;font-size:.8rem;font-weight:550;display:flex}.connection.live{color:var(--accent)}.status-dot{background:#88938c;border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.live .status-dot,.online .status-dot,.status-dot.online{background:#238353}.section-heading{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.section-heading h2{margin:0}.count{white-space:nowrap;color:#3f5b4c;background:#eef4ef;border-radius:20px;padding:.4rem .7rem;font-size:.75rem}.roster{margin:0;padding:0;list-style:none}.roster li{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:1rem;padding:1rem 0;display:flex}.roster li:last-child{padding-bottom:0}.participant-name{overflow-wrap:anywhere;min-width:0;font-size:1rem;font-weight:650}.participant-name small{color:var(--accent);white-space:nowrap;background:#eaf4ed;border-radius:4px;margin-left:.55rem;padding:.15rem .4rem;font-size:.7rem;font-weight:500}.presence{color:var(--muted);flex-shrink:0;align-items:center;gap:.35rem;font-size:.7rem;display:flex}.presence.online{color:var(--accent)}.empty-state{color:var(--muted);margin:1.8rem 0 .8rem}.admin-toolbar{justify-content:space-between;align-items:center;margin-bottom:1.2rem;display:flex}.admin-toolbar .connection{margin:0}.session-card{grid-template-columns:1fr 1fr;align-items:center;gap:2rem;margin-bottom:1.5rem;display:grid}.session-card .eyebrow{margin-bottom:.5rem}.session-card h2{color:var(--muted);margin-bottom:.1rem;font-size:.9rem}.session-pin{font-variant-numeric:tabular-nums;letter-spacing:.08em;margin-bottom:0;font-size:clamp(1.8rem,7vw,3.2rem);font-weight:750;line-height:1.3}.session-actions{flex-direction:column;gap:.85rem;display:flex}.session-actions .button{flex-direction:column}.button-note{font-size:.72rem;font-weight:450}.button-row{flex-wrap:wrap;gap:.8rem;display:flex}.close-confirmation{color:#733e30;background:#fff6f1;border-color:#e2b9aa}.close-confirmation h2{margin-bottom:.4rem}.projector-shell{max-width:1760px;margin:0 auto 3rem;padding:1rem 2rem}.projector-title{justify-content:space-between;align-items:center;gap:1.5rem;margin-bottom:1.6rem;display:flex}.projector-title h1{margin-bottom:0;font-size:clamp(2.5rem,4.8vw,4.6rem)}.projector-title .eyebrow{margin-bottom:.5rem}.projector-title .connection{margin:0;font-size:1rem}.projector-grid{grid-template-columns:minmax(420px,.95fr) minmax(0,1.05fr);align-items:start;gap:2rem;display:grid}.projector-invitation{text-align:center;padding:1.8rem}.projector-invitation h2{margin:0;font-size:clamp(1.3rem,2vw,1.85rem)}.qr-code{width:min(100%,440px);margin:.5rem auto}.qr-code svg{width:100%;height:auto;display:block}.qr-loading{min-height:350px;color:var(--muted);place-items:center;display:grid}.manual-invitation{border-top:1px solid var(--line);margin-top:1.3rem;padding-top:1.3rem}.manual-invitation>p:first-child{color:var(--muted);margin-bottom:.5rem;font-size:1.05rem}.short-url{overflow-wrap:anywhere;margin-bottom:.5rem;font-size:clamp(1.2rem,2vw,2rem);font-weight:650;line-height:1.35}.projector-pin{letter-spacing:.08em;font-variant-numeric:tabular-nums;margin:0;font-size:clamp(2rem,6vw,5rem);font-weight:800;line-height:1.25}.projector-pin span{letter-spacing:.15em;color:var(--muted);margin-bottom:.2rem;font-size:.8rem;display:block}.projector-roster{flex-direction:column;max-height:max(380px,100dvh - 220px);display:flex}.projector-roster-scroll{overscroll-behavior:contain;scrollbar-gutter:stable;flex:1;min-height:0;margin:-.25rem;padding:.25rem;position:relative;overflow-y:auto}.projector-roster>.section-heading,.projector-count,.projector-legend{flex-shrink:0}.projector-scroll-controls{flex-wrap:wrap;flex-shrink:0;gap:.5rem;margin-bottom:.6rem;display:flex}.projector-scroll-controls button{padding:.4rem .6rem;font-size:.8rem}.projector-roster h2{font-size:clamp(1.4rem,2vw,2rem)}.projector-count{font-variant-numeric:tabular-nums;color:#566b60;margin:0 0 1.5rem;font-size:2.2rem}.projector-count strong{color:#142d28;font-size:3.5rem;font-weight:750}.projector-count>span{font-size:1rem;display:block}.projector-names{grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:.7rem;margin:0;padding:0;list-style:none;display:grid}.projector-names li{background:#edf5ee;border:1px solid #d7e5d8;border-radius:8px;align-items:center;gap:.65rem;min-width:0;padding:.8rem;font-size:clamp(1.15rem,1.6vw,1.6rem);font-weight:600;display:flex}.projector-names li>span:nth-child(2){overflow-wrap:anywhere}.projector-names .status-dot{width:10px;height:10px}.projector-names li.participant-offline{color:#637068;background:#f6f7f5;border-color:#e5e8e3}.projector-legend{color:var(--muted);margin:1.5rem 0 0;font-size:.8rem}.projector-empty{max-width:850px;margin:3rem auto;padding:3rem}.projector-empty h1{font-size:clamp(2rem,4vw,3.5rem)}.projector-empty>p:not(.eyebrow):not(.connection):not(.message){color:var(--muted);font-size:1.2rem}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width>=1100px){.projector-shell{flex-direction:column;height:100dvh;margin-bottom:0;padding:.5rem 2rem 1.25rem;display:flex}.projector-title{flex-shrink:0;margin-bottom:1rem}.projector-title h1{font-size:clamp(2.5rem,4vw,3.6rem)}.projector-shell>.message{flex-shrink:0}.projector-grid{flex:1;align-items:stretch;gap:1.5rem;min-height:0}.projector-invitation{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);align-items:center;gap:1.25rem;min-height:0;padding:1.25rem;display:grid}.qr-instructions{min-width:0}.projector-invitation h2{font-size:clamp(1.15rem,1.6vw,1.5rem)}.qr-code{width:min(100%,100dvh - 380px,440px)}.qr-loading{min-height:min(280px,100dvh - 380px)}.manual-invitation{border-top:0;border-left:1px solid var(--line);text-align:left;min-width:0;margin:0;padding:0 0 0 1rem}.manual-invitation>p:first-child{font-size:1rem}.short-url{font-size:clamp(1.05rem,1.55vw,1.5rem)}.projector-pin{font-size:clamp(1.4rem, calc(16rem / var(--pin-digits)), 4rem)}.projector-pin span{margin-top:1rem}.projector-roster{min-height:0;max-height:none;padding:1.25rem}.projector-count{margin-bottom:1rem}}@media (width<=1000px){.projector-grid{grid-template-columns:1fr 1fr;gap:1rem}.projector-shell{padding:1rem}.projector-invitation,.projector-roster{padding:1.25rem}}@media (width<=680px){.participant-shell,.admin-shell{margin-top:1.8rem;padding:0 1rem}.card{border-radius:14px;padding:1.3rem}.page-heading{margin-bottom:1.5rem}.page-heading>p:not(.eyebrow):not(.connection){font-size:1rem}.section-heading{gap:.5rem}.section-heading h2{font-size:1.1rem}.count{font-size:.68rem}.roster li{gap:.6rem}.session-card{grid-template-columns:1fr;gap:1.5rem}.projector-grid{grid-template-columns:1fr}.projector-title{flex-direction:column;align-items:flex-start;gap:.6rem}.projector-title .connection{font-size:.8rem}.projector-empty{margin-top:1rem;padding:1.5rem}.qr-code{max-width:380px}.projector-roster{max-height:70dvh}.projector-names li{font-size:1.2rem}.button-row>button{flex:auto}}@media (prefers-reduced-motion:no-preference){button,.button{transition:background-color .12s}}
