#portfolio-root {padding:32px clamp(18px,3vw,42px) 48px;max-width:1780px;margin-inline:auto;}
.portfolio-heading {display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:28px;}
.portfolio-heading h1 {font-size:clamp(25px,2.1vw,34px);margin:8px 0 12px;letter-spacing:-.04em;}
.portfolio-heading p:last-child {color:var(--ink-faint);font-size:14px;}
.portfolio-toolbar,.portfolio-period-tools,.portfolio-filters,.portfolio-modes {display:flex;align-items:center;gap:12px;}
.portfolio-toolbar {justify-content:space-between;padding-bottom:18px;border-bottom:1px solid var(--border);flex-wrap:wrap;}
.portfolio-modes {gap:5px;}
.portfolio-modes button {border:0;background:transparent;padding:10px 12px;border-radius:7px;color:var(--ink-faint);font-weight:600;}
.portfolio-modes button[aria-pressed=true] {color:var(--magenta);background:var(--magenta-pale);}
.portfolio-modes span {margin-left:7px;font-family:var(--font-data);font-size:11px;}
.portfolio-period-tools label {display:flex;align-items:center;gap:8px;color:var(--ink-soft);white-space:nowrap;font-size:12px;}
#portfolio-year,#portfolio-phase {height:36px;padding:0 10px;border:1px solid var(--border-strong);border-radius:7px;background:var(--white);font-size:12px;}
.portfolio-filters {margin:20px 0 8px;flex-wrap:wrap;}
.portfolio-filters .search-control {width:min(360px,100%);padding-inline:12px;}
.portfolio-legend {margin-left:auto;display:flex;align-items:center;gap:7px;color:var(--ink-faint);font-size:11px;white-space:nowrap;}
.portfolio-legend i {width:22px;border-top:2px solid #4178bd;}
.portfolio-legend i.previous {border-top:2px dashed #9ca6b5;margin-left:8px;}
.portfolio-status {font-size:11px;color:var(--ink-faint);margin:12px 0 18px;}
.portfolio-error {background:var(--red-pale);border:1px solid #f0c9cc;color:var(--red);padding:12px 16px;border-radius:8px;margin-bottom:16px;}
.portfolio-grid {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;}
.portfolio-card {min-width:0;border:1px solid var(--border);border-radius:13px;background:var(--white);overflow:hidden;transition:border-color .15s;}
.portfolio-card:hover {border-color:#b7bec9;}
.portfolio-card>header {display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:22px 22px 12px;}
.portfolio-card>header>div {min-width:0;}
.portfolio-client-name {padding:0;border:0;background:transparent;font-size:18px;font-weight:650;text-align:left;line-height:1.35;overflow-wrap:anywhere;}
.portfolio-client-name:hover {color:var(--magenta);}
.portfolio-site {color:var(--ink-faint);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;margin-top:5px;}
.portfolio-client-state {display:flex;justify-content:space-between;gap:10px;align-items:center;padding:0 22px 17px;font-size:10px;color:var(--ink-faint);flex-wrap:wrap;}
.portfolio-phase {display:inline-flex;align-items:center;border-radius:4px;padding:3px 7px;background:#eff1f4;color:var(--ink-soft);font-size:10px;white-space:nowrap;}
.portfolio-phase.phase-service {color:var(--green);background:var(--green-pale);}
.portfolio-phase.phase-construction {color:#36699d;background:var(--blue-pale);}
.portfolio-phase.phase-expired {color:var(--amber);background:var(--amber-pale);}
.portfolio-contract {display:grid;grid-template-columns:.9fr 1.15fr 1.15fr;margin:0 22px;border:1px solid #e8eaf0;border-radius:7px;overflow:hidden;background:#fafbfc;}
.portfolio-contract>div {padding:10px 10px 11px;border-right:1px solid #e8eaf0;min-width:0;position:relative;}
.portfolio-contract>div:last-child {border:0;}
.portfolio-contract>div.current {box-shadow:inset 0 3px 0 var(--magenta);background:#fff9fb;}
.portfolio-contract span,.portfolio-contract strong,.portfolio-contract small {display:block;white-space:nowrap;}
.portfolio-contract span {font-size:9px;color:var(--ink-faint);margin-bottom:6px;}
.portfolio-contract strong {font:11px var(--font-data);font-weight:500;color:var(--ink-soft);}
.portfolio-contract small {font:9px var(--font-data);color:var(--ink-faint);margin-top:5px;}
.portfolio-growth {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;padding:21px 22px 12px;}
.portfolio-growth-metric {min-width:0;}
.portfolio-metric-heading {display:flex;justify-content:space-between;gap:5px;flex-wrap:wrap;font-size:10px;color:var(--ink-soft);}
.portfolio-delta {font-size:9px;color:var(--ink-faint);}
.portfolio-delta.positive {color:var(--green);}
.portfolio-delta.negative {color:var(--red);}
.portfolio-total {display:block;margin-top:5px;font:25px var(--font-data);letter-spacing:-.05em;}
.portfolio-total small {font:9px var(--font-body);margin-left:6px;color:var(--ink-faint);letter-spacing:0;}
.portfolio-growth svg {display:block;width:100%;height:auto;min-height:86px;stroke:none;fill:none;overflow:visible;margin-top:7px;}
.portfolio-growth svg text {fill:#8b94a0;font:8px var(--font-body);}
.portfolio-chart-empty {height:95px;display:grid;place-content:center;color:#8f98a3;font-size:10px;border-bottom:1px solid #e7eaf0;margin:4px 0;}
.portfolio-prior-total {font-size:9px;color:var(--ink-faint);}
.portfolio-delta.is-anomaly,.portfolio-prior-total.is-anomaly {color:var(--ink-faint);opacity:.55;}
.portfolio-anomaly-note {display:block;margin-top:3px;font-size:9px;line-height:1.5;color:var(--amber);}
.portfolio-coverage,.portfolio-card-warning {padding:0 22px;font-size:10px;color:var(--ink-faint);min-height:30px;margin-bottom:12px;}
.portfolio-card-warning {color:var(--amber);}
.portfolio-card>footer {display:flex;gap:15px;align-items:center;padding:13px 22px;border-top:1px solid #edf0f4;flex-wrap:wrap;}
.portfolio-card>footer .text-button {font-size:11px;}
.portfolio-trash-link {margin-left:auto;padding:0;border:0;background:transparent;color:var(--ink-faint);font-size:10px;}
.portfolio-trash-link:hover {color:var(--red);}
.portfolio-trashed>p {padding:8px 22px 24px;color:var(--ink-faint);font-size:12px;}
.portfolio-trashed h2 {font-size:17px;}
.portfolio-empty {grid-column:1/-1;padding:60px 30px;text-align:center;border:1px dashed var(--border-strong);border-radius:13px;}
.portfolio-empty p {color:var(--ink-faint);margin-top:12px;}
#portfolio-trash-dialog {max-width:520px;}
#portfolio-trash-dialog .dialog-body>p {margin-bottom:18px;}
.portfolio-confirm-name {font-weight:650;overflow-wrap:anywhere;}
#portfolio-trash-error {font-size:12px;color:var(--red);margin:10px 0 0;}
@media(min-width:1850px) {.portfolio-grid {grid-template-columns:repeat(3,minmax(0,1fr));}}
@media(max-width:1150px) {.portfolio-grid {grid-template-columns:1fr;}}
@media(max-width:780px) {#portfolio-root {padding:22px 14px 40px;}.portfolio-heading {align-items:flex-start;gap:15px;flex-direction:column;}.portfolio-heading h1 {font-size:27px;}.portfolio-period-tools {flex-wrap:wrap;}.portfolio-legend {margin-left:0;}.portfolio-toolbar {gap:18px;}.portfolio-filters .search-control {width:100%;}.portfolio-card>header {padding:18px 16px 12px;}.portfolio-client-state {padding-inline:16px;}.portfolio-contract {margin-inline:16px;}.portfolio-growth {padding-inline:16px;gap:14px;}.portfolio-coverage,.portfolio-card-warning {padding-inline:16px;}.portfolio-card>footer {padding-inline:16px;gap:12px;}.portfolio-total {font-size:22px;}.portfolio-metric-heading {min-height:28px;}.portfolio-contract>div {padding-inline:7px;}.portfolio-contract strong {font-size:10px;}.portfolio-contract small {font-size:8px;}.portfolio-trash-link {margin-left:0;}}
@media(prefers-reduced-motion:reduce) {.portfolio-card {transition:none;}}
