/*
Theme Name: Learnaroo
Theme URI: https://learnaroohub.com
Author: Humaira Ahmed
Author URI: https://learnaroohub.com/about/
Description: The Learnaroo Learning Engine — a vibrant, child-safe educational platform for UK families, teachers and schools. EYFS to GCSE.
Version: 2.0.0
Requires at least: 6.0
Requires PHP: 7.4
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: learnaroo
Tags: education, children, e-learning, uk-curriculum, accessibility-ready
*/

/* ==========================================================================
   01 — RESET + BASE
   ========================================================================== */

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body { font-family: 'Nunito', sans-serif; font-size: 16px; line-height: 1.6; color: #1A1A2E; background: #fff; -webkit-font-smoothing: antialiased; }
img, video, svg { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; }
button { cursor: pointer; font-family: inherit; }
ul, ol { list-style: none; }
input, select, textarea, button { font: inherit; }
h1, h2, h3, h4, h5, h6 { font-family: 'Fredoka', sans-serif; font-weight: 700; line-height: 1.2; color: #1A1A2E; }

/* ==========================================================================
   02 — VARIABLES
   ========================================================================== */
:root {
  --lwh-coral: #E91E63;
  --lwh-coral-dark: #C2185B;
  --lwh-coral-light: #FCE4EC;
  --lwh-purple: #6B2FA0;
  --lwh-purple-dark: #4A148C;
  --lwh-purple-light: #F3E5F5;
  --lwh-yellow: #FFD700;
  --lwh-yellow-light: #FFFDE7;
  --lwh-ink: #1A1A2E;
  --lwh-ink-soft: #4A4A6A;
  --lwh-grey: #6B7280;
  --lwh-grey-light: #F3F4F6;
  --lwh-white: #FFFFFF;
  --lwh-border: #E5E7EB;
  --lwh-success: #22C55E;
  --lwh-teal: #0D9488;
  --lwh-error: #EF4444;
  --lwh-warning: #F59E0B;
  --lwh-radius: 16px;
  --lwh-radius-sm: 10px;
  --lwh-radius-xs: 6px;
  --lwh-radius-pill: 999px;
  --lwh-shadow-sm: 0 1px 3px rgba(26,26,46,0.06);
  --lwh-shadow-md: 0 4px 12px rgba(26,26,46,0.08);
  --lwh-shadow-lg: 0 12px 32px rgba(26,26,46,0.12);
  --lwh-shadow-hover: 0 8px 24px rgba(233,30,99,0.15);
  --lwh-container: min(95%, 1200px);
  --lwh-section-pad: clamp(3rem, 6vh, 5rem);
  /* Legacy compat aliases */
  --lh-display: 'Fredoka', sans-serif;
  --lh-font: 'Nunito', sans-serif;
  --lh-flame: #E91E63;
  --lh-ink: #1A1A2E;
  --lh-ink-soft: #4A4A6A;
}

/* ==========================================================================
   03 — TYPOGRAPHY
   ========================================================================== */
h1 { font-size: clamp(2rem, 5vw, 3rem); }
h2 { font-size: clamp(1.5rem, 3.5vw, 2.2rem); }
h3 { font-size: clamp(1.1rem, 2vw, 1.4rem); }
p { margin-bottom: 1rem; }
.lwh-eyebrow {
  display: inline-block; font-size: .82rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: .08em;
  color: var(--lwh-coral); margin-bottom: .5rem;
}
.lwh-section-head { text-align: center; margin-bottom: 2.5rem; }
.lwh-section-head h2 { margin-bottom: .6rem; }
.lwh-section-head p { color: var(--lwh-grey); max-width: 650px; margin: 0 auto; }

/* ==========================================================================
   04 — BUTTONS
   ========================================================================== */
.lh-btn, .lwh-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .4rem;
  padding: .7rem 1.4rem; border-radius: var(--lwh-radius-pill);
  font-weight: 700; font-size: .95rem; border: 2px solid transparent;
  transition: all .2s ease; text-decoration: none; line-height: 1.3;
  white-space: nowrap;
}
.lh-btn--flame, .lwh-btn--coral, .lh-btn--coral {
  background: var(--lwh-coral); color: #fff; border-color: var(--lwh-coral);
}
.lh-btn--flame:hover, .lwh-btn--coral:hover { background: var(--lwh-coral-dark); border-color: var(--lwh-coral-dark); }
.lwh-btn--purple { background: var(--lwh-purple); color: #fff; border-color: var(--lwh-purple); }
.lwh-btn--purple:hover { background: var(--lwh-purple-dark); }
.lh-btn--ghost, .lwh-btn--ghost { background: transparent; }
.lh-btn--sm, .lwh-btn--sm { padding: .45rem .9rem; font-size: .85rem; }
.lh-btn--lg, .lwh-btn--lg { padding: .85rem 1.8rem; font-size: 1.05rem; }

/* ==========================================================================
   05 — LAYOUT UTILITIES
   ========================================================================== */
.lwh-container { width: var(--lwh-container); margin: 0 auto; }
.lwh-section { padding: var(--lwh-section-pad) 1.5rem; }
.lwh-section--grey { background: var(--lwh-grey-light); }
.lwh-section--purple { background: var(--lwh-purple); color: #fff; }
.lwh-section--coral { background: var(--lwh-coral); color: #fff; }
.lwh-grid { display: grid; gap: 1.25rem; }
.lwh-grid--2 { grid-template-columns: repeat(2, 1fr); }
.lwh-grid--3 { grid-template-columns: repeat(3, 1fr); }
.lwh-grid--4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 960px) { .lwh-grid--3, .lwh-grid--4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px) { .lwh-grid--2, .lwh-grid--3, .lwh-grid--4 { grid-template-columns: 1fr; } }

/* Wave divider */
.lwh-wave { width: 100%; line-height: 0; overflow: hidden; }
.lwh-wave svg { width: 100%; height: auto; display: block; }


/* ==========================================================================
   06 — TOP BAR + HEADER + NAV
   ========================================================================== */

/* Top bar */
.lh-topbar {
  background: var(--lwh-purple); color: rgba(255,255,255,.85);
  font-size: .82rem; padding: .45rem 1.5rem;
  display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: .5rem;
}
.lh-topbar a { color: #fff; transition: opacity .15s; }
.lh-topbar a:hover { opacity: .8; }
.lh-topbar__left, .lh-topbar__right { display: flex; align-items: center; gap: 1rem; }
@media (max-width: 640px) { .lh-topbar { font-size: .75rem; justify-content: center; } .lh-topbar__right { display: none; } }

/* Scrolling trust marquee */
.lh-trust-marquee {
  background: var(--lwh-purple-dark); color: rgba(255,255,255,.8);
  padding: .4rem 0; overflow: hidden; font-size: .82rem; font-weight: 600;
  white-space: nowrap;
}
.lh-trust-marquee__inner {
  display: inline-block; animation: lwhMarquee 30s linear infinite;
}
@keyframes lwhMarquee { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } }

/* Header */
.lh-header {
  background: #fff; position: sticky; top: 0; z-index: 1000;
  box-shadow: var(--lwh-shadow-sm); transition: box-shadow .2s;
}
.lh-header__inner {
  display: flex; align-items: center; justify-content: space-between;
  padding: .6rem 1.5rem; max-width: 1300px; margin: 0 auto;
}
.lh-header__logo img { height: 42px; width: auto; }
.lh-header__logo { display: flex; align-items: center; gap: .5rem; text-decoration: none; }

/* Desktop nav */
.lh-nav__list {
  display: flex; align-items: center; gap: .15rem;
}
.lh-nav__item { position: relative; }
.lh-nav__link {
  display: flex; align-items: center; gap: .25rem;
  padding: .55rem .85rem; font-size: .92rem; font-weight: 700;
  color: var(--lwh-ink); border-radius: var(--lwh-radius-sm);
  transition: background .15s, color .15s;
}
.lh-nav__link:hover { background: var(--lwh-grey-light); color: var(--lwh-coral); }
.lh-nav__caret { font-size: .6rem; opacity: .5; }

/* Dropdown */
.lh-nav__dropdown {
  position: absolute; top: 100%; left: 0;
  background: #fff; border: 1px solid var(--lwh-border);
  border-radius: var(--lwh-radius-sm); box-shadow: var(--lwh-shadow-lg);
  min-width: 220px; padding: .5rem 0;
  opacity: 0; visibility: hidden; transform: translateY(8px);
  transition: all .2s ease;
}
.lh-nav__item:hover .lh-nav__dropdown,
.lh-nav__item--has-children:hover .lh-nav__dropdown {
  opacity: 1; visibility: visible; transform: translateY(0);
}
.lh-nav__dropdown li a {
  display: block; padding: .55rem 1.15rem;
  font-size: .88rem; font-weight: 600; color: var(--lwh-ink);
  transition: background .12s, color .12s;
}
.lh-nav__dropdown li a:hover { background: var(--lwh-coral-light); color: var(--lwh-coral); }

/* Auth buttons */
.lh-header__auth { display: flex; align-items: center; gap: .5rem; }
.lh-header__auth .lh-btn--ghost {
  color: var(--lwh-ink); border-color: var(--lwh-border);
}
.lh-header__auth .lh-btn--ghost:hover { border-color: var(--lwh-coral); color: var(--lwh-coral); }

/* Logged-in identity */
.lh-header__identity { display: flex; align-items: center; gap: .5rem; font-weight: 700; font-size: .88rem; }
.lh-header__identity img { width: 32px; height: 32px; border-radius: 50%; }
.lh-header__role { font-size: .72rem; font-weight: 600; text-transform: uppercase; padding: .15rem .4rem; border-radius: var(--lwh-radius-xs); background: var(--lwh-coral-light); color: var(--lwh-coral); }

/* Mobile hamburger */
.lh-header__burger { display: none; background: none; border: 0; font-size: 1.5rem; color: var(--lwh-ink); padding: .25rem; }
@media (max-width: 960px) {
  .lh-header__burger { display: block; }
  .lh-nav__list { display: none; }
}

/* Mobile drawer */
.lh-drawer { position: fixed; top: 0; right: -100%; width: min(85vw, 360px); height: 100vh; background: #fff; z-index: 10001; box-shadow: var(--lwh-shadow-lg); transition: right .3s ease; overflow-y: auto; padding: 1.5rem; }
.lh-drawer.is-open { right: 0; }
.lh-drawer__backdrop { position: fixed; inset: 0; background: rgba(0,0,0,.4); z-index: 10000; opacity: 0; pointer-events: none; transition: opacity .25s; }
.lh-drawer__backdrop.is-open { opacity: 1; pointer-events: auto; }
.lh-drawer__close { background: none; border: 0; font-size: 1.5rem; color: var(--lwh-ink); position: absolute; top: 1rem; right: 1rem; }
.lh-drawer__list { margin-top: 2rem; }
.lh-drawer__item { border-bottom: 1px solid var(--lwh-border); }
.lh-drawer__link, .lh-drawer__toggle { display: flex; justify-content: space-between; align-items: center; width: 100%; padding: .85rem 0; font-size: 1rem; font-weight: 700; color: var(--lwh-ink); background: none; border: 0; text-align: left; }
.lh-drawer__sub { padding: 0 0 .5rem 1rem; }
.lh-drawer__sub a { display: block; padding: .45rem 0; font-size: .92rem; color: var(--lwh-grey); font-weight: 600; }
.lh-drawer__sub a:hover { color: var(--lwh-coral); }
.lh-drawer__caret { font-size: .7rem; transition: transform .2s; }

/* ==========================================================================
   07 — FOOTER
   ========================================================================== */
.lh-footer {
  background: var(--lwh-ink); color: rgba(255,255,255,.75);
  padding: clamp(2.5rem, 5vh, 4rem) 1.5rem 0;
  margin-top: clamp(3rem, 6vh, 5rem);
}
.lh-footer__grid {
  display: grid; grid-template-columns: 2fr repeat(3, 1fr);
  gap: 2rem; max-width: 1200px; margin: 0 auto;
  padding-bottom: 2.5rem; border-bottom: 1px solid rgba(255,255,255,.1);
}
.lh-footer__brand p { color: rgba(255,255,255,.5); font-size: .88rem; line-height: 1.55; margin-top: .75rem; }
.lh-footer__col h4 { color: #fff; font-family: 'Fredoka', sans-serif; font-size: 1rem; margin-bottom: .85rem; }
.lh-footer__col a { display: block; padding: .25rem 0; font-size: .88rem; color: rgba(255,255,255,.6); transition: color .15s; }
.lh-footer__col a:hover { color: var(--lwh-coral); }
.lh-footer__bottom {
  display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: .75rem;
  max-width: 1200px; margin: 0 auto; padding: 1.25rem 0;
  font-size: .82rem; color: rgba(255,255,255,.4);
}
.lh-footer__social { display: flex; gap: .75rem; }
.lh-footer__social a { color: rgba(255,255,255,.5); font-size: 1.1rem; transition: color .15s; }
.lh-footer__social a:hover { color: var(--lwh-coral); }
@media (max-width: 768px) {
  .lh-footer__grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 480px) {
  .lh-footer__grid { grid-template-columns: 1fr; }
}

/* ==========================================================================
   08 — CURRICULUM BAR (sticky pills)
   ========================================================================== */
.lh-curricbar {
  display: flex; align-items: center; gap: .4rem; flex-wrap: wrap;
  padding: .65rem 1rem; background: #fff; border-bottom: 1px solid var(--lwh-border);
  position: sticky; top: 60px; z-index: 100; overflow-x: auto;
}
.lh-curricbar__label { font-weight: 700; font-size: .85rem; color: var(--lwh-grey); white-space: nowrap; margin-right: .25rem; }
.lh-curricbar__pill {
  padding: .35rem .7rem; font-size: .82rem; font-weight: 700;
  border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius-sm);
  color: var(--lwh-ink); background: #fff; white-space: nowrap;
  transition: border-color .15s, background .15s, color .15s;
}
.lh-curricbar__pill:hover { border-color: var(--lwh-coral); color: var(--lwh-coral); }
.lh-curricbar__pill.is-active { background: var(--lwh-coral); color: #fff; border-color: var(--lwh-coral); }


/* ==========================================================================
   09 — HERO SECTIONS
   ========================================================================== */
.lh-home-hero, .lh-reshub__hero, .lh-cat-hero {
  position: relative; overflow: hidden;
  background: linear-gradient(135deg, var(--lwh-purple-dark) 0%, var(--lwh-purple) 50%, #8E24AA 100%);
  color: #fff; text-align: center;
  padding: clamp(3.5rem, 8vh, 6rem) 1.5rem;
}
.lh-home-hero h1, .lh-reshub__h1, .lh-cat-hero h1,
.lh-home-hero__headline { color: #fff; font-size: clamp(2rem, 5vw, 3.2rem); font-weight: 700; margin-bottom: .75rem; }
.lh-home-hero__lead, .lh-reshub__lead, .lh-cat-hero p { color: rgba(255,255,255,.8); font-size: clamp(.95rem, 2vw, 1.15rem); line-height: 1.6; max-width: 620px; margin: 0 auto 2rem; }
.lh-reshub__eyebrow, .lh-home-hero__eyebrow { color: var(--lwh-yellow); }

/* Hero CTA buttons */
.lh-home-hero__cta, .lh-reshub__hero-cta, .lh-cat-hero__cta {
  display: flex; justify-content: center; flex-wrap: wrap; gap: .75rem;
}
.lh-home-hero .lh-btn--flame, .lh-reshub__hero-cta .lh-btn--flame { background: var(--lwh-coral); color: #fff; border-color: var(--lwh-coral); }
.lh-home-hero .lh-btn--ghost, .lh-reshub__hero-cta .lh-btn--ghost { color: #fff; border-color: rgba(255,255,255,.4); background: rgba(255,255,255,.08); }
.lh-home-hero .lh-btn--ghost:hover, .lh-reshub__hero-cta .lh-btn--ghost:hover { background: rgba(255,255,255,.18); border-color: #fff; }

/* Hero floating cards */
.lh-home-hero__visual { display: grid; grid-template-columns: repeat(3, 1fr); gap: .6rem; max-width: 420px; margin: 2rem auto 0; }
.lh-home-hero__card { background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.15); border-radius: var(--lwh-radius-sm); padding: .6rem; text-align: center; backdrop-filter: blur(4px); }
.lh-home-hero__card-icon { font-size: 1.4rem; display: block; margin-bottom: .2rem; }
.lh-home-hero__card-label { font-size: .72rem; font-weight: 700; opacity: .85; }
@media (max-width: 640px) { .lh-home-hero__visual { grid-template-columns: repeat(2, 1fr); } }

/* Hero highlight word */
.lh-home-hero__highlight { color: var(--lwh-yellow); -webkit-text-fill-color: var(--lwh-yellow); }
.lh-home-hero__bullets { list-style: none; display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem 1.5rem; margin: 1rem 0 1.5rem; }
.lh-home-hero__bullets li { font-size: .9rem; color: rgba(255,255,255,.8); }

/* Hub hero self-contained inline CSS is in the shortcode — these are backup */
.lh-reshub { display: block; }
.lh-reshub__hero-inner { position: relative; z-index: 2; max-width: 720px; margin: 0 auto; }
.lh-reshub__section { padding: var(--lwh-section-pad) 1.5rem; }
.lh-reshub__section--bytype { background: var(--lwh-grey-light); }
.lh-reshub__inner { max-width: 1200px; margin: 0 auto; }
.lh-section__head { text-align: center; margin-bottom: 2rem; }
.lh-section__h { font-size: clamp(1.5rem, 3.5vw, 2.2rem); font-weight: 700; margin-bottom: .6rem; }
.lh-section__sub { color: var(--lwh-grey); max-width: 650px; margin: 0 auto; }

/* ==========================================================================
   10 — RESOURCE CARDS (Grid + List)
   ========================================================================== */

/* Grid wrapper */
.lh-res-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 1.25rem;
}
@media (max-width: 640px) { .lh-res-grid { grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: .75rem; } }

/* Card base */
.lh-res-card {
  position: relative; background: #fff;
  border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius);
  overflow: hidden;
  transition: border-color .2s, box-shadow .2s, transform .2s;
}
.lh-res-card:hover { border-color: var(--lwh-coral); box-shadow: var(--lwh-shadow-hover); transform: translateY(-3px); }

.lh-res-card__link { display: flex; flex-direction: column; text-decoration: none; color: var(--lwh-ink); height: 100%; }

/* Icon header */
.lh-res-card__icon-wrap {
  position: relative; display: flex; align-items: center; justify-content: center;
  height: 72px; background: linear-gradient(135deg, var(--lwh-purple-light), var(--lwh-coral-light), var(--lwh-yellow-light));
}
.lh-res-card__icon { font-size: 2rem; }

/* Tier badge — top right */
.lh-res-card__tier-badge {
  position: absolute; top: 8px; right: 8px; z-index: 4;
  font-size: .62rem; font-weight: 800; letter-spacing: .06em;
  padding: .18rem .4rem; border-radius: var(--lwh-radius-xs);
  text-transform: uppercase; line-height: 1;
}
.lh-tier--free  { background: #D1FAE5; color: #065F46; }
.lh-tier--pro   { background: #FEF3C7; color: #92400E; }
.lh-tier--elite { background: var(--lwh-purple-light); color: var(--lwh-purple); }

/* Favourite heart — top left, hidden until hover */
.lh-res-card .lh-fav-btn {
  position: absolute; top: 8px; left: 8px; z-index: 5;
  opacity: 0; transition: opacity .2s;
  background: rgba(255,255,255,.9); border: 0; border-radius: 50%;
  width: 30px; height: 30px; display: flex; align-items: center; justify-content: center;
  font-size: .95rem; cursor: pointer; padding: 0;
}
.lh-res-card:hover .lh-fav-btn { opacity: 1; }
.lh-res-card .lh-fav-btn.is-favourited { opacity: 1; color: var(--lwh-coral); }

/* Card body */
.lh-res-card__body { padding: .85rem 1rem 1rem; display: flex; flex-direction: column; gap: .35rem; flex: 1; }
.lh-res-card__title { font-family: 'Fredoka', sans-serif; font-size: .98rem; font-weight: 700; line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.lh-res-card__desc { font-size: .82rem; line-height: 1.4; color: var(--lwh-grey); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

/* Tags */
.lh-res-card__tags { display: flex; flex-wrap: wrap; gap: .25rem; margin-top: auto; padding-top: .3rem; }
.lh-tag { font-size: .68rem; font-weight: 700; padding: .15rem .4rem; border-radius: var(--lwh-radius-xs); white-space: nowrap; }
.lh-tag--stage   { background: #DBEAFE; color: #1E40AF; }
.lh-tag--subject  { background: #FEF3C7; color: #92400E; }
.lh-tag--type     { background: #D1FAE5; color: #065F46; }
.lh-tag--duration { background: var(--lwh-purple-light); color: var(--lwh-purple); }

/* Play button — bottom right */
.lh-res-card__play {
  position: absolute; bottom: 10px; right: 10px; z-index: 3;
  width: 30px; height: 30px; border-radius: 50%;
  background: var(--lwh-success); color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-size: .65rem; box-shadow: 0 2px 8px rgba(34,197,94,.4);
  transition: transform .15s;
}
.lh-res-card:hover .lh-res-card__play { transform: scale(1.15); }

/* Assign button — bottom left */
.lh-res-card__assign { position: absolute; bottom: 10px; left: 10px; z-index: 3; background: none; border: 0; font-size: 1.1rem; }

/* Hide list-only columns in grid mode */
.lh-res-grid:not(.lh-grid--list) .lh-res-card__col { display: none; }
.lh-res-grid:not(.lh-grid--list) .lh-res-card__meta,
.lh-res-grid:not(.lh-grid--list) .lh-res-card__cta { display: none; }

/* Old elements — hidden globally */
.lh-res-card__thumb, .lh-tier-ribbon, .lh-list-col, .lh-list-header, .lh-res-card__heart, .lh-res-card__img { display: none; }

/* ─── LIST VIEW ─── */
.lh-grid--list { grid-template-columns: 1fr; gap: 0; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); overflow: hidden; background: #fff; }
.lh-grid--list .lh-res-card { border: 0; border-bottom: 1px solid var(--lwh-grey-light); border-radius: 0; overflow: visible; }
.lh-grid--list .lh-res-card:last-child { border-bottom: 0; }
.lh-grid--list .lh-res-card:hover { transform: none; box-shadow: none; background: var(--lwh-grey-light); }
.lh-grid--list .lh-res-card__link {
  display: grid; grid-template-columns: 42px minmax(0,1fr) 68px 68px 52px 80px 46px 28px;
  align-items: center; gap: 0 .6rem; padding: .7rem .85rem; height: auto;
}
.lh-grid--list .lh-res-card__icon-wrap { width: 42px; height: 42px; border-radius: var(--lwh-radius-sm); }
.lh-grid--list .lh-res-card__icon { font-size: 1.2rem; }
.lh-grid--list .lh-res-card__tier-badge { display: none; }
.lh-grid--list .lh-res-card__body { padding: 0; gap: .05rem; min-width: 0; flex: unset; }
.lh-grid--list .lh-res-card__title { font-size: .9rem; -webkit-line-clamp: unset; display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lh-grid--list .lh-res-card__desc { display: block; -webkit-line-clamp: unset; -webkit-box-orient: unset; font-size: .76rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lh-grid--list .lh-res-card__tags { display: none; }
.lh-grid--list .lh-res-card__col { display: flex; align-items: center; justify-content: center; font-size: .72rem; font-weight: 700; padding: .18rem .3rem; border-radius: var(--lwh-radius-xs); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lh-res-card__col--stage   { background: #DBEAFE; color: #1E40AF; }
.lh-res-card__col--subject { background: #FEF3C7; color: #92400E; }
.lh-res-card__col--duration { background: var(--lwh-purple-light); color: var(--lwh-purple); }
.lh-res-card__col--type    { background: #D1FAE5; color: #065F46; }
.lh-res-card__col--tier    { font-weight: 800; text-transform: uppercase; }
.lh-grid--list .lh-res-card__play { position: static; width: 26px; height: 26px; font-size: .6rem; }
.lh-grid--list .lh-fav-btn, .lh-grid--list .lh-res-card__assign { display: none; }

/* List responsive */
@media (max-width: 1024px) and (min-width: 641px) {
  .lh-grid--list .lh-res-card__link { grid-template-columns: 38px minmax(0,1fr) 60px 60px 44px 26px; }
  .lh-grid--list .lh-res-card__col--subject, .lh-grid--list .lh-res-card__col--duration { display: none; }
  .lh-grid--list .lh-res-card__desc { display: none; }
}
@media (max-width: 640px) {
  .lh-grid--list .lh-res-card__link { grid-template-columns: 34px minmax(0,1fr) 42px 24px; gap: 0 .35rem; padding: .6rem .7rem; }
  .lh-grid--list .lh-res-card__icon-wrap { width: 34px; height: 34px; }
  .lh-grid--list .lh-res-card__desc { display: none; }
  .lh-grid--list .lh-res-card__col--stage, .lh-grid--list .lh-res-card__col--subject,
  .lh-grid--list .lh-res-card__col--duration, .lh-grid--list .lh-res-card__col--type { display: none; }
}


/* ==========================================================================
   11 — CATALOGUE LAYOUT (sidebar + filters + toolbar)
   ========================================================================== */
.lh-catalogue { display: grid; grid-template-columns: 220px 1fr; gap: 1.25rem; padding: 0; }
@media (max-width: 959px) { .lh-catalogue { grid-template-columns: 1fr; } }
.lh-catalogue__sidebar { display: flex; flex-direction: column; gap: .5rem; }
.lh-catalogue__main { min-width: 0; }

/* Filter dropdowns */
.lh-filterdrop { border: 1px solid var(--lwh-border); border-radius: var(--lwh-radius-sm); overflow: hidden; }
.lh-filterdrop summary { padding: .55rem .75rem; font-size: .88rem; font-weight: 700; cursor: pointer; list-style: none; display: flex; align-items: center; justify-content: space-between; }
.lh-filterdrop summary::-webkit-details-marker { display: none; }
.lh-filterdrop summary::after { content: "▾"; font-size: .7rem; color: var(--lwh-coral); }
.lh-filterdrop[open] summary::after { content: "▴"; }
.lh-filterdrop .lh-filterdrop__body { padding: .25rem .75rem .5rem; max-height: 200px; overflow-y: auto; }
.lh-filterdrop label { display: flex; align-items: center; gap: .35rem; padding: .25rem 0; font-size: .84rem; cursor: pointer; }
.lh-filterdrop label:hover span { color: var(--lwh-coral); }

/* Search box */
.lh-catalogue__search { display: flex; gap: .35rem; margin-bottom: .75rem; }
.lh-catalogue__search input { flex: 1; padding: .5rem .75rem; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius-sm); font-size: .88rem; }
.lh-catalogue__search input:focus { border-color: var(--lwh-coral); outline: none; }
.lh-catalogue__search button { background: var(--lwh-coral); color: #fff; border: 0; border-radius: var(--lwh-radius-sm); width: 40px; display: flex; align-items: center; justify-content: center; font-size: 1.1rem; }

/* Toolbar */
.lh-catalogue__toolbar { display: flex; align-items: center; flex-wrap: wrap; gap: .75rem; padding: .75rem 0; border-bottom: 1px solid var(--lwh-border); margin-bottom: 1rem; }
.lh-catalogue__count { font-weight: 800; font-size: .95rem; margin-right: auto; }
.lh-catalogue__perpage-label { display: flex; align-items: center; gap: .3rem; font-size: .85rem; font-weight: 600; color: var(--lwh-grey); }
.lh-catalogue__perpage-label select { padding: .3rem .5rem; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius-xs); font-size: .85rem; font-weight: 700; }
.lh-catalogue__sort { display: flex; align-items: center; gap: .3rem; }
.lh-catalogue__sort-label { font-size: .82rem; font-weight: 600; color: var(--lwh-grey); }
.lh-catalogue__sort select { padding: .3rem .5rem; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius-xs); font-size: .85rem; font-weight: 700; }
.lh-catalogue__sort select:focus, .lh-catalogue__perpage-label select:focus { border-color: var(--lwh-coral); outline: none; }

/* View toggle */
.lh-catalogue__view-toggle { display: flex; gap: .25rem; }
.lh-catalogue__view-btn { background: none; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius-xs); padding: .35rem .5rem; color: var(--lwh-grey); font-size: 1rem; transition: all .15s; }
.lh-catalogue__view-btn.is-active, .lh-catalogue__view-btn:hover { border-color: var(--lwh-coral); color: var(--lwh-coral); background: var(--lwh-coral-light); }

/* Sidebar CTA */
.lh-sidebar-cta { margin-top: .75rem; padding: 1rem; background: var(--lwh-coral-light); border: 1.5px solid #F8BBD0; border-radius: var(--lwh-radius); text-align: center; }
.lh-sidebar-cta__icon { font-size: 1.5rem; }
.lh-sidebar-cta__title { display: block; font-size: .88rem; font-weight: 800; margin: .25rem 0; }
.lh-sidebar-cta__text { font-size: .78rem; color: var(--lwh-grey); line-height: 1.4; margin-bottom: .5rem; }
.lh-sidebar-cta__link { font-size: .82rem; font-weight: 700; color: var(--lwh-coral); }

/* Clear filters */
.lh-catalogue__clear { display: block; text-align: center; font-size: .82rem; font-weight: 600; color: var(--lwh-grey); padding: .5rem 0; }
.lh-catalogue__clear:hover { color: var(--lwh-coral); }

/* Pagination */
.lh-pagination { display: flex; justify-content: center; gap: .35rem; padding: 1.5rem 0; }
.lh-pagination a, .lh-pagination span { display: flex; align-items: center; justify-content: center; min-width: 38px; height: 38px; border-radius: var(--lwh-radius-sm); font-size: .88rem; font-weight: 700; border: 1.5px solid var(--lwh-border); color: var(--lwh-ink); transition: all .15s; }
.lh-pagination a:hover { border-color: var(--lwh-coral); color: var(--lwh-coral); }
.lh-pagination .is-current { background: var(--lwh-coral); color: #fff; border-color: var(--lwh-coral); }

/* Mobile filter */
@media (max-width: 959px) {
  .lh-catalogue__sidebar { position: fixed; top: 0; left: 0; right: 0; bottom: 0; width: 100%; height: 100vh; z-index: 10000; background: #fff; padding: 1rem 1.25rem 5rem; overflow-y: auto; transform: translateY(100%); transition: transform .3s cubic-bezier(.4,0,.2,1); box-shadow: 0 -12px 40px rgba(0,0,0,.2); border-radius: 20px 20px 0 0; }
  .lh-catalogue.is-filter-open .lh-catalogue__sidebar { transform: translateY(0); }
  .lh-catalogue.is-filter-open::before { content: ""; position: fixed; inset: 0; background: rgba(0,0,0,.5); z-index: 9999; backdrop-filter: blur(4px); }
  .lh-catalogue::before { opacity: 0; pointer-events: none; transition: opacity .25s; }
  .lh-catalogue__mobile-trigger { position: fixed; bottom: 1.5rem; left: 50%; transform: translateX(-50%); z-index: 9000; display: inline-flex; align-items: center; gap: .5rem; background: var(--lwh-coral); color: #fff; border: 0; border-radius: var(--lwh-radius-pill); padding: .85rem 1.5rem; font-weight: 700; font-size: .95rem; box-shadow: 0 8px 28px rgba(233,30,99,.4); }
}
@media (min-width: 960px) { .lh-catalogue__mobile-trigger, .lh-catalogue__drawer-head, .lh-catalogue__drawer-apply { display: none; } }

/* ==========================================================================
   12 — RESOURCE PAGE (viewer + toolbar + meta)
   ========================================================================== */
.lh-rp { max-width: min(95%, 900px); margin: 0 auto; padding: 1.5rem 0; }
.lh-toolbar { display: flex; flex-wrap: wrap; gap: .5rem; padding: .85rem 0; border-bottom: 1px solid var(--lwh-border); margin-bottom: .75rem; }
.lh-toolbar__btn { display: inline-flex; align-items: center; gap: .3rem; padding: .5rem .85rem; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius-sm); background: #fff; color: var(--lwh-ink); font-size: .86rem; font-weight: 700; transition: border-color .15s, color .15s; white-space: nowrap; }
.lh-toolbar__btn:hover { border-color: var(--lwh-coral); color: var(--lwh-coral); }
.lh-toolbar__btn--assign { background: var(--lwh-coral); color: #fff; border-color: var(--lwh-coral); }
.lh-toolbar__btn--assign:hover { background: var(--lwh-coral-dark); }
.lh-toolbar__btn--fav.is-active { background: var(--lwh-coral-light); border-color: #F8BBD0; color: var(--lwh-coral); }
.lh-toolbar__btn--fs { margin-left: auto; }
@media (max-width: 640px) { .lh-toolbar__btn { font-size: .8rem; padding: .4rem .6rem; } .lh-toolbar__btn--fs { margin-left: 0; } }

/* Viewer */
.lh-viewer { border-radius: var(--lwh-radius); overflow: hidden; margin: 1rem 0; }
.lh-rp-viewer { margin: 1rem 0; }
.lh-rp-viewer:fullscreen, .lh-rp-viewer:-webkit-full-screen { background: #fff; padding: 1rem; overflow-y: auto; }

/* About box */
.lh-rp-about { border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); margin: 1.25rem 0; }
.lh-rp-about summary { padding: 1rem 1.25rem; font-family: 'Fredoka', sans-serif; font-weight: 700; font-size: 1.05rem; cursor: pointer; }

/* Meta strip */
.lh-rp-meta { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1rem; margin: 1.25rem 0; }
.lh-rp-meta__box { background: var(--lwh-grey-light); border-radius: var(--lwh-radius); padding: 1.15rem; }
.lh-rp-meta__box h4 { font-family: 'Fredoka', sans-serif; font-size: .95rem; margin-bottom: .35rem; color: var(--lwh-coral); }

/* Progress bar */
.lh-progress { height: 8px; background: var(--lwh-grey-light); border-radius: 4px; overflow: hidden; }
.lh-progress__bar { height: 100%; background: linear-gradient(90deg, var(--lwh-success), #4ADE80); border-radius: 4px; transition: width .4s ease; }

/* Related modules */
.lh-rp-related { margin: 2rem 0; padding-top: 1.5rem; border-top: 1px solid var(--lwh-border); }
.lh-rp-related h2 { font-size: 1.3rem; margin-bottom: 1rem; }

/* ==========================================================================
   13 — HOMEPAGE SECTIONS
   ========================================================================== */
.lh-home-section { width: var(--lwh-container); margin: 0 auto; padding: var(--lwh-section-pad) 0; }

/* Trust strip */
.lh-home-trust { background: var(--lwh-ink); color: #fff; padding: .85rem 1.5rem; }
.lh-home-trust__inner { display: flex; justify-content: center; flex-wrap: wrap; gap: .5rem 2rem; font-size: .85rem; font-weight: 600; }

/* Stage cards */
.lh-home-stages, .lh-home-subjects, .lh-home-how, .lh-home-faq { background: var(--lwh-grey-light); width: 100%; max-width: 100%; padding: var(--lwh-section-pad) 1.5rem; }
.lh-home-stages > *, .lh-home-subjects > *, .lh-home-how > *, .lh-home-faq > * { max-width: 1200px; margin-left: auto; margin-right: auto; }

.lh-stage-card { background: #fff; padding: 1.25rem; border-radius: var(--lwh-radius); text-decoration: none; color: var(--lwh-ink); display: flex; flex-direction: column; gap: .3rem; transition: transform .2s, box-shadow .2s; border-top: 4px solid var(--lwh-border); }
.lh-stage-card:hover { transform: translateY(-4px); box-shadow: var(--lwh-shadow-lg); }
.lh-stage-card__icon { font-size: 2rem; }
.lh-stage-card__label { font-family: 'Fredoka', sans-serif; font-size: 1.3rem; font-weight: 700; color: var(--lwh-ink); }
.lh-stage-card__sub { font-size: .88rem; color: var(--lwh-grey); font-weight: 600; }
.lh-stage-card__ages { font-size: .82rem; color: var(--lwh-coral); font-weight: 700; }
.lh-stage-card__count { font-size: .82rem; color: var(--lwh-grey); }
.lh-stage-card__count strong { color: var(--lwh-ink); }
.lh-stage-card__arrow { color: var(--lwh-coral); font-size: 1.2rem; }
/* Stage accent colours */
.lh-stage-card--eyfs { border-top-color: #F97316; }
.lh-stage-card--ks1  { border-top-color: #06B6D4; }
.lh-stage-card--ks2  { border-top-color: #EAB308; }
.lh-stage-card--ks3  { border-top-color: #22C55E; }
.lh-stage-card--gcse { border-top-color: var(--lwh-purple); }

/* Audience tiles */
.lh-audience-tile { background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); padding: 1.5rem; text-decoration: none; color: var(--lwh-ink); transition: border-color .2s, transform .2s; }
.lh-audience-tile:hover { border-color: var(--lwh-coral); transform: translateY(-3px); }
.lh-audience-tile h3 { font-family: 'Fredoka', sans-serif; font-size: 1.1rem; font-weight: 700; margin-bottom: .5rem; }
.lh-audience-tile p, .lh-audience-tile__lead { color: var(--lwh-grey); font-size: .9rem; line-height: 1.5; }
.lh-audience-tile__features { margin: .75rem 0; font-size: .85rem; color: var(--lwh-grey); }
.lh-audience-tile__features li { padding: .2rem 0; }
.lh-audience-tile__features li::before { content: "✓ "; color: var(--lwh-success); font-weight: 700; }
.lh-audience-tile__cta { color: var(--lwh-coral); font-weight: 700; font-size: .88rem; margin-top: auto; }

/* Subject tiles */
.lh-subject-tile { background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); padding: 1.15rem .75rem; text-align: center; text-decoration: none; color: var(--lwh-ink); transition: border-color .2s, transform .2s; }
.lh-subject-tile:hover { border-color: var(--lwh-coral); transform: translateY(-3px); }
.lh-subject-tile__icon { font-size: 1.8rem; display: block; margin-bottom: .35rem; }
.lh-subject-tile__label { font-weight: 800; font-size: .88rem; display: block; }
.lh-subject-tile__count { font-size: .75rem; color: var(--lwh-grey); display: block; margin-top: .15rem; }

/* How it works */
.lh-how-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1.5rem; }
.lh-how-step { text-align: center; padding: 1.5rem 1rem; }
.lh-how-step__num { display: flex; align-items: center; justify-content: center; width: 52px; height: 52px; margin: 0 auto .85rem; border-radius: 50%; background: var(--lwh-coral); color: #fff; font-family: 'Fredoka', sans-serif; font-size: 1.3rem; font-weight: 700; }
.lh-how-step h3 { font-size: 1.05rem; margin-bottom: .35rem; }
.lh-how-step p { font-size: .88rem; color: var(--lwh-grey); line-height: 1.5; }

/* Why choose us */
.lh-why-card { display: flex; flex-direction: column; gap: .3rem; padding: 1.25rem; background: #fff; border: 1px solid var(--lwh-border); border-radius: var(--lwh-radius); transition: border-color .2s; }
.lh-why-card:hover { border-color: var(--lwh-coral); }
.lh-why-card__icon { font-size: 1.5rem; }
.lh-why-card h3 { font-size: .95rem; }
.lh-why-card p { font-size: .84rem; color: var(--lwh-grey); line-height: 1.45; }

/* Type cards */
.lh-type-card { background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); padding: 1.25rem; text-align: center; transition: border-color .2s, transform .2s; }
.lh-type-card:hover { border-color: var(--lwh-coral); transform: translateY(-3px); }
.lh-type-card__icon { font-size: 2rem; display: block; margin-bottom: .5rem; }

/* Plans cards */
.lh-plan-card { background: #fff; border: 2px solid var(--lwh-border); border-radius: var(--lwh-radius); padding: 2rem 1.5rem; text-align: center; transition: border-color .2s, transform .2s; }
.lh-plan-card:hover { border-color: var(--lwh-coral); transform: translateY(-3px); }
.lh-plan-card--featured { border-color: var(--lwh-coral); position: relative; }
.lh-plan-card__badge { display: inline-block; background: var(--lwh-coral); color: #fff; font-size: .75rem; font-weight: 800; padding: .25rem .75rem; border-radius: var(--lwh-radius-pill); position: absolute; top: -12px; left: 50%; transform: translateX(-50%); }
.lh-plan-card__price { font-family: 'Fredoka', sans-serif; font-size: 2.5rem; font-weight: 700; color: var(--lwh-ink); }
.lh-plan-card__period { font-size: .88rem; color: var(--lwh-grey); }
.lh-plan-card__features { text-align: left; margin: 1.25rem 0; }
.lh-plan-card__features li { padding: .3rem 0; font-size: .9rem; color: var(--lwh-ink-soft); }
.lh-plan-card__features li::before { content: "✓ "; color: var(--lwh-success); font-weight: 700; }

/* CTA banner */
.lh-home-cta-banner { background: linear-gradient(135deg, var(--lwh-purple-dark) 0%, var(--lwh-purple) 100%); color: #fff; text-align: center; padding: var(--lwh-section-pad) 1.5rem; }
.lh-home-cta-banner h2 { color: #fff; margin-bottom: .6rem; }
.lh-home-cta-banner p { max-width: 500px; margin: 0 auto 1.5rem; opacity: .85; }
.lh-home-cta-banner .lh-btn--ghost { color: #fff; border-color: rgba(255,255,255,.4); }

/* FAQ accordion */
.lh-faq-item { border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); margin-bottom: .5rem; overflow: hidden; }
.lh-faq-item summary { padding: 1rem 1.25rem; font-weight: 700; font-size: .95rem; cursor: pointer; list-style: none; display: flex; justify-content: space-between; align-items: center; }
.lh-faq-item summary::-webkit-details-marker { display: none; }
.lh-faq-item summary::after { content: "+"; font-size: 1.2rem; color: var(--lwh-coral); }
.lh-faq-item[open] summary::after { content: "−"; }
.lh-faq-item__body { padding: 0 1.25rem 1rem; color: var(--lwh-grey); font-size: .92rem; line-height: 1.6; }

/* Board cards */
.lh-board-card { background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); padding: 1.5rem; text-decoration: none; color: var(--lwh-ink); transition: border-color .2s, transform .2s; }
.lh-board-card:hover { border-color: var(--lwh-coral); transform: translateY(-3px); }
.lh-board-card__badge { display: inline-block; padding: .2rem .5rem; border-radius: var(--lwh-radius-xs); font-size: .72rem; font-weight: 800; background: #DBEAFE; color: #1E40AF; margin-bottom: .5rem; }

/* Hub format cards */
.lh-reshub__types { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 1rem; margin-top: 1.5rem; }
.lh-reshub-type { background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); padding: 1.25rem; text-decoration: none; color: var(--lwh-ink); display: flex; flex-direction: column; gap: .3rem; transition: border-color .2s, transform .2s; }
.lh-reshub-type:hover { border-color: var(--lwh-coral); transform: translateY(-3px); }
.lh-reshub-type__icon { font-size: 1.8rem; }
.lh-reshub-type__name { font-family: 'Fredoka', sans-serif; font-weight: 700; font-size: .95rem; }
.lh-reshub-type__desc { font-size: .82rem; color: var(--lwh-grey); line-height: 1.4; }
.lh-reshub-type__count { font-size: .78rem; color: var(--lwh-coral); font-weight: 700; margin-top: auto; }


/* ==========================================================================
   14 — DASHBOARDS
   ========================================================================== */
.lh-dash { max-width: var(--lwh-container); margin: 0 auto; padding: 1.5rem 0; }
.lh-dash__head { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 1rem; padding-bottom: 1.25rem; border-bottom: 1px solid var(--lwh-border); margin-bottom: 1.5rem; }
.lh-dash__greeting { display: flex; align-items: center; gap: .75rem; }
.lh-dash__h1 { font-size: 1.5rem; margin: 0; }
.lh-dash__role { color: var(--lwh-grey); font-size: .88rem; }
.lh-dash__quick { display: flex; gap: .5rem; }
.lh-dash__stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 1rem; margin-bottom: 2rem; }
.lh-dash__stat-card { background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); padding: 1.25rem; text-align: center; }
.lh-dash__stat-icon { font-size: 1.8rem; display: block; margin-bottom: .35rem; }
.lh-dash__stat-num { font-family: 'Fredoka', sans-serif; font-size: 1.8rem; font-weight: 700; color: var(--lwh-coral); }
.lh-dash__stat-label { font-size: .82rem; color: var(--lwh-grey); font-weight: 600; }
.lh-dash__section { margin-bottom: 2rem; }
.lh-dash__section-h { font-size: 1.2rem; margin-bottom: 1rem; }

/* Child progress cards */
.lh-dash__child-card { background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); padding: 1.15rem; }
.lh-dash__child-head { display: flex; align-items: center; gap: .6rem; margin-bottom: .75rem; }
.lh-dash__child-name { font-weight: 700; }
.lh-dash__child-stages { font-size: .78rem; color: var(--lwh-grey); display: block; }
.lh-dash__progress-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1rem; }

/* Tables */
.lh-table { width: 100%; border-collapse: collapse; }
.lh-table th { text-align: left; font-size: .82rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--lwh-grey); padding: .65rem .75rem; border-bottom: 2px solid var(--lwh-border); }
.lh-table td { padding: .65rem .75rem; border-bottom: 1px solid var(--lwh-grey-light); font-size: .9rem; }
.lh-table tr:hover { background: var(--lwh-grey-light); }

/* ==========================================================================
   15 — AUTH PAGES (Login, Register, Forgot Password)
   ========================================================================== */
.lh-auth-shell { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 2rem; }
.lh-auth-card { background: #fff; border-radius: var(--lwh-radius); box-shadow: var(--lwh-shadow-lg); padding: 2.5rem; width: 100%; max-width: 440px; }
.lh-auth-card h1 { text-align: center; margin-bottom: 1.5rem; font-size: 1.5rem; }
.lh-auth-card label { display: block; font-weight: 700; font-size: .88rem; margin-bottom: .25rem; color: var(--lwh-ink); }
.lh-auth-card input[type="text"], .lh-auth-card input[type="email"], .lh-auth-card input[type="password"] {
  width: 100%; padding: .65rem .85rem; border: 1.5px solid var(--lwh-border);
  border-radius: var(--lwh-radius-sm); font-size: .95rem; margin-bottom: 1rem;
}
.lh-auth-card input:focus { border-color: var(--lwh-coral); outline: none; box-shadow: 0 0 0 3px rgba(233,30,99,.12); }
.lh-auth-card .lh-btn { width: 100%; justify-content: center; margin-top: .5rem; }
.lh-auth-card__footer { text-align: center; margin-top: 1.25rem; font-size: .88rem; color: var(--lwh-grey); }
.lh-auth-card__footer a { color: var(--lwh-coral); font-weight: 700; }

/* Login role pills */
.lh-auth-role-pills { display: flex; gap: .5rem; justify-content: center; margin-bottom: 1.5rem; }
.lh-auth-role-pill { padding: .45rem .85rem; border-radius: var(--lwh-radius-pill); font-size: .82rem; font-weight: 700; border: 2px solid var(--lwh-border); color: var(--lwh-grey); transition: all .15s; }
.lh-auth-role-pill.is-active, .lh-auth-role-pill:hover { border-color: var(--lwh-coral); color: var(--lwh-coral); background: var(--lwh-coral-light); }

/* ==========================================================================
   16 — MEDIA PLAYERS (Video/Audio)
   ========================================================================== */
.lh-media-controls { display: flex; align-items: center; gap: .5rem; padding: .75rem; background: var(--lwh-ink); border-radius: 0 0 var(--lwh-radius) var(--lwh-radius); }
.lh-mc-btn { background: none; border: 0; color: #fff; font-size: 1.1rem; cursor: pointer; padding: .25rem .5rem; border-radius: var(--lwh-radius-xs); }
.lh-mc-btn:hover { background: rgba(255,255,255,.15); }
.lh-mc-progress { flex: 1; cursor: pointer; }
.lh-mc-bar-bg { height: 6px; background: rgba(255,255,255,.2); border-radius: 3px; overflow: hidden; }
.lh-mc-bar-fill { height: 100%; background: var(--lwh-success); border-radius: 3px; width: 0%; transition: width .2s; }
.lh-mc-time { color: rgba(255,255,255,.7); font-size: .78rem; font-weight: 600; white-space: nowrap; }

/* ==========================================================================
   17 — CHILD MANAGEMENT UI
   ========================================================================== */
.lh-childmgr { padding: 1rem 0; }
.lh-childmgr__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 1rem; }
.lh-childmgr__card { background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); padding: 1.25rem; text-align: center; transition: border-color .2s; }
.lh-childmgr__card:hover { border-color: var(--lwh-coral); }
.lh-childmgr__avatar { width: 64px; height: 64px; border-radius: 50%; margin: 0 auto .5rem; background: var(--lwh-grey-light); display: flex; align-items: center; justify-content: center; font-size: 2rem; }
.lh-childmgr__name { font-weight: 700; font-size: 1rem; }
.lh-childmgr__username { font-size: .82rem; color: var(--lwh-grey); }
.lh-childmgr__add { border: 2px dashed var(--lwh-border); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .5rem; cursor: pointer; color: var(--lwh-grey); font-weight: 700; min-height: 160px; transition: border-color .2s, color .2s; }
.lh-childmgr__add:hover { border-color: var(--lwh-coral); color: var(--lwh-coral); }

/* ==========================================================================
   18 — LOADER + UTILITIES
   ========================================================================== */
/* Loader safety net */
.lh-loader { position: fixed; inset: 0; background: #fff; z-index: 99999; display: flex; align-items: center; justify-content: center; }
.lh-loader__spinner { width: 40px; height: 40px; border: 4px solid var(--lwh-grey-light); border-top-color: var(--lwh-coral); border-radius: 50%; animation: lwhSpin .6s linear infinite; }
@keyframes lwhSpin { to { transform: rotate(360deg); } }
@keyframes lh-loader-safety { 0%, 90% { opacity: 1; } 100% { opacity: 0; pointer-events: none; } }
.lh-loader--safe { animation: lh-loader-safety 3s forwards; }

/* Cards (generic) */
.lh-card { background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); padding: 1.5rem; }

/* Badges */
.lh-badge { display: inline-block; padding: .2rem .5rem; border-radius: var(--lwh-radius-xs); font-size: .72rem; font-weight: 800; }
.lh-badge--free  { background: #D1FAE5; color: #065F46; }
.lh-badge--pro   { background: #FEF3C7; color: #92400E; }
.lh-badge--elite { background: var(--lwh-purple-light); color: var(--lwh-purple); }

/* Quick-assign dropdown */
.lh-quick-assign { position: fixed; z-index: 10000; background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); box-shadow: var(--lwh-shadow-lg); padding: 1rem; min-width: 220px; }

/* Assign modal */
.lh-assign-modal { position: fixed; inset: 0; z-index: 10001; display: flex; align-items: center; justify-content: center; background: rgba(0,0,0,.5); backdrop-filter: blur(4px); }
.lh-assign-modal__inner { background: #fff; border-radius: var(--lwh-radius); padding: 2rem; max-width: 480px; width: 90%; box-shadow: var(--lwh-shadow-lg); }
.lh-assign-modal__check { display: flex; align-items: center; gap: .5rem; padding: .4rem 0; font-size: .92rem; }

/* Oops modal (restricted child) */
.lh-oops-modal { position: fixed; inset: 0; z-index: 10001; display: flex; align-items: center; justify-content: center; background: rgba(0,0,0,.4); }
.lh-oops-modal__box { background: #fff; border-radius: var(--lwh-radius); padding: 2rem; max-width: 400px; text-align: center; box-shadow: var(--lwh-shadow-lg); }

/* Free limit wall */
.lh-free-wall { text-align: center; padding: 3rem 1.5rem; background: var(--lwh-grey-light); border-radius: var(--lwh-radius); }
.lh-free-wall h2 { color: var(--lwh-ink); }
.lh-free-wall p { color: var(--lwh-grey); }

/* Muted text */
.lh-muted { color: var(--lwh-grey); font-size: .88rem; }

/* Visibility */
@media (max-width: 768px) { .lwh-hide-mobile { display: none; } }
@media (min-width: 769px) { .lwh-hide-desktop { display: none; } }

/* Ensure body has space before footer */
.site-main, .lh-page-content { min-height: calc(100vh - 300px); }

/* WP admin bar offset */
.admin-bar .lh-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .lh-header { top: 46px; } }

/* Print */
@media print { .lh-header, .lh-footer, .lh-topbar, .lh-trust-marquee, .lh-curricbar, .lh-toolbar, .lh-catalogue__sidebar { display: none; } }


/* ==========================================================================
   19 — COMPAT: Match actual HTML class names in templates
   ========================================================================== */

/* Burger */
.lh-burger { display: none; background: none; border: 0; width: 36px; height: 36px; flex-direction: column; justify-content: center; align-items: center; gap: 5px; cursor: pointer; padding: 4px; }
.lh-burger span { display: block; width: 22px; height: 2.5px; background: var(--lwh-ink); border-radius: 2px; transition: all .2s; }
@media (max-width: 960px) { .lh-burger { display: flex; } }

/* Header actions (auth area) */
.lh-header__actions { display: flex; align-items: center; gap: .5rem; }
@media (max-width: 960px) { .lh-header__actions { display: none; } }

/* Curriculum bar inner */
.lh-curricbar__inner { display: flex; align-items: center; gap: .4rem; flex-wrap: nowrap; overflow-x: auto; max-width: 1300px; margin: 0 auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
.lh-curricbar__inner::-webkit-scrollbar { display: none; }
.lh-curricbar__age { font-size: .72rem; font-weight: 800; color: var(--lwh-coral); display: block; }
.lh-curricbar__stage { font-size: .88rem; font-weight: 800; color: var(--lwh-ink); display: block; }
.lh-curricbar__sub { font-size: .72rem; color: var(--lwh-grey); display: block; }
.lh-curricbar__all { font-size: .82rem; font-weight: 700; color: var(--lwh-coral); white-space: nowrap; margin-left: auto; }

/* Drawer overlay */
.lh-drawer-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.4); z-index: 10000; transition: opacity .25s; }
.lh-drawer-overlay[hidden] { display: none; }
.lh-drawer__head { display: flex; justify-content: space-between; align-items: center; padding-bottom: 1rem; border-bottom: 1px solid var(--lwh-border); }
.lh-drawer__close { background: none; border: 0; font-size: 1.8rem; color: var(--lwh-ink); cursor: pointer; }
.lh-drawer__actions { display: flex; flex-direction: column; gap: .5rem; margin-top: 1.5rem; padding-top: 1rem; border-top: 1px solid var(--lwh-border); }
.lh-drawer__actions .lh-btn { width: 100%; justify-content: center; }

/* Loader rings */
.lh-loader__stage { position: relative; width: 100px; height: 100px; }
.lh-loader__ring { position: absolute; inset: 0; border-radius: 50%; border: 3px solid transparent; }
.lh-loader__ring--1 { border-top-color: var(--lwh-coral); animation: lwhSpin .8s linear infinite; }
.lh-loader__ring--2 { inset: 8px; border-right-color: var(--lwh-purple); animation: lwhSpin 1.2s linear infinite reverse; }
.lh-loader__ring--3 { inset: 16px; border-bottom-color: var(--lwh-yellow); animation: lwhSpin 1.6s linear infinite; }
.lh-loader__logo { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 40px; height: 40px; }

/* Skip link */
.lh-skip { position: absolute; top: -100px; left: 0; background: var(--lwh-coral); color: #fff; padding: .5rem 1rem; z-index: 100000; font-weight: 700; }
.lh-skip:focus { top: 0; }

/* Sidebar pill (free views etc) */
.lh-catalogue__sidebar-pill { background: var(--lwh-coral-light); color: var(--lwh-coral); padding: .6rem .85rem; border-radius: var(--lwh-radius-sm); font-size: .85rem; font-weight: 700; text-align: center; margin-bottom: .5rem; }
.lh-catalogue__sidebar-pill a { color: var(--lwh-coral); font-weight: 800; }

/* Per-page suffix */
.lh-catalogue__perpage-suffix { font-size: .82rem; color: var(--lwh-grey); font-weight: 600; }

/* Hub page latest grid */
.lh-reshub__latest-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 1.25rem; margin: 1.5rem 0; }
.lh-reshub__more { text-align: center; margin-top: 1.5rem; }
.lh-reshub__section--all { background: var(--lwh-grey-light); }

/* Chat landing (already has inline styles but backup) */
.lhc-landing { --lhc-purple: #7c3aed; }

/* WP default content */
.lh-site-main { min-height: 60vh; }
.entry-content { max-width: var(--lwh-container); margin: 0 auto; padding: 1.5rem; }
.entry-content h1, .entry-content h2, .entry-content h3 { margin-bottom: .75rem; }
.entry-content p { margin-bottom: 1rem; color: var(--lwh-ink-soft); }
.entry-content ul, .entry-content ol { padding-left: 1.5rem; margin-bottom: 1rem; }
.entry-content li { margin-bottom: .35rem; }

/* Page title */
.lh-page-title { font-size: clamp(1.5rem, 4vw, 2.2rem); margin-bottom: 1rem; padding: 1.5rem 0 0; }

/* Generic form styles */
input[type="text"], input[type="email"], input[type="password"], input[type="number"], input[type="url"], input[type="search"], select, textarea {
  border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius-sm);
  padding: .55rem .75rem; font-size: .92rem; width: 100%;
  transition: border-color .15s;
}
input:focus, select:focus, textarea:focus { border-color: var(--lwh-coral); outline: none; box-shadow: 0 0 0 3px rgba(233,30,99,.1); }

/* WP block compat */
.wp-block-image { margin: 1.5rem 0; }
.wp-block-separator { border: 0; height: 1px; background: var(--lwh-border); margin: 2rem 0; }


/* ==========================================================================
   20 — FOOTER DEEP STYLES (matching template HTML)
   ========================================================================== */
.lh-footer__wave { color: var(--lwh-ink); margin-bottom: -1px; width: 100%; display: block; }
.lh-footer__trustband { background: rgba(255,255,255,.05); padding: 1.5rem; border-bottom: 1px solid rgba(255,255,255,.08); }
.lh-footer__trustband-inner { display: flex; justify-content: center; flex-wrap: wrap; gap: 1.5rem 3rem; max-width: 1200px; margin: 0 auto; }
.lh-trustchip { display: flex; align-items: center; gap: .6rem; }
.lh-trustchip__icon { font-size: 1.5rem; }
.lh-trustchip__title { font-size: .88rem; font-weight: 700; color: #fff; }
.lh-trustchip__sub { font-size: .78rem; color: rgba(255,255,255,.5); }

.lh-footer__columns { display: grid; grid-template-columns: repeat(6, 1fr); gap: 1.5rem; max-width: 1200px; margin: 0 auto; padding: 2.5rem 0; }
.lh-footer__col { }
.lh-footer__col-title { color: var(--lwh-yellow); font-family: 'Fredoka', sans-serif; font-size: .92rem; font-weight: 700; margin-bottom: .75rem; text-transform: uppercase; letter-spacing: .04em; }
.lh-footer__col a { display: block; padding: .2rem 0; font-size: .82rem; color: rgba(255,255,255,.55); transition: color .15s; }
.lh-footer__col a:hover { color: var(--lwh-coral); }
.lh-footer__col p { font-size: .82rem; color: rgba(255,255,255,.45); line-height: 1.5; }

@media (max-width: 960px) { .lh-footer__columns { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 640px) { .lh-footer__columns { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 400px) { .lh-footer__columns { grid-template-columns: 1fr; } }

/* Fun band */
.lh-footer__funband { background: rgba(255,255,255,.03); padding: 1.25rem; text-align: center; border-top: 1px solid rgba(255,255,255,.06); }
.lh-footer__funband p { color: rgba(255,255,255,.35); font-size: .82rem; margin: 0; }
.lh-footer__funband a { color: var(--lwh-coral); }

/* Legal/copyright band */
.lh-footer__legal { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: .5rem; max-width: 1200px; margin: 0 auto; padding: 1rem 0; border-top: 1px solid rgba(255,255,255,.08); font-size: .78rem; color: rgba(255,255,255,.35); }
.lh-footer__legal-links { display: flex; gap: 1rem; }
.lh-footer__legal-links a { color: rgba(255,255,255,.4); }
.lh-footer__legal-links a:hover { color: var(--lwh-coral); }
.lh-footer__legal-social { display: flex; gap: .75rem; }
.lh-footer__legal-social a { color: rgba(255,255,255,.4); font-size: 1rem; }
.lh-footer__legal-social a:hover { color: var(--lwh-coral); }

/* ==========================================================================
   21 — HOMEPAGE-SPECIFIC extras
   ========================================================================== */
/* Featured/latest resources carousel/grid on homepage */
.lh-home-latest__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 1.25rem; }
.lh-home-latest__more { text-align: right; margin-bottom: .5rem; }
.lh-home-latest__more a { color: var(--lwh-coral); font-weight: 700; font-size: .92rem; }

/* Testimonial cards */
.lh-testimonial { background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); padding: 1.5rem; }
.lh-testimonial__quote { font-size: .95rem; color: var(--lwh-ink-soft); line-height: 1.6; font-style: italic; margin-bottom: 1rem; }
.lh-testimonial__author { font-weight: 700; font-size: .88rem; }
.lh-testimonial__role { font-size: .78rem; color: var(--lwh-grey); }

/* Stats row */
.lh-stats-row { display: flex; justify-content: center; flex-wrap: wrap; gap: 2rem 4rem; padding: 2rem 0; }
.lh-stat { text-align: center; }
.lh-stat__num { font-family: 'Fredoka', sans-serif; font-size: 2.5rem; font-weight: 700; color: var(--lwh-coral); display: block; }
.lh-stat__label { font-size: .85rem; color: var(--lwh-grey); font-weight: 600; }

/* Board row (exam boards) */
.lh-board-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.25rem; }

/* Home audience grid */
.lh-audience-grid { display: grid; gap: 1.25rem; }
.lh-audience-grid--4 { grid-template-columns: repeat(2, 1fr); }
@media (min-width: 960px) { .lh-audience-grid--4 { grid-template-columns: repeat(4, 1fr); } }
.lh-audience-tile__head { display: flex; align-items: center; gap: .6rem; margin-bottom: .75rem; }
.lh-audience-tile__icon { font-size: 1.8rem; }

/* Subject grid */
.lh-subject-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: .75rem; }

/* Type cards grid */
.lh-type-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 1rem; }


/* ==========================================================================
   22 — CRITICAL LAYOUT FIXES
   ========================================================================== */

/* The ACTUAL grid container is __layout, not .lh-catalogue */
.lh-catalogue__layout {
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: 1.25rem;
}
@media (max-width: 959px) {
  .lh-catalogue__layout { grid-template-columns: 1fr; }
}
/* The mobile trigger sits outside the grid flow */
.lh-catalogue__mobile-trigger { grid-column: 1 / -1; }

/* Sidebar needs explicit constraints */
.lh-catalogue__sidebar { grid-row: 1 / 99; }
.lh-catalogue__main { min-width: 0; }

/* Catalogue hero (inline within catalogue, before layout) */
.lh-catalogue__hero {
  background: linear-gradient(135deg, var(--lwh-purple-dark) 0%, var(--lwh-purple) 100%);
  color: #fff;
  padding: clamp(2rem, 5vh, 3.5rem) 1.5rem;
  border-radius: var(--lwh-radius);
  margin-bottom: 1rem;
  text-align: center;
}
.lh-catalogue__hero h1, .lh-catalogue__eyebrow, .lh-catalogue__headline {
  color: #fff;
}
.lh-catalogue__lead { color: rgba(255,255,255,.8); }

/* Homepage hero — ensure gradient bg + proper text */
.lh-home-hero {
  background: linear-gradient(135deg, var(--lwh-purple-dark) 0%, var(--lwh-purple) 50%, #8E24AA 100%) !important;
  color: #fff !important;
  position: relative;
  overflow: hidden;
}
.lh-home-hero__bg {
  position: absolute; inset: 0; overflow: hidden; z-index: 0;
}
.lh-home-hero__blob {
  position: absolute; border-radius: 50%; opacity: .15;
}
.lh-home-hero__blob--1 { width: 500px; height: 500px; background: var(--lwh-coral); top: -150px; right: -100px; }
.lh-home-hero__blob--2 { width: 300px; height: 300px; background: var(--lwh-yellow); bottom: -80px; left: -60px; }
.lh-home-hero__blob--3 { width: 200px; height: 200px; background: #fff; top: 40%; left: 30%; }
.lh-home-hero__inner {
  position: relative; z-index: 2;
  max-width: 1200px; margin: 0 auto;
  padding: clamp(3rem, 8vh, 5rem) 1.5rem;
}
/* Hero text — guaranteed white on purple */
.lh-home-hero .lh-home-hero__headline,
.lh-home-hero h1 { color: #fff !important; }
.lh-home-hero .lh-home-hero__lead { color: rgba(255,255,255,.85) !important; }
.lh-home-hero .lh-home-hero__eyebrow { color: var(--lwh-yellow) !important; }
.lh-home-hero .lh-home-hero__highlight { color: var(--lwh-yellow) !important; -webkit-text-fill-color: var(--lwh-yellow) !important; }
.lh-home-hero .lh-home-hero__bullets li { color: rgba(255,255,255,.8) !important; }

/* Free resources hero */
.lh-free-hero, .lh-cat-hero {
  background: linear-gradient(135deg, var(--lwh-purple-dark), var(--lwh-purple)) !important;
  color: #fff; padding: clamp(2rem, 5vh, 3.5rem) 1.5rem; text-align: center;
  margin-bottom: 1rem; border-radius: var(--lwh-radius);
}
.lh-free-hero h1, .lh-cat-hero h1, .lh-free-hero h2 { color: #fff; }
.lh-free-hero p, .lh-cat-hero p { color: rgba(255,255,255,.8); }

/* Sidebar in catalogue — contained width on desktop */
@media (min-width: 960px) {
  .lh-catalogue__sidebar {
    position: static !important;
    width: auto !important;
    height: auto !important;
    transform: none !important;
    z-index: auto !important;
    box-shadow: none !important;
    border-radius: 0 !important;
    padding: 0 !important;
    overflow: visible !important;
  }
}

/* Drawer head/close — hidden on desktop */
@media (min-width: 960px) {
  .lh-catalogue__drawer-head { display: none; }
  .lh-catalogue__drawer-apply { display: none; }
}

/* Filter dropdown body */
.lh-filterdrop__body { padding: .25rem .75rem .5rem; }

/* Search input in catalogue */
.lh-catalogue__search-input { flex: 1; }

/* Catalogue main head (toolbar row) */
.lh-catalogue__main-head {
  display: flex; align-items: center; flex-wrap: wrap; gap: .75rem;
  padding: .75rem 0; border-bottom: 1px solid var(--lwh-border); margin-bottom: 1rem;
}

/* Ensure the .lh-catalogue wraps everything */
.lh-catalogue { padding: 0 1.5rem; max-width: 1300px; margin: 0 auto; }

/* Visually hidden helper */
.lh-visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); border: 0; }


/* ==========================================================================
   23 — ASSIGN MODAL
   ========================================================================== */
.lh-assign-modal__backdrop { position: fixed; inset: 0; background: rgba(0,0,0,.5); z-index: 10000; backdrop-filter: blur(4px); }
.lh-assign-modal__panel { position: fixed; top: 50%; left: 50%; transform: translate(-50%,-50%); background: #fff; border-radius: var(--lwh-radius); padding: 2rem; max-width: 480px; width: 90%; z-index: 10001; box-shadow: var(--lwh-shadow-lg); max-height: 90vh; overflow-y: auto; }
.lh-assign-modal__title { font-family: 'Fredoka', sans-serif; font-size: 1.3rem; font-weight: 700; margin-bottom: .75rem; }
.lh-assign-modal__intro { font-size: .9rem; color: var(--lwh-grey); margin-bottom: 1rem; }
.lh-assign-modal__close { position: absolute; top: .75rem; right: .75rem; background: none; border: 0; font-size: 1.5rem; color: var(--lwh-grey); cursor: pointer; }
.lh-assign-modal__people-head { font-weight: 700; font-size: .88rem; margin-bottom: .5rem; }
.lh-assign-modal__list { margin-bottom: 1rem; }
.lh-assign-modal__row { display: flex; align-items: center; gap: .5rem; padding: .4rem 0; }
.lh-assign-modal__avatar { width: 32px; height: 32px; border-radius: 50%; font-size: 1.2rem; text-align: center; line-height: 32px; }
.lh-assign-modal__name { font-weight: 600; font-size: .92rem; }
.lh-assign-modal__selectall { font-size: .82rem; color: var(--lwh-coral); font-weight: 700; cursor: pointer; background: none; border: 0; }
.lh-assign-modal__field { margin-bottom: .75rem; }
.lh-assign-modal__fieldlabel { display: block; font-size: .82rem; font-weight: 700; margin-bottom: .25rem; }
.lh-assign-modal__date { width: 100%; }
.lh-assign-modal__feedback { font-size: .85rem; padding: .5rem; border-radius: var(--lwh-radius-xs); text-align: center; margin-top: .5rem; }
.lh-assign-modal__feedback.is-good { background: #D1FAE5; color: #065F46; }
.lh-assign-modal__feedback.is-bad { background: #FEE2E2; color: #991B1B; }
.lh-assign-modal__feedback.is-pending { background: var(--lwh-yellow-light); color: #92400E; }
.lh-assign-modal__feedback.is-warn { background: #FEF3C7; color: #92400E; }
.lh-assign-modal__actions { display: flex; gap: .5rem; margin-top: 1rem; }
.lh-assign-modal__submit { flex: 1; }

/* ==========================================================================
   24 — VIEWER (PDF, embed, native players)
   ========================================================================== */
.lh-viewer { border-radius: var(--lwh-radius); overflow: hidden; margin: 1rem 0; background: #fff; border: 1.5px solid var(--lwh-border); }
.lh-viewer--restricted-embed { text-align: center; }
.lh-viewer__lockbanner { background: var(--lwh-coral-light); padding: .75rem 1rem; font-size: .88rem; text-align: center; }
.lh-viewer__lockicon { font-size: 3rem; margin-bottom: .75rem; display: block; }
.lh-viewer__blurplaceholder { padding: 3rem 1.5rem; text-align: center; background: var(--lwh-grey-light); }
.lh-viewer__blurplaceholder h3 { margin-bottom: 1rem; }
.lh-viewer__canvas-wrap { position: relative; overflow: auto; max-height: 80vh; }
.lh-viewer__canvas { display: block; margin: 0 auto; }
.lh-viewer__toolbar { display: flex; align-items: center; justify-content: center; gap: .5rem; padding: .6rem; background: var(--lwh-ink); }
.lh-viewer__toolbar button { background: rgba(255,255,255,.1); border: 0; color: #fff; padding: .35rem .6rem; border-radius: var(--lwh-radius-xs); font-size: .85rem; cursor: pointer; }
.lh-viewer__toolbar button:hover { background: rgba(255,255,255,.2); }
.lh-viewer__page { color: rgba(255,255,255,.7); font-size: .82rem; font-weight: 600; }
.lh-viewer__zoom-label { color: rgba(255,255,255,.7); font-size: .78rem; }
.lh-viewer__nav { display: flex; gap: .35rem; }
.lh-viewer__watermark { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%) rotate(-30deg); font-size: 3rem; color: rgba(233,30,99,.08); pointer-events: none; white-space: nowrap; font-weight: 800; }
.lh-viewer__actions { display: flex; gap: .5rem; justify-content: center; padding: .75rem; }
.lh-viewer__hint { text-align: center; padding: .5rem; font-size: .82rem; color: var(--lwh-grey); }
.lh-viewer__error { text-align: center; padding: 2rem; color: var(--lwh-error); }
.lh-viewer--embed-html iframe, .lh-viewer--embed-url iframe { width: 100%; min-height: 500px; border: 0; border-radius: var(--lwh-radius); }
.lh-viewer--inline-html { padding: 1rem; }
.lh-viewer--empty { padding: 2rem; text-align: center; color: var(--lwh-grey); }

/* ==========================================================================
   25 — RESOURCE PAGE INTERNALS
   ========================================================================== */
.lh-rp-title { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .5rem; padding: 1rem 0; }
.lh-rp-title__main { display: flex; align-items: center; gap: .5rem; }
.lh-rp-title__h { font-size: clamp(1.3rem, 3vw, 1.8rem); margin: 0; }
.lh-rp-title__type { display: flex; align-items: center; gap: .25rem; font-size: .82rem; font-weight: 700; color: var(--lwh-grey); }
.lh-rp-title__type-icon { font-size: 1.2rem; }
.lh-rp-title__pill { font-size: .75rem; font-weight: 800; padding: .2rem .5rem; border-radius: var(--lwh-radius-pill); }
.lh-rp-progress { margin: .5rem 0 1rem; }
.lh-rp-progress__head { display: flex; justify-content: space-between; align-items: center; margin-bottom: .35rem; font-size: .82rem; }
.lh-rp-progress__label { font-weight: 700; color: var(--lwh-ink); }
.lh-rp-progress__pct { font-weight: 800; color: var(--lwh-coral); }
.lh-rp-progress__bar { height: 8px; background: var(--lwh-grey-light); border-radius: 4px; overflow: hidden; }
.lh-rp-progress__fill { height: 100%; background: linear-gradient(90deg, var(--lwh-success), #4ADE80); border-radius: 4px; }
.lh-rp-progress__signin { text-align: center; padding: .5rem; font-size: .82rem; color: var(--lwh-grey); }
.lh-rp-about summary, .lh-rp-about__summary { padding: 1rem 1.25rem; font-family: 'Fredoka', sans-serif; font-weight: 700; cursor: pointer; list-style: none; display: flex; justify-content: space-between; align-items: center; }
.lh-rp-about summary::-webkit-details-marker { display: none; }
.lh-rp-about__caret { font-size: .8rem; color: var(--lwh-coral); transition: transform .2s; }
.lh-rp-about__h { font-size: 1.1rem; }
.lh-rp-about__hint { font-size: .82rem; color: var(--lwh-grey); margin-left: auto; padding-left: 1rem; }
.lh-rp-about__body { padding: 0 1.25rem 1.25rem; }
.lh-rp-meta__icon { font-size: 1.3rem; margin-bottom: .35rem; }
.lh-rp-meta__h { font-family: 'Fredoka', sans-serif; font-size: .95rem; margin-bottom: .25rem; color: var(--lwh-coral); }
.lh-rp-meta__body { font-size: .88rem; color: var(--lwh-grey); line-height: 1.5; }
.lh-rp-meta__sub { font-size: .78rem; color: var(--lwh-grey); margin-top: .25rem; }
.lh-rp-related__h { font-size: 1.2rem; margin-bottom: 1rem; }
.lh-rp-related__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 1rem; }

/* ==========================================================================
   26 — AUTH PAGES (backgrounds, shapes, cards)
   ========================================================================== */
.lh-authpage { min-height: 100vh; display: flex; align-items: stretch; }
.lh-authpage__main { flex: 1; display: flex; align-items: center; justify-content: center; padding: 2rem; position: relative; overflow: hidden; }
.lh-authpage__bar { position: absolute; bottom: 0; left: 0; right: 0; padding: .5rem 1rem; font-size: .78rem; color: rgba(255,255,255,.4); display: flex; justify-content: space-between; }
.lh-authpage__bar-links a { color: rgba(255,255,255,.5); margin: 0 .5rem; }
.lh-authpage__foot { text-align: center; font-size: .78rem; color: rgba(255,255,255,.4); padding: .75rem; }
.lh-authpage__brand { text-align: center; margin-bottom: 1.5rem; }
.lh-authpage__brand-a { color: #fff; font-family: 'Fredoka', sans-serif; font-size: 1.3rem; font-weight: 700; }
.lh-authpage__brand-b { color: var(--lwh-coral); }
.lh-authbg { position: absolute; inset: 0; overflow: hidden; z-index: 0; }
.lh-authbg__aurora, .lh-authbg__wave, .lh-authbg__grid, .lh-authbg__beam, .lh-authbg__circle, .lh-authbg__dot, .lh-authbg__star, .lh-authbg__particle, .lh-authbg__sun { position: absolute; }
.lh-authcard { position: relative; z-index: 2; background: rgba(255,255,255,.95); border-radius: var(--lwh-radius); box-shadow: var(--lwh-shadow-lg); padding: 2rem; width: 100%; max-width: 440px; backdrop-filter: blur(8px); }
.lh-authcard--register { max-width: 520px; }
.lh-authcard__h { font-family: 'Fredoka', sans-serif; font-size: 1.5rem; text-align: center; margin-bottom: .5rem; }
.lh-authcard__lead { text-align: center; color: var(--lwh-grey); margin-bottom: 1.5rem; font-size: .92rem; }
.lh-authcard__form { }
.lh-authcard__form-h { font-size: 1.1rem; font-weight: 700; margin-bottom: .25rem; }
.lh-authcard__form-sub { font-size: .85rem; color: var(--lwh-grey); margin-bottom: 1rem; }
.lh-authcard__cta-row, .lh-authcard__cta-block { display: flex; gap: .5rem; margin-top: 1rem; }
.lh-authcard__cta-block { flex-direction: column; }
.lh-authcard__trust { text-align: center; margin-top: 1rem; font-size: .78rem; color: var(--lwh-grey); }
.lh-authcard__perks { margin: 1rem 0; font-size: .85rem; color: var(--lwh-ink-soft); }
.lh-authcard__perks li { padding: .2rem 0; }
.lh-authcard__perks li::before { content: "✓ "; color: var(--lwh-success); font-weight: 700; }
.lh-authcard__chip { display: inline-block; padding: .15rem .4rem; border-radius: var(--lwh-radius-xs); font-size: .72rem; font-weight: 700; background: var(--lwh-coral-light); color: var(--lwh-coral); }
.lh-authcard__copy { text-align: center; font-size: .82rem; color: var(--lwh-grey); margin-top: 1rem; }
.lh-authcard__copy a { color: var(--lwh-coral); font-weight: 700; }
.lh-authrow { display: flex; gap: .75rem; margin-bottom: .75rem; }
.lh-authrow > * { flex: 1; }
.lh-auth-shape { position: absolute; border-radius: 50%; opacity: .1; }
.lh-auth-shapes { position: absolute; inset: 0; overflow: hidden; z-index: 0; pointer-events: none; }
.lh-auth-stage { min-height: 100vh; display: flex; position: relative; overflow: hidden; }
.lh-auth-stage--sky { background: linear-gradient(135deg, var(--lwh-purple-dark), var(--lwh-purple), #8E24AA); }
.lh-auth-stage__panel { flex: 1; display: flex; align-items: center; justify-content: center; padding: 2rem; position: relative; z-index: 2; }
.lh-auth-stage__panel--welcome { color: #fff; text-align: center; max-width: 480px; }
.lh-auth-stage__panel--form { background: rgba(255,255,255,.02); }
.lh-auth-stage__h { font-size: 2rem; color: #fff; margin-bottom: .5rem; }
.lh-auth-stage__lead { color: rgba(255,255,255,.7); font-size: 1rem; margin-bottom: 1.5rem; }
.lh-auth-stage__list { text-align: left; margin: 1.5rem auto; max-width: 320px; }
.lh-auth-stage__list li { padding: .3rem 0; color: rgba(255,255,255,.8); font-size: .9rem; }
.lh-auth-stage__list li::before { content: "✓ "; color: var(--lwh-yellow); font-weight: 700; }
.lh-auth-stage__emblem { font-size: 3rem; margin-bottom: 1rem; }
.lh-auth-stage__copy { font-size: .82rem; color: rgba(255,255,255,.4); margin-top: 2rem; }
.lh-google-signin { margin: 1rem 0; }
.lh-google-signin__btn-wrap { text-align: center; }
.lh-google-signin__divider { text-align: center; color: var(--lwh-grey); font-size: .82rem; margin: 1rem 0; position: relative; }
.lh-google-signin__divider::before, .lh-google-signin__divider::after { content: ""; position: absolute; top: 50%; width: 40%; height: 1px; background: var(--lwh-border); }
.lh-google-signin__divider::before { left: 0; }
.lh-google-signin__divider::after { right: 0; }

/* ==========================================================================
   27 — LANDING PAGES (Parent/Teacher)
   ========================================================================== */
.lh-landing__hero { background: linear-gradient(135deg, var(--lwh-purple-dark), var(--lwh-purple)); color: #fff; padding: clamp(3rem, 8vh, 5rem) 1.5rem; text-align: center; position: relative; overflow: hidden; }
.lh-landing__hero-inner { position: relative; z-index: 2; max-width: 720px; margin: 0 auto; }
.lh-landing__eyebrow { color: var(--lwh-yellow); }
.lh-landing__h1 { color: #fff; font-size: clamp(2rem, 5vw, 3rem); margin-bottom: .75rem; }
.lh-landing__lead { color: rgba(255,255,255,.8); font-size: clamp(.95rem, 2vw, 1.15rem); margin: 0 auto 2rem; max-width: 600px; }
.lh-landing__section { padding: var(--lwh-section-pad) 1.5rem; }
.lh-landing__inner { max-width: 1200px; margin: 0 auto; }
.lh-landing__split { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; align-items: center; }
@media (max-width: 768px) { .lh-landing__split { grid-template-columns: 1fr; } }
.lh-landing__split-text h2 { margin-bottom: .75rem; }
.lh-landing__split-text p { color: var(--lwh-grey); }
.lh-landing__feature-list { margin: 1rem 0; }
.lh-landing__feature-list li { padding: .3rem 0; font-size: .92rem; }
.lh-landing__feature-list li::before { content: "✓ "; color: var(--lwh-success); font-weight: 700; }
.lh-landing__mock { background: var(--lwh-grey-light); border-radius: var(--lwh-radius); overflow: hidden; border: 1.5px solid var(--lwh-border); }
.lh-landing__mock-head { background: var(--lwh-ink); padding: .5rem .75rem; display: flex; align-items: center; gap: .35rem; }
.lh-landing__mock-dot { width: 10px; height: 10px; border-radius: 50%; }
.lh-landing__mock-dot--r { background: #EF4444; }
.lh-landing__mock-dot--y { background: #F59E0B; }
.lh-landing__mock-dot--g { background: #22C55E; }
.lh-landing__mock-body { padding: 1rem; }
.lh-landing__mock-card { background: #fff; border-radius: var(--lwh-radius-sm); padding: .75rem; margin-bottom: .5rem; border: 1px solid var(--lwh-border); }
.lh-landing__reasons { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1rem; }
.lh-landing__reason { display: flex; gap: .75rem; padding: 1rem; background: #fff; border: 1px solid var(--lwh-border); border-radius: var(--lwh-radius); }
.lh-landing__reason-icon { font-size: 1.5rem; flex-shrink: 0; }
.lh-landing__cta-band { background: var(--lwh-coral); color: #fff; text-align: center; padding: 2.5rem 1.5rem; }
.lh-landing__cta-band h2 { color: #fff; margin-bottom: .5rem; }
.lh-landing__cta-band p { color: rgba(255,255,255,.85); margin-bottom: 1.25rem; }
.lh-landing__cta-row { display: flex; gap: .5rem; justify-content: center; }

/* ==========================================================================
   28 — ASSESSMENT WIDGET (Dashboard)
   ========================================================================== */
.lh-assess-widget { background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); padding: 1.5rem; }
.lh-assess-widget__head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem; }
.lh-assess-widget__title { font-family: 'Fredoka', sans-serif; font-size: 1.1rem; font-weight: 700; }
.lh-assess-widget__eyebrow { font-size: .75rem; font-weight: 700; text-transform: uppercase; color: var(--lwh-coral); }
.lh-assess-widget__stats { display: flex; gap: 1.5rem; margin-bottom: 1rem; }
.lh-assess-stat { text-align: center; }
.lh-assess-stat__num { font-family: 'Fredoka', sans-serif; font-size: 1.5rem; font-weight: 700; color: var(--lwh-coral); display: block; }
.lh-assess-stat__label { font-size: .75rem; color: var(--lwh-grey); }
.lh-assess-level { display: inline-block; padding: .15rem .4rem; border-radius: var(--lwh-radius-xs); font-size: .72rem; font-weight: 800; }
.lh-assess-status { display: inline-block; padding: .15rem .4rem; border-radius: var(--lwh-radius-xs); font-size: .72rem; font-weight: 800; }
.lh-assess-widget__feed { margin-top: 1rem; }
.lh-assess-widget__feed-item { display: flex; align-items: center; gap: .5rem; padding: .4rem 0; border-bottom: 1px solid var(--lwh-grey-light); font-size: .85rem; }
.lh-assess-widget__feed-icon { font-size: 1rem; }
.lh-assess-widget__feed-percent { font-weight: 800; color: var(--lwh-coral); margin-left: auto; }
.lh-assess-widget__feed-ago { font-size: .75rem; color: var(--lwh-grey); }
.lh-assess-widget__weak { margin-top: 1rem; }
.lh-assess-widget__weak-icon { font-size: 1rem; margin-right: .25rem; }
.lh-assess-widget__weak-hint { font-size: .78rem; color: var(--lwh-grey); }
.lh-assess-widget__weak-pack a { color: var(--lwh-coral); font-weight: 700; font-size: .82rem; }
.lh-assess-widget__empty { text-align: center; padding: 2rem; color: var(--lwh-grey); }
.lh-assess-widget__empty-icon { font-size: 2rem; margin-bottom: .5rem; display: block; }
.lh-assess-widget__cta { text-align: center; margin-top: 1rem; }
.lh-assess-widget__table-wrap { overflow-x: auto; }
.lh-assess-widget__section { margin-bottom: 1.5rem; }
.lh-assess-widget__h3 { font-size: 1rem; font-weight: 700; margin-bottom: .5rem; }

/* ==========================================================================
   29 — AGE GATE + MISC COMPONENTS
   ========================================================================== */
.lh-agegate { position: fixed; inset: 0; z-index: 99999; background: rgba(0,0,0,.7); display: flex; align-items: center; justify-content: center; backdrop-filter: blur(8px); }
.lh-agegate__card { background: #fff; border-radius: var(--lwh-radius); padding: 2rem; max-width: 400px; width: 90%; text-align: center; box-shadow: var(--lwh-shadow-lg); }
.lh-agegate__h { font-family: 'Fredoka', sans-serif; font-size: 1.3rem; margin-bottom: .5rem; }
.lh-agegate__lead { color: var(--lwh-grey); font-size: .92rem; margin-bottom: 1.25rem; }
.lh-agegate__label { display: block; font-weight: 700; font-size: .88rem; margin-bottom: .25rem; text-align: left; }
.lh-agegate__hint { font-size: .78rem; color: var(--lwh-grey); margin-top: .5rem; }
.lh-agegate__expired { color: var(--lwh-error); font-weight: 700; margin-top: .5rem; }
.lh-agegate__modal { position: fixed; inset: 0; z-index: 100000; display: flex; align-items: center; justify-content: center; }
.lh-agegate__modal-inner { background: #fff; border-radius: var(--lwh-radius); padding: 2rem; max-width: 380px; text-align: center; }

/* Child manager extras */
.lh-childmgr__head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem; }
.lh-childmgr__title { font-family: 'Fredoka', sans-serif; font-size: 1.2rem; font-weight: 700; }
.lh-childmgr__slots { font-size: .85rem; color: var(--lwh-grey); }
.lh-childmgr__info { font-size: .85rem; color: var(--lwh-ink-soft); }
.lh-childmgr__actions { display: flex; gap: .35rem; margin-top: .5rem; }
.lh-childmgr__edit-btn, .lh-childmgr__remove-btn { font-size: .78rem; padding: .25rem .5rem; border-radius: var(--lwh-radius-xs); border: 1px solid var(--lwh-border); background: #fff; cursor: pointer; }
.lh-childmgr__remove-btn { color: var(--lwh-error); border-color: var(--lwh-error); }
.lh-childmgr__modal { position: fixed; inset: 0; z-index: 10001; display: flex; align-items: center; justify-content: center; background: rgba(0,0,0,.5); }
.lh-childmgr__modal-card { background: #fff; border-radius: var(--lwh-radius); padding: 2rem; max-width: 480px; width: 90%; box-shadow: var(--lwh-shadow-lg); }
.lh-childmgr__modal-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem; }
.lh-childmgr__modal-close { background: none; border: 0; font-size: 1.5rem; cursor: pointer; }
.lh-childmgr__modal-foot { display: flex; gap: .5rem; margin-top: 1rem; }
.lh-childmgr__avatars { display: grid; grid-template-columns: repeat(auto-fill, minmax(48px, 1fr)); gap: .5rem; margin: .75rem 0; }
.lh-childmgr__avpick { width: 48px; height: 48px; border-radius: 50%; font-size: 1.5rem; text-align: center; line-height: 48px; border: 2px solid var(--lwh-border); cursor: pointer; transition: border-color .15s; }
.lh-childmgr__avpick:hover, .lh-childmgr__avpick.is-selected { border-color: var(--lwh-coral); }
.lh-childmgr__stages, .lh-childmgr__subjects { display: flex; flex-wrap: wrap; gap: .35rem; margin: .5rem 0; }
.lh-childmgr__stage-opt, .lh-childmgr__subject-opt { padding: .25rem .5rem; border-radius: var(--lwh-radius-xs); border: 1px solid var(--lwh-border); font-size: .78rem; cursor: pointer; }
.lh-childmgr__stage-opt:hover, .lh-childmgr__subject-opt:hover { border-color: var(--lwh-coral); }
.lh-childmgr__add-card { border: 2px dashed var(--lwh-border); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .5rem; cursor: pointer; color: var(--lwh-grey); font-weight: 700; min-height: 160px; transition: border-color .2s; border-radius: var(--lwh-radius); }
.lh-childmgr__add-card:hover { border-color: var(--lwh-coral); color: var(--lwh-coral); }
.lh-childmgr__add-icon { font-size: 2rem; }
.lh-childmgr__add-label { font-size: .95rem; }
.lh-childmgr__add-sub { font-size: .78rem; color: var(--lwh-grey); }

/* Control panel (backend) */
.lh-cpanel { padding: 1.5rem; }
.lh-cpanel__lead { color: var(--lwh-grey); margin-bottom: 1.5rem; }
.lh-cpanel__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1rem; margin-bottom: 2rem; }
.lh-cpanel__card { background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); padding: 1.25rem; }
.lh-cpanel__card--settings { background: var(--lwh-yellow-light); }
.lh-cpanel__btn { margin: .25rem; }
.lh-cpanel__btns { display: flex; flex-wrap: wrap; gap: .35rem; }

/* Brand logo */
.lh-brand { display: flex; align-items: center; gap: .5rem; text-decoration: none; }
.lh-brand__icon { width: 42px; height: 42px; }
.lh-brand__text { font-family: 'Fredoka', sans-serif; font-size: 1.2rem; font-weight: 700; }
.lh-brand__text-a { color: var(--lwh-ink); }
.lh-brand__text-b { color: var(--lwh-coral); }
.lh-brand__chip { font-size: .65rem; font-weight: 800; padding: .1rem .3rem; border-radius: 3px; background: var(--lwh-coral-light); color: var(--lwh-coral); vertical-align: super; }

/* Avatar */
.lh-avatar { display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; background: var(--lwh-grey-light); font-size: 1.2rem; }
.lh-avatar--preset { background: var(--lwh-yellow-light); }
.lh-avatar--custom img { border-radius: 50%; width: 100%; height: 100%; object-fit: cover; }

/* Misc */
.lh-check { display: flex; align-items: center; gap: .4rem; }
.lh-pill { display: inline-block; padding: .15rem .4rem; border-radius: var(--lwh-radius-pill); font-size: .72rem; font-weight: 700; }
.lh-pill--danger { background: #FEE2E2; color: #991B1B; }
.lh-empty-state { text-align: center; padding: 3rem 1.5rem; color: var(--lwh-grey); }
.lh-empty-state__icon { font-size: 3rem; margin-bottom: .75rem; display: block; }
.lh-field { margin-bottom: .75rem; }
.lh-field label { display: block; font-weight: 700; font-size: .88rem; margin-bottom: .25rem; }
.lh-field--check { display: flex; align-items: center; gap: .4rem; }
.lh-field-row { display: flex; gap: .75rem; }
.lh-field-row > * { flex: 1; }
.lh-filter-pill { display: inline-block; padding: .25rem .5rem; border-radius: var(--lwh-radius-pill); font-size: .78rem; font-weight: 700; border: 1.5px solid var(--lwh-border); cursor: pointer; }
.lh-filter-pill:hover { border-color: var(--lwh-coral); }
.lh-filter-pill--free  { background: #D1FAE5; border-color: #D1FAE5; color: #065F46; }
.lh-filter-pill--pro   { background: #FEF3C7; border-color: #FEF3C7; color: #92400E; }
.lh-filter-pill--elite { background: var(--lwh-purple-light); border-color: var(--lwh-purple-light); color: var(--lwh-purple); }
.lh-cta-inline { background: var(--lwh-coral-light); border-radius: var(--lwh-radius); padding: 1.5rem; text-align: center; margin: 1.5rem 0; }
.lh-cta-inline h3, .lh-cta-banner h2 { margin-bottom: .5rem; }
.lh-managed-pill { display: inline-block; font-size: .72rem; font-weight: 700; padding: .15rem .35rem; border-radius: var(--lwh-radius-xs); background: var(--lwh-purple-light); color: var(--lwh-purple); }
.lh-suspended-badge { background: #FEE2E2; color: #991B1B; font-size: .72rem; font-weight: 700; padding: .15rem .35rem; border-radius: var(--lwh-radius-xs); }
.lh-sitemap { max-width: var(--lwh-container); margin: 0 auto; padding: 1.5rem; }
.lh-sitemap__hero { background: linear-gradient(135deg, var(--lwh-purple-dark), var(--lwh-purple)); color: #fff; padding: 2rem 1.5rem; border-radius: var(--lwh-radius); text-align: center; margin-bottom: 2rem; }
.lh-sitemap__h1 { color: #fff; margin-bottom: .5rem; }
.lh-sitemap__lead { color: rgba(255,255,255,.7); }
.lh-sitemap__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1.5rem; }
.lh-sitemap__col h2 { font-size: 1.1rem; margin-bottom: .5rem; }
.lh-sitemap__col a { display: block; padding: .2rem 0; color: var(--lwh-coral); font-size: .88rem; }
.lh-sitemap__count { font-size: .75rem; color: var(--lwh-grey); }


/* ==========================================================================
   30 — REMAINING COMPONENT COVERAGE
   ========================================================================== */

/* Resource header (single resource page top area) */
.lh-resource-header { display: flex; flex-wrap: wrap; gap: .75rem; align-items: center; padding: 1rem 0; }
.lh-resource-header__topline { display: flex; align-items: center; gap: .5rem; width: 100%; }
.lh-resource-header__type { display: flex; align-items: center; gap: .25rem; font-size: .82rem; font-weight: 700; color: var(--lwh-grey); }
.lh-resource-header__type-icon { font-size: 1.2rem; }
.lh-resource-header__chip, .lh-resource-header__chips { display: flex; gap: .3rem; }
.lh-resource-header__cols { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 1rem; }
.lh-resource-header__col { font-size: .85rem; }
.lh-resource-header__section-title { font-weight: 700; font-size: .78rem; color: var(--lwh-grey); text-transform: uppercase; margin-bottom: .25rem; }
.lh-resource-header__stage, .lh-resource-header__duration, .lh-resource-header__purpose { font-weight: 600; }
.lh-resource-header__progress { margin-top: .5rem; }

/* Resource intro */
.lh-resource-intro { padding: 1.25rem; background: var(--lwh-grey-light); border-radius: var(--lwh-radius); margin: 1rem 0; }
.lh-resource-intro__title { font-family: 'Fredoka', sans-serif; font-size: 1.1rem; font-weight: 700; margin-bottom: .5rem; }
.lh-resource-intro__heading { font-size: 1rem; font-weight: 700; margin: .75rem 0 .25rem; }
.lh-resource-intro__prose { font-size: .9rem; color: var(--lwh-ink-soft); line-height: 1.6; }
.lh-resource-intro__inside, .lh-resource-intro__insidelist { margin: .5rem 0; }
.lh-resource-intro__insidelist li { padding: .2rem 0; font-size: .88rem; }
.lh-resource-intro__guidance { margin: .75rem 0; padding: .75rem; border-radius: var(--lwh-radius-sm); font-size: .88rem; }
.lh-resource-intro__guidance--check { background: #D1FAE5; }
.lh-resource-intro__guidance--parent { background: var(--lwh-coral-light); }
.lh-resource-intro__guidance--teacher { background: var(--lwh-purple-light); }
.lh-resource-intro__guidance--student { background: var(--lwh-yellow-light); }
.lh-resource-intro__segments { display: flex; gap: .5rem; flex-wrap: wrap; margin: .5rem 0; }
.lh-resource-intro__seglist { display: flex; gap: .25rem; flex-wrap: wrap; }
.lh-resource-intro__segitem, .lh-resource-intro__segref { font-size: .78rem; padding: .15rem .35rem; border-radius: var(--lwh-radius-xs); background: var(--lwh-grey-light); }
.lh-resource-intro__related { margin-top: 1rem; }
.lh-resource-intro__relatedlist { display: flex; flex-direction: column; gap: .25rem; }
.lh-resource-intro__relatedlink { color: var(--lwh-coral); font-weight: 600; font-size: .88rem; }
.lh-resource-intro__relatedtype { font-size: .72rem; color: var(--lwh-grey); }
.lh-resource-intro__tracking { display: flex; align-items: center; gap: .35rem; margin-top: .5rem; font-size: .82rem; color: var(--lwh-success); font-weight: 700; }
.lh-resource-intro__tracking-icon { font-size: 1rem; }

/* Category landing (taxonomy archive page) */
.lh-catland__hero { background: linear-gradient(135deg, var(--lwh-purple-dark), var(--lwh-purple)); color: #fff; padding: clamp(2rem, 5vh, 3.5rem) 1.5rem; text-align: center; border-radius: var(--lwh-radius); margin-bottom: 1.5rem; }
.lh-catland__hero-inner { max-width: 720px; margin: 0 auto; }
.lh-catland__eyebrow { color: var(--lwh-yellow); font-size: .82rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; }
.lh-catland__h { color: #fff; font-size: clamp(1.5rem, 4vw, 2.5rem); margin: .5rem 0; }
.lh-catland__lead { color: rgba(255,255,255,.8); max-width: 600px; margin: 0 auto .75rem; }
.lh-catland__sub { color: rgba(255,255,255,.6); font-size: .88rem; }
.lh-catland__meta { display: flex; justify-content: center; gap: 1.5rem; margin-top: 1rem; font-size: .88rem; color: rgba(255,255,255,.7); }
.lh-catland__cta { margin-top: 1rem; }
.lh-catland__filters { display: flex; gap: .35rem; flex-wrap: wrap; justify-content: center; margin: 1rem 0; }
.lh-catland__filterslabel { font-size: .82rem; color: var(--lwh-grey); font-weight: 600; }
.lh-catland__filterpill { padding: .3rem .6rem; border-radius: var(--lwh-radius-pill); font-size: .78rem; font-weight: 700; border: 1.5px solid var(--lwh-border); }
.lh-catland__filterpill:hover { border-color: var(--lwh-coral); }
.lh-catland__sectionh { font-size: 1.3rem; margin-bottom: 1rem; }
.lh-catland__subgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 1rem; margin-bottom: 2rem; }
.lh-catland__subcard { background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); padding: 1.15rem; text-decoration: none; color: var(--lwh-ink); transition: border-color .2s; }
.lh-catland__subcard:hover { border-color: var(--lwh-coral); }
.lh-catland__subcard-meta { font-size: .78rem; color: var(--lwh-grey); margin-top: .25rem; }
.lh-catland__results { margin-top: 1.5rem; }

/* Showcase (topic packs/collections) */
.lh-showcase { position: relative; overflow: hidden; }
.lh-showcase__viewport { overflow-x: auto; scroll-snap-type: x mandatory; display: flex; gap: 1rem; -webkit-overflow-scrolling: touch; }
.lh-showcase__card { flex: 0 0 280px; scroll-snap-align: start; background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); padding: 1.25rem; }
.lh-showcase__icon { font-size: 2rem; margin-bottom: .5rem; }
.lh-showcase__title { font-weight: 700; margin-bottom: .25rem; }
.lh-showcase__count { font-size: .78rem; color: var(--lwh-grey); }
.lh-showcase__badge { position: absolute; top: 8px; right: 8px; }
.lh-showcase__cta { color: var(--lwh-coral); font-weight: 700; font-size: .85rem; margin-top: .5rem; display: block; }
.lh-showcase__track { display: flex; justify-content: center; gap: .35rem; margin-top: .75rem; }

/* Plans modern */
.lh-plans-modern { max-width: var(--lwh-container); margin: 0 auto; padding: var(--lwh-section-pad) 1.5rem; }
.lh-plans-modern__head { text-align: center; margin-bottom: 2rem; }
.lh-plans-modern__h { font-size: clamp(1.5rem, 3.5vw, 2.2rem); margin-bottom: .5rem; }
.lh-plans-modern__lead { color: var(--lwh-grey); max-width: 600px; margin: 0 auto; }
.lh-plans-modern__billing-toggle { display: flex; align-items: center; justify-content: center; gap: .5rem; margin: 1.5rem 0; }
.lh-plans-modern__switch { width: 50px; height: 28px; background: var(--lwh-grey-light); border-radius: 14px; position: relative; cursor: pointer; border: 0; }
.lh-plans-modern__interval-btn { padding: .4rem .8rem; border-radius: var(--lwh-radius-pill); font-weight: 700; font-size: .85rem; border: 0; cursor: pointer; background: transparent; }
.lh-plans-modern__interval-btn.is-active { background: var(--lwh-coral); color: #fff; }
.lh-plans-modern__interval-saving { font-size: .75rem; color: var(--lwh-success); font-weight: 700; }
.lh-plans-modern__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.5rem; }
.lh-plans-modern__manage { text-align: center; margin-top: 1.5rem; font-size: .88rem; color: var(--lwh-grey); }
.lh-plans-modern__notconfigured { text-align: center; padding: 2rem; color: var(--lwh-grey); }

/* Plan card extras */
.lh-plan-card__head { margin-bottom: .75rem; }
.lh-plan-card__name { font-family: 'Fredoka', sans-serif; font-size: 1.1rem; font-weight: 700; }
.lh-plan-card__tier { font-size: .72rem; font-weight: 800; text-transform: uppercase; color: var(--lwh-grey); }
.lh-plan-card__desc { font-size: .85rem; color: var(--lwh-grey); margin: .5rem 0; }
.lh-plan-card__price-amount { font-size: 2.5rem; }
.lh-plan-card__price-currency { font-size: 1rem; vertical-align: super; }
.lh-plan-card__price-period { font-size: .82rem; color: var(--lwh-grey); }
.lh-plan-card__annual { font-size: .78rem; color: var(--lwh-grey); }
.lh-plan-card__cta { margin-top: 1rem; }
.lh-plan-card__badge--current { background: var(--lwh-success); color: #fff; }

/* FAQ extras */
.lh-faq { max-width: 800px; margin: 0 auto; }
.lh-faq__head { text-align: center; margin-bottom: 2rem; }
.lh-faq__h { font-size: clamp(1.5rem, 3.5vw, 2rem); margin-bottom: .5rem; }
.lh-faq__lead { color: var(--lwh-grey); }
.lh-faq__list, .lh-faq-list { display: flex; flex-direction: column; gap: .5rem; }
.lh-faq__inner { max-width: 800px; margin: 0 auto; }
.lh-faq__item { border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); overflow: hidden; }
.lh-faq__q { display: flex; justify-content: space-between; align-items: center; padding: 1rem 1.25rem; font-weight: 700; cursor: pointer; width: 100%; background: none; border: 0; text-align: left; }
.lh-faq__q-text { flex: 1; }
.lh-faq__q-icon { font-size: .9rem; color: var(--lwh-coral); transition: transform .2s; }
.lh-faq__a { padding: 0 1.25rem 1rem; color: var(--lwh-grey); font-size: .92rem; line-height: 1.6; }
.lh-faq-item__q { display: flex; justify-content: space-between; padding: 1rem; font-weight: 700; cursor: pointer; }
.lh-faq-item__a { padding: 0 1rem 1rem; color: var(--lwh-grey); }
.lh-faq-item__icon { color: var(--lwh-coral); }

/* Homepage extras */
.lh-home-hero__copy { position: relative; z-index: 2; max-width: 600px; }
.lh-home-hero__cta-primary { margin-bottom: 1rem; }
.lh-homepage { display: block; }
.lh-home-section__head { text-align: center; margin-bottom: 2rem; }
.lh-home-types { padding: var(--lwh-section-pad) 1.5rem; }
.lh-home-audience { padding: var(--lwh-section-pad) 1.5rem; }
.lh-home-boards { padding: var(--lwh-section-pad) 1.5rem; }
.lh-home-why { padding: var(--lwh-section-pad) 1.5rem; }
.lh-home-cta { padding: var(--lwh-section-pad) 1.5rem; text-align: center; }
.lh-home-cta__inner { max-width: 600px; margin: 0 auto; }
.lh-home-cta__head h2 { margin-bottom: .5rem; }
.lh-home-cta__lead { color: var(--lwh-grey); margin-bottom: 1.5rem; }
.lh-home-cta__actions { display: flex; gap: .5rem; justify-content: center; }
.lh-home-trust__item { white-space: nowrap; }

/* Footer extras */
.lh-footer__inner, .lh-footer__inner--6col { display: grid; grid-template-columns: repeat(6, 1fr); gap: 1.5rem; max-width: 1200px; margin: 0 auto; padding: 2.5rem 0; }
.lh-footer__label { font-size: .72rem; font-weight: 700; text-transform: uppercase; color: var(--lwh-grey); margin-bottom: .5rem; }
.lh-footer__brandcol { grid-column: span 2; }
.lh-footer__brandcol p { font-size: .82rem; color: rgba(255,255,255,.45); line-height: 1.5; }
.lh-footer__contact { margin-top: .75rem; }
.lh-footer__contactblock { margin-bottom: .5rem; }
.lh-footer__contactline { font-size: .82rem; color: rgba(255,255,255,.55); }
.lh-footer__newsletter { padding: 1.5rem; background: rgba(255,255,255,.05); border-radius: var(--lwh-radius); margin: 1.5rem 0; }
.lh-footer__newsletter-inner { max-width: 500px; margin: 0 auto; text-align: center; }
.lh-footer__newsletter-copy { color: rgba(255,255,255,.7); font-size: .88rem; margin-bottom: .75rem; }
.lh-footer__newsletter-form { display: flex; gap: .35rem; }
.lh-footer__newsletter-form input { flex: 1; padding: .5rem .75rem; border-radius: var(--lwh-radius-sm); border: 1px solid rgba(255,255,255,.15); background: rgba(255,255,255,.08); color: #fff; }
.lh-footer__newsletter-disclaimer { font-size: .72rem; color: rgba(255,255,255,.3); margin-top: .35rem; }
.lh-footer__logins { display: flex; gap: .5rem; margin-top: .75rem; }
.lh-footer__login-pill { padding: .25rem .5rem; border-radius: var(--lwh-radius-pill); font-size: .72rem; font-weight: 700; border: 1px solid rgba(255,255,255,.15); color: rgba(255,255,255,.5); }
.lh-footer__tag { font-size: .72rem; color: rgba(255,255,255,.3); margin-top: .5rem; }
.lh-footer__band { background: rgba(255,255,255,.03); padding: .75rem 1.5rem; text-align: center; }
.lh-footer__bandinner { max-width: 1200px; margin: 0 auto; }
.lh-footer__bandtext { font-size: .82rem; color: rgba(255,255,255,.3); }
@media (max-width: 960px) { .lh-footer__inner, .lh-footer__inner--6col { grid-template-columns: repeat(3, 1fr); } .lh-footer__brandcol { grid-column: span 3; } }
@media (max-width: 640px) { .lh-footer__inner, .lh-footer__inner--6col { grid-template-columns: repeat(2, 1fr); } .lh-footer__brandcol { grid-column: span 2; } }

/* Misc remaining */
.lh-progress-strip { display: flex; align-items: center; gap: .5rem; padding: .5rem 0; }
.lh-progress-strip__icon { font-size: 1rem; }
.lh-progress-strip__text { font-size: .85rem; font-weight: 600; }
.lh-progress-strip__sub { font-size: .78rem; color: var(--lwh-grey); }
.lh-bubble { display: inline-block; padding: .15rem .35rem; border-radius: var(--lwh-radius-xs); font-size: .72rem; font-weight: 700; background: var(--lwh-coral-light); color: var(--lwh-coral); }
.lh-gicon { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; background: var(--lwh-grey-light); font-size: 1.2rem; }
.lh-stars { color: var(--lwh-yellow); }
.lh-quote { font-style: italic; color: var(--lwh-ink-soft); padding: 1rem; border-left: 3px solid var(--lwh-coral); margin: 1rem 0; }
.lh-status { display: inline-block; padding: .15rem .4rem; border-radius: var(--lwh-radius-xs); font-size: .72rem; font-weight: 800; }
.lh-restrict { text-align: center; padding: 2rem; }
.lh-hero { position: relative; overflow: hidden; padding: clamp(3rem, 8vh, 5rem) 1.5rem; }
.lh-hero__inner { max-width: 720px; margin: 0 auto; text-align: center; }
.lh-hero__headline { font-size: clamp(2rem, 5vw, 3rem); margin-bottom: .75rem; }
.lh-hero__sub { color: var(--lwh-grey); max-width: 600px; margin: 0 auto 1.5rem; }
.lh-hero__cta { display: flex; gap: .75rem; justify-content: center; }
.lh-hero__emblem { font-size: 3rem; margin-bottom: 1rem; }
.lh-hero__emblem-chip { font-size: .75rem; }
.lh-hero__trust { margin-top: 1.5rem; font-size: .82rem; color: var(--lwh-grey); }
.lh-trust-strip { background: var(--lwh-ink); color: #fff; padding: .85rem 1.5rem; }
.lh-trust-strip__inner { display: flex; justify-content: center; flex-wrap: wrap; gap: .5rem 2rem; max-width: 1200px; margin: 0 auto; }
.lh-trust-strip__item { display: flex; align-items: center; gap: .35rem; font-size: .85rem; font-weight: 600; }
.lh-trust-strip__icon { font-size: 1rem; }
.lh-trust-strip__title { font-weight: 700; }
.lh-header-identity { display: flex; align-items: center; gap: .5rem; }
.lh-header-identity__badge { font-size: .68rem; font-weight: 800; text-transform: uppercase; padding: .15rem .35rem; border-radius: var(--lwh-radius-xs); background: var(--lwh-coral-light); color: var(--lwh-coral); }
.lh-header-identity__name { font-weight: 700; font-size: .88rem; }
.lh-header-identity__text { font-size: .82rem; }
.lh-section { padding: var(--lwh-section-pad) 1.5rem; }
.lh-page-hero { background: linear-gradient(135deg, var(--lwh-purple-dark), var(--lwh-purple)); color: #fff; padding: clamp(2rem, 5vh, 3.5rem) 1.5rem; text-align: center; }
.lh-page-hero__inner { max-width: 720px; margin: 0 auto; }
.lh-page-hero__h { color: #fff; margin-bottom: .5rem; }
.lh-page-hero__lead { color: rgba(255,255,255,.8); }
.lh-contact { max-width: 600px; margin: 0 auto; padding: 1.5rem; }
.lh-login-redirect-notice { background: var(--lwh-yellow-light); border: 1.5px solid var(--lwh-yellow); border-radius: var(--lwh-radius); padding: 1rem; display: flex; gap: .5rem; align-items: center; margin-bottom: 1rem; }
.lh-login-redirect-notice__icon { font-size: 1.5rem; }
.lh-login-redirect-notice__body { font-size: .88rem; }
.lh-login-unified { max-width: 440px; margin: 0 auto; }


/* ==========================================================================
   31 — FINAL COVERAGE (BEM modifiers + remaining components)
   ========================================================================== */

/* Auth background shapes (positioned by inline styles, just need base) */
.lh-authbg__aurora { border-radius: 50%; filter: blur(60px); }
.lh-authbg__wave { border-radius: 40%; }
.lh-authbg__grid { opacity: .05; background-size: 40px 40px; background-image: linear-gradient(rgba(255,255,255,.3) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.3) 1px, transparent 1px); }
.lh-authbg__beam { background: linear-gradient(180deg, rgba(255,255,255,.1), transparent); width: 2px; }
.lh-authbg__circle { border-radius: 50%; border: 1px solid rgba(255,255,255,.1); }
.lh-authbg__dot { border-radius: 50%; background: rgba(255,255,255,.15); }
.lh-authbg__star { color: rgba(255,255,255,.3); }
.lh-authbg__particle { border-radius: 50%; background: rgba(255,255,255,.1); }
.lh-authbg__sun { border-radius: 50%; background: radial-gradient(circle, rgba(255,215,0,.2), transparent 70%); }

/* Landing page modifiers */
.lh-landing--parent .lh-landing__hero { background: linear-gradient(135deg, var(--lwh-coral-dark, #C2185B), var(--lwh-coral)); }
.lh-landing--teacher .lh-landing__hero { background: linear-gradient(135deg, var(--lwh-purple-dark), var(--lwh-purple)); }
.lh-landing__section--dashboard { background: var(--lwh-grey-light); }
.lh-landing__section--why { background: #fff; }
.lh-landing__section--plans { background: var(--lwh-grey-light); }
.lh-landing__section--included { background: #fff; }
.lh-landing__mock-bar { height: 8px; background: var(--lwh-grey-light); border-radius: 4px; margin: .35rem 0; }
.lh-landing__mock-title { font-weight: 700; font-size: .88rem; margin-bottom: .25rem; }
.lh-landing__mock-sub { font-size: .78rem; color: var(--lwh-grey); }
.lh-landing__mock-row { display: flex; gap: .5rem; align-items: center; padding: .35rem 0; font-size: .82rem; }
.lh-landing__mock-row--alert { color: var(--lwh-coral); }
.lh-landing__plan { background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); padding: 1.5rem; }
.lh-landing__plan--feat { border-color: var(--lwh-coral); }
.lh-landing__plan-tier { font-weight: 800; font-size: .82rem; color: var(--lwh-grey); text-transform: uppercase; }
.lh-landing__plan-who { font-size: .82rem; color: var(--lwh-grey); }
.lh-landing__plan-foot { margin-top: .75rem; }
.lh-landing__planpair { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.lh-landing__format { display: flex; align-items: center; gap: .5rem; padding: .35rem 0; font-size: .88rem; }
.lh-landing__formats { margin: 1rem 0; }
.lh-landing__trust { display: flex; gap: 1rem; flex-wrap: wrap; margin-top: 1.5rem; font-size: .82rem; color: var(--lwh-grey); }

/* Viewer modifiers */
.lh-viewer--paper, .lh-viewer--flashcards { }
.lh-viewer__paper { padding: 1rem; }
.lh-viewer__paper-frame { border: 1px solid var(--lwh-border); border-radius: var(--lwh-radius-sm); overflow: hidden; }
.lh-viewer__paper-scroll { max-height: 80vh; overflow-y: auto; }
.lh-viewer__flashcards-wrap { padding: 1rem; text-align: center; }
.lh-viewer__zoom-in, .lh-viewer__zoom-out, .lh-viewer__zoom-reset { background: rgba(255,255,255,.1); border: 0; color: #fff; padding: .3rem .5rem; border-radius: var(--lwh-radius-xs); cursor: pointer; }
.lh-viewer__page-current { font-weight: 800; }
.lh-viewer__page-total { }

/* Browse (generic archive) */
.lh-browse { max-width: var(--lwh-container); margin: 0 auto; padding: 1.5rem; }
.lh-browse__row { display: grid; grid-template-columns: 200px 1fr; gap: 1rem; }
.lh-browse__filters { display: flex; flex-direction: column; gap: .5rem; }
.lh-browse__search { margin-bottom: .75rem; }
.lh-browse__select { margin-bottom: .5rem; }
.lh-browse__count { font-weight: 700; margin-bottom: .5rem; }
.lh-browse__empty { text-align: center; padding: 2rem; color: var(--lwh-grey); }
.lh-browse__pagination { display: flex; justify-content: center; gap: .35rem; padding: 1.5rem 0; }

/* Packages (membership) */
.lh-packages { padding: var(--lwh-section-pad) 1.5rem; }
.lh-packages__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.5rem; }
.lh-packages__card { background: #fff; border: 2px solid var(--lwh-border); border-radius: var(--lwh-radius); padding: 2rem; text-align: center; }
.lh-packages__icon { font-size: 2rem; margin-bottom: .5rem; }
.lh-packages__badge { display: inline-block; padding: .2rem .5rem; border-radius: var(--lwh-radius-pill); font-size: .72rem; font-weight: 800; background: var(--lwh-coral); color: #fff; }
.lh-packages__price { font-family: 'Fredoka', sans-serif; font-size: 2rem; font-weight: 700; margin: .75rem 0; }
.lh-packages__blurb { font-size: .88rem; color: var(--lwh-grey); margin-bottom: 1rem; }
.lh-packages__points { text-align: left; margin: 1rem 0; font-size: .85rem; }
.lh-packages__points li { padding: .2rem 0; }
.lh-packages__points li::before { content: "✓ "; color: var(--lwh-success); font-weight: 700; }
.lh-packages__foot { margin-top: 1rem; }

/* Pack anatomy */
.lh-packanatomy { padding: var(--lwh-section-pad) 1.5rem; }
.lh-packanatomy__inner { max-width: 1200px; margin: 0 auto; }
.lh-packanatomy__intro { text-align: center; margin-bottom: 2rem; }
.lh-packanatomy__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 1rem; }
.lh-packanatomy__card { background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); padding: 1.25rem; text-align: center; }
.lh-packanatomy__cardlink { text-decoration: none; color: var(--lwh-ink); }
.lh-packanatomy__icon { font-size: 2rem; margin-bottom: .5rem; }
.lh-packanatomy__note { font-size: .78rem; color: var(--lwh-grey); margin-top: .25rem; }

/* Featured resources */
.lh-featured { padding: var(--lwh-section-pad) 1.5rem; }
.lh-featured__inner { max-width: 1200px; margin: 0 auto; }
.lh-featured__head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; }
.lh-featured__h { font-size: 1.3rem; }
.lh-featured__lead { color: var(--lwh-grey); }
.lh-featured__more { color: var(--lwh-coral); font-weight: 700; font-size: .88rem; }
.lh-featured__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 1.25rem; }

/* Lib card (resource in library) */
.lh-lib-card { background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); overflow: hidden; transition: border-color .2s; }
.lh-lib-card:hover { border-color: var(--lwh-coral); }
.lh-lib-card__top { padding: 1rem; }
.lh-lib-card__icon { font-size: 1.8rem; margin-bottom: .35rem; }
.lh-lib-card__title { font-weight: 700; margin-bottom: .25rem; }
.lh-lib-card__meta { font-size: .78rem; color: var(--lwh-grey); }
.lh-lib-card__type { font-size: .72rem; font-weight: 700; }
.lh-lib-card__tag { display: inline-block; font-size: .68rem; padding: .1rem .3rem; border-radius: var(--lwh-radius-xs); background: var(--lwh-grey-light); }
.lh-lib-card__actions { display: flex; gap: .35rem; padding: .5rem 1rem; border-top: 1px solid var(--lwh-border); }

/* Subject card */
.lh-subject-card { background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); padding: 1.25rem; text-decoration: none; color: var(--lwh-ink); transition: border-color .2s, transform .2s; }
.lh-subject-card:hover { border-color: var(--lwh-coral); transform: translateY(-3px); }
.lh-subject-card__icon { font-size: 1.8rem; margin-bottom: .5rem; }
.lh-subject-card__name { font-weight: 800; font-size: .95rem; }
.lh-subject-card__desc { font-size: .82rem; color: var(--lwh-grey); margin-top: .25rem; }
.lh-subject-card__count { font-size: .78rem; color: var(--lwh-coral); margin-top: .25rem; }
.lh-subject-card__arrow { color: var(--lwh-coral); }

/* Pagination extras */
.lh-pagination__btn { display: flex; align-items: center; gap: .25rem; }
.lh-pagination__num { }
.lh-pagination__gap { color: var(--lwh-grey); }
.lh-pagination__summary { font-size: .82rem; color: var(--lwh-grey); text-align: center; margin-top: .5rem; }
.lh-pagination__controls { display: flex; justify-content: center; gap: .35rem; }

/* Role switch */
.lh-role-switch { display: flex; gap: .5rem; justify-content: center; margin: 1rem 0; }
.lh-role-switch__pill { padding: .4rem .8rem; border-radius: var(--lwh-radius-pill); font-weight: 700; font-size: .85rem; border: 2px solid var(--lwh-border); cursor: pointer; transition: all .15s; }
.lh-role-switch__pill:hover, .lh-role-switch__pill.is-active { border-color: var(--lwh-coral); background: var(--lwh-coral-light); color: var(--lwh-coral); }
.lh-role-switch__icon { font-size: 1rem; }
.lh-role-switch__label { font-size: .85rem; }
.lh-role-switch__desc { font-size: .72rem; color: var(--lwh-grey); }

/* Resources block */
.lh-resources-block { margin: 1.5rem 0; }
.lh-resources-block__head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem; }
.lh-resources-block__title { font-size: 1.2rem; font-weight: 700; }
.lh-resources-block__count { font-size: .82rem; color: var(--lwh-grey); }
.lh-resources-block__intro { color: var(--lwh-grey); margin-bottom: 1rem; }

/* Free wall extras */
.lh-freewall { text-align: center; padding: 3rem 1.5rem; background: var(--lwh-grey-light); border-radius: var(--lwh-radius); }
.lh-freewall__icon { font-size: 3rem; margin-bottom: .75rem; }
.lh-freewall__title { font-size: 1.3rem; margin-bottom: .5rem; }
.lh-freewall__lead { color: var(--lwh-grey); margin-bottom: 1rem; }
.lh-freewall__actions { display: flex; gap: .5rem; justify-content: center; }
.lh-freewall__foot { margin-top: 1rem; font-size: .82rem; color: var(--lwh-grey); }
.lh-freecounter { display: flex; align-items: center; gap: .35rem; font-size: .85rem; }
.lh-freecounter__dot { width: 8px; height: 8px; border-radius: 50%; background: var(--lwh-success); }
.lh-freepill__count { font-weight: 800; }
.lh-freepill__cta { color: var(--lwh-coral); font-weight: 700; }
.lh-free-badge, .lh-freebadge-corner { position: absolute; top: 0; left: 0; padding: .2rem .5rem; font-size: .68rem; font-weight: 800; background: var(--lwh-success); color: #fff; border-radius: 0 0 var(--lwh-radius-xs) 0; }
.lh-gate-cta { text-align: center; padding: 1.5rem; }
.lh-gate-notice { background: var(--lwh-yellow-light); border-radius: var(--lwh-radius); padding: 1rem; margin: 1rem 0; text-align: center; }

/* Collection cards */
.lh-collections { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 1rem; }
.lh-collection-card { background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); padding: 1rem; text-decoration: none; color: var(--lwh-ink); }
.lh-collection-card__name { font-weight: 700; }

/* Catalogue extras */
.lh-catalogue__filterblock { margin-bottom: .5rem; }
.lh-catalogue__filterblock--segment { }
.lh-catalogue__grid-wrap { min-width: 0; }
.lh-catalogue__head-controls { display: flex; gap: .5rem; align-items: center; }
.lh-catalogue__hero-inner { max-width: 720px; margin: 0 auto; }
.lh-catalogue__perpage { display: flex; align-items: center; gap: .3rem; }
.lh-catalogue__perpage-select { width: auto; }
.lh-catalogue__search-btn { }
.lh-catalogue__drawer-close { background: none; border: 0; font-size: 1.5rem; cursor: pointer; }
.lh-catalogue__drawer-title { font-family: 'Fredoka', sans-serif; font-size: 1.1rem; font-weight: 700; }
.lh-catalogue__filter-count { font-size: .72rem; font-weight: 800; padding: .1rem .35rem; border-radius: 50%; background: #fff; color: var(--lwh-coral); }
.lh-catalogue__filter-count.is-zero { display: none; }

/* Misc */
.lh-latest { margin: 1.5rem 0; }
.lh-latest__head { display: flex; justify-content: space-between; margin-bottom: 1rem; }
.lh-latest__all a { color: var(--lwh-coral); font-weight: 700; }
.lh-latest__slider { display: flex; gap: 1rem; overflow-x: auto; }
.lh-stage-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 1rem; }
.lh-stage-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 1rem; }
.lh-stage-card__body { flex: 1; }
.lh-stage-card__desc { font-size: .82rem; color: var(--lwh-grey); line-height: 1.4; }
.lh-stage-card__top { display: flex; gap: .5rem; align-items: center; margin-bottom: .5rem; }
.lh-stages-section, .lh-subjects-section { padding: var(--lwh-section-pad) 1.5rem; }
.lh-subjects-section__inner { max-width: 1200px; margin: 0 auto; }
.lh-audiences-section { padding: var(--lwh-section-pad) 1.5rem; }
.lh-audiences-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 1.25rem; }
.lh-audience-card { background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); padding: 1.5rem; }
.lh-audience-card__icon { font-size: 2rem; margin-bottom: .5rem; }
.lh-audience-card__cta { color: var(--lwh-coral); font-weight: 700; font-size: .88rem; margin-top: auto; }
.lh-hubs { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; }
@media (max-width: 768px) { .lh-hubs { grid-template-columns: 1fr; } }
.lh-hub { background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); padding: 1.5rem; }
.lh-search { display: flex; gap: .35rem; margin-bottom: 1rem; }
.lh-search__q { flex: 1; }
.lh-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1rem; margin: 1.5rem 0; }
.lh-popular { margin: 1.5rem 0; }
.lh-entry { max-width: var(--lwh-container); margin: 0 auto; padding: 1.5rem; }
.lh-btn--ghost-on-dark { color: #fff; border-color: rgba(255,255,255,.4); }
.lh-btn--white { background: #fff; color: var(--lwh-ink); border-color: #fff; }
.lh-grid { display: grid; gap: 1.25rem; }
.lh-grid--3 { grid-template-columns: repeat(3, 1fr); }
.lh-grid--cards { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
.lh-steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1.5rem; }
.lh-step { text-align: center; }
.lh-step__num { display: flex; align-items: center; justify-content: center; width: 48px; height: 48px; border-radius: 50%; background: var(--lwh-coral); color: #fff; font-family: 'Fredoka', sans-serif; font-size: 1.2rem; font-weight: 700; margin: 0 auto .75rem; }
.lh-junior-admin { max-width: 600px; margin: 0 auto; padding: 1.5rem; }
.lh-junior-admin__intro { margin-bottom: 1.5rem; }
.lh-junior-admin__group { margin-bottom: 1rem; }
.lh-junior-admin__form { margin-top: 1rem; }
.lh-junior-admin__blocked { background: #FEE2E2; border-radius: var(--lwh-radius); padding: 1rem; color: #991B1B; text-align: center; }
.lh-student-shelf { margin: 1rem 0; }
.lh-jumpbar { display: flex; gap: .35rem; flex-wrap: wrap; padding: .5rem 0; }
.lh-jumpbar__pill { padding: .3rem .6rem; border-radius: var(--lwh-radius-pill); font-size: .78rem; font-weight: 700; border: 1.5px solid var(--lwh-border); }
.lh-jumpbar__pill:hover { border-color: var(--lwh-coral); }
.lh-jumpbar__sep { color: var(--lwh-grey); font-size: .78rem; }
.lh-seo-panel { background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); padding: 1rem; margin: 1rem 0; }
.lh-seo-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.lh-seo-field { margin-bottom: .75rem; }
.lh-seo-meter { height: 6px; border-radius: 3px; background: var(--lwh-grey-light); overflow: hidden; }
.lh-seo-preview { background: var(--lwh-grey-light); border-radius: var(--lwh-radius-sm); padding: 1rem; margin-top: .75rem; }
.lh-seo-preview__title { font-size: 1.1rem; color: #1a0dab; font-weight: 600; }
.lh-seo-preview__url { font-size: .82rem; color: #006621; }
.lh-seo-preview__desc { font-size: .85rem; color: #545454; }
.lh-seo-tabs { display: flex; gap: .25rem; margin-bottom: 1rem; }
.lh-seo-tab { padding: .4rem .8rem; border-radius: var(--lwh-radius-sm); font-size: .82rem; font-weight: 700; border: 1.5px solid var(--lwh-border); cursor: pointer; }
.lh-seo-tab.is-active { background: var(--lwh-coral); color: #fff; border-color: var(--lwh-coral); }
.lh-resource-fields { margin: 1rem 0; }
.lh-email-editor, .lh-email-deliverability { max-width: 600px; margin: 0 auto; padding: 1.5rem; }
.lh-pop-card { background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); overflow: hidden; }
.lh-pop-card__media { height: 120px; background: var(--lwh-grey-light); }
.lh-pop-card__body { padding: 1rem; }
.lh-pop-card__title { font-weight: 700; }
.lh-tab-count { font-size: .72rem; font-weight: 700; padding: .1rem .3rem; border-radius: 50%; background: var(--lwh-coral-light); color: var(--lwh-coral); }
.lh-tier-badge { display: inline-block; padding: .2rem .5rem; border-radius: var(--lwh-radius-xs); font-size: .72rem; font-weight: 800; }
.lh-tier-badge--free { background: #D1FAE5; color: #065F46; }
.lh-tier-badge--premium { background: var(--lwh-purple-light); color: var(--lwh-purple); }
.lh-tier-mini { font-size: .65rem; font-weight: 800; padding: .1rem .25rem; border-radius: 3px; }
.lh-tier-pill, .lh-tier-ribbon-inline { display: inline-block; padding: .15rem .4rem; border-radius: var(--lwh-radius-xs); font-size: .68rem; font-weight: 800; }
.lh-auth { max-width: 440px; margin: 0 auto; padding: 1.5rem; }
.lh-file-pick, .lh-file-clear { cursor: pointer; }
.lh-file-display { font-size: .85rem; color: var(--lwh-grey); }
.lh-file-id { display: none; }
.lh-thumb-actions { display: flex; gap: .5rem; }
.lh-thumb-preview { max-width: 200px; margin: .5rem 0; }
.lh-thumb-help { font-size: .78rem; color: var(--lwh-grey); }
.lh-thumb-source { font-size: .82rem; }
.lh-social { display: flex; gap: .5rem; }
.lh-social__btn { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 50%; background: rgba(255,255,255,.1); color: #fff; transition: background .15s; }
.lh-social__btn:hover { background: var(--lwh-coral); }
.lh-aud { margin: 1rem 0; }
.lh-aud__dl dt { font-weight: 700; font-size: .88rem; }
.lh-aud__dl dd { margin: 0 0 .75rem; color: var(--lwh-grey); font-size: .88rem; }
.lh-dash--student .lh-dash__h1 { color: var(--lwh-coral); }
.lh-stats-band { background: var(--lwh-coral); color: #fff; padding: 1.5rem; }
.lh-cta-banner { background: linear-gradient(135deg, var(--lwh-purple-dark), var(--lwh-purple)); color: #fff; text-align: center; padding: var(--lwh-section-pad) 1.5rem; }
.lh-cta-banner h2, .lh-cta-banner h3 { color: #fff; margin-bottom: .5rem; }
.lh-guidance-tabs { display: flex; gap: .25rem; margin-bottom: 1rem; }
.lh-guidance-tab { padding: .4rem .8rem; font-size: .82rem; font-weight: 700; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius-sm); cursor: pointer; }
.lh-guidance-tab.is-active { background: var(--lwh-coral); color: #fff; border-color: var(--lwh-coral); }


/* ==========================================================================
   32 — VERIFIED MISSING: Classes from actual rendered HTML
   These were found by rendering real pages and cross-referencing.
   ========================================================================== */

/* Top bar track + items */
.lh-topbar__track { display: flex; gap: 1.5rem; align-items: center; overflow: hidden; }
.lh-topbar__item { white-space: nowrap; font-weight: 600; }

/* Curriculum bar pill colour variants */
.lh-curricbar__pill--eyfs { border-color: #F97316; }
.lh-curricbar__pill--eyfs .lh-curricbar__age { color: #F97316; }
.lh-curricbar__pill--ks1 { border-color: #06B6D4; }
.lh-curricbar__pill--ks1 .lh-curricbar__age { color: #06B6D4; }
.lh-curricbar__pill--ks2 { border-color: #EAB308; }
.lh-curricbar__pill--ks2 .lh-curricbar__age { color: #EAB308; }
.lh-curricbar__pill--ks3 { border-color: #22C55E; }
.lh-curricbar__pill--ks3 .lh-curricbar__age { color: #22C55E; }
.lh-curricbar__pill--gcse { border-color: var(--lwh-purple); }
.lh-curricbar__pill--gcse .lh-curricbar__age { color: var(--lwh-purple); }

/* Drawer nav */
.lh-drawer__nav { margin-top: 1rem; }

/* Hero card numbered variants (positioned by grid, no unique styles needed) */
.lh-home-hero__card--1, .lh-home-hero__card--2, .lh-home-hero__card--3,
.lh-home-hero__card--4, .lh-home-hero__card--5, .lh-home-hero__card--6,
.lh-home-hero__card--7, .lh-home-hero__card--8 { /* grid auto-placement */ }

/* Eyebrow (legacy alias — old templates use lh-eyebrow, new CSS uses lwh-eyebrow) */
.lh-eyebrow {
  display: inline-block; font-size: .82rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: .08em;
  color: var(--lwh-coral); margin-bottom: .5rem;
}
.lh-eyebrow--light { color: var(--lwh-yellow); }

/* Stage card colour variants */
.lh-stage-card--mint  { border-top-color: #22C55E; }
.lh-stage-card--sky   { border-top-color: #06B6D4; }
.lh-stage-card--amber { border-top-color: #EAB308; }
.lh-stage-card--pink  { border-top-color: #EC4899; }
.lh-stage-card--violet { border-top-color: var(--lwh-purple); }

/* Audience tile variants */
.lh-audience-tile--parent  { border-left: 4px solid var(--lwh-coral); }
.lh-audience-tile--teacher { border-left: 4px solid var(--lwh-purple); }
.lh-audience-tile--school  { border-left: 4px solid #06B6D4; }
.lh-audience-tile--child   { border-left: 4px solid #22C55E; }

/* Subject card colour variants */
.lh-subject-card--sky    { border-top: 3px solid #06B6D4; }
.lh-subject-card--flame  { border-top: 3px solid var(--lwh-coral); }
.lh-subject-card--mint   { border-top: 3px solid #22C55E; }
.lh-subject-card--amber  { border-top: 3px solid #EAB308; }
.lh-subject-card--teal   { border-top: 3px solid #0D9488; }
.lh-subject-card--violet { border-top: 3px solid var(--lwh-purple); }
.lh-subject-card--pink   { border-top: 3px solid #EC4899; }

/* Hub section variants */
.lh-reshub__section--featured { background: #fff; }
.lh-reshub__section--latest   { background: var(--lwh-grey-light); }

/* Favourite button — login variant (shows login link instead of toggle) */
.lh-fav-btn--login { opacity: .5; }
.lh-fav-btn--login:hover { opacity: 1; }
.lh-fav-icon { font-size: 1rem; line-height: 1; }

/* Free pill sidebar */
.lh-freepill--sidebar { text-align: center; }

/* Filter dropdown internals (the actual summary/label/count/option elements) */
.lh-filterdrop__summary {
  display: flex; align-items: center; justify-content: space-between;
  padding: .55rem .75rem; font-size: .88rem; font-weight: 700;
  cursor: pointer; list-style: none;
}
.lh-filterdrop__summary::-webkit-details-marker { display: none; }
.lh-filterdrop__label { flex: 1; }
.lh-filterdrop__count {
  font-size: .72rem; font-weight: 800; padding: .1rem .35rem;
  border-radius: 50%; background: var(--lwh-coral-light); color: var(--lwh-coral);
  min-width: 20px; text-align: center;
}
.lh-filterdrop__caret { font-size: .7rem; color: var(--lwh-coral); margin-left: .35rem; transition: transform .2s; }
.lh-filterdrop[open] .lh-filterdrop__caret { transform: rotate(180deg); }
.lh-filterdrop__option {
  display: flex; align-items: center; gap: .4rem;
  padding: .3rem .75rem; font-size: .84rem; cursor: pointer;
  transition: background .12s;
}
.lh-filterdrop__option:hover { background: var(--lwh-coral-light); }

/* Compact grid (narrower cards) */
.lh-grid--compact { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: .75rem; }

/* Homepage body class */
.lh-homepage-body { }

/* Audience card variants */
.lh-audience-card--parent  .lh-audience-card__icon { color: var(--lwh-coral); }
.lh-audience-card--teacher .lh-audience-card__icon { color: var(--lwh-purple); }
.lh-audience-card--school  .lh-audience-card__icon { color: #06B6D4; }

/* Board card variants */
.lh-board-card--aqa     .lh-board-card__badge { background: #E0F2FE; color: #0C4A6E; }
.lh-board-card--edexcel  .lh-board-card__badge { background: #FCE4EC; color: #880E4F; }
.lh-board-card--ocr      .lh-board-card__badge { background: #E8F5E9; color: #1B5E20; }
.lh-board-card__cta { color: var(--lwh-coral); font-weight: 700; font-size: .88rem; margin-top: .5rem; display: block; }

/* Type card variants */
.lh-type-card--printable .lh-type-card__icon { color: #2563EB; }
.lh-type-card--elearning .lh-type-card__icon { color: #7C3AED; }
.lh-type-card--game      .lh-type-card__icon { color: #059669; }
.lh-type-card--quiz      .lh-type-card__icon { color: #DC2626; }
.lh-type-card--flashcards .lh-type-card__icon { color: #D97706; }
.lh-type-card--paper     .lh-type-card__icon { color: #4338CA; }
.lh-type-card--book      .lh-type-card__icon { color: #0D9488; }
.lh-type-card--video     .lh-type-card__icon { color: #E11D48; }
.lh-type-card--audio     .lh-type-card__icon { color: #7C3AED; }

.lh-free-card { background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); padding: 1.25rem; }

/* ==========================================================================
   33 — CHAT LANDING PAGE (moved from inline to master stylesheet)
   ========================================================================== */
.lhc-landing { --lhc-purple: #7c3aed; }
.lhc-hero { position: relative; overflow: hidden; background: linear-gradient(135deg, #0f0a1e 0%, #1a0533 25%, #0c1445 50%, #0a192f 100%); padding: clamp(4rem, 10vh, 8rem) 1.5rem; text-align: center; color: #fff; }
.lhc-hero__particles { position: absolute; inset: 0; overflow: hidden; z-index: 0; }
.lhc-hero__content { position: relative; z-index: 2; max-width: 720px; margin: 0 auto; }
.lhc-hero__glow { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); width: 600px; height: 600px; border-radius: 50%; background: radial-gradient(circle, rgba(124,58,237,.3) 0%, rgba(37,99,235,.15) 40%, transparent 70%); filter: blur(60px); z-index: 1; animation: lhcPulse 4s ease-in-out infinite; }
@keyframes lhcPulse { 0%,100% { transform: translate(-50%,-50%) scale(1); opacity:.7; } 50% { transform: translate(-50%,-50%) scale(1.15); opacity:1; } }
.lhc-hero__badge { display: inline-block; padding: .4rem 1rem; border-radius: var(--lwh-radius-pill); background: rgba(124,58,237,.3); border: 1px solid rgba(124,58,237,.5); font-size: .85rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: #c4b5fd; margin-bottom: 1.25rem; animation: lhcFloat 3s ease-in-out infinite; }
@keyframes lhcFloat { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-6px); } }
.lhc-hero__title { font-family: 'Fredoka', sans-serif; font-size: clamp(2.5rem, 7vw, 4.5rem); font-weight: 700; margin: 0 0 .75rem; line-height: 1.1; }
.lhc-hero__accent { background: linear-gradient(90deg, #7c3aed, #06b6d4, #22c55e); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; }
.lhc-hero__sub { font-size: clamp(1rem, 2vw, 1.2rem); color: #a5b4c8; line-height: 1.6; margin: 0 auto 2.5rem; max-width: 580px; }
.lhc-countdown { display: flex; justify-content: center; gap: clamp(.5rem, 2vw, 1rem); margin-bottom: 1.5rem; flex-wrap: wrap; }
.lhc-countdown__unit { text-align: center; }
.lhc-countdown__num { display: block; font-family: 'Courier New', monospace; font-size: clamp(2rem, 6vw, 3.5rem); font-weight: 900; background: linear-gradient(180deg, rgba(255,255,255,.15) 0%, rgba(255,255,255,.05) 100%); border: 1px solid rgba(255,255,255,.1); border-radius: 12px; padding: .5rem clamp(.5rem, 2vw, 1rem); color: #fff; min-width: clamp(50px, 10vw, 80px); text-shadow: 0 0 20px rgba(124,58,237,.5); }
.lhc-countdown__label { display: block; font-size: .7rem; text-transform: uppercase; letter-spacing: .1em; color: #7c8ca8; margin-top: .35rem; }
.lhc-countdown__sep { font-size: clamp(1.5rem, 4vw, 2.5rem); color: rgba(255,255,255,.2); align-self: flex-start; padding-top: .6rem; }
.lhc-hero__date { font-size: .92rem; color: #7c8ca8; font-weight: 600; }
.lhc-features { padding: clamp(3rem, 8vh, 5rem) 1.5rem; max-width: 1100px; margin: 0 auto; }
.lhc-features__h { font-family: 'Fredoka', sans-serif; font-size: clamp(1.5rem, 3vw, 2.2rem); font-weight: 700; text-align: center; margin: 0 0 2.5rem; }
.lhc-features__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1.5rem; }
.lhc-feature { background: #fff; border: 1.5px solid var(--lwh-border); border-radius: var(--lwh-radius); padding: 1.75rem 1.5rem; text-align: center; transition: border-color .2s, transform .2s, box-shadow .2s; }
.lhc-feature:hover { border-color: var(--lhc-purple, #7c3aed); transform: translateY(-4px); box-shadow: 0 12px 32px rgba(124,58,237,.12); }
.lhc-feature__icon { font-size: 2.5rem; margin-bottom: .75rem; }
.lhc-feature h3 { font-family: 'Fredoka', sans-serif; font-size: 1.1rem; font-weight: 700; margin: 0 0 .5rem; }
.lhc-feature p { font-size: .92rem; color: var(--lwh-grey); line-height: 1.55; margin: 0; }
.lhc-cta { text-align: center; padding: clamp(3rem, 8vh, 5rem) 1.5rem; background: linear-gradient(135deg, #fef6e4, #f0f9ff); }
.lhc-cta h2 { font-family: 'Fredoka', sans-serif; font-size: clamp(1.4rem, 3vw, 2rem); font-weight: 700; margin: 0 0 .75rem; }
.lhc-cta p { color: var(--lwh-grey); margin: 0 0 1.5rem; }
.lhc-cta__note { margin-top: 1.5rem; font-size: .82rem; color: var(--lwh-grey); }


/* ==========================================================================
   34 — FINAL RENDER-VERIFIED GAPS (from live template test)
   ========================================================================== */

/* Subject tile colour variants (homepage) */
.lh-subject-tile--rose    { border-top: 3px solid #F43F5E; }
.lh-subject-tile--teal    { border-top: 3px solid #0D9488; }
.lh-subject-tile--emerald { border-top: 3px solid #059669; }
.lh-subject-tile--amber   { border-top: 3px solid #D97706; }
.lh-subject-tile--sky     { border-top: 3px solid #0284C7; }
.lh-subject-tile--violet  { border-top: 3px solid #7C3AED; }
.lh-subject-tile--indigo  { border-top: 3px solid #4F46E5; }
.lh-subject-tile--lime    { border-top: 3px solid #65A30D; }
.lh-subject-tile--cyan    { border-top: 3px solid #06B6D4; }
.lh-subject-tile--fuchsia { border-top: 3px solid #C026D3; }
.lh-subject-tile--orange  { border-top: 3px solid #EA580C; }
.lh-subject-tile--pink    { border-top: 3px solid #EC4899; }

/* Favourites empty state */
.lh-fav-empty { text-align: center; padding: 2rem 1.5rem; color: var(--lwh-grey); }
.lh-fav-empty__icon { font-size: 2.5rem; margin-bottom: .5rem; display: block; }

/* Auth body (login/register full-screen backgrounds) */
.lh-auth-body { min-height: 100vh; margin: 0; background: linear-gradient(135deg, var(--lwh-purple-dark) 0%, var(--lwh-purple) 50%, #8E24AA 100%); }
.lh-auth-body--register { background: linear-gradient(135deg, #1a0533, var(--lwh-purple), #0c1445); }
.lh-auth-body--student { background: linear-gradient(135deg, #ff6b9d, var(--lwh-purple), #3b82f6); }
.lh-auth-body--teacher { background: linear-gradient(135deg, #0D3A3F, #134E54, #1A6B73); }
.lh-auth-body--parent { background: linear-gradient(135deg, #92400E, #B45309, #D97706); }
.lh-authpage--register { }

/* Auth background aurora numbered variants */
.lh-authbg__aurora--1 { width: 500px; height: 500px; top: -150px; right: -100px; background: rgba(233,30,99,.2); border-radius: 50%; filter: blur(80px); }
.lh-authbg__aurora--2 { width: 350px; height: 350px; bottom: -100px; left: -80px; background: rgba(107,47,160,.25); border-radius: 50%; filter: blur(60px); }
.lh-authbg__aurora--3 { width: 250px; height: 250px; top: 30%; left: 40%; background: rgba(6,182,212,.15); border-radius: 50%; filter: blur(50px); }
.lh-authbg__beam--1 { height: 60%; top: 0; left: 25%; }
.lh-authbg__beam--2 { height: 40%; top: 20%; right: 20%; }
.lh-authbg__circle--1 { width: 200px; height: 200px; top: 10%; left: 15%; }
.lh-authbg__circle--2 { width: 150px; height: 150px; bottom: 20%; right: 10%; }
.lh-authbg__circle--3 { width: 100px; height: 100px; top: 60%; left: 60%; }
.lh-authbg__circle--4 { width: 80px; height: 80px; top: 30%; right: 30%; }
.lh-authbg__dot--1 { width: 6px; height: 6px; top: 20%; left: 30%; }
.lh-authbg__dot--2 { width: 4px; height: 4px; top: 50%; right: 25%; }
.lh-authbg__dot--3 { width: 5px; height: 5px; bottom: 30%; left: 50%; }
.lh-authbg__star--1 { top: 15%; right: 20%; font-size: 1.2rem; }
.lh-authbg__star--2 { bottom: 25%; left: 15%; font-size: .9rem; }
.lh-authbg__particle--1 { width: 4px; height: 4px; top: 25%; left: 20%; animation: lhcFloat 3s ease-in-out infinite; }
.lh-authbg__particle--2 { width: 3px; height: 3px; top: 55%; right: 30%; animation: lhcFloat 4s ease-in-out infinite .5s; }
.lh-authbg__particle--3 { width: 5px; height: 5px; bottom: 20%; left: 40%; animation: lhcFloat 3.5s ease-in-out infinite 1s; }
.lh-authbg__wave--1 { width: 120%; height: 200px; bottom: -50px; left: -10%; background: rgba(107,47,160,.08); transform: rotate(-3deg); }
.lh-authbg__wave--2 { width: 120%; height: 150px; bottom: -30px; left: -10%; background: rgba(233,30,99,.06); transform: rotate(2deg); }
.lh-authbg__wave--3 { width: 120%; height: 100px; bottom: -10px; left: -10%; background: rgba(6,182,212,.05); transform: rotate(-1deg); }

/* Auth shape numbered variants (forgot password) */
.lh-auth-shape--1 { width: 300px; height: 300px; top: -100px; right: -80px; background: var(--lwh-coral); opacity: .08; }
.lh-auth-shape--2 { width: 200px; height: 200px; bottom: -60px; left: -40px; background: var(--lwh-purple); opacity: .1; }
.lh-auth-shape--3 { width: 150px; height: 150px; top: 40%; left: 10%; background: var(--lwh-yellow); opacity: .06; }
.lh-auth-shape--4 { width: 100px; height: 100px; bottom: 30%; right: 15%; background: #06B6D4; opacity: .08; }

/* Plans switch tab + tier variants */
.lh-plans-modern__switch-tab { padding: .45rem .85rem; border-radius: var(--lwh-radius-pill); font-size: .85rem; font-weight: 700; border: 0; cursor: pointer; background: transparent; color: var(--lwh-grey); transition: all .15s; }
.lh-plans-modern__switch-tab.is-active { background: var(--lwh-coral); color: #fff; }
.lh-plan-card__tier--free  { color: #065F46; }
.lh-plan-card__tier--pro   { color: #92400E; }
.lh-plan-card__tier--elite { color: var(--lwh-purple); }

/* Sitemap extras */
.lh-sitemap__xml-link { display: inline-block; font-size: .82rem; color: var(--lwh-coral); font-weight: 600; margin-top: .5rem; }
.lh-sitemap__resources { margin-top: 2rem; }
.lh-sitemap__resource-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: .75rem; margin-top: .75rem; }
.lh-sitemap__more { text-align: center; margin-top: 1rem; }
.lh-sitemap__more a { color: var(--lwh-coral); font-weight: 700; }

.lh-subject-tile--navy   { border-top: 3px solid #1E3A5F; }
.lh-subject-tile--purple { border-top: 3px solid var(--lwh-purple); }
.lh-why-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 1.25rem; }
.lh-register-adult { max-width: 520px; margin: 0 auto; }

/* Page hero theme variants */
.lh-page-hero--purple { background: linear-gradient(135deg, var(--lwh-purple-dark), var(--lwh-purple), #8E24AA); }
.lh-page-hero--coral  { background: linear-gradient(135deg, #880E4F, var(--lwh-coral), #FF5252); }
.lh-page-hero--flame  { background: linear-gradient(135deg, #880E4F, var(--lwh-coral), #FF5252); }
.lh-page-hero--teal   { background: linear-gradient(135deg, #004D40, #00897B, #26A69A); }
.lh-page-hero--sky    { background: linear-gradient(135deg, #0D47A1, #1976D2, #42A5F5); }
.lh-page-hero--orange { background: linear-gradient(135deg, #BF360C, #F4511E, #FF7043); }
.lh-page-hero--dark   { background: linear-gradient(135deg, var(--lwh-ink), #2D2D4E, #3D3D6E); }

