
:root{color-scheme:dark;--bg:#101827;--panel:#192438;--line:#34445d;--muted:#a8b8ce;--accent:#ffc45e}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;background:var(--bg);color:#edf3fb;font:15px/1.6 "Malgun Gothic",system-ui,sans-serif}button,input,textarea,select{font:inherit}button,a,input,textarea,select{outline-offset:4px}button{cursor:pointer;border:1px solid var(--line);border-radius:9px;background:#293950;color:#f4f7fd;padding:9px 14px}button:hover{background:#3a4e6a}button:disabled{opacity:.5;cursor:default}button[aria-pressed=true]{border-color:#ffcf7b;background:#493e2a}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline}.top{max-width:1280px;margin:auto;padding:22px 28px;display:flex;align-items:center;justify-content:space-between;gap:22px;border-bottom:1px solid var(--line)}.brand{font-weight:900;font-size:22px;white-space:nowrap}nav{display:flex;gap:24px;font-size:14px}nav [aria-current]{color:var(--accent)}main{max-width:1240px;margin:auto;padding:30px 24px 60px}.intro{margin-bottom:28px}.eyebrow{font-size:11px;font-weight:800;letter-spacing:.15em;color:var(--accent);margin:0 0 9px}h1{font-size:clamp(26px,4vw,38px);line-height:1.25;letter-spacing:-.05em;margin:12px 0}h2{font-size:21px;margin:0;letter-spacing:-.03em}h2 small{color:var(--accent);font-size:12px;margin-right:8px}h3{font-size:18px}.intro p:not(.eyebrow),.hint{color:var(--muted)}.hint{font-size:12px;margin:12px 0 0}.panel{background:var(--panel);border:1px solid var(--line);padding:23px;border-radius:15px}.setup{display:grid;gap:18px}.section-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px}.quiet{font-size:12px;padding:6px 9px;background:transparent}.count{font-size:12px;color:var(--muted);font-weight:400;margin-left:12px}.accent,.primary{background:var(--accent);color:#19212c;border-color:var(--accent);font-weight:800}.accent:hover,.primary:hover{background:#ffd58c}label{font-size:13px;color:#c5d3e4;display:block}input:not([type=checkbox]),select,textarea{display:block;width:100%;min-width:0;padding:10px 12px;border:1px solid #4a5c77;border-radius:8px;background:#101a2b;color:#fff;margin-top:5px}input[type=checkbox]{accent-color:var(--accent)}.check{display:flex;align-items:center;gap:7px}.add-person{display:flex;align-items:flex-end;gap:10px}.add-person>label:first-child{flex:1;max-width:360px}.photo-pick{border:1px solid var(--line);border-radius:8px;padding:10px;cursor:pointer;height:45px;display:flex;align-items:center}.photo-pick input{position:absolute;width:1px!important;height:1px;opacity:0;overflow:hidden}.photo-pick:focus-within{outline:2px solid var(--accent)}.add-person>button{height:45px;min-width:80px}.roster-tools{display:flex;gap:9px;flex-wrap:wrap;align-items:center;margin:16px 0}.roster-tools button{font-size:13px}.bulk-add{display:flex;align-items:center;gap:7px;margin-right:8px}.bulk-add input{width:72px;margin:0}.list-tools{border-top:1px solid var(--line);padding:13px 0 10px;display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--muted);font-size:12px}.people-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:9px;max-height:350px;overflow:auto;padding:2px}.person-card{display:flex;align-items:center;position:relative;border:1px solid #3a4657;border-radius:10px;background:#111c2c;min-height:78px;opacity:.6;overflow:hidden}.person-card.selected{border-color:#6a879e;background:#23364a;opacity:1}.person-photo{flex:none;border:0;background:#456078;border-radius:50%;width:43px;height:43px;margin:10px 8px;padding:0;overflow:hidden;font-size:20px;font-weight:800}.person-photo img{width:100%;height:100%;object-fit:cover}.person-toggle{border:0;background:none!important;padding:9px 24px 9px 0;text-align:left;align-self:stretch;flex:1;min-width:0;color:inherit}.person-toggle b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}.person-toggle small{display:block;font-size:11px;font-weight:400;color:var(--muted)}.person-delete{position:absolute;right:2px;top:1px;padding:1px 6px;background:none;border:0;color:#aebbd0}.empty{grid-column:1/-1;padding:20px;text-align:center;color:var(--muted)}.team-number{display:flex;align-items:center;gap:12px;white-space:nowrap}.team-number input{width:80px;margin:0;font-size:18px;font-weight:800}.capacity-bar{display:flex;justify-content:space-between;align-items:center;gap:14px;margin:13px 0}.capacity-bar p{margin:0;font-size:13px}.valid{color:#7ce1b6}.invalid{color:#ffca75}.team-settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.team-setting{display:grid;grid-template-columns:28px 1fr 70px;align-items:end;gap:10px;padding:14px;border:1px solid var(--line);border-top:3px solid var(--tone);border-radius:10px;background:#111d2e}.team-no{font-weight:800;font-size:18px;color:var(--tone);padding-bottom:7px}.team-setting label{font-size:11px}.team-setting input{font-size:14px;padding:9px 8px}.launch{display:grid;grid-template-columns:1fr 280px;align-items:center;gap:8px 20px}.launch-options{display:flex;align-items:center;gap:25px}.launch-options>label:first-child{display:flex;gap:12px;align-items:center;white-space:nowrap}.launch-options select{width:auto;margin:0}.launch .primary{grid-column:2;grid-row:1/3;font-size:19px;padding:17px;display:flex;justify-content:space-between}.launch .hint{grid-column:1/-1;text-align:right;margin:0}#error{color:#ffb5a7;margin:0;font-size:13px}#notice{color:#ffd18b}body.showing3d .intro,body.showing3d .history,body.showing3d .how,body.showing3d footer{display:none}body.showing3d main{max-width:1500px;padding-top:18px}.show.panel{padding:0;overflow:hidden}.show-toolbar{padding:17px 22px;display:flex;justify-content:space-between;align-items:center;gap:16px}.show-controls{display:flex;gap:6px;flex-wrap:wrap}.show-controls button{font-size:12px;padding:8px 10px}.stage-wrap{position:relative;background:#111b2e;overflow:hidden}#stage3d{height:clamp(440px,66vh,700px);width:100%}#stage3d canvas{display:block;width:100%;height:100%}.stage-vignette{position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 -50px 70px #10182766}.show-cue{position:absolute;inset:0;display:grid;place-items:center;font-weight:900;font-size:clamp(55px,9vw,125px);font-style:italic;color:#ffcc6f;text-shadow:0 8px 0 #252a36,0 0 40px #ffbd6333;pointer-events:none}.stage-caption{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);max-width:90%;border:1px solid #8197af55;border-radius:30px;background:#122135e8;padding:7px 15px;display:flex;align-items:center;gap:8px;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}.live-dot{background:#ffcc6f;border-radius:50%;width:7px;height:7px;flex:none}.show-status{padding:10px 18px;display:flex;align-items:center;justify-content:space-between;gap:14px;font-size:12px}.show-status p{margin:0;color:var(--accent);font-weight:800}.show-status span{color:var(--muted)}.team-progress{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;padding:0 16px 15px;max-height:180px;overflow:auto}.progress-card{border:1px solid var(--line);border-left:3px solid var(--tone);padding:9px 11px;border-radius:7px;font-size:12px}.progress-card b{display:block;color:var(--tone)}.progress-card small{color:var(--muted)}.arrivals{display:flex;flex-wrap:wrap;gap:5px}.arrivals span{font-size:11px}.team-reveal{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,#111b2ee8 0,transparent 45%,transparent 55%,#111b2ef2 100%);border-top:3px solid var(--tone)}.reveal-copy{padding:22px 28px;text-align:center}.reveal-copy>p:first-child{font-size:12px;letter-spacing:.24em;color:var(--tone);margin:0}.reveal-copy h2{font-size:clamp(30px,5vw,56px);font-weight:900;font-style:italic;letter-spacing:-.04em;line-height:1.1;margin:6px 0;color:white;text-shadow:0 4px 20px #0007}.reveal-copy>p{font-size:13px;margin:8px 0;color:#ccdaec}#revealMembers{position:absolute;bottom:68px;left:8%;right:8%;max-height:90px;overflow:auto;display:flex;flex-wrap:wrap;justify-content:center;gap:7px;pointer-events:auto}#revealMembers span{display:flex;align-items:center;gap:5px;background:#152237dd;border:1px solid #a0b2cd66;border-radius:20px;padding:4px 10px;font-size:12px}#revealMembers img{width:23px;height:23px;border-radius:50%;object-fit:cover}.reveal-nav{position:absolute;bottom:15px;left:0;right:0;display:flex;justify-content:center;gap:8px;pointer-events:auto}.lineup~.stage-caption{display:none}.fade-in{animation:team-fade .7s both}@keyframes team-fade{from{opacity:0;filter:brightness(1.7);transform:translateY(9px)}to{opacity:1;filter:brightness(1);transform:translateY(0)}}.result-heading{display:flex;justify-content:space-between;align-items:center;margin:18px 0 25px}.result-heading h2{font-size:32px}.result-heading p{color:var(--muted)}.team-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(225px,1fr));gap:16px}.team-card{background:var(--panel);border:1px solid var(--line);border-top:4px solid var(--tone);border-radius:12px;padding:20px;min-width:0}.team-card h3{margin:0 0 5px;color:var(--tone);overflow-wrap:anywhere}.team-card ul{list-style:none;padding:0;margin:16px 0}.team-card li{border-top:1px solid var(--line);padding:8px 0;overflow-wrap:anywhere;display:flex;align-items:center;gap:7px}.member-id{color:var(--muted);font-size:11px}.member-face{width:30px;height:30px;border-radius:50%;object-fit:cover}.actions{display:flex;flex-wrap:wrap;gap:8px;margin:25px 0 10px}.fields{display:flex;gap:12px;align-items:end;margin:14px 0}.fields label{flex:1}.history{margin-top:32px}.history #history{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}.how{margin-top:30px;color:var(--muted);font-size:13px}.how h2{font-size:18px;color:#edf3fb}.how li{margin:7px 0}details{margin-top:18px}summary{cursor:pointer;color:var(--muted)}footer{max-width:1240px;margin:0 auto;padding:24px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}footer a{margin-right:20px}dialog{width:min(580px,92vw);background:var(--panel);border:1px solid var(--line);border-radius:15px;color:#edf3fb;padding:24px}dialog::backdrop{background:#060c19bf}dialog textarea{margin:12px 0}dialog .accent{margin-top:18px}#result:fullscreen{background:var(--bg);padding:30px;overflow:auto}
@media(max-width:650px){.top{padding:16px;display:block}.brand{font-size:20px}nav{margin-top:10px;gap:16px;font-size:12px}main{padding:24px 12px}.panel{padding:16px}.section-head{gap:8px}.count{display:block;margin-left:0;font-size:11px}h2{font-size:18px}.add-person{gap:6px}.add-person>label:first-child{min-width:90px}.photo-pick{font-size:12px;padding:7px}.add-person>button{min-width:55px;padding:7px}.roster-tools{gap:7px}.roster-tools button{font-size:12px}.bulk-add{width:100%;margin-bottom:4px}.list-tools{display:block}.list-tools>div{margin-top:8px;display:flex;gap:3px;flex-wrap:wrap}.people-grid{grid-template-columns:repeat(2,minmax(0,1fr));max-height:310px}.person-photo{width:32px;height:32px;margin:8px 6px}.person-card{min-height:67px}.person-toggle b{font-size:12px}.person-toggle small{font-size:10px}.team-setting{padding:11px}.team-settings-grid{grid-template-columns:1fr}.capacity-bar{align-items:flex-start}.capacity-bar p{font-size:12px}.capacity-bar button{white-space:nowrap}.launch{grid-template-columns:1fr}.launch .primary{grid-column:1;grid-row:auto;margin-top:5px}.launch .hint{text-align:center}.launch-options{justify-content:space-between;gap:14px}.show-toolbar{display:block;padding:14px}.show-controls{margin-top:12px}.show-controls button{padding:8px;font-size:11px}body.showing3d main{padding:12px 7px}#stage3d{height:480px}.show-status{align-items:flex-start;padding:10px;font-size:11px}.show-status span{max-width:140px;text-align:right}.team-progress{grid-template-columns:repeat(2,minmax(0,1fr));padding:0 10px 10px}.reveal-copy{padding:18px 12px}.reveal-copy h2{font-size:32px}#revealMembers{left:4%;right:4%;max-height:96px}.reveal-nav button{font-size:12px;padding:8px 10px}.team-grid{grid-template-columns:1fr}.result-heading h2{font-size:25px}.fields{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;scroll-behavior:auto!important}}@media print{body{background:white;color:black}.top,.intro,.setup,.show,.actions,.history,.how,footer,button,details,.team-card label,#notice{display:none!important}.team-grid{display:grid;grid-template-columns:repeat(2,1fr)}.team-card{break-inside:avoid;background:white;color:black}.team-card h3{color:black}#result[hidden]{display:none!important}}

.reveal-copy h2{overflow-wrap:anywhere}.progress-card b{overflow-wrap:anywhere}
/* Readable broadcast overlay, independent of WebGL resolution. */
#stage3d{position:relative}#stage3d>canvas{display:block}.draw-label-layer{position:absolute;inset:0;pointer-events:none;z-index:3;overflow:hidden}.draw-name{position:absolute;max-width:210px;padding:4px 9px;border:1px solid #dbeaff99;border-radius:7px;background:#081424ef;color:#fff;font-size:16px;font-weight:800;line-height:1.3;overflow-wrap:anywhere;box-shadow:0 2px 8px #0008}.draw-name.is-active{font-size:18px;border:2px solid #ffd368;background:#342408f5;color:#fff5c9;z-index:2}.draw-name-line{position:absolute;height:1px;background:#e4f3ff99;transform-origin:0 50%}.draw-focus{position:absolute;left:18px;top:16px;z-index:5;max-width:min(460px,calc(100% - 36px));padding:12px 18px;border-left:4px solid var(--tone,#ffc45e);border-radius:6px 14px 14px 6px;background:linear-gradient(100deg,#101b30fa,#101b30e8);box-shadow:0 8px 25px #0005;pointer-events:none;overflow-wrap:anywhere}.draw-focus small{display:block;font-weight:900;font-size:11px;letter-spacing:.12em;color:var(--tone,#ffc45e)}.draw-focus strong{display:block;font-size:clamp(22px,3vw,36px);line-height:1.18;margin:5px 0;color:#fff;white-space:normal}.draw-focus>span{display:block;font-size:14px;color:#e1eafa}.draw-focus.is-arrival{border-color:var(--tone);background:linear-gradient(110deg,#14332ffa,#101b30f2)}.draw-pickups{position:absolute;bottom:40px;left:12px;right:12px;z-index:5;display:flex;gap:6px;max-height:78px;overflow:auto;flex-wrap:wrap;padding:4px;pointer-events:auto}.draw-pickups span{font-size:14px;line-height:1.3;font-weight:700;overflow-wrap:anywhere;padding:5px 9px;border-radius:6px;background:#152137f5;border:1px solid #ffc45e88;color:#fff}.draw-roster{margin:0;padding:12px 18px;background:#111d30;border-top:1px solid #35485f}.draw-roster summary{margin:0;color:#edf3fb;font-weight:700}.draw-roster-list{margin-top:12px;max-height:240px;overflow:auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:7px}.draw-roster-person{padding:8px 10px;background:#1e2c42;border:1px solid #40516b;border-radius:8px;min-width:0;overflow-wrap:anywhere}.draw-roster-person b{display:block;font-size:16px;color:white}.draw-roster-person span{font-size:13px;color:#b4c6db}.draw-roster-person[data-state=running]{border-color:#ffd269}.draw-roster-person[data-state=arrived]{border-color:var(--tone)}#revealMembers span{font-size:16px;font-weight:700;overflow-wrap:anywhere;max-width:100%}#revealMembers{max-height:130px;background:#0b142544;border-radius:8px}.progress-card.is-complete{box-shadow:inset 0 0 0 1px var(--tone),0 0 18px #80ffd51a}.team-complete{display:block;color:var(--tone);font-weight:900;font-size:13px;margin-top:7px}
@media(max-width:650px){.draw-name{font-size:14px;max-width:160px;padding:3px 6px}.draw-name.is-active{font-size:18px}.draw-focus{left:10px;top:10px;max-width:calc(100% - 20px);padding:9px 12px}.draw-focus strong{font-size:24px}.draw-focus>span{font-size:13px}.draw-pickups{max-height:64px;bottom:38px}.draw-pickups span{font-size:14px}.draw-roster{padding:12px}.draw-roster-person b{font-size:14px}#revealMembers span{font-size:14px}}
