:root{font-family:Segoe UI,Arial,sans-serif;color:#f1eaf9;background:#0b0713;color-scheme:dark;font-size:14px}
*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(ellipse at 22% -10%,#44205d 0%,transparent 42%),radial-gradient(ellipse at 100% 55%,#12372c 0%,transparent 40%),#080711}button,input,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid #baff62;outline-offset:2px}input,textarea{color:#f1eafa;background:#150e23;border:1px solid #504062;border-radius:7px;padding:10px}input::placeholder,textarea::placeholder{color:#a49ab1}.app-shell{max-width:1740px;min-height:100vh;margin:auto;display:flex;flex-direction:column}.masthead{display:flex;align-items:center;justify-content:space-between;min-height:89px;padding:12px 22px;gap:15px;background:linear-gradient(95deg,#1b0e29eb,#151020f5);border-bottom:1px solid #613b75}.brand{display:flex;align-items:center;gap:13px}.logo{width:57px;height:57px;display:grid;place-items:center;background:linear-gradient(125deg,#aaff6c,#9c36bb);border:1px solid #bcff87;border-radius:17px;font-size:37px;box-shadow:0 0 25px #7eff4377}.eyebrow,.subtitle{font-size:10px;letter-spacing:2px;font-weight:800;color:#bbff80}.brand-title{font-size:27px;letter-spacing:-.8px;font-weight:950;line-height:1.18}.brand-title span{color:#baff64;text-shadow:0 0 19px #beff5480}.subtitle{color:#af9bbd;letter-spacing:1.2px;font-size:9px;margin-top:3px}.header-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.status{border:1px solid #704b7b;background:#2b1b36;padding:9px 13px;border-radius:20px;color:#f4bfda;font-weight:700;font-size:12px;white-space:nowrap}.status.online{color:#caff8f;background:#223322;border-color:#689749}.secondary{background:#2a1d3b;border:1px solid #67507c;color:#f4e7ff;padding:9px 12px;border-radius:8px;font-weight:750}.secondary:hover{background:#3b2c4c}.layout{display:grid;grid-template-columns:246px minmax(0,1fr);flex:1;min-height:0}.rooms-pane{padding:20px 14px;background:#140d20e6;border-right:1px solid #4f3561}.pane-title{padding:3px 5px 14px}.pane-title span{letter-spacing:1.6px;color:#adfb70;font-size:10px;font-weight:800}.pane-title h2{margin:8px 0 0;font-size:19px}.rooms-pane>input{width:100%;border-radius:9px;height:41px}.room-list{display:flex;flex-direction:column;gap:5px;margin:13px 0}.room{width:100%;display:flex;align-items:center;gap:8px;padding:10px 7px;background:transparent;border:1px solid transparent;border-radius:9px;color:#eee9f6;text-align:left}.room:hover{background:#352440}.room.active{background:linear-gradient(100deg,#44265e,#2b2138);border-color:#9661bc;box-shadow:inset 3px 0 #b2ff68}.room-icon{width:36px;height:36px;flex-shrink:0;display:grid;place-items:center;border:1px solid #65467c;border-radius:9px;background:#352442;font-size:21px}.room-copy{min-width:0;flex:1}.room-copy strong,.room-copy small{display:block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.room-copy strong{font-size:12px}.room-copy small{font-size:10px;color:#b8a8c4;margin-top:3px}.count{font-size:11px;color:#baff61}.new-room{width:100%;border:1px dashed #9bc96d;color:#d6ffad;border-radius:10px;background:#273329;font-size:12px;font-weight:800;padding:11px 6px}.new-room:hover{background:#354733}.aside-art{margin-top:32px;min-height:157px;padding:19px 5px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:7px;border-radius:15px;border:1px solid #703c84;background:radial-gradient(circle at 35% 10%,#7b299b,#27152f 65%)}.aside-art>span{font-size:34px}.aside-art strong{font-size:23px;color:#d7ff97;line-height:1.05;letter-spacing:1px;text-align:center;text-shadow:0 0 15px #caff6c99;transform:rotate(-4deg)}.aside-art small{font-size:11px;color:#d2bcda}.aside-foot{font-size:11px;color:#a59ab0;line-height:1.55;padding:5px}.center-pane{min-width:0;padding:17px 19px 22px;display:flex}.client-frame{width:100%;min-width:0;min-height:710px;display:flex;flex-direction:column;border:1px solid #8660a7;border-radius:10px;overflow:hidden;background:#100d1a;box-shadow:0 13px 45px #0006,0 0 23px #842da522}.client-titlebar{display:flex;align-items:center;justify-content:space-between;gap:10px;color:#fff;padding:10px 15px;background:linear-gradient(90deg,#772b9c,#3c206c 55%,#243b36);border-bottom:1px solid #b285e1;font-size:13px}.client-titlebar strong{font-size:13px}.title-meta{font-size:10px;letter-spacing:1.2px;color:#e9d8fa;white-space:nowrap}.title-meta .version{color:#b7ff8f}.client-menu{display:flex;align-items:center;gap:18px;padding:9px 14px;border-bottom:1px solid #463654;background:#1b1228;color:#cfc0df;font-size:12px}.client-menu .menu-legend{color:#9886aa;margin-left:auto;font-size:10px}.client-toolbar{display:flex;align-items:center;padding:8px 12px;gap:6px;border-bottom:1px solid #423354;background:#1a1527;flex-wrap:wrap}.client-toolbar>button{min-width:74px;min-height:54px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:3px;padding:5px 9px;border:1px solid transparent;border-radius:8px;background:transparent;color:#f0e7fb;font-size:11px}.client-toolbar>button:hover,.client-toolbar>button.active{background:#3b2850;border-color:#674384}.client-toolbar .tool-icon{font-size:23px;line-height:1.3}.toolbar-badge{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end;color:#b9ff7b;font-size:10px;letter-spacing:.8px}.toolbar-badge small{font-size:9px;color:#998ba6;letter-spacing:0;margin-top:3px}.live-dot{display:inline-block;width:7px;height:7px;background:#baff63;border-radius:50%;box-shadow:0 0 9px #a6ff68;margin-right:5px}.room-banner{display:flex;align-items:center;gap:10px;justify-content:space-between;padding:10px 16px;border-bottom:1px solid #38553c;background:#142319;color:#bdf593;font-size:12px}.room-banner strong{color:#bbff7b}.room-banner>span:last-child{color:#9ab59a;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.connection-notice{padding:8px 15px;color:#d6c6ef;background:#2b1c3d;border-bottom:1px solid #62447b;font-size:11px;line-height:1.5}.chat-body{display:grid;grid-template-columns:minmax(0,1fr) 205px;flex:1;min-height:365px;max-height:56vh;overflow:hidden}.transcript-side{min-width:0;display:flex;flex-direction:column;background:linear-gradient(180deg,#0f0d18,#0b0b12)}.transcript-label{display:flex;justify-content:space-between;gap:10px;padding:8px 14px;border-bottom:1px solid #2e273a;color:#a7eb7d;font-size:10px;font-weight:800;letter-spacing:1px;background:#15101d}.transcript-label small{font-weight:400;letter-spacing:0;color:#8d819a}.messages{padding:12px 16px;overflow-y:auto;flex:1;min-height:320px;scrollbar-color:#523567 #14121b}.chat-intro{font-size:12px;color:#b7e8aa;margin:5px 0 12px}.message{margin:0 0 8px;padding-left:1px;line-height:1.55;overflow-wrap:anywhere;font-size:13px}.message.mine{background:linear-gradient(90deg,#23312055,transparent)}.message .message-meta{display:inline}.message .message-meta strong{color:#a5f56b;margin-right:7px}.message .message-meta time{color:#776d85;font-size:10px;margin-right:8px}.message .bubble{color:#e9e2ef;white-space:pre-wrap;display:inline}.message.mine .message-meta strong{color:#cb8fff}.system-message{margin:8px 0;color:#8b9f90;font-size:11px;font-style:italic}.roster-side{background:#191222;display:flex;flex-direction:column;border-left:1px solid #66487b;min-width:0}.roster-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 10px 8px;color:#d8c7ef;font-size:12px}.roster-heading #memberCount{background:#3d2b4c;color:#c3ff8b;border:1px solid #62457c;border-radius:16px;padding:4px 9px;font-weight:800}.roster-note{border-bottom:1px solid #493756;padding:0 10px 10px;color:#9284a3;font-size:10px}.people{flex:1;min-height:0;overflow-y:auto;padding:7px}.person{display:flex;align-items:center;gap:7px;padding:7px 5px;font-size:12px;color:#e0d4ec;word-break:break-word;border-radius:5px}.person.me{background:#38234d}.person .dot{font-size:12px;color:#b9ff6c}.person .name{flex:1;min-width:0;overflow-wrap:anywhere}.person .media-icons{font-size:12px;white-space:nowrap}.roster-bottom{padding:10px 8px;font-size:10px;color:#9d8eab;border-top:1px solid #493756}.voice-console{border-top:1px solid #9162aa;background:linear-gradient(110deg,#23142f,#1a1d28 65%,#1d2930)}.voice-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 12px;border-bottom:1px solid #50405a;font-size:11px;color:#b9acc6}.panel-tag{font-weight:800;color:#c8ff8d;letter-spacing:1px}.voice-status{color:#f0c690;white-space:nowrap}.voice-status.live{color:#adff6a;font-weight:800}.voice-controls{padding:11px 12px 8px;display:flex;align-items:center;flex-wrap:wrap;gap:12px}.check-label{display:flex;align-items:center;gap:5px;white-space:nowrap;cursor:pointer;font-size:12px}.check-label input{width:15px;height:15px;accent-color:#abf069}.talk-button{min-width:105px;height:43px;border:1px solid #99ff51;border-radius:5px;color:#132609;background:linear-gradient(180deg,#c2ff74,#56a32f);font-size:16px;font-weight:950;letter-spacing:.7px;box-shadow:0 0 12px #83df4d55;touch-action:none;user-select:none;-webkit-user-select:none}.talk-button.speaking{background:linear-gradient(180deg,#ffb44e,#e26c26);border-color:#ffcf79;color:#381902;box-shadow:0 0 21px #f29a3399}.talk-button.hands-free{background:linear-gradient(180deg,#ffb554,#d87f36);color:#2d1700}.input-level{display:flex;align-items:center;gap:6px;color:#ae9aba;font-size:10px;font-weight:700}.meter{width:100px;height:21px;display:flex;gap:2px;align-items:flex-end;padding:2px 3px;background:#080d0d;border:1px solid #556c5b;border-radius:4px;overflow:hidden}.meter i{height:12px;flex:1;border-radius:1px;background:#273a2a}.meter i.active{background:#9bf35e;box-shadow:0 0 5px #9bff64}.meter i.active.hot{background:#f2ba4f}.speaker-controls{display:flex;align-items:center;gap:7px;font-size:11px;color:#b9acc4}.speaker-controls input{width:90px;padding:0;accent-color:#a6ee69;cursor:pointer}.speaker-controls output{color:#b8f982;font-size:10px;width:28px}.disconnect{border:1px solid #6d465a;border-radius:6px;background:#3d2939;color:#f1d8e4;padding:10px 12px;margin-left:auto;font-size:11px;font-weight:800}.media-status{padding:1px 12px 9px;color:#aaa0b7;font-size:11px;line-height:1.4}.editor-bar{padding:7px 13px;display:flex;align-items:center;gap:9px;background:#23152f;border-top:1px solid #59436d;color:#cbbde0;font-size:12px}.editor-label{font-weight:700}.editor-bar #remaining{margin-left:auto;color:#8b7a99;font-size:10px}.compose{padding:9px 12px;display:flex;gap:9px;background:#160e23}.compose textarea{flex:1;min-width:0;height:69px;resize:vertical;max-height:220px;font-size:13px}.send{padding:0 21px;border:1px solid #a7f36f;border-radius:7px;background:linear-gradient(180deg,#bdff7c,#88cc46);color:#1a2c0b;font-weight:900;font-size:14px}.send:hover{filter:brightness(1.07)}.composer-foot{padding:0 13px 12px;display:flex;justify-content:space-between;gap:8px;background:#160e23;color:#8c7a9b;font-size:10px}.webcam-tray{border-top:1px solid #624876;background:#110d1c;padding:10px 13px}.webcam-tray[hidden]{display:none}.webcam-tray-title{display:flex;align-items:center;gap:15px;font-size:11px;color:#b9ff85}.webcam-tray-title span{flex:1;color:#9687a7;font-size:10px}.webcam-tray-title button{background:#342343;border:1px solid #625077;color:#eadcf7;border-radius:6px;padding:5px 9px}.video-grid{display:flex;gap:10px;overflow-x:auto;min-height:96px;align-items:center;margin-top:9px}.video-card{width:166px;height:125px;position:relative;flex:0 0 166px;display:grid;place-items:center;overflow:hidden;border:1px solid #6e5385;border-radius:7px;background:linear-gradient(45deg,#302241,#101f23)}.video-card video{width:100%;height:100%;object-fit:cover}.video-card .placeholder{font-size:32px}.video-caption{position:absolute;bottom:0;width:100%;background:#0a0712dd;color:#faf5ff;padding:5px 7px;font-size:10px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.empty-video{font-size:11px;color:#9e90ac}.footer{padding:13px 19px;display:flex;justify-content:space-between;gap:9px;border-top:1px solid #50385f;color:#9b90a8;font-size:10px}.dialog{background:#23152f;color:#fff;border:1px solid #905fb8;border-radius:14px;padding:22px;width:min(420px,calc(100vw - 24px));box-shadow:0 20px 70px #000b}.dialog::backdrop{background:#06030aca}.dialog h2{margin-top:0}.dialog p{font-size:12px;color:#c7b7d4;line-height:1.5}.dialog input{width:100%;margin:11px 0}.dialog menu{display:flex;justify-content:flex-end;gap:10px;padding:0;margin:9px 0 0}.dialog menu button:not(.secondary){border:0;border-radius:8px;background:#c0fb80;color:#1f300b;padding:10px 14px;font-weight:800}.toast{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);z-index:20;background:#273b2a;color:#e6ffd6;border:1px solid #86b56a;border-radius:10px;box-shadow:0 10px 45px #0008;padding:12px 18px;font-size:12px;display:none;max-width:min(550px,calc(100vw - 30px));text-align:center}
@media(max-width:1020px){.layout{grid-template-columns:210px minmax(0,1fr)}.rooms-pane{padding:13px 10px}.center-pane{padding:12px}.chat-body{grid-template-columns:minmax(0,1fr) 172px}.speaker-controls input{width:70px}.voice-controls{gap:8px}.client-toolbar>button{min-width:64px;padding:5px}.title-meta{display:none}}
@media(max-width:740px){.masthead{flex-wrap:wrap;padding:12px}.brand-title{font-size:23px}.header-right{width:100%;justify-content:space-between}.layout{display:flex;flex-direction:column}.rooms-pane{border-right:0;border-bottom:1px solid #473251}.rooms-pane .pane-title{padding:2px 0 5px}.rooms-pane .pane-title h2{font-size:15px}.room-list{flex-direction:row;overflow-x:auto;margin:9px 0}.room{flex:0 0 171px}.aside-art,.aside-foot{display:none}.center-pane{padding:10px}.client-frame{min-height:650px}.client-menu{gap:11px}.client-menu .menu-legend{display:none}.toolbar-badge{display:none}.client-toolbar{justify-content:space-around}.room-banner{display:block}.room-banner>span:last-child{display:block;margin-top:3px}.chat-body{grid-template-columns:minmax(0,1fr) 115px;min-height:335px;max-height:unset;height:390px}.roster-heading{font-size:10px;flex-wrap:wrap}.roster-note,.roster-bottom{display:none}.messages{min-height:0;padding:10px}.person{font-size:11px;padding:6px 2px}.voice-head{flex-wrap:wrap}.voice-controls{gap:8px}.disconnect{margin-left:0}.speaker-controls{order:2;width:100%}.footer{flex-direction:column}.composer-foot span:last-child{display:none}.title-meta{display:none}}
@media(max-width:390px){.chat-body{grid-template-columns:minmax(0,1fr) 94px}.roster-side{font-size:10px}.client-toolbar>button{min-width:auto;font-size:10px}.tool-icon{font-size:20px}.talk-button{min-width:95px}}

/* Neon moderation console — keeps the existing psychedelic palette. */
.admin-entry{padding:9px 14px;background:linear-gradient(140deg,#382047,#642d67);border:1px solid #c069ed;border-radius:9px;color:#f8dbff;font-weight:800;white-space:nowrap;box-shadow:0 0 13px #aa36c52b;cursor:pointer}
.admin-entry.is-admin{color:#caff89;border-color:#93e75d;box-shadow:0 0 15px #83da3f30}
.admin-dialog{width:min(520px,calc(100vw - 24px));max-height:calc(100dvh - 28px);overflow-y:auto;padding:21px;background:linear-gradient(145deg,#291331,#150f23 70%);border:1px solid #c16fe6}
.admin-heading{display:flex;align-items:start;justify-content:space-between;gap:10px;padding-bottom:12px;border-bottom:1px solid #624577}.admin-heading h2{font-size:20px;margin:5px 0;color:#eec9ff}.admin-kicker{font-size:10px;letter-spacing:1.8px;color:#c3ff88;font-weight:900}.admin-close{padding:7px 10px}
.admin-dialog section{display:flex;flex-direction:column;gap:8px;padding-top:12px}.admin-dialog section[hidden]{display:none}.admin-dialog label{font-size:12px;font-weight:750;color:#d9bbec;margin-top:6px}.admin-dialog input,.admin-dialog select{width:100%;padding:11px 12px;border-radius:8px;background:#130b20;color:#f2eafb;border:1px solid #77558e;font-size:13px;margin:1px 0}.admin-dialog option{background:#180f24}.admin-dialog input:focus,.admin-dialog select:focus{outline:2px solid #9cde57;outline-offset:1px}.admin-login form{display:flex;flex-direction:column;gap:9px}.admin-primary{width:100%;margin-top:9px;background:linear-gradient(#bafb72,#7cbf44);color:#172509;border:1px solid #b4fc81;border-radius:8px;padding:12px;font-size:13px;font-weight:900;cursor:pointer}.admin-primary:disabled{opacity:.5;cursor:not-allowed}.admin-hint{font-size:10px!important;color:#b29dbd!important;line-height:1.5}.admin-authenticated{display:flex;justify-content:space-between;align-items:center;gap:12px}.admin-authenticated span{font-size:11px;color:#aeff7b;font-weight:900}.admin-explanation{font-size:12px;margin:8px 0!important}.admin-feedback{font-size:11px;color:#c1ff87;min-height:13px;margin:5px 0!important}.bans-header{display:flex;justify-content:space-between;align-items:center;gap:10px;border-top:1px solid #654777;margin-top:10px;padding-top:15px}.bans-header strong{font-size:13px;color:#e0c8ef}.ban-list{max-height:170px;overflow:auto;border:1px solid #553b65;border-radius:8px;padding:5px 9px;background:#0d0a18}.ban-item{display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid #4b3659;padding:8px 3px}.ban-item:last-child{border-bottom:0}.ban-item strong{font-size:12px;color:#e8d3f5}.ban-item small{display:block;color:#ac96b9;font-size:10px;margin-top:3px}.ban-item button{border:1px solid #a35f70;border-radius:6px;background:#40202d;color:#ffd2da;padding:6px 9px;cursor:pointer;flex-shrink:0}.person .mod-select{margin-left:4px;color:#d5ffb2;background:#3d2347;border:1px solid #755187;border-radius:5px;font-size:10px;cursor:pointer;padding:3px 5px}.person .mod-select:focus-visible{outline:2px solid #a5f67d}.person.timed-out{opacity:.65}.moderation-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #ff9888;background:#4a162bdc;color:#ffe2d8;padding:12px 15px;font-size:12px}.moderation-banner[hidden]{display:none}.moderation-banner button{border:1px solid #ffc08a;border-radius:6px;background:#683c3a;color:white;padding:8px 12px;font-weight:800;cursor:pointer}.voice-controls button:disabled,.compose button:disabled{opacity:.4;cursor:not-allowed}
@media(max-width:740px){.admin-entry{padding:7px 10px;font-size:11px}.admin-dialog{padding:14px}.admin-heading h2{font-size:17px}}

/* Neon, mobile-friendly public guest invitation landing page */
.join-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(ellipse at 10% 0%,#4b1564 0%,transparent 45%),radial-gradient(ellipse at 90% 90%,#094c46 0%,transparent 45%),#0b0715;color:#f7efff;font-family:system-ui,-apple-system,Segoe UI,sans-serif}
.guest-shell{width:min(100%,590px);text-align:center;position:relative}
.guest-brand{font-size:70px;filter:drop-shadow(0 0 20px #9c3ef0);line-height:1.35}.guest-brand span{font-size:32px;vertical-align:top}
.guest-eyebrow{letter-spacing:4px;color:#d8aaff;font-size:.78rem;font-weight:800;margin:8px 0 0}
.guest-shell h1{font-size:clamp(3rem,10vw,5.5rem);font-weight:1000;letter-spacing:-3px;margin:0;color:#f8f2ff;text-shadow:0 0 26px #ab41fc}.guest-shell h1 span{color:#a7fa46}
.guest-tagline{font-size:1.06rem;line-height:1.5;color:#cfc5dc;margin:8px auto 22px;max-width:440px}
.guest-panel{background:linear-gradient(140deg,rgba(37,23,60,.97),rgba(15,21,35,.97));border:1px solid #ad6afd;border-radius:20px;padding:24px;text-align:left;box-shadow:0 15px 85px #0008,0 0 30px #7f29cf2c}
.guest-panel-top{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;border-bottom:1px solid #6a5574;padding-bottom:14px;margin-bottom:20px;font-size:.84rem}
.guest-panel-top strong{color:#b3fa4a}.guest-panel-top span{color:#b8b7c6}.guest-online{color:#a6f870!important}.guest-offline{color:#ff93b2!important}
.guest-panel form{display:grid;gap:10px}.guest-panel label{font-weight:700;color:#efe4ff;margin-top:5px}
.guest-panel input,.guest-panel select{width:100%;min-height:48px;background:#100d1e;border:1px solid #68518a;border-radius:9px;color:#fff;font-size:1rem;padding:12px}
.guest-panel select option{background:#181026}
.guest-panel form button{border:0;border-radius:11px;padding:15px;margin-top:15px;color:#102204;background:linear-gradient(105deg,#befa52,#76c836);font-weight:1000;font-size:1.05rem;cursor:pointer;box-shadow:0 5px 20px #76c83644}
.guest-panel form button:disabled{background:#575661;color:#aaa;cursor:not-allowed}
.guest-helper{font-size:.8rem;line-height:1.5;color:#c7bad2;margin-bottom:0}.guest-features{display:flex;justify-content:center;flex-wrap:wrap;gap:9px;margin-top:20px}
.guest-features span{background:#2c194a;border:1px solid #7148a1;border-radius:50px;padding:8px 12px;font-weight:650;font-size:.82rem}
.guest-footer{color:#ac9caf;font-size:.76rem;margin:28px auto 0;max-width:490px}

.invite-dialog{max-width:580px;width:calc(100% - 24px);border:1px solid #ad61e7;border-radius:16px;box-shadow:0 20px 80px #0009;color:#f5edff;background:#1b112b;padding:25px}
.invite-dialog label{display:block;margin:15px 0 6px;font-weight:750}.invite-dialog input{display:block;box-sizing:border-box;width:100%;padding:13px;border-radius:8px;border:1px solid #8258a7;background:#110d1a;color:#fff;font:inherit}.invite-dialog menu{display:flex;gap:12px;padding:0;flex-wrap:wrap}.invite-dialog menu button{flex:1;min-width:180px}.invite-dialog code{color:#b4fb53}

/* Yahoo-style video lounge: always above chat transcript, with clickable webcam thumbnails. */
.webcam-top{border-bottom:1px solid #695489;border-top:1px solid #533a69;background:linear-gradient(100deg,#160c24,#132022);padding:9px 12px 11px}
.webcam-top .webcam-tray-title{padding-bottom:9px;gap:9px}
.webcam-top .webcam-tray-title strong{white-space:nowrap;letter-spacing:.6px}
.cam-lounge-body{display:grid;grid-template-columns:minmax(215px,315px) minmax(0,1fr);gap:12px;align-items:stretch}
.cam-feature{position:relative;height:173px;overflow:hidden;border:1px solid #a26cce;background:radial-gradient(circle at 60% 30%,#563166,#14101f 75%);border-radius:9px;box-shadow:inset 0 0 25px #a14d9c29;display:grid;place-items:center}
.cam-feature-video{width:100%;height:100%;object-fit:contain;background:#030306}
.cam-feature-caption{position:absolute;bottom:0;left:0;right:0;background:#090711d9;padding:7px 10px;font-size:11px;letter-spacing:.5px;color:#b9ff85;font-weight:850}
.cam-feature-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:7px;color:#dcd0e8;padding:10px;line-height:1.2;min-width:0}
.cam-feature-empty span{font-size:25px;filter:drop-shadow(0 0 7px #a764cf)}
.cam-feature-empty strong{font-size:11px;letter-spacing:1px;color:#c9ff98}
.cam-feature-empty small{font-size:10px;color:#ac9abc;max-width:230px;line-height:1.45}
.cam-strip-side{min-width:0;display:flex;flex-direction:column;overflow:hidden}
.cam-strip-heading{display:flex;justify-content:space-between;align-items:center;color:#c8fc9d;font-size:10px;letter-spacing:.7px;margin:0 0 8px}
.cam-strip-heading small{color:#b7a6c5}
.webcam-top .video-grid{display:flex;align-items:stretch;gap:9px;overflow-x:auto;min-height:109px;margin:0;padding-bottom:5px}
.webcam-top .video-card{flex:0 0 140px;width:140px;height:109px;border-color:#79528e;background:#18102a;padding:0;color:#fff;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}
.webcam-top .video-card:hover,.webcam-top .video-card.selected{border-color:#b4ff72;box-shadow:0 0 0 2px #97ee514a}
.webcam-top .video-card video{pointer-events:none;width:100%;height:100%;object-fit:cover}
.webcam-top .video-card .cam-feature-empty span{font-size:19px}
.webcam-top .video-card .cam-feature-empty strong{font-size:9px}
.webcam-top .video-card .video-caption{text-align:left}
.cam-tip{font-size:10px;color:#9e91ad;margin:8px 0 0;line-height:1.5}
.webcam-top.minimized .cam-lounge-body{display:none}
.webcam-top.minimized{padding-bottom:0}
@media(max-width:820px){.cam-lounge-body{grid-template-columns:minmax(165px,245px) minmax(0,1fr)}.cam-feature{height:145px}.webcam-top .video-card{flex-basis:115px;width:115px;height:100px}}
@media(max-width:570px){.cam-lounge-body{display:flex;flex-direction:column}.cam-feature{height:180px}.webcam-top .video-grid{min-height:86px}.webcam-top .video-card{flex-basis:114px;width:114px;height:90px}.webcam-top .webcam-tray-title span{display:none}}

/* Featured welcome room, without altering the psychedelic palette */
.room-feature-label{margin:7px 0 0;color:#c4ff85;font-size:11px;line-height:1.4}
.guest-featured{display:flex;align-items:center;gap:12px;border:1px solid #776094;border-radius:12px;padding:12px;margin-bottom:15px;background:linear-gradient(90deg,#362052,#173526)}
.guest-featured>span{font-size:27px}.guest-featured strong{display:block;color:#c4ff85;font-size:13px;margin-bottom:3px}
.guest-featured small{color:#d2c1df;display:block;font-size:11px;line-height:1.5}
.guest-connection{border-top:1px solid #5a436e;padding-top:12px;color:#b6a8c7}


/* Funky Duck private whispers • independent of public room transcript */
.whisper-open{flex:0 0 auto;border:1px solid #73569b;background:#33204a;color:#c7ff88;border-radius:6px;padding:3px 6px;font-size:12px;cursor:pointer;margin-left:auto;line-height:1.15}
.whisper-open:hover{background:#523078;border-color:#bafa6b}
.whisper-badge{display:inline-grid;place-items:center;min-width:19px;height:19px;padding:0 5px;border-radius:18px;background:#c5ff70;color:#172609;font-size:11px;font-weight:900;vertical-align:middle}
.whisper-badge[hidden]{display:none}
#whisperInbox.has-whispers{box-shadow:inset 0 0 18px #a1f04e44}
.whisper-dialog{background:#160d27;color:#f5e9ff;width:min(94vw,780px);max-width:780px;max-height:min(88vh,800px);border:1px solid #b16be4;border-radius:16px;padding:18px;box-shadow:0 20px 85px #000c,0 0 35px #9f3ed955}
.whisper-head{display:flex;align-items:start;justify-content:space-between;gap:10px}
.whisper-head h2{margin:5px 0 0;font-size:23px;color:#bdff7f}
.whisper-head .secondary{background:#38264c;color:#fff;border:1px solid #9067a8;border-radius:7px;padding:8px 13px;cursor:pointer}
.whisper-privacy{color:#baabc9;font-size:11px;line-height:1.5;margin:12px 0}
.whisper-layout{display:grid;grid-template-columns:minmax(135px,185px) minmax(0,1fr);min-height:330px;gap:12px}
.whisper-conversations{background:#100b1c;border:1px solid #65477d;border-radius:9px;padding:11px;min-width:0}
.whisper-conversations>strong{font-size:10px;letter-spacing:1px;color:#c4f78a}
.whisper-thread-list{margin-top:8px;display:grid;gap:5px;max-height:420px;overflow:auto}
.whisper-thread{position:relative;text-align:left;background:#29183c;border:1px solid #574271;border-radius:8px;color:#f6ebff;padding:8px 9px;cursor:pointer;min-width:0}
.whisper-thread:hover,.whisper-thread.active{border-color:#b5f77d;background:#37224c}
.whisper-thread strong,.whisper-thread small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.whisper-thread strong{font-size:12px;padding-right:22px}
.whisper-thread small{font-size:10px;color:#b19ec1;margin-top:5px}
.whisper-thread .whisper-badge{position:absolute;right:5px;top:6px}
.whisper-main{min-width:0;display:flex;flex-direction:column;gap:8px}
.whisper-main h3{font-size:15px;color:#d1ffab;margin:4px 0}
.whisper-messages{flex:1;min-height:155px;height:220px;max-height:300px;overflow:auto;background:#090713;border:1px solid #664884;padding:12px;border-radius:8px}
.whisper-line{display:flex;flex-direction:column;align-items:flex-start;margin-bottom:10px}
.whisper-line.mine{align-items:flex-end}
.whisper-meta{font-size:10px;color:#b4a3ca;margin-bottom:3px}
.whisper-line p{background:#39214b;border:1px solid #6e4689;border-radius:10px;padding:8px 10px;color:#fff;font-size:13px;max-width:90%;word-break:break-word;white-space:pre-wrap;line-height:1.4;margin:0}
.whisper-line.mine p{background:#264128;border-color:#79bc53;color:#eaffdf}
.whisper-label{color:#c3b2d2;font-size:11px}
.whisper-main textarea{min-height:55px;resize:vertical;box-sizing:border-box;width:100%;background:#0b0914;border:1px solid #674881;border-radius:8px;padding:9px 11px;color:#fff;font:inherit;font-size:13px}
.whisper-main textarea:focus{outline:2px solid #acfa69}
.whisper-compose{display:flex;gap:12px;justify-content:space-between;align-items:center}
.whisper-compose span{font-size:10px;color:#b9acc7;line-height:1.4}
.whisper-compose button{background:linear-gradient(#ccff89,#8ac746);border:1px solid #b3fb7c;color:#17300b;border-radius:8px;font-weight:900;font-size:12px;padding:10px;cursor:pointer;white-space:nowrap}
.whisper-compose button:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:620px){.whisper-dialog{padding:11px}.whisper-layout{display:flex;flex-direction:column}.whisper-thread-list{display:flex;max-width:100%;overflow-x:auto}.whisper-thread{min-width:130px}.whisper-messages{height:190px}.whisper-head h2{font-size:18px}.whisper-compose{align-items:stretch;flex-direction:column}}

/* WebRTC media status strip — matches the original psychedelic neon palette. */
.rtc-health {display:flex;align-items:center;justify-content:space-between;gap:12px;margin:7px 0 3px;padding:8px 12px;border:1px solid #3b2771;background:rgba(26,13,46,.86);border-radius:8px;color:#adff90;font-size:12px}
.rtc-health .rtc-warning {color:#ffd48b}
.rtc-health button {padding:5px 11px;font-size:12px;white-space:nowrap}
.rtc-help {color:#ada3c1;font-size:11px;line-height:1.45;margin-bottom:6px}

/* v6: compact, true desktop viewport layout for 1080p screens.
   Only the room directory, message transcript and member list scroll internally. */
.ptt-hint{font-size:11px;color:#c9ffa4;white-space:nowrap;display:inline-flex;align-items:center;gap:4px}
.ptt-hint kbd{border:1px solid #8ee758;background:#102016;padding:3px 7px;border-radius:5px;color:#d7ffbd;font:700 12px ui-monospace,Consolas,monospace;box-shadow:inset 0 -2px #446734}
.name-error{background:#4b2027;border:1px solid #e89b87;border-radius:7px;color:#ffe1d9!important;font-weight:700;padding:10px}
.name-error[hidden]{display:none}
.system-message{font-style:normal;color:#9fe7bb;border-left:2px solid #548d77;padding:2px 8px;background:#16312948}
@media (min-width:1050px) and (min-height:680px) {
  body:not(.layout-roomy) .app-shell{height:100dvh;min-height:0}
  body:not(.layout-roomy) .masthead{min-height:0;flex:0 0 62px;padding:5px 15px}
  body:not(.layout-roomy) .logo{width:39px;height:39px;font-size:27px}
  body:not(.layout-roomy) .brand-title{font-size:24px}
  body:not(.layout-roomy) .subtitle{font-size:9px}
  body:not(.layout-roomy) .layout{min-height:0;overflow:hidden;flex:1 1 auto}
  body:not(.layout-roomy) .rooms-pane{overflow-y:auto;min-height:0;padding:10px 12px}
  body:not(.layout-roomy) .pane-title{padding-bottom:3px}
  body:not(.layout-roomy) .pane-title h2{font-size:15px;margin:4px 0 0}
  body:not(.layout-roomy) .room-list{margin:6px 0;gap:2px}
  body:not(.layout-roomy) .room{padding:6px}
  body:not(.layout-roomy) .aside-art{padding:6px;min-height:0}
  body:not(.layout-roomy) .aside-art strong{font-size:17px}
  body:not(.layout-roomy) .aside-foot{font-size:10px}
  body:not(.layout-roomy) .center-pane{min-height:0;padding:7px 10px}
  body:not(.layout-roomy) .client-frame{height:100%;max-height:100%;min-height:0;overflow:hidden}
  body:not(.layout-roomy) .client-titlebar{padding:5px 11px;flex:0 0 auto}
  body:not(.layout-roomy) .client-menu{padding:4px 11px;gap:11px;flex:0 0 auto}
  body:not(.layout-roomy) .client-menu .menu-legend{display:none}
  body:not(.layout-roomy) .client-toolbar{padding:3px 6px;gap:2px;flex:0 0 auto;flex-wrap:nowrap}
  body:not(.layout-roomy) .client-toolbar>button{min-height:39px;min-width:62px;padding:3px 5px;font-size:10px;gap:1px}
  body:not(.layout-roomy) .client-toolbar .tool-icon{font-size:17px;line-height:1}
  body:not(.layout-roomy) .room-banner{padding:4px 10px;flex:0 0 auto}
  body:not(.layout-roomy) .connection-notice{padding:4px 10px;line-height:1.25;flex:0 0 auto}
  body:not(.layout-roomy) .webcam-top{padding:4px 9px 6px;flex:0 0 auto}
  body:not(.layout-roomy) .webcam-top .webcam-tray-title{padding-bottom:4px}
  body:not(.layout-roomy) .cam-lounge-body{grid-template-columns:minmax(175px,245px) minmax(0,1fr);gap:8px}
  body:not(.layout-roomy) .cam-feature{height:115px}
  body:not(.layout-roomy) .cam-strip-heading{margin-bottom:3px}
  body:not(.layout-roomy) .webcam-top .video-grid{min-height:76px;gap:6px;padding-bottom:2px}
  body:not(.layout-roomy) .webcam-top .video-card{flex:0 0 105px;width:105px;height:76px}
  body:not(.layout-roomy) .cam-tip{margin:3px 0 0;line-height:1.2}
  body:not(.layout-roomy) .chat-body{height:auto;min-height:105px;max-height:none;flex:1 1 auto;overflow:hidden}
  body:not(.layout-roomy) .messages{min-height:0;padding:6px 10px}
  body:not(.layout-roomy) .message{margin-bottom:4px;line-height:1.4}
  body:not(.layout-roomy) .transcript-label{padding:5px 10px}
  body:not(.layout-roomy) .roster-heading{padding:6px 9px 4px}
  body:not(.layout-roomy) .roster-note{padding-bottom:5px}
  body:not(.layout-roomy) .person{padding:4px}
  body:not(.layout-roomy) .roster-bottom{padding:4px 8px}
  body:not(.layout-roomy) .voice-console{flex:0 0 auto}
  body:not(.layout-roomy) .voice-head{padding:4px 10px}
  body:not(.layout-roomy) .voice-controls{padding:5px 9px 4px;gap:7px;flex-wrap:nowrap}
  body:not(.layout-roomy) .talk-button{height:36px;min-width:103px;font-size:14px}
  body:not(.layout-roomy) .meter{width:73px;height:19px}
  body:not(.layout-roomy) .speaker-controls input{width:65px}
  body:not(.layout-roomy) .disconnect{padding:7px;margin-left:auto}
  body:not(.layout-roomy) .media-status{padding:0 10px 2px;font-size:10px;line-height:1.2}
  body:not(.layout-roomy) .rtc-health{padding:3px 9px}
  body:not(.layout-roomy) .rtc-help{display:none}
  body:not(.layout-roomy) .editor-bar{padding:3px 10px}
  body:not(.layout-roomy) .compose{padding:5px 9px}
  body:not(.layout-roomy) .compose textarea{height:42px;min-height:35px;max-height:65px}
  body:not(.layout-roomy) .composer-foot{padding:0 10px 4px}
  body:not(.layout-roomy) .footer{flex:0 0 23px;padding:4px 13px}
}
@media (min-width:1050px) and (min-height:680px) {
  /* Roomy mode is deliberately allowed to scroll, for those who want big cams. */
  body.layout-roomy .app-shell{height:auto;min-height:100vh}
  body.layout-roomy .layout{overflow:visible}
  body.layout-roomy .client-frame{min-height:900px;max-height:none;height:auto}
  body.layout-roomy .chat-body{height:470px;min-height:365px;max-height:none;flex:0 0 auto}
}
@media (max-width:1050px) {
  .ptt-hint{font-size:10px}
  .ptt-hint kbd{padding:2px 4px}
}
@media (max-width:740px) {
  .ptt-hint{display:none}
  .client-toolbar{flex-wrap:wrap}
}

/* v7: room-wide microphone queue and moderator timer */
.mic-slots{display:inline-flex;align-items:center;padding:2px 8px;margin-left:auto;border-radius:16px;color:#bafa80;background:#202b1d;border:1px solid #597942;font-size:11px;font-weight:650;white-space:nowrap}
.admin-voice-policy{padding:14px;margin:12px 0 16px;border:1px solid #74519b;border-radius:10px;background:linear-gradient(110deg,#25153e,#132d28);display:grid;gap:8px}
.admin-voice-policy strong{color:#beff79}
.admin-voice-policy .check-label{justify-content:flex-start;font-weight:650}
.admin-voice-policy p{margin:0;color:#d1bedc;font-size:12px;line-height:1.45}
#adminVoiceFeedback{color:#bcff84}
@media(max-width:650px){.mic-slots{white-space:normal;font-size:10px;padding:2px 4px}}

/* A thin status strip keeps Trivia Duck visible without adding page scrolling. */
.trivia-status{padding:5px 10px;background:linear-gradient(90deg,#1b1032,#12302d);color:#e5fc94;border-bottom:1px solid #9a52de;font:600 12px/1.35 system-ui,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.message:has(.message-meta){} /* bot messages use the ordinary safe text renderer */

.admin-trivia-policy{padding:12px;border:1px solid #65b38d;border-radius:9px;background:#13312b;margin:15px 0;color:#d2ffbd;font-size:12px}
.admin-trivia-policy p{margin:7px 0;color:#bdd1c9}
.trivia-admin-buttons{display:flex;flex-wrap:wrap;gap:5px;margin:8px 0}
.trivia-admin-buttons button{padding:7px;background:#3e2855;border:1px solid #b26ce5;color:#fff;border-radius:6px;font-size:11px}
.trivia-admin-buttons input{flex:1;min-width:140px;margin:0!important}
.message:has(.message-meta strong){} 

/* v8.1: Visible trivia administration from every room */
.trivia-admin-status-line{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px;background:#0a1b20;border:1px solid #466b5c;border-radius:7px;margin:10px 0;font-weight:600;}
.trivia-admin-status-line button{padding:6px 9px;background:#50316c;border:1px solid #aa78d4;color:#fff;border-radius:6px;cursor:pointer;white-space:nowrap;}
.trivia-offline{color:#ff99aa;}

/* v9: support widgets live INSIDE Keep it Funky and appear only when opened. */
.support-art{display:flex;flex-direction:column;align-items:stretch;text-align:center;gap:5px}
.support-art>span,.support-art>strong,.support-art>small{align-self:center}
.support-details,.youtube-details{text-align:left;width:100%;border:1px solid #734d9d;border-radius:9px;background:#130c23e8;margin-top:5px;min-width:0}
.support-details summary,.youtube-details summary{cursor:pointer;padding:9px 8px;font-weight:850;color:#bdfb7c;list-style-position:inside;font-size:12px}
.support-details>p,.youtube-details>p{margin:6px 8px 9px;color:#e5d5ef;font-size:11px;line-height:1.45}
.donation-cards{display:grid;gap:6px;padding:5px 8px}
.donate-card{display:flex;gap:5px;align-items:center;justify-content:space-between;width:100%;text-align:left;cursor:pointer;background:#302044;border:1px solid #a16bd0;color:#fff;border-radius:8px;padding:8px;text-decoration:none;font:700 11px system-ui,sans-serif}
.donate-card strong{color:#caff93}.donate-card small{color:#c7b0df;font-size:10px}
.donate-card:hover,.donate-card:focus-visible{background:#4b2c68;border-color:#baff7c;box-shadow:0 0 14px #bcff6866;outline:none}
.support-hint{display:block;color:#bfb2d7;margin:5px 9px 9px;font-size:10px;line-height:1.4}
.youtube-details{padding-bottom:8px}.youtube-details .secondary{display:block;margin:6px auto;padding:7px;font-size:11px}.youtube-details>a{color:#bdff82;font-size:11px;margin:6px 9px;display:block}
.youtube-player{width:100%;min-width:0}.youtube-player iframe{width:100%;aspect-ratio:16/9;border:0;border-radius:6px}
.accept-panel{border:1px solid #885da3;border-radius:10px;padding:12px;background:#130c24;line-height:1.5;font-size:12px}
.accept-panel>strong{color:#ceff98}.accept-panel p{color:#ddcee9;font-size:12px;line-height:1.55}
.legal-check{display:flex!important;align-items:flex-start;gap:9px;cursor:pointer;color:#e3ffb1!important;font-weight:600!important;font-size:12px}
.legal-check input{width:20px!important;height:20px!important;min-height:20px!important;flex:0 0 20px;margin:0}
.age-gate{max-width:540px;width:min(94vw,540px);max-height:94dvh;overflow-y:auto;background:#1b102b;color:#fff;border:1px solid #b06bea;border-radius:14px;padding:20px}
.age-gate form{display:grid;gap:10px}.age-gate input[type=date],.age-gate input[autocomplete=nickname]{background:#0f091a;color:#fff;padding:11px;border:1px solid #8753b9;border-radius:7px;width:100%;box-sizing:border-box;color-scheme:dark}
.guest-panel input[type=date]{color-scheme:dark}
@media (min-width:1050px) and (min-height:680px){body:not(.layout-roomy) .support-art{padding:6px}body:not(.layout-roomy) .support-details summary,body:not(.layout-roomy) .youtube-details summary{padding:5px 7px}}

.footer-link{background:transparent;border:0;color:#c6ff8a;text-decoration:underline;cursor:pointer;font-size:11px;padding:0 6px}.footer-link:hover{color:#fff}.age-gate p{font-size:13px;line-height:1.5;color:#e4d8ec}

/* v9.1 — compact trivia stats above the room chat, never intruding on other rooms. */
.trivia-ticker{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;padding:4px 8px;background:linear-gradient(95deg,#1b122c,#123327);border-bottom:1px solid #8e60aa;min-height:42px}
.trivia-ticker[hidden]{display:none!important}
.trivia-ticker-item{min-width:0;overflow:hidden;border:1px solid #4b5960;border-radius:6px;padding:3px 7px;background:#140f20;color:#efffe2}
.trivia-ticker-item strong{display:block;font:800 9px/1.2 system-ui,sans-serif;letter-spacing:.35px;color:#b2ff77;white-space:nowrap}
.trivia-ticker-item span{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font:600 10px/1.45 system-ui,sans-serif;color:#f2e6fd}
.member-stats{display:block;font-size:10px;color:#b5d6a8;font-weight:500;line-height:1.25;margin:2px 0 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.age-gate select,.join-page select#guestGender{width:100%;padding:11px;background:#120b20;color:#f7ebff;border:1px solid #8359a1;border-radius:8px;margin-bottom:9px}
@media(max-width:700px){.trivia-ticker{grid-template-columns:1fr;max-height:130px;overflow:auto}.trivia-ticker-item{padding:4px 7px}}

/* v9.2 VIP lounge: keep original dark psychedelic visual identity */
.room.vip-room{border:1px solid #dab34f80;background:linear-gradient(118deg,#251636,#35200d55)}
.room.vip-room .room-icon{filter:drop-shadow(0 0 8px #f4cf61)}
.admin-vip-panel{border:1px solid #b9943f;background:linear-gradient(125deg,#221538,#241b16);padding:14px;border-radius:12px;margin:14px 0;display:grid;gap:9px}
.admin-vip-panel strong,.vip-dialog h2{color:#dff77a}.admin-vip-panel p{margin:0;color:#d7c9ea;line-height:1.4}
.admin-vip-panel input:not([type=checkbox]),.admin-vip-panel select{width:100%;max-width:480px}
.vip-generated{border:1px solid #c9d96b;border-radius:10px;padding:10px;background:#182718;color:#d5ffac;display:grid;gap:6px}.vip-generated[hidden]{display:none}
#vipGeneratedCode{font-size:1.5rem;letter-spacing:.32rem;font-variant-numeric:tabular-nums;color:#f5f9bc}
.vip-member-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px;border-bottom:1px solid #b9904f44;overflow-wrap:anywhere}.vip-member-row button{white-space:nowrap}
.vip-dialog{max-width:530px}.vip-dialog input{font-size:1.4rem;letter-spacing:.3rem;max-width:220px}.vip-dialog p{line-height:1.5}
@media(max-width:630px){.vip-member-row{flex-wrap:wrap}.vip-dialog{width:95vw}}

/* v9.2 media source selection & admin activity */
.device-controls{display:flex;flex-wrap:wrap;align-items:center;gap:7px 14px;padding:1px 12px 7px;color:#cfbde1;font-size:11px}
.device-controls label{display:flex;align-items:center;gap:5px}
.device-controls select{max-width:180px;min-width:115px;min-height:28px;border:1px solid #715588;background:#211a2d;color:#e9dcf4;border-radius:6px;padding:4px;font-size:11px}
.device-controls button{padding:5px 9px;font-size:11px}
.admin-audit-panel{margin-top:16px;padding:10px;border:1px solid #55446a;border-radius:9px;background:#191021}
.admin-audit-events{max-height:250px;overflow-y:auto;font-size:11px}
.admin-audit-row{display:grid;gap:3px;padding:7px;border-bottom:1px solid #63447766}
.admin-audit-row strong{color:#caff8b}.admin-audit-row small{color:#bbaacc;overflow-wrap:anywhere}
@media(max-width:550px){.device-controls select{max-width:140px}.device-controls{gap:6px}}

/* v9.2 role controls */
.admin-super-panel{border:1px solid rgba(169,95,255,.45);border-radius:12px;padding:12px;margin:12px 0;background:rgba(93,28,132,.12)}
.admin-super-panel strong{color:#d6a3ff}.admin-enrollment-secret{padding:12px;border:1px dashed #a6e967;border-radius:8px;overflow-wrap:anywhere}

/* v9.3.1 room authentication */
.room-auth-setup{padding:10px;margin:9px 0;border:1px solid #7a5ba1;border-radius:11px;background:#1e1434}
.room-auth-setup input,.room-auth-setup button{max-width:100%}
#roomDialog{max-width:min(520px,96vw);max-height:88vh;overflow-y:auto}
#roomEnrollmentKey code{overflow-wrap:anywhere;color:#baff7d}
#roomLocalControls{border:1px solid #b563ec;border-radius:10px;padding:12px}

/* 9.3.1 room navigation and safe VIP exit */
.room-list-toggle{display:block;width:100%;margin:5px 0;padding:7px 10px;text-align:left;font-size:12px}
.vip-dialog{position:relative}
.vip-close-x{position:absolute;top:10px;right:10px;padding:4px 8px;z-index:2}
.danger-button{border-color:#dd6e9a!important;color:#ffb3cc!important}
.super-enrollment-box{margin:10px 0;padding:12px;border:1px solid #744c99;border-radius:10px;background:#22142c}
.super-enrollment-box label{display:block;margin:7px 0 3px}
.super-enrollment-box input{width:100%;max-width:320px}

.room-list[hidden], #searchRooms[hidden]{display:none!important}

/* v9.4 responsive status and collapsible media toolbar — keep psychedelic theme */
.compact-media-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:5px 10px;background:#20152f;border-bottom:1px solid #65457c;color:#c9fa93;font-size:12px}
.compact-media-row #roomLiveTotals{flex:1;min-width:115px;font-weight:700}
.compact-media-row button{font-size:11px;padding:6px 9px;min-height:32px}
.client-toolbar[hidden]{display:none!important}
.room .count{white-space:nowrap;font-size:10px}
@media(max-width:740px){.compact-media-row{gap:5px;padding:5px 7px}.compact-media-row button{padding:6px}.voice-console .voice-controls{gap:7px;padding:7px}.room .count{font-size:10px}.client-toolbar:not([hidden]){justify-content:flex-start}.client-toolbar>button{min-height:41px!important;min-width:58px!important;padding:3px 5px!important}.client-toolbar .tool-icon{font-size:18px!important}.chat-body{height:min(50dvh,470px);min-height:290px}}
@media(max-width:430px){.compact-media-row #roomLiveTotals{min-width:100%;order:2}.voice-head{gap:3px}.voice-controls .ptt-hint{display:none}.device-controls select{max-width:130px}}

/* Compact voice console: status and keyboard PTT survive when controls are hidden. */
.voice-panel-body[hidden]{display:none!important}
.voice-collapse-button{flex:0 0 auto;background:#322141;border:1px solid #85649b;border-radius:7px;color:#d5ff9b;font-size:11px;font-weight:800;padding:7px 10px;cursor:pointer;white-space:nowrap}
.voice-collapse-button:hover,.voice-collapse-button:focus-visible{background:#463057;outline-offset:2px}
.voice-head{flex-wrap:wrap}
.voice-head>div:first-child{min-width:0;flex:1 1 155px}
.voice-head .mic-slots{flex:0 1 auto}
@media(max-width:740px){.voice-collapse-button{min-height:36px;padding:7px 9px}.voice-head{gap:5px}.voice-head>div:first-child{flex-basis:100%}}

/* Device selectors live inside collapsible Media Tools, not the voice/TALK console. */
.client-toolbar .device-controls{flex:0 0 100%;width:100%;border-top:1px solid #493453;padding:8px 3px 2px;display:flex;flex-wrap:wrap;gap:8px 14px}
.client-toolbar .device-controls label{flex-wrap:wrap}
.client-toolbar .device-controls select{max-width:min(220px,50vw)}
.client-toolbar #listenButton[aria-pressed="true"]{background:#29432d;border-color:#9bd76b;color:#dbffbc}
@media(max-width:740px){.client-toolbar .device-controls{gap:7px}.client-toolbar .device-controls label{font-size:11px}.client-toolbar .device-controls select{min-width:105px;max-width:150px}}

/* Friends and incoming whisper indicator — compact psychedelic sidebar */
.friends-section{margin:10px 0 14px;padding:10px;border:1px solid rgba(126,222,255,.35);border-radius:12px;background:rgba(40,32,80,.24)}
.friends-heading{display:flex;justify-content:space-between;align-items:center;color:#bfefff;margin-bottom:6px}
.friends-heading span{font-size:.8rem;opacity:.85}
.friends-list{max-height:230px;overflow-y:auto}
.friends-list[hidden]{display:none!important}
.friend-row{display:flex;align-items:center;justify-content:space-between;gap:5px;padding:5px 2px;border-bottom:1px solid rgba(255,255,255,.09)}
.friend-name{min-width:0;overflow-wrap:anywhere;font-size:.88rem}
.friend-actions{display:flex;gap:3px;flex-shrink:0}
.friend-action{padding:4px 7px;font-size:.85rem;min-width:26px}
.friends-empty{font-size:.8rem;margin:8px 1px}
.private-unread-dot{display:inline-block;width:10px;height:10px;border-radius:50%;flex-shrink:0;background:#36c8ff;box-shadow:0 0 8px 3px #1a80ff;animation:fdUnreadBlink 1s ease-in-out infinite}
@keyframes fdUnreadBlink{0%,100%{opacity:1;box-shadow:0 0 8px 3px #1a80ff}50%{opacity:.24;box-shadow:0 0 2px 1px #1a80ff}}
@media(prefers-reduced-motion:reduce){.private-unread-dot{animation:none}}

/* Collapsible chat-room categories, preserving the original psychedelic palette. */
.room-list{display:flex;flex-direction:column;gap:7px}
.room-category{border:1px solid #67437b;border-radius:10px;background:#1d142c;min-width:0;overflow:hidden}
.room-category-heading{display:flex;align-items:center;justify-content:space-between;gap:5px;padding:10px 9px;cursor:pointer;color:#c8ff8b;font-size:12px;font-weight:800;list-style-position:inside}
.room-category-heading:hover{background:#322142}
.room-category-heading:focus-visible{outline:2px solid #baff62;outline-offset:-3px}
.room-category-count{font-size:10px;color:#cbb8dc;white-space:nowrap;font-weight:600}
.room-category-list{display:flex;flex-direction:column;padding:3px 5px 7px;gap:3px}
.room-category .room{min-width:0}
.room-category .count{font-size:10px;white-space:nowrap}
@media(max-width:740px){.room-list{display:flex;flex-direction:column;overflow:visible}.room-category-list{display:flex;flex-direction:column}.room-category .room{flex:initial;width:100%}}

/* v9.4 Paltalk-like navigation rail: chat and media DOM remain untouched. */
.layout{grid-template-columns:246px minmax(0,1fr)}
.rooms-pane{min-width:0;position:relative;display:flex;flex-direction:column;gap:5px}
.sidebar-nav-content{min-width:0}
.sidebar-nav-content[hidden]{display:none!important}
.sidebar-rail-toggle{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;min-height:34px;color:#caff83;border-color:#6e4a86;background:#251632;white-space:nowrap}
.sidebar-rail-toggle:hover{border-color:#baff68;background:#392449}
.rail-collapsed-label[hidden],.rail-expanded-label[hidden]{display:none!important}
.layout.sidebar-collapsed{grid-template-columns:48px minmax(0,1fr)}
.layout.sidebar-collapsed>.rooms-pane{display:flex!important;padding:8px 4px;overflow:visible}
.layout.sidebar-collapsed .sidebar-rail-toggle{font-size:15px;min-height:42px;padding:4px}
.layout.sidebar-collapsed>.center-pane{min-width:0;width:100%;max-width:100%}
.sidebar-toggle{flex:0 0 auto;padding:5px 9px;font-size:11px;white-space:nowrap}
.client-titlebar{min-width:0;flex-wrap:wrap}
.client-titlebar>div:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Keep chat transcript usable rather than limiting it to the old 56vh ceiling. */
@media(min-width:741px){.chat-body{max-height:none;min-height:clamp(370px,52vh,700px)}}
@media(max-width:740px){
  .layout,.layout.sidebar-collapsed{display:flex;flex-direction:column}
  .rooms-pane{border-right:0;border-bottom:1px solid #533269;padding:9px 11px;max-height:min(55dvh,430px);overflow-y:auto}
  .layout.sidebar-collapsed>.rooms-pane{display:none!important}
  .sidebar-toggle{min-height:38px;padding:6px 9px}
  .center-pane{padding:6px;min-width:0}
  .client-frame{min-height:0}
  .chat-body{height:min(55dvh,580px);min-height:290px;max-height:none}
  .client-titlebar{gap:7px}
}
@media(max-width:390px){.sidebar-toggle{font-size:10px}}


/* Funky Duck Neon Chat Edition: centered chat, horizontal webcam row, slim room rail. */
:root{--duck-neon-pink:#ff43d1;--duck-neon-cyan:#10dcff;--duck-neon-lime:#bbff62;--duck-neon-purple:#b35cff}
body{background:radial-gradient(circle at 17% 4%,#25123d 0,transparent 29%),radial-gradient(circle at 90% 10%,#11243d 0,transparent 30%),#090713;color:#eee6ff}
.masthead{background:linear-gradient(95deg,#120c24,#080d22 53%,#150b26);border-bottom:2px solid #a448ce;box-shadow:0 3px 18px #bd3cee29;flex-wrap:wrap;gap:10px}
.brand-title{font-style:italic;color:var(--duck-neon-lime);text-shadow:0 0 14px #9dff4a57}
.brand-title span{color:var(--duck-neon-pink);text-shadow:0 0 15px #ff43d177}
.main-nav{display:flex;gap:5px;align-items:center;flex-wrap:wrap;justify-content:center}
.main-nav button{background:transparent;border:1px solid transparent;border-radius:9px;padding:8px 11px;color:#eab6ff;cursor:pointer;font-size:12px;font-weight:750}
.main-nav button:hover,.main-nav button:focus-visible{border-color:#ac58ec;background:#251338;color:var(--duck-neon-lime);box-shadow:0 0 12px #f53cb033}
.header-device-tools{flex:0 0 100%;background:#0b1020;border:1px solid #4d306c;border-radius:9px;color:#b2edff;padding:4px 10px;font-size:11px}
.header-device-tools summary{cursor:pointer;font-weight:800;list-style:none}
.header-device-tools summary::-webkit-details-marker{display:none}
.header-device-tools .device-controls{display:flex!important;align-items:center;gap:12px;flex-wrap:wrap;width:100%;padding:6px 0 1px;margin:0;border:0;background:transparent}
.header-device-tools select{font-size:11px;max-width:200px;background:#100c23;color:#e9deff;border:1px solid #8251ab;border-radius:6px}
.rooms-pane{background:linear-gradient(180deg,#140c25,#090d1e);border-right:1px solid #8d45d9}
.rooms-pane .room-category-heading,.friends-section{border-color:#9545dd;box-shadow:0 0 12px #8f29ee24}
.rooms-pane .room-category-heading{color:#eec1ff}
.room:hover,.room.active{box-shadow:0 0 12px #a4ff6b20;border-color:#a7ff5b}
.client-frame{border-color:#9d44e1;box-shadow:0 0 20px #6d12a928}
.client-titlebar{background:linear-gradient(90deg,#1b1431,#0b1630);border-bottom:1px solid #ad59e3}
.client-toolbar{background:#100c24}
.client-toolbar button:hover,.compact-media-row button:hover{border-color:var(--duck-neon-cyan);box-shadow:0 0 10px #10dcff33}
.room-banner{background:linear-gradient(100deg,#1a112f,#0d1729);color:var(--duck-neon-lime)}
.webcam-top{background:linear-gradient(100deg,#100b21,#0c1024);border-top:1px solid #8550ae;border-bottom:2px solid #cc49d8;padding:7px 10px}
.webcam-top .webcam-tray-title{display:flex;align-items:center;padding:2px 1px 6px;gap:10px;font-size:11px}
.webcam-top .webcam-tray-title strong{color:var(--duck-neon-cyan);font-size:12px}
.webcam-top .cam-lounge-body{display:flex;flex-direction:column;gap:6px;width:100%;min-width:0}
.webcam-top .cam-strip-side{width:100%;min-width:0}
.webcam-top .cam-strip-heading{margin:0 0 4px;color:var(--duck-neon-lime)}
.webcam-top .video-grid{display:flex;gap:8px;min-height:118px;max-width:100%;overflow-x:auto;scrollbar-color:#a34ce3 #111028;padding-bottom:5px}
.webcam-top .video-card{flex:0 0 clamp(120px,17vw,190px);width:clamp(120px,17vw,190px);height:112px;border:1px solid #bd57ea;border-radius:11px;background:#111329;box-shadow:inset 0 0 14px #9637e823;overflow:hidden;position:relative}
.webcam-top .video-card:hover,.webcam-top .video-card.selected{border-color:#97ff65;box-shadow:0 0 12px #74ef5a56}
.webcam-top .video-caption{background:#09091ecb;color:#b5ff8a;font-size:11px;position:absolute;bottom:0;left:0;right:0;padding:4px 6px;z-index:3}
.webcam-top .cam-feature{display:none;order:2;width:100%;height:min(35vw,350px);min-height:180px;border:1px solid #10dcff}
.webcam-top.stage-open .cam-feature{display:grid}
.cam-stage-close{position:absolute;right:8px;top:8px;z-index:5;background:#31163b;border:1px solid #ff43d1;color:#fff;border-radius:7px;cursor:pointer;padding:5px 9px}
.webcam-top .cam-tip{margin:3px 0;font-size:10px}
.webcam-top.minimized .cam-lounge-body{display:none!important}
.chat-body{border-top:0;background:#090a1b}
.transcript-side{background:linear-gradient(180deg,#0b0b1f,#0b1022)}
.roster-side{background:linear-gradient(180deg,#100c25,#0d1325);border-left:1px solid #9752ca}
.message{position:relative}
.message-meta strong{color:#ff77d6}
.message.mine .message-meta strong{color:var(--duck-neon-lime)}
.message-avatar{width:29px;height:29px;object-fit:cover;border-radius:50%;border:1px solid var(--duck-neon-purple);float:left;margin-right:7px}
.chatter-avatar{height:27px;width:27px;border-radius:50%;object-fit:cover;border:1px solid #9d5bd2;flex:0 0 27px}
.profile-clickable{cursor:pointer}.profile-clickable:hover{text-decoration:underline;color:var(--duck-neon-cyan)}
.member-status{display:block;font-size:10px;color:#b8c8e2;font-weight:400}
.neon-text-gradient{display:inline-block;background-clip:text!important;-webkit-background-clip:text!important;color:transparent!important;-webkit-text-fill-color:transparent!important;white-space:pre-wrap;overflow-wrap:anywhere}
.style-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:5px 10px;background:#0e0c22;border-top:1px solid #7645a6}
.style-toolbar button{border:1px solid #a250d5;border-radius:7px;padding:6px 10px;background:#22143b;color:#d9b6ff;cursor:pointer;font-size:11px}
.style-preview{font-size:11px;font-weight:800}
.style-tools[hidden]{display:none!important}
.style-tools{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:9px 11px;background:#150e29;border-bottom:1px solid #7452a7}
.style-tools label{display:flex;align-items:center;gap:5px;font-size:11px;color:#e9cbff}
.style-tools select{background:#0f0c1f;color:#e9d7ff;padding:7px;border:1px solid #754ac0;border-radius:6px}
.style-tools input[type=color]{width:35px;height:30px;padding:1px;border:1px solid #7641a8;background:transparent;border-radius:5px;cursor:pointer}
.emoji-palette{display:flex;flex:1 1 100%;align-items:center;gap:4px;overflow-x:auto;max-height:56px}
.emoji-choice{font-size:20px;background:#1c1532;border:1px solid #4c3977;border-radius:7px;cursor:pointer;padding:3px 5px;flex:0 0 auto}
.emoji-choice:hover{border-color:#d45ae7;background:#332041}
.whisper-style-head{margin-top:7px;border-radius:7px}
.whisper-dialog .style-tools{margin:0 0 8px;border-radius:7px}
.whisper-line p{white-space:pre-wrap;overflow-wrap:anywhere}
.profile-dialog{max-width:530px;width:calc(100% - 20px);color:#f4eaff;background:#140e29;border:1px solid #c55af7;padding:20px;border-radius:15px;box-shadow:0 15px 70px #000a,0 0 25px #b343f735}
.profile-dialog label{display:block;font-weight:750;font-size:12px;color:#d9afff;margin:10px 0 5px}
.profile-dialog input,.profile-dialog textarea{width:100%;color:#fff;background:#0b1021;border:1px solid #8358b4;border-radius:7px;padding:9px;font-family:inherit}
.profile-picture-row{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.profile-picture-row input[type=file]{width:100%;max-width:310px;padding:7px}
.large-profile-avatar,.profile-picture-fallback{width:104px;height:104px;border-radius:17px;object-fit:cover;border:2px solid #a2f86d;box-shadow:0 0 18px #ac47e761}
.profile-picture-fallback{display:grid;place-items:center;font-size:55px;background:#26153b}
.profile-dialog menu{display:flex;justify-content:flex-end;margin:12px 0 0;padding:0}
.profile-sidebar-button{display:block;width:100%;margin:6px 0;border:1px solid #ba5ef1;color:#e9b9ff;background:#231637;border-radius:8px;padding:8px;font-size:11px;cursor:pointer}
.profile-dialog [hidden]{display:none!important}
@media (min-width:1050px) and (min-height:680px){body:not(.layout-roomy) .webcam-top .video-card{flex-basis:clamp(110px,13vw,178px);width:clamp(110px,13vw,178px);height:102px}body:not(.layout-roomy) .webcam-top .video-grid{min-height:105px}body:not(.layout-roomy) .cam-feature{display:none}body:not(.layout-roomy) .webcam-top.stage-open .cam-feature{display:grid;height:200px}body:not(.layout-roomy) .style-tools{flex:0 0 auto}body:not(.layout-roomy) .masthead{flex-wrap:nowrap}body:not(.layout-roomy) .header-device-tools{flex:0 1 auto;min-width:150px}body:not(.layout-roomy) .header-device-tools .device-controls{position:absolute;right:10px;top:53px;z-index:25;width:min(760px,92vw);padding:10px;background:#110d24;border:1px solid #a65be2;border-radius:9px;box-shadow:0 12px 28px #000b}}
@media(max-width:1100px){.masthead{flex-wrap:wrap}.main-nav{order:3;width:100%;justify-content:flex-start}.header-device-tools{flex:1 1 190px}.header-right{margin-left:auto}}
@media(max-width:740px){.main-nav{gap:2px}.main-nav button{font-size:11px;padding:6px}.header-device-tools{flex:1 1 100%}.header-device-tools .device-controls{position:static!important;width:100%!important}.webcam-top .video-card{flex:0 0 133px;width:133px;height:100px}.webcam-top .video-grid{min-height:104px}.webcam-top.stage-open .cam-feature{height:220px}.style-tools{gap:8px}.roster-side{max-height:240px;overflow:auto}.chat-body{min-height:240px}.style-preview{display:none}}
@media(max-width:480px){.main-nav{justify-content:space-around}.main-nav button{font-size:10px}.webcam-top .webcam-tray-title span{display:none}.webcam-top .video-card{flex-basis:118px;width:118px;height:91px}.style-toolbar{gap:3px;padding:4px 7px}.style-tools{padding:7px}.profile-picture-row{flex-direction:column;align-items:flex-start}}
@media(prefers-reduced-motion:reduce){.client-frame,.room{scroll-behavior:auto}}

.logo-image{padding:0;overflow:hidden;border:0;background:#0c0b1b}.logo-image img{width:100%;height:100%;object-fit:contain;display:block}.header-device-tools .device-controls label{white-space:nowrap}
/* Local Owner entrance uses the existing neon theme; remote users never see it. */
.local-owner-entry{margin:1rem 0;padding:1rem;border:1px solid #00dfff;border-radius:12px;background:rgba(18,12,37,.85);box-shadow:0 0 12px #00dfff45;}
.local-owner-entry[hidden],#localOwnerPanel[hidden]{display:none!important;}
.local-owner-entry .owner-entry-toggle{width:100%;color:#d2ff66;background:#221335;border:1px solid #ed6cf4;border-radius:8px;padding:.75rem;font-weight:800;cursor:pointer;}
.local-owner-entry p{color:#d4bee8;line-height:1.45;}
.local-owner-entry input:not([type=checkbox]){width:100%;max-width:100%;box-sizing:border-box;}
.local-owner-entry #localOwnerSubmit{width:100%;padding:.8rem;background:#322047;color:#d2ff66;border:1px solid #00e5ff;border-radius:9px;font-weight:700;cursor:pointer;}

.owner-role-label{display:inline-block;margin-left:.45rem;color:#d4ff70;font-size:.72rem;letter-spacing:.09em;text-shadow:0 0 7px #a5fc41;font-weight:900;}
