:root{--violet:#8b6ad8;--violet-bright:#c4aefb;--panel-bg:#100c1cb8;--panel-border:#a082f02e;--text:#e8e4f6eb;--text-dim:#beb4dc8c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-synthesis:none;-webkit-font-smoothing:antialiased;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{color:var(--text);background:#000;margin:0;overflow:hidden}:is(body:has(.capture-page),body:has(.guest-page),body:has(.control-page)){overflow:auto}.stage{width:100%;height:100%;position:relative;overflow:hidden}.artboard{width:max(100vw, calc(100vh * var(--board-aspect)));aspect-ratio:var(--board-aspect);position:absolute;top:50%;left:50%;overflow:hidden;translate:-50% -50%}.backdrop{background:#000 url(/bg-1k.webp) 50%/cover no-repeat;position:absolute;inset:0}@media (width>=900px),(resolution>=1.5x){.backdrop{background-image:url(/bg-2k.webp)}}@media (width>=3000px),(width>=2000px) and (resolution>=2x){.backdrop{background-image:url(/bg-4k.webp)}}.emblem{z-index:2;pointer-events:none;-webkit-user-select:none;user-select:none;height:auto;position:absolute;top:50%;left:50%;translate:-50% -50%}.scene-canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.photo-wall{z-index:3;pointer-events:none}.ring-fade{pointer-events:none;animation:1.7s .28s both fade-in;position:absolute;inset:0}.emblem.fade-in{animation:1.55s both fade-in}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){.ring-fade,.emblem.fade-in{animation:none}}.reference{opacity:.5;pointer-events:none;mix-blend-mode:difference;width:auto;height:85%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.reference--wide{width:100%;height:auto}.hint{letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);pointer-events:none;margin:0;font-size:12px;position:absolute;bottom:24px;left:28px}.panel{border:1px solid var(--panel-border);background:var(--panel-bg);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-radius:16px;flex-direction:column;width:288px;max-height:calc(100% - 48px);display:flex;position:absolute;top:24px;right:24px;overflow:hidden;box-shadow:0 24px 60px #0000008c}.panel__head{border-bottom:1px solid #a082f01f;justify-content:space-between;align-items:flex-start;gap:12px;padding:16px 18px;display:flex}.panel--collapsed .panel__head{border-bottom:none}.panel__title{letter-spacing:.02em;margin:0;font-size:14px;font-weight:600}.panel__meta{font-variant-numeric:tabular-nums;color:var(--text-dim);margin:4px 0 0;font-size:11px}.panel__body{padding:6px 18px 18px;overflow-y:auto}.tabs{border:1px solid var(--panel-border);background:#8b6ad81a;border-radius:10px;flex-wrap:wrap;gap:4px;margin-top:14px;padding:3px;display:flex}.tabs button{font:inherit;color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:7px;flex:28%;padding:6px 0;font-size:12px;transition:background .15s,color .15s}.tabs button:hover{color:var(--text)}.tabs button.is-active{color:#120c22;background:var(--violet-bright);font-weight:600}.note{color:var(--text-dim);margin:16px 0 0;font-size:12px;line-height:1.5}.group{padding-top:14px}.group__title{letter-spacing:.16em;text-transform:uppercase;color:#aa8cf0b3;margin:0 0 8px;font-size:10px;font-weight:600}.slider{margin-bottom:10px;display:block}.slider__label{color:var(--text);justify-content:space-between;margin-bottom:5px;font-size:12px;display:flex}.slider__label em{font-variant-numeric:tabular-nums;color:var(--text-dim);font-style:normal}input[type=range]{appearance:none;background:#9678dc40;border-radius:999px;outline:none;width:100%;height:3px}input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--violet-bright);cursor:pointer;border-radius:50%;width:13px;height:13px;transition:transform .12s;box-shadow:0 0 12px #a078facc}input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.15)}input[type=range]::-moz-range-thumb{background:var(--violet-bright);cursor:pointer;border:none;border-radius:50%;width:13px;height:13px;box-shadow:0 0 12px #a078facc}.actions{flex-wrap:wrap;gap:8px;margin-top:18px;display:flex}.actions button,.icon-button{font:inherit;color:var(--text);border:1px solid var(--panel-border);cursor:pointer;background:#8b6ad824;border-radius:9px;flex:auto;padding:7px 10px;font-size:12px;transition:background .15s,border-color .15s}.actions button:hover,.icon-button:hover{background:#8b6ad847;border-color:#b496ff66}.actions button.is-active{background:#b496ff59;border-color:#c8b4ff8c}.actions__primary{background:#b496ff52;border-color:#c8b4ff80;font-weight:600}.actions button:disabled{opacity:.35;cursor:not-allowed}.icon-button{flex:none;width:26px;height:26px;padding:0;font-size:15px;line-height:1}@media (width<=640px){.panel{width:auto;top:12px;left:12px;right:12px}.hint{display:none}}.live-badge{color:var(--text-dim);background:var(--panel-bg);border:1px solid var(--panel-border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:999px;padding:8px 12px;font-size:12px;position:fixed;bottom:16px;left:16px}.live-badge--on{color:#9ef0b8;border-color:#78dca059}.capture-page,.control-page{background:radial-gradient(circle at top,#50328c59,#05040a 55%);flex-direction:column;justify-content:center;align-items:center;gap:16px;min-height:100%;padding:24px;display:flex}.capture-page__head,.control-page__head{text-align:center}.capture-page__head h1,.control-page__head h1{margin:0 0 6px;font-size:clamp(24px,4vw,34px);font-weight:600}.status{color:var(--text-dim);margin:0;font-size:13px}.status--on{color:#9ef0b8}.capture-page__frame{aspect-ratio:3/4;border:1px solid var(--panel-border);border-radius:24px;width:min(92vw,420px);position:relative;overflow:hidden;box-shadow:0 24px 80px #00000073}.capture-page__video,.capture-page__preview{object-fit:cover;background:#111;width:100%;height:100%}.capture-page__preview{opacity:.35;position:absolute;inset:0}.capture-page__shutter,.control-page__actions button{min-width:220px;font:inherit;color:var(--text);border:1px solid var(--panel-border);cursor:pointer;background:#8b6ad838;border-radius:999px;padding:14px 20px;font-size:15px;font-weight:600}.capture-page__shutter:disabled,.control-page__actions button:disabled{opacity:.4;cursor:not-allowed}.capture-page__error,.control-page__error{color:#ff9d9d;margin:0;font-size:13px}.capture-page__meta,.control-page__hint{text-align:center;max-width:420px;color:var(--text-dim);margin:0;font-size:13px;line-height:1.5}.control-page__hint a{color:var(--violet-bright)}.control-page__login{flex-direction:column;gap:12px;width:min(92vw,320px);display:flex}.control-page__field{color:var(--text-dim);flex-direction:column;gap:6px;font-size:13px;display:flex}.control-page__field input{font:inherit;color:var(--text);border:1px solid var(--panel-border);background:#100c1cb8;border-radius:12px;padding:12px 14px;font-size:15px}.control-page__logout{font:inherit;color:var(--text-dim);border:1px solid var(--panel-border);cursor:pointer;background:0 0;border-radius:999px;margin-top:8px;padding:10px 16px;font-size:13px}.control-page__stats{grid-template-columns:repeat(3,minmax(90px,1fr));gap:12px;width:min(92vw,420px);margin:0;display:grid}.control-page__stats div{text-align:center;background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:14px;padding:12px}.control-page__stats dt{letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim);margin:0 0 4px;font-size:10px}.control-page__stats dd{margin:0;font-size:18px;font-weight:600}.control-page__actions{flex-direction:column;gap:10px;width:min(92vw,320px);display:flex}.control-page__primary{background:#b496ff59;border-color:#c8b4ff80}.guest-page{min-height:100%;padding:max(20px, env(safe-area-inset-top)) 20px max(16px, env(safe-area-inset-bottom));background:#000;flex-direction:column;display:flex}.guest-page__body{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:14px;display:flex}.guest-hero{aspect-ratio:1;width:min(78vw,320px);position:relative}.guest-hero .scene-canvas{z-index:0}.guest-hero__emblem{z-index:1;pointer-events:none;width:42%;height:auto;position:absolute;top:50%;left:50%;translate:-50% -50%}.guest-page__title{letter-spacing:.04em;text-transform:uppercase;max-width:18ch;margin:8px 0 0;font-size:clamp(22px,7vw,32px);font-weight:800;line-height:1.15}.guest-page__lede{color:#e8e4f6c7;max-width:28ch;margin:0;font-size:15px;line-height:1.45}.guest-page__lede.is-live{color:#9ef0b8}.guest-page__enter{width:min(88vw,340px);font:inherit;letter-spacing:.12em;text-transform:uppercase;color:#fff;cursor:pointer;background:linear-gradient(90deg,#3d8dff 0%,#8b5cf6 55%,#c084fc 100%);border:0;border-radius:16px;margin-top:8px;padding:16px 20px;font-size:16px;font-weight:800;box-shadow:0 10px 40px #5a50dc73}.guest-page__enter:disabled{opacity:.45;cursor:not-allowed}.guest-page__ghost{font:inherit;color:var(--text-dim);cursor:pointer;background:0 0;border:0;padding:8px 12px;font-size:14px}.guest-page__frame{aspect-ratio:3/4;background:#111;border:1px solid #a082f038;border-radius:28px;width:min(86vw,340px);position:relative;overflow:hidden}.guest-page__video,.guest-page__sent{object-fit:cover;width:100%;height:100%}.guest-page__sent{aspect-ratio:3/4;border-radius:18px;width:min(52vw,200px);height:auto}.guest-page__error{color:#ff9d9d;margin:0;font-size:13px}.guest-steps{padding-top:18px}.guest-steps__kicker{letter-spacing:.16em;text-transform:uppercase;color:#beb4dc73;text-align:center;margin:0 0 10px;font-size:11px;font-weight:600}.guest-steps__list{justify-content:space-between;gap:6px;margin:0;padding:0;list-style:none;display:flex}.guest-steps__item{flex-direction:column;flex:1;align-items:center;gap:6px;min-width:0;display:flex}.guest-steps__num{color:#beb4dc8c;border:1px solid #a082f040;border-radius:50%;place-items:center;width:28px;height:28px;font-size:13px;font-weight:700;display:grid}.guest-steps__label{color:#beb4dc80;text-align:center;font-size:11px;line-height:1.2}.guest-steps__item.is-active .guest-steps__num,.guest-steps__item.is-done .guest-steps__num{color:#fff;background:linear-gradient(#9b6cff,#6d4cff);border-color:#0000;box-shadow:0 0 16px #8b6ad8b3}.guest-steps__item.is-active .guest-steps__label{color:#fff;font-weight:600}
