/* StudySprout public portal. Tailwind supplies utility classes; this file contains
 * scoped behaviour that must remain stable regardless of the active theme. */
body.studysprout-powerhouse-page {
    margin: 0;
    background: #f8fafc;
}
body.studysprout-powerhouse-page .site-header,
body.studysprout-powerhouse-page #masthead,
body.studysprout-powerhouse-page .site-footer,
body.studysprout-powerhouse-page #colophon,
body.studysprout-powerhouse-page .entry-header,
body.studysprout-powerhouse-page .page-header,
body.studysprout-powerhouse-page .wp-block-post-title {
    display: none !important;
}
body.studysprout-powerhouse-page .site,
body.studysprout-powerhouse-page .site-content,
body.studysprout-powerhouse-page .content-area,
body.studysprout-powerhouse-page .entry-content,
body.studysprout-powerhouse-page main,
body.studysprout-powerhouse-page article {
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
}

.ssp-portal {
    position: relative;
    min-height: 100vh;
    width: 100%;
    isolation: isolate;
    transition: background-color .5s ease, color .5s ease;
    font-family: Outfit, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
.ssp-portal *, .ssp-portal *::before, .ssp-portal *::after { box-sizing: border-box; }
.ssp-portal [x-cloak] { display: none !important; }
.ssp-portal .glass {
    background: rgba(255,255,255,.6);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid rgba(255,255,255,.8);
    box-shadow: 0 8px 32px rgba(31,38,135,.05);
    transition: all .3s ease;
    position: relative;
    overflow: hidden;
}
.ssp-portal.dark .glass {
    background: rgba(30,41,59,.7);
    border-color: rgba(255,255,255,.1);
    box-shadow: 0 8px 32px rgba(0,0,0,.3);
}
.ssp-portal .glass::before {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(600px circle at var(--mouse-x,-1000px) var(--mouse-y,-1000px),rgba(255,255,255,.4),transparent 40%);
    z-index: 0;
    pointer-events: none;
    opacity: 0;
    transition: opacity .3s ease;
}
.ssp-portal.dark .glass::before {
    background: radial-gradient(600px circle at var(--mouse-x,-1000px) var(--mouse-y,-1000px),rgba(255,255,255,.08),transparent 40%);
}
.ssp-portal .glass:hover::before { opacity: 1; }
.ssp-portal .glass > * { position: relative; z-index: 1; }
.ssp-portal .text-glow-sprout { text-shadow: 0 0 20px rgba(74,222,128,.4); }
.ssp-portal.dark .text-glow-sprout { text-shadow: 0 0 20px rgba(74,222,128,.7); }
.ssp-portal .text-glow-roflekt { text-shadow: 0 0 20px rgba(96,165,250,.4); }
.ssp-portal.dark .text-glow-roflekt { text-shadow: 0 0 20px rgba(96,165,250,.7); }
.ssp-portal .animation-delay-2000 { animation-delay: 2s; }
.ssp-portal .animation-delay-4000 { animation-delay: 4s; }
.ssp-portal input, .ssp-portal button, .ssp-portal textarea, .ssp-portal select { font: inherit; }
.ssp-portal button, .ssp-portal a { -webkit-tap-highlight-color: transparent; }
.ssp-portal button:focus-visible, .ssp-portal a:focus-visible, .ssp-portal input:focus-visible {
    outline: 3px solid rgba(34,197,94,.35);
    outline-offset: 3px;
}

.ssp-portal-secure-checkout {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 15px 16px;
    border-radius: 16px;
    border: 1px solid #dbe4ee;
    background: rgba(248,250,252,.92);
    color: #334155;
}
.ssp-portal.dark .ssp-portal-secure-checkout {
    border-color: rgba(255,255,255,.12);
    background: rgba(15,23,42,.7);
    color: #e2e8f0;
}
.ssp-portal-secure-checkout > i { font-size: 34px; color: #635bff; }
.ssp-portal-secure-checkout strong, .ssp-portal-secure-checkout span { display: block; }
.ssp-portal-secure-checkout span { margin-top: 3px; font-size: 12px; opacity: .72; }

.ssp-portal-notice {
    position: fixed;
    top: 18px;
    left: 50%;
    z-index: 220;
    width: min(92vw, 620px);
    transform: translateX(-50%);
    display: grid;
    grid-template-columns: 30px minmax(0,1fr) 34px;
    align-items: center;
    gap: 10px;
    padding: 12px 14px;
    border: 1px solid #bfdbfe;
    border-radius: 16px;
    background: rgba(239,246,255,.97);
    color: #1e3a5f;
    box-shadow: 0 18px 55px rgba(15,23,42,.18);
}
.ssp-portal-notice--success { border-color: #bbf7d0; background: rgba(240,253,244,.97); color: #14532d; }
.ssp-portal-notice > span { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 10px; background: rgba(255,255,255,.8); font-weight: 900; }
.ssp-portal-notice p { margin: 0; font-size: 14px; font-weight: 650; }
.ssp-portal-notice button { border: 0; background: transparent; color: currentColor; font-size: 25px; line-height: 1; cursor: pointer; }
.ssp-portal-notice.is-dismissed { display: none; }

@media (max-width: 782px) {
    body.admin-bar .ssp-portal nav { top: 46px; }
    .ssp-portal-notice { top: 10px; }
}
@media (min-width: 783px) {
    body.admin-bar .ssp-portal nav { top: 32px; }
}
@media (prefers-reduced-motion: reduce) {
    .ssp-portal *, .ssp-portal *::before, .ssp-portal *::after {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
        scroll-behavior: auto !important;
    }
}

/* Lightweight local replacement for AOS, avoiding an additional runtime CDN. */
.ssp-portal [data-aos] {
    opacity: 0;
    transition: opacity .7s ease, transform .7s cubic-bezier(.2,.7,.2,1);
    transition-delay: calc(var(--ssp-aos-delay, 0) * 1ms);
}
.ssp-portal [data-aos="fade-up"] { transform: translateY(22px); }
.ssp-portal [data-aos="fade-down"] { transform: translateY(-18px); }
.ssp-portal [data-aos="zoom-in"] { transform: scale(.96); }
.ssp-portal [data-aos][data-aos-delay="100"] { --ssp-aos-delay: 100; }
.ssp-portal [data-aos][data-aos-delay="200"] { --ssp-aos-delay: 200; }
.ssp-portal [data-aos][data-aos-delay="300"] { --ssp-aos-delay: 300; }
.ssp-portal [data-aos].ssp-aos-in { opacity: 1; transform: none; }

/* 1.2.2 colour-mode repair --------------------------------------------------
 * The locally compiled utility sheet was scoped to #ssp-study-portal, but its
 * generated dark variant nesting was not consistently evaluated by browsers.
 * These explicit variants keep every foreground/background pair accessible and
 * insulate buttons from opinionated WordPress theme button colours. */
.ssp-portal:not(.dark) {
    color: #0f172a !important;
    background: #f8fafc !important;
    color-scheme: light;
}
.ssp-portal.dark {
    color: #f8fafc !important;
    background: #0f172a !important;
    color-scheme: dark;
}
.ssp-portal .ssp-portal-login-button,
.ssp-portal .ssp-portal-secondary-cta {
    color: #1e293b !important;
}
.ssp-portal .ssp-portal-primary-cta {
    color: #fff !important;
}
.ssp-portal.dark .ssp-portal-login-button,
.ssp-portal.dark .ssp-portal-secondary-cta {
    color: #f8fafc !important;
}
.ssp-portal.dark .ssp-portal-primary-cta {
    color: #0f172a !important;
}
.ssp-portal .ssp-portal-theme-toggle {
    width: 44px;
    height: 44px;
    display: inline-grid;
    place-items: center;
    border: 1px solid rgba(148,163,184,.28);
    background: rgba(255,255,255,.72);
    color: #475569 !important;
    box-shadow: 0 6px 20px rgba(15,23,42,.08);
}
.ssp-portal.dark .ssp-portal-theme-toggle {
    border-color: rgba(255,255,255,.14);
    background: rgba(255,255,255,.08);
    color: #e2e8f0 !important;
}

/* Reliable equivalents for every dark utility used by the landing template. */
.ssp-portal.dark .dark\:text-white,
.ssp-portal.dark.dark\:text-white { color: #fff !important; }
.ssp-portal.dark .dark\:text-dark-900,
.ssp-portal.dark.dark\:text-dark-900 { color: #0f172a !important; }
.ssp-portal.dark .dark\:text-gray-200 { color: #e5e7eb !important; }
.ssp-portal.dark .dark\:text-gray-300 { color: #d1d5db !important; }
.ssp-portal.dark .dark\:text-gray-400 { color: #cbd5e1 !important; }
.ssp-portal.dark .dark\:text-gray-500 { color: #94a3b8 !important; }
.ssp-portal.dark .dark\:text-gray-600 { color: #94a3b8 !important; }
.ssp-portal.dark .dark\:text-sprout-400 { color: #4ade80 !important; }
.ssp-portal.dark .dark\:text-roflekt-400 { color: #60a5fa !important; }

.ssp-portal.dark .dark\:bg-dark-800 { background-color: #1e293b !important; }
.ssp-portal.dark .dark\:bg-dark-900,
.ssp-portal.dark.dark\:bg-dark-900 { background-color: #0f172a !important; }
.ssp-portal.dark .dark\:bg-dark-900\/50 { background-color: rgba(15,23,42,.5) !important; }
.ssp-portal.dark .dark\:bg-dark-900\/80 { background-color: rgba(15,23,42,.8) !important; }
.ssp-portal.dark .dark\:bg-slate-700 { background-color: #334155 !important; }
.ssp-portal.dark .dark\:bg-slate-800 { background-color: #1e293b !important; }
.ssp-portal.dark .dark\:bg-slate-900\/80 { background-color: rgba(15,23,42,.88) !important; }
.ssp-portal.dark .dark\:bg-black\/30 { background-color: rgba(0,0,0,.3) !important; }
.ssp-portal.dark .dark\:bg-white { background-color: #fff !important; }
.ssp-portal.dark .dark\:bg-white\/5 { background-color: rgba(255,255,255,.05) !important; }
.ssp-portal.dark .dark\:bg-white\/10 { background-color: rgba(255,255,255,.1) !important; }
.ssp-portal.dark .dark\:bg-transparent { background-color: transparent !important; }
.ssp-portal.dark .dark\:bg-sprout-400 { background-color: #4ade80 !important; }
.ssp-portal.dark .dark\:bg-sprout-500\/20 { background-color: rgba(34,197,94,.2) !important; }
.ssp-portal.dark .dark\:bg-sprout-600 { background-color: #16a34a !important; }
.ssp-portal.dark .dark\:bg-roflekt-400 { background-color: #60a5fa !important; }
.ssp-portal.dark .dark\:bg-roflekt-500\/20 { background-color: rgba(59,130,246,.2) !important; }
.ssp-portal.dark .dark\:bg-roflekt-600 { background-color: #2563eb !important; }
.ssp-portal.dark .dark\:bg-purple-600 { background-color: #9333ea !important; }
.ssp-portal.dark .dark\:bg-blue-300\/20 { background-color: rgba(147,197,253,.2) !important; }
.ssp-portal.dark .dark\:bg-pink-300\/20 { background-color: rgba(249,168,212,.2) !important; }
.ssp-portal.dark .dark\:bg-yellow-300\/20 { background-color: rgba(253,224,71,.2) !important; }

.ssp-portal.dark .dark\:border-transparent { border-color: transparent !important; }
.ssp-portal.dark .dark\:border-white\/5 { border-color: rgba(255,255,255,.05) !important; }
.ssp-portal.dark .dark\:border-white\/10 { border-color: rgba(255,255,255,.1) !important; }
.ssp-portal.dark .dark\:border-white\/20 { border-color: rgba(255,255,255,.2) !important; }
.ssp-portal.dark .dark\:border-sprout-400 { border-color: #4ade80 !important; }
.ssp-portal.dark .dark\:border-sprout-500\/30 { border-color: rgba(34,197,94,.3) !important; }
.ssp-portal.dark .dark\:border-roflekt-400 { border-color: #60a5fa !important; }
.ssp-portal.dark .dark\:opacity-10 { opacity: .1 !important; }
.ssp-portal.dark .dark\:opacity-20 { opacity: .2 !important; }
.ssp-portal.dark .dark\:mix-blend-screen { mix-blend-mode: screen !important; }
.ssp-portal.dark .dark\:shadow-none { box-shadow: none !important; }

.ssp-portal.dark .dark\:hover\:bg-white\/5:hover { background-color: rgba(255,255,255,.05) !important; }
.ssp-portal.dark .dark\:hover\:bg-white\/10:hover { background-color: rgba(255,255,255,.1) !important; }
.ssp-portal.dark .dark\:hover\:bg-white\/20:hover { background-color: rgba(255,255,255,.2) !important; }
.ssp-portal.dark .dark\:hover\:bg-red-500\/10:hover { background-color: rgba(239,68,68,.1) !important; }
.ssp-portal.dark .dark\:hover\:bg-sprout-300:hover { background-color: #86efac !important; }
.ssp-portal.dark .dark\:hover\:bg-roflekt-300:hover { background-color: #93c5fd !important; }
.ssp-portal.dark .dark\:hover\:text-white:hover { color: #fff !important; }
.ssp-portal.dark .dark\:hover\:text-sprout-300:hover { color: #86efac !important; }
.ssp-portal.dark .dark\:hover\:text-sprout-400:hover { color: #4ade80 !important; }
.ssp-portal.dark .dark\:hover\:text-roflekt-300:hover { color: #93c5fd !important; }
.ssp-portal.dark .dark\:hover\:text-roflekt-400:hover { color: #60a5fa !important; }

/* High-contrast section surfaces. */
.ssp-portal.dark #features { background: rgba(0,0,0,.28) !important; }
.ssp-portal.dark footer { background: #0f172a !important; }
.ssp-portal.dark nav { color: #f8fafc; }
.ssp-portal.dark input,
.ssp-portal.dark select,
.ssp-portal.dark textarea { color: #f8fafc; caret-color: #f8fafc; }
.ssp-portal.dark input::placeholder,
.ssp-portal.dark textarea::placeholder { color: #94a3b8; opacity: 1; }

/* Branded portal sign-out dialog. */
.ssp-portal-logout-modal__scrim {
    border: 0;
    background: rgba(15,23,42,.66);
    backdrop-filter: blur(9px);
    -webkit-backdrop-filter: blur(9px);
    cursor: pointer;
}
.ssp-portal-logout-modal__card {
    border: 1px solid rgba(34,197,94,.18);
    background: rgba(255,255,255,.97);
    color: #1e293b;
    box-shadow: 0 30px 90px rgba(15,23,42,.35);
}
.ssp-portal.dark .ssp-portal-logout-modal__card {
    border-color: rgba(255,255,255,.12);
    background: rgba(15,23,42,.98);
    color: #f8fafc;
}
.ssp-portal-logout-modal__icon {
    width: 66px;
    height: 66px;
    display: grid;
    place-items: center;
    margin: 0 auto 15px;
    border-radius: 22px;
    background: #ecfdf3;
    font-size: 31px;
}
.ssp-portal.dark .ssp-portal-logout-modal__icon { background: rgba(74,222,128,.12); }
.ssp-portal-logout-modal__eyebrow {
    margin: 0 0 7px;
    color: #15803d;
    font-size: 12px;
    font-weight: 800;
    letter-spacing: .11em;
    text-transform: uppercase;
}
.ssp-portal.dark .ssp-portal-logout-modal__eyebrow { color: #86efac; }
.ssp-portal-logout-modal__copy { margin: 0 auto; max-width: 340px; color: #64748b; line-height: 1.55; }
.ssp-portal.dark .ssp-portal-logout-modal__copy { color: #cbd5e1; }
.ssp-portal-logout-modal__actions { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 24px; }
.ssp-portal-logout-modal__actions button {
    min-height: 50px;
    border-radius: 16px;
    padding: 11px 16px;
    font: inherit;
    font-weight: 800;
    cursor: pointer;
}
.ssp-portal-logout-cancel { border: 1px solid #dbe4ee; background: #f8fafc; color: #334155 !important; }
.ssp-portal.dark .ssp-portal-logout-cancel { border-color: rgba(255,255,255,.14); background: rgba(255,255,255,.08); color: #f8fafc !important; }
.ssp-portal-logout-confirm { border: 1px solid #dc5454; background: #e56868; color: #fff !important; box-shadow: 0 10px 25px rgba(220,84,84,.2); }
.ssp-portal-logout-confirm:disabled { opacity: .65; cursor: wait; }
.ssp-portal-logout-error { min-height: 18px; margin: 13px 0 0; color: #b42318; font-size: 13px; font-weight: 700; }
.ssp-portal.dark .ssp-portal-logout-error { color: #fda4af; }
@media (max-width: 520px) {
    .ssp-portal-logout-modal__actions { grid-template-columns: 1fr; }
    .ssp-portal-logout-confirm { order: -1; }
}

/* WordPress themes commonly assign heading colours directly, which prevents
 * those headings from inheriting the portal's dark foreground. */
.ssp-portal.dark h1,
.ssp-portal.dark h2,
.ssp-portal.dark h3,
.ssp-portal.dark h4,
.ssp-portal.dark h5,
.ssp-portal.dark h6 { color: #f8fafc !important; }
.ssp-portal.dark .dark\:text-dark-900 h1,
.ssp-portal.dark .dark\:text-dark-900 h2,
.ssp-portal.dark .dark\:text-dark-900 h3,
.ssp-portal.dark .dark\:text-dark-900 h4 { color: #0f172a !important; }
