.ipo-research-page {
    --ipo-page-bg: #f7f8fa;
    --ipo-surface: #ffffff;
    --ipo-surface-muted: #f3f5f7;
    --ipo-text: #15191f;
    --ipo-text-secondary: #4e5865;
    --ipo-text-muted: #788391;
    --ipo-border: #e1e5ea;
    --ipo-border-strong: #c9d0d8;
    --ipo-positive: #17734a;
    --ipo-neutral: #967536;
    --ipo-warning: #a65a20;
    --ipo-warning-bg: #fff8ef;
    min-height: 100%;
    padding: 26px 0 68px;
    background: var(--ipo-page-bg);
    color: var(--ipo-text);
}

.ipo-research-container { width: min(calc(100% - 56px), 1360px); margin: 0 auto; }
.ipo-article-breadcrumb { display: flex; align-items: center; gap: 8px; margin-bottom: 24px; color: var(--ipo-text-muted); font-size: 12px; }
.ipo-article-breadcrumb a { color: var(--ipo-text-secondary); text-decoration: none; }
.ipo-article-breadcrumb a:hover { color: var(--aurum-dark); }

.ipo-hero-grid { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(340px, 1fr); gap: 40px; align-items: start; scroll-margin-top: 72px; }
.ipo-company-hero { min-width: 0; padding: 22px 0 18px; }
.ipo-article-kicker { margin-bottom: 16px; color: var(--aurum-dark); font-size: 11px; font-weight: 750; text-transform: uppercase; }
.ipo-company-ticker { display: block; margin-bottom: 7px; color: var(--aurum-dark); font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 14px; font-weight: 750; }
.ipo-company-title-row { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; }
.ipo-company-title-row h1 { margin: 0; color: var(--ipo-text); font-size: 34px; font-weight: 750; line-height: 1.22; letter-spacing: 0; overflow-wrap: anywhere; }
.status-tag { padding: 5px 8px; border: 1px solid rgba(177, 142, 77, .35); border-radius: 4px; background: #fbf7ed; color: var(--aurum-dark); font-size: 11px; font-weight: 750; white-space: nowrap; }
.ipo-company-secondary-name { margin: 8px 0 0; color: var(--ipo-text-muted); font-size: 14px; }
.ipo-company-tags { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 17px; }
.ipo-company-tags span { padding: 5px 8px; border: 1px solid var(--ipo-border); border-radius: 4px; background: var(--ipo-surface-muted); color: var(--ipo-text-secondary); font-size: 11px; font-weight: 650; }
.ipo-article-lede { display: -webkit-box; max-width: 780px; margin: 21px 0 0; overflow: hidden; color: var(--ipo-text-secondary); font-size: 15px; line-height: 1.72; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.ipo-article-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 23px; }
.ipo-article-actions button,
.ipo-article-actions a { display: inline-flex; min-height: 42px; align-items: center; justify-content: center; padding: 9px 15px; border: 1px solid var(--aurum-dark); border-radius: 5px; font: inherit; font-size: 12px; font-weight: 750; text-decoration: none; cursor: pointer; }
.ipo-article-actions .primary-action { background: var(--aurum-dark); color: #fff; }
.ipo-article-actions .secondary-action { background: transparent; color: var(--aurum-dark); }
.ipo-article-actions .primary-action:hover { background: #816536; }
.ipo-article-actions .secondary-action:hover { background: #fbf7ed; }
#ipo-share-status { color: var(--ipo-text-muted); font-size: 12px; }

.ipo-snapshot-card,
.ipo-score-panel,
.ipo-overview-card,
.ipo-dates-card { border: 1px solid var(--ipo-border); border-radius: 8px; background: var(--ipo-surface); box-shadow: 0 3px 12px rgba(15, 23, 42, .03); }
.ipo-snapshot-card { padding: 21px 22px; }
.ipo-card-heading { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.ipo-card-heading h2 { margin: 0; color: var(--ipo-text); font-size: 15px; font-weight: 750; letter-spacing: 0; }
.ipo-snapshot-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 14px 0 0; }
.ipo-snapshot-grid > div { min-width: 0; padding: 12px 8px 11px 0; border-top: 1px solid var(--ipo-border); }
.ipo-snapshot-grid > div:nth-child(odd):not(.price-fact):not(.wide-fact) { padding-left: 13px; border-left: 1px solid var(--ipo-border); }
.ipo-snapshot-grid .price-fact { grid-column: 1 / -1; padding: 15px 0 16px; }
.ipo-snapshot-grid .wide-fact { grid-column: 1 / -1; padding-right: 0; }
.ipo-snapshot-grid .secondary-fact { background: linear-gradient(var(--ipo-surface-muted), var(--ipo-surface-muted)) 0 100% / 100% 1px no-repeat; }
.ipo-snapshot-grid dt { color: var(--ipo-text-muted); font-size: 10px; font-weight: 650; }
.ipo-snapshot-grid dd { margin: 5px 0 0; color: var(--ipo-text); font-size: 13px; font-weight: 700; line-height: 1.42; overflow-wrap: anywhere; }
.ipo-snapshot-grid dd small { color: var(--ipo-text-muted); font-size: 9px; font-weight: 650; }
.ipo-snapshot-grid .price-fact dd { margin-top: 4px; color: var(--aurum-dark); font-size: 27px; font-variant-numeric: tabular-nums; }

.ipo-score-panel { display: grid; grid-template-columns: 195px minmax(0, 1fr); margin-top: 26px; overflow: hidden; }
.ipo-overall-score { display: flex; flex-direction: column; justify-content: center; padding: 19px 22px; border-right: 1px solid var(--ipo-border); }
.ipo-overall-score > span { color: var(--ipo-text-secondary); font-size: 11px; font-weight: 750; }
.ipo-overall-score > div { display: flex; align-items: baseline; gap: 4px; margin-top: 5px; }
.ipo-overall-score strong { font-size: 31px; line-height: 1; font-variant-numeric: tabular-nums; }
.ipo-overall-score small { color: var(--ipo-text-muted); font-size: 11px; }
.score-positive strong { color: var(--ipo-positive); }
.score-neutral strong { color: var(--ipo-neutral); }
.score-warning strong { color: var(--ipo-warning); }
.score-unrated strong { color: var(--ipo-text-muted); }
.ipo-score-dimensions { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.ipo-score-dimensions a { min-width: 0; padding: 16px 17px; border-right: 1px solid var(--ipo-border); color: inherit; text-decoration: none; }
.ipo-score-dimensions a:last-child { border-right: 0; }
.ipo-score-dimensions span { display: block; color: var(--ipo-text-secondary); font-size: 11px; line-height: 1.4; }
.ipo-score-dimensions strong { display: block; margin-top: 3px; font-size: 19px; font-variant-numeric: tabular-nums; }
.ipo-score-dimensions i { display: block; height: 3px; margin-top: 10px; overflow: hidden; background: var(--ipo-border); }
.ipo-score-dimensions i b { display: block; height: 100%; background: currentColor; }
.ipo-score-dimensions .score-positive { color: var(--ipo-positive); }
.ipo-score-dimensions .score-neutral { color: var(--ipo-neutral); }
.ipo-score-dimensions .score-warning { color: var(--ipo-warning); }
.ipo-score-dimensions a span { color: var(--ipo-text-secondary); }

.ipo-briefing-grid { display: grid; grid-template-columns: minmax(0, 1.85fr) minmax(280px, 1fr); gap: 22px; margin-top: 22px; }
.ipo-briefing-grid > :only-child { grid-column: 1 / -1; }
.ipo-overview-card,
.ipo-dates-card { padding: 21px 23px; }
.ipo-overview-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 22px; margin: 14px 0 0; }
.ipo-overview-list > div { min-width: 0; padding: 12px 0; border-top: 1px solid var(--ipo-border); }
.ipo-overview-list dt { color: var(--aurum-dark); font-size: 10px; font-weight: 750; }
.ipo-overview-list dd { display: -webkit-box; margin: 5px 0 0; overflow: hidden; color: var(--ipo-text-secondary); font-size: 12px; font-weight: 600; line-height: 1.55; overflow-wrap: anywhere; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.ipo-date-timeline { position: relative; margin: 15px 0 0 4px; padding: 0; list-style: none; }
.ipo-date-timeline::before { position: absolute; top: 7px; bottom: 8px; left: 3px; width: 1px; background: var(--ipo-border-strong); content: ''; }
.ipo-date-timeline li { position: relative; padding: 0 0 15px 19px; }
.ipo-date-timeline li:last-child { padding-bottom: 0; }
.ipo-date-timeline li > span { position: absolute; top: 6px; left: 0; width: 7px; height: 7px; border: 2px solid var(--ipo-surface); border-radius: 50%; background: var(--aurum-gold); box-shadow: 0 0 0 1px var(--aurum-gold); }
.ipo-date-timeline strong { display: block; color: var(--ipo-text); font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 12px; font-variant-numeric: tabular-nums; }
.ipo-date-timeline small { display: block; margin-top: 2px; color: var(--ipo-text-muted); font-size: 10px; }

.ipo-analysis-nav { position: sticky; top: 0; z-index: 20; margin-top: 32px; border-top: 1px solid var(--ipo-border); border-bottom: 1px solid var(--ipo-border); background: rgba(255, 255, 255, .97); }
.ipo-analysis-nav > div { display: flex; width: min(calc(100% - 56px), 1360px); margin: 0 auto; overflow-x: auto; }
.ipo-analysis-nav a { flex: 0 0 auto; min-height: 47px; padding: 15px 18px 11px; border-bottom: 2px solid transparent; color: var(--ipo-text-secondary); font-size: 12px; font-weight: 700; text-decoration: none; }
.ipo-analysis-nav a:hover,
.ipo-analysis-nav a:focus-visible,
.ipo-analysis-nav a.is-active { border-bottom-color: var(--aurum-gold); color: var(--aurum-dark); }

.ipo-article-body { padding-top: 38px; }
.ipo-research-heading { display: flex; align-items: end; justify-content: space-between; gap: 20px; margin-bottom: 8px; padding-bottom: 22px; border-bottom: 1px solid var(--ipo-border-strong); }
.ipo-research-heading span { color: var(--aurum-dark); font-size: 10px; font-weight: 750; text-transform: uppercase; }
.ipo-research-heading h2 { margin: 5px 0 0; font-size: 22px; letter-spacing: 0; }
.ipo-research-heading > p { margin: 0; color: var(--ipo-text-muted); font-size: 11px; }
.ipo-analysis-section { scroll-margin-top: 66px; padding: 54px 0 58px; border-bottom: 1px solid var(--ipo-border-strong); }
.ipo-analysis-heading { display: grid; grid-template-columns: 38px minmax(0, 1fr) auto; gap: 16px; align-items: start; margin-bottom: 30px; }
.ipo-analysis-heading > span { padding-top: 4px; color: var(--aurum-dark); font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 11px; font-weight: 750; }
.ipo-analysis-heading h3 { margin: 0; font-size: 24px; letter-spacing: 0; }
.ipo-analysis-heading p { max-width: 720px; margin: 6px 0 0; color: var(--ipo-text-muted); font-size: 12px; line-height: 1.55; }
.ipo-analysis-heading > strong { font-size: 21px; font-variant-numeric: tabular-nums; }
.ipo-analysis-heading > strong small { margin-left: 2px; color: var(--ipo-text-muted); font-size: 10px; }

.ipo-analysis-content { color: var(--ipo-text-secondary); font-size: 14px; line-height: 1.74; }
.ipo-analysis-content > :not(table):not(hr) { max-width: 850px; }
.ipo-analysis-content h1,
.ipo-analysis-content h2,
.ipo-analysis-content h3 { color: var(--ipo-text); letter-spacing: 0; }
.ipo-analysis-content h1 { margin: 34px 0 14px; font-size: 21px; }
.ipo-analysis-content h2 { margin: 35px 0 13px; padding-top: 2px; font-size: 18px; }
.ipo-analysis-content h3 { margin: 26px 0 10px; font-size: 15px; }
.ipo-analysis-content p { margin: 0 0 14px; }
.ipo-analysis-content ul,
.ipo-analysis-content ol { margin: 0 0 19px; padding-left: 22px; }
.ipo-analysis-content li { margin-bottom: 7px; }
.ipo-analysis-content hr { margin: 31px 0; border: 0; border-top: 1px solid var(--ipo-border); }
.ipo-analysis-content blockquote { margin: 19px 0; padding: 12px 15px; border-left: 3px solid var(--ipo-warning); background: var(--ipo-warning-bg); color: var(--ipo-text-secondary); }
.ipo-analysis-content table { display: block; width: 100%; margin: 19px 0 27px; overflow-x: auto; border-collapse: collapse; font-size: 12px; white-space: normal; }
.ipo-analysis-content th,
.ipo-analysis-content td { min-width: 120px; padding: 10px 12px; border: 1px solid var(--ipo-border); text-align: left; vertical-align: top; }
.ipo-analysis-content th { background: var(--ipo-surface-muted); color: var(--ipo-text-secondary); font-size: 10px; font-weight: 750; }
.ipo-analysis-content tbody tr:nth-child(even) { background: rgba(247, 248, 250, .8); }
.ipo-analysis-content tbody tr:hover { background: #fbf7ed; }
.ipo-analysis-content strong { color: var(--ipo-text); }
.ipo-analysis-content .risk-watch-heading { max-width: 850px; margin-top: 34px; padding: 12px 14px; border-left: 3px solid var(--ipo-warning); background: var(--ipo-warning-bg); }
.ipo-analysis-content .risk-watch-heading::before { display: block; margin-bottom: 4px; color: var(--ipo-warning); font-size: 9px; font-weight: 800; text-transform: uppercase; content: attr(data-watch-label); }
.percentage-cell { min-width: 150px !important; }
.inline-percentage-bar { display: block; width: 100%; height: 3px; margin-top: 7px; overflow: hidden; background: var(--ipo-border); }
.inline-percentage-bar i { display: block; height: 100%; background: var(--aurum-gold); }

.ipo-article-source { margin-top: 38px; padding: 25px 0 10px; color: var(--ipo-text-muted); }
.ipo-article-source h2 { margin: 0 0 9px; color: var(--ipo-text-secondary); font-size: 13px; letter-spacing: 0; }
.ipo-article-source p { max-width: 850px; margin: 4px 0; font-size: 11px; line-height: 1.65; }
.ipo-research-page :focus-visible { outline: 2px solid var(--aurum-gold); outline-offset: 3px; }

[data-theme="dark"] .ipo-research-page { --ipo-page-bg: #17191d; --ipo-surface: #202329; --ipo-surface-muted: #272b32; --ipo-text: #edf0f4; --ipo-text-secondary: #c3c9d2; --ipo-text-muted: #8f98a6; --ipo-border: #353b45; --ipo-border-strong: #46505d; --ipo-positive: #69c293; --ipo-neutral: #d0ad6a; --ipo-warning: #e5a15c; --ipo-warning-bg: #34271d; }
[data-theme="dark"] .status-tag { background: #302a20; }
[data-theme="dark"] .ipo-analysis-nav { background: rgba(32, 35, 41, .97); }
[data-theme="dark"] .ipo-article-actions .primary-action { background: var(--aurum-gold); color: #15171a; }
[data-theme="dark"] .ipo-article-actions .secondary-action { color: var(--aurum-light); border-color: var(--aurum-dark); }
[data-theme="dark"] .ipo-analysis-content tbody tr:nth-child(even) { background: rgba(39, 43, 50, .75); }
[data-theme="dark"] .ipo-analysis-content tbody tr:hover { background: #302a20; }

@media (max-width: 1050px) {
    .ipo-hero-grid { grid-template-columns: 1fr; gap: 18px; }
    .ipo-company-hero { padding-bottom: 8px; }
    .ipo-score-panel { grid-template-columns: 170px minmax(0, 1fr); }
    .ipo-score-dimensions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .ipo-score-dimensions a:nth-child(2) { border-right: 0; }
    .ipo-score-dimensions a:nth-child(-n+2) { border-bottom: 1px solid var(--ipo-border); }
    .ipo-briefing-grid { grid-template-columns: 1fr; }
}

@media (max-width: 767px) {
    .ipo-research-page { padding: 17px 0 calc(var(--mobile-nav-h) + 28px); }
    .ipo-research-container { width: min(calc(100% - 28px), 1360px); }
    .ipo-article-breadcrumb { margin-bottom: 14px; }
    .ipo-company-hero { padding: 10px 0 18px; }
    .ipo-company-title-row { align-items: flex-start; }
    .ipo-company-title-row h1 { width: 100%; font-size: 27px; }
    .ipo-article-lede { margin-top: 17px; font-size: 14px; }
    .ipo-article-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .ipo-article-actions > :only-child { grid-column: 1 / -1; }
    #ipo-share-status { grid-column: 1 / -1; }
    .ipo-snapshot-card { padding: 18px 16px; }
    .ipo-snapshot-grid > div { padding: 12px 7px 11px 0; }
    .ipo-snapshot-grid > div:nth-child(odd):not(.price-fact):not(.wide-fact) { padding-left: 10px; }
    .ipo-score-panel { display: block; }
    .ipo-overall-score { flex-direction: row; align-items: center; justify-content: space-between; padding: 17px; border-right: 0; border-bottom: 1px solid var(--ipo-border); }
    .ipo-overall-score > div { margin-top: 0; }
    .ipo-score-dimensions a { padding: 14px; }
    .ipo-briefing-grid { gap: 15px; margin-top: 15px; }
    .ipo-overview-card,
    .ipo-dates-card { padding: 18px 16px; }
    .ipo-overview-list { grid-template-columns: 1fr; }
    .ipo-analysis-nav { margin-top: 22px; }
    .ipo-analysis-nav > div { width: 100%; padding: 0 7px; }
    .ipo-analysis-nav a { min-height: 45px; padding: 14px 12px 10px; }
    .ipo-article-body { padding-top: 28px; }
    .ipo-research-heading { align-items: start; }
    .ipo-research-heading > p { display: none; }
    .ipo-analysis-section { padding: 40px 0 44px; }
    .ipo-analysis-heading { grid-template-columns: 28px minmax(0, 1fr) auto; gap: 10px; margin-bottom: 24px; }
    .ipo-analysis-heading h3 { font-size: 19px; }
    .ipo-analysis-heading p { font-size: 11px; }
    .ipo-analysis-heading > strong { font-size: 17px; }
    .ipo-analysis-content { font-size: 13px; }
    .ipo-analysis-content table { font-size: 11px; }
}

@media (max-width: 430px) {
    .ipo-company-tags span { max-width: 100%; overflow-wrap: anywhere; }
    .ipo-score-dimensions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
