/* ══ TradyFy skin (2026-10-08): deep navy and indigo with a gold accent ══════════════════════════════════════════════════
   Loaded after core-static/portal.css and static/app.css (static/index.html). Tokens first (light, then dark the two ways the
   framework switches it), then the research screens' parts (static/tf-kit.js and the page-*.js of Universe, Company, Red flags,
   Valuation, Peers, Watchlist, Agents). Every colour is a token, so dark mode holds; motion stops under prefers-reduced-motion. */
:root{
  --bg:#f4f5fb; --bg-2:#eaedf7; --panel:#ffffff; --panel-2:#f7f8fd; --line:#e3e6f2; --line-2:#cfd4e6; --edge:#76809c;
  --ink:#0d1130; --ink-2:#363d5c; --muted:#5c6482; --faint:#646c88;
  --brand:#3b3dbf; --brand-2:#5a4bdc; --brand-ink:#ffffff; --brand-soft:#eceefe; --brand-line:#cbcff9;
  --gold:#c99a1f; --gold-ink:#7f5900; --gold-soft:#fbf3dc;
  --ring:0 0 0 3px rgba(59,61,191,.2);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#070b1a; --bg-2:#0b1124; --panel:#10173a; --panel-2:#141c45; --line:#222b5a; --line-2:#323d75; --edge:#6c78ad;
    --ink:#eef0fb; --ink-2:#c6cbe6; --muted:#a3abcd; --faint:#99a2c6;
    --brand:#a3abff; --brand-2:#bcaeff; --brand-ink:#0a0d22; --brand-soft:#1d2459; --brand-line:#3a4594;
    --gold:#f2c94c; --gold-ink:#f2c94c; --gold-soft:#2c2610; --ring:0 0 0 3px rgba(163,171,255,.25);
  }
}
:root[data-theme="dark"]{
  --bg:#070b1a; --bg-2:#0b1124; --panel:#10173a; --panel-2:#141c45; --line:#222b5a; --line-2:#323d75; --edge:#6c78ad;
  --ink:#eef0fb; --ink-2:#c6cbe6; --muted:#a3abcd; --faint:#99a2c6;
  --brand:#a3abff; --brand-2:#bcaeff; --brand-ink:#0a0d22; --brand-soft:#1d2459; --brand-line:#3a4594;
  --gold:#f2c94c; --gold-ink:#f2c94c; --gold-soft:#2c2610; --ring:0 0 0 3px rgba(163,171,255,.25);
}

/* the menu: a navy column in both themes, with its own light ink */
.side{background:linear-gradient(180deg,#151b4c 0%,#0e1336 62%,#0b0f2c 100%);border-right:1px solid #0b0f2c;
  --ink:#f1f2ff; --ink-2:#d6d9f6; --muted:#b5bce3; --faint:#aab1da; --line:#2a3270; --panel-2:#1f2766; --brand-soft:#2b3487;
  --brand:#ffe08a; --panel:#141a4a; --edge:#7c86c4; color:var(--ink)}
.brand .fy{color:#f2c94c}
.gate .fy,.mark .fy{color:var(--gold-ink)}
.nav a.on{box-shadow:inset 3px 0 0 #f2c94c}
.pagehead h1{letter-spacing:-.025em}
.tag.gold{background:var(--gold-soft);color:var(--gold-ink);border-color:color-mix(in srgb,var(--gold) 45%,transparent)}
.tag.ok{background:var(--ok-soft);color:var(--ok)}

/* shared research parts */
.tf-advice{display:flex;gap:8px;align-items:flex-start;font-size:12.5px;color:var(--muted);margin:2px 0 14px;max-width:110ch}
.tf-advice svg{flex:none;margin-top:3px;color:var(--gold-ink)}
.tf-lens{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}
.tf-lens a{display:inline-flex;gap:7px;align-items:center;padding:7px 14px;border-radius:999px;border:1px solid var(--line-2);
  background:var(--panel);color:var(--ink-2);font-size:13.5px;font-weight:600;text-decoration:none}
.tf-lens a:hover{border-color:var(--brand-line);color:var(--brand);text-decoration:none}
.tf-lens a.on{background:linear-gradient(135deg,var(--brand),var(--brand-2));color:var(--brand-ink);border-color:transparent;box-shadow:0 6px 18px -10px var(--brand)}
.tf-walk{margin:0 0 16px;padding:14px 18px;border-color:color-mix(in srgb,var(--gold) 45%,var(--line));
  background:linear-gradient(180deg,var(--gold-soft),transparent 140px),var(--panel)}
.tf-walk summary{cursor:pointer;display:flex;flex-wrap:wrap;align-items:center;gap:8px;list-style:none}
.tf-walk summary::-webkit-details-marker{display:none}
.tf-walk summary svg{color:var(--gold-ink)}
.tf-walk summary::after{content:"";margin-left:auto;width:8px;height:8px;border:solid var(--ink-2);border-width:0 2px 2px 0;transform:rotate(-45deg);transition:transform .15s}
.tf-walk[open] summary::after{transform:rotate(45deg)}
.tf-walk-q{margin:10px 0 4px;font-weight:600;color:var(--ink)}
.tf-walk ol{margin:10px 0 8px;padding:0;list-style:none;display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(min(100%,330px),1fr))}
.tf-walk li{display:grid;gap:4px;padding:8px 10px;border-radius:10px;border:1px solid transparent}
.tf-walk li>.tag{justify-self:start;text-decoration:none}
.tf-walk li.on{background:var(--brand-soft);border-color:var(--brand-line)}
.tf-walk li.on>.tag{background:var(--brand);color:var(--brand-ink)}
.tf-grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,380px),1fr));gap:16px;margin-bottom:16px}
.tf-grid2>.card{margin:0}
.tf-hero{position:relative;overflow:hidden}
.tf-hero::before{content:"";position:absolute;inset:-40% -10% auto auto;width:320px;height:320px;border-radius:50%;
  background:radial-gradient(circle,color-mix(in srgb,var(--gold) 16%,transparent),transparent 70%);pointer-events:none}
.tf-hero>*{position:relative}
.tf-chartwrap{width:100%;overflow:hidden}
.tf-chartwrap.narrow{max-width:760px}
.tf-chartwrap svg,.tf-hero>svg{width:100%;height:auto;display:block}
a.tf-fact{color:var(--brand);text-decoration:underline dotted;text-underline-offset:3px}
.tf-legend{display:flex;flex-wrap:wrap;gap:8px 16px;font-size:12.5px;color:var(--muted);margin-top:8px}
.tf-legend span{display:inline-flex;align-items:center;gap:6px}
.tf-legend i{display:inline-block;width:18px;height:3px;border-radius:2px;background:var(--c)}
.tf-legend i.d{background:repeating-linear-gradient(90deg,var(--c) 0 5px,transparent 5px 9px)}
.tf-legend b.dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--c)}
.tf-legend b.sq{display:inline-block;width:10px;height:10px;border-radius:3px;background:var(--c)}
.tf-pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:8px;margin-top:10px}
.tf-pickrow{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--panel-2);color:var(--ink);text-decoration:none}
.tf-pickrow:hover{border-color:var(--brand-line);text-decoration:none}
.tf-spark{width:100%;max-width:220px;height:auto;display:block;margin:6px 0 2px}
.tf-bar{height:7px;border-radius:999px;background:var(--line);overflow:hidden;margin:6px 0 2px}
.tf-bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,color-mix(in srgb,var(--c,var(--brand)) 55%,var(--panel)),var(--c,var(--brand)))}
.tf-bar.gold i{background:linear-gradient(90deg,color-mix(in srgb,var(--gold) 50%,var(--panel)),var(--gold))}
.tf-sector{margin:-4px 0 12px}

/* the evidence-lineage graph */
.tf-lineage-wrap{overflow-x:auto}
.tf-lineage{min-width:720px;width:100%;height:auto}
.tf-lineage .ln{fill:none;stroke:url(#lnflow);stroke-width:1.6;opacity:.75}
.tf-lineage .ln.src{stroke:var(--gold);stroke-dasharray:4 4;opacity:.85}
.tf-lineage .nd rect{fill:var(--panel-2);stroke:var(--line-2)}
.tf-lineage .nd.root rect{fill:var(--brand-soft);stroke:var(--brand);stroke-width:1.5}
.tf-lineage .nd.file rect{fill:var(--gold-soft);stroke:var(--gold)}
.tf-lineage .nd.more rect{fill:none;stroke-dasharray:3 3}
.tf-lineage text{fill:var(--ink);font-size:12px}
.tf-lineage .k{font-weight:700;fill:var(--ink-2)}
.tf-lineage .v{font-variant-numeric:tabular-nums}
.tf-lineage .p,.tf-lineage .a,.tf-lineage .hd{fill:var(--muted);font-size:11px}
.tf-lineage .hd{text-transform:uppercase;letter-spacing:.08em;font-weight:700}
.tf-lineage .v.f{font-size:10.5px}

/* red flags */
.tf-gauge{max-width:340px;margin:0 auto}
.tf-gauge .big{font-size:44px;font-weight:800;fill:var(--ink);letter-spacing:-.03em}
.tf-gauge .sub{font-size:12px;fill:var(--muted)}
.tf-gauge .needle.swing{transform-origin:150px 150px;animation:tf-swing .9s cubic-bezier(.2,.8,.2,1) both}
@keyframes tf-swing{from{transform:rotate(-90deg)}}
.tf-radar{max-width:540px;width:100%;margin:0 auto}
.tf-radar .ax{font-size:12.5px;font-weight:650;fill:var(--ink-2)}
.tf-radar .grow{transform-origin:270px 162px;animation:tf-grow .8s cubic-bezier(.2,.8,.2,1) both}
@keyframes tf-grow{from{transform:scale(.2);opacity:0}}
.tf-lv{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11.5px;font-weight:750;letter-spacing:.02em;
  color:var(--ink);background:color-mix(in srgb,var(--c) 18%,var(--panel));border:1px solid color-mix(in srgb,var(--c) 55%,transparent)}
.tf-flaglist{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:10px}
.tf-flaglist li{padding:10px 14px;border-radius:12px;border:1px solid var(--line);border-left:4px solid var(--c);background:var(--panel-2);display:grid;gap:4px}
.tf-flaghead{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.tf-calm{display:flex;gap:8px;align-items:center;color:var(--ok);font-weight:600}
.tf-axes{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr));gap:12px;margin-top:8px}
.tf-axis{padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--panel-2);min-width:0}
.tf-axis-top{display:flex;justify-content:space-between;gap:8px;align-items:center}
.tf-axis-v{font-size:20px;font-weight:750;margin-top:4px;font-variant-numeric:tabular-nums}
.tf-board td,.tf-board th{white-space:nowrap}
.tf-board tr.me td{background:var(--brand-soft)}
.tf-score{display:inline-grid;place-items:center;min-width:42px;padding:2px 8px;border-radius:999px;font-weight:750;font-variant-numeric:tabular-nums;
  background:var(--panel-2);border:1px solid var(--line-2);color:var(--ink)}
b.bad{color:var(--bad)}

/* valuation */
.tf-band .tk{font-size:11.5px;fill:var(--muted);font-variant-numeric:tabular-nums}
.tf-band .wipe{animation:tf-wipe 1.1s cubic-bezier(.3,.7,.2,1) both}
@keyframes tf-wipe{from{width:0}}
.tf-divbars{display:grid;gap:8px;margin-top:8px}
.tf-divbars .row{display:grid;grid-template-columns:72px 1fr 64px;gap:12px;align-items:center;font-size:13px}
.tf-divbars .tf-bar{margin:0}

/* peers */
.tf-scatter .tk{font-size:11.5px;fill:var(--muted)}
.tf-scatter .ax{font-size:12px;font-weight:650;fill:var(--ink-2)}
.tf-scatter .lb{font-size:11.5px;font-weight:700;fill:var(--ink-2)}
.tf-scatter .me .lb{fill:var(--gold-ink)}
.tf-peers td.n,.tf-peers th.n{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.tf-peers td.n small{display:block;color:var(--muted);font-size:11px}
.tf-peers td.best a{font-weight:800}
.tf-peers td.best small{color:var(--gold-ink);font-weight:700}
.tf-peers tr.me td{background:var(--brand-soft)}
.tf-place{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--panel-2);border:1px solid var(--line-2);font-weight:750}
.tf-peers tr.me .tf-place{background:var(--gold);border-color:var(--gold);color:#1a1300}

/* watchlist */
.tf-brief{display:grid;grid-template-columns:200px 1fr;gap:20px;align-items:center}
.tf-ring{width:180px;height:180px}
.tf-ring .big{font-size:40px;font-weight:800;fill:var(--ink)}
.tf-ring .sub{font-size:12px;fill:var(--muted)}
.tf-ring.spin-in{animation:tf-grow .8s cubic-bezier(.2,.8,.2,1) both}
.tf-brief-n{display:flex;flex-wrap:wrap;gap:12px;margin:10px 0}
.tf-brief-n div{display:grid;padding:10px 16px;border-radius:12px;background:var(--panel-2);border:1px solid var(--line);min-width:96px}
.tf-brief-n b{font-size:22px}
.tf-brief-n span{font-size:12px;color:var(--muted)}
.tf-watch{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:10px}
.tf-watch li{display:grid;grid-template-columns:minmax(0,1.3fr) 160px minmax(0,2fr) auto;gap:14px;align-items:center;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--panel-2)}
.tf-watch-px{display:grid;font-variant-numeric:tabular-nums}
.tf-watch-px .up{color:var(--ok)}
.tf-watch-px .down{color:var(--bad)}
.tf-watch-alerts{display:flex;flex-wrap:wrap;gap:8px}
a.tf-alert{display:inline-block;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:650;text-decoration:none;color:var(--ink);
  background:color-mix(in srgb,var(--c) 14%,var(--panel));border:1px solid color-mix(in srgb,var(--c) 45%,transparent)}
a.tf-alert:hover{text-decoration:none;border-color:var(--c)}
@media (max-width:760px){
  .tf-brief{grid-template-columns:1fr;justify-items:center;text-align:center}
  .tf-brief-n{justify-content:center}
  .tf-watch li{grid-template-columns:1fr;gap:8px}
}
@media (prefers-reduced-motion: reduce){.tf-gauge .needle,.tf-radar .grow,.tf-band .wipe,.tf-ring{animation:none!important}}

/* universe: the research climb */
.uv-top{grid-template-columns:minmax(0,2fr) minmax(220px,1fr)}
.uv-kpis{display:grid;grid-template-columns:1fr;gap:12px;margin:0;align-content:start}
.tf-climb{max-width:680px}
.tf-climb .n{font-size:20px;font-weight:800;fill:var(--ink)}
.tf-climb .l{font-size:12.5px;font-weight:650;fill:var(--ink-2)}
.tf-climb .rise{animation:tf-rise .7s cubic-bezier(.2,.8,.2,1) both}
@keyframes tf-rise{from{transform:translateY(14px);opacity:0}}
.cl-stage{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}
@media (max-width:860px){.uv-top{grid-template-columns:1fr}.uv-kpis{grid-template-columns:1fr 1fr}}
@media (prefers-reduced-motion: reduce){.tf-climb .rise{animation:none!important}}

/* 2026-10-08 sweep fixes: the wordmark's Fy sits on the name's line; wide tables scroll inside their card */
.brand .name .fy{display:inline;font-size:inherit;font-weight:inherit;letter-spacing:inherit;text-transform:none;margin:0;color:#f2c94c}
.card{min-width:0}
.tf-scroll{overflow-x:auto;max-width:100%}
.tf-peers td:nth-child(2){min-width:190px}
.tf-peers th.n{white-space:normal;min-width:76px;vertical-align:bottom}

/* company: the facts by group fold away; the quarter column stays on one line */
.co-group{border-top:1px solid var(--line);padding:10px 0}
.co-group:first-of-type{border-top:0}
.co-group summary{cursor:pointer;display:flex;gap:8px;align-items:center;font-size:15px}
.co-group[open] summary{margin-bottom:8px}
.co-q td:first-child{white-space:nowrap}

/* agents: the pipeline */
.tf-pipe .lv{font-size:11.5px;fill:var(--muted);font-weight:650}
.tf-pipe .lk{fill:none;stroke:var(--line-2);stroke-width:1.2;opacity:.45}
.tf-pipe .lk.live{stroke:url(#pp);stroke-width:2.2;opacity:.9;stroke-dasharray:6 6}
.tf-pipe .lk.flow{animation:tf-flow 1.6s linear infinite}
@keyframes tf-flow{to{stroke-dashoffset:-24}}
.tf-pipe .gn .bg{fill:var(--panel);stroke:var(--line-2)}
.tf-pipe .gn .tr{fill:none;stroke:var(--line);stroke-width:4}
.tf-pipe .gn .fill{fill:none;stroke:var(--gold);stroke-width:4;stroke-linecap:round}
.tf-pipe .gn.on .bg{fill:var(--brand-soft);stroke:var(--brand)}
.tf-pipe .gn .id{font-size:13px;font-weight:800;fill:var(--ink)}
@media (prefers-reduced-motion: reduce){.tf-pipe .lk.flow{animation:none}}
.co-ev td .tag{display:inline-block;margin:3px 0}
/* boilerplate screens, spaced for the 6 px rule (sweep 2026-10-08) */
.fi-card > .row + #fi-team, .fi-card > .row + p + #fi-team{margin-top:12px}
.ap-tabs{gap:6px;flex-wrap:wrap}
/* a phone keeps chart text readable: the chart keeps its width and scrolls inside its card */
@media (max-width:760px){
  .tf-chartwrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .tf-chartwrap .tf-band,.tf-chartwrap .tf-pipe{min-width:680px}
  .tf-chartwrap .tf-scatter{min-width:520px}
  .tf-climb{min-width:0}
}
/* the sign-in page wears TradyFy's navy, indigo and gold (app.css gives it SimplyFile's emerald) */
.gate{--brand:#3b3dbf;--brand-2:#5a4bdc;--brand-ink:#fff;--brand-line:rgba(59,61,191,.45);--brand-soft:rgba(59,61,191,.08)}
.gate .pitch{background:
  radial-gradient(900px 520px at 85% 0%, rgba(90,75,220,.40), transparent 60%),
  radial-gradient(700px 420px at 0% 100%, rgba(242,201,76,.16), transparent 55%),
  linear-gradient(160deg,#151b4c,#080c22)}
.gate .pitch .mark .fy{color:#f2c94c}
.gate .pitchsteps .i{background:rgba(242,201,76,.16);color:#f2c94c}
