/* ============================================================================
   TCGVendr — tcgvendr.com
   One stylesheet shared by index / privacy / terms / 404.
   Warm-beige canvas, near-black ink, slate-blue accent. Light default,
   dark mode via html[data-theme].
   ============================================================================ */

/* ---------------------------------------------------------------- tokens --- */
:root{
  --display:"Schibsted Grotesk",system-ui,sans-serif;
  --body:"Hanken Grotesk",system-ui,sans-serif;
  --maxw:1120px;
  --nav-h:68px;
  --r:16px;
  --r-sm:12px;
  --ease:cubic-bezier(.22,1,.36,1);
}
html[data-theme="light"]{
  color-scheme:light;
  --bg:#f4f1ea;
  --surface:#ffffff;
  --surface-2:#f0ece3;
  --ink:#1b1b1b;
  --ink-dim:#575d63;
  --ink-faint:#96938b;
  --line:#e2dccf;
  --line-2:#eae5d9;
  --action:#15181c;
  --on-action:#f6f4ee;
  --accent:#3f6f97;
  --accent-soft:#e9eff5;
  --accent-line:#c9d7e4;
  --grid:rgba(27,27,27,.05);
  --cta-bg:#15181c;
  --cta-line:transparent;
  --cta-ink:#f4f1ea;
  --cta-dim:rgba(244,241,234,.64);
  --cta-btn-bg:#f4f1ea;
  --cta-btn-ink:#15181c;
  --shadow:0 1px 2px rgba(27,25,20,.05),0 14px 36px -14px rgba(27,25,20,.14);
  --shadow-sm:0 1px 2px rgba(27,25,20,.04),0 8px 20px -12px rgba(27,25,20,.08);
  --nav-bg:rgba(244,241,234,.86);
  --panel:linear-gradient(150deg,#e2eaf2 0%,#ece6d8 100%);
  --psa-bg:#f7e9e9;
  --psa-ink:#b5302f;
  --psa-line:#e8cccc;
}
html[data-theme="dark"]{
  color-scheme:dark;
  --bg:#0d0f13;
  --surface:#14181f;
  --surface-2:#1b2029;
  --ink:#edf0f3;
  --ink-dim:#9aa3ad;
  --ink-faint:#69727d;
  --line:#242b35;
  --line-2:#1d232c;
  --action:#edf0f3;
  --on-action:#12151a;
  --accent:#8fb8dd;
  --accent-soft:#19232e;
  --accent-line:#2b3e51;
  --grid:rgba(237,240,243,.04);
  --cta-bg:#14181f;
  --cta-line:#242b35;
  --cta-ink:#edf0f3;
  --cta-dim:#9aa3ad;
  --cta-btn-bg:#edf0f3;
  --cta-btn-ink:#12151a;
  --shadow:0 1px 2px rgba(0,0,0,.35),0 18px 44px -18px rgba(0,0,0,.55);
  --shadow-sm:0 1px 2px rgba(0,0,0,.3),0 8px 22px -12px rgba(0,0,0,.4);
  --nav-bg:rgba(13,15,19,.82);
  --panel:linear-gradient(150deg,#141c26 0%,#1a1e25 100%);
  --psa-bg:#2b1718;
  --psa-ink:#e78f8f;
  --psa-line:#4b2727;
}

/* ------------------------------------------------------------------ base --- */
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  background:var(--bg);color:var(--ink);font-family:var(--body);font-size:16px;
  line-height:1.55;-webkit-font-smoothing:antialiased;
}
/* tabular numerals only where digits align — never body-wide */
.pv,.amt,.pf-v,.pf-up{font-variant-numeric:tabular-nums}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}
section{padding:60px 0}
/* the showcase ends in a tall panel with its own internal air — trim its tail */
.sec-tight{padding-bottom:20px}
[id]{scroll-margin-top:calc(var(--nav-h) + 16px)}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}
.skip{position:absolute;left:-9999px;top:0;z-index:100;background:var(--action);
  color:var(--on-action);font-weight:700;padding:10px 18px;border-radius:0 0 10px 0}
.skip:focus{left:0}

/* ------------------------------------------------------------------ type --- */
h1{font-family:var(--display);font-weight:800;letter-spacing:-.035em;line-height:1;
  font-size:clamp(42px,6.4vw,74px)}
h2{font-family:var(--display);font-weight:800;letter-spacing:-.03em;line-height:1.05;
  font-size:clamp(30px,4.4vw,46px)}
/* section kicker — dot pill, like the hero badge */
.kicker{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:700;
  color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-line);
  border-radius:999px;padding:5px 14px 5px 12px;margin-bottom:18px}
.kicker::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
/* headings run the full measure and wrap balanced — no orphaned last words */
.sec-head{margin-bottom:38px}
.sec-head h2{text-wrap:balance}
.sec-head p{margin-top:16px;color:var(--ink-dim);font-size:17.5px;max-width:52ch}

/* tinted product panel — grounds the app mockups */
.shot{background:var(--panel);border-radius:26px;padding:clamp(22px,3.5vw,46px)}

/* --------------------------------------------------------------- buttons --- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  font-family:var(--body);font-weight:700;font-size:15px;cursor:pointer;border:none;
  border-radius:999px;padding:13px 26px;white-space:nowrap;
  transition:background .2s,border-color .2s,color .2s,opacity .2s}
.btn-primary{background:var(--action);color:var(--on-action)}
.btn-primary:hover{opacity:.88}
.b-arr{display:inline-block;transition:translate .25s var(--ease)}
.btn:hover .b-arr{translate:3px 0}
.btn-ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}
.btn-ghost:hover{border-color:var(--accent-line);background:var(--accent-soft)}
.btn-sm{padding:10px 18px;font-size:14px}

/* ------------------------------------------------------------------- nav --- */
.nav{position:sticky;top:0;z-index:60;background:var(--nav-bg);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line-2)}
.nav-in{display:flex;align-items:center;justify-content:space-between;height:var(--nav-h);gap:16px}
.brand{font-family:var(--display);font-weight:800;font-size:20px;letter-spacing:-.02em;
  display:flex;align-items:center;gap:9px;color:var(--ink)}
.brand .mk{width:27px;height:27px;flex:none}
.brand .mk svg{width:27px;height:27px;display:block}
.nav-links{display:flex;gap:4px;align-items:center}
.nav-links>a{color:var(--ink-dim);font-size:14.5px;font-weight:600;padding:8px 12px;
  border-radius:8px;transition:color .2s}
.nav-links>a:hover{color:var(--ink)}
.nav-actions{display:flex;align-items:center;gap:10px}
.theme-toggle,.menu-btn{background:transparent;border:1px solid var(--line);color:var(--ink);
  width:38px;height:38px;border-radius:10px;display:grid;place-items:center;cursor:pointer;
  transition:border-color .2s,background .2s;flex:none}
.theme-toggle:hover,.menu-btn:hover{border-color:var(--accent-line);background:var(--accent-soft)}
.theme-toggle svg,.menu-btn svg{width:17px;height:17px}
html[data-theme="dark"] .ic-moon{display:none}
html[data-theme="light"] .ic-sun{display:none}
.menu-btn{display:none}
.menu-btn .ic-close{display:none}
.menu-btn[aria-expanded="true"] .ic-burger{display:none}
.menu-btn[aria-expanded="true"] .ic-close{display:block}
.mobile-menu{display:none;border-top:1px solid var(--line-2);background:var(--nav-bg);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.mobile-menu.open{display:block}
.mobile-menu a{display:block;padding:14px 24px;font-size:16px;font-weight:600;color:var(--ink);
  border-bottom:1px solid var(--line-2)}
.mobile-menu a:last-child{border-bottom:none;color:var(--accent)}
@media(max-width:860px){.nav-links{display:none}.menu-btn{display:grid}}
@media(max-width:600px){.nav-cta{display:none}}

/* ------------------------------------------------------------------ hero --- */
.hero-wrap{padding:60px 0 0;position:relative}
/* graph-paper grid + soft accent glow behind the hero, fading out downward */
.hero-wrap::before{content:"";position:absolute;top:0;left:0;right:0;height:660px;
  pointer-events:none;z-index:-1;
  background:
    radial-gradient(720px 340px at 55% 0%,var(--accent-soft),transparent 72%),
    linear-gradient(var(--grid) 1px,transparent 1px),
    linear-gradient(90deg,var(--grid) 1px,transparent 1px);
  background-size:auto,72px 72px,72px 72px;
  -webkit-mask-image:linear-gradient(#000 45%,transparent);
  mask-image:linear-gradient(#000 45%,transparent)}
.hero{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center}
@media(max-width:920px){.hero{grid-template-columns:1fr;gap:52px}}
.pill{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;font-weight:700;
  color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-line);
  border-radius:999px;padding:5px 12px;margin-bottom:22px}
.pill::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
.nb{display:inline-block}
.accent{color:var(--accent)}
.lede{margin-top:24px;font-size:clamp(17px,1.9vw,19.5px);color:var(--ink-dim);max-width:46ch}
.hero-cta{margin-top:30px;display:flex;gap:12px;flex-wrap:wrap}
.micro{margin-top:14px;font-size:13.5px;color:var(--ink-faint)}
/* trust checks under the hero CTA */
.hero-checks{display:flex;gap:20px;flex-wrap:wrap;margin-top:18px}
.hero-checks span{position:relative;padding-left:25px;font-size:13.5px;color:var(--ink-dim)}
.hero-checks span::before{content:"";position:absolute;left:0;top:50%;translate:0 -50%;
  width:17px;height:17px;border-radius:50%;background:var(--accent-soft);border:1px solid var(--accent-line)}
.hero-checks span::after{content:"";position:absolute;left:0;top:50%;translate:0 -50%;
  width:19px;height:19px;background:var(--accent);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round' d='m6.5 12.5 4 4 7-9'/%3E%3C/svg%3E") center/11px no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round' d='m6.5 12.5 4 4 7-9'/%3E%3C/svg%3E") center/11px no-repeat}

/* app-style mock card, shared by the hero demo and showcase panels */
.app-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  padding:18px;box-shadow:var(--shadow)}
.hero-demo{display:flex;justify-content:center}
.hero-demo .app-card{width:100%;max-width:420px}
.demo-search{display:flex;align-items:center;gap:10px;background:var(--surface-2);
  border:1px solid var(--line-2);border-radius:var(--r-sm);padding:13px 14px;
  font-family:var(--display);font-weight:700;font-size:15.5px}
.demo-search svg{color:var(--accent);flex:none}
.demo-meta{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink-dim);margin:16px 4px 2px}

/* listing rows with card art */
.inv-row{display:flex;align-items:center;gap:12px;padding:12px 4px;border-bottom:1px solid var(--line-2)}
.inv-row:last-child{border-bottom:none;padding-bottom:2px}
.inv-row .thumb{width:40px;height:56px;border-radius:6px;flex:none;object-fit:cover;
  background:var(--surface-2);border:1px solid var(--line-2)}
.inv-row .meta{min-width:0}
.inv-row .nm{font-weight:700;font-size:14.5px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.inv-row .st{font-size:12px;color:var(--ink-dim);margin-top:2px}
.inv-row .pr{margin-left:auto;text-align:right;flex:none}
.inv-row .pv{font-family:var(--display);font-weight:800;font-size:15.5px}
.inv-row .gr{font-size:11px;color:var(--ink-dim)}
.grade-badge{font-size:10px;font-weight:800;color:var(--psa-ink);background:var(--psa-bg);
  border:1px solid var(--psa-line);border-radius:6px;padding:2px 6px}

/* ----------------------------------------------------------- how it works --- */
.steps-band{border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  margin-top:56px;padding:40px 0;
  background:color-mix(in srgb,var(--accent-soft) 55%,var(--bg))}
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:32px}
@media(max-width:760px){.steps{grid-template-columns:1fr;gap:28px}}
.step .num{font-family:var(--display);font-weight:800;font-size:clamp(36px,3.4vw,46px);
  line-height:1;letter-spacing:-.02em;color:var(--accent);margin-bottom:14px}
.step h3{font-family:var(--display);font-weight:700;font-size:18px;letter-spacing:-.01em}
.step p{font-size:15px;color:var(--ink-dim);margin-top:6px;max-width:34ch}

/* ------------------------------------------------------------ two sides --- */
.duo{display:grid;grid-template-columns:1fr 1fr;gap:20px}
@media(max-width:760px){.duo{grid-template-columns:1fr}}
.side{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:32px;
  box-shadow:var(--shadow-sm);
  transition:translate .35s var(--ease),border-color .25s,box-shadow .35s var(--ease)}
.side:hover{translate:0 -4px;border-color:var(--accent-line);box-shadow:var(--shadow)}
.side .role{font-size:11.5px;font-weight:800;letter-spacing:.13em;text-transform:uppercase;color:var(--accent)}
.side h3{font-family:var(--display);font-weight:700;font-size:23px;margin:12px 0 10px;letter-spacing:-.02em}
.side p{color:var(--ink-dim);font-size:15px}

/* check list — icon drawn via CSS mask so the markup stays plain */
.checks{list-style:none;margin-top:20px;display:flex;flex-direction:column;gap:11px}
.checks li{position:relative;padding-left:31px;font-size:14.5px}
.checks li::before{content:"";position:absolute;left:0;top:1px;width:19px;height:19px;
  border-radius:6px;background:var(--accent-soft);border:1px solid var(--accent-line)}
.checks li::after{content:"";position:absolute;left:0;top:1px;width:21px;height:21px;
  background:var(--accent);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round' d='m6.5 12.5 4 4 7-9'/%3E%3C/svg%3E") center/13px no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round' d='m6.5 12.5 4 4 7-9'/%3E%3C/svg%3E") center/13px no-repeat}

/* -------------------------------------------------------------- features --- */
.features{display:grid;grid-template-columns:repeat(6,1fr);gap:16px}
.feat{grid-column:span 2;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r);padding:26px;box-shadow:var(--shadow-sm);
  transition:translate .35s var(--ease),border-color .25s,box-shadow .35s var(--ease)}
.feat.wide{grid-column:span 3}
.feat:hover{translate:0 -4px;border-color:var(--accent-line);box-shadow:var(--shadow)}
@media(max-width:900px){.feat,.feat.wide{grid-column:span 3}}
@media(max-width:640px){.features{grid-template-columns:1fr}.feat,.feat.wide{grid-column:span 1}}
.feat .tab-ico{width:38px;height:38px;border-radius:10px;background:var(--accent-soft);
  border:1px solid var(--accent-line);display:grid;place-items:center;color:var(--accent);margin-bottom:16px}
.feat .tab-ico svg{width:19px;height:19px}
.feat h3{font-family:var(--display);font-weight:700;font-size:18px;letter-spacing:-.01em;margin-bottom:7px}
.feat p{color:var(--ink-dim);font-size:14.5px}

/* -------------------------------------------------------------- showcase --- */
.show{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center}
.show+.show{margin-top:32px}
@media(max-width:860px){.show{grid-template-columns:1fr;gap:36px}.show .copy-first{order:-1}}
.show .feature-h{font-family:var(--display);font-weight:700;font-size:25px;letter-spacing:-.02em;margin-bottom:12px}
.show .copy>p{color:var(--ink-dim);font-size:15.5px;max-width:46ch}
.show .copy .app-card{margin-top:24px}

.ui-h{font-family:var(--display);font-weight:800;font-size:19px;letter-spacing:-.02em}
.ui-sub{font-size:12.5px;color:var(--ink-dim);margin:3px 0 14px}
.ui-eyebrow{font-size:11px;font-weight:800;letter-spacing:.11em;color:var(--ink-dim);
  margin:16px 2px 10px;text-transform:uppercase;display:flex;justify-content:space-between}
.big-btn{background:var(--action);color:var(--on-action);font-weight:700;text-align:center;
  border-radius:var(--r-sm);padding:13px;font-size:14px;display:flex;align-items:center;
  justify-content:center;gap:8px}
.big-btn svg{stroke:var(--on-action)}
.list-table{display:flex;align-items:center;gap:12px;background:var(--surface-2);
  border:1px solid var(--line-2);border-radius:var(--r-sm);padding:11px 12px;margin-bottom:8px}
.list-table:last-child{margin-bottom:0}
.list-table .tt{font-weight:700;font-size:14px}
.list-table .ts{font-size:11.5px;color:var(--ink-dim)}
.list-table .arr{margin-left:auto;color:var(--ink-faint);font-size:17px}
.av-mono{width:36px;height:36px;border-radius:10px;flex:none;display:grid;place-items:center;
  font-family:var(--display);font-weight:800;font-size:14px;color:#fff}

/* scan mock */
.scan-cta{border:1.5px solid var(--accent-line);background:var(--accent-soft);
  border-radius:var(--r-sm);padding:18px;display:flex;flex-direction:column;align-items:center;
  gap:10px;text-align:center}
.scan-cta .shutter{width:56px;height:56px;border-radius:50%;background:var(--action);
  display:grid;place-items:center}
.scan-cta .shutter svg{width:25px;height:25px;color:var(--on-action)}
.scan-cta .t1{font-family:var(--display);font-weight:700;font-size:16px}
.scan-search{display:flex;align-items:center;gap:9px;background:var(--surface-2);
  border:1px solid var(--line-2);border-radius:var(--r-sm);padding:11px 13px;margin-top:12px;
  font-size:12.5px;color:var(--ink-faint)}
.scan-search .ch{margin-left:auto}
.scan-recent{margin-top:14px}
.scan-recent .rl{font-size:10.5px;font-weight:800;letter-spacing:.11em;color:var(--ink-dim);
  text-transform:uppercase;margin-bottom:6px}

/* collection value strip */
.pf-strip{display:flex;align-items:center;gap:16px;padding:16px 18px}
.pf-strip .pf-v{font-family:var(--display);font-weight:800;font-size:23px;letter-spacing:-.02em}
.pf-strip .pf-l{font-size:11px;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-dim)}
.pf-strip .pf-up{font-size:13px;font-weight:700;color:var(--accent)}
.spark{margin-left:auto;width:110px;height:42px;flex:none}
.spark path.fill{fill:var(--accent-soft)}
.spark path.line{fill:none;stroke:var(--accent);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}

/* --------------------------------------------------------------- pricing --- */
.price-band{display:grid;grid-template-columns:1fr 1fr;gap:20px}
@media(max-width:760px){.price-band{grid-template-columns:1fr}}
.plan{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:32px;
  box-shadow:var(--shadow-sm);
  transition:translate .35s var(--ease),border-color .25s,box-shadow .35s var(--ease)}
.plan:hover{translate:0 -4px;box-shadow:var(--shadow)}
.plan.pro{border-color:var(--accent-line);box-shadow:0 0 0 1px var(--accent-line)}
.plan.pro:hover{box-shadow:0 0 0 1px var(--accent-line),var(--shadow)}
.plan .pname{font-size:12px;font-weight:800;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-dim)}
.plan.pro .pname{color:var(--accent)}
.plan .amt{font-family:var(--display);font-weight:800;font-size:42px;letter-spacing:-.03em;margin:10px 0 2px}
.plan .amt span{font-size:15px;color:var(--ink-faint);font-weight:500}

/* ------------------------------------------------------------------- faq --- */
.faq{max-width:740px;border-top:1px solid var(--line)}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;
  align-items:center;gap:16px;padding:19px 2px;font-family:var(--display);font-weight:700;
  font-size:16px;letter-spacing:-.01em}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-weight:600;font-size:21px;color:var(--accent);
  transition:transform .25s var(--ease);flex:none}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq details p{padding:0 2px 20px;color:var(--ink-dim);font-size:14.5px;max-width:62ch}
.faq a{color:var(--accent);text-decoration:underline;text-underline-offset:2px}
.faq-more{margin-top:26px;font-size:14.5px;color:var(--ink-dim)}
.faq-more a{color:var(--accent);font-weight:600;text-decoration:underline;text-underline-offset:2px}

/* ------------------------------------------------------------------- cta --- */
.cta{text-align:center;border-radius:20px;padding:68px 28px;color:var(--cta-ink);
  border:1px solid var(--cta-line);
  background:radial-gradient(rgba(255,255,255,.06) 1px,transparent 1.4px) 0 0/22px 22px,var(--cta-bg)}
.cta .pill{color:var(--cta-ink);background:rgba(255,255,255,.08);
  border-color:rgba(255,255,255,.18);margin-bottom:20px}
.cta p{margin-top:12px;color:var(--cta-dim);font-size:15.5px}
.cta-btns{margin-top:28px;display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.cta .btn{background:var(--cta-btn-bg);color:var(--cta-btn-ink)}
.cta .btn:hover{opacity:.9}
.cta .btn-line{background:transparent;color:var(--cta-ink);border:1px solid rgba(255,255,255,.28)}
.cta .btn-line:hover{opacity:1;border-color:rgba(255,255,255,.5)}

/* ---------------------------------------------------------------- footer --- */
footer{border-top:1px solid var(--line);padding:52px 0 64px}
.foot{display:flex;justify-content:space-between;flex-wrap:wrap;gap:36px}
.foot-brand{max-width:250px}
.foot-brand .brand{font-size:18px;margin-bottom:10px}
.foot-brand p{color:var(--ink-faint);font-size:13.5px}
.foot-col h4{font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;
  color:var(--ink-faint);margin-bottom:13px}
.foot-col a{display:block;color:var(--ink-dim);font-size:14px;margin-bottom:8px;transition:color .2s}
.foot-col a:hover{color:var(--accent)}
.foot-note{margin-top:38px;font-size:12.5px;color:var(--ink-faint);
  border-top:1px solid var(--line-2);padding-top:22px}
.foot-note.bare{margin-top:0;border-top:none;padding-top:0}

/* ------------------------------------------------------------ legal pages --- */
.legal{max-width:760px;margin:0 auto;padding:60px 0 40px}
.legal h1{font-size:clamp(32px,4.6vw,46px);margin-bottom:8px}
.legal .updated{color:var(--ink-faint);font-size:13.5px;margin-bottom:34px}
.legal h2{font-size:21px;margin:32px 0 10px}
.legal h3{font-family:var(--display);font-size:16.5px;margin:20px 0 8px}
.legal p,.legal li{color:var(--ink-dim);font-size:15.5px;margin-bottom:12px;line-height:1.65}
.legal ul{padding-left:22px;margin-bottom:12px}
.legal a{color:var(--accent);text-decoration:underline;text-underline-offset:2px}
.legal .back{display:inline-flex;align-items:center;gap:7px;color:var(--ink-dim);
  font-weight:600;font-size:14px;margin-bottom:28px;text-decoration:none}
.legal .back:hover{color:var(--accent)}

/* ------------------------------------------------------------------- 404 --- */
.nf{min-height:70vh;display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;gap:16px;padding:40px 24px}
.nf .code{font-family:var(--display);font-weight:800;font-size:clamp(72px,16vw,140px);
  letter-spacing:-.04em;line-height:.9;color:var(--accent)}
.nf h1{font-size:clamp(24px,3.6vw,34px)}
.nf p{color:var(--ink-dim);max-width:40ch}

/* ---------------------------------------------------------------- motion --- */
/* Reveal cascade: --d is a per-element stagger index (set by main.js inside any
   [data-stagger] container). translate/border/shadow ride the same transition
   list so card hover-lifts stay snappy on revealed elements. */
.js .reveal{opacity:0;transform:translateY(18px);
  transition:opacity .7s var(--ease) calc(var(--d,0)*85ms),
    transform .7s var(--ease) calc(var(--d,0)*85ms),
    translate .35s var(--ease),border-color .25s,box-shadow .35s var(--ease)}
.js .reveal.in{opacity:1;transform:none}
/* sparkline draws itself once its panel reveals */
.js .reveal .spark path.line{stroke-dasharray:200;stroke-dashoffset:200}
.js .reveal.in .spark path.line{stroke-dashoffset:0;
  transition:stroke-dashoffset 1.1s var(--ease) .3s}
.js .reveal .spark path.fill{opacity:0}
.js .reveal.in .spark path.fill{opacity:1;transition:opacity .8s var(--ease) .9s}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .js .reveal{opacity:1;transform:none;transition:none}
  .js .reveal .spark path.line{stroke-dashoffset:0;transition:none}
  .js .reveal .spark path.fill{opacity:1;transition:none}
}
