/* ============================================================
   /learn — editorial layout.
   The reading column is centred and figures break out wider than
   it, which is the standard magazine arrangement and the reason
   this reads as a page rather than a text dump.
   ============================================================ */
:root{--bg:var(--paper);--card:var(--surface);--card2:var(--surface-2);
      --edge:var(--line);--text:var(--ink);
      --mint:var(--good);--mint-soft:var(--good-soft);--coral:var(--bad);--blue:var(--info);
      --measure:var(--w-prose)}
*{box-sizing:border-box;margin:0}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{background:var(--bg);color:var(--text);font:15px/1.6 var(--sans);-webkit-font-smoothing:antialiased}
.wrap{max-width:var(--w-page);margin:0 auto;padding:0 var(--gutter) 80px}
@media (max-width:700px){.wrap{padding:0 16px 132px}}

/* ---- reading progress ---- */
#prog{position:fixed;top:0;left:0;height:2px;background:var(--mint);width:0;z-index:60;transition:width .1s linear}

hr.rule{border:0;border-top:1px solid var(--edge);margin:20px 0 0}
a{color:var(--mint)}

/* ============================ INDEX ============================ */
.learn-hero{display:grid;grid-template-columns:minmax(0,.88fr) minmax(400px,1.12fr);gap:clamp(28px,5vw,66px);align-items:center;padding:42px 0 54px;border-bottom:1px solid var(--edge);margin-bottom:42px}
.learn-hero-copy{padding:18px 0}
.learn-hero .kick{font:700 11px var(--sans);letter-spacing:.24em;color:var(--mint);margin-bottom:16px}
.learn-hero h2{font:600 clamp(38px,5.3vw,66px)/.98 var(--display);letter-spacing:-.045em;margin:0 0 22px;max-width:13ch}
.learn-hero p{color:var(--mut);font:17px/1.65 var(--sans);max-width:49ch}
.learn-topics{display:flex;flex-wrap:wrap;gap:7px;margin-top:24px}
.learn-topics span{border:1px solid var(--edge);background:rgba(255,255,255,.48);border-radius:var(--r-pill);padding:7px 11px;color:var(--mut);font:650 11px var(--sans)}
.learn-feature{position:relative;display:block;min-height:480px;border-radius:24px;overflow:hidden;color:#fff;text-decoration:none;background:#2A1E16;box-shadow:var(--sh-2)}
.learn-feature:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent 38%,rgba(24,15,10,.8) 100%)}
.learn-feature img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)}
.learn-feature:hover img{transform:scale(1.025)}
.feature-copy{position:absolute;z-index:1;inset:auto 28px 28px;display:flex;flex-direction:column;align-items:flex-start}
.feature-copy small{font:700 10px var(--sans);letter-spacing:.16em;color:#F5D8B2;margin-bottom:10px}
.feature-copy b{font:600 clamp(23px,3vw,34px)/1.08 var(--display);max-width:17ch}
.feature-copy em{margin-top:15px;font:650 12px var(--sans);font-style:normal;color:rgba(255,255,255,.78)}
@media(max-width:900px){.learn-hero{grid-template-columns:1fr}.learn-hero h2{max-width:16ch}.learn-feature{min-height:420px}}
@media(max-width:560px){.learn-hero{padding-top:22px;gap:20px}.learn-hero h2{font-size:40px}.learn-feature{min-height:350px;border-radius:18px}.feature-copy{inset:auto 20px 20px}}

.sec-h{display:flex;align-items:baseline;gap:14px;margin:44px 0 18px}
.sec-h b{font:700 13px var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--text)}
.sec-h i{flex:1;height:1px;background:var(--edge);font-style:normal}
.sec-h em{font:11.5px var(--mono);color:var(--faint);font-style:normal}

.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
@media (max-width:760px){.cards{grid-template-columns:1fr;gap:14px}}
.acard{position:relative;display:flex;flex-direction:column;background:var(--card);border:1px solid var(--edge);
  border-radius:18px;padding:0 24px 22px;text-decoration:none;color:inherit;overflow:hidden;
  box-shadow:var(--sh-1);transition:border-color .2s,transform .2s,box-shadow .2s}
.acard:hover{border-color:#B9A38E;transform:translateY(-3px);box-shadow:var(--sh-2)}
.acard-media{display:block;height:210px;margin:0 -24px 20px;overflow:hidden;background:var(--surface-2)}
.acard-media img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease)}
.acard:hover .acard-media img{transform:scale(1.035)}
.acard .num{font:11.5px var(--mono);color:var(--faint);margin-bottom:14px}
.acard h3{font:600 23px/1.16 var(--display);letter-spacing:-.025em;margin-bottom:11px}
.acard p{font:14.5px/1.6 var(--sans);color:var(--mut);flex:1}
.acard .go{display:inline-flex;align-items:center;gap:7px;margin-top:16px;font:600 13px var(--sans);color:var(--mint)}
@media(max-width:520px){.acard-media{height:190px}}

/* ============================ ARTICLE ============================ */
/* Sidebar plus a single content column. Everything in the article, text, figures,
   tables and callouts, sits at exactly one width: mixed widths read as misalignment
   rather than as an editorial breakout. */
.art-layout{display:grid;grid-template-columns:200px minmax(0,1fr);gap:40px;align-items:start;margin-top:6px}
@media (max-width:980px){.art-layout{grid-template-columns:1fr;gap:0}}
/* width:100% + justify-self, not margin:0 auto. Auto side margins on a grid item size it to
   max-content, so the 420px-min-width table dragged the column past the phone viewport. */
.art-main{min-width:0;width:100%;max-width:var(--measure);justify-self:center}

/* ---- sidebar ---- */
.side{position:sticky;top:22px;max-height:calc(100vh - 44px);overflow-y:auto;
  padding-right:6px;scrollbar-width:thin}
@media (max-width:980px){.side{display:none}}
.side::-webkit-scrollbar{width:5px}
.side::-webkit-scrollbar-thumb{background:var(--edge);border-radius:3px}
.side h4{font:700 10.5px var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--faint);
  margin:0 0 12px;padding-left:14px}
.side .grp{margin-bottom:22px}
.side .glab{font:700 10px var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--mut);
  margin:0 0 8px;padding-left:14px}
.side ul{list-style:none;padding:0;margin:0}
.side li{margin:0}
.side .it{display:block;padding:7px 14px;border-left:2px solid var(--edge);text-decoration:none;
  font:14px/1.4 var(--sans);color:var(--mut)}
.side .it:hover{color:var(--text);border-left-color:#786B5D}
.side .it.on{color:var(--mint);border-left-color:var(--mint);font-weight:600;background:var(--mint-soft)}
.side .sub{list-style:none;padding:0;margin:2px 0 8px;border-left:2px solid var(--mint-soft)}
.side .sub a{display:block;padding:5px 14px 5px 22px;text-decoration:none;font:12.5px/1.45 var(--sans);color:var(--faint)}
.side .sub a:hover{color:var(--text)}
.side .sub a.here{color:var(--mint)}
.side .back{display:inline-flex;align-items:center;gap:6px;margin:22px 0 0 14px;
  font:600 12.5px var(--sans);color:var(--mut);text-decoration:none}
.side .back:hover{color:var(--mint)}

/* ---- the same navigation, collapsed, for phones ---- */
.side-m{display:none;background:var(--card);border:1px solid var(--edge);border-radius:14px;margin:0 0 22px}
@media (max-width:980px){.side-m{display:block}}
.side-m > summary{list-style:none;cursor:pointer;padding:15px 18px;display:flex;align-items:center;
  justify-content:space-between;gap:10px;font:600 14px var(--sans);color:var(--text)}
.side-m > summary::-webkit-details-marker{display:none}
.side-m > summary em{font:11.5px var(--mono);color:var(--faint);font-style:normal}
.side-m > summary:after{content:'';width:8px;height:8px;border-right:2px solid var(--mut);
  border-bottom:2px solid var(--mut);transform:rotate(45deg);margin-left:auto;transition:transform .15s}
.side-m[open] > summary:after{transform:rotate(-135deg)}
.side-m .inner{padding:2px 18px 16px;border-top:1px solid var(--edge)}
.side-m .glab{font:700 10px var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--mut);margin:16px 0 6px}
.side-m ul{list-style:none;padding:0;margin:0}
.side-m a{display:block;padding:8px 0;font:14.5px/1.4 var(--sans);color:var(--mut);text-decoration:none;
  border-bottom:1px solid #1c2027}
.side-m li:last-child a{border-bottom:none}
.side-m a.on{color:var(--mint);font-weight:600}

.art-top{padding:20px 0 32px;border-bottom:1px solid var(--edge);margin-bottom:36px}
.article-hero-media{margin:-14px 0 38px!important;aspect-ratio:3/2;overflow:hidden;border-radius:20px;background:var(--surface-2)}
.article-hero-media img{width:100%!important;height:100%!important;object-fit:cover;border:0!important;border-radius:0!important}
.crumb{font:600 11px var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--mint);margin-bottom:16px;display:block;text-decoration:none}
.art-top h1{font:700 clamp(29px,3.6vw,40px)/1.1 var(--sans);letter-spacing:-.03em;margin:0 0 18px}
.art-top .stand{font:clamp(16.5px,1.9vw,18.5px)/1.6 var(--sans);color:#6B5F52;font-weight:400}
.byline{display:flex;align-items:center;gap:11px;margin-top:24px}
.byline .av{width:34px;height:34px;border-radius:9px;flex:none}
.byline b{display:block;font:600 13.5px var(--sans)}
.byline span{display:block;font:11.5px var(--mono);color:var(--faint);margin-top:1px}

.art p{color:#4E4238;font:17px/1.78 var(--sans);margin-bottom:22px}
.art p.lead{font-size:19px;line-height:1.7;color:#4E4238}
.art h2{font:700 clamp(21px,2.4vw,26px)/1.28 var(--sans);letter-spacing:-.022em;margin:44px 0 15px;scroll-margin-top:24px}
.art h3{font:600 17.5px var(--sans);margin:30px 0 10px;color:var(--text)}
.art ul,.art ol{padding-left:22px;margin:0 0 22px}
.art li{color:#4E4238;font:17px/1.72 var(--sans);margin-bottom:11px;padding-left:4px}
.art li::marker{color:var(--faint)}
.art b,.art strong{color:var(--text);font-weight:650}
.art code{font:14px var(--mono);background:var(--card2);border:1px solid var(--edge);border-radius:6px;padding:2px 6px}

/* ---- figures ---- */
.art figure{margin:38px 0}
.art figure img{display:block;width:100%;height:auto;border-radius:16px;border:1px solid var(--edge)}
.art figcaption{font:13px/1.6 var(--sans);color:var(--mut);margin-top:12px}

.photo-slot{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:10px;
  aspect-ratio:16/9;border:1px dashed #CFC2B2;border-radius:16px;
  background:repeating-linear-gradient(135deg,#181c22,#181c22 12px,#1b1f26 12px,#1b1f26 24px);
  padding:26px;text-align:center}
.photo-slot .ps-k{font:700 10px var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--amber)}
.photo-slot .ps-t{font:600 15px/1.4 var(--sans);color:#4E4238;max-width:42ch}
.photo-slot .ps-s{font:11.5px/1.5 var(--mono);color:var(--faint);max-width:52ch}

/* ---- callouts ---- */
.key,.caveat{border-radius:16px;padding:22px 24px;margin:34px 0}
.key{background:linear-gradient(180deg,rgba(94,201,143,.1),rgba(94,201,143,.03));border:1px solid rgba(94,201,143,.3)}
.caveat{background:linear-gradient(180deg,rgba(224,168,75,.1),rgba(224,168,75,.03));border:1px solid rgba(224,168,75,.3)}
.key b,.caveat b{display:block;font:700 11px var(--sans);letter-spacing:.14em;text-transform:uppercase;margin-bottom:9px}
.key b{color:var(--mint)} .caveat b{color:var(--amber)}
.key p,.caveat p{margin-bottom:0;font-size:16px;line-height:1.7}

.pull{font:600 clamp(20px,2.4vw,25px)/1.42 var(--sans);color:var(--text);letter-spacing:-.02em;
  margin:40px 0;padding:0 0 0 22px;border-left:3px solid var(--mint)}

/* ---- tables ---- */
.tbl-wrap{margin:32px 0;min-width:0;max-width:100%;overflow-x:auto;border:1px solid var(--edge);border-radius:14px;-webkit-overflow-scrolling:touch}
table.at{width:100%;border-collapse:collapse;font-size:14.5px;min-width:420px}
table.at th{font:700 10.5px var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--mut);
  text-align:left;padding:14px 18px;background:var(--card2);border-bottom:1px solid var(--edge);white-space:nowrap}
table.at td{padding:14px 18px;border-bottom:1px solid #1c2027;color:#4E4238;vertical-align:top;line-height:1.6}
table.at tr:last-child td{border-bottom:none}
table.at td:first-child{color:var(--text);font-weight:600}

/* ---- in this article ---- */
.toc{display:none;background:var(--card);border:1px solid var(--edge);border-radius:16px;padding:20px 24px;margin:0 0 40px}
.toc b{display:block;font:700 10.5px var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--mut);margin-bottom:12px}
.toc ol{list-style:none;padding:0;margin:0;counter-reset:t}
.toc li{counter-increment:t;margin-bottom:9px;padding-left:26px;position:relative;font-size:15px}
.toc li:last-child{margin-bottom:0}
.toc li:before{content:counter(t,decimal-leading-zero);position:absolute;left:0;top:1px;
  font:11.5px var(--mono);color:var(--faint)}
.toc a{color:#4E4238;text-decoration:none}
.toc a:hover{color:var(--mint)}
@media (max-width:980px){.toc{display:block}}

/* ---- app tie-in ---- */
.tryit{background:linear-gradient(135deg,var(--mint),#8fd9b0);color:#FBF7F1;border-radius:18px;padding:26px 28px;margin:40px 0}
.tryit b{display:block;font:700 18px/1.3 var(--sans);margin-bottom:8px;letter-spacing:-.015em}
.tryit p{color:#FBF7F1!important;opacity:.78;font-size:15px!important;margin-bottom:18px!important;line-height:1.6}
.tryit a{display:inline-block;background:#FBF7F1;color:var(--mint);font:600 14px var(--sans);
  border-radius:12px;padding:12px 20px;text-decoration:none}

/* ---- end matter ---- */
.art-end{border-top:1px solid var(--edge);margin-top:52px;padding-top:32px}
.authorbox{display:flex;gap:16px;align-items:flex-start;background:var(--card);border:1px solid var(--edge);
  border-radius:16px;padding:22px 24px;margin-bottom:38px}
.authorbox img{width:46px;height:46px;border-radius:11px;flex:none}
.authorbox b{display:block;font:600 15px var(--sans);margin-bottom:5px}
.authorbox p{font:14px/1.65 var(--sans);color:var(--mut);margin:0}
.authorbox .lk{margin-top:10px;display:flex;gap:14px;font-size:13px}
.authorbox .lk a{text-decoration:none}

.more{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:16px}
@media (max-width:640px){.more{grid-template-columns:1fr}}
.more a{display:block;background:var(--card);border:1px solid var(--edge);border-radius:14px;
  padding:20px 22px;text-decoration:none;color:inherit;transition:border-color .15s}
.more a:hover{border-color:var(--mint)}
.more span{font:600 10px var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--mint);display:block;margin-bottom:8px}
.more b{font:600 16px/1.35 var(--sans);display:block;letter-spacing:-.015em}

/* ---- footer ---- */
.site-foot{margin-top:56px;border-top:1px solid var(--edge);padding-top:30px}
.foot-grid{display:grid;grid-template-columns:1.6fr 1fr 1fr;gap:26px}
@media (max-width:660px){.foot-grid{grid-template-columns:1fr 1fr;gap:22px}.foot-grid>div:first-child{grid-column:1/-1}}
.foot-brand{display:flex;align-items:center;gap:9px;margin-bottom:10px}
.foot-brand b{font-size:15px}
.foot-blurb{font-size:12.5px;color:var(--mut);max-width:40ch;margin-bottom:14px}
.foot-col h4{font:600 11px var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--mut);margin-bottom:10px}
.foot-col a{display:block;font-size:13px;color:#4E4238;text-decoration:none;margin-bottom:8px}
.foot-col a:hover{color:var(--mint)}
.foot-base{display:flex;flex-direction:column;gap:3px;margin-top:26px;padding-top:16px;border-top:1px solid var(--edge);font-size:11.5px;color:var(--faint)}
.socials{display:flex;gap:8px;margin-top:14px}
.socials a{width:38px;height:38px;border-radius:10px;background:var(--card2);border:1px solid var(--edge);display:grid;place-items:center;color:var(--mut)}
.socials a:hover{color:var(--mint);border-color:var(--mint)}

/* Charts hold a legible minimum width and scroll sideways on phones, the same way
   wide tables do. Letting an SVG shrink to the viewport renders its labels at ~6px. */
.chart-scroll{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.chart-scroll svg{min-width:620px}
