/* ============================================================
   PRISM — shared stylesheet
   Used by every page. Upload alongside the .html files.
   ============================================================ */

:root{
  --bg:#070b14; --bg2:#0b1120; --panel:#0f172a; --panel2:#131c30;
  --line:#1e293b; --line2:#27354d;
  --cyan:#22d3ee; --gold:#fbbf24;--mark-long:#5aa650;--mark-short:#ff510d; --orange:#f97316; --green:#22c55e; --red:#ef4444;
  --bull:#00e5b0; --bear:#ff4d6d;
  --text:#e2e8f0; --muted:#94a3b8; --faint:#64748b;
  --radius:16px;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;line-height:1.6;overflow-x:hidden}
::selection{background:rgba(34,211,238,.3)}
a{color:var(--cyan);text-decoration:none}
img{max-width:100%;display:block}
.wrap{max-width:1120px;margin:0 auto;padding:0 24px}
.wrap-narrow{max-width:860px;margin:0 auto;padding:0 24px}

/* scrollbar */
::-webkit-scrollbar{width:10px}
::-webkit-scrollbar-track{background:var(--bg)}
::-webkit-scrollbar-thumb{background:var(--line2);border-radius:99px}
::-webkit-scrollbar-thumb:hover{background:#334660}

/* ── SCROLL REVEAL ─────────────────────────────────────── */
.reveal{opacity:0;transform:translateY(34px);transition:opacity .85s cubic-bezier(.22,.7,.3,1),transform .85s cubic-bezier(.22,.7,.3,1)}
.reveal.visible{opacity:1;transform:none}
[data-stagger]>*{opacity:0;transform:translateY(26px);transition:opacity .7s cubic-bezier(.22,.7,.3,1),transform .7s cubic-bezier(.22,.7,.3,1)}
.visible[data-stagger]>*{opacity:1;transform:none}
[data-stagger]>*:nth-child(1){transition-delay:.06s}
[data-stagger]>*:nth-child(2){transition-delay:.14s}
[data-stagger]>*:nth-child(3){transition-delay:.22s}
[data-stagger]>*:nth-child(4){transition-delay:.30s}
[data-stagger]>*:nth-child(5){transition-delay:.38s}
[data-stagger]>*:nth-child(6){transition-delay:.46s}
[data-stagger]>*:nth-child(7){transition-delay:.54s}
[data-stagger]>*:nth-child(8){transition-delay:.62s}
@media (prefers-reduced-motion: reduce){
  .reveal,[data-stagger]>*{opacity:1 !important;transform:none !important;transition:none !important}
  html{scroll-behavior:auto}
}

/* ── NAV ───────────────────────────────────────────────── */
nav{position:fixed;top:0;left:0;right:0;z-index:60;background:rgba(7,11,20,.72);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid rgba(30,41,59,.7);transition:background .3s,border-color .3s}
nav.scrolled{background:rgba(7,11,20,.94);border-bottom-color:var(--line)}
.nav-in{display:flex;align-items:center;justify-content:space-between;height:64px}
/* The wordmark is an image now. width/height on the <img> hold the space
   before it decodes, so the nav never reflows; the text styling below is
   the fallback if the image fails and the alt text renders instead. */
.logo{display:flex;align-items:center;gap:10px;font-weight:800;letter-spacing:.12em;font-size:15px;color:var(--text)}
.logo img{height:34px;width:auto;display:block;transition:filter .25s,transform .25s}
a.logo:hover{color:#fff}
a.logo:hover img{filter:brightness(1.14) saturate(1.06)}
.logo .gem{width:14px;height:14px;background:linear-gradient(135deg,var(--bull),var(--cyan));transform:rotate(45deg);box-shadow:0 0 16px rgba(34,211,238,.8);border-radius:2px;flex:0 0 auto}
.nav-links{display:flex;gap:26px;align-items:center;font-size:14px}
.nav-links a{color:var(--muted);position:relative;white-space:nowrap;font-weight:500}
.nav-links a:not(.btn)::after{content:"";position:absolute;left:0;bottom:-5px;width:0;height:2px;background:var(--cyan);transition:.25s;border-radius:2px}
.nav-links a:not(.btn):hover{color:var(--text)}
.nav-links a:not(.btn):hover::after{width:100%}
.nav-links a.active{color:var(--text);font-weight:600}
.nav-links a.active:not(.btn)::after{width:100%}

/* ── Flag emoji font ───────────────────────────────────────
   Windows has no flag glyphs in its system emoji font, so Chrome
   and Edge on Windows show "GB"/"JP" instead of 🇬🇧/🇯🇵. This is a
   flags-only subset (Twemoji, ~78 KB, self-hosted). unicode-range
   limits it to the regional-indicator block, so it is downloaded
   only when a flag is actually rendered and never touches normal
   text. Firefox, macOS, iOS and Android don't need it and mostly
   won't fetch it.
   ──────────────────────────────────────────────────────────── */
/* ── FIRST PAINT ───────────────────────────────────────────
   The homepage holds its first paint until Playfair Display is ready
   and then fades in, so headings are never painted in the fallback
   serif and re-set a moment later. Driven by the inline script in
   index.html's head: nothing here applies unless that script ran, so a
   browser with scripts off is unaffected, and a timeout in the script
   releases the page if the font is slow or missing.
   ─────────────────────────────────────────────────────────── */
html.fonts-loading body{opacity:0}
html.fonts-ready body{opacity:1;transition:opacity .3s ease}
@media(prefers-reduced-motion:reduce){
  html.fonts-ready body{transition:none}
}

@font-face{
  font-family:"Twemoji Country Flags";
  src:url("TwemojiCountryFlags.woff2") format("woff2");
  unicode-range:U+1F1E6-1F1FF;
  font-display:swap;
}

/* ── NAV RIGHT GROUP + LANGUAGE SELECT ─────────────────── */
.nav-right{display:flex;align-items:center;gap:16px}
.lang{display:flex;align-items:center}
.lang-select{
  -webkit-appearance:none;-moz-appearance:none;appearance:none;
  height:36px;padding:0 32px 0 12px;
  border:1px solid var(--line2);border-radius:10px;
  background-color:rgba(15,23,42,.6);
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' fill='none' stroke='%2394a3b8' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/></svg>");
  background-repeat:no-repeat;background-position:right 11px center;background-size:10px 6px;
  color:var(--text);font-size:13.5px;font-weight:600;line-height:34px;
  font-family:"Twemoji Country Flags",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  cursor:pointer;transition:border-color .22s;
}
.lang-select:hover,.lang-select:focus{border-color:rgba(34,211,238,.55);outline:none}
.lang-select:focus-visible{box-shadow:0 0 0 3px rgba(34,211,238,.15)}
/* the dropdown list itself is drawn by the OS — force dark so it matches */
.lang-select option{background:#0b1120;color:#e2e8f0;font-weight:500;
  font-family:"Twemoji Country Flags",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}

/* Google Translate widget — keep it invisible, we drive it ourselves */
#google_translate_element{display:none !important}
.goog-te-banner-frame,.goog-te-banner-frame.skiptranslate,iframe.skiptranslate{display:none !important}
body{top:0 !important;position:static !important}
#goog-gt-tt,.goog-te-balloon-frame{display:none !important}
.goog-text-highlight{background:none !important;box-shadow:none !important}

/* hamburger */
.nav-toggle{display:none;flex-direction:column;justify-content:center;gap:5px;width:42px;height:38px;border:1px solid var(--line2);border-radius:10px;background:rgba(15,23,42,.6);cursor:pointer;padding:0 10px}
.nav-toggle span{display:block;height:2px;width:100%;background:var(--text);border-radius:2px;transition:.28s}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* ── BUTTONS ───────────────────────────────────────────── */
.btn{display:inline-block;padding:12px 24px;border-radius:11px;font-weight:700;font-size:14px;letter-spacing:.02em;transition:.25s;cursor:pointer;border:none;position:relative;overflow:hidden;text-align:center}
.btn-cyan{background:linear-gradient(135deg,var(--bull),var(--cyan));color:#04202a}
.btn-cyan:hover{box-shadow:0 0 34px rgba(34,211,238,.6);transform:translateY(-2px)}
.btn-ghost{border:1px solid var(--line2);color:var(--text);background:rgba(15,23,42,.4);backdrop-filter:blur(6px)}
.btn-ghost:hover{border-color:var(--cyan);color:var(--cyan);box-shadow:0 0 20px rgba(34,211,238,.15)}
.btn-gold{background:linear-gradient(135deg,var(--gold),#f59e0b);color:#3b2a00}
.btn-gold:hover{box-shadow:0 0 34px rgba(251,191,36,.45);transform:translateY(-2px)}
.btn.disabled,.btn[aria-disabled="true"]{opacity:.55;pointer-events:none;filter:grayscale(.4)}
/* nav link colour must not win over button colour */
.nav-links a.btn-cyan{color:#fff;font-weight:800}
.nav-links a.btn-gold{color:#3b2a00}
.nav-links a.btn-ghost{color:var(--text)}
.nav-links a.btn:hover{color:#04202a}
.btn-lg{padding:15px 34px;font-size:15px;border-radius:13px}

/* ── HERO (home) ───────────────────────────────────────── */
header.hero{position:relative;min-height:100vh;min-height:100svh;display:flex;align-items:center;justify-content:center;overflow:hidden;
  /* The nav is a 64px fixed overlay, so the visual centre of the hero is
     32px below the viewport centre. Padding-top carries that 64px plus the
     same reserve as the bottom, which keeps the block optically centred in
     the space under the nav while still leaving room for the scroll cue. */
  padding:160px 0 96px}
#waves{position:absolute;inset:0;width:100%;height:100%}
.hero-glow{position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(ellipse 55% 45% at 50% 8%, rgba(34,211,238,.12), transparent 60%),
    radial-gradient(ellipse 40% 35% at 82% 78%, rgba(0,229,176,.07), transparent 60%),
    radial-gradient(ellipse 40% 35% at 14% 72%, rgba(249,115,22,.06), transparent 60%)}
.hero-grid{position:absolute;inset:0;pointer-events:none;opacity:.5;
  background-image:linear-gradient(rgba(148,163,184,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.05) 1px,transparent 1px);
  background-size:56px 56px;
  -webkit-mask-image:radial-gradient(ellipse 70% 60% at 50% 40%,#000 30%,transparent 75%);
          mask-image:radial-gradient(ellipse 70% 60% at 50% 40%,#000 30%,transparent 75%)}
.hero-in{position:relative;text-align:center;max-width:880px;margin:0 auto;padding:0 24px;animation:heroIn 1.1s cubic-bezier(.22,.7,.3,1) both}
@keyframes heroIn{from{opacity:0;transform:translateY(36px)}to{opacity:1;transform:none}}
.pill{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;color:var(--cyan);border:1px solid rgba(34,211,238,.35);background:rgba(34,211,238,.07);padding:7px 16px;border-radius:999px;letter-spacing:.1em;text-transform:uppercase;font-weight:600;backdrop-filter:blur(6px)}
.pill.gold{color:var(--gold);border-color:rgba(251,191,36,.35);background:rgba(251,191,36,.07)}
.pill.gold .dot{background:var(--gold)}
.pill.orange{color:var(--orange);border-color:rgba(249,115,22,.35);background:rgba(249,115,22,.07)}
.pill.orange .dot{background:var(--orange)}
.pill .dot{width:7px;height:7px;border-radius:50%;background:var(--cyan);animation:pulse 2s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}
h1{font-size:clamp(42px,7vw,76px);line-height:1.05;font-weight:800;margin:26px 0 10px;letter-spacing:-.01em}
h1 .grad{background:linear-gradient(90deg,var(--bull),var(--cyan) 40%,#7dd3fc 65%,var(--gold));background-size:200% auto;-webkit-background-clip:text;background-clip:text;color:transparent;animation:gradShift 6s ease-in-out infinite alternate}
@keyframes gradShift{from{background-position:0% 50%}to{background-position:100% 50%}}
.tagline{font-size:clamp(17px,2.4vw,23px);color:var(--muted);margin:14px auto 36px;max-width:640px}
.hero-ctas{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}
.hero-ctas .btn{padding:15px 34px;font-size:15px;border-radius:13px}
.hero-note{margin-top:22px;font-size:13px;color:var(--faint)}
.scroll-cue{position:absolute;bottom:26px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--faint);font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;z-index:2}
.scroll-cue:hover{color:var(--cyan)}
/* short viewports (laptops, 125% Windows scaling) have no room for the
   cue below the content — drop it rather than let the two collide */
@media (max-height:780px){.scroll-cue{display:none}}
.scroll-cue .chev{width:22px;height:22px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);animation:chevBounce 1.8s infinite}
@keyframes chevBounce{0%,100%{transform:rotate(45deg) translate(0,0);opacity:.5}50%{transform:rotate(45deg) translate(6px,6px);opacity:1}}

/* ── PAGE HERO (sub-pages) ─────────────────────────────── */
.page-hero{position:relative;padding:150px 0 70px;text-align:center;overflow:hidden;
  background:
    radial-gradient(ellipse 60% 70% at 50% 0%, rgba(34,211,238,.10), transparent 65%),
    var(--bg2)}
.page-hero::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.45;
  background-image:linear-gradient(rgba(148,163,184,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.05) 1px,transparent 1px);
  background-size:56px 56px;
  -webkit-mask-image:radial-gradient(ellipse 70% 80% at 50% 20%,#000 20%,transparent 78%);
          mask-image:radial-gradient(ellipse 70% 80% at 50% 20%,#000 20%,transparent 78%)}
.page-hero .wrap{position:relative;z-index:1}
.page-hero.gold{background:radial-gradient(ellipse 60% 70% at 50% 0%, rgba(251,191,36,.10), transparent 65%),var(--bg2)}
.page-hero.orange{background:radial-gradient(ellipse 60% 70% at 50% 0%, rgba(249,115,22,.10), transparent 65%),var(--bg2)}
.page-hero h1{font-size:clamp(34px,5.4vw,58px);margin:20px 0 12px}
.page-hero .tagline{margin-bottom:0}
.crumb{font-size:12.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--faint);margin-bottom:4px}
.crumb a{color:var(--faint)}
.crumb a:hover{color:var(--cyan)}

/* ── SECTIONS ──────────────────────────────────────────── */
section{padding:96px 0;position:relative}
section[id],[id].anchor{scroll-margin-top:84px}
section.tight{padding:64px 0}
.kicker{color:var(--cyan);font-size:13px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;margin-bottom:12px;display:inline-flex;align-items:center;gap:12px}
.kicker::before,.kicker::after{content:"";width:26px;height:1px;background:currentColor;opacity:.5}
.kicker.red{color:var(--bear)}
.kicker.green{color:var(--bull)}
.kicker.gold{color:var(--gold)}
.kicker.orange{color:var(--orange)}
h2{font-size:clamp(27px,3.8vw,42px);font-weight:800;line-height:1.12;margin-bottom:16px;letter-spacing:-.01em}
h3{font-size:19px;font-weight:700;line-height:1.3}
.lead{color:var(--muted);max-width:700px;font-size:17px}
.center{text-align:center}.center .lead{margin:0 auto}
.big-copy{font-size:clamp(19px,2.6vw,26px);line-height:1.55;max-width:780px;margin:0 auto;color:var(--text);font-weight:500}
.big-copy em{color:var(--cyan);font-style:normal;font-weight:700}
.big-copy .hot{color:var(--bear);font-style:normal;font-weight:700}
.statement{padding:120px 0}
.statement h2{font-size:clamp(44px,7vw,80px);letter-spacing:-.02em;margin-bottom:30px}
.statement h2 .q-red{background:linear-gradient(90deg,#ff4d6d,#ff8c66);-webkit-background-clip:text;background-clip:text;color:transparent}
.statement h2 .q-green{background:linear-gradient(90deg,var(--bull),var(--cyan));-webkit-background-clip:text;background-clip:text;color:transparent}
.statement .big-copy{font-size:clamp(23px,3.4vw,34px);line-height:1.42;max-width:900px;font-weight:600}
.statement .big-copy em{background:linear-gradient(90deg,var(--bull),var(--cyan));-webkit-background-clip:text;background-clip:text;color:transparent}
.sect-glow-red{background:radial-gradient(ellipse 60% 55% at 50% 0%,rgba(255,77,109,.06),transparent 65%)}
.sect-glow-green{background:radial-gradient(ellipse 60% 55% at 50% 0%,rgba(0,229,176,.06),transparent 65%)}

/* ── MARKETS ROW ───────────────────────────────────────── */
.markets{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:32px}
/* NOTE: ">" matters — a nested <span> (e.g. a notranslate wrapper)
   must not pick up the pill border and read as a chip inside a chip. */
.markets>span{border:1px solid var(--line2);background:linear-gradient(180deg,rgba(255,255,255,.02),transparent),var(--panel);border-radius:999px;padding:9px 24px;font-size:14.5px;font-weight:700;color:var(--muted);transition:.25s}
.markets>span:hover{border-color:rgba(0,229,176,.5);color:var(--text);transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.3)}
.markets>span b{color:var(--bull)}

/* ── PANE MOCK ─────────────────────────────────────────── */
.mock{margin:52px auto 0;max-width:900px;background:linear-gradient(180deg,rgba(255,255,255,.03),transparent),var(--panel);border:1px solid var(--line2);border-radius:var(--radius);padding:14px;box-shadow:0 40px 100px rgba(0,0,0,.55), 0 0 80px rgba(34,211,238,.07);position:relative}
.mock::before{content:"";position:absolute;inset:-1px;border-radius:var(--radius);padding:1px;background:linear-gradient(135deg,rgba(34,211,238,.4),transparent 30%,transparent 70%,rgba(249,115,22,.3));-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.mock-bar{display:flex;gap:6px;padding:2px 4px 12px}
.mock-bar i{width:10px;height:10px;border-radius:50%;background:var(--line2);display:block}
.mock-bar i:first-child{background:#f87171}.mock-bar i:nth-child(2){background:var(--gold)}.mock-bar i:nth-child(3){background:var(--green)}
#paneMock,.pane-canvas{width:100%;height:280px;display:block;border-radius:8px;background:var(--bg2)}
.mock-cap{font-size:12.5px;color:var(--faint);text-align:center;padding:10px 4px 2px}
.calc-points{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;max-width:900px;margin:26px auto 0}
.calc-points div{background:linear-gradient(180deg,rgba(255,255,255,.02),transparent),var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px 20px;font-size:14px;color:var(--muted);text-align:left;transition:.25s}
.calc-points div:hover{border-color:rgba(34,211,238,.4);transform:translateY(-3px);box-shadow:0 14px 34px rgba(0,0,0,.35)}
.calc-points b{color:var(--text);display:block;margin-bottom:4px;font-size:15px}

/* ── COMPACT RESEARCH NOTE (home) ──────────────────────────
   Small companion to the full reader on research.html.      */
.mini-paper{display:grid;grid-template-columns:minmax(0,220px) minmax(0,1fr);gap:0;
  align-items:stretch;text-align:left;margin:40px auto 0;max-width:840px;
  background:linear-gradient(180deg,rgba(255,255,255,.02),transparent),var(--panel);
  border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:.28s}
.mini-paper:hover{border-color:rgba(34,211,238,.42);
  box-shadow:0 20px 48px rgba(0,0,0,.45),0 0 40px rgba(34,211,238,.07)}
.mp-cover{display:block;position:relative;background:#0a0f1c;border-right:1px solid var(--line);
  padding:20px;display:flex;align-items:center;justify-content:center}
.mp-cover img{width:100%;height:auto;border-radius:4px;background:#fff;
  box-shadow:0 12px 30px rgba(0,0,0,.6);transition:transform .4s cubic-bezier(.22,.7,.3,1)}
.mini-paper:hover .mp-cover img{transform:translateY(-3px) scale(1.02)}
.mp-body{padding:26px 28px;display:flex;flex-direction:column;justify-content:center;min-width:0}
.mp-body h3{font-size:19px;line-height:1.28;margin-bottom:5px}
.mp-ref{font-size:12.5px;color:var(--faint);letter-spacing:.02em;margin-bottom:12px}
.mp-body p{color:var(--muted);font-size:14.5px;margin:0}
.mp-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}
.mp-actions .btn{padding:11px 20px;font-size:13.5px}
.mp-meta{font-size:12px;color:var(--faint);margin-top:12px}
@media(max-width:760px){
  .mini-paper{grid-template-columns:1fr;margin-top:30px}
  .mp-cover{border-right:0;border-bottom:1px solid var(--line);padding:22px 22px 0;
    max-height:230px;overflow:hidden;align-items:flex-start}
  .mp-cover img{max-width:280px;margin:0 auto}
  .mp-body{padding:22px}
  .mp-actions .btn{width:100%}
}

/* ── INTRO VIDEO (home) ────────────────────────────────────
   Click-to-load YouTube facade: nothing is requested from
   YouTube until the visitor presses play, so the page stays
   fast and sets no third-party cookies on load.
   Swap the video by editing data-yt on #introVideo in the HTML.
   ──────────────────────────────────────────────────────────── */
.video{max-width:940px;margin:44px auto 0}
.vid-frame{position:relative;border-radius:18px;padding:12px;
  background:linear-gradient(160deg,rgba(30,42,63,.9),rgba(13,20,36,.96) 60%);
  border:1px solid rgba(45,61,88,.85);
  box-shadow:0 44px 96px -32px rgba(0,0,0,.85),0 0 80px rgba(34,211,238,.07),
             inset 0 1px 0 rgba(255,255,255,.06)}
.vid-bar{display:flex;align-items:center;gap:6px;padding:1px 4px 11px}
.vid-bar i{width:10px;height:10px;border-radius:50%;background:var(--line2);display:block}
.vid-bar i:first-child{background:#f87171}
.vid-bar i:nth-child(2){background:var(--gold)}
.vid-bar i:nth-child(3){background:var(--green)}
.vid-sym{margin-left:10px;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint)}
.vid-stage{position:relative;aspect-ratio:16/9;border-radius:10px;overflow:hidden;
  background:radial-gradient(ellipse 70% 70% at 50% 45%,rgba(34,211,238,.10),transparent 70%),#060b16;
  box-shadow:inset 0 0 0 1px rgba(45,61,88,.55)}
.vid-stage iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}
/* YouTube thumbnail, injected by main.js from data-yt.
   Nothing is drawn over it — no scrim, no centred button — so the
   artwork reads at full contrast. The transport bar carries the
   affordance instead. */
.vid-poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  transition:transform .5s cubic-bezier(.22,.7,.3,1),filter .35s}
.video.live .vid-stage:hover .vid-poster{transform:scale(1.02);filter:brightness(1.05)}

/* the whole stage is the click target, and it is invisible */
.vid-hit{position:absolute;inset:0;z-index:2;width:100%;height:100%;
  background:none;border:0;padding:0;cursor:pointer;-webkit-appearance:none;appearance:none}
.vid-hit:focus-visible{outline:2px solid var(--cyan);outline-offset:-4px;border-radius:10px}
.vid-hit[disabled]{cursor:default}

/* ── decorative transport bar ──────────────────────────────
   Not a real control surface: pointer-events stay off so every
   click falls through to .vid-hit and loads the embed.       */
.vid-ui{position:absolute;z-index:3;left:0;right:0;bottom:0;pointer-events:none;
  display:flex;align-items:center;gap:11px;padding:30px 14px 11px;
  background:linear-gradient(transparent,rgba(3,7,15,.32) 40%,rgba(3,7,15,.84));
  opacity:0;transition:opacity .3s}
.video.live .vid-ui{opacity:1}
.video.playing .vid-ui{display:none}
/* Once the embed is in, the click-catcher has to get out of the way:
   it sits at inset:0 above the iframe, so leaving it there swallows
   every scrub and volume click and reloads the video from the start. */
.video.playing .vid-hit{display:none;pointer-events:none}
.vu-btn{flex:none;width:20px;height:20px;display:flex;align-items:center;justify-content:center}
.vu-tri{width:0;height:0;
  border-left:13px solid #fff;border-top:8px solid transparent;border-bottom:8px solid transparent;
  filter:drop-shadow(0 1px 3px rgba(0,0,0,.65));transition:border-left-color .25s}
.video.live .vid-stage:hover .vu-tri{border-left-color:var(--cyan)}
.vu-t{flex:none;font-size:12px;font-variant-numeric:tabular-nums;letter-spacing:.02em;
  color:rgba(255,255,255,.92);text-shadow:0 1px 4px rgba(0,0,0,.85)}
.vu-track{position:relative;flex:1;min-width:0;height:3px;border-radius:2px;
  background:rgba(255,255,255,.3);box-shadow:0 1px 3px rgba(0,0,0,.55)}
.vu-fill{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:2px;background:var(--cyan)}
.vu-dot{position:absolute;left:0;top:50%;width:11px;height:11px;margin:-5.5px 0 0 -5.5px;border-radius:50%;
  background:var(--cyan);box-shadow:0 0 10px rgba(34,211,238,.75),0 1px 4px rgba(0,0,0,.6);
  transition:transform .25s}
.video.live .vid-stage:hover .vu-dot{transform:scale(1.25)}
.vu-ic{flex:none;width:17px;height:17px;color:rgba(255,255,255,.9);
  filter:drop-shadow(0 1px 3px rgba(0,0,0,.7))}
.vu-ic svg{width:100%;height:100%;display:block;fill:currentColor}
@media(max-width:620px){
  .vid-frame{padding:8px;border-radius:14px}
  .vid-ui{gap:8px;padding:24px 10px 9px}
  .vu-t{font-size:11px}
  .vu-ic{width:15px;height:15px}
  .vu-tri{border-left-width:11px;border-top-width:7px;border-bottom-width:7px}
}
@media(prefers-reduced-motion:reduce){
  .video.live .vid-stage:hover .vid-poster{transform:none}
}

/* ── LAYER EXPLORER (home: "what it does") ─────────────────
   Static chart image. The tabs only swap the caption underneath —
   no zoom, no 3D, no motion on the image itself.
   ──────────────────────────────────────────────────────────── */
.explorer{max-width:980px;margin:40px auto 0}

/* segmented tab control with a sliding pill */
.ex-tabbar{display:flex;justify-content:center;margin-bottom:30px}
.ex-tabs{position:relative;display:inline-flex;gap:2px;padding:5px;border-radius:999px;
  background:rgba(9,14,26,.85);border:1px solid var(--line2);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 12px 34px rgba(0,0,0,.45)}
.ex-pill{position:absolute;top:5px;bottom:5px;left:0;width:0;border-radius:999px;z-index:0;
  background:linear-gradient(135deg,var(--bull),var(--cyan));
  box-shadow:0 0 26px rgba(34,211,238,.45),0 2px 10px rgba(0,0,0,.4);
  transition:left .45s cubic-bezier(.5,0,.15,1),width .45s cubic-bezier(.5,0,.15,1)}
.ex-tab{position:relative;z-index:1;border:0;background:none;cursor:pointer;
  padding:10px 22px;border-radius:999px;color:var(--muted);
  font:inherit;font-size:14px;font-weight:700;letter-spacing:.03em;white-space:nowrap;
  transition:color .35s}
.ex-tab:hover{color:var(--text)}
.ex-tab.active{color:#04202a}
.ex-tab:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}

/* chart frame — flat, no perspective */
.ex-frame{position:relative;border-radius:18px;padding:12px;
  background:linear-gradient(160deg,rgba(30,42,63,.9),rgba(13,20,36,.96) 60%);
  border:1px solid rgba(45,61,88,.85);
  box-shadow:0 44px 96px -32px rgba(0,0,0,.85),0 0 80px rgba(34,211,238,.07),
             inset 0 1px 0 rgba(255,255,255,.06)}
.ex-bar{display:flex;align-items:center;gap:6px;padding:1px 4px 11px}
.ex-bar i{width:10px;height:10px;border-radius:50%;background:var(--line2);display:block}
.ex-bar i:first-child{background:#f87171}
.ex-bar i:nth-child(2){background:var(--gold)}
.ex-bar i:nth-child(3){background:var(--green)}
.ex-sym{margin-left:10px;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint)}

.ex-stage{position:relative;border-radius:10px;overflow:hidden;background:#060b16;
  box-shadow:inset 0 0 0 1px rgba(45,61,88,.55)}
.ex-stage img{width:100%;height:auto;display:block}

/* caption */
.ex-copy{max-width:680px;margin:26px auto 0;min-height:106px}
.ex-copy h3{font-size:22px;margin-bottom:9px;letter-spacing:-.01em;
  background:linear-gradient(90deg,var(--bull),var(--cyan));-webkit-background-clip:text;background-clip:text;color:transparent}
.ex-copy p{color:var(--muted);font-size:16px;line-height:1.62}
.ex-copy.swap h3,.ex-copy.swap p{animation:exFade .45s cubic-bezier(.22,.7,.3,1) both}
.ex-copy.swap p{animation-delay:.06s}
@keyframes exFade{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}

@media(max-width:860px){
  .ex-tabbar{margin-bottom:22px}
  .ex-tabs{width:100%;justify-content:space-between;padding:4px}
  .ex-tab{padding:9px 10px;font-size:12.5px;letter-spacing:0}
  .ex-frame{padding:8px;border-radius:14px}
  .ex-copy{min-height:140px;margin-top:20px}
  .ex-copy p{font-size:15px}
}
@media (prefers-reduced-motion: reduce){
  .ex-pill{transition:none!important}
  .ex-copy.swap h3,.ex-copy.swap p{animation:none!important}
}

/* ── PREVIEW SLIDER (demo page) ────────────────────────── */
.slider{max-width:940px;margin:44px auto 0;position:relative}
.sl-frame{position:relative;border-radius:18px;padding:12px;
  background:linear-gradient(160deg,rgba(30,42,63,.9),rgba(13,20,36,.96) 60%);
  border:1px solid rgba(45,61,88,.85);
  box-shadow:0 44px 96px -34px rgba(0,0,0,.85),0 0 70px rgba(34,211,238,.06),
             inset 0 1px 0 rgba(255,255,255,.06)}
.sl-bar{display:flex;align-items:center;gap:6px;padding:1px 4px 11px}
.sl-bar i{width:10px;height:10px;border-radius:50%;background:var(--line2);display:block}
.sl-bar i:first-child{background:#f87171}
.sl-bar i:nth-child(2){background:var(--gold)}
.sl-bar i:nth-child(3){background:var(--green)}
.sl-bar span{margin-left:10px;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint)}
.sl-bar .sl-count{margin-left:auto;font-size:11px;letter-spacing:.14em;color:var(--cyan);font-variant-numeric:tabular-nums;text-transform:none}

.sl-stage.chart{aspect-ratio:1800/877}
.sl-stage.walk{aspect-ratio:1800/919}

/* chapter chips above the how-to-read walkthrough */
.chapters{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:30px}
.chap{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;border-radius:999px;
  font-size:13.5px;font-weight:600;color:var(--muted);
  border:1px solid var(--line2);background:rgba(15,23,42,.55)}
.chap b{font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:.01em}
.chap.bull b{color:var(--bull)}
.chap.bear b{color:var(--bear)}
.chap.cyan b{color:var(--cyan)}
@media(max-width:620px){.chap{padding:7px 12px;font-size:12.5px}}   /* clean TradingView exports */
.sl-stage{position:relative;aspect-ratio:16/9;border-radius:10px;overflow:hidden;background:#060b16;
  box-shadow:inset 0 0 0 1px rgba(45,61,88,.55)}
.sl-track{display:flex;height:100%;transition:transform .55s cubic-bezier(.4,0,.2,1)}
.sl-slide{flex:0 0 100%;height:100%;position:relative}
.sl-slide img{width:100%;height:100%;object-fit:cover;display:block}
.sl-cap{position:absolute;left:0;right:0;bottom:0;padding:70px 26px 20px;text-align:left;
  background:linear-gradient(transparent,rgba(4,9,20,.6) 35%,rgba(4,9,20,.95));
  font-size:16.5px;line-height:1.45;color:var(--text)}
.sl-cap b{display:block;font-size:13px;letter-spacing:.18em;text-transform:uppercase;color:var(--cyan);margin-bottom:4px}
/* headline number on the backtest slides */
.sl-net{display:block;font-weight:800;line-height:1.1;color:var(--bull);
  font-size:clamp(26px,3.4vw,40px);letter-spacing:-.01em;font-variant-numeric:tabular-nums;
  text-shadow:0 0 30px rgba(0,229,176,.5),0 2px 10px rgba(0,0,0,.6);margin:2px 0 5px}
.sl-meta{display:block;font-size:15.5px;color:var(--muted)}

.sl-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:2;
  width:44px;height:44px;border-radius:50%;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  border:1px solid var(--line2);background:rgba(9,14,26,.88);color:var(--text);
  backdrop-filter:blur(8px);transition:.22s;font-size:0}
.sl-nav:hover{border-color:var(--cyan);color:var(--cyan);box-shadow:0 0 22px rgba(34,211,238,.28)}
.sl-nav::before{content:"";width:10px;height:10px;border-top:2px solid currentColor;border-right:2px solid currentColor}
.sl-nav.prev{left:-14px}
.sl-nav.prev::before{transform:rotate(-135deg);margin-left:3px}
.sl-nav.next{right:-14px}
.sl-nav.next::before{transform:rotate(45deg);margin-right:3px}
.sl-dots{display:flex;gap:8px;justify-content:center;margin-top:18px}
.sl-dot{width:9px;height:9px;padding:0;border:0;border-radius:99px;background:var(--line2);cursor:pointer;transition:.28s}
.sl-dot:hover{background:#3c5170}
.sl-dot.on{width:26px;background:linear-gradient(90deg,var(--bull),var(--cyan));box-shadow:0 0 14px rgba(34,211,238,.55)}

/* ── SLIDER: summary slide + perf table ────────────────── */
.sl-summary{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:18px;padding:22px;text-align:center;
  background:radial-gradient(ellipse 70% 70% at 50% 45%,rgba(34,211,238,.09),transparent 70%),#080e1b}
.sl-summary h4{font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--cyan);font-weight:800}
.sl-sum-grid{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;width:100%}
.sl-sum-grid div{flex:1 1 150px;max-width:230px;padding:14px 10px;border-radius:12px;
  border:1px solid var(--line2);background:rgba(15,23,42,.7)}
.sl-sum-grid b{display:block;font-size:clamp(17px,2.4vw,26px);font-weight:800;color:var(--bull);
  font-variant-numeric:tabular-nums;line-height:1.15}
.sl-sum-grid span{display:block;margin-top:5px;font-size:11.5px;color:var(--muted);letter-spacing:.04em}
.sl-summary p{font-size:11.5px;color:var(--faint);max-width:520px;line-height:1.5}

@media(max-width:620px){
  /* the 16:9 stage is short on phones — stack the summary as compact rows */
  .sl-summary{gap:8px;padding:12px 44px}          /* clears the prev/next arrows */
  .sl-summary h4{font-size:9.5px;letter-spacing:.1em}
  .sl-sum-grid{flex-direction:column;flex-wrap:nowrap;gap:5px;width:100%}
  .sl-sum-grid div{display:flex;align-items:center;justify-content:space-between;gap:10px;
    flex:0 0 auto;width:100%;max-width:none;padding:6px 11px;border-radius:8px;text-align:left}
  .sl-sum-grid b{font-size:13px;letter-spacing:-.02em;white-space:nowrap}
  .sl-sum-grid span{margin-top:0;font-size:10px;white-space:nowrap}
  .sl-summary p{display:none}   /* full wording is in the callout below the slider */
}

/* ── COMPARISON TABLE ──────────────────────────────────── */
/* the "Profitable" and "Net return" columns read green, header and figures */
.cmp th.pos{color:var(--bull)}
.cmp td.pos{color:var(--bull);font-weight:700;font-variant-numeric:tabular-nums}

.cmp{max-width:1020px;margin:46px auto 0;overflow-x:auto;
  border:1px solid var(--line);border-radius:var(--radius);background:var(--panel)}
.cmp table{width:100%;border-collapse:collapse;min-width:680px;font-size:14.5px}
.cmp th,.cmp td{padding:14px 14px;border-bottom:1px solid var(--line);text-align:center}
.cmp th:first-child,.cmp td:first-child{text-align:left;min-width:250px;color:var(--muted)}
.cmp thead th{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);
  border-bottom:1px solid var(--line2);padding-top:18px;padding-bottom:14px;white-space:nowrap}
.cmp thead th.us{color:#04202a}
.cmp tbody tr:last-child td{border-bottom:none}
.cmp tbody tr:hover td{background:rgba(255,255,255,.015)}
.cmp td.us,.cmp th.us{background:linear-gradient(180deg,rgba(34,211,238,.09),rgba(34,211,238,.03))}
.cmp thead th.us{background:linear-gradient(135deg,var(--bull),var(--cyan));font-weight:800;
  border-radius:10px 10px 0 0}
.cmp tbody tr:hover td.us{background:rgba(34,211,238,.13)}
.cmp .yes{color:var(--bull);font-weight:800;font-size:16px}
.cmp .no{color:#4a5a72;font-weight:700;font-size:15px}
.cmp .part{color:var(--gold);font-weight:800;font-size:15px}
.cmp .yr{font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}
.cmp .yr.old{color:var(--faint);font-weight:600}
.cmp-legend{display:flex;gap:20px;justify-content:center;flex-wrap:wrap;margin-top:18px;
  font-size:12.5px;color:var(--faint)}
.cmp-legend span{display:inline-flex;align-items:center;gap:6px}
.cmp-note{max-width:720px;margin:20px auto 0;font-size:13.5px;color:var(--faint);line-height:1.6}

@media(max-width:620px){
  .sl-nav.prev{left:2px}
  .sl-nav.next{right:2px}
  .sl-nav{width:38px;height:38px}
  .sl-cap{font-size:13px;padding:30px 13px 10px;line-height:1.35}
  .sl-cap b{font-size:10px;letter-spacing:.12em;margin-bottom:1px}
  .sl-net{font-size:20px;margin:0 0 2px;text-shadow:0 0 18px rgba(0,229,176,.55),0 2px 8px rgba(0,0,0,.7)}
  .sl-meta{font-size:11px;line-height:1.35}
  .cmp th,.cmp td{padding:12px 10px;font-size:13.5px}
  .cmp th:first-child,.cmp td:first-child{min-width:190px}
}

/* ── GENERIC CARDS ─────────────────────────────────────── */
.grid{display:grid;gap:18px}
.grid-2{grid-template-columns:repeat(2,1fr)}
.grid-3{grid-template-columns:repeat(3,1fr)}
.grid-4{grid-template-columns:repeat(4,1fr)}
.card{background:linear-gradient(180deg,rgba(255,255,255,.025),transparent),var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:26px;text-align:left;transition:.28s;position:relative;display:flex;flex-direction:column}
.card:hover{border-color:var(--line2);transform:translateY(-4px);box-shadow:0 18px 44px rgba(0,0,0,.4)}
.card.cyan:hover{border-color:rgba(34,211,238,.45);box-shadow:0 18px 44px rgba(0,0,0,.4),0 0 36px rgba(34,211,238,.10)}
.card h3{margin-bottom:8px}
.card p{color:var(--muted);font-size:14.5px}
.card .card-foot{margin-top:auto;padding-top:18px}
.card-ico{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:20px;margin-bottom:14px;background:rgba(34,211,238,.10);border:1px solid rgba(34,211,238,.3)}
.card-ico.gold{background:rgba(251,191,36,.10);border-color:rgba(251,191,36,.3)}
.card-ico.orange{background:rgba(249,115,22,.10);border-color:rgba(249,115,22,.3)}
.card-ico.green{background:rgba(0,229,176,.10);border-color:rgba(0,229,176,.3)}
.tag{display:inline-block;font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;padding:4px 11px;border-radius:999px;border:1px solid var(--line2);color:var(--muted)}
.tag.live{color:var(--bull);border-color:rgba(0,229,176,.4);background:rgba(0,229,176,.08)}
.tag.soon{color:var(--gold);border-color:rgba(251,191,36,.4);background:rgba(251,191,36,.08)}
.tag.free{color:var(--cyan);border-color:rgba(34,211,238,.4);background:rgba(34,211,238,.08)}
.card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:6px}

/* ── TECHNICAL NOTE: download panel + page reader ─────────
   One box, two columns: the panel and the reader share a
   border and stretch to the same height (align-items is left
   at its "stretch" default — do not set it to start).       */
.paper{display:grid;grid-template-columns:minmax(0,340px) minmax(0,1fr);
  grid-template-areas:"side view";
  text-align:left;margin:44px auto 0;max-width:1060px;
  background:linear-gradient(180deg,rgba(255,255,255,.02),transparent),var(--panel);
  border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}

/* left column */
.paper-side{grid-area:side;border-right:1px solid var(--line);padding:28px 26px;
  display:flex;flex-direction:column;gap:22px}
/* head + download sit as one centred cluster; the note stays pinned
   to the bottom, so the column reads as deliberate rather than short */
.ps-main{flex:1;display:flex;flex-direction:column;justify-content:center}

.paper-side h3{font-size:20px;line-height:1.28;margin-bottom:6px}
.paper-sub{color:var(--muted);font-size:14px;line-height:1.5}
.paper-ref{color:var(--faint);font-size:12.5px;margin-top:10px;letter-spacing:.02em}
/* download bar — spans both columns, directly under the document */
.paper-dlbar{grid-area:dl;border-top:1px solid var(--line);background:rgba(7,11,20,.45);
  padding:22px 26px;display:flex;flex-direction:column;align-items:center;gap:10px}
.paper-dl{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;
  padding:13px 16px;font-size:14px;white-space:nowrap}
.paper-dl .dl-ico{font-size:16px;line-height:1;font-weight:800}
.paper-size{text-align:center;font-size:12px;line-height:1.6;color:var(--faint);margin:10px 0 0}
.paper-note{padding-top:18px;border-top:1px solid var(--line);
  font-size:12px;line-height:1.55;color:var(--faint)}

/* right column — the reader */
.paper-view{grid-area:view;display:flex;flex-direction:column;min-width:0;overflow:hidden}
.pv-bar{display:flex;align-items:center;gap:12px;padding:11px 16px;background:rgba(7,11,20,.55);
  border-bottom:1px solid var(--line);font-size:12.5px;color:var(--faint)}
.pv-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pv-count{margin-left:auto;font-variant-numeric:tabular-nums;white-space:nowrap}
.pv-count b{color:var(--text);font-weight:700}
.pv-stage{position:relative;background:#0a0f1c;padding:16px;display:flex;justify-content:center;
  align-items:flex-start;flex:1}
.pv-page{width:100%;max-width:450px;height:auto;border-radius:5px;background:#fff;
  box-shadow:0 16px 40px rgba(0,0,0,.55);transition:opacity .18s}
.pv-stage.loading .pv-page{opacity:.35}
.pv-nav{position:absolute;top:0;bottom:0;width:22%;border:0;background:transparent;cursor:pointer;
  font-size:0;color:transparent;z-index:2;transition:background .25s}
.pv-nav.prev{left:0}
.pv-nav.next{right:0}
.pv-nav:hover{background:linear-gradient(90deg,rgba(34,211,238,.10),transparent)}
.pv-nav.next:hover{background:linear-gradient(270deg,rgba(34,211,238,.10),transparent)}
.pv-nav:focus-visible{outline:2px solid var(--cyan);outline-offset:-3px}
.pv-nav:disabled{cursor:default;background:none}
.pv-foot{display:flex;align-items:center;gap:12px;padding:12px 16px;border-top:1px solid var(--line);
  background:rgba(7,11,20,.4);flex:0 0 auto}
.pv-btn{flex:0 0 auto;padding:8px 14px;border-radius:9px;border:1px solid var(--line2);
  background:rgba(15,23,42,.6);color:var(--text);font-size:12.5px;font-weight:700;cursor:pointer;
  transition:.22s;font-family:inherit}
.pv-btn:hover:not(:disabled){border-color:var(--cyan);color:var(--cyan)}
.pv-btn:disabled{opacity:.35;cursor:default}
.pv-dots{display:flex;flex-wrap:wrap;gap:7px;justify-content:center;flex:1}
.pv-dot{width:9px;height:9px;padding:0;border-radius:50%;border:1px solid var(--line2);
  background:transparent;cursor:pointer;transition:.22s}
.pv-dot:hover{border-color:var(--cyan)}
.pv-dot.on{background:var(--cyan);border-color:var(--cyan);box-shadow:0 0 10px rgba(34,211,238,.6)}

@media(max-width:900px){
  .paper{grid-template-columns:1fr;grid-template-areas:"view" "side";margin-top:34px}
  .paper-side{border-right:0;border-top:1px solid var(--line);gap:22px}
  .pv-page{max-width:430px}
}
@media(max-width:620px){
  .paper-side{padding:21px}
  .paper-dlbar{padding:18px}
  .paper-dl{width:100%;padding-left:16px;padding-right:16px;font-size:13.5px}
  .pv-stage{padding:12px}
  .pv-page{max-width:100%}
  .pv-btn{padding:8px 11px;font-size:12px}
  .pv-dots{gap:6px}
  .pv-toc ol{font-size:13px}
}

/* ── TWO-STEP VISUAL EXPLAINER (preview → PRISM Cycle) ── */
.how2{max-width:1000px;margin:40px auto 0;text-align:left}
.how2-step{margin:0;background:linear-gradient(180deg,rgba(255,255,255,.025),transparent),var(--panel);
  border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:.28s}
.how2-step:hover{border-color:rgba(34,211,238,.42);
  box-shadow:0 20px 48px rgba(0,0,0,.45),0 0 40px rgba(34,211,238,.07)}
.how2-head{display:flex;gap:16px;align-items:flex-start;padding:24px 26px 20px}
.how2-head h3{font-size:19px;line-height:1.3;margin-bottom:7px}
.how2-head p{color:var(--muted);font-size:14.5px;margin:0}
.how2-head p b.up{color:var(--bull)}
.how2-head p b.dn{color:var(--bear)}
.how2-n{flex:0 0 auto;width:34px;height:34px;border-radius:10px;display:flex;align-items:center;
  justify-content:center;font-weight:800;font-size:15px;font-variant-numeric:tabular-nums;
  color:var(--gold);background:rgba(251,191,36,.10);border:1px solid rgba(251,191,36,.35)}
.how2-n.cyan{color:var(--cyan);background:rgba(34,211,238,.10);border-color:rgba(34,211,238,.35)}
.how2-shot{position:relative;border-top:1px solid var(--line);background:var(--bg2);
  aspect-ratio:1800/877;overflow:hidden}
.how2-shot img{width:100%;height:100%;object-fit:cover;display:block}
.how2-link{display:flex;align-items:center;gap:14px;padding:0 40px;margin:0 auto;max-width:340px;
  height:46px;color:var(--faint)}
.how2-link span{flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--line2),transparent)}
.how2-link i{font-style:normal;font-size:11.5px;font-weight:700;letter-spacing:.22em;text-transform:uppercase}
.how2-swipe{display:none;font-size:11.5px;color:var(--faint);letter-spacing:.06em;
  padding:9px 17px 12px;border-top:1px solid var(--line)}
@media(max-width:620px){
  .how2{margin-top:30px}
  .how2-head{padding:18px 17px 15px;gap:12px}
  .how2-head h3{font-size:16.5px}
  .how2-head p{font-size:13.5px}
  .how2-n{width:28px;height:28px;font-size:13.5px;border-radius:9px}
  /* the chart is too wide to be legible squeezed into a phone —
     let it keep its height and scroll sideways instead */
  .how2-shot{aspect-ratio:auto;height:250px;overflow-x:auto;overflow-y:hidden;
    -webkit-overflow-scrolling:touch;scrollbar-width:none}
  .how2-shot::-webkit-scrollbar{display:none}
  .how2-shot img{width:auto;max-width:none;height:250px;object-fit:contain}
  .how2-swipe{display:block}
}

/* ── INDICATOR LIST (free indicators page) ─────────────── */
.ind-list{display:grid;gap:20px;margin-top:46px;text-align:left}
.ind-card{display:grid;grid-template-columns:minmax(0,430px) 1fr;
  background:linear-gradient(180deg,rgba(255,255,255,.025),transparent),var(--panel);
  border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:.28s}
.ind-card:hover{border-color:rgba(34,211,238,.42);transform:translateY(-4px);
  box-shadow:0 20px 48px rgba(0,0,0,.45),0 0 40px rgba(34,211,238,.07)}
.ind-thumb{position:relative;background:var(--bg2);min-height:210px;overflow:hidden;border-right:1px solid var(--line)}
.ind-thumb img{width:100%;height:100%;object-fit:cover;object-position:center;transition:transform .5s cubic-bezier(.22,.7,.3,1)}
.ind-card:hover .ind-thumb img{transform:scale(1.04)}
.ind-thumb::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(90deg,transparent 60%,rgba(15,23,42,.45))}
/* thumb used before a real screenshot exists */
.ind-thumb.empty{display:flex;align-items:center;justify-content:center;gap:12px;
  background:radial-gradient(ellipse 85% 75% at 50% 45%,rgba(34,211,238,.16),transparent 70%),var(--bg2)}
.ind-thumb.empty::after{display:none}
.ind-thumb.empty .gem{width:26px;height:26px;background:linear-gradient(135deg,var(--bull),var(--cyan));
  transform:rotate(45deg);border-radius:3px;box-shadow:0 0 22px rgba(34,211,238,.75)}
.ind-thumb.empty span{font-weight:800;letter-spacing:.18em;font-size:15px;color:var(--text)}
.ind-body{padding:26px 28px;display:flex;flex-direction:column;min-width:0}
.ind-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:4px}
.ind-body h3{font-size:20px;line-height:1.25}
.ind-meta{font-size:12.5px;color:var(--faint);margin-bottom:12px;letter-spacing:.02em}
.ind-body p{color:var(--muted);font-size:14.5px;margin:0}
.ind-actions{margin-top:auto;padding-top:22px;display:flex;gap:12px;flex-wrap:wrap}
.ind-actions .btn{padding:11px 22px;font-size:13.5px}
@media(max-width:820px){
  .ind-card{grid-template-columns:1fr}
  .ind-thumb{border-right:none;border-bottom:1px solid var(--line);min-height:0;aspect-ratio:16/8}
  .ind-thumb::after{background:none}
  .ind-body{padding:22px}
  .ind-actions .btn{width:100%}
}

/* ── PLACEHOLDER BLOCK (fill in later) ─────────────────── */
.placeholder{border:1px dashed var(--line2);border-radius:14px;padding:20px 22px;background:rgba(15,23,42,.5);color:var(--faint);font-size:14px}
.placeholder b{color:var(--muted);display:block;margin-bottom:4px;font-size:13px;letter-spacing:.06em;text-transform:uppercase}

/* ── STEPS ─────────────────────────────────────────────── */
.steps{margin:18px 0 6px;display:grid;gap:14px;text-align:left}
.step{display:flex;gap:14px;align-items:flex-start}
.step .n{flex:0 0 26px;height:26px;border-radius:50%;background:rgba(34,211,238,.12);border:1px solid rgba(34,211,238,.4);color:var(--cyan);font-size:13px;font-weight:800;display:flex;align-items:center;justify-content:center}
.step p{font-size:14.5px;color:var(--muted)}
.step p b{color:var(--text)}

/* ── PRICING ───────────────────────────────────────────── */
#pricing{background:radial-gradient(ellipse 80% 60% at 50% 0%,rgba(34,211,238,.08),transparent 60%)}
/* five plan cards abreast need considerably more room than the site column */
#pricing .wrap{max-width:1400px}

/* Flex with an explicit flex-basis rather than grid, because the basis is a
   calc of the row width: it pins the count per row exactly (5 → 3 → 2 → 1)
   AND, unlike grid, leaves a short final row centred instead of stuck to
   the left edge. */
.plans{display:flex;flex-wrap:wrap;justify-content:center;gap:14px;margin-top:48px}
/* flex column so the CTA and the feature list line up across cards even
   though the summary lines wrap to different heights */
.plan{position:relative;flex:0 1 calc((100% - 2 * 14px) / 3);
  background:linear-gradient(180deg,rgba(255,255,255,.022),transparent 42%),var(--panel);
  border:1px solid var(--line);border-radius:20px;padding:26px 22px 22px;
  text-align:left;transition:.28s;cursor:pointer;
  display:flex;flex-direction:column}
.plan:hover{transform:translateY(-5px);border-color:var(--line2);box-shadow:0 18px 44px rgba(0,0,0,.4)}
.plan.popular{border-color:var(--cyan);background:linear-gradient(180deg,rgba(34,211,238,.09),var(--panel));box-shadow:0 0 44px rgba(34,211,238,.14)}
.plan.selected{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold),0 0 38px rgba(251,191,36,.2)}
.badge{position:absolute;top:-11px;left:50%;transform:translateX(-50%);background:linear-gradient(135deg,var(--bull),var(--cyan));color:#04202a;font-size:10.5px;font-weight:800;letter-spacing:.07em;padding:3px 11px;border-radius:999px;text-transform:uppercase;white-space:nowrap}
.badge.gold{background:linear-gradient(135deg,var(--gold),#f59e0b);color:#3b2a00}

/* name row + the discount pill */
.plan-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.plan-name{font-size:20px;font-weight:700;letter-spacing:-.012em;color:var(--text);margin:0;white-space:nowrap}
/* the discount pill reads white on every card so the number is the
   clearest thing in the header row; the Best Value card takes the same
   gold as its badge, so the two agree instead of competing */
.off{flex:none;font-size:10px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;
  white-space:nowrap;color:#fff;border:1px solid rgba(255,255,255,.28);
  background:rgba(255,255,255,.06);border-radius:999px;padding:4px 9px}
.plan.popular .off{color:var(--cyan);border-color:rgba(34,211,238,.55);
  background:rgba(34,211,238,.1)}
.plan.value .off{color:var(--gold);border-color:rgba(251,191,36,.55);
  background:rgba(251,191,36,.1)}
/* min-heights hold the two-line worst case so every card's price, button and
   rule sit on the same baseline across the row */
.plan-sub{font-size:13px;color:var(--muted);margin:8px 0 0;line-height:1.45;min-height:38px}

/* struck full-price total for the same period — 0.005 BTC × months — so the
   pill above it is arithmetic rather than a claim */
.plan-was{font-size:13.5px;color:var(--faint);margin:18px 0 0;min-height:20px}
.plan-was s{text-decoration-thickness:1px}
.plan-price{font-size:31px;font-weight:800;letter-spacing:-.022em;color:#fff;
  margin:2px 0 0;line-height:1.12;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}
.plan-price .unit{font-size:14px;font-weight:700;color:var(--cyan);letter-spacing:0}
.plan-price .per{font-size:12.5px;font-weight:500;color:var(--faint);letter-spacing:0}
.plan-terms{font-size:11.5px;line-height:1.45;color:var(--faint);margin:10px 0 0;min-height:33px}
.plan-terms b{color:var(--text);font-weight:700}
/* the saving, in the accent — the one green line on an otherwise grey block */
.plan-save{font-size:11.5px;line-height:1.45;color:var(--bull);margin:5px 0 0;min-height:17px;font-weight:600}
.plan-save b{color:var(--bull);font-weight:800}

.plan .cta{margin-top:16px;align-self:stretch;padding:11px 8px;text-align:center;
  border-radius:999px;border:1px solid var(--line2);background:transparent;color:var(--text);
  font-family:inherit;font-weight:700;font-size:13.5px;cursor:pointer;transition:.22s}
.plan:hover .cta,.plan.selected .cta{background:var(--cyan);border-color:var(--cyan);color:#04202a}
.plan.selected .cta{background:var(--gold);border-color:var(--gold);color:#3b2a00}

.plan-rule{border:0;border-top:1px solid var(--line);margin:22px 0 16px}
.plan-inc{font-size:12.5px;color:var(--muted);margin:0 0 12px}
.plan-feat{list-style:none;margin:0;padding:0;display:grid;gap:11px}
.plan-feat li{position:relative;padding-left:24px;font-size:13px;line-height:1.42;color:var(--muted)}
/* the tick is drawn, not a glyph — no font can substitute a different one */
.plan-feat li::before{content:"";position:absolute;left:2px;top:3px;width:10px;height:6px;
  border-left:1.6px solid var(--bull);border-bottom:1.6px solid var(--bull);
  transform:rotate(-45deg)}

/* ENTERPRISE — the same shell and the same five columns, but a directory
   rather than a sales pitch: no feature lists, so the row stays shallow */
.ent-head{margin-top:78px;font-size:15px;color:var(--muted)}
.ent-head b{color:var(--orange)}
/* same box as the card track above: the arrows and the track padding
   are subtracted here too, so the three columns line up top to bottom */
.pdots{display:flex;justify-content:center;gap:8px;margin-top:24px}
.pdots i{width:7px;height:7px;border-radius:50%;background:var(--line2);transition:.3s}
.pdots i.on{background:var(--cyan);width:22px;border-radius:999px}

.plans.ent{margin:26px auto 0;box-sizing:border-box;
  width:min(var(--tmax), 100%);
  padding-inline:10px;gap:var(--pgap)}
.plans.ent .plan{flex-basis:calc((100% - 2 * var(--pgap)) / 3)}
.plan.ent{cursor:default;padding:22px 20px 18px;border-radius:18px;
  border-color:rgba(249,115,22,.4);background:linear-gradient(180deg,rgba(249,115,22,.08),var(--panel))}
.plan.ent:hover{border-color:var(--orange);transform:translateY(-5px);box-shadow:0 18px 44px rgba(249,115,22,.12)}
.plan.ent .plan-name{font-size:17px;color:var(--orange)}
.plan.ent .plan-price{font-size:26px;margin-top:12px}
.plan.ent .plan-price .unit{color:var(--orange);font-size:13px}
.plan.ent .plan-price .per{font-size:12px}
.plan.ent .plan-terms{min-height:30px}
.plan.ent .cta{margin-top:auto;padding:10px 6px;font-size:12.5px;
  border-color:rgba(249,115,22,.5);color:#fdba74;display:block}
.plan.ent:hover .cta{background:var(--orange);border-color:var(--orange);color:#fff}
.badge.orange{background:linear-gradient(135deg,var(--orange),#fb923c);color:#fff}

/* ── CHECKOUT ──────────────────────────────────────────── */
.checkout{margin:34px auto 0;max-width:640px;background:var(--panel2);border:1px solid var(--line2);border-radius:var(--radius);padding:30px;display:none;text-align:left}
.checkout.open{display:block;animation:fadeUp .35s ease}
@keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.checkout h3{font-size:18px;margin-bottom:4px}
.checkout .sel{color:var(--gold);font-weight:800}
.addr{display:flex;gap:10px;margin-top:6px;flex-wrap:wrap}
.addr code{flex:1;min-width:220px;background:var(--bg);border:1px solid var(--line2);border-radius:9px;padding:11px 14px;font-size:13px;color:var(--gold);overflow-wrap:anywhere}
.copy{padding:0 18px;border-radius:9px;border:1px solid var(--line2);background:transparent;color:var(--text);font-weight:700;cursor:pointer;font-size:13px}
.copy:hover{border-color:var(--gold);color:var(--gold)}
.checkout .warn{margin-top:16px;font-size:12.5px;color:var(--faint)}

/* ── ROADMAP / TIMELINE ────────────────────────────────── */
#roadmap{background:radial-gradient(ellipse 70% 55% at 50% 100%,rgba(249,115,22,.05),transparent 60%),var(--bg2)}
/* ── TIMELINE (horizontal rail, centred under each node) ──
   The rail is drawn on .timeline::before and sits at the same
   height as the nodes; each item reserves that height with
   padding-top so the dot lands exactly on the line.          */
.timeline{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;
  gap:18px;max-width:1080px;margin:60px auto 0;position:relative;text-align:center}
.timeline::before{content:"";position:absolute;left:0;right:0;top:9px;height:2px;
  background:linear-gradient(90deg,var(--bull),var(--cyan));
  box-shadow:0 0 16px rgba(34,211,238,.35)}
.tl-item{position:relative;padding:34px 8px 0;min-width:0}
.tl-item .node{position:absolute;left:50%;top:2px;transform:translateX(-50%);
  width:16px;height:16px;border-radius:50%;background:var(--bull);
  border:2px solid var(--bull);box-shadow:0 0 14px rgba(0,229,176,.7)}
.tl-item.future .node{background:var(--bg);border-color:var(--faint);
  box-shadow:none;animation:pulse 2.4s infinite}
.tl-item .yr{font-size:15px;font-weight:600;letter-spacing:.02em;color:var(--bull);
  font-variant-numeric:tabular-nums;text-transform:none}
.tl-item.future .yr{color:var(--faint)}
.tl-item h3{font-size:16.5px;line-height:1.3;margin:4px 0 8px}
.tl-item p{font-size:14px;color:var(--muted);line-height:1.5}
@media(max-width:900px){
  /* back to a vertical rail — six columns will not fit a phone */
  .timeline{grid-auto-flow:row;grid-auto-columns:auto;gap:0;
    max-width:560px;margin-top:46px;text-align:left}
  .timeline::before{left:11px;right:auto;top:6px;bottom:6px;width:2px;height:auto;
    background:linear-gradient(180deg,var(--bull),var(--cyan))}
  .tl-item{padding:0 0 32px 44px}
  .tl-item:last-child{padding-bottom:0}
  .tl-item .node{left:4px;top:5px;transform:none;width:16px;height:16px}
  .tl-item h3{margin:2px 0 4px}
}

/* ── FAQ ───────────────────────────────────────────────── */
.faq{max-width:760px;margin:44px auto 0}
details{background:linear-gradient(180deg,rgba(255,255,255,.02),transparent),var(--panel);border:1px solid var(--line);border-radius:13px;margin-bottom:12px;overflow:hidden;transition:.25s}
details:hover{border-color:var(--line2)}
details[open]{border-color:rgba(34,211,238,.35)}
summary{padding:18px 22px;cursor:pointer;font-weight:700;font-size:15px;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:16px}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";color:var(--cyan);font-size:20px;font-weight:400;transition:.2s;flex:0 0 auto}
details[open] summary::after{transform:rotate(45deg)}
details p{padding:0 22px 18px;font-size:14.5px;color:var(--muted)}

/* ── LEGAL / PROSE PAGES ───────────────────────────────── */
.prose{max-width:820px;margin:0 auto;text-align:left}
.prose h2{font-size:clamp(21px,2.6vw,27px);margin:44px 0 12px;padding-top:8px}
.prose h2:first-child{margin-top:0}
.prose h3{font-size:17px;margin:26px 0 8px;color:var(--text)}
.prose p{color:var(--muted);font-size:15px;margin-bottom:14px}
.prose ul,.prose ol{color:var(--muted);font-size:15px;margin:0 0 16px 20px}
.prose li{margin-bottom:9px}
.prose strong{color:var(--text)}
.prose hr{border:none;border-top:1px solid var(--line);margin:34px 0}
.callout{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--gold);border-radius:12px;padding:20px 24px;margin:0 0 26px;font-size:14.5px;color:var(--muted)}
.callout.red{border-left-color:var(--bear)}
.callout.cyan{border-left-color:var(--cyan)}
.callout b{color:var(--text)}
.updated{font-size:13px;color:var(--faint);margin-bottom:28px}

/* info table (company page) */
.info-table{width:100%;border-collapse:collapse;margin:0 0 24px;font-size:14.5px}
.info-table th,.info-table td{text-align:left;padding:14px 16px;border-bottom:1px solid var(--line);vertical-align:top}
.info-table th{color:var(--muted);font-weight:600;width:230px;white-space:nowrap}
.info-table td{color:var(--text)}
.info-table td .tbd{color:var(--faint);font-style:italic}
.info-table tr:last-child th,.info-table tr:last-child td{border-bottom:none}

/* ── FORMS ─────────────────────────────────────────────── */
.form{background:linear-gradient(180deg,rgba(255,255,255,.02),transparent),var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:30px;text-align:left}
.field{margin-bottom:18px}
.field label{display:block;font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:7px}
.field input,.field select,.field textarea{width:100%;background:var(--bg);border:1px solid var(--line2);border-radius:10px;padding:12px 14px;color:var(--text);font-size:15px;font-family:inherit;transition:.2s}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--cyan);box-shadow:0 0 0 3px rgba(34,211,238,.12)}
.field textarea{min-height:150px;resize:vertical}
.field .hint{font-size:12.5px;color:var(--faint);margin-top:6px}
.form .btn{width:100%}

/* ── DISCLAIMER ────────────────────────────────────────── */
.disc{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--gold);border-radius:12px;padding:22px 26px;max-width:860px;margin:0 auto;font-size:13.5px;color:var(--muted)}

/* ── FOOTER ────────────────────────────────────────────── */
footer{border-top:1px solid var(--line);background:linear-gradient(180deg,transparent,rgba(34,211,238,.03));padding:56px 0 34px;font-size:14px;color:var(--muted)}
.foot-grid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:36px;text-align:left}
.foot-brand .logo img{height:40px}
.foot-brand .logo{margin-bottom:12px}
.foot-brand p{font-size:13.5px;color:var(--faint);max-width:300px}
.foot-col h4{font-size:12.5px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--text);margin-bottom:14px}
.foot-col ul{list-style:none}
.foot-col li{margin-bottom:9px}
.foot-col a{color:var(--muted);font-size:14px;transition:.2s}
.foot-col a:hover{color:var(--cyan)}
/* ── FOOTER SOCIALS ────────────────────────────────────────
   Inline SVG marks, so no extra request and they take the
   surrounding colour. Each one warms to its own brand colour on
   hover, which is the only place brand colour appears. */
.foot-social{display:flex;gap:10px;margin-top:18px}
.foot-social a{display:grid;place-items:center;width:38px;height:38px;flex:none;
  border-radius:11px;color:var(--muted);border:1px solid var(--line);
  background:var(--panel);transition:color .2s,border-color .2s,background .2s}
.foot-social a:hover{background:#111a2b}
.foot-social a:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}
.foot-social svg{width:17px;height:17px;display:block;fill:currentColor}
.foot-social .fs-yt:hover{color:#ff3d3d;border-color:rgba(255,61,61,.5)}
.foot-social .fs-tg:hover{color:#29a9eb;border-color:rgba(41,169,235,.5)}
.foot-social .fs-x:hover{color:#fff;border-color:var(--faint)}

.foot-risk{margin-top:44px;background:rgba(15,23,42,.6);border:1px solid var(--line);border-left:3px solid var(--gold);border-radius:12px;padding:22px 26px;font-size:13px;color:var(--faint);line-height:1.65;text-align:left}
.foot-risk b{color:var(--muted);display:block;margin-bottom:7px;font-size:12.5px;letter-spacing:.14em;text-transform:uppercase}
.foot-risk a{color:var(--gold)}
.foot-bottom{margin-top:30px;padding-top:24px;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--faint)}
.foot-bottom .fb-note{text-align:right;max-width:560px;font-size:12.5px;line-height:1.5}
.foot-bottom a{color:var(--faint)}
.foot-bottom a:hover{color:var(--cyan)}

/* ── RESPONSIVE ────────────────────────────────────────── */
/* the plan row steps 5 → 3 → 2 → 1; the basis is recomputed at each step so
   the count is exact and any short final row stays centred */
@media(max-width:960px){
  .plan{flex-basis:calc((100% - 14px) / 2)}
  .calc-points{grid-template-columns:1fr}
  .grid-3,.grid-4{grid-template-columns:repeat(2,1fr)}
  .foot-grid{grid-template-columns:1fr 1fr;gap:32px}
  .foot-brand{grid-column:span 2}
}
@media(max-width:860px){
  .nav-toggle{display:flex}
  .nav-links{position:absolute;top:64px;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;
    background:rgba(7,11,20,.98);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
    border-bottom:1px solid var(--line);padding:10px 24px 22px;
    max-height:0;overflow:hidden;opacity:0;pointer-events:none;transition:max-height .35s ease,opacity .25s ease,padding .35s ease}
  .nav-links.open{max-height:420px;opacity:1;pointer-events:auto}
  .nav-links a{padding:14px 2px;border-bottom:1px solid rgba(30,41,59,.7);font-size:15.5px}
  .nav-links a:not(.btn)::after{display:none}
  .nav-links a.active{color:var(--cyan)}
  .nav-links .btn{margin-top:16px;border-bottom:none;padding:14px 24px}
}
@media(max-width:620px){
  .nav-right{gap:10px}
  .lang-select{max-width:132px;font-size:13px;padding-right:28px}
  section{padding:70px 0}
  .statement{padding:88px 0}
  .page-hero{padding:126px 0 56px}
  .grid-2,.grid-3,.grid-4{grid-template-columns:1fr}
  .info-table th{width:auto}
  .info-table,.info-table tbody,.info-table tr,.info-table th,.info-table td{display:block}
  .info-table th{border-bottom:none;padding-bottom:2px}
  .info-table td{padding-top:2px;padding-bottom:16px}
  .foot-grid{grid-template-columns:1fr}
  .foot-brand{grid-column:span 1}
  .foot-bottom{flex-direction:column;align-items:flex-start}
  .foot-bottom .fb-note{text-align:left}
}
@media(max-width:560px){
  .logo img{height:28px}
}
@media(max-width:520px){
  .plan{flex-basis:100%}
}


/* ── SPONSOR GATE ──────────────────────────────────────────
   An interstitial on the way out to TradingView: labelled ad,
   short countdown, then two genuine choices. The underlying
   <a> keeps its real href, so with JS off the button simply
   goes straight to TradingView.

   The creative is a dense square with readable fine print, so
   it is sized to the viewport rather than to a fixed column:
   on a wide screen the controls move beside it, which frees
   the whole window height for the picture.                    */
.sgate[hidden]{display:none}
.sgate{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:12px}
.sgate-veil{position:absolute;inset:0;background:rgba(2,5,12,.86);
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.sgate-box{position:relative;width:min(100%,520px);
  max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px);overflow:auto;
  background:var(--panel);border:1px solid var(--line2);border-radius:20px;
  padding:12px 12px 16px;box-shadow:0 50px 120px -40px rgba(0,0,0,.95);
  animation:sgateIn .32s cubic-bezier(.22,.7,.3,1)}
@keyframes sgateIn{from{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}

.sgate-top{display:flex;align-items:center;justify-content:space-between;
  margin:0 4px 10px;flex:0 0 100%}
.sgate-tag{font-size:10.5px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;
  color:var(--faint);border:1px solid var(--line2);border-radius:999px;padding:4px 11px}
.sgate-x{background:none;border:0;color:var(--faint);font-size:28px;line-height:1;
  cursor:pointer;padding:0 6px;transition:color .2s}
.sgate-x:hover{color:var(--text)}

.sgate-shot{display:block;border-radius:12px;overflow:hidden;border:1px solid var(--line);
  background:#000}
.sgate-shot img{width:100%;height:auto;display:block}
.sgate-h{font-size:17px;margin:16px 0 12px;color:var(--text)}

.sgate-actions{display:grid;gap:10px}
.sgate-actions .btn{width:100%}
.sgate-actions .btn-cyan{color:#06303d;font-weight:800}
/* the second button is inert until the countdown finishes */
.sgate-go{pointer-events:none;opacity:.5}
.sgate-go .sgate-ready{display:none}
.sgate.ready .sgate-go{pointer-events:auto;opacity:1}
.sgate.ready .sgate-go .sgate-wait{display:none}
.sgate.ready .sgate-go .sgate-ready{display:inline}

.sgate-note{margin:14px 0 0;font-size:11.5px;line-height:1.5;color:var(--faint)}
.sgate-note a{color:var(--muted);text-decoration:underline}

/* ── wide + landscape: controls beside the creative ──────────
   The image is then bounded by window height, not column
   width, so it lands around 700–900px on a normal monitor and
   the offer tables are actually legible.                     */
@media(min-width:900px) and (min-height:620px){
  .sgate{padding:18px}
  .sgate-box{width:auto;max-width:calc(100vw - 36px);overflow:visible;
    display:grid;grid-template-columns:auto minmax(250px,310px);
    column-gap:22px;align-items:center;padding:14px 20px 20px}
  /* the label bar spans both tracks — without this it takes the first
     grid cell and shunts the creative into the control column */
  .sgate-top{grid-column:1/-1;margin-bottom:8px}
  /* the creative is square, so driving it by WIDTH gives the same result as
     height without the cyclic max-width:100% inside an auto grid track —
     which is what collapsed it to min-content. The 60vw cap stops it
     crowding the controls out on a short, wide window. */
  .sgate-shot{width:min(calc(100dvh - 140px),1100px,60vw)}
  .sgate-shot img{width:100%;height:auto;max-width:none}
  .sgate-h{margin-top:0;font-size:19px}
}

/* ── phone: edge to edge, every pixel the screen will give ── */
/* ── phone: a full-bleed sheet, so the creative gets the whole
      screen width instead of the width minus two paddings ──── */
@media(max-width:560px){
  .sgate{padding:0}
  .sgate-box{width:100%;max-width:none;border-radius:0;border:0;
    max-height:100vh;max-height:100dvh;padding:10px 0 18px}
  .sgate-top{margin:0 14px 8px}
  .sgate-shot{border-radius:0;border-left:0;border-right:0}
  .sgate-h,.sgate-actions,.sgate-note{margin-left:14px;margin-right:14px}
  .sgate-h{margin-top:18px}
}
@media(prefers-reduced-motion:reduce){.sgate-box{animation:none}}


/* ── large displays ──────────────────────────────────────────
   The shared column widens with the story above it, so the
   product sections do not read as a narrow strip on a big
   monitor. Pricing gets its own, wider step.                   */
@media(min-width:1600px){
  .wrap{max-width:1340px}
  #pricing .wrap{max-width:1600px}
  /* the legal pages cap their own measure at .prose, so they only need a
     modest nudge — a 1340px line length would be unreadable */
  .prose{max-width:900px}
  .prose p,.prose li{font-size:16px}
  .plan-name{font-size:23px}
  .plan-sub{font-size:14px;min-height:41px}
  .plan-price{font-size:38px}
  .plan-feat li{font-size:14px}
  .plan .cta{font-size:14.5px;padding:12px 8px}
}
@media(min-width:2000px){
  .wrap{max-width:1500px}
  #pricing .wrap{max-width:1800px}
  .plan{padding:30px 26px 26px}
  .plan-name{font-size:25px}
  .plan-price{font-size:42px}
  .plan-feat li{font-size:15px}
}

/* ══ VIDEO TUTORIALS ═══════════════════════════════════════
   Two columns: a collapsible module list on the left, one
   player on the right. The list is plain <details> elements so
   it works with JavaScript off, and adding a lesson is a single
   <li> — nothing here is keyed to how many videos exist.
   ═══════════════════════════════════════════════════════════ */
.tuts{padding:56px 0 90px;background:var(--bg)}
.tut-grid{display:grid;grid-template-columns:320px minmax(0,1fr);
  gap:clamp(22px,2.6vw,42px);align-items:start}

/* ── left column ── */
.tut-side{position:sticky;top:88px;
  border:1px solid var(--line);border-radius:var(--radius);
  background:var(--panel);overflow:hidden}
.tut-side-head{padding:18px 20px 15px;border-bottom:1px solid var(--line)}
.tut-side-head h2{font-size:17px;margin:0}
.tut-count{margin:5px 0 0;font-size:12px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--faint)}
.tut-nav{max-height:min(64vh,720px);overflow:auto;overscroll-behavior:contain}

.tut-mod{border-bottom:1px solid var(--line)}
.tut-mod:last-child{border-bottom:0}
.tut-mod>summary{display:flex;align-items:center;gap:11px;
  padding:13px 18px;cursor:pointer;list-style:none;
  font-size:14px;font-weight:600;color:var(--text);transition:background .18s}
.tut-mod>summary::-webkit-details-marker{display:none}
.tut-mod>summary:hover{background:rgba(255,255,255,.03)}
.tut-mod>summary:focus-visible{outline:2px solid var(--cyan);outline-offset:-2px}
.tm-n{flex:none;width:23px;height:23px;display:grid;place-items:center;
  border-radius:50%;font-size:11.5px;font-weight:800;
  color:var(--muted);background:rgba(255,255,255,.05);border:1px solid var(--line2)}
.tm-t{flex:1;min-width:0}
.tm-c{flex:none;font-size:11px;font-weight:700;color:var(--faint);
  background:rgba(255,255,255,.05);border-radius:999px;padding:2px 8px}
.tm-x{flex:none;width:16px;height:16px;fill:none;stroke:var(--faint);
  stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:transform .22s}
.tut-mod[open]>summary .tm-x{transform:rotate(180deg)}
.tut-mod[open]>summary .tm-n{color:var(--cyan);border-color:rgba(34,211,238,.45);
  background:rgba(34,211,238,.1)}

.tut-mod ul{list-style:none;margin:0;padding:0 10px 10px}
.tut-lesson{display:flex;align-items:center;gap:10px;width:100%;
  text-align:left;font:inherit;font-size:13.5px;color:var(--muted);
  background:none;border:0;border-radius:9px;padding:9px 11px;cursor:pointer;
  transition:background .16s,color .16s}
.tut-lesson::before{content:"";flex:none;width:14px;height:14px;border-radius:50%;
  border:1px solid var(--line2);background:rgba(255,255,255,.04);transition:.16s}
.tut-lesson:hover{background:rgba(255,255,255,.04);color:var(--text)}
.tut-lesson:focus-visible{outline:2px solid var(--cyan);outline-offset:1px}
.tut-lesson.is-active{color:var(--text);background:rgba(34,211,238,.1);
  box-shadow:inset 2px 0 0 var(--cyan)}
.tut-lesson.is-active::before{background:var(--cyan);border-color:var(--cyan);
  box-shadow:0 0 12px -2px rgba(34,211,238,.9)}
.tl-t{flex:1;min-width:0}
.tl-d{flex:none;font-size:11.5px;color:var(--faint);font-variant-numeric:tabular-nums}
.tut-soon{font-size:12.5px;color:var(--faint);font-style:italic;
  padding:9px 11px 9px 25px;display:block}

/* ── right column ── */
.tut-player{max-width:none;margin:0}
.tut-meta{margin:22px 0 0}
.tut-mod-tag{margin:0;font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--cyan)}
.tut-meta h2{font-size:clamp(21px,2.6vw,28px);margin:7px 0 0}
.tut-desc{margin:9px 0 0;color:var(--muted);font-size:15.5px;line-height:1.65;max-width:66ch}
.tut-pager{display:flex;align-items:center;gap:12px;margin:24px 0 0;
  padding-top:20px;border-top:1px solid var(--line)}
.tut-pager .btn{padding:9px 16px;font-size:13.5px}
.tut-pager .btn[disabled]{opacity:.35;pointer-events:none}
.tut-pos{flex:1;text-align:center;font-size:12.5px;color:var(--faint);
  font-variant-numeric:tabular-nums}

@media(max-width:900px){
  .tut-grid{grid-template-columns:1fr;gap:26px}
  .tut-side{position:static;order:2}
  .tut-main{order:1}
  .tut-nav{max-height:none}
}
@media(max-width:560px){
  .tuts{padding:34px 0 66px}
  .tut-mod>summary{padding:12px 14px}
  .tut-desc{font-size:14.5px}
}
@media(min-width:1600px){
  .tut-grid{grid-template-columns:380px minmax(0,1fr)}
  .tut-meta h2{font-size:31px}
  .tut-desc{font-size:16.5px}
  .tut-lesson{font-size:14.5px}
  .tut-mod>summary{font-size:15px}
}

/* ══ RESULTS PAGE ══════════════════════════════════════════
   One block per strategy: the screenshot, four headline
   numbers, then the full table. Every figure is read off the
   TradingView Strategy Tester panel inside the screenshot
   directly above it, so the picture is the receipt.
   ═══════════════════════════════════════════════════════════ */
.res-head{text-align:center;max-width:760px;margin:0 auto 34px}
.res-head h2{font-size:clamp(28px,4vw,42px);margin:0 0 12px}
.res-head .lead{margin:0 auto}

.res-shot{margin:0;max-width:1180px;margin-inline:auto}
.res-shot img{width:100%;height:auto;display:block;border-radius:14px;
  border:1px solid var(--line2);
  box-shadow:0 44px 100px -46px rgba(0,0,0,.95),0 0 60px -34px rgba(34,211,238,.3)}
.res-shot figcaption{margin-top:11px;text-align:center;
  font-size:12.5px;letter-spacing:.06em;color:var(--faint)}

.res-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;
  max-width:1180px;margin:30px auto 0}
.rs{display:flex;flex-direction:column;gap:5px;padding:20px 18px;
  border:1px solid var(--line);border-radius:14px;
  background:linear-gradient(180deg,rgba(255,255,255,.025),transparent),var(--panel)}
.rs-k{font-size:11.5px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;
  color:var(--faint)}
.rs-v{font-size:clamp(24px,2.6vw,31px);font-weight:800;letter-spacing:-.01em;
  color:var(--text);font-variant-numeric:tabular-nums;line-height:1.1}
.rs-v.pos{color:var(--bull)}
.rs-v.neg{color:var(--bear)}
.rs-s{font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}

.res-tbl-wrap{max-width:1180px;margin:20px auto 0;overflow-x:auto;
  border:1px solid var(--line);border-radius:var(--radius);background:var(--panel)}
.res-tbl{width:100%;border-collapse:collapse;font-size:14.5px;min-width:0}
.res-tbl caption{caption-side:top;text-align:left;padding:16px 20px 13px;
  font-size:11.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:var(--faint);border-bottom:1px solid var(--line2)}
.res-tbl th,.res-tbl td{padding:13px 20px;border-bottom:1px solid var(--line);text-align:left}
.res-tbl th{color:var(--muted);font-weight:600;width:46%}
.res-tbl td{color:var(--text);font-weight:600;font-variant-numeric:tabular-nums}
.res-tbl td.pos{color:var(--bull)}
.res-tbl td.neg{color:var(--bear)}
.res-tbl tbody tr:last-child th,.res-tbl tbody tr:last-child td{border-bottom:none}
.res-tbl tbody tr:hover td,.res-tbl tbody tr:hover th{background:rgba(255,255,255,.015)}

.res-note{max-width:1180px;margin:16px auto 0;font-size:12.5px;color:var(--faint);
  line-height:1.6}
.beta-tag{display:inline-block;vertical-align:middle;margin-left:10px;
  font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;
  color:var(--gold);border:1px solid rgba(251,191,36,.5);background:rgba(251,191,36,.1);
  border-radius:999px;padding:5px 11px;transform:translateY(-3px)}
.res-beta{max-width:1180px;margin:20px auto 0;padding:18px 22px;
  border:1px solid rgba(251,191,36,.35);border-left:3px solid var(--gold);
  border-radius:12px;background:rgba(251,191,36,.05);
  font-size:14px;line-height:1.65;color:var(--muted)}
.res-fine{max-width:760px;margin:0 auto;font-size:13.5px;color:var(--muted);line-height:1.75}

@media(max-width:900px){
  .res-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:560px){
  .res-stats{grid-template-columns:1fr;gap:10px}
  .rs{padding:16px 15px}
  .res-tbl{font-size:13.5px}
  .res-tbl th,.res-tbl td{padding:12px 12px}
  .res-tbl th{width:44%}
  .res-tbl caption{padding:14px 14px 11px}
}
@media(min-width:1600px){
  .res-shot,.res-stats,.res-tbl-wrap,.res-note,.res-beta{max-width:1400px}
  .res-head{max-width:860px}
  .res-tbl{font-size:15.5px}
  .rs-v{font-size:35px}
}

/* ══ SCOPE TABLES (risk disclosure) ════════════════════════
   Two plain tables: what the product does, and what we will
   never do. The marker column carries a coloured dot plus a
   word, so the meaning does not rely on colour alone.
   ═══════════════════════════════════════════════════════════ */
.scope-wrap{margin:0 0 24px;overflow-x:auto;
  border:1px solid var(--line);border-radius:12px;background:var(--panel)}
.scope-tbl{width:100%;border-collapse:collapse;font-size:14.5px}
.scope-tbl th,.scope-tbl td{padding:13px 16px;border-bottom:1px solid var(--line);
  text-align:left;vertical-align:top}
.scope-tbl thead th{font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--faint);font-weight:700;border-bottom:1px solid var(--line2);white-space:nowrap}
.scope-tbl tbody td{color:var(--muted)}
.scope-tbl tbody tr:last-child td{border-bottom:none}
.scope-tbl tbody tr:hover td{background:rgba(255,255,255,.015)}
.scope-tbl td.mk,.scope-tbl th:last-child{width:150px;white-space:nowrap;font-weight:700}
.scope-tbl.yes td.mk{color:var(--bull)}
.scope-tbl.no  td.mk{color:var(--bear)}
.dotk{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:7px;
  vertical-align:baseline}
.dotk.ok{background:var(--bull);box-shadow:0 0 10px -1px rgba(0,229,176,.9)}
.dotk.bad{background:var(--bear);box-shadow:0 0 10px -1px rgba(255,77,109,.9)}
.scope-tbl.yes{border-top:2px solid rgba(0,229,176,.45)}
.scope-tbl.no{border-top:2px solid rgba(255,77,109,.45)}

@media(max-width:560px){
  .scope-tbl{font-size:13.5px}
  .scope-tbl th,.scope-tbl td{padding:12px 12px}
  .scope-tbl td.mk,.scope-tbl th:last-child{width:112px}
}

/* ══ PLAN STAGE ════════════════════════════════════════════
   Three cards, all fully readable. Yearly carries the standing
   highlight (badge, cyan frame, solid button); the arrows move
   a lift between cards and, on screens too narrow for three,
   scroll the track. Quarterly and 4 Years sit underneath as
   terms rather than as a fourth and fifth offer.
   ═══════════════════════════════════════════════════════════ */
/* --arrow and --sgap describe the space the arrows take out of the
   row. The Enterprise row below has no arrows, so it subtracts the
   same amounts by hand and lands on exactly the same column edges. */
:root{--arrow:42px;--sgap:clamp(6px,1vw,14px);--tmax:1080px;--pgap:clamp(12px,1.5vw,22px)}
.pstage{display:flex;align-items:center;justify-content:center;
  gap:var(--sgap);margin-top:52px}
.pstage__track{position:relative;flex:1;min-width:0;max-width:var(--tmax);
  margin-inline:auto}

/* Three equal columns. The cards slide between them rather than
   resizing, so the row keeps the proportions it had before the
   carousel; only the middle one lifts, and only slightly. Each
   slot is exactly one column plus one gap further along.        */
.pcard{position:absolute;top:14px;left:10px;
  width:calc((100% - 20px - 2 * var(--pgap)) / 3);
  display:flex;flex-direction:column;text-align:left;cursor:pointer;
  padding:26px 24px 24px;border-radius:18px;
  border:1px solid var(--line);transform-origin:center top;
  background:linear-gradient(180deg,rgba(255,255,255,.022),transparent 42%),var(--panel);
  transition:transform .52s cubic-bezier(.2,.7,.2,1),
    border-color .45s,box-shadow .45s}
.pcard.slot-l{transform:translateX(0);z-index:1}
.pcard.slot-c{transform:translateX(calc(100% + var(--pgap))) scale(1.035);z-index:3}
.pcard.slot-r{transform:translateX(calc(200% + 2 * var(--pgap)));z-index:1}
.pcard:hover{border-color:var(--line2)}
.pcard:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}
.pcard.is-lead{border-color:var(--cyan);box-shadow:0 0 0 1px rgba(34,211,238,.22),
  0 30px 70px -34px rgba(34,211,238,.45);
  background:linear-gradient(180deg,rgba(34,211,238,.08),var(--panel));
}
.pcard.selected{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold),0 0 40px -14px rgba(251,191,36,.45)}

.pc-badge{position:absolute;top:-11px;left:50%;transform:translateX(-50%);
  font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;
  white-space:nowrap;padding:4px 13px;border-radius:999px;
  background:linear-gradient(135deg,var(--bull),var(--cyan));color:#04202a}
.pc-badge--gold{background:linear-gradient(135deg,var(--gold),#f59e0b);color:#3b2a00}

.pc-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.pc-name{margin:0;font-size:21px;font-weight:700;letter-spacing:-.012em;color:var(--text);white-space:nowrap}
.pc-pill{flex:none;font-size:10px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;
  white-space:nowrap;color:var(--muted);border:1px solid var(--line2);
  background:rgba(255,255,255,.05);border-radius:999px;padding:4px 10px}
.pc-pill--cyan{color:var(--cyan);border-color:rgba(34,211,238,.5);background:rgba(34,211,238,.1)}
.pc-pill--gold{color:var(--gold);border-color:rgba(251,191,36,.5);background:rgba(251,191,36,.1)}

.pc-sub{margin:10px 0 0;font-size:13.5px;color:var(--muted);line-height:1.5;min-height:40px}
.pc-was{margin:22px 0 4px;font-size:12.5px;color:var(--faint);min-height:18px}
.pc-was s{color:var(--faint)}
.pc-price{margin:0;line-height:1;white-space:nowrap;font-variant-numeric:tabular-nums}
.pc-price b{font-size:clamp(30px,3.2vw,38px);font-weight:800;letter-spacing:-.02em;color:var(--text)}
.pc-price .unit{font-size:13px;font-weight:800;color:var(--cyan);margin-left:2px}
.pc-price .per{font-size:13.5px;font-weight:400;color:var(--muted);margin-left:5px}
.pc-day{margin:10px 0 0;font-size:12.5px;color:var(--faint);line-height:1.5;min-height:19px}
/* ── Launch countdown ────────────────────────────────────── */
.launch{max-width:640px;margin:30px auto 4px;padding:20px 24px 17px;border-radius:16px;
  border:1px solid rgba(251,191,36,.34);
  background:linear-gradient(180deg,rgba(251,191,36,.11),rgba(251,191,36,.025));
  box-shadow:inset 0 1px 0 rgba(251,191,36,.16),0 22px 54px -34px rgba(251,191,36,.7)}
.launch-tag{display:inline-block;font-size:11px;font-weight:800;letter-spacing:.13em;
  text-transform:uppercase;color:var(--gold)}
.launch-clock{display:flex;align-items:flex-start;justify-content:center;gap:8px;margin:13px 0 0}
.launch-clock>i{font-style:normal;font-weight:700;font-size:22px;line-height:1.05;
  color:rgba(251,191,36,.4)}
.lc{display:flex;flex-direction:column;align-items:center;gap:5px;min-width:60px}
.lc b{font-size:clamp(27px,3.4vw,34px);font-weight:800;line-height:1;letter-spacing:-.01em;
  color:var(--gold);font-variant-numeric:tabular-nums;text-shadow:0 0 22px rgba(251,191,36,.34)}
.lc span{font-size:10px;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--faint)}
.launch-note{margin:13px 0 0;font-size:12.5px;color:var(--faint)}
@media(max-width:420px){
  .launch{padding:16px 12px 14px}
  .launch-clock{gap:4px}
  .lc{min-width:48px}
  .launch-clock>i{font-size:18px}
}
.pc-day b{color:var(--muted);font-weight:700;font-variant-numeric:tabular-nums}

.pc-cta{display:block;margin:20px 0 0;padding:13px 14px;border-radius:11px;text-align:center;
  font-size:14px;font-weight:700;letter-spacing:.02em;color:var(--text);
  border:1px solid var(--line2);background:rgba(255,255,255,.03);transition:.24s}
.pcard:hover .pc-cta{border-color:rgba(34,211,238,.45);color:var(--cyan)}
.pcard.is-lead .pc-cta{border-color:transparent;font-weight:800;color:#04202a;
  background:linear-gradient(135deg,var(--bull),var(--cyan))}
.pcard.is-lead:hover .pc-cta{color:#04202a;box-shadow:0 0 28px -6px rgba(34,211,238,.7)}

.pc-rule{border:0;border-top:1px solid var(--line);margin:22px 0 16px}
.pcard .plan-feat{margin-top:auto}

.pnav{position:absolute;top:50%;transform:translateY(-50%);z-index:4;
  width:var(--arrow);height:var(--arrow);display:grid;place-items:center;
  border-radius:50%;cursor:pointer;color:var(--muted);
  background:rgba(255,255,255,.04);border:1px solid var(--line2);transition:.22s}
.pnav:hover:not([disabled]){color:var(--cyan);border-color:rgba(34,211,238,.5);
  background:rgba(34,211,238,.08)}
.pnav:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}
.pnav--prev{left:-6px}
.pnav--next{right:-6px}
.pnav svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;
  stroke-linecap:round;stroke-linejoin:round}

@media(max-width:820px){
  /* no room to fan three cards out: they stack and every ribbon shows.
     position:static also tells the script to stop setting a height. */
  .pstage__track{position:static;height:auto!important;display:grid;gap:18px}
  .pcard{position:static;width:auto;transform:none!important;opacity:1!important;
    top:auto;left:auto}
  .pcard:not(.slot-c) .pc-badge{opacity:1}
  .pnav,.pdots{display:none}
}
@media(max-width:560px){
  :root{--sgap:2px;--arrow:36px}
  .pcard{padding:22px 18px 20px}
  .pc-name{font-size:19px}
}
/* Big monitors: the row was holding a laptop-sized measure in the
   middle of a very wide screen. Both rows widen together (they share
   --tmax) and the type inside them grows with the cards, so the
   proportions are unchanged and the block is simply rendered larger. */
@media(min-width:1600px){
  :root{--tmax:1380px}
  .pcard{padding:34px 32px 30px}
  .pc-name{font-size:23px}
  .pc-sub{font-size:15px;min-height:44px}
  .pc-was{font-size:13.5px;margin-top:26px}
  .pc-price b{font-size:42px}
  .pc-price .unit{font-size:14px}
  .pc-price .per{font-size:15px}
  .pc-day{font-size:13.5px}
  .pc-cta{font-size:15px;padding:15px 16px}
  .pcard .plan-feat li{font-size:14.5px}
  .pnav{--arrow:48px}
  .plans.ent .plan{padding:30px 28px 26px}
}
@media(min-width:2000px){
  :root{--tmax:1580px}
  .pcard{padding:38px 36px 34px}
  .pc-name{font-size:25px}
  .pc-sub{font-size:16px;min-height:48px}
  .pc-was{font-size:14.5px;margin-top:30px}
  .pc-price b{font-size:48px}
  .pc-price .unit{font-size:15px}
  .pc-price .per{font-size:16px}
  .pc-day{font-size:14.5px}
  .pc-cta{font-size:16px;padding:17px 18px}
  .pcard .plan-feat li{font-size:15.5px}
  .pnav{--arrow:54px}
  .plans.ent .plan{padding:34px 32px 30px}
  .plans.ent .plan-terms{font-size:14.5px}
}
@media(prefers-reduced-motion:reduce){
  .pcard,.pc-cta,.pnav{transition:none}
}

/* ══ TRADE EXPLORER (results page) ═════════════════════════
   A real TradingView chart (Lightweight Charts, self-hosted) with
   every PRISM trade marked on it, a stepper and filters over it, and
   the whole trade list underneath.

   Colour never carries meaning on its own: every win and loss is also
   signed text, and every marker has an accessible label.
   ═══════════════════════════════════════════════════════════ */
.tvx{max-width:1180px;margin:26px auto 0;border:1px solid var(--line2);
  border-radius:14px;background:var(--panel);overflow:hidden;
  box-shadow:0 30px 72px -44px rgba(0,0,0,.9)}
.tvx-head{padding:18px 20px 16px}
.tvx-h{margin:0 0 6px;font-size:16px;font-weight:800;letter-spacing:-.01em;color:var(--text)}
.tvx-cap{margin:0;font-size:13.5px;color:var(--muted);line-height:1.7}
.tvx-cap b{color:var(--text);font-weight:700}

/* ── chart ─────────────────────────────────────────────────── */
.tvx-stage{position:relative;background:var(--bg);
  border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.tvx-chart{width:100%;height:clamp(320px,40vw,520px)}
.tvx.nochart .tvx-chart{display:none}
.tvx-fallback{position:absolute;inset:0;display:grid;place-items:center;margin:0;
  font-size:13.5px;color:var(--faint);text-align:center;padding:0 20px;pointer-events:none}
.tvx.ready .tvx-fallback{display:none}
.tvx.nochart .tvx-fallback{position:static;padding:26px 20px;line-height:1.7}

/* ── stepper, filters ──────────────────────────────────────── */
.tvx-bar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;
  padding:14px 20px;border-bottom:1px solid var(--line)}
.tvx-nav{display:flex;align-items:center;gap:8px}
.tvx-prev,.tvx-next{width:34px;height:34px;display:grid;place-items:center;flex:none;
  cursor:pointer;border-radius:999px;color:var(--muted);
  border:1px solid var(--line2);background:transparent}
.tvx-prev:hover:not([disabled]),.tvx-next:hover:not([disabled]){color:var(--cyan);border-color:rgba(34,211,238,.5)}
.tvx-prev[disabled],.tvx-next[disabled]{opacity:.28;cursor:default}
.tvx-prev svg,.tvx-next svg{width:16px;height:16px;fill:none;stroke:currentColor;
  stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.tvx-pos{font-size:13.5px;font-weight:700;color:var(--text);min-width:132px;text-align:center;
  font-variant-numeric:tabular-nums}
.tvx-chips{display:flex;flex-wrap:wrap;gap:6px;flex:1}
.tvx-chip,.tvx-fit{font:inherit;font-size:13px;font-weight:600;cursor:pointer;
  padding:7px 13px;border-radius:999px;color:var(--muted);
  border:1px solid var(--line2);background:transparent}
.tvx-chip:hover,.tvx-fit:hover{color:var(--text);border-color:rgba(34,211,238,.4)}
.tvx-chip.on{color:#04202a;background:var(--cyan);border-color:var(--cyan)}
.tvx-chip:focus-visible,.tvx-fit:focus-visible,
.tvx-prev:focus-visible,.tvx-next:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}

/* ── the selected trade ────────────────────────────────────── */
.tvx-detail{padding:18px 20px;border-bottom:1px solid var(--line);
  border-left:3px solid var(--line2)}
.tvx-detail.win{border-left-color:var(--bull)}
.tvx-detail.loss{border-left-color:var(--bear)}
.tvx-d-base{margin:0 0 10px;font-size:12.5px;color:var(--faint)}
.tvx-d-base b{color:var(--muted);font-weight:700}
.tvx-d-top{display:flex;align-items:baseline;flex-wrap:wrap;gap:10px}
.tvx-side{font-size:10.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;
  border-radius:999px;padding:3px 9px}
.tvx-side.long{color:var(--bull);background:rgba(0,229,176,.12);border:1px solid rgba(0,229,176,.4)}
.tvx-side.short{color:var(--bear);background:rgba(255,77,109,.12);border:1px solid rgba(255,77,109,.4)}
.tvx-d-pnl{font-size:clamp(22px,2.6vw,28px);font-weight:800;font-variant-numeric:tabular-nums}
.tvx-detail.win .tvx-d-pnl{color:var(--bull)}
.tvx-detail.loss .tvx-d-pnl{color:var(--bear)}
.tvx-d-ret{font-size:15px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}
.tvx-open{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--gold);border:1px solid rgba(251,191,36,.45);background:rgba(251,191,36,.1);
  border-radius:999px;padding:3px 9px}

/* the running total is the number a reader follows down the list, so it
   sits apart on the right and carries more weight than the fields it
   travels with. Flex rather than grid: only auto margins can push one
   item to the far edge while the rest stay packed left. */
/* Equal columns, not a flex row with the total flung right by an auto
   margin: that packed Entry through Worst point against the left edge and
   left a hole in the middle. The total is simply the last cell, so it still
   lands on the right, and still carries the weight. */
.tvx-d-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:20px;margin:18px 0 0}
.tvx-d-grid>div.tot{text-align:right;padding-left:18px;
  border-left:1px solid var(--line)}
.tvx-d-grid .tot dd{font-size:clamp(20px,2.1vw,25px);font-weight:800;letter-spacing:-.01em}
.tvx-d-grid .tot dd i{font-size:12.5px}
.tvx-d-grid dt{font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
  color:var(--faint);margin:0 0 4px}
.tvx-d-grid dd{margin:0;font-size:15px;font-weight:700;color:var(--text);
  font-variant-numeric:tabular-nums}
.tvx-d-grid dd i{display:block;font-style:normal;font-size:12px;font-weight:400;
  color:var(--muted);margin-top:2px}
.tvx-d-grid dd.pos{color:var(--bull)}
.tvx-d-grid dd.neg{color:var(--bear)}
.tvx-empty{margin:0;color:var(--muted);font-size:14px}

/* ── the trade list ────────────────────────────────────────── */
/* overflow-anchor:none matters here: when a row is picked the box
   scrolls internally, and the browser's scroll anchoring can read that
   as content shifting and nudge the whole page to compensate. */
.tvx-tablewrap{max-height:290px;overflow:auto;overscroll-behavior:contain;
  overflow-anchor:none}
.tvx-table{width:100%;border-collapse:collapse;font-size:13.5px}
.tvx-table thead th{position:sticky;top:0;z-index:1;text-align:left;
  padding:11px 14px;background:var(--panel);border-bottom:1px solid var(--line2);
  font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--faint)}
.tvx-table td{padding:11px 14px;border-bottom:1px solid var(--line);color:var(--muted);
  white-space:nowrap}
.tvx-table .num,.tvx-table td.num,.tvx-table thead th.num{text-align:right;
  font-variant-numeric:tabular-nums;font-weight:600}
.tvx-table td.pos{color:var(--bull)}
.tvx-table td.neg{color:var(--bear)}
.tvx-table td.tot{color:var(--text);font-weight:700}
.tvx-table tbody tr{cursor:pointer;transition:background .15s}
.tvx-table tbody tr:hover td{background:rgba(255,255,255,.03)}
.tvx-table tbody tr.on td{background:rgba(34,211,238,.1);color:var(--text)}
.tvx-table tbody tr:focus-visible{outline:2px solid var(--cyan);outline-offset:-2px}

/* the trade list folds away: it is the long tail of the block, not the
   first thing anyone needs */
.tvx-toggle{display:block;width:100%;font:inherit;font-size:13.5px;font-weight:700;
  cursor:pointer;padding:14px;color:var(--cyan);background:none;
  border:0;border-bottom:1px solid var(--line)}
.tvx-toggle:hover{background:rgba(34,211,238,.06)}
.tvx-toggle:focus-visible{outline:2px solid var(--cyan);outline-offset:-2px}
.tvx-toggle::after{content:" +";font-weight:800}
.tvx-toggle[aria-expanded=true]::after{content:" \2212"}

/* Two columns, then three: both divide six exactly, so the running total
   is always the last cell of its row and lands on the right edge without
   being pushed there. Six across was tried and the panel is not wide
   enough for it once the menu takes its 340px. */
@media(min-width:700px){
  .tvx-d-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:429px){
  .tvx-d-grid{grid-template-columns:minmax(0,1fr)}
  .tvx-d-grid>div.tot{text-align:left;padding:14px 0 0;
    border-left:0;border-top:1px solid var(--line)}
}



@media(min-width:1600px){
  .tvx{max-width:1400px}
  .tvx-cap{font-size:14px}
  .tvx-table{font-size:14.5px}
}
@media(max-width:640px){
  .tvx{margin-top:20px}
  .tvx-head{padding:14px 16px}
  .tvx-h{font-size:15px}
  .tvx-bar{padding:12px 14px;gap:10px}
  .tvx-pos{min-width:0;flex:1}
  .tvx-chips{order:3;width:100%}
  .tvx-fit{order:4}
  .tvx-detail{padding:16px}
  .tvx-chart{height:clamp(280px,58vw,360px)}
  .tvx-table{font-size:12.5px}
  .tvx-table td,.tvx-table thead th{padding:9px 8px}
  .tvx-tablewrap{max-height:240px}
}
/* The trade table sheds columns rather than ever scroll sideways: Total
   is the column the whole list is built around, so it has to stay on
   screen at every width. Order of sacrifice is # and the exit date, then
   the dollar figure, which Added already states as a share of the account. */
@media(max-width:820px){
  .tvx-table .n,.tvx-table .ex{display:none}
}
@media(max-width:640px){
  .tvx-table .usd{display:none}
}
@media(max-width:429px){
  .tvx-table{font-size:11.5px}
  .tvx-table td,.tvx-table thead th{padding:8px 5px}
  .tvx-side{padding:2px 5px;font-size:9px;letter-spacing:.06em}
}
@media(max-width:339px){
  .tvx-table .sd{display:none}
}
@media(prefers-reduced-motion:reduce){
  .tvx-chip,.tvx-fit,.tvx-prev,.tvx-next,.tvx-table tbody tr{transition:none}
}

/* ══ BACKTEST LIBRARY (results page) ══════════════════════
   The same shape as the tutorials library: the whole menu on the
   left, one strategy at a time on the right. The right side starts
   empty, which is also why no chart is built until something is
   picked — three live TradingView charts on load is a lot to hand
   someone who has not asked for any of them yet.
   ═══════════════════════════════════════════════════════════ */
.res-lib{padding:44px 0 90px;background:var(--bg)}
.res-grid{display:grid;grid-template-columns:340px minmax(0,1fr);
  gap:clamp(22px,2.4vw,38px);align-items:start}

.res-side{position:sticky;top:88px}
.res-side-head{padding:0 0 14px}
.res-side-head h2{font-size:17px;margin:0}
.res-count{margin:5px 0 0;font-size:12px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--faint)}
.res-nav{display:grid;gap:12px}

.res-item{display:grid;gap:9px;text-align:left;width:100%;font:inherit;cursor:pointer;
  padding:17px 18px;border-radius:14px;background:var(--panel);
  border:1px solid var(--line);transition:border-color .18s,background .18s}
.res-item:hover{border-color:var(--line2);background:#111a2b}
.res-item.on{border-color:rgba(34,211,238,.55);background:#0d1928;
  box-shadow:0 0 0 1px rgba(34,211,238,.25),0 20px 44px -30px rgba(34,211,238,.5)}
.res-item:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}
.ri-top{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.ri-name{font-size:15.5px;font-weight:800;color:var(--text);letter-spacing:-.01em}
.ri-tf{font-size:10.5px;font-weight:700;letter-spacing:.1em;color:var(--faint);
  border:1px solid var(--line2);border-radius:999px;padding:2px 8px}
.ri-stats{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.ri-pnl{font-size:20px;font-weight:800;letter-spacing:-.02em;
  font-variant-numeric:tabular-nums}
.ri-pnl.pos{color:var(--bull)}
.ri-n{font-size:12.5px;color:var(--muted)}
.ri-desc{font-size:13px;line-height:1.6;color:var(--muted)}
.ri-go{font-size:12.5px;font-weight:700;color:var(--faint);transition:color .18s}
.res-item:hover .ri-go,.res-item.on .ri-go{color:var(--cyan)}
.res-side-note{margin:14px 2px 0;font-size:11.5px;line-height:1.6;color:var(--faint)}

.res-empty[hidden],.res-panel[hidden]{display:none}
.res-empty{display:block}
/* visibility, not display: the space is the point. It reuses .res-panel-head
   so it is exactly as tall as the strategy name that will replace it, at
   every width, and the prompt below never jumps on the click. */
.res-empty-gap{visibility:hidden}
.res-empty-box{display:grid;place-items:center;align-content:center;gap:10px;text-align:center;
  min-height:min(58vh,520px);padding:40px 24px;border-radius:var(--radius);
  border:1px dashed var(--line2);background:
    radial-gradient(ellipse 60% 60% at 50% 45%,rgba(34,211,238,.06),transparent 70%),var(--bg2)}
.res-empty-box svg{width:52px;height:52px;fill:none;stroke:var(--line2);
  stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.res-empty-box svg circle{fill:var(--panel);stroke:var(--faint)}
.res-empty-box p{margin:0;font-size:clamp(17px,2vw,21px);font-weight:700;color:var(--text)}
.res-empty-box span{font-size:13.5px;color:var(--muted);max-width:42ch}

/* .res-panel is a <section>, and section{padding:96px 0} was dropping the
   whole panel 96px below the top of the menu sitting beside it */
.res-panel{padding:0}
.res-panel-head{margin:0 0 20px}
.res-panel-head h2{font-size:clamp(24px,3vw,34px);margin:0 0 10px}
.res-panel-head .lead{margin:0;max-width:70ch}
.res-panel .tvx{margin-top:0;max-width:none}
.res-panel .res-shot,.res-panel .res-tbl-wrap,
.res-panel .res-note,.res-panel .res-beta{max-width:none}

.res-panel .res-shot{margin-top:26px}

@media(max-width:1023px){
  .res-grid{grid-template-columns:minmax(0,1fr)}
  .res-side{position:static}
  .res-nav{grid-template-columns:repeat(auto-fit,minmax(255px,1fr))}
  .res-empty-box{min-height:300px}
  .res-empty-gap{display:none}
}
@media(max-width:640px){
  .res-lib{padding:32px 0 70px}
  .res-item{padding:15px 16px}
  .ri-pnl{font-size:18px}
}

/* ══ SEE IT ON THE CHART (results page) ═══════════════════
   A scroll-snap track, not a transform carousel: swiping is
   then the browser's job and works on a phone without a line of
   script, the arrows and dots only call scrollTo, and nothing
   is out of position if script never runs.
   ═══════════════════════════════════════════════════════════ */
.shots{padding:72px 0 84px;background:var(--bg2)}
.shots-head{text-align:center;max-width:720px;margin:0 auto 34px}
.shots-head h2{font-size:clamp(26px,3.4vw,40px);margin:0 0 12px}
.shots-head .lead{margin:0 auto}

.shot-slider{position:relative;max-width:1180px;margin:0 auto}
.shot-track{display:flex;align-items:center;overflow-x:auto;
  scroll-snap-type:x mandatory;scroll-behavior:smooth;overscroll-behavior-x:contain;
  border-radius:16px;scrollbar-width:none;-ms-overflow-style:none}
.shot-track::-webkit-scrollbar{display:none}
.shot-track:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}
.shot-slide{position:relative;flex:0 0 100%;scroll-snap-align:center;margin:0}
.shot-slide img{display:block;width:100%;height:auto;border-radius:16px;
  border:1px solid var(--line2)}
/* the caption belongs to the picture, so it rides along as the track moves */
.shot-slide figcaption{position:absolute;left:0;right:0;bottom:0;
  display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 14px;
  padding:56px 22px 18px;border-radius:0 0 16px 16px;pointer-events:none;
  background:linear-gradient(180deg,transparent,rgba(4,7,13,.55) 42%,rgba(4,7,13,.93))}
.ss-name{font-size:clamp(16px,1.9vw,21px);font-weight:800;letter-spacing:-.01em;color:#fff}
.ss-ret{font-size:12.5px;font-weight:700;color:var(--bull);font-variant-numeric:tabular-nums}

.shot-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:2;
  width:44px;height:44px;display:grid;place-items:center;cursor:pointer;
  border-radius:999px;color:var(--text);border:1px solid var(--line2);
  background:rgba(9,14,26,.86);backdrop-filter:blur(8px);
  transition:opacity .2s,color .2s,border-color .2s}
.shot-arrow.prev{left:14px}
.shot-arrow.next{right:14px}
.shot-arrow:hover:not([disabled]){color:var(--cyan);border-color:rgba(34,211,238,.55)}
.shot-arrow[disabled]{opacity:0;pointer-events:none}
.shot-arrow svg{width:18px;height:18px;fill:none;stroke:currentColor;
  stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.shot-arrow:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}

.shot-dots{display:flex;justify-content:center;gap:8px;margin-top:18px}
.shot-dot{width:9px;height:9px;padding:0;cursor:pointer;border:0;border-radius:999px;
  background:var(--line2);transition:background .2s,width .2s}
.shot-dot:hover{background:var(--faint)}
.shot-dot.on{width:26px;background:var(--cyan)}
.shot-dot:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}

@media(max-width:640px){
  .shots{padding:52px 0 64px}
  .shot-arrow{width:38px;height:38px}
  .shot-arrow.prev{left:8px}
  .shot-arrow.next{right:8px}
  .shot-slide figcaption{padding:44px 15px 14px}
}
@media(prefers-reduced-motion:reduce){
  .shot-track{scroll-behavior:auto}
  .shot-arrow,.shot-dot{transition:none}
}
