/* Shared appearance system: CSS-only, two bounded layers, no animation loop. */
body { isolation: isolate; }
.portal-atmosphere { position: fixed; inset: 0; z-index: -1; pointer-events: none; overflow: hidden; opacity: 0; transition: opacity 240ms ease; }
.portal-atmosphere::before, .portal-atmosphere::after { content: ''; position: absolute; width: min(72vw, 960px); height: min(72vw, 960px); border-radius: 50%; background: radial-gradient(circle, color-mix(in srgb, var(--primary-color) 13%, transparent), transparent 68%); }
.portal-atmosphere::before { left: -22%; top: -42%; }
.portal-atmosphere::after { right: -28%; bottom: -55%; }
body:is(.theme-aurora, .theme-obsidian_luxe, .theme-aussie_outback) .portal-atmosphere { opacity: 1; }
body.theme-aurora .portal-atmosphere::after { background: radial-gradient(circle, #8b5cf622, transparent 68%); }
body.theme-aurora .portal-atmosphere::before { animation: portal-atmosphere-drift 36s ease-in-out infinite alternate; }
body.theme-aurora .portal-atmosphere::after { animation: portal-atmosphere-drift 44s ease-in-out infinite alternate-reverse; }
@keyframes portal-atmosphere-drift { to { transform: translate3d(8%, 10%, 0) scale(1.08); } }
body.theme-effects-disabled .portal-atmosphere { display: none; }
body.portal-effects-paused .portal-atmosphere::before, body.portal-effects-paused .portal-atmosphere::after { animation-play-state: paused; }
body:not(.dark-mode) .portal-atmosphere { opacity: .5; }
body:not(.dark-mode):not(.theme-aurora):not(.theme-obsidian_luxe):not(.theme-aussie_outback) .portal-atmosphere { opacity: 0; }
:is(.theme-choice, .theme-card, .admin-theme-preview) { transition: border-color 180ms ease, box-shadow 180ms ease, transform 180ms ease; }
:is(.theme-choice, .theme-card):hover { transform: translateY(-2px); }
:is(.theme-choice, .theme-card):focus-visible { outline: 2px solid var(--primary-color); outline-offset: 3px; }
/* Admin uses the same palette as the customer workspace. */
body.admin-console {
    --bg-0: var(--dark-bg, #0b1017); --bg-1: var(--card-dark-bg, #121923);
    --bg-2: color-mix(in srgb, var(--card-dark-bg, #121923) 92%, white);
    --bg-inset: color-mix(in srgb, var(--dark-bg, #0b1017) 92%, black);
    --content-bg: var(--bg-0); --card-bg: var(--bg-1); --input-bg-dark: var(--bg-inset);
    --text-color: var(--text-1); --muted-text-color: var(--text-2);
    --text-1: var(--dark-text, #eef3f8);
    --text-2: color-mix(in srgb, var(--dark-text, #eef3f8) 72%, var(--dark-bg, #0b1017));
    --text-3: color-mix(in srgb, var(--dark-text, #eef3f8) 58%, var(--dark-bg, #0b1017));
    --glass-bg: color-mix(in srgb, var(--dark-bg, #0b1017) 91%, transparent);
    --glass-bg-strong: color-mix(in srgb, var(--dark-bg, #0b1017) 97%, transparent);
    --admin-shadow-sm: 0 1px 2px #00000012, 0 8px 24px #0000000a;
    background: var(--bg-0); color: var(--text-1);
}
body.admin-console :is(.admin-panel, .admin-card) { border-radius: 16px; }
body.admin-console :is(.nav-item a, .admin-button, .btn) { transition: background-color 160ms ease, color 160ms ease, border-color 160ms ease; }
@media (prefers-reduced-motion: reduce) {
    .portal-atmosphere::before, .portal-atmosphere::after { animation: none !important; }
    :is(.portal-atmosphere, .theme-choice, .theme-card, .admin-theme-preview) { transition: none !important; transform: none !important; }
}
