:root {
    --tp-ink: #071b2e;
    --tp-blue: #0c3d6e;
    --tp-muted: #4f667a;
    --tp-line: #cbd9e5;
    --tp-soft: #f3f7fa;
    --tp-positive: #087a62;
    --tp-positive-soft: #e6f6f1;
    --tp-negative: #b13c47;
    --tp-negative-soft: #fff0f1;
    --tp-caution: #98661b;
    --tp-caution-soft: #fff8e9;
    --tp-purple: #5548a8;
}

.tp-shell {
    width: min(100% - 2rem, 1660px);
    margin: 1rem auto 0;
    color: var(--tp-ink);
}

.tp-hero,
.tp-panel,
.tp-report-hero,
.tp-report-section,
.tp-method-strip article,
.tp-kpis article {
    border: 1px solid var(--tp-line);
    background: #fff;
}

.tp-hero {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: stretch;
}

.tp-hero-copy { padding: 1.35rem 1.5rem; }

.tp-eyebrow {
    display: block;
    color: #526b82;
    font-size: .72rem;
    font-weight: 900;
    letter-spacing: .14em;
    text-transform: uppercase;
}

.tp-hero h1 {
    margin: .2rem 0 .45rem;
    color: var(--tp-ink);
    font-size: clamp(2.8rem, 5vw, 5.8rem);
    line-height: .9;
    letter-spacing: -.035em;
}

.tp-hero p,
.tp-section-copy,
.tp-chart-head p,
.tp-methodology-grid p,
.tp-risk-grid p,
.tp-callout p {
    color: #3f566c;
    font-size: .95rem;
    font-weight: 650;
    line-height: 1.65;
}

.tp-hero p { max-width: 76rem; margin: 0; }

.tp-hero-stats {
    display: grid;
    grid-template-columns: repeat(3, minmax(8rem, 1fr));
    min-width: min(35rem, 45vw);
    border-left: 1px solid var(--tp-line);
}

.tp-hero-stats div,
.tp-kpis article,
.tp-detail-kpis article,
.tp-regime-summary article,
.tp-context-grid article,
.tp-risk-grid article {
    padding: .9rem 1rem;
    background: var(--tp-soft);
}

.tp-hero-stats span,
.tp-kpis span,
.tp-detail-kpis span,
.tp-regime-summary span,
.tp-context-grid span,
.tp-risk-grid span,
.tp-spectrum-grid span {
    display: block;
    color: #586e82;
    font-size: .7rem;
    font-weight: 900;
    letter-spacing: .1em;
    text-transform: uppercase;
}

.tp-hero-stats strong,
.tp-kpis strong,
.tp-detail-kpis strong,
.tp-regime-summary strong,
.tp-context-grid strong,
.tp-risk-grid strong {
    display: block;
    margin-top: .28rem;
    color: var(--tp-ink);
    font-size: 1.18rem;
    font-weight: 900;
    font-variant-numeric: tabular-nums;
}

.tp-method-strip {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    margin-top: .75rem;
}

.tp-method-strip article { padding: 1rem; border-left: 0; }
.tp-method-strip article:first-child { border-left: 1px solid var(--tp-line); }
.tp-method-strip article > span { color: var(--tp-positive); font-size: .7rem; font-weight: 950; }
.tp-method-strip strong { display: block; margin: .25rem 0; font-size: 1rem; }
.tp-method-strip p { margin: 0; color: var(--tp-muted); font-size: .82rem; font-weight: 650; line-height: 1.5; }

.tp-kpis {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    margin-top: .75rem;
}
.tp-kpis article { border-left: 0; }
.tp-kpis article:first-child { border-left: 1px solid var(--tp-line); }
.tp-kpis small,
.tp-detail-kpis small,
.tp-context-grid small,
.tp-table small { display: block; margin-top: .2rem; color: #60768a; font-size: .72rem; font-weight: 650; }
.tp-kpis .tp-positive { border-top: 3px solid var(--tp-positive); }
.tp-kpis .tp-negative { border-top: 3px solid var(--tp-negative); }
.tp-kpis .tp-caution { border-top: 3px solid var(--tp-caution); }

.tp-panel { margin-top: .75rem; padding: 1.15rem; }
.tp-panel-head,
.tp-section-head,
.tp-chart-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}
.tp-panel-head h2,
.tp-section-head h2,
.tp-chart-head h3 { margin: .16rem 0 0; color: var(--tp-ink); }
.tp-panel-head > p,
.tp-section-head > span { margin: 0; color: var(--tp-muted); font-size: .82rem; font-weight: 700; }

.tp-filters {
    display: grid;
    grid-template-columns: repeat(6, minmax(8.5rem, 1fr));
    gap: .65rem;
    align-items: end;
    margin: 1rem 0;
    padding: .8rem;
    background: var(--tp-soft);
    border: 1px solid var(--tp-line);
}
.tp-filters label { display: grid; gap: .3rem; }
.tp-filters label > span { color: #40596f; font-size: .7rem; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
.tp-filters select,
.tp-filters input {
    min-width: 0;
    height: 2.55rem;
    border: 1px solid #aebfce;
    border-radius: 0;
    background: #fff;
    color: var(--tp-ink);
    padding: 0 .65rem;
    font: inherit;
    font-size: .84rem;
    font-weight: 700;
}
.tp-search { grid-column: span 2; }

.tp-button {
    display: inline-flex;
    min-height: 2.55rem;
    align-items: center;
    justify-content: center;
    gap: .35rem;
    border: 1px solid #9fb2c3;
    background: #fff;
    color: var(--tp-blue);
    padding: .55rem .8rem;
    font-size: .76rem;
    font-weight: 900;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: .05em;
}
.tp-button svg { width: 1rem; height: 1rem; flex: 0 0 1rem; }
.tp-button:hover,
.tp-button:focus { background: #edf4f8; }
.tp-button-primary { background: var(--tp-blue); border-color: var(--tp-blue); color: #fff; }
.tp-button-primary:hover,
.tp-button-primary:focus { background: #082e55; }

.tp-help {
    position: relative;
    z-index: 20;
    display: inline-grid;
    width: 1.05rem;
    height: 1.05rem;
    margin-left: .22rem;
    place-items: center;
    border: 1px solid #9fb3c5;
    border-radius: 50%;
    background: #fff;
    color: var(--tp-blue);
    padding: 0;
    font: 900 .65rem/1 system-ui, sans-serif;
    vertical-align: .06rem;
    cursor: help;
}
.tp-help::after {
    display: none;
    content: "";
    position: absolute;
    top: calc(100% + .5rem);
    left: 50%;
    width: min(20rem, calc(100vw - 2rem));
    padding: .7rem .8rem;
    border: 1px solid #91a8bb;
    background: #071b2e;
    box-shadow: 0 .6rem 1.5rem rgb(7 27 46 / .2);
    color: #fff;
    font: 650 .76rem/1.5 system-ui, sans-serif;
    letter-spacing: 0;
    text-align: left;
    text-transform: none;
    white-space: normal;
    opacity: 0;
    pointer-events: none;
    transform: translate(-50%, -.2rem);
    transition: opacity .14s ease, transform .14s ease;
}
.tp-help:hover,
.tp-help:focus-visible { border-color: var(--tp-blue); outline: 2px solid rgb(12 61 110 / .18); outline-offset: 2px; }
.tp-help:hover::after,
.tp-help:focus-visible::after { display: none; }

.tp-table-wrap { overflow-x: auto; border: 1px solid var(--tp-line); }
.tp-table { width: 100%; border-collapse: collapse; min-width: 1060px; }
.tp-table th {
    background: #eaf0f5;
    color: #3c566d;
    padding: .6rem .7rem;
    border-bottom: 1px solid #b7c8d6;
    text-align: left;
    font-size: .68rem;
    font-weight: 950;
    letter-spacing: .09em;
    text-transform: uppercase;
}
.tp-table td { padding: .72rem .7rem; border-bottom: 1px solid #d9e2e9; color: #173044; font-size: .82rem; font-weight: 680; vertical-align: middle; }
.tp-table tbody tr:nth-child(even) { background: #f8fafc; }
.tp-table tbody tr:hover { background: #eff6f8; }
.tp-num { text-align: right !important; font-variant-numeric: tabular-nums; }
.tp-symbol { color: var(--tp-blue); font-size: .98rem; font-weight: 950; text-decoration: none; }
.tp-symbol:hover,
.tp-symbol:focus { text-decoration: underline; text-underline-offset: 3px; }
.tp-good,
.tp-direction-positive { color: var(--tp-positive) !important; }
.tp-bad,
.tp-direction-negative { color: var(--tp-negative) !important; }
.tp-warn { color: var(--tp-caution) !important; font-weight: 900; }
.tp-direction-neutral { color: var(--tp-purple) !important; }

.tp-horizon-map { display: flex; gap: .25rem; }
.tp-horizon-map i { width: 1.15rem; height: .42rem; background: #9cabb8; }
.tp-horizon-map .is-positive { background: var(--tp-positive); }
.tp-horizon-map .is-negative { background: var(--tp-negative); }

.tp-pagination { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin-top: .9rem; color: var(--tp-muted); font-size: .8rem; font-weight: 750; }
.tp-pagination > span:last-child { display: flex; gap: .45rem; }

.tp-methodology-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: .75rem;
    margin-top: 1rem;
}
.tp-methodology-grid article { border: 1px solid var(--tp-line); background: var(--tp-soft); padding: 1rem; }
.tp-methodology-grid h3 { margin: 0; font-size: 1rem; }
.tp-methodology-grid p { margin: .4rem 0 0; font-size: .84rem; }
.tp-methodology-grid a { color: var(--tp-blue); font-weight: 850; text-underline-offset: 2px; }
.tp-empty { padding: 2rem; }
.tp-empty h1,
.tp-empty h2 { margin: .25rem 0; }

.tp-breadcrumbs { display: flex; flex-wrap: wrap; gap: .45rem; margin-bottom: .55rem; padding: .55rem .75rem; border: 1px solid var(--tp-line); background: var(--tp-soft); color: var(--tp-muted); font-size: .78rem; font-weight: 800; }
.tp-breadcrumbs a { color: var(--tp-blue); text-decoration: none; }

.tp-report-hero { display: grid; grid-template-columns: minmax(0, 1fr) minmax(19rem, 30rem); }
.tp-report-hero > div { padding: 1.25rem 1.4rem; }
.tp-report-hero h1 { margin: .2rem 0; font-size: clamp(2.2rem, 4.3vw, 4.8rem); line-height: .95; letter-spacing: -.025em; }
.tp-company { margin: .25rem 0; color: var(--tp-muted); font-weight: 750; }
.tp-report-meta { display: flex; flex-wrap: wrap; gap: .35rem 1rem; margin-top: .8rem; color: #4b6378; font-size: .82rem; font-weight: 700; }
.tp-report-hero aside { padding: 1.15rem; border-left: 1px solid var(--tp-line); background: var(--tp-soft); }
.tp-report-hero aside > strong { display: block; margin: .4rem 0; font-size: 1.35rem; line-height: 1.15; }
.tp-report-hero aside p { margin: 0; color: var(--tp-muted); font-size: .84rem; font-weight: 700; line-height: 1.5; }
.tp-state-positive aside { border-top: 4px solid var(--tp-positive); }
.tp-state-negative aside { border-top: 4px solid var(--tp-negative); }
.tp-state-neutral aside { border-top: 4px solid var(--tp-purple); }

.tp-report-nav { display: flex; flex-wrap: nowrap; overflow-x: auto; margin: .55rem 0; border: 1px solid var(--tp-line); background: #fff; }
.tp-report-nav a { flex: 1 0 auto; padding: .7rem .8rem; border-left: 1px solid var(--tp-line); color: #334e64; font-size: .72rem; font-weight: 900; text-align: center; text-decoration: none; text-transform: uppercase; letter-spacing: .06em; }
.tp-report-nav a:first-child { border-left: 0; }
.tp-report-nav a:hover,
.tp-report-nav a:focus { background: var(--tp-soft); }
.tp-report-nav-terminal { color: #fff !important; background: var(--tp-blue); }

.tp-report-section { margin-top: .75rem; padding: 1.15rem; scroll-margin-top: 1rem; }
.tp-callout { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(18rem, .8fr); gap: 1rem; margin-top: 1rem; padding: 1.1rem; border: 1px solid var(--tp-line); border-left: 5px solid var(--tp-purple); background: var(--tp-soft); }
.tp-callout-positive { border-left-color: var(--tp-positive); background: var(--tp-positive-soft); }
.tp-callout-negative { border-left-color: var(--tp-negative); background: var(--tp-negative-soft); }
.tp-callout span { color: #40596f; font-size: .72rem; font-weight: 900; text-transform: uppercase; letter-spacing: .1em; }
.tp-callout h3 { margin: .2rem 0; font-size: 1.25rem; }
.tp-callout p { margin: 0; font-size: .88rem; }
.tp-callout ul { margin: 0; padding: .2rem 0 .2rem 1.2rem; color: #40596f; font-size: .82rem; font-weight: 700; line-height: 1.55; }

.tp-detail-kpis { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); margin-top: .75rem; border: 1px solid var(--tp-line); }
.tp-detail-kpis article { border-left: 1px solid var(--tp-line); }
.tp-detail-kpis article:first-child { border-left: 0; }

.tp-chart-card { margin-top: .8rem; border: 1px solid var(--tp-line); background: #fff; padding: .9rem; min-width: 0; }
.tp-chart-head p { max-width: 65rem; margin: .25rem 0 0; font-size: .82rem; }
.tp-legend { display: flex; flex-wrap: wrap; gap: .5rem .9rem; color: var(--tp-muted); font-size: .74rem; font-weight: 800; }
.tp-legend i { display: inline-block; width: 1.2rem; height: .16rem; margin-right: .3rem; vertical-align: middle; }
.tp-key-close { background: var(--tp-blue); }
.tp-key-boundary { background: var(--tp-caution); border-top: 1px dashed var(--tp-caution); }
.tp-chart { width: 100%; min-height: 300px; margin-top: .75rem; }
.tp-price-chart { min-height: 440px; }
.tp-chart-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .8rem; }
.tp-chart-grid .tp-chart-card { height: 100%; }

.tp-spectrum-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .7rem; margin-top: 1rem; }
.tp-spectrum-grid article { border: 1px solid var(--tp-line); padding: .9rem; background: var(--tp-soft); }
.tp-spectrum-grid article.is-primary { border-top: 4px solid var(--tp-blue); }
.tp-spectrum-grid strong { display: block; margin: .25rem 0; font-size: 1.25rem; font-variant-numeric: tabular-nums; }
.tp-spectrum-grid i { display: block; position: relative; height: .35rem; background: #d4dee6; overflow: hidden; }
.tp-spectrum-grid b { position: absolute; top: 0; bottom: 0; left: 50%; min-width: 3px; width: min(50%, max(3px, calc(var(--tp-spectrum) / 2))); }
.tp-spectrum-grid b.is-positive { background: var(--tp-positive); }
.tp-spectrum-grid b.is-negative { background: var(--tp-negative); transform: translateX(-100%); width: min(50%, max(3px, calc(var(--tp-spectrum) / -2))); }
.tp-spectrum-grid small { display: block; margin-top: .35rem; color: var(--tp-muted); font-size: .72rem; font-weight: 700; }

.tp-outcome-table { min-width: 850px; }
.tp-regime-summary,
.tp-context-grid,
.tp-risk-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .7rem; margin-top: .8rem; }
.tp-context-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.tp-risk-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.tp-regime-summary article,
.tp-context-grid article,
.tp-risk-grid article { border: 1px solid var(--tp-line); }
.tp-risk-grid p { margin: .4rem 0 0; font-size: .78rem; }
.tp-details { margin-top: .8rem; border: 1px solid var(--tp-line); background: #fff; }
.tp-details summary { cursor: pointer; padding: .8rem; color: var(--tp-blue); font-weight: 900; }
.tp-details .tp-table-wrap { border: 0; border-top: 1px solid var(--tp-line); }
.tp-disclaimer { margin: 1rem 0 0; padding: .85rem; border-left: 4px solid var(--tp-caution); background: var(--tp-caution-soft); color: #604919; font-size: .78rem; font-weight: 750; line-height: 1.55; }
.tp-chart .uplot { font-family: inherit !important; }

@media (min-width: 1800px) {
    .tp-shell { width: min(100% - 3rem, 1900px); }
    .tp-table td { font-size: .88rem; }
    .tp-hero p { font-size: 1rem; }
}

@media (max-width: 1200px) {
    .tp-kpis,
    .tp-detail-kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .tp-context-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .tp-filters { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .tp-search { grid-column: span 2; }
}

@media (max-width: 900px) {
    .tp-hero,
    .tp-report-hero,
    .tp-callout { grid-template-columns: 1fr; }
    .tp-hero-stats { min-width: 0; border-left: 0; border-top: 1px solid var(--tp-line); }
    .tp-report-hero aside { border-left: 0; border-top-width: 4px; }
    .tp-method-strip,
    .tp-methodology-grid,
    .tp-spectrum-grid,
    .tp-risk-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .tp-chart-grid { grid-template-columns: 1fr; }
    .tp-panel-head,
    .tp-section-head,
    .tp-chart-head { display: block; }
    .tp-legend { margin-top: .65rem; }
}

@media (max-width: 640px) {
    .tp-shell { width: min(100% - .7rem, 100%); margin-top: .35rem; }
    .tp-hero-stats,
    .tp-kpis,
    .tp-detail-kpis,
    .tp-method-strip,
    .tp-methodology-grid,
    .tp-spectrum-grid,
    .tp-risk-grid,
    .tp-context-grid,
    .tp-regime-summary,
    .tp-filters { grid-template-columns: 1fr; }
    .tp-search { grid-column: auto; }
    .tp-hero-stats div,
    .tp-kpis article,
    .tp-detail-kpis article,
    .tp-method-strip article { border-left: 0; border-top: 1px solid var(--tp-line); }
    .tp-report-nav a { flex-basis: 11rem; }
    .tp-price-chart { min-height: 350px; }
    .tp-chart { min-height: 270px; }
    .tp-help::after {
        position: fixed;
        top: auto;
        right: 1rem;
        bottom: 1rem;
        left: 1rem;
        width: auto;
        transform: translateY(.2rem);
    }
    .tp-help:hover::after,
    .tp-help:focus-visible::after { transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
    .tp-shell * { scroll-behavior: auto !important; }
}
