/* GENERATED by dev/split-css.mjs from styles.css. Do not edit: change styles.css and run `npm run css`.
   The house page's stylesheet: styles.css with its comments removed and nothing else changed. */
@font-face {
    font-family: 'EMH Mono';
    src: url('https://cdn.evanhollander.org/fonts/EMHMono.woff2') format('woff2-variations'),
         url('https://cdn.evanhollander.org/fonts/EMHMono.woff2') format('woff2');
    font-weight: 300 700;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'EMH Grotesk';
    src: url('https://cdn.evanhollander.org/fonts/EMHGrotesk.woff2') format('woff2-variations'),
         url('https://cdn.evanhollander.org/fonts/EMHGrotesk.woff2') format('woff2');
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
}

@layer app {

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

:root {

    --bg-dark:     #0d1117;
    --bg-card:     #0f1720;
    --bg-elevated: #0b1220;
    --bg-header:   rgba(13, 17, 23, 0.92);
    --border-color: #233044;

    --text-primary:   #e6edf3;
    --text-secondary: #8b949e;
    --text-muted:     #9aa6b2;

    --accent-green:      #3fb950;
    --accent-red:        #ff4d4f;
    --accent-blue:       #58a6ff;
    --accent-blue-hover: #79b8ff;
    --accent-amber:      #d29922;
    --accent-yellow:     #e3b341;
    --accent-orange:     #d18135;
    --accent-purple:     #a371f7;

    --party-d:           #58a6ff;
    --party-r:           #ff4d4f;
    --party-i:           #a371f7;
    --party-d-tint:      rgba(88, 166, 255, 0.1);
    --party-r-tint:      rgba(255, 77, 79, 0.1);
    --party-i-tint:      rgba(163, 113, 247, 0.1);

    --dur-100: 0.1s;
    --dur-120: 0.12s;
    --dur-150: 0.15s;
    --dur-200: 0.2s;
    --dur-300: 0.3s;
    --dur-350: 0.35s;
    --dur-400: 0.4s;
    --ease-emphasis: cubic-bezier(0.15, 0.83, 0.66, 1);

    --track-wide:  0.5px;
    --track-wider: 1px;

    --font-sans: 'EMH Grotesk', system-ui, sans-serif;
    --font-mono: 'EMH Mono', ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
    --section-gap: 1.5rem;

    --fs-2xs:  0.5rem;
    --fs-xs:   0.5625rem;
    --fs-sm:   0.625rem;
    --fs-md:   0.6875rem;
    --fs-base: 0.75rem;
    --fs-lg:   0.8125rem;
    --fs-xl:   0.875rem;
    --fs-2xl:  0.9375rem;
    --fs-3xl:  1rem;
    --fs-4xl:  1.125rem;
    --fs-5xl:  1.25rem;
    --fs-6xl:  1.5rem;
    --fs-7xl:  1.75rem;
    --fs-8xl:  3rem;
    --fs-9xl:  4rem;

    --sp-2:  0.125rem;
    --sp-4:  0.25rem;
    --sp-6:  0.375rem;
    --sp-8:  0.5rem;
    --sp-10: 0.625rem;
    --sp-12: 0.75rem;
    --sp-14: 0.875rem;
    --sp-16: 1rem;
    --sp-18: 1.125rem;
    --sp-20: 1.25rem;
    --sp-24: 1.5rem;
    --sp-28: 1.75rem;
    --sp-32: 2rem;
    --sp-40: 2.5rem;

    --radius-2:    0.125rem;
    --radius-3:    0.1875rem;
    --radius-4:    0.25rem;
    --radius-6:    0.375rem;
    --radius-7:    0.4375rem;
    --radius-8:    0.5rem;
    --radius-10:   0.625rem;
    --radius-12:   0.75rem;
    --radius-14:   0.875rem;
    --radius-20:   1.25rem;
    --radius-full: 9999px;
}

.wrapup-result {
    font-family: var(--font-mono);
    font-size: var(--fs-md);
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    letter-spacing: var(--track-wide);
    text-transform: uppercase;
    padding: 1px var(--sp-6);
    border-radius: var(--radius-4);
    margin-right: var(--sp-6);
    white-space: nowrap;
}
.wrapup-result.carried { color: var(--accent-green); background: color-mix(in srgb, var(--accent-green) 12%, transparent); }
.wrapup-result.failed  { color: var(--accent-red);   background: color-mix(in srgb, var(--accent-red)   12%, transparent); }

.list-scroll {
    max-height: 260px;
    overflow-y: auto;
    -webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 32px), transparent 100%);
    mask-image: linear-gradient(to bottom, #000 calc(100% - 32px), transparent 100%);
}

.list-scroll.is-at-end {
    -webkit-mask-image: none;
    mask-image: none;
}

.scroll-fade {
    -webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 32px), transparent 100%);
    mask-image: linear-gradient(to bottom, #000 calc(100% - 32px), transparent 100%);
}
.scroll-fade.is-at-end {
    -webkit-mask-image: none;
    mask-image: none;
}
.nom-count {
    font-family: var(--font-mono);
    font-size: var(--fs-xs);
    font-variant-numeric: tabular-nums;
    color: var(--text-muted);
    margin-left: var(--sp-6);
}

.bill-calendar-no {
    font-family: var(--font-mono);
    font-size: var(--fs-xs);
    font-variant-numeric: tabular-nums;
    letter-spacing: var(--track-wide);
    text-transform: uppercase;
    color: var(--text-muted);
}

:root { color-scheme: dark; }
html { background-color: var(--bg-dark); }

html { font-size: 100%; }

body {
    background-color: var(--bg-dark);
    color: var(--text-primary);
    font-family: var(--font-sans);
    font-size: var(--fs-3xl);
    line-height: 1.5;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    padding-bottom: 0;
}

.container {
    max-width: 1400px;
    margin: 0 auto;
    padding: calc(100px + var(--section-gap)) 0 var(--sp-24);
    width: 100%;
    flex: 1;
    display: flex;
    flex-direction: column;
}

.container > .congress-info,
.container > .main-display,
.container > .voting-calendar-panel,
.container > .footer {
    margin-bottom: var(--section-gap);
}
.container > .footer:last-of-type,
.container > footer {
    margin-bottom: 0;
}

.main-display {
    padding: 0 200px;
}

.footer {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-12);
    overflow: hidden;
}

.footer-section {
    width: 100%;
}

.footer-title {
    font-size: var(--fs-base);
    font-weight: 600;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    display: flex;
    align-items: center;
    height: 52px;
    box-sizing: border-box;
    padding: 0 var(--sp-32);
    background: var(--bg-elevated);
    border-bottom: 1px solid var(--border-color);
}

.footer-sources {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--sp-16);
    width: 100%;
    padding: var(--sp-16) var(--sp-24);
    box-sizing: border-box;
}

.source-group {
    display: flex;
    flex-direction: column;
    gap: var(--sp-4);
}

.source-category {
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    margin-bottom: var(--sp-6);
}

.source-group a {
    font-size: var(--fs-sm);
    color: var(--accent-blue);
    text-decoration: none;
    transition: color var(--dur-200) ease;
}

.source-group a:hover {
    color: var(--accent-blue-hover);
    text-decoration: underline;
}

.pledge-leader-website,
.speaker-member-website,
.journal-chair-website {
    font-size: var(--fs-base);
    color: var(--accent-blue);
    font-family: var(--font-mono);
    text-decoration: none;
}
.pledge-leader-website:hover,
.speaker-member-website:hover,
.journal-chair-website:hover {
    text-decoration: underline;
}

.footer-updated {
    font-size: var(--fs-sm);
    color: var(--text-muted);
    font-family: var(--font-mono);
}

.site-footer {
    border-top: 1px solid var(--border-color);
    padding: var(--sp-12) 0 var(--sp-10);
    text-align: center;
}

.site-footer-primary {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--sp-10);
    flex-wrap: wrap;
    margin-bottom: var(--sp-4);
}

.site-footer-brand {
    font-size: var(--fs-md);
    font-weight: 600;
    color: var(--text-secondary);
    font-family: var(--font-mono);
    letter-spacing: 0.3px;
}

.site-footer-sep {
    font-size: var(--fs-sm);
    color: var(--text-muted);
}

.site-footer-copy {
    font-size: var(--fs-md);
    color: var(--text-muted);
    font-family: var(--font-mono);
}

.site-footer-license {
    font-size: var(--fs-md);
    color: var(--text-muted);
    font-family: var(--font-mono);
    text-decoration: none;
}

.site-footer-license:hover {
    color: var(--accent-blue);
    text-decoration: underline;
}

.site-footer-secondary {
    font-size: var(--fs-sm);
    color: var(--text-muted);
    opacity: 0.7;
}

.vote-id {
    font-size: var(--fs-xl);
    color: var(--text-muted);
    font-family: var(--font-mono);
}

.floor-status {
    font-size: var(--fs-base);
    color: var(--text-secondary);
    font-family: var(--font-mono);
    margin-left: 0;
    display: block;
    position: relative;
    z-index: 1;
}

#vote, #proceedings, #bills, #live {
    scroll-margin-top: calc(100px + var(--section-gap));
}

.main-header {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    height: 100px;
    background: var(--bg-header);
    border-bottom: 1px solid var(--border-color);
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0 var(--sp-24);
    z-index: 1000;
    backdrop-filter: blur(30px);
}

.header-left {
    display: flex;
    align-items: center;
    gap: var(--sp-24);
}

.header-right {
    display: flex;
    align-items: center;
    gap: var(--sp-24);
}

.date-info {
    display: flex;
    flex-direction: column;
    gap: var(--sp-4);
}

.today-date {
    font-size: var(--fs-xl);
    font-weight: 600;
    color: var(--text-primary);
    font-family: var(--font-mono);
}

.session-status {
    display: flex;
    align-items: center;
    gap: var(--sp-6);
}

.session-indicator {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--text-muted);
    animation: pulse 2s infinite;
}

.session-indicator.in-session {
    background: var(--accent-green);
}

.session-indicator.fly-in {
    background: var(--accent-amber);
}

.session-indicator.pro-forma {
    background: var(--accent-blue);
}

.session-indicator.added-votes {
    background: var(--accent-purple);
}

.session-text {
    font-size: var(--fs-md);
    font-weight: 500;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
}

.next-votes {
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--accent-blue);
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    margin-top: var(--sp-4);
}

.brand {
    display: flex;
    align-items: center;
    gap: var(--sp-12);
}

.live-indicator {
    width: 10px;
    height: 10px;
    flex-shrink: 0;
    background: var(--accent-green);
    border-radius: 50%;
    animation: live-pulse 2s ease-in-out infinite;
    box-shadow: 0 0 10px rgba(63, 185, 80, 0.5);
}

@keyframes live-pulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.6; transform: scale(0.9); }
}

.header-logo-clip {
    position: absolute;
    left: 50%;
    top: 0;
    transform: translateX(-50%);
    height: 100px;
    overflow: hidden;
    display: flex;
    align-items: center;
    pointer-events: auto;
    cursor: pointer;
}

.header-logo {
    height: 160px;
    width: 160px;
    display: block;
    flex-shrink: 0;
    mix-blend-mode: screen;
}

.brand-text {
    font-family: var(--font-mono);
    font-size: var(--fs-xl);
    font-weight: 600;
    letter-spacing: var(--track-wide);
    color: var(--text-primary);
    line-height: 1.3;
}

.clock-group {
    display: flex;
    align-items: center;
    gap: var(--sp-12);
}

.clock {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 3px;
    min-width: 56px;
}

.clock-label {
    font-size: var(--fs-2xs);
    font-weight: 700;
    letter-spacing: var(--track-wider);
    color: var(--text-muted);
    text-transform: uppercase;
}

.analog-clock {
    display: block;
    width: 56px;
    height: 56px;
    overflow: visible;
}

.clock-face {
    fill: #0c1018;
    stroke: rgba(88, 166, 255, 0.18);
    stroke-width: 1.5;
}

.clock-hand {
    stroke-linecap: round;
}

.hour-hand {
    stroke: rgba(240, 246, 252, 0.92);
    stroke-width: 3;
}

.minute-hand {
    stroke: rgba(240, 246, 252, 0.72);
    stroke-width: 2;
}

.second-hand {
    stroke: #ff6b5b;
    stroke-width: 1.2;
}

.clock-center-cap {
    fill: #0c1018;
}

.clock-center-pip {
    fill: #ff6b5b;
}

.clock-time {
    font-family: var(--font-mono);
    font-size: var(--fs-xs);
    color: var(--text-secondary);
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.2px;
    white-space: nowrap;
}

.connection-status.connected .status-dot {
    background: var(--accent-green);
}

.connection-status.error .status-dot {
    background: var(--accent-red);
}

.main-display {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: var(--section-gap);
}

.main-display > * {
    margin-bottom: 0;
}

.vote-column {
    display: flex;
    flex-direction: column;
    gap: var(--section-gap);
    background-image: linear-gradient(var(--border-color), var(--border-color));
    background-size: 1px 100%;
    background-position: center top;
    background-repeat: no-repeat;
}
.vote-column > * {
    margin-bottom: 0;
}

.mode-column {
    display: flex;
    flex-direction: column;
    gap: var(--section-gap);
    background-image: linear-gradient(var(--border-color), var(--border-color));
    background-size: 1px 100%;
    background-position: center top;
    background-repeat: no-repeat;
}
.mode-column > * {
    margin-bottom: 0;
}

.oath-column, .pledge-column, .cert-election-column, .cert-electoral-column,
.sine-die-column, .new-session-column, .journal-column, .tellers-column {
    display: none;
}
body.oath-mode .oath-column { display: flex; }
body.pledge-mode .pledge-column { display: flex; }
body.cert-election-mode .cert-election-column { display: flex; }
body.cert-electoral-mode .cert-electoral-column { display: flex; }
body.sine-die-mode .sine-die-column { display: flex; }
body.new-session-mode .new-session-column { display: flex; }
body.journal-mode .journal-column { display: flex; }
body.tellers-mode .tellers-column { display: flex; }

.quote-card {
    background: var(--bg-elevated);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-12);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
.quote-card > * {
    border-radius: 0;
    margin: 0;
    background: transparent;
}

.one-minute-section, .special-order-section, .morning-hour-section,
.prayer-section, .silence-section, .oath-section, .speaker-section,
.committee-chair-section, .pledge-section, .message-section,
.joint-meeting-section, .journal-section, .joint-session-section,
.cert-election-section, .cert-electoral-section, .sine-die-section,
.new-session-section, .admin-oath-section, .privilege-section,
.tellers-section {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-12);
    overflow: hidden;
    padding: 0;
}

.one-minute-section-header, .special-order-section-header, .morning-hour-section-header,
.prayer-section-header, .silence-section-header, .oath-section-header,
.speaker-section-header, .committee-chair-section-header, .pledge-section-header,
.message-section-header, .joint-meeting-section-header, .journal-section-header,
.joint-session-section-header, .cert-election-section-header, .cert-electoral-section-header,
.sine-die-section-header, .new-session-section-header, .admin-oath-section-header,
.privilege-section-header, .tellers-section-header {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: var(--sp-12);
    padding: var(--sp-12) var(--sp-24);
    background: var(--bg-elevated);
    border-bottom: 1px solid var(--border-color);
    margin: 0;
}

.one-minute-section-header::before, .special-order-section-header::before, .morning-hour-section-header::before,
.prayer-section-header::before, .silence-section-header::before, .oath-section-header::before,
.speaker-section-header::before, .committee-chair-section-header::before, .pledge-section-header::before,
.message-section-header::before, .joint-meeting-section-header::before, .journal-section-header::before,
.joint-session-section-header::before, .cert-election-section-header::before, .cert-electoral-section-header::before,
.sine-die-section-header::before, .new-session-section-header::before, .admin-oath-section-header::before,
.privilege-section-header::before, .tellers-section-header::before {
    content: "HAPPENING NOW";
    flex-shrink: 0;
    font-size: var(--fs-base);
    font-weight: 600;
    letter-spacing: var(--track-wider);
    color: var(--text-muted);
    text-transform: uppercase;
}

.one-minute-header-right, .special-order-header-right, .morning-hour-header-right,
.prayer-header-right, .silence-header-right, .oath-header-right, .speaker-header-right,
.committee-chair-header-right, .pledge-header-right, .message-header-right,
.joint-meeting-header-right, .journal-header-right, .joint-session-header-right,
.cert-election-header-right, .cert-electoral-header-right, .sine-die-header-right,
.new-session-header-right, .admin-oath-header-right, .privilege-header-right,
.tellers-header-right {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: var(--sp-12);
}

.one-minute-source, .special-order-source, .morning-hour-source, .prayer-source,
.silence-source, .oath-source, .speaker-source, .committee-chair-source,
.pledge-source, .message-source, .joint-meeting-source, .journal-source,
.joint-session-source, .cert-election-source, .cert-electoral-source,
.sine-die-source, .new-session-source, .admin-oath-source, .privilege-source,
.tellers-source {
    font-size: var(--fs-2xs);
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    opacity: 0.8;
}

.one-minute-source a, .special-order-source a, .morning-hour-source a, .prayer-source a,
.silence-source a, .oath-source a, .speaker-source a, .committee-chair-source a,
.pledge-source a, .message-source a, .joint-meeting-source a, .journal-source a,
.joint-session-source a, .cert-election-source a, .cert-electoral-source a,
.sine-die-source a, .new-session-source a, .admin-oath-source a, .privilege-source a,
.tellers-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.one-minute-source a:hover, .special-order-source a:hover, .morning-hour-source a:hover, .prayer-source a:hover,
.silence-source a:hover, .oath-source a:hover, .speaker-source a:hover, .committee-chair-source a:hover,
.pledge-source a:hover, .message-source a:hover, .joint-meeting-source a:hover, .journal-source a:hover,
.joint-session-source a:hover, .cert-election-source a:hover, .cert-electoral-source a:hover,
.sine-die-source a:hover, .new-session-source a:hover, .admin-oath-source a:hover, .privilege-source a:hover,
.tellers-source a:hover {
    text-decoration: underline;
}

.one-minute-content, .special-order-content, .morning-hour-content,
.prayer-content, .silence-content, .oath-content, .speaker-content,
.committee-chair-content, .pledge-content, .message-content,
.joint-meeting-content, .journal-content, .joint-session-content,
.cert-election-content, .cert-electoral-content, .sine-die-content,
.new-session-content, .admin-oath-content, .tellers-content, .privilege-content {
    padding: var(--sp-16) var(--sp-24);
    background: transparent;
    border: none;
    border-radius: 0;
}

.vote-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: var(--sp-16);
}

.vote-title {
    font-size: var(--fs-7xl);
    font-weight: 700;
    color: var(--text-primary);
    line-height: 1.3;
    flex: 1;
}

.vote-id {
    font-family: var(--font-mono);
    font-size: var(--fs-xs);
    font-weight: 700;
    letter-spacing: 0.05em;
    color: var(--accent-blue);
    padding: 3px var(--sp-8);
    background: rgba(88, 166, 255, 0.12);
    border-radius: var(--radius-4);
    white-space: nowrap;
    text-transform: uppercase;
}

.vote-bill-btn {
    font-family: var(--font-mono);
    font-size: var(--fs-xs);
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--text-secondary);
    background: transparent;
    border: 1px solid var(--border-color);
    border-radius: var(--radius-4);
    padding: var(--sp-6) var(--sp-12);
    cursor: pointer;
    transition: background var(--dur-150), border-color var(--dur-150), color var(--dur-150);
    white-space: nowrap;
}
.vote-bill-btn:hover {
    background: rgba(139, 148, 158, 0.1);
    border-color: rgba(139, 148, 158, 0.4);
    color: var(--text-primary);
}

.vote-display {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: var(--sp-32);
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-12);
    overflow: hidden;
}

.vote-display > .panel-header {
    align-self: stretch;
    margin: calc(-1 * var(--sp-32));
    margin-bottom: calc(-1 * var(--sp-16));
    border-radius: 0;
    flex-shrink: 0;
    justify-content: flex-start;
    gap: var(--sp-12);
}

.vote-display > .panel-header .panel-header-right {
    margin-left: auto;
}

.vote-display > .vote-header {
    align-self: stretch;
}

.vote-display > .progress-section {
    align-self: stretch;
}

.vote-count-section {
    text-align: center;
}

.count-label {
    font-size: var(--fs-base);
    font-weight: 600;
    letter-spacing: var(--track-wider);
    color: var(--text-muted);
    margin-bottom: var(--sp-8);
    text-transform: uppercase;
}

.count-number {
    font-size: var(--fs-9xl);
    font-weight: 700;
    color: var(--text-primary);
    line-height: 1;
    margin-bottom: var(--sp-8);
    font-feature-settings: 'tnum';
    display: flex;
    justify-content: center;
}

.flip-digit {
    display: inline-block;
    position: relative;
    overflow: hidden;
    height: 1em;
    vertical-align: top;
}

.flip-digit-char {
    display: block;
    line-height: 1;
}

.flip-digit-char.exiting {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    animation: flip-exit 0.18s ease-in forwards;
}

.flip-digit-char.entering {
    animation: flip-enter 0.18s ease-out forwards;
}

@keyframes flip-exit {
    from { transform: translateY(0);     opacity: 1; }
    to   { transform: translateY(110%);  opacity: 0; }
}

@keyframes flip-enter {
    from { transform: translateY(-110%); opacity: 0; }
    to   { transform: translateY(0);     opacity: 1; }
}

.count-percentage {
    font-family: var(--font-mono);
    font-size: var(--fs-4xl);
    font-weight: 600;
    color: var(--text-secondary);
}

.count-party-breakdown {
    display: flex;
    gap: 0;
    justify-content: center;
    align-items: center;
    margin-top: var(--sp-6);
    font-family: var(--font-mono);
    font-size: var(--fs-lg);
    font-weight: 700;
    letter-spacing: 0.02em;
}
.count-party-breakdown .cpb-d {
    color: var(--party-d);
    padding-right: 8px;
}
.count-party-breakdown .cpb-r {
    color: var(--party-r);
    padding-left: 8px;
    border-left: 1px solid rgba(139, 148, 158, 0.3);
}
.count-party-breakdown .cpb-i {
    color: var(--party-i);
    padding-left: 8px;
    border-left: 1px solid rgba(139, 148, 158, 0.3);
}
.count-party-breakdown .cpb-suffix {
    font-size: 0.72em;
    font-weight: 600;
    opacity: 0.6;
    margin-left: 1px;
}

.vote-threshold {
    margin-top: 4px;
    font-family: var(--font-mono);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    min-height: 14px;
}
.vote-threshold.threshold-pass { color: var(--accent-green); }
.vote-threshold.threshold-fail { color: var(--accent-red); }
.vote-threshold.threshold-need { color: var(--text-muted); }

.vote-type-tag {
    font-family: var(--font-mono);
    font-size: var(--fs-xs);
    font-weight: 700;
    letter-spacing: 0.05em;
    padding: 3px var(--sp-8);
    border-radius: var(--radius-4);
    white-space: nowrap;
    text-transform: uppercase;
}
.vote-type-tag:empty { display: none; }
.vtt-green  { background: rgba(63, 185, 80, 0.15);   color: var(--accent-green); }
.vtt-amber  { background: rgba(210, 153, 34, 0.15);  color: var(--accent-amber); }
.vtt-red    { background: rgba(248, 81, 73, 0.15);   color: var(--accent-red); }
.vtt-blue   { background: rgba(88, 166, 255, 0.12);  color: var(--accent-blue); }
.vtt-muted  { background: rgba(139, 148, 158, 0.1);  color: var(--text-muted); }

.progress-threshold-marker {
    position: absolute;
    top: -5px;
    bottom: -5px;
    width: 2px;
    background: rgba(255, 255, 255, 0.75);
    border-radius: 1px;
    pointer-events: none;
    box-shadow: 0 0 6px rgba(0, 0, 0, 0.4);
    z-index: 2;
}

.progress-section {
    padding: var(--sp-20) 0;
}

.progress-bar {
    height: 12px;
    background: var(--bg-elevated);
    border-radius: var(--radius-6);
    overflow: visible;
    display: flex;
    margin-bottom: var(--sp-12);
    position: relative;
}

.vote-display {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: var(--sp-40);
}

.vote-count-section {
    text-align: center;
}

.vote-count-section.yeas .count-label { color: var(--accent-green); }
.vote-count-section.nays .count-label { color: var(--accent-red); }

.vote-count-section.present {
    padding: var(--sp-4) var(--sp-12);
    background: rgba(210, 153, 34, 0.1);
    border: 1px solid rgba(210, 153, 34, 0.3);
    border-radius: var(--radius-20);
    min-width: 100px;
}

.vote-count-section.present .count-label {
    font-size: var(--fs-xs);
    color: var(--accent-amber);
    margin-bottom: var(--sp-2);
}

.vote-count-section.present .count-number {
    font-size: var(--fs-6xl);
    margin-bottom: 0;
}

.vote-count-section.present .count-percentage {
    font-size: var(--fs-md);
}

.progress-fill {
    height: 100%;
    transition: width 0.5s ease, transform var(--dur-200) ease, box-shadow var(--dur-200) ease;
}

.progress-fill.yeas {
    background: var(--accent-green);
    border-radius: var(--radius-6) 0 0 var(--radius-6);
    box-shadow: 0 0 10px rgba(63, 185, 80, 0.3);
}

.progress-fill.yeas:hover {
    filter: brightness(1.3);
    box-shadow: 0 0 15px rgba(63, 185, 80, 0.5);
}

.progress-fill.present {
    background: var(--accent-amber);
}

.progress-fill.present:hover {
    filter: brightness(1.3);
    box-shadow: 0 0 15px rgba(210, 153, 34, 0.5);
}

.progress-fill.right-cap {
    border-top-right-radius: var(--radius-6);
    border-bottom-right-radius: var(--radius-6);
}

.progress-fill.nays {
    background: var(--accent-red);
    border-radius: 0 var(--radius-6) var(--radius-6) 0;
    box-shadow: 0 0 10px rgba(248, 81, 73, 0.3);
}

.progress-fill.nays:hover {
    filter: brightness(1.3);
    box-shadow: 0 0 15px rgba(248, 81, 73, 0.5);
}

.progress-labels {
    display: flex;
    justify-content: space-between;
    font-size: var(--fs-base);
    color: var(--text-muted);
    font-weight: 500;
}

.result-status.pass {
    background: rgba(63, 185, 80, 0.15);
    color: var(--accent-green);
}

.result-status.fail {
    background: rgba(248, 81, 73, 0.15);
    color: var(--accent-red);
}

.result-status.pending {
    background: rgba(210, 153, 34, 0.15);
    color: var(--accent-amber);
}

.live-indicator.connecting {
    background: var(--accent-amber);
    animation: pulse 1.5s infinite;
}

.live-indicator.live {
    background: var(--accent-green);
    animation: pulse 2s infinite;
}

.brand-tooltip-anchor {
    position: relative;
}

.brand {
    cursor: default;
    user-select: none;
}

.conn-dashboard {
    position: absolute;
    top: calc(100% + 14px);
    left: 0;
    width: 300px;
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-10);
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6), 0 0 0 1px rgba(255,255,255,0.04);
    z-index: 2000;
    opacity: 0;
    pointer-events: none;
    transform: translateY(-6px);
    transition: opacity var(--dur-200) ease, transform var(--dur-200) ease;
    overflow: hidden;
}

.conn-dashboard.visible {
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0);
}

.conn-dashboard::before {
    content: '';
    position: absolute;
    top: -6px;
    left: 16px;
    width: 10px;
    height: 10px;
    background: var(--bg-card);
    border-top: 1px solid var(--border-color);
    border-left: 1px solid var(--border-color);
    transform: rotate(45deg);
}

.conn-dash-header {
    display: flex;
    align-items: center;
    gap: var(--sp-8);
    padding: var(--sp-12) var(--sp-14) var(--sp-10);
    background: var(--bg-elevated);
    border-bottom: 1px solid var(--border-color);
}

.conn-dash-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--text-muted);
    flex-shrink: 0;
    transition: background var(--dur-300);
}
.conn-dash-dot.state-live       { background: var(--accent-green); box-shadow: 0 0 6px rgba(63,185,80,0.6); animation: pulse 2s infinite; }
.conn-dash-dot.state-connecting { background: var(--accent-amber); animation: pulse 1.5s infinite; }
.conn-dash-dot.state-error      { background: var(--accent-red); }

.conn-dash-status {
    font-family: var(--font-mono);
    font-size: var(--fs-md);
    font-weight: 700;
    letter-spacing: 0.8px;
    text-transform: uppercase;
    color: var(--text-primary);
}

.conn-dash-section {
    padding: var(--sp-10) var(--sp-14) var(--sp-8);
    border-bottom: 1px solid var(--border-color);
}

.conn-dash-label {
    font-family: var(--font-mono);
    font-size: var(--fs-xs);
    font-weight: 700;
    letter-spacing: 1.2px;
    color: var(--text-muted);
    text-transform: uppercase;
    margin-bottom: var(--sp-6);
}

.conn-dash-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--sp-2) 0;
    font-size: var(--fs-base);
    color: var(--text-secondary);
    gap: var(--sp-8);
}
.conn-dash-row > span:first-child {
    flex-shrink: 0;
}
.conn-dash-row > span:last-child {
    font-family: var(--font-mono);
    font-size: var(--fs-md);
    color: var(--text-primary);
    text-align: right;
}

.conn-dash-badge {
    display: inline-block;
    padding: 1px var(--sp-6);
    border-radius: var(--radius-4);
    font-size: var(--fs-sm);
    font-weight: 700;
    letter-spacing: var(--track-wide);
    text-transform: uppercase;
}
.conn-dash-badge.green { background: rgba(63,185,80,0.15);  color: var(--accent-green); }
.conn-dash-badge.amber { background: rgba(210,153,34,0.15); color: var(--accent-amber); }
.conn-dash-badge.red   { background: rgba(248,81,73,0.15);  color: var(--accent-red); }
.conn-dash-badge.blue  { background: rgba(88,166,255,0.12); color: var(--accent-blue); }

.conn-dash-footer {
    padding: 9px var(--sp-14) 11px;
    font-size: var(--fs-md);
    color: var(--text-muted);
    line-height: 1.5;
    border-top: 1px solid var(--border-color);
    background: rgba(0,0,0,0.15);
}

.threshold-panel {
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-12);
  overflow: hidden;
}

.threshold-state {
  font-family: var(--font-mono);
  font-size: var(--fs-md);
  font-weight: 700;
  letter-spacing: var(--track-wide);
  padding: 5px var(--sp-10);
  border-radius: var(--radius-4);
  color: var(--accent-amber);
  background: rgba(210, 153, 34, 0.14);
}

.threshold-state.locked-pass {
  color: var(--accent-green);
  background: rgba(63, 185, 80, 0.14);
}

.threshold-state.locked-fail {
  color: var(--accent-red);
  background: rgba(248, 81, 73, 0.14);
}

.threshold-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  background: var(--border-color);
}

.threshold-item {
  min-width: 0;
  padding: var(--sp-18) var(--sp-20);
  background: var(--bg-card);
}

.threshold-metric-label {
  display: block;
  margin-bottom: var(--sp-6);
  color: var(--text-muted);
  font-size: var(--fs-md);
  font-weight: 600;
  letter-spacing: var(--track-wide);
  text-transform: uppercase;
}

.threshold-metric-value {
  display: block;
  color: var(--text-primary);
  font-family: var(--font-mono);
  font-size: var(--fs-7xl);
  font-weight: 700;
  line-height: 1;
}
.threshold-metric-value.democrat { color: var(--party-d); }
.threshold-metric-value.republican { color: var(--party-r); }
.threshold-metric-value.independent { color: var(--party-i); }

.last-vote-label {
  font-size: var(--fs-xs);
  color: var(--text-muted);
  padding: 4px var(--sp-20) 10px;
  text-align: center;
}

.lva-section {
  border-top: 1px solid var(--border-color);
}
.lva-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: var(--border-color);
}
.lva-header {
  grid-column: 1 / -1;
  display: flex;
  justify-content: space-between;
  align-items: center;
  height: 44px;
  box-sizing: border-box;
  padding: 0 var(--sp-24);
  background: var(--bg-elevated);
  border-bottom: 1px solid var(--border-color);
}
.lva-title {
  font-size: var(--fs-xs);
  font-weight: 600;
  letter-spacing: 0.08em;
  color: var(--text-muted);
  text-transform: uppercase;
}
.lva-roll {
  font-size: var(--fs-xs);
  color: var(--text-muted);
  font-weight: 400;
}

.live-dot {
  width: 8px;
  height: 8px;
  background: var(--accent-red);
  border-radius: 50%;
  animation: flash-red 2s infinite;
}

@keyframes flash-red {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.3; }
}

@keyframes live-pulse {
  0% { transform: scale(1); opacity: 1; }
  50% { transform: scale(1.6); opacity: 0.5; }
  100% { transform: scale(1); opacity: 1; }
}

.video-container .video-fallback .subtitle {
  color: var(--text-muted);
  font-size: var(--fs-lg);
  margin-top: var(--sp-8);
}

.video-loading {
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 100%;
  background: #000;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 2;
  overflow: hidden;
}
.video-loading-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--sp-10);
}

.section-live {
  font-family: var(--font-mono);
  font-size: var(--fs-2xs);
  font-weight: 700;
  letter-spacing: var(--track-wider);
  color: var(--accent-green);
  background: color-mix(in srgb, var(--accent-green) 14%, transparent);
  border-radius: var(--radius-3);
  padding: var(--sp-2) var(--sp-6);
  margin-left: var(--sp-6);
  animation: section-live-pulse 1.8s ease-in-out infinite;
}
@keyframes section-live-pulse {
  0%, 100% { opacity: 0.55; }
  50%      { opacity: 1; }
}

.video-loading-bars {
  display: flex;
  align-items: flex-end;
  gap: 3px;
  height: 24px;
}
.video-loading-bars span {
  display: block;
  width: 4px;
  border-radius: 1px;
  background: rgba(0, 255, 65, 0.7);
  animation: signal-bar 1.1s ease-in-out infinite;
}
.video-loading-bars span:nth-child(1) { animation-delay: 0s;    height: 8px;  }
.video-loading-bars span:nth-child(2) { animation-delay: 0.1s;  height: 13px; }
.video-loading-bars span:nth-child(3) { animation-delay: 0.2s;  height: 20px; }
.video-loading-bars span:nth-child(4) { animation-delay: 0.3s;  height: 13px; }
.video-loading-bars span:nth-child(5) { animation-delay: 0.4s;  height: 8px;  }
@keyframes signal-bar {
  0%, 100% { opacity: 0.2; transform: scaleY(0.5); }
  50%       { opacity: 1;   transform: scaleY(1);   }
}
.video-loading-label {
  font-family: var(--font-mono);
  font-size: var(--fs-sm);
  letter-spacing: 2px;
  color: rgba(0, 255, 65, 0.5);
  text-transform: uppercase;
  user-select: none;
}

@media (max-width: 640px) {

  .footer-sources {
    grid-template-columns: 1fr;
  }

  .bill-modal-overlay {
    padding: var(--sp-8);
    align-items: flex-end;
  }

  .bill-modal {
    max-height: 96vh;
    border-radius: var(--radius-12) var(--radius-12) 0 0;
  }
}

.weather-panel {
  position: relative;
  width: 76px;
  height: 60px;
  max-width: 320px;
  background: var(--bg-elevated);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-8);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--sp-8);
  margin-right: var(--sp-16);
  flex-shrink: 0;
  overflow: hidden;
  z-index: 10;
  transition: width var(--dur-350) ease, height var(--dur-350) ease,
              transform var(--dur-350) ease, background var(--dur-350) ease,
              border-color var(--dur-200) ease, box-shadow var(--dur-350) ease;
}

.weather-panel:hover {
  width: 320px;
  height: 180px;
  border-color: var(--accent-blue);
  z-index: 100;
  background: #000;
  transform: translateY(56px);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
}

.weather-info {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--sp-4);
  transition: opacity var(--dur-200) ease;
  pointer-events: none;
}

.weather-panel:hover .weather-info {
  opacity: 0;
}

.weather-temp {
  font-size: var(--fs-5xl);
  font-weight: 700;
  color: var(--text-primary);
  line-height: 1;
}

.weather-condition {
  font-size: var(--fs-2xs);
  font-weight: 500;
  color: var(--text-secondary);
  text-transform: uppercase;
  margin-top: 3px;
  text-align: center;
  line-height: 1.1;
}

.weather-panel video {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0;
  transition: opacity var(--dur-350) ease;
  pointer-events: none;
}

.weather-panel:hover video {
  opacity: 1;
}

.quorum-panel {
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-12);
  overflow: hidden;
}

.quorum-label {
  font-size: var(--fs-base);
  font-weight: 600;
  letter-spacing: var(--track-wider);
  color: var(--text-muted);
  text-transform: uppercase;
}

.quorum-indicator {
  display: flex;
  align-items: center;
  gap: var(--sp-8);
}

.indicator-text {
  font-size: var(--fs-md);
  font-weight: 600;
  color: var(--text-secondary);
  text-transform: uppercase;
  letter-spacing: var(--track-wide);
}

@keyframes indicator-pulse {
  0% { transform: scale(1); opacity: 1; }
  50% { transform: scale(1.3); opacity: 0.7; }
  100% { transform: scale(1); opacity: 1; }
}

@keyframes indicator-pulse-green {
  0% { transform: scale(1); opacity: 1; box-shadow: 0 0 0 0 rgba(63, 185, 80, 0.4); }
  50% { transform: scale(1.2); opacity: 0.8; box-shadow: 0 0 0 8px rgba(63, 185, 80, 0); }
  100% { transform: scale(1); opacity: 1; box-shadow: 0 0 0 0 rgba(63, 185, 80, 0.4); }
}

@keyframes indicator-pulse-red {
  0% { transform: scale(1); opacity: 1; box-shadow: 0 0 0 0 rgba(248, 81, 73, 0.4); }
  50% { transform: scale(1.2); opacity: 0.8; box-shadow: 0 0 0 8px rgba(248, 81, 73, 0); }
  100% { transform: scale(1); opacity: 1; box-shadow: 0 0 0 0 rgba(248, 81, 73, 0.4); }
}

.quorum-content {
  padding: var(--sp-20) var(--sp-24);
}

.quorum-metrics {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: var(--sp-16);
  margin-bottom: var(--sp-20);
}

.metric-item {
  display: flex;
  flex-direction: column;
  gap: var(--sp-4);
}

.metric-label {
  font-size: var(--fs-md);
  font-weight: 500;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: var(--track-wide);
}

.metric-value {
  font-size: var(--fs-5xl);
  font-weight: 700;
  color: var(--text-primary);
  font-family: var(--font-mono);
}

.quorum-visual {
  margin-top: var(--sp-16);
}

.quorum-bar {
  position: relative;
  height: 8px;
  background: var(--bg-elevated);
  border-radius: var(--radius-full);
  overflow: hidden;
  margin-bottom: var(--sp-8);
}

.quorum-fill {
  position: absolute;
  left: 0;
  top: 0;
  height: 100%;
  width: 0;
  background-image: linear-gradient(90deg, var(--accent-red) 0%, var(--accent-amber) 50%, var(--accent-green) 100%);
  background-repeat: no-repeat;
  background-position: left center;
  background-size: 100% 100%;
  border-radius: var(--radius-full);
  transition: width 0.6s ease;
  box-sizing: border-box;
}

.quorum-labels {
  display: flex;
  justify-content: space-between;
  font-size: var(--fs-sm);
  font-weight: 500;
  color: var(--text-muted);
  font-family: var(--font-mono);
}

.floor-grid-panel {
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-12);
  overflow: hidden;
}

.grid-legend {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: var(--sp-16);
}

.grid-note {
  display: flex;
  align-items: center;
  height: 44px;
  box-sizing: border-box;
  padding: 0 var(--sp-24);
  border-bottom: 1px solid var(--border-color);
  background: rgba(13, 17, 23, 0.28);
  color: var(--text-muted);
  font-size: var(--fs-base);
  line-height: 1.4;
}

.legend-item {
  display: flex;
  align-items: center;
  gap: var(--sp-6);
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--text-secondary);
  text-transform: uppercase;
  letter-spacing: var(--track-wide);
}

.dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
}

.dot.yea { background: var(--accent-green); box-shadow: 0 0 6px var(--accent-green); }
.dot.nay { background: var(--accent-red); box-shadow: 0 0 6px var(--accent-red); }
.dot.present { background: var(--accent-amber); box-shadow: 0 0 6px var(--accent-amber); }
.dot.empty { background: var(--bg-elevated); border: 1px solid var(--border-color); }
.dot.not-voting { background: var(--text-muted); opacity: 0.4; }

.grid-container {
  padding: var(--sp-28) var(--sp-24) 22px;
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 340px;
  background:
    radial-gradient(circle at 50% 112%, rgba(88, 166, 255, 0.12) 0%, rgba(35, 48, 68, 0.22) 36%, transparent 68%),
    linear-gradient(180deg, rgba(255,255,255,0.02), transparent 42%);
  position: relative;
  overflow: hidden;
}

.floor-arch {
  position: relative;
  width: 100%;
  max-width: 760px;
  height: 380px;
  border-bottom: 1px solid rgba(139, 148, 158, 0.18);
  isolation: isolate;
}

.center-aisle {
  content: '';
  position: absolute;
  bottom: 15px;
  left: 50%;
  width: 42px;
  height: 310px;
  background: linear-gradient(to top, rgba(13, 17, 23, 0.85), rgba(13, 17, 23, 0));
  transform: translateX(-50%);
  pointer-events: none;
  z-index: 1;
}

.floor-arch::after {
  content: '';
  position: absolute;
  right: 8%;
  bottom: 16px;
  left: 8%;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(139, 148, 158, 0.3), transparent);
  pointer-events: none;
  z-index: 1;
}

.arch-label {
  position: absolute;
  bottom: 2px;
  font-size: var(--fs-md);
  font-weight: 700;
  color: var(--text-secondary);
  letter-spacing: 1.5px;
  text-transform: uppercase;
  z-index: 3;
}

.rep-label {
  left: 9%;
}

.dem-label {
  right: 9%;
}

.dais-label {
  position: absolute;
  left: 50%;
  bottom: 0;
  z-index: 3;
  width: 96px;
  padding: 5px var(--sp-8);
  border: 1px solid rgba(139, 148, 158, 0.18);
  border-bottom: 0;
  border-radius: var(--radius-8) var(--radius-8) 0 0;
  background: rgba(13, 17, 23, 0.86);
  color: var(--text-muted);
  font-size: var(--fs-xs);
  font-weight: 700;
  letter-spacing: var(--track-wider);
  text-align: center;
  transform: translateX(-50%);
}

.seat {
  position: absolute;
  z-index: 2;
  width: clamp(5px, 0.9vw, 7px);
  height: clamp(5px, 0.9vw, 7px);
  border-radius: 50%;
  background: rgba(110, 118, 129, 0.18);
  border: 1px solid rgba(139, 148, 158, 0.24);
  box-shadow: inset 0 0 0 1px rgba(13, 17, 23, 0.5);
  transition: background var(--dur-350) ease, border-color var(--dur-350) ease, box-shadow var(--dur-350) ease, transform var(--dur-200) ease;
  transform: translate(-50%, -50%);
}

.seat:hover {
  transform: translate(-50%, -50%) scale(1.9);
  z-index: 4;
}

.seat.yea { background: var(--accent-green); border-color: rgba(63, 185, 80, 0.9); box-shadow: 0 0 8px rgba(63, 185, 80, 0.55); }
.seat.nay { background: var(--accent-red); border-color: rgba(248, 81, 73, 0.9); box-shadow: 0 0 8px rgba(248, 81, 73, 0.55); }
.seat.present { background: var(--accent-amber); border-color: rgba(210, 153, 34, 0.9); box-shadow: 0 0 8px rgba(210, 153, 34, 0.55); }
.seat.vacant { background: transparent; border-color: rgba(139, 148, 158, 0.12); border-style: dashed; box-shadow: none; opacity: 0.45; pointer-events: none; }

@media (max-width: 1200px) {
  .main-display {
    padding: 0 80px;
  }
}

@media (max-width: 900px) {
  .main-display {
    padding: 0 var(--sp-24);
  }

  .grid-legend {
    justify-content: flex-start;
  }

  .grid-note {
    padding: var(--sp-10) var(--sp-16);
  }

  .grid-container {
    min-height: 260px;
    padding-right: var(--sp-14);
    padding-left: var(--sp-14);
  }

  .floor-arch {
    height: 260px;
  }

  .arch-label {
    font-size: var(--fs-xs);
    letter-spacing: var(--track-wider);
  }

  .center-aisle {
    height: 210px;
    width: 32px;
  }

  .dais-label {
    width: 76px;
    font-size: var(--fs-2xs);
  }
}

.proceedings-panel {
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-12);
  overflow: hidden;
  position: relative;
}

.proceedings-time {
  font-size: var(--fs-sm);
  font-weight: 500;
  color: var(--text-secondary);
  font-family: var(--font-mono);
  letter-spacing: var(--track-wide);
}

.proceedings-feed {
  padding: var(--sp-8) var(--sp-16);
  min-height: 200px;
  max-height: 200px;
  overflow-y: auto;
  position: relative;
  background: rgba(13, 17, 23, 0.5);
  font-family: var(--font-mono);
}

.proceedings-item {
  padding: var(--sp-4) 0;
  display: block;
}

::cue {
  background-color: transparent;
  color: #ffffff;
  font-family: var(--font-mono);
  font-size: 0.82em;
  line-height: 1.5;
  text-shadow:
    0 0 3px rgba(0, 0, 0, 0.95),
    0 1px 3px rgba(0, 0, 0, 0.95),
    0 0 6px rgba(0, 0, 0, 0.85);
}
::cue(b), ::cue(strong) {
  color: rgba(0, 255, 65, 0.95);
  font-weight: 600;
}
::cue(i), ::cue(em) {
  color: #c9d1d9;
  font-style: normal;
  font-weight: 400;
}

.floor-feed {
  position: fixed;
  bottom: 16px;
  right: 16px;

  width: max(220px, calc((100vw - 1000px) / 2 - var(--sp-32)));
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-10);
  overflow: hidden;
  box-shadow: 0 8px 32px rgba(0,0,0,0.6);
  transform: translateZ(0);
  z-index: 998;
  opacity: 0;
  pointer-events: none;
  transform: translateY(8px) scale(0.97);
  transition: opacity var(--dur-200) ease, transform var(--dur-200) ease;
}

.floor-feed.pip-active {
  opacity: 1;
  pointer-events: auto;
  transform: translateY(0) scale(1);
}

.floor-feed-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-8);
  padding: var(--sp-8) var(--sp-12);
  background: var(--bg-elevated);
  border-bottom: 1px solid var(--border-color);
}

.floor-feed-header-left {
  display: flex;
  align-items: center;
  gap: var(--sp-6);
  min-width: 0;
}

.pip-speaker[hidden] { display: none; }

.pip-speaker {
  display: flex;
  align-items: center;
  gap: var(--sp-8);

  padding: var(--sp-6) var(--sp-12) var(--sp-6) var(--sp-14);
  background: var(--bg-elevated);
  min-width: 0;
  overflow: hidden;
}

.pip-speaker-wave {
  flex-shrink: 0;
  color: var(--text-muted);
  opacity: 0.75;
}

.pip-speaker.is-uncertain .pip-speaker-wave,
.pip-speaker.is-unknown .pip-speaker-wave { opacity: 0.4; }

.pip-speaker-photo-wrap {
  width: 26px;
  height: 26px;
  flex-shrink: 0;
  position: relative;
  border-radius: var(--radius-6);
  overflow: hidden;
  border: 1px solid var(--border-color);
  background: rgba(136, 153, 170, 0.12);
}

.pip-speaker-photo {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 22%;
  display: block;
  opacity: 0;
  transition: opacity var(--dur-150) ease;
  z-index: 1;
}

.pip-speaker-placeholder {
  position: absolute;
  inset: 0;
  display: block;
}

.pip-speaker-text {
  display: flex;
  flex-direction: column;
  min-width: 0;
  line-height: 1.25;
}

.pip-speaker-name {
  font-size: var(--fs-base);
  font-weight: 600;
  color: var(--text-primary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.pip-speaker-meta {
  font-size: var(--fs-xs);
  letter-spacing: var(--track-wide);
  text-transform: uppercase;
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.pip-speaker-meta .pip-speaker-party-r { color: var(--party-r); }
.pip-speaker-meta .pip-speaker-party-d { color: var(--party-d); }
.pip-speaker-meta .pip-speaker-party-i { color: var(--party-i); }

.pip-speaker.is-uncertain .pip-speaker-name { color: var(--text-secondary); font-weight: 500; }
.pip-speaker.is-uncertain .pip-speaker-photo-wrap { opacity: 0.55; }
.pip-speaker.is-unknown .pip-speaker-name { color: var(--text-muted); font-weight: 500; font-style: italic; }

.pip-speaker.is-clerk .pip-speaker-photo-wrap {

  background: transparent;
  border-color: transparent;
  color: var(--text-primary);
}

.pip-speaker.is-presiding .pip-speaker-photo-wrap {
  background: transparent;
  border-color: transparent;
}

.pip-speaker-seal {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
}

.pip-speaker-quill {
  width: 100%;
  height: 100%;
  display: block;
}

.pip-speaker.is-stale .pip-speaker-photo-wrap { opacity: 0.5; }
.pip-speaker.is-stale .pip-speaker-name { color: var(--text-secondary); }
.pip-speaker.is-stale .pip-speaker-meta { color: var(--accent-amber); opacity: 0.85; }

.floor-feed-label {
  font-size: var(--fs-base);
  font-weight: 600;
  letter-spacing: var(--track-wider);
  color: var(--text-muted);
  text-transform: uppercase;
}

.floor-feed-source {
  font-size: var(--fs-2xs);
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: var(--track-wide);
  opacity: 0.8;
}

.floor-feed-source a {
  color: var(--accent-blue);
  text-decoration: none;
  opacity: 0.9;
  transition: opacity var(--dur-200) ease;
}

.floor-feed-source a:hover { opacity: 1; text-decoration: underline; }

.floor-feed.is-idle .pip-speaker {
    display: none !important;
}

.pip-live-dot {
    background: var(--text-muted);
    box-shadow: none;
    animation: none;
}

.pip-live-dot {
  display: inline-block;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--accent-red);
  animation: pip-blink 1.4s ease-in-out infinite;
  flex-shrink: 0;
}

@keyframes pip-blink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.2; }
}

.capcam-live-dot {
  position: absolute;
  top: 7px;
  left: 7px;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--accent-red);
  z-index: 5;
  pointer-events: none;
  visibility: hidden;
}
.weather-panel:hover .capcam-live-dot {
  visibility: visible;
  animation: pip-blink 1.4s ease-in-out infinite;
}

.panel-label {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-6);
}

.floor-feed-video {
  position: relative;
  width: 100%;
  aspect-ratio: 16/9;
  overflow: hidden;
  background: #000;
  line-height: 0;
  container-type: inline-size;
}

.pip-caption-overlay {
  position: absolute;
  left: 50%;
  bottom: 7%;
  transform: translateX(-50%);
  max-width: 88%;
  width: max-content;
  text-align: center;
  font-family: var(--font-mono);
  font-weight: 600;
  letter-spacing: var(--track-wide);
  color: var(--text-primary);

  background: rgba(13, 17, 23, 0.92);
  border: 1px solid rgba(63, 185, 80, 0.18);
  border-top: 2px solid rgba(63, 185, 80, 0.55);
  border-radius: var(--radius-4);

  padding: clamp(3px, 1.1cqi, 8px) clamp(7px, 2.6cqi, 18px);

  font-size: clamp(7px, 3.6cqi, 28px);
  line-height: 1.5;
  white-space: pre-wrap;
  pointer-events: none;
  z-index: 4;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.75);
}
.pip-caption-overlay:not(.has-text) { display: none; }

.pip-caption-overlay.captions-off { display: none; }

#player-pip::-webkit-media-text-track-container,
#player-pip::-webkit-media-text-track-display,
#player-pip::cue {
  display: none !important;
  visibility: hidden !important;
}

.floor-feed-media {
  background: #000;
  display: block;
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: none;
  object-fit: cover;
}

.floor-feed-video { cursor: pointer; }
.floor-feed-overlay {
  position: absolute;
  inset: 0;
  pointer-events: auto;
  background: transparent;
}

.pip-backdrop {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.72);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  z-index: 1099;
  cursor: pointer;
}
.pip-backdrop.pip-backdrop-visible {
  display: block;
}

.floor-feed.pip-expanded {
  bottom: auto;
  right: auto;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: min(92vw, 1100px);
  z-index: 1100;
  border-radius: var(--radius-12);
}
.floor-feed.pip-expanded .floor-feed-overlay {
  pointer-events: none;
}

.pip-close-btn {
  display: none;
  background: none;
  border: none;
  color: var(--text-muted);
  font-size: var(--fs-xl);
  cursor: pointer;
  padding: var(--sp-2) var(--sp-4);
  line-height: 1;
  opacity: 0.7;
  transition: opacity var(--dur-150);
}
.pip-close-btn:hover { opacity: 1; }
.floor-feed.pip-expanded .pip-close-btn { display: inline; }

.pip-mute-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  flex-shrink: 0;
  background: none;
  border: none;
  color: var(--text-secondary);
  cursor: pointer;
  padding: 0;
  opacity: 0.85;
  transition: opacity var(--dur-150) ease, color var(--dur-150) ease;
}
.pip-mute-btn:hover { opacity: 1; color: var(--text-primary); }
.pip-mute-btn:focus { outline: none; }
.pip-mute-btn:focus-visible { outline: var(--radius-2) solid var(--accent-blue); outline-offset: var(--radius-2); border-radius: var(--radius-4); }
.pip-mute-btn svg { display: block; }
.pip-mute-btn .pip-icon-sound { display: none; }
.pip-mute-btn.is-unmuted { color: var(--accent-green); }
.pip-mute-btn.is-unmuted .pip-icon-muted { display: none; }
.pip-mute-btn.is-unmuted .pip-icon-sound { display: block; }

.floor-feed-header-right {
  display: flex;
  align-items: center;
  gap: var(--sp-8);
  min-width: 0;
}
.floor-feed-label { white-space: nowrap; }

.floor-feed-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-8);
  padding: var(--sp-6) var(--sp-12);
  background: var(--bg-elevated);
  border-top: 1px solid var(--border-color);
  overflow: hidden;
}
.floor-feed-footer .floor-feed-source {
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.pip-cc-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  background: none;
  border: none;
  padding: 0;
  line-height: 0;
  color: var(--text-muted);
  opacity: 0.65;
  cursor: pointer;
  transition: color var(--dur-150) ease, opacity var(--dur-150) ease;
}
.pip-cc-btn svg { display: block; }
.pip-cc-btn:hover { opacity: 1; color: var(--text-secondary); }
.pip-cc-btn.is-on { color: var(--accent-green); opacity: 1; }
.pip-cc-btn:focus { outline: none; }
.pip-cc-btn:focus-visible { outline: var(--radius-2) solid var(--accent-blue); outline-offset: var(--radius-2); border-radius: var(--radius-3); }

.proceedings-item {
  padding: var(--sp-4) 0;
  display: block;
  border-bottom: 1px solid rgba(139, 148, 158, 0.2);
  transition: none;
}

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

.proceedings-item:first-child {
  border-top: none;
}

.proceedings-item:hover {
  background: none;
  border-color: inherit;
}

.proceedings-text {
  font-size: var(--fs-lg);
  color: var(--text-primary);
  line-height: 1.4;
  flex: 1;
  font-family: var(--font-mono);
}

.proceedings-time {
  font-size: var(--fs-md);
  font-weight: 600;
  color: var(--accent-green);
  font-family: var(--font-mono);
  letter-spacing: var(--track-wide);
}

.proc-bill-link {
  background: none;
  border: none;
  padding: 0;
  font: inherit;
  color: var(--accent-blue);
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 2px;
  text-decoration-color: rgba(88, 166, 255, 0.35);
  transition: text-decoration-color var(--dur-150);
}
.proc-bill-link:hover {
  text-decoration-color: var(--accent-blue);
}
.proc-bill-external {
  color: var(--text-muted);
  text-decoration-color: rgba(139, 148, 158, 0.35);
}
.proc-bill-external:hover {
  color: var(--accent-blue);
  text-decoration-color: var(--accent-blue);
}

.proceedings-next-header {
  display: flex;
  align-items: center;
  gap: var(--sp-12);
  padding: var(--sp-10) var(--sp-24);
  background: var(--bg-card);
  border-bottom: 1px solid var(--border-color);
  margin: calc(-1 * var(--sp-8)) calc(-1 * var(--sp-16)) 0;
  position: sticky;
  top: calc(-1 * var(--sp-8));
  z-index: 1;
}
.proceedings-next-label {
  font-family: var(--font-mono);
  font-size: var(--fs-xs);
  font-weight: 700;
  color: var(--accent-blue);
  letter-spacing: var(--track-wider);
  text-transform: uppercase;
  flex-shrink: 0;
}
.proceedings-next-text {
  font-family: var(--font-mono);
  font-size: var(--fs-base);
  color: var(--text-muted);
}

.proceedings-loading {
  text-align: center;
  padding: var(--sp-24);
  color: var(--text-muted);
  font-size: var(--fs-base);
}

.proceedings-error {
  text-align: center;
  padding: var(--sp-24);
  color: var(--accent-red);
  font-size: var(--fs-base);
}

.vote-series-panel {
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-12);
  overflow: hidden;
}

.vote-series-sub-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  height: 44px;
  box-sizing: border-box;
  padding: 0 var(--sp-24);
  border-bottom: 1px solid var(--border-color);
  background: rgba(13, 17, 23, 0.28);
  gap: var(--sp-16);
  flex-wrap: nowrap;
}
.vote-series-sub-header[hidden] {
  display: none;
}
.vote-series-sub-status {
  font-size: var(--fs-base);
  font-weight: 600;
  color: var(--text-secondary);
  letter-spacing: 0.02em;
}
.vote-series-sub-timing {
  font-size: var(--fs-base);
  color: var(--text-muted);
  white-space: nowrap;
}

.vote-series-body {
  padding: var(--sp-16) var(--sp-24) var(--sp-24);
}

.vote-tl-items {
  position: relative;
}

.vote-tl-item::after {
  content: '';
  position: absolute;
  left: 10px;
  top: 24px;
  width: 4px;
  bottom: -20px;
  background: var(--border-color);
  transition: background var(--dur-300);
}
.vote-tl-item:last-child::after {
  display: none;
}
.vote-tl-item.connector-dotted::after {
  background: repeating-linear-gradient(
    to bottom,
    var(--text-muted) 0px,
    var(--text-muted) 3px,
    transparent 3px,
    transparent 7px
  );
}

.vote-tl-item {
  display: flex;
  gap: var(--sp-16);
  margin-bottom: var(--sp-20);
  position: relative;
  align-items: flex-start;
}
.vote-tl-item:last-child {
  margin-bottom: 0;
}

.vote-tl-circle {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  border: 2px solid var(--border-color);
  background: var(--bg-card);
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  z-index: 1;
  transition: background var(--dur-300), border-color var(--dur-300);
}

.vote-tl-num {
  font-family: var(--font-mono);
  font-size: var(--fs-md);
  font-weight: 700;
  line-height: 1;
  color: var(--text-muted);
  user-select: none;
}
.vote-tl-circle.passed .vote-tl-num,
.vote-tl-circle.failed .vote-tl-num {
  color: var(--accent-blue);
}
.vote-tl-circle.active .vote-tl-num {
  color: var(--accent-yellow);
}
.vote-tl-circle.pending {
  border-color: var(--text-muted);
  background: var(--bg-card);
}
.vote-tl-circle.active {
  border-color: color-mix(in srgb, var(--accent-yellow) 50%, transparent);
  background: color-mix(in srgb, var(--accent-yellow) 25%, var(--bg-card));
}

.vote-tl-circle.active::before {
  content: '';
  position: absolute;
  inset: -4px;
  border-radius: 50%;
  border: 2px solid transparent;
  border-top-color: var(--accent-yellow);
  border-right-color: var(--accent-yellow);
  animation: vt-spin 0.85s linear infinite;
}
.vote-tl-circle.passed,
.vote-tl-circle.failed {
  border-width: 1px;
  border-color: var(--accent-blue);
  background: color-mix(in srgb, var(--accent-blue) 12%, transparent);
}

@keyframes vt-spin {
  to { transform: rotate(360deg); }
}

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

.vote-tl-bill {
  font-family: var(--font-mono);
  font-size: var(--fs-base);
  font-weight: 700;
  line-height: 24px;
  color: var(--text-primary);
  cursor: pointer;
}
.vote-tl-bill:hover {
  color: var(--accent-blue);
  text-decoration: underline;
}

.vote-tl-desc {
  font-family: var(--font-sans);
  font-size: var(--fs-md);
  color: var(--text-secondary);
  margin-top: 2px;
  line-height: 1.4;
}

.vote-tl-result,
.vote-tl-duration {
  display: inline-flex;
  align-items: center;
  font-family: var(--font-mono);
  font-size: var(--fs-md);
  padding: 3px 8px 1px;
  border-radius: 4px;
}
.vote-tl-result {
  gap: 6px;
  font-weight: 700;
}
.vote-tl-result.pending {
  color: var(--text-muted);
  background: transparent;
}
.vote-tl-result.active {
  color: var(--accent-yellow);
  background: color-mix(in srgb, var(--accent-yellow) 12%, transparent);
}
.vote-tl-result.passed {
  color: var(--accent-green);
  background: color-mix(in srgb, var(--accent-green) 12%, transparent);
}
.vote-tl-result.failed {
  color: var(--accent-red);
  background: color-mix(in srgb, var(--accent-red) 12%, transparent);
}

.vote-tl-badges {
  display: flex;
  align-items: center;
  gap: var(--sp-6);
  margin-top: var(--sp-6);
  flex-wrap: wrap;
}

.vote-tl-duration {
  font-family: var(--font-mono);
  font-size: var(--fs-md);
  font-weight: 600;
  color: var(--text-muted);
  background: color-mix(in srgb, var(--text-muted) 10%, transparent);
  padding: 2px 8px;
  border-radius: 4px;
}

.vote-tl-absences {
  display: inline-block;
  white-space: nowrap;
  font-family: var(--font-mono);
  font-size: var(--fs-md);
  font-weight: 600;
  color: var(--text-muted);
  background: color-mix(in srgb, var(--text-muted) 8%, transparent);
  padding: 3px 8px 1px;
  border-radius: 4px;
}
.vote-tl-absences .absent-d { color: var(--party-d); }
.vote-tl-absences .absent-r { color: var(--party-r); }
.vote-tl-absences .absent-i { color: var(--party-i); }

.vrec-open-btn {
  position: relative;
  font-size: var(--fs-sm);
  font-weight: 600;
  color: rgba(255, 255, 255, 0.7);
  background: radial-gradient(
    ellipse at bottom,
    var(--border-color) 0%,
    var(--bg-elevated) 45%
  );
  border: 0;
  border-radius: var(--radius-6);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.1);
  padding: 6px 16px 5px;
  cursor: pointer;
  white-space: nowrap;
  transition: all var(--dur-400) var(--ease-emphasis);
}
.vrec-open-btn::before {
  content: "";
  position: absolute;
  bottom: 0;
  left: 15%;
  width: 70%;
  height: 1px;
  background: linear-gradient(
    90deg,
    rgba(255, 255, 255, 0) 0%,
    rgba(255, 255, 255, 1) 50%,
    rgba(255, 255, 255, 0) 100%
  );
  opacity: 0.2;
  transition: all var(--dur-400) var(--ease-emphasis);
}
.vrec-open-btn:hover {
  color: #fff;
  transform: scale(1.06);
}
.vrec-open-btn:hover::before {
  opacity: 1;
}

.vrec-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.65);
  z-index: 1001;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--sp-24);
  backdrop-filter: blur(2px);
}
.vrec-overlay[hidden] { display: none; }

.vrec-modal {
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-12);
  max-width: 560px;
  width: 100%;
  max-height: 85vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  position: relative;
}

.vrec-modal-header {
  flex-shrink: 0;
  padding: var(--sp-16) var(--sp-24) var(--sp-14);
  background: var(--bg-elevated);
  border-bottom: 1px solid var(--border-color);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-16);
}

.vrec-modal-title {
  font-size: var(--fs-base);
  font-weight: 600;
  letter-spacing: var(--track-wider);
  color: var(--text-muted);
  text-transform: uppercase;
}

.vrec-autofill-note[hidden] {
  display: none;
}

.vrec-close-x {
  position: absolute;
  top: 12px;
  right: 14px;
  background: none;
  border: 1px solid var(--border-color);
  color: var(--text-muted);
  width: 26px;
  height: 26px;
  border-radius: var(--radius-6);
  cursor: pointer;
  font-size: var(--fs-xl);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all var(--dur-150);
}
.vrec-close-x:hover { border-color: var(--accent-red); color: var(--accent-red); }

.vrec-preset-bar {
  flex-shrink: 0;
  padding: var(--sp-10) var(--sp-24);
  border-bottom: 1px solid var(--border-color);
  display: flex;
  align-items: center;
  gap: var(--sp-10);
}

.vrec-preset-label {
  font-family: var(--font-mono);
  font-size: var(--fs-sm);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: var(--track-wide);
  color: var(--text-muted);
  white-space: nowrap;
}

.vrec-autofill-note {
  display: flex;
  align-items: center;
  gap: var(--sp-8);
  padding: var(--sp-8) var(--sp-24);
  background: color-mix(in srgb, var(--accent-amber) 8%, transparent);
  border-top: 1px solid color-mix(in srgb, var(--accent-amber) 25%, transparent);
  border-bottom: 1px solid color-mix(in srgb, var(--accent-amber) 25%, transparent);
}

.vrec-autofill-note-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  border: 1.5px solid var(--accent-amber);
  color: var(--accent-amber);
  font-family: var(--font-mono);
  font-size: 10px;
  font-weight: 700;
  line-height: 1;
}

.vrec-autofill-note-text {
  font-family: var(--font-mono);
  font-size: var(--fs-xs);
  font-weight: 600;
  color: var(--accent-amber);
  letter-spacing: 0.3px;
}

.vrec-prefs-details {
  flex-shrink: 0;
  border-bottom: 1px solid var(--border-color);
}

.vrec-prefs-summary {
  padding: var(--sp-8) var(--sp-24);
  font-family: var(--font-mono);
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: var(--track-wide);
  cursor: pointer;
  user-select: none;
  list-style: none;
  display: flex;
  align-items: center;
  gap: var(--sp-6);
  transition: color var(--dur-150);
}
.vrec-prefs-summary::-webkit-details-marker { display: none; }
.vrec-prefs-summary::before {
  content: '▶';
  font-size: 8px;
  display: inline-block;
  transition: transform var(--dur-150);
}
.vrec-prefs-details[open] .vrec-prefs-summary::before {
  transform: rotate(90deg);
}
.vrec-prefs-summary:hover { color: var(--text-secondary); }

.vrec-prefs-body {
  padding: var(--sp-10) var(--sp-24) var(--sp-14);
  display: flex;
  flex-direction: column;
  gap: var(--sp-8);
}

.vrec-follow-whip-row {
  display: flex;
  align-items: center;
  gap: var(--sp-10);
  padding-bottom: var(--sp-8);
  margin-bottom: var(--sp-4);
  border-bottom: 1px solid color-mix(in srgb, var(--border-color) 50%, transparent);
}

.vrec-pref-row {
  display: flex;
  align-items: center;
  gap: var(--sp-10);

  padding: 0;
  border-bottom: none;
}

.vrec-prefs-body .vrec-pref-row {
  padding: 0;
  border-bottom: none;
}

.vrec-pref-label {
  font-family: var(--font-mono);
  font-size: var(--fs-sm);
  color: var(--text-secondary);
  min-width: 150px;
  flex-shrink: 0;
}

.vrec-body {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  padding: var(--sp-8) 0;
}

.vrec-row {
  padding: var(--sp-12) var(--sp-24);
  border-bottom: 1px solid color-mix(in srgb, var(--border-color) 50%, transparent);
  display: flex;
  flex-direction: column;
  gap: var(--sp-8);
}
.vrec-row:last-child { border-bottom: none; }

.vrec-row-top {
  display: flex;
  align-items: center;
  gap: var(--sp-10);
  flex-wrap: wrap;
}

.vrec-row-num {
  font-family: var(--font-mono);
  font-size: var(--fs-md);
  color: var(--text-muted);
  min-width: 18px;
  flex-shrink: 0;
}

.vrec-row-label {
  font-family: var(--font-mono);
  font-size: var(--fs-base);
  font-weight: 700;
  color: var(--text-primary);
  flex: 1;
  min-width: 0;
  background: none;
  border: none;
  padding: 0;
  text-align: left;
}
.vrec-row-label.clickable {
  cursor: pointer;
  color: var(--accent-blue);
}
.vrec-row-label.clickable:hover {
  color: var(--accent-blue-hover);
  text-decoration: underline;
}

.vrec-whip-chip {
  font-family: var(--font-mono);
  font-size: var(--fs-xs);
  font-weight: 700;
  padding: 3px 6px 1px;
  border-radius: var(--radius-3);
  text-transform: uppercase;
  letter-spacing: var(--track-wide);
  flex-shrink: 0;
}
.vrec-whip-yes { background: color-mix(in srgb, var(--accent-green) 15%, transparent); color: var(--accent-green); }
.vrec-whip-no  { background: color-mix(in srgb, var(--accent-red)   15%, transparent); color: var(--accent-red);   }

.vrec-vote-btns {
  display: flex;
  gap: var(--sp-6);
  align-items: center;
}

.vrec-vote-btn {
  font-family: var(--font-mono);
  font-size: var(--fs-sm);
  font-weight: 700;
  padding: 4px 14px;
  border-radius: var(--radius-4);
  border: 1px solid var(--border-color);
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
  transition: all var(--dur-150);
  letter-spacing: var(--track-wide);
}

.vrec-vote-btn:hover {
  border-color: var(--text-secondary);
  color: var(--text-primary);
}

.vrec-vote-btns[data-sel="YES"] .vrec-vote-btn[data-vote="YES"] {
  background: color-mix(in srgb, var(--accent-green) 15%, transparent);
  border-color: var(--accent-green);
  color: var(--accent-green);
}
.vrec-vote-btns[data-sel="NO"] .vrec-vote-btn[data-vote="NO"] {
  background: color-mix(in srgb, var(--accent-red) 15%, transparent);
  border-color: var(--accent-red);
  color: var(--accent-red);
}
.vrec-vote-btns[data-sel="PRESENT"] .vrec-vote-btn[data-vote="PRESENT"] {
  background: color-mix(in srgb, var(--accent-amber) 15%, transparent);
  border-color: var(--accent-amber);
  color: var(--accent-amber);
}
.vrec-vote-btns[data-sel=""] .vrec-vote-btn[data-vote=""] {
  background: color-mix(in srgb, var(--text-muted) 10%, transparent);
  border-color: var(--text-muted);
  color: var(--text-muted);
}

.vrec-note-input {
  width: 100%;
  background: var(--bg-dark);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-4);
  color: var(--text-primary);
  font-family: var(--font-sans);
  font-size: var(--fs-base);
  padding: 5px 10px;
  outline: none;
  transition: border-color var(--dur-150);
}
.vrec-note-input::placeholder { color: var(--text-muted); opacity: 0.6; }
.vrec-note-input:focus { border-color: color-mix(in srgb, var(--accent-blue) 60%, transparent); }

.vrec-footer {
  flex-shrink: 0;
  padding: var(--sp-12) var(--sp-24);
  border-top: 1px solid var(--border-color);
  background: var(--bg-elevated);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-12);
}

.vrec-export-btn {
  font-family: var(--font-mono);
  font-size: var(--fs-sm);
  font-weight: 700;
  letter-spacing: var(--track-wide);
  text-transform: uppercase;
  color: var(--accent-green);
  background: color-mix(in srgb, var(--accent-green) 12%, transparent);
  border: 1px solid color-mix(in srgb, var(--accent-green) 40%, transparent);
  border-radius: var(--radius-4);
  padding: 6px 18px;
  cursor: pointer;
  transition: all var(--dur-150);
}
.vrec-export-btn:hover {
  background: color-mix(in srgb, var(--accent-green) 22%, transparent);
  border-color: var(--accent-green);
}
.vrec-export-btn.copied {
  color: var(--text-muted);
  background: color-mix(in srgb, var(--text-muted) 10%, transparent);
  border-color: var(--border-color);
}

.whip-updates-panel {

  display: flex;
  flex-direction: column;
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-12);
  overflow: hidden;
}

.whip-updates-time {
  font-size: var(--fs-md);
  font-weight: 600;
  color: var(--accent-green);
  font-family: var(--font-mono);
  letter-spacing: var(--track-wide);
}

.whip-updates-feed {
  flex: 1 1 auto;
  min-height: 0;
  padding: 0;
  max-height: 400px;
  overflow-y: auto;
  isolation: isolate;
}

.whip-update-item {
  border-bottom: 1px solid var(--border-color);

  padding: var(--sp-16) var(--sp-24) 0;
}

.whip-update-meta + * { margin-top: var(--sp-10); }
.whip-update-item > *:last-child:not(.whip-update-meta) { margin-bottom: var(--sp-16); }
.whip-update-item > .whip-update-meta:last-child { margin-bottom: var(--sp-16); }

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

.whip-update-meta {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: var(--sp-10);
  position: sticky;
  top: 0;
  z-index: 10;
  background: color-mix(in srgb, rgb(13, 17, 23) 28%, var(--bg-card));

  margin-left: calc(-1 * var(--sp-24));
  margin-right: calc(-1 * var(--sp-24));
  margin-top: calc(-1 * var(--sp-16));
  height: 44px;
  box-sizing: border-box;
  padding: 0 var(--sp-24);
  border-bottom: 1px solid var(--border-color);
}

.whip-type-badge {
  font-family: var(--font-mono);
  font-size: var(--fs-base);
  font-weight: 700;
  letter-spacing: var(--track-wide);
  padding: 2px 6px 0px;
  border-radius: var(--radius-4);
  flex-shrink: 0;
  cursor: pointer;
  transition: filter var(--dur-120);

  color: var(--accent-blue);
  background: color-mix(in srgb, var(--accent-blue) 12%, transparent);
}
.whip-type-badge:hover { filter: brightness(1.2); }
.whip-type-badge.whip-type-daily {
  color: var(--accent-green);
  background: color-mix(in srgb, var(--accent-green) 12%, transparent);
}
.whip-type-badge.whip-type-nightly {
  color: var(--accent-purple);
  background: color-mix(in srgb, var(--accent-purple) 12%, transparent);
}
.whip-type-badge.whip-type-weekly {
  color: var(--accent-amber);
  background: color-mix(in srgb, var(--accent-amber) 12%, transparent);
}

.whip-type-badge.whip-type-schedule {
  color: var(--accent-blue);
  background: color-mix(in srgb, var(--accent-blue) 12%, transparent);
}
.whip-type-badge.whip-type-wrap-up {
  color: var(--accent-purple);
  background: color-mix(in srgb, var(--accent-purple) 12%, transparent);
}

.whip-update-time {
  font-family: var(--font-mono);
  font-size: var(--fs-md);
  font-weight: 600;
  color: var(--accent-green);
  flex-shrink: 0;
  margin-left: auto;
}

.whip-update-title {
  font-family: var(--font-mono);
  font-size: var(--fs-base);
  font-weight: 600;
  color: var(--text-secondary);
  text-transform: uppercase;
  letter-spacing: var(--track-wide);
  text-align: center;
}

.whip-notice-schedule {
  display: flex;
  margin: var(--sp-8) 0 var(--sp-12);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-4);
  overflow: hidden;
}
.whip-sched-stat {
  flex: 1;
  padding: var(--sp-8) var(--sp-12);
  border-right: 1px solid var(--border-color);
}
.whip-sched-stat:last-child {
  border-right: none;
}
.whip-sched-label {
  font-family: var(--font-mono);
  font-size: var(--fs-2xs);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: var(--track-wide);
  color: var(--text-muted);
  margin-bottom: 3px;
}
.whip-sched-val {
  font-family: var(--font-mono);
  font-size: var(--fs-base);
  font-weight: 600;
  color: var(--text-primary);
  line-height: 1.3;
}

.whip-filter-dropdown[hidden] { display: none; }

.whip-filter-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.09);
  border-radius: 999px;
  color: var(--text-muted);
  font-size: var(--fs-xs);
  font-weight: 500;
  padding: 3px 10px 3px 8px;
  cursor: pointer;
  transition: background var(--dur-150), border-color var(--dur-150), color var(--dur-150);
}
.whip-filter-btn:hover {
  background: rgba(255, 255, 255, 0.09);
  border-color: rgba(255, 255, 255, 0.18);
  color: var(--text-secondary);
}

.whip-filter-btn.active {
  background: rgba(255, 255, 255, 0.09);
  border-color: rgba(255, 255, 255, 0.18);
  color: var(--text-secondary);
}

.whip-filter-btn[data-active-filter="floor"] {
  background: color-mix(in srgb, var(--accent-blue) 12%, transparent);
  border-color: color-mix(in srgb, var(--accent-blue) 35%, transparent);
  color: var(--accent-blue);
}
.whip-filter-btn[data-active-filter="daily"] {
  background: color-mix(in srgb, var(--accent-green) 12%, transparent);
  border-color: color-mix(in srgb, var(--accent-green) 35%, transparent);
  color: var(--accent-green);
}
.whip-filter-btn[data-active-filter="nightly"] {
  background: color-mix(in srgb, var(--accent-purple) 12%, transparent);
  border-color: color-mix(in srgb, var(--accent-purple) 35%, transparent);
  color: var(--accent-purple);
}
.whip-filter-btn[data-active-filter="weekly"] {
  background: color-mix(in srgb, var(--accent-amber) 12%, transparent);
  border-color: color-mix(in srgb, var(--accent-amber) 35%, transparent);
  color: var(--accent-amber);
}
.whip-filter-icon {
  flex-shrink: 0;
  opacity: 0.8;
}
.whip-filter-chevron {
  font-size: 9px;
  opacity: 0.6;
  line-height: 1;
}
.whip-filter-dropdown {

  flex: 0 0 auto;
  overflow: hidden;
}
.whip-filter-inner {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-8);
  padding: var(--sp-10) var(--sp-24);
  border-bottom: 1px solid var(--border-color);
  background: var(--bg-elevated);
}
.whip-filter-chip {
  font-family: var(--font-mono);
  font-size: var(--fs-xs);
  font-weight: 700;
  letter-spacing: var(--track-wide);
  padding: 2px 8px;
  border-radius: var(--radius-4);
  cursor: pointer;
  border: 1px solid transparent;
  transition: filter var(--dur-120);
}
.whip-filter-chip:hover { filter: brightness(1.2); }
.whip-filter-chip.active { border-color: currentColor; }

.whip-filter-chip.whip-type-all    { color: var(--text-secondary); background: color-mix(in srgb, var(--text-muted) 10%, transparent); }
.whip-filter-chip.whip-type-floor   { color: var(--accent-blue);   background: color-mix(in srgb, var(--accent-blue)   12%, transparent); }
.whip-filter-chip.whip-type-daily   { color: var(--accent-green);  background: color-mix(in srgb, var(--accent-green)  12%, transparent); }
.whip-filter-chip.whip-type-nightly { color: var(--accent-purple); background: color-mix(in srgb, var(--accent-purple) 12%, transparent); }
.whip-filter-chip.whip-type-weekly  { color: var(--accent-amber);  background: color-mix(in srgb, var(--accent-amber)  12%, transparent); }
.whip-filter-chip.whip-type-schedule { color: var(--accent-blue);  background: color-mix(in srgb, var(--accent-blue)  12%, transparent); }
.whip-filter-chip.whip-type-wrap-up  { color: var(--accent-purple); background: color-mix(in srgb, var(--accent-purple) 12%, transparent); }

.whip-label-group {
  display: flex;
  align-items: center;
  gap: var(--sp-6);
}

.whip-info-tip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 15px;
  height: 15px;
  font-size: var(--fs-xs);
  font-weight: 700;
  font-family: var(--font-mono);
  color: var(--text-muted);
  border: 1px solid var(--border-color);
  border-radius: 50%;
  cursor: default;
  line-height: 1;
  padding-top: 1px;
  padding-left: 1px;
  flex-shrink: 0;
  position: relative;
  transition: color var(--dur-150), border-color var(--dur-150);
}
.whip-info-tip:hover {
  color: var(--accent-blue);
  border-color: var(--accent-blue);
}
.whip-info-tip::after {
  content: attr(data-tooltip);
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  width: 260px;
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-8);
  box-shadow: 0 4px 16px rgba(0,0,0,0.4);
  color: var(--text-secondary);
  font-family: var(--font-sans);
  font-size: var(--fs-base);
  font-weight: 400;
  letter-spacing: 0;
  white-space: normal;
  padding: var(--sp-10) var(--sp-12);
  pointer-events: none;
  opacity: 0;
  transition: opacity var(--dur-150) ease;
  z-index: 200;
  line-height: 1.5;
}
.whip-info-tip:hover::after { opacity: 1; }

.whip-update-body {
  font-family: var(--font-sans);
  font-size: var(--fs-lg);
  color: var(--text-primary);
  line-height: 1.6;
}

.whip-update-body p {
  margin: 0 0 var(--sp-8);
}
.whip-update-body p:last-child {
  margin-bottom: 0;
}

.whip-update-body > :last-child { margin-bottom: 0; }

.whip-update-body ol,
.whip-update-body ul {
  margin: 0 0 var(--sp-8);
  padding-left: var(--sp-24);
}
.whip-update-body li {
  margin-bottom: var(--sp-4);
}
.whip-update-body strong {
  color: var(--text-primary);
  font-weight: 600;
}
.whip-update-body a {
  color: var(--accent-blue);
  text-decoration: none;
}
.whip-update-body a:hover {
  text-decoration: underline;
}

.whip-update-body [style*="color"] {
  color: inherit !important;
}

.whip-updates-loading,
.whip-updates-error {
  padding: var(--sp-24);
  text-align: center;
  font-family: var(--font-mono);
  font-size: var(--fs-base);
  color: var(--text-muted);
}
.whip-updates-error {
  color: var(--accent-red);
}

.absentee-panel {
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-12);
  overflow: hidden;
}

.absentee-info {
    display: flex;
    justify-content: space-between;
    align-items: center;
    height: 44px;
    box-sizing: border-box;
    padding: 0 var(--sp-24);
    border-bottom: 1px solid var(--border-color);
    background: rgba(13, 17, 23, 0.28);
    color: var(--text-muted);
    font-size: var(--fs-base);
}

.absentee-explainer {
    color: var(--text-muted);
    font-size: var(--fs-base);
}

.absentee-roll-info {
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--text-secondary);
    font-family: var(--font-mono);
    text-transform: uppercase;
}

.absentee-content {
  padding: var(--sp-16) var(--sp-24);
}

.absentee-metric .metric-label {
  font-size: var(--fs-xs);
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: var(--track-wider);
}

.absentee-metric .metric-value {
  font-size: var(--fs-4xl);
  font-weight: 700;
  color: var(--text-primary);
  font-family: var(--font-mono);
}

.absentee-list {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-2) var(--sp-8);
  font-size: var(--fs-sm);
  color: var(--text-secondary);
  line-height: 1.4;
}

.absentee-member {
  display: flex;
  align-items: center;
  gap: var(--sp-10);
  padding: var(--sp-4) 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}

.absentee-list[data-filter="rep"] .absentee-member:not(.rep),
.absentee-list[data-filter="dem"] .absentee-member:not(.dem),
.absentee-list[data-filter="ind"] .absentee-member:not(.ind) {
    display: none;
}

@keyframes absentee-filter-in {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: none; }
}

.absentee-list .absentee-member.is-entering {
    animation: absentee-filter-in var(--dur-200) var(--ease-emphasis) both;
    animation-delay: min(calc(var(--stagger, 0) * 20ms), 180ms);
}

.absentee-list {

    overflow: hidden;
}

@media (prefers-reduced-motion: reduce) {
    .absentee-list .absentee-member.is-entering { animation: none; }
    .absentee-list { transition: none !important; }
}

.absentee-member:last-child {
  border-bottom: none;
}

.absentee-party {
  display: inline-block;
  padding: var(--sp-2) var(--sp-6);
  border-radius: var(--radius-3);
  font-size: var(--fs-2xs);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: var(--track-wide);
  margin-right: var(--sp-8);
}

.absentee-party.rep {
  background: var(--party-r);
  color: white;
}

.absentee-party.dem {
  background: var(--party-d);
  color: white;
}

.absentee-photo-wrap {
  width: 28px;
  height: 28px;
  flex-shrink: 0;
  position: relative;
  border-radius: var(--radius-8);
  overflow: hidden;
  border: 1px solid var(--border-color);
  background: rgba(136, 153, 170, 0.12);
}

.absentee-photo {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  opacity: 0;
  transition: opacity var(--dur-150) ease;
  z-index: 1;
}

.absentee-photo-placeholder {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
}

.absentee-meta {
  min-width: 0;
  display: flex;
  align-items: baseline;
  gap: var(--sp-8);
  flex: 1;
  flex-wrap: wrap;
}

.absentee-party-tag {
  font-size: var(--fs-md);
  font-weight: 700;
  text-transform: uppercase;
  padding: var(--sp-2) var(--sp-8);
  border-radius: var(--radius-4);
  font-family: var(--font-mono);
}

.absentee-party-tag.republican {
  background: var(--party-r-tint);
  color: var(--party-r);
}

.absentee-party-tag.democrat {
  background: var(--party-d-tint);
  color: var(--party-d);
}

.absentee-party-tag.independent {
  background: var(--party-i-tint);
  color: var(--party-i);
}

.absentee-name {
  font-size: var(--fs-lg);
  font-weight: 600;
  color: var(--text-primary);
}

.absentee-state,
.absentee-vote {
  font-size: var(--fs-md);
  color: var(--text-muted);
  font-family: var(--font-mono);
}

.absentee-casualty-status {
  font-size: var(--fs-sm);
  font-weight: 500;
  color: var(--text-muted);
  font-family: var(--font-mono);
  letter-spacing: 0.02em;
  opacity: 0.75;
  white-space: nowrap;
}

.absentee-filter-switcher {
    display: flex;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid var(--border-color);
    border-radius: 5px;
    padding: var(--sp-2);
    gap: 1px;
}
.absentee-filter-btn {
    font-size: var(--fs-xs);
    font-weight: 600;
    font-family: var(--font-mono);
    letter-spacing: var(--track-wide);
    text-transform: uppercase;
    color: var(--text-muted);
    background: none;
    border: none;
    border-radius: var(--radius-3);
    padding: 3px 9px;
    cursor: pointer;
    transition: color var(--dur-150) ease, background var(--dur-150) ease;
    line-height: 1.2;
    white-space: nowrap;
}
.absentee-filter-btn:hover:not(.active) {
    color: var(--text-secondary);
    background: rgba(255, 255, 255, 0.04);
}
.absentee-filter-btn.active {
    color: var(--accent-blue);
    background: rgba(88, 166, 255, 0.12);
}
.twitter-panel {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-14);
    overflow: hidden;
    box-shadow: 0 0 0 1px rgba(88, 166, 255, 0.05) inset;
    margin-bottom: var(--section-gap);
}

.twitter-panel .panel-header {
    margin: 0;
    border-radius: var(--radius-14) var(--radius-14) 0 0;
    background: var(--bg-elevated);
    border-bottom: 1px solid rgba(52, 72, 100, 0.8);
    padding: var(--sp-16) var(--sp-24);
}
.tweets-feed {
    max-height: 700px;
    min-height: 200px;
    overflow-y: auto;
}
.tweets-new-banner {
    display: block;
    width: 100%;
    padding: 6px 0;
    background: var(--accent-blue);
    color: #fff;
    font-size: var(--fs-xs);
    font-family: var(--font-mono);
    font-weight: 600;
    letter-spacing: 0.06em;
    text-align: center;
    border: none;
    border-radius: var(--radius-4);
    cursor: pointer;
    position: sticky;
    top: 0;
    z-index: 10;
    margin-bottom: 4px;
    opacity: 0.93;
    transition: opacity var(--dur-100) ease;
}
.tweets-new-banner:hover { opacity: 1; }

.reporter-filter-bar {
    display: flex;
    align-items: center;
    gap: var(--sp-8);
    height: 44px;
    box-sizing: border-box;
    padding: 0 var(--sp-24);
    border-bottom: 1px solid var(--border-color);
    background: rgba(13, 17, 23, 0.28);
    flex-shrink: 0;
}

.reporter-cards-row {
    display: flex;
    gap: var(--sp-6);
    flex-wrap: nowrap;
    overflow-x: auto;
    flex: 1;
    min-width: 0;
}

.reporter-card {
    display: flex;
    align-items: center;
    gap: var(--sp-6);
    background: rgba(139, 148, 158, 0.08);
    border: 1px solid rgba(139, 148, 158, 0.18);
    border-radius: var(--radius-4);
    padding: var(--sp-2) var(--sp-10);
    font-size: var(--fs-sm);
    color: var(--text-secondary);
    cursor: pointer;
    white-space: nowrap;
    transition: background var(--dur-150) ease, color var(--dur-150) ease, border-color var(--dur-150) ease;
    font-family: var(--font-sans);
}

.reporter-card-avatar {
    width: 16px;
    height: 16px;
    border-radius: 50%;
    object-fit: cover;
    flex-shrink: 0;
}

.reporter-card:hover {
    background: rgba(139, 148, 158, 0.15);
    color: var(--text-primary);
}

.reporter-card.active {
    background: rgba(88, 166, 255, 0.1);
    border-color: rgba(88, 166, 255, 0.38);
    color: var(--accent-blue);
}

.reporter-active-chip {
    display: flex;
    align-items: center;
    gap: var(--sp-6);
    background: rgba(88, 166, 255, 0.12);
    border: 1px solid rgba(88, 166, 255, 0.45);
    border-radius: var(--radius-4);
    padding: var(--sp-2) var(--sp-8);
    font-size: var(--fs-sm);
    font-family: var(--font-sans);
    color: var(--accent-blue);
    cursor: pointer;
    white-space: nowrap;
    flex-shrink: 0;
    transition: background var(--dur-150) ease;
}
.reporter-active-chip:hover { background: rgba(88, 166, 255, 0.2); }
.reporter-chip-clear {
    font-size: 10px;
    opacity: 0.7;
    margin-left: var(--sp-2);
}
.reporter-chip-name { font-weight: 600; }

.reporter-search-btn {
    background: none;
    border: none;
    color: var(--text-muted);
    cursor: pointer;
    padding: var(--sp-4);
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-4);
    flex-shrink: 0;
    transition: color var(--dur-150) ease;
}

.reporter-search-btn:hover {
    color: var(--text-secondary);
}

.reporter-search-row {
    display: flex;
    align-items: center;
    gap: var(--sp-8);
    padding: var(--sp-8) var(--sp-16);
    border-bottom: 1px solid var(--border-color);
    background: rgba(13, 17, 23, 0.15);
}

.reporter-search-wrapper {
    position: relative;
    flex: 1;
}

.reporter-search-input {
    width: 100%;
    box-sizing: border-box;
    background: rgba(139, 148, 158, 0.1);
    border: 1px solid rgba(139, 148, 158, 0.22);
    border-radius: var(--radius-4);
    padding: var(--sp-4) var(--sp-10);
    color: var(--text-primary);
    font-size: var(--fs-sm);
    font-family: var(--font-mono);
    outline: none;
}

.reporter-search-input:focus {
    border-color: rgba(88, 166, 255, 0.45);
}

.reporter-search-results {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-top: none;
    border-radius: 0 0 var(--radius-4) var(--radius-4);
    z-index: 50;
    max-height: 220px;
    overflow-y: auto;
}

.reporter-search-result {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--sp-8);
    padding: var(--sp-6) var(--sp-12);
    width: 100%;
    background: none;
    border: none;
    border-bottom: 1px solid rgba(139, 148, 158, 0.08);
    cursor: pointer;
    color: var(--text-secondary);
    font-size: var(--fs-sm);
    text-align: left;
    transition: background var(--dur-100) ease;
}

.reporter-search-result:last-child { border-bottom: none; }

.reporter-search-result:hover {
    background: rgba(139, 148, 158, 0.1);
    color: var(--text-primary);
}

.reporter-result-name {
    font-family: var(--font-sans);
}

.reporter-result-handle {
    font-family: var(--font-mono);
    font-size: var(--fs-xs);
    color: var(--text-muted);
    flex-shrink: 0;
}

.reporter-search-clear {
    background: none;
    border: none;
    color: var(--text-muted);
    cursor: pointer;
    padding: var(--sp-2) var(--sp-6);
    font-size: var(--fs-md);
    line-height: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: color var(--dur-150) ease;
}

.reporter-search-clear:hover {
    color: var(--text-secondary);
}

.tweets-empty {
    padding: var(--sp-24);
    color: var(--text-muted);
    font-size: var(--fs-sm);
    font-family: var(--font-mono);
}
.tweet-item {
    padding: var(--sp-12) var(--sp-20);
    border-bottom: 1px solid var(--border-color);
}
.tweet-item:last-child { border-bottom: none; }

.tweet-thread {
    border-bottom: 1px solid var(--border-color);
}
.tweet-thread-parent {
    border-bottom: none;
    padding-bottom: 0;
    position: relative;
}
.tweet-thread-parent::after {
    content: '';
    position: absolute;
    left: calc(var(--sp-20) + 15px);
    bottom: 0;
    width: 2px;
    height: var(--sp-12);
    background: var(--border-color);
}
.tweet-thread-reply {
    border-bottom: none;
    padding-top: var(--sp-8);
}
.tweet-thread:last-child { border-bottom: none; }

.tweet-rt-bar {
    font-size: var(--fs-xs);
    font-family: var(--font-mono);
    color: var(--text-muted);
    margin-bottom: var(--sp-8);
    padding-left: 40px;
}
.tweet-header {
    display: flex;
    align-items: center;
    gap: var(--sp-10);
    margin-bottom: var(--sp-6);
}
.tweet-avatar {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: rgba(88, 166, 255, 0.15);
    border: 1px solid rgba(88, 166, 255, 0.25);
    color: var(--accent-blue);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: var(--fs-md);
    font-weight: 700;
    font-family: var(--font-mono);
    flex-shrink: 0;
    overflow: hidden;
}
a.tweet-avatar { cursor: pointer; }
a.tweet-avatar:hover { opacity: 0.8; }
.tweet-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 50%;
}
.tweet-author-area {
    display: flex;
    align-items: center;
    gap: var(--sp-10);
    min-width: 0;
}
.tweet-author-block {
    display: flex;
    flex-direction: column;
    gap: 1px;
    text-decoration: none;
    line-height: 1.2;
}
.tweet-display-name {
    font-size: var(--fs-sm);
    font-weight: 700;
    color: var(--text-primary);
}
.tweet-handle {
    font-size: var(--fs-xs);
    font-family: var(--font-mono);
    color: var(--text-muted);
}
.tweet-author-block:hover .tweet-display-name { color: var(--accent-blue); }
.tweet-time {
    font-size: var(--fs-xs);
    font-family: var(--font-mono);
    color: var(--text-muted);
    margin-left: auto;
    cursor: default;
}
.tweet-ext-link {
    font-size: var(--fs-xs);
    color: var(--text-muted);
    text-decoration: none;
    padding: 2px 6px;
    border: 1px solid var(--border-color);
    border-radius: var(--radius-3);
    transition: color var(--dur-150), border-color var(--dur-150);
    flex-shrink: 0;
}
.tweet-ext-link:hover { color: var(--accent-blue); border-color: var(--accent-blue); }
.tweet-body {
    font-size: var(--fs-md);
    color: var(--text-primary);
    line-height: 1.5;
    margin-bottom: var(--sp-8);
    word-break: break-word;
    padding-left: 46px;
}
.tweet-body a { color: var(--accent-blue); text-decoration: none; }
.tweet-body a:hover { text-decoration: underline; }
.tweet-images {
    display: grid;
    gap: 2px;
    border-radius: var(--radius-8);
    overflow: hidden;
    margin-bottom: var(--sp-10);
    margin-left: 46px;
    max-width: 320px;
}
.tweet-images-1 { grid-template-columns: 1fr; }
.tweet-images-2 { grid-template-columns: 1fr 1fr; }
.tweet-images-3 { grid-template-columns: 1fr 1fr; }
.tweet-images-4 { grid-template-columns: 1fr 1fr; }
.tweet-img {
    width: 100%;
    height: auto;
    object-fit: contain;
    display: block;
    background: #000;
    cursor: pointer;
    transition: opacity var(--dur-100) ease;
}
.tweet-img:hover { opacity: 0.85; }

#tweet-img-lightbox {
    display: none;
    position: fixed;
    inset: 0;
    z-index: 9000;
    background: rgba(0, 0, 0, 0.88);
    align-items: center;
    justify-content: center;
    cursor: zoom-out;
}
#tweet-img-lightbox.open { display: flex; }
#tweet-img-lightbox-img {
    max-width: min(92vw, 900px);
    max-height: 88vh;
    object-fit: contain;
    border-radius: var(--radius-8);
    box-shadow: 0 8px 48px rgba(0,0,0,0.6);
    cursor: default;
}

.lb-nav-btn {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background: rgba(0, 0, 0, 0.55);
    border: 1px solid rgba(255, 255, 255, 0.18);
    border-radius: 50%;
    color: #fff;
    font-size: 1.6rem;
    line-height: 1;
    width: 44px;
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background var(--dur-150);
    z-index: 1;
    flex-shrink: 0;
}
.lb-nav-btn:hover { background: rgba(0, 0, 0, 0.85); }
#lb-prev { left: var(--sp-16); }
#lb-next { right: var(--sp-16); }

.tweet-filter-btn {
    display: flex;
    align-items: center;
    opacity: 0;
    pointer-events: none;
    background: none;
    border: none;
    padding: 2px 4px;
    color: var(--text-muted);
    cursor: pointer;
    transition: opacity var(--dur-120) ease;
    flex-shrink: 0;
    line-height: 1;
}
.tweet-author-area:hover .tweet-filter-btn {
    opacity: 1;
    pointer-events: auto;
}
.tweet-filter-btn:hover { color: var(--accent-blue); }

.tweet-rt-bar a {
    color: inherit;
    text-decoration: none;
}
.tweet-rt-bar a:hover { text-decoration: underline; }
.tweet-card {
    border: 1px solid var(--border-color);
    border-radius: var(--radius-8);
    overflow: hidden;
    margin-bottom: var(--sp-10);
    margin-left: 46px;
    max-width: 320px;
}
.tweet-card-img {
    width: 100%;
    height: auto;
    object-fit: contain;
    display: block;
}
.tweet-quote {
    display: block;
    border: 1px solid var(--border-color);
    border-radius: var(--radius-8);
    padding: var(--sp-10) var(--sp-14);
    margin-bottom: var(--sp-10);
    margin-left: 46px;
    background: rgba(255,255,255,0.02);
    text-decoration: none;
    color: inherit;
    cursor: pointer;
    transition: border-color var(--dur-150) ease, background var(--dur-150) ease;
}
a.tweet-quote:hover {
    border-color: var(--accent-blue);
    background: rgba(88,166,255,0.05);
}
.tweet-quote-author {
    font-size: var(--fs-xs);
    font-family: var(--font-mono);
    font-weight: 700;
    color: var(--text-secondary);
    display: block;
    margin-bottom: var(--sp-4);
}
.tweet-quote-text {
    font-size: var(--fs-xs);
    color: var(--text-muted);
    line-height: 1.5;
    white-space: pre-wrap;
    word-break: break-word;
}
.tweet-quote-text a { color: var(--accent-blue); text-decoration: none; }
.tweet-quote-text a:hover { text-decoration: underline; }

@keyframes scroll-left {
    0% { transform: translateX(0); }
    100% { transform: translateX(-100%); }
}

.party-breakdown-panel {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-12);
    overflow: hidden;
    margin-bottom: var(--sp-8);
}

.majority-badge {
    font-family: var(--font-mono);
    font-size: var(--fs-sm);
    font-weight: 800;
    padding: var(--sp-4) var(--sp-10);
    border-radius: var(--radius-4);

    letter-spacing: 0.1em;
    border: 1px solid transparent;
}

.majority-badge.r-control {
    background: var(--party-r-tint);
    color: var(--party-r);
    border-color: rgba(255, 77, 79, 0.3);
}

.majority-badge.d-control {
    background: var(--party-d-tint);
    color: var(--party-d);
    border-color: rgba(88, 166, 255, 0.3);
}

.majority-badge.hidden {
    display: none;
}

.panel-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--sp-16) var(--sp-32);
    background: var(--bg-elevated);
    border-bottom: 1px solid var(--border-color);
    margin: 0;
    border-radius: var(--radius-8) var(--radius-8) 0 0;
    height: 52px;
    box-sizing: border-box;
}

.panel-header-right {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: var(--sp-12);
}

.proceedings-panel .panel-header-right {
    align-items: baseline;
}

.panel-label {
    font-size: var(--fs-base);
    font-weight: 600;
    letter-spacing: var(--track-wider);
    color: var(--text-muted);
    text-transform: uppercase;
}

.panel-source {
    font-size: var(--fs-2xs);
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    opacity: 0.8;
}

.panel-source a {
    color: var(--accent-blue);
    text-decoration: none;
    opacity: 0.9;
    transition: opacity var(--dur-200) ease;
}

.panel-source a:hover {
    opacity: 1;
    text-decoration: underline;
}

.party-breakdown-time {
    font-size: var(--fs-sm);
    font-weight: 500;
    color: var(--text-secondary);
    font-family: var(--font-mono);
}

.party-breakdown-indicator .indicator-dot {
    width: 6px;
    height: 6px;
    background: var(--accent-green);
    border-radius: 50%;
    animation: pulse 2s infinite;
}

.party-breakdown-content {
    display: flex;
    flex-direction: column;
    gap: var(--sp-12);
    padding: var(--sp-20) var(--sp-24);
}

.party-breakdown-metrics {
    display: flex;
    justify-content: space-between;
    gap: var(--sp-16);
}

.party-metric {
    display: flex;
    flex-direction: column;
    align-items: center;
    flex: 1;
    cursor: pointer;
    transition: opacity var(--dur-200) ease;
}
.party-metric.dim {
    opacity: 0.28;
}

.party-label {
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    margin-bottom: var(--sp-4);
}

.party-value {
    font-size: var(--fs-5xl);
    font-weight: 700;
    font-family: var(--font-mono);
}

.rep-metric .party-value {
    color: var(--accent-red);
}

.dem-metric .party-value {
    color: var(--accent-blue);
}

.total-metric .party-value {
    color: var(--text-primary);
}

.ind-metric .party-value {
    color: var(--accent-purple);
}

.party-breakdown-visual {
    display: flex;
    flex-direction: column;
    gap: var(--sp-4);
}

.party-bar {
    height: 10px;
    background: var(--bg-elevated);
    border-radius: var(--radius-6);
    overflow: hidden;
    display: flex;
    gap: 0;
    position: relative;
}

.rep-fill {
    background: var(--accent-red);
    height: 100%;
    transition: width var(--dur-300) ease, filter var(--dur-200) ease;
}

.rep-fill:hover {
    filter: brightness(1.3);
    z-index: 10;
}

.dem-fill {
    background: var(--accent-blue);
    height: 100%;
    transition: width var(--dur-300) ease, filter var(--dur-200) ease, box-shadow var(--dur-200) ease;
}

.dem-fill:hover {
    filter: brightness(1.3);
    z-index: 10;
}

.ind-fill {
    background: var(--accent-purple);
    height: 100%;
    transition: width var(--dur-300) ease, filter var(--dur-200) ease, box-shadow var(--dur-200) ease;
}

.ind-fill:hover {
    filter: brightness(1.3);
    z-index: 10;
}

.vac-fill {
    background: rgba(255, 255, 255, 0.3);
    height: 100%;
    transition: width var(--dur-300) ease, filter var(--dur-200) ease;
}

.vac-fill:hover {
    filter: brightness(1.6);
    z-index: 10;
}

.bills-section {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-12);
    overflow: hidden;
}

.bills-raw-headers {
    padding: var(--sp-8) var(--sp-24) 0 var(--sp-24);
    font-size: var(--fs-sm);
    line-height: 1.4;
    color: var(--text-muted);
    font-family: var(--font-mono);
    opacity: 0.9;
}

.voting-calendar-panel {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-14);
    overflow: hidden;
    padding-bottom: 0;
    box-shadow: 0 0 0 1px rgba(88, 166, 255, 0.05) inset;
}

.voting-calendar-panel .panel-header {
    margin: 0;
    border-radius: var(--radius-14) var(--radius-14) 0 0;
    background: var(--bg-elevated);
    border-bottom: 1px solid rgba(52, 72, 100, 0.8);
    padding: var(--sp-16) var(--sp-24);
}

.voting-calendar-panel .panel-header-right {
    gap: var(--sp-16);
}

.this-week-strip {
    display: flex;
    align-items: baseline;
    gap: var(--sp-12);
    height: 44px;
    box-sizing: border-box;
    padding: 16px var(--sp-24) 0;
    border-bottom: 1px solid var(--border-color);
    background: rgba(13, 17, 23, 0.28);
}
.this-week-label {
    font-size: var(--fs-2xs);
    font-family: var(--font-mono);
    font-weight: 700;
    letter-spacing: var(--track-wider);
    color: var(--accent-green);
    flex-shrink: 0;
    line-height: 1;
}
.this-week-body {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 4px;
    font-size: var(--fs-base);
    color: var(--text-primary);
}
.this-week-day {
    display: inline-flex;
    align-items: center;
    font-family: var(--font-mono);
    font-size: var(--fs-xs);
    font-weight: 600;
    padding: 1px 6px;
    border-radius: var(--radius-3);
}
.this-week-day-vote   { background: rgba(63,185,80,0.15);  color: var(--accent-green); }
.this-week-day-fly    { background: rgba(63,185,80,0.15);  color: var(--accent-green); }
.this-week-day-recess { background: rgba(139,148,158,0.12); color: var(--text-muted); }
.this-week-empty { color: var(--text-muted); font-style: italic; font-size: var(--fs-sm); line-height: 1; }

.voting-calendar-wrap {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--sp-8);
    padding: var(--sp-10) var(--sp-14) var(--sp-14);
    width: 100%;
    margin: 0;
    align-items: stretch;
    overflow: visible;
}

.voting-calendar-month {
    background: rgba(255, 255, 255, 0.02);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-12);
    clip-path: inset(0 round 12px);
    padding: var(--sp-4);
    width: 100%;
    max-width: 100%;
    min-height: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    box-sizing: border-box;
    transition: border-color var(--dur-200) ease, box-shadow var(--dur-200) ease;
}

.voting-calendar-month:hover {
    border-color: rgba(255, 255, 255, 0.12);
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4);
}

.voting-calendar-month-center {
    background: rgba(88, 166, 255, 0.04);
    border-color: rgba(88, 166, 255, 0.25);
    box-shadow: 0 0 0 1px rgba(88, 166, 255, 0.08) inset;
}

.cal-title {
    text-align: center;
    font-size: var(--fs-xs);
    font-weight: 700;
    color: var(--text-primary);
    letter-spacing: var(--track-wide);
    padding: var(--sp-6) 0 var(--sp-4);
}
.cal-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 2px;
    padding: 0 2px 2px;
}
.cal-dow {
    text-align: center;
    font-size: 8px;
    font-weight: 700;
    color: var(--text-muted);
    font-family: var(--font-mono);
    padding: 3px 0 1px;
    background: rgba(255,255,255,0.03);
}
.cal-day {
    aspect-ratio: 1 / 1;
    border-radius: 4px;
    position: relative;
    cursor: default;
    transition: background var(--dur-100);
    border: 1px solid transparent;
}
.cal-day:not(.cal-day-empty):hover { background: rgba(255,255,255,0.06); }
.cal-day-vote      { background: rgba(63,185,80,0.16); }
.cal-day-vote:hover { background: rgba(63,185,80,0.26); }
.cal-day-added     { background: rgba(210,153,34,0.16); }
.cal-day-added:hover { background: rgba(210,153,34,0.26); }
.cal-day-cancelled { background: rgba(139,148,158,0.10); }
.cal-day-cancelled:hover { background: rgba(139,148,158,0.18); }
.cal-day-today     { border-color: rgba(88, 166, 255, 0.35); }
.cal-num {
    position: absolute;
    top: 2px;
    right: 3px;
    font-size: 7px;
    font-weight: 600;
    color: var(--text-muted);
    line-height: 1;
    font-family: var(--font-mono);
}
.cal-day-today .cal-num { color: #fff; font-weight: 800; }

.cal-lbls {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-end;
    gap: 1px;
    padding-bottom: 3px;
    pointer-events: none;
}
.cal-lbl {
    font-size: 7px;
    font-weight: 800;
    font-family: var(--font-mono);
    letter-spacing: var(--track-wide);
    line-height: 1;
    text-transform: uppercase;
    display: block;
}
.cal-lbl-strike { text-decoration: line-through; }

.bills-last-update {
font-size: var(--fs-sm);
font-weight: 500;
color: var(--text-secondary);
font-family: var(--font-mono);
}

.bills-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--sp-16);
    padding: var(--sp-10) var(--sp-24) var(--sp-20);
}

.bills-column {
    display: flex;
    flex-direction: column;
}

.bills-column-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--sp-8) var(--sp-12);
    background: var(--bg-elevated);
    border-radius: var(--radius-6);
    margin-bottom: var(--sp-12);
}

.bills-column-header-left {
    display: flex;
    align-items: center;
    gap: var(--sp-8);
    flex-wrap: wrap;
}

.bills-column-header-sub {
    margin-top: var(--sp-16);
    margin-bottom: var(--sp-12);
}

.rule-tags-container {
    display: flex;
    align-items: center;
    gap: 5px;
    flex-wrap: wrap;
}

.bills-column-title {
    font-size: var(--fs-md);
    font-weight: 600;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
}

.bills-sort-bar {
    display: flex;
    align-items: center;
    gap: var(--sp-8);
    padding: var(--sp-10) var(--sp-32) 0;
}
.bills-sort-label {
    font-size: var(--fs-xs);
    font-weight: 600;
    font-family: var(--font-mono);
    color: var(--text-muted);
    letter-spacing: 0.8px;
    text-transform: uppercase;
    opacity: 0.6;
}
.bills-sort-switcher {
    display: flex;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid var(--border-color);
    border-radius: 5px;
    padding: var(--sp-2);
    gap: 1px;
}
.bills-sort-btn {
    font-size: var(--fs-xs);
    font-weight: 600;
    font-family: var(--font-mono);
    letter-spacing: var(--track-wide);
    text-transform: uppercase;
    color: var(--text-muted);
    background: none;
    border: none;
    border-radius: var(--radius-3);
    padding: 3px 9px;
    cursor: pointer;
    transition: color var(--dur-150) ease, background var(--dur-150) ease;
    line-height: 1.2;
    white-space: nowrap;
}
.bills-sort-btn:hover:not(.active) {
    color: var(--text-secondary);
    background: rgba(255, 255, 255, 0.04);
}
.bills-sort-btn.active {
    color: var(--accent-blue);
    background: rgba(88, 166, 255, 0.12);
}
.bills-tracked-filter-btn {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 4px;
    border: 1px solid var(--border-color);
    position: relative;
}
.bills-tracked-filter-btn.active {
    color: var(--accent-blue);
    background: rgba(88, 166, 255, 0.12);
    border-color: rgba(88, 166, 255, 0.5);
}
.bills-tracked-filter-btn.active svg {
    fill: currentColor;
}
.bills-tracked-filter-btn svg {
    transform: translateY(-0.5px);
}
.bills-tracked-filter-count {
    opacity: 0.7;
    font-weight: 400;
}
.bills-alerts-btn {
    display: flex;
    align-items: center;
    gap: 4px;
    border: 1px solid var(--border-color);
    position: relative;
}
.bills-alerts-btn.active {
    color: var(--accent-blue);
    background: rgba(88, 166, 255, 0.12);
    border-color: rgba(88, 166, 255, 0.5);
}
.bills-alerts-btn.active svg {
    fill: currentColor;
}
.bills-alerts-btn.denied {
    color: var(--text-muted);
    opacity: 0.5;
    cursor: not-allowed;
}
.bill-modal-source-link {
    font-family: var(--font-mono);
    font-size: var(--fs-sm);
    color: var(--text-muted);
    text-decoration: none;
    border-bottom: 1px dotted var(--text-muted);
    margin-left: var(--sp-4);
    opacity: 0.7;
    transition: opacity var(--dur-150);
}
.bill-modal-source-link:hover {
    opacity: 1;
    color: var(--text-secondary);
}

.section-tag-wrap {
    display: flex;
    align-items: center;
    gap: 7px;
}

[class*="-tag-text"] {
    display: inline-block;
    line-height: 1;
    transform: translateY(0.03em);
}

[class*="-tag-time"] {
    line-height: 1;
}

[class$="-pill"] {
    padding-top: calc(var(--sp-4) + 2px);
    padding-bottom: calc(var(--sp-4) - 2px);
}
[class$="-approval-label"] {
    display: inline-block;
    line-height: 1;
    transform: translateY(0.03em);
}

.info-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 15px;
    height: 15px;
    padding: 0;
    padding-top: 1px;
    padding-left: 1px;
    font-size: var(--fs-xs);
    font-weight: 700;
    font-family: var(--font-mono);
    color: var(--text-muted);
    background: none;
    border: 1px solid var(--border-color);
    border-radius: 50%;
    cursor: pointer;
    line-height: 1;
    transition: color var(--dur-150), border-color var(--dur-150);
    vertical-align: middle;
    flex-shrink: 0;
}
.info-btn:hover {
    color: var(--accent-blue);
    border-color: var(--accent-blue);
}
.info-popup-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.6);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1100;
    padding: var(--sp-24);
}
.info-popup-overlay[hidden] {
    display: none;
}
.info-popup {
    background: var(--bg-elevated);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-10);
    max-width: 520px;
    width: 100%;
    max-height: 92vh;
    overflow-y: auto;
    padding: var(--sp-28) var(--sp-28) var(--sp-24);
    position: relative;
    box-shadow: 0 16px 48px rgba(0, 0, 0, 0.5);
}
.info-popup-close {
    position: absolute;
    top: 14px;
    right: 16px;
    background: none;
    border: none;
    color: var(--text-muted);
    font-size: var(--fs-xl);
    cursor: pointer;
    padding: var(--sp-4);
    line-height: 1;
    opacity: 0.6;
    transition: opacity var(--dur-150);
}
.info-popup-close:hover { opacity: 1; }
.info-popup-title {
    font-family: var(--font-mono);
    font-size: var(--fs-md);
    font-weight: 700;
    letter-spacing: 0.8px;
    text-transform: uppercase;
    color: var(--accent-blue);
    margin-bottom: var(--sp-12);
    padding-right: var(--sp-24);
}
.info-popup-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
    margin-bottom: var(--sp-14);
}
.info-popup-tag {
    font-family: var(--font-mono);
    font-size: var(--fs-xs);
    font-weight: 600;
    letter-spacing: var(--track-wide);
    text-transform: uppercase;
    color: var(--text-secondary);
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-3);
    padding: 3px 7px;
    white-space: nowrap;
}
.info-popup-body {
    font-size: var(--fs-lg);
    line-height: 1.65;
    color: var(--text-secondary);
}
.info-popup-body p {
    margin: 0 0 var(--sp-12);
}
.info-popup-body p:last-child { margin-bottom: 0; }
.info-popup-figure {
    margin: var(--sp-18) 0 0;
    border-radius: var(--radius-8);
    overflow: hidden;
}
.info-popup-image {
    width: 100%;
    height: 200px;
    object-fit: cover;
    display: block;
    transform: scale(1.08);
}
.info-popup-caption {
    font-family: var(--font-mono);
    font-size: var(--fs-xs);
    letter-spacing: 0.3px;
    color: var(--text-muted);
    opacity: 0.7;
    margin: var(--sp-8) 0 0;
    line-height: 1.5;
}
.info-popup-caption a {
    color: inherit;
    text-decoration: underline;
}
.info-popup-source {
    margin-top: var(--sp-18);
    padding-top: var(--sp-14);
    border-top: 1px solid var(--border-color);
    font-family: var(--font-mono);
    font-size: var(--fs-xs);
    letter-spacing: var(--track-wide);
    color: var(--text-muted);
    opacity: 0.7;
}
.info-popup-source a {
    color: inherit;
    text-decoration: underline;
}

.bills-list {
    display: flex;
    flex-direction: column;
    gap: var(--sp-8);
}

.bill-card {
    background: var(--bg-elevated);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-6);
    padding: var(--sp-8);
    display: flex;
    align-items: flex-start;
    gap: var(--sp-8);
    transition: background var(--dur-150) ease, border-color var(--dur-150) ease, box-shadow var(--dur-150) ease;
    cursor: pointer;

    font: inherit;
    color: inherit;
    text-align: left;
    width: 100%;
}

.bill-card[data-tracked="true"] {
    border-color: rgba(88, 166, 255, 0.5);
    background: rgba(88, 166, 255, 0.06);
    box-shadow: 0 0 0 1px rgba(88, 166, 255, 0.5);
}

.bill-card-wrap {
    position: relative;
}

.bill-track-btn {
    position: absolute;
    top: -8px;
    right: -8px;
    z-index: 2;
    width: 22px;
    height: 22px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    border: 1px solid var(--border-color);
    background: var(--bg-card);
    color: var(--text-muted);
    opacity: 0;
    cursor: pointer;
    transition: color var(--dur-150) ease, opacity var(--dur-150) ease, border-color var(--dur-150) ease;
}

.bill-card-wrap:hover .bill-track-btn,
.bill-track-btn:focus-visible,
.bill-track-btn.tracked {
    opacity: 0.85;
}

.bill-track-btn:hover {
    color: var(--accent-blue);
    opacity: 1;
}

.bill-track-btn.tracked {
    color: var(--accent-blue);
    border-color: var(--accent-blue);
    opacity: 1;
}

.bill-track-btn[data-tooltip]::after,
.bills-tracked-filter-btn[data-tooltip]::after {
    content: attr(data-tooltip);
    position: absolute;
    top: calc(100% + 5px);
    right: 0;
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-6);
    box-shadow: 0 4px 12px rgba(0,0,0,0.4);
    color: var(--text-secondary);
    font-size: 10px;
    font-family: var(--font-sans);
    font-weight: 400;
    letter-spacing: 0;
    white-space: nowrap;
    padding: 4px 8px;
    pointer-events: none;
    opacity: 0;
    transition: opacity var(--dur-150) ease;
    z-index: 100;
}

.bill-track-btn:hover[data-tooltip]::after,
.bills-tracked-filter-btn:hover[data-tooltip]::after {
    opacity: 1;
}

.bills-alerts-btn[data-tooltip]::after {
    content: attr(data-tooltip);
    position: absolute;
    top: calc(100% + 5px);
    right: 0;
    width: 220px;
    white-space: normal;
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-6);
    box-shadow: 0 4px 12px rgba(0,0,0,0.4);
    color: var(--text-secondary);
    font-size: 10px;
    font-family: var(--font-sans);
    font-weight: 400;
    letter-spacing: 0;
    line-height: 1.4;
    padding: 6px 8px;
    pointer-events: none;
    opacity: 0;
    transition: opacity var(--dur-150) ease;
    z-index: 100;
}
.bills-alerts-btn:hover[data-tooltip]::after {
    opacity: 1;
}

.bill-card[data-status="passed"]:hover {
    background: rgba(63, 185, 80, 0.06);
    box-shadow: 0 0 0 1px rgba(63, 185, 80, 0.4);
}
.bill-card[data-status="passed"]:hover .bill-chevron { color: var(--accent-green); }

.bill-card[data-status="failed"]:hover {
    background: rgba(248, 81, 73, 0.06);
    box-shadow: 0 0 0 1px rgba(248, 81, 73, 0.4);
}
.bill-card[data-status="failed"]:hover .bill-chevron { color: var(--accent-red); }

.bill-card[data-status="roll-call"]:hover {
    background: rgba(210, 153, 34, 0.06);
    box-shadow: 0 0 0 1px rgba(210, 153, 34, 0.4);
}
.bill-card[data-status="roll-call"]:hover .bill-chevron { color: var(--accent-amber); }

.bill-card[data-status="scheduled"]:hover,
.bill-card[data-status="pending"]:hover,
.bill-card:not([data-status]):hover {
    background: rgba(139, 148, 158, 0.06);
    box-shadow: 0 0 0 1px rgba(139, 148, 158, 0.35);
}
.bill-card[data-status="scheduled"]:hover .bill-chevron,
.bill-card[data-status="pending"]:hover .bill-chevron,
.bill-card:not([data-status]):hover .bill-chevron { color: var(--text-secondary); }

.bill-chevron {
    color: var(--text-muted);
    font-size: var(--fs-3xl);
    line-height: 1;
    flex-shrink: 0;
    margin-top: 1px;
    transition: color var(--dur-150) ease;
}

.bill-status {
    width: 20px;
    height: 20px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: var(--fs-sm);
    font-weight: 600;
    flex-shrink: 0;
    margin-top: 1px;
}

.bill-status.pending,
.bill-status.scheduled {
    background: rgba(100, 116, 139, 0.1);
    color: var(--text-secondary);
    border: 1px solid rgba(100, 116, 139, 0.3);
}

.bill-status.passed {
    background: rgba(46, 160, 67, 0.1);
    color: var(--accent-green);
    border: 1px solid rgba(46, 160, 67, 0.3);
}

.bill-status.failed {
    background: rgba(248, 81, 73, 0.1);
    color: var(--accent-red);
    border: 1px solid rgba(248, 81, 73, 0.3);
}

.bill-status.roll-call {
    background: rgba(255, 193, 7, 0.1);
    color: var(--accent-amber);
    border: 1px solid rgba(255, 193, 7, 0.3);
}

.bill-info {
    flex: 1;
    min-width: 0;
}

.bill-id-row {
    display: flex;
    align-items: center;
    gap: var(--sp-6);
    margin-bottom: var(--sp-2);
    flex-wrap: wrap;
}

.bill-id {
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--text-primary);
    font-family: var(--font-mono);
    margin-bottom: var(--sp-2);
}

.bill-id-row {
    display: flex;
    align-items: center;
    gap: var(--sp-8);
    flex-wrap: wrap;
    margin-bottom: var(--sp-2);
}
.bill-id-row .bill-id { margin-bottom: 0; }
.bill-id-row .whip-tag { margin-top: 2px; }

.whip-tag {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 3px 7px 1px;
    border: 1px solid rgba(88, 166, 255, 0.35);
    border-radius: var(--radius-4);
    background: rgba(88, 166, 255, 0.06);
    font-family: var(--font-mono);
    white-space: nowrap;
}
.whip-tag-label {
    font-size: var(--fs-2xs);
    font-weight: 700;
    letter-spacing: var(--track-wide);
    color: var(--accent-blue);
    text-transform: uppercase;
}
.whip-tag-rec {
    font-size: var(--fs-xs);
    font-weight: 700;
    letter-spacing: var(--track-wide);
}
.whip-tag-rec.whip-yes { color: var(--accent-green); }
.whip-tag-rec.whip-no  { color: var(--accent-red); }
.whip-tag-conf {
    font-size: var(--fs-2xs);
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    opacity: 0.8;
}

.bill-rule-tag {
    display: inline-flex;
    align-items: center;
    font-family: var(--font-mono);
    font-size: var(--fs-xs);
    font-weight: 600;
    letter-spacing: 0.3px;
    padding: 1px var(--sp-6);
    border-radius: var(--radius-3);
    border: 1px solid;
    text-decoration: none;
    white-space: nowrap;
    transition: opacity var(--dur-150);
    line-height: 1.6;
    cursor: pointer;
    background: transparent;
}
.bill-rule-tag:hover { opacity: 0.75; }

.bill-rule-tag-modal {
    font-size: var(--fs-xs);
    font-weight: 700;
    padding: 5px 7px 3px;
    border-radius: var(--radius-4);
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    line-height: 1;
}

.bill-rule-tag.rule-tag-passed {
    color: var(--accent-green);
    border-color: rgba(63, 185, 80, 0.4);
    background: rgba(63, 185, 80, 0.08);
}
.bill-rule-tag.rule-tag-reported {
    color: var(--accent-yellow);
    border-color: rgba(227, 179, 65, 0.4);
    background: rgba(227, 179, 65, 0.08);
}
.bill-rule-tag.rule-tag-unknown {
    color: var(--text-muted);
    border-color: var(--border-color);
    background: none;
}

.bill-title {
    font-size: var(--fs-md);
    color: var(--text-secondary);
    line-height: 1.3;
    margin-bottom: var(--sp-4);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.bill-meta {
    display: flex;
    align-items: baseline;
    gap: var(--sp-6);
    font-size: var(--fs-xs);
    color: var(--text-muted);
}

.bill-rice {
    font-size: var(--fs-xs);
    font-family: var(--font-mono);
    font-weight: 700;
    letter-spacing: 0.05em;
    position: relative;
    cursor: default;
    margin-left: auto;
    flex-shrink: 0;
}
.bill-rice::after {
    content: attr(data-tooltip);
    position: absolute;
    bottom: calc(100% + 5px);
    right: 0;
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-6);
    box-shadow: 0 4px 12px rgba(0,0,0,0.4);
    color: var(--text-secondary);
    font-size: 10px;
    font-family: var(--font-sans);
    font-weight: 400;
    letter-spacing: 0;
    white-space: nowrap;
    padding: 4px 8px;
    pointer-events: none;
    opacity: 0;
    transition: opacity var(--dur-150) ease;
    z-index: 100;
}
.bill-rice:hover::after {
    opacity: 1;
}
.bill-rice-label {
    font-weight: 400;
    color: var(--text-muted);
}

.bill-action {
    color: var(--accent-blue);
}

.bill-date {
    font-family: var(--font-mono);
}

.bill-slot {
    display: flex;
    flex-direction: column;
}

.mtr-card {
    display: flex;
    align-items: center;
    gap: 7px;
    border: 1px solid var(--border-color);
    border-radius: var(--radius-6);
    padding: 4px 10px;
    background: transparent;
    font-family: var(--font-mono);
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--text-muted);
    opacity: 0.55;
    user-select: none;
    transition: background var(--dur-150) ease, border-color var(--dur-150) ease, opacity var(--dur-150) ease;
}

.mtr-circle {
    width: 13px;
    height: 13px;
    border-radius: 50%;
    border: 1px solid currentColor;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 7px;
    line-height: 1;
    flex-shrink: 0;
}

.mtr-connector {
    width: 2px;
    height: 8px;
    margin-left: 16px;
    background: var(--border-color);
    opacity: 0.5;
    transition: opacity var(--dur-150) ease;
}

.mtr-card.mtr-pending .mtr-circle { color: var(--accent-amber); opacity: 0.75; }
.mtr-card.mtr-failed  .mtr-circle { color: var(--accent-red);             opacity: 0.75; }
.mtr-card.mtr-passed  .mtr-circle { color: var(--accent-green); opacity: 0.75; }

.amdt-vote-card {
    display: flex;
    align-items: center;
    gap: 7px;
    border: 1px solid var(--border-color);
    border-radius: var(--radius-6);
    padding: 4px 10px;
    background: transparent;
    font-family: var(--font-mono);
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--text-muted);
    opacity: 0.55;
    user-select: none;
    transition: background var(--dur-150) ease, border-color var(--dur-150) ease, opacity var(--dur-150) ease;
}

.amdt-vote-circle {
    width: 13px;
    height: 13px;
    border-radius: 50%;
    border: 1px solid currentColor;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 7px;
    line-height: 1;
    flex-shrink: 0;
}

.amdt-vote-connector {
    width: 2px;
    height: 8px;
    margin-left: 16px;
    background: var(--border-color);
    opacity: 0.5;
    transition: opacity var(--dur-150) ease;
}

.amdt-vote-label {
    white-space: normal;
    overflow-wrap: anywhere;
}

.amdt-vote-card.amdt-vote-requested .amdt-vote-circle { color: var(--accent-amber);             opacity: 0.75; }
.amdt-vote-card.amdt-vote-failed    .amdt-vote-circle { color: var(--accent-red);             opacity: 0.75; }
.amdt-vote-card.amdt-vote-passed    .amdt-vote-circle { color: var(--accent-green); opacity: 0.75; }

.bill-slot:hover .mtr-card,
.bill-slot:hover .amdt-vote-card {
    opacity: 0.85;
    cursor: pointer;
}
.bill-slot:hover .mtr-connector,
.bill-slot:hover .amdt-vote-connector {
    opacity: 0.65;
}

.bill-slot:hover:has(.bill-card[data-status="passed"]) .mtr-card,
.bill-slot:hover:has(.bill-card[data-status="passed"]) .amdt-vote-card {
    border-color: rgba(63, 185, 80, 0.4);
    background: rgba(63, 185, 80, 0.06);
}
.bill-slot:hover:has(.bill-card[data-status="passed"]) .mtr-connector,
.bill-slot:hover:has(.bill-card[data-status="passed"]) .amdt-vote-connector {
    background: rgba(63, 185, 80, 0.4);
}
.bill-slot:hover:has(.bill-card[data-status="passed"]) .bill-card {
    border-color: rgba(63, 185, 80, 0.4);
    background: rgba(63, 185, 80, 0.06);
    box-shadow: none;
}
.bill-slot:hover:has(.bill-card[data-status="passed"]) .bill-card .bill-chevron {
    color: var(--accent-green);
}

.bill-slot:hover:not(:has(.bill-card[data-status="passed"])) .mtr-card,
.bill-slot:hover:not(:has(.bill-card[data-status="passed"])) .amdt-vote-card {
    border-color: rgba(139, 148, 158, 0.35);
    background: rgba(139, 148, 158, 0.06);
}
.bill-slot:hover:not(:has(.bill-card[data-status="passed"])) .bill-card {
    border-color: rgba(139, 148, 158, 0.35);
    background: rgba(139, 148, 158, 0.06);
    box-shadow: none;
}
.bill-slot:hover:not(:has(.bill-card[data-status="passed"])) .bill-card .bill-chevron {
    color: var(--text-secondary);
}

.no-bills {
    text-align: center;
    padding: var(--sp-16);
    color: var(--text-muted);
    font-size: var(--fs-md);
}

.bill-modal-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.65);
    z-index: 1200;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--sp-24);
    backdrop-filter: blur(2px);
}

@keyframes bill-overlay-in {
    from { opacity: 0; }
    to   { opacity: 1; }
}
@keyframes bill-modal-in {
    from { opacity: 0; transform: translateY(8px) scale(0.985); }
    to   { opacity: 1; transform: none; }
}

.bill-modal-overlay:not([hidden]) {
    animation: bill-overlay-in var(--dur-150) ease both;
}
.bill-modal-overlay:not([hidden]) .bill-modal {
    animation: bill-modal-in var(--dur-300) var(--ease-emphasis) both;
}

@media (prefers-reduced-motion: reduce) {
    .bill-modal-overlay:not([hidden]),
    .bill-modal-overlay:not([hidden]) .bill-modal { animation: none; }
}

.vrec-overlay:not([hidden]),
.info-popup-overlay:not([hidden]) {
    animation: bill-overlay-in var(--dur-150) ease both;
}
.vrec-overlay:not([hidden]) .vrec-modal,
.info-popup-overlay:not([hidden]) .info-popup {
    animation: bill-modal-in var(--dur-300) var(--ease-emphasis) both;
}

@keyframes bill-overlay-out {
    from { opacity: 1; }
    to   { opacity: 0; }
}
@keyframes bill-modal-out {
    from { opacity: 1; transform: none; }
    to   { opacity: 0; transform: translateY(6px) scale(0.99); }
}

.bill-modal-overlay.is-closing,
.vrec-overlay.is-closing,
.info-popup-overlay.is-closing {
    animation: bill-overlay-out var(--dur-200) ease both;
}
.bill-modal-overlay.is-closing .bill-modal,
.vrec-overlay.is-closing .vrec-modal,
.info-popup-overlay.is-closing .info-popup {
    animation: bill-modal-out var(--dur-200) ease both;
}

@keyframes bill-sheet-in {
    from { opacity: 0; transform: translateY(22px); }
    to   { opacity: 1; transform: none; }
}
@keyframes bill-sheet-out {
    from { opacity: 1; transform: none; }
    to   { opacity: 0; transform: translateY(22px); }
}
@media (max-width: 640px) {
    .bill-modal-overlay:not([hidden]) .bill-modal { animation-name: bill-sheet-in; }
    .bill-modal-overlay.is-closing .bill-modal    { animation-name: bill-sheet-out; }
}

.whip-filter-btn {
    transition: background var(--dur-150) ease, border-color var(--dur-150) ease,
                color var(--dur-150) ease;
}

@media (prefers-reduced-motion: reduce) {
    .vrec-overlay:not([hidden]),
    .vrec-overlay:not([hidden]) .vrec-modal,
    .bill-modal-overlay.is-closing,
    .bill-modal-overlay.is-closing .bill-modal,
    .vrec-overlay.is-closing,
    .vrec-overlay.is-closing .vrec-modal,
    .vrec-overlay.is-closing .vrec-modal { animation: none; }
}

.bill-modal-overlay[hidden] {
    display: none;
}

.bill-modal {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-12);
    max-width: 720px;
    width: 100%;
    max-height: 85vh;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    position: relative;
}

.bill-modal-top {
    flex-shrink: 0;
    padding: var(--sp-20) var(--sp-24) var(--sp-16);
}

.bill-modal-sections {
    padding: var(--sp-8) var(--sp-24) var(--sp-4);
}

.bill-modal-scroll {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
}

.bill-modal-body {
    flex: 1 1 auto;
    min-height: 5rem;
    overflow-y: auto;
    padding: 0 var(--sp-24) var(--sp-16);
    border-top: 1px solid var(--border-color);
    border-bottom: 1px solid var(--border-color);
}

.bill-modal-body .bill-modal-section-label {
    position: sticky;
    top: 0;
    background: var(--bg-card);
    padding-top: var(--sp-12);
    padding-bottom: var(--sp-6);
    z-index: 10;
}

.bill-modal-foot {
    padding: var(--sp-14) var(--sp-24) var(--sp-20);
}

.bill-modal-close {
    position: absolute;
    top: 16px;
    right: 16px;
    background: none;
    border: 1px solid var(--border-color);
    color: var(--text-muted);
    width: 28px;
    height: 28px;
    border-radius: var(--radius-6);
    cursor: pointer;
    font-size: var(--fs-lg);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all var(--dur-150) ease;
}

.bill-modal-close:hover {
    border-color: var(--accent-red);
    color: var(--accent-red);
}

.bill-modal-header {
    display: flex;
    align-items: center;
    gap: var(--sp-8);
    flex-wrap: wrap;
    margin-bottom: var(--sp-12);
    padding-right: 36px;
}
.bill-modal-header .bill-rule-tag,
.bill-modal-header .whip-tag {
    margin-top: -3px;
}

.bill-modal-id {
    font-family: var(--font-mono);
    font-size: var(--fs-base);
    font-weight: 700;
    color: var(--text-primary);
}

.bill-modal-badge {
    font-size: var(--fs-xs);
    font-weight: 700;
    letter-spacing: var(--track-wide);
    padding: 3px 7px 1px;
    border-radius: var(--radius-4);
    font-family: var(--font-mono);
    text-transform: uppercase;
    margin-top: -3px;
}

.bill-modal-badge.scheduled,
.bill-modal-badge.pending {
    background: rgba(100, 116, 139, 0.15);
    color: var(--text-secondary);
    border: 1px solid rgba(100, 116, 139, 0.3);
}

.bill-modal-badge.passed {
    background: rgba(46, 160, 67, 0.15);
    color: var(--accent-green);
    border: 1px solid rgba(46, 160, 67, 0.3);
}

.bill-modal-badge.failed {
    background: rgba(248, 81, 73, 0.15);
    color: var(--accent-red);
    border: 1px solid rgba(248, 81, 73, 0.3);
}

.bill-modal-badge.roll-call {
    background: rgba(255, 193, 7, 0.15);
    color: var(--accent-amber);
    border: 1px solid rgba(255, 193, 7, 0.3);
}

.bill-modal-badge.rule {
    background: rgba(88, 166, 255, 0.1);
    color: var(--accent-blue);
    border: 1px solid rgba(88, 166, 255, 0.2);
}

.bill-modal-badge.suspension {
    background: rgba(255, 193, 7, 0.12);
    color: var(--accent-amber);
    border: 1px solid rgba(255, 193, 7, 0.3);
}

.bill-modal-title {
    font-size: var(--fs-2xl);
    font-weight: 600;
    color: var(--text-primary);
    line-height: 1.4;
    margin: 0 0 var(--sp-14);
}

.bill-modal-section {
    margin-bottom: var(--sp-12);
}

.bill-modal-section-label {
    font-size: var(--fs-xs);
    font-weight: 700;
    letter-spacing: var(--track-wider);
    color: var(--text-muted);
    text-transform: uppercase;
    margin-bottom: var(--sp-6);
    font-family: var(--font-mono);
}

.bill-modal-summary {
    font-size: var(--fs-lg);
    color: var(--text-secondary);
    line-height: 1.6;
    margin: 0;
}

.bill-modal-action {
    font-size: var(--fs-base);
    color: var(--text-secondary);
    line-height: 1.4;
}

.bill-modal-action-row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: var(--sp-16);
}

.bill-modal-action-text {
    flex: 1;
    min-width: 0;
}

.bill-modal-date {
    color: var(--text-muted);
    font-family: var(--font-mono);
    font-size: var(--fs-md);
    white-space: nowrap;
    flex-shrink: 0;
    text-align: right;
}

.bill-modal-link {
    display: inline-block;
    margin-top: var(--sp-8);
    font-size: var(--fs-base);
    font-weight: 600;
    text-decoration: none;
    padding: var(--sp-6) var(--sp-12);
    border-radius: var(--radius-6);
    transition: all var(--dur-150) ease;
}

.bill-doc-links {
    display: flex;
    flex-wrap: wrap;
    gap: var(--sp-6);
}
.bill-doc-link {
    display: inline-flex;
    align-items: center;
    font-family: var(--font-mono);
    font-size: var(--fs-md);
    font-weight: 600;
    letter-spacing: 0.3px;
    color: var(--accent-blue);
    text-decoration: none;
    background: rgba(88, 166, 255, 0.06);
    border: 1px solid rgba(88, 166, 255, 0.3);
    border-radius: var(--radius-4);
    padding: 4px 9px;
    cursor: pointer;
    transition: background var(--dur-150) ease, border-color var(--dur-150) ease, color var(--dur-150) ease;
}
.bill-doc-link:hover { background: rgba(88, 166, 255, 0.14); border-color: var(--accent-blue); }

.bill-doc-links .bill-modal-link {
    margin-top: 0;
    display: inline-flex;
    align-items: center;
    gap: var(--sp-6);
    font-size: var(--fs-md);
}

.bill-copy-link {
    color: var(--text-secondary);
    background: var(--bg-elevated);
    border: 1px solid var(--border-color);
    cursor: pointer;
    font-family: inherit;
}
.bill-copy-icon { flex: none; opacity: 0.85; }
.bill-copy-link:hover { color: var(--text-primary); background: var(--bg-elevated); border-color: var(--text-muted); }
.bill-copy-link.copied { color: var(--accent-green); border-color: rgba(63, 185, 80, 0.5); background: rgba(63, 185, 80, 0.1); }

.bill-modal-link.rule {
    color: var(--accent-blue);
    border: 1px solid rgba(88, 166, 255, 0.3);
}

.bill-modal-link.rule:hover {
    background: rgba(88, 166, 255, 0.1);
    border-color: var(--accent-blue);
}

.bill-modal-link.suspension {
    color: var(--accent-amber);
    border: 1px solid rgba(255, 193, 7, 0.3);
}

.bill-modal-link.suspension:hover {
    background: rgba(255, 193, 7, 0.1);
    border-color: var(--accent-amber);
}

.bill-modal-link.maybe {
    color: var(--text-secondary);
    border: 1px solid rgba(100, 116, 139, 0.3);
}

.bill-modal-link.maybe:hover {
    background: rgba(100, 116, 139, 0.12);
    border-color: var(--text-secondary);
}

.bill-modal-link.senate { color: var(--accent-blue); border: 1px solid color-mix(in srgb, var(--accent-blue) 30%, transparent); }
.bill-modal-link.senate:hover { background: color-mix(in srgb, var(--accent-blue) 10%, transparent); border-color: var(--accent-blue); }

.bill-modal-support-bar {
    height: 8px;
    border-radius: var(--radius-4);
    overflow: hidden;
    display: flex;
    background: var(--bg-elevated);
    margin-bottom: var(--sp-6);
}

.bill-modal-support-fill {
    height: 100%;
    transition: width var(--dur-300) ease, filter var(--dur-200) ease, box-shadow var(--dur-200) ease;
}

.bill-modal-support-fill.rep { background: var(--party-r); }
.bill-modal-support-fill.dem { background: var(--party-d); }
.bill-modal-support-fill.ind { background: var(--party-i); }

.bill-modal-support-fill.rep:hover {
    filter: brightness(1.3);
    box-shadow: 0 0 10px rgba(248, 81, 73, 0.5);
}
.bill-modal-support-fill.dem:hover {
    filter: brightness(1.3);
    box-shadow: 0 0 10px rgba(88, 166, 255, 0.5);
}
.bill-modal-support-fill.ind:hover {
    filter: brightness(1.3);
    box-shadow: 0 0 10px rgba(163, 113, 247, 0.5);
}

.bill-modal-support-labels {
    display: flex;
    gap: var(--sp-10);
}

.bill-modal-support-count {
    font-size: var(--fs-sm);
    font-weight: 700;
    font-family: var(--font-mono);
}

.bill-modal-support-count.rep { color: var(--party-r); }
.bill-modal-support-count.dem { color: var(--party-d); }
.bill-modal-support-count.ind { color: var(--party-i); }

.bill-modal-committees {
    display: flex;
    flex-wrap: wrap;
    gap: var(--sp-6);
}

.bill-modal-committee-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--sp-16);
}

.committee-chip-tally {
    font-family: var(--font-mono);
    font-size: var(--fs-4xl);
    font-weight: 700;
    line-height: 1;
    letter-spacing: var(--track-wide);
}

.committee-chip-tally-text {
    font-size: var(--fs-md);
    font-weight: 600;
    color: var(--text-secondary);
}

.ct-aye { color: var(--accent-green); }
.ct-nay { color: var(--accent-red); }
.ct-sep { color: var(--text-muted); font-weight: 400; margin: 0 var(--sp-4); }

.bill-modal-committee {
    display: inline-flex;
    align-items: center;
    gap: var(--sp-8);
    font-size: var(--fs-base);
    font-weight: 600;
    color: var(--text-primary);
    background: var(--bg-elevated);
    border: 1px solid var(--border-color);

    border-left: 3px solid var(--mark, var(--accent-blue));
    padding: var(--sp-6) var(--sp-12);
    border-radius: var(--radius-4);
}

.committee-chip-mark {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    border-radius: var(--radius-4);
    background: var(--mark, var(--accent-blue));
    color: #fff;
    font-family: var(--font-mono);
    font-size: var(--fs-2xs);
    font-weight: 700;
    letter-spacing: 0.02em;
    line-height: 1;
}

.bill-modal-committee.is-senate .committee-chip-mark {
    background: transparent;
    color: var(--mark, var(--accent-blue));
    box-shadow: inset 0 0 0 1.5px var(--mark, var(--accent-blue));
}

.committee-chip-logo {
    flex-shrink: 0;
    width: 22px;
    height: 22px;
    object-fit: contain;
    border-radius: var(--radius-4);

}

.committee-chip-name { min-width: 0; }

.bill-modal-overlay.has-amendments {
    align-items: flex-start;
    padding: var(--sp-32) var(--sp-16);
    gap: var(--sp-10);
    overflow-y: auto;
}

.bill-panel-nav {
    display: none;
}

.bill-amendments-panel {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-12);
    max-width: 720px;
    width: 100%;
    flex-shrink: 0;
    max-height: 85vh;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.bill-amendments-panel-header {
    flex-shrink: 0;
    padding: var(--sp-14) var(--sp-18) var(--sp-12);
    border-bottom: 1px solid var(--border-color);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--sp-8);
}

.amdt-header-left {
    display: flex;
    align-items: center;
    gap: var(--sp-8);
}
.amdt-controls {
    display: flex;
    align-items: center;
    gap: var(--sp-6);
}
.amdt-sort-header {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: var(--sp-6);
    margin-bottom: var(--sp-10);
}

.amdt-search-bar {
    flex-shrink: 0;
    padding: var(--sp-6) var(--sp-18) var(--sp-10);
    border-bottom: 1px solid var(--border-color);
}
.amdt-search-input {
    width: 100%;
    box-sizing: border-box;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-6);
    padding: var(--sp-6) var(--sp-10);
    color: var(--text-primary);
    font-size: var(--fs-sm);
    font-family: var(--font-mono);
    outline: none;
    transition: border-color var(--dur-150);
}
.amdt-search-input:focus { border-color: rgba(88, 166, 255, 0.5); }
.amdt-search-input::placeholder { color: var(--text-muted); opacity: 0.55; }
.amdt-search-input::-webkit-search-cancel-button,
.amdt-search-input::-webkit-search-decoration { display: none; }

.amdt-search-debate {
    display: block;
    margin-bottom: var(--sp-10);
}

.bill-amendments-panel-title {
    font-size: var(--fs-sm);
    font-weight: 700;
    font-family: var(--font-mono);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--text-muted);
}
.bill-amendments-count {
    font-size: var(--fs-xs);
    font-family: var(--font-mono);
    color: var(--text-muted);
    opacity: 0.6;
    letter-spacing: 0.04em;
}

.bill-amendments-panel-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
}

@media (max-width: 1060px) {
    .bill-modal-overlay.has-amendments {
        flex-direction: column;
        align-items: center;
        padding: var(--sp-16);
        gap: 0;
    }
    .bill-panel-nav {
        display: flex;
        width: 100%;
        max-width: 720px;
        background: var(--bg-elevated);
        border: 1px solid var(--border-color);
        border-radius: var(--radius-10) var(--radius-10) 0 0;
        overflow: hidden;
        flex-shrink: 0;
    }
    .bill-panel-nav-btn {
        flex: 1;
        background: none;
        border: none;
        padding: var(--sp-10) var(--sp-16);
        font-size: var(--fs-md);
        font-weight: 600;
        font-family: var(--font-mono);
        letter-spacing: 0.06em;
        text-transform: uppercase;
        color: var(--text-muted);
        cursor: pointer;
        transition: color var(--dur-150), background var(--dur-150);
    }
    .bill-panel-nav-btn.is-active {
        color: var(--text-primary);
        background: var(--bg-card);
    }
    .bill-panel-nav-btn:not(:last-child) {
        border-right: 1px solid var(--border-color);
    }
    .bill-modal-overlay.has-amendments .bill-modal,
    .bill-modal-overlay.has-amendments .bill-amendments-panel {
        display: none;
        width: 100%;
        max-width: 720px;
        border-radius: 0 0 var(--radius-10) var(--radius-10);
        max-height: 75vh;
    }
    .bill-modal-overlay.has-amendments .bill-modal.panel-visible,
    .bill-modal-overlay.has-amendments .bill-amendments-panel.panel-visible {
        display: flex;
    }
}

.bill-amendments-empty {
    color: var(--text-muted);
    font-size: var(--fs-base);
    padding: var(--sp-24);
    text-align: center;
}

.amendments-table {
    width: 100%;
    table-layout: fixed;
    border-collapse: collapse;
    font-size: var(--fs-base);
}

.amendments-table thead th {
    text-align: left;
    font-size: var(--fs-sm);
    font-weight: 600;
    font-family: var(--font-mono);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--text-muted);
    padding: var(--sp-6) var(--sp-10) var(--sp-8);
    border-bottom: 1px solid var(--border-color);
    white-space: nowrap;
    position: sticky;
    top: 0;
    z-index: 2;
    background: var(--bg-card);
    overflow: hidden;
}

.amendments-table th:nth-child(1) { width: 30px; }
.amendments-table th:nth-child(2) { width: 28%; }
.amendments-table th:nth-child(3) { width: auto; }
.amendments-table th:nth-child(4) { width: 130px; }
.amendments-table th:nth-child(5) { width: 52px; }

.amendments-table tbody tr {
    border-bottom: 1px solid rgba(255,255,255,0.04);
}
.amendments-table tbody tr:hover { background: rgba(255,255,255,0.03); }
.amendments-table tbody tr:last-child { border-bottom: none; }

.amendments-table td {
    padding: var(--sp-8) var(--sp-10);
    vertical-align: top;
    color: var(--text-secondary);
    overflow-wrap: break-word;
    word-break: break-word;
}

.amdt-num {
    color: var(--text-muted);
    font-family: var(--font-mono);
    font-size: var(--fs-md);
    width: 28px;
    text-align: center;
    white-space: nowrap;
}

.amdt-sponsors {
    display: flex;
    align-items: flex-start;
    gap: 7px;
}

.amdt-sponsor-list {
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.amdt-sponsor-chip {
    display: flex;
    align-items: center;
    gap: 5px;
}

.amdt-sponsor-photo-wrap {
    width: 20px;
    height: 20px;
    flex-shrink: 0;
    border-radius: var(--radius-6);
    overflow: hidden;
    border: 1px solid var(--border-color);
    background: rgba(136, 153, 170, 0.12);
    position: relative;
}

.amdt-sponsor-photo {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    opacity: 0;
    transition: opacity var(--dur-150) ease;
    z-index: 1;
}

.amdt-sponsor-photo-placeholder {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
}

.amdt-sponsor-photo-link {
    flex-shrink: 0;
    display: block;
    border-radius: var(--radius-6);
    overflow: hidden;
}

.amdt-sponsor-name {
    font-size: var(--fs-md);
    line-height: 1.3;
    min-width: 0;
}

.amdt-sponsor-party-tag {
    display: inline;
    font-size: var(--fs-xs);
    font-weight: 700;
    font-family: var(--font-mono);
    padding: 1px var(--sp-4);
    border-radius: var(--radius-3);
    margin-right: var(--sp-4);
    vertical-align: middle;
}
.amdt-sponsor-party-tag.rep { background: var(--party-r-tint); color: var(--party-r); }
.amdt-sponsor-party-tag.dem { background: var(--party-d-tint); color: var(--party-d); }
.amdt-sponsor-party-tag.ind { background: rgba(163,113,247,0.1); color: var(--party-i); }

.amdt-sponsor-dist {
    color: var(--text-muted);
    font-size: var(--fs-sm);
    font-family: var(--font-mono);
}

.amdt-member-btn {
    display: inline;
    background: none;
    border: none;
    padding: 0;
    font: inherit;
    color: inherit;
    cursor: pointer;
    transition: color var(--dur-120);
}
.amdt-member-btn:hover { color: var(--text-primary); text-decoration: underline; }
.amdt-member-btn.active { color: var(--accent-blue); font-weight: 600; }

.amdt-pdf-cell {
    text-align: center;
    vertical-align: middle;
    padding-right: var(--sp-14);
    padding-left: var(--sp-6);
}
.amdt-pdf-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: var(--fs-sm);
    color: var(--text-muted);
    text-decoration: none;
    width: 22px;
    height: 22px;
    border: 1px solid var(--border-color);
    border-radius: var(--radius-4);
    transition: color var(--dur-120), border-color var(--dur-120), background var(--dur-120);
    line-height: 1;
}
.amdt-pdf-btn:hover { color: var(--text-primary); border-color: var(--text-muted); background: rgba(255,255,255,0.04); }

.amdt-party {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
    margin-top: 4px;
    border: none;
    padding: 0;
    appearance: none;
    -webkit-appearance: none;
    box-sizing: content-box;
    cursor: pointer;
    display: block;
    transition: opacity var(--dur-150);
}
.amdt-party:hover { opacity: 0.65; }
.amdt-party.rep { background: var(--party-r); }
.amdt-party.dem { background: var(--party-d); }
.amdt-party.ind { background: var(--party-i); }
.amdt-party.bipartisan { background: var(--accent-purple); }

.amdt-summary { line-height: 1.5; }

.amdt-status-badge {
    font-size: var(--fs-xs);
    font-weight: 600;
    font-family: var(--font-mono);
    letter-spacing: 0.05em;
    text-transform: uppercase;
    padding: var(--sp-2) var(--sp-6);
    border-radius: var(--radius-3);
    border: 1px solid;
    white-space: nowrap;
}
.amdt-status-badge.submitted { color: var(--text-muted); border-color: var(--border-color); }
.amdt-status-badge.adopted { color: var(--accent-green); border-color: rgba(63,185,80,0.4); background: rgba(63,185,80,0.08); }
.amdt-status-badge.failed { color: var(--accent-red); border-color: rgba(248,81,73,0.4); background: rgba(248,81,73,0.08); }

.congress-info {
    background: var(--bg-elevated);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-8);
    padding: var(--sp-8) var(--sp-16);
    text-align: center;
}

.congress-text {
    font-size: var(--fs-md);
    font-weight: 600;
    color: var(--text-primary);
    font-family: var(--font-mono);
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
}

.cotw-indicator {
    display: inline-flex;
    align-items: center;
    gap: var(--sp-6);
    margin-top: var(--sp-6);
    font-family: var(--font-mono);
    font-size: var(--fs-md);
    font-weight: 600;
    color: var(--accent-green);
    letter-spacing: var(--track-wide);
    text-transform: uppercase;
}

    .session-demo-prompt[hidden] { display: none; }
    .session-demo-prompt {
        display: block;
        margin-top: var(--sp-6, 6px);
        font-size: var(--fs-sm);
        color: var(--primary);
        text-decoration: none;
        border-bottom: 1px dotted currentColor;
        width: fit-content;
        margin-inline: auto;
    }
    .session-demo-prompt:hover { border-bottom-style: solid; }

.next-session-countdown {
    display: inline-flex;
    align-items: center;
    gap: var(--sp-6);
    margin-top: 2px;
    font-family: var(--font-mono);
    font-size: var(--fs-md);
    font-weight: 600;
    color: var(--accent-amber);
    letter-spacing: var(--track-wide);
    text-transform: uppercase;
}

.airport-delays-panel {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-12);
    overflow: hidden;
    margin-bottom: var(--sp-16);
}

.airport-delays-content {
    padding: var(--sp-16) var(--sp-24);
}

.airport-delays-list {
    display: flex;
    flex-direction: column;
    gap: var(--sp-8);
}

.airport-section-header {
    font-size: var(--fs-xs);
    font-weight: 700;
    font-family: var(--font-mono);
    letter-spacing: var(--track-wide);
    text-transform: uppercase;
    color: var(--text-muted);
    padding: var(--sp-8) 0 var(--sp-4) 0;
    border-bottom: 1px solid rgba(139, 148, 158, 0.15);
    margin-bottom: var(--sp-4);
}
.airport-section-header:first-child { padding-top: 0; }
.airport-section-header.national-header { margin-top: var(--sp-8); }

.airport-delay-item {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: var(--sp-8);
    padding: var(--sp-8) var(--sp-12);
    background: var(--bg-elevated);
    border-radius: var(--radius-6);
    border: 1px solid var(--border-color);
}
.airport-info-col {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: var(--sp-2);
    min-width: 0;
}
.airport-item-sub {
    display: flex;
    align-items: center;
    gap: var(--sp-6);
}
.airport-reason {
    font-size: var(--fs-xs);
    font-family: var(--font-mono);
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
}
.airport-trend {
    font-size: var(--fs-xs);
    font-family: var(--font-mono);
    font-weight: 700;
}
.airport-trend.up { color: var(--accent-red); }
.airport-trend.down { color: var(--accent-green); }

.airport-delay-item-link {
    text-decoration: none;
    color: inherit;
    display: block;
    transition: opacity var(--dur-200) ease;
}

.airport-delay-item-link:hover {
    opacity: 0.5;
}

.airport-status {
    font-size: var(--fs-sm);
    font-weight: 500;
    padding: var(--sp-2) var(--sp-8);
    border-radius: var(--radius-4);
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
}

.airport-status.normal {
    background: rgba(34, 197, 94, 0.2);
    color: var(--accent-green);
}

.airport-status.delay {
    background: rgba(248, 81, 73, 0.2);
    color: var(--accent-red);
}

.airport-status.loading {
    background: rgba(210, 153, 34, 0.2);
    color: var(--accent-amber);
}

.airport-status.disconnected {
    background: rgba(139, 148, 158, 0.2);
    color: var(--text-secondary);
}
.airport-status.ground-stop {
    background: rgba(248, 81, 73, 0.25);
    color: var(--accent-red);
}
.airport-status.ground-delay {
    background: rgba(210, 153, 34, 0.2);
    color: var(--accent-amber);
    font-weight: 700;
}

.vacancies-section {
    margin-top: var(--sp-16);
    padding-top: var(--sp-16);
    border-top: 1px solid var(--border-color);
}

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

.vacancies-label {
    font-size: var(--fs-base);
    font-weight: 600;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
}

.vacancies-count {
    font-size: var(--fs-lg);
    font-weight: 700;
    color: var(--accent-amber);
    font-family: var(--font-mono);
}

.vacancies-list {
    display: flex;
    flex-direction: column;
    gap: var(--sp-4);
}

.vacancy-item {
    display: grid;
    grid-template-columns: 92px 56px 1fr auto;
    gap: var(--sp-12);
    align-items: center;
    padding: 7px 0;
    border-bottom: 1px solid rgba(48, 54, 61, 0.5);
}

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

.vacancy-tag {
    font-size: var(--fs-sm);
    font-weight: 600;
    padding: 3px 7px;
    border-radius: var(--radius-3);
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    justify-self: start;
}

.tag-death {
    background: rgba(248, 81, 73, 0.2);
    color: var(--accent-red);
}

.tag-resignation {
    background: rgba(210, 153, 34, 0.2);
    color: var(--accent-amber);
}

.vacancy-date {
    font-size: var(--fs-base);
    color: var(--text-muted);
    font-family: var(--font-mono);
    justify-self: end;
    text-align: right;
}

.vacancy-member {
    font-size: var(--fs-lg);
    color: var(--text-primary);
    font-weight: 500;
    justify-self: start;
}

.vacancy-district {
    font-size: var(--fs-base);
    color: var(--text-secondary);
    font-family: var(--font-mono);
    justify-self: start;
    min-width: 56px;
}

.no-vacancies {
    font-size: var(--fs-base);
    color: var(--text-muted);
    font-style: italic;
    text-align: center;
    padding: var(--sp-10) 0;
}

.vote-counts-row {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    align-items: center;
    gap: var(--sp-40);
    justify-content: center;
    width: 100%;
    max-width: 800px;
}

.vote-timer {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--sp-8) var(--sp-16);
    background: rgba(255, 255, 255, 0.05);
    border-radius: var(--radius-4);
    margin-top: var(--sp-12);
    max-width: 300px;
    margin-left: auto;
    margin-right: auto;
}

.vote-timer-body {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    line-height: 1.1;
    margin-left: var(--sp-10);
}

.vote-timer-label {
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    font-family: var(--font-mono);
}

.vote-timer-value {
    font-size: var(--fs-xl);
    font-weight: 600;
    color: var(--text-primary);
    font-family: var(--font-mono);
    letter-spacing: var(--track-wide);
    font-variant-numeric: tabular-nums;
}

.vote-timer-start {
    margin-top: var(--sp-2);
    font-size: var(--fs-xs);
    font-weight: 500;
    color: var(--text-muted);
    font-family: var(--font-mono);
    letter-spacing: var(--track-wide);
    text-transform: uppercase;
    opacity: 0.8;
}

.vote-timer-value.active {
    color: var(--accent-green);
}

.vote-timer-value.warning {
    color: var(--accent-amber);
}

.vote-timer-value.expired {
    color: var(--accent-red);
}

.vote-timer-value.overtime {
    color: var(--accent-red);
}

.vote-timer-arc {
    width: 48px;
    height: 48px;
    flex-shrink: 0;
    transform: rotate(-90deg);
}
.vta-track {
    fill: none;
    stroke: rgba(255, 255, 255, 0.08);
    stroke-width: 4;
}
.vta-fill {
    fill: none;
    stroke: var(--accent-green);
    stroke-width: 4;
    stroke-linecap: round;
    stroke-dasharray: 125.66;
    stroke-dashoffset: 125.66;
    transition: stroke-dashoffset var(--dur-100) linear, stroke var(--dur-300) ease;
}

.vote-not-yet {
    margin-top: 2px;
    font-size: var(--fs-xs);
    font-family: var(--font-mono);
    color: var(--text-muted);
    opacity: 0.8;
    letter-spacing: 0.2px;
}

@media (max-width: 768px) {
    .container {
        padding: var(--sp-16);
    }

    .vote-header {
        flex-direction: column;
    }

    .vote-display {
        grid-template-columns: 1fr;
        gap: var(--sp-24);
        padding: var(--sp-24);
    }

    .count-number {
        font-size: var(--fs-8xl);
    }

    .threshold-grid {
        grid-template-columns: 1fr 1fr;
    }

    .main-display {
        padding: 0;
    }

    .footer-sources {
        grid-template-columns: repeat(2, 1fr);
    }

    .bill-modal {
        max-width: 100%;
        max-height: 92vh;
        border-radius: var(--radius-8);
    }

    .bill-modal-overlay {
        padding: var(--sp-16);
    }
}

body:is(
    .admin-oath-mode,
    .cert-election-mode,
    .cert-electoral-mode,
    .committee-chair-mode,
    .debate-mode,
    .joint-meeting-mode,
    .joint-session-mode,
    .journal-mode,
    .message-mode,
    .morning-hour-mode,
    .new-session-mode,
    .oath-mode,
    .one-minute-mode,
    .pledge-mode,
    .privilege-mode,
    .prayer-mode,
    .recess-mode,
    .silence-mode,
    .sine-die-mode,
    .speaker-mode,
    .special-order-mode,
    .tellers-mode
) :is(
    .vote-display,
    .progress-section,
    .vote-header,
    .threshold-panel,
    .quorum-panel,
    .floor-grid-panel
) {
    display: none;
}

.debate-section {
    display: none;
    padding: 0;
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-12);
    overflow: hidden;
}

body.debate-mode .debate-section {
    display: block;
}

.debate-section .bill-panel-nav {
    display: flex;
    width: 100%;
    background: var(--bg-elevated);
    border: none;
    border-bottom: 1px solid var(--border-color);
    border-radius: 0;
    overflow: hidden;
    flex-shrink: 0;
    margin-bottom: 0;
}

.debate-section .bill-panel-nav-btn {
    flex: 1;
    background: none;
    border: none;
    padding: var(--sp-10) var(--sp-16);
    font-size: var(--fs-md);
    font-weight: 600;
    font-family: var(--font-mono);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--text-muted);
    cursor: pointer;
    transition: color var(--dur-150), background var(--dur-150);
}

.debate-section .bill-panel-nav-btn.is-active {
    color: var(--text-primary);
    background: var(--bg-card);
}

.debate-section .bill-panel-nav-btn:not(:last-child) {
    border-right: 1px solid var(--border-color);
}

.debate-tags-row {
    display: flex;
    align-items: center;
    gap: var(--sp-12);
    margin-bottom: 0;
    padding: var(--sp-12) var(--sp-24);
    background: var(--bg-elevated);
    border-bottom: 1px solid var(--border-color);
}
.debate-tags-row::before {
    content: "HAPPENING NOW";
    flex-shrink: 0;
    font-size: var(--fs-base);
    font-weight: 600;
    letter-spacing: var(--track-wider);
    color: var(--text-muted);
    text-transform: uppercase;
}
.debate-source {
    margin-left: auto;
    font-size: var(--fs-2xs);
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    opacity: 0.8;
    white-space: nowrap;
}
.debate-source a {
    color: var(--accent-blue);
    text-decoration: none;
    opacity: 0.9;
}
.debate-source a:hover { opacity: 1; text-decoration: underline; }

.debate-tag {
    display: inline-flex;
    align-items: center;
    background: var(--accent-blue);
    color: white;
    padding: var(--sp-6) var(--sp-12);
    border-radius: var(--radius-4);
    font-size: var(--fs-md);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    font-family: var(--font-mono);
}

.debate-tag-text {
    white-space: nowrap;
}

.debate-tag-time {
    font-size: var(--fs-sm);
    margin-left: var(--sp-8);
    opacity: 0.85;
    font-weight: 400;
    white-space: nowrap;
}

.debate-amendments-count {
    margin-left: var(--sp-6);
    font-size: var(--fs-sm);
    opacity: 0.7;
    font-weight: 400;
}

.debate-section .bill-rule-tag {
    font-size: var(--fs-md);
    font-weight: 600;
    letter-spacing: var(--track-wide);
    padding: 5px var(--sp-10);
    border-radius: var(--radius-4);
    color: var(--text-secondary);
    border-color: var(--border-color);
    background: transparent;
    text-transform: uppercase;
}
.debate-section .bill-rule-tag:hover { opacity: 0.75; }

.debate-length-tag {
    display: inline-flex;
    align-items: center;
    background: transparent;
    color: var(--text-secondary);
    padding: 5px var(--sp-10);
    border-radius: var(--radius-4);
    font-size: var(--fs-md);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    font-family: var(--font-mono);
    border: 1px solid var(--border-color);
}

.debate-content {
    background: transparent;
    border: none;
    border-radius: 0;
    padding: var(--sp-16) var(--sp-24);
}

.debate-bill-header {
    margin-bottom: var(--sp-8);
}

.debate-bill-title {
    font-size: var(--fs-6xl);
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 var(--sp-20) 0;
    line-height: 1.3;
}

.debate-bill-id {
    font-family: var(--font-mono);
    font-size: var(--fs-lg);
    color: var(--accent-blue);
    font-weight: 600;
}

.debate-bill-description {
    font-size: var(--fs-lg);
    line-height: 1.6;
    color: var(--text-secondary);
    margin: 0;
}

.one-minute-section {
    display: none;
    padding: var(--sp-24) 0 0;
    margin-bottom: var(--sp-24);
}

body.one-minute-mode .one-minute-section {
    display: block;
}

.one-minute-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--sp-16);
}

.one-minute-tag {
    display: inline-flex;
    align-items: center;
    background: #92400e;
    color: white;
    padding: var(--sp-6) var(--sp-12);
    border-radius: var(--radius-4);
    font-size: var(--fs-md);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    font-family: var(--font-mono);
}

.one-minute-tag-time {
    font-size: var(--fs-sm);
    margin-left: var(--sp-8);
    opacity: 0.9;
    font-weight: 400;
}

.one-minute-header-right {
    display: flex;
    justify-content: flex-end;
}

.one-minute-source {
    font-size: var(--fs-md);
    color: var(--text-muted);
}

.one-minute-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.one-minute-content {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-8);
    padding: var(--sp-24);
    display: flex;
    flex-direction: column;
    gap: var(--sp-16);
}

.one-minute-description-line {
    font-size: var(--fs-2xl);
    font-style: italic;
    color: var(--text-primary);
    line-height: 1.6;
    padding-bottom: var(--sp-16);
    border-bottom: 1px solid var(--border-color);
}

.one-minute-explainer {
    font-size: var(--fs-lg);
    color: var(--text-secondary);
    line-height: 1.7;
    margin: 0;
}

.one-minute-tags-row {
    display: flex;
    flex-wrap: wrap;
    gap: var(--sp-8);
}

.one-minute-pill {
    font-size: var(--fs-md);
    font-weight: 600;
    font-family: var(--font-mono);
    padding: var(--sp-4) var(--sp-10);
    border-radius: var(--radius-12);
    background: rgba(180, 83, 9, 0.12);
    border: 1px solid rgba(180, 83, 9, 0.35);
    color: var(--accent-amber);
    text-transform: uppercase;
    letter-spacing: 0.3px;
}

.special-order-section {
    display: none;
    padding: var(--sp-24) 0 0;
    margin-bottom: var(--sp-24);
}

body.special-order-mode .special-order-section {
    display: block;
}

.special-order-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--sp-16);
}

.special-order-tag {
    display: inline-flex;
    align-items: center;
    background: #1e3a5f;
    color: white;
    padding: var(--sp-6) var(--sp-12);
    border-radius: var(--radius-4);
    font-size: var(--fs-md);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    font-family: var(--font-mono);
}

.special-order-tag-time {
    font-size: var(--fs-sm);
    margin-left: var(--sp-8);
    opacity: 0.9;
    font-weight: 400;
}

.special-order-header-right {
    display: flex;
    justify-content: flex-end;
}

.special-order-source {
    font-size: var(--fs-md);
    color: var(--text-muted);
}

.special-order-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.special-order-content {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-8);
    padding: var(--sp-24);
    display: flex;
    flex-direction: column;
    gap: var(--sp-16);
}

.special-order-description-line {
    font-size: var(--fs-2xl);
    font-style: italic;
    color: var(--text-primary);
    line-height: 1.6;
    padding-bottom: var(--sp-16);
    border-bottom: 1px solid var(--border-color);
}

.special-order-explainer {
    font-size: var(--fs-lg);
    color: var(--text-secondary);
    line-height: 1.7;
    margin: 0;
}

.special-order-tags-row {
    display: flex;
    flex-wrap: wrap;
    gap: var(--sp-8);
}

.special-order-pill {
    font-size: var(--fs-md);
    font-weight: 600;
    font-family: var(--font-mono);
    padding: var(--sp-4) var(--sp-10);
    border-radius: var(--radius-12);
    background: rgba(30, 58, 95, 0.15);
    border: 1px solid rgba(56, 108, 176, 0.35);
    color: var(--accent-blue);
    text-transform: uppercase;
    letter-spacing: 0.3px;
}

.morning-hour-section {
    display: none;
    padding: var(--sp-24) 0 0;
    margin-bottom: var(--sp-24);
}

body.morning-hour-mode .morning-hour-section {
    display: block;
}

.morning-hour-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--sp-16);
}

.morning-hour-tag {
    display: inline-flex;
    align-items: center;
    background: #1b6b3a;
    color: white;
    padding: var(--sp-6) var(--sp-12);
    border-radius: var(--radius-4);
    font-size: var(--fs-md);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    font-family: var(--font-mono);
}

.morning-hour-tag-time {
    font-size: var(--fs-sm);
    margin-left: var(--sp-8);
    opacity: 0.9;
    font-weight: 400;
}

.morning-hour-header-right {
    display: flex;
    justify-content: flex-end;
}

.morning-hour-source {
    font-size: var(--fs-md);
    color: var(--text-muted);
}

.morning-hour-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.morning-hour-content {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-8);
    padding: var(--sp-24);
    display: flex;
    flex-direction: column;
    gap: var(--sp-16);
}

.morning-hour-description-line {
    font-size: var(--fs-2xl);
    font-style: italic;
    color: var(--text-primary);
    line-height: 1.6;
    padding-bottom: var(--sp-16);
    border-bottom: 1px solid var(--border-color);
}

.morning-hour-tags-row {
    display: flex;
    flex-wrap: wrap;
    gap: var(--sp-8);
}

.morning-hour-pill {
    font-size: var(--fs-md);
    font-weight: 600;
    font-family: var(--font-mono);
    padding: var(--sp-4) var(--sp-10);
    border-radius: var(--radius-12);
    background: rgba(46, 160, 67, 0.12);
    border: 1px solid rgba(46, 160, 67, 0.35);
    color: var(--accent-green);
    text-transform: uppercase;
    letter-spacing: 0.3px;
}

.morning-hour-explainer {
    font-size: var(--fs-lg);
    color: var(--text-secondary);
    line-height: 1.7;
    margin: 0;
}

.speech-mode-ai-note {
    font-size: var(--fs-md);
    color: var(--text-muted);
    opacity: 0.6;
}

.speech-mode-ai-note a {
    color: inherit;
    text-decoration: underline;
    text-decoration-color: transparent;
}

.speech-mode-ai-note a:hover {
    text-decoration-color: currentColor;
}

.prayer-section {
    display: none;
    padding: var(--sp-24) 0 0;
    margin-bottom: var(--sp-24);
}

body.prayer-mode .prayer-section {
    display: block;
}

.silence-section {
    display: none;
    padding: var(--sp-24) 0 0;
    margin-bottom: var(--sp-24);
}

body.silence-mode .silence-section {
    display: block;
}

.oath-section {

}

.speaker-section {
    display: none;
    padding: var(--sp-24) 0 0;
    margin-bottom: var(--sp-24);
}

body.speaker-mode .speaker-section {
    display: block;
}

.committee-chair-section {
    display: none;
    padding: var(--sp-24) 0 0;
    margin-bottom: var(--sp-24);
}

body.committee-chair-mode .committee-chair-section {
    display: block;
}

.committee-chair-tag {
    display: inline-flex;
    align-items: center;
    background: var(--accent-blue);
    color: white;
    padding: var(--sp-6) var(--sp-12);
    border-radius: var(--radius-4);
    font-size: var(--fs-md);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    font-family: var(--font-mono);
}

.committee-chair-tag-time {
    font-size: var(--fs-sm);
    margin-left: var(--sp-8);
    opacity: 0.9;
    font-weight: 400;
}

.committee-chair-header-right {
    display: flex;
    justify-content: flex-end;
}

.committee-chair-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.committee-chair-source a:hover {
    text-decoration: underline;
}

.committee-chair-content {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-8);
    padding: var(--sp-24);
    display: flex;
    gap: var(--sp-24);
}

.committee-chair-image-container {
    flex-shrink: 0;
    width: 150px;
    height: 150px;
    position: relative;
}

.committee-chair-image,
.committee-chair-image-placeholder {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;
}

.committee-chair-image {
    width: 100%; height: 100%;
    object-fit: cover;
    border-radius: var(--radius-12);
    display: block;
    opacity: 0;
    transition: opacity var(--dur-150) ease;
    border: 2px solid var(--border-color);
}

.committee-chair-image-placeholder {
    border: 2px solid var(--border-color);
    border-radius: var(--radius-12);
    overflow: hidden;
}

.committee-chair-info { flex: 1; }

.committee-chair-member-title {
    font-size: var(--fs-4xl);
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 var(--sp-4);
}

.committee-chair-member-name {
    font-size: var(--fs-xl);
    color: var(--text-secondary);
    margin: 0 0 var(--sp-8);
}

.committee-chair-member-meta {
    display: flex;
    align-items: center;
    gap: var(--sp-8);
    margin-bottom: var(--sp-6);
}

.committee-chair-member-additional {
    font-size: var(--fs-base);
    color: var(--text-muted);
    margin: 0 0 var(--sp-8);
}

.committee-chair-member-website {
    font-size: var(--fs-md);
    color: var(--accent-blue);
    text-decoration: none;
    font-family: var(--font-mono);
}

.committee-chair-member-website:hover { text-decoration: underline; }

.prayer-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--sp-16);
}

.prayer-tag {
    display: inline-flex;
    align-items: center;
    background: var(--accent-purple);
    color: white;
    padding: var(--sp-6) var(--sp-12);
    border-radius: var(--radius-4);
    font-size: var(--fs-md);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    font-family: var(--font-mono);
}

.prayer-tag-time {
    font-size: var(--fs-sm);
    margin-left: var(--sp-8);
    opacity: 0.9;
    font-weight: 400;
}

.prayer-header-right {
    display: flex;
    justify-content: flex-end;
}

.prayer-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.prayer-source a:hover {
    text-decoration: underline;
}

.silence-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--sp-16);
}

.silence-tag {
    display: inline-flex;
    align-items: center;
    background: var(--text-secondary);
    color: white;
    padding: var(--sp-6) var(--sp-12);
    border-radius: var(--radius-4);
    font-size: var(--fs-md);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    font-family: var(--font-mono);
}

.silence-tag-time {
    font-size: var(--fs-sm);
    margin-left: var(--sp-8);
    opacity: 0.9;
    font-weight: 400;
}

.silence-header-right {
    display: flex;
    justify-content: flex-end;
}

.silence-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.silence-source a:hover {
    text-decoration: underline;
}

.silence-content {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-8);
    padding: var(--sp-24);
}

.silence-title {
    font-size: var(--fs-4xl);
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 var(--sp-8) 0;
}

.silence-description {
    font-size: var(--fs-xl);
    line-height: 1.6;
    color: var(--text-secondary);
    margin: 0;
}

.prayer-content {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-8);
    padding: var(--sp-24);
    display: flex;
    gap: var(--sp-24);
}

.prayer-image-container {
    flex-shrink: 0;
    width: 150px;
    height: 150px;
    position: relative;
}

.prayer-image,
.prayer-image-placeholder {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

.prayer-image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: var(--radius-12);
    display: none;
    opacity: 0;
    transition: opacity var(--dur-150) ease;
    border: 2px solid var(--border-color);
}

.prayer-image[src] {
    display: block;
}

.prayer-image-placeholder {
    width: 100%;
    height: 100%;
    background: rgba(136, 153, 170, 0.1);
    border: 2px solid var(--border-color);
    border-radius: var(--radius-12);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--sp-8);
    color: var(--text-muted);
}

.placeholder-svg {
    width: 64px;
    height: 64px;
    opacity: 0.5;
}

.placeholder-text {
    font-size: var(--fs-base);
    font-weight: 600;
    text-transform: uppercase;
    font-family: var(--font-mono);
    opacity: 0.7;
}

.prayer-info {
    flex: 1;
}

.prayer-leader-title {
    font-size: var(--fs-4xl);
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 var(--sp-8) 0;
}

.prayer-leader-name {
    font-size: var(--fs-3xl);
    font-weight: 600;
    color: var(--accent-blue);
    margin: 0 0 var(--sp-12) 0;
}

.prayer-leader-description {
    font-size: var(--fs-xl);
    line-height: 1.6;
    color: var(--text-secondary);
    margin: 0;
}

.prayer-leader-website {
    display: inline-block;
    font-size: var(--fs-base);
    color: var(--accent-blue);
    font-family: var(--font-mono);
    text-decoration: none;
    margin-top: var(--sp-4);
    word-break: break-all;
}

.prayer-leader-website:hover {
    text-decoration: underline;
}

.prayer-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.prayer-source a:hover {
    text-decoration: underline;
}

.pledge-section {

}

.pledge-tag {
    display: inline-flex;
    align-items: center;
    background: var(--accent-red);
    color: white;
    padding: var(--sp-6) var(--sp-12);
    border-radius: var(--radius-4);
    font-size: var(--fs-md);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    font-family: var(--font-mono);
}

.pledge-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--sp-16);
}

.pledge-tag-time {
    font-size: var(--fs-sm);
    margin-left: var(--sp-8);
    opacity: 0.9;
    font-weight: 400;
}

.pledge-header-right {
    display: flex;
    justify-content: flex-end;
}

.pledge-content {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-8);
    padding: var(--sp-24);
    display: flex;
    gap: var(--sp-24);
}

.pledge-image-container {
    flex-shrink: 0;
    width: 150px;
    height: 150px;
    position: relative;
}

.pledge-image,
.pledge-image-placeholder {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

.pledge-image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: var(--radius-12);
    display: block;
    opacity: 0;
    transition: opacity var(--dur-150) ease;
    border: 2px solid var(--border-color);
}

.pledge-image-placeholder {
    width: 100%;
    height: 100%;
    border: 2px solid var(--border-color);
    border-radius: var(--radius-12);
    overflow: hidden;
}

.placeholder-svg {
    width: 64px;
    height: 64px;
    opacity: 0.5;
}

.pledge-info {
    flex: 1;
}

.pledge-leader-title {
    font-size: var(--fs-4xl);
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 var(--sp-8) 0;
}

.pledge-leader-name {
    font-size: var(--fs-3xl);
    font-weight: 600;
    color: var(--accent-blue);
    margin: 0 0 var(--sp-8) 0;
}

.pledge-leader-meta {
    display: flex;
    align-items: center;
    gap: var(--sp-8);
    margin-bottom: var(--sp-8);
}

.pledge-party-tag {
    font-size: var(--fs-md);
    font-weight: 700;
    text-transform: uppercase;
    padding: var(--sp-2) var(--sp-8);
    border-radius: var(--radius-4);
    font-family: var(--font-mono);
}

.pledge-party-tag.republican {
    background: var(--party-r-tint);
    color: var(--party-r);
}

.pledge-party-tag.democrat {
    background: var(--party-d-tint);
    color: var(--party-d);
}

.pledge-party-tag.independent {
    background: var(--party-i-tint);
    color: var(--party-i);
}

.pledge-leader-details {
    font-size: var(--fs-lg);
    color: var(--text-secondary);
    margin: 0;
    font-family: var(--font-mono);
}

.pledge-leader-additional {
    font-size: var(--fs-base);
    color: var(--text-muted);
    margin: 0;
    font-style: italic;
}

.pledge-leader-website {
    display: inline-block;
    margin-top: var(--sp-4);
}

.pledge-header-right {
    display: flex;
    justify-content: flex-end;
}

.pledge-time {
    font-size: var(--fs-base);
    color: var(--text-muted);
    font-family: var(--font-mono);
    margin-right: var(--sp-12);
}

.pledge-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.pledge-source a:hover {
    text-decoration: underline;
}

.pledge-constitution-source {
    font-size: var(--fs-md);
    color: var(--text-muted);
}

.pledge-constitution-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.pledge-constitution-source a:hover {
    text-decoration: underline;
}

.oath-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--sp-16);
}

.oath-tag {
    display: inline-flex;
    align-items: center;
    background: var(--accent-amber);
    color: white;
    padding: var(--sp-6) var(--sp-12);
    border-radius: var(--radius-4);
    font-size: var(--fs-md);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    font-family: var(--font-mono);
}

.oath-tag-time {
    font-size: var(--fs-sm);
    margin-left: var(--sp-8);
    opacity: 0.9;
    font-weight: 400;
}

.oath-header-right {
    display: flex;
    justify-content: flex-end;
}

.oath-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.oath-source a:hover {
    text-decoration: underline;
}

.oath-content {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-8);
    padding: var(--sp-24);
    display: flex;
    gap: var(--sp-24);
}

.oath-image-container {
    flex-shrink: 0;
    width: 150px;
    height: 150px;
    position: relative;
}

.oath-image,
.oath-image-placeholder {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;
}

.oath-image {
    object-fit: cover;
    border-radius: var(--radius-12);
    display: block;
    opacity: 0;
    transition: opacity var(--dur-150) ease;
    border: 2px solid var(--border-color);
}

.oath-image-placeholder {
    border: 2px solid var(--border-color);
    border-radius: var(--radius-12);
    overflow: hidden;
}

.oath-info {
    flex: 1;
}

.oath-member-title {
    font-size: var(--fs-4xl);
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 var(--sp-8) 0;
}

.oath-member-name {
    font-size: var(--fs-3xl);
    font-weight: 600;
    color: var(--accent-blue);
    margin: 0 0 var(--sp-12) 0;
}

.oath-member-description {
    font-size: var(--fs-xl);
    line-height: 1.6;
    color: var(--text-secondary);
    margin: 0;
}

.oath-text-container {
    display: flex;
    flex-direction: column;
    gap: var(--sp-12);
    padding: var(--sp-16) var(--sp-16) var(--sp-16) var(--sp-24);
    background: var(--bg-elevated);
    border-radius: var(--radius-8);
    margin-top: var(--sp-16);
}

.oath-text {
    font-size: var(--fs-3xl);
    font-style: italic;
    color: var(--text-primary);
    line-height: 1.6;
}

.oath-source-inline {
    font-size: var(--fs-md);
    color: var(--text-muted);
}

.oath-source-inline a {
    color: var(--accent-blue);
    text-decoration: none;
}

.oath-source-inline a:hover {
    text-decoration: underline;
}

.pledge-text-container {
    display: flex;
    flex-direction: column;
    gap: var(--sp-12);
    padding: var(--sp-16) var(--sp-16) var(--sp-16) var(--sp-24);
    background: var(--bg-elevated);
    border-radius: var(--radius-8);
    margin-top: var(--sp-16);
}

.pledge-text-inner {
    display: flex;
    align-items: center;
    gap: var(--sp-16);
}

.pledge-flag {
    flex-shrink: 0;
    line-height: 0;
}

.pledge-text {
    font-size: var(--fs-3xl);
    font-style: italic;
    color: var(--text-primary);
    line-height: 1.6;
}

.speaker-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--sp-16);
}

.speaker-tag {
    display: inline-flex;
    align-items: center;
    background: var(--accent-amber);
    color: white;
    padding: var(--sp-6) var(--sp-12);
    border-radius: var(--radius-4);
    font-size: var(--fs-md);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    font-family: var(--font-mono);
}

.speaker-tag-time {
    font-size: var(--fs-sm);
    margin-left: var(--sp-8);
    opacity: 0.9;
    font-weight: 400;
}

.speaker-header-right {
    display: flex;
    justify-content: flex-end;
}

.speaker-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.speaker-source a:hover {
    text-decoration: underline;
}

.speaker-content {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-8);
    padding: var(--sp-24);
    display: flex;
    gap: var(--sp-24);
}

.speaker-image-container {
    flex-shrink: 0;
    width: 150px;
    height: 150px;
    position: relative;
}

.speaker-image,
.speaker-image-placeholder {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

.speaker-image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: var(--radius-12);
    display: block;
    opacity: 0;
    transition: opacity var(--dur-150) ease;
    border: 2px solid var(--border-color);
}

.speaker-image-placeholder {
    width: 100%;
    height: 100%;
    border: 2px solid var(--border-color);
    border-radius: var(--radius-12);
    overflow: hidden;
}

.speaker-info {
    flex: 1;
}

.speaker-member-title {
    font-size: var(--fs-4xl);
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 var(--sp-8) 0;
}

.speaker-member-name {
    font-size: var(--fs-3xl);
    font-weight: 600;
    color: var(--accent-blue);
    margin: 0 0 var(--sp-8) 0;
}

.speaker-member-meta {
    display: flex;
    align-items: center;
    gap: var(--sp-8);
    margin-bottom: var(--sp-8);
}

.speaker-party-tag {
    font-size: var(--fs-md);
    font-weight: 700;
    text-transform: uppercase;
    padding: var(--sp-2) var(--sp-8);
    border-radius: var(--radius-4);
    font-family: var(--font-mono);
}

.speaker-member-details {
    font-size: var(--fs-lg);
    color: var(--text-secondary);
    margin: 0;
    font-family: var(--font-mono);
}

.speaker-member-additional {
    font-size: var(--fs-base);
    color: var(--text-muted);
    margin: 0;
    font-style: italic;
}

.speaker-member-website {
    display: inline-block;
    margin-top: var(--sp-4);
}

.speaker-member-description {
    font-size: var(--fs-xl);
    line-height: 1.6;
    color: var(--text-secondary);
    margin: var(--sp-12) 0 0 0;
}

.message-section {
    display: none;
    padding: var(--sp-24) 0 0;
    margin-bottom: var(--sp-24);
}

body.message-mode .message-section {
    display: block;
}

.message-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--sp-16);
}

.message-tag {
    display: inline-flex;
    align-items: center;
    background: #1a3a4a;
    color: white;
    padding: var(--sp-6) var(--sp-12);
    border-radius: var(--radius-4);
    font-size: var(--fs-md);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    font-family: var(--font-mono);
}

.message-tag-time {
    font-size: var(--fs-sm);
    margin-left: var(--sp-8);
    opacity: 0.9;
    font-weight: 400;
}

.message-header-right {
    display: flex;
    justify-content: flex-end;
}

.message-source {
    font-size: var(--fs-md);
    color: var(--text-muted);
}

.message-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.message-content {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-8);
    padding: var(--sp-24);
    display: flex;
    flex-direction: column;
    gap: var(--sp-12);
}

.message-from-line {
    font-size: var(--fs-2xl);
    font-style: italic;
    color: var(--text-primary);
    line-height: 1.6;
    padding-bottom: var(--sp-12);
    border-bottom: 1px solid var(--border-color);
}

.message-body {
    font-size: var(--fs-lg);
    color: var(--text-secondary);
    line-height: 1.7;
}

.joint-meeting-section {
    display: none;
    padding: var(--sp-24) 0 0;
    margin-bottom: var(--sp-24);
}

body.joint-meeting-mode .joint-meeting-section {
    display: block;
}

.joint-meeting-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--sp-16);
}

.joint-meeting-tag {
    display: inline-flex;
    align-items: center;
    background: #4a1942;
    color: white;
    padding: var(--sp-6) var(--sp-12);
    border-radius: var(--radius-4);
    font-size: var(--fs-md);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    font-family: var(--font-mono);
}

.joint-meeting-tag-time {
    font-size: var(--fs-sm);
    margin-left: var(--sp-8);
    opacity: 0.9;
    font-weight: 400;
}

.joint-meeting-header-right {
    display: flex;
    justify-content: flex-end;
}

.joint-meeting-source {
    font-size: var(--fs-md);
    color: var(--text-muted);
}

.joint-meeting-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.joint-meeting-content {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-8);
    padding: var(--sp-24);
}

.joint-meeting-description-line {
    font-size: var(--fs-2xl);
    font-style: italic;
    color: var(--text-primary);
    line-height: 1.6;
}

.journal-section {

}

.journal-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--sp-16);
}

.journal-tag {
    display: inline-flex;
    align-items: center;
    background: #5a3e9b;
    color: white;
    padding: var(--sp-6) var(--sp-12);
    border-radius: var(--radius-4);
    font-size: var(--fs-md);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    font-family: var(--font-mono);
}

.journal-tag-time {
    font-size: var(--fs-sm);
    margin-left: var(--sp-8);
    opacity: 0.9;
    font-weight: 400;
}

.journal-header-right {
    display: flex;
    justify-content: flex-end;
}

.journal-source {
    font-size: var(--fs-md);
    color: var(--text-muted);
}

.journal-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.privilege-section { display: none; }

body.privilege-mode .privilege-section,
body.house-privilege-mode .privilege-section { display: block; }

.privilege-section.is-house .privilege-tag { background: #3b3f7a; }

.privilege-resolution {
    padding-top: var(--sp-16);
    border-top: 1px solid var(--border-color);
}

.privilege-resolution[hidden] { display: none; }

.privilege-resolution-head {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--sp-10);
    margin-bottom: var(--sp-6);
}

.privilege-resolution-id {
    font-family: var(--font-mono);
    font-size: var(--fs-md);
    font-weight: 700;
    letter-spacing: 0.05em;
    color: var(--accent-blue);
    padding: 3px var(--sp-8);
    background: rgba(88, 166, 255, 0.12);
    border-radius: var(--radius-4);
    text-decoration: none;
    white-space: nowrap;
}

.privilege-resolution-id:hover { text-decoration: underline; }

.privilege-resolution-outcome {
    font-size: var(--fs-xs);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    color: var(--text-secondary);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-4);
    padding: var(--sp-2) var(--sp-8);
}

.privilege-resolution-outcome[hidden] { display: none; }

.privilege-resolution-title {
    font-size: var(--fs-lg);
    line-height: 1.5;
    color: var(--text-primary);
    margin: 0;
}

.privilege-resolution-title[hidden] { display: none; }

.privilege-resolution:not([hidden]) + .privilege-description-line {
    padding-top: var(--sp-12);
    border-top: none;
}

.privilege-tag {
    display: inline-flex;
    align-items: center;
    background: #0f5b5e;
    color: white;
    padding: var(--sp-6) var(--sp-12);
    border-radius: var(--radius-4);
    font-size: var(--fs-md);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    font-family: var(--font-mono);
}

.privilege-tag-time {
    font-size: var(--fs-sm);
    margin-left: var(--sp-8);
    opacity: 0.9;
    font-weight: 400;
}

.privilege-content {
    display: flex;
    flex-direction: column;
    gap: var(--sp-16);
}

.privilege-card {
    display: flex;
    gap: var(--sp-24);
}

.privilege-card[hidden] { display: none; }
.privilege-member-website[hidden] { display: none; }

.privilege-card[hidden] + .privilege-description-line {
    padding-top: 0;
    border-top: none;
}

.privilege-image-container {
    flex-shrink: 0;
    width: 150px;
    height: 150px;
    position: relative;
}

.privilege-image,
.privilege-image-placeholder {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;
}

.privilege-image {
    width: 100%; height: 100%;
    object-fit: cover;
    border-radius: var(--radius-12);
    display: block;
    opacity: 0;
    transition: opacity var(--dur-150) ease;
    border: 2px solid var(--border-color);
}

.privilege-image-placeholder {
    border: 2px solid var(--border-color);
    border-radius: var(--radius-12);
    overflow: hidden;
}

.privilege-info { flex: 1; min-width: 0; }

.privilege-member-name {
    font-size: var(--fs-4xl);
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 var(--sp-6);
}

.privilege-member-meta {
    display: flex;
    align-items: center;
    gap: var(--sp-8);
    margin-bottom: var(--sp-6);
}

.privilege-party-tag {
    font-size: var(--fs-md);
    font-weight: 700;
    text-transform: uppercase;
    padding: var(--sp-2) var(--sp-8);
    border-radius: var(--radius-4);
    font-family: var(--font-mono);
}

.privilege-party-tag.republican,
.committee-chair-party-tag.republican {
    background: var(--party-r-tint);
    color: var(--party-r);
}

.privilege-party-tag.democrat,
.committee-chair-party-tag.democrat {
    background: var(--party-d-tint);
    color: var(--party-d);
}

.privilege-party-tag.independent,
.committee-chair-party-tag.independent {
    background: var(--party-i-tint);
    color: var(--party-i);
}

.committee-chair-party-tag {
    font-size: var(--fs-md);
    font-weight: 700;
    text-transform: uppercase;
    padding: var(--sp-2) var(--sp-8);
    border-radius: var(--radius-4);
    font-family: var(--font-mono);
}

.privilege-member-details {
    font-size: var(--fs-lg);
    color: var(--text-secondary);
    font-family: var(--font-mono);
}

.privilege-member-additional {
    font-size: var(--fs-base);
    color: var(--text-muted);
    margin: 0 0 var(--sp-8);
}

.privilege-tags-row {
    display: flex;
    flex-wrap: wrap;
    gap: var(--sp-8);
    margin-bottom: var(--sp-10);
}

.privilege-pill {
    font-size: var(--fs-xs);
    color: var(--text-secondary);
    background: var(--bg-elevated);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-4);
    padding: var(--sp-4) var(--sp-8);
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
}

.privilege-pill[hidden] { display: none; }

.privilege-member-website {
    font-size: var(--fs-md);
    color: var(--accent-blue);
    text-decoration: none;
    font-family: var(--font-mono);
}

.privilege-member-website:hover { text-decoration: underline; }

.privilege-description-line {
    font-size: var(--fs-lg);
    line-height: 1.6;
    color: var(--text-secondary);
    margin: 0;
    padding-top: var(--sp-16);
    border-top: 1px solid var(--border-color);
}

.tellers-section { display: none; }

.tellers-tag {
    display: inline-flex;
    align-items: center;
    background: #8a3d62;
    color: white;
    padding: var(--sp-6) var(--sp-12);
    border-radius: var(--radius-4);
    font-size: var(--fs-md);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    font-family: var(--font-mono);
}

.tellers-tag-time {
    font-size: var(--fs-sm);
    margin-left: var(--sp-8);
    opacity: 0.9;
    font-weight: 400;
}

body.tellers-mode .tellers-section {
    display: block;
}

.tellers-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.tellers-source a:hover {
    text-decoration: underline;
}

.tellers-list {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: var(--sp-20) var(--sp-32);
    margin-top: var(--sp-16);
}

.teller-card {
    display: grid;
    grid-template-columns: 104px minmax(0, 1fr);
    gap: var(--sp-14);
    align-items: center;
    background: transparent;
    border: none;
    border-radius: 0;
    padding: 0;
}

.teller-photo-wrap {
    position: relative;
    width: 104px;
    height: 104px;
    border-radius: var(--radius-10);
    overflow: hidden;
    background: var(--bg-card);
}

.teller-photo-placeholder {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}

.teller-photo {
    position: relative;
    z-index: 1;
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    opacity: 0;
    transition: opacity var(--dur-200) ease;
}

.teller-meta {
    min-width: 0;
    display: grid;
    gap: var(--sp-8);
}

.teller-name {
    font-size: var(--fs-4xl);
    font-weight: 700;
    color: var(--text-primary);
    line-height: 1.15;
}

.teller-details {
    display: flex;
    flex-wrap: wrap;
    gap: var(--sp-8);
    align-items: center;
}

.teller-state {
    color: var(--text-secondary);
    font-family: var(--font-mono);
    font-size: var(--fs-sm);
}

.teller-meta-line {
    color: var(--text-muted);
    font-size: var(--fs-base);
    line-height: 1.45;
}

.teller-link {
    color: var(--accent-blue);
    text-decoration: none;
    font-size: var(--fs-base);
    font-family: var(--font-mono);
}

.teller-link:hover {
    text-decoration: underline;
}

.journal-content {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-8);
    padding: var(--sp-24);
    display: flex;
    gap: var(--sp-24);
    margin-bottom: var(--sp-16);
}

.journal-image-container {
    flex-shrink: 0;
    width: 150px;
    height: 150px;
    position: relative;
}

.journal-image,
.journal-image-placeholder {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;
}

.journal-image {
    object-fit: cover;
    border-radius: var(--radius-12);
    display: block;
    opacity: 0;
    transition: opacity var(--dur-150) ease;
    border: 2px solid var(--border-color);
}

.journal-image-placeholder {
    border: 2px solid var(--border-color);
    border-radius: var(--radius-12);
    overflow: hidden;
}

.journal-info {
    flex: 1;
}

.journal-chair-title {
    font-size: var(--fs-4xl);
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 var(--sp-8) 0;
}

.journal-chair-name {
    font-size: var(--fs-3xl);
    font-weight: 600;
    color: var(--accent-blue);
    margin: 0 0 var(--sp-8) 0;
}

.journal-chair-meta {
    display: flex;
    align-items: center;
    gap: var(--sp-8);
    margin-bottom: var(--sp-8);
}

.journal-party-tag {
    font-size: var(--fs-md);
    font-weight: 700;
    padding: var(--sp-2) var(--sp-8);
    border-radius: var(--radius-4);
    font-family: var(--font-mono);
    border: 1px solid currentColor;
}

.journal-party-tag.republican {
    background: var(--party-r-tint);
    color: var(--party-r);
}

.journal-party-tag.democrat {
    background: var(--party-d-tint);
    color: var(--party-d);
}

.journal-party-tag.independent {
    background: var(--party-i-tint);
    color: var(--party-i);
}

.journal-chair-details {
    font-size: var(--fs-base);
    color: var(--text-muted);
    font-family: var(--font-mono);
}

.journal-chair-additional {
    font-size: var(--fs-lg);
    color: var(--text-secondary);
    margin: var(--sp-4) 0 var(--sp-8) 0;
}

.journal-chair-website {
    display: inline-block;
    margin-top: var(--sp-4);
}

.journal-approval-container {
    padding: var(--sp-20) var(--sp-24);
    margin-bottom: var(--sp-16);
}

.journal-approval-badge {
    display: inline-flex;
    align-items: center;
    gap: var(--sp-8);
    background: rgba(63, 185, 80, 0.12);
    border: 1px solid rgba(63, 185, 80, 0.4);
    color: var(--accent-green);
    padding: var(--sp-6) var(--sp-14);
    border-radius: var(--radius-20);
    font-size: var(--fs-base);
    font-weight: 700;
    font-family: var(--font-mono);
    letter-spacing: var(--track-wide);
    margin-bottom: var(--sp-14);
}

.journal-check-icon {
    width: 16px;
    height: 16px;
    stroke: var(--accent-green);
    flex-shrink: 0;
}

.journal-approval-text {
    font-size: var(--fs-2xl);
    color: var(--text-primary);
    line-height: 1.7;
    margin: 0;
}

#journal-last-session-date {
    font-weight: 700;
    color: var(--accent-blue);
}

.journal-text-container {
    display: flex;
    flex-direction: column;
    gap: var(--sp-12);
    padding: var(--sp-16);
    background: var(--bg-elevated);
    border-radius: var(--radius-8);
}

.journal-text-inner {
    display: flex;
    align-items: flex-start;
    gap: var(--sp-16);
}

.journal-text {
    font-size: var(--fs-2xl);
    font-style: italic;
    color: var(--text-primary);
    line-height: 1.7;
}

.journal-constitution-source {
    font-size: var(--fs-md);
    color: var(--text-muted);
}

.journal-constitution-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.joint-session-section {
    display: none;
    padding: var(--sp-24) 0 0;
    margin-bottom: var(--sp-24);
}

body.joint-session-mode .joint-session-section {
    display: block;
}

.joint-session-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--sp-16);
}

.joint-session-tag {
    display: inline-flex;
    align-items: center;
    background: #4a2800;
    color: white;
    padding: var(--sp-6) var(--sp-12);
    border-radius: var(--radius-4);
    font-size: var(--fs-md);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    font-family: var(--font-mono);
}

.joint-session-tag-time {
    font-size: var(--fs-sm);
    margin-left: var(--sp-8);
    opacity: 0.9;
    font-weight: 400;
}

.joint-session-header-right {
    display: flex;
    justify-content: flex-end;
}

.joint-session-source {
    font-size: var(--fs-md);
    color: var(--text-muted);
}

.joint-session-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.joint-session-content {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-8);
    padding: var(--sp-24);
}

.joint-session-description-line {
    font-size: var(--fs-2xl);
    font-style: italic;
    color: var(--text-primary);
    line-height: 1.6;
}

.joint-session-presiding-line {
    font-size: var(--fs-lg);
    color: var(--text-secondary);
    margin-top: var(--sp-8);
}

.cert-election-section {

}

.cert-election-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--sp-16);
}

.cert-election-tag {
    display: inline-flex;
    align-items: center;
    background: #1a3a58;
    color: white;
    padding: var(--sp-6) var(--sp-12);
    border-radius: var(--radius-4);
    font-size: var(--fs-md);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    font-family: var(--font-mono);
}

.cert-election-tag-time {
    font-size: var(--fs-sm);
    margin-left: var(--sp-8);
    opacity: 0.9;
    font-weight: 400;
}

.cert-election-header-right {
    display: flex;
    justify-content: flex-end;
}

.cert-election-source {
    font-size: var(--fs-md);
    color: var(--text-muted);
}

.cert-election-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.cert-election-approval-container {
    padding: var(--sp-20) var(--sp-24);
    margin-bottom: var(--sp-16);
}

.cert-election-approval-badge {
    display: inline-flex;
    align-items: center;
    gap: var(--sp-8);
    background: rgba(63, 185, 80, 0.12);
    border: 1px solid rgba(63, 185, 80, 0.4);
    color: var(--accent-green);
    padding: var(--sp-6) var(--sp-14);
    border-radius: var(--radius-20);
    font-size: var(--fs-base);
    font-weight: 700;
    font-family: var(--font-mono);
    letter-spacing: var(--track-wide);
    margin-bottom: var(--sp-14);
}

.cert-election-check-icon {
    width: 16px;
    height: 16px;
    stroke: var(--accent-green);
    flex-shrink: 0;
}

.cert-election-approval-text {
    font-size: var(--fs-2xl);
    color: var(--text-primary);
    line-height: 1.7;
    margin: 0;
}

.cert-election-quote-container {
    display: flex;
    flex-direction: column;
    gap: var(--sp-12);
    padding: var(--sp-16);
    background: var(--bg-elevated);
    border-radius: var(--radius-8);
}

.cert-election-quote-inner {
    display: flex;
    align-items: flex-start;
    gap: var(--sp-16);
}

.cert-election-quote-text {
    font-size: var(--fs-2xl);
    font-style: italic;
    color: var(--text-primary);
    line-height: 1.7;
}

.cert-election-constitution-source {
    font-size: var(--fs-md);
    color: var(--text-muted);
}

.cert-election-constitution-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.cert-electoral-section {

}

.cert-electoral-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--sp-16);
}

.cert-electoral-tag {
    display: inline-flex;
    align-items: center;
    background: #7c1d1d;
    color: white;
    padding: var(--sp-6) var(--sp-12);
    border-radius: var(--radius-4);
    font-size: var(--fs-md);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    font-family: var(--font-mono);
}

.cert-electoral-tag-time {
    font-size: var(--fs-sm);
    margin-left: var(--sp-8);
    opacity: 0.9;
    font-weight: 400;
}

.cert-electoral-header-right {
    display: flex;
    justify-content: flex-end;
}

.cert-electoral-source {
    font-size: var(--fs-md);
    color: var(--text-muted);
}

.cert-electoral-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.cert-electoral-approval-container {
    padding: var(--sp-20) var(--sp-24);
    margin-bottom: var(--sp-16);
}

.cert-electoral-approval-badge {
    display: inline-flex;
    align-items: center;
    gap: var(--sp-8);
    background: rgba(63, 185, 80, 0.12);
    border: 1px solid rgba(63, 185, 80, 0.4);
    color: var(--accent-green);
    padding: var(--sp-6) var(--sp-14);
    border-radius: var(--radius-20);
    font-size: var(--fs-base);
    font-weight: 700;
    font-family: var(--font-mono);
    letter-spacing: var(--track-wide);
    margin-bottom: var(--sp-14);
}

.cert-electoral-check-icon {
    width: 16px;
    height: 16px;
    stroke: var(--accent-green);
    flex-shrink: 0;
}

.cert-electoral-approval-text {
    font-size: var(--fs-2xl);
    color: var(--text-primary);
    line-height: 1.7;
    margin: 0;
}

.cert-electoral-quote-container {
    display: flex;
    flex-direction: column;
    gap: var(--sp-12);
    padding: var(--sp-16);
    background: var(--bg-elevated);
    border-radius: var(--radius-8);
}

.cert-electoral-quote-inner {
    display: flex;
    align-items: flex-start;
    gap: var(--sp-16);
}

.cert-electoral-quote-text {
    font-size: var(--fs-2xl);
    font-style: italic;
    color: var(--text-primary);
    line-height: 1.7;
}

.cert-electoral-constitution-source {
    font-size: var(--fs-md);
    color: var(--text-muted);
}

.cert-electoral-constitution-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.sine-die-section {

}

.sine-die-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--sp-16);
}

.sine-die-tag {
    display: inline-flex;
    align-items: center;
    background: #374151;
    color: white;
    padding: var(--sp-6) var(--sp-12);
    border-radius: var(--radius-4);
    font-size: var(--fs-md);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    font-family: var(--font-mono);
}

.sine-die-tag-time {
    font-size: var(--fs-sm);
    margin-left: var(--sp-8);
    opacity: 0.9;
    font-weight: 400;
}

.sine-die-header-right {
    display: flex;
    justify-content: flex-end;
}

.sine-die-source {
    font-size: var(--fs-md);
    color: var(--text-muted);
}

.sine-die-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.sine-die-content {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-8);
    padding: var(--sp-24);
    margin-bottom: var(--sp-16);
}

.sine-die-description-line {
    font-size: var(--fs-2xl);
    font-style: italic;
    color: var(--text-primary);
    line-height: 1.6;
}

.sine-die-quote-container {
    display: flex;
    flex-direction: column;
    gap: var(--sp-12);
    padding: var(--sp-16);
    background: var(--bg-elevated);
    border-radius: var(--radius-8);
}

.sine-die-quote-inner {
    display: flex;
    align-items: flex-start;
    gap: var(--sp-16);
}

.sine-die-quote-text {
    font-size: var(--fs-2xl);
    font-style: italic;
    color: var(--text-primary);
    line-height: 1.7;
}

.sine-die-constitution-source {
    font-size: var(--fs-md);
    color: var(--text-muted);
}

.sine-die-constitution-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.new-session-section {

}

.new-session-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--sp-16);
}

.new-session-tag {
    display: inline-flex;
    align-items: center;
    background: #0d3321;
    color: white;
    padding: var(--sp-6) var(--sp-12);
    border-radius: var(--radius-4);
    font-size: var(--fs-md);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    font-family: var(--font-mono);
}

.new-session-tag-time {
    font-size: var(--fs-sm);
    margin-left: var(--sp-8);
    opacity: 0.9;
    font-weight: 400;
}

.new-session-header-right {
    display: flex;
    justify-content: flex-end;
}

.new-session-source {
    font-size: var(--fs-md);
    color: var(--text-muted);
}

.new-session-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.new-session-content {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-8);
    padding: var(--sp-24);
    margin-bottom: var(--sp-16);
}

.new-session-description-line {
    font-size: var(--fs-2xl);
    font-style: italic;
    color: var(--text-primary);
    line-height: 1.6;
}

.new-session-quote-container {
    display: flex;
    flex-direction: column;
    gap: var(--sp-12);
    padding: var(--sp-16);
    background: var(--bg-elevated);
    border-radius: var(--radius-8);
}

.new-session-quote-inner {
    display: flex;
    align-items: flex-start;
    gap: var(--sp-16);
}

.new-session-quote-text {
    font-size: var(--fs-2xl);
    font-style: italic;
    color: var(--text-primary);
    line-height: 1.7;
}

.new-session-constitution-source {
    font-size: var(--fs-md);
    color: var(--text-muted);
}

.new-session-constitution-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.admin-oath-section {
    display: none;
    padding: var(--sp-24) 0 0;
    margin-bottom: var(--sp-24);
}

body.admin-oath-mode .admin-oath-section {
    display: block;
}

.admin-oath-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--sp-16);
}

.admin-oath-tag {
    display: inline-flex;
    align-items: center;
    background: #2c1a4a;
    color: white;
    padding: var(--sp-6) var(--sp-12);
    border-radius: var(--radius-4);
    font-size: var(--fs-md);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
    font-family: var(--font-mono);
}

.admin-oath-tag-time {
    font-size: var(--fs-sm);
    margin-left: var(--sp-8);
    opacity: 0.9;
    font-weight: 400;
}

.admin-oath-header-right {
    display: flex;
    justify-content: flex-end;
}

.admin-oath-source {
    font-size: var(--fs-md);
    color: var(--text-muted);
}

.admin-oath-source a {
    color: var(--accent-blue);
    text-decoration: none;
}

.admin-oath-administered-by {
    font-size: var(--fs-4xl);
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 var(--sp-8) 0;
}

.admin-oath-recipients {
    font-size: var(--fs-3xl);
    font-weight: 600;
    color: var(--accent-blue);
    margin: 0 0 var(--sp-12) 0;
}

.admin-oath-text-container {
    display: flex;
    flex-direction: column;
    gap: var(--sp-12);
    padding: var(--sp-16);
}

.admin-oath-text-inner {
    display: flex;
    align-items: flex-start;
    gap: var(--sp-16);
}

.admin-oath-text {
    font-size: var(--fs-2xl);
    font-style: italic;
    color: var(--text-primary);
    line-height: 1.7;
}

.admin-oath-source-inline {
    font-size: var(--fs-md);
    color: var(--text-muted);
}

.admin-oath-source-inline a {
    color: var(--accent-blue);
    text-decoration: none;
}

.admin-oath-source-inline a:hover {
    text-decoration: underline;
}

@media (max-width: 640px) {

    .main-header {
        height: auto;
        flex-wrap: wrap;
        padding: var(--sp-8) var(--sp-16);
        gap: var(--sp-6) var(--sp-10);
        align-items: center;
    }

    .header-logo-clip {
        position: static;
        transform: none;
        height: auto;
        width: auto;
        flex-shrink: 0;
        overflow: visible;
    }
    .header-logo { height: 40px; width: 40px; }

    .header-left {
        flex: 1;
        min-width: 0;
        flex-direction: column;
        align-items: flex-start;
        justify-content: center;
        gap: 3px;
    }
    .brand-nl    { display: none; }
    .brand-text  { font-size: var(--fs-md); }
    .today-date  { font-size: var(--fs-md); }

    .date-info   { flex-direction: row; align-items: center; flex-wrap: wrap; gap: var(--sp-4) var(--sp-6); }

    .header-right {
        width: 100%;
        gap: var(--sp-16);
        justify-content: flex-start;
        align-items: center;
    }

    .weather-panel {
        width: 52px;
        height: 32px;
        margin-right: 0;
        flex-shrink: 0;
        padding: var(--sp-4);
    }
    .weather-temp      { font-size: var(--fs-2xl); }
    .weather-condition { display: none; }

    .analog-clock { display: none; }
    .clock        { min-width: 0; gap: var(--sp-2); }
    .clock-label  { font-size: var(--fs-2xs); letter-spacing: 0.8px; }
    .clock-time   { font-size: var(--fs-sm); }

    .clock-group .clock:last-child { display: none; }

    .container { padding-top: 108px; }
    #vote, #proceedings, #bills, #live { scroll-margin-top: 116px; }

    .absentee-list {
        grid-template-columns: 1fr;
    }

    .panel-header {
        flex-wrap: wrap;
        height: auto;
        padding: var(--sp-10) var(--sp-16);
        gap: var(--sp-4) 0;
        align-items: flex-start;
    }

    .panel-header-right {
        display: contents;
    }

    .panel-header .panel-source {
        order: 2;
        width: 100%;
        text-align: left;
        white-space: normal;
        margin-top: 3px;
    }

    .bills-last-update,
    .proceedings-time,
    .party-breakdown-time {
        order: 1;
        margin-left: auto;
    }

    .party-breakdown-panel .panel-header {
        display: grid;
        grid-template-columns: 1fr auto;
        grid-template-rows: auto auto;
        align-items: center;
        column-gap: var(--sp-8);
        row-gap: 3px;
    }
    .party-breakdown-panel .panel-label {
        grid-column: 1; grid-row: 1;
    }
    .party-breakdown-time {
        grid-column: 2; grid-row: 1;
        margin-left: 0;
        justify-self: end;
        text-align: right;
    }
    .party-breakdown-panel .panel-header .panel-source {
        grid-column: 1; grid-row: 2;
        width: auto;
        margin-top: 0;
    }
    #majority-control-badge {
        grid-column: 2; grid-row: 2;
        justify-self: end;
    }

    .absentee-info {
        height: auto;
        padding: var(--sp-10) var(--sp-24);
        flex-wrap: wrap;
        gap: var(--sp-4);
    }

    .one-minute-section-header,
    .special-order-section-header,
    .morning-hour-section-header,
    .prayer-section-header,
    .silence-section-header,
    .oath-section-header,
    .speaker-section-header,
    .committee-chair-section-header,
    .pledge-section-header,
    .message-section-header,
    .joint-session-section-header,
    .joint-meeting-section-header,
    .cert-election-section-header,
    .cert-electoral-section-header,
    .sine-die-section-header,
    .new-session-section-header,
    .admin-oath-section-header,
    .journal-section-header {
        flex-wrap: wrap;
        gap: var(--sp-4);
    }

    .bills-columns {
        grid-template-columns: 1fr;
    }

    .bills-column-header {
        flex-wrap: wrap;
        height: auto;
    }
}

.calendar-desktop-nav {
    display: flex;
    align-items: center;
    gap: var(--sp-4);
}
.calendar-desktop-btn {
    background: none;
    border: 1px solid var(--border-color);
    color: var(--text-secondary);
    font-size: 16px;
    line-height: 1;
    width: 22px;
    height: 22px;
    border-radius: var(--radius-3);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: border-color var(--dur-150), color var(--dur-150);
}
.calendar-desktop-btn:hover { border-color: var(--accent-blue); color: var(--accent-blue); }
.calendar-desktop-today {
    background: none;
    border: 1px solid var(--border-color);
    color: var(--text-muted);
    font-size: var(--fs-2xs);
    font-family: var(--font-mono);
    font-weight: 700;
    letter-spacing: var(--track-wide);
    padding: 0 6px;
    height: 22px;
    border-radius: var(--radius-3);
    cursor: pointer;
    transition: border-color var(--dur-150), color var(--dur-150);
}
.calendar-desktop-today:hover { border-color: var(--accent-blue); color: var(--accent-blue); }
.calendar-today-at-current { opacity: 0.35; cursor: default; pointer-events: none; }

.calendar-mobile-nav {
    display: none;
}

@media (max-width: 768px) {
    .voting-calendar-wrap {
        grid-template-columns: 1fr;
    }
    .voting-calendar-month {
        display: none;
    }
    .voting-calendar-month.cal-mobile-visible {
        display: flex;
    }
    .this-week-strip {
        flex-direction: column;
        align-items: flex-start;
        gap: var(--sp-4);
    }
    .calendar-desktop-nav { display: none; }
    .calendar-mobile-nav {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: var(--sp-6) var(--sp-14);
        border-bottom: 1px solid var(--border-color);
    }
    .calendar-mobile-btn {
        background: none;
        border: 1px solid var(--border-color);
        color: var(--text-primary);
        font-size: 22px;
        line-height: 1;
        width: 32px;
        height: 32px;
        border-radius: var(--radius-6);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: border-color var(--dur-150), color var(--dur-150);
    }
    .calendar-mobile-btn:hover { border-color: var(--accent-blue); color: var(--accent-blue); }
    .calendar-mobile-title {
        font-size: var(--fs-sm);
        font-family: var(--font-mono);
        font-weight: 600;
        color: var(--text-primary);
        letter-spacing: var(--track-wide);
    }
}

@media (max-width: 400px) {
    .next-votes  { display: none; }
    .brand-text  { font-size: var(--fs-sm); }
    .today-date  { font-size: var(--fs-md); }
    .header-logo { height: 32px; width: 32px; }
}

.skip-link {
    position: absolute;
    left: -999px;
    top: 0;
    z-index: 9999;
    padding: var(--sp-8) var(--sp-16);
    background: var(--bg-card);
    color: var(--accent-blue);
    border: 1px solid var(--accent-blue);
    font-size: var(--fs-lg);
    font-family: var(--font-mono);
    text-decoration: none;
    border-radius: 0 0 var(--radius-4) 0;
}
.skip-link:focus {
    left: 0;
}

h1.brand-text {
    margin: 0;
    font-size: inherit;
    font-weight: inherit;
    line-height: inherit;
    letter-spacing: inherit;
}

:focus-visible {
    outline: 2px solid var(--accent-blue);
    outline-offset: 3px;
    border-radius: var(--radius-2);
}

.weather-panel:focus-within {
    width: 320px;
    height: 180px;
    border-color: var(--accent-blue);
    z-index: 100;
    background: #000;
    transform: translateY(56px);
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
}
.weather-panel:focus-within .weather-info { opacity: 0; }
.weather-panel:focus-within video { opacity: 1; }
.weather-panel:focus-within .capcam-live-dot {
    visibility: visible;
    animation: pip-blink 1.4s ease-in-out infinite;
}

@media (max-width: 640px) {

    body { overflow-x: hidden; }

    .info-btn,
    .whip-info-tip {
        width: 32px;
        height: 32px;
    }

    .whip-filter-btn,
    .vrec-open-btn,
    .absentee-filter-btn {
        min-height: 36px;
        padding-top: var(--sp-8);
        padding-bottom: var(--sp-8);
    }

    .vote-counts-row {
        gap: var(--sp-16);
    }

    .count-number {
        font-size: var(--fs-7xl);
    }

    .amendments-table th:nth-child(4),
    .amendments-table td:nth-child(4) {
        width: 80px;
        min-width: 80px;
    }

    .conn-dashboard {
        max-height: 80vh;
        overflow-y: auto;
    }

    .proceedings-feed {
        overscroll-behavior: contain;
    }

    .whip-info-tip:focus::after { opacity: 1; }

    .whip-info-tip::after {
        width: min(260px, calc(100vw - 32px));
        left: auto;
        right: 0;
    }

    .vote-series-sub-header {
        height: auto;
        min-height: 44px;
        flex-wrap: wrap;
        padding-top: var(--sp-10);
        padding-bottom: var(--sp-10);
    }
    .vote-series-sub-status {
        font-size: var(--fs-sm);
    }
    .vote-series-sub-timing {
        font-size: var(--fs-sm);
        width: 100%;
    }

    .whip-update-meta {
        grid-template-columns: auto 1fr;
        grid-template-rows: auto auto;
        height: auto;
        min-height: 44px;
        padding-top: var(--sp-8);
        padding-bottom: var(--sp-8);
        align-items: center;
    }
    .whip-update-time {
        grid-column: 2;
        grid-row: 1;
        margin-left: auto;
        text-align: right;
    }
    .whip-update-title {
        grid-column: 1 / -1;
        grid-row: 2;
        text-align: left;
        margin-top: var(--sp-4);
    }

    .bill-amendments-panel-header {
        flex-wrap: wrap;
    }
    .amdt-controls {
        width: 100%;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        padding-bottom: 2px;
    }

    .weather-panel:focus-within {
        width: 52px;
        height: 32px;
        transform: none;
        background: transparent;
        border-color: var(--border-color);
        z-index: auto;
        box-shadow: none;
    }
    .weather-panel:focus-within .weather-info { opacity: 1; }
    .weather-panel:focus-within video { opacity: 0; }
    .weather-panel:focus-within .capcam-live-dot { visibility: hidden; }
}

.proceedings-feed {
    overscroll-behavior: contain;
}

body.all-mode .vote-display,
body.all-mode .progress-section,
body.all-mode .vote-header,
body.all-mode .threshold-panel,
body.all-mode .quorum-panel,
body.all-mode .floor-grid-panel {
    display: block;
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
}

#suggest-fab {
    position: relative;
    font-size: var(--fs-sm);
    font-weight: 600;
    line-height: 1.3;
    text-align: center;
    color: rgba(255,255,255,.7);
    background: radial-gradient(ellipse at bottom, var(--border-color) 0%, var(--bg-elevated) 45%);
    border: 0;
    border-radius: var(--radius-6);
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.1);
    padding: 6px 14px 5px;
    cursor: pointer;
    white-space: normal;
    max-width: 72px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: all var(--dur-400) var(--ease-emphasis);
}
#suggest-fab::before {
    content: "";
    position: absolute; bottom: 0; left: 15%; width: 70%; height: 1px;
    background: linear-gradient(90deg, rgba(255,255,255,0) 0%, #fff 50%, rgba(255,255,255,0) 100%);
    opacity: .2;
    transition: all var(--dur-400) var(--ease-emphasis);
}
#suggest-fab:hover { color: #fff; transform: scale(1.06); }
#suggest-fab:hover::before { opacity: 1; }

.suggest-overlay {
    position: fixed; inset: 0; z-index: 1100;
    background: rgba(0,0,0,.55);
    backdrop-filter: blur(2px);
}
.suggest-drawer {
    position: fixed; z-index: 1101;
    background: var(--bg-card);
    border-left: 1px solid var(--border-color);
    display: flex; flex-direction: column;
    top: 0; right: 0; bottom: 0; width: 360px;
    transform: translateX(100%);
    transition: transform .28s cubic-bezier(.4,0,.2,1);
    overflow: hidden;
}
.suggest-drawer.open { transform: translateX(0); }

.suggest-drawer-header {
    flex-shrink: 0;
    display: flex; align-items: center; justify-content: space-between;
    padding: var(--sp-16) var(--sp-24) var(--sp-14);
    background: var(--bg-elevated);
    border-bottom: 1px solid var(--border-color);
    height: 52px; box-sizing: border-box;
}
.suggest-drawer-title {
    font-size: var(--fs-base);
    font-weight: 600;
    letter-spacing: var(--track-wider);
    color: var(--text-muted);
    text-transform: uppercase;
}
.suggest-drawer-close {
    background: none;
    border: 1px solid var(--border-color);
    color: var(--text-muted);
    width: 26px; height: 26px;
    border-radius: var(--radius-6);
    cursor: pointer;
    font-size: var(--fs-xl);
    display: flex; align-items: center; justify-content: center;
    transition: all var(--dur-150);
}
.suggest-drawer-close:hover { border-color: var(--accent-red); color: var(--accent-red); }

.suggest-form {
    flex: 1 1 auto; overflow-y: auto;
    padding: var(--sp-24);
    display: flex; flex-direction: column; gap: var(--sp-6);
}
.suggest-label {
    font-size: var(--fs-xs);
    font-weight: 600;
    letter-spacing: var(--track-wide);
    text-transform: uppercase;
    color: var(--text-muted);
    margin-top: var(--sp-4);
}
.suggest-label:first-child { margin-top: 0; }
.suggest-req { color: var(--accent-green); }
.suggest-opt { font-weight: 400; text-transform: none; letter-spacing: 0; color: var(--text-muted); opacity: .7; }
.suggest-textarea, .suggest-input {
    width: 100%;
    background: var(--bg-dark);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-4);
    padding: var(--sp-8) var(--sp-10);
    font-family: var(--font-sans);
    font-size: var(--fs-base);
    color: var(--text-primary);
    outline: none; resize: vertical;
    transition: border-color var(--dur-150);
}
.suggest-textarea:focus, .suggest-input:focus {
    border-color: color-mix(in srgb, var(--accent-blue) 60%, transparent);
}
.suggest-textarea::placeholder, .suggest-input::placeholder { color: var(--text-muted); opacity: .55; }
.suggest-textarea { margin-bottom: var(--sp-6); }
.suggest-hp { position: absolute; left: -9999px; opacity: 0; height: 0; }
.suggest-error { font-size: var(--fs-xs); color: var(--accent-red); margin-top: var(--sp-4); }
.suggest-consent { font-size: var(--fs-xs); color: var(--text-secondary); margin-top: var(--sp-10); line-height: 1.5; }
.suggest-privacy-link { color: var(--text-muted); text-decoration: underline; text-underline-offset: 2px; cursor: pointer; }
.suggest-privacy-link:hover { color: var(--accent-blue); }
.suggest-submit {
    position: relative;
    margin-top: var(--sp-16);
    font-size: var(--fs-sm);
    font-weight: 600;
    color: rgba(255,255,255,.85);
    background: radial-gradient(ellipse at bottom, color-mix(in srgb, var(--accent-green) 40%, var(--bg-elevated)) 0%, var(--bg-elevated) 55%);
    border: 0;
    border-radius: var(--radius-6);
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent-green) 30%, transparent);
    padding: 8px 0;
    width: 100%;
    cursor: pointer;
    transition: all var(--dur-400) var(--ease-emphasis);
}
.suggest-submit::before {
    content: "";
    position: absolute; bottom: 0; left: 15%; width: 70%; height: 1px;
    background: linear-gradient(90deg, rgba(255,255,255,0) 0%, #fff 50%, rgba(255,255,255,0) 100%);
    opacity: .2;
    transition: all var(--dur-400) var(--ease-emphasis);
}
.suggest-submit:hover:not(:disabled) { color: #fff; transform: scale(1.02); }
.suggest-submit:hover:not(:disabled)::before { opacity: 1; }
.suggest-submit:disabled { opacity: .35; cursor: default; }

.suggest-success {
    flex: 1 1 auto;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: var(--sp-12); padding: var(--sp-40);
    text-align: center;
}
.suggest-success-icon { font-size: 1.6rem; color: var(--accent-green); }
.suggest-success-msg {
    font-family: var(--font-mono);
    font-size: var(--fs-base);
    font-weight: 600;
    letter-spacing: var(--track-wider);
    text-transform: uppercase;
    color: var(--text-muted);
}

.suggest-data-modal {
    position: fixed; inset: 0; z-index: 1200;
    display: flex; align-items: center; justify-content: center;
    padding: var(--sp-24);
    backdrop-filter: blur(2px);
}
.suggest-data-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.65); }
.suggest-data-box {
    position: relative; z-index: 1;
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-12);
    padding: var(--sp-24);
    max-width: 400px; width: 100%;
    box-shadow: 0 8px 40px rgba(0,0,0,.5);
}
.suggest-data-close {
    position: absolute; top: 12px; right: 14px;
    background: none;
    border: 1px solid var(--border-color);
    color: var(--text-muted);
    width: 26px; height: 26px;
    border-radius: var(--radius-6);
    cursor: pointer;
    font-size: var(--fs-xl);
    display: flex; align-items: center; justify-content: center;
    transition: all var(--dur-150);
}
.suggest-data-close:hover { border-color: var(--accent-red); color: var(--accent-red); }
.suggest-data-title {
    font-size: var(--fs-base);
    font-weight: 600;
    letter-spacing: var(--track-wider);
    text-transform: uppercase;
    color: var(--text-muted);
    margin-bottom: var(--sp-16);
    padding-right: var(--sp-32);
}
.suggest-data-p { font-size: var(--fs-base); color: var(--text-secondary); line-height: 1.65; margin-bottom: var(--sp-10); }
.suggest-data-list { font-size: var(--fs-base); color: var(--text-secondary); line-height: 1.7; padding-left: 18px; margin-bottom: var(--sp-10); }
.suggest-data-box a { color: var(--accent-blue); text-decoration: none; }
.suggest-data-box a:hover { text-decoration: underline; }

@media (max-width: 640px) {
    #suggest-fab { display: none; }
    .suggest-drawer {
        top: auto; right: 0; left: 0; bottom: 0; width: 100%;
        max-height: 85vh; border-radius: 12px 12px 0 0;
        border-left: none; border-top: 1px solid var(--border-color);
        transform: translateY(100%);
    }
    .suggest-drawer.open { transform: translateY(0); }
}

.tweets-stale {
    padding: var(--sp-8) var(--sp-12);
    margin-bottom: var(--sp-8);
    background: rgba(210, 153, 34, 0.10);
    border: 1px solid rgba(210, 153, 34, 0.35);
    border-radius: var(--radius-6);
    color: var(--accent-amber);
    font-size: var(--fs-xs);
    text-transform: uppercase;
    letter-spacing: var(--track-wide);
}

}

.main-display > * {
    margin-bottom: 0;
}

.vote-column > * {
    margin-bottom: 0;
}

.mode-column > * {
    margin-bottom: 0;
}

.quote-card > * {
    border-radius: 0;
    margin: 0;
    background: transparent;
}

.one-minute-section, .special-order-section, .morning-hour-section,
.prayer-section, .silence-section, .oath-section, .speaker-section,
.committee-chair-section, .pledge-section, .message-section,
.joint-meeting-section, .journal-section, .joint-session-section,
.cert-election-section, .cert-electoral-section, .sine-die-section,
.new-session-section, .admin-oath-section, .privilege-section,
.tellers-section {
    padding: 0;
}

.one-minute-section-header, .special-order-section-header, .morning-hour-section-header,
.prayer-section-header, .silence-section-header, .oath-section-header,
.speaker-section-header, .committee-chair-section-header, .pledge-section-header,
.message-section-header, .joint-meeting-section-header, .journal-section-header,
.joint-session-section-header, .cert-election-section-header, .cert-electoral-section-header,
.sine-die-section-header, .new-session-section-header, .admin-oath-section-header,
.privilege-section-header, .tellers-section-header {
    display: flex;
    margin: 0;
}

.one-minute-source, .special-order-source, .morning-hour-source, .prayer-source,
.silence-source, .oath-source, .speaker-source, .committee-chair-source,
.pledge-source, .message-source, .joint-meeting-source, .journal-source,
.joint-session-source, .cert-election-source, .cert-electoral-source,
.sine-die-source, .new-session-source, .admin-oath-source, .privilege-source,
.tellers-source {
    font-size: var(--fs-2xs);
}

.one-minute-content, .special-order-content, .morning-hour-content,
.prayer-content, .silence-content, .oath-content, .speaker-content,
.committee-chair-content, .pledge-content, .message-content,
.joint-meeting-content, .journal-content, .joint-session-content,
.cert-election-content, .cert-electoral-content, .sine-die-content,
.new-session-content, .admin-oath-content, .tellers-content, .privilege-content {
    padding: var(--sp-16) var(--sp-24);
    background: transparent;
    border: none;
    border-radius: 0;
}

.progress-fill.right-cap {
    border-top-right-radius: var(--radius-6);
    border-bottom-right-radius: var(--radius-6);
}

.cal-day-today {
    border-color: rgba(88, 166, 255, 0.35);
}

.amdt-pdf-cell {
    padding-right: var(--sp-14);
    padding-left: var(--sp-6);
}

.tellers-section {
    padding: 0;
}

.tellers-section-header {
    margin: 0;
}

.stage-grid {
    display: flex;
    flex-direction: column;
    gap: var(--sp-32);
    padding: var(--sp-10) var(--sp-24) var(--sp-20);
}

.stage-row {
    display: grid;
    grid-template-columns: 1fr 64px 1fr;
    grid-template-rows: auto 1fr;
    column-gap: var(--sp-16);
}
.stage-head-left   { grid-column: 1; grid-row: 1; }
.stage-link        { grid-column: 2; grid-row: 1; }
.stage-head-right  { grid-column: 3; grid-row: 1; }
.stage-list-left   { grid-column: 1; grid-row: 2; }
.stage-riser       { grid-column: 2; grid-row: 2; }
.stage-list-right  { grid-column: 3; grid-row: 2; }

.stage-step {
    font-family: var(--font-mono);
    font-size: var(--fs-2xs);
    font-variant-numeric: tabular-nums;
    font-weight: 700;
    color: var(--text-muted);
    border: 1px solid var(--border-color);
    border-radius: 50%;
    width: 16px;
    height: 16px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.stage-cx {
    color: var(--text-muted);
    opacity: 0.8;
    min-width: 0;
}

.stage-link {
    display: flex;
    align-items: center;
    justify-content: center;
}

.stage-riser {
    position: relative;
}
.stage-riser::before {
    content: '';
    position: absolute;
    left: 10px;
    right: 10px;
    top: 12px;
    bottom: 6px;
    border-left: 2px solid currentColor;
    border-top: 2px solid currentColor;
    border-top-left-radius: 10px;
}

.stage-riser::after {
    content: '';
    position: absolute;
    right: 5px;
    top: 4px;
    border-left: 5px solid transparent;
    border-right: 5px solid transparent;
    border-bottom: 8px solid currentColor;
}
.stage-link svg {
    width: 100%;
    height: 10px;
    overflow: visible;
}
.stage-link path {
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    vector-effect: non-scaling-stroke;
}
.stage-link .stage-link-head {
    fill: currentColor;
    stroke: none;
}

.stage-row .list-scroll {
    min-height: 140px;
    max-height: 320px;
}

#senate-stages .bills-list {
    gap: var(--sp-20);
}

.stage-row .list-scroll:has(> .whip-updates-loading:only-child) {
    justify-content: center;
}

.proceedings-section-label {
    font-family: var(--font-mono);
    font-size: var(--fs-xs);
    font-weight: 700;
    letter-spacing: var(--track-wider);
    text-transform: uppercase;
    color: var(--text-muted);
    margin: var(--sp-14) 0 var(--sp-6);
}
.proceedings-section-label:first-child {
    margin-top: 0;
}

.proceedings-measure {
    display: block;
    width: 100%;
    text-align: left;
    background: none;
    border: none;
    padding: 0;
    font: inherit;
    color: inherit;
}
button.proceedings-measure {
    cursor: pointer;
}
button.proceedings-measure:hover .proceedings-measure-id {
    color: var(--accent-blue-hover);
}

.proceedings-measure-id {
    font-family: var(--font-mono);
    font-size: var(--fs-md);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    color: var(--accent-blue);
    transition: color var(--dur-150) ease;
}

.proceedings-sponsor {
    font-family: var(--font-sans);
    font-weight: 400;
    color: var(--text-muted);
}

.proceedings-measure-title {
    font-size: var(--fs-md);
    color: var(--text-secondary);
    line-height: 1.4;
    margin-bottom: var(--sp-2);
}

.proceedings-status {
    font-family: var(--font-mono);
    font-size: var(--fs-md);
    color: var(--text-primary);
    line-height: 1.5;
    padding-left: var(--sp-12);
    border-left: 1px solid var(--border-color);
    margin-left: var(--sp-2);
}

.proceedings-roll {
    color: var(--accent-blue);
    font-variant-numeric: tabular-nums;
}

.proceedings-amendment {
    margin: var(--sp-6) 0 var(--sp-6) var(--sp-20);
}

:root[data-chamber="senate"] .proceedings-feed {
    max-height: 420px;
}

.quorum-board {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(124px, 1fr));
    gap: var(--sp-6);
    padding: var(--sp-12) 0 var(--sp-16);
}

.qb-controls {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--sp-8);
    padding-top: var(--sp-12);
}

.quorum-board[data-party="D"] .qb-member:not([data-party="D"]),
.quorum-board[data-party="R"] .qb-member:not([data-party="R"]),
.quorum-board[data-party="I"] .qb-member:not([data-party="I"]) {
    display: none;
}

.qb-member {
    display: flex;
    align-items: center;
    gap: var(--sp-6);
    padding: var(--sp-4) var(--sp-6);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-6);
    background: var(--bg-elevated);
    min-width: 0;

    opacity: 0.28;
    filter: grayscale(1);
    transition: opacity var(--dur-300) ease, filter var(--dur-300) ease,
                border-color var(--dur-300) ease, box-shadow var(--dur-300) ease;
}

.qb-photo {
    width: 22px;
    height: 22px;
    border-radius: 4px;
    overflow: hidden;
    flex-shrink: 0;
    background: var(--bg-card);
    display: block;
}
.qb-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }

.qb-text { display: flex; flex-direction: column; min-width: 0; line-height: 1.2; }

.qb-name {
    font-size: var(--fs-md);
    font-weight: 600;
    color: var(--text-primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.qb-meta {
    font-family: var(--font-mono);
    font-size: var(--fs-2xs);
    letter-spacing: var(--track-wide);
    color: var(--text-muted);
    display: flex;
    gap: 3px;
}
.qb-party.democrat    { color: var(--party-d); }
.qb-party.republican  { color: var(--party-r); }
.qb-party.independent { color: var(--party-i); }

.qb-member.is-called {
    opacity: 1;
    filter: none;
    border-color: rgba(63, 185, 80, 0.5);
    box-shadow: 0 0 10px rgba(63, 185, 80, 0.18);
}

@keyframes qb-warm {
      0% { opacity: 0.28; filter: grayscale(1); }
     12% { opacity: 1;    filter: none; }
     18% { opacity: 0.35; filter: grayscale(0.8); }
     26% { opacity: 0.95; filter: none; }
     34% { opacity: 0.45; filter: grayscale(0.5); }
     44% { opacity: 1;    filter: none; }
     52% { opacity: 0.7;  filter: none; }
    100% { opacity: 1;    filter: none; }
}
.qb-member.is-warming { animation: qb-warm 900ms steps(1, end) 1; }

@media (prefers-reduced-motion: reduce) {
    .qb-member.is-warming { animation: none; }
}

.quorum-call-tag {
    color: var(--accent-amber);
    background: color-mix(in srgb, var(--accent-amber) 14%, transparent);
}

:root[data-chamber="senate"] .quorum-panel {
    display: block;
}

:root[data-chamber="senate"] .quorum-panel > .panel-header {
    justify-content: flex-start;
    gap: var(--sp-12);
}
:root[data-chamber="senate"] .quorum-panel > .panel-header .quorum-indicator {
    margin-left: auto;
}

:root[data-chamber="senate"] .senators-panel > .panel-header .panel-source {
    margin-left: auto;
}

:root[data-chamber="senate"] body:not(.senate-call-vote) .vote-display {
    display: none;
}
:root[data-chamber="senate"] .threshold-panel,
:root[data-chamber="senate"] .floor-grid-panel {
    display: none;
}
:root[data-chamber="senate"] body:not(.senate-call-vote) .vote-display .vote-counts-row,
:root[data-chamber="senate"] body:not(.senate-call-vote) .vote-display .progress-section,
:root[data-chamber="senate"] body:not(.senate-call-vote) .vote-display .vote-header,
:root[data-chamber="senate"] body:not(.senate-call-vote) .vote-display .vote-not-yet {
    display: none;
}
:root[data-chamber="senate"] .quorum-panel .vote-timer {
    display: flex;
    justify-content: center;
    margin-top: var(--sp-12);
}

:root[data-chamber="senate"] body.senate-call-vote .vote-display {
    display: flex;
}
:root[data-chamber="senate"] body.senate-call-vote .vote-display .vote-header {
    display: flex;
}
:root[data-chamber="senate"] body.senate-call-vote .vote-display .progress-section {
    display: block;
}
:root[data-chamber="senate"] body.senate-call-vote .threshold-panel {
    display: block;
}

.threshold-basis {
    padding: var(--sp-8) var(--sp-32) 0;
    font-size: var(--fs-md);
    color: var(--text-muted);
}
@media (max-width: 640px) {
    .threshold-basis { padding-left: var(--sp-16); padding-right: var(--sp-16); }
}

body.senate-call-quorum #floor-grid .legend-item:not(:has(.dot.present)) {
    display: none;
}

:root[data-chamber="senate"] .vote-display .vote-id:empty {
    display: none;
}

:root[data-chamber="senate"] body.senate-call-vote .vote-display .vote-title {
    font-size: var(--fs-3xl);
    line-height: 1.25;
    text-align: center;
}

.qb-member.is-aye { border-color: rgba(63, 185, 80, 0.75); box-shadow: 0 0 10px rgba(63, 185, 80, 0.22); }
.qb-member.is-no  { border-color: rgba(248, 81, 73, 0.75); box-shadow: 0 0 10px rgba(248, 81, 73, 0.22); }
.qb-member.is-present { border-color: rgba(210, 153, 34, 0.75); box-shadow: 0 0 10px rgba(210, 153, 34, 0.22); }

.qb-detail { display: none; }

@media (max-width: 640px) {
    .quorum-board {
        grid-template-columns: repeat(4, minmax(0, 1fr));
        gap: 3px;
        padding: var(--sp-8) 0 var(--sp-12);

        max-height: 176px;
        overflow-y: auto;
        overscroll-behavior: contain;
        -webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 28px), transparent 100%);
        mask-image: linear-gradient(to bottom, #000 calc(100% - 28px), transparent 100%);
    }
    .quorum-board.is-at-end { -webkit-mask-image: none; mask-image: none; }
    .qb-member {
        padding: 3px 4px;
        gap: 0;
        border-radius: 4px;
        border-left-width: 3px;
        min-height: 20px;
        cursor: pointer;
    }
    .qb-photo, .qb-meta { display: none; }
    .qb-name {
        font-size: var(--fs-xs);
        font-weight: 600;
        white-space: normal;
        overflow-wrap: anywhere;
        line-height: 1.1;
    }

    .qb-member[data-party="D"] { border-left-color: var(--party-d); }
    .qb-member[data-party="R"] { border-left-color: var(--party-r); }
    .qb-member[data-party="I"] { border-left-color: var(--party-i); }
    .qb-member.is-called { box-shadow: none; background: color-mix(in srgb, var(--accent-green) 12%, var(--bg-elevated)); }
    .qb-member.is-aye     { box-shadow: none; background: color-mix(in srgb, var(--accent-green) 30%, var(--bg-elevated)); }
    .qb-member.is-no      { box-shadow: none; background: color-mix(in srgb, var(--accent-red) 30%, var(--bg-elevated)); }
    .qb-member.is-present { box-shadow: none; background: color-mix(in srgb, var(--accent-amber) 28%, var(--bg-elevated)); }
    .qb-member.is-picked  { outline: 1px solid var(--text-secondary); outline-offset: 1px; }

    .qb-detail:not([hidden]) {
        display: block;
        padding: var(--sp-6) var(--sp-8);
        margin-top: var(--sp-8);
        border: 1px solid var(--border-color);
        border-radius: var(--radius-6);
        background: var(--bg-elevated);
        font-size: var(--fs-md);
        color: var(--text-primary);
    }

    .qb-controls .bills-sort-switcher { flex-wrap: wrap; }
}

:root[data-chamber="senate"] .floor-grid-panel { display: block; }

:root[data-chamber="senate"] body:not(.senate-call-vote):not(.senate-call-quorum) :is(.quorum-panel, .floor-grid-panel) {
    display: none;
}

:root[data-chamber="senate"] .center-aisle { display: none; }

.sen-desk {
    position: absolute;

    --w: var(--sen-desk-w, 11px);
    --h: var(--sen-desk-h, 7px);
    width: var(--w);
    height: var(--h);
    margin: calc(var(--h) / -2) 0 0 calc(var(--w) / -2);
    transform-origin: center;
    box-sizing: border-box;
    border-radius: 2px;
    border: 1px solid var(--border-color);
    background: var(--bg-elevated);
    opacity: 0.35;
    transition: opacity var(--dur-300) ease, background var(--dur-300) ease,
                border-color var(--dur-300) ease, box-shadow var(--dur-300) ease;
}
.sen-desk[data-party="D"] { border-color: color-mix(in srgb, var(--party-d) 45%, transparent); }
.sen-desk[data-party="R"] { border-color: color-mix(in srgb, var(--party-r) 45%, transparent); }
.sen-desk[data-party="I"] { border-color: color-mix(in srgb, var(--party-i) 45%, transparent); }

.sen-desk.is-called   { opacity: 1; }
.sen-desk.is-aye      { background: var(--accent-green); border-color: var(--accent-green); box-shadow: 0 0 6px rgba(63,185,80,0.5); }
.sen-desk.is-no       { background: var(--accent-red);   border-color: var(--accent-red);   box-shadow: 0 0 6px rgba(248,81,73,0.5); }
.sen-desk.is-present  { background: var(--accent-amber); border-color: var(--accent-amber); }

:root[data-chamber="senate"] .rep-label { left: auto; right: 9%; }
:root[data-chamber="senate"] .dem-label { right: auto; left: 9%; }

:root[data-chamber="senate"] body:is(.prayer-mode, .pledge-mode, .morning-hour-mode, .speaker-mode) :is(.vote-display, .threshold-panel, .quorum-panel, .floor-grid-panel) {
    display: none;
}
