/* LedgeX Research — San Francisco / AI article. Extends /insights/newport/research.css (same tokens and grammar). */
.sf-page { --sfr: #18282E; --condo: #1F5FA8; --ai: #B4472B; }
.sf-fig .eyebrow { margin: 14px 0 6px; }
.sf-fig .eyebrow:first-of-type { margin-top: 0; }

/* timeline categories */
.sfk-gold { color: #9A6412; } .sfk-shock { color: var(--ink-soft); border-style: dashed !important; }
.sfk-tech { color: var(--hist); } .sfk-ai { color: var(--ai); }

/* line chart */
.sf-ln { fill: none; stroke-width: 2.5; }
.sf-ln.sf-sfr { stroke: var(--sfr); } .sf-ln.sf-condo { stroke: var(--condo); stroke-dasharray: 6 3; }
.sf-pt { fill: var(--sheet); stroke-width: 2; } .sf-pt.sf-sfr { stroke: var(--sfr); } .sf-pt.sf-condo { stroke: var(--condo); }
.sf-pt:hover, .sf-pt:focus { fill: var(--zoning); outline: none; }
.sf-endlbl { font-size: 11.5px; font-weight: 700; } .sf-endlbl.sf-sfr { fill: var(--sfr); } .sf-endlbl.sf-condo { fill: var(--condo); }
.sf-ref { stroke: var(--ink-soft); stroke-width: 1; stroke-dasharray: 2 3; }
.sf-reflbl { font-size: 10px; }
.c-sw.sf-sw-sfr { height: 3px; background: var(--sfr); }
.c-sw.sf-sw-condo { height: 0; border-top: 3px dashed var(--condo); }
.js .sf-views .sf-view[hidden] { display: none; }
.sf-views .sf-view + .sf-view { margin-top: 12px; }
.sf-toggle { display: flex; flex-wrap: wrap; gap: 6px; margin: 4px 0 10px; }
.sf-toggle button { padding: 5px 12px; font-size: .78rem; font-weight: 600; background: var(--sheet); border: 1.5px solid var(--rule); border-radius: 999px; color: var(--ink-soft); }
.sf-toggle button[aria-pressed="true"] { border-color: var(--ink); color: var(--ink); background: var(--zoning-wash); }
.sf-tipbox { min-height: 1.4em; margin-top: 4px; font-family: var(--mono); }
.sf-cmp { margin-top: 18px; }

/* office chart */
.sf-bar { fill: var(--ink); } .sf-bar.sf-prelim { fill: var(--sheet); stroke: var(--ink); stroke-width: 1.5; stroke-dasharray: 3 2; }
.sf-val { font-size: 10px; font-family: var(--mono); fill: var(--ink-soft); }
.sf-na { font-size: 9.5px; font-style: italic; }
.sf-evline { stroke: var(--ai); stroke-width: 1; stroke-dasharray: 2 2; }
.sf-ev { fill: var(--ai); } .sf-ev:hover, .sf-ev:focus { stroke: var(--zoning); stroke-width: 3; outline: none; }
.sf-evn { fill: #fff; font-size: 11px; font-weight: 700; pointer-events: none; font-family: var(--mono); }
.c-sw.sf-sw-bar { background: var(--ink); } .c-sw.sf-sw-prelim { border: 1.5px dashed var(--ink); }
.c-sw.sf-sw-ev { background: var(--ai); border-radius: 50%; width: 12px; }
.nb-page .article-body .sf-evlist { margin: 6px 0 0; padding-left: 22px; font-size: .86rem; display: grid; gap: 4px; }
.sf-evlist li::marker { color: var(--ai); font-weight: 700; font-family: var(--mono); }
.sf-scale { margin-top: 18px; }
.sf-scalebar { height: 14px; border: 1px solid var(--ink); background: var(--grid); }
.sf-scalebar span { display: block; height: 100%; background: var(--ai); }

/* mechanism */
.nb-page .article-body .sf-flow { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; counter-reset: none; }
.sf-step { position: relative; border: 1px solid var(--rule); background: #FBFBF9; padding: 10px 12px; display: grid; gap: 6px; align-content: start; font-size: .86rem; }
.sf-step h4 { font-size: .95rem; font-weight: 800; }
.sf-stepn { font-size: .7rem; color: var(--ink-soft); }
.sf-step .nb-chip { white-space: normal; text-transform: none; letter-spacing: 0; font-size: .72rem; }
@media (max-width: 720px) {
  .nb-page .article-body .sf-flow { grid-template-columns: 1fr; }
  .sf-step:not(:last-child)::after { content: "↓"; position: absolute; left: 50%; bottom: -11px; transform: translateX(-50%); font-size: .8rem; color: var(--ink-soft); background: var(--sheet); padding: 0 4px; }
}
@media print { .sf-toggle { display: none !important; } .sf-views .sf-view[hidden] { display: block !important; } }
