/*
 * SWB Portal Companion — Frontend CSS v1.1.0
 * Applied on every portal page for all visitors.
 *
 * NAV HIDING STRATEGY
 * ────────────────────────────────────────────────────────────────────────────
 * .swbpc-logged-in      — set server-side for any logged-in user
 * .swbpc-portal-page    — set server-side ONLY on pages with a portal shortcode
 *                         AND the user is a parent or student (not admin/staff)
 *
 * Both classes are set in PHP before first paint, so there is zero flash of
 * the theme header/footer before CSS applies.
 *
 * BLOCKSY SELECTORS (Pro v2.x)
 * ────────────────────────────────────────────────────────────────────────────
 * Header wrapper:  header.ct-header | .site-header
 * Footer wrapper:  footer.ct-footer | .site-footer | #colophon
 * Nav:             .ct-header [data-id="menu"] | .ct-header nav
 * Hamburger:       .ct-header [data-id="trigger"] | .ct-toggle-dropdown-desktop
 * Logo:            .ct-header [data-id="logo"] | .ct-header .site-logo
 */

/* ═══════════════════════════════════════════════════════════════════════════
   PORTAL PAGE: Hide entire header and footer for ALL logged-in users
   No logged-in user (parent, student, admin, or Support Access session)
   needs the theme header or footer on a portal page — the portal has its
   own branded header and footer built in.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Full header suppression on portal pages ─────────────────────────────── */
body.swbpc-portal-page header.ct-header,
body.swbpc-portal-page .site-header,
body.swbpc-portal-page #masthead,
body.swbpc-portal-page .ct-header,
body.swbpc-portal-page [class*="header-row"],
body.swbpc-portal-page .header-area                           { display: none !important; }

/* ── Full footer suppression on portal pages ─────────────────────────────── */
body.swbpc-portal-page footer.ct-footer,
body.swbpc-portal-page .site-footer,
body.swbpc-portal-page #colophon,
body.swbpc-portal-page .ct-footer,
body.swbpc-portal-page [class*="footer-widgets"],
body.swbpc-portal-page .footer-area,
body.swbpc-portal-page .wp-site-blocks > footer               { display: none !important; }

/* ── Remove top margin/padding left by absent header ─────────────────────── */
body.swbpc-portal-page .site-content,
body.swbpc-portal-page .site-main,
body.swbpc-portal-page #content,
body.swbpc-portal-page .hfeed,
body.swbpc-portal-page main                                   {
    padding-top:    0 !important;
    margin-top:     0 !important;
}

/* ── Blocksy: disable sticky header spacer on portal pages ───────────────── */
body.swbpc-portal-page .ct-header-placeholder,
body.swbpc-portal-page .ct-sticky-container                   { display: none !important; }

/* ═══════════════════════════════════════════════════════════════════════════
   LOGGED-IN (non-portal pages): Hide nav but keep header/footer
   This is the existing behaviour — unchanged.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Hide nav for logged-in users (non-portal pages) ─────────────────────── */
body.swbpc-logged-in:not(.swbpc-portal-page) .ct-header nav,
body.swbpc-logged-in:not(.swbpc-portal-page) .ct-header [data-id="menu"],
body.swbpc-logged-in:not(.swbpc-portal-page) .ct-header .menu-wrapper,
body.swbpc-logged-in:not(.swbpc-portal-page) .ct-header ul.menu,
body.swbpc-logged-in:not(.swbpc-portal-page) .ct-header .main-navigation,
body.swbpc-logged-in:not(.swbpc-portal-page) .ct-header .nav-links     { display: none !important; }

/* ── Hide mobile hamburger (non-portal pages) ────────────────────────────── */
body.swbpc-logged-in:not(.swbpc-portal-page) .ct-header .ct-toggle-dropdown-desktop,
body.swbpc-logged-in:not(.swbpc-portal-page) .ct-header [data-id="trigger"],
body.swbpc-logged-in:not(.swbpc-portal-page) .ct-header .ct-mobile-mobile-toggle,
body.swbpc-logged-in:not(.swbpc-portal-page) .ct-header .navbar-toggle { display: none !important; }

/* ── Hide login/register header buttons (non-portal pages) ───────────────── */
body.swbpc-logged-in:not(.swbpc-portal-page) .ct-header [data-id="button"] { display: none !important; }

/* ── Keep logo left-aligned when nav is hidden (non-portal pages) ─────────── */
body.swbpc-logged-in:not(.swbpc-portal-page) .ct-header .ct-header-content { justify-content: flex-start; }
body.swbpc-logged-in:not(.swbpc-portal-page) .ct-header .site-logo,
body.swbpc-logged-in:not(.swbpc-portal-page) .ct-header [data-id="logo"]   { margin-right: auto; }

/* ═══════════════════════════════════════════════════════════════════════════
   LOGGED-OUT visitors: Full nav always visible
   ═══════════════════════════════════════════════════════════════════════════ */

body.swbpc-logged-out .ct-header nav,
body.swbpc-logged-out .ct-header [data-id="menu"]    { display: flex !important; }

/* ═══════════════════════════════════════════════════════════════════════════
   ALWAYS: Logo link clickable, colours, admin bar gap suppression
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Logo link — always clickable ────────────────────────────────────────── */
.ct-header .site-logo a,
.ct-header [data-id="logo"] a                        { cursor: pointer; text-decoration: none; }

/* ── Blocksy colour overrides ────────────────────────────────────────────── */
.ct-button,
.wp-block-button__link,
button[type="submit"] {
    background-color: var(--swbpc-secondary) !important;
    border-color:     var(--swbpc-secondary) !important;
}
.ct-button:hover,
.wp-block-button__link:hover,
button[type="submit"]:hover                          { opacity: .88; }

body.swbpc-logged-out .ct-header nav .current-menu-item > a,
body.swbpc-logged-out .ct-header nav a:hover         { color: var(--swbpc-secondary) !important; }

/* ── Suppress WordPress admin bar gap ────────────────────────────────────── */
/*
 * When admin bar is hidden for non-admin users, WordPress adds margin-top:32px
 * to both <html> and <body>. We must override BOTH at root level — you cannot
 * nest "html" inside a "body" selector in CSS.
 */
html:has(body.swbpc-logged-in:not(.admin-bar)),
body.swbpc-logged-in:not(.admin-bar)                 { margin-top: 0 !important; }