/* A calmer, readable shell. All themes share semantic tokens. */
:root { --bg-rail: #16171d; --bg-sidebar: #21232c; --bg-main: #2a2d37; --bg-panel: #1c1e26; --bg-input: #343844; --bg-floating: #161820; --text: #e0e3ed; --text-muted: #a5adbe; --channel: #a0a8b9; --interactive: #b9c1d1; --brand: #8277fa; --brand-hover: #6a60d7; --green: #52c9a0; --red: #ff7987; --divider: #ffffff12; --chat-size: 16px; }
:root[data-theme=midnight] { --bg-rail:#0e1322; --bg-sidebar:#151d30; --bg-main:#1b253a; --bg-panel:#11192b; --bg-input:#26324a; --bg-floating:#0d1424; --brand:#829bf9; --brand-hover:#657fe4; }
:root[data-theme=contrast] { --bg-rail:#090909; --bg-sidebar:#141414; --bg-main:#1c1c1c; --bg-panel:#0d0d0d; --bg-input:#303030; --bg-floating:#080808; --text:#fff; --text-muted:#c4c4c4; --channel:#d0d0d0; --interactive:#e5e5e5; --divider:#ffffff44; --brand:#a39afa; }
button, input, select, textarea { -webkit-tap-highlight-color: transparent; }
button:focus-visible, [tabindex]:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 2px solid #b8b1ff; outline-offset: 3px; }
button[hidden] { display: none !important; }
#app { height: 100dvh; grid-template-columns: 72px 252px minmax(0, 1fr) 232px; }
#app.hide-members { grid-template-columns: 72px 252px minmax(0, 1fr); }
#main-header, .server-name { height: 60px; box-shadow: none; border-bottom: 1px solid var(--divider); }
#main-header { padding-inline: 22px 16px; }
#sidebar { border-right: 1px solid var(--divider); }
.channels { padding: 12px 12px 16px; }
.channel { min-height: 38px; border-radius: 7px; gap: 9px; }
.channel.active { background: #8277fa24; color: #e2ddff; }
.channel.active .icon { color: #b1a9ff; }
.channel-gear { width: 24px; height: 24px; min-width: 24px; flex-shrink: 0; align-self: center; place-items: center; padding: 0; margin: 0; line-height: 1; }
.channel:focus-within .channel-gear { display: grid; }
#user-panel { height: 68px; border-top: 1px solid var(--divider); }
.icon-btn { border-radius: 8px; }
#members { border-left: 1px solid var(--divider); padding-top: 10px; }
.member { border-radius: 8px; min-height: 46px; }
.member.offline { opacity: .65; }
.welcome { padding: 32px 24px 16px; }
.welcome-icon { background: #8277fa20; color: #b6afff; border-radius: 22px; width: 58px; height: 58px; }
.welcome h2 { font-size: 28px; letter-spacing: -.025em; }
.msg { padding-left: 24px; gap: 14px; }
.msg-text { font-size: var(--chat-size); line-height: 1.5; }
:root[data-density=compact] .msg { margin-top: 8px; grid-template-columns: 28px minmax(0,1fr); gap: 10px; }
:root[data-density=compact] .msg.continued { margin-top: 0; }
:root[data-density=compact] .msg .avatar { width: 28px; height: 28px; font-size: 12px; }
#composer { padding-inline: 20px; }
#chat-form { border: 1px solid var(--divider); border-radius: 12px; box-shadow: 0 4px 20px #00000010; }
#chat-form:focus-within { border-color: #8277fa88; }
#notify-banner { background: #8277fa13; color: var(--interactive); padding: 9px 18px; font-size: 12px; gap: 8px; border-bottom: 1px solid var(--divider); }
#notify-banner button { border: 0; background: #8277fa22; color: #c9c3ff; font-size: 12px; padding: 5px 8px; white-space: nowrap; }
.call-return { display: flex; gap: 6px; align-items: center; border: 1px solid #52c9a044; background: #52c9a014; color: var(--green); border-radius: 8px; padding: 6px 10px; font-size: 12px; }
.mobile-only { display: none; }
.settings-overlay { position: fixed; inset: 0; z-index: 25; background: #11131ce8; display: grid; place-items: center; padding: 24px; backdrop-filter: blur(8px); }
.settings-shell { width: min(1160px,100%); height: min(840px,100%); display: grid; grid-template-columns: 260px minmax(0,1fr); background: var(--bg-main); border: 1px solid var(--divider); border-radius: 18px; overflow: hidden; box-shadow: 0 24px 100px #0008; }
.settings-nav { display: flex; flex-direction: column; overflow-y: auto; padding: 28px 18px 18px; background: var(--bg-sidebar); border-right: 1px solid var(--divider); }
.settings-brand { display: flex; gap: 10px; align-items: center; color: #b6afff; padding: 0 10px; }
.settings-brand div { display: grid; gap: 2px; }
.settings-brand strong { color: var(--text-strong); font-size: 17px; }
.settings-brand div span { font-size: 9px; letter-spacing: .15em; color: var(--text-muted); }
.settings-nav h2 { font-size: 14px; margin: 30px 10px 12px; }
#settings-search { width: 100%; border: 1px solid var(--divider); padding: 10px; border-radius: 7px; font: inherit; font-size: 12px; color: var(--text); background: var(--bg-panel); }
.settings-nav-label { font-size: 10px; font-weight: 700; letter-spacing: .08em; color: var(--text-muted); margin: 24px 10px 8px; }
.settings-nav nav { display: flex; flex-direction: column; gap: 4px; }
.settings-nav button { display: flex; align-items: center; gap: 10px; width: 100%; padding: 11px 10px; border: 0; border-radius: 7px; background: transparent; color: var(--interactive); text-align: left; font-size: 13px; }
.settings-nav button:hover { background: var(--hover); color: var(--text-strong); }
.settings-nav button.active { background: #8277fa22; color: #c6beff; }
.settings-nav-bottom { display: grid; gap: 6px; margin-top: auto; padding-top: 28px; }
.settings-nav-bottom button { justify-content: space-between; }
.settings-nav-bottom #btn-logout { color: var(--red); }
.settings-nav-bottom > span { font-size: 10px; color: var(--text-muted); padding: 8px 10px 0; }
.settings-main { position: relative; display: flex; flex-direction: column; min-width: 0; min-height: 0; }
.settings-exit { position: absolute; right: 20px; top: 22px; z-index: 1; background: transparent; border: 0; color: var(--text-muted); display: grid; place-items: center; gap: 4px; }
.settings-exit > span { display: grid; place-items: center; width: 32px; height: 32px; border: 1px solid var(--divider); border-radius: 50%; }
.settings-exit small { font-size: 9px; }
.card.settings-content { width: 100%; max-height: none; min-height: 0; overflow: auto; flex: 1; border-radius: 0; padding: 44px clamp(24px,5vw,66px); padding-right: clamp(64px,7vw,88px); box-shadow: none; gap: 0; animation: none; }
.settings-content section { display: flex; flex-direction: column; gap: 22px; }
.eyebrow { font-size: 10px; font-weight: 700; letter-spacing: .13em; color: #b2a9ff; margin-bottom: -10px; }
.settings-content h1 { margin: 0; font-size: 30px; letter-spacing: -.035em; color: var(--text-strong); line-height: 1.2; }
.settings-content p.section-description { font-size: 14px; margin-top: -12px; line-height: 1.6; }
.setting-group { display: flex; flex-direction: column; gap: 18px; padding: 22px; background: var(--bg-sidebar); border: 1px solid var(--divider); border-radius: 12px; }
.setting-group h3 { margin: 0; color: var(--text-strong); font-size: 15px; font-weight: 600; }
.settings-content label { text-transform: none; font-size: 12px; letter-spacing: 0; }
.settings-content select, .settings-content input:not([type=checkbox]):not([type=range]):not([type=hidden]) { border: 1px solid var(--divider); border-radius: 7px; background: var(--bg-panel); font-size: 14px; width: 100%; }
.settings-content input[type=color] { width: 90px !important; }
.settings-content select { width: 100%; min-width: 0; }
.settings-content .hint { font-size: 12px; line-height: 1.6; }
.settings-content .setting-switch { display: flex; flex-direction: row; align-items: center; justify-content: space-between; gap: 22px; font-weight: 500; font-size: 14px; color: var(--text); }
.setting-switch > span { display: grid; gap: 5px; }
.setting-switch small { color: var(--text-muted); font-weight: 400; font-size: 12px; line-height: 1.5; }
.setting-switch input[type=checkbox] { width: 34px; height: 20px; flex-shrink: 0; appearance: none; background: #626a7b; border: 2px solid transparent; border-radius: 15px; cursor: pointer; position: relative; }
.setting-switch input::after { content: ''; position: absolute; width: 12px; height: 12px; background: white; border-radius: 50%; top: 2px; left: 2px; }
.setting-switch input:checked { background: var(--brand); }
.setting-switch input:checked::after { left: 16px; }
.settings-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.settings-content button { border-radius: 7px; }
.settings-content output { color: #bdb5ff; font-weight: 500; }
.settings-callout { display: flex; align-items: flex-start; gap: 14px; padding: 18px; background: #8277fa10; border: 1px solid #8277fa30; border-radius: 12px; }
.settings-callout > span { color: #b6afff; }
.settings-callout strong { font-size: 13px; }
.settings-callout p { font-size: 12px; margin-top: 6px; line-height: 1.6; }
.profile-preview { border: 1px solid var(--divider); border-radius: 12px; overflow: hidden; background: var(--bg-panel); }
.profile-cover { height: 80px; background: radial-gradient(ellipse at 85% 10%,#8c70d777,transparent 65%),linear-gradient(120deg,#443c78,#252e52); }
.profile-preview-body { padding: 0 22px 22px; display: flex; gap: 14px; align-items: center; }
.profile-preview-body .avatar { margin-top: -20px; width: 64px; height: 64px; border: 5px solid var(--bg-panel); font-size: 23px; }
.profile-preview-body > div:last-child { display: grid; padding-top: 12px; gap: 5px; }
.profile-preview-body strong { font-size: 18px; }.profile-preview-body span { font-size: 12px; color: var(--text-muted); }
.avatar img { display: block; width: 100%; height: 100%; border-radius: inherit; object-fit: cover; }
.profile-photo-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.theme-preview { background: var(--bg-main); border: 1px solid var(--divider); border-radius: 10px; display: flex; overflow: hidden; gap: 18px; }
.theme-preview-nav { background: var(--bg-panel); padding: 20px 12px; display: grid; gap: 10px; }
.theme-preview-nav i { display: block; width: 22px; height: 22px; border-radius: 8px; background: var(--brand); opacity: .6; }
.theme-preview > div:last-child { padding: 18px 12px 18px 0; display: grid; gap: 8px; }.theme-preview strong { font-size: 14px; }.theme-preview p { font-size: 12px; }.preview-tag { font-size: 9px; letter-spacing: .12em; color: var(--text-muted); }.preview-message { background: var(--bg-input); padding: 10px; border-radius: 8px; font-size: var(--chat-size); }
.shortcut-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; font-size: 12px; } kbd { padding: 5px 8px; border-radius: 5px; background: var(--bg-panel); border: 1px solid var(--divider); white-space: nowrap; font-size: 11px; }
.settings-footer { flex-shrink: 0; padding: 0 24px 16px; background: var(--bg-main); }
#settings-status { font-size: 12px; color: var(--text-muted); margin: 8px 0; }
#settings-savebar { display: flex; align-items: center; gap: 12px; padding: 12px; background: var(--bg-panel); border: 1px solid var(--divider); border-radius: 10px; box-shadow: 0 6px 20px #0002; }
#settings-savebar span { flex: 1; font-size: 12px; }#settings-savebar button { padding: 9px 12px; font-size: 12px; border-radius: 6px; border: 0; }#settings-discard { background: transparent; }#settings-save { margin: 0; white-space: nowrap; }
.camera-preview { width: 100%; max-height: 220px; background: #111; border-radius: 8px; transform: scaleX(-1); }
.diagnostic-peer { padding: 12px 0; border-bottom: 1px solid var(--divider); font-size: 12px; display: grid; gap: 6px; }.diagnostic-peer span { color: var(--text-muted); overflow-wrap: anywhere; }
#voice-view { background: var(--bg-rail); }
#stage { padding-top: 16px; gap: 8px; grid-template-columns: repeat(auto-fit,minmax(min(260px,100%),1fr)); }.tile { border-radius: 12px; }.tile.screen { border: 1px solid var(--divider); }#stage:has(.tile.focus) .tile.focus { height: calc(100dvh - 308px); }
.stream-health { position:absolute; left:10px; top:10px; padding:5px 9px; border-radius:6px; background:#151821d9; color:#c5ccdc; font-size:11px; max-width:80%; }.stream-health:empty { display:none; }.stream-health.warn { color:#ffd680; }.watch-overlay { background:radial-gradient(ellipse at 50% 20%,#51418b44,transparent 75%),var(--bg-panel); }.watch-overlay .paused-title { font-size:18px; }.watch-overlay .watch-btn { border-radius:8px; }
:root[data-stream-stats=false] .tile .stats { display:none; }
@media (prefers-reduced-motion: reduce) { *,*::before,*::after { animation:none !important; transition:none !important; scroll-behavior:auto !important; } }
:root[data-reduce-motion=true] * { animation:none !important; transition:none !important; scroll-behavior:auto !important; }
@media(max-width:1100px) { #app,#app.hide-members { grid-template-columns:64px 228px minmax(0,1fr); } #members { display:none; } #btn-members { display:grid; } #app.members-open #members { display:block; position:fixed; inset:60px 0 0 auto; width:260px; z-index:13; box-shadow:-10px 0 40px #0005; } .rail-item { width:64px; } }
@media(max-width:760px) { .settings-overlay { padding:0; }.settings-shell { height:100%; border-radius:0; border:0; grid-template-columns:190px minmax(0,1fr); }.settings-nav { padding:20px 10px; }.settings-nav button { font-size:12px; gap:7px; }.settings-nav button .ico { width:16px; }.card.settings-content { padding:32px 20px; padding-top:64px; }.settings-content h1 { font-size:26px; }.settings-grid { grid-template-columns:1fr; }.settings-exit { top:12px; right:14px; }.settings-exit small { display:none; }.setting-group { padding:16px; }.settings-footer { padding:0 14px 12px; }#settings-savebar { flex-wrap:wrap; gap:6px; }#settings-savebar span { flex-basis:100%; }.shortcut-row { flex-wrap:wrap; gap:8px; } }
@media(max-width:640px) { #app,#app.hide-members { display:flex; }#main { flex:1; width:100%; }#servers { display:none; }#sidebar { display:none; }#app.channels-open #sidebar { display:flex; position:fixed; inset:0 auto 0 0; width:min(300px,85vw); z-index:14; box-shadow:10px 0 40px #0006; }.mobile-only { display:grid; }#main-header { height:56px; padding:0 12px; }#header-title .title-sub { display:none; }#sidebar-backdrop { position:fixed; inset:0; border:0; background:#0007; z-index:12; }#app.members-open #members { top:56px; }.welcome { padding:24px 18px 12px; }.welcome h2 { font-size:24px; }.msg { padding-left:16px; padding-right:12px; column-gap:10px; grid-template-columns:32px minmax(0,1fr); }.msg .avatar { width:32px; height:32px; font-size:13px; }#composer { padding-inline:12px; padding-bottom:env(safe-area-inset-bottom); }#notify-banner { padding:8px 12px; flex-wrap:wrap; }#notify-banner span { flex:1 1 160px; }.call-return { padding:6px; }.call-return span:last-child { display:none; }.stage-toolbar { padding:12px; gap:8px; }.stage-title { display:none; }.stage-toolbar label { flex:1; }#stage { padding:0 10px 84px; }#stage-controls { gap:6px; bottom:12px; max-width:calc(100% - 16px); padding:7px; }.sc-btn { width:40px; height:40px; flex-shrink:0; }#stage:has(.tile.focus) .tile.focus { height:calc(100dvh - 310px); min-height:180px; }.tile-controls { opacity:1; }.tile .label { font-size:11px; bottom:48px; }.settings-shell { display:flex; flex-direction:column; }.settings-nav { flex-shrink:0; max-height:175px; padding:12px; border-right:0; border-bottom:1px solid var(--divider); overflow:visible; }.settings-brand,.settings-nav h2,.settings-nav-label,.settings-nav-bottom,.settings-nav #settings-search { display:none; }.settings-nav nav { flex-direction:row; overflow-x:auto; gap:6px; padding-right:42px; }.settings-nav nav button { width:auto; flex-shrink:0; padding:10px; font-size:12px; }.settings-nav nav button span { display:none; }.settings-main { flex:1; position:static; }.settings-exit { position:absolute; top:13px; right:6px; background:var(--bg-sidebar); }.card.settings-content { padding:24px 16px; }.settings-content section { gap:18px; }.settings-content h1 { font-size:25px; }.settings-footer { padding-bottom:max(12px,env(safe-area-inset-bottom)); }.profile-cover { height:64px; }.settings-content .mic-test { flex-wrap:wrap; }.mic-meter { min-width:100px; } }
