@font-face{font-family:Inter;src:local('Inter')}*{box-sizing:border-box}html{color-scheme:dark}body{margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#edf4ff;background:#06172c}button,input,a{-webkit-tap-highlight-color:transparent}button,input{font:inherit}a{color:inherit;text-decoration:none}button{cursor:pointer;border:1px solid #ffffff24;background:#122941;color:#eaf1fb;border-radius:10px;padding:13px 18px;font-size:14px;font-weight:600;transition:background .2s,transform .2s}button:hover{background:#203c56}button:active{transform:translateY(1px)}button:disabled{opacity:.45;cursor:not-allowed}input{width:100%;min-width:0;padding:15px 16px;border:1px solid #9ab3ce35;border-radius:10px;background:#04172c;color:#fff;font-size:16px;outline:none}input:focus{border-color:#f4c469;box-shadow:0 0 0 3px #edb64c25}button:focus-visible,a:focus-visible{outline:3px solid #f9c56a;outline-offset:4px}label{display:block;font-size:13px;font-weight:600;color:#c1cfdf;margin-bottom:9px}.gold-button{display:flex;align-items:center;justify-content:space-between;gap:20px;background:linear-gradient(120deg,#ffe4a5,#e9af48);border:0;color:#1e2530;font-size:15px;box-shadow:0 8px 25px #bd7b1620}.gold-button:hover{background:linear-gradient(120deg,#ffedc3,#f6c569)}.eyebrow{display:block;font-size:10px;letter-spacing:2.6px;font-weight:700;color:#e5bd73}h1,h2,h3,p{margin:0}p{color:#9eb0c5;line-height:1.65}h2{font-weight:600;letter-spacing:-.5px}.participant{min-height:100svh;background:#03172d url('./assets/navy.webp') center/cover fixed}.join-shell{max-width:480px;min-height:100svh;margin:auto;padding:40px 30px 24px;text-align:center;position:relative}.brand{display:flex;flex-direction:column;align-items:center;gap:12px}.brand img{width:142px;height:auto}.brand span{font-size:10px;letter-spacing:4px;color:#d9b674}.occasion{margin-top:43px}.occasion h1{font-family:Georgia,serif;font-weight:400;font-size:40px;line-height:1.13;letter-spacing:-1px;margin:15px 0}.occasion p{font-size:14px}.lamp-stage{height:210px;position:relative;display:grid;place-items:center;margin:7px 0 5px}.hero-lamp{height:220px;width:240px;object-fit:contain;position:relative;filter:drop-shadow(0 0 24px #efa82925);animation:breathe 4s ease-in-out infinite}.lamp-halo{position:absolute;width:230px;height:150px;border-radius:50%;background:radial-gradient(ellipse,#d6922035,transparent 70%);top:70px}.participant form{text-align:left}.privacy{font-size:11px;margin:9px 0 19px;color:#8da1ba}.participant .gold-button{width:100%;padding:18px 22px}.join-footer{font-size:11px;color:#bac7d8;margin-top:22px;display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap}.powered{display:block;width:100%;font-size:9px;letter-spacing:1px;color:#667f9b;margin-top:12px}.status-dot{width:5px;height:5px;background:#f3c369;border-radius:50%;box-shadow:0 0 8px #e5b760}.message{font-size:13px;margin-top:12px;color:#f7d48c;min-height:20px}.success-panel{padding:14px 0}.success-panel h2{font:32px Georgia,serif;color:#ffe2a2;margin:14px 0}.success-panel p{font-size:14px}.success-panel .eyebrow{font-size:8px;letter-spacing:1.2px}.participant.lit .hero-lamp{filter:drop-shadow(0 0 38px #f7b63770)}@keyframes breathe{50%{transform:translateY(-6px);filter:drop-shadow(0 0 30px #efa82950)}}
/* Projection: exact 2.5:1 canvas, letterboxed on other displays. */
.projection{height:100vh;overflow:hidden;background:#000;display:flex;align-items:center;justify-content:center}.projection #projection-frame{width:min(100vw,250vh);height:min(40vw,100vh);position:relative;container-type:inline-size;overflow:hidden;background:#031a36 url('./assets/navy.webp') center/100% 100%}.projection canvas{position:absolute;inset:0;width:100%;height:100%}.screen-heading{position:absolute;left:4%;top:5%;display:flex;align-items:center;gap:1.5cqw;pointer-events:none;transition:opacity 1s}.screen-heading>img{width:9cqw;height:auto}.screen-heading .eyebrow{font-size:.65cqw;letter-spacing:.17cqw}.screen-heading h1{font-family:Georgia,serif;font-weight:400;font-size:1.65cqw;margin-top:.55cqw}.screen-count{position:absolute;left:4%;bottom:4%;font-size:.85cqw;color:#d5bf91;letter-spacing:.03cqw}.screen-count span{font-variant-numeric:tabular-nums;color:#ffe9b3;font-size:1.1cqw;font-weight:700}.projection #scan-card{position:absolute;right:3%;top:4%;display:flex;gap:.5cqw;flex-direction:column;align-items:center;transition:opacity .6s}.projection #scan-card img{width:5.7cqw;border-radius:.3cqw}.projection #scan-card span{font-size:.65cqw;color:#efdaad}#screen-rehearsal{position:absolute;right:3%;bottom:4%;font-size:.65cqw;letter-spacing:.15cqw;color:#e7bf72}#finale-copy{position:absolute;top:11%;width:100%;text-align:center;pointer-events:none}#finale-copy .eyebrow{font-size:.65cqw}#finale-copy h2{font:2.3cqw Georgia,serif;margin-top:.5cqw;color:#ffe8b7;text-shadow:0 0 30px #e0a23b40}#connection{position:absolute;bottom:1%;left:4%;font-size:.6cqw;color:#ffa58c}#fullscreen{position:fixed;bottom:16px;right:16px;background:#0b1d30d9;opacity:0;transition:opacity .2s;z-index:3}.projection:hover #fullscreen,#fullscreen:focus{opacity:1}.projection.preview #fullscreen{display:none}.blackout *{visibility:hidden}.blackout{background:#000!important}
/* Operator */
.operator{background:radial-gradient(ellipse at 80% 0,#17335270,transparent 50%),#081727}.admin-top{height:78px;border-bottom:1px solid #ffffff10;display:flex;align-items:center;justify-content:space-between;padding:0 4vw}.admin-wordmark{font-size:24px;font-weight:750;letter-spacing:-1px}.admin-wordmark span{color:#e7b85e;font-weight:400}.admin-wordmark small{display:block;font-size:8px;letter-spacing:3px;color:#8298b0;margin-top:3px}.admin-top nav{display:flex;gap:24px;align-items:center;font-size:12px;color:#9fb3c8}.admin-main{max-width:1440px;margin:0 auto;padding:42px 4vw 70px}.console-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.console-title h1{font:38px Georgia,serif;margin-top:10px}.console-title p{font-size:13px;margin-top:7px}.live-badge{font-size:11px;padding:10px 16px;border-radius:30px;border:1px solid #5cba8b55;color:#98ddb7;background:#3b9c7512;text-transform:uppercase;letter-spacing:1px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid #ffffff14;border-bottom:1px solid #ffffff14;padding:22px 0;margin-bottom:30px}.metrics>div{padding-left:24px;border-left:1px solid #ffffff14}.metrics>div:first-child{padding-left:0;border:0}.metrics span{font-size:11px;color:#879db7}.metrics strong{display:block;font-size:30px;font-weight:500;margin-top:8px;font-variant-numeric:tabular-nums}.console-grid{display:grid;grid-template-columns:1.65fr 1fr;gap:24px;align-items:start}.control-panel{background:#0d2034;border:1px solid #ffffff0d;border-radius:16px;padding:24px;min-width:0}.control-panel h2{font-size:19px}.control-panel p{font-size:12px;margin-top:10px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:18px}.section-heading a{font-size:11px;color:#cdb17e}.control-panel iframe{width:100%;aspect-ratio:2.5;border:1px solid #ffffff15;border-radius:8px;background:#000;display:block}.show-buttons{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.show-buttons button{font-size:12px;padding:12px 15px}.danger-outline{color:#f1a59c;border-color:#ca746c50;background:transparent}.finale-panel{margin-top:28px;padding:26px 24px;background:linear-gradient(110deg,#332b26,#12263d);border:1px solid #d5a34a3b;border-radius:12px}.finale-panel h2{font:26px Georgia,serif;margin-top:9px}.finale-panel .gold-button{margin-top:24px;width:100%;justify-content:center}.quiet{border:0;background:transparent;box-shadow:none;color:#9cafc4}.finale-panel .quiet{width:100%;font-size:11px;margin-top:4px}.admin-qr{display:flex;gap:22px;align-items:center;margin:20px 0}.admin-qr img{width:110px;border-radius:8px}.admin-qr p{font:22px/1.35 Georgia,serif;color:#dfc38d}.copy-row{display:flex;gap:8px}.copy-row input{font-size:12px;padding:12px}.copy-row button{font-size:12px}.text-link{display:inline-block;margin-top:12px;font-size:11px;color:#e5bd73}.control-panel .hint{font-size:10px;color:#8196ae}.switch-row{display:flex;align-items:center;justify-content:space-between;margin:18px 0;color:#c4d0df;font-size:12px}.switch-row input{width:18px;height:18px;accent-color:#eab85c;cursor:pointer}.control-panel input[type=range]{padding:0;accent-color:#e9b65c;height:16px;margin:6px 0 20px;box-shadow:none}.control-panel label>span{float:right;color:#d8b980;font-size:11px}hr{border:0;border-top:1px solid #ffffff12;margin:24px 0}.lower{margin-top:24px;grid-template-columns:1.65fr 1fr}.lower h3{font-size:15px}.participant-list{margin-top:15px;max-height:340px;overflow:auto}.person-row{display:flex;align-items:center;gap:12px;justify-content:space-between;padding:12px 0;border-bottom:1px solid #ffffff0c}.person-row strong{font-size:13px;font-weight:500;overflow-wrap:anywhere}.person-row small{display:block;font-size:10px;color:#859bb4;margin-top:4px}.person-row button{font-size:10px;padding:7px 10px}.person-row .row-actions{display:flex;gap:5px;flex-shrink:0}.person-row>div:first-child{min-width:0}.empty{padding:24px 0;font-size:13px;color:#8097b2}.toast{position:fixed;z-index:20;bottom:24px;left:50%;transform:translateX(-50%);max-width:90vw;background:#f7dba4;color:#203041;border-radius:12px;box-shadow:0 5px 35px #0006;padding:14px 22px;font-size:13px}.login-card{max-width:450px;margin:7vh auto}.login-card h1{font:46px/1.1 Georgia,serif;letter-spacing:-1px;margin:20px 0}.login-card p{font-size:14px}.login-card form{margin-top:30px}.login-card button{width:100%;margin-top:16px}.login-card #login-error{color:#f5b1a3;margin-top:14px}dialog{border:1px solid #bca06a55;border-radius:18px;background:#0e2238;color:#f3f5fa;padding:30px;width:460px;max-width:calc(100vw - 30px)}dialog::backdrop{background:#000b;backdrop-filter:blur(5px)}dialog h2{font:28px Georgia,serif;margin:12px 0}dialog p{font-size:13px;margin-bottom:20px}.dialog-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:24px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0)}[hidden]{display:none!important}@media(max-width:850px){.console-grid,.lower{grid-template-columns:1fr}.admin-main{padding:30px 20px}.admin-top{padding:0 20px}.console-title h1{font-size:30px}.admin-top nav{gap:15px}.control-panel{padding:20px}.metrics{gap:10px}.metrics>div{padding-left:10px}.metrics span{font-size:10px}.metrics strong{font-size:24px}}@media(max-width:400px){.join-shell{padding:28px 22px 20px}.occasion{margin-top:30px}.occasion h1{font-size:34px}.lamp-stage{height:180px}.hero-lamp{height:195px}.admin-top nav>a:first-child{display:none}.console-title{align-items:start;gap:12px}.console-title h1{font-size:26px}.live-badge{padding:8px 10px}.metrics{grid-template-columns:repeat(2,1fr);row-gap:18px}.metrics>div:nth-child(3){padding-left:0;border:0}.show-buttons button{flex-grow:1}.admin-top .admin-wordmark{font-size:21px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

.participant{background-image:url('./assets/navy.webp'),url('./assets/navy.webp');background-size:auto 50%,auto 50%;background-position:left top,right bottom;background-repeat:no-repeat}.projection #scan-card img{width:7.3cqw}.projection #scan-card span{font-size:.72cqw}#screen-rehearsal{background:#081d32cc;padding:.3cqw .55cqw;border-radius:.3cqw;z-index:2}

#replay-demo{position:fixed;bottom:16px;left:16px;z-index:4;background:#142c46e8;border-color:#dcb76e66;color:#ffe2a2;font-size:12px}#projection-frame:has(#screen-rehearsal:not([hidden])){isolation:isolate}

#replay-finale{position:fixed;bottom:16px;left:185px;z-index:4;background:#142c46e8;border-color:#dcb76e66;color:#ffe2a2;font-size:12px}
body:has(#replay-demo) #fullscreen{top:16px;bottom:auto}

.projection .festive-logo{position:absolute;right:3%;top:3%;width:8.8cqw;height:auto;z-index:3;pointer-events:none}.projection #scan-card{right:14.8%}

.ceremonial-finale #finale-copy{top:43%;left:11%;width:27%;text-align:left}.ceremonial-finale #finale-copy h2{font-size:2.8cqw;line-height:1.14;max-width:10ch}.ceremonial-finale #finale-copy .eyebrow{font-size:.65cqw;letter-spacing:.13cqw}

body:has(#replay-demo) #replay-demo{top:16px;bottom:auto;left:calc(50% - 120px)}body:has(#replay-demo) #replay-finale{top:16px;bottom:auto;left:calc(50% + 49px)}body:has(#replay-demo) #fullscreen{top:16px;bottom:auto;left:calc(50% + 185px);right:auto}.projection.preview #replay-demo,.projection.preview #replay-finale{display:none}
@media(max-width:700px){body:has(#replay-demo) #replay-demo{left:8px;top:8px}body:has(#replay-demo) #replay-finale{left:175px;top:8px}body:has(#replay-demo) #fullscreen{display:none}}
