/* ==========================================================================
   Skumetrica — landing page.

   Deliberately its own stylesheet rather than an extension of app.css. The
   dashboard's job is to disappear behind the figures; this page's job is to
   argue. It shares the brand tokens so the two do not read as different
   companies, and nothing else.

   Specificity is kept flat on purpose: one class, one job, and section
   rhythm comes from a single .band rule rather than from per-section
   padding that would then have to out-specify itself.
   ========================================================================== */

/* ------------------------------------------------------------------ fonts */
/* Self-hosted. The app has no external dependencies and a marketing page
   that phones a font CDN on every visit would be the first one. */
@font-face {
  font-family: 'Archivo';
  src: url('../fonts/archivo-var-latin.woff2') format('woff2');
  font-weight: 400 800;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Newsreader';
  src: url('../fonts/newsreader-var-latin.woff2') format('woff2');
  font-weight: 300 600;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Plex Mono';
  src: url('../fonts/plexmono-500-latin.woff2') format('woff2');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Plex Mono';
  src: url('../fonts/plexmono-600-latin.woff2') format('woff2');
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

/* ----------------------------------------------------------------- tokens */
:root {
  color-scheme: light;

  --ink:     #12233a;   /* the deep plane */
  --navy:    #23466c;   /* logo navy */
  --blue:    #2f6fb0;   /* the app's series 1 */
  --orange:  #f5851a;   /* logo orange — three uses on this page, no more */
  --paper:   #f4f3f7;   /* the app's page grey. Cool, not cream. */
  --red:     #c0322f;   /* negative figures only */

  --text:    #101828;
  --text-2:  #4a5568;
  --muted:   #77809180;
  --rule:    #d9d8e1;
  --card:    #ffffff;

  /* On the dark plane. .74 clears 7:1 against --ink; the app made the same
     calculation for its sidebar and landed in the same place. */
  --on-ink:   #ffffff;
  --on-ink-2: rgba(255, 255, 255, .74);
  /* The provenance line under each quoted string is small mono on the dark
     plane, so it has to clear 4.5:1 rather than merely look quiet. .40 gave
     3.3:1; this gives 6.0:1 and still recedes behind the quote itself. */
  --on-ink-3: rgba(255, 255, 255, .62);
  --rule-ink: rgba(255, 255, 255, .13);

  --display: 'Archivo', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --read:    'Newsreader', Georgia, 'Times New Roman', serif;
  --mono:    'Plex Mono', ui-monospace, 'SFMono-Regular', Consolas, monospace;

  --r-sm: 8px;  --r: 14px;  --r-lg: 20px;
  --shadow:  0 1px 2px rgba(16, 20, 35, .05), 0 10px 30px rgba(16, 20, 35, .07);
  --shadow-l: 0 2px 8px rgba(16, 20, 35, .08), 0 24px 60px rgba(16, 20, 35, .12);

  --gutter: clamp(20px, 5vw, 64px);
  --wide: 1240px;
}

/* ------------------------------------------------------------------ reset */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--paper);
  color: var(--text);
  font-family: var(--display);
  font-size: 17px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
img { max-width: 100%; display: block; }
a { color: inherit; }
h1, h2, h3, h4, p, ul, ol, figure, blockquote { margin: 0; }
ul { padding: 0; list-style: none; }
button { font: inherit; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
  }
}

/* Keyboard focus is a visible ring everywhere, including on the dark plane
   where the default ring colour would vanish. */
:focus-visible {
  outline: 2.5px solid var(--orange);
  outline-offset: 3px;
  border-radius: 3px;
}

.skip {
  position: absolute; left: -9999px; top: 0; z-index: 100;
  background: var(--ink); color: var(--on-ink);
  padding: 12px 18px; border-radius: 0 0 var(--r-sm) 0;
}
.skip:focus { left: 0; }

/* ----------------------------------------------------------------- layout */
.wrap {
  width: 100%;
  max-width: var(--wide);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

/* Every section's vertical rhythm comes from here and only here. */
.band { padding-block: clamp(64px, 9vw, 116px); }
.band-dark { background: var(--ink); color: var(--on-ink-2); }
.band-tint { background: #e8e7f0; }

/* ------------------------------------------------------------------- type */
.eyebrow {
  font-family: var(--mono);
  font-weight: 600;
  font-size: 11.5px;
  letter-spacing: .13em;
  text-transform: uppercase;
  color: var(--blue);
}
.band-dark .eyebrow { color: var(--orange); }

.h1 {
  font-family: var(--display);
  font-weight: 800;
  font-size: clamp(35px, 4.2vw, 54px);
  line-height: 1.04;
  letter-spacing: -.03em;
  color: var(--ink);
  text-wrap: balance;
}
.h2 {
  font-family: var(--display);
  font-weight: 800;
  font-size: clamp(27px, 3vw, 38px);
  line-height: 1.1;
  letter-spacing: -.026em;
  color: var(--ink);
  text-wrap: balance;
}
.band-dark .h2 { color: var(--on-ink); }

.h3 {
  font-family: var(--display);
  font-weight: 700;
  font-size: 19px;
  line-height: 1.25;
  letter-spacing: -.015em;
  color: var(--ink);
}

/* The reading face. Everything set in it is prose someone is meant to read
   rather than scan, which on this page means the brief and the argument. */
.prose {
  font-family: var(--read);
  font-weight: 380;
  font-size: clamp(18px, 1.5vw, 21px);
  line-height: 1.58;
  color: var(--text-2);
  letter-spacing: .002em;
}
.band-dark .prose { color: var(--on-ink-2); }
.prose strong { font-weight: 600; color: var(--ink); }
.band-dark .prose strong { color: var(--on-ink); }

.lede { font-size: clamp(19px, 1.7vw, 23px); line-height: 1.5; }

/* The page's one emphasised phrase. Orange use number three. A background
   band rather than an underline, sized off the em so it tracks the clamp. */
.mark {
  color: var(--ink);
  background: linear-gradient(rgba(245, 133, 26, .3), rgba(245, 133, 26, .3))
              no-repeat 0 .82em / 100% .17em;
}

/* -------------------------------------------------------------- fact chip */
/* The signature. Straight out of the brief panel: a figure never travels
   without the sentence that says what it is. */
.chip {
  display: inline-flex;
  align-items: baseline;
  gap: 9px;
  padding: 6px 13px 6px 11px;
  border: 1px solid var(--rule);
  border-radius: 999px;
  background: var(--card);
  font-size: 13.5px;
  line-height: 1.35;
  color: var(--text-2);
  max-width: 100%;
}
.chip b {
  font-family: var(--mono);
  font-weight: 600;
  font-size: 13px;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.chip-down b { color: var(--red); }
.chip-up b { color: #0a7b2e; }

.chips { display: flex; flex-direction: column; gap: 7px; align-items: flex-start; }

/* ---------------------------------------------------------------- buttons */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 13px 22px;
  border: 1px solid transparent;
  border-radius: 999px;
  font-family: var(--display);
  font-weight: 600;
  font-size: 15.5px;
  letter-spacing: -.008em;
  text-decoration: none;
  cursor: pointer;
  transition: transform .16s ease, background-color .16s ease, box-shadow .16s ease;
}
.btn-primary {
  background: var(--orange);
  color: #20130a;
  box-shadow: 0 1px 2px rgba(120, 60, 0, .2), 0 8px 22px rgba(245, 133, 26, .3);
}
.btn-primary:hover { background: #ffa03f; transform: translateY(-1px); }
.btn-quiet {
  background: transparent;
  color: var(--navy);
  border-color: var(--rule);
}
.btn-quiet:hover { border-color: var(--navy); background: rgba(35, 70, 108, .04); }
.band-dark .btn-quiet { color: var(--on-ink); border-color: var(--rule-ink); }
.band-dark .btn-quiet:hover { border-color: rgba(255, 255, 255, .45); background: rgba(255, 255, 255, .06); }

.btn-sm { padding: 9px 16px; font-size: 14.5px; }

.actions { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }

/* -------------------------------------------------------------------- nav */
.nav {
  position: sticky;
  top: 0;
  z-index: 40;
  background: rgba(244, 243, 247, .88);
  backdrop-filter: saturate(1.6) blur(12px);
  border-bottom: 1px solid transparent;
  transition: border-color .2s ease;
}
.nav-scrolled { border-bottom-color: var(--rule); }
.nav-in {
  display: flex;
  align-items: center;
  gap: 28px;
  height: 70px;
}
.nav-logo { display: flex; align-items: center; text-decoration: none; }
.nav-logo img { height: 28px; width: auto; }
.nav-links { display: flex; gap: 26px; margin-left: auto; }
.nav-links a {
  font-size: 15px;
  font-weight: 500;
  color: var(--text-2);
  text-decoration: none;
  transition: color .15s ease;
}
.nav-links a:hover { color: var(--ink); }
.nav-cta { display: flex; align-items: center; gap: 14px; }
.nav-signin {
  font-size: 15px; font-weight: 600; color: var(--navy); text-decoration: none;
}
.nav-signin:hover { color: var(--blue); }

@media (max-width: 860px) {
  .nav-links { display: none; }
  .nav-in { gap: 16px; }
  .nav-cta { margin-left: auto; }
}
@media (max-width: 460px) {
  .nav-signin { display: none; }
}

/* ------------------------------------------------------------------- hero */
.hero { padding-block: clamp(48px, 7vw, 88px) clamp(56px, 8vw, 104px); }
.hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 0.86fr) minmax(0, 1fr);
  gap: clamp(36px, 5vw, 72px);
  align-items: start;
}
.hero-claim > * + * { margin-top: 22px; }
.hero-sub { max-width: 30ch; }
/* Sits directly under the buttons, in the mono the fact chips use, so it reads
   as a stated condition rather than as sales copy. */
/* .hero-claim > * + * sets 22px on every sibling, so this value REPLACES that
   rather than adding to it — at -6px the line sat inside the button's shadow. */
.trial-note {
  font-family: var(--mono);
  font-size: 12.5px;
  color: var(--text-2);
  margin-top: 15px;
}
.hero-note {
  font-family: var(--mono);
  font-size: 12.5px;
  color: var(--text-2);
  line-height: 1.55;
  padding-top: 20px;
  border-top: 1px solid var(--rule);
  max-width: 34ch;
}

@media (max-width: 980px) {
  .hero-grid { grid-template-columns: minmax(0, 1fr); }
  .hero-sub, .hero-note { max-width: 56ch; }
}

/* -------------------------------------------------------------- the memo */
/* The hero's evidence: a real brief, typeset. Live markup rather than a
   screenshot so the chips can be cited one at a time on load, and so it
   stays legible at 360px where a screenshot would not. */
.memo {
  background: var(--card);
  border-radius: var(--r-lg);
  border: 1px solid var(--rule);
  border-left: 3px solid var(--orange);
  box-shadow: var(--shadow-l);
  overflow: hidden;
}
.memo-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  padding: 18px clamp(20px, 3vw, 30px);
  border-bottom: 1px solid var(--rule);
  background: #fbfbfd;
}
.memo-title {
  font-family: var(--mono);
  font-weight: 600;
  font-size: 11.5px;
  letter-spacing: .13em;
  text-transform: uppercase;
  color: var(--navy);
  display: flex;
  align-items: center;
  gap: 7px;
}
.memo-when { font-family: var(--mono); font-size: 12px; color: var(--muted); }
.memo-body { padding: clamp(22px, 3vw, 32px) clamp(20px, 3vw, 30px); }
.memo-headline {
  font-family: var(--read);
  font-weight: 560;
  font-size: clamp(21px, 2.1vw, 27px);
  line-height: 1.25;
  letter-spacing: -.008em;
  color: var(--ink);
  text-wrap: pretty;
}
.memo-text {
  font-family: var(--read);
  font-weight: 380;
  font-size: 17px;
  line-height: 1.62;
  color: var(--text-2);
  margin-top: 16px;
}
.memo-chips { margin-top: 22px; }
.memo-foot {
  padding: 15px clamp(20px, 3vw, 30px);
  border-top: 1px solid var(--rule);
  background: #fbfbfd;
  font-family: var(--mono);
  font-size: 12px;
  line-height: 1.55;
  color: var(--text-2);
}

/* The one orchestrated moment. Each chip settles a beat after the last, the
   way the brief cites them one at a time. Killed outright under reduced
   motion by the global rule above — hence opacity is restored there too. */
.cite { opacity: 0; transform: translateY(7px); animation: cite .5s ease forwards; }
@keyframes cite { to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
  .cite { opacity: 1; transform: none; animation: none; }
}

/* ----------------------------------------------------------- honesty band */
.honesty-grid {
  display: grid;
  grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
  gap: clamp(36px, 5vw, 72px);
  align-items: start;
}
.honesty-claim > * + * { margin-top: 20px; }
.quotes { display: grid; gap: 14px; }

/* A quoted string from the product, and underneath it, where it appears.
   The rule down the left is the app's own convention for a brief finding. */
.quote {
  border-left: 2px solid var(--rule-ink);
  padding: 2px 0 2px 20px;
}
.quote p {
  font-family: var(--read);
  font-weight: 380;
  font-size: 17.5px;
  line-height: 1.5;
  color: var(--on-ink);
}
.quote p strong { font-weight: 600; }
.quote cite {
  display: block;
  margin-top: 8px;
  font-family: var(--mono);
  font-style: normal;
  font-size: 12px;
  line-height: 1.5;
  color: var(--on-ink-3);
}
.quote-flag { border-left-color: var(--orange); }

@media (max-width: 980px) {
  .honesty-grid { grid-template-columns: minmax(0, 1fr); }
}

/* --------------------------------------------------------------- features */
/* The heading and its standfirst sit side by side rather than stacked in a
   narrow measure, which left the right half of the section empty. */
.feat-head, .price-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 8px clamp(32px, 5vw, 72px);
  align-items: end;
}
.feat-head .eyebrow, .price-head .eyebrow { grid-column: 1 / -1; margin-bottom: 14px; }
.feat-head .prose, .price-head .prose { max-width: 46ch; }

@media (max-width: 860px) {
  .feat-head, .price-head { grid-template-columns: minmax(0, 1fr); }
  .feat-head .h2, .price-head .h2 { margin-bottom: 16px; }
}

.feat-group { margin-top: clamp(40px, 5vw, 60px); }
.feat-label {
  display: flex;
  align-items: center;
  gap: 16px;
  font-family: var(--mono);
  font-weight: 600;
  font-size: 11.5px;
  letter-spacing: .13em;
  text-transform: uppercase;
  color: var(--navy);
  margin-bottom: 22px;
}
.feat-label::after {
  content: '';
  flex: 1;
  height: 1px;
  background: var(--rule);
}
/* A list of screens, not a grid of cards. Five items never divide evenly into
   an auto-fit grid, so the last one was left stranded in an empty row; and the
   left rail reading as the app's own sidebar is truer to what this is — a
   contents page for the product. */
.feat-list { border-top: 1px solid var(--rule); }
.feat {
  display: grid;
  grid-template-columns: 190px minmax(0, 1fr);
  gap: 6px clamp(24px, 4vw, 56px);
  padding: 20px 12px 22px;
  margin-inline: -12px;
  border-bottom: 1px solid var(--rule);
  border-radius: var(--r-sm);
  transition: background-color .16s ease;
}
.feat:hover { background: rgba(35, 70, 108, .045); }
.feat p {
  font-family: var(--read);
  font-weight: 380;
  font-size: 16.5px;
  line-height: 1.55;
  color: var(--text-2);
  max-width: 64ch;
}

@media (max-width: 720px) {
  .feat { grid-template-columns: minmax(0, 1fr); gap: 8px; }
}

/* ------------------------------------------------------------- screenshots */
.shots { display: grid; gap: clamp(36px, 5vw, 56px); margin-top: clamp(36px, 5vw, 56px); }
.shot { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; }
.shot-frame {
  border-radius: var(--r);
  border: 1px solid var(--rule);
  box-shadow: var(--shadow-l);
  overflow: hidden;
  background: var(--card);
}
.shot-frame img { width: 100%; height: auto; }
.shot-cap { max-width: 62ch; }
.shot-cap h3 { margin-bottom: 8px; }
.shot-cap p {
  font-family: var(--read);
  font-weight: 380;
  font-size: 17px;
  line-height: 1.55;
  color: var(--text-2);
}

/* -------------------------------------------------------------- objection */
.obj-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(32px, 5vw, 64px);
  align-items: center;
}
.obj-claim > * + * { margin-top: 20px; }

/* Two log lines, verbatim from the analyse job — one that wrote a brief and
   one that decided the story had not changed. It is the whole answer. */
.log {
  background: var(--ink);
  border-radius: var(--r);
  padding: 22px clamp(18px, 2.4vw, 26px);
  font-family: var(--mono);
  font-size: 12.5px;
  line-height: 1.75;
  color: var(--on-ink-2);
  overflow-x: auto;
}
.log-line { white-space: pre; }
.log-line + .log-line { margin-top: 6px; }
.log-kept { color: #ffc27a; }
.log-dim { color: var(--on-ink-3); }

@media (max-width: 900px) {
  .obj-grid { grid-template-columns: minmax(0, 1fr); }
}

/* ---------------------------------------------------------------- connect */
.connect-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(32px, 5vw, 64px);
  align-items: start;
}
.connect-claim > * + * { margin-top: 20px; }
.keys { display: grid; gap: 2px; }
.key {
  background: var(--card);
  border: 1px solid var(--rule);
  padding: 20px 22px;
}
.key:first-child { border-radius: var(--r) var(--r) 0 0; }
.key:last-child { border-radius: 0 0 var(--r) var(--r); }
.key + .key { border-top: none; }
.key h3 { margin-bottom: 7px; }
.key p {
  font-family: var(--read);
  font-weight: 380;
  font-size: 16.5px;
  line-height: 1.55;
  color: var(--text-2);
}

@media (max-width: 900px) {
  .connect-grid { grid-template-columns: minmax(0, 1fr); }
}

/* ---------------------------------------------------------------- pricing */
.plans {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 16px;
  margin-top: clamp(32px, 4vw, 48px);
}
.plan {
  background: var(--card);
  border: 1px solid var(--rule);
  border-radius: var(--r);
  padding: 26px 24px 28px;
  display: flex;
  flex-direction: column;
}
.plan-pick { border-color: var(--navy); box-shadow: var(--shadow); }
.plan-name {
  font-family: var(--display);
  font-weight: 700;
  font-size: 17px;
  letter-spacing: -.01em;
  color: var(--ink);
}
.plan-vol {
  font-family: var(--mono);
  font-size: 12.5px;
  color: var(--text-2);
  margin-top: 5px;
}
.plan-rule { height: 1px; background: var(--rule); margin: 20px 0; }
.tier + .tier { margin-top: 16px; }
.tier-label {
  font-family: var(--mono);
  font-weight: 600;
  font-size: 11px;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--muted);
}
.tier-price {
  display: flex;
  align-items: baseline;
  gap: 5px;
  margin-top: 3px;
}
.tier-price b {
  font-family: var(--display);
  font-weight: 800;
  font-size: 34px;
  letter-spacing: -.035em;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}
.tier-price span { font-family: var(--mono); font-size: 12.5px; color: var(--text-2); }
/* Anthropic's coral, not this page's orange. The dearer line is dearer because
   Claude is on it, and a reader who has seen Claude anywhere else should
   recognise whose work they are being offered. */
.tier-claude .tier-label {
  color: #d97757; display: flex; align-items: center; gap: 7px;
}
.tier-claude .claude-mark { flex: none; }
.claude-mark { flex: none; color: #d97757; }
.plan-foot { margin-top: auto; padding-top: 24px; }
.price-note {
  margin-top: 26px;
  max-width: 62ch;
  font-family: var(--read);
  font-weight: 380;
  font-size: 17px;
  line-height: 1.55;
  color: var(--text-2);
}

/* ------------------------------------------------------------------ close */
.close { text-align: center; }
.close > * + * { margin-top: 22px; }
.close .prose { margin-inline: auto; max-width: 46ch; }
.close .actions { justify-content: center; }

/* -------------------------------------------------------------- documents */
/* The privacy notice and anything else that is a document rather than a pitch.
   One column, a reading measure, and the reading face throughout — Amazon
   reviews this page and so do sellers, and both are here to read it. */
.doc { max-width: 74ch; }
.doc-head { margin-bottom: clamp(32px, 4vw, 48px); }
.doc-head .h1 { font-size: clamp(30px, 3.4vw, 44px); }
.doc-meta {
  font-family: var(--mono);
  font-size: 12.5px;
  color: var(--text-2);
  margin-top: 14px;
}
.doc h2 {
  font-family: var(--display);
  font-weight: 700;
  font-size: clamp(20px, 2vw, 25px);
  line-height: 1.2;
  letter-spacing: -.02em;
  color: var(--ink);
  margin: clamp(34px, 4vw, 48px) 0 12px;
}
.doc h3 {
  font-family: var(--display);
  font-weight: 700;
  font-size: 16.5px;
  color: var(--ink);
  margin: 24px 0 8px;
}
/* :not([class]) on purpose. ".doc p" is class-plus-element and so out-specifies
   ".eyebrow" and ".doc-meta", which are class-only — both were silently
   redrawn in the reading serif by a rule meant for body copy. Scoping the
   prose rule to unclassed paragraphs means any <p> that carries a class keeps
   whatever that class says, and the trap cannot be re-sprung by the next
   element added here. */
.doc p:not([class]), .doc li {
  font-family: var(--read);
  font-weight: 380;
  font-size: 17.5px;
  line-height: 1.62;
  color: var(--text-2);
}
.doc p:not([class]) + p:not([class]) { margin-top: 14px; }
.doc strong { font-weight: 600; color: var(--ink); }
.doc a { color: var(--blue); }
.doc ul { margin: 12px 0 0; padding: 0; }
.doc li {
  position: relative;
  padding-left: 22px;
  margin-bottom: 9px;
}
.doc li::before {
  content: '';
  position: absolute;
  left: 4px; top: .72em;
  width: 5px; height: 5px;
  border-radius: 50%;
  background: var(--orange);
}
.doc-table {
  width: 100%;
  border-collapse: collapse;
  margin-top: 16px;
  font-family: var(--read);
  font-size: 16.5px;
  color: var(--text-2);
}
.doc-table th, .doc-table td {
  text-align: left;
  vertical-align: top;
  padding: 11px 14px 11px 0;
  border-bottom: 1px solid var(--rule);
  line-height: 1.5;
}
.doc-table th {
  font-family: var(--mono);
  font-weight: 600;
  font-size: 11.5px;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--navy);
  white-space: nowrap;
}
.doc-table td:first-child { font-weight: 600; color: var(--ink); width: 34%; }

/* A statement that needs to be impossible to skim past. */
.doc-note {
  margin-top: 18px;
  padding: 16px 20px;
  background: var(--card);
  border: 1px solid var(--rule);
  border-left: 3px solid var(--orange);
  border-radius: var(--r-sm);
}
.doc-note p {
  font-family: var(--read);
  font-weight: 380;
  font-size: 16.5px;
  line-height: 1.6;
  color: var(--text-2);
}

@media (max-width: 640px) {
  .doc-table, .doc-table tbody, .doc-table tr, .doc-table td { display: block; width: auto; }
  .doc-table thead { display: none; }
  .doc-table td:first-child { width: auto; padding-bottom: 2px; border-bottom: none; }
  .doc-table tr { border-bottom: 1px solid var(--rule); padding-bottom: 10px; margin-bottom: 10px; }
  .doc-table td { border-bottom: none; padding-top: 0; }
}

/* ----------------------------------------------------------------- footer */
.foot {
  background: var(--ink);
  color: var(--on-ink-3);
  padding-block: 44px;
}
.foot-in {
  display: flex;
  flex-wrap: wrap;
  gap: 20px 36px;
  align-items: center;
  font-family: var(--mono);
  font-size: 12.5px;
}
.foot-in img { height: 22px; width: auto; }
.foot-links { display: flex; gap: 24px; margin-left: auto; flex-wrap: wrap; }
.foot-links a { color: var(--on-ink-2); text-decoration: none; }
.foot-links a:hover { color: var(--on-ink); }

/* ----------------------------------------------------------- scroll reveal */
/* The markup carries data-reveal; the class that actually hides the section is
   added by script. Without JS nothing is ever hidden, so a visitor gets the
   page rather than a column of invisible sections. */
.reveal { opacity: 0; transform: translateY(14px); }
.reveal-in { opacity: 1; transform: none; transition: opacity .6s ease, transform .6s ease; }
@media (prefers-reduced-motion: reduce) {
  .reveal, .reveal-in { opacity: 1; transform: none; transition: none; }
}
