/* Alpine.js: ukrywa elementy przed inicjalizacją (zastępuje style="display: none;" + x-show) */
[x-cloak] { display: none !important; }

/* Tło: gradient na html::before (--bg-a / --bg-b / --bg-c). Body musi być przezroczyste, żeby zmiana presetu była widoczna. */
.dark body {
    background-color: transparent;
    background-image: none;
}

/* Klasy do animacji pojawiania się elementów */
.reveal {
    opacity: 0;
    transform: translateY(30px);
    transition: all 1s ease-out;
}

.reveal.active {
    opacity: 1;
    transform: translateY(0);
}

/* Opóźnienia animacji - przydatne dla elementów w grupie */
.delay-100 { transition-delay: 100ms; }
.delay-200 { transition-delay: 200ms; }
.delay-300 { transition-delay: 300ms; }
.delay-500 { transition-delay: 500ms; }

/* Dynamic accent color (color_preset) */
:root {
    --accent: #D4AF37;
    --accent-contrast: #121212;
    --bg-a: #0b0b0f;
    --bg-b: #121212;
    --bg-c: rgba(212, 175, 55, 0.12);
    --bg-texture-opacity: 0.06;
    --font-sans: Inter, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
    --font-serif: "Playfair Display", ui-serif, Georgia, serif;

    /* Surfaces used by beauty theme (bg-sattva-*) */
    --surface-bg: transparent;
    --surface-accent: transparent;
    --surface-card: rgba(255, 255, 255, 0.06);

    /* Beauty text colors (for dark styles like smoky) */
    --beauty-text: #2b2b2b;
    --beauty-text-muted: rgba(43, 43, 43, 0.8);
    --beauty-white: #ffffff;
}

/*
 * Panel admin.html: przed uruchomieniem JS `DFOPS_applyThemeStyling(..., 'admin')`
 * domyślne :root ma ciemny gradient (strony publiczne). Klasa na <body> + :has()
 * daje od pierwszego paintu te same jasne tokeny co admin-shell w themeStyling.js.
 */
html:has(body.dfops-admin-app) {
    --bg-a: #f9fafb;
    --bg-b: #f3f4f6;
    --bg-c: transparent;
    --bg-texture-opacity: 0;
}

::selection {
    background: var(--accent);
    color: var(--accent-contrast);
}

body {
    font-family: var(--font-sans);
}

.font-sans {
    font-family: var(--font-sans) !important;
}

.font-serif {
    font-family: var(--font-serif) !important;
}

html::before {
    content: "";
    position: fixed;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    background:
        radial-gradient(900px 600px at 20% 10%, var(--bg-c), transparent 60%),
        radial-gradient(800px 500px at 80% 20%, color-mix(in oklab, var(--accent) 18%, transparent), transparent 55%),
        linear-gradient(180deg, var(--bg-a), var(--bg-b));
    transform: translateZ(0);
}

html::after {
    content: "";
    position: fixed;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    opacity: var(--bg-texture-opacity);
    background-image:
        repeating-linear-gradient(0deg, rgba(255,255,255,0.015) 0 1px, transparent 1px 3px),
        repeating-linear-gradient(90deg, rgba(0,0,0,0.02) 0 1px, transparent 1px 4px);
    mix-blend-mode: overlay;
}

/* html: gradient layer; body: dynamic chrome via --bg-main / --text-main (themeStyling.js) */
html {
    background-color: transparent !important;
}
body {
    background-color: transparent;
    color: var(--text-main, inherit);
}

/* Consultant theme overrides */
.text-brand-gold { color: var(--accent) !important; }
.bg-brand-gold { background-color: var(--accent) !important; }
.border-brand-gold { border-color: var(--accent) !important; }
.selection\:bg-brand-gold::selection { background: var(--accent) !important; }
.selection\:text-brand-dark::selection { color: var(--accent-contrast) !important; }

/* Beauty theme overrides */
.text-sattva-brand { color: var(--accent) !important; }
.bg-sattva-brand { background-color: var(--accent) !important; }
.border-sattva-brand { border-color: var(--accent) !important; }
.border-sattva-brand\/10 { border-color: color-mix(in srgb, var(--accent) 10%, transparent) !important; }
.ring-sattva-brand\/20 { --tw-ring-color: color-mix(in srgb, var(--accent) 20%, transparent) !important; }
.border-sattva-text\/20 { border-color: color-mix(in oklab, var(--beauty-text) 20%, transparent) !important; }

/* Beauty backgrounds become dynamic via surfaces */
.bg-sattva-bg { background-color: var(--surface-bg) !important; }
.bg-sattva-accent { background-color: var(--surface-accent) !important; }
.bg-sattva-white { background-color: var(--surface-card) !important; }
.bg-sattva-accent\/95 { background-color: color-mix(in oklab, var(--surface-accent) 95%, transparent) !important; }

/* Beauty text becomes dynamic for dark backgrounds */
.text-sattva-text { color: var(--beauty-text) !important; }
.text-sattva-white { color: var(--beauty-white) !important; }
.text-sattva-text\/90 { color: color-mix(in oklab, var(--beauty-text) 90%, transparent) !important; }
.text-sattva-text\/80 { color: color-mix(in oklab, var(--beauty-text) 80%, transparent) !important; }
.text-sattva-text\/70 { color: color-mix(in oklab, var(--beauty-text) 70%, transparent) !important; }
.text-sattva-text\/60 { color: color-mix(in oklab, var(--beauty-text) 60%, transparent) !important; }
.hover\:bg-sattva-bg\/50:hover { background-color: color-mix(in oklab, var(--surface-bg) 50%, transparent) !important; }
.hover\:bg-sattva-text\/5:hover { background-color: color-mix(in oklab, var(--beauty-text) 5%, transparent) !important; }

/* Consultant readability profiles (public only) */
html[data-dfops-scope="public"][data-theme="consultant"][data-bg-style="smoky"] .bg-zinc-50,
html[data-dfops-scope="public"][data-theme="consultant"][data-bg-style="smoky"] .bg-white,
html[data-dfops-scope="public"][data-theme="consultant"][data-bg-style="smoky"] .dark\:bg-\[\#0f0f0f\] {
    background-color: rgba(12, 12, 16, 0.72) !important;
}

html[data-dfops-scope="public"][data-theme="consultant"][data-bg-style="smoky"] .text-gray-900,
html[data-dfops-scope="public"][data-theme="consultant"][data-bg-style="smoky"] .text-gray-600,
html[data-dfops-scope="public"][data-theme="consultant"][data-bg-style="smoky"] .text-gray-500 {
    color: #e5e7eb !important;
}

html[data-dfops-scope="public"][data-theme="consultant"][data-bg-style="smoky"] .border-gray-100 {
    border-color: rgba(255, 255, 255, 0.15) !important;
}

html[data-dfops-scope="public"][data-theme="consultant"][data-bg-style="clean"] .bg-zinc-50,
html[data-dfops-scope="public"][data-theme="consultant"][data-bg-style="clean"] .bg-white {
    background-color: rgba(255, 255, 255, 0.92) !important;
}

/* Beauty readability profiles (public only) */
html[data-dfops-scope="public"][data-theme="beauty"][data-bg-style="smoky"] .text-gray-300,
html[data-dfops-scope="public"][data-theme="beauty"][data-bg-style="smoky"] .text-gray-400 {
    color: #d1d5db !important;
}

html[data-dfops-scope="public"][data-theme="beauty"][data-bg-style="smoky"] .bg-\[\#2b2b2b\] {
    background-color: rgba(12, 12, 16, 0.9) !important;
}

html[data-dfops-scope="public"][data-theme="beauty"][data-bg-style="soft"] .bg-sattva-white {
    box-shadow: 0 12px 36px rgba(0, 0, 0, 0.08) !important;
}

/* Admin: ukryty pasek przewijania przy overflow-x-auto */
.scrollbar-hide {
    -ms-overflow-style: none;
    scrollbar-width: none;
}
.scrollbar-hide::-webkit-scrollbar {
    display: none;
}

