/* Penwick website design system.
   Shared by the landing page and every /learn article, so a change here
   changes the whole site. Tokens match the app's paper-and-ink palette. */

/* The three school faces the app bundles. Served once and cached across the
   whole site rather than base64'd into every page. */
@font-face{font-family:"EduCursive";font-display:swap;
  src:url("/assets/fonts/EduNSWACTCursive.ttf") format("truetype");}
@font-face{font-family:"EduPrecursive";font-display:swap;
  src:url("/assets/fonts/EduQLDBeginner.ttf") format("truetype");}
@font-face{font-family:"EduPrint";font-display:swap;
  src:url("/assets/fonts/EduNSWACTFoundation.ttf") format("truetype");}

:root{
  --paper:#FBF7EF;
  --card:#FDFBF6;
  --white:#FFFFFF;
  --ink:#2E2A26;
  --body:#3D3A36;
  --muted:#57504A;
  --faint:#6B635A;
  --rule:#E5DCC9;
  --rule-soft:#EFE7D8;
  --teal:#1F6363;
  --teal-deep:#164C4C;
  --teal-wash:#DDEAE7;
  --terra:#D26A4B;
  --terra-wash:#F6E3D3;
  --terra-ink:#B4522F;
  --gold:#C9922E;
  --sans:ui-rounded,"SF Pro Rounded","Segoe UI Variable","Segoe UI",system-ui,
         -apple-system,"Helvetica Neue",Arial,sans-serif;
  --shadow:0 18px 44px rgba(46,42,38,.08);
  --shadow-sm:0 6px 18px rgba(46,42,38,.06);
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);
  -webkit-font-smoothing:antialiased;line-height:1.6;
}
img{max-width:100%;height:auto;}
a{color:var(--teal);text-decoration:none;font-weight:700;}
a:hover{color:var(--terra);}

.wrap{max-width:1120px;margin:0 auto;padding:0 20px;}
.narrow{max-width:760px;margin:0 auto;}

/* ---- nav ---------------------------------------------------------- */
.nav{display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:18px 0 10px;flex-wrap:wrap;}
.nav-brand{display:flex;align-items:center;gap:10px;font-size:22px;
  font-weight:800;letter-spacing:-0.01em;color:var(--ink);}
.nav-brand:hover{color:var(--ink);}
.nav-mark{width:30px;height:30px;border-radius:8px;background:var(--teal);
  color:var(--card);display:grid;place-items:center;font-family:Georgia,serif;
  font-style:italic;font-size:19px;font-weight:700;}
.nav-links{display:flex;align-items:center;gap:20px;flex-wrap:wrap;
  font-size:15px;font-weight:700;}
.nav-links a{color:var(--muted);}
.nav-links a:hover,.nav-links a[aria-current]{color:var(--teal);}
.nav-cta{color:var(--teal);border:2px solid var(--teal);padding:8px 15px;
  border-radius:999px;}
.nav-cta:hover{background:var(--teal);color:var(--card);}

/* ---- article furniture -------------------------------------------- */
.eyebrow{display:inline-block;font-size:12px;font-weight:800;letter-spacing:.14em;
  text-transform:uppercase;color:var(--teal);background:var(--teal-wash);
  padding:7px 14px;border-radius:999px;}
.eyebrow.warm{color:var(--terra-ink);background:var(--terra-wash);}

h1{font-size:clamp(30px,5.2vw,46px);line-height:1.1;font-weight:800;
  letter-spacing:-0.022em;margin:18px 0 0;}
h2{font-size:clamp(23px,3.6vw,32px);line-height:1.18;font-weight:800;
  letter-spacing:-0.016em;margin:54px 0 0;}
h3{font-size:clamp(18px,2.4vw,21px);line-height:1.3;font-weight:800;
  letter-spacing:-0.008em;margin:30px 0 0;}
.standfirst{font-size:clamp(17px,2.1vw,20px);line-height:1.55;color:var(--muted);
  margin:16px 0 0;max-width:36em;}
p{font-size:17px;line-height:1.68;color:var(--body);margin:16px 0 0;max-width:38em;}
.byline{font-size:13.5px;color:var(--faint);margin-top:14px;font-weight:600;}
.byline span{color:var(--rule);margin:0 8px;}
ul,ol{max-width:38em;padding-left:24px;}
li{font-size:17px;line-height:1.62;color:var(--body);margin-top:9px;}
strong{color:var(--ink);font-weight:800;}
hr{border:0;border-top:1px solid var(--rule);margin:52px 0;}

/* ---- contents ------------------------------------------------------ */
.toc{background:var(--card);border:1px solid var(--rule);border-radius:16px;
  padding:20px 22px;margin:34px 0 0;}
.toc-title{font-size:11.5px;font-weight:800;letter-spacing:.13em;
  text-transform:uppercase;color:var(--faint);}
.toc ol{margin:12px 0 0;padding-left:20px;max-width:none;}
.toc li{font-size:15.5px;margin-top:7px;}

/* ---- cards & callouts ---------------------------------------------- */
.card{background:var(--card);border:1px solid var(--rule);border-radius:18px;
  padding:22px 24px;box-shadow:var(--shadow-sm);}
.card h3{margin-top:0;}
.grid{display:grid;gap:18px;margin-top:26px;}
.g2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));}
.g3{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));}
.g4{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));}

/* Stacked comparison: full column width, so joins are actually visible and
   the three styles can be measured against each other. */
.stack{display:flex;flex-direction:column;gap:22px;margin-top:26px;}
.stack-item{background:var(--card);border:1px solid var(--rule);
  border-radius:18px;padding:18px 20px;box-shadow:var(--shadow-sm);}
.stack-item .spec-note{margin-bottom:0;}

.note{border-left:4px solid var(--teal);background:var(--teal-wash);
  border-radius:0 14px 14px 0;padding:18px 22px;margin:28px 0 0;}
.note p{margin-top:0;color:var(--teal-deep);}
.note p+p{margin-top:12px;}
.note-title{font-size:12px;font-weight:800;letter-spacing:.12em;
  text-transform:uppercase;color:var(--teal);margin-bottom:6px;}

.teacher{background:var(--card);border:1px solid var(--rule);border-left:4px solid var(--terra);
  border-radius:0 16px 16px 0;padding:20px 24px;margin:28px 0 0;}
.teacher .who{font-size:12px;font-weight:800;letter-spacing:.11em;
  text-transform:uppercase;color:var(--terra-ink);}
.teacher p{margin-top:8px;font-size:17.5px;}

/* ---- specimen frames ----------------------------------------------- */
.spec{background:var(--white);border:1px solid var(--rule-soft);border-radius:14px;
  padding:6px 4px;overflow:hidden;}
.spec canvas{display:block;width:100%;}
.spec-label{display:flex;align-items:baseline;justify-content:space-between;
  gap:10px;margin-bottom:8px;flex-wrap:wrap;}
.spec-name{font-size:14px;font-weight:800;color:var(--ink);}
.spec-tag{font-size:11.5px;font-weight:800;letter-spacing:.08em;
  text-transform:uppercase;padding:4px 10px;border-radius:999px;}
.tag-good{color:var(--teal);background:var(--teal-wash);}
.tag-bad{color:var(--terra-ink);background:var(--terra-wash);}
.spec-note{font-size:14.5px;color:var(--muted);margin-top:10px;line-height:1.55;}

/* ---- comparison table ---------------------------------------------- */
.table-scroll{overflow-x:auto;margin-top:26px;
  border:1px solid var(--rule);border-radius:16px;background:var(--card);}
table{border-collapse:collapse;width:100%;min-width:540px;}
th,td{text-align:left;padding:14px 18px;font-size:15.5px;
  border-bottom:1px solid var(--rule-soft);vertical-align:top;color:var(--body);}
th{font-size:12.5px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;
  color:var(--faint);background:var(--paper);}
tbody tr:last-child td{border-bottom:0;}
td strong{display:block;}

/* ---- year band chart ------------------------------------------------ */
.years{margin-top:26px;display:flex;flex-direction:column;gap:10px;}
.year-row{display:grid;grid-template-columns:112px 1fr;gap:14px;align-items:center;}
.year-name{font-size:13.5px;font-weight:800;color:var(--ink);}
.year-name small{display:block;font-weight:600;color:var(--faint);font-size:12px;}
.year-bar{height:38px;border-radius:10px;display:flex;align-items:center;
  padding:0 14px;font-size:14px;font-weight:700;color:var(--card);
  overflow:hidden;white-space:nowrap;}

/* ---- checklist ------------------------------------------------------ */
.check{list-style:none;padding:0;margin:26px 0 0;max-width:none;
  display:grid;gap:14px;}
.check li{background:var(--card);border:1px solid var(--rule);border-radius:14px;
  padding:16px 18px 16px 52px;position:relative;margin:0;font-size:16.5px;}
.check li::before{content:"";position:absolute;left:17px;top:18px;width:19px;
  height:19px;border:2px solid var(--teal);border-radius:5px;}
.check li strong{display:block;margin-bottom:3px;}
.check li span{color:var(--muted);font-size:15px;}

/* ---- letter grid ---------------------------------------------------- */
.family{margin-top:34px;}
.family-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;}
.family-head h3{margin:0;}
.family-letters{font-family:Georgia,serif;font-style:italic;color:var(--terra);
  font-size:19px;font-weight:700;}
.letters{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));
  gap:14px;margin-top:16px;}
.letter{background:var(--card);border:1px solid var(--rule);border-radius:16px;
  padding:10px 10px 14px;text-align:center;transition:border-color .15s,transform .15s;}
.letter:hover{border-color:var(--teal);transform:translateY(-2px);}
.letter canvas{display:block;width:100%;height:118px;background:var(--white);
  border-radius:10px;border:1px solid var(--rule-soft);}
.letter-glyph{font-size:13px;font-weight:800;color:var(--ink);margin-top:10px;}
.letter-tip{font-size:13px;line-height:1.45;color:var(--muted);margin-top:5px;}
.replay{font-size:11.5px;font-weight:800;letter-spacing:.07em;
  text-transform:uppercase;color:var(--faint);margin-top:8px;}

/* ---- FAQ ------------------------------------------------------------ */
.faq{margin-top:26px;border:1px solid var(--rule);border-radius:16px;
  background:var(--card);overflow:hidden;}
.faq details{border-bottom:1px solid var(--rule-soft);}
.faq details:last-child{border-bottom:0;}
.faq summary{cursor:pointer;padding:17px 22px;font-size:16.5px;font-weight:800;
  color:var(--ink);list-style:none;display:flex;justify-content:space-between;
  gap:14px;align-items:center;}
.faq summary::-webkit-details-marker{display:none;}
.faq summary::after{content:"+";font-size:22px;color:var(--teal);font-weight:700;
  line-height:1;flex:0 0 auto;}
.faq details[open] summary::after{content:"\2212";}
.faq .answer{padding:0 22px 20px;}
.faq .answer p{margin-top:0;font-size:16px;}
.faq .answer p+p{margin-top:12px;}

/* ---- CTA ------------------------------------------------------------ */
.cta{background:var(--card);border:1px solid var(--rule);border-radius:26px;
  padding:clamp(26px,4vw,46px);box-shadow:var(--shadow);margin-top:64px;
  text-align:center;}
.cta h2{margin:16px 0 0;font-size:clamp(24px,4.2vw,36px);}
.cta p{margin:14px auto 0;max-width:32em;font-size:17.5px;color:var(--muted);}
.cta-buttons{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;
  margin-top:28px;}
.btn{display:inline-block;padding:14px 26px;border-radius:12px;font-size:16px;
  font-weight:800;border:2px solid var(--teal);}
.btn-primary{background:var(--teal);color:var(--card);}
.btn-primary:hover{background:var(--teal-deep);border-color:var(--teal-deep);
  color:var(--card);}
.btn-ghost{background:transparent;color:var(--teal);border-color:var(--rule);}
.btn-ghost:hover{border-color:var(--teal);color:var(--teal);}
.cta-meta{display:flex;flex-wrap:wrap;gap:8px 20px;justify-content:center;
  margin-top:24px;font-size:14.5px;font-weight:600;color:var(--faint);}
.cta-meta span.dot{color:var(--rule);}

/* ---- related -------------------------------------------------------- */
.related{margin-top:60px;}
.related a.card{display:block;}
.related a.card:hover{border-color:var(--teal);}
.related .kicker{font-size:11.5px;font-weight:800;letter-spacing:.12em;
  text-transform:uppercase;color:var(--terra-ink);}
.related h3{margin:8px 0 0;font-size:18.5px;}
.related p{margin-top:8px;font-size:15px;color:var(--muted);}

/* ---- footer --------------------------------------------------------- */
.foot{margin-top:70px;border-top:1px solid var(--rule);padding:36px 0 60px;}
.foot-inner{display:flex;flex-wrap:wrap;gap:24px;justify-content:space-between;}
.foot-brand div:first-child{font-size:17px;font-weight:800;}
.foot-brand div:last-child{font-size:13.5px;color:var(--faint);}
.foot-links{display:flex;gap:22px;flex-wrap:wrap;font-size:14.5px;}
.foot-note{margin-top:26px;font-size:13px;color:var(--faint);max-width:44em;}

/* ---- series ---------------------------------------------------------
   Most readers arrive in the middle of the series from a search, so every
   part restates what the whole thing is for and where this one sits. */
.series{background:var(--card);border:1px solid var(--rule);border-left:4px solid var(--teal);
  border-radius:0 16px 16px 0;padding:16px 20px;margin:22px 0 0;max-width:44em;}
.series-top{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;}
.series-part{font-size:11.5px;font-weight:800;letter-spacing:.11em;text-transform:uppercase;
  color:var(--card);background:var(--teal);padding:4px 10px;border-radius:999px;}
.series-name{font-size:14.5px;font-weight:800;color:var(--teal);}
.series-why{margin:10px 0 0;font-size:15.5px;line-height:1.55;color:var(--muted);}
.series-why strong{color:var(--ink);}
.series-all{margin-top:10px;}
.series-all summary{cursor:pointer;font-size:13.5px;font-weight:800;color:var(--faint);
  list-style:none;}
.series-all summary::-webkit-details-marker{display:none;}
.series-all summary::before{content:"▸ ";color:var(--teal);}
.series-all[open] summary::before{content:"▾ ";}
.series-all ol{margin:10px 0 0;padding-left:20px;max-width:none;}
.series-all li{font-size:14.5px;margin-top:5px;}
.series-all li.here{font-weight:800;color:var(--ink);list-style-type:disc;}
.series-all li.here a{color:var(--ink);pointer-events:none;}

.seriesend{margin-top:52px;padding-top:26px;border-top:1px solid var(--rule);}
.sq{font-size:clamp(19px,2.6vw,23px);font-weight:800;line-height:1.35;color:var(--ink);
  letter-spacing:-0.01em;max-width:24em;margin:0;}
.sq-nav{display:flex;flex-wrap:wrap;gap:12px;margin-top:20px;}
.sq-nav a{flex:1 1 240px;background:var(--card);border:1px solid var(--rule);
  border-radius:14px;padding:14px 18px;font-size:16.5px;font-weight:800;
  color:var(--ink);line-height:1.3;}
.sq-nav a:hover{border-color:var(--teal);color:var(--ink);}
.sq-nav a span{display:block;font-size:11.5px;font-weight:800;letter-spacing:.1em;
  text-transform:uppercase;color:var(--faint);margin-bottom:5px;}
.sq-next{border-color:var(--teal) !important;}
.sq-next span{color:var(--teal) !important;}

.storycta{display:block;margin-top:16px;background:var(--teal);color:var(--card);
  border-radius:18px;padding:22px 24px;}
.storycta:hover{background:var(--teal-deep);color:var(--card);}
.storycta-k{display:block;font-size:11.5px;font-weight:800;letter-spacing:.12em;
  text-transform:uppercase;opacity:.72;}
.storycta-t{display:block;margin-top:7px;font-size:clamp(18px,2.4vw,22px);
  font-weight:800;line-height:1.28;letter-spacing:-0.01em;max-width:20em;}
.storycta-go{display:inline-block;margin-top:12px;font-size:15px;font-weight:800;
  border-bottom:2px solid rgba(253,251,246,.45);padding-bottom:1px;}

/* ---- the story page -------------------------------------------------- */
.story-hero{margin-top:26px;}
.story-figure{background:var(--card);border:1px solid var(--rule);border-radius:18px;
  overflow:hidden;margin-top:26px;}
.story-figure img{display:block;width:100%;}
.story-figure figcaption{padding:13px 18px;font-size:14.5px;color:var(--muted);
  border-top:1px solid var(--rule-soft);}
.story-slot{background:var(--card);border:2px dashed var(--rule);border-radius:18px;
  padding:34px 24px;margin-top:26px;text-align:center;color:var(--faint);}
.story-slot b{display:block;color:var(--ink);font-size:16px;margin-bottom:5px;}
.story-slot span{font-size:14px;}

/* ---- print: the checklist has to survive a book bag ----------------- */
@media print{
  body{background:#fff;}
  .nav,.cta,.related,.foot,.toc,.faq,.teacher,button{display:none !important;}
  .card,.check li{box-shadow:none;break-inside:avoid;}
  h2{break-after:avoid;}
  a{color:var(--ink);}
  a[href^="http"]::after{content:" (" attr(href) ")";font-size:11px;
    font-weight:400;color:var(--faint);}
}

@media (max-width:620px){
  .year-row{grid-template-columns:88px 1fr;}
  .letters{grid-template-columns:repeat(auto-fill,minmax(132px,1fr));}
}
