*{box-sizing:border-box}body{--ink:#64212a;--paper:#fff2d1;--accent:#c82a36;color:var(--ink);background:#111c26;margin:0;font:16px/1.45 system-ui,sans-serif;overflow:hidden}body:before{content:"";z-index:15;pointer-events:none;background:repeating-linear-gradient(90deg,#b92133 0 38px,#ffe9b0 38px 76px);border-bottom:3px solid #7f2830;height:16px;position:fixed;inset:0 0 auto}#view,#labels,#leaders,#confetti{position:fixed;inset:0}canvas{touch-action:none;width:100%;height:100%;display:block}#labels,#leaders,#confetti{pointer-events:none;overflow:hidden}#leaders{width:100%;height:100%}.circus-title{z-index:8;pointer-events:none;text-align:center;text-shadow:1px 2px #fff4d4;width:460px;position:fixed;top:35px;left:50%;transform:translate(-50%)}.circus-title p{letter-spacing:.2em;margin:0 0 8px;font-size:10px;font-weight:900}.circus-title h1{letter-spacing:-.04em;margin:0;font:900 43px/.93 Georgia,serif}.circus-title h1 em{color:var(--accent);font-style:normal}.circus-title>div{margin-top:10px;font:italic 14px/1.3 Georgia,serif}.circus-ticket{z-index:8;text-align:center;pointer-events:none;background:#f7ca69;border:2px dashed;padding:10px 20px;font:900 16px/1.2 Georgia,serif;position:fixed;top:35px;left:28px;transform:rotate(-12deg)}.panel{z-index:10;background:#fff3d5f5;border:5px double #a33138;width:270px;max-height:calc(100vh - 300px);padding:24px 16px 16px;position:fixed;top:200px;left:24px;overflow:auto;box-shadow:5px 5px #0003}.panel:before{content:"★  BOX OFFICE  ★";color:#fff3d5;text-align:center;letter-spacing:.15em;background:#b82e39;margin:-24px -16px 18px;padding:10px;font:700 12px Georgia,serif;display:block}summary{cursor:pointer;align-items:center;gap:10px;font:700 19px/1.1 Georgia,serif;list-style:none;display:flex}summary::-webkit-details-marker{display:none}summary:after{content:"−";opacity:.65}details:not([open]) summary:after{content:"+"}#count{white-space:nowrap;flex-shrink:0;margin-left:auto;font:13px system-ui,sans-serif}label{margin:14px 0 7px;font-size:11px;font-weight:700;display:block}#add-form{margin-top:14px}.add-row{align-items:stretch;gap:8px;display:flex}#names{color:var(--ink);background:#fffaf0;border:1px solid;border-radius:0;width:100%;min-width:0;height:34px;padding:6px 8px;font:14px/1.4 system-ui,sans-serif}#names::placeholder{color:#847365}button{cursor:pointer;color:var(--ink);border:2px solid var(--ink);background:var(--paper);border-radius:0;padding:10px 14px;font:600 14px system-ui,sans-serif}button:hover{filter:brightness(1.08)}button:disabled,#names:disabled{opacity:.45;cursor:default}:focus-visible{outline-offset:4px;outline:3px solid #9d2633}#roster{flex-wrap:wrap;gap:6px;max-height:180px;margin:12px 0 0;padding:0;list-style:none;display:flex;overflow:auto}#roster li{background:#f1dcaa;border:1px dashed;border-left:5px solid #bd2637;align-items:center;max-width:100%;padding:3px 3px 3px 9px;font-size:13px;display:flex}#roster span{text-overflow:ellipsis;white-space:nowrap;max-width:188px;overflow:hidden}#roster button{color:inherit;background:0 0;border:0;padding:4px 7px;font-size:16px}#message{margin:9px 0 0;font-size:12px}#message:empty{display:none}.side-controls{z-index:10;gap:12px;width:230px;max-height:calc(100dvh - 230px);padding:0 6px 6px 0;display:grid;position:fixed;top:200px;right:24px;overflow-y:auto}.camera-panel{background:var(--paper);border:4px double;border-radius:50% 50% 0 0/16px 16px 0 0;padding:14px;box-shadow:5px 5px #0003}.camera-panel h2{margin:0;font:700 16px Georgia,serif}.camera-panel label{margin:10px 0 5px}.name-tag{white-space:nowrap;text-overflow:ellipsis;background:var(--paper);border:2px solid var(--ink);will-change:transform;max-width:132px;padding:4px 9px;font-size:12px;font-weight:800;position:absolute;overflow:hidden;box-shadow:2px 2px #0005}.name-tag.current,.name-tag.winner{background:var(--accent);color:var(--paper);border-color:var(--ink)}.name-tag.winner{box-shadow:0 0 24px #f9d36d80}#dock{z-index:10;pointer-events:none;flex-direction:column;align-items:center;gap:10px;width:min(380px,100% - 24px);display:flex;position:fixed;bottom:30px;left:50%;transform:translate(-50%)}.ride-controls{pointer-events:auto;flex-direction:column;gap:12px;width:100%;display:flex}.ride-control{border:2px solid var(--ink);background:var(--paper);min-width:0;color:var(--ink);flex:1;grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;padding:12px;display:grid}.ride-control label{text-transform:uppercase;letter-spacing:.04em;margin:0;font-size:10px}.ride-control input{width:100%;min-width:0;accent-color:var(--accent);cursor:pointer;grid-area:2/1/auto/-1}.ride-control input:disabled{cursor:default;opacity:.5}.ride-control output{white-space:nowrap;text-align:right;font-variant-numeric:tabular-nums;grid-area:1/2;font-size:13px;font-weight:900}.ride-action{pointer-events:auto;justify-items:center;gap:7px;display:grid}#start,#stop{border:3px solid var(--ink);width:100%;color:var(--paper);background:var(--accent);box-shadow:4px 5px 0 var(--ink);outline-offset:-9px;letter-spacing:.025em;border-radius:50% 50% 8px 8px/12px 12px 8px 8px;outline:2px dashed #fbe29d;padding:18px 24px;font:900 22px/1.1 Georgia,serif}#start:focus-visible,#stop:focus-visible{outline-offset:5px;outline:3px solid #9d2633}#result{background:var(--paper);border:4px double var(--ink);pointer-events:auto;width:min(320px,100%);max-height:30dvh;padding:8px 14px;overflow-y:auto;box-shadow:3px 4px #0002}.result-heading{justify-content:center;align-items:baseline;gap:10px;display:flex}#result small{text-transform:uppercase;letter-spacing:.12em;flex-shrink:0;font-size:10px}#winner-name{overflow-wrap:anywhere;min-width:0;font:900 24px/1.15 Georgia,serif}#error{z-index:30;color:#fff2d1;background:#602d32;padding:18px;position:fixed;bottom:130px;left:24px;right:24px}.confetto{background:var(--color);width:7px;height:12px;animation:2.6s ease-out forwards burst;position:absolute;top:70%;left:50%}@keyframes burst{0%{opacity:1;transform:translate(0)rotate(0)}65%{opacity:1}to{transform:translate(var(--x), var(--y)) rotate(var(--r));opacity:0}}[hidden]{display:none!important}@media (width<=900px){.circus-title{text-align:left;width:calc(100% - 235px);top:26px;left:18px;transform:none}.circus-title h1{font-size:36px}.circus-title p{letter-spacing:.08em;font-size:8px}.circus-title>div{font-size:11px}.circus-ticket{display:none}.panel{width:230px;max-height:300px;padding:14px;top:180px;left:15px}.panel:before{margin:-14px -14px 14px}summary{font-size:16px}.side-controls{width:200px;max-height:calc(100dvh - 180px);top:24px;right:15px}.camera-panel h2{font-size:14px}.camera-panel label{margin:6px 0 3px}.camera-panel select{padding:5px;font-size:12px}#roster{max-height:110px}#dock{width:min(380px,100% - 24px)}}@media (prefers-reduced-motion:reduce){.confetto{display:none}}#camera-modes{gap:5px;margin-top:12px;display:grid}#camera-modes button{border:1px solid var(--ink);color:var(--ink);text-align:left;cursor:pointer;background:0 0;padding:7px 9px;font:700 12px Georgia,serif}#camera-modes button[aria-pressed=true]{background:var(--accent);color:var(--paper);box-shadow:inset 0 0 0 2px var(--paper)}#camera-modes button:hover:not(:disabled){outline:1px solid var(--ink)}#camera-modes button:disabled{opacity:.4;cursor:default}.person-switcher{grid-template-columns:30px minmax(0,1fr) 30px;align-items:center;gap:6px;margin-top:12px;display:grid}.person-switcher button{border:1px solid var(--ink);background:var(--paper);min-height:32px;color:var(--ink);cursor:pointer;padding:4px;font-weight:900}.person-switcher button:disabled{opacity:.4;cursor:default}#camera-person{text-align:center;overflow-wrap:anywhere;font-size:12px;font-weight:700}#add{height:34px;padding:5px 12px}.mobile-title,#mobile-toolbar,#close-sheet{display:none}@media (width<=700px){.circus-title{top:max(22px, env(safe-area-inset-top));text-align:center;width:100%;left:0;transform:none}.circus-title .desktop-title,.circus-title p,.circus-title>div,.circus-ticket{display:none}.circus-title .mobile-title{font-size:26px;display:block}#mobile-toolbar{bottom:calc(10px + env(safe-area-inset-bottom));z-index:30;grid-template-columns:repeat(2,1fr);gap:8px;display:grid;position:fixed;left:12px;right:12px}#mobile-toolbar button{border:2px dashed var(--ink);min-height:44px;box-shadow:2px 3px 0 var(--ink);padding:8px;font:700 14px Georgia,serif}#mobile-toolbar button[aria-expanded=true]{background:var(--accent);color:var(--paper)}.side-controls{display:contents}#people-panel,#camera-panel,#ride-settings{top:auto;bottom:calc(86px + var(--dock-height,66px) + env(safe-area-inset-bottom));width:auto;max-height:min(45dvh, 360px, calc(100dvh - 160px - var(--dock-height,66px) - env(safe-area-inset-bottom)));background:var(--paper);border:4px double var(--ink);z-index:25;border-radius:0;margin:0;padding:18px 18px 54px;display:none;position:fixed;left:12px;right:12px;overflow-y:auto;box-shadow:3px 4px #64212a55}body[data-panel=people] #people-panel{display:block}body[data-panel=settings] #ride-settings{display:flex}#people-panel:before{display:none}#people-panel summary{pointer-events:none;padding-right:60px;font-size:16px}#people-panel summary:after{display:none}#camera-panel h2{padding-right:60px;font-size:16px}#ride-settings{gap:12px}.ride-control{padding:10px}.ride-control label{font-size:11px}.ride-control input{min-height:28px}#close-sheet{bottom:calc(94px + var(--dock-height,66px) + env(safe-area-inset-bottom));z-index:26;min-height:36px;padding:6px 10px;font-size:12px;position:fixed;right:20px}body[data-panel=people] #close-sheet,body[data-panel=settings] #close-sheet{display:block}#dock{bottom:calc(70px + env(safe-area-inset-bottom));gap:6px}#start,#stop{padding:11px 20px;font-size:18px}#result{padding:6px 12px}#winner-name{font-size:20px}#roster{max-height:150px}#names{height:40px;font-size:16px}#add{height:40px}#camera-modes{grid-template-columns:repeat(3,1fr)}#camera-modes button{text-align:center;min-height:44px}.person-switcher{grid-template-columns:44px minmax(0,1fr) 44px}.person-switcher button{min-height:44px}.name-tag{max-width:108px;padding:3px 6px;font-size:11px}body[data-running=true] #mobile-toolbar{display:none}body[data-running=true] #camera-panel{display:contents}body[data-running=true] #camera-panel h2{display:none}body[data-running=true] #camera-modes{bottom:calc(10px + env(safe-area-inset-bottom));z-index:30;gap:8px;margin:0;position:fixed;left:12px;right:12px}body[data-running=true] #camera-modes button{background:var(--paper);border:2px dashed var(--ink);box-shadow:2px 3px 0 var(--ink);padding:8px 4px;font-size:13px}body[data-running=true] #camera-modes button[aria-pressed=true]{background:var(--accent);color:var(--paper)}body[data-running=true] #follow-controls{bottom:calc(130px + env(safe-area-inset-bottom));background:var(--paper);border:2px solid var(--ink);z-index:25;width:min(260px,100% - 24px);padding:4px;position:fixed;left:50%;transform:translate(-50%)}body[data-running=true] .person-switcher{margin:0}}
