/* ============================================================
   Echo - shared design system
   Brand: Eucalyptus sage (#5F9A88), 3-bar equalizer mark.
   Light-mint led, full dark mode. Display: Clash Display. Body: Inter.
   Used by sub-pages (privacy, terms, download, blog). The landing
   page (index.html) reuses these tokens plus its own inline section CSS.
   ============================================================ */

/* ---------- Tokens ---------- */
:root{
  /* Brand accent (Eucalyptus) */
  --sage:#5F9A88;
  --sage-deep:#3E6F60;
  --sage-soft:rgba(95,154,136,.10);
  --sage-glow:#8FE6BE;
  --sage-bright:#73B79E;        /* livelier sage for light-mode pops */

  /* Warm complementary accent (apricot) - used sparingly to bring light mode alive */
  --accent-2:#E0A15A;
  --accent-2-soft:rgba(224,161,90,.14);
  --accent-2-ink:#B97A2E;

  /* Travelling-ring highlight (Atlas mechanic, in Echo sage) */
  --ring-base:rgba(95,154,136,.22);
  --ring-arc:rgba(95,154,136,.95);

  /* Hero atmosphere (overridden per theme) */
  --hero-wash:
    radial-gradient(820px 540px at 82% -8%, rgba(95,154,136,.20), transparent 60%),
    radial-gradient(560px 420px at 6% 4%, rgba(224,161,90,.12), transparent 58%),
    radial-gradient(900px 700px at 50% 120%, rgba(115,183,158,.10), transparent 60%);

  /* Light (mint paper) */
  --paper:#F1F6F2;
  --paper-2:#E9F1EC;
  --card:#FFFFFF;
  --ink1:#15201B;   /* headings, primary text */
  --ink2:#4F6258;   /* body */
  --ink3:#849990;   /* captions */
  --ink4:#B7C7BF;   /* faint */
  --hairline:rgba(20,32,27,.10);
  --hairline-soft:rgba(20,32,27,.05);
  --accent:var(--sage);
  --accent-deep:var(--sage-deep);
  --accent-ink:#2E5A4C;        /* readable link colour on light */
  --shadow-soft:0 18px 44px rgba(20,40,32,.10);
  --shadow-tight:0 4px 14px rgba(20,40,32,.07);
  --glass:rgba(255,255,255,.72);
  --glass-line:rgba(20,32,27,.08);

  /* Scale */
  --max:1080px;
  --radius:20px;
  --radius-lg:26px;
  --radius-pill:999px;
  --ease-out:cubic-bezier(.16,1,.3,1);
  --ease-out-expo:cubic-bezier(.19,1,.22,1);
  --ease-spring:cubic-bezier(.34,1.56,.64,1);

  /* Type */
  --font-display:"Clash Display",-apple-system,"Helvetica Neue",Arial,sans-serif;
  --font-body:"Inter",-apple-system,"Helvetica Neue",Arial,sans-serif;
  --font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;

  color-scheme:light;
}

/* ---------- Dark mode (Obsidian Aurora) ---------- */
:root[data-theme="dark"]{
  --paper:#0C0D10;
  --paper-2:#101216;
  --card:#15171C;
  --ink1:#ECF1EE;
  --ink2:#B7C2BC;
  --ink3:#84938C;
  --ink4:#586259;
  --hairline:rgba(255,255,255,.10);
  --hairline-soft:rgba(255,255,255,.05);
  --accent:#79C6AC;
  --accent-deep:#5FB096;
  --accent-ink:#A9ECD4;
  --accent-2:#F0BE7A;
  --accent-2-soft:rgba(240,190,122,.16);
  --accent-2-ink:#F3C98C;
  --ring-base:rgba(143,230,190,.16);
  --ring-arc:rgba(143,230,190,.95);
  --shadow-soft:0 24px 60px rgba(0,0,0,.55);
  --shadow-tight:0 6px 18px rgba(0,0,0,.45);
  --glass:rgba(20,23,28,.66);
  --glass-line:rgba(255,255,255,.09);
  --hero-wash:
    radial-gradient(880px 580px at 82% -10%, rgba(121,198,172,.22), transparent 58%),
    radial-gradient(620px 460px at 4% 2%, rgba(240,190,122,.10), transparent 56%),
    radial-gradient(1000px 760px at 50% 128%, rgba(121,198,172,.12), transparent 60%);
  color-scheme:dark;
}

/* Honour OS preference when no explicit theme is set */
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:#0C0D10; --paper-2:#101216; --card:#15171C;
    --ink1:#ECF1EE; --ink2:#B7C2BC; --ink3:#84938C; --ink4:#586259;
    --hairline:rgba(255,255,255,.10); --hairline-soft:rgba(255,255,255,.05);
    --accent:#79C6AC; --accent-deep:#5FB096; --accent-ink:#A9ECD4;
    --accent-2:#F0BE7A; --accent-2-soft:rgba(240,190,122,.16); --accent-2-ink:#F3C98C;
    --ring-base:rgba(143,230,190,.16); --ring-arc:rgba(143,230,190,.95);
    --shadow-soft:0 24px 60px rgba(0,0,0,.55); --shadow-tight:0 6px 18px rgba(0,0,0,.45);
    --glass:rgba(20,23,28,.66); --glass-line:rgba(255,255,255,.09);
    --hero-wash:
      radial-gradient(880px 580px at 82% -10%, rgba(121,198,172,.22), transparent 58%),
      radial-gradient(620px 460px at 4% 2%, rgba(240,190,122,.10), transparent 56%),
      radial-gradient(1000px 760px at 50% 128%, rgba(121,198,172,.12), transparent 60%);
    color-scheme:dark;
  }
}

/* ---------- Reset / base ---------- */
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  overflow-x:hidden;
  background:var(--paper);
  color:var(--ink1);
  font-family:var(--font-body);
  font-size:17px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  font-feature-settings:"cv05" 1,"ss01" 1;
}
/* One continuous page wash: two fixed layers (warm hero-look + deeper green) that
   cross-fade with scroll progress (--sc, set in JS) so the colour and intensity
   subtly shift as you move down. Sections sit transparent on top, so there are no seams. */
body::before,body::after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  transition:opacity .4s linear;will-change:transform,opacity;
  /* faint film grain layered over the soft gradients to break up 8-bit colour banding (the "rings"/seam you'd otherwise see in large low-contrast washes) */
  --grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.055'/%3E%3C/svg%3E")}
/* Top-weighted aurora (the hero look): warm apricot + sage + a cool teal hint. Never fully fades, so its character carries down the page. */
body::before{
  background:
    var(--grain),
    radial-gradient(760px 580px at 5% -2%, rgba(224,161,90,.19), transparent 57%),
    radial-gradient(900px 700px at 95% 6%, rgba(95,154,136,.22), transparent 60%),
    radial-gradient(760px 720px at 54% 42%, rgba(96,178,184,.10), transparent 64%);
  background-size:200px 200px,auto,auto,auto;
  opacity:calc(1 - var(--sc,0) * .42)}
/* Lower aurora: the SAME multi-hue palette (sage, warm, teal, bright sage) so the page keeps its colour the whole way down instead of going flat green. Grows as you scroll. */
body::after{
  background:
    var(--grain),
    radial-gradient(980px 820px at 14% 99%, rgba(95,154,136,.21), transparent 64%),
    radial-gradient(840px 720px at 92% 58%, rgba(224,161,90,.12), transparent 62%),
    radial-gradient(820px 780px at 42% 22%, rgba(96,178,184,.11), transparent 66%),
    radial-gradient(720px 640px at 82% 100%, rgba(115,183,158,.12), transparent 64%);
  background-size:200px 200px,auto,auto,auto,auto;
  opacity:calc(.30 + var(--sc,0) * .64)}
/* Slow, barely-there drift so the wash feels alive and seamless rather than a static backdrop. */
@media (prefers-reduced-motion:no-preference){
  body::before{animation:auroraDriftA 40s ease-in-out infinite alternate}
  body::after{animation:auroraDriftB 52s ease-in-out infinite alternate}
}
@keyframes auroraDriftA{to{transform:translate3d(-2.5%,2%,0) scale(1.06)}}
@keyframes auroraDriftB{to{transform:translate3d(2.5%,-2%,0) scale(1.07)}}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]) body::before{background:
    radial-gradient(760px 580px at 5% -2%, rgba(224,161,90,.07), transparent 57%),
    radial-gradient(900px 700px at 95% 6%, rgba(95,154,136,.16), transparent 60%),
    radial-gradient(760px 720px at 54% 42%, rgba(96,178,184,.06), transparent 64%)}
  :root:not([data-theme="light"]) body::after{background:
    radial-gradient(980px 820px at 14% 99%, rgba(95,154,136,.15), transparent 64%),
    radial-gradient(840px 720px at 92% 58%, rgba(224,161,90,.05), transparent 62%),
    radial-gradient(820px 780px at 42% 22%, rgba(96,178,184,.07), transparent 66%),
    radial-gradient(720px 640px at 82% 100%, rgba(115,183,158,.08), transparent 64%)}
}
img{max-width:100%;display:block}
a{color:var(--accent-ink);text-decoration:none}
::selection{background:rgba(95,154,136,.28)}

h1,h2,h3,h4{font-family:var(--font-display);font-weight:600;line-height:1.04;letter-spacing:-.02em;color:var(--ink1)}
.tabular{font-variant-numeric:tabular-nums}

.container{max-width:var(--max);margin:0 auto;padding:0 28px}
.eyebrow{font-family:var(--font-body);font-weight:600;font-size:12.5px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--accent-deep)}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  font-family:var(--font-body);font-weight:600;font-size:15px;line-height:1;
  padding:13px 22px;border-radius:13px;border:1px solid transparent;cursor:pointer;
  transition:transform .15s var(--ease-out),box-shadow .2s var(--ease-out),background .2s,color .2s;
  text-decoration:none;white-space:nowrap;
}
.btn-primary{background:linear-gradient(135deg,var(--sage-bright),var(--accent-deep));color:#FFFFFF;
  box-shadow:0 8px 22px rgba(95,154,136,.32)}
:root[data-theme="dark"] .btn-primary{background:linear-gradient(135deg,#86D2B8,var(--accent));color:#08130E}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .btn-primary{background:linear-gradient(135deg,#86D2B8,var(--accent));color:#08130E}}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 14px 32px rgba(95,154,136,.42)}
.btn-primary:active{transform:scale(.97)}
.btn-ghost{background:transparent;color:var(--accent-deep);border-color:var(--accent)}
.btn-ghost:hover{transform:translateY(-2px);background:var(--sage-soft)}
.btn-ghost:active{transform:scale(.97)}

/* ---- Grouped Download | Buy control (Atlas mechanic, Echo colours) ----
   A pill holding a ghost "Download" and a filled sage "Buy", split by a
   hairline, with a soft sage highlight travelling around the perimeter. */
@property --bg-ang{syntax:'<angle>';initial-value:0deg;inherits:false}
.buy-group{position:relative;display:inline-flex;align-items:center;gap:2px;padding:6px;
  background:var(--card);border-radius:999px;border:1px solid var(--hairline-soft);
  box-shadow:0 12px 30px rgba(20,45,35,.22)}
.buy-group::before,.travel-ring::before{content:'';position:absolute;inset:-1.5px;border-radius:inherit;padding:1.5px;
  background:conic-gradient(from var(--bg-ang),
    var(--ring-base) 0deg, var(--ring-base) 232deg, var(--ring-arc) 286deg, var(--ring-base) 332deg, var(--ring-base) 360deg);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude;
  filter:drop-shadow(0 0 3px var(--ring-arc));pointer-events:none;z-index:4;animation:bgRing 4.5s linear infinite}
@keyframes bgRing{to{--bg-ang:360deg}}
@media (prefers-reduced-motion:reduce){.buy-group::before,.travel-ring::before{animation:none}}
.bg-btn{position:relative;z-index:1;border:none;cursor:pointer;border-radius:999px;font-family:var(--font-body);
  font-weight:600;font-size:15.5px;white-space:nowrap;text-decoration:none;display:inline-flex;align-items:center;gap:7px;
  padding:11px 21px;transition:background .15s,transform .15s,box-shadow .15s}
.bg-download{color:var(--ink1);background:transparent}
.bg-download:hover{background:var(--sage-soft)}
.bg-divider{width:1px;align-self:stretch;margin:6px 2px;background:var(--hairline)}
.bg-buy{color:#fff;background:linear-gradient(180deg,var(--sage-bright),var(--accent-deep));
  box-shadow:0 3px 10px rgba(95,154,136,.4),inset 0 1px 0 rgba(255,255,255,.28)}
.bg-buy:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(95,154,136,.5),inset 0 1px 0 rgba(255,255,255,.28)}
.bg-btn .px{font-variant-numeric:tabular-nums}

/* Standalone travelling-ring host (e.g. solo pricing button) */
.travel-ring{position:relative}

/* Header mini CTA */
.cta-mini{position:relative;border:none;cursor:pointer;border-radius:999px;font-family:var(--font-body);
  font-weight:600;font-size:14px;color:#fff;text-decoration:none;display:inline-flex;align-items:center;gap:6px;
  background:linear-gradient(180deg,var(--sage-bright),var(--accent-deep));padding:9px 16px;
  box-shadow:0 3px 10px rgba(95,154,136,.35);transition:transform .15s,box-shadow .15s}
.cta-mini:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(95,154,136,.45)}
.cta-mini .px{font-variant-numeric:tabular-nums}

/* ---------- Equalizer logomark ---------- */
.echo-mark{display:inline-flex;align-items:flex-end;gap:3px;height:1em;vertical-align:-.12em}
.echo-mark i{width:.18em;border-radius:99px;background:var(--accent);display:block}
.echo-mark i:nth-child(1){height:.56em}
.echo-mark i:nth-child(2){height:1em}
.echo-mark i:nth-child(3){height:.46em}
@media (prefers-reduced-motion: no-preference){
  .echo-mark.live i{animation:eqBreathe 1.5s var(--ease-out) infinite}
  .echo-mark.live i:nth-child(2){animation-delay:.2s}
  .echo-mark.live i:nth-child(3){animation-delay:.4s}
}
@keyframes eqBreathe{0%,100%{transform:scaleY(1)}50%{transform:scaleY(.62)}}
/* the footer brand's bars dance when you hover it */
@media (prefers-reduced-motion: no-preference){
  .site-footer .brand:hover .echo-mark.live i{animation-duration:.5s}
}

.brand{display:inline-flex;align-items:center;gap:9px;font-family:var(--font-display);
  font-weight:600;font-size:19px;letter-spacing:-.01em;color:var(--ink1)}
.brand .echo-mark{font-size:21px}

/* ---------- Floating glass-pill nav ---------- */
.site-header{position:fixed;top:16px;left:0;right:0;z-index:80;display:flex;justify-content:center;
  pointer-events:none;padding:0 16px}
.nav-pill{pointer-events:auto;display:flex;align-items:center;gap:8px;
  background:var(--glass);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);
  border:1px solid var(--glass-line);border-radius:var(--radius-pill);
  padding:9px 9px 9px 18px;box-shadow:var(--shadow-tight);max-width:min(940px,calc(100vw - 32px))}
.nav-pill .brand{font-size:17px;margin-right:6px}
.nav-pill .brand .echo-mark{font-size:18px}
.nav-links{display:flex;align-items:center;gap:4px}
.nav-links a{font-family:var(--font-body);font-weight:500;font-size:14.5px;color:var(--ink2);
  padding:8px 13px;border-radius:var(--radius-pill);transition:color .18s,background .18s}
.nav-links a:hover{color:var(--ink1);background:var(--sage-soft)}
.nav-cta{margin-left:4px}
.theme-toggle{pointer-events:auto;width:38px;height:38px;border-radius:50%;border:1px solid var(--glass-line);
  background:var(--card);color:var(--ink2);display:grid;place-items:center;cursor:pointer;
  transition:color .18s,transform .18s}
.theme-toggle:hover{color:var(--ink1);transform:rotate(15deg)}
/* Mobile nav: Email Link + Buy as one white buy-group pill (matches Atlas). Hidden on desktop. */
.nav-buy{display:none;padding:5px}
.nav-buy .bg-btn{padding:9px 14px;font-size:13.5px}
.nav-buy .bg-divider{margin:5px 1px}
@media (max-width:720px){.nav-links{display:none}.nav-cta{display:none}.nav-buy{display:inline-flex}}
@media (max-width:460px){.nav-pill{padding:6px 6px 6px 13px;gap:6px}.nav-buy .bg-btn{padding:8px 12px;font-size:13px}}

/* ---------- Footer ---------- */
.site-footer{background:transparent;margin-top:0}
.footer-inner{max-width:var(--max);margin:0 auto;padding:72px 28px 40px}
.footer-cta{text-align:center;margin-bottom:56px}
.footer-cta h2{font-size:clamp(30px,4.4vw,46px);margin-bottom:24px}
.footer-cta-actions{display:flex;justify-content:center}
.footer-main{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:36px;padding-top:44px}
.footer-brandcol .brand{margin-bottom:14px}
.footer-brandcol p{color:var(--ink2);font-size:14.5px;max-width:30ch}
.footer-tag{color:var(--ink3);font-size:13px;margin-top:12px}
.footer-col h4{font-family:var(--font-body);font-weight:700;font-size:12px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--ink3);margin-bottom:14px}
.footer-col a{display:block;color:var(--ink2);font-size:14.5px;padding:6px 0;transition:color .15s}
.footer-col a:hover{color:var(--accent-deep)}
.footer-bottom{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;
  margin-top:44px;padding-top:24px;color:var(--ink3);font-size:13px}
@media (max-width:760px){.footer-main{grid-template-columns:repeat(3,1fr);gap:20px 16px}
  /* brand sits full-width on top; Product / Company / Legal share one 3-up row below */
  .footer-brandcol{grid-column:1 / -1;margin-bottom:8px}}
/* Mobile: larger footer link tap targets (~40px), bottom row wraps centred */
@media (max-width:620px){.footer-col a{padding:9px 0}
  .footer-bottom{justify-content:center;text-align:center}}

/* ---------- Keycap ---------- */
.kbd{display:inline-flex;align-items:center;gap:2px;font-family:var(--font-mono);font-size:12px;
  font-weight:500;color:var(--ink2);background:var(--card);border:1px solid var(--hairline);
  border-bottom-width:2px;border-radius:7px;padding:3px 7px;line-height:1;box-shadow:0 1px 0 var(--hairline-soft)}

/* ---------- Reveal-on-scroll (enhances an already-visible default) ----------
   Content is visible without JS; only when html.js is set do we hide-then-reveal,
   so headless renderers and no-JS clients never ship blank sections. */
.reveal{transition:opacity .8s var(--ease-out-expo),transform .8s var(--ease-out-expo)}
.js .reveal{opacity:0;transform:translateY(24px)}
.js .reveal.in{opacity:1;transform:none}
.js .reveal[style*="--i"]{transition-delay:calc(var(--i) * 70ms)}
@media (prefers-reduced-motion: reduce){.js .reveal{opacity:1;transform:none;transition:none}}

/* ---------- Delight primitives ---------- */
.nav-pill{transition:box-shadow .35s var(--ease-out),background .35s}
.site-header.scrolled .nav-pill{box-shadow:0 14px 36px rgba(20,40,32,.18)}
.site-header{transition:transform .45s var(--ease-out-expo)}
.site-header.nav-hid{transform:translateY(calc(-100% - 20px))}
@media (prefers-reduced-motion:reduce){.site-header{transition:none}}
@keyframes echoPing{0%{transform:translate(-50%,-50%) scale(.5);opacity:.55}100%{transform:translate(-50%,-50%) scale(2.1);opacity:0}}

/* ============ Legal + download pages ============ */
.page-hero{position:relative;text-align:center;max-width:780px;margin:0 auto;padding:148px 28px 52px}
.page-hero::before{content:"";position:absolute;inset:0;z-index:-1;
  background:radial-gradient(760px 380px at 50% -40px, var(--sage-soft), transparent 62%)}
.page-hero .eyebrow{display:inline-block;margin-bottom:14px}
.page-hero h1{font-size:clamp(34px,5vw,54px);font-weight:600;letter-spacing:-.025em;margin-bottom:12px}
.page-hero h1 em{font-style:normal;color:var(--accent-deep)}
.page-hero .updated{font-size:13px;color:var(--ink3);margin-bottom:18px}
.page-hero .lede{font-size:clamp(16px,1.7vw,18px);color:var(--ink2);max-width:56ch;margin:0 auto;line-height:1.6}

.legal{max-width:760px;margin:0 auto;padding:0 28px 96px}
.legal h2{font-family:var(--font-display);font-weight:600;font-size:24px;letter-spacing:-.01em;color:var(--ink1);margin:42px 0 12px}
.legal h3{font-weight:700;font-size:16px;color:var(--ink1);margin:24px 0 6px}
.legal p,.legal li{font-size:15.5px;line-height:1.72;color:var(--ink2)}
.legal ul,.legal ol{padding-left:20px;margin:10px 0}
.legal li{margin:6px 0}
.legal strong{color:var(--ink1);font-weight:600}
.legal code{font-family:var(--font-mono);font-size:13px;background:var(--sage-soft);border:1px solid var(--hairline);border-radius:6px;padding:1px 6px;color:var(--accent-deep)}
.legal a{color:var(--accent-ink);text-decoration:underline;text-underline-offset:2px}
.legal .em{font-style:italic;color:var(--accent-deep)}
hr.rule{border:0;height:1px;background:var(--hairline);margin:42px 0}
.controller{margin:0 0 18px;padding:20px 22px;border-radius:16px;background:var(--card);border:1px solid var(--hairline);box-shadow:var(--shadow-tight)}
.controller p{margin:2px 0;font-size:14.5px;line-height:1.58;color:var(--ink2)}
.controller .name{font-weight:700;color:var(--ink1);font-size:16px;margin-bottom:4px}
.checks{list-style:none;padding:0;margin:12px 0}
.checks li{display:flex;gap:11px;align-items:flex-start;margin:11px 0;font-size:15.5px;color:var(--ink2)}
.checks li b{color:var(--ink1)}
.checks .tick{flex:none;width:22px;height:22px;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;font-size:12px;margin-top:1px}
.callout{margin:22px 0;padding:18px 20px;border-radius:16px;border:1px solid var(--hairline)}
.callout p{margin:0 0 8px;font-size:14.5px}.callout p:last-child{margin-bottom:0}
.callout.tickwrap{background:var(--sage-soft);border-color:color-mix(in srgb,var(--accent) 32%,transparent)}
.tickbox{font-weight:600;color:var(--ink1);background:var(--card);border:1px dashed var(--hairline);border-radius:10px;padding:12px 14px;display:flex;gap:11px;align-items:flex-start;font-size:14.5px;line-height:1.5}
.tickbox .box{flex:none;width:18px;height:18px;border:2px solid var(--accent);border-radius:5px;margin-top:1px}
.cards{display:grid;grid-template-columns:1fr;gap:12px;margin:14px 0}
.cards .card{padding:16px 18px;border-radius:14px;background:var(--card);border:1px solid var(--hairline)}
.cards .card .t{font-weight:700;color:var(--ink1);font-size:15px;margin:0 0 4px}
.cards .card p{font-size:14px;margin:0 0 8px;color:var(--ink2)}
.cards .basis{font-size:12.5px;color:var(--accent-deep);font-weight:500}
.rights{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:14px 0}
.rights .right{padding:14px 16px;border-radius:12px;background:var(--card);border:1px solid var(--hairline)}
.rights .right b{display:block;color:var(--ink1);font-size:14px;margin-bottom:3px}
.rights .right span{font-size:13px;color:var(--ink3)}
@media (max-width:560px){.rights{grid-template-columns:1fr}}

/* download page */
.dl-hero{text-align:center;max-width:700px;margin:0 auto;padding:150px 28px 28px;position:relative}
.dl-hero::before{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(720px 360px at 50% -30px, var(--sage-soft), transparent 60%)}
.dl-badge{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;font-weight:600;letter-spacing:.04em;
  color:var(--accent-deep);background:var(--card);border:1px solid color-mix(in srgb,var(--accent) 30%,transparent);border-radius:99px;padding:6px 14px;margin-bottom:22px}
.dl-hero h1{font-size:clamp(34px,5vw,52px);font-weight:600;letter-spacing:-.025em;margin-bottom:14px}
.dl-sub{font-size:18px;color:var(--ink2);max-width:48ch;margin:0 auto 30px;line-height:1.55}
.dl-download{display:inline-flex;align-items:center;gap:11px;font-family:var(--font-body);font-weight:600;font-size:17px;
  color:#fff;background:linear-gradient(180deg,var(--sage-bright),var(--accent-deep));border-radius:14px;padding:15px 28px;
  text-decoration:none;box-shadow:0 8px 22px rgba(95,154,136,.34);transition:transform .15s,box-shadow .15s}
.dl-download:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(95,154,136,.44)}
.dl-download svg{width:20px;height:20px;fill:#fff}
.dl-meta{font-size:13.5px;color:var(--ink3);margin-top:14px}
.dl-steps{max-width:880px;margin:0 auto;padding:clamp(40px,7vh,80px) 28px 0;display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.dl-step{background:var(--card);border:1px solid var(--hairline);border-radius:18px;padding:24px;box-shadow:0 1px 2px rgba(20,40,32,.04),0 12px 30px rgba(20,40,32,.05)}
.dl-step-n{width:34px;height:34px;border-radius:10px;background:var(--sage-soft);color:var(--accent-deep);font-weight:700;display:grid;place-items:center;font-family:var(--font-mono);font-size:15px;margin-bottom:14px}
.dl-step h3{font-family:var(--font-display);font-weight:600;font-size:17px;margin-bottom:6px}
.dl-step p{font-size:13.5px;color:var(--ink2);line-height:1.5}
.dl-key{max-width:880px;margin:36px auto 0;padding:0 28px}
.dl-key-card{display:flex;flex-wrap:wrap;align-items:center;gap:16px;background:var(--card);border:1px solid var(--hairline);border-radius:18px;padding:22px 24px;box-shadow:var(--shadow-tight)}
.dl-key-ico{width:44px;height:44px;border-radius:12px;background:var(--sage-soft);color:var(--accent-deep);display:grid;place-items:center;flex:none}
.dl-key-body{flex:1;min-width:200px}
.dl-key-h{font-weight:700;color:var(--ink1);font-size:15.5px;margin-bottom:3px}
.dl-key-p{font-size:14px;color:var(--ink2);margin-bottom:6px}
.dl-key-help{font-size:13px;color:var(--ink3)}
.dl-key-code{font-family:var(--font-mono);font-size:13px;color:var(--accent-deep);background:var(--sage-soft);border:1px dashed color-mix(in srgb,var(--accent) 30%,transparent);border-radius:10px;padding:10px 14px}
@media (max-width:680px){.dl-steps{grid-template-columns:1fr}}
