        .voice-site-main {
            width: 100%;
            max-width: none;
            --channel-bg: var(--ground, #f9f8f4);
            --channel-fg: var(--ink, #1a1a1a);
        }
        .voice-room {
            --field-w: min(280px, 100%);
            max-width: 480px;
            margin: 0 auto;
            padding: 2rem 1rem;
            text-align: center;
            font-family: 'IBM Plex Mono', monospace;
            position: relative;
        }
        .voice-title {
            font-family: 'Fraunces', serif;
            font-size: clamp(1.5rem, 4vw, 2.2rem);
            font-weight: 300;
            margin-bottom: 0.5rem;
            letter-spacing: -0.02em;
        }
        .voice-subtitle {
            font-size: 0.75rem;
            letter-spacing: 0.08em;
            text-transform: uppercase;
            opacity: 0.5;
            margin-bottom: 2.5rem;
        }
        .voice-peers {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 0.55rem;
            margin-bottom: 1.1rem;
        }
        .voice-quality {
            font-size: 0.7rem;
            letter-spacing: 0.04em;
            opacity: 0.6;
            flex: 0 0 auto;
        }
        .voice-share-status {
            flex: 1 1 auto;
            min-width: 0;
            font-size: 0.62rem;
            letter-spacing: 0.08em;
            text-transform: uppercase;
            text-align: right;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            opacity: 0.45;
            transition: opacity 0.16s ease;
        }
        .voice-share-status--active {
            opacity: 0.88;
        }
        .voice-share-status--idle {
            opacity: 0.42;
        }
        .voice-panel {
            position: relative;
        }
        .voice-settings-btn {
            width: 34px;
            height: 34px;
            min-width: 34px;
            min-height: 34px;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            padding: 0;
            margin: 0;
            border: 1px solid currentColor;
            background: transparent;
            color: inherit;
            cursor: pointer;
            opacity: 0.55;
            transition: opacity 0.15s ease, background 0.15s ease, color 0.15s ease, transform 0.15s ease;
        }
        .voice-settings-btn:hover,
        .voice-settings-btn[aria-expanded="true"] {
            opacity: 0.95;
            background: var(--channel-fg);
            color: var(--channel-bg);
        }
        .voice-settings-btn:focus-visible {
            outline: 1px solid currentColor;
            outline-offset: 2px;
        }
        .voice-settings-btn svg {
            width: 18px;
            height: 18px;
            display: block;
        }
        .voice-mini-btn {
            height: 34px;
            min-height: 34px;
            min-width: 34px;
            padding: 0 0.85rem;
            border: 1px solid currentColor;
            background: transparent;
            color: inherit;
            font-family: 'IBM Plex Mono', monospace;
            font-size: 0.62rem;
            font-weight: 500;
            letter-spacing: 0.12em;
            text-transform: uppercase;
            cursor: pointer;
            opacity: 0.62;
            transition: opacity 0.15s ease, background 0.15s ease, color 0.15s ease;
        }
        .voice-mini-btn:hover {
            opacity: 0.95;
            background: var(--channel-fg);
            color: var(--channel-bg);
        }
        .voice-mini-btn:disabled {
            opacity: 0.3;
            cursor: not-allowed;
        }
        .voice-mini-btn--compact {
            height: 44px;
            min-height: 44px;
            padding: 0 0.7rem;
            font-size: 0.58rem;
        }
        .voice-mini-btn--active {
            opacity: 0.95;
            background: var(--channel-fg);
            color: var(--channel-bg);
        }
        .voice-mini-btn--busy {
            border-style: dashed;
        }
        .voice-settings {
            position: absolute;
            top: -0.15rem;
            left: calc(100% + 1rem);
            width: min(16rem, 42vw);
            border: 1px solid currentColor;
            background: var(--channel-bg);
            text-align: left;
            padding: 0.75rem;
            z-index: 4;
            opacity: 0;
            transform: translateX(-8px);
            visibility: hidden;
            pointer-events: none;
            transition: opacity 0.18s ease, transform 0.18s ease;
        }
        .voice-settings--open {
            opacity: 0.96;
            transform: translateX(0);
            visibility: visible;
            pointer-events: auto;
        }
        .voice-settings__title {
            margin: 0 0 0.6rem;
            font-size: 0.62rem;
            letter-spacing: 0.12em;
            text-transform: uppercase;
            opacity: 0.72;
        }
        .voice-settings__divider {
            height: 1px;
            background: currentColor;
            opacity: 0.14;
            margin: 0.6rem 0 0.7rem;
        }
        .voice-settings__option {
            width: 100%;
            justify-content: flex-start;
            margin-top: 0.1rem;
        }
        .voice-stage {
            margin: 0 auto 0;
            width: min(620px, 100%);
            text-align: left;
            opacity: 0;
            max-height: 0;
            overflow: hidden;
            pointer-events: none;
            transform: translateY(-6px);
            transition: opacity 0.16s ease, max-height 0.16s ease, margin 0.16s ease, transform 0.16s ease;
        }
        .voice-stage--visible {
            opacity: 1;
            max-height: 1600px;
            overflow: visible;
            pointer-events: auto;
            transform: translateY(0);
            margin: 0 auto 1.45rem;
        }
        .voice-stage__frame {
            position: relative;
            border: 1px solid currentColor;
            background:
                linear-gradient(180deg, rgba(0, 0, 0, 0.02), rgba(0, 0, 0, 0.06)),
                linear-gradient(135deg, rgba(0, 0, 0, 0.02), rgba(0, 0, 0, 0));
            aspect-ratio: 16 / 10;
            min-height: 180px;
            overflow: hidden;
        }
        [data-theme="dark"] .voice-stage__frame {
            background:
                linear-gradient(180deg, rgba(255, 255, 255, 0.03), rgba(255, 255, 255, 0.06)),
                linear-gradient(135deg, rgba(255, 255, 255, 0.03), rgba(255, 255, 255, 0));
        }
        .voice-stage__video {
            position: absolute;
            inset: 0;
            width: 100%;
            height: 100%;
            object-fit: contain;
            display: none;
            background: rgba(0, 0, 0, 0.03);
        }
        .voice-stage--active .voice-stage__video {
            display: block;
        }
        .voice-stage__placeholder {
            position: absolute;
            inset: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            text-align: center;
            padding: 1rem;
            font-size: 0.72rem;
            letter-spacing: 0.09em;
            text-transform: uppercase;
            opacity: 0.42;
        }
        .voice-stage--active .voice-stage__placeholder {
            display: none;
        }
        .voice-stage__meta-main {
            min-width: 0;
            display: inline-flex;
            align-items: center;
            gap: 0.55rem;
            flex: 1 1 auto;
        }
        .voice-stage__label {
            opacity: 0.72;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
        .voice-stage__badge {
            opacity: 0.5;
            text-transform: uppercase;
            letter-spacing: 0.14em;
            font-size: 0.58rem;
            padding-right: 0.6rem;
            position: relative;
        }
        .voice-stage__badge::after {
            content: "";
            position: absolute;
            right: 0;
            top: 50%;
            width: 4px;
            height: 4px;
            border-radius: 50%;
            background: currentColor;
            opacity: 0.25;
            transform: translateY(-50%);
        }
        .voice-stage--active .voice-stage__badge::after {
            opacity: 0.75;
        }
        .voice-stage--local .voice-stage__label,
        .voice-stage--remote .voice-stage__label {
            opacity: 0.95;
        }
        .voice-stage__actions {
            display: inline-flex;
            align-items: center;
            gap: 0.35rem;
            flex: 0 0 auto;
        }
        .voice-stage__action {
            height: 28px;
            min-height: 28px;
            min-width: 28px;
            padding: 0 0.55rem;
            font-size: 0.56rem;
            letter-spacing: 0.12em;
        }
        .voice-stage:fullscreen,
        .voice-stage:-webkit-full-screen {
            width: 100vw;
            max-width: none;
            max-height: none;
            opacity: 1;
            overflow: visible;
            pointer-events: auto;
            margin: 0;
            padding: 0.65rem;
            background: var(--channel-bg);
            box-sizing: border-box;
        }
        .voice-stage:fullscreen .voice-stage__frame,
        .voice-stage:-webkit-full-screen .voice-stage__frame {
            aspect-ratio: auto;
            min-height: 0;
            height: calc(100vh - 3.5rem);
            background: rgba(0, 0, 0, 0.96);
        }
        .voice-stage:fullscreen .voice-stage__video,
        .voice-stage:-webkit-full-screen .voice-stage__video {
            background: rgba(0, 0, 0, 0.96);
        }
        .voice-stage:fullscreen .voice-stage__placeholder,
        .voice-stage:-webkit-full-screen .voice-stage__placeholder {
            color: var(--channel-bg);
            opacity: 0.55;
        }
        .voice-roster {
            position: absolute;
            left: -9.6rem;
            top: 8rem;
            width: 8.8rem;
            min-height: 0;
            display: flex;
            flex-direction: column;
            flex-wrap: nowrap;
            justify-content: flex-start;
            gap: 0.18rem;
            align-items: flex-start;
            text-align: left;
            line-height: 1.2;
            pointer-events: none;
        }
        .voice-roster--empty {
            opacity: 0.35;
        }
        .voice-roster__name {
            display: inline-flex;
            align-items: center;
            gap: 0.35rem;
            font-size: 0.72rem;
            font-weight: 400;
            letter-spacing: 0.06em;
            opacity: 0.28;
            transition: opacity 0.12s ease, transform 0.12s ease;
            white-space: nowrap;
            max-width: 100%;
            overflow: hidden;
            text-overflow: ellipsis;
            transform: translateY(0);
        }
        .voice-roster__share-icon {
            display: inline-block;
            width: 0.72rem;
            height: 0.5rem;
            border: 1px solid currentColor;
            opacity: 0.72;
            position: relative;
            flex: 0 0 auto;
            transform: translateY(-1px);
        }
        .voice-roster__share-icon::after {
            content: "";
            position: absolute;
            left: 50%;
            bottom: -4px;
            width: 0.25rem;
            height: 1px;
            background: currentColor;
            transform: translateX(-50%);
            opacity: 0.75;
        }
        .voice-roster__share-icon::before {
            content: "";
            position: absolute;
            left: 50%;
            bottom: -6px;
            width: 0.46rem;
            height: 1px;
            background: currentColor;
            transform: translateX(-50%);
            opacity: 0.5;
        }
        .voice-roster__name--speaking {
            font-weight: 600;
            opacity: 0.95;
            transform: translateY(-1px);
        }
        .voice-roster__name--self {
            opacity: 0.5;
        }
        .voice-roster__name--self.voice-roster__name--speaking {
            opacity: 1;
        }
        .voice-quality--good { opacity: 0.5; }
        .voice-quality--fair { opacity: 0.7; }
        .voice-quality--poor { opacity: 1; }
        .voice-btn {
            display: inline-block;
            font-family: 'IBM Plex Mono', monospace;
            font-size: 0.75rem;
            font-weight: 500;
            letter-spacing: 0.1em;
            text-transform: uppercase;
            padding: 0.9em 2.4em;
            min-height: 44px;
            min-width: 44px;
            border: 1px solid currentColor;
            background: transparent;
            color: inherit;
            cursor: pointer;
            transition: background 0.2s, color 0.2s;
            margin: 0 0.4em;
        }
        .voice-btn:hover {
            background: var(--channel-fg);
            color: var(--channel-bg);
        }
        .voice-btn:disabled {
            opacity: 0.3;
            cursor: not-allowed;
        }
        .voice-auth {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 0.8rem;
        }
        .voice-auth .voice-btn {
            width: var(--field-w);
            margin: 0;
            box-sizing: border-box;
        }
        .voice-input {
            font-family: 'IBM Plex Mono', monospace;
            font-size: 0.8rem;
            letter-spacing: 0.04em;
            padding: 0.7em 1em;
            min-height: 44px;
            border: 1px solid currentColor;
            background: transparent;
            color: inherit;
            text-align: center;
            width: var(--field-w);
            outline: none;
            opacity: 0.8;
            box-sizing: border-box;
        }
        .voice-input:focus {
            opacity: 1;
        }
        .voice-input::placeholder {
            opacity: 0.4;
        }
        .voice-select {
            width: var(--field-w);
            cursor: pointer;
            -webkit-appearance: none;
            appearance: none;
            background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23666'/%3E%3C/svg%3E");
            background-repeat: no-repeat;
            background-position: right 0.8em center;
            padding-right: 2.2em;
            text-overflow: ellipsis;
        }
        .voice-device-controls {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 0.8rem;
            width: 100%;
            opacity: 0;
            transform: translateY(6px);
            transition: opacity 0.28s ease, transform 0.28s ease;
            pointer-events: none;
        }
        .voice-device-controls--visible {
            opacity: 1;
            transform: translateY(0);
            pointer-events: auto;
        }
        .voice-settings .voice-device-controls {
            align-items: stretch;
            gap: 0.55rem;
            transform: none;
        }
        .voice-settings .voice-input,
        .voice-settings .voice-select,
        .voice-settings .voice-threshold {
            width: 100%;
        }
        .voice-settings .voice-screen-controls {
            width: 100%;
            display: flex;
            flex-direction: column;
            gap: 0.4rem;
            margin-top: 0.15rem;
        }
        .voice-settings .voice-screen-controls .voice-threshold__label {
            margin-bottom: 0.2rem;
        }
        .voice-settings .voice-threshold {
            margin: 0.25rem 0 0;
            opacity: 0.8;
        }
        .voice-auth-password {
            width: var(--field-w);
            margin: 0 auto;
            display: grid;
            grid-template-columns: 1fr auto;
            gap: 0.45rem;
            align-items: center;
        }
        .voice-auth-password .voice-input {
            width: 100%;
            margin: 0;
        }
        .voice-room[data-thechannel-state="inroom"] .voice-auth {
            display: none;
        }
        /* Pre-join auth layout (prototype: channel-entry-v2-minimal) */
        .voice-room[data-thechannel-state="prejoin"] {
            --field-w: min(520px, 92vw);
            max-width: min(1640px, 100%);
            min-height: min(76vh, 820px);
            padding: 1.2rem 1rem 1rem;
        }
        .voice-room[data-thechannel-state="prejoin"]::before {
            content: none;
        }
        .voice-room[data-thechannel-state="prejoin"] .voice-panel--inroom {
            filter: blur(5px) saturate(0.88);
            transform: none;
            opacity: 0.58;
            border: 0;
            background: transparent;
            pointer-events: none;
            user-select: none;
            position: relative;
            z-index: 1;
            padding: 0.85rem;
            min-height: min(76vh, 820px);
        }
        .voice-room[data-thechannel-state="prejoin"] .voice-main {
            filter: none;
            opacity: 1;
        }
        .voice-room[data-thechannel-state="prejoin"] .voice-settings {
            display: none;
        }
        .voice-room[data-thechannel-state="prejoin"] .voice-auth {
            position: absolute;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
            width: min(var(--field-w), calc(100% - 1.6rem));
            z-index: 14;
            align-items: stretch;
            gap: 0.75rem;
            pointer-events: auto;
            padding: 0.92rem;
            border: 1px solid rgba(26, 26, 26, 0.36);
            background: rgba(249, 248, 244, 0.82);
            box-shadow: 0 16px 38px rgba(0, 0, 0, 0.24);
            backdrop-filter: blur(8px) saturate(1.04);
            -webkit-backdrop-filter: blur(8px) saturate(1.04);
        }
        .voice-room[data-thechannel-state="prejoin"] .thechannel-prejoin-note {
            position: absolute;
            left: 50%;
            top: 50%;
            transform: translate(-50%, calc(-50% - 206px));
            width: min(var(--field-w), calc(100% - 1.6rem));
            margin: 0;
            padding: 0 0.1rem;
            font-family: var(--f-display);
            font-style: normal;
            font-size: clamp(1.02rem, 2.05vw, 1.36rem);
            font-weight: 300;
            font-variation-settings: 'SOFT' 50, 'WONK' 1;
            letter-spacing: -0.01em;
            line-height: 1.24;
            color: var(--ink);
            text-align: center;
            z-index: 20;
            pointer-events: none;
            text-wrap: pretty;
            white-space: normal;
        }
        @media (min-width: 900px) {
            .voice-room[data-thechannel-state="prejoin"] .thechannel-prejoin-note {
                width: auto;
                max-width: calc(100% - 1.6rem);
                white-space: nowrap;
                text-wrap: unset;
            }
        }
        [data-theme="dark"] .voice-room[data-thechannel-state="prejoin"] .voice-auth {
            border-color: rgba(255, 255, 255, 0.24);
            background: rgba(16, 16, 16, 0.78);
            box-shadow: 0 20px 46px rgba(0, 0, 0, 0.46);
        }
        [data-theme="dark"] .voice-room[data-thechannel-state="prejoin"] .thechannel-prejoin-note {
            color: var(--ink);
        }
        .voice-room[data-thechannel-state="inroom"] .thechannel-prejoin-note {
            display: none;
        }
        .voice-room[data-thechannel-state="prejoin"] .voice-auth .voice-input {
            width: 100%;
            min-height: 62px;
            padding: 0 1.05rem;
            text-align: left;
            text-transform: uppercase;
            letter-spacing: 0.09em;
            font-size: 0.9rem;
            opacity: 1;
            border-color: rgba(26, 26, 26, 0.42);
            background: rgba(249, 248, 244, 0.58);
        }
        .voice-room[data-thechannel-state="prejoin"] #authPassword {
            text-transform: none;
            letter-spacing: 0.04em;
        }
        .voice-room[data-thechannel-state="prejoin"] #authName {
            text-transform: none;
            letter-spacing: 0.04em;
        }
        [data-theme="dark"] .voice-room[data-thechannel-state="prejoin"] .voice-auth .voice-input {
            border-color: rgba(255, 255, 255, 0.28);
            background: rgba(8, 8, 8, 0.42);
        }
        .voice-room[data-thechannel-state="prejoin"] .voice-auth .voice-input::placeholder {
            opacity: 1;
            color: rgba(26, 26, 26, 0.43);
            text-transform: uppercase;
            letter-spacing: 0.13em;
            font-size: 0.78rem;
        }
        [data-theme="dark"] .voice-room[data-thechannel-state="prejoin"] .voice-auth .voice-input::placeholder {
            color: rgba(236, 236, 236, 0.44);
        }
        .voice-room[data-thechannel-state="prejoin"] .voice-auth-password {
            width: 100%;
            margin: 0;
            gap: 0;
            grid-template-columns: minmax(0, 1fr) 84px;
            border: 1px solid rgba(26, 26, 26, 0.42);
        }
        [data-theme="dark"] .voice-room[data-thechannel-state="prejoin"] .voice-auth-password {
            border-color: rgba(255, 255, 255, 0.28);
        }
        .voice-room[data-thechannel-state="prejoin"] .voice-auth-password .voice-input {
            border: none;
            min-height: 60px;
        }
        .voice-room[data-thechannel-state="prejoin"] #authPasswordToggle {
            width: 84px;
            min-width: 84px;
            height: 100%;
            min-height: 60px;
            margin: 0;
            padding: 0;
            border: 0;
            border-left: 1px solid currentColor;
            background: transparent;
            color: inherit;
            font-size: 0.64rem;
            letter-spacing: 0.16em;
            text-transform: uppercase;
            opacity: 0.74;
        }
        .voice-room[data-thechannel-state="prejoin"] #authPasswordToggle:hover {
            opacity: 1;
            background: rgba(0, 0, 0, 0.03);
            color: inherit;
        }
        [data-theme="dark"] .voice-room[data-thechannel-state="prejoin"] #authPasswordToggle:hover {
            background: rgba(255, 255, 255, 0.06);
        }
        .voice-room[data-thechannel-state="prejoin"] .voice-auth .voice-btn {
            width: 100%;
            min-height: 62px;
            margin: 0;
            font-size: 0.95rem;
            letter-spacing: 0.16em;
            border-color: rgba(26, 26, 26, 0.5);
            background: rgba(0, 0, 0, 0.045);
        }
        [data-theme="dark"] .voice-room[data-thechannel-state="prejoin"] .voice-auth .voice-btn {
            border-color: rgba(255, 255, 255, 0.32);
            background: rgba(255, 255, 255, 0.06);
        }
        .voice-room[data-thechannel-state="prejoin"] .voice-status {
            margin-top: 0.2rem;
            text-align: left;
            opacity: 0.5;
            min-height: 1.2em;
        }
        .voice-settings .voice-debug {
            width: 100%;
        }
        .voice-settings .voice-debug > summary {
            cursor: pointer;
            font-size: 0.62rem;
            letter-spacing: 0.1em;
            text-transform: uppercase;
            opacity: 0.78;
            list-style: none;
        }
        .voice-settings .voice-debug > summary::-webkit-details-marker {
            display: none;
        }
        .voice-settings .voice-debug > summary::after {
            content: ' +';
        }
        .voice-settings .voice-debug[open] > summary::after {
            content: ' -';
        }
        .voice-settings .voice-debug__dump {
            margin: 0.5rem 0 0;
            padding: 0.5rem;
            border: 1px solid currentColor;
            max-height: 210px;
            overflow: auto;
            white-space: pre-wrap;
            word-break: break-word;
            font-size: 0.58rem;
            line-height: 1.45;
            opacity: 0.82;
        }
        .voice-option {
            display: inline-flex;
            align-items: center;
            gap: 0.5rem;
            font-size: 0.7rem;
            letter-spacing: 0.06em;
            opacity: 0.65;
            user-select: none;
            cursor: pointer;
            padding: 0.3em 0;
            min-height: 36px;
        }
        .voice-option input {
            width: 18px;
            height: 18px;
            accent-color: currentColor;
        }
        .voice-threshold {
            width: var(--field-w);
            margin: 1rem auto 0;
            opacity: 0.72;
        }
        .voice-threshold__label {
            display: block;
            margin-bottom: 0.45rem;
            font-size: 0.62rem;
            letter-spacing: 0.1em;
            text-transform: uppercase;
            text-align: left;
            opacity: 0.78;
        }
        .voice-threshold__surface {
            position: relative;
            height: 28px;
            border: 1px solid currentColor;
            overflow: hidden;
            background: transparent;
            cursor: ew-resize;
            touch-action: none;
            transition: opacity 0.15s ease;
        }
        .voice-threshold--disabled .voice-threshold__surface {
            opacity: 0.45;
            cursor: not-allowed;
        }
        .voice-threshold__sent {
            position: absolute;
            inset: 0 auto 0 0;
            width: 0%;
            pointer-events: none;
        }
        .voice-threshold__sent {
            background: currentColor;
            opacity: 0.46;
            transition: width 0.06s linear;
        }
        .voice-threshold__marker {
            position: absolute;
            top: -1px;
            bottom: -1px;
            width: 2px;
            margin-left: -1px;
            left: 50%;
            background: currentColor;
            opacity: 0.9;
            pointer-events: none;
            transition: left 0.05s linear, opacity 0.15s ease;
        }
        .voice-threshold__state {
            position: absolute;
            top: 50%;
            right: 0.55rem;
            transform: translateY(-50%);
            font-size: 0.55rem;
            letter-spacing: 0.1em;
            text-transform: uppercase;
            opacity: 0.45;
            pointer-events: none;
            transition: opacity 0.12s ease;
        }
        .voice-threshold--sending .voice-threshold__state {
            opacity: 0.9;
        }
        .voice-threshold__range {
            position: absolute;
            inset: 0;
            width: 100%;
            height: 100%;
            margin: 0;
            background: transparent;
            opacity: 0;
            cursor: inherit;
            -webkit-appearance: none;
            appearance: none;
        }
        .voice-threshold__range:focus-visible {
            opacity: 0.001;
            outline: none;
        }
        .voice-threshold__range::-webkit-slider-thumb {
            -webkit-appearance: none;
            appearance: none;
            width: 20px;
            height: 28px;
            background: transparent;
            border: none;
            cursor: inherit;
        }
        .voice-threshold__range::-moz-range-thumb {
            width: 20px;
            height: 28px;
            background: transparent;
            border: none;
            cursor: inherit;
        }
        .voice-chat {
            width: min(420px, 100%);
            margin: 1.1rem auto 0;
            border: 1px solid currentColor;
            opacity: 0.78;
        }
        .voice-chat__log {
            height: 132px;
            overflow-y: auto;
            text-align: left;
            padding: 0.6rem 0.7rem;
            border-bottom: 1px solid currentColor;
            font-size: 0.66rem;
            line-height: 1.35;
            letter-spacing: 0.03em;
            scrollbar-width: thin;
        }
        .voice-chat__empty {
            opacity: 0.45;
        }
        .voice-chat__line {
            margin: 0;
            white-space: pre-wrap;
            overflow-wrap: anywhere;
        }
        .voice-chat__line + .voice-chat__line {
            margin-top: 0.34rem;
        }
        .voice-chat__name {
            font-weight: 600;
            opacity: 0.9;
        }
        .voice-chat__name--self {
            opacity: 1;
        }
        .voice-chat__text {
            opacity: 0.85;
        }
        .voice-chat__form {
            display: grid;
            grid-template-columns: minmax(0, 1fr) auto;
            gap: 0;
            align-items: stretch;
        }
        .voice-chat__input {
            width: 100%;
            border: none;
            border-right: 1px solid currentColor;
            margin: 0;
            min-height: 40px;
            text-align: left;
            padding: 0.6rem 0.7rem;
            font-size: 0.72rem;
            opacity: 0.85;
        }
        .voice-chat__input:focus {
            opacity: 1;
        }
        .voice-chat__send {
            min-width: 72px;
            min-height: 40px;
            margin: 0;
            border: none;
            padding: 0.6rem 0.9rem;
            font-size: 0.66rem;
            letter-spacing: 0.08em;
        }
        .voice-chat__send:hover {
            background: currentColor;
        }
        [data-theme="dark"] .voice-chat {
            background: rgba(255, 255, 255, 0.03);
            opacity: 0.9;
        }
        [data-theme="dark"] .voice-chat__log {
            background: rgba(255, 255, 255, 0.015);
            border-bottom-color: rgba(255, 255, 255, 0.3);
        }
        [data-theme="dark"] .voice-chat__empty {
            opacity: 0.58;
        }
        [data-theme="dark"] .voice-chat__name {
            opacity: 0.95;
        }
        [data-theme="dark"] .voice-chat__text {
            opacity: 0.9;
        }
        [data-theme="dark"] .voice-chat__input {
            background: rgba(255, 255, 255, 0.02);
            border-right-color: rgba(255, 255, 255, 0.26);
        }
        [data-theme="dark"] .voice-chat__input::placeholder {
            opacity: 1;
            color: rgba(236, 236, 236, 0.52);
        }
        [data-theme="dark"] .voice-chat__send:hover {
            background: rgba(255, 255, 255, 0.14);
            color: inherit;
        }
        .voice-status {
            font-size: 0.7rem;
            letter-spacing: 0.06em;
            opacity: 0.4;
            margin-top: 2rem;
            min-height: 1.2em;
        }
        /* In-room revamp */
        .voice-room[data-thechannel-state="inroom"] {
            --field-w: min(320px, 100%);
            max-width: min(1640px, 100%);
            padding: 1.2rem 1rem 1rem;
        }
        .voice-room[data-thechannel-state="inroom"] .voice-title {
            margin-bottom: 0.2rem;
        }
        .voice-room[data-thechannel-state="inroom"] .voice-subtitle {
            margin-bottom: 1rem;
        }
        .voice-panel--inroom {
            border: 1px solid currentColor;
            padding: 0.85rem;
            text-align: left;
            display: flex;
            flex-direction: column;
            gap: 0.7rem;
            position: relative;
            min-height: min(76vh, 820px);
            background:
                radial-gradient(circle at 12% 10%, rgba(0, 0, 0, 0.03), transparent 45%),
                radial-gradient(circle at 88% 88%, rgba(0, 0, 0, 0.04), transparent 48%),
                var(--channel-bg);
        }
        .voice-panel--inroom .voice-peers {
            margin: 0;
            border: 1px solid currentColor;
            padding: 0.48rem 0.62rem;
            background: rgba(0, 0, 0, 0.02);
        }
        .voice-panel--inroom .voice-quality {
            display: none;
        }
        .voice-panel--inroom .voice-share-status {
            text-align: left;
            font-size: 0.64rem;
            letter-spacing: 0.12em;
            opacity: 0.72;
        }
        .voice-panel--inroom .voice-share-status--active {
            opacity: 0.9;
        }
        .voice-main {
            display: grid;
            grid-template-columns: 215px minmax(0, 1fr);
            gap: 0.72rem;
            min-height: 0;
            flex: 1 1 auto;
            align-items: stretch;
        }
        .voice-workspace {
            position: relative;
            min-height: 0;
            display: flex;
            flex-direction: column;
            gap: 0.72rem;
            height: 100%;
            align-self: stretch;
        }
        .voice-roster--sidebar {
            position: relative;
            left: auto;
            top: auto;
            width: auto;
            height: 100%;
            border: 1px solid currentColor;
            min-height: 0;
            padding: 0.52rem 0.56rem;
            gap: 0.26rem;
            background: rgba(0, 0, 0, 0.02);
        }
        .voice-roster--sidebar.voice-roster--empty {
            opacity: 1;
        }
        .voice-stage--window {
            width: 100%;
            margin: 0;
            transform: none;
            transition: opacity 0.16s ease, max-height 0.16s ease, margin 0.16s ease;
            border: 0;
        }
        .voice-stage--window.voice-stage--visible {
            margin: 0;
        }
        .voice-stage--window .voice-stage__frame {
            min-height: min(46vh, 420px);
        }
        .voice-stage--window .voice-stage__overlay {
            position: absolute;
            left: 0.56rem;
            right: 0.56rem;
            top: 0.56rem;
            z-index: 4;
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 0.52rem;
            pointer-events: none;
        }
        .voice-stage--window .voice-stage__meta-main {
            flex: 1 1 auto;
            min-width: 0;
            background: rgba(249, 248, 244, 0.86);
            border: 1px solid rgba(0, 0, 0, 0.28);
            padding: 0.25rem 0.46rem;
            pointer-events: auto;
        }
        [data-theme="dark"] .voice-stage--window .voice-stage__meta-main {
            background: rgba(20, 20, 20, 0.74);
            border-color: rgba(255, 255, 255, 0.24);
        }
        .voice-stage--window .voice-stage__actions {
            pointer-events: auto;
        }
        .voice-stage--window .voice-stage__action {
            height: 26px;
            min-height: 26px;
            min-width: 26px;
            padding: 0 0.48rem;
            font-size: 0.54rem;
            opacity: 0.9;
        }
        .voice-stage--window.voice-stage--minimized {
            position: absolute;
            right: 0.64rem;
            bottom: 0.64rem;
            width: min(320px, 46%);
            z-index: 8;
            max-height: none;
            border: 1px solid currentColor;
            background: var(--channel-bg);
            box-shadow: 0 10px 20px rgba(0, 0, 0, 0.22);
        }
        .voice-stage--window.voice-stage--minimized .voice-stage__frame {
            min-height: 0;
            aspect-ratio: 16 / 10;
        }
        .voice-panel--inroom .voice-chat {
            width: 100%;
            margin: 0;
            min-height: 220px;
            display: flex;
            flex-direction: column;
            flex: 1 1 auto;
            background: rgba(0, 0, 0, 0.015);
        }
        [data-theme="dark"] .voice-panel--inroom .voice-chat {
            background: rgba(255, 255, 255, 0.04);
        }
        .voice-panel--inroom .voice-chat__log {
            flex: 1 1 auto;
            height: 200px;
        }
        .voice-dock {
            border: 1px solid currentColor;
            background: rgba(0, 0, 0, 0.02);
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 0.6rem;
            padding: 0.45rem 0.58rem;
        }
        .voice-dock__cluster {
            display: inline-flex;
            align-items: center;
            gap: 0.42rem;
        }
        .voice-icon-btn {
            width: 36px;
            height: 36px;
            min-width: 36px;
            min-height: 36px;
            border: 1px solid currentColor;
            background: transparent;
            color: inherit;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            padding: 0;
            cursor: pointer;
            opacity: 0.75;
            transition: opacity 0.15s ease, background 0.15s ease, color 0.15s ease;
        }
        .voice-icon-btn svg {
            width: 18px;
            height: 18px;
            display: block;
        }
        .voice-icon-btn:hover,
        .voice-icon-btn[aria-pressed="true"] {
            opacity: 0.98;
            background: var(--channel-fg);
            color: var(--channel-bg);
        }
        .voice-mini-btn--ptt {
            min-width: 112px;
        }
        .voice-mini-btn--share {
            min-width: 136px;
        }
        .voice-mini-btn--ptt-active {
            opacity: 0.95;
            background: var(--channel-fg);
            color: var(--channel-bg);
        }
        .voice-panel--inroom.voice-panel--no-share .voice-chat {
            min-height: 0;
            height: 100%;
        }
        .voice-panel--inroom.voice-panel--no-share .voice-workspace {
            gap: 0;
        }
        .voice-panel--inroom.voice-panel--no-share .voice-stage--window {
            display: none;
        }
        .voice-panel--inroom .voice-settings {
            top: auto;
            left: auto;
            right: 0.8rem;
            bottom: 4.2rem;
            width: min(19rem, 46vw);
            z-index: 14;
        }
        .voice-panel--inroom .voice-status {
            margin-top: 0.1rem;
            min-height: 1.1em;
            font-size: 0.62rem;
            letter-spacing: 0.08em;
            text-transform: uppercase;
            opacity: 0.5;
        }

        @media (prefers-reduced-motion: reduce) {
            .voice-device-controls {
                transition: none;
                transform: none;
            }
            .voice-settings {
                transition: none;
                transform: none;
            }
            .voice-stage {
                transition: none;
                transform: none;
            }
        }
        @media (max-width: 720px) {
            .voice-room[data-thechannel-state="inroom"] {
                padding: 0.8rem 0.35rem 0.65rem;
            }
            .voice-panel--inroom {
                min-height: auto;
                padding: 0.58rem;
            }
            .voice-main {
                grid-template-columns: 1fr;
                gap: 0.56rem;
            }
            .voice-roster--sidebar {
                order: 2;
                flex-direction: row;
                flex-wrap: wrap;
                align-items: center;
                gap: 0.3rem 0.6rem;
                max-height: none;
                pointer-events: auto;
            }
            .voice-workspace {
                order: 1;
            }
            .voice-stage--window .voice-stage__frame {
                min-height: 180px;
            }
            .voice-stage--window.voice-stage--minimized {
                width: min(66vw, 240px);
                right: 0.5rem;
                bottom: 0.5rem;
            }
            .voice-panel--inroom .voice-chat {
                min-height: 190px;
            }
            .voice-dock {
                flex-wrap: wrap;
                align-items: stretch;
                gap: 0.5rem;
            }
            .voice-dock__cluster {
                flex-wrap: wrap;
            }
            .voice-panel--inroom .voice-settings,
            .voice-settings {
                position: fixed;
                left: 0.8rem;
                right: 0.8rem;
                top: auto;
                bottom: 0.8rem;
                width: auto;
                max-width: none;
                max-height: min(62vh, 28rem);
                overflow-y: auto;
                transform: translateY(10px);
                padding: 0.8rem;
                z-index: 20;
            }
            .voice-settings--open {
                transform: translateY(0);
            }
        }
