/*!
 * site-chrome.css — shared header, nav, hero-slider and footer for every
 * page on the Quincy Academy marketing site. Linked identically from every
 * page (via an absolute /assets/css/site-chrome.css path) so the chrome
 * looks and behaves the same everywhere.
 */
:root{ --brand:#404094; --brand-d:#2f2f70; --brand-l:#eef0fb; --text:#2c2c3a; --muted:#6b6b7b; }
*{box-sizing:border-box;}
body{margin:0;font-family:'Poppins',Arial,sans-serif;color:var(--text);overflow-x:hidden;}

/* ---- top bar ---- */
.topbar{background:#0d1526;color:#fff;font-size:12.5px;}
.topbar-inner{max-width:1300px;margin:0 auto;padding:9px 5%;display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;align-items:center;}
.topbar-left, .topbar-right{display:flex;gap:22px;flex-wrap:wrap;align-items:center;}
.topbar-item{display:flex;align-items:center;gap:7px;color:#fff;text-decoration:none;white-space:nowrap;font-weight:600;}
.topbar-item .topbar-item-text{text-transform:uppercase;letter-spacing:.3px;font-size:11.5px;}
.topbar-item#topbarEmail .topbar-item-text{font-variant:small-caps;text-transform:none;letter-spacing:.2px;font-size:12.5px;}
.topbar-item svg{width:13px;height:13px;fill:var(--accent);flex-shrink:0;}
.topbar-social{display:flex;gap:10px;}
.topbar-social a{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:rgba(255,255,255,.08);}
.topbar-social svg{width:13px;height:13px;fill:#e8e8f5;}

/* ---- header / nav ---- */
.site-header{display:flex;align-items:center;justify-content:space-between;padding:14px 5%;box-shadow:0 2px 8px rgba(0,0,0,.06);position:sticky;top:0;background:#fff;z-index:1000;}
.site-header .logo{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text);font-weight:700;font-size:18px;flex-shrink:0;}
.site-header .logo img{height:42px;width:auto;}
.nav-toggle{display:none;background:none;border:none;font-size:26px;cursor:pointer;color:var(--brand);line-height:1;}
.site-nav{display:flex;flex-wrap:wrap;align-items:center;gap:2px;}
.site-nav a{color:var(--text);text-decoration:none;padding:8px 12px;font-size:13.5px;font-weight:500;border-radius:6px;white-space:nowrap;}
.site-nav a:hover, .site-nav a.active{color:var(--brand);background:var(--brand-l);}
.site-nav a.cta{background:var(--brand);color:#fff;margin-left:6px;}
.site-nav a.cta:hover{background:var(--brand-d);color:#fff;}
.site-nav a.portal-link{border:1px solid var(--brand);color:var(--brand);}
.site-nav a.portal-link:hover{background:var(--brand);color:#fff;}

@media (max-width:1080px){
  .nav-toggle{display:block;}
  .site-nav{display:none;position:absolute;top:100%;left:0;right:0;background:#fff;flex-direction:column;align-items:stretch;padding:6px 5% 20px;box-shadow:0 8px 16px rgba(0,0,0,.1);gap:0;max-height:80vh;overflow-y:auto;}
  .site-nav.open{display:flex;}
  .site-nav a{padding:13px 10px;border-bottom:1px solid #f2f2f2;border-radius:0;}
  .site-nav a.cta, .site-nav a.portal-link{margin:10px 0 0;text-align:center;border-radius:6px;}
}

/* ---- hero slider (homepage only) ---- */
/* Full-bleed: breaks out of whatever max-width container the legacy theme
   markup wraps it in, so it always spans the full browser width regardless
   of ancestor constraints. */
.hero-slider{position:relative;left:50%;right:50%;margin-left:-50vw;margin-right:-50vw;width:100vw;max-width:100vw;height:600px;overflow:hidden;background:var(--brand);}
.hero-slide{position:absolute;inset:0;opacity:0;transition:opacity 1.1s ease;background-size:cover;background-position:center;display:flex;align-items:center;}
.hero-slide.active{opacity:1;z-index:1;}
/* Scrim over the slide photo. It exists for ONE reason: keeping the white
   headline and lead readable. So it is shaped to the text, not painted flat
   across the whole picture -- it holds steady over the text column, then
   falls away sharply past it so the right-hand side of the photograph comes
   through almost clean.

   The stops are not taste, they are a floor. Measured against every current
   slide image (brightest pixel per column, WCAG bar of 3:1 for the large
   bold h1 and 4.5:1 for the smaller lead paragraph), the requirement is
   ~.56 across the lead's width and ~.44 across the rest of the h1. The
   values below clear that, and also clear the absolute worst case of a
   future slide that is pure white behind the text.

   The previous .88/.68/.38 tapered to roughly .46 by the middle of the lead
   paragraph -- under the .56 it needed -- so text over a bright patch was
   already marginal there, while the left edge was so heavy that only ~12%
   of the photo survived. This is brighter AND passes where the old one did
   not. Re-measure before raising anything here. */
.hero-slide::before{content:'';position:absolute;inset:0;background:linear-gradient(100deg,rgba(10,10,32,.60) 0%,rgba(10,10,32,.60) 48%,rgba(10,10,32,.48) 65%,rgba(10,10,32,.16) 88%,rgba(10,10,32,.08) 100%);}
.hero-slide .hero-content{position:relative;z-index:2;padding:0 8%;max-width:880px;width:100%;}
/* Explicit (not inherited) colors: the legacy theme stylesheet has a
   same-specificity global rule (.nd_options_customizer_fonts h1/p{color:#5c5c5c/#636363})
   that otherwise wins over inheritance from .hero-content, washing the text out. */
.hero-slide h1{color:#fff;font-size:clamp(28px,4.4vw,54px);margin:0 0 16px;font-weight:800;line-height:1.15;text-shadow:0 2px 14px rgba(0,0,0,.45);}
.hero-slide p{color:#f2f2fa;font-size:18px;margin:0 0 26px;max-width:780px;text-shadow:0 1px 8px rgba(0,0,0,.4);}
.hero-slide .hero-cta{background:var(--brand);color:#fff;text-decoration:none;padding:14px 30px;border-radius:8px;font-weight:600;display:inline-block;box-shadow:0 6px 20px rgba(0,0,0,.25);}
.hero-slide .hero-cta:hover{background:var(--brand-d);}
.hero-dots{position:absolute;bottom:24px;left:0;right:0;display:flex;justify-content:center;gap:8px;z-index:5;}
.hero-dots button{width:10px;height:10px;border-radius:50%;border:none;background:rgba(255,255,255,.5);cursor:pointer;padding:0;}
.hero-dots button.active{background:#fff;}
@media (max-width:700px){ .hero-slider{height:460px;} }

/* ---- footer ---- */
:root{ --accent:#f5a623; --accent-d:#d98c0f; }
.site-footer{background:#0d1526;color:#c9c9d6;padding:56px 5% 0;}
.footer-grid{max-width:1300px;margin:0 auto;display:grid;grid-template-columns:1.3fr 1fr 1fr 1.2fr;gap:40px;padding-bottom:36px;}
@media (max-width:980px){ .footer-grid{grid-template-columns:1fr 1fr;} }
@media (max-width:600px){ .footer-grid{grid-template-columns:1fr;} }
.footer-col h4, .footer-about .footer-brand{color:#fff;font-size:14px;margin:0 0 18px;text-transform:uppercase;letter-spacing:.6px;font-weight:700;}
.footer-col h4{color:var(--accent);}
.footer-about .footer-brand{display:flex;align-items:center;gap:10px;font-size:17px;text-transform:none;letter-spacing:0;}
.footer-about .footer-brand img{height:40px;width:auto;border-radius:50%;}
.footer-about p{font-size:13px;line-height:1.7;color:#a8a8bd;margin:0 0 16px;}
.footer-social{display:flex;gap:10px;}
.footer-social a{color:#fff;background:rgba(255,255,255,.08);width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;text-decoration:none;}
.footer-social svg{width:15px;height:15px;fill:#fff;}
.footer-links{display:flex;flex-direction:column;gap:12px;}
.footer-links a{color:#c9c9d6;text-decoration:none;font-size:13.5px;}
.footer-links a:hover{color:#fff;}
.footer-contact{display:flex;flex-direction:column;gap:16px;}
.footer-contact-row{display:flex;align-items:flex-start;gap:12px;font-size:13px;line-height:1.6;color:#c9c9d6;}
.footer-contact-row svg{width:16px;height:16px;fill:var(--accent);flex-shrink:0;margin-top:2px;}
.footer-contact-row a{color:#c9c9d6;text-decoration:none;}
.footer-contact-row a:hover{color:#fff;}
.footer-divider{max-width:1300px;margin:0 auto;border-top:1px solid rgba(255,255,255,.1);}
.footer-map-full{max-width:1300px;margin:32px auto 0;border-radius:12px;overflow:hidden;}
.footer-map-full iframe{width:100%;height:260px;border:0;display:block;}
.footer-map-full .map-empty{font-size:12px;color:#a8a8bd;padding:24px;text-align:center;}
.footer-bottom{max-width:1300px;margin:0 auto;border-top:1px solid rgba(255,255,255,.1);margin-top:32px;text-align:center;padding:20px 0;font-size:12.5px;color:#8f8fa3;display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;}
.footer-bottom a{color:#c9c9d6;}

/* ---- scroll-to-top button ---- */
.scroll-top-btn{position:fixed;bottom:24px;right:24px;width:46px;height:46px;border-radius:50%;background:#1b3a4b;color:#fff;border:none;display:none;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 6px 18px rgba(0,0,0,.25);z-index:900;}
.scroll-top-btn.visible{display:flex;}
.scroll-top-btn svg{width:18px;height:18px;fill:#fff;}
.scroll-top-btn:hover{background:var(--brand);}

/* ---- generic page hero (non-homepage pages keep a simple banner) ---- */
.page-hero{background:var(--brand-l);padding:56px 5% 36px;text-align:center;}
.page-hero h1{margin:0 0 8px;font-size:30px;color:var(--brand);}
.page-hero p{margin:0;color:var(--muted);max-width:640px;margin:0 auto;}

/* ---- shared student / exam result cards ---- */
/* Used on the homepage's exam-highlights teaser, the Achievers page, and
   Exam Results — one consistent look for "student + their result" anywhere
   on the site. */
.qa-exam-block{margin-bottom:30px;}
.qa-exam-block:last-child{margin-bottom:0;}
.qa-exam-summary{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;background:#fff;border:1px solid #eee;border-radius:16px;padding:20px 26px;margin-bottom:20px;box-shadow:0 2px 10px rgba(0,0,0,.04);}
.qa-exam-summary-left{display:flex;align-items:center;gap:16px;}
.qa-exam-icon{width:56px;height:56px;border-radius:12px;background:var(--brand-l);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.qa-exam-icon svg{width:26px;height:26px;fill:var(--brand);}
.qa-exam-summary-text h3{margin:0;font-size:17px;color:var(--text);}
.qa-exam-summary-text h3 .qa-exam-yr{color:var(--muted);font-weight:400;}
.qa-exam-summary-text p{margin:3px 0 0;font-size:13px;color:var(--muted);}
.qa-exam-highlight{background:#fff8e6;border-left:3px solid var(--gold,#c9971e);padding:12px 16px;font-size:13px;color:var(--text);border-radius:0 8px 8px 0;margin:0 0 20px;}
.qa-exam-stats{display:flex;gap:30px;}
.qa-exam-stat{text-align:center;}
.qa-exam-stat .qa-num{font-size:25px;font-weight:800;color:var(--brand);line-height:1.1;}
.qa-exam-stat .qa-lbl{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;margin-top:3px;}
.qa-student-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:20px;}
.qa-student-card{background:#fff;border:1px solid #eee;border-radius:16px;padding:26px 20px 22px;text-align:center;position:relative;}
.qa-student-card .qa-badge{position:absolute;top:14px;left:14px;background:var(--gold,#c9971e);color:#fff;font-size:11px;font-weight:700;padding:3px 10px;border-radius:20px;}
.qa-avatar-ring{width:96px;height:96px;border-radius:50%;border:2px solid var(--brand-l);padding:4px;margin:0 auto 14px;}
.qa-avatar-ring img, .qa-avatar-ring .qa-ph-fallback{width:100%;height:100%;border-radius:50%;object-fit:cover;display:flex;align-items:center;justify-content:center;background:var(--brand-l);color:var(--brand);font-weight:700;font-size:26px;}
.qa-student-card h4{margin:0 0 4px;font-size:17px;color:var(--text);}
.qa-student-cls{font-size:12.5px;color:var(--muted);margin-bottom:2px;}
.qa-student-note{font-size:12.5px;color:var(--muted);margin-bottom:6px;}
.qa-student-score{font-size:24px;font-weight:800;color:var(--brand);margin:6px 0 16px;line-height:1;}
.qa-student-score .qa-score-lbl{display:block;font-size:10px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;margin-top:4px;}
.qa-subjects-list{display:flex;flex-direction:column;gap:8px;text-align:left;}
.qa-subject-row{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#f6f7fb;border-radius:8px;padding:9px 12px;}
.qa-subject-row span:first-child{font-size:13px;font-weight:600;color:var(--text);}
.qa-grade-badge{background:var(--brand);color:#fff;font-size:11.5px;font-weight:700;padding:3px 10px;border-radius:6px;flex-shrink:0;}
.qa-exam-cta{margin-top:8px;text-align:center;}
.qa-exam-cta a{background:var(--brand-l);color:var(--brand);text-decoration:none;padding:10px 18px;border-radius:8px;font-size:13px;font-weight:600;}
.qa-exam-cta a:hover{background:var(--brand);color:#fff;}
.qa-exam-empty, .qa-exam-loading{text-align:center;color:var(--muted);padding:30px 0;}

/* ---- "Classes and Eligible Age" FAQ, filled live from the portal ---- */
.qa-class-ages{display:flex;flex-direction:column;gap:16px;margin-top:4px;}
.qa-class-school h4{margin:0 0 8px;font-size:12px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:var(--brand);}
.qa-class-school ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px;}
.qa-class-school li{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px dotted #dcdce8;}
.qa-class-school li:last-child{border-bottom:none;}
.qa-class-name{font-size:13.5px;font-weight:600;color:var(--text);}
.qa-class-age{font-size:13px;color:var(--muted);white-space:nowrap;flex-shrink:0;}
