/* TradeRecall site — design language follows the app.
   Values come from design/tokens.json (the `srgb` columns, which is what the
   app actually renders): Inter + Source Serif 4, neutral macOS surfaces,
   gold as the brand accent, card radius 14, compact radius 10, chip radius 4. */

@font-face{font-family:"Inter";src:url(../fonts/Inter-Regular.woff) format("woff");font-weight:400;font-display:swap}
@font-face{font-family:"Inter";src:url(../fonts/Inter-Medium.woff) format("woff");font-weight:500;font-display:swap}
@font-face{font-family:"Inter";src:url(../fonts/Inter-SemiBold.woff) format("woff");font-weight:600;font-display:swap}
@font-face{font-family:"Inter Display";src:url(../fonts/InterDisplay-SemiBold.woff) format("woff");font-weight:600;font-display:swap}
@font-face{font-family:"Source Serif 4";src:url(../fonts/SourceSerif4-Regular.woff) format("woff");font-weight:400;font-display:swap}
@font-face{font-family:"Source Serif 4";src:url(../fonts/SourceSerif4-Semibold.woff) format("woff");font-weight:600;font-display:swap}

/* ---------- tokens: dark (app dark theme) ---------- */
:root{
  --ground:#181818;        /* sidebarBackground */
  --canvas:#282828;        /* canvas */
  --sheet:#1D2023;         /* sheetBackground */
  --card:rgba(255,255,255,.031);   /* sheetCardFill */
  --subtle:rgba(255,255,255,.045); /* subtleFill */
  --border:rgba(255,255,255,.09);  /* cardBorder */
  --stroke:#494B4C;        /* sheetStroke */
  --text:rgba(255,255,255,.847);
  --text-2:rgba(255,255,255,.549);
  --text-3:rgba(255,255,255,.247);
  --accent:#EDD079;        /* accent (goldLight) */
  --gold:#DDBB46;
  --gold-fill:rgba(221,187,70,.14);
  --on-gold:#1b1606;
  --positive:#00BD92;
  --negative:#F16681;
  --select:#005BCC;        /* sidebarSelection */
  --shadow:0 24px 70px rgba(0,0,0,.45),0 2px 10px rgba(0,0,0,.3);
  --r-card:14px;--r-compact:10px;--r-chip:4px;
  --sans:"Inter",system-ui,-apple-system,"Segoe UI",sans-serif;
  --display:"Inter Display","Inter",system-ui,sans-serif;
  --serif:"Source Serif 4",Georgia,serif;
  color-scheme:dark;
}
/* ---------- tokens: light (app light theme) ---------- */
@media (prefers-color-scheme:light){
  :root:not([data-theme="dark"]){
    --ground:#F8F8F8;--canvas:#FFFFFF;--sheet:#FFFFFF;
    --card:rgba(0,0,0,.031);--subtle:rgba(0,0,0,.045);--border:rgba(0,0,0,.09);--stroke:#969696;
    --text:rgba(0,0,0,.847);--text-2:rgba(0,0,0,.498);--text-3:rgba(0,0,0,.259);
    --accent:#9C7F26;--gold-fill:rgba(221,187,70,.2);--select:#0066DC;
    --shadow:0 24px 60px rgba(0,0,0,.14),0 2px 8px rgba(0,0,0,.08);
    color-scheme:light;
  }
}
:root[data-theme="light"]{
  --ground:#F8F8F8;--canvas:#FFFFFF;--sheet:#FFFFFF;
  --card:rgba(0,0,0,.031);--subtle:rgba(0,0,0,.045);--border:rgba(0,0,0,.09);--stroke:#969696;
  --text:rgba(0,0,0,.847);--text-2:rgba(0,0,0,.498);--text-3:rgba(0,0,0,.259);
  --accent:#9C7F26;--gold-fill:rgba(221,187,70,.2);--select:#0066DC;
  --shadow:0 24px 60px rgba(0,0,0,.14),0 2px 8px rgba(0,0,0,.08);
  color-scheme:light;
}

/* ---------- base ---------- */
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:72px;-webkit-text-size-adjust:100%}
body{background:var(--canvas);color:var(--text);font-family:var(--sans);font-size:16px;line-height:1.6;
  -webkit-font-smoothing:antialiased;overflow-x:hidden}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
b{font-weight:600;color:var(--text)}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
.wrap{width:min(1180px,100% - 32px);margin-inline:auto}
.narrow{width:min(780px,100% - 32px)}
.center{text-align:center}
.muted{color:var(--text-2)}
.ic{width:16px;height:16px;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ic.lg{width:22px;height:22px;color:var(--accent)}
:focus-visible{outline:2px solid var(--select);outline-offset:2px;border-radius:4px}

section{padding:112px 0}
.band{background:var(--ground);border-block:1px solid var(--border)}
.kicker{font-size:13px;font-weight:600;letter-spacing:.02em;color:var(--accent);margin-bottom:12px}
h1,h2{font-family:var(--serif);font-weight:600;letter-spacing:-.01em;line-height:1.08;color:var(--text)}
h1{font-size:clamp(42px,5.4vw,70px)}
h2{font-size:clamp(32px,4.2vw,50px);margin-bottom:18px}
h3{font-size:17px;font-weight:600;line-height:1.3}
.accent{color:var(--accent)}
.sub{color:var(--text-2);font-size:18px;max-width:62ch}
.center .sub{margin-inline:auto}
.fineprint{color:var(--text-3);font-size:12.5px;margin-top:18px}

/* ---------- controls (app-like) ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 20px;
  border-radius:var(--r-compact);font-size:15px;font-weight:600;transition:transform .15s,background .2s,border-color .2s}
.btn:active{transform:translateY(1px)}
.btn.primary{background:var(--gold);color:var(--on-gold)}
.btn.primary:hover{background:#E8C766}
.btn.ghost{border:1px solid var(--border);background:var(--card)}
.btn.ghost:hover{background:var(--subtle);border-color:var(--stroke)}
.btn.small{height:34px;padding:0 14px;font-size:13.5px}
.btn.block{width:100%}
.chip{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:500;padding:6px 12px;border-radius:999px;
  border:1px solid var(--border);background:var(--card);color:var(--text-2)}
.chip.gold{color:var(--accent);border-color:color-mix(in srgb,var(--gold) 35%,transparent);background:var(--gold-fill)}
.tag{display:inline-flex;align-items:center;font-size:10.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;
  padding:3px 7px;border-radius:var(--r-chip)}
.tag.gold{background:var(--gold-fill);color:var(--accent)}
.tag.dashed{outline:1px dashed color-mix(in srgb,var(--gold) 70%,transparent);outline-offset:-1px}
.status{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;margin-left:auto}
.status .ic{width:14px;height:14px}
.status.ok{color:var(--positive)}
.status.wait{color:var(--accent)}
.status em{font-style:normal}

/* ---------- header ---------- */
.top{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--canvas) 82%,transparent);
  backdrop-filter:saturate(1.4) blur(16px);-webkit-backdrop-filter:saturate(1.4) blur(16px);border-bottom:1px solid transparent;transition:border-color .3s}
.top.scrolled{border-bottom-color:var(--border)}
.top-row{display:flex;align-items:center;gap:24px;height:64px}
.brand{display:flex;align-items:center;gap:10px;font-weight:600;font-size:17px;white-space:nowrap}
.nav{display:flex;gap:26px;margin-left:auto}
.nav a{font-size:14px;color:var(--text-2);white-space:nowrap;transition:color .2s}
.nav a:hover{color:var(--text)}
.top-actions{display:flex;align-items:center;gap:14px}
.seg{display:flex;background:var(--subtle);border:1px solid var(--border);border-radius:8px;padding:2px}
.seg button{font-size:12px;font-weight:500;padding:4px 9px;border-radius:6px;color:var(--text-2)}
.seg button[aria-checked="true"]{background:var(--canvas);color:var(--text);box-shadow:0 1px 3px rgba(0,0,0,.2)}

/* ---------- hero ---------- */
.hero{padding:72px 0 96px;overflow:hidden}
.hero-grid{display:grid;grid-template-columns:minmax(0,.86fr) minmax(0,1.14fr);gap:56px;align-items:center}
.hero-copy h1{margin:22px 0 22px}
.lead{font-size:clamp(17px,1.5vw,19px);color:var(--text-2);max-width:40ch}
.cta-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px}
.facts{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:10px 22px;margin-top:36px;color:var(--text-2);font-size:14px}
.facts li{display:flex;align-items:center;gap:9px}
.facts .ic{color:var(--accent)}
.hero-shot{position:relative;margin-right:-4vw}
.window{border-radius:12px;overflow:hidden;border:1px solid var(--stroke);box-shadow:var(--shadow);background:#282828;
  aspect-ratio:1180/860}
.window img{width:100%;object-fit:cover;object-position:top}
.float-card{position:absolute;left:-36px;bottom:-34px;width:min(330px,80%);background:var(--sheet);border:1px solid var(--stroke);
  border-radius:var(--r-card);padding:14px 16px;box-shadow:var(--shadow);font-size:14px;animation:floaty 6s ease-in-out infinite}
.float-card p{margin:8px 0 10px}
.fc-head{display:flex;align-items:center;gap:10px}
.fc-head b{display:block;font-size:13.5px;line-height:1.2}
.fc-head small{color:var(--text-2);font-size:12px}
.fc-ico,.e-ico{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--subtle);color:var(--positive)}
@keyframes floaty{50%{transform:translateY(-8px)}}

/* ---------- demo ---------- */
.demo{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:48px;align-items:center;margin-top:54px}
.steps{list-style:none;display:grid;gap:8px}
.steps li{display:flex;gap:16px;padding:16px 18px;border-radius:var(--r-card);border:1px solid transparent;
  transition:background .35s,border-color .35s,opacity .35s;opacity:.55}
.steps li.on{background:var(--card);border-color:var(--border);opacity:1}
.steps li.done{opacity:.85}
.steps .n{flex:none;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-size:13px;font-weight:600;
  border:1px solid var(--border);color:var(--text-2);transition:.35s}
.steps li.on .n,.steps li.done .n{background:var(--gold);border-color:var(--gold);color:var(--on-gold)}
.steps p{color:var(--text-2);font-size:14.5px;margin-top:2px}
.demo-window{background:var(--canvas);border:1px solid var(--stroke);border-radius:12px;box-shadow:var(--shadow);overflow:hidden}
.dw-bar{display:flex;align-items:center;gap:7px;height:38px;padding:0 14px;background:var(--ground);border-bottom:1px solid var(--border);
  font-size:12.5px;color:var(--text-2)}
.dw-bar i{width:11px;height:11px;border-radius:50%;background:var(--text-3)}
.dw-bar i:nth-child(1){background:#FF5F57}.dw-bar i:nth-child(2){background:#FEBC2E}.dw-bar i:nth-child(3){background:#28C840}
.dw-bar span{margin-left:10px}
.dw-body{padding:20px;display:grid;gap:14px;min-height:370px;align-content:start}
.entry{background:var(--card);border:1px solid var(--border);border-radius:var(--r-card);padding:14px 16px;
  transition:opacity .5s,transform .5s cubic-bezier(.2,.8,.2,1)}
.e-head{display:flex;align-items:center;gap:10px}
.e-head b{display:block;font-size:14px;line-height:1.2}
.e-head small{color:var(--text-2);font-size:12px}
.e-ico.gold{color:var(--accent)}
.side{margin-left:auto;font-size:12px;font-weight:600;padding:2px 8px;border-radius:var(--r-chip)}
.side.long{color:var(--positive);background:color-mix(in srgb,var(--positive) 14%,transparent)}
.e-row{display:flex;gap:18px;margin-top:10px;font-size:14px;font-variant-numeric:tabular-nums}
.e-row .muted{margin-left:auto}
.transcript{margin:10px 0 0;font-size:15px;min-height:1.6em}
.caret{display:inline-block;width:2px;height:1.05em;background:var(--accent);vertical-align:-2px;margin-left:1px;animation:blink 1s steps(2) infinite}
@keyframes blink{50%{opacity:0}}
.proposal{display:flex;align-items:center;gap:10px;margin-top:12px;flex-wrap:wrap}
.prop-actions{margin-left:auto;display:flex;gap:6px}
.mini{font-size:12.5px;font-weight:500;padding:4px 11px;border-radius:7px;border:1px solid var(--border);background:var(--subtle)}
.mini.primary{background:var(--gold);color:var(--on-gold);border-color:var(--gold)}
.mini.pressed{transform:scale(.94)}
.demo.confirmed .prop-actions{display:none}
.tie{display:flex;align-items:center;gap:7px;margin-top:12px;padding-top:12px;border-top:1px solid var(--border);font-size:13px;color:var(--positive)}
.tie .ic{width:14px;height:14px}
.dw-foot{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-top:1px solid var(--border);
  font-size:12.5px;color:var(--text-2);background:var(--ground)}
.dw-foot span,.replay{display:inline-flex;align-items:center;gap:6px}
.dw-foot .ic{width:14px;height:14px}
.replay{color:var(--accent);font-size:12.5px;font-weight:500}
/* hidden-until-step (only when JS runs the demo) */
.js .demo:not(.final) [data-show]{opacity:0;transform:translateY(10px)}
.js .demo [data-show].shown{opacity:1;transform:none}
.demo.final .caret{display:none}

/* ---------- screens ---------- */
.app-frame{display:grid;grid-template-columns:220px minmax(0,1fr);margin-top:48px;border:1px solid var(--stroke);border-radius:12px;
  overflow:hidden;box-shadow:var(--shadow);background:var(--canvas)}
.sidebar{display:flex;flex-direction:column;gap:2px;padding:16px 10px;background:var(--ground);border-right:1px solid var(--border)}
.sidebar button{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:7px;font-size:14px;text-align:left;color:var(--text)}
.sidebar button:hover{background:var(--subtle)}
.sidebar button[aria-selected="true"]{background:var(--select);color:#fff}
.side-foot{margin-top:auto;display:flex;align-items:center;gap:8px;padding:10px;font-size:12.5px;color:var(--text-2)}
.side-foot .ic{color:var(--positive);width:14px;height:14px}
.stage{padding:22px;background:var(--canvas)}
.stage img{border-radius:10px;border:1px solid var(--border);width:100%;aspect-ratio:1180/900;object-fit:cover;object-position:top;
  transition:opacity .25s}
.caption{color:var(--text-2);font-size:14.5px;margin-top:16px;min-height:3.2em}

/* ---------- cards ---------- */
.cards{display:grid;gap:16px;margin-top:44px}
.cards.six{grid-template-columns:repeat(3,1fr)}
.cards.three{grid-template-columns:repeat(3,1fr);align-items:stretch}
.cards.two{grid-template-columns:repeat(2,1fr);align-items:stretch}
.beta-card h3{margin:16px 0 14px}
.beta-card .checks{flex:0;margin-bottom:16px}
.beta-card .join{margin-top:18px}
.beta-card .fineprint{margin-top:10px}
.notify{display:flex;gap:8px;margin-top:18px}
.notify input{flex:1;min-width:0;height:44px;padding:0 14px;border-radius:var(--r-compact);border:1px solid var(--border);
  background:var(--canvas);color:var(--text);font:inherit;font-size:15px}
.notify input:focus{outline:2px solid var(--select);outline-offset:0}
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--r-card);padding:24px}
.card h3{margin:14px 0 6px}
.card p{color:var(--text-2);font-size:15px}
.band .card{background:var(--canvas)}
.plan{display:flex;flex-direction:column}
.plan h3{margin-top:0}
.plan .price{font-family:var(--display);font-size:40px;font-weight:600;color:var(--text)!important;margin:8px 0 18px;font-variant-numeric:tabular-nums}
.plan .price small{font-family:var(--sans);font-size:15px;font-weight:400;color:var(--text-2)}
.plan.featured{border-color:color-mix(in srgb,var(--gold) 55%,transparent);background:linear-gradient(180deg,var(--gold-fill),var(--card) 45%)}
.checks{list-style:none;display:grid;gap:10px;margin-bottom:26px;flex:1;font-size:15px}
.checks li{display:flex;gap:10px}
.checks li::before{content:"";flex:none;width:16px;height:16px;margin-top:4px;background:var(--positive);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 13l4 4L19 7'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 13l4 4L19 7'/%3E%3C/svg%3E") center/contain no-repeat}

/* ---------- faq ---------- */
.faq{margin-top:36px;display:grid;gap:10px}
.faq details{background:var(--canvas);border:1px solid var(--border);border-radius:var(--r-card);padding:0 20px}
.faq summary{list-style:none;cursor:pointer;padding:18px 0;font-weight:600;display:flex;justify-content:space-between;gap:16px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";color:var(--accent);font-size:20px;line-height:1;transition:transform .25s}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq details p{color:var(--text-2);padding:0 0 20px;max-width:64ch}

/* ---------- final ---------- */
.final{padding:120px 0}
.final-mark{margin:0 auto 26px}
.final .sub{margin-bottom:34px}
.name-note{display:flex;justify-content:center;flex-wrap:wrap;gap:10px 28px;margin-top:56px;font-size:13.5px;color:var(--text-3)}
.name-note b{color:var(--text-2);font-weight:600}

/* ---------- footer ---------- */
.foot{background:var(--ground);border-top:1px solid var(--border);padding:56px 0 28px;font-size:14.5px}
.foot-grid{display:flex;justify-content:space-between;gap:40px;flex-wrap:wrap}
.foot-grid .brand{margin-bottom:12px}
.foot-grid p{margin-top:4px;max-width:52ch}
.origin a{color:var(--accent);border-bottom:1px solid transparent}
.origin a:hover{border-bottom-color:var(--accent)}
.foot nav{display:grid;grid-template-columns:repeat(2,auto);gap:8px 36px;align-content:start}
.foot nav a{color:var(--text-2)}
.foot nav a:hover{color:var(--text)}
.foot-bottom{display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-top:40px;padding-top:20px;
  border-top:1px solid var(--border);color:var(--text-3);font-size:13px}

/* ---------- reveal ---------- */
.js .reveal{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.8,.2,1)}
.js .reveal.in{opacity:1;transform:none}

/* ---------- responsive ---------- */
@media (max-width:1040px){
  .nav{display:none}
  .top-actions{margin-left:auto}
  .hero-grid,.demo{grid-template-columns:1fr}
  .hero-shot{max-width:680px;margin-right:0}
  .float-card{left:auto;right:12px}
  .cards.six{grid-template-columns:1fr 1fr}
}
@media (max-width:760px){
  section{padding:80px 0}
  .hero{padding:40px 0 80px}
  .hide-sm{display:none}
  .facts{grid-template-columns:1fr}
  .float-card{position:relative;right:auto;left:auto;bottom:auto;margin:-40px 12px 0 auto;width:min(320px,90%)}
  .cards.six,.cards.three,.cards.two{grid-template-columns:1fr}
  .notify{flex-direction:column}
  .app-frame{grid-template-columns:1fr}
  .sidebar{flex-direction:row;overflow-x:auto;border-right:0;border-bottom:1px solid var(--border);padding:10px}
  .sidebar button{white-space:nowrap;flex:none}
  .side-foot{display:none}
  .stage{padding:14px}
  .dw-body{min-height:0;padding:14px}
  .e-row{flex-wrap:wrap;gap:6px 14px}
}
/* set by site.js from Reduce Motion (overridable with ?motion=full) */
html.reduced{scroll-behavior:auto}
html.reduced *,html.reduced *::before,html.reduced *::after{animation:none!important;transition:none!important}
/* …except the demo: with Reduce Motion it still plays, as plain fades with no movement */
html.reduced .demo [data-show]{transition:opacity .4s ease!important;transform:none!important}
html.reduced .steps li,html.reduced .steps .n{transition:background .3s,border-color .3s,opacity .3s,color .3s!important}
html.reduced .caret{animation:blink 1s steps(2) infinite!important}
