:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:#f3f4f6;-webkit-font-smoothing:antialiased;background:#111827;font:18px/145% system-ui,Segoe UI,Roboto,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}body{margin:0}h1{color:#f9fafb;margin:0;font-size:36px;font-weight:600}p{margin:0}code{background:#ffffff1a;border-radius:4px;padding:2px 6px;font-family:ui-monospace,Consolas,monospace;font-size:14px}strong{color:#e0e7ff}.app{box-sizing:border-box;flex-direction:column;align-items:center;min-height:100svh;padding:24px 16px;display:flex}.debug-panel{z-index:1;color:#cdd6f4;box-sizing:border-box;background:#1e1e2e;border-radius:6px;gap:24px;width:100%;max-width:480px;margin-bottom:32px;padding:8px 16px;font-family:monospace;font-size:13px;display:flex;position:relative}.screen{text-align:center;flex-direction:column;align-items:center;gap:20px;width:100%;max-width:480px;display:flex}.screen.wide{max-width:800px}.room-code{font-size:18px}.error{color:#e74c3c;background:#e74c3c14;border:1px solid #e74c3c4d;border-radius:6px;padding:12px 16px;font-size:15px}.notice{color:#f39c12;background:#f39c1214;border:1px dashed #f39c1266;border-radius:4px;padding:8px 12px;font-family:monospace;font-size:13px}.btn-primary,.btn-secondary{cursor:pointer;border:none;border-radius:6px;padding:10px 24px;font-size:16px;transition:opacity .2s}.btn-primary{color:#fff;background:#7c3aed}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.btn-primary:not(:disabled):hover{opacity:.85}.btn-secondary{color:#f3f4f6;background:#374151}.btn-secondary:hover{opacity:.85}.info{color:#93c5fd;font-size:15px}.muted{color:#6b7280;font-size:14px}.section-label{text-transform:uppercase;letter-spacing:.05em;color:#9ca3af;margin-bottom:4px;font-size:13px}.lobby-data{text-align:left;flex-direction:column;gap:16px;width:100%;display:flex}.info-table{border-collapse:collapse;width:100%;font-size:14px}.info-table td{border-bottom:1px solid #1f2937;padding:5px 8px}.info-table td:first-child{color:#9ca3af;width:40%}.players-list{font-size:14px}.players-list ul{flex-direction:column;gap:4px;margin:6px 0 0;padding:0 0 0 18px;display:flex}.raw-json{font-size:12px}.raw-json summary{cursor:pointer;color:#6b7280;padding:4px 0}.raw-json pre{color:#d1d5db;text-align:left;background:#111827;border:1px solid #1f2937;border-radius:4px;margin:6px 0 0;padding:10px;font-size:11px;overflow-x:auto}.voice-block{box-sizing:border-box;text-align:left;background:#0f172a;border:1px solid #2e3a4e;border-radius:8px;width:100%;padding:16px}.voice-block details{margin-top:12px}.voice-block details summary{cursor:pointer;color:#6b7280;padding:4px 0;font-size:13px}.voice-block details summary:hover{color:#9ca3af}.voice-panel{box-sizing:border-box;text-align:left;background:#0f172a;border:1px solid #2e3a4e;border-radius:8px;flex-direction:column;gap:16px;width:100%;padding:16px;display:flex}.voice-panel-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.voice-panel-title{text-transform:uppercase;letter-spacing:.08em;color:#94a3b8;font-family:monospace;font-size:13px}.voice-controls{flex-wrap:wrap;gap:8px;display:flex}.btn-debug{cursor:pointer;color:#94a3b8;background:#1e293b;border:1px solid #334155;border-radius:6px;padding:6px 14px;font-size:13px;transition:opacity .2s}.btn-debug:disabled{opacity:.35;cursor:not-allowed}.btn-debug:not(:disabled):hover{opacity:.8}.vstatus{font-family:monospace}.vstatus-idle{color:#6b7280}.vstatus-connecting{color:#f59e0b}.vstatus-connected{color:#60a5fa}.vstatus-joined{color:#34d399}.vstatus-error{color:#f87171}.vstatus-disconnected{color:#9ca3af}.voice-section{flex-direction:column;gap:6px;display:flex}.producers-list{flex-direction:column;gap:4px;margin:0;padding:0;font-family:monospace;font-size:13px;list-style:none;display:flex}.voice-raw-pre{color:#d1d5db;white-space:pre-wrap;word-break:break-all;background:#111827;border:1px solid #1f2937;border-radius:4px;margin:0;padding:10px;font-size:11px;overflow-x:auto}.events-log{background:#0b1120;border:1px solid #1e293b;border-radius:4px;flex-direction:column;gap:3px;max-height:320px;padding:8px;display:flex;overflow-y:auto}.log-entry{align-items:flex-start;gap:10px;font-family:monospace;font-size:11px;line-height:1.5;display:flex}.log-ts{color:#475569;flex-shrink:0;min-width:90px}.log-event{color:#7dd3fc;flex-shrink:0;min-width:160px}.log-data{color:#94a3b8;word-break:break-all}.mic-controls{gap:8px;margin-bottom:10px;display:flex}.mstatus{font-family:monospace}.mstatus-off{color:#6b7280}.mstatus-requesting,.mstatus-creatingTransport{color:#f59e0b}.mstatus-producing{color:#60a5fa}.mstatus-on{color:#34d399}.mstatus-error{color:#f87171}.mstatus-denied{color:#fb923c}.mic-error{color:#f87171;word-break:break-all;font-family:monospace;font-size:12px}.consume-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.consume-header .section-label{margin:0}.consumers-table{font-size:12px}.consumers-table th{text-align:left;color:#64748b;border-bottom:1px solid #1e293b;padding:4px 8px;font-weight:400}.consumers-table td{border-bottom:1px solid #0f172a;padding:4px 8px}.play-ok{color:#34d399;font-size:12px}.player-slot{--slot-size:clamp(90px, 18vw, 290px);--badge-size:calc(var(--slot-size) * .145);--badge-gap:calc(var(--slot-size) * .035);--mic-size:calc(var(--slot-size) * .065);--name-font-size:calc(var(--slot-size) * .07);width:var(--slot-size);aspect-ratio:1;flex-shrink:0;position:relative;overflow:visible}.player-slot:before{content:"";pointer-events:none;z-index:0;position:absolute;inset:0}.player-slot__avatar-area{z-index:1;position:absolute;inset:0;overflow:visible}.player-slot__avatar-bg{object-fit:contain;object-position:center top;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:1;width:100%;height:100%;position:absolute;inset:0}.player-slot__avatar-inner{z-index:2;width:70%;height:70%;position:absolute;top:12%;left:50%;overflow:hidden;transform:translate(-50%)}.player-slot__avatar{object-fit:cover;object-position:center top;pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.player-slot__frame{object-fit:contain;object-position:center bottom;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:5;width:96%;height:auto;max-height:22%;position:absolute;bottom:3%;left:50%;transform:translate(-50%)}.player-slot__badges{justify-content:center;align-items:center;gap:var(--badge-gap);z-index:6;pointer-events:none;display:flex;position:absolute;bottom:22%;left:50%;transform:translate(-50%)}.player-slot__badge{width:var(--badge-size);height:var(--badge-size);pointer-events:none;flex-shrink:0;justify-content:center;align-items:center;display:flex;position:relative}.player-slot__badge-bg{object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:1;width:100%;height:100%;position:absolute;inset:0}.player-slot__badge-icon-layer{z-index:2;pointer-events:none;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative}.player-slot__badge-icon{object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%}.player-slot__nameplate{z-index:7;box-sizing:border-box;height:15%;padding-left:27%;padding-right:calc(var(--mic-size) + var(--slot-size) * .1);pointer-events:none;align-items:center;display:flex;position:absolute;bottom:4%;left:5%;right:5%}.player-slot__nameplate:before{content:none}.player-slot__small-avatar{display:none}.player-slot__name{z-index:2;min-width:0;font-size:var(--name-font-size);letter-spacing:.02em;white-space:nowrap;text-overflow:ellipsis;text-align:left;color:#f8ead4;text-shadow:0 calc(var(--slot-size) * .004) calc(var(--slot-size) * .008) #000, 0 0 calc(var(--slot-size) * .008) #000;transform:translateY(calc(var(--slot-size) * -.016));flex:1;font-weight:700;line-height:1;position:relative;overflow:hidden}.player-slot__mic-wrap{width:var(--mic-size);height:var(--mic-size);pointer-events:auto;z-index:3;justify-content:center;align-items:center;display:flex;position:absolute;top:50%;right:8%;transform:translateY(-50%)}.player-slot__mic{object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.player-slot__mic-btn{cursor:pointer;opacity:.85;background:0 0;border:none;justify-content:center;align-items:center;width:100%;height:100%;padding:0;transition:opacity .15s;display:flex}.player-slot__mic-btn:hover{opacity:1}.player-slot--sm{--slot-size:clamp(110px, 22vw, 160px)}.player-slot--md{--slot-size:clamp(150px, 18vw, 230px)}.player-slot--lg{--slot-size:clamp(190px, 16vw, 290px)}.lobby-fullscreen{--lobby-header-height:10vh;--lobby-bottom-height:40vh;--lobby-slots-height:50vh;--lobby-side-padding:5vw;--content-width:90vw;--slots-gap:clamp(8px, 1.5vw, 24px);--slots-row-gap:clamp(4px, 1vh, 16px);--shelf-height:calc((var(--lobby-slots-height) - var(--slots-row-gap)) / 2);--slot-size-by-width:calc((var(--content-width) - 3 * var(--slots-gap)) / 4);--lobby-slot-size:min(var(--slot-size-by-width), var(--shelf-height));grid-template-rows:var(--lobby-header-height) var(--lobby-slots-height) var(--lobby-bottom-height);background-image:var(--lobby-bg,none);color:#fff;background-color:#0d1117;background-position:50%;background-size:cover;grid-template-columns:1fr;font-family:Firenight,Georgia,Times New Roman,serif;display:grid;position:fixed;inset:0;overflow:hidden}.lobby-loading{color:#94a3b8;letter-spacing:.1em;margin-top:80px;font-size:18px}.lobby-error{color:#f87171;text-align:center;background:#e74c3c1f;border:1px solid #e74c3c59;border-radius:8px;max-width:480px;margin:80px 32px 0;padding:16px 24px;font-family:system-ui,sans-serif;font-size:15px}.lobby-header{width:calc(100vw - (var(--lobby-side-padding) * 2));height:var(--lobby-header-height);align-items:center;gap:calc(var(--lobby-header-height) * .22);box-sizing:border-box;flex-shrink:0;grid-row:1;margin:0 auto;padding:0;display:flex}.lobby-header__logo{height:calc(var(--lobby-header-height) * .56);object-fit:contain;width:auto}.lobby-header__divider{width:1px;height:calc(var(--lobby-header-height) * .36);background:#ffffff40;flex-shrink:0}.lobby-header__title{font-size:calc(var(--lobby-header-height) * .24);letter-spacing:.25em;text-transform:uppercase;color:#ffffffe6;font-weight:400}.lobby-header__spacer{flex:1}.lobby-header__currency{font-size:calc(var(--lobby-header-height) * .22);color:#f4d03f;opacity:.9;align-items:center;gap:6px;display:flex}.lobby-header__currency-icon{width:calc(var(--lobby-header-height) * .32);height:calc(var(--lobby-header-height) * .32);object-fit:contain}.lobby-header__menu-btn{color:#fff;cursor:pointer;width:calc(var(--lobby-header-height) * .46);height:calc(var(--lobby-header-height) * .46);background:#ffffff14;border:1px solid #ffffff26;border-radius:6px;justify-content:center;align-items:center;padding:0;font-size:18px;transition:background .2s;display:flex}.lobby-header__menu-btn:hover{background:#ffffff29}.lobby-header__menu-icon{width:calc(var(--lobby-header-height) * .32);height:calc(var(--lobby-header-height) * .32);object-fit:contain}.lobby-header__room-info{align-items:center;gap:calc(var(--lobby-header-height) * .3);flex-shrink:1;min-width:0;display:flex;position:relative}.lobby-header__room-item{align-items:center;gap:calc(var(--lobby-header-height) * .1);flex-shrink:1;min-width:0;display:flex}.lobby-header__room-label{font-size:calc(var(--lobby-header-height) * .18);color:#ffffff8c;letter-spacing:.05em;white-space:nowrap;flex-shrink:0}.lobby-header__room-value{font-size:calc(var(--lobby-header-height) * .18);color:#ffffffe6;letter-spacing:.12em;white-space:nowrap;text-overflow:ellipsis;flex-shrink:1;min-width:0;overflow:hidden}.lobby-header__room-value--empty{color:#ffffff59;letter-spacing:0}.lobby-header__copy-btn{width:clamp(12px, calc(var(--lobby-header-height) * .24), 20px);height:clamp(12px, calc(var(--lobby-header-height) * .24), 20px);cursor:pointer;opacity:.72;color:#ffffffc7;font-size:clamp(9px, calc(var(--lobby-header-height) * .16), 15px);background:0 0;border:0;flex:none;justify-content:center;align-items:center;padding:0;line-height:1;transition:opacity .15s;display:inline-flex}.lobby-header__copy-btn img,.lobby-header__copy-btn svg{width:100%;height:100%;display:block}.lobby-header__copy-btn:hover{opacity:1}.lobby-header__copy-btn:disabled{cursor:not-allowed;opacity:.28}.lobby-header__copy-toast{z-index:10;pointer-events:none;color:#ffffffeb;font-size:clamp(8px, calc(var(--lobby-header-height) * .13), 12px);white-space:nowrap;background:#000000b8;border:1px solid #ffffff24;border-radius:999px;padding:3px 8px;font-family:Firenight,Georgia,serif;line-height:1;position:absolute;top:calc(100% + 4px);left:50%;transform:translate(-50%)}.lobby-slots-zone{width:var(--content-width);gap:var(--slots-row-gap);box-sizing:border-box;flex-direction:column;grid-row:2;height:100%;margin:0 auto;display:flex;overflow:hidden}.lobby-slots-zone--scroll{place-content:flex-start center;gap:var(--slots-row-gap) var(--slots-gap);flex-flow:wrap;overflow-y:auto}.lobby-slots-shelf{justify-content:center;align-items:center;gap:var(--slots-gap);flex:1;min-height:0;display:flex}.lobby-slots-zone .player-slot{--slot-size:var(--lobby-slot-size)}.lobby-slot-empty{width:var(--lobby-slot-size);aspect-ratio:1;visibility:hidden;pointer-events:none;flex-shrink:0}.lobby-bottom-panel{--bottom-gap:3vh;--bottom-tip-height:21vh;--bottom-start-height:10vh;--bottom-font-base:clamp(10px, 1.6vh, 18px);--tip-label-size:clamp(8px, 4.6cqw, 13px);--tip-text-size:clamp(10px, 5.6cqw, 16px);width:var(--content-width);height:100%;padding-top:var(--bottom-gap);padding-bottom:var(--bottom-gap);box-sizing:border-box;flex-direction:column;grid-row:3;justify-content:flex-start;align-items:center;gap:0;margin:0 auto;display:flex;position:relative;overflow:hidden}.lobby-warning{--warning-width:clamp(90px, 24vw, 340px);--warning-title-size:calc(var(--warning-width) * .058);--warning-text-size:calc(var(--warning-width) * .044);--warning-icon-size:calc(var(--warning-width) * .07);--warning-gap:calc(var(--warning-width) * .004);--warning-pad-y:calc(var(--warning-width) * .018);--warning-pad-x:calc(var(--warning-width) * .055);width:var(--warning-width);font-family:Firenight,Georgia,serif;position:relative}.lobby-warning__bg{object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:auto;display:block}.lobby-warning__content{justify-content:center;align-items:center;gap:var(--warning-gap);padding:var(--warning-pad-y) var(--warning-pad-x);text-align:center;box-sizing:border-box;flex-direction:column;display:flex;position:absolute;inset:0;overflow:hidden}.lobby-warning__header{justify-content:center;align-items:center;gap:calc(var(--warning-width) * .018);margin:0;line-height:1;display:flex}.lobby-warning__title{font-size:var(--warning-title-size);letter-spacing:.12em;color:#f4d0a8;text-transform:uppercase;margin:0;font-family:Firenight,Georgia,serif;line-height:.9}.lobby-warning__icon{width:var(--warning-icon-size);height:var(--warning-icon-size);object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none}.lobby-warning__text{font-size:var(--warning-text-size);color:#ffffffe0;margin:0;font-family:Firenight,Georgia,serif;line-height:.9;display:block}.lobby-tip-row{width:40vw;height:var(--bottom-tip-height);flex:none;justify-content:center;align-items:center;gap:clamp(8px,1vw,14px);max-width:100%;display:flex;transform:none}.lobby-tip__arrow{cursor:pointer;opacity:.75;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:8px;transition:opacity .2s;display:flex}.lobby-tip__arrow:hover{opacity:1}.lobby-tip__arrow img{object-fit:contain;width:28px;height:28px;display:block}.lobby-tip{aspect-ratio:5/2;--tip-label-size:clamp(7px, min(6cqw, 16cqh), 72px);--tip-text-size:clamp(9px, min(4.4cqw, 12cqh), 48px);border-radius:8px;flex:none;min-width:0;max-width:100%;height:100%;font-family:Firenight,Georgia,serif;position:relative;overflow:hidden;container:tip-card/inline-size}.lobby-tip__bg{object-fit:fill;pointer-events:none;-webkit-user-select:none;user-select:none;border-radius:8px;width:100%;height:100%;display:block}.lobby-tip__overlay{box-sizing:border-box;grid-template-columns:minmax(0,3fr) minmax(0,1fr);align-items:center;gap:0;padding:5%;display:grid;position:absolute;inset:0;overflow:hidden}.lobby-tip__content{box-sizing:border-box;flex-direction:column;justify-content:center;gap:clamp(2px,1.2cqh,8px);min-width:0;max-width:100%;height:100%;padding-right:2%;display:flex;overflow:hidden}.lobby-tip__label{font-size:var(--tip-label-size);letter-spacing:.11em;color:#f8ead4;text-transform:uppercase;flex:none;font-family:Firenight,Georgia,serif;line-height:1}.lobby-tip__text{font-size:var(--tip-text-size);color:#ffffffd1;-webkit-line-clamp:3;overflow-wrap:break-word;-webkit-box-orient:vertical;max-width:100%;margin:0;font-family:Firenight,Georgia,serif;line-height:1.15;display:-webkit-box;overflow:hidden}.lobby-tip__img{object-fit:contain;object-position:right center;pointer-events:none;-webkit-user-select:none;user-select:none;place-self:stretch stretch;width:100%;min-width:0;height:100%;min-height:0}.lobby-start-btn{width:16.666vw;height:var(--bottom-start-height);left:50%;bottom:var(--bottom-gap);white-space:nowrap;background-image:var(--start-bg,none);appearance:none;cursor:pointer;z-index:2;background-color:#0000;background-position:50%;background-repeat:no-repeat;background-size:contain;border:0;flex-direction:row;justify-content:center;align-items:center;gap:clamp(4px,1cqw,10px);font-family:Firenight,Georgia,serif;transition:filter .18s,opacity .18s;display:flex;position:absolute;transform:translate(-50%);container:start-btn/size}.lobby-start-btn--disabled{cursor:not-allowed;opacity:.55}.lobby-start-btn--active:hover{filter:brightness(1.12)}.lobby-start-btn--active:active{filter:brightness(.92);transform:translate(-50%)translateY(1px)}.lobby-start-btn__text{white-space:nowrap;text-overflow:ellipsis;letter-spacing:.12em;color:#fff;text-transform:uppercase;text-shadow:0 1px 4px #000000b3;max-width:70%;font-size:clamp(12px,min(10cqw,45cqh),42px);line-height:1;overflow:hidden}.lobby-start-btn__count{white-space:nowrap;color:#ffffffa6;letter-spacing:.08em;flex:none;font-size:clamp(8px,min(10cqw,55cqh),72px);line-height:1}@media (width<=700px){.lobby-header__room-info{gap:calc(var(--lobby-header-height) * .15)}.lobby-header__room-label,.lobby-header__room-value{letter-spacing:0}}@media (width<=560px){.lobby-tip__arrow img{width:20px;height:20px}.lobby-header__room-info{gap:calc(var(--lobby-header-height) * .08)}}
