From dae44d7b01d57d8bf9a7e260f991c0054370a7b1 Mon Sep 17 00:00:00 2001 From: Tyler Hoang Date: Tue, 19 May 2026 00:04:50 -0700 Subject: feat: add DCF slider CSS to prism-shell --- frontend/app/prism-shell.css | 156 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 151 insertions(+), 5 deletions(-) (limited to 'frontend/app') diff --git a/frontend/app/prism-shell.css b/frontend/app/prism-shell.css index 4e65ced..ab2d452 100644 --- a/frontend/app/prism-shell.css +++ b/frontend/app/prism-shell.css @@ -1377,11 +1377,6 @@ border-left: 2px solid var(--warning); } -.psm-val-dcf-body { - display: grid; - grid-template-columns: 1fr 1fr; - gap: var(--sp-5); -} .psm-val-kv-list { display: flex; @@ -1497,6 +1492,157 @@ text-align: right; } +/* DCF sliders — side-by-side layout */ + +.psm-val-dcf-body { + display: grid; + grid-template-columns: 1fr 1px 1fr; + gap: 0; + align-items: start; +} + +.psm-val-dcf-divider { + background: var(--line-1); + align-self: stretch; +} + +.psm-val-dcf-assumptions { + padding-right: var(--sp-5); + display: flex; + flex-direction: column; + gap: var(--sp-4); +} + +.psm-val-dcf-results { + padding-left: var(--sp-5); + display: flex; + flex-direction: column; + gap: var(--sp-3); +} + +.psm-val-dcf-col-label { + font-family: var(--font-sans); + font-size: var(--fs-11); + font-weight: 600; + letter-spacing: var(--tr-wider); + text-transform: uppercase; + color: var(--fg-4); + margin-bottom: var(--sp-1); +} + +.psm-val-slider-row { + display: flex; + flex-direction: column; + gap: var(--sp-1); +} + +.psm-val-slider-header { + display: flex; + justify-content: space-between; + align-items: baseline; +} + +.psm-val-slider-label { + font-family: var(--font-sans); + font-size: var(--fs-12); + color: var(--fg-3); +} + +.psm-val-slider-value { + font-family: var(--font-mono); + font-size: var(--fs-12); + color: var(--brass); + font-variant-numeric: tabular-nums; + font-weight: 600; +} + +.psm-val-range { + -webkit-appearance: none; + appearance: none; + width: 100%; + height: 3px; + background: var(--ink-3); + border-radius: var(--r-1); + outline: none; + cursor: pointer; +} + +.psm-val-range::-webkit-slider-thumb { + -webkit-appearance: none; + appearance: none; + width: 12px; + height: 12px; + border-radius: 50%; + background: var(--brass); + border: 2px solid var(--ink-0); + cursor: pointer; + transition: background 150ms ease; +} + +.psm-val-range::-moz-range-thumb { + width: 12px; + height: 12px; + border-radius: 50%; + background: var(--brass); + border: 2px solid var(--ink-0); + cursor: pointer; + transition: background 150ms ease; +} + +.psm-val-range:focus-visible::-webkit-slider-thumb { + outline: 2px solid var(--brass); + outline-offset: 2px; +} + +.psm-val-slider-ticks { + display: flex; + justify-content: space-between; +} + +.psm-val-slider-tick { + font-family: var(--font-mono); + font-size: var(--fs-10); + color: var(--fg-4); + font-variant-numeric: tabular-nums; +} + +.psm-val-dcf-section-head { + display: flex; + align-items: center; + justify-content: space-between; +} + +.psm-val-reset-btn { + background: none; + border: 1px solid var(--line-1); + color: var(--fg-4); + font-family: var(--font-sans); + font-size: var(--fs-11); + font-weight: 600; + letter-spacing: var(--tr-wider); + text-transform: uppercase; + padding: var(--sp-1) var(--sp-3); + border-radius: var(--r-1); + cursor: pointer; + transition: border-color 150ms ease, color 150ms ease; +} + +.psm-val-reset-btn:hover { + border-color: var(--brass); + color: var(--brass); +} + +.psm-val-chip-dot { + width: 5px; + height: 5px; + border-radius: 50%; + background: var(--brass); + display: inline-block; + margin-left: var(--sp-1); + vertical-align: middle; + opacity: 0.8; +} + /* ── Key ratios tab ─────────────────────────────── */ .psm-ratio-card { -- cgit v1.3-2-g0d8e