/* ══════════════════════════════════════════════════════
   ZEXCA — the Vision page's own layer
   ══════════════════════════════════════════════════════
   It sits on top of `about.css`, which is why `body` carries both `ab` and
   `vs`. The kicker, the display scale, the lead measure and the
   rejection/claim pair all come from there unchanged — this file adds only
   what a ROADMAP needs that a story did not: a spine, a year chapter, and the
   handful of components the chapters are built from.

   ── THE CHAPTER IS ONE SHAPE, FIVE TIMES ──
   Year numeral, title, tagline, then body. A reader learns the shape at 2026
   and can read 2030 at a glance. Escalation is carried by the CONTENT getting
   denser, not by each chapter inventing a new layout — five different designs
   would read as five different documents.
   ══════════════════════════════════════════════════════ */

/* ══ HERO ═════════════════════════════════════════════ */
.vs-hero{
  position:relative;min-height:clamp(560px,86vh,900px);
  display:flex;align-items:center;overflow:hidden;
  padding-block:calc(var(--ld-nav-h) + var(--ab-s4)) var(--ab-s4);
}
.vs-hero-room{
  position:absolute;inset:-8% -4%;width:108%;height:116%;
  z-index:0;pointer-events:none;
}
.vs-hero::after{
  content:'';position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    linear-gradient(90deg,var(--bg-0) 2%,rgba(10,12,16,.84) 36%,rgba(10,12,16,0) 70%),
    linear-gradient(0deg,var(--bg-0) 1%,transparent 28%);
}
.vs-hero-in{position:relative;z-index:2;width:100%;}
.vs-hero .ab-lead{margin-bottom:var(--ab-s3);}

/* ══ THE PRINCIPLE ════════════════════════════════════
   Four clauses in order, and the order IS the argument — you cannot earn a
   market you have not established in. The numeral is doing real work here,
   which is the test for whether a numbered marker belongs on a page at all. */
.vs-principle{padding-block:var(--ab-s4);}
.vs-steps{
  list-style:none;margin:0;padding:0;display:grid;
  max-width:70ch;margin-inline:auto;
}
.vs-steps li{
  display:grid;grid-template-columns:auto 1fr;gap:clamp(14px,2.2vw,28px);
  align-items:baseline;
  padding-block:clamp(14px,1.8vw,22px);
  border-bottom:1px solid var(--line-2);
}
.vs-steps li:first-child{border-top:1px solid var(--line-2);}
.vs-step-n{
  font-family:var(--f-mono);font-size:10.5px;letter-spacing:.14em;
  color:var(--gold-dk);
}
.vs-steps b{
  font-family:var(--f-display);font-weight:600;
  font-size:clamp(17px,2.3vw,28px);line-height:1.28;letter-spacing:-.018em;
  color:var(--fg);
}

/* ══ THE SPINE ════════════════════════════════════════
   One rail down the page with the five chapters hung off it, so scroll
   position reads as time. The rail is DRAWN WITH NO SCRIPT — `vision.js` only
   sets the height of the fill inside it, and a page with no JavaScript shows an
   unfilled rail rather than no rail. */
.vs-road{position:relative;}
.vs-rail{
  position:absolute;top:0;bottom:0;
  inset-inline-start:max(20px,calc((100vw - var(--ld-max)) / 2 + 20px));
  width:1px;background:var(--line);
  z-index:0;
}
.vs-rail i{
  position:absolute;inset-inline-start:0;top:0;width:1px;height:0;
  background:linear-gradient(180deg,var(--gold),var(--gold-dp));
  box-shadow:0 0 12px rgba(232,182,71,.5);
  transition:height .18s linear;
}
/* On a narrow screen the rail would sit under the text. */
@media(max-width:880px){ .vs-rail{display:none;} }

/* ══ A YEAR CHAPTER ═══════════════════════════════════ */
.vs-year{position:relative;padding-block:var(--ab-s5);}
.vs-year + .vs-year{padding-top:0;}

.vs-y-head{
  position:relative;margin-bottom:var(--ab-s4);
  padding-inline-start:0;
}
/* The marker where the chapter meets the rail. */
@media(min-width:881px){
  .vs-y-head::before{
    content:'';position:absolute;
    inset-inline-start:-46px;top:18px;
    width:11px;height:11px;border-radius:50%;
    background:var(--bg-0);border:1px solid var(--line);
    transition:background .4s var(--ease),border-color .4s var(--ease),
               box-shadow .4s var(--ease);
  }
  .vs-year.lit .vs-y-head::before{
    background:var(--gold);border-color:var(--gold);
    box-shadow:0 0 0 6px rgba(232,182,71,.12);
  }
  .ld-wrap .vs-y-head{padding-inline-start:0;}
}
.vs-y-num{
  display:block;font-family:var(--f-display);font-weight:800;
  font-size:clamp(54px,10vw,132px);line-height:.94;letter-spacing:-.045em;
  color:transparent;
  -webkit-text-stroke:1px var(--line);
  transition:color .6s var(--ease),-webkit-text-stroke-color .6s var(--ease);
}
/* THE YEAR FILLS IN WHEN THE READER REACHES IT. An outline that never fills is
   a style; one that fills is the page telling you where you are. */
.vs-year.lit .vs-y-num{
  color:var(--gold);-webkit-text-stroke-color:transparent;
}
.vs-y-title{
  font-family:var(--f-display);font-weight:800;
  font-size:clamp(26px,3.8vw,46px);line-height:1.08;letter-spacing:-.028em;
  color:var(--fg);margin-top:10px;
}
.vs-y-tag{
  font-family:var(--f-mono);font-size:11.5px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--fg-3);margin-top:12px;
}

.vs-y-body{max-width:74ch;}
.vs-say{
  font-family:var(--f-display);font-weight:600;
  font-size:clamp(18px,2.3vw,28px);line-height:1.42;letter-spacing:-.018em;
  color:var(--fg);text-wrap:balance;margin-bottom:var(--ab-s3);
}
.vs-body{font-size:15.5px;line-height:1.8;color:var(--fg-3);margin-bottom:var(--ab-s3);}
.vs-body b{color:var(--fg);font-weight:600;}
.vs-note{font-size:14px;line-height:1.7;color:var(--fg-3);margin-top:var(--ab-s2);}

.vs-sub{
  font-family:var(--f-mono);font-size:10.5px;letter-spacing:.17em;
  text-transform:uppercase;color:var(--gold);
  margin:var(--ab-s4) 0 var(--ab-s2);
}
.vs-y-body .ab-m-pair{margin-bottom:var(--ab-s3);}

/* ── Cards ── */
.vs-cards{display:grid;gap:1px;background:var(--line-2);
  border:1px solid var(--line-2);border-radius:var(--r3);overflow:hidden;}
.vs-card{background:var(--bg-0);padding:18px 20px;
  transition:background .3s var(--ease);}
.vs-card:hover{background:var(--bg-1);}
.vs-card b{
  display:block;font-family:var(--f-display);font-weight:700;font-size:16px;
  letter-spacing:-.012em;color:var(--fg);margin-bottom:7px;
}
.vs-card p{font-size:13.5px;line-height:1.65;color:var(--fg-3);}
@media(min-width:700px){ .vs-cards{grid-template-columns:repeat(2,1fr);} }

/* ── Chips ──
   A set, not a sentence. Each item is one component of the ecosystem and they
   are peers, so they are given identical treatment and no order. */
.vs-chips{
  list-style:none;margin:0;padding:0;
  display:flex;flex-wrap:wrap;gap:8px;
}
.vs-chips li{
  font-family:var(--f-mono);font-size:11.5px;letter-spacing:.06em;
  color:var(--fg-2);
  padding:8px 13px;border:1px solid var(--line);border-radius:999px;
  background:var(--bg-1);
  transition:border-color .3s var(--ease),color .3s var(--ease);
}
.vs-chips li:hover{border-color:rgba(232,182,71,.4);color:var(--fg);}
.vs-chips.wide li{font-size:11px;}

/* ── A figure ──
   The money and the rankings. Framed, because a number this size loose in a
   column of prose reads as a claim the paragraph is making rather than as a
   stated target. */
.vs-fig{
  margin:var(--ab-s4) 0;padding:clamp(20px,2.8vw,32px);
  border:1px solid var(--line);border-radius:var(--r3);
  background:linear-gradient(180deg,var(--bg-1),var(--bg-0));
}
.vs-fig-k{
  display:block;font-family:var(--f-mono);font-size:9.5px;letter-spacing:.17em;
  text-transform:uppercase;color:var(--fg-3);margin-bottom:10px;
}
.vs-fig-n{
  display:block;font-family:var(--f-display);font-weight:800;
  font-size:clamp(30px,5vw,58px);line-height:1;letter-spacing:-.03em;
  background:linear-gradient(180deg,var(--gold-lt),var(--gold-dp));
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
  margin-bottom:14px;
}
.vs-fig p{font-size:14px;line-height:1.72;color:var(--fg-3);}
.vs-fig-say{
  margin-top:16px;padding-top:14px;border-top:1px solid var(--line-2);
  font-size:15px !important;line-height:1.6 !important;color:var(--fg-3) !important;
}
.vs-fig-say em{font-style:normal;color:var(--fg);font-weight:600;}

/* ── A panel ── */
.vs-panel{
  margin:var(--ab-s4) 0;padding:clamp(20px,3vw,36px);
  border:1px solid rgba(232,182,71,.2);border-radius:var(--r3);
  background:
    radial-gradient(110% 90% at 50% 0%,rgba(232,182,71,.06),transparent 60%),
    var(--bg-0);
}
.vs-panel-k{
  display:block;font-family:var(--f-display);font-weight:700;
  font-size:clamp(17px,2.1vw,24px);letter-spacing:-.016em;color:var(--gold-lt);
  margin-bottom:var(--ab-s2);
}
.vs-panel p{font-size:14.5px;line-height:1.76;color:var(--fg-3);}
.vs-panel .vs-chips{margin-top:var(--ab-s2);}
.vs-panel .ab-m-pair{margin-top:var(--ab-s3);}
.vs-cond{
  margin-top:var(--ab-s3);padding-top:14px;border-top:1px solid var(--line-2);
  font-size:12.5px !important;color:var(--fg-3) !important;opacity:.8;
}

/* ── A milestone ──
   What the year is FOR, set apart from how it gets there. */
.vs-mile{
  margin-top:var(--ab-s4);padding-inline-start:clamp(16px,2.2vw,26px);
  border-inline-start:2px solid var(--gold);
}
.vs-mile-k{
  display:block;font-family:var(--f-mono);font-size:10px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--gold);margin-bottom:12px;
}
.vs-mile p{
  font-family:var(--f-display);font-weight:600;
  font-size:clamp(16px,2vw,24px);line-height:1.42;letter-spacing:-.016em;
  color:var(--fg-2);text-wrap:balance;
}
.vs-mile p b{color:var(--fg);}
.vs-mile.big p{font-size:clamp(17px,2.2vw,27px);}
.vs-mile-say{
  margin-top:var(--ab-s2);font-size:15px !important;color:var(--fg-3) !important;
}
.vs-mile-say em{font-style:normal;color:var(--fg);}
.vs-rank{
  font-family:var(--f-display);font-weight:800;
  font-size:clamp(34px,6vw,72px) !important;line-height:1 !important;
  letter-spacing:-.03em;color:var(--fg-3) !important;margin-bottom:8px;
}
.vs-rank b{
  background:linear-gradient(180deg,var(--gold-lt),var(--gold-dp));
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
}

/* ══ THE FLYWHEEL ═════════════════════════════════════
   A cycle, drawn as one. The canvas is the ring; the five steps are real text
   under it, so a blank canvas costs the reader nothing but the picture. */
.vs-flywheel{margin:var(--ab-s4) 0;}
.vs-fly-intro{font-size:15.5px;line-height:1.76;color:var(--fg-3);margin-bottom:var(--ab-s3);}
.vs-fly-stage{position:relative;display:grid;gap:var(--ab-s2);}
.vs-fly-stage canvas{
  display:block;width:100%;height:clamp(200px,26vw,280px);
}
.vs-fly-list{
  list-style:none;margin:0;padding:0;display:grid;gap:0;counter-reset:fly;
}
.vs-fly-list li{
  counter-increment:fly;position:relative;
  padding:13px 0 13px 34px;border-top:1px solid var(--line-2);
  font-size:15px;line-height:1.5;color:var(--fg-2);
}
.vs-fly-list li:last-child{border-bottom:1px solid var(--line-2);color:var(--fg);}
.vs-fly-list li::before{
  content:counter(fly);
  position:absolute;inset-inline-start:0;top:50%;transform:translateY(-50%);
  width:19px;height:19px;border-radius:50%;
  display:grid;place-items:center;
  font-family:var(--f-mono);font-size:9.5px;
  background:var(--bg-2);color:var(--gold);
}

/* ══ THE LADDER ═══════════════════════════════════════
   The five stages recapped. A ladder rather than cards, because by this point
   the reader has read all five and this is a summary. */
.vs-ladder{list-style:none;margin:0;padding:0;display:grid;}
.vs-ladder li{
  display:grid;grid-template-columns:auto 1fr;gap:4px 18px;
  padding-block:18px;border-top:1px solid var(--line-2);
  align-items:baseline;
}
.vs-ladder li:last-child{border-bottom:1px solid var(--line-2);}
.vs-l-y{
  font-family:var(--f-mono);font-size:11px;letter-spacing:.13em;color:var(--gold);
  grid-row:1 / span 2;
}
.vs-ladder b{
  font-family:var(--f-display);font-weight:700;font-size:17px;
  letter-spacing:-.014em;color:var(--fg);
}
.vs-ladder p{font-size:13.5px;line-height:1.65;color:var(--fg-3);}

/* ══ BEYOND 2030 ══════════════════════════════════════
   Five layers, and they are ordered — AI understands, Milo interprets, markets
   supply, the ecosystem connects, the chain settles. Numbered for that reason
   and no other. */
.vs-layers{
  list-style:none;margin:0;padding:0;counter-reset:vlay;
  max-width:72ch;margin-inline:auto;display:grid;
}
.vs-layers li{
  counter-increment:vlay;position:relative;
  padding:22px 0 22px clamp(44px,5vw,66px);
  border-top:1px solid var(--line-2);
}
.vs-layers li:last-child{border-bottom:1px solid var(--line-2);}
.vs-layers li::before{
  content:counter(vlay,decimal-leading-zero);
  position:absolute;inset-inline-start:0;top:26px;
  font-family:var(--f-mono);font-size:10.5px;letter-spacing:.14em;
  color:var(--gold-dk);
}
.vs-layers b{
  font-family:var(--f-display);font-weight:700;
  font-size:clamp(18px,2.2vw,26px);letter-spacing:-.018em;color:var(--fg);
}
.vs-layers p{font-size:14.5px;line-height:1.6;color:var(--fg-3);margin-top:5px;}

/* ══ THE NORTH STAR ═══════════════════════════════════ */
.vs-north{text-align:center;}
.vs-nots{
  display:grid;gap:12px;max-width:60ch;margin-inline:auto;text-align:start;
}
.vs-larger{
  margin-top:var(--ab-s4);
  font-family:var(--f-display);font-weight:600;
  font-size:clamp(18px,2.4vw,30px);line-height:1.34;color:var(--fg-2);
}
.vs-north-say{
  margin-top:var(--ab-s3);
  font-family:var(--f-display);font-weight:800;
  font-size:clamp(30px,6vw,80px);line-height:1.04;letter-spacing:-.034em;
  text-wrap:balance;
  background:linear-gradient(180deg,var(--gold-lt),var(--gold-dp));
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
}
.vs-verbs{
  list-style:none;margin:var(--ab-s4) auto 0;padding:0;
  max-width:52ch;display:grid;text-align:start;
}
.vs-verbs li{
  padding-block:14px;border-top:1px solid var(--line-2);
  font-size:clamp(15px,1.8vw,20px);line-height:1.44;color:var(--fg-3);
}
.vs-verbs li:last-child{border-bottom:1px solid var(--line-2);}
.vs-verbs b{color:var(--fg);font-weight:600;}

/* ══ FINAL ════════════════════════════════════════════ */
.vs-end{text-align:center;}
.vs-end-lines{
  font-family:var(--f-display);font-weight:700;
  font-size:clamp(22px,4vw,48px);line-height:1.18;letter-spacing:-.028em;
  color:var(--fg-3);margin-bottom:var(--ab-s4);
}
.vs-end-lines em{font-style:normal;color:var(--fg);}
.vs-end-pair{max-width:52ch;margin:0 auto var(--ab-s4);text-align:start;}

/* The forward-looking notice. Small, plain, and not hidden — a roadmap that
   prints targets owes its reader one sentence saying they are targets. */
.vs-fwd{
  max-width:70ch;margin:var(--ab-s5) auto 0;
  padding-top:var(--ab-s3);border-top:1px solid var(--line-2);
  font-size:12px;line-height:1.7;color:var(--fg-3);opacity:.75;text-align:start;
}

/* ══ MOTION OFF ═══════════════════════════════════════ */
@media(prefers-reduced-motion:reduce){
  .vs-rail i{transition:none;}
  .vs-y-num,.vs-y-head::before{transition:none;}
  .vs-card,.vs-chips li{transition:none;}
}
