/* ==========================================================================
   d5-kit.css · the PAGE KIT components for inner pages (v3f, 2026-09-30). Load after d5.css; index.html does not load it
   (the home stays light). Markup: _build/pagekit.py (one builder per component, documented there). Shared by every inner
   page: never edit it from a page group; page-only styles go in pages-<group>.css.

   Built on the d5.css golden tokens (--fs-*, --sp-1..7, --measure, discs 34 / 55 / 89, 3D objects 89 / 144), the lane
   classes (.is-start .is-run .is-learn .is-urgent .is-prog .is-neutral) and the MOTION attributes (d5.js).

   CLASS MAP
   Sub-hero ........ .ksub (--sky --cream --start --run --learn --urgent --prog) .ksub__grid .ksub__text .ksub__lead
                     .ksub__acts .ksub__note .ksub__art (+ .ksub__glow, --pic) .kclouds (line clouds lane) .kcrumbs
                     .kfacts .kfact (--dark on the prog band) .btn--sun
   Sections ........ .ksec (+ .sec--paper/cream/green/sun/sky/mint) .sec-head--c .ksec__side
   Steps vine ...... .ksteps (sticky head + vine) .kvine (.path engine) .kvine__step .kvine__node (lights up) .kvine__t .kvine__p
   Feature rows .... .krows .krow (--flip) .krow__text .krow__vis .kobj
   Open list ....... .klist (--1 --2 --3) .klist__row .klist__i .klist__lab .klist__line
   Cards ........... .kcards (--2 --3 --4) .kcard .kcard__sym .kcard__t .kcard__p .kcard__go   (phones: open rows)
   Two sides ....... .ksides .kside (.is-neutral / .is-prog) .kside__h .kside__item .ksides__op .ksides__sum .ksides__res
   Not list ........ .knots .knot .knot__sym .knot__x (the slash draws once) .knot__lab
   Others .......... .kquote .kurgent .ksplit (--rev) .karticle (--side) .ktoc .kprose .kctacard .kwork .kvids .kcta
   Phones (<= 760px): one column, big type (d5.css phone tokens), open rows instead of boxes (round 5), targets >= 56px.
   Reduced motion / JS off: everything shown, nothing moves (the vine is drawn and every node lit).
   ========================================================================== */

/* ---------- sub-hero ---------- */
.ksub{position:relative;overflow:hidden;isolation:isolate;--k-em:var(--green);--k-disc:#fff}
.ksub__grid{position:relative;z-index:2;display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-5);align-items:center;
  min-height:clamp(400px,56svh,560px);padding-top:var(--sp-5);padding-bottom:var(--sp-6)}
.ksub--art .ksub__grid{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr)}
.ksub h1{font-weight:800;font-size:var(--fs-h1);line-height:.98;letter-spacing:-.04em;text-wrap:balance;max-width:13ch}
.ksub h1 em{font-style:italic;font-weight:700;color:var(--k-em)}
.ksub__lead{margin-top:var(--sp-3);max-width:32ch;font:500 var(--fs-lead)/1.45 var(--font);color:var(--ink-2);text-wrap:pretty}
.ksub__lead b{font-weight:800;color:var(--k-em)}
.ksub__acts{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-4)}
.ksub__note{margin-top:var(--sp-3);font-size:var(--fs-sm);color:var(--ink-3)}
/* grounds (soft lane tints; the bold programs band is deep green) */
.ksub--sky,.ksub--learn{background:linear-gradient(180deg,#cfe3f5 0%,var(--learn-tint) 42%,var(--learn-soft) 78%,var(--paper) 100%);--k-em:var(--learn)}
.ksub--cream{background:linear-gradient(var(--cream),var(--paper))}
.ksub--start{background:linear-gradient(180deg,#d9edcf 0%,var(--start-soft) 62%,var(--paper) 100%);--k-disc:#f7fcf4}
.ksub--run{background:linear-gradient(180deg,#fae6ae 0%,var(--run-soft) 62%,var(--paper) 100%);--k-em:var(--run-ink);--k-disc:#fffaf0}
.ksub--urgent{background:linear-gradient(180deg,#f9d6c8 0%,var(--urgent-soft) 62%,var(--paper) 100%);--k-em:var(--clay);--k-disc:#fff8f5}
.ksub--prog{background:var(--green-ink);color:var(--paper);--k-em:var(--sun);--k-disc:var(--mint)}
.ksub--prog::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:radial-gradient(46% 78% at 77% 52%,rgba(118,168,98,.3),rgba(118,168,98,0) 72%)}
.ksub--prog .ksub__lead{color:var(--paper)}
.ksub--prog .ksub__note{color:rgba(255,253,247,.8)}
/* the picture: a 3D object on a soft disc (it floats, calmly), or a device shot */
.ksub__art{position:relative;justify-self:center;width:min(100%,340px);aspect-ratio:1;margin:0}
.ksub__glow{position:absolute;inset:7%;border-radius:50%;background:var(--k-disc);box-shadow:0 30px 60px -30px rgba(23,58,39,.35)}
.ksub__art img{position:relative;z-index:1;width:100%;height:100%;object-fit:contain;filter:var(--obj-sh)}
.ksub__art--pic{width:min(100%,560px);aspect-ratio:auto}
.ksub__art--pic img{height:auto;border-radius:var(--r-m);box-shadow:var(--sh-2);filter:none}
@media (prefers-reduced-motion:no-preference){
  html:not(.rm) .ksub__art:not(.ksub__art--pic) img{animation:k-float 9s ease-in-out infinite alternate}
  html.mo:not(.mo-lite) .ksub__art:not(.mo-done) img{animation-play-state:paused}
}
@keyframes k-float{from{transform:translateY(4px)}to{transform:translateY(-8px)}}
/* fact chips + breadcrumbs */
.kfacts{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-3)}
.kfact{display:inline-flex;align-items:center;gap:var(--sp-2);min-height:44px;padding:4px 18px 4px 4px;border-radius:var(--r-pill);background:rgba(255,255,255,.72);font:700 var(--fs-body)/1.2 var(--font)}
.kfact .disc{background:var(--start-tint);color:var(--start-ink)}
.kfacts--dark .kfact{background:rgba(255,253,247,.1);color:var(--paper)}
.kfacts--dark .kfact .disc{background:var(--mint);color:var(--green-ink)}
.kcrumbs{margin-bottom:var(--sp-3)}
.kcrumbs ol{display:flex;flex-wrap:wrap;align-items:center;font:650 var(--fs-sm)/1.4 var(--font);color:var(--ink-3)}
.kcrumbs li{display:inline-flex;align-items:center}
.kcrumbs li+li::before{content:"/";margin:0 10px;opacity:.55}
.kcrumbs a{display:inline-block;padding:10px 0;color:inherit;text-decoration:none}
.kcrumbs a:hover{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.kcrumbs [aria-current]{color:var(--ink-2)}
.ksub--prog .kcrumbs ol{color:rgba(255,253,247,.72)}
.ksub--prog .kcrumbs a:hover,.ksub--prog .kcrumbs [aria-current]{color:var(--paper)}
/* sun stamp button for the deep green band (paper offset, so the stamp still reads) */
.btn--sun{background:var(--sun);color:var(--ink);box-shadow:3px 3px 0 var(--paper)}
.btn--sun:hover{background:#f6d47e;box-shadow:4px 4px 0 var(--paper)}
.btn--sun:active{box-shadow:1px 1px 0 var(--paper)}
/* line clouds (today's cloudsprout.ca): a lane right of the text, 2 or 3 small clouds, drift + bob (d5.css .hc), never over text */
.kclouds{position:absolute;z-index:1;top:0;bottom:0;right:0;left:max(56%,calc(50% + 80px));container-type:inline-size;pointer-events:none;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 16%,#000 84%,transparent);mask-image:linear-gradient(90deg,transparent,#000 16%,#000 84%,transparent)}
.kclouds .hc--1{--y:9%;--w:118px;--o:.7;--rest:14cqw}
.kclouds .hc--2{--y:80%;--w:84px;--o:.6;--rest:60cqw}
.kclouds .hc--3{--y:44%;--w:70px;--o:.45;--rest:78cqw}
.ksub--prog .hc svg{stroke:rgba(255,253,247,.5);fill:rgba(255,253,247,.06)}

/* ---------- sections ---------- */
.ksec>.wrap>.sec-head{margin-bottom:var(--sp-5)}
.sec-head--c{margin-left:auto;margin-right:auto;text-align:center}
.sec-head--c .sec-line{margin-left:auto;margin-right:auto}
.ksec__side{flex:none}
.sec--mint{background:var(--start-soft)}
body[data-edges] .ksub+.sec--cream{background:linear-gradient(var(--paper),var(--cream) 200px)}
body[data-edges] .ksub--prog+.sec--cream{background:var(--cream)}

/* ---------- steps on a scroll-drawn vine ---------- */
.ksteps__grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--sp-6);align-items:start}
.ksteps__head{position:sticky;top:calc(var(--hd) + var(--sp-5))}
.ksteps__act{margin-top:var(--sp-4)}
.kvine{position:relative;--k-ground:var(--paper);--k-ring:var(--start-tint)}
.sec--cream .kvine{--k-ground:var(--cream)}
.kvine.is-prog{--c:var(--green-ink);--c-on:var(--paper);--c-icon:var(--green)}
.kvine__list{position:relative;z-index:1;display:grid;gap:var(--sp-6);padding:var(--sp-1) 0}
.kvine__step{display:grid;grid-template-columns:55px minmax(0,1fr);column-gap:var(--sp-4);align-items:start}
.kvine__node{position:relative;z-index:2;display:grid;place-items:center;width:55px;height:55px;border-radius:50%;background:var(--c);color:var(--c-on);
  font:800 var(--fs-body)/1 var(--font);letter-spacing:-.01em;font-variant-numeric:tabular-nums;box-shadow:0 0 0 6px var(--k-ring),0 0 0 12px var(--k-ground);
  transition:background-color .3s steps(3,end),color .3s steps(3,end),box-shadow .3s steps(3,end)}
.js .kvine.has-stem .kvine__node:not(.is-lit){background:var(--k-ground);color:var(--ink-3);box-shadow:inset 0 0 0 2px var(--rule-2),0 0 0 10px var(--k-ground)}
.kvine__t{display:flex;align-items:center;gap:var(--sp-2);padding-top:9px;font:800 var(--fs-h3)/1.15 var(--font);letter-spacing:-.02em;color:var(--ink)}
.kvine__t .ico{color:var(--c-icon)}
.kvine__p{margin-top:var(--sp-1);max-width:46ch;font-size:var(--fs-body);line-height:var(--lh);color:var(--ink-2);text-wrap:pretty}

/* ---------- feature rows ---------- */
.krows{display:grid;gap:var(--sp-6)}
.krow{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--sp-5);align-items:center}
.krow--flip .krow__text{order:2}
.krow__t{font:800 var(--fs-h3)/1.15 var(--font);letter-spacing:-.02em;text-wrap:balance}
.krow__t em{font-style:italic;font-weight:700;color:var(--green)}
.krow__p{margin-top:var(--sp-2);max-width:var(--measure);font-size:var(--fs-body);line-height:var(--lh);color:var(--ink-2);text-wrap:pretty}
.krow__go{margin-top:var(--sp-2)}
.krow__vis,.ksplit__vis{position:relative;display:grid;place-items:center;min-height:300px;padding:var(--sp-5);border-radius:var(--r-xl);background:linear-gradient(160deg,var(--c-soft,var(--cream)),var(--c-tint,var(--sand)))}
:is(.krow,.ksplit,.kcard,.klist__row).is-prog{--c-soft:var(--start-soft);--c-tint:#e2ece3;--c-icon:var(--prog)}
.kobj{width:144px;height:144px;object-fit:contain;filter:var(--obj-sh)}

/* ---------- open list (no boxes) ---------- */
.klist{display:grid;column-gap:var(--sp-5)}
.klist--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.klist--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.klist__row{display:flex;align-items:center;gap:var(--sp-2);min-height:68px;height:100%;padding:var(--sp-2) 2px;box-shadow:0 1px 0 var(--rule);color:var(--ink);text-decoration:none}
.klist__i{display:grid;place-items:center;flex:none;width:34px;color:var(--c-icon,var(--green))}
.klist__txt{flex:1;min-width:0}
.klist__lab{display:block;font:700 var(--fs-body)/1.3 var(--font)}
.klist__line{display:block;margin-top:2px;font-size:var(--fs-body);line-height:1.5;color:var(--ink-3)}   /* round 8: body size, never 14px */
a.klist__row::after{content:"→";flex:none;margin-left:auto;padding-left:var(--sp-1);font-weight:600;color:var(--green);transition:transform .18s var(--ease)}
a.klist__row:hover .klist__lab{color:var(--green-ink)}
a.klist__row:hover::after{transform:translateX(3px)}

/* ---------- hub cards ---------- */
.kcards{display:grid;gap:var(--sp-3)}
.kcards--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.kcards--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.kcards--4{grid-template-columns:repeat(4,minmax(0,1fr))}
.kcard{position:relative;display:flex;flex-direction:column;gap:var(--sp-1);height:100%;padding:var(--sp-4);border-radius:var(--r-l);background:#fff;box-shadow:var(--sh-1);
  color:var(--ink);text-decoration:none;transition:transform .2s var(--ease),box-shadow .2s var(--ease)}
.kcard__sym{display:block;margin-bottom:var(--sp-1)}
.kcard__sym .disc{background:var(--c-tint);color:var(--c-icon)}
.kcard .kobj{width:89px;height:89px}
.kcard__t{font:800 var(--fs-lead)/1.2 var(--font);letter-spacing:-.01em;text-wrap:balance}
.kcard__p{font-size:var(--fs-body);line-height:1.5;color:var(--ink-2);text-wrap:pretty}
.kcard__go{margin-top:auto;padding-top:var(--sp-2);font-weight:700;color:var(--green);transition:transform .18s var(--ease)}
.kcard:hover{transform:translateY(-2px);box-shadow:var(--sh-2)}
.kcard:hover .kcard__go{transform:translateX(3px)}
.kcard:hover .kcard__sym .disc{background:var(--c);color:var(--c-on)}

/* ---------- two sides (You bring + We bring = result) ---------- */
.ksides{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:stretch}
.kside{padding:var(--sp-4);border-radius:var(--r-xl);background:var(--cream)}
.kside.is-prog{background:var(--green-ink);color:var(--paper)}
.kside__h{display:flex;align-items:center;gap:var(--sp-2);font:800 var(--fs-lead)/1.2 var(--font);letter-spacing:-.01em}
.kside.is-neutral .kside__h .disc{background:var(--ink-2);color:var(--paper)}
.kside.is-prog .kside__h .disc{background:var(--paper);color:var(--green-ink)}
.kside__list{display:grid;gap:var(--sp-1);margin-top:var(--sp-3)}
.kside__item{display:flex;align-items:center;gap:var(--sp-2);min-height:44px;font:650 var(--fs-body)/1.3 var(--font)}
.kside.is-neutral .kside__item .disc{background:#fff;color:var(--ink-2)}
.kside.is-prog .kside__item .disc{background:rgba(255,253,247,.12);color:var(--paper)}
.ksides__op{position:relative;z-index:1;align-self:center;display:grid;place-items:center;width:55px;height:55px;margin:0 -16px;border-radius:50%;
  background:var(--green-ink);color:var(--sun);font:800 var(--fs-h3)/1 var(--font);box-shadow:0 0 0 6px var(--paper)}
.ksides__sum{display:flex;align-items:center;justify-content:center;gap:var(--sp-2);margin-top:var(--sp-4)}
.ksides__op--eq{margin:0;box-shadow:none}
.ksides__res{display:inline-flex;align-items:center;gap:var(--sp-2);font:800 var(--fs-h3)/1.2 var(--font);letter-spacing:-.02em;color:var(--green-ink)}
.ksides__res .ico{color:var(--green)}

/* ---------- what it is not ---------- */
.knots{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-4);max-width:900px;margin:0 auto}
.knot{display:grid;justify-items:center;gap:var(--sp-2);text-align:center}
/* round 8 (audit): the standard 55px disc (white, soft shadow, 28px line icon) with a small ink-3 "x" badge; the badge steps in */
.knot__sym{position:relative;display:grid;place-items:center;width:55px;height:55px;border-radius:50%;background:#fff;box-shadow:var(--sh-1);color:var(--ink-2)}
.knot__sym .ico{--n:28}
.knot__x{position:absolute;right:-3px;bottom:-3px;width:21px;height:21px;border-radius:50%;background:var(--ink-3);box-shadow:0 0 0 2px var(--paper)}
.sec--cream .knot__x{box-shadow:0 0 0 2px var(--cream)}
.knot__x::before,.knot__x::after{content:"";position:absolute;left:50%;top:50%;width:10px;height:2px;border-radius:1px;background:#fff;transform:translate(-50%,-50%) rotate(45deg)}
.knot__x::after{transform:translate(-50%,-50%) rotate(-45deg)}
.knot__lab{font:750 var(--fs-body)/1.3 var(--font)}
html.mo:not(.mo-lite) .knot:not(.mo-go) .knot__x{opacity:0}
html.mo:not(.mo-lite) .knot.mo-go .knot__x{animation:mo-fade 240ms steps(3,end) calc(var(--t,0ms) + 200ms) both}
@keyframes k-slash{from{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0)}}

/* ---------- outside links (v3g, promoted from pages-proof.css): btn(ext=True) / go(ext=True) ---------- */
.kext{display:inline-block;margin-left:.3em;font-weight:600}

/* ---------- quote, urgent, split ---------- */
.kquote{max-width:760px;margin:0 auto;text-align:center}
.kquote blockquote{margin-left:auto;margin-right:auto}
.kurgent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4) var(--sp-3) var(--sp-3);border-radius:var(--r-xl);background:var(--urgent-tint);color:var(--urgent-ink)}
.kurgent__l{display:flex;align-items:center;gap:var(--sp-2)}
.kurgent__l b{display:block;font:800 var(--fs-lead)/1.2 var(--font)}
.kurgent__line{display:block;font-size:var(--fs-body)}
.kurgent__acts{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2) var(--sp-3)}
.kurgent__call{background:var(--clay);color:#fff;box-shadow:var(--stamp)}
.kurgent__call:hover{background:#86361a}
.kurgent .go{color:var(--urgent-ink)}
.ksplit{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--sp-5);align-items:center}
.ksplit--rev .ksplit__text{order:2}

/* ---------- long form: guides, posts, legal ---------- */
.karticle{display:grid;grid-template-columns:minmax(0,var(--measure));justify-content:center}
.karticle--side{grid-template-columns:minmax(0,233px) minmax(0,var(--measure));gap:var(--sp-6)}
.karticle__side{position:sticky;top:calc(var(--hd) + var(--sp-4));align-self:start;display:grid;gap:var(--sp-4)}
.ktoc__h{margin-bottom:var(--sp-1);font:750 var(--fs-sm)/1.3 var(--font);color:var(--ink-3)}
.ktoc ol{display:grid;gap:2px}
.ktoc a{display:block;padding:6px 0 6px var(--sp-2);box-shadow:inset 2px 0 0 var(--rule);font:600 var(--fs-sm)/1.35 var(--font);color:var(--ink-2);text-decoration:none}
.ktoc a:hover{color:var(--green-ink);box-shadow:inset 2px 0 0 var(--green)}
.kprose{max-width:var(--measure);font-size:var(--fs-body);line-height:var(--lh);color:var(--ink-2)}
.kprose__sec+.kprose__sec{margin-top:var(--sp-5)}
.kprose h2{margin:0 0 var(--sp-2);font:800 var(--fs-h3)/1.15 var(--font);letter-spacing:-.02em;color:var(--ink);scroll-margin-top:calc(var(--hd) + 21px);text-wrap:balance}
.kprose h3{margin:var(--sp-4) 0 var(--sp-1);font:750 var(--fs-lead)/1.25 var(--font);color:var(--ink)}
.kprose p+p,.kprose p+ul,.kprose ul+p,.kprose p+ol,.kprose ol+p{margin-top:var(--sp-2)}
.kprose ul,.kprose ol{padding-left:1.3em;list-style:disc}
.kprose ol{list-style:decimal}
.kprose li+li{margin-top:var(--sp-1)}
.kprose li::marker{color:var(--green)}
.kprose a{font-weight:650;color:var(--green-ink);text-decoration:underline;text-underline-offset:3px}
.kprose strong{color:var(--ink)}
.kprose blockquote{margin:var(--sp-4) 0;padding-left:var(--sp-3);box-shadow:inset 3px 0 0 var(--sun);font:600 var(--fs-lead)/1.45 var(--font);color:var(--ink)}
.kprose table{width:100%;margin:var(--sp-3) 0;border-collapse:collapse;font-size:var(--fs-sm)}
.kprose th,.kprose td{padding:10px 8px;text-align:left;vertical-align:top;box-shadow:0 1px 0 var(--rule)}
.kprose th{color:var(--ink)}
.kctacard{padding:var(--sp-3);border-radius:var(--r-l);background:var(--cream)}
.kctacard__h{font:800 var(--fs-body)/1.3 var(--font);color:var(--ink)}
.kctacard p:not(.kctacard__h){margin:6px 0 var(--sp-2);font-size:var(--fs-sm);color:var(--ink-2)}

/* ---------- phones (<= 760px): one column, big type, open rows instead of boxes (round 5) ---------- */
@media (max-width:980px){
  .ksteps__grid{grid-template-columns:minmax(0,1fr);gap:var(--sp-4)}
  .ksteps__head{position:static}
  .karticle--side{grid-template-columns:minmax(0,1fr);gap:var(--sp-4)}
  .karticle__side{position:static}
  .kcards--4{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:760px){
  .ksub__grid,.ksub--art .ksub__grid{grid-template-columns:minmax(0,1fr);min-height:0;gap:var(--sp-4);padding-top:var(--sp-4);padding-bottom:var(--sp-5)}
  .ksub h1{max-width:none}
  .ksub__lead{max-width:none}
  .ksub__art{width:min(64vw,240px)}
  .ksub__art--pic{width:100%}
  .ksub__acts{flex-direction:column}
  .ksub__acts .btn,.ksteps__act .btn{width:100%}
  .kfact{min-height:3.5rem}
  .kclouds{left:0;right:0;top:auto;bottom:0;height:min(46%,300px)}
  .kclouds .hc--1{--y:8%;--w:84px;--rest:6cqw}
  .kclouds .hc--2{--y:66%;--w:64px;--rest:76cqw}
  .kclouds .hc--3{display:none}
  .ksec>.wrap>.sec-head{margin-bottom:var(--sp-4)}
  .kvine__list{gap:var(--sp-5)}
  .kvine__step{column-gap:var(--sp-3)}
  .kvine__t{padding-top:12px;font-size:var(--fs-lead)}
  .krows{gap:var(--sp-5)}
  .krow,.ksplit{grid-template-columns:minmax(0,1fr);gap:var(--sp-3)}
  .krow--flip .krow__text,.ksplit--rev .ksplit__text{order:0}
  .krow__vis,.ksplit__vis{min-height:220px;padding:var(--sp-4)}
  .klist--2,.klist--3{grid-template-columns:minmax(0,1fr)}
  .klist__row{min-height:3.75rem}
  /* cards become open rows: symbol, title over line, arrow; a thin rule between (no boxes on phones) */
  .kcards,.kcards--2,.kcards--3,.kcards--4{grid-template-columns:minmax(0,1fr);gap:0}
  .kcard{display:grid;grid-template-columns:auto minmax(0,1fr) auto;column-gap:var(--sp-2);row-gap:2px;align-items:center;min-height:4.5rem;padding:var(--sp-2) 2px;
    border-radius:0;background:none;box-shadow:0 1px 0 var(--rule)}
  .kcard:hover{transform:none;box-shadow:0 1px 0 var(--rule)}
  .kcard__sym{grid-row:1/3;margin:0}
  .kcard .kobj{width:55px;height:55px}
  .kcard__t{grid-column:2;font-size:var(--fs-body)}
  .kcard__p{grid-column:2;font-size:var(--fs-sm)}
  .kcard__go{grid-column:3;grid-row:1/3;margin:0;padding:0}
  .ksides{grid-template-columns:minmax(0,1fr)}
  .ksides__op{justify-self:center;margin:-16px 0}
  .kside{padding:var(--sp-3)}
  .kside__item{min-height:3.5rem}
  /* round 8: centred like its heading (was a left list under a centred heading); three small columns, fewer at large text */
  .knots{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--sp-3) var(--sp-2);max-width:none}
  .knot{flex:0 0 calc((100% - 2 * var(--sp-2)) / 3);min-width:min(100%,5.5em)}
  .knot__lab{font-size:var(--fs-body);overflow-wrap:anywhere}
  .ksides__sum{flex-direction:column;gap:var(--sp-1)}
  .ksides__res{justify-content:center;margin-inline:auto;text-align:center}
  .kurgent{flex-direction:column;align-items:stretch;padding:var(--sp-3)}
  .kurgent__acts{flex-direction:column;align-items:stretch}
  .kurgent__call{width:100%}
  .kprose h2{font-size:var(--fs-h3)}
  .h2,.ksub h1,.kvine__t,.kcard__t,.krow__t{overflow-wrap:anywhere}
}
@media (prefers-reduced-motion:reduce){
  .kcard:hover,.kcard:hover .kcard__go,a.klist__row:hover::after{transform:none}
}
