/* Private model pages (dashboard + model detail). All rules scoped under
   .ffm-wrap so nothing leaks to the public app, which also loads this file.
   Uses the site theme variables, so it inherits the shared light/dark toggle. */

.ffm-wrap{max-width:880px;margin:0 auto;padding:22px 24px 70px}
.ffm-wrap .ffm-h1{font-size:21px;font-weight:600;margin:.2rem 0 0;font-family:var(--font-display);color:var(--text)}
.ffm-wrap .ffm-title{font-size:21px;font-weight:600;font-family:var(--font-display);color:var(--text)}
.ffm-wrap .ffm-desc{font-size:13px;color:var(--text-muted);margin-top:3px}
.ffm-wrap .ffm-meta{font-size:12px;color:var(--text-faint);margin-top:5px;font-family:var(--font-data)}
.ffm-wrap .ffm-back{font-size:12px;color:var(--text-muted)}
.ffm-wrap .ffm-prose{font-size:13px;line-height:1.7;color:var(--text)}
.ffm-wrap .ffm-empty{color:var(--text-muted);padding:48px 0;text-align:center}

.ffm-wrap a{color:var(--gold)}
.ffm-wrap a:hover{color:var(--gold-bright)}

.ffm-wrap .ffm-metrics{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0 20px}
.ffm-wrap .metric{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:11px 14px;flex:1;min-width:104px}
.ffm-wrap .metric .l{font-size:12px;color:var(--text-muted)}
.ffm-wrap .metric .v{font-size:23px;font-weight:500;margin-top:3px;font-family:var(--font-data);color:var(--text)}

.ffm-wrap .ffm-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:15px 18px;margin-bottom:16px}
.ffm-wrap .ffm-sec{display:flex;align-items:baseline;gap:8px;margin:0 0 11px}
.ffm-wrap .ffm-sec .t{font-size:15px;font-weight:500;color:var(--text)}
.ffm-wrap .ffm-sec .s{font-size:12.5px;color:var(--text-muted)}

.ffm-wrap table.ffm-tbl{width:100%;border-collapse:collapse}
.ffm-wrap table.ffm-tbl th{font-size:11px;font-weight:500;color:var(--text-faint);padding:7px 10px;border-bottom:1px solid var(--border);font-family:var(--font-data)}
.ffm-wrap table.ffm-tbl td{font-size:13px;padding:8px 10px;border-bottom:1px solid var(--border);font-family:var(--font-data);color:var(--text)}
.ffm-wrap table.ffm-tbl tr:last-child td{border-bottom:none}
.ffm-wrap table.ffm-mret{table-layout:fixed}
.ffm-wrap table.ffm-mret th{padding:5px 3px;text-align:center;color:var(--text-muted)}
.ffm-wrap table.ffm-mret td{font-size:11px;padding:5px 3px;border-bottom:1px solid var(--border)}

.ffm-wrap .badge{font-size:11px;font-weight:500;padding:2px 9px;border-radius:var(--radius);white-space:nowrap;font-family:var(--font-data)}
.ffm-wrap .badge.b-live,.ffm-wrap .badge.b-long,.ffm-wrap .badge.b-win,.ffm-wrap .badge.b-buy{background:rgba(76,175,125,0.16);color:var(--green)}
.ffm-wrap .badge.b-paper,.ffm-wrap .badge.b-trim{background:rgba(200,169,110,0.18);color:var(--gold)}
.ffm-wrap .badge.b-research,.ffm-wrap .badge.b-flat{background:rgba(138,143,152,0.16);color:var(--text-muted)}
.ffm-wrap .badge.b-add{background:rgba(74,143,212,0.18);color:var(--blue)}
.ffm-wrap .badge.b-exit,.ffm-wrap .badge.b-loss{background:rgba(224,85,85,0.16);color:var(--red)}
.ffm-wrap .pos{color:var(--green)}
.ffm-wrap .neg{color:var(--red)}

/* ── Core Portfolio page: left section-nav + analytic sections ──────────────
   .ffp-* classes are exclusive to /models/portfolio (the public app never emits
   them), so they're safe at top level; content still lives inside .ffm-wrap. */
.ffp-shell{display:grid;grid-template-columns:170px minmax(0,1fr);max-width:1140px;margin:0 auto;padding:6px 16px 0}
.ffm-wrap.ffp-content{max-width:100%;margin:0;padding:18px 8px 70px 26px}

.ffp-nav{position:sticky;top:14px;align-self:start;padding:24px 0 0}
.ffp-nav .ffp-nav-title{font-size:10px;letter-spacing:.14em;color:var(--text-faint);font-family:var(--font-data);padding:0 14px 9px}
.ffp-nav .ffp-nav-link{display:block;font-size:13px;color:var(--text-muted);padding:6px 14px;border-left:2px solid transparent;text-decoration:none;font-family:var(--font-data)}
.ffp-nav .ffp-nav-link:hover{color:var(--text)}
.ffp-nav .ffp-nav-link.active{color:var(--gold);border-left-color:var(--gold)}

.ffp-section{scroll-margin-top:78px;padding-top:2px}
.ffp-section .ffp-sec-h{font-size:11.5px;letter-spacing:.10em;text-transform:uppercase;color:var(--text-faint);font-family:var(--font-data);font-weight:600;margin:24px 0 12px;border-bottom:1px solid var(--border);padding-bottom:7px}

.ffm-wrap .ffm-explain{font-size:12px;line-height:1.55;color:var(--text-muted);margin:0 0 11px}

.ffm-wrap table.ffp-snap td.ffp-grp{font-size:10.5px;letter-spacing:.04em;color:var(--text-faint);text-transform:uppercase;font-weight:600;padding:14px 10px 5px;border-bottom:1px solid var(--border)}
.ffm-wrap table.ffp-snap tr:first-child td.ffp-grp{padding-top:2px}

@media (max-width:760px){
  .ffp-shell{grid-template-columns:1fr;padding:6px 0 0}
  .ffp-nav{display:none}
  .ffm-wrap.ffp-content{padding:14px 22px 60px}
}
