/* Shared semantic recipes. Palette values are owned by app-theme-catalog.js. */
html[data-theme] { background:var(--bg-primary); color:var(--text-primary); font-family:var(--font); -webkit-font-smoothing:antialiased; }
html[data-theme] body { background:var(--bg-primary); color:var(--text-primary); }
html[data-theme][data-login-ui] body.auth-page { --auth-page-bg:var(--bg-primary); background:var(--bg-primary) !important; }
html[data-theme] :is(#appPreloader,.auth-container,.modal-content,.settings-panes,.chat-input,.settings-card,.context-menu,.dropdown-menu) { background:var(--bg-secondary); color:var(--text-primary); border-color:var(--border-color); }
html[data-theme] :is(input:not([type=checkbox]):not([type=radio]):not([type=range]),textarea,select) { background-color:var(--bg-primary); color:var(--text-primary); border-color:var(--control-border); border-radius:12px; font-family:var(--font); }
html[data-theme] :is(input,textarea)::placeholder { color:var(--text-muted); opacity:1; }
html[data-theme] :is(input[type=checkbox],input[type=radio],input[type=range]) { accent-color:var(--accent-color); }
html[data-theme] :is(button.primary,button[type=submit],.primary-button,#sendBtn) { background-color:var(--accent-color); color:var(--on-primary); border-radius:8px; box-shadow:none; }
html[data-theme] :is(button.primary,button[type=submit],.primary-button,#sendBtn):hover:not(:disabled) { background-color:var(--accent-hover); color:var(--on-primary); }
html[data-theme] button.secondary { background:var(--bg-hover); color:var(--text-primary); border-radius:8px; box-shadow:none; }
html[data-theme] button.secondary:hover:not(:disabled) { background:var(--selected-bg); color:var(--selected-text); }
html[data-theme] button.danger { background:var(--danger-bg); color:var(--danger); }
html[data-theme] :is(button.icon-btn,.friend-menu-btn,.group-header-dropdown,.group-activity-toggle) { background:transparent; color:var(--text-muted); border-radius:8px; box-shadow:none; }
html[data-theme] :is(button.icon-btn,.friend-menu-btn,.group-header-dropdown,.group-activity-toggle):hover:not(:disabled) { background:var(--bg-hover); color:var(--text-primary); }
html[data-theme] :is(button,a,input,textarea,select,[role=button],[role=tab],[tabindex="0"]):focus-visible { outline:2px solid var(--accent-color); outline-offset:3px; }
html[data-theme] :is(button,input,textarea,select):disabled,html[data-theme] button[aria-disabled=true] { cursor:not-allowed; opacity:.55; box-shadow:none; transform:none; }
html[data-theme] :is(.sidebar,.servers-sidebar,.channels-sidebar,.dm-sidebar,.conversation-sidebar,.call-sidebar,.sidebar-col-left,.sidebar-footer,.settings-nav,.activity-active-now,.channel-member-sidebar) { background-color:var(--bg-sidebar); color:var(--text-primary); border-color:var(--border-color); }
html[data-theme] :is(.call-header,.call-controls,.stage-bar,#stage-bar,.member-panel,.profile-panel,.sidebar-col-right,.chat-header,.friends-header) { background-color:var(--bg-secondary); color:var(--text-primary); border-color:var(--border-color); }
html[data-theme] :is(.sidebar-label,.group-header-name) { color:var(--text-primary); font-size:15px; font-weight:600; text-shadow:none; }
html[data-theme] .group-header:not(.has-badge)::after { background:none; }
html[data-theme] :is(.group-item,.dashboard-page-btn,.dm-home-btn,.add-server-btn,.explore-btn) { box-shadow:none; color:var(--text-muted); background:transparent; }
html[data-theme] :is(.group-item,.dashboard-page-btn):hover { transform:none; background:var(--bg-hover); }
html[data-theme] :is(.dm-home-btn,.dashboard-page-btn.active) { background:var(--selected-bg); color:var(--selected-text); border-radius:16px; }
html[data-theme] .add-server-btn { background:var(--accent-color); color:var(--on-primary); }
html[data-theme] .group-item.active .group-avatar { box-shadow:0 0 0 2px var(--bg-sidebar),0 0 0 4px var(--accent-color); }
html[data-theme] .dashboard-page-btn .group-avatar { color:inherit; background:transparent; box-shadow:none; }
html[data-theme] :is(.sidebar-icon,.sidebar-rail-action,.dashboard-page-btn) svg { color:inherit; }
html[data-theme] .icon-svg { color:inherit; }
html[data-theme] :is(img.icon-monochrome,img.ui-icon) { filter:var(--icon-filter); }
html[data-theme] :is(button.primary,button[type=submit],.primary-button,.add-server-btn) :is(img.icon-monochrome,img.ui-icon) { filter:var(--primary-icon-filter); }
html[data-theme] .message.own :is(img.icon-monochrome,img.ui-icon) { filter:var(--bubble-icon-filter); }
html[data-theme] :is(.channel-item,.settings-nav-item,.settings-nav button.settings-nav-item,.friends-tab) { font-size:14px; font-weight:500; letter-spacing:0; }
html[data-theme] .settings-nav .settings-nav-item { border-radius:8px; background:transparent; color:var(--text-muted); }
html[data-theme] .settings-nav .settings-nav-item:hover { background:var(--bg-hover); color:var(--text-primary); }
html[data-theme] .settings-nav .settings-nav-item.active { background:var(--selected-bg); color:var(--selected-text); border-left-color:var(--accent-color); }
html[data-theme] .settings-nav-icon { stroke-width:1.7; }
html[data-theme] :is(.settings-pane h3,.chat-header h3) { color:var(--text-primary); font-size:20px; line-height:1.25; font-weight:600; }
html[data-theme] :is(.voice-field-help,.voice-setting-switch small,.settings-profile-media-hint,.voice-meter-state,.desktop-settings-note,.chat-setting-help) { color:var(--text-muted); font-size:12px; line-height:1.6; }
html[data-theme] :is(.voice-settings-card,.desktop-settings-card) { background:var(--bg-primary); border:1px solid var(--border-color); border-radius:12px; box-shadow:none; }
html[data-theme] .voice-setting-switch i { background:var(--control-border); }
html[data-theme] .voice-setting-switch input:checked + i { background:var(--accent-color); }
html[data-theme] .voice-setting-switch input:focus-visible + i { outline:2px solid var(--accent-color); outline-offset:3px; }
html[data-theme] .voice-setting-switch input:disabled + i { opacity:.5; cursor:not-allowed; }
html[data-theme] :is(.voice-settings-saved,.desktop-settings-state) { color:var(--clock-color); background:color-mix(in srgb,var(--clock-color) 9%,var(--bg-secondary)); border-color:transparent; font-size:12px; font-weight:500; border-radius:8px; }
html[data-theme] .chat-messages { background-image:none; background-color:var(--bg-chat); }
html[data-theme] .dashboard-home-panel { background-image:none; background-color:var(--bg-primary); }
html[data-theme] .message { --bubble-surface:var(--message-bg); --bubble-text:var(--message-text); --bubble-muted:var(--message-muted); --bubble-link:var(--message-link-color); --bubble-link-hover:var(--message-link-hover-color); }
html[data-theme] .message.own { --bubble-surface:var(--message-own-bg); --bubble-text:var(--message-own-text); --bubble-muted:var(--message-own-muted); --bubble-link:var(--message-own-link-color); --bubble-link-hover:var(--message-own-link-hover-color); }
/* The actual body/caption/card owns its paint; the positioning wrapper stays transparent. */
html[data-theme] .message :is(.message-text,.message-content,.message-text-caption) { color:var(--bubble-text); font-size:15px; line-height:1.55; }
html[data-theme] .message :is(.message-link,.message-content a:not(.mention),.message-text-caption a:not(.mention)) { color:var(--bubble-link) !important; text-decoration:underline; text-underline-offset:3px; }
html[data-theme] .message :is(.message-link,.message-content a:not(.mention),.message-text-caption a:not(.mention)):hover { color:var(--bubble-link-hover) !important; }
html[data-theme] .message-body .message-time { color:var(--bubble-muted) !important; font-size:12px; opacity:1; }
html[data-theme] .message-input-wrapper { background:var(--bg-primary); border-color:var(--control-border); border-radius:12px; }
html[data-theme] .message-input-wrapper:focus-within { border-color:var(--accent-color); box-shadow:0 0 0 2px color-mix(in srgb,var(--accent-color) 18%,transparent); }
html[data-theme] .friends-tab { background:transparent; color:var(--text-muted); border-radius:0; }
html[data-theme] .friends-tab:hover { background:transparent; color:var(--text-primary); }
html[data-theme] .friends-tab.active { color:var(--selected-text); border-bottom-color:var(--accent-color); }
html[data-theme] .friend-item { background:transparent; border:0; border-radius:12px; }
html[data-theme] .friend-item:hover { background:var(--bg-hover); }
html[data-theme] .friend-name { color:var(--text-primary); font-size:15px; font-weight:500; }
html[data-theme] .modal { background:var(--backdrop); backdrop-filter:blur(4px); }
html[data-theme] :is(.modal-content,.floating-profile-panel,.self-profile-popover,.own-activity-popover) { background:var(--bg-secondary); color:var(--text-primary); border-color:var(--border-color); border-radius:20px; box-shadow:var(--shadow-lg); }
html[data-theme] .theme-card { text-align:start; color:var(--text-primary); background:var(--bg-secondary); border:1px solid var(--border-color); border-radius:12px; padding:12px; }
html[data-theme] .theme-card.active { border:2px solid var(--accent-color); }
.theme-picker-glyph { width:24px; height:24px; display:block; flex:none; }
.theme-picker-icon { display:grid; place-items:center; width:38px; height:38px; border-radius:12px; background:var(--bg-primary); color:var(--text-primary); }
.theme-card .theme-preview,.admin-theme-card .admin-theme-preview { display:grid; place-items:center; }
.theme-card strong,.theme-card small { display:block; margin-top:8px; }
.theme-card small { margin-top:4px; font-size:12px; line-height:1.4; color:var(--text-muted); }
html[data-admin-theme] { --text-muted:var(--muted); --admin-sidebar-bg:var(--bg3); --admin-topbar-bg:var(--bg3); --admin-panel-bg:var(--bg2); --admin-panel-strong:var(--bg3); --admin-control-bg:var(--bg2); --admin-wallpaper:none; --admin-overlay:none; }
html[data-admin-theme] :is(.sidebar,.topbar) { background:var(--bg3); color:var(--text); }
html[data-admin-theme] :is(.main,.content) { background-color:var(--bg); color:var(--text); }
html[data-admin-theme] :is(.card,.stat-card,.res-card,.modal-box,.admin-theme-dialog) { background-color:var(--bg2); color:var(--text); border-color:var(--border); }
html[data-admin-theme] button:not(.danger):not(.nav-item):not(.admin-theme-card) { color:var(--text); }
html[data-admin-theme] .admin-theme-card { background:var(--bg2); color:var(--text); }
html[data-admin-theme] .admin-theme-card[aria-checked=true] { border-color:var(--accent); box-shadow:0 0 0 2px var(--accent); }
html[data-admin-theme] #adminThemeClose { background:var(--bg3); color:var(--text); border-color:var(--border); }
html[data-admin-theme] .admin-theme-card:hover { background:var(--bg-hover); border-color:var(--accent); }
html[data-admin-theme] .admin-theme-dialog-header { border-color:var(--border); }
