/* Ledger — a daily/weekly/monthly reading of the tech market.
   Fraunces (display) + Inter (text). Each cadence carries its own accent. */

:root {
  --ink:      #181513;
  --ink-soft: #57514b;
  --faint:    #8c847b;
  --line:     #e8e2da;
  --line-soft:#f1ece5;
  --paper:    #fbfaf7;
  --card:     #ffffff;
  --raise:    0 1px 2px rgba(40,33,24,.04), 0 6px 18px rgba(40,33,24,.05);

  --buy:        #2f7d4f;
  --accumulate: #4a8a6f;
  --hold:       #8c847b;
  --reduce:     #b07e2e;
  --sell:       #b8442f;
  --up:         #2f7d4f;
  --down:       #b8442f;

  --accent:     #b5642c;   /* default; overridden per cadence */
  --accent-soft:#f4e9df;
  --maxw: 820px;
}

/* cadence identities — accent per cadence, on a shared dark canvas */
.theme-daily   { --accent:#f0a35e; --accent-soft:rgba(240,163,94,.13); }  /* amber  */
.theme-weekly  { --accent:#8b9cff; --accent-soft:rgba(139,156,255,.13); } /* indigo */
.theme-monthly { --accent:#4ade80; --accent-soft:rgba(74,222,128,.13); }  /* green  */
.theme-home    { --accent:#34d399; --accent-soft:rgba(52,211,153,.12); }

/* the issue/detail pages share the landing's dark canvas */
body.theme-daily, body.theme-weekly, body.theme-monthly {
  --ink:#e9eaee; --ink-soft:#b9bdc7; --faint:#888e9a;
  --line:rgba(255,255,255,.11); --line-soft:rgba(255,255,255,.06);
  --paper:#0a0b0f; --card:#13151c;
  --raise:0 1px 2px rgba(0,0,0,.35), 0 10px 30px rgba(0,0,0,.42);
  --buy:#34d399; --accumulate:#5fd0a3; --hold:#9aa1ad;
  --reduce:#e3a857; --sell:#f87171; --up:#34d399; --down:#f87171;
}
/* terminal-style mono numerics + tickers, to echo the landing */
body.theme-daily, body.theme-weekly, body.theme-monthly {
  --mono:"JetBrains Mono", ui-monospace, monospace;
}
.theme-daily .num, .theme-weekly .num, .theme-monthly .num,
.theme-daily .tkr, .theme-weekly .tkr, .theme-monthly .tkr,
.theme-daily .idx, .theme-weekly .idx, .theme-monthly .idx,
.theme-daily .px, .theme-weekly .px, .theme-monthly .px,
.theme-daily .lv, .theme-weekly .lv, .theme-monthly .lv {
  font-family: var(--mono); font-feature-settings:"tnum";
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0; background: var(--paper); color: var(--ink);
  font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: 16px; line-height: 1.55; -webkit-font-smoothing: antialiased;
}
.wrap { max-width: var(--maxw); margin: 0 auto; padding: 52px 24px 96px; }
a { color: inherit; text-decoration: none; }
a:hover { text-decoration: none; }
.num { font-variant-numeric: tabular-nums; }
.up { color: var(--up); } .down { color: var(--down); } .faint { color: var(--faint); }

/* ---- masthead ---------------------------------------------------- */
.masthead { position:relative; border-bottom: 1px solid var(--line); padding-bottom: 22px; margin-bottom: 30px; }
.masthead::before {
  content:""; position:absolute; top:-70px; left:-60px; width:440px; height:240px;
  pointer-events:none; z-index:0; filter:blur(34px);
  background:radial-gradient(closest-side, var(--accent-soft), transparent 72%);
}
.masthead > * { position:relative; z-index:1; }
.masthead .kicker {
  display: flex; justify-content: space-between; gap: 12px;
  font-family: var(--mono, inherit); font-size: 12px; letter-spacing: .08em;
  text-transform: uppercase; color: var(--faint);
}
.masthead .kicker a { font-weight: 600; color: var(--ink); }
.eyebrow {
  margin: 18px 0 6px; font-size: 13px; font-weight: 700; letter-spacing: .14em;
  text-transform: uppercase; color: var(--accent);
}
.eyebrow span { color: var(--faint); font-weight: 500; letter-spacing: .04em; text-transform: none; }
.masthead h1 {
  font-family: "Fraunces", Georgia, serif; font-weight: 600;
  font-size: 40px; line-height: 1.04; letter-spacing: -0.015em; margin: 0 0 10px;
}
.masthead .tagline {
  font-family: "Fraunces", Georgia, serif; font-size: 19px; font-style: italic;
  color: var(--ink-soft); max-width: 54ch; margin: 0;
}
.issue-meta { display: flex; gap: 16px; flex-wrap: wrap; font-size: 12.5px; color: var(--faint); margin-top: 16px; }

/* ---- sections ---------------------------------------------------- */
.section { margin-top: 40px; }
.section > h2 {
  font-family: "Fraunces", Georgia, serif; font-size: 13px; font-weight: 600;
  letter-spacing: .1em; text-transform: uppercase; color: var(--ink-soft);
  border-bottom: 1px solid var(--line); padding-bottom: 8px; margin: 0 0 18px;
}
.section > h2::before {
  content: ""; display: inline-block; width: 9px; height: 9px; border-radius: 2px;
  background: var(--accent); margin-right: 9px; vertical-align: baseline;
}
.lede { font-family: "Fraunces", Georgia, serif; font-size: 19px; line-height: 1.5; margin: 0 0 18px; }
.movers h3, .dcol h3 { font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--faint); margin: 0 0 10px; font-weight: 600; }

/* ---- strip ------------------------------------------------------- */
.strip { display: flex; flex-wrap: wrap; gap: 10px; }
.strip .cell {
  background: var(--card); border: 1px solid var(--line); border-radius: 8px;
  padding: 8px 14px; font-size: 15px; box-shadow: var(--raise);
}
.strip .cell .k { display: block; color: var(--faint); font-size: 11px; letter-spacing: .06em; text-transform: uppercase; margin-bottom: 2px; }
/* keep the holdings stats on one line on desktop (wraps to 2-up on mobile) */
.strip-fit { display:grid; grid-auto-flow:column; grid-auto-columns:minmax(0,1fr); gap:8px; }
.strip-fit .cell { padding:8px 11px; min-width:0; }
.strip-fit .cell .k { font-size:10px; }
.strip-fit .cell .num { font-size:12px; line-height:1.3; white-space:normal; overflow-wrap:anywhere; }
/* P&L: lead with the %, demote the absolute amount to a small faint line */
.strip .cell .sub { display:block; font-size:10px; font-weight:400; color:var(--faint); margin-top:1px; letter-spacing:0; }
@media (max-width:760px){
  .strip-fit { grid-auto-flow:row; grid-template-columns:repeat(2,minmax(0,1fr)); }
}

/* ---- verdict / regime badges ------------------------------------- */
.verdict {
  display: inline-block; font-size: 10.5px; font-weight: 700; letter-spacing: .07em;
  text-transform: uppercase; padding: 2px 7px; border-radius: 4px;
  border: 1px solid currentColor; margin-left: 8px; vertical-align: middle;
}
.verdict.score { margin-left: 4px; background: currentColor; }
.verdict.score::after { content: attr(data-x); }
.score { color: #fff !important; }
.verdict.score { color: var(--c); }
.v-BUY { color: var(--buy); } .v-ACCUMULATE { color: var(--accumulate); }
.v-HOLD { color: var(--hold); } .v-REDUCE { color: var(--reduce); } .v-SELL { color: var(--sell); }
.verdict.score.v-BUY { background: var(--buy); color:#fff; }
.verdict.score.v-ACCUMULATE { background: var(--accumulate); color:#fff; }
.verdict.score.v-HOLD { background: var(--hold); color:#fff; }
.verdict.score.v-REDUCE { background: var(--reduce); color:#fff; }
.verdict.score.v-SELL { background: var(--sell); color:#fff; }
.regime { display:inline-block; font-size:11px; font-weight:700; letter-spacing:.07em; text-transform:uppercase; padding:3px 9px; border-radius:5px; color:#fff; margin-right:6px; }
.regime.v-BUY { background: var(--buy); } .regime.v-HOLD { background: var(--hold); } .regime.v-SELL { background: var(--sell); }

/* ---- charts ------------------------------------------------------ */
.spark { display:block; width: 140px; height: 34px; }
.spark polyline { fill:none; stroke-width:1.6; vector-effect:non-scaling-stroke; }
.spark .area { opacity:.15; stroke:none; }
.spark-up polyline { stroke: var(--up); } .spark-up .area { fill: var(--up); }
.spark-down polyline { stroke: var(--down); } .spark-down .area { fill: var(--down); }
.spark-accent polyline { stroke: var(--accent); } .spark-accent .area { fill: var(--accent); }

.sbar { position: relative; height: 7px; margin-top: 9px; max-width: 360px; }
.sbar .track {
  position:absolute; inset:0; border-radius:4px;
  background: linear-gradient(90deg,
    var(--sell) 0%, var(--reduce) 32%, var(--hold) 45%,
    var(--accumulate) 58%, var(--buy) 78%);
  opacity:.42;
}
.sbar .mk { position:absolute; top:-3px; width:3px; height:13px; border-radius:2px; transform:translateX(-50%); }
.sbar .mk.v-BUY { background: var(--buy); } .sbar .mk.v-ACCUMULATE { background: var(--accumulate); }
.sbar .mk.v-HOLD { background: var(--hold); } .sbar .mk.v-REDUCE { background: var(--reduce); } .sbar .mk.v-SELL { background: var(--sell); }

.wbar { position:relative; height:7px; border-radius:4px; background: var(--line); overflow:hidden; min-width:90px; }
.wbar span { position:absolute; inset:0 auto 0 0; background: var(--ink-soft); border-radius:4px; }
.wbar.accent span { background: var(--accent); }

/* ---- ranked book ------------------------------------------------- */
.rank { list-style:none; margin:0; padding:0; }
.row, .hrow {
  display:grid; grid-template-columns: 30px 1fr auto; gap: 6px 16px;
  padding: 16px 0; border-bottom:1px solid var(--line-soft);
}
.hrow { grid-template-columns: 1fr auto; }
.row:last-child, .hrow:last-child { border-bottom:0; }
.row .idx { color:var(--faint); font-size:13px; font-variant-numeric:tabular-nums; }
.head { display:flex; align-items:center; gap:9px; flex-wrap:wrap; }
.name { font-weight:600; }
.tkr { color:var(--faint); font-size:12px; letter-spacing:.03em; }
.region { font-size:10px; letter-spacing:.06em; color:var(--faint); border:1px solid var(--line); border-radius:3px; padding:1px 5px; }
.why { color:var(--ink-soft); font-size:13.5px; margin-top:4px; }
.bars { display:flex; flex-wrap:wrap; gap:8px; margin-top:6px; font-size:11px; color:var(--faint); }
.bars .b { font-variant-numeric:tabular-nums; background:var(--line-soft); padding:1px 6px; border-radius:3px; }
.aside, .hnums { text-align:right; white-space:nowrap; display:flex; flex-direction:column; align-items:flex-end; gap:3px; }
.aside .spark, .hnums .spark { width:120px; height:30px; margin-bottom:2px; }
.px { font-variant-numeric:tabular-nums; font-size:14px; }
.chg { font-variant-numeric:tabular-nums; font-size:12.5px; }

/* ---- portfolio --------------------------------------------------- */
.holdings, .htoday, .wmove { list-style:none; margin:0; padding:0; }
.act { font-size:10px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; padding:2px 7px; border-radius:4px; color:#fff; }
.a-KEEP { background: var(--hold); }
.a-SELL { background: var(--sell); }
.a-BUY  { background: var(--buy); }
.hval { font-variant-numeric:tabular-nums; font-size:14px; font-weight:600; }
.hw { color:var(--faint); font-weight:400; font-size:12px; margin-left:4px; }
.hpnl { font-size:12.5px; }
.rk { color:var(--faint); font-size:12px; }
.xray { font-size:12.5px; color:var(--ink-soft); margin:12px 0 4px; }
.warn { color:var(--sell); font-weight:600; }
.htoday li, .wmove li { display:flex; justify-content:space-between; gap:14px; align-items:center; padding:9px 0; border-bottom:1px solid var(--line-soft); font-size:14.5px; }
.htoday li:last-child, .wmove li:last-child { border-bottom:0; }
.dn { display:flex; align-items:center; gap:8px; }
.dd { font-variant-numeric:tabular-nums; font-size:13.5px; white-space:nowrap; }
.wk { display:flex; align-items:center; gap:8px; }
.wk .spark { width:70px; }

/* ---- decision board --------------------------------------------- */
.board { display:grid; grid-template-columns: repeat(3,1fr); gap:14px; }
.board2 { display:grid; grid-template-columns: repeat(2,1fr); gap:14px; }
.dcol { background:var(--card); border:1px solid var(--line); border-radius:10px; padding:14px 16px; box-shadow:var(--raise); border-top:3px solid var(--line); }
.dcol h3 { margin-top:2px; }
.dcol ul { list-style:none; margin:0; padding:0; }
.dcol li { display:flex; justify-content:space-between; gap:8px; padding:6px 0; border-bottom:1px solid var(--line-soft); font-size:14px; }
.dcol li:last-child { border-bottom:0; }
.col-keep { border-top-color: var(--hold); }
.col-sell { border-top-color: var(--sell); }
.col-buy  { border-top-color: var(--buy); }
.newtag { font-size:9.5px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; padding:1px 5px; border-radius:3px; background:var(--accent-soft); color:var(--accent); }
.newtag.add { background:var(--line-soft); color:var(--buy); }

/* ---- allocation -------------------------------------------------- */
.accent-box {
  background: color-mix(in oklab, var(--accent) 6%, var(--card));
  border:1px solid color-mix(in oklab, var(--accent) 28%, var(--line));
  border-radius:16px; padding: 22px 24px;
  box-shadow: 0 0 60px -28px var(--accent);
}
.accent-box > h2 { border-bottom-color: rgba(255,255,255,.12); color: var(--ink); }
.alloc { list-style:none; margin:0; padding:0; }
.alloc li { display:flex; justify-content:space-between; gap:16px; align-items:center; padding:12px 0; border-bottom:1px solid var(--line); }
.alloc li:last-child { border-bottom:0; }
.aamt { text-align:right; white-space:nowrap; }
.amt { font-family:"Fraunces",serif; font-size:20px; font-weight:600; color:var(--accent); font-variant-numeric:tabular-nums; }
.im { font-size:11.5px; color:var(--ink-soft); margin-top:1px; }

/* ---- market context ---------------------------------------------- */
.ctx { list-style:none; margin:8px 0 0; padding:0; }
.ctx li { display:grid; grid-template-columns: 1.3fr 90px .9fr .8fr .8fr 1.1fr; gap:10px; align-items:center; padding:7px 0; border-bottom:1px solid var(--line-soft); font-size:14px; }
.ctx li:last-child { border-bottom:0; }
.ctx li.hd { color:var(--faint); font-size:11px; letter-spacing:.05em; text-transform:uppercase; border-bottom:1px solid var(--line); }
.ctx .bn { font-weight:500; }
.ctx .sp .spark { width:80px; height:22px; }
.ctx .lv { font-variant-numeric:tabular-nums; }
.ctx .tr { text-align:right; font-size:12px; }

/* ---- ipo + news -------------------------------------------------- */
.movers { display:grid; grid-template-columns:1fr 1fr; gap:26px; }
.movers ul { list-style:none; margin:0; padding:0; }
.movers > div > ul > li { display:flex; justify-content:space-between; padding:5px 0; font-size:14px; }
.ipo { list-style:none; margin:0; padding:0; }
.ipo li { display:flex; justify-content:space-between; gap:12px; padding:8px 0; border-bottom:1px solid var(--line-soft); }
.ipo li:last-child { border-bottom:0; }
.ipo .co { font-weight:500; font-size:14px; }
.ipo .ir { text-align:right; white-space:nowrap; }
.ipo .num { font-variant-numeric:tabular-nums; font-size:13.5px; }
.news { list-style:none; margin:0; padding:0; }
.news li { padding:10px 0; border-bottom:1px solid var(--line-soft); }
.news li:last-child { border-bottom:0; }
.news .t { font-size:15px; } .news .m { font-size:12px; color:var(--faint); margin-top:2px; }

/* ---- conviction cards (monthly) ---------------------------------- */
.convlist { list-style:none; margin:0; padding:0; display:grid; gap:12px; }
.ccard { display:grid; grid-template-columns: 34px 1fr 200px; gap:8px 16px; background:var(--card); border:1px solid var(--line); border-radius:12px; padding:16px 18px; box-shadow:var(--raise); }
.crank { font-family:"Fraunces",serif; font-size:22px; color:var(--accent); font-weight:600; }
.cstats { display:flex; flex-wrap:wrap; gap:12px; margin-top:9px; font-size:12px; color:var(--ink-soft); }
.cstats b { color:var(--ink); }
.cright { text-align:right; display:flex; flex-direction:column; align-items:flex-end; gap:7px; }
.cright .spark { width:130px; height:40px; }
.cweight { display:flex; align-items:center; gap:7px; width:100%; justify-content:flex-end; }
.wlbl { font-size:10px; letter-spacing:.05em; text-transform:uppercase; color:var(--faint); }
.wpct { font-variant-numeric:tabular-nums; font-size:13px; font-weight:600; color:var(--accent); }

/* ---- landing ----------------------------------------------------- */
.hero { padding: 24px 0 30px; border-bottom: 2px solid var(--ink); margin-bottom: 30px; }
.hero .kicker { display:flex; justify-content:space-between; font-size:12px; letter-spacing:.12em; text-transform:uppercase; color:var(--faint); }
.hero h1 { font-family:"Fraunces",serif; font-weight:600; font-size:64px; line-height:.98; letter-spacing:-.02em; margin:18px 0 12px; }
.hero .lead { font-family:"Fraunces",serif; font-size:22px; font-style:italic; color:var(--ink-soft); max-width:32ch; margin:0 0 10px; }
.hero .lead2 { font-size:15px; color:var(--ink-soft); max-width:60ch; margin:0; }
.channels { display:grid; grid-template-columns: repeat(3,1fr); gap:14px; margin-bottom:8px; }
.chan { display:flex; flex-direction:column; gap:8px; background:var(--card); border:1px solid var(--line); border-left:4px solid var(--accent); border-radius:12px; padding:18px; box-shadow:var(--raise); transition: transform .12s ease, box-shadow .12s ease; }
.chan:hover { transform: translateY(-3px); box-shadow: 0 10px 26px rgba(40,33,24,.10); }
.ch-daily { border-left-color:#c06a2b; } .ch-weekly { border-left-color:#3f57c4; } .ch-monthly { border-left-color:#1f7a4d; }
.cname { font-family:"Fraunces",serif; font-size:20px; font-weight:600; }
.cblurb { font-size:13.5px; color:var(--ink-soft); flex:1; }
.cmeta { display:flex; justify-content:space-between; font-size:11.5px; color:var(--faint); letter-spacing:.02em; border-top:1px solid var(--line-soft); padding-top:8px; }

.archive { list-style:none; margin:0; padding:0; }
.archive li { border-bottom:1px solid var(--line-soft); }
.archive .ti { display:grid; grid-template-columns: 60px 130px 1fr auto; gap:16px; align-items:center; padding:13px 4px; border-radius:6px; }
.archive .ti:hover { background:var(--line-soft); }
.archive .no { color:var(--faint); font-variant-numeric:tabular-nums; font-size:14px; }
.archive .til { font-weight:500; }
.archive .dt { color:var(--faint); font-size:13px; font-variant-numeric:tabular-nums; }
.badge { font-size:10px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; padding:4px 8px 3px; border-radius:4px; text-align:center; }
.b-daily { background:#f7ebdd; color:#a8551d; } .b-weekly { background:#e7eafb; color:#33449e; } .b-monthly { background:#e2f1e8; color:#1c6c44; }

/* ---- footer ------------------------------------------------------ */
.foot { margin-top:60px; padding-top:20px; border-top:1px solid var(--line); color:var(--faint); font-size:12.5px; }
.foot p { margin:0 0 8px; } .foot .sources { line-height:1.8; } .disclaimer { font-style:italic; }

/* ================================================================== */
/*  LANDING PAGE — dark, zed.dev-inspired (scoped to .theme-home)       */
/* ================================================================== */
body.theme-home {
  --bg:#0a0b0f; --bg2:#12141b; --hair:rgba(255,255,255,.09);
  --tx:#e9eaee; --mut:#9aa1ad; --dim:#6b7280;
  --up:#34d399; --down:#f87171;
  background: var(--bg); color: var(--tx);
}
.theme-home .wrap { max-width:none; padding:0; }
.lp-inner { max-width:1060px; margin:0 auto; padding:0 28px; }
.lp-block { margin-top:72px; }
.grad, .lp-title em {
  background:linear-gradient(100deg,#34d399,#22d3ee,#818cf8);
  -webkit-background-clip:text; background-clip:text; color:transparent;
  font-style:normal;
}
/* expand the text-clip box on the right AND bottom so neither the final
   glyph's right edge nor a descender ("y") falls outside the painted gradient;
   the matching negative margins cancel any layout shift */
.lp-title em { display:inline-block; padding:0 .14em .14em 0; margin:0 -.14em -.14em 0; }

/* ticker tape */
.ticker {
  border-top:1px solid var(--hair); border-bottom:1px solid var(--hair);
  background:linear-gradient(180deg,#0e1016,#0a0b0f);
  overflow:hidden; white-space:nowrap;
}
.tk-track { display:inline-flex; gap:0; width:max-content; animation:marq 70s linear infinite; }
.ticker:hover .tk-track { animation-play-state:paused; }
.tk {
  display:inline-flex; align-items:center; gap:9px; padding:11px 22px;
  border-right:1px solid var(--hair); font-family:"JetBrains Mono",monospace;
  font-size:12.5px; color:var(--mut);
}
.tk b { color:var(--tx); font-weight:700; letter-spacing:.02em; }
.tk .tp { color:var(--dim); }
.tk .up { color:var(--up); } .tk .down { color:var(--down); } .tk .flat { color:var(--dim); }
@keyframes marq { from{transform:translateX(0)} to{transform:translateX(-50%)} }

/* hero */
.lp-hero { position:relative; overflow:hidden; padding:84px 0 60px; }
.lp-hero::before {
  content:""; position:absolute; top:-260px; left:50%; transform:translateX(-50%);
  width:1100px; height:720px; pointer-events:none; filter:blur(22px);
  background:radial-gradient(closest-side, rgba(52,211,153,.20),
    rgba(129,140,248,.12) 48%, transparent 74%);
}
.lp-hero::after {
  content:""; position:absolute; inset:0; pointer-events:none; opacity:.5;
  background:linear-gradient(180deg,transparent 60%,var(--bg));
}
.lp-hero .lp-inner { position:relative; z-index:1; }
.brand {
  display:inline-flex; align-items:center; gap:9px;
  font-family:"JetBrains Mono",monospace; font-size:14px; font-weight:700;
  letter-spacing:.06em; color:var(--tx); text-transform:uppercase;
  border:1px solid var(--hair); border-radius:999px; padding:7px 14px; margin-bottom:30px;
}
.brand .dot { width:8px; height:8px; border-radius:50%; background:var(--up);
  box-shadow:0 0 0 0 rgba(52,211,153,.6); animation:pulse 2.4s ease-out infinite; }
@keyframes pulse { 0%{box-shadow:0 0 0 0 rgba(52,211,153,.5)} 70%{box-shadow:0 0 0 9px rgba(52,211,153,0)} 100%{box-shadow:0 0 0 0 rgba(52,211,153,0)} }
.lp-title {
  font-family:"Inter",sans-serif; font-weight:800;
  font-size:clamp(40px,7.2vw,82px); line-height:1.01; letter-spacing:-.035em;
  margin:0 0 22px; color:var(--tx);
}
.lp-sub { font-size:18px; line-height:1.6; color:var(--mut); max-width:60ch; margin:0 0 30px; }
.lp-cta { display:flex; align-items:center; gap:18px; flex-wrap:wrap; }
.btn {
  display:inline-flex; align-items:center; gap:8px; font-weight:600; font-size:15px;
  padding:12px 22px; border-radius:999px; transition:transform .12s ease, box-shadow .2s ease;
}
.btn.primary { color:#06231a; background:linear-gradient(100deg,#34d399,#22d3ee); }
.btn.primary span { transition:transform .15s ease; }
.btn.primary:hover { transform:translateY(-2px); box-shadow:0 10px 30px rgba(34,211,238,.30); }
.btn.primary:hover span { transform:translateX(3px); }
.chips { display:flex; gap:8px; flex-wrap:wrap; }
.chips span {
  font-family:"JetBrains Mono",monospace; font-size:11.5px; color:var(--mut);
  border:1px solid var(--hair); border-radius:999px; padding:6px 12px;
}

/* eyebrow + section heads */
.eyebrow2 { font-family:"JetBrains Mono",monospace; font-size:12px; letter-spacing:.18em;
  text-transform:uppercase; color:var(--dim); margin-bottom:18px; }
.arc-head { display:flex; align-items:baseline; justify-content:space-between; border-bottom:1px solid var(--hair); padding-bottom:12px; margin-bottom:6px; }
.arc-head h2 { font-family:"Fraunces",serif; font-weight:600; font-size:22px; margin:0; color:var(--tx); }
.arc-head span { font-family:"JetBrains Mono",monospace; font-size:12px; color:var(--dim); }

/* channel cards */
.theme-home .channels { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin:0; }
.theme-home .chan {
  display:flex; flex-direction:column; gap:10px; padding:24px;
  border-radius:16px; position:relative;
  background:
    radial-gradient(135% 95% at 0% 0%, color-mix(in oklab, var(--ca) 15%, transparent), transparent 58%),
    rgba(255,255,255,.025);
  border:1px solid var(--hair);
  transition:transform .16s ease, box-shadow .28s ease, border-color .25s ease, background .25s ease;
}
.theme-home .ch-daily { --ca:#f0a35e; } .theme-home .ch-weekly { --ca:#8b9cff; } .theme-home .ch-monthly { --ca:#4ade80; }
.theme-home .chan:hover {
  transform:translateY(-2px);
  border-color: color-mix(in oklab, var(--ca) 30%, var(--hair));
  background:
    radial-gradient(135% 95% at 0% 0%, color-mix(in oklab, var(--ca) 17%, transparent), transparent 60%),
    rgba(255,255,255,.032);
  box-shadow: 0 10px 26px rgba(0,0,0,.35), 0 10px 30px -22px var(--ca);
}
.theme-home .chan:hover .ar { transform:translateX(3px); color:var(--ca); }
.ctag { font-family:"JetBrains Mono",monospace; font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--ca,#9aa1ad); }
.theme-home .cname { font-family:"Fraunces",serif; font-size:24px; font-weight:600; color:var(--tx); }
.theme-home .cblurb { font-size:14px; color:var(--mut); flex:1; line-height:1.55; }
.theme-home .cmeta { font-family:"JetBrains Mono",monospace; font-size:12px; color:var(--dim); border-top:1px solid var(--hair); padding-top:12px; display:flex; justify-content:space-between; }
.cmeta .ar { color:var(--tx); transition:transform .16s ease, color .2s ease; }

/* archive (dark) */
.theme-home .archive li { border-bottom:1px solid var(--hair); }
.theme-home .archive .ti { display:grid; grid-template-columns:64px 132px 1fr auto; gap:16px; align-items:center; padding:14px 10px; border-radius:8px; }
.theme-home .archive .ti:hover { background:rgba(255,255,255,.04); }
.theme-home .archive .no { font-family:"JetBrains Mono",monospace; color:var(--mut); font-size:15.5px; font-weight:500; }
.theme-home .archive .til { font-weight:500; color:var(--tx); }
.theme-home .archive .dt { font-family:"JetBrains Mono",monospace; color:var(--dim); font-size:12.5px; }
.theme-home .badge { border:1px solid var(--hair); background:transparent; }
.theme-home .b-daily { color:#f0a35e; } .theme-home .b-weekly { color:#8b9cff; } .theme-home .b-monthly { color:#4ade80; }

/* footer (dark) */
.theme-home .foot { margin-top:64px; border-top:1px solid var(--hair); color:var(--dim); }
.theme-home .foot a { color:var(--mut); }
.theme-home .faint { color:var(--dim); }

@media (prefers-reduced-motion: reduce) { .tk-track { animation:none; } .brand .dot { animation:none; } }
@media (max-width: 760px) {
  .theme-home .channels { grid-template-columns:1fr; }
  .lp-hero { padding:54px 0 40px; }
  .theme-home .archive .ti { grid-template-columns:50px 1fr; row-gap:4px; }
  .theme-home .archive .badge, .theme-home .archive .dt { grid-column:2; justify-self:start; }
}

@media (max-width: 640px) {
  .hero h1 { font-size:44px; }
  .masthead h1 { font-size:32px; }
  .movers, .board, .board2, .channels { grid-template-columns:1fr; }
  .ccard { grid-template-columns: 28px 1fr; }
  .cright { align-items:flex-start; margin-top:8px; }
  .archive .ti { grid-template-columns: 50px 1fr; row-gap:4px; }
  .archive .dt, .ctx .sp { display:none; }
  .ctx li { grid-template-columns: 1.3fr .9fr .8fr 1fr; }
}
