/* Study Compass refresh (6 Oct 2026): calmer, more premium look from the "A refined" mockups.
   Loaded LAST on every page (home, sign-in, setup, app), so it only re-skins: no layout or behaviour changes.
   - Navy actions as full pills, no chunky lip.
   - Big surfaces are soft tinted tiles (24px radius, no border). Subject colour lives on icons, not whole cards.
   - Fraunces italic (.acc, in type.css) for one emphasised phrase per heading. Never on quiz questions.
   Design canvas: https://claude.ai/artifact/HGTAnKU8sBDz6Bxais5kL5 */

:root:root:root:root{
  --navy:#0F2A5C; --navy-hover:#16397A; --link:#1743A6;
  --ink:#0B1F44; --ink-2:#4A5670; --ink-3:#5B6780; --muted:#4A5670; --ink-lip:#0B1F44;
  --bg:#FFFFFF; --panel:#F4F6FA; --panel-2:#E7ECF5; --surface:#FFFFFF; --surface-2:#F4F6FA;
  --line:#E3E7EE; --line-strong:#D5DBE6;
  --primary:#0F2A5C; --primary-lip:#0F2A5C;
  --maths-soft:#E8EFFD; --maths-soft-ink:#1743A6;
  --progress:#1D5BD8;
  --tile-r:24px;
}

/* ---------- buttons: pills, no lip ---------- */
.btn{border-radius:999px;box-shadow:none;margin-bottom:0;background:var(--navy);color:#fff;transition:background-color .15s,transform .12s}
.btn:hover{background:var(--navy-hover)}
.btn:active{transform:translateY(1px);box-shadow:none}
.btn.dark{background:var(--navy);box-shadow:none}
.btn.white{background:#fff;color:var(--navy);box-shadow:none}
.btn.white:hover{background:#EEF2F8}
.btn.ghost,.btn.teal{background:#fff;color:var(--ink);border:1px solid var(--line-strong);box-shadow:none;margin-bottom:0}
.btn.ghost:hover,.btn.teal:hover{background:var(--panel)}
.btn.small{border-radius:999px}
.link,.linkish{color:var(--link)}
a{color:var(--link)}
:focus-visible{outline-color:var(--link)}

/* ---------- headings ---------- */
h1,h2{color:var(--ink)}
.closer h2,.col.new h3{color:#fff}

/* =================== public pages (site.css) =================== */
.top{background:rgba(255,255,255,.94)}
.top nav a{border-radius:999px;color:var(--ink-2);font-weight:var(--fw-medium)}
.top nav a:hover{background:var(--panel);color:var(--ink)}
.logo-tile{background:var(--navy)}

/* hero */
.tagline{background:#fff;border:1px solid var(--line);border-radius:999px;padding:6px 14px;color:var(--ink-2);font-weight:var(--fw-medium)}
.hero{background:var(--panel)}
.hero h1 em{font-family:var(--font-accent);font-style:italic;font-weight:500;letter-spacing:-.01em;color:inherit}
.hero .lede{color:var(--ink-2)}
.preview{background:var(--panel-2);border:1px solid #DCE3EF;border-radius:32px}
.pv-hero{background:#fff;color:var(--ink);border-radius:20px;box-shadow:0 1px 2px rgba(11,31,68,.04)}
.pv-hero .deco{display:none}
.pv-hero .t{background:var(--maths-soft);color:var(--maths-soft-ink);border-radius:999px}
.pv-hero h3{color:var(--ink)}
.pv-hero p{color:var(--ink-2)}
.pv-bar{background:var(--line)} .pv-bar i{background:var(--progress)}
.pv-hero .btn,.pv-hero .btn.white{background:var(--navy);color:#fff}
.pv-card{border-radius:20px;box-shadow:0 1px 2px rgba(11,31,68,.04)}

/* icon chips: navy for features, subject colour only as the icon's colour on white elsewhere */
.ico{background:var(--navy);color:#fff;border-radius:14px}
.ico.sun{background:var(--sunny);color:var(--ink)} .ico.green{background:var(--writing-fill);color:#fff} .ico.red{background:var(--reading-fill);color:#fff} .ico.ink{background:var(--navy)}

/* bands and section heads */
section.band.grey{background:var(--panel)}
.kicker{background:none;padding:0;border-radius:0;color:var(--link);font-size:var(--fs-meta);font-weight:var(--fw-semibold);letter-spacing:.04em;text-transform:uppercase}
.sec-h p{color:var(--ink-2)}

/* tiles */
.col{border-radius:var(--tile-r)}
.col.old{background:var(--panel);border:0}
section.band.grey .col.old{background:#fff}
.col.new{background:var(--navy)}
.col.new .mark{color:var(--navy)}
.steps li{background:var(--panel);border-top:0;border-radius:var(--tile-r);position:relative}
section.band.grey .steps li{background:#fff}
.steps li::before{content:"";display:block;width:36px;height:6px;border-radius:99px;background:var(--maths-fill);margin-bottom:4px}
.steps li:nth-child(2)::before{background:var(--sunny)} .steps li:nth-child(3)::before{background:var(--writing-fill)} .steps li:nth-child(4)::before{background:var(--reading-fill)}
.steps p{color:var(--ink-2)}
.who{border-radius:999px}
.goal{background:var(--panel)!important;color:var(--ink);border-radius:var(--tile-r)}
section.band.grey .goal{background:#fff!important}
.goal p{color:var(--ink-2)}
.goal h3{color:var(--ink)}
.goal::before{content:"";display:block;width:36px;height:6px;border-radius:99px;background:var(--maths-fill)}
.goal.g2::before{background:var(--writing-fill)} .goal.g3::before{background:var(--reading-fill)} .goal.g4::before{background:var(--navy)}
.feat{background:var(--panel);border:0;border-radius:var(--tile-r)}
section.band.grey .feat{background:#fff}
.feat p{color:var(--ink-2)}
.faq details{border-radius:20px}
.closer{background:var(--navy)!important;border-radius:28px}
.closer p{color:#C9D4F0}
.closer .btn{background:#fff;color:var(--navy)}

/* forms and dialogs (setup, sign-in) */
.field input,.field select{border-radius:14px}
.field input:focus,.field select:focus{border-color:var(--link);box-shadow:0 0 0 3px var(--maths-soft)}
.choice{border-radius:999px;box-shadow:none;border:1px solid var(--line-strong)}
.choice[aria-pressed="true"]{background:var(--maths-soft);border-color:var(--navy);color:var(--ink);box-shadow:inset 0 0 0 1px var(--navy)}
.cardpick{border-radius:20px;background:var(--panel);border:1px solid transparent}
.cardpick[aria-pressed="true"]{background:#fff;border-color:var(--navy);box-shadow:inset 0 0 0 1px var(--navy)}
.cardpick[aria-pressed="true"] b{color:var(--ink)}
.progress i.on,.progress i.done{background:var(--navy)}
.card-auth{border-radius:28px;border-color:var(--line)}
body.auth{background:var(--panel)}
.notice{border-radius:16px}
.who.student{background:var(--maths-soft);color:var(--maths-soft-ink)}

/* =================== the app (app.css, theme.css, ux.css) =================== */
.bar{background:rgba(255,255,255,.94)}
.brand .logo-tile{background:var(--navy)}
.topnav{background:transparent;padding:0;gap:2px}
.topnav button{border-radius:999px;color:var(--ink-2);font-weight:var(--fw-medium)}
.topnav button[aria-current="page"]{background:var(--panel);color:var(--ink);font-weight:var(--fw-semibold)}
.topnav button:hover:not([aria-current="page"]){background:var(--panel)}
.chip-btn{border-radius:999px;border:1px solid var(--line)}

.card{border:1px solid var(--line);border-radius:var(--tile-r)}

/* Today: the next thing to do is a calm tinted tile with a navy icon chip and a navy button */
.hero-task,.hero-task.maths,.hero-task.writing,.hero-task.reading,.hero-task.language,.hero-task.test{background:var(--panel);color:var(--ink);border-radius:28px}
.hero-task .deco{display:none}
.hero-task h2{color:var(--ink)}
.hero-task p{color:var(--ink-2)}
.hero-task .tag{background:var(--maths-soft);color:var(--maths-soft-ink);border-radius:999px}
.hero-task.writing .tag{background:var(--writing-soft);color:var(--good-ink)}
.hero-task.reading .tag{background:var(--reading-soft);color:#8A2915}
.hero-task.language .tag{background:var(--language-soft);color:#4A2A73}
.hero-task .why-box{background:#fff;color:var(--ink);border-radius:16px}
.hero-task .why-box p{color:var(--ink-2)}
.hero-task .btn,.hero-task.writing .btn,.hero-task.reading .btn,.hero-task.language .btn,.hero-task.test .btn{background:var(--navy);color:#fff;box-shadow:none}
.hero-task .btn:hover{background:var(--navy-hover)}
.bar-prog{background:var(--line)} .bar-prog i{background:var(--progress)}

.task{background:var(--panel);border-radius:var(--tile-r)}
.task .ico,.task .ico.writing,.task .ico.reading,.task .ico.language{background:#fff}
.task .ico{color:var(--maths-fill)} .task .ico.writing{color:var(--writing-fill)} .task .ico.reading{color:var(--reading-fill)} .task .ico.language{color:var(--language-fill)}
.task .ico.test{background:var(--navy);color:#fff}
.task .ico.sun{background:var(--sunny);color:var(--ink)}
.task .btn{background:var(--navy);color:#fff}
.more-item{border:0;background:var(--panel);border-radius:20px}
.more-item:hover{background:var(--panel-2)}
.side-box{border:0;background:var(--panel);border-radius:var(--tile-r)}
.week .blk{background:#fff}
.week .blk.free{background:none}

/* subject tiles: tinted, with a small subject-colour mark instead of a full colour block */
.subj,.subj.maths,.subj.writing,.subj.reading,.subj.language,.subj.puzzles{background:var(--panel);color:var(--ink);border-radius:var(--tile-r)}
.subj b::before{content:"";display:block;width:28px;height:6px;border-radius:99px;background:var(--maths-fill);margin-bottom:12px}
.subj.writing b::before{background:var(--writing-fill)} .subj.reading b::before{background:var(--reading-fill)} .subj.language b::before{background:var(--language-fill)} .subj.puzzles b::before{background:var(--ink-3)}
.subj span{color:var(--ink-2)}
.subj:not([aria-disabled="true"]):hover{background:var(--panel-2)}

/* topic tiles (Maths list): tinted tiles, the subject band becomes a short mark */
.subjects .subject.sw-maths,.subjects .subject.sw-writing{background:var(--panel);border:0;border-radius:var(--tile-r);padding-top:28px}
.subjects .subject.sw-maths::before,.subjects .subject.sw-writing::before{left:24px;right:auto;top:18px;width:28px;height:6px;border-radius:99px}
.subjects .subject.sw-maths:hover{background:var(--panel-2);border:0}
.subjects .subject.sw-maths .pill{background:#fff;color:var(--maths-soft-ink)}
.subject.sw-maths,.subject.sw-writing{border-radius:var(--tile-r)}

.pill.next{background:var(--maths-soft);color:var(--maths-soft-ink)}

/* choices and answers */
.choice[aria-pressed="true"]{background:var(--maths-soft);border-color:var(--navy);color:var(--ink)}
.opt{border-radius:20px}
.opt.sel{background:var(--panel);border-color:var(--navy);color:var(--ink);box-shadow:inset 0 0 0 1px var(--navy)}
.tag{border-radius:999px}

/* grown-ups */
.gu-nav{background:var(--panel);border-radius:var(--tile-r)}
.gu-nav button{border-radius:999px}
.gu-nav button[aria-selected="true"]{background:#fff;color:var(--ink)}
.att{border-radius:20px}
.ov-day{border-radius:16px}
.hc{border-radius:20px}
.ldone{border-radius:28px}
.freeday{background:var(--panel);border-radius:28px}
.setup{border:0;background:var(--panel);border-radius:28px}
.cardpick[aria-pressed="true"] span{color:var(--ink-2)}
.pv-hero .why{background:var(--panel);color:var(--ink-2)}
.pv-hero .why b{color:var(--ink)}
.pv-card span.ico{display:grid;margin-top:0;line-height:0}

/* home: "What you get" tiles and the "Every task has a reason" split (6 Oct 2026) */
.wyg-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap}
.wyg-head .sec-h{margin-bottom:0}
.more-link{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-weight:var(--fw-semibold);font-size:var(--fs-sm);color:var(--navy);text-decoration:none}
.more-link:hover{text-decoration:underline;text-underline-offset:3px}
.wyg{list-style:none;margin:48px 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
@media (max-width:960px){.wyg{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:600px){.wyg{grid-template-columns:minmax(0,1fr);margin-top:32px;gap:16px}}
.wyg li{background:var(--panel);border-radius:var(--tile-r);padding:32px;min-height:240px;display:flex;flex-direction:column}
@media (max-width:600px){.wyg li{min-height:0;padding:24px}}
.wyg .chip{width:52px;height:52px;border-radius:16px;background:var(--navy);color:#fff;display:grid;place-items:center}
.wyg h3{margin-top:28px;font-size:var(--fs-h4);font-weight:var(--fw-semibold);letter-spacing:-.005em}
.wyg p{margin-top:10px;font-size:var(--fs-sm);line-height:1.6;color:var(--ink-2)}
.reason{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:72px;align-items:center}
@media (max-width:860px){.reason{grid-template-columns:minmax(0,1fr);gap:40px}.reason-copy{order:-1}}
.reason-proof{background:var(--panel-2);border:1px solid #DCE3EF;border-radius:32px;padding:24px}
.rp-card{background:#fff;border-radius:20px;padding:24px;display:flex;flex-direction:column}
.rp-l{font-size:var(--fs-xs);font-weight:var(--fw-semibold);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3)}
.rp-t{margin-top:8px;font-size:var(--fs-xl);font-weight:650;letter-spacing:-.01em}
.rp-card dl{margin:12px 0 0}
.rp-card dl div{display:flex;justify-content:space-between;gap:12px;padding:12px 0;border-top:1px solid var(--line);font-size:var(--fs-label)}
.rp-card dt{color:var(--ink-3)} .rp-card dd{margin:0;font-weight:var(--fw-semibold)} .rp-card .rp-s{color:var(--link)}
.reason-copy h2{margin-top:2px}
.reason-copy p{margin-top:16px;font-size:var(--fs-md);color:var(--ink-2);max-width:32em}
.ticks{list-style:none;margin:24px 0 0;padding:0;display:flex;flex-direction:column;gap:14px}
.ticks li{display:flex;gap:12px;align-items:flex-start;font-size:var(--fs-sm);line-height:1.5}
.ticks svg{flex:none;margin-top:1px}

/* ---- Calmer lower home sections (6 Oct 2026): navy + panel tints, colour only as small marks ---- */
/* How it works: one navy anchor, the rest panel tints */
.loop-row li{background:var(--panel)}
.loop-row li:last-child{background:var(--navy);color:#fff}
.node.soft{border:1px solid var(--line)}
.node.child{background:var(--panel-2);color:var(--ink)}
.node.plan{background:var(--navy);box-shadow:none}
.branch.b1,.branch.b2,.branch.b3{background:#fff;color:var(--ink);border:1px solid var(--line);position:relative}
.branch b::before{content:"";display:block;width:24px;height:4px;border-radius:2px;margin:0 auto 8px}
.branch.b1 b::before{background:#C98A1B}.branch.b2 b::before{background:var(--progress)}.branch.b3 b::before{background:#12805C}
/* Paths: navy avatars, quiet chips */
.kid{border:1px solid var(--line)}
.kid .av{background:var(--navy)!important} /* overrides inline avatar colour */
.rollout{background:var(--panel-2);color:var(--ink-2)}
.minipath i.back{background:#fff;border:1px dashed var(--line-strong)}
.minipath i.now{background:var(--navy);color:#fff}
.minipath i.next{background:var(--maths-soft);color:var(--maths-soft-ink)}
/* Mistakes: no red/green bars */
.mwrap .mflow li,.mwrap .mflow li:not(:first-child):not(:last-child){background:var(--panel);color:var(--ink)}
.mwrap .mflow li:first-child::before,.mwrap .mflow li:first-child small,.mwrap .mflow li:last-child::before,.mwrap .mflow li:last-child small{color:var(--ink-3)}
.mwrap .mflow li:first-child::before{color:#C23E22!important;font-weight:700}
.mwrap .mflow li:last-child{background:var(--navy);color:#fff}
.mwrap .mflow li:last-child::before,.mwrap .mflow li:last-child small{color:rgba(255,255,255,.8)}
.example .ans{background:var(--panel-2)}
/* Compare: navy header, soft column */
.ctable{border:1px solid var(--line)}
.ctable thead th.sc{background:var(--navy)}
.ctable td.sc{background:var(--maths-soft);color:var(--ink)}
/* Trust note */
.honest{background:var(--panel)}

/* ---- Site-wide sweep (6 Oct 2026): remaining lips, bright blocks and yellow panels ---- */
/* no lips anywhere */
.closer .btn,.price.feature,.choice,.np-startbtn,.np-btn.main,.np-startbtn:active,.np-btn.main:active{box-shadow:none}
.np-startbtn,.np-btn.main{background:var(--navy);border-radius:999px}
.np-startbtn:hover,.np-btn.main:hover{background:var(--navy-hover)}
.np-startbtn:active,.np-btn.main:active{transform:translateY(1px)}
.np-prog i{background:var(--navy)}
.np-btn{border-radius:999px;border:1px solid var(--line-strong)}
.np-btn[aria-pressed="true"]{background:var(--maths-soft);border-color:var(--navy);color:var(--navy)}
.price.feature{border:1.5px solid var(--navy)}
.choice{border-width:1px}

/* avatars: soft navy instead of yellow */
.learner .av,.kidswitch button[aria-pressed="true"] .av,.kidrow .av{background:var(--maths-soft);color:var(--navy)}

/* home hero: the three "Gaps / On track / Ready" marks and preview icons */
.tri .dot,.tri .d1,.tri .d2,.tri .d3{background:#fff;color:var(--navy);border:1px solid var(--line)}
.ico.sun,.pv-card .ico.sun{background:var(--panel);color:var(--navy)}
.tagline{background:#fff;color:var(--ink)}

/* setup wizard and sign-in */
.progress i.on{background:var(--navy)} .progress i.done{background:var(--navy);opacity:.45}
.weekline span.on{background:var(--navy)}
.pinbox,.logincard code,body:not(:has(#saveDot)) .note{background:var(--panel)}
.pinbox{border:0}

/* Today week strip and the grown-ups week */
.week .blk.done,.week .blk.today.done{background:var(--navy);color:#fff}
.week .blk.part{background:var(--maths-soft);color:var(--navy)}
.ov-day.done{background:var(--navy);color:#fff}
.ov-day.done *{color:#fff}
.ov-day.missed{background:var(--panel)}
.ov-day.missed .sub,.ov-day.missed small{color:#8A5A00}

/* grown-ups: "Do you need to do anything?" and other status panels are calm tiles; colour stays on the small icon */
.todo.some,.todo.none{background:var(--panel)}
.todo.some .ic,.todo.some > svg{color:#8A5A00}
.res-g.start{background:var(--panel)}
.ldone{background:var(--panel)}
.st.revisiting{background:var(--attention-fill)}

/* app header: keep everything on one row (save status keeps its dot; the words stay for screen readers) */
.learner:not([hidden]) ~ .save-dot #saveTxt{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@media (min-width:1181px){.bar-in{flex-wrap:nowrap}.topnav button{padding-inline:12px}}

/* Tests page: the weekly-test icon must not stretch with the card */
.task .ico.test{margin:0;min-height:0;height:48px;border:0;box-shadow:none;overflow:visible;flex-direction:row;border-radius:14px}

/* grown-ups heading: tabular digits on .qtop were widening the hyphen in "Grown-ups" */
.qtop .eyebrow,.qtop h1{font-variant-numeric:normal}
/* Today: a timed test in progress uses .hero-task.test, which also picked up the full-height test-screen rules */
.hero-task.test{min-height:0;flex-direction:row;border:0;box-shadow:none}

/* grown-ups Overview (7 Oct): one column, a compact week, and "For you to do" as a plain card with a coloured edge */
.ov-cols{grid-template-columns:1fr;gap:28px}
.ov-cols h2{font-size:var(--fs-xl)!important}
.ov-week{gap:6px;margin-top:10px}
.ov-day{min-height:0;padding:8px 10px;flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:2px 6px;border-radius:12px}
.ov-day > span:first-child{font-size:var(--fs-meta)}
.ov-day b{font-family:var(--body);font-size:var(--fs-body)}
.ov-day > span:last-child{width:100%;font-size:var(--fs-meta)}
.todo.some,.todo.none{display:block;background:var(--surface);border:1px solid var(--line);border-left:5px solid #C98A00;border-radius:16px;padding:14px 20px;margin:0 0 22px}
.todo.none{border-left-color:var(--good)}
.todo h2{font-size:var(--fs-label);font-weight:var(--fw-semibold);color:var(--ink-2);margin:0 0 4px}
.todo ul{list-style:none;padding:0;margin:0;gap:6px}
.att,.doing{border-radius:16px}
/* home page parent-view example: the to-do card matches the grown-ups Overview */
.dcard.todo-ex{border-left:5px solid var(--good-ink);border-radius:16px}   /* the example says "Nothing right now", which is the green state */
.dcard.todo-ex h3{font-size:var(--fs-label);font-weight:var(--fw-semibold);color:var(--ink-2)}

/* lessons stay locked until the starting check is done (7 Oct) */
.lock-banner{display:flex;flex-wrap:wrap;gap:14px 20px;align-items:center;justify-content:space-between;background:var(--surface);border:1px solid var(--line);border-left:5px solid #C98A00;border-radius:16px;padding:16px 20px;margin:4px 0 18px}
.lock-banner h3{margin:0 0 4px;font-size:var(--fs-h4)}
.lock-banner p{margin:0;color:var(--ink-2)}
.lesson-row.locked{opacity:.6;cursor:default}
.lock-note{margin:0;padding:10px 14px;border-radius:12px;background:var(--surface);font-weight:var(--fw-semibold)}

/* Selective Entry Preparation preview: sections fold open to show every planned lesson (7 Oct) */
.sel-sec{padding:0;overflow:hidden}
.sel-sec > summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px;cursor:pointer;list-style:none}
.sel-sec > summary::-webkit-details-marker{display:none}
.sel-sec > summary > span:not(.st){display:flex;flex-direction:column;gap:2px}
.sel-sec > summary b{font-size:var(--fs-h4)}
.sel-sec[open] > summary{border-bottom:1px solid var(--line)}
.sel-sec h4{margin:16px 20px 4px;font-size:var(--fs-label);color:var(--ink-2)}
.sel-list{display:flex;flex-direction:column}
.sel-sec .sel-list{padding:0 20px 12px}
.sel-row{display:flex;align-items:center;gap:14px;padding:10px 0;border-bottom:1px solid var(--line)}
.sel-row:last-child{border-bottom:0}
.sel-row > span:not(.sel-n):not(.st){flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.sel-row .sel-n{flex:none;min-width:40px;font-weight:var(--fw-semibold);color:var(--ink-2);font-variant-numeric:tabular-nums}
.sel-row.locked b{color:var(--ink-2)}
.sel-row .sel-m{align-self:flex-start;margin-top:4px;font-size:var(--fs-xs,12px);font-weight:var(--fw-semibold);color:var(--teal-ink,var(--ink-2));background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:1px 8px}
.sel-plan h4{margin:18px 0 4px;font-size:var(--fs-label);color:var(--ink-2)}
.sel-sugg{margin:8px 0 12px;padding-left:20px;display:flex;flex-direction:column;gap:4px;font-size:var(--fs-read)}
.sel-sec > summary .st,.sel-row .st{flex:none;white-space:nowrap}
/* App and setup heading sizes (8 Oct 2026): page titles were the marketing size (44px), too loud for an app screen.
   Page title 26 to 32px; a section headline stays below it on every screen (22 to 26px). */
#app h1,.wiz h1{font-size:clamp(26px,1vw + 18px,32px);line-height:1.15}
#app .hero-task h2{font-size:clamp(22px,.6vw + 18px,26px)}
#app .ov-title{font-size:clamp(22px,.8vw + 16px,26px)}
/* curriculum topic descriptions are content, not captions: 14px rather than 13px */
.cur-skill .sub{font-size:var(--fs-label)}
