/* Course pages design system — generated by scripts/gen-course-pages.ts.
   The app's card language (16px radius, subject-colour spines, 5-colour system)
   in a modern-Google frame. Light + dark via prefers-color-scheme. */
:root{
  --c-navy:#0F1B2D;--c-blue:#1A5CFF;--c-green:#1DB954;--c-amber:#F59E0B;--c-red:#D4243A;
  --c-bg:#F6F8FC;--c-card:#FFFFFF;--c-text:#17253A;--c-text2:#51617A;--c-text3:#7C8AA0;--c-link:#1A5CFF;
  --c-border:#E3E9F2;--c-borderdim:#EDF1F8;--accent:#1A5CFF;
  --c-shadow:0 2px 8px rgba(15,27,45,.06);--c-shadowlift:0 8px 28px rgba(15,27,45,.10);
}
@media (prefers-color-scheme: dark){:root{
  --c-bg:#0F1B2D;--c-card:#131D2E;--c-text:#F2F5FA;--c-text2:#A9B6C9;--c-text3:#8B99AF;--c-link:#7FA6FF;
  --c-border:#243248;--c-borderdim:#1B2536;
  --c-shadow:0 2px 10px rgba(0,0,0,.35);--c-shadowlift:0 10px 32px rgba(0,0,0,.45);
}
/* accent-coloured chips: raw subject hues sit too dark on dark cards —
   lift them toward white (same treatment the band eyebrow gets).
   body-scoped so this wins over the base rules defined later in the file. */
body.courses-page .ecode,body.courses-page .unit-n,body.courses-page .dir-chip,body.courses-page .dir-gov-ico{color:color-mix(in srgb,var(--accent,#1A5CFF) 55%,#fff)}
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body.courses-page{font-family:'DM Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;background:var(--c-bg);color:var(--c-text);line-height:1.65;-webkit-font-smoothing:antialiased}
.font-sora{font-family:'Sora',sans-serif}
.wrap{max-width:920px;margin:0 auto;padding:0 20px}
main a{color:var(--c-link)}
h1,h2,h3{font-family:'Sora',sans-serif;color:var(--c-text);line-height:1.25}
/* the site's fixed nav floats over light course content once scrolled —
   deepen its glass so the white nav text always reads. And the nav's
   logo/hamburger inherit body colour: force white so light mode's dark
   body text never bleeds into the wordmark sitting on the navy band. */
body.courses-page #nav.scrolled{background:rgba(15,27,45,.93)}
body.courses-page #nav{color:#fff}
.btn-sm{font-family:'Inter',sans-serif;background:var(--c-blue);color:#fff;text-decoration:none;padding:8px 16px;border-radius:10px;font-weight:600;font-size:13.5px;transition:transform .15s ease,box-shadow .15s ease}
.btn-sm:hover{transform:translateY(-1px);box-shadow:var(--c-shadowlift)}
/* ── hero band — the navy canvas the fixed white-text nav was built for.
   Compact, accent-glowed, identical bones on all five page types. ── */
.chero{position:relative;color:#fff;padding:calc(var(--nav-h,68px) + 22px) 0 30px;border-bottom:1px solid rgba(255,255,255,.06);background:radial-gradient(1000px 460px at 88% -12%,color-mix(in srgb,var(--accent,#1A5CFF) 30%,transparent),transparent 66%),linear-gradient(180deg,#0F1B2D 0%,#132339 100%)}
.chero .crumbs{margin:0 0 16px;color:rgba(255,255,255,.52)}
.chero .crumbs a{color:#9DC0FF}
.chero .eyebrow{color:color-mix(in srgb,var(--accent,#1A5CFF) 40%,#fff)}
.chero h1{color:#fff}
.chero .capsule{color:rgba(238,244,252,.82)}
.chero .stat{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.14);box-shadow:none;color:rgba(255,255,255,.7)}
.chero .stat b{color:#fff}
.chero .hero-secondary a{color:#9DC0FF}
.chero .fineprint{color:rgba(255,255,255,.5);margin-bottom:0}
/* breadcrumbs + hero content */
.crumbs{font-size:13px;color:var(--c-text3)}
.crumbs a{color:inherit;text-decoration:none}
.crumbs a:hover{text-decoration:underline}
.eyebrow{font-family:'Inter',sans-serif;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--accent,#1A5CFF);margin-bottom:8px}
h1{font-size:clamp(26px,4.5vw,36px);margin-bottom:14px}
.capsule{font-size:16.5px;color:var(--c-text2);max-width:760px;margin-bottom:18px}
.stats{display:flex;gap:12px;margin:4px 0 20px;flex-wrap:wrap}
.stat{background:var(--c-card);border:1px solid var(--c-border);border-radius:14px;padding:10px 20px;font-family:'Inter',sans-serif;font-size:13px;color:var(--c-text2);box-shadow:var(--c-shadow)}
.stat b{font-family:'Sora',sans-serif;color:var(--c-text);font-size:20px;display:block;line-height:1.2}
/* justify-content: the landing stylesheet centers .hero-ctas for its own
   hero — on the band the trio must sit flush with the text column */
.hero-ctas{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:6px 0 8px;justify-content:flex-start}
.bottom-cta .hero-ctas{justify-content:center}
.hero-secondary{font-size:13.5px;margin-bottom:6px}
.hero-secondary a{color:var(--c-link);text-decoration:none;font-weight:600}
.hero-secondary a:hover{text-decoration:underline}
.fineprint{font-size:12.5px;color:var(--c-text3);margin-bottom:14px}
/* sections */
.block{margin:34px 0}
.block h2{font-size:22px;margin-bottom:10px}
.block>p{color:var(--c-text2);max-width:760px}
/* curriculum outline — the app's card + spine language */
.unit{background:var(--c-card);border:1px solid var(--c-border);border-left:4px solid var(--accent,#1A5CFF);border-radius:16px;margin:16px 0;padding:20px 22px;box-shadow:var(--c-shadow)}
.unit h3{font-size:18px;margin-bottom:4px}
.unit-n{font-family:'Inter',sans-serif;display:inline-block;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--accent,#1A5CFF);background:color-mix(in srgb,var(--accent,#1A5CFF) 10%,transparent);border-radius:7px;padding:2px 8px;margin-right:10px;vertical-align:2px}
.udesc{font-size:14px;color:var(--c-text2);margin:2px 0 8px}
.lesson{margin:14px 0 4px}
.lesson h4{font-family:'Inter',sans-serif;font-size:15px;font-weight:600;color:var(--c-text);margin-bottom:4px}
ul.skills{list-style:none;margin:0 0 4px}
ul.skills li{font-size:14px;color:var(--c-text2);padding:5px 0 5px 18px;position:relative;scroll-margin-top:80px}
ul.skills li::before{content:'';position:absolute;left:2px;top:13px;width:6px;height:6px;border-radius:3px;background:var(--accent,#1A5CFF);opacity:.55}
ul.skills li b{color:var(--c-text);font-weight:600}
/* teach arc */
ol.arc{margin:12px 0 12px 20px;color:var(--c-text2)}
ol.arc li{margin:8px 0;font-size:15px}
ol.arc b{color:var(--c-text)}
/* ── the gov ↔ MapleMind comparison spine ── */
.tblwrap{overflow-x:auto;margin:18px 0 6px;border:1px solid var(--c-border);border-radius:14px;box-shadow:var(--c-shadow);background:var(--c-card)}
table.govmap{width:100%;min-width:560px;border-collapse:collapse;font-size:14px}
.govmap th{font-family:'Inter',sans-serif;font-size:11.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--c-text3);text-align:left;padding:11px 16px;border-bottom:1px solid var(--c-border);background:color-mix(in srgb,var(--accent,#1A5CFF) 5%,var(--c-card))}
.govmap td{padding:12px 16px;border-bottom:1px solid var(--c-borderdim);vertical-align:top;color:var(--c-text2);line-height:1.5}
.govmap tr:last-child td{border-bottom:none}
.govmap td b{font-family:'Inter',sans-serif;font-weight:600;color:var(--c-text);white-space:nowrap}
.govmap td a{color:var(--c-link);text-decoration:none}
.govmap td a:hover{text-decoration:underline}
.govmap .sep{color:var(--c-text3)}
.tbl-note{font-size:13px;color:var(--c-text3);margin:8px 2px 0;max-width:760px}
.ecode{font-family:ui-monospace,'SF Mono',Menlo,Consolas,monospace;font-size:11px;font-weight:600;color:var(--accent,#1A5CFF);background:color-mix(in srgb,var(--accent,#1A5CFF) 9%,transparent);border:1px solid color-mix(in srgb,var(--accent,#1A5CFF) 24%,transparent);border-radius:6px;padding:1px 6px;margin-left:8px;vertical-align:1px;white-space:nowrap}
.unit-strand{font-family:'Inter',sans-serif;font-size:11px;font-weight:600;letter-spacing:.03em;color:var(--c-text3);border:1px solid var(--c-border);border-radius:7px;padding:2px 8px;margin-left:10px;vertical-align:2px;white-space:nowrap}
details.gov-quotes{margin:12px 0 2px;border:1px dashed var(--c-border);border-radius:12px;background:color-mix(in srgb,var(--accent,#1A5CFF) 3%,transparent)}
details.gov-quotes summary{font-family:'Inter',sans-serif;font-size:13px;font-weight:600;color:var(--c-text2);padding:10px 14px;cursor:pointer;list-style:none;position:relative;padding-right:38px}
details.gov-quotes summary::after{content:'+';position:absolute;right:16px;top:50%;transform:translateY(-50%);font-size:18px;color:var(--c-text3);transition:transform .2s ease}
details.gov-quotes[open] summary::after{transform:translateY(-50%) rotate(45deg)}
details.gov-quotes ul{list-style:none;margin:0;padding:0 14px 12px}
details.gov-quotes li{font-size:13.5px;color:var(--c-text2);padding:8px 0;border-top:1px solid var(--c-borderdim);line-height:1.55}
details.gov-quotes li .ecode{margin-left:0;margin-right:8px}
details.gov-quotes q{font-style:normal}
/* ── app screenshots in device frames ── */
.shots{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin:24px 0 12px}
.shot{margin:0;text-align:center}
.shot-frame{position:relative;border-radius:30px;background:#0B1524;padding:9px;border:1px solid var(--c-border);box-shadow:var(--c-shadowlift);overflow:hidden}
.shot-frame::after{content:'';position:absolute;left:9px;right:9px;bottom:9px;height:64px;border-radius:0 0 22px 22px;background:linear-gradient(180deg,transparent,#0B1524);pointer-events:none}
.shot-frame img{width:100%;height:auto;border-radius:22px;display:block}
.shot figcaption{font-family:'Inter',sans-serif;font-size:13.5px;font-weight:600;color:var(--c-text);margin-top:12px}
.shot figcaption small{display:block;font-weight:400;color:var(--c-text3);font-size:12.5px;margin-top:2px}
@media (max-width:760px){
  .shots{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;padding:2px 2px 10px;-webkit-overflow-scrolling:touch}
  .shot{flex:0 0 64%;scroll-snap-align:center}
}
/* CTAs */
.mid-cta{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;background:color-mix(in srgb,var(--accent,#1A5CFF) 7%,var(--c-card));border:1px solid var(--c-border);border-radius:16px;padding:20px 24px;margin:30px 0}
.mid-cta p{font-family:'Sora',sans-serif;font-weight:600;font-size:17px}
.bottom-cta{background:var(--c-navy);border-radius:20px;color:#fff;padding:36px 28px;text-align:center;margin:40px 0 56px}
.bottom-cta h2{color:#fff;font-size:22px;margin-bottom:8px}
.bottom-cta p{margin-bottom:18px;opacity:.85;font-size:15px}
/* exam */
.exam{background:color-mix(in srgb,var(--c-amber) 8%,var(--c-card));border:1px solid var(--c-border);border-left:4px solid var(--c-amber);border-radius:16px;padding:20px 22px}
.exam h2{font-size:19px}
/* faq */
details.faq{background:var(--c-card);border:1px solid var(--c-border);border-radius:14px;margin:10px 0;box-shadow:var(--c-shadow)}
details.faq summary{font-family:'Inter',sans-serif;font-weight:600;font-size:15px;padding:14px 18px;cursor:pointer;list-style:none;position:relative;padding-right:40px}
details.faq summary::after{content:'+';position:absolute;right:18px;top:50%;transform:translateY(-50%);font-size:20px;color:var(--c-text3);transition:transform .2s ease}
details.faq[open] summary::after{transform:translateY(-50%) rotate(45deg)}
details.faq p{padding:0 18px 14px;color:var(--c-text2);font-size:14.5px}
/* cards grid */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin:14px 0}
.card{background:var(--c-card);border:1px solid var(--c-border);border-left:4px solid var(--accent,#1A5CFF);border-radius:14px;padding:14px 16px;text-decoration:none;color:var(--c-text);box-shadow:var(--c-shadow);transition:transform .15s ease,box-shadow .15s ease}
.card:hover{transform:translateY(-2px);box-shadow:var(--c-shadowlift)}
.card b{display:block;margin-bottom:2px;font-family:'Inter',sans-serif;font-weight:600;font-size:14.5px}
.card small{color:var(--c-text3);font-size:12.5px}
/* grade pills */
.grade-row{display:flex;gap:10px;flex-wrap:wrap;margin:12px 0}
.grade-pill{font-family:'Inter',sans-serif;background:var(--c-card);border:1.5px solid var(--c-border);color:var(--c-text);text-decoration:none;font-weight:600;font-size:14px;padding:9px 18px;border-radius:999px;transition:border-color .15s ease,transform .15s ease}
.grade-pill:hover{border-color:var(--c-blue);transform:translateY(-1px)}
/* skill finder */
.finder{position:relative;max-width:560px;margin-top:12px}
#sf-input{width:100%;font-family:'Inter',sans-serif;font-size:15px;padding:13px 18px;border-radius:14px;border:1.5px solid var(--c-border);background:var(--c-card);color:var(--c-text);outline:none}
#sf-input:focus{border-color:var(--c-blue)}
.sf-results{list-style:none;margin-top:8px}
.sf-results li a{display:block;background:var(--c-card);border:1px solid var(--c-border);border-radius:12px;padding:10px 14px;margin:6px 0;text-decoration:none;color:var(--c-text)}
.sf-results li a:hover{border-color:var(--c-blue)}
.sf-results b{font-family:'Inter',sans-serif;font-size:14px;font-weight:600;display:block}
.sf-results small{color:var(--c-text3);font-size:12.5px}
.sf-none{color:var(--c-text3);font-size:14px;padding:8px 2px}
/* missed-course popup — the landing share-pop pattern */
.mc-pop{position:fixed;right:24px;bottom:24px;z-index:950;width:min(360px,calc(100vw - 32px));background:var(--c-card);border:1px solid var(--c-border);border-radius:18px;padding:18px 18px 16px;box-shadow:var(--c-shadowlift);transform:translateY(150%);opacity:0;transition:transform .5s cubic-bezier(.22,1,.36,1),opacity .4s ease;pointer-events:none}
.mc-pop.show{transform:translateY(0);opacity:1;pointer-events:auto}
.mc-head{display:flex;align-items:flex-start;gap:12px}
.mc-head h3{font-size:16px;margin-bottom:3px}
.mc-head p{font-size:13px;color:var(--c-text2);line-height:1.5}
.mc-close{margin-left:auto;flex-shrink:0;width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--c-text3);background:transparent;border:1px solid var(--c-border);cursor:pointer;font-size:13px}
.mc-close:hover{color:var(--c-text)}
.mc-actions{display:flex;gap:12px;align-items:center;margin-top:14px}
.mc-ghost{font-family:'Inter',sans-serif;font-size:13px;font-weight:600;color:var(--c-blue);text-decoration:none}
@media (max-width:520px){.mc-pop{right:12px;left:12px;bottom:12px;width:auto}}
@media (prefers-reduced-motion:reduce){.mc-pop{transition:none}.card,.grade-pill{transition:none}}
/* official-curricula directory — each province wears its own accent */
.dir-card{padding:18px 20px}
.dir-card h3{margin-bottom:10px}
.dir-chip{font-family:'Sora',sans-serif;font-size:16px;font-weight:700;color:var(--accent,#1A5CFF);background:color-mix(in srgb,var(--accent,#1A5CFF) 12%,transparent);border-radius:10px;padding:4px 12px;display:inline-block}
.dir-gov{display:flex;align-items:center;gap:12px;text-decoration:none;background:color-mix(in srgb,var(--accent,#1A5CFF) 5%,var(--c-card));border:1px solid var(--c-border);border-radius:12px;padding:10px 14px;margin:6px 0 10px;transition:border-color .15s ease}
.dir-gov:hover{border-color:var(--accent,#1A5CFF)}
.dir-gov-ico{font-size:16px;color:var(--accent,#1A5CFF);flex-shrink:0}
.dir-gov-txt b{display:block;font-family:'Inter',sans-serif;font-size:14px;font-weight:600;color:var(--c-text)}
.dir-gov-txt small{color:var(--c-text3);font-size:12px}
.dir-gov-badge{flex-shrink:0;align-self:center;font-family:'Inter',sans-serif;font-size:10px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:#fff;background:var(--accent,#1A5CFF);padding:6px 10px;border-radius:7px;line-height:1}
.guide-cta{display:flex;align-items:center;gap:14px;text-decoration:none;background:color-mix(in srgb,var(--accent,#1A5CFF) 7%,var(--c-card));border:1px solid color-mix(in srgb,var(--accent,#1A5CFF) 35%,var(--c-border));border-radius:14px;padding:15px 18px;margin:4px 0 18px;transition:border-color .15s ease,transform .15s ease}
.guide-cta:hover{border-color:var(--accent,#1A5CFF);transform:translateY(-1px)}
.guide-cta-ico{flex-shrink:0;color:var(--accent,#1A5CFF)}
.guide-cta-txt{flex:1}
.guide-cta-txt b{display:block;font-family:'Sora',sans-serif;font-size:15px;color:var(--c-text);margin-bottom:2px}
.guide-cta-txt small{color:var(--c-text3);font-size:13px;line-height:1.5}
.guide-cta-arrow{flex-shrink:0;font-size:20px;color:var(--accent,#1A5CFF)}
.dir-subs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 10px}
.dir-sub{font-family:'Inter',sans-serif;font-size:12.5px;font-weight:600;color:var(--c-link);text-decoration:none;border:1px solid var(--c-border);border-radius:999px;padding:5px 12px;background:var(--c-card)}
.dir-sub:hover{border-color:var(--accent,#1A5CFF)}
.dir-ours{display:inline-block;font-family:'Inter',sans-serif;font-size:13.5px;font-weight:600;color:var(--c-link);text-decoration:none}
.dir-ours:hover{text-decoration:underline}
/* scraper honeypot — never visible, never focusable */
.qb-ht{display:none !important}
/* footer */
footer{border-top:1px solid var(--c-border);padding:22px 0 34px;margin-top:20px;font-size:13px;color:var(--c-text3)}
footer a{color:var(--c-text2);text-decoration:none}
footer a:hover{color:var(--c-text)}
