diff options
| -rw-r--r-- | frontend/app/prism-shell.css | 367 |
1 files changed, 367 insertions, 0 deletions
diff --git a/frontend/app/prism-shell.css b/frontend/app/prism-shell.css index 09b8ebd..ef551da 100644 --- a/frontend/app/prism-shell.css +++ b/frontend/app/prism-shell.css @@ -571,6 +571,18 @@ color: var(--warning); } +.psm-currency-warning { + display: inline-block; + padding: 2px var(--sp-2); + border: 1px solid rgba(196, 149, 69, 0.4); + background: var(--warning-bg); + color: var(--warning); + font-family: var(--font-sans); + font-size: var(--fs-12); + border-radius: var(--r-2); + line-height: 1.4; +} + .psm-status-chip { border: 1px solid rgba(79, 140, 94, 0.35); background: var(--positive-bg); @@ -1449,6 +1461,11 @@ font-variant-numeric: tabular-nums; } +.psm-val-intrinsic-price.invalid { + color: var(--negative); + font-size: var(--fs-24); +} + .psm-val-mult-list { display: flex; flex-direction: column; @@ -1962,3 +1979,353 @@ font-size: var(--fs-12); line-height: 1.5; } + +/* ── Valuation mode toggle (segmented control) ─────────────────────────── */ + +.psm-val-mode-toggle { + display: flex; + align-items: center; + gap: var(--sp-2); +} + +.psm-val-mode-segment { + display: flex; + gap: 2px; + border: 1px solid var(--line-2); + background: var(--ink-2); + border-radius: var(--r-1); + padding: 2px; +} + +.psm-val-mode-btn { + border: 0; + border-radius: var(--r-1); + background: transparent; + color: var(--fg-3); + padding: 5px 12px; + font-family: var(--font-mono); + font-size: var(--fs-12); + letter-spacing: 0.04em; + cursor: pointer; + transition: background 150ms ease, color 150ms ease; +} + +.psm-val-mode-btn:hover:not(.active) { + color: var(--fg-1); +} + +.psm-val-mode-btn.active { + background: var(--ink-3); + color: var(--fg-1); +} + +/* ── Advanced DCF panel ───────────────────────────────────────────────── */ + +.psm-val-advanced-panel { + display: flex; + flex-direction: column; + gap: var(--sp-4); +} + +.psm-val-preset-row { + display: flex; + gap: var(--sp-2); +} + +.psm-val-preset-btn { + border: 1px solid var(--line-2); + border-radius: var(--r-1); + background: var(--ink-2); + color: var(--fg-3); + padding: 5px 12px; + font-family: var(--font-mono); + font-size: var(--fs-12); + letter-spacing: 0.04em; + cursor: pointer; + transition: border-color 150ms ease, color 150ms ease, background 150ms ease; +} + +.psm-val-preset-btn:hover { + border-color: var(--brass); + color: var(--brass); + background: var(--ink-3); +} + +.psm-val-advanced-grid { + display: flex; + flex-direction: column; + gap: var(--sp-3); +} + +.psm-val-advanced-row { + display: grid; + grid-template-columns: 120px repeat(5, 1fr); + gap: var(--sp-2); + align-items: center; +} + +.psm-val-advanced-row.scalar { + grid-template-columns: 120px 1fr; +} + +.psm-val-advanced-label { + font-family: var(--font-sans); + font-size: var(--fs-12); + font-weight: 600; + letter-spacing: var(--tr-wider); + text-transform: uppercase; + color: var(--fg-3); + white-space: nowrap; +} + +.psm-val-advanced-input { + width: 100%; + background: var(--ink-2); + border: 1px solid var(--line-2); + border-radius: var(--r-1); + color: var(--fg-1); + padding: 6px 8px; + font-family: var(--font-mono); + font-size: var(--fs-13); + font-variant-numeric: tabular-nums; + outline: none; + transition: border-color 150ms ease, box-shadow 150ms ease; +} + +.psm-val-advanced-input:focus { + border-color: var(--brass); + box-shadow: 0 0 0 1px var(--focus-ring); +} + +.psm-val-advanced-input::placeholder { + color: var(--fg-4); +} + +/* Hide number spinners */ +.psm-val-advanced-input::-webkit-outer-spin-button, +.psm-val-advanced-input::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} + +.psm-val-advanced-input[type="number"] { + -moz-appearance: textfield; +} + +.psm-val-advanced-result { + display: flex; + flex-direction: column; + gap: var(--sp-2); + padding: var(--sp-4); + background: var(--ink-2); + border: 1px solid var(--line-1); + border-radius: var(--r-2); + align-self: start; +} + +.psm-val-advanced-result-label { + font-family: var(--font-sans); + font-size: var(--fs-12); + font-weight: 600; + letter-spacing: var(--tr-wider); + text-transform: uppercase; + color: var(--fg-3); +} + +.psm-val-advanced-result-price { + font-family: var(--font-mono); + font-size: var(--fs-30); + color: var(--brass); + font-variant-numeric: tabular-nums; + line-height: 1.1; +} + +.psm-val-advanced-result-price.invalid { + color: var(--negative); + font-size: var(--fs-18); +} + +.psm-val-advanced-field { + display: flex; + flex-direction: column; + gap: var(--sp-1); +} + +.psm-val-advanced-field-label { + font-family: var(--font-sans); + font-size: var(--fs-12); + font-weight: 600; + letter-spacing: var(--tr-wider); + text-transform: uppercase; + color: var(--fg-3); +} + +.psm-val-advanced-table { + display: flex; + flex-direction: column; + gap: var(--sp-2); +} + +.psm-val-advanced-table-header { + display: grid; + grid-template-columns: 130px repeat(5, 1fr); + gap: var(--sp-2); + align-items: center; +} + +.psm-val-advanced-table-corner { + display: block; +} + +.psm-val-advanced-table-year { + font-family: var(--font-sans); + font-size: var(--fs-12); + font-weight: 600; + letter-spacing: var(--tr-wider); + text-transform: uppercase; + color: var(--fg-4); + text-align: center; +} + +.psm-val-advanced-table-row { + display: grid; + grid-template-columns: 130px repeat(5, 1fr); + gap: var(--sp-2); + align-items: center; +} + +.psm-val-advanced-table-label { + font-family: var(--font-sans); + font-size: var(--fs-12); + font-weight: 600; + letter-spacing: var(--tr-wider); + text-transform: uppercase; + color: var(--fg-3); + white-space: nowrap; +} + +/* ── Sensitivity table ─────────────────────────────────────────────────── */ + +.psm-val-sensitivity { + display: flex; + flex-direction: column; + gap: var(--sp-3); + padding-top: var(--sp-4); + border-top: 1px solid var(--line-1); +} + +.psm-val-sensitivity-head { + display: flex; + align-items: baseline; + justify-content: space-between; +} + +.psm-val-sensitivity-title { + font-family: var(--font-sans); + font-size: var(--fs-14); + font-weight: 600; + color: var(--fg-2); +} + +.psm-val-sensitivity-subtitle { + font-family: var(--font-mono); + font-size: var(--fs-12); + color: var(--fg-4); + font-variant-numeric: tabular-nums; +} + +.psm-val-sensitivity-table { + width: 100%; + border-collapse: collapse; + font-size: var(--fs-13); +} + +.psm-val-sensitivity-table th, +.psm-val-sensitivity-table td { + padding: 8px var(--sp-3); + text-align: right; + border-bottom: 1px solid var(--ink-2); +} + +.psm-val-sensitivity-table th { + font-family: var(--font-sans); + font-weight: 600; + color: var(--fg-3); + font-size: var(--fs-12); + letter-spacing: var(--tr-wide); + text-transform: uppercase; +} + +.psm-val-sensitivity-corner { + text-align: left; + color: var(--fg-4); + font-size: var(--fs-12); +} + +.psm-val-sensitivity-col-header { + text-align: center; +} + +.psm-val-sensitivity-row-header { + text-align: left; + font-family: var(--font-mono); + font-variant-numeric: tabular-nums; + color: var(--fg-3); +} + +.psm-val-sensitivity-cell { + font-family: var(--font-mono); + font-variant-numeric: tabular-nums; + color: var(--fg-2); + transition: background 150ms ease; +} + +.psm-val-sensitivity-cell.is-center { + background: rgba(194, 170, 122, 0.08); + color: var(--brass); + font-weight: 600; +} + +.psm-val-sensitivity-col-header.is-center, +.psm-val-sensitivity-row-header.is-center { + color: var(--brass); +} + +.psm-val-sensitivity-table tbody tr:hover .psm-val-sensitivity-cell { + background: rgba(194, 170, 122, 0.04); +} + +.psm-val-sensitivity-cell.negative { + color: var(--negative); +} + +/* ── WACC note readability fix ─────────────────────────────────────────── */ + +.psm-val-wacc-note { + display: flex; + flex-wrap: wrap; + gap: 4px 8px; + align-items: baseline; + font-family: var(--font-mono); + font-size: var(--fs-13); + color: var(--fg-3); + font-variant-numeric: tabular-nums; + line-height: 1.5; +} + +.psm-val-wacc-label { + color: var(--fg-2); + font-weight: 600; +} + +.psm-val-wacc-value { + color: var(--brass); + font-weight: 600; +} + +.psm-val-wacc-detail { + width: 100%; + margin-top: 2px; + color: var(--fg-4); + font-size: var(--fs-12); +} |
