@property --shimmer-angle {
    syntax: '<angle>';
    initial-value: 0deg;
    inherits: false;
}

@property --ripple-a1 {
    syntax: '<number>';
    initial-value: 0;
    inherits: false;
}

@property --ripple-a2 {
    syntax: '<number>';
    initial-value: 0;
    inherits: false;
}

@property --ripple-a3 {
    syntax: '<number>';
    initial-value: 0;
    inherits: false;
}

/* ============================================
   The Ecosystem Edge
   FT-Inspired Design System — Complete Package
   ============================================ */

:root {
    --ft-pink: #fff1e5;
    --ft-pink-dark: #f2dfce;
    --ft-black: #33302e;
    --ft-grey-dark: #66605c;
    --ft-grey-medium: #666666;
    --ft-grey-light: #ccc1b7;
    --ft-white: #ffffff;
    --ft-claret: #9e2f50;
    --ft-oxford: #0f5499;
    --ft-teal: #0d7680;
    --ft-wheat: #f2e5da;
    --ft-paper: #fffcf9;
    --ft-sky: #cce6ff;
    --ft-mandarin: #ff8833;
    
    --color-bg: var(--ft-pink);
    --color-text: var(--ft-black);
    --color-text-muted: var(--ft-grey-dark);
    --color-text-light: var(--ft-grey-medium);
    --color-border: var(--ft-grey-light);
    
    --font-serif: 'Georgia', 'Times New Roman', serif;
    --font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    
    /* Type Scale (1.2 ratio - Minor Third) */
    --text-xs: 0.625rem;    /* 10px - micro labels */
    --text-sm: 0.75rem;     /* 12px - captions, meta */
    --text-base: 0.875rem;  /* 14px - body small, UI */
    --text-md: 1rem;        /* 16px - body default */
    --text-lg: 1.125rem;    /* 18px - body large, lead */
    --text-xl: 1.25rem;     /* 20px - card titles */
    --text-2xl: 1.5rem;     /* 24px - section headers */
    --text-3xl: 1.875rem;   /* 30px - page titles */
    --text-4xl: 2.25rem;    /* 36px - masthead */
    
    --space-xs: 0.25rem;
    --space-sm: 0.5rem;
    --space-md: 1rem;
    --space-lg: 1.5rem;
    --space-xl: 2rem;
    --space-xxl: 3rem;
    
    --max-width: 1220px;
}

*, *::before, *::after { box-sizing: border-box; }

html {
    font-size: 16px;
    -webkit-font-smoothing: antialiased;
    scroll-behavior: smooth;
}

body {
    margin: 0;
    padding: 0;
    font-family: var(--font-serif);
    font-size: var(--text-lg);
    line-height: 1.6;
    color: var(--color-text);
    background-color: var(--ft-pink);
}

a {
    color: var(--color-text);
    text-decoration: none;
    border-bottom: 1px solid var(--ft-grey-light);
    transition: border-color 0.15s ease, color 0.15s ease;
    cursor: pointer;
}

a:hover {
    color: var(--ft-claret);
    border-bottom-color: var(--ft-claret);
}

h1, h2, h3, h4, h5, h6 {
    font-family: var(--font-serif);
    font-weight: 600;
    line-height: 1.2;
    margin: 0 0 var(--space-md) 0;
}

p { margin: 0 0 var(--space-md) 0; }
ul { margin: 0 0 var(--space-md) 0; padding-left: var(--space-lg); }
li { margin-bottom: var(--space-sm); }

/* Header - masthead scrolls, nav sticks */
/* Sticky header group — wraps header + nav + breadcrumb */
.sticky-header-group {
    position: sticky;
    top: 0;
    z-index: 100;
}

.site-header {
    background-color: var(--ft-wheat);
    border-bottom: 1px solid var(--color-border);
}

.header-inner {
    max-width: var(--max-width);
    margin: 0 auto;
    padding: var(--space-lg) var(--space-xl);
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
}

.site-title {
    font-family: var(--font-serif);
    font-size: var(--text-4xl);
    font-weight: 600;
    letter-spacing: -0.01em;
    margin: 0;
}

.edition {
    font-family: var(--font-sans);
    font-size: var(--text-sm);
    color: var(--color-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-top: var(--space-xs);
}

.header-meta {
    font-family: var(--font-sans);
    font-size: 0.875rem;
    color: var(--color-text-muted);
}

.refresh-stamp {
    display: inline-block;
    margin-left: 0.75em;
    padding-left: 0.75em;
    border-left: 1px solid var(--color-border, #ccc);
    font-size: 0.75rem;
    color: var(--color-text-muted);
    opacity: 0.8;
}

.main-nav {
    background-color: var(--ft-black);
}

.main-nav-inner {
    max-width: var(--max-width);
    margin: 0 auto;
    padding: 0 var(--space-xl);
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.main-nav ul {
    list-style: none;
    display: flex;
    margin: 0;
    padding: 0;
}

.main-nav a {
    display: block;
    padding: var(--space-md) var(--space-md);
    font-family: var(--font-sans);
    font-size: var(--text-base);
    font-weight: 500;
    color: var(--ft-white);
    border: none;
    border-bottom: 3px solid transparent;
    white-space: nowrap;
}

.main-nav a:hover,
.main-nav a.active {
    background-color: rgba(255, 255, 255, 0.1);
    color: var(--ft-white);
}

.main-nav a.active {
    border-bottom-color: var(--ft-claret);
}

.main-nav a.nav-muted {
    opacity: 0.5;
    font-weight: 400;
}

.main-nav a.nav-muted:hover {
    opacity: 0.8;
}

/* ── Gear settings button ── */
.settings-gear-btn {
    background: none;
    border: none;
    color: rgba(255, 255, 255, 0.5);
    cursor: pointer;
    padding: 6px;
    border-radius: 4px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: color 0.2s ease, background 0.2s ease;
}
.settings-gear-btn:hover {
    color: rgba(255, 255, 255, 0.9);
    background: rgba(255, 255, 255, 0.08);
}
.settings-gear-btn.active {
    color: var(--ft-white);
    background: rgba(255, 255, 255, 0.12);
}

/* ── Breadcrumb bar ── */
.breadcrumb-bar {
    display: none;
    background: var(--color-bg-paper, #fff8f2);
    border-bottom: 1px solid var(--color-border, #e8e2de);
}
.breadcrumb-bar.visible { display: block; }
.breadcrumb-inner {
    max-width: var(--max-width, 1200px);
    margin: 0 auto;
    padding: 0 var(--space-xl, 1.5rem);
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 36px;
    position: relative;
}
.breadcrumb-trail {
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    color: var(--color-text-muted, #66605c);
    display: flex;
    align-items: center;
    gap: 0;
}
.breadcrumb-trail .breadcrumb-parent {
    color: var(--color-text-muted, #66605c);
    cursor: pointer;
    border: none;
    background: none;
    font: inherit;
    padding: 0;
    text-decoration: none;
    transition: color 0.15s ease;
}
.breadcrumb-trail .breadcrumb-parent:hover {
    color: var(--color-text, #33302e);
}
.breadcrumb-trail .breadcrumb-sep {
    margin: 0 0.4rem;
    color: var(--color-text-muted, #66605c);
    opacity: 0.5;
}
.breadcrumb-trail .breadcrumb-current {
    color: var(--color-text, #33302e);
    font-weight: 600;
    cursor: default;
}
.breadcrumb-trail .breadcrumb-dropdown-trigger {
    background: none;
    border: none;
    font: inherit;
    color: var(--color-text, #33302e);
    font-weight: 600;
    cursor: pointer;
    padding: 0;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    transition: color 0.15s ease;
}
.breadcrumb-trail .breadcrumb-dropdown-trigger:hover {
    color: var(--color-accent, #9e2f50);
}
.breadcrumb-trail .breadcrumb-dropdown-arrow {
    font-size: 0.6em;
    transition: transform 0.2s ease;
}
.breadcrumb-trail .breadcrumb-dropdown-trigger.open .breadcrumb-dropdown-arrow {
    transform: rotate(180deg);
}

/* Breadcrumb dropdown */
.breadcrumb-dropdown {
    display: none;
    position: absolute;
    top: 100%;
    left: var(--space-xl, 1.5rem);
    background: var(--color-bg-paper, #fff8f2);
    border: 1px solid var(--color-border, #e8e2de);
    border-top: none;
    box-shadow: 0 8px 24px rgba(0,0,0,0.12);
    min-width: 320px;
    max-width: 420px;
    z-index: 200;
    padding: 4px 0;
}
.breadcrumb-dropdown.open { display: block; }
.breadcrumb-dropdown a {
    display: block;
    padding: 8px 16px;
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    color: var(--color-text-muted, #66605c);
    text-decoration: none;
    border: none;
    transition: background 0.15s ease, color 0.15s ease;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.breadcrumb-dropdown a:hover {
    background: rgba(0,0,0,0.04);
    color: var(--color-text, #33302e);
}
.breadcrumb-dropdown a.active {
    color: var(--color-accent, #9e2f50);
    font-weight: 600;
    border-left: 3px solid var(--color-accent, #9e2f50);
    padding-left: 13px;
}
.breadcrumb-dropdown .breadcrumb-dropdown-category {
    font-size: 0.625rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-text-muted, #66605c);
    opacity: 0.6;
    margin-left: 8px;
}

/* Copy link button */
.breadcrumb-copy-link {
    background: none;
    border: none;
    font-family: var(--font-sans);
    font-size: 0.75rem;
    color: var(--color-text-muted, #66605c);
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 4px 8px;
    border-radius: 3px;
    transition: background 0.15s ease, color 0.15s ease;
    white-space: nowrap;
}
.breadcrumb-copy-link:hover {
    background: rgba(0,0,0,0.05);
    color: var(--color-text, #33302e);
}
.breadcrumb-copy-link.copied {
    color: var(--color-accent, #9e2f50);
}

/* ── Site footer ── */
.site-footer {
    border-top: 1px solid var(--color-border, #e8e2de);
    padding: var(--space-xl, 1.5rem) 0;
    margin-top: var(--space-xl, 1.5rem);
}
.site-footer .footer-inner {
    max-width: var(--max-width, 1200px);
    margin: 0 auto;
    padding: 0 var(--space-xl, 1.5rem);
    display: flex;
    align-items: center;
    justify-content: space-between;
}
.site-footer .footer-links {
    display: flex;
    align-items: center;
    gap: 0;
}
.site-footer .footer-links a {
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    color: var(--color-text-muted, #66605c);
    text-decoration: none;
    transition: color 0.15s ease;
}
.site-footer .footer-links a:hover {
    color: var(--color-text, #33302e);
}
.site-footer .footer-sep {
    margin: 0 0.75rem;
    color: var(--color-text-muted, #66605c);
    opacity: 0.4;
}
.site-footer .footer-brand {
    font-family: var(--font-serif, Georgia, serif);
    font-size: 0.8125rem;
    color: var(--color-text-muted, #66605c);
    opacity: 0.5;
}

.nav-date {
    font-size: var(--text-xs);
    font-weight: 400;
    opacity: 0.6;
    margin-left: 6px;
}

/* Container & Layout */
.container {
    max-width: var(--max-width);
    margin: 0 auto;
    padding: var(--space-xl);
}

.container.narrow {
    max-width: 780px;
}

.divider {
    height: 1px;
    background-color: var(--color-border);
    margin: var(--space-xl) 0;
}

/* Page Sections */
.page-section {
    display: none;
}

.page-section.active {
    display: block;
}

/* Labels & Titles */
.section-label {
    display: block;
    font-family: var(--font-sans);
    font-size: 1.125rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--ft-claret);
    margin-bottom: var(--space-sm);
}

.section-title {
    font-size: 1.5rem;
    font-weight: 600;
    margin-bottom: var(--space-sm);
    padding-bottom: var(--space-sm);
    border-bottom: 4px solid var(--ft-black);
    display: inline-block;
}

.section-intro {
    font-size: 1rem;
    color: var(--color-text-muted);
    margin-bottom: var(--space-lg);
    max-width: 700px;
}

.page-header { margin-bottom: var(--space-xl); }

.page-title {
    font-size: var(--text-3xl);
    font-weight: 700;
    margin-bottom: var(--space-sm);
    letter-spacing: -0.01em;
}

.page-meta {
    font-family: var(--font-sans);
    font-size: var(--text-base);
    color: var(--color-text-muted);
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-lg);
}

.lead-summary {
    font-size: 1.125rem;
    line-height: 1.7;
    color: var(--color-text);
    max-width: 700px;
}

.lead-summary p {
    margin: 0 0 0.75em 0;
}
.lead-summary p:last-child {
    margin-bottom: 0;
}

.lead-summary-list {
    list-style: disc;
    padding-left: 1.25em;
    margin: 0;
}

.lead-summary-list li {
    margin-bottom: 0.6em;
    line-height: 1.65;
}

.lead-summary-list li:last-child {
    margin-bottom: 0;
}

/* Lead Section */
.lead-section {
    display: grid;
    grid-template-columns: 1fr 240px;
    gap: var(--space-xl);
    align-items: start;
}

.lead-headline {
    font-size: 1.75rem;
    font-weight: 600;
    line-height: 1.15;
    margin-bottom: var(--space-md);
}

.read-more {
    display: inline-block;
    font-family: var(--font-sans);
    font-size: 0.9375rem;
    font-weight: 500;
    color: var(--ft-oxford);
    border-bottom-color: var(--ft-oxford);
    margin-top: var(--space-sm);
}

.lead-stats {
    background-color: var(--ft-wheat);
    padding: var(--space-md) var(--space-lg);
    border-left: 3px solid var(--ft-grey-medium);
}

.lead-stats-header {
    font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--color-text-muted);
    padding-bottom: var(--space-sm);
    margin-bottom: var(--space-xs);
    border-bottom: 1px solid var(--color-border);
    display: flex;
    justify-content: space-between;
    gap: var(--space-sm);
}

.stats-title {
    color: var(--color-text-muted);
}

.stats-timestamp {
    color: var(--color-text-muted);
    opacity: 0.7;
}

.stat-block {
    display: flex;
    align-items: baseline;
    gap: var(--space-sm);
    padding: var(--space-xs) 0;
}

.stat-block:last-child { padding-bottom: 0; }

.stat-number {
    font-family: var(--font-sans);
    font-size: 0.875rem;
    font-weight: 600;
    line-height: 1;
    color: var(--ft-oxford);
}

.stat-label {
    font-family: var(--font-serif);
    font-size: 0.8125rem;
    color: var(--color-text-muted);
}

/* Theme Grid */
.theme-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--space-lg);
}

.theme-grid.cols-3 {
    grid-template-columns: repeat(3, 1fr);
}

.theme-card {
    background-color: var(--ft-white);
    padding: var(--space-lg);
    border-top: 4px solid var(--ft-grey-medium);
    transition: border-color 0.15s ease;
}

.theme-card:hover { border-top-color: var(--ft-claret); }
.theme-card.priority-high { border-top-color: var(--ft-claret); }
.theme-card.priority-medium { border-top-color: var(--ft-mandarin); }

.theme-card.disabled {
    opacity: 0.5;
    cursor: default;
}

.theme-card.disabled:hover {
    border-top-color: var(--ft-grey-medium);
}

.theme-card.disabled h3 a {
    pointer-events: none;
    color: var(--color-text-muted);
}

.theme-card.disabled::after {
    content: 'Coming soon';
    display: block;
    font-family: var(--font-sans);
    font-size: var(--text-xs);
    font-style: italic;
    color: var(--color-text-muted);
    margin-top: 8px;
}

.theme-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--space-sm);
}

.priority-indicator {
    font-size: 0.625rem;
    letter-spacing: 0.1em;
    color: var(--ft-grey-medium);
}

.priority-high .priority-indicator { color: var(--ft-claret); }
.priority-medium .priority-indicator { color: var(--ft-mandarin); }

.article-count {
    font-family: var(--font-sans);
    font-size: 0.75rem;
    color: var(--color-text-muted);
}

.theme-card h3 {
    font-size: 1.125rem;
    font-weight: 600;
    margin-bottom: var(--space-sm);
    line-height: 1.3;
}

.theme-card h3 a { border-bottom: none; }

.theme-card > p {
    font-size: 0.9375rem;
    line-height: 1.5;
    color: var(--color-text-muted);
    margin-bottom: var(--space-md);
}

.theme-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-xs);
    font-family: var(--font-sans);
    font-size: 0.75rem;
    padding-top: var(--space-md);
    border-top: 1px solid var(--color-border);
}

.theme-meta .trend {
    width: 100%;
}

.theme-meta .updated {
    flex: 1;
}

.trend { font-weight: 600; }
.trend-up { color: var(--ft-teal); }
.trend-down { color: var(--ft-claret); }
.trend-flat { color: var(--color-text-muted); }

/* Subscribe button */
.theme-subscribe {
    font-family: var(--font-sans);
    font-size: 0.6875rem;
    font-weight: 500;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--color-text-muted);
    background: none;
    border: 1px solid var(--color-border);
    padding: 3px 10px;
    cursor: pointer;
    transition: color 0.2s ease, border-color 0.2s ease;
    margin-left: auto;
    white-space: nowrap;
}

.theme-subscribe:hover {
    color: var(--ft-claret);
    border-color: var(--ft-claret);
}

.theme-subscribe.subscribed {
    color: var(--ft-teal);
    border-color: var(--ft-teal);
    cursor: default;
}

.theme-subscribe.subscribed:hover {
    color: var(--ft-teal);
    border-color: var(--ft-teal);
}

/* Subscribe glow — card-level shimmer */
.theme-card {
    position: relative;
    overflow: visible;
}

.theme-card::before {
    content: '';
    position: absolute;
    inset: -1.5px;
    z-index: -1;
    opacity: 0;
    pointer-events: none;
    background: conic-gradient(
        from var(--shimmer-angle, 0deg),
        transparent 0%,
        transparent 8%,
        rgba(255, 80, 180, 0.55) 14%,
        rgba(255, 120, 60, 0.6) 21%,
        rgba(255, 220, 50, 0.55) 28%,
        rgba(80, 255, 120, 0.6) 35%,
        rgba(60, 200, 255, 0.65) 42%,
        rgba(100, 120, 255, 0.6) 49%,
        rgba(200, 80, 255, 0.55) 56%,
        rgba(255, 80, 180, 0.5) 63%,
        transparent 70%,
        transparent 100%
    );
    transition: opacity 0.6s ease-out;
}

.theme-card.subscribe-glow::before {
    opacity: 1;
    animation: edgeShimmer 2s linear infinite;
}

.theme-card.subscribe-glow-fade::before {
    opacity: 0;
    transition: opacity 1.2s ease-out;
    animation: edgeShimmer 2s linear infinite;
}
.updated { color: var(--color-text-light); }

/* Alerts */
.alerts-list {
    display: flex;
    flex-direction: column;
    gap: var(--space-md);
}

.alert-item {
    display: flex;
    gap: var(--space-md);
    padding: var(--space-md) 0;
    border-bottom: 1px solid var(--color-border);
}

.alert-content h4 {
    font-size: 1rem;
    font-weight: 600;
    margin-bottom: var(--space-xs);
}

.alert-content h4 a { border-bottom: none; }

.alert-meta {
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    color: var(--color-text-muted);
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-sm);
}

.alert-meta span::after {
    content: '·';
    margin-left: var(--space-sm);
    color: var(--color-text-light);
}

.alert-meta span:last-child::after,
.alert-meta time::after { content: none; }

.view-all {
    display: inline-block;
    font-family: var(--font-sans);
    font-size: 0.9375rem;
    font-weight: 500;
    margin-top: var(--space-lg);
    color: var(--ft-oxford);
    border-bottom-color: var(--ft-oxford);
}

/* Synthesis Section */
.synthesis-section {
    background-color: var(--ft-white);
    padding: var(--space-xl);
    margin-bottom: var(--space-xl);
    border-top: 4px solid var(--ft-black);
}

.synthesis-section h2 {
    font-size: 1.25rem;
    margin-bottom: var(--space-lg);
    padding-bottom: var(--space-sm);
    border-bottom: 1px solid var(--color-border);
}

.synthesis-content h3 {
    font-size: 1rem;
    font-weight: 600;
    margin-top: var(--space-lg);
    margin-bottom: var(--space-sm);
    color: var(--ft-claret);
}

.synthesis-content h3:first-child { margin-top: 0; }

/* Tables */
.articles-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9375rem;
}

.articles-table th {
    font-family: var(--font-sans);
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    text-align: left;
    padding: var(--space-md) var(--space-sm);
    border-bottom: 2px solid var(--ft-black);
    color: var(--color-text-muted);
}

.articles-table td {
    padding: var(--space-md) var(--space-sm);
    border-bottom: 1px solid var(--color-border);
    vertical-align: top;
}

.articles-table tr:hover { background-color: var(--ft-wheat); }

.date-col {
    width: 56px;
    font-family: var(--font-sans);
    font-size: 0.875rem;
    color: var(--color-text-muted);
    white-space: nowrap;
}

.source-col { width: 120px; }

.source-tag {
    display: inline-block;
    font-family: var(--font-sans);
    font-size: 0.6875rem;
    padding: 2px 6px;
    background-color: var(--ft-pink-dark);
    color: #5c3d2e;
    border-radius: 2px;
}

.source-tag.tier-1 { background-color: var(--ft-sky); color: #0a3d6b; }
.source-tag.tier-2 { background-color: var(--ft-wheat); color: var(--ft-black); }

.title-col a {
    font-weight: 500;
    border-bottom: none;
}

.title-col a.external-link {
    cursor: pointer;
    position: relative;
}

.title-col a.external-link::after {
    content: " ↗";
    font-size: 0.75em;
    color: var(--color-text-muted);
}

.url-tooltip {
    position: fixed;
    bottom: 20px;
    left: 50%;
    transform: translateX(-50%);
    background: var(--ft-black);
    color: var(--ft-white);
    padding: 12px 20px;
    font-family: var(--font-sans);
    font-size: 0.75rem;
    border-radius: 4px;
    z-index: 1000;
    max-width: 90%;
    word-break: break-all;
    box-shadow: 0 4px 12px rgba(0,0,0,0.3);
    display: none;
}

.url-tooltip.visible {
    display: block;
}

.url-tooltip .tooltip-label {
    display: block;
    font-size: 0.625rem;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--ft-grey-medium);
    margin-bottom: 4px;
}

.signal-col { width: 85px; }
.score-col { width: 50px; text-align: center; }

.signal-tag {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 2px;
    font-family: var(--font-sans);
    font-size: 0.6875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.signal-tag.announcement { background-color: var(--ft-teal); color: var(--ft-white); }
.signal-tag.analysis { background-color: var(--ft-oxford); color: var(--ft-white); }
.signal-tag.speculation { background-color: var(--ft-grey-medium); color: #1a1a1a; }
.signal-tag.background { background-color: var(--ft-grey-light); color: #3d3330; }

.theme-tag {
    display: inline-block;
    font-family: var(--font-sans);
    font-size: 0.6875rem;
    background-color: var(--ft-pink-dark);
    color: #5c3d2e;
    padding: 2px 8px;
    border-radius: 2px;
}

/* The Digest */
.summary-box {
    background-color: var(--ft-white);
    padding: var(--space-xl);
    border-top: 4px solid var(--ft-claret);
    margin-bottom: var(--space-lg);
}

.summary-box h2 {
    font-size: 1rem;
    font-weight: 600;
    margin-bottom: var(--space-md);
    color: var(--ft-claret);
}

.summary-box.tldr {
    background-color: var(--ft-paper);
    border-left: 4px solid var(--ft-oxford);
    border-top: none;
}

.summary-box.tldr h2 {
    font-family: var(--font-sans);
    font-size: 0.875rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    color: var(--ft-oxford);
    margin-bottom: var(--space-md);
}

.tldr-list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.tldr-list li {
    position: relative;
    padding-left: 1.5rem;
    margin-bottom: var(--space-sm);
    line-height: 1.5;
}

.tldr-list li:last-child {
    margin-bottom: 0;
}

.tldr-list li::before {
    content: "→";
    position: absolute;
    left: 0;
    color: var(--ft-oxford);
    font-weight: 600;
}

.tldr-list li .signal-score {
    margin-left: var(--space-xs);
    font-size: 0.6875rem;
    vertical-align: middle;
}

.digest-items {
    display: flex;
    flex-direction: column;
    gap: var(--space-lg);
}

.digest-item {
    background-color: var(--ft-white);
    padding: var(--space-lg);
    border-left: 4px solid var(--ft-grey-light);
}

.digest-item-header {
    display: flex;
    align-items: center;
    gap: var(--space-md);
    margin-bottom: var(--space-sm);
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    flex-wrap: wrap;
}

.signal-score {
    font-family: var(--font-sans);
    font-weight: 600;
    font-size: 0.75rem;
    padding: 2px 8px;
    border-radius: 2px;
    text-decoration: none;
    cursor: pointer;
    transition: opacity 0.15s ease;
}

a.signal-score:hover {
    opacity: 0.85;
    text-decoration: underline;
}

.signal-score.critical {
    background-color: var(--ft-claret);
    color: var(--ft-white);
}

.signal-score.high {
    background-color: var(--ft-mandarin);
    color: var(--ft-black);
}

.signal-score.medium {
    background-color: var(--ft-wheat);
    color: var(--ft-black);
}

.signal-score.low {
    background-color: var(--ft-grey-light);
    color: #3d3330;
}

.digest-item-header time {
    color: var(--color-text-light);
    margin-left: auto;
}

.digest-item h3 {
    font-size: 1.125rem;
    margin-bottom: var(--space-sm);
}

.digest-item h3 a { border-bottom: none; }

.signal-headline-link {
    color: var(--color-text);
    text-decoration: none;
    transition: color 0.15s ease;
}

.signal-headline-link:hover {
    color: var(--ft-sky);
}

.external-link-icon {
    font-size: 0.75em;
    opacity: 0.6;
    margin-left: 0.25em;
    display: inline-block;
    transition: opacity 0.15s ease, transform 0.15s ease;
}

.signal-headline-link:hover .external-link-icon {
    opacity: 1;
    transform: translate(1px, -1px);
}

.digest-summary-text {
    font-size: 0.9375rem;
    line-height: 1.6;
    margin-bottom: var(--space-md);
    max-width: 700px;
}

.digest-meta {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-sm);
    font-family: var(--font-sans);
    font-size: 0.75rem;
    padding-top: var(--space-md);
    border-top: 1px solid var(--color-border);
}

.entities {
    color: var(--color-text-muted);
    font-style: italic;
}

.digest-items.compact { gap: var(--space-md); }

.digest-item-compact {
    padding: var(--space-md) 0;
    border-bottom: 1px solid var(--color-border);
}

.compact-header {
    display: flex;
    gap: var(--space-sm);
    margin-bottom: var(--space-xs);
}

.digest-item-compact h4 {
    font-size: 1rem;
    margin-bottom: var(--space-xs);
}

.digest-item-compact h4 a { border-bottom: none; }

.digest-item-compact p {
    font-size: 0.9375rem;
    color: var(--color-text-muted);
    margin: 0;
}

/* ============================================
   EXECUTIVE INTELLIGENCE CARD — EI Link Integrity CSS
   Addendum v1.0: No affordance without destination
   ============================================ */

/* EI signal chip (Rule 1: score chip is always a link) */
a.ei-signal-chip {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-family: var(--font-sans);
    font-weight: 600;
    font-size: 0.75rem;
    padding: 2px 8px;
    border-radius: 2px;
    text-decoration: none;
    cursor: pointer;
    transition: opacity 0.15s ease, filter 0.15s ease;
    border-bottom: none;
}

a.ei-signal-chip:hover {
    opacity: 0.85;
    filter: brightness(1.1);
}

a.ei-signal-chip.critical {
    background-color: var(--ft-claret);
    color: var(--ft-white);
}

a.ei-signal-chip.high {
    background-color: var(--ft-mandarin);
    color: var(--ft-black);
}

a.ei-signal-chip.medium {
    background-color: var(--ft-wheat);
    color: var(--ft-black);
}

a.ei-signal-chip.low {
    background-color: var(--ft-grey-light);
    color: #3d3330;
}

.ei-signal-label {
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.ei-signal-score {
    opacity: 0.8;
}

/* EI source name (Rule 3: source must be clickable) */
a.ei-source-name {
    display: inline-block;
    font-family: var(--font-sans);
    font-size: 0.6875rem;
    padding: 2px 6px;
    border-radius: 2px;
    text-decoration: none;
    border-bottom: none;
    transition: opacity 0.15s ease;
}

a.ei-source-name:hover {
    opacity: 0.8;
}

a.ei-source-name.tier-1 { background-color: var(--ft-sky); color: #0a3d6b; }
a.ei-source-name.tier-2 { background-color: var(--ft-wheat); color: var(--ft-black); }
a.ei-source-name.tier-3 { background-color: var(--ft-pink-dark); color: #5c3d2e; }

/* EI headline (Rule 2: headline is primary outbound link) */
.ei-headline-link {
    color: var(--color-text);
    text-decoration: none;
    transition: color 0.15s ease;
    border-bottom: none;
}

.ei-headline-link:hover {
    color: var(--ft-sky);
}

.ei-headline-link .external-link-icon {
    font-size: 0.75em;
    opacity: 0.5;
    margin-left: 0.25em;
    display: inline-block;
    transition: opacity 0.15s ease, transform 0.15s ease;
}

.ei-headline-link:hover .external-link-icon {
    opacity: 1;
    transform: translate(1px, -1px);
}

/* EI tags — navigational, not decorative (Rule 4) */
a.ei-tag {
    display: inline-block;
    font-family: var(--font-sans);
    font-size: 0.6875rem;
    padding: 2px 8px;
    border-radius: 2px;
    text-decoration: none;
    border-bottom: none;
    cursor: pointer;
    transition: opacity 0.15s ease, filter 0.15s ease;
}

a.ei-tag:hover {
    opacity: 0.85;
    filter: brightness(1.1);
}

a.ei-tag.ei-tag--theme {
    background-color: var(--ft-pink-dark);
    color: #5c3d2e;
}

a.ei-tag.ei-tag--signal-type {
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

a.ei-tag.ei-tag--signal-type.announcement { background-color: var(--ft-teal); color: var(--ft-white); }
a.ei-tag.ei-tag--signal-type.analysis { background-color: var(--ft-oxford); color: var(--ft-white); }
a.ei-tag.ei-tag--signal-type.speculation { background-color: var(--ft-grey-medium); color: #1a1a1a; }
a.ei-tag.ei-tag--signal-type.background { background-color: var(--ft-grey-light); color: #3d3330; }

a.ei-tag.ei-tag--entity {
    background-color: transparent;
    color: var(--color-text-muted);
    font-style: italic;
    padding: 2px 4px;
    border-bottom: 1px dotted var(--color-border);
    border-radius: 0;
}

a.ei-tag.ei-tag--entity:hover {
    color: var(--ft-sky);
    border-bottom-color: var(--ft-sky);
}

/* Disabled tag fallback (Rule 4 + Section 4: disabled elements are explicit) */
span.ei-tag--disabled {
    display: inline-block;
    font-family: var(--font-sans);
    font-size: 0.6875rem;
    padding: 2px 8px;
    border-radius: 2px;
    cursor: default;
    opacity: 0.5;
    text-decoration: none;
    color: #3d3330;
    background-color: var(--ft-grey-light);
}

/* Override legacy styles inside EI cards */
.digest-item a.ei-signal-chip,
.digest-item a.ei-source-name,
.digest-item a.ei-tag {
    border-bottom: none;
}

/* Volume Chart */
.volume-chart {
    background-color: var(--ft-white);
    padding: var(--space-xl);
    border-top: 4px solid var(--ft-oxford);
}

.chart-container {
    display: flex;
    flex-direction: column;
    gap: var(--space-sm);
}

.chart-row {
    display: flex;
    align-items: center;
    gap: var(--space-md);
}

.chart-label {
    width: 140px;
    flex-shrink: 0;
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    font-weight: 500;
    color: var(--color-text);
    text-align: right;
}

.chart-bars {
    flex: 1;
    height: 28px;
    background-color: var(--ft-pink);
    display: flex;
    align-items: center;
    gap: 2px;
}

.bar {
    height: 100%;
    flex-shrink: 0;
    transition: opacity 0.2s ease;
    cursor: default;
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 24px;
}

.bar:hover {
    opacity: 0.8;
}

.bar.w1 { background-color: #d4ccc4; }
.bar.w2 { background-color: #a8a8a8; }
.bar.w3 { background-color: #707070; }
.bar.w4 { background-color: var(--ft-claret); }

.bar-value {
    font-family: var(--font-sans);
    font-size: 0.75rem;
    font-weight: 600;
    line-height: 1;
}

.bar.w1 .bar-value { color: var(--ft-black); }
.bar.w2 .bar-value { color: var(--ft-black); }
.bar.w3 .bar-value { color: var(--ft-white); }
.bar.w4 .bar-value { color: var(--ft-white); }

.chart-value {
    display: none;
}

.chart-legend {
    display: flex;
    justify-content: center;
    gap: var(--space-lg);
    margin-top: var(--space-lg);
    padding-top: var(--space-md);
    border-top: 1px solid var(--color-border);
}

.legend-item {
    display: flex;
    align-items: center;
    gap: var(--space-xs);
    font-family: var(--font-sans);
    font-size: 0.75rem;
    color: var(--color-text-muted);
}

.legend-color {
    width: 12px;
    height: 12px;
}

.legend-color.w1 { background-color: #d4ccc4; }
.legend-color.w2 { background-color: #a8a8a8; }
.legend-color.w3 { background-color: #707070; }
.legend-color.w4 { background-color: var(--ft-claret); }

.chart-note {
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    margin-top: var(--space-sm);
}

.entity-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--space-md);
}

.entity-card {
    background-color: var(--ft-white);
    padding: var(--space-lg);
    border-top: 4px solid var(--ft-grey-medium);
}

.entity-card.rising { border-top-color: var(--ft-teal); }
.entity-card.declining { border-top-color: var(--ft-claret); }

.entity-trend {
    font-family: var(--font-sans);
    font-size: 0.875rem;
    font-weight: 600;
}

.entity-card.rising .entity-trend { color: var(--ft-teal); }
.entity-card.declining .entity-trend { color: var(--ft-claret); }
.entity-card.stable .entity-trend { color: var(--color-text-muted); }

.entity-card h3 {
    font-size: 1.125rem;
    margin: var(--space-sm) 0;
}

.entity-card p {
    font-size: 0.875rem;
    color: var(--color-text-muted);
    margin: 0;
}

.source-distribution {
    display: flex;
    flex-direction: column;
    gap: var(--space-md);
    background-color: var(--ft-white);
    padding: var(--space-lg);
}

.dist-row {
    display: flex;
    align-items: center;
    gap: var(--space-md);
}

.dist-label {
    width: 140px;
    flex-shrink: 0;
    font-family: var(--font-sans);
    font-size: 0.875rem;
    font-weight: 600;
}

.dist-bar-container {
    flex: 1;
    height: 24px;
    background-color: var(--ft-pink-dark);
    border-radius: 2px;
}

.dist-bar {
    height: 100%;
    border-radius: 2px;
    transition: width 0.4s ease;
}

.dist-value {
    width: 40px;
    text-align: right;
    font-family: var(--font-sans);
    font-size: 0.875rem;
    font-weight: 600;
}

.signal-distribution {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--space-md);
}

.signal-dist-item {
    background-color: var(--ft-white);
    padding: var(--space-lg);
    text-align: center;
}

.signal-dist-value {
    display: block;
    font-size: 2rem;
    font-weight: 700;
    margin-bottom: var(--space-xs);
}

.signal-dist-label {
    display: block;
    font-family: var(--font-sans);
    font-size: 0.75rem;
    color: var(--color-text-muted);
}

.wow-table {
    width: 100%;
    border-collapse: collapse;
    background-color: var(--ft-white);
}

.wow-table th {
    font-family: var(--font-sans);
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    text-align: left;
    padding: var(--space-md);
    border-bottom: 2px solid var(--ft-black);
    color: var(--color-text-muted);
}

.wow-table th:nth-child(2),
.wow-table th:nth-child(3),
.wow-table th:nth-child(4) { text-align: right; }

.wow-table td {
    padding: var(--space-md);
    border-bottom: 1px solid var(--color-border);
}

.wow-table td:nth-child(2),
.wow-table td:nth-child(3),
.wow-table td:nth-child(4) {
    text-align: right;
    font-family: var(--font-sans);
}

.change { font-weight: 600; }
.change.positive { color: var(--ft-teal); }
.change.negative { color: var(--ft-claret); }
.change.neutral { color: var(--color-text-muted); }

/* Methodology */
.content-section { margin-bottom: var(--space-xl); }

.content-section h3 {
    font-size: 1.125rem;
    font-weight: 600;
    margin-top: var(--space-xl);
    margin-bottom: var(--space-sm);
}

.content-section h3:first-of-type { margin-top: var(--space-md); }

.source-table {
    width: 100%;
    border-collapse: collapse;
    margin: var(--space-md) 0 var(--space-xl) 0;
    font-size: 0.9375rem;
}

.source-table td {
    padding: var(--space-sm) var(--space-md);
    border-bottom: 1px solid var(--color-border);
}

.source-table td:first-child { font-weight: 500; }

.source-table td:last-child {
    color: var(--color-text-muted);
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    text-align: right;
}

.theme-definitions dt,
.signal-definitions dt {
    font-weight: 600;
    margin-top: var(--space-lg);
}

.theme-definitions dt:first-child,
.signal-definitions dt:first-child { margin-top: 0; }

.theme-definitions dd,
.signal-definitions dd {
    margin: var(--space-xs) 0 0 0;
    color: var(--color-text-muted);
}

.signal-definitions dt {
    display: flex;
    align-items: center;
    gap: var(--space-sm);
}

/* Footer */
.site-footer {
    background-color: var(--ft-wheat);
    border-top: 1px solid var(--color-border);
    margin-top: var(--space-xxl);
}

.footer-inner {
    max-width: var(--max-width);
    margin: 0 auto;
    padding: var(--space-xl);
    display: grid;
    grid-template-columns: 2fr 1fr 1fr;
    gap: var(--space-xl);
}

.footer-inner h4 {
    font-family: var(--font-sans);
    font-size: 0.875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: var(--space-sm);
}

.footer-inner p {
    font-size: 0.9375rem;
    color: var(--color-text-muted);
    margin-bottom: var(--space-sm);
}

.footer-inner a {
    font-family: var(--font-sans);
    font-size: 0.875rem;
    color: var(--ft-oxford);
}

.footer-legal {
    max-width: var(--max-width);
    margin: 0 auto;
    padding: var(--space-lg) var(--space-xl);
    border-top: 1px solid var(--color-border);
}

.footer-legal p {
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    color: var(--color-text-light);
    margin: 0;
}

/* Back to top */
.back-to-nav {
    display: inline-block;
    font-family: var(--font-sans);
    font-size: 0.875rem;
    color: var(--ft-oxford);
    margin-top: var(--space-lg);
}

/* Methodology Page Styles */
.method-nav {
    display: flex;
    gap: var(--space-lg);
    padding: var(--space-md) 0;
    margin-bottom: var(--space-lg);
}

.method-nav-link {
    font-family: var(--font-sans);
    font-size: 0.9375rem;
    font-weight: 500;
    color: var(--ft-oxford);
    background: none;
    border: none;
    border-bottom: 1px solid transparent;
    padding: 0 0 var(--space-xs) 0;
    cursor: pointer;
}

.method-nav-link:hover {
    color: var(--ft-claret);
    border-bottom-color: var(--ft-claret);
}

.method-nav-link:focus {
    outline: none;
    color: var(--ft-claret);
}

.method-nav-link.active {
    color: var(--ft-claret);
    border-bottom: 2px solid var(--ft-claret);
    font-weight: 600;
}

/* Methodology tab panels — only active panel is visible */
.meth-panel { display: none; }
.meth-panel.active { display: block; }

/* Architecture diagram pre blocks */
.arch-diagram {
    background: var(--ft-wheat);
    border: 1px solid var(--color-border);
    border-left: 3px solid var(--ft-oxford);
    padding: var(--space-md) var(--space-lg);
    font-family: var(--font-mono, 'Courier New', monospace);
    font-size: 0.8125rem;
    line-height: 1.5;
    overflow-x: auto;
    white-space: pre;
    margin: var(--space-md) 0 var(--space-xl) 0;
}

.method-example {
    background-color: var(--ft-white);
    padding: var(--space-xl);
    margin: var(--space-lg) 0;
    border-left: 4px solid var(--ft-oxford);
}

.method-example h3 {
    color: var(--ft-oxford);
    margin-top: 0;
}

.method-example h4 {
    font-size: 1rem;
    margin-top: var(--space-lg);
    margin-bottom: var(--space-sm);
    color: var(--color-text);
}

.method-example h4:first-of-type {
    margin-top: var(--space-md);
}

.code-block {
    background-color: var(--ft-black);
    color: #f0f0f0;
    padding: var(--space-lg);
    margin: var(--space-md) 0;
    font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
    font-size: 0.8125rem;
    line-height: 1.5;
    overflow-x: auto;
    white-space: pre;
    border-radius: 2px;
}

.method-table {
    width: 100%;
    border-collapse: collapse;
    margin: var(--space-md) 0 var(--space-lg) 0;
    font-size: 0.9375rem;
}

.method-table th {
    font-family: var(--font-sans);
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    text-align: left;
    padding: var(--space-sm) var(--space-md);
    background-color: var(--ft-wheat);
    border-bottom: 2px solid var(--ft-black);
    color: var(--color-text-muted);
}

.method-table td {
    padding: var(--space-sm) var(--space-md);
    border-bottom: 1px solid var(--color-border);
    vertical-align: top;
}

.method-table tr:hover {
    background-color: var(--ft-pink-dark);
}

#full-methodology h3 {
    font-size: 1.25rem;
    margin-top: var(--space-xxl);
    padding-bottom: var(--space-sm);
    border-bottom: 2px solid var(--ft-claret);
    color: var(--ft-claret);
}

#full-methodology h3:first-of-type {
    margin-top: var(--space-lg);
}

#full-methodology h4 {
    font-size: 1rem;
    margin-top: var(--space-lg);
    margin-bottom: var(--space-sm);
}

#condensed h3 {
    font-size: 1rem;
    font-weight: 600;
    margin-top: var(--space-lg);
    margin-bottom: var(--space-sm);
    color: var(--ft-oxford);
}

#condensed h3:first-of-type {
    margin-top: 0;
}

/* Chapter Indicator */
.methodology-layout {
    display: grid;
    grid-template-columns: 180px 1fr;
    gap: var(--space-xl);
    position: relative;
}

.chapter-nav {
    position: sticky;
    top: 100px;
    height: fit-content;
    padding-right: var(--space-md);
    border-right: 2px solid var(--color-border);
}

.chapter-nav-title {
    font-family: var(--font-sans);
    font-size: 0.6875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--color-text-muted);
    margin-bottom: var(--space-md);
}

.chapter-list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.chapter-item {
    margin-bottom: var(--space-xs);
}

.chapter-link {
    display: block;
    width: 100%;
    font-family: var(--font-sans);
    font-size: 0.75rem;
    color: var(--color-text-muted);
    background: none;
    padding: var(--space-xs) var(--space-sm);
    border: none;
    border-left: 2px solid transparent;
    margin-left: -2px;
    transition: all 0.15s ease;
    line-height: 1.3;
    cursor: pointer;
    text-align: left;
}

.chapter-link:hover {
    color: var(--ft-oxford);
    border-left-color: var(--ft-oxford);
    background: none;
}

.chapter-link:focus {
    outline: none;
    color: var(--ft-oxford);
    border-left-color: var(--ft-oxford);
}

.chapter-link.active {
    color: var(--ft-claret);
    border-left-color: var(--ft-claret);
    font-weight: 600;
}

.chapter-content {
    min-width: 0;
    max-width: 800px;
}

/* Hide chapter nav on smaller screens */
@media (max-width: 1100px) {
    .methodology-layout {
        display: block;
    }
    .chapter-nav {
        display: none;
    }
}

/* ============================================
   ECOSYSTEMS TRACKER STYLES
   ============================================ */

/* System Status Bar (live data ticker style) */
.system-status {
    display: flex;
    align-items: stretch;
    gap: 0;
    margin-bottom: var(--space-lg);
    background: rgba(51, 48, 46, 0.06);
    border: 1px solid var(--color-border);
    font-family: var(--font-sans);
    font-size: var(--text-sm);
}

.status-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 10px 20px;
    border-right: 1px solid var(--color-border);
    min-width: 100px;
}

.status-item:last-child {
    border-right: none;
    margin-left: auto;
    background: rgba(51, 48, 46, 0.04);
    flex-direction: row;
    gap: 6px;
}

.status-item::after {
    content: none;
}

.status-value {
    font-family: var(--font-sans);
    font-size: var(--text-lg);
    font-weight: 700;
    color: var(--ft-black);
    line-height: 1;
    letter-spacing: -0.01em;
}

.status-value.up {
    color: var(--ft-teal);
}

.status-label {
    font-size: var(--text-xs);
    color: var(--color-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    margin-top: 4px;
}

.status-item:last-child .status-value {
    font-size: var(--text-sm);
    font-weight: 400;
    color: var(--color-text-muted);
}

.status-item:last-child .status-label {
    margin-top: 0;
}

/* Live indicator pulse */
.live-dot {
    width: 6px;
    height: 6px;
    background: var(--ft-teal);
    border-radius: 50%;
    animation: pulse 2s ease-in-out infinite;
}

@keyframes pulse {
    0%, 100% { opacity: 1; box-shadow: 0 0 0 0 rgba(13, 118, 128, 0.4); }
    50% { opacity: 0.6; box-shadow: 0 0 0 4px rgba(13, 118, 128, 0); }
}

@keyframes liquidShimmer {
    0% {
        background-position: -200% center;
    }
    100% {
        background-position: 200% center;
    }
}

@keyframes edgeShimmer {
    0% {
        --shimmer-angle: 0deg;
    }
    100% {
        --shimmer-angle: 360deg;
    }
}

@keyframes waterRipple {
    0% {
        --ripple-a1: 0.02;
        --ripple-a2: 0.12;
        --ripple-a3: 0.06;
    }
    12.5% {
        --ripple-a1: 0.1;
        --ripple-a2: 0.06;
        --ripple-a3: 0.01;
    }
    25% {
        --ripple-a1: 0.18;
        --ripple-a2: 0.01;
        --ripple-a3: 0.08;
    }
    37.5% {
        --ripple-a1: 0.12;
        --ripple-a2: 0.08;
        --ripple-a3: 0.16;
    }
    50% {
        --ripple-a1: 0.03;
        --ripple-a2: 0.15;
        --ripple-a3: 0.2;
    }
    62.5% {
        --ripple-a1: 0.06;
        --ripple-a2: 0.2;
        --ripple-a3: 0.12;
    }
    75% {
        --ripple-a1: 0.12;
        --ripple-a2: 0.16;
        --ripple-a3: 0.04;
    }
    87.5% {
        --ripple-a1: 0.06;
        --ripple-a2: 0.14;
        --ripple-a3: 0.02;
    }
    100% {
        --ripple-a1: 0.02;
        --ripple-a2: 0.12;
        --ripple-a3: 0.06;
    }
}

@keyframes sparkle {
    0%, 100% {
        opacity: 0.5;
        transform: scale(1);
    }
    50% {
        opacity: 1;
        transform: scale(1.2);
    }
}

@keyframes pearlGlow {
    0%, 100% {
        box-shadow: 
            0 1px 6px rgba(159, 43, 104, 0.35),
            0 0 8px rgba(180, 100, 200, 0.15);
    }
    50% {
        box-shadow: 
            0 1px 8px rgba(159, 43, 104, 0.5),
            0 0 14px rgba(180, 100, 200, 0.25);
    }
}

/* Segment Filters */
.segment-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: var(--space-xl);
    padding-bottom: var(--space-lg);
    border-bottom: 1px solid var(--color-border);
}

.segment-filter {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 10px 16px;
    font-family: var(--font-sans);
    font-size: var(--text-sm);
    font-weight: 500;
    color: var(--color-text-muted);
    background: var(--ft-paper);
    border: 1px solid var(--color-border);
    cursor: pointer;
    transition: all 0.15s;
}

.segment-filter:hover {
    border-color: var(--ft-claret);
    color: var(--ft-claret);
}

.segment-filter.active {
    background: var(--ft-claret);
    border-color: var(--ft-claret);
    color: #fff;
}

.segment-filter .count {
    font-size: var(--text-sm);
    padding: 2px 6px;
    background: var(--ft-wheat);
    border-radius: 2px;
}

.segment-filter.active .count {
    background: rgba(255,255,255,0.25);
    color: #fff;
}

/* Company Grid */
.company-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: var(--space-lg);
}

/* Company Card */
.company-card {
    background: var(--ft-paper);
    border: 1px solid var(--color-border);
    cursor: pointer;
    transition: all 0.15s;
    position: relative;
    display: flex;
    flex-direction: column;
}

.company-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 12px 32px rgba(51,48,46,0.12);
    border-color: var(--ft-claret);
}

.company-card.disabled {
    opacity: 0.6;
    cursor: default;
}

.company-card.disabled:hover {
    transform: none;
    box-shadow: none;
    border-color: var(--color-border);
}

.company-card.disabled .card-arrow {
    display: none;
}

.company-card.disabled .card-footer::after {
    content: 'Coming soon';
    font-style: italic;
    color: var(--ft-grey-medium);
}

/* Active cards without a detail page — no click affordance */
.company-card.no-detail {
    cursor: default;
}

.company-card.no-detail:hover {
    transform: none;
}

/* Active/Recently Updated Cards */
.company-card.active-card {
    border-color: var(--ft-claret);
    box-shadow: 0 4px 12px rgba(159, 40, 70, 0.15);
}

.company-card.active-card:hover {
    box-shadow: 0 12px 32px rgba(159, 40, 70, 0.2);
}

/* Badge in card footer to avoid overlap with partnership-count pill */
.card-footer-with-badge {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 6px;
}

.card-refresh-badge {
    background: var(--ft-jade);
    color: var(--ft-black);
    font-family: var(--font-sans);
    font-size: 0.625rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 3px 8px;
    border-radius: 3px;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    white-space: nowrap;
}

.card-refresh-badge::before {
    content: '●';
    font-size: 0.5rem;
    animation: pulse-dot 2s ease-in-out infinite;
}

@keyframes pulse-dot {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.4; }
}

.card-refresh-date {
    font-weight: 500;
    opacity: 0.8;
}

/* Sort toggle */

/* Active/Recently Updated Cards */
.company-card.active-card {
    border-color: var(--ft-claret);
    box-shadow: 0 4px 12px rgba(159, 40, 70, 0.15);
}

.company-card.active-card:hover {
    box-shadow: 0 12px 32px rgba(159, 40, 70, 0.2);
}

/* Card Refresh Badge - in footer row to avoid overlap with partnership count */
.card-refresh-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: var(--ft-jade);
    color: var(--ft-black);
    font-family: var(--font-sans);
    font-size: 0.625rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 3px 8px;
    border-radius: 3px;
    margin-left: auto;
}

.card-refresh-badge::before {
    content: '\25cf';
    font-size: 0.5rem;
    animation: pulse-dot 2s ease-in-out infinite;
}

@keyframes pulse-dot {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.4; }
}

.card-refresh-date {
    font-weight: 500;
    opacity: 0.8;
}

/* Ecosystems Sort Controls */
.ecosystems-controls {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: var(--space-lg);
    padding: 12px 0;
}

.controls-label {
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    font-weight: 500;
    color: var(--color-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.sort-toggle {
    display: flex;
    gap: 4px;
    padding: 4px;
    background: var(--ft-wheat);
    border-radius: 8px;
}

.sort-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 14px;
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    font-weight: 500;
    color: var(--color-text-muted);
    background: transparent;
    border: none;
    border-radius: 6px;
    cursor: pointer;
    transition: all 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.sort-btn:hover {
    color: var(--ft-black);
    background: rgba(255, 255, 255, 0.5);
}

.sort-btn.active {
    color: var(--ft-black);
    background: #fff;
    font-weight: 600;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08), 0 0 0 0.5px rgba(0, 0, 0, 0.04);
}

.sort-icon {
    font-size: 0.75rem;
    font-weight: 600;
    opacity: 0.6;
}

.sort-btn.active .sort-icon {
    opacity: 1;
    color: var(--ft-claret);
}

@media (max-width: 768px) {
    .ecosystems-controls {
        flex-direction: column;
        align-items: flex-start;
        gap: 8px;
    }
    .sort-toggle { width: 100%; overflow-x: auto; }
    .sort-btn { padding: 6px 10px; font-size: 0.75rem; white-space: nowrap; }
    .layout-toggle { align-self: flex-end; }
}

/* Layout Toggle */
.controls-spacer {
    flex: 1;
}

.layout-toggle {
    display: flex;
    gap: 2px;
    padding: 3px;
    background: var(--ft-wheat);
    border-radius: 8px;
}

.layout-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 32px;
    background: transparent;
    border: none;
    border-radius: 6px;
    cursor: pointer;
    color: var(--color-text-muted);
    transition: all 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.layout-btn:hover {
    color: var(--ft-black);
    background: rgba(255, 255, 255, 0.5);
}

.layout-btn.active {
    color: var(--ft-claret);
    background: #fff;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08), 0 0 0 0.5px rgba(0, 0, 0, 0.04);
}

/* ── Compact View ── */
.company-grid.layout-compact {
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.compact-row {
    display: flex;
    align-items: stretch;
    background: var(--ft-paper);
    border: 1px solid var(--color-border);
    transition: all 0.12s;
}

.compact-row.compact-active {
    border-left-color: transparent;
}

.compact-row.compact-clickable {
    cursor: pointer;
}

.compact-row.compact-clickable:hover {
    background: rgba(159, 40, 70, 0.03);
    border-color: var(--ft-claret);
    box-shadow: 0 2px 8px rgba(51,48,46,0.08);
}

.compact-row.compact-disabled {
    opacity: 0.5;
}

.compact-accent {
    width: 4px;
    flex-shrink: 0;
}

.compact-main {
    flex: 1;
    min-width: 0;
    padding: 8px 16px;
    display: flex;
    flex-direction: column;
    gap: 3px;
}

/* Line 1: Name, segment tag, type description, spacer, status, arrow */
.compact-line1 {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
}

.compact-name {
    font-family: var(--font-serif);
    font-size: 0.9375rem;
    font-weight: 700;
    color: var(--ft-black);
    flex-shrink: 0;
    white-space: nowrap;
}

.compact-seg {
    font-family: var(--font-sans);
    font-size: 0.625rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding: 2px 7px;
    border-radius: 3px;
    flex-shrink: 0;
    white-space: nowrap;
}

.compact-type {
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    color: var(--color-text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
    flex: 0 1 auto;
}

.compact-spacer {
    flex: 1;
}

.compact-badge {
    font-family: var(--font-sans);
    font-size: 0.625rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 2px 7px;
    border-radius: 2px;
    background: rgba(13, 118, 128, 0.1);
    color: var(--ft-teal);
    flex-shrink: 0;
    white-space: nowrap;
}

.compact-badge-pending {
    background: rgba(158, 158, 158, 0.1);
    color: var(--ft-grey-medium);
    font-style: italic;
    font-weight: 400;
}

.compact-arrow {
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--ft-claret);
    flex-shrink: 0;
}

/* Line 2: Metrics row */
.compact-line2 {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
}

.compact-metric {
    font-family: var(--font-sans);
    font-size: 0.75rem;
    color: var(--color-text-muted);
    white-space: nowrap;
}

.compact-metric-val {
    font-weight: 700;
    color: var(--ft-black);
}

.compact-metric-val.compact-metric-teal {
    color: var(--ft-teal);
}

.compact-div {
    color: var(--color-border);
    font-size: 0.75rem;
    flex-shrink: 0;
}

.compact-trend {
    font-family: var(--font-sans);
    font-size: 0.75rem;
    white-space: nowrap;
}

@media (max-width: 900px) {
    .compact-type { display: none; }
    .compact-line2 { flex-wrap: wrap; }
    .compact-main { padding: 6px 12px; }
}

/* ── Table View ── */
.company-grid.layout-table {
    display: block;
}

.eco-table-wrap {
    overflow-x: auto;
    border: 1px solid var(--color-border);
    border-radius: 2px;
}

.eco-table {
    width: 100%;
    table-layout: fixed;
    border-collapse: collapse;
    font-family: var(--font-sans);
    font-size: 0.8125rem;
}

.eco-table colgroup .col-w-name { width: 14%; }
.eco-table colgroup .col-w-segment { width: 11%; }
.eco-table colgroup .col-w-type { width: 30%; }
.eco-table colgroup .col-w-partnerships { width: 7%; }
.eco-table colgroup .col-w-capital { width: 10%; }
.eco-table colgroup .col-w-sectors { width: 7%; }
.eco-table colgroup .col-w-trend { width: 10%; }
.eco-table colgroup .col-w-status { width: 11%; }

.eco-table th {
    position: sticky;
    top: 0;
    background: var(--ft-wheat);
    font-family: var(--font-sans);
    font-size: 0.6875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-text-muted);
    padding: 10px 12px;
    text-align: left;
    border-bottom: 2px solid var(--color-border);
    cursor: pointer;
    user-select: none;
    white-space: nowrap;
    transition: color 0.15s;
}

.eco-table th:hover {
    color: var(--ft-claret);
}

.eco-table th.sort-active {
    color: var(--ft-claret);
}

.eco-table th .th-sort-icon {
    display: inline-block;
    margin-left: 4px;
    font-size: 0.625rem;
    opacity: 0.4;
    transition: opacity 0.15s;
}

.eco-table th.sort-active .th-sort-icon {
    opacity: 1;
}

.eco-table td {
    padding: 8px 12px;
    border-bottom: 1px solid rgba(204, 193, 183, 0.4);
    vertical-align: middle;
    white-space: nowrap;
}

.eco-table tbody tr {
    transition: background 0.1s;
}

.eco-table tbody tr:hover {
    background: rgba(242, 229, 218, 0.35);
}

.eco-table tbody tr.row-disabled {
    opacity: 0.5;
}

.eco-table tbody tr.row-clickable {
    cursor: pointer;
}

.eco-table tbody tr.row-clickable:hover {
    background: rgba(159, 40, 70, 0.06);
}

.eco-table .col-name {
    font-family: var(--font-serif);
    font-weight: 700;
    font-size: 0.875rem;
    white-space: nowrap;
}

.eco-table .col-type {
    white-space: normal;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.4;
}

.eco-table .col-segment {
    white-space: nowrap;
}

.eco-table .col-segment .seg-dot {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 2px;
    margin-right: 6px;
    vertical-align: middle;
}

.eco-table .col-partnerships {
    font-weight: 600;
    text-align: center;
}

.eco-table .col-capital {
    font-family: var(--font-sans);
    font-weight: 600;
    white-space: nowrap;
}

.eco-table .col-sectors {
    text-align: center;
    font-weight: 600;
    color: var(--ft-teal);
}

.eco-table .col-trend {
    font-size: 0.75rem;
    white-space: nowrap;
}

.eco-table .col-status {
    font-size: 0.6875rem;
    white-space: nowrap;
}

.eco-table .tbl-refresh-badge {
    font-family: var(--font-sans);
    font-size: 0.625rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 2px 6px;
    border-radius: 2px;
    background: rgba(13, 118, 128, 0.1);
    color: var(--ft-teal);
}

.eco-table .tbl-arrow {
    font-size: 0.6875rem;
    color: var(--ft-claret);
    margin-left: 6px;
}

.card-accent {
    height: 4px;
    width: 100%;
}

.card-accent.ai-native { background: var(--ft-claret); }
.card-accent.hyperscaler { background: var(--ft-oxford); }
.card-accent.gsi { background: var(--ft-teal); }
.card-accent.silicon { background: #7d3c7d; }
.card-accent.silicon-custom { background: #5a3d7d; }
.card-accent.foundry { background: #5c5233; }
.card-accent.oem { background: #2d6a4f; }
.card-accent.sovereign { background: #9a5b13; }
.card-accent.enterprise { background: #3d4a6b; }
.card-accent.infrastructure { background: #6b5b3d; }

.card-body {
    padding: 20px;
    flex: 1;
}

.card-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: 10px;
}

.company-name {
    font-family: var(--font-serif);
    font-size: var(--text-xl);
    font-weight: 700;
    line-height: 1.2;
}

.partnership-count {
    font-family: var(--font-sans);
    font-size: var(--text-xs);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    background: var(--ft-wheat);
    padding: 4px 8px;
    white-space: nowrap;
}

.company-type {
    font-size: var(--text-base);
    color: var(--color-text-muted);
    margin-bottom: 16px;
    line-height: 1.4;
}

.card-stats {
    display: flex;
    gap: var(--space-lg);
}

.card-stat-value {
    font-family: var(--font-serif);
    font-size: var(--text-lg);
    font-weight: 700;
    color: var(--ft-claret);
}

.card-stat-value.teal { color: var(--ft-teal); }

.card-stat-label {
    font-family: var(--font-sans);
    font-size: var(--text-xs);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-text-muted);
}

.card-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 20px;
    border-top: 1px solid var(--color-border);
    background: var(--ft-wheat);
    margin-top: auto;
}

.trend {
    font-family: var(--font-sans);
    font-size: 0.75rem;
}

.trend-up { color: var(--ft-teal); }
.trend-flat { color: var(--color-text-muted); }
.trend-down { color: var(--ft-claret); }

.card-arrow {
    font-size: 0.75rem;
    color: var(--ft-claret);
}

/* Company Detail Page */
.detail-page {
    display: none;
}

.detail-page.active {
    display: block;
}

.detail-header-sticky {
    position: sticky;
    top: 0;
    z-index: 95;
    background: var(--ft-paper);
    padding-top: var(--space-md);
    padding-bottom: 0;
    margin-left: calc(-1 * var(--space-xl));
    margin-right: calc(-1 * var(--space-xl));
    padding-left: var(--space-xl);
    padding-right: var(--space-xl);
    border-bottom: 1px solid transparent;
    transition: box-shadow 0.25s ease, border-color 0.25s ease;
}

.detail-header-sticky.stuck {
    box-shadow: 0 1px 8px rgba(0,0,0,0.06);
    border-bottom-color: var(--color-border);
}

.back-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    color: var(--color-text-muted);
    cursor: pointer;
    border: none;
    margin-bottom: var(--space-xs);
}

.back-link:hover {
    color: var(--ft-claret);
}

.detail-header {
    text-align: left;
    margin-bottom: 0;
    padding-bottom: var(--space-md);
}

.detail-header-top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--space-lg);
}

.detail-header-text {
    flex: 1;
    min-width: 0;
}

.detail-kicker {
    display: block;
    font-family: var(--font-sans);
    font-size: 0.6875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--ft-claret);
    margin-bottom: 6px;
}

.detail-kicker::before {
    content: '';
    display: inline-block;
    width: 18px;
    height: 2px;
    background: var(--ft-claret);
    margin-right: 8px;
    vertical-align: middle;
    position: relative;
    top: -1px;
}

.detail-title {
    font-size: var(--text-2xl);
    font-weight: 600;
    margin-bottom: 0;
    letter-spacing: -0.01em;
    line-height: 1.2;
}

/* Metrics strip - left-aligned, compact */
.detail-data-strip {
    display: flex;
    align-items: baseline;
    gap: 0;
    font-family: var(--font-sans);
    font-size: var(--text-sm);
    color: var(--color-text-muted);
    margin-top: var(--space-sm);
    padding-top: var(--space-sm);
    border-top: 1px solid var(--color-border);
}

.data-item {
    display: flex;
    align-items: baseline;
    gap: 4px;
    padding: 0 12px;
    border-right: 1px solid var(--color-border);
}

.data-item:first-child {
    padding-left: 0;
}

.data-item:last-child {
    border-right: none;
}

.data-label {
    color: var(--color-text-muted);
    text-transform: uppercase;
    font-size: var(--text-xs);
    letter-spacing: 0.05em;
}

.data-value {
    font-weight: 600;
    color: var(--ft-black);
}

.data-value.up {
    color: var(--ft-teal);
}

/* Capital Commitments Table */
.capital-commitments-section {
    margin-top: var(--space-lg);
    margin-bottom: var(--space-md);
}
.capital-commitments-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--space-sm);
}
.capital-commitments-label {
    font-family: var(--font-display);
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--claret);
}
.capital-commitments-table {
    width: 100%;
    border-collapse: collapse;
    font-family: var(--font-sans);
    font-size: 0.8rem;
}
.capital-commitments-table thead th {
    text-align: left;
    font-size: 0.65rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--ink-light);
    padding: 0.5rem 0.75rem;
    border-bottom: 2px solid var(--claret);
}
.capital-commitments-table tbody td {
    padding: 0.45rem 0.75rem;
    border-bottom: 1px solid var(--rule);
    color: var(--ink);
    vertical-align: middle;
}
.capital-commitments-table tbody tr:hover {
    background: var(--paper-warm);
}
.cc-partner {
    font-weight: 600;
    font-family: var(--font-display);
}
.cc-amount {
    font-family: var(--font-data);
    font-weight: 700;
    color: var(--claret);
    white-space: nowrap;
}
.cc-status {
    display: inline-block;
    font-size: 0.6rem;
    font-weight: 600;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    padding: 0.15rem 0.5rem;
    border-radius: 2px;
}
.cc-status.active {
    background: #e8f5e9;
    color: #2e7d32;
}
.cc-status.announced {
    background: #e3f2fd;
    color: #1565c0;
}
.cc-status.planned {
    background: #fff8e1;
    color: #f57f17;
}
.cc-status.completed {
    background: #f3e5f5;
    color: #6a1b9a;
}
.cc-total td {
    font-weight: 700;
    border-top: 2px solid var(--ink);
    border-bottom: none;
    padding-top: 0.6rem;
    font-family: var(--font-display);
    font-size: 0.85rem;
}
[data-theme="dark"] .cc-status.active {
    background: rgba(46, 125, 50, 0.2);
    color: #81c784;
}
[data-theme="dark"] .cc-status.announced {
    background: rgba(21, 101, 192, 0.2);
    color: #64b5f6;
}
[data-theme="dark"] .cc-status.planned {
    background: rgba(245, 127, 23, 0.2);
    color: #ffb74d;
}
[data-theme="dark"] .cc-status.completed {
    background: rgba(106, 27, 154, 0.2);
    color: #ce93d8;
}

/* High Impact Headlines */
.headlines-section {
    margin-top: var(--space-lg);
    margin-bottom: var(--space-xl);
    padding: var(--space-lg);
    background: var(--ft-paper);
    border: 1px solid var(--color-border);
    border-left: 4px solid var(--ft-claret);
}

.headlines-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--space-md);
}

.headlines-label {
    display: block;
    font-family: var(--font-sans);
    font-size: 0.6875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--ft-claret);
}

.impact-filters {
    display: flex;
    gap: 4px;
}

.impact-filter {
    padding: 6px 12px;
    font-family: var(--font-sans);
    font-size: 0.6875rem;
    font-weight: 500;
    color: var(--color-text-muted);
    background: var(--ft-wheat);
    border: 1px solid var(--color-border);
    cursor: pointer;
    transition: all 0.15s;
}

.impact-filter:hover {
    border-color: var(--ft-claret);
    color: var(--ft-claret);
}

.impact-filter.active {
    background: var(--ft-claret);
    border-color: var(--ft-claret);
    color: #fff;
}

.headlines-list {
    display: flex;
    flex-direction: column;
    gap: 0;
}

.headline-item {
    display: flex;
    align-items: flex-start;
    gap: var(--space-md);
    padding: 12px 0;
    border-bottom: 1px solid var(--color-border);
    cursor: pointer;
    transition: background 0.15s;
}

.headline-item:last-child {
    border-bottom: none;
}

.headline-item:hover {
    background: var(--ft-wheat);
    margin: 0 -16px;
    padding-left: 16px;
    padding-right: 16px;
}

.headline-impact {
    flex-shrink: 0;
    padding: 4px 8px;
    font-family: var(--font-sans);
    font-size: 0.5625rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    border-radius: 2px;
}

.headline-impact.critical {
    background: var(--ft-claret);
    color: #fff;
}

.headline-impact.high {
    background: #ff8833;
    color: #fff;
}

.headline-impact.medium {
    background: var(--ft-wheat);
    color: var(--color-text-muted);
}

.headline-content {
    flex: 1;
    min-width: 0;
}

.headline-title {
    font-family: var(--font-serif);
    font-size: var(--text-base);
    font-weight: 600;
    line-height: 1.3;
    margin-bottom: 4px;
    color: var(--color-text);
}

.headline-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    font-family: var(--font-sans);
    font-size: var(--text-sm);
    color: var(--color-text-muted);
}

.headline-meta span::after {
    content: '·';
    margin-left: 8px;
    color: var(--color-border);
}

.headline-meta span:last-child::after {
    content: none;
}

.headline-value {
    font-weight: 600;
    color: var(--ft-claret);
}

.headline-source {
    flex-shrink: 0;
    font-family: var(--font-sans);
    font-size: var(--text-xs);
    color: var(--ft-oxford);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding: 4px 8px;
    background: var(--ft-sky);
    align-self: center;
}

/* Detail Tabs */
.detail-tabs {
    display: flex;
    margin-bottom: var(--space-xl);
    border: 1px solid var(--color-border);
    background: var(--ft-paper);
    width: fit-content;
}

.detail-tab {
    background: none;
    border: none;
    border-right: 1px solid var(--color-border);
    padding: 12px 24px;
    font-family: var(--font-serif);
    font-size: 0.875rem;
    color: var(--color-text-muted);
    cursor: pointer;
}

.detail-tab:last-child {
    border-right: none;
}

.detail-tab:hover {
    background: var(--ft-wheat);
    color: var(--color-text);
}

.detail-tab.active {
    background: var(--ft-claret);
    color: #fff;
}

.detail-tab.dossier-tab {
    margin-left: auto;
    border-left: 1px solid var(--color-border);
    border-right: none;
    background: none;
    color: var(--ft-claret);
    font-weight: 600;
}
.detail-tab.dossier-tab:hover {
    background: var(--ft-wheat);
}
.detail-tab.dossier-tab.active {
    background: var(--ft-claret);
    color: #fff;
}

/* Dossier Panel */
.dossier-brief {
    font-family: var(--font-serif);
    font-size: 1.05rem;
    line-height: 1.75;
    color: var(--color-text);
    border-left: 3px solid var(--ft-claret);
    padding-left: 20px;
    margin: 0 0 24px;
}
.dossier-profile-grid {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 0;
    border: 1px solid var(--color-border);
    margin-bottom: 24px;
}
.dossier-metric {
    padding: 14px 12px;
    border-right: 1px solid var(--color-border);
}
.dossier-metric:last-child { border-right: none; }
.dossier-metric-label {
    display: block;
    font-family: var(--font-sans);
    font-size: 0.625rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--color-text-muted);
    margin-bottom: 3px;
}
.dossier-metric-value {
    font-family: var(--font-serif);
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--color-text);
}
.dossier-banner {
    border: 1px solid var(--color-border);
    padding: 20px 24px;
    margin-bottom: 24px;
    background: var(--ft-wheat);
}
.dossier-status-badge {
    display: inline-block;
    font-family: var(--font-sans);
    font-size: 0.6rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--color-text-muted);
    border: 1px solid var(--color-border);
    padding: 2px 8px;
    margin-bottom: 8px;
}
.dossier-status-badge.live {
    color: #2e7d32;
    border-color: #2e7d32;
}
.dossier-banner-title {
    font-family: var(--font-serif);
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--color-text);
    margin-bottom: 4px;
}
.dossier-banner-desc {
    font-size: 0.85rem;
    color: var(--color-text-muted);
    line-height: 1.5;
}
.dossier-sections-header {
    font-family: var(--font-serif);
    font-size: 1rem;
    font-weight: 700;
    color: var(--color-text);
    margin-bottom: 8px;
}
.dossier-sections-list {
    border-top: 1px solid var(--color-border);
}
.dossier-section-item {
    display: flex;
    gap: 14px;
    align-items: baseline;
    padding: 14px 0;
    border-bottom: 1px solid var(--color-border);
}
.dossier-section-num {
    font-family: var(--font-sans);
    font-size: 0.7rem;
    font-weight: 700;
    color: var(--color-text-muted);
    min-width: 20px;
}
.dossier-section-title {
    font-family: var(--font-serif);
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--color-text);
    margin-bottom: 2px;
}
.dossier-section-desc {
    font-size: 0.8rem;
    color: var(--color-text-muted);
    line-height: 1.4;
}

/* Detail Views */
.detail-view {
    display: none;
}

.detail-view.active {
    display: block;
}

/* Sector Filters (detail page) */
.sector-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    justify-content: center;
    margin-bottom: var(--space-xl);
}

.sector-filter {
    background: var(--ft-paper);
    border: 1px solid var(--color-border);
    padding: 8px 14px;
    font-family: var(--font-serif);
    font-size: 0.875rem;
    color: var(--color-text-muted);
    cursor: pointer;
}

.sector-filter:hover {
    border-color: var(--ft-claret);
    color: var(--ft-claret);
}

.sector-filter.active {
    background: var(--ft-claret);
    border-color: var(--ft-claret);
    color: #fff;
}

.sector-filter .ct {
    background: var(--ft-wheat);
    padding: 2px 6px;
    font-size: 0.75rem;
    margin-left: 5px;
}

.sector-filter.active .ct {
    background: rgba(255,255,255,0.25);
    color: #fff;
}

/* Partnership Cards */
.partnership-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: var(--space-md);
}

.partnership-card {
    background: var(--ft-paper);
    border: 1px solid var(--color-border);
    padding: 0;
    cursor: pointer;
    transition: all 0.15s;
    display: flex;
    flex-direction: column;
}

.partnership-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 24px rgba(51,48,46,0.12);
    border-color: var(--ft-claret);
}

.partnership-card-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    padding: 16px 16px 12px;
}

.partner-name {
    font-family: var(--font-serif);
    font-size: var(--text-lg);
    font-weight: 700;
}

.sector-tag {
    font-family: var(--font-sans);
    font-size: var(--text-xs);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding: 3px 8px;
    background: var(--ft-wheat);
    color: var(--color-text-muted);
}

.sector-tag.cloud { background: #d4e5e8; color: #0d7680; }
.sector-tag.semiconductors { background: #e8d4e8; color: #7d3c7d; }
.sector-tag.enterprise { background: #d4e8d8; color: #2d6a4f; }
.sector-tag.commerce { background: #f5e6d3; color: #9a5b13; }
.sector-tag.consumer { background: #f5d4d4; color: #990f3d; }
.sector-tag.government { background: #d4d8e8; color: #3d4a6b; }
.sector-tag.consulting { background: #d8d4e8; color: #4a3f6b; }
.sector-tag.multisector { background: #e8e4d4; color: #5c5233; }

.partnership-type {
    font-size: var(--text-sm);
    color: var(--color-text-muted);
    font-style: italic;
    padding: 0 16px;
    margin-bottom: 12px;
}

.partnership-value {
    font-family: var(--font-serif);
    font-size: var(--text-2xl);
    font-weight: 700;
    color: var(--ft-claret);
    padding: 0 16px;
    margin-bottom: 12px;
}

.partnership-value.strategic {
    font-size: var(--text-md);
    color: var(--ft-oxford);
}

.partnership-meta {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 16px;
    border-top: 1px solid var(--color-border);
    background: var(--ft-wheat);
    margin-top: auto;
}

.partnership-date {
    font-family: var(--font-sans);
    font-size: var(--text-sm);
    color: var(--color-text-muted);
}

.partnership-status {
    display: flex;
    align-items: center;
    gap: 5px;
    font-family: var(--font-sans);
    font-size: 0.5625rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-text-muted);
}

.status-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--ft-teal);
}

.status-dot.loi { background: #ca8a04; }
.status-dot.beta { background: #e85d04; }

/* Timeline */
.timeline-container {
    position: relative;
    padding-left: 28px;
}

.timeline-container::before {
    content: '';
    position: absolute;
    left: 7px;
    top: 0;
    bottom: 0;
    width: 2px;
    background: var(--color-border);
}

.timeline-quarter {
    position: relative;
    margin-bottom: 32px;
}

.timeline-marker {
    position: absolute;
    left: -28px;
    width: 16px;
    height: 16px;
    background: var(--ft-claret);
    border-radius: 50%;
}

.timeline-title {
    font-family: var(--font-serif);
    font-size: var(--text-md);
    font-weight: 700;
    color: var(--ft-claret);
    margin-bottom: 14px;
}

.timeline-events {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.timeline-event {
    background: var(--ft-paper);
    border: 1px solid var(--color-border);
    padding: 12px 16px;
    display: flex;
    align-items: center;
    gap: 14px;
    cursor: pointer;
    transition: all 0.15s;
}

.timeline-event:hover {
    border-color: var(--ft-claret);
    transform: translateX(5px);
    background: var(--ft-wheat);
}

.event-date {
    font-family: var(--font-sans);
    font-size: var(--text-sm);
    color: var(--ft-claret);
    min-width: 60px;
    font-weight: 600;
}

.event-partner {
    font-weight: 600;
    font-size: var(--text-base);
}

.event-detail {
    font-size: var(--text-sm);
    color: var(--color-text-muted);
    font-style: italic;
}

.event-arrow {
    margin-left: auto;
    color: var(--color-text-muted);
    font-size: var(--text-sm);
}

/* Sector Cards */
.sector-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: var(--space-md);
}

.sector-card {
    background: var(--ft-paper);
    border: 1px solid var(--color-border);
    padding: 20px;
    position: relative;
    cursor: pointer;
    transition: all 0.15s;
}

.sector-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 5px 16px rgba(0,0,0,0.08);
    border-color: var(--ft-claret);
}

.sector-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 4px;
}

/* Sector card colors aligned with main ecosystem segments */
/* AI-Native related: Claret (#9e2f50) */
.sector-card.media::before { background: var(--ft-claret); }
.sector-card.consumer::before { background: var(--ft-claret); }

/* Hyperscaler related: Oxford (#0f5499) */
.sector-card.cloud::before { background: var(--ft-oxford); }
.sector-card.infrastructure::before { background: var(--ft-oxford); }

/* GSI related: Teal (#0d7680) */
.sector-card.consulting::before { background: var(--ft-teal); }
.sector-card.enterprise::before { background: var(--ft-teal); }

/* Silicon related: Purple (#7d3c7d) */
.sector-card.semiconductors::before { background: #7d3c7d; }

/* OEM related: Green (#2d6a4f) */
.sector-card.commerce::before { background: #2d6a4f; }
.sector-card.telecom::before { background: #2d6a4f; }
.sector-card.healthcare::before { background: #2d6a4f; }

/* Sovereign/Government related: Gold (#9a5b13) */
.sector-card.government::before { background: #9a5b13; }
.sector-card.multisector::before { background: #9a5b13; }

.sector-card.disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.sector-card.disabled:hover {
    transform: none;
    box-shadow: none;
    border-color: var(--color-border);
}

.sector-card.disabled .sector-card-hint {
    color: var(--color-text-muted);
    font-style: italic;
}

.sector-card-name {
    font-family: var(--font-serif);
    font-size: var(--text-md);
    font-weight: 700;
    margin-bottom: 10px;
}

.sector-card-stats {
    display: flex;
    gap: 20px;
    margin-bottom: 10px;
}

.sector-card-val {
    font-family: var(--font-serif);
    font-size: var(--text-lg);
    font-weight: 700;
    color: var(--ft-claret);
}

.sector-card-lbl {
    font-family: var(--font-sans);
    font-size: var(--text-xs);
    color: var(--color-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.sector-card-focus {
    font-size: var(--text-base);
    color: var(--color-text-muted);
    font-style: italic;
    line-height: 1.5;
}

.sector-card-hint {
    font-family: var(--font-sans);
    font-size: var(--text-xs);
    color: var(--color-text-muted);
    margin-top: 10px;
    text-align: right;
    font-style: italic;
}

/* Partnership Modal */
.modal-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(51,48,46,0.7);
    z-index: 1000;
    display: none;
    justify-content: center;
    align-items: center;
    padding: 20px;
}

.modal-overlay.active {
    display: flex;
}

.modal {
    background: var(--ft-paper);
    max-width: 640px;
    width: 100%;
    max-height: 90vh;
    overflow-y: auto;
    position: relative;
    box-shadow: 0 24px 64px rgba(51,48,46,0.25), 0 0 0 1px rgba(51,48,46,0.08);
}

.modal-head {
    padding: 28px 28px 20px;
    border-bottom: 1px solid var(--color-border);
}

.modal-sector {
    font-family: var(--font-sans);
    font-size: var(--text-xs);
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--ft-claret);
    margin-bottom: 6px;
}

.modal-headline {
    font-family: var(--font-serif);
    font-size: var(--text-2xl);
    font-weight: 700;
    line-height: 1.25;
    margin-bottom: 10px;
}

.modal-meta {
    display: flex;
    gap: 16px;
    font-family: var(--font-sans);
    font-size: var(--text-sm);
    color: var(--color-text-muted);
}

.modal-body {
    padding: 24px 28px;
}

.modal-value {
    font-family: var(--font-serif);
    font-size: var(--text-4xl);
    font-weight: 700;
    color: var(--ft-claret);
    margin-bottom: 16px;
}

.modal-summary {
    font-size: var(--text-base);
    line-height: 1.7;
    margin-bottom: 20px;
}

.modal-terms {
    background: var(--ft-pink);
    padding: 16px;
    margin-bottom: 20px;
    border-left: 3px solid var(--ft-claret);
}

.modal-terms h4 {
    font-family: var(--font-serif);
    font-size: var(--text-sm);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-text-muted);
    margin-bottom: 10px;
}

.modal-terms ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

.modal-terms li {
    font-size: 0.8125rem;
    padding: 5px 0;
    border-bottom: 1px solid var(--color-border);
}

.modal-terms li:last-child {
    border-bottom: none;
}

.modal-close {
    position: absolute;
    top: 16px;
    right: 16px;
    width: 32px;
    height: 32px;
    background: var(--ft-pink);
    border: 1px solid var(--color-border);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    color: var(--color-text-muted);
}

.modal-close:hover {
    background: var(--ft-claret);
    border-color: var(--ft-claret);
    color: #fff;
}

/* Responsive */
@media (max-width: 1024px) {
    .theme-grid { grid-template-columns: repeat(2, 1fr); }
    .lead-section { grid-template-columns: 1fr; }
    .lead-stats { 
        display: flex;
        flex-wrap: wrap;
        gap: var(--space-md) var(--space-xl);
    }
    .lead-stats-header {
        width: 100%;
    }
    .stat-block {
        padding: 0;
    }
    .footer-inner { grid-template-columns: 1fr 1fr; }
    .entity-grid { grid-template-columns: repeat(2, 1fr); }
}

/* ── Hamburger button (hidden on desktop) ── */
.nav-hamburger {
    display: none;
    background: none;
    border: none;
    cursor: pointer;
    padding: 8px 4px;
    flex-direction: column;
    gap: 4px;
}
.nav-hamburger span {
    display: block;
    width: 20px;
    height: 2px;
    background: var(--ft-white, #fff);
    border-radius: 1px;
    transition: transform 0.2s ease, opacity 0.2s ease;
}
.nav-hamburger.open span:nth-child(1) { transform: rotate(45deg) translate(4px, 4px); }
.nav-hamburger.open span:nth-child(2) { opacity: 0; }
.nav-hamburger.open span:nth-child(3) { transform: rotate(-45deg) translate(4px, -4px); }

@media (max-width: 768px) {
    /* Compact header */
    .site-header .header-inner { padding: var(--space-sm) var(--space-md); }
    .site-title { font-size: 1.5rem; }
    .edition { font-size: 0.625rem; margin-top: 2px; }
    .header-meta { display: none; }

    /* Hamburger nav */
    .nav-hamburger { display: flex; }
    .main-nav-inner {
        flex-wrap: wrap;
        padding: var(--space-xs) var(--space-md);
        gap: 0;
    }
    .main-nav ul {
        display: none;
        width: 100%;
        flex-direction: column;
        padding-top: var(--space-xs);
        border-top: 1px solid rgba(255,255,255,0.12);
    }
    .main-nav ul.mobile-open { display: flex; }
    .main-nav a { padding: 10px var(--space-md); font-size: 0.875rem; }
    .settings-toggle { margin-left: auto; }

    /* Breadcrumb compact */
    .breadcrumb-inner { padding: 0 var(--space-md); height: 32px; }
    .breadcrumb-dropdown { left: var(--space-md); min-width: 260px; }
    .breadcrumb-trail { font-size: 0.75rem; }
    .breadcrumb-copy-link { display: none; }

    /* Don't stick the whole header group on mobile — too tall */
    .sticky-header-group { position: relative; }
    .main-nav { position: sticky; top: 0; z-index: 100; }

    .site-footer .footer-inner { flex-direction: column; gap: var(--space-sm); text-align: center; }
    .container { padding: var(--space-md); }
    .detail-header-sticky { margin-left: calc(-1 * var(--space-md)); margin-right: calc(-1 * var(--space-md)); padding-left: var(--space-md); padding-right: var(--space-md); }
    .detail-data-strip { flex-wrap: wrap; gap: 4px 0; }
    .detail-title { font-size: 1.375rem; }
    .theme-grid, .theme-grid.cols-3 { grid-template-columns: 1fr; }
    .lead-headline, .page-title { font-size: 1.75rem; }
    .lead-stats { 
        flex-direction: column;
        gap: var(--space-xs);
    }
    .stat-block { 
        padding: var(--space-xs) 0;
        border-bottom: 1px solid var(--color-border);
    }
    .stat-block:last-child { border-bottom: none; }
    .footer-inner { grid-template-columns: 1fr; }
    .page-meta { flex-direction: column; gap: var(--space-xs); }
    .signal-distribution { grid-template-columns: repeat(2, 1fr); }
    .entity-grid { grid-template-columns: 1fr; }
    .source-col { display: none; }
    .chart-label { width: 100px; font-size: 0.75rem; }
    .chart-legend { flex-wrap: wrap; gap: var(--space-sm); }
    .legend-item { font-size: 0.6875rem; }
}

/* Settings Panel - Apple Liquid Toggle */
.settings-toggle {
    position: relative;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

/* Liquid toggle — removed, replaced by gear icon in nav */

.liquid-track {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    border-radius: 10px;
    background: rgba(255, 255, 255, 0.06);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1px solid transparent;
    box-shadow: 
        inset 0 1px 1px rgba(0, 0, 0, 0.15),
        0 1px 2px rgba(255, 255, 255, 0.05);
    transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
    overflow: visible;
}

/* Edge shimmer container — feathered inward */
.liquid-track::before {
    content: '';
    position: absolute;
    inset: -0.5px;
    border-radius: 10px;
    background: conic-gradient(
        from var(--shimmer-angle, 0deg),
        transparent 0%,
        transparent 10%,
        rgba(255, 80, 180, 0.7) 15%,
        rgba(255, 120, 60, 0.75) 22%,
        rgba(255, 220, 50, 0.7) 29%,
        rgba(80, 255, 120, 0.75) 36%,
        rgba(60, 200, 255, 0.8) 43%,
        rgba(100, 120, 255, 0.75) 50%,
        rgba(200, 80, 255, 0.7) 57%,
        rgba(255, 80, 180, 0.65) 64%,
        transparent 70%,
        transparent 100%
    );
    -webkit-mask: radial-gradient(
        ellipse at center,
        transparent 55%,
        rgba(0, 0, 0, 0.3) 70%,
        rgba(0, 0, 0, 0.7) 85%,
        #000 95%
    );
    mask: radial-gradient(
        ellipse at center,
        transparent 55%,
        rgba(0, 0, 0, 0.3) 70%,
        rgba(0, 0, 0, 0.7) 85%,
        #000 95%
    );
    animation: edgeShimmer 3s linear infinite;
    opacity: 0.85;
    transition: opacity 0.3s ease;
}

.liquid-toggle:hover .liquid-track::before {
    opacity: 1;
    filter: saturate(1.3) brightness(1.1);
    animation: edgeShimmer 1.5s linear infinite;
}

.liquid-toggle:hover .liquid-track::after {
    animation: waterRipple 2.8s linear infinite;
}

/* Water ripple effect */
.liquid-track::after {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: 10px;
    background: 
        radial-gradient(ellipse at center,
            transparent 30%,
            rgba(180, 220, 255, var(--ripple-a1, 0)) 45%,
            transparent 55%,
            rgba(200, 180, 255, var(--ripple-a2, 0)) 68%,
            transparent 78%,
            rgba(180, 255, 220, var(--ripple-a3, 0)) 88%,
            transparent 95%
        );
    animation: waterRipple 4s linear infinite;
    pointer-events: none;
}

/* Checked state - track */
.liquid-toggle input:checked + .liquid-track {
    background: linear-gradient(
        135deg,
        rgba(159, 43, 104, 0.35) 0%,
        rgba(140, 50, 120, 0.4) 50%,
        rgba(159, 43, 104, 0.35) 100%
    );
    box-shadow: 
        inset 0 1px 1px rgba(0, 0, 0, 0.1),
        0 0 16px rgba(159, 43, 104, 0.25),
        0 0 32px rgba(180, 100, 200, 0.15);
}

/* Checked state - edge shimmer intensified + feathered */
.liquid-toggle input:checked + .liquid-track::before {
    inset: -0.5px;
    border-radius: 10px;
    background: conic-gradient(
        from var(--shimmer-angle, 0deg),
        transparent 0%,
        transparent 5%,
        rgba(255, 60, 160, 0.9) 10%,
        rgba(255, 100, 40, 0.95) 18%,
        rgba(255, 210, 30, 0.9) 26%,
        rgba(60, 255, 100, 0.95) 34%,
        rgba(40, 180, 255, 1) 42%,
        rgba(80, 100, 255, 0.95) 50%,
        rgba(180, 60, 255, 0.9) 58%,
        rgba(255, 60, 200, 0.95) 66%,
        rgba(255, 100, 60, 0.85) 74%,
        transparent 80%,
        transparent 100%
    );
    -webkit-mask: radial-gradient(
        ellipse at center,
        transparent 45%,
        rgba(0, 0, 0, 0.35) 60%,
        rgba(0, 0, 0, 0.75) 80%,
        #000 92%
    );
    mask: radial-gradient(
        ellipse at center,
        transparent 45%,
        rgba(0, 0, 0, 0.35) 60%,
        rgba(0, 0, 0, 0.75) 80%,
        #000 92%
    );
    opacity: 1;
    animation: edgeShimmer 2s linear infinite;
}

/* Checked state - ripple intensified */
.liquid-toggle input:checked + .liquid-track::after {
    background: 
        radial-gradient(ellipse at center,
            transparent 25%,
            rgba(255, 150, 220, var(--ripple-a1, 0)) 40%,
            transparent 50%,
            rgba(180, 160, 255, var(--ripple-a2, 0)) 63%,
            transparent 73%,
            rgba(160, 255, 220, var(--ripple-a3, 0)) 85%,
            transparent 93%
        );
    animation: waterRipple 3.2s linear infinite;
}

/* Toggle Knob */
.liquid-knob {
    position: absolute;
    top: 2px;
    left: 2px;
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background: linear-gradient(
        145deg,
        rgba(255, 255, 255, 0.98) 0%,
        rgba(250, 250, 255, 0.95) 40%,
        rgba(240, 242, 250, 0.92) 100%
    );
    box-shadow: 
        0 1px 4px rgba(0, 0, 0, 0.2),
        0 1px 2px rgba(0, 0, 0, 0.1),
        inset 0 1px 0 rgba(255, 255, 255, 1),
        inset 0 -0.5px 1px rgba(0, 0, 0, 0.02);
    transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
    overflow: hidden;
    z-index: 2;
}

/* Knob highlight */
.liquid-knob::before {
    content: '';
    position: absolute;
    top: 2px;
    left: 2px;
    right: 2px;
    height: 45%;
    border-radius: 50% 50% 45% 45%;
    background: linear-gradient(
        180deg,
        rgba(255, 255, 255, 0.95) 0%,
        rgba(255, 255, 255, 0) 100%
    );
}

/* Knob sparkle */
.liquid-knob::after {
    content: '';
    position: absolute;
    top: 2px;
    right: 3px;
    width: 3px;
    height: 3px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 1);
    box-shadow: 0 0 2px rgba(255, 255, 255, 0.8);
    animation: sparkle 2s ease-in-out infinite;
}

/* Checked knob position */
.liquid-toggle input:checked ~ .liquid-knob {
    left: 20px;
    background: linear-gradient(
        145deg,
        rgba(255, 255, 255, 1) 0%,
        rgba(255, 252, 255, 0.98) 40%,
        rgba(252, 248, 255, 0.95) 100%
    );
    box-shadow: 
        0 1px 6px rgba(159, 43, 104, 0.35),
        0 1px 2px rgba(0, 0, 0, 0.08),
        inset 0 1px 0 rgba(255, 255, 255, 1);
}

/* Hover state */
.liquid-toggle:hover .liquid-knob {
    transform: scale(1.06);
}

.liquid-toggle:active .liquid-knob {
    transform: scale(0.94);
}

/* Focus state */
.liquid-toggle input:focus-visible + .liquid-track {
    outline: 2px solid rgba(159, 43, 104, 0.4);
    outline-offset: 2px;
}

/* Settings dropdown panel */
.settings-panel {
    position: absolute;
    top: calc(100% + 0.75rem);
    right: 0;
    background: rgba(30, 30, 35, 0.95);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 12px;
    box-shadow: 
        0 8px 32px rgba(0, 0, 0, 0.4),
        0 0 0 1px rgba(255, 255, 255, 0.05) inset;
    padding: 1rem;
    min-width: 220px;
    z-index: 1000;
    display: none;
    transform: translateY(-10px);
    opacity: 0;
    transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.settings-panel.visible {
    display: block;
    transform: translateY(0);
    opacity: 1;
}

.settings-panel h4 {
    font-size: 0.6875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: rgba(255, 255, 255, 0.5);
    margin: 0 0 0.75rem 0;
    padding-bottom: 0.5rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.settings-option {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    padding: 0.5rem 0;
    font-size: 0.75rem;
    color: rgba(255, 255, 255, 0.75);
    cursor: pointer;
    transition: color 0.2s ease;
}

.settings-option:hover {
    color: rgba(255, 255, 255, 1);
}

/* Mini toggle switches for options */
.settings-option input[type="checkbox"] {
    appearance: none;
    -webkit-appearance: none;
    width: 32px;
    height: 18px;
    border-radius: 9px;
    background: linear-gradient(
        135deg,
        rgba(255, 255, 255, 0.08) 0%,
        rgba(200, 220, 255, 0.05) 50%,
        rgba(255, 255, 255, 0.08) 100%
    );
    border: 1px solid rgba(255, 255, 255, 0.12);
    cursor: pointer;
    position: relative;
    transition: all 0.3s ease;
    overflow: hidden;
}

.settings-option input[type="checkbox"]::before {
    content: '';
    position: absolute;
    top: 2px;
    left: 2px;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: linear-gradient(
        145deg,
        rgba(255, 255, 255, 0.95) 0%,
        rgba(240, 240, 250, 0.9) 50%,
        rgba(225, 230, 245, 0.85) 100%
    );
    box-shadow: 
        0 1px 3px rgba(0, 0, 0, 0.25),
        inset 0 1px 0 rgba(255, 255, 255, 1);
    transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.settings-option input[type="checkbox"]:checked {
    background: linear-gradient(
        90deg,
        rgba(159, 43, 104, 0.5) 0%,
        rgba(180, 80, 150, 0.55) 50%,
        rgba(159, 43, 104, 0.5) 100%
    );
    background-size: 200% 100%;
    animation: liquidShimmer 2.5s ease-in-out infinite;
    border-color: rgba(180, 120, 180, 0.4);
    box-shadow: 0 0 8px rgba(159, 43, 104, 0.3);
}

.settings-option input[type="checkbox"]:checked::before {
    left: 16px;
    box-shadow: 
        0 1px 4px rgba(159, 43, 104, 0.4),
        inset 0 1px 0 rgba(255, 255, 255, 1);
}

/* Settings panel: divider & nav links */
.settings-divider {
    border: none;
    border-top: 1px solid var(--border);
    margin: 10px 0 8px;
}
.settings-nav-link {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 7px 10px;
    border-radius: 4px;
    font-size: 0.82rem;
    font-family: var(--font-sans);
    letter-spacing: 0.02em;
    color: var(--text-secondary);
    text-decoration: none;
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
}
.settings-nav-link:hover {
    background: var(--bg-hover, rgba(0,0,0,0.05));
    color: var(--text-primary);
    text-decoration: none;
}
.settings-nav-link svg {
    flex-shrink: 0;
    opacity: 0.6;
}
.settings-nav-link:hover svg {
    opacity: 1;
}

/* Data flourish hiding classes */
body.hide-scores .signal-score,
body.hide-scores .score-col,
body.hide-scores .ei-signal-chip {
    display: none !important;
}

body.hide-trends .trend,
body.hide-trends .theme-meta .trend {
    display: none !important;
}

body.hide-source-tiers .source-tag[class*="tier-"],
body.hide-source-tiers .ei-source-name[class*="tier-"] {
    background: var(--ft-paper);
    color: var(--ft-grey);
}

body.hide-source-tiers .source-tag[class*="tier-"]::before,
body.hide-source-tiers .ei-source-name[class*="tier-"]::before {
    display: none;
}

body.hide-signal-types .signal-tag,
body.hide-signal-types .ei-tag--signal-type,
body.hide-signal-types .signal-col {
    display: none !important;
}

/* ============================================
   Theme Volume Chart — Interactive (tvc- namespace)
   ============================================ */
.tvc-wrap {
    margin-bottom: var(--space-xl);
}

.tvc-header {
    margin-bottom: 20px;
    padding-bottom: 14px;
    border-bottom: 1px solid rgba(51,48,46,0.15);
}

.tvc-subtitle {
    font-size: 0.8125rem;
    color: var(--ft-grey, #999);
    line-height: 1.5;
    max-width: 720px;
}

.tvc-method {
    font-size: 0.6875rem;
    color: var(--ft-grey, #999);
    margin-top: 5px;
    font-style: italic;
}

.tvc-controls {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-bottom: 16px;
}

.tvc-btn {
    font-family: var(--font-sans);
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    padding: 7px 14px;
    border: 1px solid rgba(51,48,46,0.15);
    background: #fff;
    color: var(--ft-grey, #999);
    cursor: pointer;
    transition: all 0.2s;
}

.tvc-btn:first-child { border-radius: 3px 0 0 3px; }
.tvc-btn:nth-child(2) { border-radius: 0 3px 3px 0; }
.tvc-btn + .tvc-btn { border-left: none; }
.tvc-btn:hover { color: var(--ft-black, #33302E); background: var(--ft-wheat, #F2DFCE); }

.tvc-btn.active {
    background: var(--ft-black, #33302E);
    color: #fff;
    border-color: var(--ft-black, #33302E);
}

.tvc-btn.active + .tvc-btn { border-left-color: var(--ft-black, #33302E); }

.tvc-meta {
    margin-left: 12px;
    font-size: 0.625rem;
    color: var(--ft-grey, #999);
}

.tvc-resstrip {
    display: flex;
    margin-bottom: 12px;
    border: 1px solid rgba(51,48,46,0.1);
    background: #fff;
    overflow: hidden;
    transition: opacity 0.25s, max-height 0.35s;
    max-height: 60px;
}

.tvc-resstrip.hidden {
    max-height: 0;
    opacity: 0;
    margin-bottom: 0;
    border-color: transparent;
}

.tvc-resseg {
    flex: 1;
    padding: 7px 10px;
    text-align: center;
    border-right: 1px solid rgba(51,48,46,0.08);
}

.tvc-resseg:last-child { border-right: none; }
.tvc-resseg .tvc-reslbl { font-size: 0.5625rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; color: var(--ft-grey, #999); margin-bottom: 1px; }
.tvc-resseg .tvc-resval { font-family: var(--font-serif); font-size: 0.875rem; font-weight: 700; }
.tvc-resseg.tvc-obs { background: rgba(13, 118, 128, 0.04); }
.tvc-resseg.tvc-obs .tvc-reslbl { color: var(--ft-teal, #0D7680); }
.tvc-resseg.tvc-obs .tvc-resval { color: var(--ft-teal, #0D7680); }

.tvc-stats {
    display: flex;
    gap: 24px;
    flex-wrap: wrap;
    margin-bottom: 16px;
    padding: 12px 16px;
    background: #fff;
    border: 1px solid rgba(51,48,46,0.1);
}

.tvc-stat { display: flex; flex-direction: column; gap: 2px; }
.tvc-statval { font-family: var(--font-serif); font-size: 1.125rem; font-weight: 700; color: var(--ft-claret, #9F2846); }
.tvc-statval.tvc-teal { color: var(--ft-teal, #0D7680); }
.tvc-statval.tvc-oxford { color: var(--ft-oxford, #0F5499); }
.tvc-statlbl { font-size: 0.5625rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--ft-grey, #999); font-weight: 600; }

.tvc-chartwrap {
    background: #fff;
    border: 1px solid rgba(51,48,46,0.1);
    padding: 20px 16px 12px;
    margin-bottom: 14px;
}

.tvc-canvaswrap { position: relative; height: 390px; }
.tvc-canvaswrap canvas { width: 100% !important; height: 100% !important; }
.tvc-loading {
    position: absolute; inset: 0;
    display: none; align-items: center; justify-content: center;
    font-family: var(--font-sans, 'Libre Franklin', sans-serif); font-size: 0.75rem;
    color: var(--ft-grey, #999); background: rgba(255,252,249,0.9);
    z-index: 2;
}

.tvc-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 14px;
    margin-top: 14px;
    padding-top: 10px;
    border-top: 1px solid rgba(51,48,46,0.08);
}

.tvc-legitem {
    display: flex; align-items: center; gap: 5px;
    cursor: pointer; padding: 3px 6px; border-radius: 3px;
    transition: background 0.15s; user-select: none;
}

.tvc-legitem:hover { background: rgba(51,48,46,0.05); }
.tvc-legitem:focus-visible { outline: 2px solid var(--ft-teal, #0D7680); outline-offset: 1px; }
.tvc-legitem.muted { opacity: 0.25; }
.tvc-legswatch { width: 16px; height: 2.5px; border-radius: 1px; flex-shrink: 0; }
.tvc-leglabel { font-size: 0.6875rem; color: var(--ft-black, #33302E); }

.tvc-legsep {
    display: flex; align-items: center; gap: 5px;
    margin-left: 10px; padding-left: 10px;
    border-left: 1px solid rgba(51,48,46,0.1);
}

.tvc-annotations {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 10px;
    margin-bottom: 14px;
}

.tvc-ann { background: #fff; border: 1px solid rgba(51,48,46,0.1); padding: 10px 12px; border-left: 3px solid var(--ft-claret, #9F2846); position: relative; }
.tvc-ann.tvc-annobs { border-left-color: var(--ft-teal, #0D7680); }
.tvc-anndate { font-size: 0.5625rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: var(--ft-claret, #9F2846); margin-bottom: 2px; }
.tvc-ann.tvc-annobs .tvc-anndate { color: var(--ft-teal, #0D7680); }
.tvc-anntxt { font-size: 0.6875rem; color: var(--ft-black, #33302E); line-height: 1.4; }
.tvc-badge { display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; border-radius: 50%; background: var(--ft-claret, #9F2846); color: #fff; font-size: 0.5rem; font-weight: 700; margin-right: 5px; flex-shrink: 0; vertical-align: middle; line-height: 1; }
.tvc-ann.tvc-annobs .tvc-badge { background: var(--ft-teal, #0D7680); }

.tvc-export { margin-left: auto; border-radius: 3px !important; font-size: 0.625rem; padding: 6px 10px; }

.tvc-footer {
    margin-top: 14px; padding-top: 10px;
    border-top: 1px solid rgba(51,48,46,0.1);
    font-size: 0.5625rem; color: var(--ft-grey, #999); line-height: 1.6;
}

/* Cross-section theme highlighting */
.wow-table tr.tvc-highlight { background: rgba(159,40,70,0.06); transition: background 0.2s; }

@media (max-width: 1024px) {
    .tvc-stats { gap: 16px 20px; }
    .tvc-annotations { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 768px) {
    .tvc-canvaswrap { height: 340px; }
    .tvc-controls { flex-wrap: wrap; }
    .tvc-meta { width: 100%; margin-left: 0; margin-top: 8px; }
    .tvc-stats { flex-direction: column; gap: 12px; }
    .tvc-annotations { grid-template-columns: 1fr; }
    .tvc-legitem { padding: 8px 10px; min-height: 44px; }
    .tvc-btn { padding: 10px 18px; font-size: 0.75rem; min-height: 44px; }
    .tvc-legsep { margin-left: 0; padding-left: 0; border-left: none; width: 100%; padding-top: 8px; margin-top: 4px; border-top: 1px solid rgba(51,48,46,0.1); }
}

@media (max-width: 640px) {
    .tvc-canvaswrap { height: 260px; }
    .tvc-stats { gap: 12px; }
    .tvc-annotations { grid-template-columns: 1fr; }
    .tvc-resstrip { flex-wrap: wrap; }
    .tvc-resseg { min-width: 50%; }
    .tvc-subtitle { font-size: 0.75rem; }
    .tvc-method { display: none; }
    .tvc-legend { gap: 2px 8px; }
}


/* ── Dossier Content (scoped) ── */
.dossier-content .content-section { padding-top: 28px;
        margin-bottom: 40px; }
.dossier-content .content-section:last-child { margin-bottom: 0; }
.dossier-content .profile-grid { display: grid;
        grid-template-columns: repeat(5, 1fr);
        gap: 16px 24px;
        font-family: Arial, Helvetica, sans-serif;
        padding: 20px 0;
        border-top: 1px solid #d0d0d0;
        border-bottom: 1px solid #d0d0d0; }
.dossier-content .metric-card { display: flex;
        flex-direction: column;
        gap: 4px; }
.dossier-content .metric-label { font-size: 9px;
        color: #999;
        text-transform: uppercase;
        letter-spacing: 0.5px;
        font-weight: 600; }
.dossier-content .metric-value { font-size: 14px;
        color: #33302e;
        font-weight: 600;
        line-height: 1.2; }
.dossier-content .metric-unit { font-size: 10px;
        color: #999;
        font-weight: 400; }
.dossier-content .porter-force { border: none;
        border-top: 1px solid #d0d0d0;
        padding: 20px 0 0 0; }
.dossier-content .porter-force.summary { grid-column: 1 / -1;
        background: transparent;
        border-top: 1px solid #d0d0d0;
        padding-top: 24px;
        margin-top: 8px; }
.dossier-content .force-header { display: flex;
        justify-content: space-between;
        align-items: center;
        margin-bottom: 16px;
        padding-bottom: 0;
        border-bottom: none; }
.dossier-content .force-header h3 { font-size: 14px;
        font-weight: 600;
        margin: 0;
        padding: 0;
        border: none;
        color: #33302e; }
.dossier-content .force-rating { font-family: Arial, Helvetica, sans-serif;
        font-size: 10px;
        font-weight: 600;
        text-transform: uppercase;
        letter-spacing: 0.5px;
        padding: 4px 10px;
        border-radius: 2px; }
.dossier-content .force-rating.low { background: #e8f5e9;
        color: #2e7d32; }
.dossier-content .force-rating.medium { background: #fff3e0;
        color: #e65100; }
.dossier-content .force-rating.high { background: #ffebee;
        color: #c62828; }
.dossier-content .force-content p { margin-bottom: 12px;
        font-size: 12px;
        line-height: 1.6; }
.dossier-content .force-content p:last-child { margin-bottom: 0; }
.dossier-content .chart-section.full-width { grid-column: 1 / -1; }
.dossier-content .ownership-row { display: flex;
        align-items: center;
        gap: 12px;
        font-family: Arial, Helvetica, sans-serif;
        font-size: 11px; }
.dossier-content .ownership-label { min-width: 120px;
        color: #666; }
.dossier-content .ownership-bar { flex: 1;
        height: 20px;
        background: #f5f5f5;
        border-radius: 2px;
        overflow: hidden; }
.dossier-content .ownership-fill { height: 100%;
        background: #4a90e2;
        transition: width 0.3s ease; }
.dossier-content .ownership-fill.institutional { background: #f5a623; }
.dossier-content .ownership-value { min-width: 100px;
        text-align: right;
        color: #33302e;
        font-weight: 600;
        font-size: 11px; }
.dossier-content .capital-row { display: flex;
        justify-content: space-between;
        align-items: center;
        padding: 10px 0;
        border-bottom: 1px solid #e8e8e8;
        font-family: Arial, Helvetica, sans-serif;
        font-size: 12px; }
.dossier-content .capital-row:first-child { padding-top: 0; }
.dossier-content .capital-row:last-child { border-bottom: none; }
.dossier-content .capital-label { color: #666;
        font-size: 10px;
        font-weight: 400; }
.dossier-content .capital-value { font-weight: 600;
        color: #33302e;
        font-size: 11px; }
.dossier-content .capital-value.negative { color: #c00;
        font-weight: 600; }
.dossier-content .performance-table table { font-size: 10px;
        margin: 0;
        border: none; }
.dossier-content .performance-table th { padding: 6px 10px;
        font-size: 9px;
        background: #f5f5f5;
        font-weight: 600;
        text-transform: uppercase;
        letter-spacing: 0.3px;
        border-bottom: 1px solid #d0d0d0;
        border-right: 1px solid #e8e8e8; }
.dossier-content .performance-table th:last-child { border-right: none; }
.dossier-content .performance-table td { padding: 6px 10px;
        border-bottom: 1px solid #e8e8e8;
        border-right: 1px solid #e8e8e8; }
.dossier-content .performance-table td:last-child { border-right: none; }
.dossier-content .performance-table tbody tr:last-child td { border-bottom: none; }
.dossier-content .performance-table td:first-child { font-weight: 600;
        background: #fafafa; }
.dossier-content .performance-table td.negative { color: #c00;
        font-weight: 600; }
.dossier-content .chart-section h3 { font-size: 11px;
        font-weight: 600;
        margin: 0;
        padding: 8px 12px;
        border: none;
        color: #33302e;
        text-transform: uppercase;
        letter-spacing: 0.3px;
        background: #f5f5f5;
        border-bottom: 1px solid #d0d0d0; }
.dossier-content .capital-metrics { padding: 0; }
.dossier-content .capital-row { padding: 6px 12px;
        border-bottom: 1px solid #e8e8e8; }
.dossier-content .capital-row:last-child { border-bottom: none; }
.dossier-content #timeline + .content-section h2 { position: sticky;
        top: 0;
        background: #fff;
        z-index: 15;
        margin-bottom: 20px;
        padding-top: 40px;
        padding-bottom: 10px; }
.dossier-content .timeline-flow { position: sticky;
        top: 100px;
        padding: 30px 140px 40px 140px;
        max-height: calc(100vh - 120px);
        overflow: hidden;
        background: #fff;
        box-shadow: inset 0 0 80px rgba(0, 0, 0, 0.03); }
.dossier-content .timeline-flow::-webkit-scrollbar-track { background: transparent; }
.dossier-content .timeline-flow::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, 0.1);
        border-radius: 4px; }
.dossier-content .timeline-flow::-webkit-scrollbar-thumb:hover { background: rgba(0, 0, 0, 0.2); }
.dossier-content .event-item { position: relative;
        padding: 0 0 30px 0;
        display: grid;
        grid-template-columns: 70px 1fr 80px;
        gap: 20px;
        align-items: start;
        opacity: 0;
        animation: fadeInTimeline 0.5s ease-out forwards; }
.dossier-content .event-item:last-child::after { height: 100%; }
.dossier-content .timeline-flow .event-item.critical:before { background: #c00;
        width: 10px;
        height: 10px;
        left: 80px;
        transform: translateX(-50%);
        box-shadow: 0 2px 12px rgba(192, 0, 0, 0.3); }
.dossier-content .event-date { font-family: Arial, Helvetica, sans-serif;
        font-size: 11px;
        font-weight: 600;
        color: #999;
        text-align: right;
        padding-top: 2px;
        text-transform: uppercase;
        letter-spacing: 0.3px;
        text-shadow: 0 1px 2px rgba(255, 255, 255, 0.8); }
.dossier-content .event-content { font-family: Arial, Helvetica, sans-serif; }
.dossier-content .event-title { font-size: 13px;
        font-weight: 600;
        color: #33302e;
        margin-bottom: 4px;
        text-shadow: 0 1px 3px rgba(255, 255, 255, 0.9); }
.dossier-content .event-desc { font-size: 12px;
        color: #666;
        line-height: 1.6;
        text-shadow: 0 1px 2px rgba(255, 255, 255, 0.8); }
.dossier-content .event-tag { font-family: Arial, Helvetica, sans-serif;
        font-size: 9px;
        font-weight: 600;
        text-transform: uppercase;
        letter-spacing: 0.3px;
        padding: 3px 6px;
        border-radius: 2px;
        align-self: start;
        margin-top: 3px;
        text-align: center;
        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
        white-space: nowrap; }
.dossier-content .event-tag.strategic { background: #f0f0f0;
        color: #666; }
.dossier-content .event-tag.executive { background: #ffe8e8;
        color: #c00; }
.dossier-content .appendix h3 { font-size: 14px;
        font-weight: 600;
        margin-bottom: 0;
        text-transform: uppercase;
        letter-spacing: 0.5px; }
.dossier-content .timeline-flow { position: static;
            max-height: none !important;
            overflow: visible !important;
            padding: 20px 40px;
            background: #fafafa; }
.dossier-content .event-item { opacity: 1 !important;
            animation: none !important;
            break-inside: avoid;
            page-break-inside: avoid; }
.dossier-content .profile-grid { grid-template-columns: repeat(2, 1fr);
            gap: 20px; }
.dossier-content .charts-grid, .dossier-content .porter-grid { grid-template-columns: 1fr;
            gap: 30px; }
.dossier-content .porter-force.summary { grid-column: 1; }
.dossier-content .ownership-row { flex-direction: column;
            align-items: stretch;
            gap: 8px; }
.dossier-content .ownership-label, .dossier-content .ownership-value { min-width: auto;
            text-align: left; }
.dossier-content .timeline-flow { position: static;
            max-height: none;
            overflow: visible;
            padding: 40px 30px 40px 30px; }
.dossier-content .event-item { grid-template-columns: 1fr;
            padding-left: 40px;
            padding-bottom: 28px;
            gap: 6px; }
.dossier-content .event-item:last-child::after { height: 100%; }
.dossier-content .timeline-flow .event-item.critical:before { left: 14px;
            transform: translateX(-50%); }
.dossier-content .event-date { text-align: left;
            font-size: 10px;
            padding-bottom: 0; }
.dossier-content .event-tag { width: fit-content;
            margin-top: 6px; }
.dossier-content .event-title { font-size: 13px; }
.dossier-content .event-desc { font-size: 11px; }
.dossier-content .profile-grid { grid-template-columns: 1fr;
            gap: 16px; }
.dossier-content .timeline-flow { padding: 30px 16px 30px 16px; }
.dossier-content .event-item { padding-left: 32px;
            padding-bottom: 24px;
            gap: 4px; }
.dossier-content .event-item::after { left: 10px;
            transform: translateX(-50%); }
.dossier-content .timeline-flow .event-item:before { left: 10px;
            width: 6px;
            height: 6px;
            transform: translateX(-50%); }
.dossier-content .timeline-flow .event-item.critical:before { left: 10px;
            width: 8px;
            height: 8px;
            transform: translateX(-50%); }
.dossier-content .event-title { font-size: 12px; }
.dossier-content .event-desc { font-size: 11px;
            line-height: 1.5; }
.dossier-content .event-tag { font-size: 8px;
            padding: 2px 5px; }.dossier-content h3 { font-family: Arial, Helvetica, sans-serif;
        font-size: 13px;
        font-weight: 600;
        color: #666;
        margin: 30px 0 15px 0;
        text-transform: uppercase;
        letter-spacing: 0.8px; }
.dossier-content ul { margin: 18px 0;
        padding-left: 0;
        list-style: none; }
.dossier-content strong { font-weight: 600;
        color: #33302e; }
.dossier-content h2 { font-size: 18px; }.dossier-content { font-family: Georgia, 'Times New Roman', serif; color: #33302e; line-height: 1.6; }
.dossier-content h2 { font-size: 22px; font-weight: 700; color: #33302e; margin: 32px 0 12px; padding-top: 16px; border-top: 1.5px solid #33302e; }
.dossier-content h2:first-child { margin-top: 0; }
.dossier-content h3 { font-family: Arial, Helvetica, sans-serif; font-size: 13px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; color: #33302e; margin: 24px 0 10px; }
.dossier-content p { margin-bottom: 14px; font-size: 15px; }
.dossier-content ul { margin: 14px 0; padding-left: 0; list-style: none; }
.dossier-content li { padding: 6px 0; font-size: 14px; border-bottom: 1px solid #e8e8e8; }
.dossier-content li:last-child { border-bottom: none; }
.dossier-content strong { font-weight: 600; color: #33302e; }


/* ═══════════════════════════════════════════════════════════
   BRIEFINGS: Sub-Nav, Report Grid, Placeholders
   ═══════════════════════════════════════════════════════════ */

/* Sub-navigation bar (legacy — replaced by breadcrumb-bar) */

/* Report hub grid */
.report-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: var(--space-lg, 1.5rem);
    margin-top: var(--space-lg, 1.5rem);
}

/* Report card */
.report-card {
    background: var(--color-bg-paper, #fff8f2);
    border: 1px solid var(--color-border, #e8e2de);
    padding: var(--space-lg, 1.5rem);
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.report-card:hover {
    border-color: var(--color-accent, #9e2f50);
    box-shadow: 0 2px 8px rgba(0,0,0,0.04);
}
.report-category {
    font-family: var(--font-sans);
    font-size: 0.625rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--color-accent, #9e2f50);
    margin-bottom: var(--space-sm, 0.5rem);
}
.report-title {
    font-family: var(--font-serif, Georgia, serif);
    font-size: 1.25rem;
    line-height: 1.3;
    margin: 0 0 var(--space-sm, 0.5rem);
    font-weight: 700;
}
.report-title a {
    color: var(--color-text, #33302e);
    text-decoration: none;
}
.report-title a:hover { color: var(--color-accent, #9e2f50); }
.report-subtitle {
    font-family: var(--font-serif, Georgia, serif);
    font-size: 0.875rem;
    color: var(--color-text-muted, #66605c);
    line-height: 1.5;
    margin: 0;
}
.report-meta {
    font-family: var(--font-sans);
    font-size: 0.6875rem;
    color: var(--color-text-light, #9e9e9e);
    margin-top: var(--space-md, 1rem);
    display: flex;
    justify-content: space-between;
    align-items: center;
}

/* Status badges */
.report-status-badge {
    font-family: var(--font-sans);
    font-size: 0.625rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding: 2px 8px;
}
.report-status-badge.live {
    background: rgba(13, 118, 128, 0.1);
    color: var(--color-teal, #0d7680);
}
.report-status-badge.preview {
    background: rgba(158, 158, 158, 0.08);
    color: var(--color-text-light, #9e9e9e);
}

/* Tool card variant */
.tool-card { border-style: dashed; }
.tool-card .report-title a { color: var(--color-oxford, #0f5499); }
.tool-card .report-title a:hover { color: var(--color-accent, #9e2f50); }
.tool-card .report-category { color: var(--color-oxford, #0f5499); }

/* Back link */
.back-to-nav {
    display: inline-block;
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    font-weight: 500;
    color: var(--color-text-muted, #66605c);
    text-decoration: none;
    margin-bottom: var(--space-lg, 1.5rem);
    padding: var(--space-xs, 0.25rem) 0;
    transition: color 0.15s;
}
.back-to-nav:hover { color: var(--color-accent, #9e2f50); }

/* Report placeholder (preview/coming soon) */
.report-placeholder {
    background: var(--color-bg-paper, #fff8f2);
    border: 1px solid var(--color-border, #e8e2de);
    padding: var(--space-xl, 1.5rem) var(--space-lg, 1.5rem);
    margin-top: var(--space-lg, 1.5rem);
    max-width: 720px;
}
.report-placeholder-badge {
    display: inline-block;
    font-family: var(--font-sans);
    font-size: 0.625rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    padding: 4px 12px;
    background: rgba(158, 158, 158, 0.08);
    color: var(--color-text-light, #9e9e9e);
    margin-bottom: var(--space-md, 1rem);
}
.report-placeholder-title {
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--color-text-muted, #66605c);
    margin: 0 0 var(--space-sm, 0.5rem);
    padding-bottom: var(--space-sm, 0.5rem);
    border-bottom: 1px solid var(--color-border, #e8e2de);
}
.report-placeholder-intro {
    font-family: var(--font-serif, Georgia, serif);
    font-size: 0.9375rem;
    color: var(--color-text, #33302e);
    line-height: 1.6;
    margin: 0 0 var(--space-md, 1rem);
}
.report-placeholder-dims {
    list-style: none;
    padding: 0;
    margin: 0;
}
.report-placeholder-dims li {
    font-family: var(--font-serif, Georgia, serif);
    font-size: 0.9375rem;
    line-height: 1.6;
    color: var(--color-text-muted, #66605c);
    padding: var(--space-sm, 0.5rem) 0;
    border-bottom: 1px solid var(--color-border, #e8e2de);
}
.report-placeholder-dims li:last-child { border-bottom: none; }
.report-placeholder-dims li strong {
    font-weight: 600;
    color: var(--color-text, #33302e);
}

/* Standalone report iframe */
.report-iframe {
    width: 100%;
    min-height: 100vh;
    border: none;
    display: block;
}
.report-iframe-contained {
    border: 1px solid var(--color-border, #e8e2de);
    margin-top: var(--space-md, 1rem);
    max-width: 100%;
    overflow: hidden;
}

/* MWC dossier controls */
.report-mwc-controls {
    display: flex;
    align-items: center;
    gap: var(--space-md, 1rem);
    margin-bottom: var(--space-lg, 1.5rem);
}
.report-company-label {
    font-family: var(--font-sans);
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--color-text-muted, #66605c);
}
.report-company-select {
    font-family: var(--font-sans);
    font-size: 0.875rem;
    padding: 6px 12px;
    border: 1px solid var(--color-border, #e8e2de);
    background: var(--color-bg-paper, #fff8f2);
    color: var(--color-text, #33302e);
    cursor: pointer;
}

/* Dossier embedded content */
.dossier-embedded h3 {
    font-family: var(--font-serif, Georgia, serif);
    font-size: 1.5rem;
    font-weight: 700;
    margin: 0 0 var(--space-md, 1rem);
}
.dossier-embedded h4 {
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin: var(--space-lg, 1.5rem) 0 var(--space-sm, 0.5rem);
}
.dossier-embedded p {
    font-size: 0.9375rem;
    line-height: 1.7;
    margin: 0 0 var(--space-md, 1rem);
}
.dossier-mwc-callout {
    background: var(--color-bg-paper, #fff8f2);
    border-left: 4px solid var(--color-accent, #9e2f50);
    padding: var(--space-md, 1rem) var(--space-lg, 1.5rem);
    margin-bottom: var(--space-lg, 1.5rem);
}
.dossier-mwc-callout ul { padding-left: var(--space-lg, 1.5rem); margin: var(--space-sm, 0.5rem) 0; }
.dossier-mwc-callout li { font-size: 0.875rem; line-height: 1.6; margin-bottom: 4px; }
.dossier-section { margin-top: var(--space-lg, 1.5rem); }

/* ── More dropdown divider ── */
/* .nav-more-divider — removed with nav-more */

/* ── Subscriptions / Email Alerts ── */
.subscriptions-loading { text-align: center; padding: var(--space-xl) 0; color: var(--ft-grey-medium); font-family: var(--font-sans); }

.subscriptions-form { max-width: 720px; }

.subscription-channel-card {
    background: var(--ft-white);
    border: 1px solid var(--ft-grey-light);
    border-top: 3px solid var(--ft-claret);
    padding: var(--space-lg);
    margin-bottom: var(--space-lg);
}

.subscription-channel-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--space-sm);
    gap: var(--space-md);
}

.subscription-channel-left {
    display: flex;
    align-items: center;
    gap: var(--space-md);
    flex: 1;
    min-width: 0;
}

.subscription-channel-toggle {
    position: relative;
    width: 40px;
    height: 22px;
    flex-shrink: 0;
}
.subscription-channel-toggle input {
    opacity: 0;
    width: 0;
    height: 0;
    position: absolute;
}
.subscription-channel-toggle .toggle-track {
    position: absolute;
    inset: 0;
    background: var(--ft-grey-light);
    border-radius: 11px;
    cursor: pointer;
    transition: background 0.2s;
}
.subscription-channel-toggle input:checked + .toggle-track {
    background: var(--ft-claret);
}
.subscription-channel-toggle .toggle-track::after {
    content: '';
    position: absolute;
    width: 16px;
    height: 16px;
    left: 3px;
    top: 3px;
    background: var(--ft-white);
    border-radius: 50%;
    transition: transform 0.2s;
}
.subscription-channel-toggle input:checked + .toggle-track::after {
    transform: translateX(18px);
}

.subscription-channel-name {
    font-family: var(--font-serif);
    font-size: 1.15rem;
    font-weight: 600;
    color: var(--ft-black);
}

.subscription-channel-desc {
    font-family: var(--font-sans);
    font-size: 0.85rem;
    color: var(--ft-grey-medium);
    margin-bottom: var(--space-md);
}

.subscription-frequency {
    font-family: var(--font-sans);
    font-size: 0.85rem;
    padding: 4px 8px;
    border: 1px solid var(--ft-grey-light);
    background: var(--ft-white);
    color: var(--ft-black);
    border-radius: 3px;
    cursor: pointer;
    flex-shrink: 0;
}

.subscription-filter-group {
    margin-top: var(--space-md);
    padding-top: var(--space-md);
    border-top: 1px solid var(--ft-grey-light);
}

.subscription-filter-label {
    font-family: var(--font-sans);
    font-size: 0.8rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--ft-grey-dark);
    margin-bottom: var(--space-sm);
}

.subscription-tag-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.subscription-tag {
    display: flex;
    align-items: center;
    gap: 4px;
    font-family: var(--font-sans);
    font-size: 0.8rem;
    color: var(--ft-black);
    padding: 4px 10px;
    border: 1px solid var(--ft-grey-light);
    border-radius: 3px;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s;
    user-select: none;
}
.subscription-tag:hover { background: rgba(0,0,0,0.03); }
.subscription-tag input {
    margin: 0;
    accent-color: var(--ft-claret);
}
.subscription-tag.checked {
    background: rgba(158,47,80,0.08);
    border-color: var(--ft-claret);
}

.subscription-actions {
    margin-top: var(--space-xl);
    display: flex;
    align-items: center;
    gap: var(--space-lg);
}

.subscription-save-btn {
    background: var(--ft-claret);
    color: var(--ft-white);
    border: none;
    padding: 12px 32px;
    font-family: var(--font-sans);
    font-size: 0.95rem;
    font-weight: 600;
    border-radius: 4px;
    cursor: pointer;
    transition: background 0.15s;
}
.subscription-save-btn:hover { background: #7a2440; }
.subscription-save-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.subscription-save-status {
    font-family: var(--font-sans);
    font-size: 0.85rem;
    color: var(--ft-grey-medium);
}
.subscription-save-status.saved { color: var(--ft-teal, #0d7680); }

.subscription-channel-card.disabled {
    opacity: 0.5;
}
.subscription-channel-card.disabled .subscription-filter-group { display: none; }

/* ═══════════════════════════════════════════════════
   ALERTS DASHBOARD
   ═══════════════════════════════════════════════════ */

/* Nav badge */
.alerts-badge {
    display: inline-block;
    background: var(--ft-claret);
    color: var(--ft-white);
    font-family: var(--font-sans);
    font-size: 0.6rem;
    font-weight: 700;
    min-width: 16px;
    height: 16px;
    line-height: 16px;
    text-align: center;
    border-radius: 8px;
    margin-left: 5px;
    vertical-align: middle;
}

/* Alerts tabs */
.alerts-tabs {
    display: flex;
    gap: 0;
    border-bottom: 2px solid var(--ft-grey-light, #e0ded8);
    margin-bottom: var(--space-xl, 2rem);
}
.alerts-tab {
    font-family: var(--font-sans);
    font-size: 0.85rem;
    font-weight: 600;
    padding: 0.75rem 1.25rem;
    background: none;
    border: none;
    color: var(--ft-grey-dark, #666);
    cursor: pointer;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    transition: color 0.15s, border-color 0.15s;
}
.alerts-tab:hover { color: var(--ft-claret); }
.alerts-tab.active {
    color: var(--ft-claret);
    border-bottom-color: var(--ft-claret);
}

/* Auth banner */
.alerts-auth-banner {
    background: var(--ft-wheat, #f5f0e8);
    border-left: 3px solid var(--ft-mandarin, #e8a040);
    padding: 1rem 1.25rem;
    font-family: var(--font-sans);
    font-size: 0.85rem;
    color: var(--ft-grey-dark, #666);
    margin-bottom: var(--space-lg, 1.5rem);
}

/* Watchlist section cards */
.watchlist-section {
    border: 1px solid var(--ft-grey-light, #e0ded8);
    margin-bottom: 1rem;
    background: var(--ft-white, #fff);
}
.watchlist-section-header {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.75rem 1rem;
    background: var(--ft-paper, #f5f0e8);
    border-bottom: 1px solid var(--ft-grey-light, #e0ded8);
}
.watchlist-section-icon { color: var(--ft-claret); font-size: 0.6rem; }
.watchlist-section-title {
    font-family: var(--font-serif);
    font-size: 1rem;
    font-weight: 700;
    color: var(--ft-black, #1a1a1a);
}
.watchlist-section-desc {
    font-family: var(--font-sans);
    font-size: 0.75rem;
    color: var(--ft-grey-medium, #999);
    margin-left: auto;
}
.watchlist-section-count {
    font-family: var(--font-sans);
    font-size: 0.7rem;
    font-weight: 600;
    color: var(--ft-claret);
    margin-left: auto;
}
.watchlist-section-body { padding: 0.75rem 1rem; }
.watchlist-sub-label {
    font-family: var(--font-sans);
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--ft-grey-medium, #999);
    margin: 0.75rem 0 0.35rem;
    padding-top: 0.5rem;
    border-top: 1px solid var(--ft-grey-light, #e0ded8);
}
.watchlist-sub-label:first-child { border-top: none; margin-top: 0; padding-top: 0; }
.watchlist-filter-row {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 0.5rem;
    flex-wrap: wrap;
}
.watchlist-filter-label {
    font-family: var(--font-sans);
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--ft-grey-dark, #666);
    min-width: 100px;
}
.watchlist-filter-tags { display: flex; flex-wrap: wrap; gap: 0.35rem; }
.watchlist-toggle-row {
    margin-top: 0.75rem;
    padding-top: 0.5rem;
    border-top: 1px solid var(--ft-grey-light, #e0ded8);
    font-family: var(--font-sans);
    font-size: 0.8rem;
    color: var(--ft-grey-dark, #666);
}
.watchlist-toggle-row input { accent-color: var(--ft-claret); margin-right: 0.35rem; }
.watchlist-add-row { display: flex; gap: 0.5rem; margin-top: 0.75rem; }
.watchlist-empty-hint {
    font-family: var(--font-sans);
    font-size: 0.8rem;
    color: var(--ft-grey-medium, #999);
    padding: 0.5rem 0;
}
.watchlist-empty-hint a { color: var(--ft-claret); }
.alerts-cadence-select {
    font-family: var(--font-sans);
    font-size: 0.8rem;
    padding: 4px 8px;
    border: 1px solid var(--ft-grey-light, #e0ded8);
    background: var(--ft-white, #fff);
    color: var(--ft-black, #1a1a1a);
    cursor: pointer;
}

/* Entity watch button on ecosystem cards */
.entity-watch-btn {
    font-size: 1rem;
    background: none;
    border: none;
    color: var(--ft-grey-medium, #999);
    cursor: pointer;
    padding: 0 4px;
    transition: color 0.15s;
    line-height: 1;
}
.entity-watch-btn:hover { color: var(--ft-claret); }
.entity-watch-btn.watched { color: var(--ft-claret); }

/* Delivery channels */
.delivery-section { margin-bottom: 2rem; }
.delivery-section-title {
    font-family: var(--font-serif);
    font-size: 1.2rem;
    font-weight: 700;
    color: var(--ft-black, #1a1a1a);
    margin-bottom: 0.25rem;
}
.delivery-section-desc {
    font-family: var(--font-sans);
    font-size: 0.85rem;
    color: var(--ft-grey-medium, #999);
    margin-bottom: 1rem;
}

/* SMS stub */
.sms-coming-soon {
    display: inline-block;
    font-family: var(--font-sans);
    font-size: 0.6rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    background: var(--ft-mandarin, #e8a040);
    color: var(--ft-white, #fff);
    padding: 2px 8px;
    border-radius: 3px;
    vertical-align: middle;
    margin-left: 0.5rem;
}
.sms-config {
    background: var(--ft-paper, #f5f0e8);
    border: 1px solid var(--ft-grey-light, #e0ded8);
    padding: 1.25rem;
    opacity: 0.7;
}
.sms-phone-row {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1rem;
}
.sms-label {
    font-family: var(--font-sans);
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--ft-grey-dark, #666);
    min-width: 110px;
}
.sms-input-group { display: flex; gap: 0.5rem; }
.sms-country-code {
    font-family: var(--font-sans);
    font-size: 0.8rem;
    padding: 6px 8px;
    border: 1px solid var(--ft-grey-light, #e0ded8);
    background: var(--ft-white, #fff);
    width: 90px;
}
.sms-phone-input {
    font-family: var(--font-sans);
    font-size: 0.85rem;
    padding: 6px 10px;
    border: 1px solid var(--ft-grey-light, #e0ded8);
    background: var(--ft-white, #fff);
    width: 180px;
}
.sms-toggle-row {
    font-family: var(--font-sans);
    font-size: 0.8rem;
    color: var(--ft-grey-dark, #666);
}
.sms-toggle-label { display: block; margin-bottom: 0.35rem; }
.sms-toggle-label input { accent-color: var(--ft-claret); margin-right: 0.35rem; }
.sms-note {
    font-size: 0.7rem;
    color: var(--ft-grey-medium, #999);
    font-style: italic;
    display: block;
    margin-top: 0.25rem;
}

/* Watchlist groups (legacy) */
.watchlist-group-label {
    font-family: var(--font-sans);
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--ft-grey-medium, #999);
    margin: 1.5rem 0 0.5rem;
}
.watchlist-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.75rem 1rem;
    background: var(--ft-white, #fff);
    border: 1px solid var(--ft-grey-light, #e0ded8);
    border-left: 3px solid var(--ft-claret);
    margin-bottom: 0.4rem;
    transition: border-color 0.15s;
}
.watchlist-item:hover { border-left-color: var(--ft-oxford, #1a2a3a); }
.watchlist-item-info { flex: 1; min-width: 0; }
.watchlist-item-title {
    font-family: var(--font-serif);
    font-size: 0.95rem;
    font-weight: 600;
    display: block;
}
.watchlist-item-title a { color: var(--ft-black, #1a1a1a); text-decoration: none; }
.watchlist-item-title a:hover { color: var(--ft-claret); }
.watchlist-item-meta {
    font-family: var(--font-sans);
    font-size: 0.7rem;
    color: var(--ft-grey-medium, #999);
    display: block;
    margin-top: 2px;
}
.watchlist-unwatch-btn {
    font-family: var(--font-sans);
    font-size: 0.7rem;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    background: none;
    border: 1px solid var(--ft-grey-light, #e0ded8);
    color: var(--ft-grey-dark, #666);
    padding: 4px 12px;
    cursor: pointer;
    transition: color 0.15s, border-color 0.15s;
    white-space: nowrap;
    margin-left: 1rem;
}
.watchlist-unwatch-btn:hover {
    color: var(--ft-claret);
    border-color: var(--ft-claret);
}
.watchlist-empty {
    text-align: center;
    padding: 3rem 1rem;
    color: var(--ft-grey-medium, #999);
    font-family: var(--font-sans);
    font-size: 0.9rem;
    line-height: 1.6;
}
.watchlist-empty a { color: var(--ft-claret); text-decoration: underline; }

/* Custom watch item input */
.watchlist-add-custom {
    display: flex;
    gap: 0.5rem;
    margin-top: 1.5rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--ft-grey-light, #e0ded8);
}
.custom-watch-input {
    flex: 1;
    font-family: var(--font-sans);
    font-size: 0.85rem;
    padding: 8px 12px;
    border: 1px solid var(--ft-grey-light, #e0ded8);
    background: var(--ft-white, #fff);
    color: var(--ft-black, #1a1a1a);
    outline: none;
    transition: border-color 0.15s;
}
.custom-watch-input:focus { border-color: var(--ft-claret); }
.custom-watch-add-btn {
    font-family: var(--font-sans);
    font-size: 0.8rem;
    font-weight: 600;
    background: var(--ft-claret);
    color: var(--ft-white, #fff);
    border: none;
    padding: 8px 20px;
    cursor: pointer;
    transition: background 0.15s;
}
.custom-watch-add-btn:hover { background: #7a2440; }

/* Report watch button */
.report-watch-btn {
    font-family: var(--font-sans);
    font-size: 0.6875rem;
    font-weight: 500;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    background: none;
    border: 1px solid var(--ft-grey-light, #e0ded8);
    color: var(--ft-grey-dark, #666);
    padding: 3px 12px;
    cursor: pointer;
    transition: color 0.2s, border-color 0.2s;
    margin-left: auto;
    white-space: nowrap;
}
.report-watch-btn:hover {
    color: var(--ft-claret);
    border-color: var(--ft-claret);
}
.report-watch-btn.watched {
    color: var(--ft-teal, #0d7680);
    border-color: var(--ft-teal, #0d7680);
}

/* Assessment watch item bell icons */
.watch-item-row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem;
}
.watch-item-text { flex: 1; }
.watch-item-bell {
    background: none;
    border: none;
    color: var(--ft-grey-medium, #999);
    cursor: pointer;
    padding: 2px;
    transition: color 0.15s;
    flex-shrink: 0;
}
.watch-item-bell:hover { color: var(--ft-claret); }
.watch-item-bell.active { color: var(--ft-claret); }

/* Alert filters */
.filter-group {
    margin-bottom: 2rem;
}
.filter-group-label {
    font-family: var(--font-serif);
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--ft-black, #1a1a1a);
    margin-bottom: 0.25rem;
}
.filter-group-desc {
    font-family: var(--font-sans);
    font-size: 0.8rem;
    color: var(--ft-grey-medium, #999);
    margin-bottom: 0.75rem;
}
.score-threshold-btns {
    display: flex;
    gap: 0;
}
.score-threshold-btn {
    font-family: var(--font-sans);
    font-size: 0.8rem;
    font-weight: 600;
    padding: 8px 20px;
    border: 1px solid var(--ft-grey-light, #e0ded8);
    background: var(--ft-white, #fff);
    color: var(--ft-grey-dark, #666);
    cursor: pointer;
    transition: all 0.15s;
}
.score-threshold-btn:first-child { border-radius: 3px 0 0 3px; }
.score-threshold-btn:last-child { border-radius: 0 3px 3px 0; }
.score-threshold-btn + .score-threshold-btn { border-left: none; }
.score-threshold-btn.active {
    background: var(--ft-claret);
    color: var(--ft-white, #fff);
    border-color: var(--ft-claret);
}
.signal-type-toggles {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}
.signal-type-toggle {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--ft-grey-light, #e0ded8);
    cursor: pointer;
    transition: border-color 0.15s;
}
.signal-type-toggle:hover { border-color: var(--ft-claret); }
.signal-type-toggle.checked { border-color: var(--ft-claret); background: rgba(158,47,80,0.04); }
.signal-type-toggle input { margin-top: 2px; accent-color: var(--ft-claret); }
.signal-type-name {
    font-family: var(--font-sans);
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--ft-black, #1a1a1a);
    display: block;
}
.signal-type-desc {
    font-family: var(--font-sans);
    font-size: 0.75rem;
    color: var(--ft-grey-medium, #999);
    display: block;
}

/* Matching signals feed */
.alerts-signal-feed {
    margin-top: 2rem;
    padding-top: 1.5rem;
    border-top: 2px solid var(--ft-grey-light, #e0ded8);
}
.alerts-feed-header {
    font-family: var(--font-sans);
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--ft-grey-medium, #999);
    margin-bottom: 0.75rem;
}
.alerts-feed-item {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 0.6rem 0;
    border-bottom: 1px solid var(--ft-grey-light, #e0ded8);
}
.alerts-feed-item:last-child { border-bottom: none; }
.alerts-feed-score {
    font-family: var(--font-sans);
    font-size: 0.7rem;
    font-weight: 700;
    min-width: 28px;
    height: 20px;
    line-height: 20px;
    text-align: center;
    border-radius: 3px;
    flex-shrink: 0;
}
.alerts-feed-info { flex: 1; min-width: 0; }
.alerts-feed-title {
    font-family: var(--font-serif);
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--ft-black, #1a1a1a);
    display: block;
    line-height: 1.3;
}
.alerts-feed-meta {
    font-family: var(--font-sans);
    font-size: 0.7rem;
    color: var(--ft-grey-medium, #999);
    display: block;
    margin-top: 2px;
}

/* ═══════════════════════════════════════════════════
   THE PULSE — Signal Stream
   ═══════════════════════════════════════════════════ */

/* ── Pulse 2.0 — Terminal-style signal feed ── */
.pulse-header {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: var(--space-lg);
}
.pulse-updated {
    font-family: var(--font-sans);
    font-size: 0.6875rem;
    color: var(--ft-grey-medium, #999);
    letter-spacing: 0.04em;
    text-transform: uppercase;
}
.pulse-table-header {
    display: grid;
    grid-template-columns: 90px 130px 1fr 130px;
    gap: var(--space-lg);
    padding: 8px 0;
    border-bottom: 1.5px solid var(--ft-black, #33302e);
    font-family: var(--font-sans);
    font-size: 0.6875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--ft-grey-medium, #9a9a9a);
}
.pulse-feed {
    display: flex;
    flex-direction: column;
}
.pulse-row {
    display: grid;
    grid-template-columns: 90px 130px 1fr 130px;
    gap: var(--space-lg);
    align-items: baseline;
    padding: 14px 0;
    border-bottom: 1px solid rgba(0,0,0,0.07);
}
.pulse-row:hover {
    background-color: rgba(0,0,0,0.015);
}
.pulse-row--retained {
    /* no visual indicator — retained signals stay in feed but look identical */
}
.pulse-date-separator {
    font-family: var(--font-sans);
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--ft-grey-medium, #9a9a9a);
    padding: 16px 0 6px;
    border-bottom: 1px solid rgba(0,0,0,0.1);
    margin-top: 4px;
}
.pulse-date-separator:first-child {
    padding-top: 0;
    margin-top: 0;
}
.pulse-col-time {
    font-family: var(--font-sans);
    font-size: 0.75rem;
    color: var(--ft-grey-medium, #9a9a9a);
    white-space: nowrap;
    padding-top: 2px;
}
.pulse-col-entities {
    display: flex;
    flex-direction: column;
    gap: 2px;
    align-items: flex-start;
    min-width: 0;
    overflow: hidden;
    padding-top: 1px;
}
.pulse-entity-name {
    font-family: var(--font-sans);
    font-size: 0.75rem;
    color: var(--ft-grey-medium, #9a9a9a);
    text-decoration: none;
    line-height: 1.4;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 100%;
}
a.pulse-entity-name {
    color: var(--ft-oxford, #0d3562);
    text-decoration: none;
    border-bottom: none;
    cursor: pointer;
    transition: color 0.15s ease;
}
a.pulse-entity-name:hover {
    color: var(--ft-claret, #9e2f50);
}
.pulse-col-headline {
    min-width: 0;
}
.pulse-row .pulse-col-headline {
    font-family: var(--font-serif, Georgia, serif);
    font-size: 0.9375rem;
    line-height: 1.45;
    letter-spacing: -0.01em;
}
.pulse-headline-link {
    color: var(--color-text, #33302e);
    text-decoration: none;
    border-bottom: none;
    transition: color 0.15s ease;
}
.pulse-headline-link:hover {
    color: var(--ft-claret, #9e2f50);
}
.pulse-headline-text {
    color: var(--color-text, #33302e);
}
.pulse-col-source {
    text-align: right;
    padding-top: 2px;
}
.pulse-provider {
    font-family: var(--font-sans);
    font-size: 0.75rem;
    color: var(--ft-grey-medium, #999);
}

/* Responsive */
@media (max-width: 640px) {
    .report-grid { grid-template-columns: 1fr; }
    .subscription-channel-header { flex-direction: column; align-items: flex-start; }
    .pulse-table-header { display: none; }
    .pulse-row {
        grid-template-columns: 1fr;
        grid-template-rows: auto auto;
        gap: 4px;
        padding: var(--space-md) 0;
    }
    .pulse-col-time { order: 1; font-size: 0.75rem; }
    .pulse-col-entities { order: 0; }
    .pulse-col-headline { order: 2; font-size: 0.875rem; }
    .pulse-col-source { order: 3; text-align: left; font-size: 0.75rem; }
}
