/* ==========================================================================
   CASE STUDY: a rail that is a checklist of collectible cards, one reading
   column, sections cut apart with a "cut along the dotted line" mark.
   The top is a title, a row of facts, and one big moving look at the product.
   Sizes: 32 title, 26 statement, 15 text, 14 captions.
   ========================================================================== */


:root{--body:var(--sans)}

/* ─── RAIL: a collection checklist ─────────────── */
.rail{position:sticky;top:88px;align-self:start;margin-top:0;margin-bottom:112px;height:calc(100vh - 88px - 32px);z-index:60;display:flex;flex-direction:column;gap:16px}
.rail-link{position:relative;display:flex;align-items:center;gap:11px;white-space:nowrap;font-size:13px;line-height:1.5;color:var(--ink-soft);text-decoration:none;transition:color .2s ease}
.rail-link:hover{color:var(--ink)}
.rail-link .pip{flex:none;width:10px;height:14px;border:1.5px solid var(--ink-faint);border-radius:2px;background:transparent;transition:transform .4s var(--spring),background .3s,border-color .3s}
.rail-link.is-tldr .pip{width:12px;height:12px;border:0;border-radius:0;display:grid;place-items:center}
.rail-link.is-tldr .pip svg{width:12px;height:12px;fill:var(--ink-faint);transition:fill .2s}
.rail-link.got .pip{background:var(--ink-faint);border-color:var(--ink-faint)}
.rail-link.active{color:var(--ink);font-weight:600}
.rail-link.active .pip{transform:translateY(-1px) rotate(-8deg);background:var(--ink);border-color:var(--ink)}
.rail-link.is-tldr.active .pip svg{fill:var(--ink)}
.rail-list{display:flex;flex-direction:column;gap:8px}
.rail-home{margin-bottom:24px}
.rail-home .arr{display:inline-block;transition:transform .25s var(--ease)}
.rail-home:hover .arr{transform:translateX(-4px)}
.rail-count{margin-top:8px;font:400 18px/1 var(--hand);color:var(--ink-faint)}
.rail-count b{font-weight:700;color:var(--ink)}
.rail-top{margin-top:auto;font-size:13px;color:var(--ink-faint)}

/* ─── SHELL ────────────────────────────────────── */
.cs-head{width:min(980px,100% - 96px);margin:104px auto 0}
.cs-top{display:flex;justify-content:space-between;align-items:flex-start;gap:40px}
.cs-titles{flex:1;min-width:0;padding-top:2px}
.layout{width:min(980px,100% - 96px);margin:72px auto 0;display:grid;grid-template-columns:151px minmax(0,820px);gap:0;justify-content:space-between}
.page{position:relative;min-width:0}
.back-m{display:none}

.title{text-wrap:balance;font-size:30px;font-weight:500;letter-spacing:-.02em;line-height:1.3;color:var(--ink)}
.subtitle{margin-top:14px;font-family:var(--body);font-size:16px;line-height:1.5;color:var(--ink-soft)}
.meta{display:grid;grid-template-columns:repeat(4,max-content);gap:16px 28px;margin:0}
.meta-item{display:flex;flex-direction:column;gap:4px;min-width:0}
.meta-label{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;line-height:1.5;color:var(--ink-faint)}
.meta-value{font-family:var(--body);font-size:13px;font-weight:400;line-height:1.5;color:var(--ink-soft)}
.meta-value span{display:block}

/* the hero: the product, moving, in a panel tinted to the project */
.hero{position:relative;margin-top:40px;border-radius:28px;overflow:hidden;container-type:inline-size;aspect-ratio:980 / 610;
  background:radial-gradient(90% 70% at 12% 0%,#c9e6a0 0%,transparent 60%),radial-gradient(70% 60% at 100% 100%,#5f9a31 0%,transparent 65%),linear-gradient(135deg,#a3cf6f,#74ac40)}
.hero::after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 1px rgba(20,20,20,.08);pointer-events:none;z-index:2}
.hero .win-view{position:absolute;inset:0;container-type:size;overflow:hidden;background:#fff}
.hero .win-view img{width:100%;height:auto;display:block;will-change:transform;animation:heroScroll 34s ease-in-out infinite alternate}
@media (prefers-reduced-motion:reduce){.hero .win-view img{animation:none}}

/* ─── SECTION RHYTHM: label, statement, explanation, evidence ─── */
.section{position:relative;padding-top:120px;scroll-margin-top:88px}
#overview{padding-top:0}
.kicker{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;line-height:1.5;color:var(--ink-faint);margin-bottom:16px}
.kicker.sub{margin-top:72px;margin-bottom:0}
.statement{font-size:24px;font-weight:500;letter-spacing:-.018em;line-height:1.3;color:var(--ink);max-width:680px;text-wrap:balance}
.prose{margin-top:16px;max-width:680px}
.prose p{font-family:var(--body);font-size:14px;line-height:1.6;color:var(--ink-soft)}
.prose p+p{margin-top:16px}
.prose strong,.contrib strong,.beat p strong{font-weight:500;color:var(--ink)}
.statement+.prose{margin-top:11px}
.beat{margin-top:72px}
.kicker+.beat{margin-top:0}
.beat h3{font-size:24px;font-weight:500;letter-spacing:-.018em;line-height:1.25;color:var(--ink);max-width:680px;text-wrap:balance}
.beat>p{font-family:var(--body);font-size:14px;line-height:1.6;color:var(--ink-soft);margin-top:11px;max-width:680px}
.beat>p+p{margin-top:16px}
.beat .num{font:700 20px/1 var(--hand);color:var(--ink-faint);display:block;margin-bottom:8px}
.contrib{margin-top:16px;max-width:680px}
.contrib ul{list-style:none;display:flex;flex-direction:column;gap:16px}
.contrib li{font-family:var(--body);position:relative;padding-left:20px;font-size:14px;line-height:1.6;color:var(--ink-soft)}
.contrib li::before{position:absolute}

/* quotes */
.quote{margin-top:32px;padding-left:16px;border-left:2px solid var(--rule);max-width:680px}
.quote p{font-size:16px;font-weight:400;line-height:1.45;letter-spacing:-.008em;color:var(--ink)}
.quote cite{display:block;margin-top:8px;font-size:12px;font-style:normal;color:var(--ink-faint)}
.quote+.prose{margin-top:32px}

/* evidence: frames, figures, grids */
.figure{margin-top:32px;display:flex;flex-direction:column;gap:12px}
.figure.panel{background:none;border-radius:0;padding:0;box-shadow:none}
.panel .frame{background:transparent;box-shadow:none;border-radius:var(--r)}
.panel .frame img{border-radius:var(--r);box-shadow:0 0 0 1px rgba(20,20,20,.07)}
.panel .frame.dark img{box-shadow:none}
.panel .frame.dark{width:100%;max-width:440px;margin-inline:auto;background:#000}
.panel .win-frame{max-width:100%}
.panel.narrow{align-items:center}
.panel.narrow .frame{max-width:340px}
.panel.narrow figcaption{text-align:center}
.pair-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.pair-grid .frame img{aspect-ratio:1800 / 711;object-fit:cover;object-position:top}
.pair-cap{display:block;margin-top:8px;font-size:12px;line-height:1.4;color:var(--ink-soft)}
.panel figcaption{align-self:stretch}
.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:32px}
.card{background:#fafafa;border-radius:20px;padding:32px;box-shadow:inset 0 0 0 1px var(--rule)}
.card.wide{grid-column:1 / -1}
.card h3{font-size:20px;font-weight:500;letter-spacing:-.018em;line-height:1.25;color:var(--ink)}
.card p{font-family:var(--body);margin-top:12px;font-size:14px;line-height:1.6;color:var(--ink-soft)}
.card .by{display:block;margin-top:10px;font-size:12px;line-height:1.4;color:var(--ink-faint)}
.card p strong{font-weight:500;color:var(--ink)}
.frame{position:relative;background:var(--tag);border-radius:20px;overflow:hidden;box-shadow:inset 0 0 0 1px var(--rule)}
.frame img{width:100%;min-width:0;height:auto;display:block}
.frame.dark{background:#000;box-shadow:none}
.frame.tall-scroll{max-height:460px;overflow:auto;background:#fff}
.figure figcaption{font-size:12px;line-height:1.5;color:var(--ink-faint)}
.zoomable{cursor:zoom-in}
.frame .zoom-hint{position:absolute;right:12px;bottom:12px;font:500 12px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;background:#141414;color:#fff;padding:7px 9px;border-radius:var(--r-sm);opacity:0;transform:translateY(4px);transition:all .3s var(--ease);pointer-events:none}
.frame:hover .zoom-hint{opacity:1;transform:none}
.split{display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:start;margin-top:32px}
.split .figure{margin-top:0}
.split.wide-left{grid-template-columns:1.25fr .75fr}
.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:24px;margin-top:32px}
.grid.three{grid-template-columns:repeat(3,1fr)}
.grid-label{font-size:12px;line-height:1.5;color:var(--ink-faint);margin-top:48px;margin-bottom:-16px}

/* cohort tiles */
.tile{position:relative;border-radius:var(--r);padding:20px 20px 22px;display:flex;flex-direction:column;gap:4px;min-width:0;background:var(--tag)}
.tile::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;box-shadow:inset 0 0 0 1px var(--rule)}
.tile:nth-child(1){background:#f1f7e8}.tile:nth-child(2){background:#eef0fc}.tile:nth-child(3){background:#fff8d6}
.tile .eyebrow{font:400 17px/1 var(--hand);color:var(--ink-soft);display:flex;justify-content:space-between;margin-bottom:14px}
.tile h4{font-size:14px;font-weight:500;letter-spacing:-.01em;line-height:1.4;color:var(--ink)}
.tile p{font-family:var(--body);font-size:14px;line-height:1.5;color:var(--ink-soft)}
.tile .job{margin-top:auto;padding-top:14px;font-size:14px;font-weight:500;color:var(--ink)}
.tile .job small{display:block;font:400 16px/1 var(--hand);color:var(--ink-faint);margin-bottom:4px}

/* stat cards */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:32px}
.stats.three{grid-template-columns:repeat(3,1fr)}
.stat{position:relative;overflow:hidden;background:#fff;border-radius:20px;padding:26px 24px 24px;display:flex;flex-direction:column;gap:8px;min-width:0;box-shadow:inset 0 0 0 1px var(--rule);transition:transform .45s var(--ease),box-shadow .45s var(--ease)}
.stat:hover{transform:translateY(-4px);box-shadow:inset 0 0 0 1px var(--rule),0 18px 40px rgba(20,20,20,.08)}
.stat::before{content:"";position:absolute;left:0;top:0;height:3px;width:100%;background:var(--foil-light);background-size:200% 100%;animation:foilT 9s linear infinite;transform:scaleX(0);transform-origin:left;transition:transform 1.2s var(--ease) .3s}
.stat.in::before{transform:scaleX(1)}
.stat .val{font-size:48px;font-weight:500;letter-spacing:-.04em;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums}
.stat .lab{margin-top:6px;font-size:14px;font-weight:500;line-height:1.4;color:var(--ink)}
.stat .cap{font-size:12px;line-height:1.4;color:var(--ink-soft)}
.ring-stat::before{display:none}
.ring{position:relative;width:104px;height:104px;margin-bottom:6px}
.ring svg{width:100%;height:100%;rotate:-90deg;overflow:visible}
.ring circle{fill:none;stroke-width:6;stroke-linecap:round}
.ring-bg{stroke:#eeeeea}
.ring-fg{stroke:url(#ringGrad);stroke-dasharray:100;stroke-dashoffset:100;transition:stroke-dashoffset 1.6s var(--ease) .35s}
.ring-stat.in .ring-fg{stroke-dashoffset:var(--off,0)}
.ring .val{position:absolute;inset:0;display:grid;place-items:center;font-size:25px;letter-spacing:-.03em}
.bar{height:6px;border-radius:99px;background:rgba(20,20,20,.1);margin-top:auto;overflow:hidden}
.bar i{display:block;height:100%;width:0;background:var(--stat-ink,var(--ink));border-radius:99px;transition:width 1.3s var(--ease) .2s}
.bar.in i{width:var(--w)}
.stat .bar{margin-top:10px}
.src{font-size:12px;line-height:1.5;color:var(--ink-faint);margin-top:12px}

/* a statement set in a card: the takeaway, with a highlighter sweep */
.hmw{position:relative;margin-top:32px;padding:24px 32px;border-radius:20px;background:var(--tag);max-width:680px}

.hmw small{display:block;font:400 17px/1 var(--hand);color:var(--ink-faint);margin-bottom:8px}
.hmw p{font-size:20px;font-weight:500;line-height:1.3;letter-spacing:-.014em;color:var(--ink)}

/* research → feature pairs */
.pairs{margin-top:16px;border-top:1px solid var(--rule)}
.pair{display:grid;grid-template-columns:1fr 20px 1fr;gap:16px;align-items:start;padding:16px 0;border-bottom:1px solid var(--rule)}
.pair .heard{font-size:16px;line-height:1.5;color:var(--ink-soft)}
.pair .arr{color:var(--ink-faint);font:400 16px/1.5 var(--mono)}
.pair .made{font-size:16px;line-height:1.5;color:var(--ink-soft)}
.pair .made b{display:block;font-weight:500;color:var(--ink)}
.pair-head{display:grid;grid-template-columns:1fr 20px 1fr;gap:16px;font-size:14px;color:var(--ink-faint);margin-top:24px}
.pair-head span:nth-child(2){visibility:hidden}

/* stages: the DinoDex evolution, each in a browser window */
.stages{margin-top:24px}
.tabs{display:flex;flex-wrap:wrap;gap:8px}
.tab{all:unset;box-sizing:border-box;cursor:pointer;font-size:14px;line-height:1.5;color:var(--ink-soft);background:var(--tag);padding:4px 14px;border-radius:var(--r-pill);transition:background .2s ease,color .2s ease}
.tab:hover{color:var(--ink)}
.tab:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
.tab[aria-selected="true"]{background:#141414;color:#fff}
.stage{display:none;grid-template-columns:minmax(0,1fr);gap:16px;margin-top:20px;align-items:start}
.stage.on{display:grid;animation:stageIn .45s var(--ease)}
@keyframes stageIn{from{opacity:0;transform:translateY(8px)}}
.stage h4{font-size:14px;font-weight:500;letter-spacing:-.01em;color:var(--ink)}
.stage .lab{font:400 17px/1 var(--hand);color:var(--ink-faint);margin:18px 0 4px}
.stage h4+.lab{margin-top:12px}
.stage p{font-family:var(--body);font-size:14px;line-height:1.6;color:var(--ink-soft);max-width:560px}
.win-frame{background:#fff;border-radius:var(--r);overflow:hidden;box-shadow:0 14px 34px rgba(20,20,20,.12),0 0 0 1px rgba(20,20,20,.08)}
.win-frame .win-bar{display:flex;align-items:center;gap:6px;padding:9px 12px;border-bottom:1px solid var(--rule);background:#fafafa}
.win-frame .win-bar i{width:9px;height:9px;border-radius:50%;background:#ddd;display:block}
.win-frame .win-bar span{margin-left:8px;flex:1;font-size:11px;line-height:1;color:var(--ink-soft);background:#fff;border:1px solid var(--rule);border-radius:99px;padding:5px 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scrollframe{max-height:clamp(320px,46vw,500px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
.scrollframe img{width:100%;height:auto}
.scroll-note{font:400 17px/1 var(--hand);color:var(--ink-faint);margin-top:12px;text-align:right}

/* Discord share meter */
.share{margin-top:16px;display:grid;grid-template-columns:auto 1fr;gap:28px;align-items:center;background:var(--tag);border-radius:var(--r);padding:24px;position:relative}
.share::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;box-shadow:inset 0 0 0 1px var(--rule)}
.share .big{font-size:56px;font-weight:500;letter-spacing:-.04em;line-height:.95;color:var(--ink)}
.share .big small{font-size:18px;letter-spacing:0;color:var(--ink-soft);margin-left:6px;font-weight:400}
.share .pill{display:inline-block;font-size:14px;color:var(--ink-soft);background:#fff;padding:4px 12px;border-radius:var(--r-pill);margin-bottom:12px}
.share .bar{margin-top:0;height:8px;background:rgba(20,20,20,.1);--stat-ink:var(--ink)}
.share .lbls{display:flex;justify-content:space-between;gap:16px;font-size:14px;color:var(--ink-soft);margin-top:10px}
.share .lbls b{font-weight:500;color:var(--ink)}

.voices{margin-top:16px}
.voice{display:grid;grid-template-columns:minmax(140px,.3fr) 1fr;gap:24px;padding:20px 0;border-bottom:1px solid var(--rule)}
.voice:first-child{border-top:1px solid var(--rule)}
.voice .prob{font-size:14px;line-height:1.4;color:var(--ink-faint)}
.voice .prob b{display:block;font-size:16px;font-weight:500;color:var(--ink);margin-top:2px}
.voice p{font-size:16px;line-height:1.45;letter-spacing:-.008em;color:var(--ink)}
.voice cite{display:block;margin-top:8px;font-size:14px;font-style:normal;color:var(--ink-faint)}

.credits{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.credit{font-size:12px;line-height:1.5;color:var(--ink-soft);background:var(--tag);padding:4px 12px;border-radius:var(--r-pill)}
.tail{height:112px}


/* lightbox */
dialog.lb{border:0;padding:0;background:transparent;max-width:none;max-height:none;width:100vw;height:100vh;color:#fff}
dialog.lb::backdrop{background:rgba(20,20,20,.9);backdrop-filter:blur(4px)}
.lb-in{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:clamp(16px,3vw,40px);gap:14px}
.lb-in img{max-width:100%;max-height:calc(100vh - 110px);object-fit:contain;border-radius:var(--r);background:#fff}
.lb-in p{font-size:14px;line-height:1.4;text-align:center;max-width:46em;color:rgba(255,255,255,.75)}
.lb-x{position:absolute;top:16px;right:20px;font:500 12px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;background:#fff;color:#141414;border:0;border-radius:var(--r-sm);padding:10px 12px;cursor:pointer}

/* ─── small screens ────────────────────────────── */
@media (max-width:900px){
  .cs-head{width:auto;margin:88px 26px 0}
  .cs-top{flex-direction:column;gap:24px}
  .hero{aspect-ratio:4 / 5;border-radius:20px;margin-top:28px}
  .layout{display:block;width:auto;margin:48px 26px 0}
  .rail{display:none}
  .page{padding-left:0}
  .page::before{display:none}
  .back-m{display:inline-flex;align-items:center;gap:6px;font-size:14px;color:var(--ink-soft);text-decoration:none;margin-bottom:18px;white-space:nowrap}
  .title{font-size:26px}
  .meta{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 24px}
  .cards{grid-template-columns:1fr}
  .card{padding:20px;border-radius:16px}
  .pair-grid{grid-template-columns:1fr}
  .kicker.sub{margin-top:56px}
  .section{padding-top:88px}
  .beat{margin-top:56px}
  .grid.three{grid-template-columns:1fr}
  .grid{grid-template-columns:1fr;gap:16px}
  .stats,.stats.three{grid-template-columns:repeat(2,1fr)}
  .split,.split.wide-left{grid-template-columns:1fr}
  .stage.on{grid-template-columns:1fr}
  .pair,.pair-head{grid-template-columns:1fr}
  .pair .arr,.pair-head span:nth-child(2){display:none}
  .voice{grid-template-columns:1fr;gap:8px}
  .share{grid-template-columns:1fr;gap:16px}
}
@media (max-width:700px){
  .stats,.stats.three{grid-template-columns:repeat(2,1fr)}
  .split,.split.wide-left{grid-template-columns:1fr}
  .stage.on{grid-template-columns:1fr}
  .pair,.pair-head{grid-template-columns:1fr}
  .pair .arr,.pair-head span:nth-child(2){display:none}
  .voice{grid-template-columns:1fr;gap:8px}
  .share{grid-template-columns:1fr;gap:16px}
}
@media (max-width:700px){
  .cover{aspect-ratio:32 / 45}
  .cover .bb{--bb-fs:calc(100cqw / 32);width:30em;height:41em;bottom:calc(100cqw / 32 * 2.4)}
  .cover .bb.open .bb-card{translate:var(--mx) var(--my);rotate:var(--mr,0deg)}
  .cover .bb-card:nth-child(1){--mx:-6.4em;--my:-13.2em;--mr:-3deg}
  .cover .bb-card:nth-child(2){--mx:0em;--my:-13.2em;--mr:2deg}
  .cover .bb-card:nth-child(3){--mx:6.4em;--my:-13.2em;--mr:-2deg}
  .cover .bb-card:nth-child(4){--mx:-6.4em;--my:-3.2em;--mr:2deg}
  .cover .bb-card:nth-child(5){--mx:0em;--my:-3.4em;--mr:-2deg}
  .cover .bb-card:nth-child(6){--mx:6.4em;--my:-3.2em;--mr:3deg}
  .cover-cap span:first-child{display:none}
  .cover-cap{justify-content:flex-end}
  .stats,.stats.three{grid-template-columns:1fr}
}

@keyframes heroScroll{from{transform:translateY(0)}to{transform:translateY(calc(-100% + 100cqh))}}

/* live-site link */
.live-link{display:inline-flex;align-items:center;gap:6px;margin-top:16px;font-size:13px;font-weight:500;line-height:1;color:var(--ink);text-decoration:none;border:1px solid var(--ink);border-radius:99px;padding:8px 14px;transition:background .2s ease,color .2s ease}
.live-link:hover{background:var(--ink);color:#fff}
.live-link svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.inline-link{color:var(--ink);text-decoration:underline;text-underline-offset:3px}

/* the four Discord channel groups light up one after another */
.hlbox{position:absolute;border:2px solid var(--c,#8cc152);border-radius:10px;background:color-mix(in srgb,var(--c,#8cc152) 10%,transparent);opacity:0;transform:scale(.97);pointer-events:none}
.hlbox:nth-of-type(1){--c:#8cc152}.hlbox:nth-of-type(2){--c:#7aa2f7}.hlbox:nth-of-type(3){--c:#f6d36b}.hlbox:nth-of-type(4){--c:#f3a6c6}
.hlbox b{position:absolute;top:-9px;left:5px;width:22px;height:22px;border-radius:50%;background:var(--c);color:#141414;font:700 12px/22px var(--sans);text-align:center}
.hlbox i{position:absolute;right:10px;top:-10px;font:700 11px/1 var(--sans);font-style:normal;color:#141414;background:var(--c);padding:4px 9px;border-radius:99px}
.reveal.in .hlbox{animation:hlIn .5s var(--ease) forwards;animation-delay:calc(.6s + var(--n) * .6s)}
@keyframes hlIn{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.hlbox{opacity:1;transform:none}.reveal.in .hlbox{animation:none}}

/* auto-playing DinoDex evolution: a progress bar fills under the active tab */
.tab{position:relative;overflow:hidden}
.tab::after{content:"";position:absolute;left:0;bottom:0;height:2px;width:0;background:currentColor;opacity:.55}
.stages.is-auto .tab[aria-selected="true"][data-run="1"]::after{animation:tabFill var(--dwell,6s) linear forwards}
@keyframes tabFill{to{width:100%}}
.stages.is-auto .scrollframe{overflow-y:hidden}

/* drag to compare */
.ba{position:relative;aspect-ratio:3 / 5;width:100%;max-width:520px;margin-inline:auto;border-radius:var(--r);overflow:hidden;background:#f8f8f6;box-shadow:0 0 0 1px var(--rule);user-select:none;-webkit-user-select:none;touch-action:pan-y}
.ba img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:top;display:block}
.ba-top{position:absolute;inset:0;clip-path:inset(0 calc(100% - var(--p)) 0 0)}
.ba-handle{position:absolute;top:0;bottom:0;left:var(--p);width:2px;margin-left:-1px;background:#141414;pointer-events:none}
.ba-handle span{position:absolute;top:50%;left:50%;width:36px;height:36px;margin:-18px 0 0 -18px;border-radius:50%;background:#141414;display:grid;place-items:center;box-shadow:0 4px 14px rgba(20,20,20,.3)}
.ba-handle svg{width:18px;height:18px;fill:none;stroke:#fff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ba-tag{position:absolute;bottom:12px;font:700 11px/1 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:#fff;background:#141414;padding:6px 10px;border-radius:99px;pointer-events:none}
.ba-tag.l{left:12px}.ba-tag.r{right:12px}
.ba-range{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:ew-resize;-webkit-appearance:none;appearance:none}
.ba-range:focus-visible~.ba-handle span{outline:2px solid #fff;outline-offset:2px;box-shadow:0 0 0 4px #141414}

/* clips recorded from the live site */
.clip{display:block;width:100%;height:auto;background:#f3f3f1}
.frame .clip{border-radius:inherit}
.devices{flex-direction:row;align-items:center;gap:32px}
.dv-desktop{flex:1 1 0;min-width:0}
.dv-phone{flex:0 0 200px}
.dv-phone-shell{position:relative;padding:0 3px}
.dv-phone-shell::before{content:"";position:absolute;left:0;top:17%;width:3px;height:6%;border-radius:2px 0 0 2px;background:#2b2b2d;box-shadow:0 38px 0 #2b2b2d,0 70px 0 #2b2b2d}
.dv-phone-shell::after{content:"";position:absolute;right:0;top:25%;width:3px;height:11%;border-radius:0 2px 2px 0;background:#2b2b2d}
.phone{position:relative;border:6px solid #1a1a1c;border-radius:34px;overflow:hidden;background:#fff;aspect-ratio:390 / 844;box-shadow:0 0 0 1.5px #3b3b3e,0 0 0 3px #1a1a1c,0 14px 34px rgba(20,20,20,.22)}
.phone::before{content:"";position:absolute;z-index:2;top:2.1%;left:50%;width:30.5%;height:4.4%;margin-left:-15.25%;border-radius:99px;background:#050506}
.phone::after{content:"";position:absolute;z-index:2;bottom:1.1%;left:50%;width:34%;height:.55%;margin-left:-17%;border-radius:99px;background:rgba(20,20,20,.85)}
.phone .clip{width:100%;height:100%;object-fit:cover}
@media (max-width:900px){.devices{flex-direction:column}.dv-phone{flex:none;width:200px;align-self:center}}

/* icon cards */
.icards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:28px}
.icard{background:#fafafa;border-radius:20px;padding:24px 22px 26px;box-shadow:inset 0 0 0 1px var(--rule)}
.icard:last-child:nth-child(3n+1){grid-column:1 / -1;display:grid;grid-template-columns:44px 1fr;column-gap:16px;align-items:center;padding:18px 22px}
.icard:last-child:nth-child(3n+1) .icard-ic{grid-row:1 / 3;margin:0}
.icard:last-child:nth-child(3n+1) p{margin-top:2px}
.icard-ic{display:grid;place-items:center;width:44px;height:44px;border-radius:14px;background:var(--ic,#e1eed5);margin-bottom:16px}
.icard-ic svg{width:22px;height:22px;fill:none;stroke:#141414;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.icard h3{font-size:15px;font-weight:500;line-height:1.35;letter-spacing:-.01em;color:var(--ink)}
.icard p{margin-top:6px;font-family:var(--body);font-size:14px;line-height:1.55;color:var(--ink-soft)}
@media (max-width:900px){.icards{grid-template-columns:1fr}.icard{padding:20px}.icard:last-child:nth-child(3n+1){padding:20px}}

/* reading progress */
.read-progress{position:fixed;top:64px;left:0;z-index:99;width:100%;height:2px;background:var(--foil-light);background-size:200% 100%;animation:foilT 9s linear infinite;transform-origin:left;transform:scaleX(var(--p,0))}

/* stat numbers and rings are set in the animated foil; the cards stay plain */
.stat .val span,.ring .val span{background:var(--foil-dark);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;animation:foilT 9s linear infinite;display:inline-block;padding-bottom:.08em}
.ring-fg{stroke:url(#ringGrad)}

.pair-cap .live-link{margin-top:12px}
.dv-desktop .clip{border-radius:var(--r);box-shadow:0 14px 34px rgba(20,20,20,.12),0 0 0 1px rgba(20,20,20,.08)}

.figcap-line{margin-top:12px;font-size:12px;line-height:1.5;color:var(--ink-faint)}

/* the three audiences: a person, a thought bubble that "boils" like a hand-drawn doodle */
.personas{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px;margin-top:36px;max-width:820px}
.p-defs{position:absolute;width:0;height:0}
.persona{display:flex;flex-direction:column;align-items:center;text-align:center}
.bubble{position:relative;width:100%;aspect-ratio:240 / 112;display:grid;place-items:start center;opacity:0;transform:scale(.7);transform-origin:50% 100%}
.personas.in .bubble{animation:bubbleIn .7s steps(7) forwards;animation-delay:calc(var(--i) * .45s + .25s)}
@keyframes bubbleIn{0%{opacity:0;transform:scale(.7)}60%{opacity:1;transform:scale(1.07)}100%{opacity:1;transform:scale(1)}}
.bubble-line{position:absolute;inset:0;width:100%;height:100%;overflow:visible;filter:url(#wobble)}
.bubble-line path{fill:var(--elev,#161618);stroke:var(--ink);stroke-width:2.4;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.bubble p{position:absolute;left:0;right:0;top:0;height:73%;display:grid;place-items:center;z-index:1;padding:0 12%;font:italic 500 17px/1.25 var(--italic);color:var(--ink);text-wrap:balance}
.person{width:98px;height:98px;margin-top:-6px;overflow:visible;filter:drop-shadow(0 6px 10px rgba(0,0,0,.35))}
.person-g{transform-origin:50% 100%;animation:doodleBob 1.1s steps(1) infinite}
@keyframes doodleBob{0%{transform:rotate(-1.6deg) translateY(0)}50%{transform:rotate(1.6deg) translateY(-1.5px)}}
.persona h3{margin-top:14px;font-size:20px;font-weight:500;letter-spacing:-.02em;line-height:1.2}
.ptag{margin-top:6px;font:600 11px/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint)}
.pjob{margin-top:8px;font-size:13px;line-height:1.4;color:var(--ink-soft)}
@media (max-width:760px){.personas{grid-template-columns:1fr;gap:44px}.persona{max-width:320px;margin-inline:auto;width:100%}}
@media (prefers-reduced-motion:reduce){.bubble{opacity:1;transform:none}.personas.in .bubble{animation:none}.person-g{animation:none}}

/* two interview photos side by side, same height, rounded */
.duo{display:flex;gap:14px;align-items:stretch}
.duo img{flex:var(--ar) 1 0;min-width:0;height:auto;aspect-ratio:var(--ar);border-radius:20px;object-fit:cover;box-shadow:0 0 0 1px rgba(255,255,255,.08)}
@media (max-width:600px){.duo{flex-direction:column}.duo img{flex:none;width:100%}.duo img:last-child{width:62%;align-self:center}}

/* glyph icons in the foil, drawn with a little hand-made wobble */
.icard-ic{display:block;width:60px;height:60px;margin-bottom:14px;background:none;box-shadow:none;animation:none}
.icard-ic svg{width:100%;height:100%;overflow:visible;stroke:none;filter:drop-shadow(0 3px 5px rgba(0,0,0,.35));animation:doodleBob 1.1s steps(1) infinite;animation-delay:calc(var(--i) * -.3s)}
/* "sketch" boxes: a hand-drawn outline that redraws, like the thought bubbles */
.sketch{position:relative;box-shadow:none!important}
.sketch::before{content:"";position:absolute;inset:0;border:2.4px solid var(--ink);border-radius:20px;filter:url(#wobble);pointer-events:none}
.hmw.sketch{background:transparent}
.hmw .hl{font-size:1.04em}
.pdesc{margin-top:6px;font-size:13px;line-height:1.35;color:var(--ink);font-weight:500}
.live-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:16px}
.live-row .live-link{margin-top:0}
@media (prefers-reduced-motion:reduce){.icard-ic svg{animation:none}}

/* Leading the Team as list rows (experiment). To go back to cards, rename class "irows" to "icards" in the HTML. */
.irows{margin-top:28px;border-top:1px solid var(--rule)}
.irows .icard,.irows .icard:last-child:nth-child(3n+1){display:grid;grid-template-columns:56px minmax(190px,270px) minmax(0,1fr);gap:8px 28px;align-items:center;padding:22px 10px;border-radius:0;background:none;box-shadow:none;border-bottom:1px solid var(--rule);transition:padding-left .45s var(--ease),background .35s}
.irows .icard:hover{padding-left:22px;background:linear-gradient(90deg,rgba(255,255,255,.04),transparent 70%)}
.irows .icard-ic,.irows .icard:last-child:nth-child(3n+1) .icard-ic{width:50px;height:50px;margin:0;grid-row:auto}
.irows .icard h3{font-size:18px;letter-spacing:-.015em}
.irows .icard p,.irows .icard:last-child:nth-child(3n+1) p{margin:0;max-width:none;font-size:14px}
@media (max-width:900px){.irows .icard,.irows .icard:last-child:nth-child(3n+1){grid-template-columns:48px minmax(0,1fr);padding:18px 4px}.irows .icard p{grid-column:2}.irows .icard:hover{padding-left:12px}}

/* member voices: the same person-and-bubble look as the research section */
.voices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:48px 28px;margin-top:36px;max-width:820px}
.voice-card{display:flex;flex-direction:column;align-items:center;text-align:center}
.qb{position:relative;width:100%;padding:20px 24px;background:var(--elev,#161618);border-radius:20px;opacity:0;transform:scale(.8);transform-origin:50% 100%}
.qb::before{content:"";position:absolute;inset:0;border:2.4px solid var(--ink);border-radius:20px;filter:url(#wobble);pointer-events:none}
.qb::after{content:"";position:absolute;left:50%;bottom:-12px;width:20px;height:20px;margin-left:-10px;background:var(--elev,#161618);border-right:2.4px solid var(--ink);border-bottom:2.4px solid var(--ink);border-radius:0 0 4px 0;transform:rotate(45deg);filter:url(#wobble)}
.qb p{position:relative;z-index:1;font:italic 500 16px/1.4 var(--italic);color:var(--ink);text-wrap:pretty}
.voices.in .qb{animation:bubbleIn .7s steps(7) forwards;animation-delay:calc(var(--i) * .35s + .2s)}
.person.sm{width:68px;height:68px;margin-top:20px}
.voice-card cite{display:block;margin-top:6px;font-size:13px;font-style:normal;color:var(--ink-soft)}
@media (max-width:760px){.voices{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.qb{opacity:1;transform:none}.voices.in .qb{animation:none}}

/* "Outcome" label with the live-site button on its right */
.kick-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:16px}
.kick-row .kicker{margin-bottom:0}
.kick-row .live-link{margin-top:0}
/* quotes: a plain, legible sans instead of the italic serif */
.qb p,.bubble p{font-family:var(--sans);font-style:normal;font-weight:500}
.qb p{font-size:16px;line-height:1.45;letter-spacing:-.005em}
.bubble p{font-size:16px;line-height:1.3;letter-spacing:-.005em}

/* Outcome headline with the live-site button to its right */
.stmt-row{display:flex;align-items:center;gap:28px;flex-wrap:wrap}
.stmt-row .statement{max-width:480px}
.stmt-row .live-link{margin-top:0;flex:none}
.stmt-row+.prose{margin-top:11px}

/* ── Threadit: static hero, phone galleries, tall compare slider ── */
.hero-static img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.phones{display:grid;grid-template-columns:repeat(var(--n,4),minmax(0,1fr));gap:16px;align-items:start;margin-top:24px}
.ph{margin:0}
.ph img{display:block;width:100%;height:auto;border-radius:20px;box-shadow:0 0 0 1px rgba(255,255,255,.1)}
.five .ph img{border-radius:18px;background:#f6f6f4;box-shadow:0 0 0 1px rgba(255,255,255,.08)}
.ph figcaption{margin-top:10px;font-size:13px;line-height:1.4;color:var(--ink-soft)}
.ph figcaption b{display:block;font-size:14px;font-weight:500;color:var(--ink)}
.ph figcaption em{display:inline-block;margin-top:4px;font-style:normal;font:600 10px/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;padding:4px 8px;border-radius:99px;color:#141414;background:linear-gradient(90deg,#ffb3d9,#c5b3ff,#a8dcff,#a8f0d8,#ffe29a);background-size:200% 100%;animation:foilT 6s linear infinite}
.ba.ba-tall{aspect-ratio:1 / 2;max-width:400px}
.ba.ba-tall img{object-fit:contain;object-position:center}
@media (max-width:900px){.five{--n:3!important}.four{--n:2!important}}
@media (max-width:520px){.five{--n:2!important}}
.vp{border-radius:20px;overflow:hidden;background:#fff;box-shadow:0 0 0 1px rgba(255,255,255,.08)}
.vp video{display:block;width:100%;height:auto}
.voices.judges .voice-card:nth-child(3){grid-column:1 / -1;max-width:380px;justify-self:center}
@media (max-width:720px){.voices.judges .voice-card:nth-child(3){max-width:none}}

/* Threadit: 3 context cards, small clickable sketches, iPhone frames in Solution */
.cards.three{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:900px){.cards.three{grid-template-columns:1fr}}
.sk-row{display:flex;gap:16px;align-items:flex-start;margin-top:22px;flex-wrap:wrap}
.sk{margin:0;width:176px}
.sk img{display:block;width:100%;height:auto;border-radius:12px;box-shadow:0 0 0 1px rgba(255,255,255,.1);background:#fff;transition:transform .4s var(--ease),box-shadow .4s}
.sk img:hover{transform:translateY(-4px) rotate(-.6deg);box-shadow:0 0 0 1px rgba(255,255,255,.2),0 14px 30px rgba(0,0,0,.45)}
.sk figcaption{margin-top:8px;font-size:12px;line-height:1.35;color:var(--ink-soft)}
.sk-hint{margin-top:10px;font:500 11px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}
.iph{position:relative;padding:2.4%;background:#0b0b0d;border-radius:14% / 6.3%;box-shadow:0 0 0 1px #6a6a72,0 0 0 2.6px #2a2a2f,0 20px 40px rgba(0,0,0,.45);aspect-ratio:420 / 932}
.iph-scr{position:relative;height:100%;border-radius:12% / 5.4%;overflow:hidden;background:#fff}
.iph-scr img{display:block;width:100%;height:100%;object-fit:cover;object-position:top;border-radius:0!important;box-shadow:none!important}
.iph-isl{position:absolute;top:2.6%;left:50%;width:27%;height:2.8%;transform:translateX(-50%);background:#000;border-radius:99px}
.iph-home{position:absolute;bottom:1.8%;left:50%;width:34%;height:.5%;min-height:3px;transform:translateX(-50%);background:#0b0b0d;border-radius:99px;opacity:.85}
.iph .hw{position:absolute;width:3px;background:#4a4a52;border-radius:1px}
.iph .hw-a{left:-5px;top:12%;height:3.2%}.iph .hw-b{left:-5px;top:18%;height:6.2%}.iph .hw-c{left:-5px;top:26%;height:6.2%}.iph .hw-p{right:-5px;top:23%;height:10%}
.four .ph figcaption{margin-top:14px}
