/*
Theme Name: Heritage Homeschool Resource Center
Theme URI: https://heritageresourcecenter.com
Author: HHRC
Description: Official theme for Heritage Homeschool Resource Center
Version: 1.0.0
License: GNU General Public License v2 or later
Text Domain: hhrc
*/

/* ── GOOGLE FONTS ── */
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,600;0,700;1,400;1,600&family=Lora:ital,wght@0,400;0,500;1,400&family=DM+Sans:wght@300;400;500;600&display=swap');

/* ── VARIABLES ── */
:root {
  --gd: #2C4A1E;
  --gm: #3D6B2B;
  --gl: #5A8E45;
  --gp: #EAF2E3;
  --cr: #FAF6EE;
  --cd: #F0E9D8;
  --tc: #C4622D;
  --tl: #E8825A;
  --tp: #FAEDE6;
  --ch: #1C2419;
  --tb: #3A3A3A;
  --tm: #7A7A7A;
  --border: #D8D0C0;
  --ss: 0 2px 8px rgba(44,74,30,.08);
  --sm: 0 6px 24px rgba(44,74,30,.12);
  --sl: 0 16px 48px rgba(44,74,30,.16);
  --max: 1100px;
}

/* ── RESET ── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  font-family: 'Lora', Georgia, serif;
  background: var(--cr);
  color: var(--tb);
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; height: auto; display: block; }
a { text-decoration: none; color: inherit; }
ul { list-style: none; }
button { cursor: pointer; font-family: inherit; }

/* ── TYPOGRAPHY ── */
h1, h2, h3, h4 { font-family: 'Playfair Display', serif; color: var(--gd); line-height: 1.2; }
h1 { font-size: clamp(2rem, 5vw, 3.2rem); }
h2 { font-size: clamp(1.7rem, 3vw, 2.5rem); margin-bottom: 14px; }
h3 { font-size: clamp(1.2rem, 2vw, 1.5rem); margin-bottom: 10px; }
p { margin-bottom: 1rem; line-height: 1.82; }
.sans { font-family: 'DM Sans', sans-serif; }

/* ── LAYOUT ── */
.container { max-width: var(--max); margin: 0 auto; padding: 0 28px; }
.section { padding: 80px 0; }
.section-white { background: #fff; }
.section-green { background: var(--gp); }
.section-cream { background: var(--cd); }
.section-dark { background: var(--gd); }
.text-center { text-align: center; }
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: center; }
.grid-3 { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 24px; }
.grid-4 { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 20px; }
@media (max-width: 768px) {
  .grid-2 { grid-template-columns: 1fr; gap: 28px; }
  .section { padding: 56px 0; }
  .container { padding: 0 20px; }
}

/* ── SECTION LABELS ── */
.section-label {
  display: block;
  font-family: 'DM Sans', sans-serif;
  font-size: .72rem;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--tc);
  margin-bottom: 10px;
}
.section-title { margin-bottom: 14px; }
.section-title em { font-style: italic; color: var(--tc); }
.section-body { font-size: 1rem; color: var(--tb); line-height: 1.82; max-width: 650px; }
.section-center .section-body { margin: 0 auto; }

/* ── BUTTONS ── */
.btn-primary {
  display: inline-block;
  font-family: 'DM Sans', sans-serif;
  font-weight: 600;
  font-size: .93rem;
  background: var(--tc);
  color: white;
  padding: 12px 26px;
  border-radius: 10px;
  border: none;
  box-shadow: 0 4px 12px rgba(196,98,45,.34);
  transition: all .2s;
}
.btn-primary:hover { background: #A8491F; transform: translateY(-2px); color: white; }
.btn-green {
  display: inline-block;
  font-family: 'DM Sans', sans-serif;
  font-weight: 600;
  font-size: .93rem;
  background: var(--gd);
  color: white;
  padding: 12px 26px;
  border-radius: 10px;
  border: none;
  box-shadow: 0 4px 12px rgba(44,74,30,.26);
  transition: all .2s;
}
.btn-green:hover { background: var(--gm); transform: translateY(-2px); color: white; }
.btn-outline {
  display: inline-block;
  font-family: 'DM Sans', sans-serif;
  font-weight: 500;
  font-size: .93rem;
  background: transparent;
  color: var(--cr);
  padding: 12px 26px;
  border-radius: 10px;
  border: 1.5px solid rgba(250,246,238,.34);
  transition: all .2s;
}
.btn-outline:hover { background: rgba(250,246,238,.1); color: var(--cr); }
.btn-ghost {
  display: inline-block;
  font-family: 'DM Sans', sans-serif;
  font-weight: 500;
  font-size: .88rem;
  background: white;
  color: var(--gd);
  padding: 9px 18px;
  border-radius: 9px;
  border: 1.5px solid var(--border);
  transition: all .18s;
}
.btn-ghost:hover { background: var(--gp); border-color: var(--gm); }
.btn-group { display: flex; gap: 12px; flex-wrap: wrap; }

/* ── ENROLLMENT STATUS BANNER ── */
.enroll-banner {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 20px;
  padding: 9px 24px;
  font-family: 'DM Sans', sans-serif;
  font-size: .8rem;
  font-weight: 500;
}
.enroll-banner.has-open { background: #172F0B; color: rgba(250,246,238,.88); }
.enroll-banner.all-closed { background: #3A2010; color: rgba(250,246,238,.75); }
.eb-item { display: flex; align-items: center; gap: 8px; }
.eb-dot { width: 7px; height: 7px; border-radius: 50%; display: inline-block; }
.eb-dot.open { background: #6EE06E; box-shadow: 0 0 5px #6EE06E; }
.eb-dot.closed { background: #666; }
.eb-open { color: #8EEB8E; font-weight: 700; }
.eb-closed { color: rgba(250,246,238,.4); }
.eb-divider { color: rgba(250,246,238,.2); margin: 0 4px; }

/* ── NAVIGATION ── */
.site-nav {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 1000;
  background: rgba(250,246,238,.97);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--border);
  box-shadow: var(--ss);
}
.nav-inner {
  max-width: 1150px;
  margin: 0 auto;
  padding: 0 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 64px;
}
.nav-logo { display: flex; align-items: center; gap: 10px; }
.nav-logo-mark {
  width: 35px; height: 35px;
  background: var(--gd);
  border-radius: 8px;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.nav-logo-mark svg { width: 17px; height: 17px; }
.nav-logo-name {
  font-family: 'Playfair Display', serif;
  font-weight: 700;
  font-size: .97rem;
  color: var(--gd);
  line-height: 1.2;
}
.nav-logo-sub {
  font-family: 'DM Sans', sans-serif;
  font-size: .62rem;
  color: var(--gm);
  letter-spacing: .1em;
  text-transform: uppercase;
}
.nav-links { display: flex; align-items: center; gap: 2px; }
.nav-links a {
  font-family: 'DM Sans', sans-serif;
  font-size: .8rem;
  font-weight: 500;
  color: var(--ch);
  padding: 6px 9px;
  border-radius: 6px;
  transition: all .18s;
}
.nav-links a:hover,
.nav-links a.current-menu-item { background: var(--gp); color: var(--gd); font-weight: 600; }
.nav-account-btn {
  font-family: 'DM Sans', sans-serif;
  font-size: .82rem;
  font-weight: 600;
  background: var(--gp);
  color: var(--gd);
  padding: 7px 13px;
  border-radius: 8px;
  border: 1.5px solid var(--gm);
  transition: all .18s;
}
.nav-account-btn:hover { background: var(--gm); color: white; }
.nav-cta-btn {
  font-family: 'DM Sans', sans-serif;
  font-size: .82rem;
  font-weight: 600;
  background: var(--tc);
  color: white;
  padding: 7px 15px;
  border-radius: 8px;
  border: none;
  box-shadow: 0 2px 7px rgba(196,98,45,.3);
  margin-left: 6px;
  transition: all .18s;
}
.nav-cta-btn:hover { background: #A8491F; }
.nav-toggle {
  display: none;
  background: none;
  border: none;
  padding: 4px;
}
.mobile-menu {
  display: none;
  background: var(--cr);
  border-top: 1px solid var(--border);
  padding: 10px 0;
}
.mobile-menu a {
  display: block;
  font-family: 'DM Sans', sans-serif;
  font-size: .9rem;
  font-weight: 500;
  color: var(--ch);
  padding: 11px 24px;
}
.mobile-menu a:hover { background: var(--gp); color: var(--gd); }
@media (max-width: 1000px) {
  .nav-links { display: none; }
  .nav-account-btn { display: none; }
  .nav-cta-btn { display: none; }
  .nav-toggle { display: block; }
  .mobile-menu.open { display: block; }
}

/* ── PAGE HERO ── */
.page-hero {
  background: var(--gd);
  padding: 100px 28px 50px;
  text-align: center;
}
.page-hero h1 {
  font-family: 'Playfair Display', serif;
  color: var(--cr);
  font-size: clamp(2rem, 4vw, 2.9rem);
  margin-bottom: 12px;
}
.page-hero p {
  font-size: 1rem;
  color: rgba(250,246,238,.7);
  max-width: 500px;
  margin: 0 auto;
}
@media (max-width: 768px) { .page-hero { padding: 80px 20px 40px; } }

/* ── HERO ── */
.hero {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  background: var(--gd);
  position: relative;
  overflow: hidden;
  padding: 100px 28px 80px;
}
.hero-pattern {
  position: absolute; inset: 0; opacity: .05;
  background-image: radial-gradient(circle at 20% 40%, #fff 1px, transparent 1px),
    radial-gradient(circle at 80% 60%, #fff 1px, transparent 1px);
  background-size: 54px 54px;
}
.hero-glow1 {
  position: absolute; top: -90px; right: -90px;
  width: 480px; height: 480px; border-radius: 50%;
  background: radial-gradient(circle, rgba(90,142,69,.33) 0%, transparent 70%);
  pointer-events: none;
}
.hero-glow2 {
  position: absolute; bottom: -70px; left: -70px;
  width: 380px; height: 380px; border-radius: 50%;
  background: radial-gradient(circle, rgba(196,98,45,.17) 0%, transparent 70%);
  pointer-events: none;
}
.hero-inner {
  max-width: 810px;
  margin: 0 auto;
  position: relative; z-index: 2;
  text-align: center;
}
.hero-badge {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-family: 'DM Sans', sans-serif;
  font-size: .74rem;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--tl);
  background: rgba(196,98,45,.14);
  border: 1px solid rgba(196,98,45,.28);
  border-radius: 100px;
  padding: 5px 14px;
  margin-bottom: 24px;
}
.hero-title {
  font-family: 'Playfair Display', serif;
  font-size: clamp(2.4rem, 6vw, 4rem);
  font-weight: 700;
  color: var(--cr);
  line-height: 1.15;
  margin-bottom: 20px;
}
.hero-title em { font-style: italic; color: var(--tl); }
.hero-subtitle {
  font-size: clamp(.96rem, 2vw, 1.14rem);
  color: rgba(250,246,238,.76);
  max-width: 590px;
  margin: 0 auto 34px;
  line-height: 1.78;
}
.hero-stats {
  display: flex;
  gap: 34px;
  justify-content: center;
  flex-wrap: wrap;
  margin-top: 50px;
  padding-top: 30px;
  border-top: 1px solid rgba(250,246,238,.12);
}
.hero-stat-num {
  font-family: 'Playfair Display', serif;
  font-size: 1.8rem;
  font-weight: 700;
  color: var(--cr);
  display: block;
}
.hero-stat-label {
  font-family: 'DM Sans', sans-serif;
  font-size: .73rem;
  color: rgba(250,246,238,.5);
  text-transform: uppercase;
  letter-spacing: .08em;
}

/* ── STEPS ── */
.steps-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 19px;
  margin-top: 42px;
}
.step-card {
  background: white;
  border-radius: 14px;
  padding: 24px 21px;
  box-shadow: var(--ss);
  border: 1px solid var(--border);
  position: relative; overflow: hidden;
  transition: all .25s;
}
.step-card::before {
  content: '';
  position: absolute; top: 0; left: 0; right: 0;
  height: 3px; background: var(--gm);
}
.step-card:hover { transform: translateY(-4px); box-shadow: var(--sm); }
.step-num {
  font-family: 'Playfair Display', serif;
  font-size: 2.4rem; font-weight: 700;
  color: var(--gp); line-height: 1; margin-bottom: 11px;
}
.step-title { font-family: 'DM Sans', sans-serif; font-weight: 700; font-size: .92rem; color: var(--gd); margin-bottom: 6px; }
.step-desc { font-size: .86rem; color: var(--tm); line-height: 1.67; }

/* ── CLASS CARDS ── */
.class-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 18px;
  margin-top: 36px;
}
.class-card {
  background: white;
  border-radius: 14px;
  overflow: hidden;
  border: 1px solid var(--border);
  box-shadow: var(--ss);
  transition: all .25s;
  display: flex; flex-direction: column;
}
.class-card:hover { transform: translateY(-4px); box-shadow: var(--sm); }
.class-card-head { padding: 17px 18px 11px; border-bottom: 1px solid var(--cd); }
.class-name { font-family: 'Playfair Display', serif; font-size: 1.07rem; font-weight: 600; color: var(--gd); margin-bottom: 3px; }
.class-meta { font-family: 'DM Sans', sans-serif; font-size: .76rem; color: var(--tm); display: flex; flex-wrap: wrap; gap: 7px; margin-top: 5px; }
.class-body { padding: 12px 18px 16px; flex: 1; }
.class-desc { font-size: .86rem; color: var(--tb); line-height: 1.7; }
.class-foot { padding: 0 18px 16px; }
.class-note { font-family: 'DM Sans', sans-serif; font-size: .72rem; color: var(--tm); font-style: italic; margin-top: 5px; }

/* ── TERM BADGES ── */
.term-badge {
  display: inline-flex; align-items: center; gap: 5px;
  font-family: 'DM Sans', sans-serif; font-size: .71rem; font-weight: 600;
  padding: 3px 9px; border-radius: 100px; margin-bottom: 8px; display: inline-block;
}
.term-yearlong { background: var(--gp); color: var(--gd); border: 1px solid #8BC08B; }
.term-fall { background: #FFF4E6; color: #8A5000; border: 1px solid #F0C060; }
.term-spring { background: #E8F4FF; color: #1A5C8A; border: 1px solid #90C4E8; }

/* ── CAPACITY BADGES ── */
.cap-badge { font-family: 'DM Sans', sans-serif; font-size: .72rem; font-weight: 600; padding: 3px 9px; border-radius: 100px; margin-top: 5px; display: inline-block; }
.cap-ok { background: #EAF7EA; color: #1F6B1F; }
.cap-low { background: #FFF4E0; color: #8A5A00; }
.cap-full { background: #FDECEA; color: #B71C1C; }

/* ── SUPPLY LIST ── */
.supply-list { font-size: .77rem; color: var(--tm); margin-top: 5px; padding-top: 5px; border-top: 1px solid var(--cd); }

/* ── SCHEDULE TABLE ── */
.schedule-table {
  width: 100%;
  border-collapse: collapse;
  background: white;
  border-radius: 13px;
  overflow: hidden;
  box-shadow: var(--ss);
  border: 1px solid var(--border);
  margin-top: 24px;
}
.schedule-table th {
  font-family: 'DM Sans', sans-serif;
  font-size: .75rem; font-weight: 600;
  text-transform: uppercase; letter-spacing: .08em;
  background: var(--gd); color: white;
  padding: 12px 14px; text-align: left;
}
.schedule-table td {
  padding: 11px 14px;
  border-bottom: 1px solid var(--cd);
  font-size: .87rem; color: var(--tb);
  font-family: 'DM Sans', sans-serif;
}
.schedule-table tr:last-child td { border-bottom: none; }
.schedule-table tr:hover td { background: var(--gp); }
.schedule-table td:first-child { font-weight: 600; color: var(--gd); min-width: 120px; }
.table-wrap { overflow-x: auto; }

/* ── FAQ ── */
.faq-list { max-width: 740px; margin: 36px auto 0; }
.faq-item { border: 1px solid var(--border); border-radius: 10px; margin-bottom: 8px; overflow: hidden; background: white; }
.faq-question {
  padding: 16px 18px;
  display: flex; justify-content: space-between; align-items: center;
  cursor: pointer;
  font-family: 'DM Sans', sans-serif; font-weight: 600; font-size: .92rem; color: var(--gd);
  gap: 13px; border: none; background: none; width: 100%; text-align: left;
}
.faq-question:hover { background: var(--gp); }
.faq-icon { flex-shrink: 0; transition: transform .2s; font-size: .92rem; color: var(--tm); }
.faq-item.open .faq-icon { transform: rotate(180deg); }
.faq-answer { display: none; padding: 0 18px 14px; font-size: .88rem; color: var(--tb); line-height: 1.78; border-top: 1px solid var(--cd); }
.faq-item.open .faq-answer { display: block; }

/* ── FORMS ── */
.form-group { margin-bottom: 16px; }
.form-label { display: block; font-family: 'DM Sans', sans-serif; font-size: .8rem; font-weight: 600; color: var(--gd); margin-bottom: 4px; }
.form-input, .form-select, .form-textarea {
  width: 100%; padding: 10px 13px;
  border: 1.5px solid var(--border); border-radius: 9px;
  font-family: 'DM Sans', sans-serif; font-size: .9rem;
  color: var(--tb); background: white; outline: none;
  transition: border-color .18s;
}
.form-input:focus, .form-select:focus, .form-textarea:focus {
  border-color: var(--gm); box-shadow: 0 0 0 3px rgba(61,107,43,.1);
}
.form-textarea { resize: vertical; min-height: 110px; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 0 16px; }
@media (max-width: 600px) { .form-row { grid-template-columns: 1fr; } }

/* ── ALERT BOXES ── */
.alert-info { background: var(--gp); border: 1px solid rgba(61,107,43,.28); border-radius: 10px; padding: 12px 16px; margin-bottom: 16px; font-family: 'DM Sans', sans-serif; font-size: .84rem; color: var(--gd); display: flex; gap: 9px; align-items: flex-start; }
.alert-warning { background: #FFF8E6; border: 1px solid rgba(196,150,45,.38); border-radius: 10px; padding: 12px 16px; margin-bottom: 16px; font-family: 'DM Sans', sans-serif; font-size: .84rem; color: #7A5800; display: flex; gap: 9px; align-items: flex-start; }
.alert-locked { background: var(--tp); border: 1.5px solid rgba(196,98,45,.26); border-radius: 14px; padding: 36px 28px; text-align: center; }
.alert-locked-title { font-family: 'Playfair Display', serif; font-size: 1.25rem; font-weight: 700; color: var(--tc); margin-bottom: 8px; }
.alert-locked-body { font-size: .89rem; color: var(--tb); line-height: 1.7; margin-bottom: 17px; max-width: 380px; margin-left: auto; margin-right: auto; }

/* ── REGISTRATION CARD ── */
.reg-card { background: white; border-radius: 18px; overflow: hidden; box-shadow: var(--sl); border: 1px solid var(--border); }
.reg-card-head { background: var(--gd); padding: 27px 34px; text-align: center; }
.reg-price { font-family: 'Playfair Display', serif; font-size: 2.8rem; font-weight: 700; color: white; line-height: 1; }
.reg-price-label { font-family: 'DM Sans', sans-serif; font-size: .81rem; color: rgba(250,246,238,.57); margin-top: 3px; }
.reg-card-body { padding: 27px 34px; }
.reg-features { list-style: none; margin-bottom: 24px; }
.reg-features li { display: flex; align-items: flex-start; gap: 10px; padding: 7px 0; border-bottom: 1px solid var(--cd); font-size: .89rem; font-family: 'DM Sans', sans-serif; }
.reg-features li:last-child { border-bottom: none; }
.check { color: var(--gm); font-size: .95rem; flex-shrink: 0; margin-top: 2px; }
.cross { color: #ccc; font-size: .95rem; flex-shrink: 0; margin-top: 2px; }
@media (max-width: 768px) { .reg-card-head, .reg-card-body { padding: 22px 20px; } }

/* ── INSTRUCTOR CARDS ── */
.instructor-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(275px, 1fr)); gap: 22px; margin-top: 36px; }
.instructor-card { background: white; border-radius: 15px; overflow: hidden; border: 1px solid var(--border); box-shadow: var(--ss); transition: all .25s; }
.instructor-card:hover { transform: translateY(-4px); box-shadow: var(--sm); }
.instructor-avatar { width: 100%; height: 160px; display: flex; align-items: center; justify-content: center; font-family: 'Playfair Display', serif; font-size: 2.8rem; font-weight: 700; color: white; }
.instructor-body { padding: 20px 22px; }
.instructor-name { font-family: 'Playfair Display', serif; font-size: 1.18rem; font-weight: 700; color: var(--gd); margin-bottom: 2px; }
.instructor-title { font-family: 'DM Sans', sans-serif; font-size: .79rem; font-weight: 600; color: var(--tc); margin-bottom: 11px; }
.instructor-bio { font-size: .86rem; color: var(--tb); line-height: 1.7; margin-bottom: 13px; }
.instructor-creds { font-family: 'DM Sans', sans-serif; font-size: .75rem; color: var(--tm); font-style: italic; margin-bottom: 11px; }
.instructor-subjects { display: flex; flex-wrap: wrap; gap: 5px; }
.subject-tag { font-family: 'DM Sans', sans-serif; font-size: .71rem; font-weight: 600; background: var(--gp); color: var(--gd); padding: 3px 9px; border-radius: 100px; }

/* ── EVENTS ── */
.events-grid { display: grid; grid-template-columns: 1fr 250px; gap: 32px; align-items: start; }
@media (max-width: 768px) { .events-grid { grid-template-columns: 1fr; } }
.event-month-heading { font-family: 'Playfair Display', serif; font-size: 1.12rem; font-weight: 700; color: var(--gd); margin: 26px 0 12px; padding-bottom: 7px; border-bottom: 2px solid var(--gp); }
.event-item { display: flex; gap: 16px; align-items: flex-start; padding: 14px 0; border-bottom: 1px solid var(--cd); }
.event-info { flex: 1; min-width: 0; }
.event-date-box { flex-shrink: 0; width: 50px; text-align: center; background: var(--gd); border-radius: 9px; padding: 7px 5px; color: white; }
.event-day { font-family: 'Playfair Display', serif; font-size: 1.4rem; font-weight: 700; line-height: 1; display: block; }
.event-month-abbr { font-family: 'DM Sans', sans-serif; font-size: .63rem; font-weight: 600; text-transform: uppercase; letter-spacing: .07em; opacity: .7; }
.event-title { font-family: 'DM Sans', sans-serif; font-weight: 700; font-size: .91rem; color: var(--gd); margin-bottom: 2px; }
.event-desc { font-size: .83rem; color: var(--tm); line-height: 1.58; }
.event-tag { font-family: 'DM Sans', sans-serif; font-size: .69rem; font-weight: 600; padding: 2px 8px; border-radius: 100px; margin-left: 7px; vertical-align: middle; }
.etag-enroll { background: #E8F4FF; color: #1A5C8A; }
.etag-community { background: var(--gp); color: var(--gd); }
.etag-admin { background: #FFF4E6; color: #8A5000; }
.etag-class { background: var(--tp); color: var(--tc); }
.events-sidebar { position: sticky; top: 84px; }
.sidebar-box { background: white; border-radius: 13px; padding: 18px; border: 1px solid var(--border); margin-bottom: 16px; }
.sidebar-box h4 { font-family: 'DM Sans', sans-serif; font-weight: 700; color: var(--gd); font-size: .9rem; margin-bottom: 12px; }

/* ── NEWS / POSTS ── */
.news-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(295px, 1fr)); gap: 22px; margin-top: 36px; }
.news-card { background: white; border-radius: 13px; overflow: hidden; border: 1px solid var(--border); box-shadow: var(--ss); transition: all .25s; }
.news-card:hover { transform: translateY(-3px); box-shadow: var(--sm); }
.news-card-image { height: 134px; display: flex; align-items: center; justify-content: center; font-size: 2.4rem; }
.news-card-body { padding: 17px 19px 20px; }
.news-category { font-family: 'DM Sans', sans-serif; font-size: .69rem; font-weight: 700; text-transform: uppercase; letter-spacing: .1em; color: var(--tc); margin-bottom: 5px; }
.news-title { font-family: 'Playfair Display', serif; font-size: 1.03rem; font-weight: 700; color: var(--gd); margin-bottom: 7px; line-height: 1.3; }
.news-excerpt { font-size: .83rem; color: var(--tm); line-height: 1.63; margin-bottom: 9px; }
.news-date { font-family: 'DM Sans', sans-serif; font-size: .73rem; color: var(--tm); }

/* ── TESTIMONIALS ── */
.testimonial-card { background: white; border-radius: 13px; padding: 24px 21px; border: 1px solid var(--border); box-shadow: var(--ss); }
.testimonial-text { font-family: 'Lora', serif; font-style: italic; font-size: .91rem; line-height: 1.73; color: var(--tb); margin-bottom: 14px; }
.testimonial-author { font-family: 'DM Sans', sans-serif; font-weight: 600; font-size: .83rem; color: var(--gd); }
.testimonial-role { font-family: 'DM Sans', sans-serif; font-size: .75rem; color: var(--tm); }
.stars { color: #E8A040; letter-spacing: 2px; font-size: .78rem; margin-bottom: 9px; }

/* ── CTA BANNER ── */
.cta-banner { background: var(--gd); padding: 68px 28px; text-align: center; }
.cta-banner h2 { font-family: 'Playfair Display', serif; font-size: clamp(1.7rem, 3.1vw, 2.45rem); color: var(--cr); margin-bottom: 12px; }
.cta-banner p { font-size: .98rem; color: rgba(250,246,238,.68); max-width: 470px; margin: 0 auto 26px; }

/* ── FOOTER ── */
.site-footer { background: var(--ch); padding: 48px 0 22px; }
.footer-grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 32px; padding-bottom: 38px; border-bottom: 1px solid rgba(250,246,238,.09); margin-bottom: 20px; }
@media (max-width: 768px) { .footer-grid { grid-template-columns: 1fr 1fr; gap: 22px; } }
@media (max-width: 480px) { .footer-grid { grid-template-columns: 1fr; } }
.footer-logo { font-family: 'Playfair Display', serif; font-size: 1rem; font-weight: 700; color: var(--cr); margin-bottom: 9px; }
.footer-desc { font-size: .83rem; line-height: 1.7; color: rgba(250,246,238,.48); margin-bottom: 13px; }
.footer-social { display: flex; gap: 8px; flex-wrap: wrap; }
.footer-social a { font-family: 'DM Sans', sans-serif; font-size: .74rem; font-weight: 600; padding: 5px 12px; border-radius: 6px; border: 1px solid rgba(250,246,238,.19); color: rgba(250,246,238,.58); transition: all .18s; }
.footer-social a:hover { background: rgba(250,246,238,.1); color: var(--cr); }
.footer-col-title { font-family: 'DM Sans', sans-serif; font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .12em; color: rgba(250,246,238,.79); margin-bottom: 12px; }
.footer-links { list-style: none; }
.footer-links li { margin-bottom: 6px; }
.footer-links a { font-family: 'DM Sans', sans-serif; font-size: .83rem; color: rgba(250,246,238,.45); transition: color .18s; }
.footer-links a:hover { color: var(--cr); }
.footer-bottom { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px; font-family: 'DM Sans', sans-serif; font-size: .74rem; color: rgba(250,246,238,.26); }

/* ── ENROLLMENT INSTRUCTIONS ── */
.instructions-list { list-style: none; }
.instructions-list li { display: flex; gap: 14px; align-items: flex-start; padding: 13px 0; border-bottom: 1px solid var(--cd); }
.instructions-list li:last-child { border-bottom: none; }
.instr-num { background: var(--gd); color: white; width: 24px; height: 24px; border-radius: 50%; flex-shrink: 0; display: flex; align-items: center; justify-content: center; font-family: 'DM Sans', sans-serif; font-weight: 700; font-size: .73rem; margin-top: 2px; }
.instr-title { font-family: 'DM Sans', sans-serif; font-weight: 700; font-size: .89rem; color: var(--gd); margin-bottom: 2px; }
.instr-body { font-size: .84rem; color: var(--tb); line-height: 1.7; }

/* ── STUDENT BLOCK ── */
.student-block { background: var(--gp); border-radius: 11px; padding: 16px 15px; margin-bottom: 13px; border: 1px solid rgba(61,107,43,.19); }
.student-block-title { font-family: 'DM Sans', sans-serif; font-weight: 700; color: var(--gd); margin-bottom: 11px; font-size: .88rem; }

/* ── PORTAL ── */
.portal-layout { display: grid; grid-template-columns: 240px 1fr; gap: 26px; align-items: start; margin-top: 26px; }
@media (max-width: 720px) { .portal-layout { grid-template-columns: 1fr; } }
.portal-sidebar { background: white; border-radius: 13px; border: 1px solid var(--border); overflow: hidden; box-shadow: var(--ss); }
.portal-sidebar-head { background: var(--gd); padding: 19px 16px; }
.portal-avatar { width: 44px; height: 44px; background: var(--gm); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-family: 'Playfair Display', serif; font-size: 1.1rem; font-weight: 700; color: white; margin-bottom: 7px; }
.portal-name { font-family: 'DM Sans', sans-serif; font-weight: 700; color: white; font-size: .9rem; }
.portal-email { font-family: 'DM Sans', sans-serif; font-size: .7rem; color: rgba(250,246,238,.54); margin-top: 2px; }
.portal-nav a, .portal-nav button {
  display: flex; align-items: center; gap: 8px;
  font-family: 'DM Sans', sans-serif; font-size: .84rem; font-weight: 500;
  padding: 10px 16px; border-bottom: 1px solid var(--cd);
  color: var(--tb); border-left: 3px solid transparent;
  background: none; width: 100%; text-align: left; border-right: none; border-top: none; cursor: pointer;
  transition: all .16s;
}
.portal-nav a:hover, .portal-nav button:hover { background: var(--gp); color: var(--gd); }
.portal-nav a.active, .portal-nav button.active { background: var(--gp); color: var(--gd); font-weight: 700; border-left-color: var(--gm); }
.portal-card { background: white; border-radius: 13px; border: 1px solid var(--border); box-shadow: var(--ss); margin-bottom: 17px; overflow: hidden; }
.portal-card-head { padding: 16px 20px; border-bottom: 1px solid var(--cd); display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 10px; }
.portal-card-title { font-family: 'DM Sans', sans-serif; font-weight: 700; font-size: .93rem; color: var(--gd); }
.portal-card-body { padding: 20px; }
.status-badge { font-family: 'DM Sans', sans-serif; font-size: .71rem; font-weight: 700; padding: 3px 10px; border-radius: 100px; }
.status-active { background: var(--gp); color: var(--gd); }
.status-expired { background: var(--tp); color: var(--tc); }

/* ── ENROLLMENT OPTIONS ── */
.enroll-option { border: 1.5px solid var(--border); border-radius: 10px; padding: 14px 16px; margin-bottom: 8px; cursor: pointer; display: flex; gap: 11px; align-items: flex-start; background: white; transition: all .18s; }
.enroll-option:hover:not(.full) { border-color: var(--gm); background: var(--gp); }
.enroll-option.selected { border-color: var(--gm); background: var(--gp); }
.enroll-option.full { cursor: default; opacity: .78; background: #fafafa; }
.enroll-option input[type=checkbox] { margin-top: 3px; accent-color: var(--gm); width: 15px; height: 15px; flex-shrink: 0; cursor: pointer; }
.enroll-option-name { font-family: 'DM Sans', sans-serif; font-weight: 700; font-size: .89rem; color: var(--gd); margin-bottom: 2px; }
.enroll-option-meta { font-family: 'DM Sans', sans-serif; font-size: .74rem; color: var(--tm); }
.waitlist-btn { font-family: 'DM Sans', sans-serif; font-size: .77rem; font-weight: 600; background: var(--tp); color: var(--tc); border: 1px solid rgba(196,98,45,.3); border-radius: 7px; padding: 5px 11px; cursor: pointer; margin-top: 7px; transition: all .16s; }
.waitlist-btn:hover, .waitlist-btn.on { background: var(--tc); color: white; }

/* ── ENROLLMENT SUMMARY SIDEBAR ── */
.enrollment-summary { background: white; border-radius: 13px; border: 1px solid var(--border); box-shadow: var(--sm); overflow: hidden; position: sticky; top: 80px; }
.enroll-sum-head { background: var(--gd); padding: 14px 18px; }
.enroll-sum-head h4 { font-family: 'DM Sans', sans-serif; font-weight: 700; color: white; font-size: .91rem; margin: 0; }
.enroll-sum-head p { font-family: 'DM Sans', sans-serif; font-size: .74rem; color: rgba(250,246,238,.6); margin: 2px 0 0; }
.enroll-sum-body { padding: 14px 18px; }
.enroll-sum-item { padding: 6px 0; border-bottom: 1px solid var(--cd); }
.enroll-sum-item-name { font-family: 'DM Sans', sans-serif; font-weight: 600; font-size: .86rem; color: var(--gd); }
.enroll-sum-item-meta { font-family: 'DM Sans', sans-serif; font-size: .73rem; color: var(--tm); }
.enroll-sum-footer { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--cd); }
.enroll-count { font-family: 'DM Sans', sans-serif; font-size: .78rem; color: var(--tm); margin-bottom: 8px; }

/* ── VALUE CARDS ── */
.value-card { background: white; border-radius: 12px; padding: 21px 18px; border: 1px solid var(--border); box-shadow: var(--ss); }
.value-icon { font-size: 1.55rem; margin-bottom: 8px; display: block; }
.value-title { font-family: 'DM Sans', sans-serif; font-weight: 700; font-size: .89rem; color: var(--gd); margin-bottom: 5px; }
.value-desc { font-size: .82rem; color: var(--tm); line-height: 1.64; }

/* ── MISSION VISUAL ── */
.mission-visual { background: var(--gd); border-radius: 16px; padding: 36px 30px; }
.mission-quote { font-family: 'Playfair Display', serif; font-size: 1.25rem; font-style: italic; line-height: 1.54; margin-bottom: 14px; color: var(--cd); }

/* ── FEATURE BOX ── */
.feature-box { background: var(--gp); border-radius: 16px; padding: 29px 25px; }
.feature-item { display: flex; gap: 11px; margin-bottom: 17px; }
.feature-item:last-child { margin-bottom: 0; }
.feature-icon { font-size: 1.25rem; flex-shrink: 0; }
.feature-title { font-family: 'DM Sans', sans-serif; font-weight: 700; color: var(--gd); margin-bottom: 2px; font-size: .9rem; }
.feature-desc { font-size: .84rem; color: var(--tb); line-height: 1.64; }

/* ── ENROLLMENT WINDOW BOXES ── */
.window-boxes { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 13px; margin-top: 32px; }
.window-box { background: white; border-radius: 10px; padding: 15px 14px; border: 1px solid var(--border); }
.window-box-title { font-family: 'DM Sans', sans-serif; font-weight: 700; color: var(--gd); margin-bottom: 4px; font-size: .87rem; }
.window-box-dates { font-family: 'DM Sans', sans-serif; font-size: .79rem; color: var(--tc); margin-bottom: 3px; }
.window-box-note { font-size: .75rem; color: var(--tm); }

/* ── RETURNING FAMILY BOX ── */
.returning-box { background: var(--cd); border-radius: 12px; padding: 20px; margin-top: 15px; display: flex; gap: 13px; align-items: flex-start; }
.returning-box-emoji { font-size: 1.45rem; flex-shrink: 0; }
.returning-box-title { font-family: 'DM Sans', sans-serif; font-weight: 700; color: var(--gd); margin-bottom: 5px; }
.returning-box-desc { font-size: .85rem; color: var(--tb); line-height: 1.7; margin-bottom: 10px; }

/* ── CONTACT GRID ── */
.contact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 38px; margin-top: 38px; }
@media (max-width: 680px) { .contact-grid { grid-template-columns: 1fr; } }
.contact-info-item { display: flex; gap: 12px; margin-bottom: 20px; align-items: flex-start; }
.contact-info-icon { font-size: 1.2rem; flex-shrink: 0; margin-top: 2px; }
.contact-info-title { font-family: 'DM Sans', sans-serif; font-weight: 700; color: var(--gd); margin-bottom: 2px; font-size: .89rem; }
.contact-info-value { font-family: 'DM Sans', sans-serif; font-size: .86rem; color: var(--tb); }
.contact-info-note { font-family: 'DM Sans', sans-serif; font-size: .75rem; color: var(--tm); }
.contact-form-card { background: white; border-radius: 17px; padding: 28px 26px; border: 1px solid var(--border); box-shadow: var(--sm); }
.next-steps-box { background: var(--gp); border-radius: 11px; padding: 16px 18px; margin-top: 4px; }
.next-steps-box h4 { font-family: 'DM Sans', sans-serif; font-weight: 700; color: var(--gd); margin-bottom: 7px; font-size: .89rem; }
.next-steps-box ol { padding-left: 16px; font-size: .84rem; color: var(--tb); line-height: 1.82; }

/* ── POLICIES ── */
.policy-content { max-width: 780px; margin: 0 auto; }
.policy-section { margin-bottom: 30px; }
.policy-section h3 { font-family: 'Playfair Display', serif; font-size: 1.18rem; font-weight: 600; color: var(--gd); margin-bottom: 9px; }
.policy-section p { font-size: .9rem; line-height: 1.82; color: var(--tb); }
.policy-acknowledgment { background: var(--cd); border-radius: 12px; padding: 21px 25px; margin-top: 24px; }
.policy-acknowledgment h4 { font-family: 'DM Sans', sans-serif; font-weight: 700; color: var(--gd); margin-bottom: 6px; }
.policy-acknowledgment p { font-size: .89rem; line-height: 1.78; }

/* ── WP CONTENT ── */
.wp-content { max-width: 780px; margin: 0 auto; }
.wp-content p { margin-bottom: 1.2rem; font-size: .98rem; line-height: 1.82; }
.wp-content h2 { margin-top: 2rem; margin-bottom: .8rem; }
.wp-content h3 { margin-top: 1.5rem; margin-bottom: .6rem; color: var(--gd); }
.wp-content ul, .wp-content ol { padding-left: 1.5rem; margin-bottom: 1rem; }
.wp-content li { margin-bottom: .4rem; line-height: 1.7; }
.wp-content a { color: var(--gm); text-decoration: underline; }
.wp-content a:hover { color: var(--tc); }

/* ── UTILITIES ── */
.mt-8 { margin-top: 8px; }
.mt-12 { margin-top: 12px; }
.mt-16 { margin-top: 16px; }
.mt-24 { margin-top: 24px; }
.mt-32 { margin-top: 32px; }
.mt-40 { margin-top: 40px; }
.mb-0 { margin-bottom: 0 !important; }
.w-full { width: 100%; }
.flex { display: flex; }
.flex-wrap { flex-wrap: wrap; }
.gap-12 { gap: 12px; }
.items-start { align-items: flex-start; }

/* ── SUCCESS MESSAGE ── */
.success-box { background: var(--gp); border-radius: 17px; padding: 42px 28px; text-align: center; }
.success-box .emoji { font-size: 2.5rem; margin-bottom: 12px; display: block; }
.success-box h3 { font-family: 'Playfair Display', serif; color: var(--gd); margin-bottom: 8px; }
.success-box p { color: var(--tb); font-size: .91rem; }

/* ── FILTER BUTTONS ── */
.filter-buttons { display: flex; gap: 7px; flex-wrap: wrap; margin-bottom: 24px; }
.filter-btn { font-family: 'DM Sans', sans-serif; font-weight: 600; font-size: .81rem; padding: 7px 14px; border-radius: 100px; border: 1.5px solid var(--border); background: white; color: var(--gd); cursor: pointer; transition: all .18s; }
.filter-btn:hover, .filter-btn.active { background: var(--gd); color: white; border-color: var(--gd); }

/* ── WP ADMIN BAR OFFSET ── */
.admin-bar .site-nav { top: 32px; }
@media (max-width: 782px) { .admin-bar .site-nav { top: 46px; } }

/* ── INSTRUCTOR DASHBOARD ── */
.class-owner-card { background: var(--cr); }
.portal-nav button { border: none; }

/* Real-data class schedule (replaces old hardcoded grid) */
.schedule-days{display:flex;flex-direction:column;gap:22px;margin-top:10px}
.schedule-day-title{font-family:'Playfair Display',serif;color:var(--gd);font-size:1.15rem;margin-bottom:10px}
.schedule-day-list{display:flex;flex-direction:column;gap:8px}
.schedule-class-row{display:grid;grid-template-columns:150px 1fr auto 20px;align-items:center;gap:14px;background:white;border:1px solid var(--border);border-radius:10px;padding:12px 16px;text-decoration:none;transition:box-shadow .15s,border-color .15s}
.schedule-class-row:hover{box-shadow:var(--ss);border-color:var(--gm)}
.schedule-class-time{font-family:'DM Sans',sans-serif;font-size:.8rem;font-weight:600;color:var(--gm)}
.schedule-class-name{font-family:'DM Sans',sans-serif;font-weight:700;font-size:.92rem;color:var(--gd)}
.schedule-class-meta{font-family:'DM Sans',sans-serif;font-size:.78rem;color:var(--tm);text-align:right}
.schedule-class-arrow{color:var(--gm);font-weight:700}
@media(max-width:640px){.schedule-class-row{grid-template-columns:1fr auto;grid-template-areas:'time arrow' 'name name' 'meta meta';row-gap:4px}.schedule-class-time{grid-area:time}.schedule-class-arrow{grid-area:arrow}.schedule-class-name{grid-area:name}.schedule-class-meta{grid-area:meta;text-align:left}}
a.class-name{color:var(--gd);cursor:pointer}
a.class-name:hover{text-decoration:underline !important}

/* Room x Time visual schedule grid */
.schedule-grid-wrap{overflow-x:auto;margin-bottom:8px}
.schedule-grid{display:grid;position:relative;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:var(--cd)}
.sg-corner{background:white;border-bottom:1px solid var(--border);border-right:1px solid var(--border)}
.sg-room-head{background:var(--gd);color:var(--cr);font-family:'DM Sans',sans-serif;font-weight:700;font-size:.78rem;display:flex;align-items:center;justify-content:center;padding:6px;text-align:center;border-right:1px solid rgba(250,246,238,.15)}
.sg-time-label{grid-column:1;background:white;border-top:1px solid var(--border);border-right:1px solid var(--border);font-family:'DM Sans',sans-serif;font-size:.68rem;color:var(--tm);display:flex;align-items:flex-start;justify-content:center;padding-top:4px}
.sg-block{border-radius:7px;margin:2px;padding:6px 8px;display:flex;flex-direction:column;justify-content:center;text-decoration:none;color:white;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.15);transition:transform .12s,box-shadow .12s;position:relative;z-index:1}
.sg-block:hover{transform:scale(1.02);box-shadow:0 3px 10px rgba(0,0,0,.25);z-index:2}
.sg-block-name{font-family:'DM Sans',sans-serif;font-weight:700;font-size:.76rem;line-height:1.2}
.sg-block-meta{font-family:'DM Sans',sans-serif;font-size:.66rem;opacity:.85;margin-top:2px}
.sg-block-full{position:absolute;top:4px;right:6px;font-family:'DM Sans',sans-serif;font-size:.6rem;font-weight:700;background:rgba(0,0,0,.28);padding:1px 5px;border-radius:100px}
.schedule-legend{display:flex;flex-wrap:wrap;gap:12px;margin:14px 0 24px;padding:12px 14px;background:white;border:1px solid var(--border);border-radius:10px}
.schedule-legend-item{display:flex;align-items:center;gap:6px;font-family:'DM Sans',sans-serif;font-size:.78rem;color:var(--tb)}
.schedule-legend-dot{width:10px;height:10px;border-radius:50%;display:inline-block}
@media(max-width:640px){.sg-block-name{font-size:.7rem}.sg-block-meta{font-size:.62rem}}
/* Constrain uploaded nav logo (added by update) */
.site-nav .nav-logo-uploaded{max-height:none !important;display:flex;align-items:center;overflow:visible}
.site-nav .nav-logo-uploaded img,.site-nav .nav-logo img.custom-logo{height:54px !important;width:auto !important;max-width:240px !important;display:block;background:transparent !important}
@media (max-width:600px){.site-nav .nav-logo-uploaded img,.site-nav .nav-logo img.custom-logo{height:48px !important;max-width:210px !important}}
