
/* government.css */

/* ── Missing token definitions ───────────────────────────── */
:root {
    --mtg-soon:           #d97706;
    --mtg-soon-bg:        #fffbeb;
    --mtg-urgent:         #dc2626;
    --mtg-urgent-bg:      #fef2f2;
    --mtg-urgent-border:  #fca5a5;
}

.verified-constituent-badge {
    background: var(--success);
    color: white;
    padding: 0.15rem 0.5rem;
    border-radius: 10px;
    font-size: 0.7rem;
    font-weight: 600;
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
}

.verified-constituent-badge::before {
    content: '✓';
}

/* Research Cards */
.research-card {
    background: white;
    border-radius: 12px;
    padding: 1.5rem;
    margin-bottom: 1rem;
    box-shadow: 0 1px 3px var(--shadow);
    border-left: 4px solid var(--success);
    cursor: pointer;
    transition: all 0.2s;
}

.research-card:hover {
    box-shadow: 0 4px 12px var(--shadow);
    transform: translateX(2px);
}

.research-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.75rem;
}

.research-title {
    font-size: 1.1rem;
    font-weight: 600;
    margin-bottom: 0.75rem;
    color: var(--text-dark);
}

.research-content {
    color: var(--text-muted);
    line-height: 1.6;
    margin-bottom: 0.75rem;
}

.research-meta {
    display: flex;
    gap: 1.5rem;
    font-size: 0.85rem;
    color: var(--text-muted);
    flex-wrap: wrap;
}

/* Bills & Legislators */
.bills-list {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.bill-card, .legislator-card {
    background: white;
    border-radius: 12px;
    padding: 1.5rem;
    box-shadow: 0 1px 3px var(--shadow);
    border-left: 4px solid var(--accent);
    transition: all 0.2s;
    cursor: pointer;
}

.bill-card:hover, .legislator-card:hover {
    box-shadow: 0 4px 12px var(--shadow);
    transform: translateX(2px);
}

.bill-header {
    display: flex;
    justify-content: space-between;
    align-items: start;
    margin-bottom: 0.75rem;
    gap: 1rem;
}

.bill-id {
    font-weight: 700;
    color: var(--primary);
    font-size: 0.9rem;
}

.bill-status {
    padding: 0.25rem 0.75rem;
    border-radius: 12px;
    font-size: 0.75rem;
    font-weight: 600;
    background: #dcfce7;
    color: #166534;
}

.bill-title {
    font-size: 1.1rem;
    font-weight: 600;
    margin-bottom: 0.5rem;
    color: var(--text-dark);
    line-height: 1.4;
}

.bill-meta {
    display: flex;
    gap: 1.5rem;
    font-size: 0.85rem;
    color: var(--text-muted);
    flex-wrap: wrap;
}

.legislator-card {
    display: flex;
    gap: 1rem;
    align-items: center;
}

.legislator-avatar {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background: var(--primary);
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 1.25rem;
}

.intelligence-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 1rem;
    margin-bottom: 2rem;
}

.intel-card {
    background: linear-gradient(135deg, var(--blue-light) 0%, white 100%);
    padding: 1.5rem;
    border-radius: 12px;
    border: 1px solid var(--border);
}

.intel-number {
    font-size: 2.5rem;
    font-weight: 700;
    color: var(--blue);
    line-height: 1;
    margin-bottom: 0.5rem;
}

.intel-label {
    font-size: 0.85rem;
    color: var(--text-muted);
    font-weight: 500;
}

.intel-detail {
    font-size: 0.75rem;
    color: var(--text-muted);
    margin-top: 0.25rem;
}

.research-list {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.research-card {
    background: white;
    border-radius: 12px;
    padding: 1.5rem;
    box-shadow: 0 1px 3px var(--shadow);
    border-left: 4px solid var(--success);
    transition: all 0.2s;
}

.research-card:hover {
    box-shadow: 0 4px 12px var(--shadow);
}

.research-header {
    display: flex;
    gap: 0.5rem;
    margin-bottom: 1rem;
    flex-wrap: wrap;
}

.research-bill-link {
    background: var(--blue-light);
    color: var(--blue);
    padding: 0.25rem 0.75rem;
    border-radius: 12px;
    font-size: 0.8rem;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s;
}

.research-bill-link:hover {
    background: var(--blue);
    color: white;
}

.research-title {
    font-size: 1.15rem;
    font-weight: 600;
    margin-bottom: 0.75rem;
    color: var(--text-dark);
}

.research-author {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    margin-bottom: 1rem;
    flex-wrap: wrap;
    font-size: 0.9rem;
}

.research-expertise {
    background: var(--blue-light);
    color: var(--blue);
    padding: 0.1rem 0.5rem;
    border-radius: 10px;
    font-size: 0.8rem;
    font-weight: 600;
}

.research-org {
    color: var(--text-muted);
    font-size: 0.85rem;
}

.research-content {
    color: var(--text-muted);
    line-height: 1.6;
    margin-bottom: 1rem;
}

.research-tags {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-bottom: 1rem;
}

.research-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: 1rem;
    border-top: 1px solid var(--border);
}

.research-votes {
    display: flex;
    gap: 0.5rem;
}

.research-time {
    color: var(--text-muted);
    font-size: 0.85rem;
}

.bill-badge {
    background: var(--bg-light);
    padding: 0.25rem 0.75rem;
    border-radius: 12px;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--text-dark);
}

.bill-section {
    margin-bottom: 2rem;
}

.opinion-breakdown {
    margin-top: 1rem;
}

.opinion-bar {
    display: flex;
    width: 100%;
    height: 40px;
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 2px 4px var(--shadow);
}

.opinion-segment {
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.85rem;
    font-weight: 600;
    color: white;
    transition: all 0.2s;
}

.opinion-segment.support {
    background: var(--success);
}

.opinion-segment.neutral {
    background: var(--text-muted);
}

.opinion-segment.oppose {
    background: var(--danger);
}

.related-post-card {
    background: var(--bg-light);
    padding: 1rem;
    border-radius: 8px;
    margin-bottom: 0.75rem;
    cursor: pointer;
    transition: all 0.2s;
}

.related-post-card:hover {
    background: var(--blue-light);
}

.related-post-card h4 {
    font-size: 1rem;
    margin-bottom: 0.5rem;
}

.bill-detail {
    background: white;
    border-radius: 12px;
    padding: 2rem;
    margin-bottom: 1.5rem;
    box-shadow: 0 1px 3px var(--shadow);
}

/* Modals */
.modal {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0,0,0,0.5);
    z-index: 9500;
    align-items: center;
    justify-content: center;
}

.modal.active {
    display: flex;
}

.modal-content {
    background: white;
    border-radius: 16px;
    max-width: 900px;
    width: 90%;
    max-height: 90vh;
    overflow-y: auto;
    padding: 2rem;
    position: relative;
    animation: slideUp 0.3s ease;
}

.modal-header {
    margin-bottom: 1.5rem;
}

.modal-header h2 {
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--primary);
    margin-bottom: 0.5rem;
}

.modal-header p {
    color: var(--text-muted);
}

.close-modal {
    position: absolute;
    top: 1.5rem;
    right: 1.5rem;
    background: var(--bg-light);
    border: none;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    font-size: 1.5rem;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--text-muted);
    transition: all 0.2s;
}

.close-modal:hover {
    background: var(--border);
    color: var(--text-dark);
}

/* Forms */
.form-group {
    margin-bottom: 1.25rem;
}

.form-label {
    display: block;
    margin-bottom: 0.5rem;
    font-weight: 600;
    font-size: 0.9rem;
    color: var(--text-dark);
}

.form-input, .form-textarea, .form-select {
    width: 100%;
    padding: 0.75rem;
    border: 2px solid var(--border);
    border-radius: 8px;
    font-family: inherit;
    font-size: 0.95rem;
    transition: all 0.2s;
}

.form-textarea {
    min-height: 120px;
    resize: vertical;
}

.form-input:focus, .form-textarea:focus, .form-select:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(30, 58, 138, 0.1);
}

.stance-selector {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.75rem;
}

.stance-option {
    padding: 1.25rem 1rem;
    border: 2px solid var(--border);
    border-radius: 12px;
    text-align: center;
    cursor: pointer;
    transition: all 0.2s;
    background: white;
}

.stance-option:hover {
    border-color: var(--primary);
    background: var(--bg-cream);
}

.stance-option.selected {
    background: var(--primary);
    color: white;
    border-color: var(--primary);
}

.bill-display-box {
    margin-bottom: 1rem;
}

/* Buttons */
.btn {
    padding: 0.75rem 1.5rem;
    border: none;
    border-radius: 8px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s;
    font-size: 0.95rem;
}

.btn-accent {
    background: var(--accent);
    color: white;
}

.btn-accent:hover {
    background: var(--accent-light);
    transform: translateY(-1px);
}

.btn-secondary {
    background: var(--bg-light);
    color: var(--text-dark);
    border: 2px solid var(--border);
}

.btn-secondary:hover {
    background: var(--border);
}

/* Bill Detail Tabs */
.bill-tabs {
    display: flex;
    gap: 0.5rem;
    border-bottom: 2px solid var(--border);
    margin-bottom: 1.5rem;
}

.bill-tab {
    padding: 0.75rem 1.5rem;
    background: none;
    border: none;
    font-weight: 600;
    color: var(--text-muted);
    cursor: pointer;
    border-bottom: 3px solid transparent;
    transition: all 0.2s;
}

.bill-tab:hover {
    color: var(--text-dark);
}

.bill-tab.active {
    color: var(--primary);
    border-bottom-color: var(--accent);
}

.tab-pane {
    display: none;
}

.tab-pane.active {
    display: block;
}

.bill-section {
    margin-bottom: 2rem;
}

.bill-section h3 {
    font-size: 1.25rem;
    color: var(--primary);
    margin-bottom: 1rem;
    padding-bottom: 0.5rem;
    border-bottom: 2px solid var(--border);
}

/* Research Contributions */
.research-contribution {
    background: var(--bg-light);
    border-radius: 8px;
    padding: 1.25rem;
    margin-bottom: 1rem;
    border-left: 3px solid var(--success);
}

.research-contribution-header {
    display: flex;
    justify-content: space-between;
    margin-bottom: 0.75rem;
}

.research-contribution-header h4 {
    font-size: 1.05rem;
    margin: 0;
}

.research-contribution p {
    color: var(--text-muted);
    line-height: 1.6;
    margin-bottom: 0.75rem;
}

.research-contribution-meta {
    display: flex;
    gap: 1rem;
    font-size: 0.85rem;
    color: var(--text-muted);
}

/* Opinion Breakdown */
.opinion-breakdown {
    background: var(--bg-light);
    padding: 1.5rem;
    border-radius: 8px;
}

.opinion-bar {
    display: flex;
    height: 40px;
    border-radius: 6px;
    overflow: hidden;
    margin-bottom: 1rem;
}

.opinion-support {
    background: var(--success);
}

.opinion-neutral {
    background: var(--warning);
}

.opinion-oppose {
    background: var(--danger);
}

.opinion-legend {
    display: flex;
    gap: 2rem;
    font-size: 0.9rem;
}

/* Actions Timeline */
.actions-timeline {
    border-left: 2px solid var(--border);
    padding-left: 1.5rem;
    margin-left: 0.5rem;
}

.action-item {
    position: relative;
    padding-bottom: 1.5rem;
}

.action-item::before {
    content: '';
    position: absolute;
    left: -1.75rem;
    top: 0.5rem;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--primary);
}

.action-date {
    font-weight: 600;
    color: var(--primary);
    font-size: 0.9rem;
    margin-bottom: 0.25rem;
}

.action-description {
    color: var(--text-muted);
    font-size: 0.95rem;
}

/* Opinion Bar Container */
.opinion-bar-container {
    margin-bottom: 1rem;
}

.legend-item {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.9rem;
}

.legend-color {
    width: 16px;
    height: 16px;
    border-radius: 3px;
}


.bill-action-bar {
    display: flex;
    gap: 0.75rem;
    margin-bottom: 1.5rem;
    padding-bottom: 1.5rem;
    border-bottom: 2px solid var(--border);
}

.bill-action-bar .btn {
    display: inline-flex;
    align-items: center;
}

.bill-action-bar .btn svg {
    display: inline-block;
}

@media (max-width: 640px) {
    .bill-action-bar {
        flex-direction: column;
    }
    
    .bill-action-bar .btn {
        width: 100%;
        justify-content: center;
    }
}


/* Enhanced Legislator Cards */
.legislator-card-enhanced {
    background: white;
    border-radius: 12px;
    padding: 1.5rem;
    box-shadow: 0 1px 3px var(--shadow);
    border-left: 4px solid var(--primary);
    transition: all 0.2s;
    cursor: pointer;
    margin-bottom: 1rem;
}

.legislator-card-enhanced:hover {
    box-shadow: 0 4px 12px var(--shadow);
    transform: translateX(2px);
}

.legislator-card-header {
    display: flex;
    gap: 1rem;
    align-items: start;
    margin-bottom: 1rem;
}

.legislator-info {
    flex: 1;
}

.legislator-info h3 {
    font-size: 1.15rem;
    margin-bottom: 0.5rem;
    color: var(--text-dark);
}

.legislator-meta {
    display: flex;
    gap: 1rem;
    align-items: center;
    font-size: 0.85rem;
    color: var(--text-muted);
    flex-wrap: wrap;
}

.party-badge {
    padding: 0.25rem 0.75rem;
    border-radius: 12px;
    font-size: 0.75rem;
    font-weight: 600;
}

.party-badge.party-democratic {
    background: #dbeafe;
    color: #1e40af;
}

.party-badge.party-republican {
    background: #fee2e2;
    color: #991b1b;
}

.legislator-bio {
    color: var(--text-muted);
    font-size: 0.9rem;
    line-height: 1.6;
    margin-bottom: 1rem;
}

.legislator-quick-stats {
    display: flex;
    gap: 1.5rem;
    font-size: 0.85rem;
    color: var(--text-muted);
    padding-top: 1rem;
    border-top: 1px solid var(--border);
    flex-wrap: wrap;
}

.legislator-avatar-large {
    width: 80px;
    height: 80px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 2rem;
    color: white;
    flex-shrink: 0;
}

.legislator-tabs {
    display: flex;
    gap: 0.5rem;
    border-bottom: 2px solid var(--border);
    margin-bottom: 1.5rem;
    margin-top: 2rem;
}

.legislator-tab {
    padding: 0.75rem 1.5rem;
    background: none;
    border: none;
    font-weight: 600;
    color: var(--text-muted);
    cursor: pointer;
    border-bottom: 3px solid transparent;
    transition: all 0.2s;
}

.legislator-tab:hover {
    color: var(--text-dark);
}

.legislator-tab.active {
    color: var(--primary);
    border-bottom-color: var(--accent);
}

.legislator-section {
    margin-bottom: 2rem;
}

.legislator-section h3 {
    font-size: 1.25rem;
    color: var(--primary);
    margin-bottom: 1rem;
    padding-bottom: 0.5rem;
    border-bottom: 2px solid var(--border);
}

.committee-list, .topic-list {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.committee-badge {
    background: var(--blue-light);
    color: var(--blue-dark);
    padding: 0.5rem 1rem;
    border-radius: 8px;
    font-size: 0.9rem;
    font-weight: 500;
}

.stats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 1rem;
}

.stat-box {
    background: var(--bg-light);
    padding: 1.5rem;
    border-radius: 8px;
    text-align: center;
}

.stat-number {
    font-size: 2rem;
    font-weight: 700;
    color: var(--primary);
    margin-bottom: 0.5rem;
}

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

.sponsored-bills-list {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.sponsored-bill-item {
    background: var(--bg-light);
    padding: 1rem;
    border-radius: 8px;
    cursor: pointer;
    transition: all 0.2s;
    border-left: 3px solid var(--accent);
}

.sponsored-bill-item:hover {
    background: var(--blue-light);
}

.voting-breakdown {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}

.voting-stat {
    background: var(--bg-light);
    padding: 1.5rem;
    border-radius: 8px;
}

.voting-label {
    font-weight: 600;
    margin-bottom: 0.75rem;
    color: var(--text-dark);
}

.voting-bar {
    height: 24px;
    background: white;
    border-radius: 12px;
    overflow: hidden;
    margin-bottom: 0.5rem;
}

.voting-fill {
    height: 100%;
    transition: width 0.3s ease;
}

.voting-number {
    font-size: 0.9rem;
    color: var(--text-muted);
}

.contact-info {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    background: var(--bg-light);
    padding: 1.5rem;
    border-radius: 8px;
}

.contact-item {
    display: flex;
    gap: 1rem;
    align-items: start;
}

.contact-item strong {
    min-width: 80px;
    color: var(--text-dark);
}

.contact-item a {
    color: var(--primary);
    text-decoration: none;
}

.contact-item a:hover {
    text-decoration: underline;
}

.bill-action-bar {
    display: flex;
    gap: 0.75rem;
    margin-bottom: 1.5rem;
    padding-bottom: 1.5rem;
    border-bottom: 2px solid var(--border);
}

.bill-action-bar .btn {
    display: inline-flex;
    align-items: center;
}

.bill-action-bar .btn svg {
    display: inline-block;
}

/* Smooth tab switching */
.tab-pane {
    display: none;
    animation: fadeIn 0.3s ease;
}

.tab-pane.active {
    display: block;
}

@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@media (max-width: 640px) {
    .bill-action-bar {
        flex-direction: column;
    }
    
    .bill-action-bar .btn {
        width: 100%;
        justify-content: center;
    }
}


/* Enhanced Bill Detail Modal */
.bill-detail-modal-xl {
    max-width: 1200px;
    width: 95%;
    max-height: 95vh;
}

/* Bill Header with Stats */
.bill-stats-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
    margin-bottom: 24px;
}

.bill-stat-box {
    background: var(--bg-light);
    padding: 14px 16px;
    border-radius: 8px;
    border: 1px solid var(--border);
}

.bill-stat-label {
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-muted);
    margin-bottom: 6px;
}

.bill-stat-value {
    font-size: 15px;
    font-weight: 600;
    color: var(--text-dark);
}

/* Blurred Content Gate */
.content-gate-wrapper {
    position: relative;
}

.content-gate-blur {
    filter: blur(8px);
    pointer-events: none;
    user-select: none;
}

.content-gate-overlay {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, 0.95);
    z-index: 10;
    padding: 2rem;
    text-align: center;
}

.gate-title {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--primary);
    margin-bottom: 0.5rem;
}

.gate-description {
    color: var(--text-muted);
    margin-bottom: 2rem;
    max-width: 500px;
}

.position-selector-inline {
    display: flex;
    gap: 1rem;
    margin-bottom: 1rem;
}

.position-btn {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
    padding: 1.5rem 2rem;
    border: 3px solid var(--border);
    border-radius: 12px;
    background: white;
    cursor: pointer;
    transition: all 0.2s;
    min-width: 140px;
}

.position-btn:hover {
    transform: translateY(-4px);
    box-shadow: 0 8px 20px rgba(0,0,0,0.1);
}

.position-btn.support {
    border-color: var(--success);
}

.position-btn.support:hover {
    background: var(--success);
    color: white;
}

.position-btn.support:hover svg {
    stroke: white;
}

.position-btn.neutral {
    border-color: var(--warning);
}

.position-btn.neutral:hover {
    background: var(--warning);
    color: white;
}

.position-btn.neutral:hover svg {
    stroke: white;
}

.position-btn.oppose {
    border-color: var(--danger);
}

.position-btn.oppose:hover {
    background: var(--danger);
    color: white;
}

.position-btn.oppose:hover svg {
    stroke: white;
}

.position-btn svg {
    transition: stroke 0.2s;
}

.position-btn-label {
    font-size: 1.1rem;
    font-weight: 700;
}

.position-btn-sublabel {
    font-size: 0.85rem;
    opacity: 0.8;
}

/* Similarity Analysis */
.similarity-box {
    background: #fef3c7;
    border-left: 4px solid var(--warning);
    border-radius: 0 8px 8px 0;
    padding: 16px;
    margin-bottom: 24px;
}

.similarity-score {
    background: white;
    padding: 12px;
    border-radius: 8px;
    margin-bottom: 14px;
}

.similarity-score-label {
    font-size: 11px;
    font-weight: 600;
    color: var(--text-muted);
    margin-bottom: 6px;
}

.similarity-score-value {
    font-size: 24px;
    font-weight: 700;
    color: var(--warning);
    margin-bottom: 8px;
}

.similarity-bar {
    height: 8px;
    background: var(--bg-light);
    border-radius: 4px;
    overflow: hidden;
}

.similarity-bar-fill {
    height: 100%;
    background: var(--warning);
    border-radius: 4px;
    transition: width 0.6s ease;
}

.similarity-analysis {
    font-size: 13px;
    line-height: 1.6;
    color: var(--text-dark);
}

/* Fiscal Note */
.fiscal-note-box {
    background: white;
    border: 1px solid var(--border);
    border-radius: 12px;
    overflow: hidden;
    margin-bottom: 24px;
}

.fiscal-note-header {
    background: #d1fae5;
    padding: 14px 16px;
    display: flex;
    align-items: center;
    gap: 12px;
}

.fiscal-note-content {
    padding: 16px;
}

.fiscal-row {
    display: flex;
    justify-content: space-between;
    padding: 10px 0;
    border-bottom: 1px solid var(--border);
    font-size: 13px;
}

.fiscal-row:last-child {
    border-bottom: none;
}

.fiscal-label {
    font-weight: 500;
    color: var(--text-muted);
}

.fiscal-value {
    font-weight: 600;
    color: var(--text-dark);
}

.fiscal-value.fiscal-positive {
    color: var(--success);
}

/* Sponsor Cards */
.sponsor-card {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    padding: 16px;
    background: var(--bg-light);
    border: 1px solid var(--border);
    border-radius: 12px;
    margin-bottom: 16px;
}

.sponsor-card.primary-sponsor {
    background: #dbeafe;
    border-color: var(--primary);
}

.sponsor-avatar-large {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
    font-weight: 700;
    color: white;
    flex-shrink: 0;
}

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

.sponsor-name {
    font-size: 15px;
    font-weight: 600;
    color: var(--text-dark);
    margin-bottom: 4px;
}

.sponsor-meta {
    font-size: 12px;
    color: var(--text-muted);
    margin-bottom: 8px;
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.sponsor-committees,
.sponsor-bio {
    font-size: 12px;
    color: var(--text-muted);
    line-height: 1.5;
}

.sponsor-actions {
    display: flex;
    flex-direction: column;
    gap: 6px;
    flex-shrink: 0;
}

/* Co-sponsors Grid */
.cosponsors-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 12px;
}

.cosponsor-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px;
    background: var(--bg-light);
    border: 1px solid var(--border);
    border-radius: 8px;
}

.cosponsor-avatar {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 11px;
    font-weight: 700;
    color: white;
    flex-shrink: 0;
}

.cosponsor-name {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-dark);
}

.cosponsor-meta {
    font-size: 11px;
    color: var(--text-muted);
}

/* Committee Items */
.committee-list {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.committee-item {
    display: flex;
    gap: 14px;
    padding: 14px;
    background: var(--bg-light);
    border: 1px solid var(--border);
    border-radius: 12px;
}

.committee-icon {
    width: 44px;
    height: 44px;
    border-radius: 8px;
    background: #dbeafe;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--primary);
    flex-shrink: 0;
}

.committee-details {
    flex: 1;
}

.committee-name {
    font-size: 14px;
    font-weight: 600;
    color: var(--text-dark);
    margin-bottom: 6px;
}

.committee-status {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 4px;
    font-size: 12px;
}

.committee-date {
    color: var(--text-muted);
}

.committee-vote {
    font-size: 12px;
    color: var(--text-muted);
}

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

.timeline::before {
    content: '';
    position: absolute;
    left: 10px;
    top: 20px;
    bottom: 20px;
    width: 2px;
    background: var(--border);
}

.timeline-item {
    position: relative;
    margin-bottom: 28px;
}

.timeline-item:last-child {
    margin-bottom: 0;
}

.timeline-dot {
    position: absolute;
    left: -36px;
    top: 4px;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    border: 3px solid var(--border);
    background: white;
    z-index: 1;
}

.timeline-dot-active {
    border-color: var(--primary);
    background: var(--primary);
    box-shadow: 0 0 0 4px rgba(30, 58, 138, 0.1);
}

.timeline-action {
    font-size: 15px;
    font-weight: 600;
    color: var(--text-dark);
    margin-bottom: 6px;
}

.timeline-meta {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
    font-size: 12px;
}

.timeline-details {
    font-size: 13px;
    color: var(--text-muted);
    line-height: 1.6;
    margin-bottom: 10px;
}

.timeline-actions-btn {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

/* Version List */
.version-list {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.version-item {
    display: flex;
    gap: 14px;
    padding: 16px;
    background: var(--bg-light);
    border: 1px solid var(--border);
    border-radius: 12px;
}

.version-item.version-current {
    background: #dbeafe;
    border-color: var(--primary);
}

.version-icon {
    width: 44px;
    height: 44px;
    border-radius: 8px;
    background: var(--primary);
    display: flex;
    align-items: center;
    justify-content: center;
    color: white;
    flex-shrink: 0;
}

.version-info {
    flex: 1;
}

.version-name {
    font-size: 14px;
    font-weight: 600;
    color: var(--text-dark);
    margin-bottom: 6px;
}

.version-meta {
    font-size: 12px;
    color: var(--text-muted);
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 8px;
}

.version-desc {
    font-size: 12px;
    color: var(--text-muted);
    line-height: 1.5;
}

.version-actions {
    display: flex;
    flex-direction: column;
    gap: 6px;
    flex-shrink: 0;
}

/* Related Bills */
.related-bills-list {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.related-bill-item {
    padding: 16px;
    background: var(--bg-light);
    border: 1px solid var(--border);
    border-radius: 12px;
}

.related-bill-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: 8px;
}

.related-bill-number {
    font-size: 13px;
    font-weight: 700;
    color: var(--primary);
    font-family: 'JetBrains Mono', monospace;
    margin-bottom: 4px;
}

.related-bill-title {
    font-size: 14px;
    font-weight: 600;
    color: var(--text-dark);
}

.similarity-badge {
    padding: 6px 12px;
    border-radius: 8px;
    font-size: 11px;
    font-weight: 700;
    white-space: nowrap;
}

.similarity-badge.high {
    background: #fef3c7;
    color: #b45309;
}

.related-bill-meta {
    font-size: 12px;
    color: var(--text-muted);
    margin-bottom: 10px;
    display: flex;
    align-items: center;
    gap: 8px;
}

.related-bill-match {
    font-size: 13px;
    color: var(--text-muted);
    line-height: 1.6;
    margin-bottom: 10px;
}

.related-bill-actions {
    display: flex;
    gap: 8px;
}

/* Bill Tags */
.bill-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 16px;
}

.bill-tag {
    background: #dbeafe;
    color: #1e40af;
    padding: 6px 12px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 500;
}

/* Model Bill */
.model-bill-box {
    background: #ede9fe;
    border-left: 4px solid var(--info);
    border-radius: 0 12px 12px 0;
    padding: 16px;
    margin-bottom: 24px;
}

.model-bill-header {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    margin-bottom: 12px;
}

.model-bill-name {
    font-size: 14px;
    font-weight: 700;
    color: var(--text-dark);
    margin-bottom: 2px;
}

.model-bill-meta {
    font-size: 11px;
    color: var(--text-muted);
}

.model-bill-content {
    font-size: 13px;
    color: var(--text-muted);
    line-height: 1.6;
    margin-bottom: 12px;
}

.model-bill-actions {
    display: flex;
    gap: 8px;
}

/* Official Votes Section */
.vote-event-card {
    background: white;
    border: 1px solid var(--border);
    border-radius: 12px;
    padding: 1.5rem;
    margin-bottom: 1.5rem;
}

.vote-event-header {
    display: flex;
    justify-content: space-between;
    align-items: start;
    margin-bottom: 1rem;
    padding-bottom: 1rem;
    border-bottom: 2px solid var(--border);
}

.vote-event-title {
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--text-dark);
    margin-bottom: 0.25rem;
}

.vote-event-date {
    font-size: 0.85rem;
    color: var(--text-muted);
}

.vote-event-result {
    padding: 0.5rem 1rem;
    border-radius: 20px;
    font-size: 0.9rem;
    font-weight: 700;
    white-space: nowrap;
}

.vote-event-result.passed {
    background: var(--success);
    color: white;
}

.vote-event-result.failed {
    background: var(--danger);
    color: white;
}

.vote-tally {
    display: flex;
    gap: 2rem;
    margin-bottom: 1.5rem;
}

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

.vote-count-number {
    font-size: 2rem;
    font-weight: 700;
    line-height: 1;
    margin-bottom: 0.25rem;
}

.vote-count-number.yes {
    color: var(--success);
}

.vote-count-number.no {
    color: var(--danger);
}

.vote-count-number.abstain {
    color: var(--text-muted);
}

.vote-count-label {
    font-size: 0.85rem;
    color: var(--text-muted);
    text-transform: uppercase;
    font-weight: 600;
    letter-spacing: 0.05em;
}

.vote-visualization {
    height: 24px;
    background: var(--bg-light);
    border-radius: 12px;
    overflow: hidden;
    display: flex;
    margin-bottom: 1.5rem;
}

.vote-segment {
    height: 100%;
    transition: width 0.4s ease;
}

.vote-segment.yes {
    background: var(--success);
}

.vote-segment.no {
    background: var(--danger);
}

.vote-segment.abstain {
    background: var(--text-muted);
}

.legislator-votes-toggle {
    text-align: center;
}

.legislator-votes-toggle button {
    background: var(--bg-light);
    border: 1px solid var(--border);
    padding: 0.75rem 1.5rem;
    border-radius: 8px;
    cursor: pointer;
    font-weight: 600;
    transition: all 0.2s;
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
}

.legislator-votes-toggle button:hover {
    background: var(--border);
}

.legislator-votes-toggle svg {
    width: 16px;
    height: 16px;
    transition: transform 0.2s;
}

.legislator-votes-toggle button.expanded svg {
    transform: rotate(180deg);
}

.legislator-votes-breakdown {
    display: none;
    margin-top: 1.5rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--border);
}

.legislator-votes-breakdown.show {
    display: block;
}

.vote-group {
    margin-bottom: 1.5rem;
}

.vote-group-header {
    font-size: 0.9rem;
    font-weight: 700;
    padding: 0.75rem 1rem;
    border-radius: 8px;
    margin-bottom: 0.75rem;
}

.vote-group-header.yes {
    background: rgba(5, 150, 105, 0.1);
    color: var(--success);
}

.vote-group-header.no {
    background: rgba(220, 38, 38, 0.1);
    color: var(--danger);
}

.vote-group-header.abstain {
    background: var(--bg-light);
    color: var(--text-muted);
}

.legislator-votes-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 0.5rem;
}

.legislator-vote-item {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem;
    background: var(--bg-light);
    border-radius: 6px;
    font-size: 0.9rem;
    cursor: pointer;
    transition: all 0.2s;
}

.legislator-vote-item:hover {
    background: var(--border);
}

.legislator-vote-avatar {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.7rem;
    font-weight: 700;
    color: white;
    flex-shrink: 0;
}

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

.legislator-vote-name {
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.legislator-vote-party {
    font-size: 0.75rem;
    color: var(--text-muted);
}

@media (max-width: 768px) {
    .bill-stats-grid {
        grid-template-columns: repeat(2, 1fr);
    }
    
    .bill-detail-modal-xl {
        width: 100%;
        max-height: 100vh;
        border-radius: 0;
    }
    
    .position-selector-inline {
        flex-direction: column;
    }
    
    .vote-tally {
        flex-direction: column;
        gap: 1rem;
    }
    
    .legislator-votes-grid {
        grid-template-columns: 1fr;
    }
    
    .cosponsors-grid {
        grid-template-columns: 1fr;
    }
}

/* Constituent Input Section - FIXED */
.constituent-input-card {
    background: white;
    border: 1px solid var(--border);
    border-radius: 12px;
    padding: 1.25rem;
    margin-bottom: 1rem;
    border-left: 4px solid var(--primary);
}

.input-author {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 0.75rem;
}

.input-avatar {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    color: white;
    font-size: 0.95rem;
    flex-shrink: 0;
}

.input-author-info {
    flex: 1;
}

.input-author-name {
    font-weight: 600;
    font-size: 0.95rem;
    color: var(--text-dark);
}

.input-author-meta {
    font-size: 0.8rem;
    color: var(--text-muted);
    margin-top: 2px;
}

.input-content {
    color: var(--text-dark);
    line-height: 1.6;
    margin-bottom: 0.75rem;
    font-size: 13px;
}

.input-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 0.85rem;
    color: var(--text-muted);
    padding-top: 0.75rem;
    border-top: 1px solid var(--border);
}

/* Research Item Cards - FIXED */
.research-item-card {
    background: white;
    border: 1px solid var(--border);
    border-left: 4px solid var(--accent);
    padding: 1.25rem;
    border-radius: 12px;
    margin-bottom: 1rem;
}

.research-item-header {
    display: flex;
    justify-content: space-between;
    align-items: start;
    margin-bottom: 0.75rem;
}

.research-item-type {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.25rem 0.75rem;
    background: var(--primary);
    color: white;
    border-radius: 12px;
    font-size: 0.75rem;
    font-weight: 600;
}

.research-item-title {
    font-size: 1.1rem;
    font-weight: 600;
    margin-bottom: 0.5rem;
    color: var(--text-dark);
}

.research-item-content {
    color: var(--text-muted);
    line-height: 1.6;
    margin-bottom: 1rem;
    font-size: 13px;
}

.research-item-link {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--primary);
    text-decoration: none;
    font-size: 0.9rem;
    margin-bottom: 1rem;
}

.research-item-link:hover {
    text-decoration: underline;
}

.research-item-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: 1rem;
    border-top: 1px solid var(--border);
    font-size: 0.85rem;
    color: var(--text-muted);
}

.research-helpful-btn {
    background: white;
    border: 1px solid var(--border);
    padding: 0.5rem 1rem;
    border-radius: 6px;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    transition: all 0.2s;
    font-size: 0.85rem;
    font-weight: 600;
}

.research-helpful-btn:hover {
    background: var(--success);
    color: white;
    border-color: var(--success);
}

.research-helpful-btn:hover svg {
    fill: white;
}

.research-helpful-btn.voted {
    background: var(--success);
    color: white;
    border-color: var(--success);
}

.research-helpful-btn.voted svg {
    fill: white;
}

/* Contribution Type Selector - FIXED */
.contribution-type-selector {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}

.type-option {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.75rem;
    padding: 1.25rem 1rem;
    border: 2px solid var(--border);
    border-radius: 12px;
    background: white;
    cursor: pointer;
    transition: all 0.2s;
    font-size: 0.9rem;
    font-weight: 600;
}

.type-option:hover {
    border-color: var(--primary);
    background: var(--bg-cream);
}

.type-option.active {
    border-color: var(--primary);
    background: var(--primary);
    color: white;
}

.type-option.active svg {
    stroke: white;
}

.type-option svg {
    transition: stroke 0.2s;
}

/* Amendment List - FIXED */
.amendment-list {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.amendment-item {
    padding: 16px;
    background: var(--bg-light);
    border: 1px solid var(--border);
    border-radius: 12px;
}

.amendment-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 8px;
}

.amendment-number {
    font-size: 13px;
    font-weight: 700;
    color: var(--primary);
    font-family: 'JetBrains Mono', monospace;
}

.amendment-sponsor {
    font-size: 12px;
    color: var(--text-muted);
    margin-bottom: 10px;
}

.amendment-desc {
    font-size: 13px;
    color: var(--text-dark);
    line-height: 1.6;
    margin-bottom: 12px;
}

.amendment-actions {
    display: flex;
    gap: 8px;
}

/* Position Badge Improvements */
.bill-position-badge {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 1rem;
    border-radius: 20px;
    font-size: 0.9rem;
    font-weight: 600;
}

.bill-position-badge.support {
    background: var(--success);
    color: white;
}

.bill-position-badge.neutral {
    background: var(--warning);
    color: white;
}

.bill-position-badge.oppose {
    background: var(--danger);
    color: white;
}

.bill-position-badge svg {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
}

.change-position-btn {
    background: none;
    border: none;
    color: var(--primary);
    text-decoration: underline;
    cursor: pointer;
    font-size: 0.85rem;
    padding: 0;
    font-weight: 500;
}

.change-position-btn:hover {
    color: var(--accent);
}

/* Section Count Badge */
.section-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 24px;
    height: 24px;
    padding: 0 8px;
    background: var(--bg-light);
    border-radius: 12px;
    font-size: 12px;
    font-weight: 600;
    color: var(--text-muted);
    margin-left: 8px;
}

/* Tag Chip */
.tag-chip {
    display: inline-block;
    padding: 4px 10px;
    background: var(--bg-light);
    color: var(--text-dark);
    border-radius: 12px;
    font-size: 11px;
    font-weight: 500;
}

@media (max-width: 768px) {
    .contribution-type-selector {
        grid-template-columns: 1fr;
    }
}


/* government.css */

/* ── Page shell ──────────────────────────────────────────────────────── */
.gov-page {
    max-width: 860px;
    margin: 0 auto;
    padding: 2rem 1rem 4rem;
}

.gov-page-heading {
    margin-bottom: 0.25rem;
}

.gov-page-heading h1 {
    font-size: 2rem;
    font-weight: 700;
    color: var(--text-dark);
    margin-bottom: 0.35rem;
}

.gov-page-heading p {
    color: var(--text-muted);
    font-size: 1rem;
    margin: 0;
}

/* ── Address bar ─────────────────────────────────────────────────────── */
.gov-address-bar {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin: 1.25rem 0 0.75rem;
    flex-wrap: wrap;
}

.gov-address-label {
    display: block;
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.09em;
    text-transform: uppercase;
    color: var(--text-muted);
    margin-bottom: 0.2rem;
}

.gov-address-value {
    font-size: 1rem;
    font-weight: 600;
    color: var(--text-dark);
}

.gov-verified-badge {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    font-size: 0.75rem;
    font-weight: 600;
    color: #065f46;
    background: #d1fae5;
    padding: 0.18rem 0.55rem;
    border-radius: 20px;
}

.gov-example-badge {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    font-size: 0.75rem;
    font-weight: 600;
    color: #92400e;
    background: #fef3c7;
    padding: 0.18rem 0.55rem;
    border-radius: 20px;
}

.gov-change-link {
    background: none;
    border: none;
    color: var(--primary);
    font-size: 0.875rem;
    font-weight: 500;
    cursor: pointer;
    padding: 0;
    font-family: inherit;
    white-space: nowrap;
    margin-top: 0.1rem;
}

.gov-change-link:hover {
    text-decoration: underline;
}

/* ── Inline ZIP input ────────────────────────────────────────────────── */
.gov-zip-inline {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-bottom: 0.25rem;
}

.gov-zip-inline-label {
    font-size: 0.875rem;
    color: var(--text-muted);
    white-space: nowrap;
}

.gov-zip-inline input {
    width: 110px;
    padding: 0.45rem 0.75rem;
    border: 2px solid var(--border);
    border-radius: 8px;
    font-size: 0.95rem;
    font-family: inherit;
    transition: border-color 0.2s;
}

.gov-zip-inline input:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(30, 58, 138, 0.08);
}

.gov-zip-error {
    font-size: 0.8rem;
    color: var(--danger, #dc2626);
    margin-top: 0.15rem;
    min-height: 1rem;
}

/* ── Example view banner ─────────────────────────────────────────────── */
.gov-example-banner {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.78rem;
    font-weight: 500;
    color: #92400e;
    margin-bottom: 1rem;
}

.gov-example-banner::before {
    content: '●';
    font-size: 0.55rem;
    opacity: 0.7;
}

/* ── Rep chip strip ───────────────────────────────────────────────────── */
.gov-rep-strip {
    display: flex;
    gap: 0.65rem;
    overflow-x: auto;
    padding-bottom: 0.75rem;
    margin-bottom: 1.25rem;
    scrollbar-width: none;
    -ms-overflow-style: none;
}

.gov-rep-strip::-webkit-scrollbar {
    display: none;
}

.gov-rep-chip {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.3rem;
    padding: 0.85rem 1rem 0.7rem;
    background: white;
    border: 1px solid var(--border);
    border-radius: 12px;
    cursor: pointer;
    transition: all 0.18s;
    flex-shrink: 0;
    min-width: 96px;
    max-width: 110px;
    box-shadow: 0 1px 3px var(--shadow);
    text-align: center;
}

.gov-rep-chip:hover {
    border-color: var(--primary);
    box-shadow: 0 3px 10px var(--shadow);
    transform: translateY(-2px);
}

.gov-rep-chip.example-chip {
    opacity: 0.55;
    cursor: default;
}

.gov-rep-chip.example-chip:hover {
    transform: none;
    border-color: var(--border);
    box-shadow: 0 1px 3px var(--shadow);
}

.gov-chip-avatar {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 0.8rem;
    color: white;
    flex-shrink: 0;
}

.gov-chip-name {
    font-size: 0.7rem;
    font-weight: 600;
    color: var(--text-dark);
    line-height: 1.3;
    word-break: break-word;
}

.gov-chip-role {
    font-size: 0.62rem;
    color: var(--text-muted);
    line-height: 1.2;
    word-break: break-word;
}

.gov-chip-icons {
    display: flex;
    gap: 0.3rem;
    margin-top: 0.1rem;
}

.gov-chip-icon {
    font-size: 0.65rem;
    opacity: 0.75;
}

/* ── Carousel ─────────────────────────────────────────────────────────── */
.gov-carousel-outer {
    position: relative;
    margin-bottom: 1.5rem;
}

.gov-carousel-track-wrap {
    overflow: hidden;
    border-radius: 16px;
}

.gov-carousel-track {
    display: flex;
    transition: transform 0.32s cubic-bezier(0.4, 0, 0.2, 1);
    will-change: transform;
}

/* ── Tier card ───────────────────────────────────────────────────────── */
.gov-tier-card {
    min-width: 100%;
    background: white;
    border-radius: 16px;
    padding: 1.75rem;
    box-sizing: border-box;
    border: 1px solid var(--border);
    box-shadow: 0 1px 4px var(--shadow);
}

.gov-tier-card-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
    margin-bottom: 0.65rem;
}

.gov-tier-card-title-row {
    display: flex;
    align-items: center;
    gap: 0.55rem;
}

.gov-tier-icon {
    font-size: 1.05rem;
}

.gov-tier-card-title {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--text-dark);
}

.gov-tier-tag {
    font-size: 0.7rem;
    font-weight: 600;
    padding: 0.22rem 0.6rem;
    border-radius: 20px;
    background: var(--bg-light);
    color: var(--text-muted);
    border: 1px solid var(--border);
    white-space: nowrap;
    flex-shrink: 0;
}

.gov-tier-desc {
    font-size: 0.875rem;
    color: var(--text-muted);
    line-height: 1.55;
    margin-bottom: 1.1rem;
}

/* ── Rep rows inside each card ────────────────────────────────────────── */
.gov-tier-rep-list {
    margin-bottom: 1.1rem;
}

.gov-tier-rep-row {
    padding: 0.85rem 0;
    border-bottom: 1px solid var(--border);
}

.gov-tier-rep-row:last-child {
    border-bottom: none;
}

.gov-tier-rep-name {
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--text-dark);
    margin-bottom: 0.15rem;
}

.gov-tier-rep-subrole {
    font-size: 0.8rem;
    color: var(--text-muted);
    margin-bottom: 0.4rem;
}

.gov-tier-rep-links {
    display: flex;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.gov-tier-rep-link {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--primary);
    text-decoration: none;
    cursor: pointer;
    background: none;
    border: none;
    padding: 0;
    font-family: inherit;
    line-height: 1;
}

.gov-tier-rep-link:hover {
    text-decoration: underline;
}

.gov-tier-rep-link.disabled {
    color: var(--text-muted);
    cursor: default;
    font-weight: 500;
}

.gov-tier-rep-link.disabled:hover {
    text-decoration: none;
}

/* ── Card footer ─────────────────────────────────────────────────────── */
.gov-tier-card-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: 1rem;
    border-top: 1px solid var(--border);
    gap: 1rem;
    flex-wrap: wrap;
}

.gov-tier-footer-note {
    font-size: 0.775rem;
    color: var(--text-muted);
    line-height: 1.5;
    flex: 1;
}

.gov-tier-explore-link {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--primary);
    text-decoration: none;
    white-space: nowrap;
}

.gov-tier-explore-link:hover {
    text-decoration: underline;
}

/* ── Carousel nav ─────────────────────────────────────────────────────── */
.gov-carousel-nav {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    margin-top: 1rem;
}

.gov-carousel-arrow {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: white;
    border: 1px solid var(--border);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    font-size: 1.15rem;
    color: var(--text-dark);
    transition: all 0.18s;
    box-shadow: 0 1px 3px var(--shadow);
    line-height: 1;
    padding: 0;
}

.gov-carousel-arrow:hover:not(:disabled) {
    border-color: var(--primary);
    color: var(--primary);
    box-shadow: 0 3px 8px var(--shadow);
}

.gov-carousel-arrow:disabled {
    opacity: 0.28;
    cursor: default;
    box-shadow: none;
}

.gov-carousel-dots {
    display: flex;
    gap: 0.45rem;
    align-items: center;
}

.gov-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--border);
    border: none;
    cursor: pointer;
    padding: 0;
    transition: all 0.2s;
}

.gov-dot.active {
    background: var(--primary);
    width: 22px;
    border-radius: 4px;
}

/* ── Signup nudge ────────────────────────────────────────────────────── */
.gov-signup-nudge {
    margin-top: 1.25rem;
    font-size: 0.875rem;
    color: var(--text-muted);
    line-height: 1.6;
}

.gov-signup-nudge a {
    color: var(--primary);
    font-weight: 600;
    text-decoration: none;
}

.gov-signup-nudge a:hover {
    text-decoration: underline;
}

/* ── Responsive ──────────────────────────────────────────────────────── */
@media (max-width: 600px) {
    .gov-page {
        padding: 1rem 0.75rem 3rem;
    }

    .gov-tier-card {
        padding: 1.25rem;
    }

    .gov-tier-card-head {
        flex-direction: column;
        gap: 0.4rem;
    }

    .gov-tier-card-footer {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.5rem;
    }

    .gov-address-bar {
        flex-direction: column;
        gap: 0.5rem;
    }
}

/* government.css
 * "Your Government" dashboard — Cascade Township
 *
 * Requires these CSS variables from home.css / your design system:
 *   --primary, --primary-light, --accent, --border, --text, --muted,
 *   --bg, --card, --shadow, --shadow-lg, --radius, --radius-sm
 *   --cat-money, --cat-money-bg, --cat-roads, --cat-roads-bg,
 *   --cat-schools, --cat-schools-bg, --cat-health, --cat-health-bg,
 *   --cat-env, --cat-env-bg, --cat-rules, --cat-rules-bg
 *
 * If those vars aren't already in your design system, add the :root
 * block from the bottom of this file to your global stylesheet.
 *
 * Font Awesome 6.x must be loaded. IBM Plex Sans recommended.
 */

.gov-page {
    max-width: 820px;
    margin: 0 auto;
    padding: 2rem 1rem 5rem;
}

/* ── Hero bar ─────────────────────────────────────────────────── */
.gov-hero {
    margin-bottom: 1.5rem;
}
.gov-hero h1 {
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--primary);
    line-height: 1.2;
    margin-bottom: 0.3rem;
}
.gov-hero-sub {
    font-size: 0.95rem;
    color: var(--muted);
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}
.gov-hero-location {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    font-weight: 600;
    color: var(--primary);
}
.gov-hero-location i { font-size: 0.8rem; }
.gov-change-btn {
    background: none;
    border: none;
    color: var(--accent);
    font-size: 0.82rem;
    font-weight: 500;
    cursor: pointer;
    font-family: inherit;
    padding: 0;
    text-decoration: underline dotted;
    text-underline-offset: 2px;
}
.gov-change-btn:hover { color: var(--primary); }

/* ── Location panel ───────────────────────────────────────────── */
.gov-loc-panel {
    background: white;
    border-radius: 16px;
    padding: 1.5rem;
    box-shadow: 0 4px 24px rgba(0,0,0,0.10), 0 1px 4px rgba(0,0,0,0.06);
    border: 1.5px solid var(--border, #e5e7eb);
    position: relative;
    animation: govLocIn 0.18s ease;
}
@keyframes govLocIn {
    from { opacity: 0; transform: translateY(-6px); }
    to   { opacity: 1; transform: translateY(0); }
}
.gov-loc-close {
    position: absolute; top: 1rem; right: 1rem;
    background: none; border: none;
    font-size: 1.5rem; color: var(--text-muted, #9ca3af);
    cursor: pointer; line-height: 1;
    padding: 0.1rem 0.4rem; border-radius: 6px;
    transition: background 0.15s, color 0.15s;
}
.gov-loc-close:hover { background: var(--primary-light, #f0f4ff); color: var(--primary); }
.gov-loc-head {
    font-size: 1.1rem; font-weight: 700;
    color: var(--primary);
    margin-bottom: 0.4rem; padding-right: 2.5rem;
    display: flex; align-items: center; gap: 0.5rem;
}
.gov-loc-head i { color: var(--accent, #10b981); }
.gov-loc-sub {
    font-size: 0.9rem; color: var(--text-muted);
    margin-bottom: 1.1rem; line-height: 1.5;
}
.gov-loc-input-row {
    display: flex; gap: 0.5rem; align-items: center;
}
.gov-loc-input {
    flex: 1; max-width: 220px;
    padding: 0.7rem 1rem;
    border: 2px solid var(--border, #e5e7eb);
    border-radius: 10px;
    font-size: 1.1rem; font-family: inherit;
    color: var(--text-dark);
    letter-spacing: 0.08em;
    transition: border-color 0.15s;
}
.gov-loc-input:focus { outline: none; border-color: var(--primary); }
.gov-loc-go-btn {
    background: var(--primary); color: white;
    border: none; border-radius: 10px;
    width: 46px; height: 46px; flex-shrink: 0;
    font-size: 1rem; cursor: pointer;
    display: flex; align-items: center; justify-content: center;
    transition: background 0.15s;
}
.gov-loc-go-btn:hover { background: #1a3a6e; }
.gov-loc-error {
    font-size: 0.82rem; color: var(--danger, #dc2626);
    min-height: 1.1rem; margin-top: 0.35rem;
}
/* Preview area */
.gov-loc-preview {
    margin-top: 1rem;
    animation: govLocIn 0.2s ease;
}
.gov-loc-preview-row {
    display: flex; align-items: center; gap: 0.5rem;
    font-size: 1.05rem; font-weight: 600;
    color: var(--text-dark); margin-bottom: 0.9rem;
}
.gov-loc-preview-row i.ok { color: var(--success, #10b981); font-size: 1.1rem; }
.gov-loc-loading {
    display: flex; align-items: center; gap: 0.5rem;
    color: var(--text-muted); font-weight: 400; font-size: 0.9rem;
}
/* Coverage grid */
.gov-cov-grid {
    display: grid; grid-template-columns: repeat(3, 1fr);
    gap: 0.6rem; margin-bottom: 1rem;
}
.gov-cov-item {
    background: var(--surface, #f8fafc);
    border-radius: 10px; padding: 0.8rem 0.5rem;
    display: flex; flex-direction: column;
    align-items: center; gap: 0.3rem;
    text-align: center;
    border: 1.5px solid var(--border, #e5e7eb);
    transition: border-color 0.15s, background 0.15s;
}
.gov-cov-item--yes  { border-color: var(--success, #10b981); background: #f0fdf4; }
.gov-cov-item--soon { border-color: #f59e0b; background: #fffbeb; }
.gov-cov-item i.gov-cov-icon { font-size: 1.15rem; }
.gov-cov-item--yes  i.gov-cov-icon { color: var(--success, #10b981); }
.gov-cov-item--soon i.gov-cov-icon { color: #f59e0b; }
.gov-cov-item strong { font-size: 0.8rem; font-weight: 700; color: var(--text-dark); }
.gov-cov-item span  { font-size: 0.7rem; color: var(--text-muted); line-height: 1.3; }
.gov-cov-item i.gov-cov-check { font-size: 0.85rem; }
.gov-cov-item--yes  i.gov-cov-check { color: var(--success, #10b981); }
.gov-cov-item--soon i.gov-cov-check { color: #f59e0b; }
/* Panel actions */
.gov-loc-actions {
    display: flex; justify-content: flex-end;
    align-items: center; gap: 0.6rem;
    padding-top: 0.75rem;
    border-top: 1px solid var(--border, #e5e7eb);
}
.gov-loc-cancel-link {
    background: none; border: none;
    font-size: 0.9rem; color: var(--text-muted);
    cursor: pointer; padding: 0.5rem 0.25rem;
    font-family: inherit; text-decoration: underline dotted;
    text-underline-offset: 2px;
    transition: color 0.15s;
}
.gov-loc-cancel-link:hover { color: var(--text-dark); }
.gov-loc-confirm-btn {
    background: var(--accent, #10b981); color: white;
    border: none; border-radius: 10px;
    padding: 0.65rem 1.25rem;
    font-size: 0.92rem; font-weight: 700;
    cursor: pointer; font-family: inherit;
    display: flex; align-items: center; gap: 0.4rem;
    transition: background 0.15s;
}
.gov-loc-confirm-btn:hover { background: #059669; }
/* Reset to default link */
.gov-loc-reset {
    display: flex; align-items: center; gap: 0.4rem;
    padding-top: 0.75rem;
    border-top: 1px solid var(--border, #e5e7eb);
    margin-top: 0.75rem;
}
.gov-loc-reset i { font-size: 0.8rem; color: var(--text-muted); }
.gov-loc-reset button {
    background: none; border: none; padding: 0;
    font-size: 0.85rem; color: var(--text-muted);
    cursor: pointer; font-family: inherit;
    text-decoration: underline dotted;
    text-underline-offset: 2px;
    transition: color 0.15s;
}
.gov-loc-reset button:hover { color: var(--primary); }
@media (max-width: 600px) {
    .gov-cov-grid { gap: 0.4rem; }
    .gov-cov-item { padding: 0.65rem 0.35rem; }
    .gov-cov-item span { display: none; }
    .gov-loc-panel { padding: 1.1rem; }
}

/* ── Featured content slot ───────────────────────────────────── */
.gov-featured-card {
    display: block;
    background: linear-gradient(135deg, #0f172a 0%, #1e3a5f 100%);
    border-radius: 12px;
    padding: 1rem 1.125rem;
    margin-bottom: 0.875rem;
    text-decoration: none;
    cursor: pointer;
    transition: opacity 0.15s;
}
.gov-featured-card:hover { opacity: 0.92; }
.gov-featured-label {
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.09em;
    color: var(--accent, #42c8c1);
    margin-bottom: 0.35rem;
    display: flex; align-items: center; gap: 0.3rem;
}
.gov-featured-headline {
    font-size: 1rem;
    font-weight: 800;
    color: #fff;
    line-height: 1.3;
    margin-bottom: 0.3rem;
}
.gov-featured-summary {
    font-size: 0.8rem;
    color: rgba(255,255,255,0.72);
    line-height: 1.45;
    margin-bottom: 0.5rem;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.gov-featured-cta {
    font-size: 0.8rem;
    font-weight: 700;
    color: var(--accent, #42c8c1);
    display: flex; align-items: center; gap: 0.35rem;
}

/* ── This week briefing header ───────────────────────────────── */
.gov-week-brief {
    display: flex;
    align-items: stretch;
    gap: 0.75rem;
    margin-bottom: 1rem;
    padding: 0.875rem 1rem;
    background: white;
    border: 1px solid var(--border);
    border-radius: 10px;
}

.gov-week-accent {
    width: 3px;
    background: var(--accent);
    border-radius: 2px;
    flex-shrink: 0;
    min-height: 34px;
    align-self: stretch;
}

.gov-week-text { flex: 1; min-width: 0; }

.gov-week-title {
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--primary);
    margin-bottom: 2px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.gov-week-sub {
    font-size: 0.78rem;
    color: var(--text-muted);
    line-height: 1.4;
}

/* ── Meeting alert bar ────────────────────────────────────────── */
.gov-mtg-banner {
    background: var(--mtg-soon-bg);
    border: 1px solid #fbbf24;
    border-radius: var(--radius);
    padding: 0.9rem 1.1rem;
    margin-bottom: 1.5rem;
}

.gov-mtg-banner--urgent {
    background: var(--mtg-urgent-bg);
    border-color: var(--mtg-urgent-border);
}

/* Soft "next meeting" fallback — shown when no urgent meeting is pending */
.gov-mtg-banner--next {
    background: #f8fafc;
    border-color: #e2e8f0;
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.65rem 1rem;
}
.gov-mtg-cal-icon { color: #94a3b8; font-size: 1rem; flex-shrink: 0; }
.gov-mtg-next-info {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
}
.gov-mtg-next-label {
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #94a3b8;
}
.gov-mtg-next-name {
    font-size: 0.82rem;
    font-weight: 600;
    color: #334155;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.gov-mtg-next-when {
    font-size: 0.75rem;
    color: #64748b;
}
.gov-mtg-next-days {
    font-size: 0.75rem;
    font-weight: 600;
    color: #475569;
    white-space: nowrap;
    flex-shrink: 0;
}
.gov-mtg-next-link {
    color: #94a3b8;
    font-size: 0.7rem;
    flex-shrink: 0;
    text-decoration: none;
}
.gov-mtg-next-link:hover { color: #3b82f6; }

.gov-mtg-banner--urgent .gov-mtg-banner-head {
    color: var(--mtg-urgent);
}

.gov-mtg-banner--urgent .gov-mtg-days {
    background: var(--mtg-urgent);
}
.gov-mtg-dismiss {
    margin-left: auto;
    background: none;
    border: none;
    cursor: pointer;
    color: inherit;
    opacity: 0.6;
    font-size: 1.1rem;
    line-height: 1;
    padding: 0 0.2rem;
}
.gov-mtg-dismiss:hover { opacity: 1; }

.gov-mtg-banner-head {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: var(--mtg-soon);
    margin-bottom: 0.7rem;
}
.gov-mtg-list { display: flex; flex-direction: column; gap: 0.55rem; }
.gov-mtg-item {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    flex-wrap: wrap;
}
.gov-mtg-days {
    flex-shrink: 0;
    background: var(--mtg-soon);
    color: white;
    font-size: 0.68rem;
    font-weight: 700;
    padding: 0.2rem 0.5rem;
    border-radius: 20px;
    white-space: nowrap;
}
.gov-mtg-info { flex: 1; min-width: 0; }
.gov-mtg-name {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--text);
    margin-bottom: 0.1rem;
}
.gov-mtg-when {
    font-size: 0.775rem;
    color: var(--muted);
}
.gov-mtg-agenda {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--accent);
    text-decoration: none;
    white-space: nowrap;
    flex-shrink: 0;
}
.gov-mtg-agenda:hover { text-decoration: underline; }
.gov-mtg-agenda i { font-size: 0.65rem; margin-left: 0.18rem; }
.gov-mtg-note {
    font-size: 0.75rem;
    color: var(--mtg-urgent);
    font-weight: 500;
    margin-top: 0.2rem;
}
.gov-mtg-banner--urgent .gov-mtg-item--urgent .gov-mtg-name {
    font-weight: 700;
}

/* ── Location + Level nav group ──────────────────────────────── */
.gov-nav-group {
    background: var(--card, #fff);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    margin-bottom: 1rem;
    overflow: hidden;
}
.gov-nav-group .gov-hero {
    padding: 0.6rem 0.75rem 0.5rem;
    margin-bottom: 0;
    border-bottom: 1px solid var(--border);
    box-shadow: none;
    border-radius: 0;
}
.gov-nav-group .gov-level-tabs {
    margin-bottom: 0;
    padding: 0.5rem 0.75rem;
}
.gov-nav-group #govZipRow {
    margin: 0 0.75rem 0.75rem;
}

/* ── Local body detail: tweet feed + topic links ─────────────── */
.od-tweets { padding: 0 0 0.25rem; }
.od-tweet {
    padding: 0.6rem 1rem;
    border-top: 1px solid var(--border);
    cursor: pointer;
}
.od-tweet:hover { background: #f8fafc; }
.od-tweet-cat {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    font-size: 0.68rem;
    font-weight: 600;
    color: #64748b;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: 0.25rem;
}
.od-tweet-text {
    font-size: 0.85rem;
    color: #1e293b;
    line-height: 1.45;
    margin-bottom: 0.2rem;
}
.od-tweet-date {
    font-size: 0.72rem;
    color: #94a3b8;
}
.od-topics {
    padding: 0.6rem 1rem 0.75rem;
    border-top: 1px solid var(--border);
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    align-items: center;
}
.od-topics-label {
    width: 100%;
    font-size: 0.7rem;
    font-weight: 600;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 0.2rem;
}
.od-topic-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.78rem;
    color: var(--accent, #42c8c1);
    background: rgba(66, 200, 193, 0.1);
    border-radius: 9999px;
    padding: 0.25rem 0.65rem;
    text-decoration: none;
    font-weight: 500;
    transition: background 0.15s;
}
.od-topic-pill:hover { background: rgba(66, 200, 193, 0.2); }
.od-chat-btn {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.78rem;
    font-family: inherit;
    color: var(--accent, #42c8c1);
    background: rgba(66, 200, 193, 0.1);
    border: none;
    border-radius: 9999px;
    padding: 0.3rem 0.75rem;
    cursor: pointer;
    white-space: nowrap;
    flex-shrink: 0;
}
.od-chat-btn:hover { background: rgba(66, 200, 193, 0.2); }

/* ── Level tabs ───────────────────────────────────────────────── */
.gov-level-tabs {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0;
    margin-bottom: 1.25rem;
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 1px 3px rgba(0,0,0,0.05);
}
.gov-level-tab {
    flex: unset;
    padding: 12px 8px 10px;
    background: #fff;
    border: none;
    border-right: 1px solid var(--border);
    border-radius: 0;
    font-family: inherit;
    font-size: 0.75rem;
    font-weight: 700;
    color: var(--text-dark);
    cursor: pointer;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 3px;
    transition: background 0.15s, color 0.15s;
    position: relative;
    text-align: center;
}
.gov-level-tab:last-child { border-right: none; }
.gov-level-tab:hover:not(.active):not(.gov-level-tab--unavailable) {
    background: var(--bg-cream);
    color: var(--text-dark);
}
.gov-level-tab i {
    font-size: 1.25rem;
    color: var(--text-muted);
}
.gov-level-tab .tab-label-text {
    font-size: 0.75rem;
    font-weight: 700;
    color: var(--text-dark);
    line-height: 1.2;
}
.gov-level-tab .tab-sub {
    font-size: 0.6rem;
    font-weight: 400;
    color: var(--text-muted);
    line-height: 1;
}
.gov-level-tab .tab-count {
    font-size: 0.6rem;
    font-weight: 700;
    background: rgba(66,200,193,0.18);
    color: var(--blue);
    padding: 1px 6px;
    border-radius: 99px;
    margin-top: 1px;
}
.gov-level-tab.active {
    background: var(--primary);
    border-color: var(--primary);
    color: #fff;
}
.gov-level-tab.active i { color: #fff; }
.gov-level-tab.active .tab-label-text { color: #F5F0E6; }
.gov-level-tab.active .tab-sub { color: rgba(245,240,230,0.6); }
.gov-level-tab.active .tab-count { background: rgba(66,200,193,0.25); color: var(--accent); }
/* .gov-level-tab--unavailable reserved for future use */

/* ── People scroll ────────────────────────────────────────────── */
.gov-people-section {
    margin-bottom: 0.4rem;
}
.gov-people-label {
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--muted);
    margin-bottom: 0.75rem;
    padding-left: 0.1rem;
}
.gov-scroll-track {
    position: relative;
}

.gov-scroll-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 2;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--card, #fff);
    border: 1.5px solid var(--border);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    font-size: 0.65rem;
    color: var(--muted);
    box-shadow: 0 1px 4px rgba(0,0,0,0.09);
    transition: background 0.14s, color 0.14s, border-color 0.14s;
}
/* Float arrows outside the scroll track into the parent margin */
.gov-scroll-arrow--prev { left: -20px; }
.gov-scroll-arrow--next { right: -20px; }
.gov-scroll-arrow:hover { background: var(--accent, #2563eb); color: #fff; border-color: var(--accent, #2563eb); }
.gov-scroll-arrow.is-hidden { visibility: hidden; pointer-events: none; }
/* On desktop only: indent track to create space for floating arrows */
@media (hover: hover) and (pointer: fine) {
    .gov-scroll-track { margin-left: 20px; margin-right: 20px; }
}
@media (hover: none) { .gov-scroll-arrow { display: none; } }

.gov-people-scroll {
    width: 100%;
    display: flex;
    gap: 0.65rem;
    overflow-x: auto;
    padding: 0.2rem 0 0.65rem;
    scrollbar-width: none;
    -ms-overflow-style: none;
    -webkit-overflow-scrolling: touch;
}
.gov-people-scroll::-webkit-scrollbar { display: none; }

.gov-person-card {
    flex-shrink: 0;
    width: 108px;
    background: var(--card, #fff);
    border: 2px solid var(--border);
    border-radius: 12px;
    padding: 0.85rem 0.6rem 0.7rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.4rem;
    cursor: pointer;
    transition: all 0.15s;
    text-align: center;
    position: relative;
    box-sizing: border-box;
}

.gov-person-card:hover {
    border-color: var(--accent, #2563eb);
    box-shadow: 0 4px 16px rgba(0,0,0,0.10);
    transform: translateY(-2px);
    background: var(--card, #fff);    /* stay white on hover */
}

/* Selected: gentle highlight — NOT solid blue background */
.gov-person-card.active {
    border-color: var(--primary, #1a3a6b);
    border-width: 2px;
    background: #eef2fb;              /* very light tint, readable text */
    box-shadow: 0 0 0 3px rgba(26, 58, 107, 0.12);
}

.gov-person-card.active .gp-name {
    color: var(--primary, #1a3a6b);
}

.gp-deselect-btn {
    position: absolute;
    top: 4px;
    right: 4px;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: var(--primary, #1a3a6b);
    color: #fff;
    border: none;
    cursor: pointer;
    font-size: 0.8rem;
    line-height: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    z-index: 2;
    transition: background 0.13s;
}
.gp-deselect-btn:hover { background: #dc2626; }


.gp-avatar {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.875rem;
    font-weight: 700;
    color: white;
    flex-shrink: 0;
}
.gp-avatar.is-group { font-size: 1rem; }
.gp-avatar.is-group i { font-size: 1.1rem; }

.gp-name {
    font-size: 0.78rem;
    font-weight: 700;
    color: var(--text);
    line-height: 1.25;
    width: 100%;
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}
.gp-role {
    font-size: 0.68rem;
    color: var(--muted);
    line-height: 1.3;
    width: 100%;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}
.gp-scope {
    font-size: 0.62rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding: 0.12rem 0.4rem;
    border-radius: 20px;
    line-height: 1;
}
.scope-township { background: #dbeafe; color: #1e40af; }
.scope-county   { background: #fef3c7; color: #92400e; }
.scope-schools  { background: #d1fae5; color: #065f46; }
.scope-state    { background: #ede9fe; color: #5b21b6; }
.scope-federal  { background: #fee2e2; color: #991b1b; }
.scope-services { background: #f3f4f6; color: #374151; }

.gp-party {
    font-size: 0.62rem;
    font-weight: 700;
    padding: 0.1rem 0.35rem;
    border-radius: 3px;
    position: absolute;
    top: 0.5rem;
    right: 0.5rem;
}
.party-r { background: #fee2e2; color: #991b1b; }
.party-d { background: #dbeafe; color: #1e40af; }

/* ZIP-verified badge on person card */
.gp-zip-badge {
    font-size: 0.6rem;
    font-weight: 600;
    color: #059669;
    background: #d1fae5;
    border-radius: 4px;
    padding: 0.1rem 0.3rem;
    margin-top: 0.2rem;
    display: block;
    letter-spacing: 0.01em;
}
.gp-zip-badge i { font-size: 0.55rem; }
/* Green border signals district-match; the zip badge at the bottom gives the detail */
.gov-person-card.zip-verified { border-color: #6ee7b7; }

/* Live meeting doc feed items */
.feed-live-badge {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    font-size: 0.65rem;
    font-weight: 600;
    color: #d97706;
    background: #fef3c7;
    border-radius: 4px;
    padding: 0.1rem 0.35rem;
    margin-left: 0.4rem;
    vertical-align: middle;
}

/* Service/dept cards: show bio on click but no active styling at all */
.gov-person-card.is-service { cursor: default; }
.gov-person-card.is-service:hover { transform: none; box-shadow: var(--shadow); border-color: var(--border); }
.gov-person-card.is-service.active { border-color: var(--border); }

/* ── Bio panel (shown when person is selected) ─────────────────── */
.gov-bio-panel {
    background: #42d3fc17;
    border: 1px solid #c7d7f0;
    border-radius: var(--radius);
    padding: 1rem 1.1rem;
    margin-bottom: 1.25rem;
    display: flex;
    gap: 1rem;
    align-items: flex-start;
    animation: fadeSlideIn 0.18s ease;
}
@keyframes fadeSlideIn {
    from { opacity: 0; transform: translateY(-6px); }
    to   { opacity: 1; transform: translateY(0); }
}
.gov-bio-avatar {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1rem;
    font-weight: 700;
    color: white;
    flex-shrink: 0;
}
.gov-bio-body { flex: 1; min-width: 0; }
.gov-bio-name {
    font-size: 1rem;
    font-weight: 700;
    color: var(--primary);
    margin-bottom: 0.1rem;
}
.gov-bio-role {
    font-size: 0.82rem;
    color: var(--muted);
    margin-bottom: 0.45rem;
}
.gov-bio-desc {
    font-size: 0.835rem;
    color: var(--text);
    line-height: 1.55;
    margin-bottom: 0.55rem;
}
.gov-bio-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 0.3rem;
}
.gov-bio-chip {
    font-size: 0.7rem;
    font-weight: 600;
    padding: 0.18rem 0.55rem;
    border-radius: 20px;
    background: white;
    border: 1px solid #c7d7f0;
    color: var(--primary);
    display: flex;
    align-items: center;
    gap: 0.25rem;
}
.gov-bio-chip i { font-size: 0.62rem; }
.gov-bio-contact a {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--accent);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    margin-right: 0.85rem;
}
.gov-bio-contact a:hover { text-decoration: underline; }
.gov-bio-close {
    background: none;
    border: none;
    color: var(--muted);
    cursor: pointer;
    font-size: 0.85rem;
    padding: 0.1rem;
    flex-shrink: 0;
    align-self: flex-start;
    margin-top: 0.1rem;
    transition: color 0.12s;
}
.gov-bio-close:hover { color: var(--text); }

/* ── Feed header ──────────────────────────────────────────────── */
.gov-feed-header {
    display: flex;
    align-items: center;
    margin-bottom: 0.75rem;
}
.gov-feed-label {
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--muted);
}

.gov-feed { display: flex; flex-direction: column; }

/* ── Feed item ────────────────────────────────────────────────── */
.feed-item {
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    margin-bottom: 0.65rem;
    overflow: hidden;
    box-shadow: var(--shadow);
    transition: box-shadow 0.15s;
}
.feed-item:hover { box-shadow: var(--shadow-lg); }
.feed-item.expanded { border-color: var(--accent); }

/* Topic cards — expandable like other feed items */
.feed-item--topic {
    padding: 0;
}

.feed-topic-actions {
    display: flex;
    gap: 0.5rem;
}
.feed-topic-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.3rem 0.9rem;
    border-radius: 20px;
    font-size: 0.78rem;
    font-weight: 600;
    text-decoration: none;
    border: 1.5px solid var(--border);
    transition: all 0.15s;
    white-space: nowrap;
    cursor: pointer;
}
.feed-topic-btn--topic {
    background: #fff;
    color: var(--accent);
    border-color: var(--accent);
}
.feed-topic-btn--topic:hover { background: #f0f4ff; }
.feed-topic-btn--chat {
    background: #fff;
    color: var(--green);
    border-color: var(--green);
}
.feed-topic-btn--chat:hover { background: #f0fdf4; }

.feed-item-main {
    padding: 0.85rem 1rem;
    cursor: pointer;
    display: flex;
    align-items: flex-start;
    gap: 0.65rem;
}

.feed-item-text {
    flex: 1;
    min-width: 0;
}

.feed-headline {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--text);
    line-height: 1.45;
}

.feed-tweet {
    font-size: 0.82rem;
    color: var(--muted);
    line-height: 1.5;
    margin-top: 0.28rem;
}

/* ── Topic-row feed items (prototype style) ───────────────────────── */
.fi-cat {
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
    align-self: flex-start;
    font-size: 0.6rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    padding: 2px 7px;
    border-radius: 3px;
    white-space: nowrap;
    margin-top: 2px;
}
.fi-cat--infra    { background: rgba(25,30,57,0.09);     color: #2a2e4a; }
.fi-cat--tech     { background: rgba(26,122,118,0.12);   color: #1a5a57; }
.fi-cat--budget   { background: rgba(90,86,112,0.12);    color: #3d3b52; }
.fi-cat--health   { background: rgba(83,74,183,0.12);    color: #372e8a; }
.fi-cat--trade    { background: rgba(166,74,42,0.12);    color: #7a3318; }
.fi-cat--zoning   { background: rgba(25,30,57,0.09);     color: #2a2e4a; }
.fi-cat--edu      { background: rgba(5,150,105,0.12);    color: #065f46; }
.fi-cat--energy   { background: rgba(26,122,118,0.12);   color: #1a5a57; }
.fi-cat--housing  { background: rgba(124,111,196,0.12);  color: #4a3ea0; }
.fi-main {
    flex: 1;
    min-width: 0;
}
.fi-body {
    font-size: 0.67rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--text-muted);
    margin-bottom: 0.2rem;
}
.fi-title {
    font-family: 'Roboto Serif', serif;
    font-size: 0.9rem;
    font-weight: 700;
    color: var(--primary);
    line-height: 1.35;
    margin-bottom: 0.15rem;
}
.fi-desc {
    font-size: 0.775rem;
    color: var(--text-muted);
    line-height: 1.45;
    margin-top: 0.15rem;
}
.fi-chip {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 0.67rem;
    font-weight: 700;
    color: var(--text-muted);
    background: rgba(25,30,57,0.07);
    padding: 2px 8px;
    border-radius: 3px;
    margin-top: 0.35rem;
    border: none;
    cursor: pointer;
    font-family: inherit;
    transition: background 0.12s;
}
.fi-chip:hover { background: rgba(25,30,57,0.12); color: var(--primary); }
.fi-chip i { font-size: 0.6rem; }
.fi-date-chip {
    display: inline-flex;
    font-size: 0.67rem;
    color: var(--text-muted);
    margin-top: 0.35rem;
}
.fi-open { transform: rotate(180deg); }
.feed-chevron { transition: transform 0.2s; }
.feed-item.expanded .feed-chevron { transform: rotate(180deg); }

.feed-kb-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.22rem;
    font-size: 0.67rem;
    font-weight: 600;
    color: var(--accent);
    text-decoration: none;
    padding: 0.1rem 0.5rem;
    border: 1px solid var(--accent);
    border-radius: 20px;
    transition: background 0.12s;
}
.feed-kb-chip i { font-size: 0.6rem; }
.feed-kb-chip:hover { background: #eff6ff; }

.feed-source-row {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.2rem;
}
.feed-source-chip {
    font-size: 0.7rem;
    font-weight: 600;
    color: var(--muted, #6b7280);
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    letter-spacing: 0.01em;
    text-transform: uppercase;
}
.feed-source-chip i { font-size: 0.65rem; opacity: 0.7; }

.feed-meta {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    flex-wrap: wrap;
    margin-top: 0.35rem;
}

.feed-rep-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    font-size: 0.72rem;
    color: var(--muted);
    font-weight: 500;
}
.feed-rep-dot {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.52rem;
    font-weight: 800;
    color: white;
    flex-shrink: 0;
}

.feed-date {
    font-size: 0.72rem;
    color: var(--muted);
}

.feed-status-chip {
    font-size: 0.65rem;
    font-weight: 700;
    padding: 0.12rem 0.45rem;
    border-radius: 20px;
}
.feed-more-chip {
    font-size: 0.65rem;
    color: var(--muted);
    background: var(--surface-2, #f3f4f6);
    border-radius: 20px;
    padding: 0.12rem 0.5rem;
    display: inline-flex;
    align-items: center;
    gap: 4px;
}
.feed-more-chip i { font-size: 0.6rem; }

/* Meeting series instances list */
.feed-series-list {
    margin: 10px 0 6px;
    border-top: 1px solid var(--border-light, #e5e7eb);
    padding-top: 8px;
}
.feed-series-label {
    font-size: 0.65rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--muted);
    margin-bottom: 6px;
    display: flex;
    align-items: center;
    gap: 5px;
}
.feed-series-item {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 4px 0;
    font-size: 0.75rem;
    border-bottom: 1px solid var(--border-light, #f3f4f6);
}
.feed-series-item:last-child { border-bottom: none; }
.feed-series-date { color: var(--ink); font-weight: 500; min-width: 80px; }
.feed-series-link {
    margin-left: auto;
    font-size: 0.7rem;
    color: var(--accent);
    text-decoration: none;
    white-space: nowrap;
}
.feed-series-link:hover { text-decoration: underline; }
.feed-series-video-link {
    font-size: 0.7rem;
    color: #dc2626;
    text-decoration: none;
    white-space: nowrap;
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
}
.feed-series-video-link:hover { text-decoration: underline; }
.feed-status-chip {
    font-size: 0.62rem;
    font-weight: 600;
    padding: 1px 6px;
    border-radius: 10px;
    white-space: nowrap;
}

.status-signed    { background: #d1fae5; color: #065f46; }
.status-proposed  { background: #dbeafe; color: #1e40af; }
.status-pending   { background: #fef3c7; color: #92400e; }
.status-live      { background: #fee2e2; color: #991b1b; font-weight: 700; animation: status-live-pulse 2s ease-in-out infinite; }
@keyframes status-live-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.75; } }
.status-advancing { background: #fef3c7; color: #92400e; }
.status-vetoed    { background: #fee2e2; color: #991b1b; }
.status-vote      { background: #ede9fe; color: #5b21b6; }
.status-default   { background: #f3f4f6; color: #374151; }
.status-urgent    { background: #fef2f2; color: #991b1b; font-weight: 800;
                    box-shadow: 0 0 0 1.5px #fca5a5; animation: urgentPulse 2s ease-in-out infinite; }
@keyframes urgentPulse {
    0%, 100% { box-shadow: 0 0 0 1.5px #fca5a5; }
    50%       { box-shadow: 0 0 0 3px #fca5a580; }
}

.feed-chevron {
    flex-shrink: 0;
    align-self: center;
    color: var(--muted);
    font-size: 0.72rem;
    transition: transform 0.18s;
    margin-top: 0.1rem;
}
.feed-item.expanded .feed-chevron { transform: rotate(180deg); }

/* Feed item expanded detail */
.feed-detail {
    border-top: 1px solid var(--border);
    padding: 0.9rem 1rem 1rem;
    background: var(--bg);
    animation: feedDetailIn 0.18s ease;
}
@keyframes feedDetailIn {
    from { opacity: 0; }
    to   { opacity: 1; }
}
.feed-detail-blurb {
    font-size: 0.875rem;
    color: var(--text);
    line-height: 1.6;
    margin-bottom: 0.85rem;
    border-left: 3px solid var(--accent);
    padding-left: 0.75rem;
}

/* Both-sides grid in feed detail */
.feed-sides {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.6rem;
    margin-bottom: 0.85rem;
}
.feed-side {
    border-radius: 8px;
    padding: 0.75rem 0.85rem;
}
.feed-side--pause {
    background: #fff5f5;
    border: 1px solid #fecaca;
}
.feed-side--pro {
    background: #eff6ff;
    border: 1px solid #bfdbfe;
}
.feed-side__label {
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    margin-bottom: 0.5rem;
}
.feed-side--pause .feed-side__label { color: #b91c1c; }
.feed-side--pro   .feed-side__label { color: #1d4ed8; }
.feed-side__list {
    margin: 0;
    padding-left: 1rem;
    list-style: disc;
}
.feed-side__list li {
    font-size: 0.8rem;
    color: var(--text, #374151);
    line-height: 1.45;
    margin-bottom: 0.3rem;
}
.feed-side__list li:last-child { margin-bottom: 0; }
@media (max-width: 540px) {
    .feed-sides { grid-template-columns: 1fr; }
}

/* Public comment tips in feed detail */
.feed-tips {
    background: #f0fdf4;
    border: 1px solid #bbf7d0;
    border-radius: 8px;
    padding: 0.75rem 0.9rem;
    margin-top: 0.75rem;
    margin-bottom: 0.85rem;
}
.feed-tips__label {
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #15803d;
    margin-bottom: 0.5rem;
    display: flex;
    align-items: center;
    gap: 0.35rem;
}
.feed-tips__label i { font-size: 0.65rem; }
.feed-tips__list {
    margin: 0;
    padding-left: 1rem;
    list-style: disc;
}
.feed-tips__list li {
    font-size: 0.8rem;
    color: #166534;
    line-height: 1.45;
    margin-bottom: 0.3rem;
}
.feed-tips__list li:last-child { margin-bottom: 0; }

.feed-detail-impact {
    background: white;
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    padding: 0.75rem 0.9rem;
    margin-bottom: 0.85rem;
}
.feed-detail-impact-label {
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: var(--primary);
    margin-bottom: 0.3rem;
    display: flex;
    align-items: center;
    gap: 0.35rem;
}
.feed-detail-impact-label i { font-size: 0.65rem; }
.feed-detail-impact-text {
    font-size: 0.845rem;
    color: var(--text);
    line-height: 1.55;
}

.feed-detail-footer {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}
.feed-detail-id {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.72rem;
    color: var(--muted);
    background: white;
    border: 1px solid var(--border);
    padding: 0.15rem 0.5rem;
    border-radius: 5px;
}

/* category color classes removed — cat-dot icon no longer shown in feed */

/* ── gov-filters bar ──────────────────────────────────────── */
.gov-filters {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    padding: 0.5rem 0 0.75rem;
}

.gov-filter-btn {
    padding: 0.35rem 0.9rem;
    border-radius: 20px;
    border: 1.5px solid var(--border);
    background: var(--card);
    font-size: 0.82rem;
    font-weight: 500;
    color: var(--muted);
    cursor: pointer;
    transition: all 0.15s;
}

.gov-filter-btn.active,
.gov-filter-btn:hover {
    background: var(--accent);
    border-color: var(--accent);
    color: #fff;
}

/* ── Feed Weigh In button ────────────────────────────────── */
.feed-kb-link {
    padding: 0.3rem 0.85rem;
    background: #ffffff;
    color: var(--accent);
    border: 1.5px solid var(--border);
    border-radius: 20px;
    font-size: 0.78rem;
    font-weight: 600;
    text-decoration: none;
    display: flex;
    align-items: center;
    gap: 0.35rem;
    white-space: nowrap;
    box-shadow: 0 1px 3px rgba(0,0,0,0.07);
    transition: all 0.15s;
}

.feed-kb-link:hover {
    background: #f0f4ff;
    border-color: var(--accent);
}

.feed-detail-actions {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.feed-weigh-in-btn {
    margin-left: 0;
    padding: 0.3rem 0.85rem;
    background: #ffffff;
    color: var(--text);
    border: 1.5px solid var(--border);
    border-radius: 20px;
    font-size: 0.78rem;
    font-weight: 600;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 0.35rem;
    transition: all 0.15s;
    white-space: nowrap;
    box-shadow: 0 1px 3px rgba(0,0,0,0.07);
}

.feed-weigh-in-btn i { color: var(--accent); }

.feed-weigh-in-btn:hover {
    background: var(--accent);
    color: #fff;
    border-color: var(--accent);
}

.feed-weigh-in-btn:hover i { color: #fff; }

/* ── Primary Source Documents ─────────────────────────────── */
.feed-detail-docs {
    margin: 0.75rem 0;
    padding: 0.75rem 1rem;
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
}
.feed-detail-docs-label {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #64748b;
    margin-bottom: 0.5rem;
    display: flex;
    align-items: center;
    gap: 0.35rem;
}
.feed-detail-docs-list {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}
.feed-doc-link {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.8rem;
    color: #2563eb;
    text-decoration: none;
    padding: 0.2rem 0;
    transition: color 0.15s;
}
.feed-doc-link:hover { color: #1d4ed8; text-decoration: underline; }
.feed-doc-link i { font-size: 0.75rem; flex-shrink: 0; }
.feed-doc-minutes { color: #059669; }
.feed-doc-minutes:hover { color: #047857; }
.feed-doc-law { color: #7c3aed; }
.feed-doc-law:hover { color: #6d28d9; }

/* ── Meeting banner: dual links ───────────────────────────── */
.gov-mtg-links {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.3rem;
    flex-shrink: 0;
}
.gov-mtg-agenda--doc {
    background: #fff7ed;
    color: #c2410c;
    border-color: #fed7aa;
    font-size: 0.72rem;
}
.gov-mtg-agenda--doc:hover { background: #ffedd5; }

/* ── Weigh In modal ───────────────────────────────────────── */
.weigh-in-modal {
    position: fixed;
    inset: 0;
    z-index: 9000;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transition: opacity 0.2s;
}

.weigh-in-modal.is-open { opacity: 1; }

.weigh-in-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,0.45);
}

.weigh-in-modal__box {
    position: relative;
    z-index: 1;
    background: #ffffff;
    border-radius: var(--radius);
    padding: 2rem;
    max-width: 420px;
    width: 90%;
    box-shadow: 0 8px 40px rgba(0,0,0,0.22);
    text-align: center;
}

.weigh-in-modal__close {
    position: absolute;
    top: 0.75rem;
    right: 0.75rem;
    background: none;
    border: none;
    font-size: 1.25rem;
    color: var(--muted);
    cursor: pointer;
    line-height: 1;
    padding: 0.2rem 0.5rem;
}

.weigh-in-modal__label {
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    color: var(--muted);
    text-transform: uppercase;
    margin-bottom: 0.5rem;
}

.weigh-in-modal__title {
    font-size: 1rem;
    font-weight: 700;
    color: var(--text);
    margin-bottom: 0.4rem;
    line-height: 1.3;
}

.weigh-in-modal__sub {
    font-size: 0.85rem;
    color: var(--muted);
    margin-bottom: 1.25rem;
}

.weigh-in-modal__opts {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    margin-bottom: 1rem;
}

.weigh-in-opt {
    padding: 0.65rem 1rem;
    border-radius: 8px;
    border: 2px solid var(--border);
    background: var(--bg);
    font-size: 0.9rem;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.15s;
    color: var(--text);
}

.weigh-in-opt:hover { border-color: var(--accent); color: var(--accent); }

.weigh-in-opt--support.selected { background: #059669; border-color: #059669; color: #fff; }
.weigh-in-opt--oppose.selected  { background: #DC2626; border-color: #DC2626; color: #fff; }
.weigh-in-opt--neutral.selected { background: var(--accent); border-color: var(--accent); color: #fff; }

.weigh-in-modal__cta {
    font-size: 0.8rem;
    color: var(--muted);
}

.weigh-in-modal__cta a {
    color: var(--accent);
    font-weight: 500;
    text-decoration: none;
}

.weigh-in-modal__cta a:hover { text-decoration: underline; }

/* Results state */
.weigh-in-results__thanks {
    font-size: 0.9rem;
    color: var(--text);
    margin-bottom: 0.25rem;
}

.weigh-in-results__sub {
    font-size: 0.82rem;
    color: var(--muted);
    margin-bottom: 1rem;
}

.weigh-in-results {
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
    margin-bottom: 1.1rem;
    text-align: left;
}

.weigh-in-bar {}

.weigh-in-bar--yours .weigh-in-bar__track {
    box-shadow: 0 0 0 2px #e5e7eb;
    border-radius: 6px;
}

.weigh-in-bar__top {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: 0.3rem;
}

.weigh-in-bar__label {
    font-size: 0.82rem;
    font-weight: 500;
    color: var(--text);
}

.weigh-in-bar__you {
    font-size: 0.72rem;
    color: var(--muted);
    font-weight: 400;
    margin-left: 0.3rem;
}

.weigh-in-bar__pct {
    font-size: 0.85rem;
    font-weight: 700;
}

.weigh-in-bar__track {
    height: 8px;
    background: #f3f4f6;
    border-radius: 6px;
    overflow: hidden;
}

.weigh-in-bar__fill {
    height: 100%;
    border-radius: 6px;
    transition: width 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}

/* KB link */
.weigh-in-results__kb-link {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.65rem 0.9rem;
    background: #f0f4ff;
    border: 1px solid #c7d7fd;
    border-radius: 8px;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--accent);
    text-decoration: none;
    transition: all 0.15s;
    margin-bottom: 0.25rem;
}

.weigh-in-results__kb-link:hover {
    background: var(--accent);
    color: #fff;
    border-color: var(--accent);
}

.weigh-in-results__kb-link .fa-arrow-right {
    margin-left: auto;
    font-size: 0.75rem;
}

/* ── Grouped people rows (Local level) ──────────────────────── */
.gov-people-groups {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    margin-bottom: 0.5rem;
}

.gov-people-group {
    display: flex;
    flex-direction: row;      /* label left, scroll right — horizontal */
    align-items: flex-start;
    min-width: 0;
}

.gov-people-group-label {
    flex-shrink: 0;
    width: 78px;
    min-width: 78px;          /* prevents label from collapsing */
    padding-top: 0.8rem;
    padding-right: 0.65rem;
    font-size: 0.63rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: var(--muted);
    line-height: 1.35;
    text-align: right;
    border-right: 2px solid var(--border);
}
.gov-people-group-label i {
    display: block;
    font-size: 0.9rem;
    margin-bottom: 0.2rem;
    color: var(--primary);
}

/* This wrapper must clip and scroll horizontally */
.gov-people-group-scroll-wrap {
    flex: 1 1 0%;             /* grow, shrink, base 0 — prevents blowout */
    min-width: 0;
    overflow-x: auto;
    overflow-y: visible;
    padding-left: 0.65rem;
    padding-bottom: 0.5rem;
    scrollbar-width: none;
    -ms-overflow-style: none;
    -webkit-overflow-scrolling: touch;
}
.gov-people-group-scroll-wrap::-webkit-scrollbar { display: none; }

/* The cards row itself: nowrap, natural width, scroll provided by parent */
.gov-people-group-scroll-wrap .gov-people-scroll {
    display: flex;
    flex-direction: row;      /* explicitly horizontal */
    flex-wrap: nowrap;
    gap: 0.65rem;
    width: max-content;       /* allows scrolling; parent clips it */
    overflow: visible;
    padding-bottom: 0;
}


@media (max-width: 500px) {
    .gov-people-group-label {
        width: 58px;
        min-width: 58px;
        font-size: 0.58rem;
    }
}

/* ── Empty state ─────────────────────────────────────────────── */
.gov-empty {
    text-align: center;
    padding: 3rem 1rem;
    color: var(--muted);
    font-size: 0.9rem;
}
.gov-empty i { font-size: 2.5rem; display: block; margin-bottom: 0.75rem; opacity: 0.35; }

.feed-show-more {
    display: block;
    width: 100%;
    padding: 0.75rem 1rem;
    margin-top: 0.25rem;
    background: none;
    border: 1px solid var(--border, #e5e7eb);
    border-radius: 0.5rem;
    color: var(--accent, #2563eb);
    font-size: 0.875rem;
    font-weight: 500;
    text-align: center;
    cursor: pointer;
    transition: background 0.15s;
}
.feed-show-more:hover { background: #f0f4ff; }
.feed-show-more i { margin-left: 0.4rem; font-size: 0.75rem; }
.feed-show-less { color: var(--ink-3); }

/* ── Feed section dividers ───────────────────────────────────────── */
.feed-section-head {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--ink-3);
    padding: 8px 2px 5px;
    border-top: 1px solid var(--border-light, #e5e7eb);
    margin-top: 2px;
    user-select: none;
}
.feed-section-head i { font-size: 0.7rem; opacity: 0.7; }
.feed-section-head--toggle {
    cursor: pointer;
    justify-content: space-between;
}
.feed-section-head--toggle:hover { color: var(--accent); }
.feed-section-head--toggle:hover i { opacity: 1; }
.feed-section-chevron { font-size: 0.6rem !important; opacity: 1 !important; }

/* ── Responsive ──────────────────────────────────────────────── */
@media (max-width: 600px) {
    /* Page chrome — body already adds 68px for the fixed bottom nav */
    .gov-page { padding: 1.25rem 0 1rem; }

    /* Level tabs — compact on mobile */
    .gov-level-tab { padding: 8px 4px 7px; }
    .gov-level-tab i { font-size: 1.1rem; }
    .gov-level-tab .tab-label-text { font-size: 0.6rem; }
    .gov-level-tab .tab-sub { display: none; }
    .gov-level-tab .tab-count { display: none; }

    /* Filters — edge-to-edge with horizontal scroll, no wrapping */
    .gov-filters {
        flex-wrap: nowrap;
        overflow-x: auto;
        padding: 0.75rem 1rem 0.9rem;
        gap: 0.45rem;
        scrollbar-width: none;
        -ms-overflow-style: none;
    }
    .gov-filters::-webkit-scrollbar { display: none; }
    .gov-filter-btn { flex-shrink: 0; }

    /* People section — generous breathing room */
    .gov-people-section {
        margin-bottom: 1.25rem;
        padding: 0 1rem;
    }
    .gov-people-label {
        margin-bottom: 0.85rem;
    }
    .gov-people-scroll {
        /* side-peek: first/last cards bleed to the edge */
        padding: 0.25rem 0 0.75rem;
    }
    .gov-person-card {
        width: 100px;
    }

    /* Feed items — mobile layout: category pill stacks above content */
    .feed-item { margin-bottom: 0.65rem; }
    .feed-item-main {
        position: relative;
        padding: 0.75rem 0.85rem;
        padding-right: 3rem;
        flex-wrap: wrap;
        align-items: flex-start;
        gap: 3px 0;
    }
    .feed-item-main .fi-cat {
        display: inline-flex;
        order: 0;
        flex-shrink: 0;
        margin-bottom: 2px;
    }
    .feed-item-main .fi-main {
        flex: 0 0 100%;
        min-width: 0;
        order: 2;
    }
    .feed-item-main .feed-save-btn {
        position: absolute;
        top: 0.6rem;
        right: 1.8rem;
        opacity: 1;
        padding: 0.3rem 0.4rem;
    }
    .feed-item-main .feed-chevron {
        position: absolute;
        top: 0.8rem;
        right: 0.55rem;
        align-self: auto;
        margin: 0;
    }

    /* Panel / misc */
    .gov-bio-panel { flex-direction: column; gap: 0.65rem; }
    .gov-mtg-agenda { display: none; }
    .gov-mtg-note  { display: none; }
}

/* ── "How does this work?" button (inline in people label) ──────────── */
.gov-explainer-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    margin-left: 0.75rem;
    padding: 0.2rem 0.6rem;
    border: 1px solid var(--accent, #2563eb);
    border-radius: 20px;
    background: transparent;
    color: var(--accent, #2563eb);
    font-size: 0.75rem;
    font-weight: 600;
    cursor: pointer;
    vertical-align: middle;
    transition: background 0.15s, color 0.15s;
    white-space: nowrap;
}

.gov-explainer-btn:hover {
    background: var(--accent, #2563eb);
    color: #fff;
}

/* ── Explainer slide-in drawer ───────────────────────────────────────── */
.gov-drawer-backdrop {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.35);
    z-index: 1100;
}

.gov-drawer-backdrop.is-visible { display: block; }

.gov-explainer-drawer {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    width: min(680px, 95vw);
    background: #fff;
    box-shadow: -4px 0 32px rgba(0,0,0,0.18);
    z-index: 1101;
    display: flex;
    flex-direction: column;
    transform: translateX(100%);
    transition: transform 0.3s cubic-bezier(0.4,0,0.2,1);
    overflow: hidden;
}

.gov-explainer-drawer.is-open { transform: translateX(0); }

.gov-explainer-drawer__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1.25rem 1.5rem;
    border-bottom: 1px solid var(--border, #e2e6ed);
    flex-shrink: 0;
    background: var(--primary, #1a3a6b);
    color: #fff;
}

.gov-explainer-drawer__title {
    font-size: 1rem;
    font-weight: 700;
    letter-spacing: 0.01em;
}

.gov-explainer-drawer__close {
    background: transparent;
    border: none;
    color: rgba(255,255,255,0.8);
    font-size: 1.5rem;
    line-height: 1;
    cursor: pointer;
    padding: 0.1rem 0.25rem;
    border-radius: 4px;
    transition: color 0.15s, background 0.15s;
}

.gov-explainer-drawer__close:hover { color: #fff; background: rgba(255,255,255,0.15); }

.gov-explainer-drawer__body {
    flex: 1;
    overflow-y: auto;
    padding: 1.5rem;
    -webkit-overflow-scrolling: touch;
}

/* ── Government level explainer (inside drawer) ─────────────────────── */
.gov-explainer {
    margin: 0;
    padding: 0;
    background: transparent;
    border: none;
}

.gov-explainer__grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.75rem;
}

/* drawer is always single-column; no breakpoint needed */

.gov-explainer__col {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding-bottom: 1.75rem;
    border-bottom: 1px solid var(--border, #e2e6ed);
}

.gov-explainer__col:last-child {
    border-bottom: none;
    padding-bottom: 0;
}

.gov-explainer__icon {
    font-size: 1.5rem;
    color: var(--accent, #2563eb);
    margin-bottom: 0.25rem;
}

.gov-explainer__h {
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--text, #111827);
    margin: 0 0 0.25rem;
    line-height: 1.3;
}

.gov-explainer__p {
    font-size: 0.875rem;
    color: var(--muted, #6b7280);
    line-height: 1.6;
    margin: 0 0 0.4rem;
}

.gov-explainer__p strong { color: var(--text, #111827); }

.gov-explainer__actions {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    margin-top: 0.75rem;
    padding-top: 0.75rem;
    border-top: 1px solid var(--border, #e2e6ed);
}

.gov-explainer__link {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--accent, #2563eb);
    text-decoration: none;
    transition: color 0.15s;
}

.gov-explainer__link:hover { color: var(--primary, #1a3a6b); }

.gov-explainer__link i { width: 1em; text-align: center; flex-shrink: 0; }

.gov-explainer__list {
    margin: 0.25rem 0 0 1rem;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}

.gov-explainer__list li {
    font-size: 0.85rem;
    color: var(--muted, #6b7280);
    line-height: 1.5;
}

.gov-explainer__list li strong { color: var(--text, #111827); }

/* ── Geolocation button in ZIP panel ────────────────────────────────── */
.gov-loc-geo-btn {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    background: none;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    color: #475569;
    font-size: 0.82rem;
    padding: 0.35rem 0.75rem;
    cursor: pointer;
    margin-top: 0.5rem;
    transition: background 0.15s;
}
.gov-loc-geo-btn:hover { background: #f1f5f9; }

/* ── App notification banner ─────────────────────────────────────────
 * DB-controlled notifications from app_notification table
 * Types: upcoming_vote | news | alert
 * ───────────────────────────────────────────────────────────────────── */
.gov-notif-banner {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 0.9rem 1.1rem;
    border-radius: 10px;
    margin-bottom: 0.75rem;
    border: 1px solid;
    font-size: 0.88rem;
    line-height: 1.4;
    position: relative;
}
.gov-notif-banner--upcoming_vote {
    background: #eff6ff;
    border-color: #bfdbfe;
    color: #1e3a8a;
}
.gov-notif-banner--news {
    background: #f0fdf4;
    border-color: #bbf7d0;
    color: #14532d;
}
.gov-notif-banner--alert {
    background: #fef2f2;
    border-color: #fecaca;
    color: #7f1d1d;
}
.gov-notif-banner--meeting_alert {
    background: #eff6ff;
    border-color: #bfdbfe;
    color: #1e3a8a;
}
.gov-notif-banner--election {
    background: #f0fdf4;
    border-color: #86efac;
    color: #14532d;
}
.gov-notif-banner--featured {
    background: #fefce8;
    border-color: #fde047;
    color: #713f12;
}
.gov-notif-banner i { font-size: 1rem; margin-top: 0.1rem; flex-shrink: 0; }
.gov-notif-content  { flex: 1; display: flex; flex-direction: column; gap: 0.1rem; min-width: 0; }
.gov-notif-content strong { font-weight: 600; line-height: 1.35; }
.gov-notif-body { font-size: 0.82rem; opacity: 0.85; margin-top: 0.25rem; line-height: 1.45; }
.gov-notif-toggle {
    background: none; border: none; padding: 0; margin-top: 0.15rem;
    font-size: 0.75rem; font-weight: 600; cursor: pointer;
    color: inherit; opacity: 0.65; text-decoration: underline;
    text-decoration-style: dotted; font-family: inherit;
}
.gov-notif-toggle:hover { opacity: 1; }
.gov-notif-cta {
    font-size: 0.8rem;
    font-weight: 600;
    text-decoration: none;
    padding: 0.3rem 0.7rem;
    background: rgba(0,0,0,0.08);
    border-radius: 5px;
    white-space: nowrap;
    color: inherit;
    align-self: flex-start;
    margin-top: 0.25rem;
}
.gov-notif-cta:hover { background: rgba(0,0,0,0.14); }

/* ── 2026 Election / race feed section ────────────────────────────────
 * Shown in the "Your State" tab when app_feed_items loaded from DB
 * ───────────────────────────────────────────────────────────────────── */
.gov-election-section {
    margin-bottom: 1.25rem;
}
.gov-election-header {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--muted, #6b7280);
    margin-bottom: 0.6rem;
}
.gov-election-sub {
    font-weight: 400;
    text-transform: none;
    letter-spacing: 0;
    color: #94a3b8;
}
.gov-election-cards {
    display: flex;
    gap: 0.75rem;
    overflow-x: auto;
    scrollbar-width: none;
    padding-bottom: 0.25rem;
}
.gov-election-cards::-webkit-scrollbar { display: none; }
.gov-election-card {
    flex-shrink: 0;
    width: 240px;
    min-height: 130px;
    border-radius: 12px;
    overflow: hidden;
    text-decoration: none;
    color: #fff;
    position: relative;
    display: flex;
    flex-direction: column;
    transition: transform 0.18s, box-shadow 0.18s;
    box-shadow: 0 2px 8px rgba(0,0,0,0.18);
}
.gov-election-card:hover { transform: translateY(-2px); box-shadow: 0 6px 18px rgba(0,0,0,0.22); }
.gov-election-card__bg {
    position: absolute;
    inset: 0;
    z-index: 0;
}
.gov-election-card__body {
    position: relative;
    z-index: 1;
    padding: 0.85rem 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    flex: 1;
    background: linear-gradient(to bottom, rgba(0,0,0,0.05) 0%, rgba(0,0,0,0.5) 100%);
}
.gov-election-label {
    font-size: 0.62rem;
    font-weight: 800;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    background: rgba(255,255,255,0.18);
    padding: 0.15rem 0.45rem;
    border-radius: 4px;
    align-self: flex-start;
}
.gov-election-title  { font-size: 0.9rem; font-weight: 700; line-height: 1.3; }
.gov-election-blurb  { font-size: 0.78rem; opacity: 0.85; line-height: 1.3; }
.gov-election-cta    { font-size: 0.75rem; font-weight: 600; margin-top: auto; opacity: 0.9; }

/* ── Local coverage placeholder ──────────────────────────────────────
 * Shown when user ZIP has no local meeting/rep coverage yet
 * ───────────────────────────────────────────────────────────────────── */
.gov-local-placeholder {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    background: #f8fafc;
    border: 1px dashed #cbd5e1;
    border-radius: 12px;
    padding: 1.25rem 1.5rem;
    margin-bottom: 1rem;
    color: #475569;
    font-size: 0.88rem;
}
.gov-local-placeholder i  { font-size: 1.5rem; color: #94a3b8; flex-shrink: 0; margin-top: 0.1rem; }
.gov-local-placeholder strong { display: block; font-weight: 700; color: #1e293b; margin-bottom: 0.35rem; }
.gov-local-placeholder p  { margin: 0; line-height: 1.5; }

/* ── Featured executive card ─────────────────────────────────────────
 * Shown at the top of the State (governor) and Federal (president) tabs.
 * Clicking it opens the bio panel just like a person card. */

#govExecCard { margin-bottom: 0.75rem; }

.gov-exec-card {
    background: linear-gradient(135deg, #1a2744 0%, #1a3a8a 100%);
    border-radius: 14px;
    padding: 1rem 1.25rem;
    display: flex;
    align-items: center;
    gap: 1.25rem;
    cursor: pointer;
    transition: transform 0.15s, box-shadow 0.15s;
    flex-wrap: wrap;
    text-decoration: none;
}
.gov-exec-card:hover { transform: translateY(-1px); box-shadow: 0 6px 24px rgba(0,0,0,0.22); }

.gov-exec-card__left {
    display: flex;
    align-items: center;
    gap: 0.9rem;
    flex: 1;
    min-width: 0;
}
.gov-exec-avatar {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.2rem;
    font-weight: 800;
    color: white;
    flex-shrink: 0;
    border: 2px solid rgba(255,255,255,0.25);
    letter-spacing: -0.03em;
}
.gov-exec-card__meta { min-width: 0; }
.gov-exec-badge {
    font-size: 0.62rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    color: rgba(255,255,255,0.55);
    text-transform: uppercase;
    margin-bottom: 0.1rem;
}
.gov-exec-name {
    font-size: 1rem;
    font-weight: 700;
    color: white;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.gov-exec-role {
    font-size: 0.76rem;
    color: rgba(255,255,255,0.65);
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin-top: 0.1rem;
    flex-wrap: wrap;
}
.gov-exec-party {
    padding: 0.1rem 0.4rem;
    border-radius: 4px;
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
}
.gov-exec-party.party-d { background: rgba(29,77,216,0.45); color: #93c5fd; }
.gov-exec-party.party-r { background: rgba(185,28,28,0.45); color: #fca5a5; }

.gov-exec-card__right {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.45rem;
    flex-shrink: 0;
}
.gov-exec-race {
    font-size: 0.78rem;
    color: rgba(255,255,255,0.78);
    display: flex;
    align-items: center;
    gap: 0.35rem;
    background: rgba(255,255,255,0.08);
    border-radius: 6px;
    padding: 0.3rem 0.65rem;
    white-space: nowrap;
}
.gov-exec-race i { color: #fbbf24; font-size: 0.75rem; }
.gov-exec-race-link {
    font-size: 0.8rem;
    font-weight: 600;
    color: #fbbf24;
    text-decoration: none;
    display: flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.28rem 0.65rem;
    border: 1px solid rgba(251,191,36,0.4);
    border-radius: 6px;
    white-space: nowrap;
    transition: background 0.15s;
}
.gov-exec-race-link:hover { background: rgba(251,191,36,0.15); }

@media (max-width: 520px) {
    .gov-exec-card__right { width: 100%; }
    .gov-exec-race, .gov-exec-race-link { white-space: normal; }
}

/* ── Election category filter chip ───────────────────────────────────
 * Uses the same .gov-filter-btn pattern — highlight in election purple */
.gov-filter-btn[data-cat="election"].active {
    background: #4f46e5;
    color: white;
    border-color: #4338ca;
}

:root {
    --primary:       #1a3a6b;
    --primary-light: #e8eef8;
    --accent:        #2563eb;
    --border:        #e2e6ed;
    --text:          #111827;
    --muted:         #6b7280;
    --bg:            #f5f6f8;
    --card:          #ffffff;
    --shadow:        0 1px 4px rgba(0,0,0,0.08);
    --shadow-lg:     0 4px 20px rgba(0,0,0,0.10);
    --radius:        14px;
    --radius-sm:     9px;
    --cat-money:     #1e40af;   --cat-money-bg:   #eff6ff;
    --cat-roads:     #78350f;   --cat-roads-bg:   #fef3c7;
    --cat-schools:   #065f46;   --cat-schools-bg: #d1fae5;
    --cat-health:    #7c3aed;   --cat-health-bg:  #ede9fe;
    --cat-env:       #166534;   --cat-env-bg:     #dcfce7;
    --cat-rules:     #374151;   --cat-rules-bg:   #f3f4f6;
}

/* ── Gov person AI sections ─────────────────────────────────────────── */
.gov-bio-sections {
    margin-top: 1.25rem;
    border-top: 1px solid #e5e7eb;
    padding-top: 1.25rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}
.gov-bio-section-title {
    font-size: 0.82rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: #4b5563;
    margin-bottom: 0.4rem;
}
.gov-bio-section-body {
    font-size: 0.9rem;
    line-height: 1.65;
    color: #374151;
}
.gov-bio-section-body p { margin: 0 0 .6rem; }
.gov-bio-section-body p:last-child { margin-bottom: 0; }
.gov-bio-section-body ul { padding-left: 1.25rem; margin: 0 0 .6rem; }
.gov-bio-section-body li { margin-bottom: .25rem; }

/* ── State Bills panel ───────────────────────────────────────────── */
.gov-state-bills {
    margin: 1.25rem 0;
}
.gov-bills-header {
    display: flex; align-items: center; justify-content: space-between;
    margin-bottom: 0.875rem; flex-wrap: wrap; gap: 0.5rem;
}
.gov-bills-heading,
.gov-bills-title {
    font-size: 1rem; font-weight: 700; color: #0f172a; margin: 0;
}
.gov-bills-state-badge {
    font-size: 0.7rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase;
    background: #eff6ff; color: #1d4ed8; border-radius: 5px; padding: 0.2rem 0.55rem;
}
.gov-bills-list {
    display: flex; flex-direction: column; gap: 0.625rem;
}
.gov-bill-row {
    background: white; border: 1.5px solid #e2e8f0; border-radius: 12px;
    padding: 0.875rem 1rem; display: flex; flex-direction: column; gap: 0.3rem;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.gov-bill-row:hover {
    border-color: #93c5fd; box-shadow: 0 3px 10px rgba(59,130,246,0.1);
}
.gov-bill-row-top {
    display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap;
}
.gov-bill-id {
    font-size: 0.72rem; font-weight: 700; letter-spacing: 0.06em;
    background: #f1f5f9; color: #475569; border-radius: 4px; padding: 0.15rem 0.45rem;
    white-space: nowrap;
}
.gov-bill-chamber {
    font-size: 0.7rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em;
    color: #94a3b8;
}
.gov-bill-status {
    font-size: 0.7rem; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase;
    border-radius: 4px; padding: 0.15rem 0.45rem; margin-left: auto;
}
.gov-bill-status--introduced { background: #f1f5f9; color: #475569; }
.gov-bill-status--passed      { background: #f0fdf4; color: #166534; }
.gov-bill-status--signed      { background: #d1fae5; color: #065f46; }
.gov-bill-status--failed      { background: #fef2f2; color: #991b1b; }
.gov-bill-status--vetoed      { background: #fff7ed; color: #9a3412; }
.gov-bill-title {
    font-size: 0.88rem; font-weight: 600; color: #0f172a; line-height: 1.4;
    margin: 0;
}
.gov-bill-meta {
    display: flex; align-items: center; gap: 0.625rem; flex-wrap: wrap; margin-top: 0.125rem;
}
.gov-bill-sponsor { font-size: 0.78rem; color: #64748b; }
.gov-bill-date    { font-size: 0.75rem; color: #94a3b8; margin-left: auto; }
.gov-bills-empty  { color: #94a3b8; font-size: 0.875rem; text-align: center; padding: 1.5rem; }
.gov-bills-loading { color: #94a3b8; font-size: 0.875rem; text-align: center; padding: 1.5rem; }

/* ── Profile section ─────────────────────────────────────────── */
.profile-page { max-width: 680px; margin: 0 auto; padding: 1.5rem 1rem 5rem; }
.profile-hero { margin-bottom: 1.5rem; }
.profile-hero h1 { font-size: 1.5rem; font-weight: 700; color: var(--navy, #1e3a5f); margin: 0 0 0.25rem; }
.profile-auth-status { font-size: 0.85rem; color: var(--muted, #6b7280); }

.profile-card {
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 0.75rem;
    padding: 1.25rem 1.25rem 1rem;
    margin-bottom: 1rem;
}
.profile-card--secondary { background: #f9fafb; }
.profile-card-head {
    display: flex; align-items: center; gap: 0.5rem;
    margin-bottom: 0.75rem;
    color: var(--navy, #1e3a5f);
}
.profile-card-head i { font-size: 0.95rem; opacity: 0.7; }
.profile-card-title { font-size: 0.875rem; font-weight: 700; letter-spacing: 0.02em; text-transform: uppercase; }
.profile-card-body { font-size: 0.9rem; color: #374151; }
.profile-muted { color: #9ca3af; font-size: 0.875rem; }
.profile-card-action {
    display: inline-flex; align-items: center; gap: 0.4rem;
    margin-top: 0.75rem; font-size: 0.8rem; color: var(--accent, #2563eb);
    background: none; border: none; cursor: pointer; padding: 0;
}
.profile-card-action:hover { text-decoration: underline; }

.profile-location-row {
    display: flex; align-items: center; gap: 0.5rem;
    font-size: 0.95rem; color: #1e3a5f;
}
.profile-location-row i { color: var(--accent, #2563eb); font-size: 0.9rem; }
.profile-zip-chip {
    font-size: 0.75rem; font-weight: 600; color: #6b7280;
    background: #f3f4f6; border-radius: 0.25rem; padding: 0.1rem 0.4rem;
}

.profile-position-row {
    display: flex; align-items: baseline; gap: 0.75rem;
    padding: 0.5rem 0; border-bottom: 1px solid #f3f4f6;
}
.profile-position-row:last-child { border-bottom: none; }
.profile-position-topic a { font-size: 0.875rem; font-weight: 600; color: var(--accent, #2563eb); text-decoration: none; }
.profile-position-topic a:hover { text-decoration: underline; }
.profile-position-stance {
    font-size: 0.78rem; color: #6b7280; background: #f3f4f6;
    border-radius: 9999px; padding: 0.15rem 0.6rem;
    white-space: nowrap;
}

.profile-interest-grid {
    display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 0.75rem;
}
.profile-interest-chip {
    display: inline-flex; align-items: center; gap: 0.35rem;
    font-size: 0.8rem; font-weight: 500;
    padding: 0.35rem 0.8rem; border-radius: 9999px;
    border: 1.5px solid #d1d5db; background: #fff; color: #374151;
    cursor: pointer; transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.profile-interest-chip:hover { border-color: var(--accent, #2563eb); color: var(--accent, #2563eb); }
.profile-interest-chip.active { border-color: var(--accent, #2563eb); background: var(--accent, #2563eb); color: #fff; }
.profile-interest-chip i { font-size: 0.75rem; }

.profile-clear-btn {
    display: inline-block; margin-top: 0.5rem; font-size: 0.8rem;
    color: #ef4444; background: none; border: none; cursor: pointer; padding: 0;
    text-decoration: underline;
}
/* ── Profile: Verification card ───────────────────────────── */
.profile-card--verify { border-left: 3px solid var(--accent, #2563eb); }
.profile-card--verify.is-verified { border-left-color: #16a34a; }
.profile-verify-badge {
    margin-left: auto; font-size: 0.75rem; font-weight: 700;
    color: #16a34a; display: flex; align-items: center; gap: 0.3rem;
}
.profile-verify-form { margin-top: 0.75rem; display: flex; flex-direction: column; gap: 0.5rem; }
.profile-verify-row { display: flex; gap: 0.5rem; }
.profile-verify-row .profile-input { flex: 1; min-width: 0; }
.profile-input {
    padding: 0.5rem 0.7rem; border: 1.5px solid #d1d5db; border-radius: 6px;
    font-size: 0.875rem; background: #fff; color: #111827; width: 100%; box-sizing: border-box;
    transition: border-color 0.15s;
}
.profile-input:focus { outline: none; border-color: var(--accent, #2563eb); }
.profile-input--full { width: 100%; }
.profile-verify-community { font-size: 0.78rem; color: #6b7280; margin-top: 0.15rem; }
.profile-verify-error {
    font-size: 0.8rem; color: #dc2626; padding: 0.35rem 0.5rem;
    background: #fef2f2; border-radius: 5px;
}
.profile-verify-btn {
    align-self: flex-start; padding: 0.45rem 1.1rem; border-radius: 6px;
    background: var(--accent, #2563eb); color: #fff; border: none;
    font-size: 0.875rem; font-weight: 600; cursor: pointer;
    transition: opacity 0.15s;
}
.profile-verify-btn:hover { opacity: 0.88; }
.profile-verified-row {
    display: flex; align-items: flex-start; gap: 1rem; margin-top: 0.5rem;
}
.profile-verified-info { flex: 1; font-size: 0.875rem; line-height: 1.5; }
.profile-verify-edit-btn {
    font-size: 0.8rem; color: var(--accent, #2563eb); background: none;
    border: none; cursor: pointer; text-decoration: underline; white-space: nowrap; padding: 0;
}

/* ── Profile: Verify wizard ───────────────────────────────── */
.verify-wizard-progress {
    font-size: 0.7rem; font-weight: 700; text-transform: uppercase;
    letter-spacing: 0.08em; color: #94a3b8; margin-bottom: 0.5rem;
}
.verify-wizard-q {
    font-size: 0.975rem; font-weight: 700; color: #0f172a;
    margin-bottom: 0.65rem; line-height: 1.3;
}
.verify-wizard-context {
    font-size: 0.78rem; color: #64748b; margin-bottom: 0.6rem;
    padding: 0.35rem 0.6rem; background: #f8fafc; border-radius: 6px;
    border: 1px solid #e2e8f0; display: flex; align-items: center; gap: 0.4rem;
}
.verify-wizard-note  { font-size: 0.73rem; color: #94a3b8; margin-top: 0.35rem; line-height: 1.4; }
.verify-wizard-error { font-size: 0.8rem; color: #dc2626; margin-top: 0.35rem; }
.verify-wizard-actions {
    display: flex; gap: 0.5rem; margin-top: 0.7rem;
}
.verify-btn-primary {
    flex: 1; padding: 0.6rem 0.875rem; background: #1d4ed8; color: #fff;
    border: none; border-radius: 10px; font-size: 0.875rem; font-weight: 600;
    cursor: pointer; transition: background 0.15s; display: flex; align-items: center;
    justify-content: center; gap: 0.4rem;
}
.verify-btn-primary:hover { background: #1e40af; }
.verify-btn-ghost {
    padding: 0.6rem 0.875rem; background: #f1f5f9; color: #475569;
    border: none; border-radius: 10px; font-size: 0.875rem; font-weight: 600;
    cursor: pointer; transition: background 0.15s; display: flex; align-items: center;
    justify-content: center; gap: 0.4rem;
}
.verify-btn-ghost:hover { background: #e2e8f0; }
.verify-complete {
    display: flex; align-items: flex-start; gap: 0.75rem; padding: 0.1rem 0;
}
.verify-complete-icon {
    width: 36px; height: 36px; border-radius: 50%;
    background: #dcfce7; color: #16a34a;
    display: flex; align-items: center; justify-content: center;
    font-size: 1rem; flex-shrink: 0; margin-top: 0.05rem;
}
.verify-complete-body  { flex: 1; min-width: 0; }
.verify-complete-badge {
    font-size: 0.68rem; font-weight: 700; text-transform: uppercase;
    letter-spacing: 0.08em; color: #16a34a; margin-bottom: 0.25rem;
}
.verify-complete-name  { font-size: 0.95rem; font-weight: 700; color: #0f172a; margin-bottom: 0.15rem; }
.verify-complete-meta  { font-size: 0.8rem; color: #64748b; line-height: 1.45; }
.verify-complete-edit  {
    font-size: 0.78rem; font-weight: 600; color: #1d4ed8;
    background: none; border: none; padding: 0; cursor: pointer;
    margin-top: 0.4rem; display: inline-block; text-decoration: underline;
}

/* ── Profile: multi-location list ────────────────────────── */
.profile-loc-row {
    display: flex; align-items: center; gap: 0.65rem;
    padding: 0.5rem 0; border-bottom: 1px solid #f3f4f6;
}
.profile-loc-row:last-of-type { border-bottom: none; }
.profile-loc-dot { width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; }
.profile-loc-info { flex: 1; min-width: 0; }
.profile-loc-info strong { font-size: 0.875rem; color: #0f172a; display: block; }
.profile-loc-info span   { font-size: 0.73rem; color: #94a3b8; }
.profile-loc-current {
    font-size: 0.68rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em;
    color: #16a34a; background: #dcfce7; padding: 0.2rem 0.5rem; border-radius: 9999px;
    flex-shrink: 0;
}

/* ── Profile: Position rows with contact button ───────────── */
.profile-position-row { display: block; padding: 0.6rem 0; border-bottom: 1px solid #f3f4f6; }
.profile-position-row:last-child { border-bottom: none; }
.profile-position-main { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.profile-contact-rep-btn {
    margin-left: auto; display: inline-flex; align-items: center; gap: 0.35rem;
    font-size: 0.78rem; font-weight: 600; padding: 0.3rem 0.75rem;
    border-radius: 9999px; border: 1.5px solid var(--accent, #2563eb);
    color: var(--accent, #2563eb); background: #fff; cursor: pointer;
    transition: background 0.15s, color 0.15s; white-space: nowrap;
}
.profile-contact-rep-btn:hover { background: var(--accent, #2563eb); color: #fff; }
.profile-contact-rep-lock {
    margin-left: auto; font-size: 0.75rem; color: #9ca3af;
    display: inline-flex; align-items: center; gap: 0.3rem; white-space: nowrap;
}

/* ── Contact rep drawer ────────────────────────────────────── */
.profile-contact-overlay {
    position: fixed; inset: 0; background: rgba(0,0,0,0.35); z-index: 1100;
}
.profile-contact-drawer {
    position: fixed; bottom: 0; left: 0; right: 0; z-index: 1101;
    background: #fff; border-radius: 16px 16px 0 0;
    box-shadow: 0 -4px 24px rgba(0,0,0,0.14);
    padding: 1.25rem 1.25rem 2rem;
    max-height: 85vh; overflow-y: auto;
}
@media (min-width: 640px) {
    .profile-contact-drawer {
        max-width: 560px; left: 50%; transform: translateX(-50%);
        bottom: 1.5rem; border-radius: 12px;
    }
}
.profile-contact-head { display: flex; align-items: center; margin-bottom: 0.5rem; }
.profile-contact-title { font-size: 1rem; font-weight: 700; flex: 1; }
.profile-contact-close {
    background: none; border: none; font-size: 1.4rem; line-height: 1;
    color: #9ca3af; cursor: pointer; padding: 0 0 0 0.5rem;
}
.profile-contact-sub { font-size: 0.82rem; color: #6b7280; margin: 0 0 0.85rem; }
.profile-contact-label {
    display: flex; justify-content: space-between; align-items: baseline;
    font-size: 0.82rem; font-weight: 600; color: #374151; margin-bottom: 0.35rem;
}
.profile-contact-chars { font-size: 0.75rem; color: #9ca3af; font-weight: 400; }
.profile-contact-textarea {
    width: 100%; box-sizing: border-box;
    min-height: 110px; padding: 0.6rem 0.75rem;
    border: 1.5px solid #d1d5db; border-radius: 8px;
    font-size: 0.875rem; line-height: 1.5; resize: vertical;
    transition: border-color 0.15s;
}
.profile-contact-textarea:focus { outline: none; border-color: var(--accent, #2563eb); }
.profile-contact-error {
    margin-top: 0.4rem; font-size: 0.8rem; color: #dc2626;
    padding: 0.35rem 0.5rem; background: #fef2f2; border-radius: 5px;
}
.profile-contact-footer {
    display: flex; align-items: center; gap: 0.75rem; margin-top: 0.75rem; flex-wrap: wrap;
}
.profile-contact-recipients { font-size: 0.78rem; color: #6b7280; flex: 1; }
.profile-contact-send-btn {
    padding: 0.5rem 1.2rem; border-radius: 6px;
    background: var(--accent, #2563eb); color: #fff; border: none;
    font-size: 0.875rem; font-weight: 600; cursor: pointer;
    transition: opacity 0.15s;
}
.profile-contact-send-btn:hover:not(:disabled) { opacity: 0.88; }
.profile-contact-send-btn:disabled { opacity: 0.55; cursor: default; }
.profile-contact-success {
    margin-top: 0.75rem; font-size: 0.85rem; color: #15803d;
    background: #f0fdf4; border-radius: 7px; padding: 0.6rem 0.8rem;
    line-height: 1.5;
}
.profile-contact-success i { margin-right: 0.3rem; }
.profile-contact-names { font-weight: 600; }

/* ── Location pill switcher (hero) ─────────────────────────── */
.gov-hero {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
    margin-bottom: 1.25rem;
}
.gov-hero-locs { flex: 1; min-width: 0; }
.gov-loc-pills {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    flex-wrap: wrap;
}
.gov-loc-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.38rem 0.75rem;
    border-radius: 20px;
    border: 1.5px solid var(--border, #e5e7eb);
    background: white;
    color: var(--text-muted, #6b7280);
    font-size: 0.82rem;
    font-weight: 500;
    cursor: pointer;
    font-family: inherit;
    transition: all 0.15s;
    white-space: nowrap;
    max-width: 175px;
    line-height: 1;
}
.gov-loc-pill i { font-size: 0.72rem; color: var(--text-muted); flex-shrink: 0; }
.gov-loc-pill-label {
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 110px;
}
.gov-loc-pill:hover {
    border-color: var(--pill-color, var(--primary));
    color: var(--pill-color, var(--primary));
}
.gov-loc-pill:hover i { color: var(--pill-color, var(--primary)); }
.gov-loc-pill.gov-loc-pill--active {
    background: var(--pill-color, var(--primary));
    border-color: var(--pill-color, var(--primary));
    color: white;
    font-weight: 600;
}
.gov-loc-pill.gov-loc-pill--active i { color: rgba(255,255,255,0.8); }
.gov-loc-pill-x {
    font-size: 1rem; line-height: 1;
    margin-left: 0.1rem; opacity: 0.6; flex-shrink: 0;
    border-radius: 50%; padding: 0 0.1rem;
}
.gov-loc-pill-x:hover { opacity: 1; }
.gov-loc-pill.gov-loc-pill--add {
    border-style: dashed;
    color: var(--text-muted);
}
.gov-loc-pill.gov-loc-pill--add:hover { border-color: var(--primary); color: var(--primary); }

/* Settings (sliders) gear button */
.gov-prefs-btn {
    flex-shrink: 0;
    width: 34px; height: 34px;
    border-radius: 50%;
    border: 1.5px solid var(--border, #e5e7eb);
    background: white;
    color: var(--text-muted);
    font-size: 0.85rem;
    cursor: pointer;
    display: flex; align-items: center; justify-content: center;
    transition: all 0.15s;
}
.gov-prefs-btn:hover { border-color: var(--primary); color: var(--primary); background: var(--primary-light, #f0f4ff); }

/* ── Preferences drawer ────────────────────────────────────── */
.gov-prefs-drawer {
    position: fixed;
    top: 0; right: 0;
    width: min(380px, 92vw);
    height: 100vh;
    background: white;
    box-shadow: -4px 0 32px rgba(0,0,0,0.13);
    transform: translateX(100%);
    transition: transform 0.22s ease;
    z-index: 1100;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
.gov-prefs-drawer.is-open { transform: translateX(0); }
.gov-prefs-drawer__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1rem 1.25rem;
    border-bottom: 1.5px solid var(--border, #e5e7eb);
    flex-shrink: 0;
}
.gov-prefs-drawer__title {
    font-size: 1rem;
    font-weight: 700;
    color: var(--primary);
    display: flex; align-items: center; gap: 0.5rem;
}
.gov-prefs-drawer__body {
    flex: 1;
    overflow-y: auto;
    padding-bottom: 2rem;
}

/* Prefs sections */
.gov-prefs-section {
    padding: 1rem 1.25rem;
    border-bottom: 1px solid var(--border, #e5e7eb);
}
.gov-prefs-section-title {
    font-size: 0.74rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--text-muted);
    margin-bottom: 0.8rem;
    display: flex; align-items: center; gap: 0.4rem;
}

/* Location list */
.gov-prefs-loc-list { display: flex; flex-direction: column; gap: 0.45rem; margin-bottom: 0.65rem; }
.gov-prefs-loc-row {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.55rem 0.7rem;
    border-radius: 10px;
    border: 1.5px solid var(--border, #e5e7eb);
    background: var(--surface, #f8fafc);
}
.gov-prefs-loc-row.is-active { border-color: var(--primary); background: #f0f4ff; }
.gov-prefs-loc-dot { width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; }
.gov-prefs-loc-name {
    flex: 1; font-size: 0.88rem; font-weight: 500;
    color: var(--text-dark);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.gov-prefs-loc-current {
    font-size: 0.68rem; font-weight: 700; text-transform: uppercase;
    color: var(--primary); background: #dbeafe;
    padding: 0.15rem 0.45rem; border-radius: 5px; flex-shrink: 0;
}
.gov-prefs-loc-switch {
    background: none; border: 1px solid var(--border, #e5e7eb);
    font-size: 0.75rem; font-weight: 500; color: var(--text-muted);
    cursor: pointer; padding: 0.2rem 0.55rem; border-radius: 6px;
    font-family: inherit; transition: all 0.15s; flex-shrink: 0;
}
.gov-prefs-loc-switch:hover { border-color: var(--primary); color: var(--primary); }
.gov-prefs-loc-remove {
    background: none; border: none;
    font-size: 1.1rem; color: var(--text-muted);
    cursor: pointer; padding: 0 0.25rem; line-height: 1;
    border-radius: 4px; transition: color 0.15s; flex-shrink: 0;
}
.gov-prefs-loc-remove:hover { color: var(--danger, #dc2626); }
.gov-prefs-add-loc {
    width: 100%; background: none;
    border: 1.5px dashed var(--border, #e5e7eb);
    border-radius: 10px; padding: 0.5rem 1rem;
    font-size: 0.85rem; color: var(--text-muted);
    cursor: pointer; font-family: inherit;
    display: flex; align-items: center; justify-content: center; gap: 0.4rem;
    transition: all 0.15s;
}
.gov-prefs-add-loc:hover { border-color: var(--primary); color: var(--primary); }
.gov-prefs-empty {
    font-size: 0.88rem; color: var(--text-muted);
    line-height: 1.7; text-align: center; padding: 0.25rem 0;
}
.gov-prefs-link {
    background: none; border: none;
    color: var(--accent, #10b981); font-size: inherit;
    cursor: pointer; font-family: inherit; text-decoration: underline; padding: 0;
}

/* Rep scope toggle */
.gov-prefs-scope-list { display: flex; flex-direction: column; gap: 0.4rem; }
.gov-prefs-scope-opt {
    display: flex; align-items: flex-start; gap: 0.55rem;
    padding: 0.6rem 0.7rem;
    border-radius: 10px;
    border: 1.5px solid var(--border, #e5e7eb);
    cursor: pointer; transition: all 0.15s;
}
.gov-prefs-scope-opt input[type="radio"] { margin-top: 0.18rem; cursor: pointer; flex-shrink: 0; }
.gov-prefs-scope-opt.is-selected { border-color: var(--primary); background: #f0f4ff; }
.gov-prefs-scope-text { display: flex; flex-direction: column; gap: 0.1rem; }
.gov-prefs-scope-label { font-size: 0.88rem; font-weight: 600; color: var(--text-dark); }
.gov-prefs-scope-desc  { font-size: 0.76rem; color: var(--text-muted); line-height: 1.4; }

/* Follow reps */
.gov-prefs-follow-row {
    display: flex; align-items: flex-start; gap: 0.55rem;
    padding: 0.5rem 0;
    border-bottom: 1px solid var(--border, #f3f4f6);
    cursor: pointer;
}
.gov-prefs-follow-row:last-child { border-bottom: none; }
.gov-prefs-follow-row input[type="checkbox"] { margin-top: 0.25rem; cursor: pointer; flex-shrink: 0; }
.gov-prefs-follow-info { display: flex; flex-direction: column; gap: 0.05rem; }
.gov-prefs-follow-name { font-size: 0.88rem; font-weight: 600; color: var(--text-dark); }
.gov-prefs-follow-role { font-size: 0.76rem; color: var(--text-muted); }

/* Danger zone */
.gov-prefs-danger-section { border-bottom: none; }
.gov-prefs-clear-btn {
    background: none; border: 1px solid var(--danger, #dc2626);
    color: var(--danger, #dc2626); border-radius: 8px;
    padding: 0.5rem 1rem; font-size: 0.84rem; font-weight: 600;
    cursor: pointer; font-family: inherit;
    display: inline-flex; align-items: center; gap: 0.4rem;
    transition: background 0.15s;
}
.gov-prefs-clear-btn:hover { background: #fef2f2; }

@media (max-width: 480px) {
    .gov-loc-pill-label { max-width: 80px; }
    .gov-loc-pill { padding: 0.32rem 0.6rem; font-size: 0.78rem; }
    .gov-hero { gap: 0.5rem; }
}

/* ── Feed item primary sources docs list ───────────────────── */
.feed-detail-docs {
    margin-top: 1rem;
    padding: 0.75rem 1rem;
    background: var(--surface, #f8fafc);
    border-radius: 10px;
    border: 1px solid var(--border, #e5e7eb);
}
.feed-detail-docs-label {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--text-muted);
    margin-bottom: 0.55rem;
    display: flex;
    align-items: center;
    gap: 0.35rem;
}
.feed-detail-docs-list {
    list-style: none;
    padding: 0; margin: 0;
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}
.feed-detail-docs-list li a {
    display: flex;
    align-items: flex-start;
    gap: 0.4rem;
    font-size: 0.82rem;
    color: var(--primary);
    text-decoration: none;
    line-height: 1.4;
    transition: color 0.15s;
}
.feed-detail-docs-list li a:hover { color: var(--accent, #059669); text-decoration: underline; }
.feed-detail-docs-list li a i { font-size: 0.7rem; margin-top: 0.25rem; flex-shrink: 0; color: var(--text-muted); }

/* ── Official Decision Cards (Community tab) ─────────────────────── */
.gov-decisions-section {
    margin-bottom: 1.25rem;
    border-radius: 12px;
    border: 1px solid #fde68a;
    background: #fffbeb;
    overflow: hidden;
}
.gov-decisions-head {
    padding: 10px 16px;
    font-size: 11.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: #92400e;
    background: #fef9c3;
    border-bottom: 1px solid #fde68a;
    display: flex;
    align-items: center;
    gap: 6px;
}
.gov-decision-card {
    padding: 14px 16px;
    border-bottom: 1px solid #fef08a;
}
.gov-decision-card:last-child { border-bottom: none; }
.gov-decision-card-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 4px;
}
.gov-decision-outcome {
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
}
.gov-decision-card-date { font-size: 11px; color: #6b7280; }
.gov-decision-card-title {
    font-size: 13.5px;
    font-weight: 600;
    color: #111827;
    margin-bottom: 8px;
}
.gov-decision-rationale {
    margin: 0 0 6px;
    padding: 8px 12px;
    background: white;
    border-left: 3px solid #f59e0b;
    border-radius: 0 8px 8px 0;
    font-size: 13px;
    color: #374151;
    line-height: 1.6;
    font-style: italic;
}
.gov-decision-author { font-size: 11px; color: #6b7280; margin-bottom: 6px; }
.gov-decision-kb-link {
    font-size: 12px;
    color: #1d4ed8;
    text-decoration: none;
    font-weight: 500;
}
.gov-decision-kb-link:hover { text-decoration: underline; }

/* ── Assessment profile card ───────────────────────────────────────────────── */

.profile-card--assessment {
    border-left: 3px solid #0d9488;
}

.profile-assess-cta {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 0.75rem;
    margin-bottom: 0.75rem;
    padding: 0.5rem 1rem;
    background: #0d9488;
    color: #fff;
    border-radius: 0.5rem;
    font-size: 0.85rem;
    font-weight: 600;
    text-decoration: none;
}
.profile-assess-cta:hover { background: #0f766e; }

.profile-assess-result { display: flex; flex-direction: column; gap: 0.6rem; }

.profile-assess-badges { display: flex; gap: 0.5rem; flex-wrap: wrap; }

.profile-assess-badge {
    font-size: 0.75rem;
    font-weight: 600;
    padding: 2px 10px;
    border-radius: 999px;
    background: #f3f4f6;
    color: #374151;
}
.profile-assess-badge--political {
    background: rgba(13, 148, 136, 0.12);
    color: #0d9488;
}

.profile-assess-archetype {
    font-size: 0.9rem;
    font-weight: 600;
    color: #1e3a5f;
}

.profile-assess-spectrum { margin: 0.25rem 0; }

.profile-assess-track {
    position: relative;
    height: 10px;
    border-radius: 999px;
    background: linear-gradient(to right,
        rgba(99, 149, 237, 0.9)  0%,
        rgba(180, 220, 230, 0.8) 25%,
        rgba(220, 220, 220, 0.7) 50%,
        rgba(255, 175, 95,  0.8) 75%,
        rgba(205, 80,  80,  0.9) 100%
    );
    margin-bottom: 4px;
}

.profile-assess-pin {
    position: absolute;
    top: 50%;
    transform: translate(-50%, -50%);
    width: 16px;
    height: 16px;
    background: #1e3a5f;
    border: 2px solid white;
    border-radius: 50%;
    box-shadow: 0 1px 4px rgba(0,0,0,0.25);
}

.profile-assess-ends {
    display: flex;
    justify-content: space-between;
    font-size: 0.7rem;
    color: #9ca3af;
}

.profile-assess-link {
    font-size: 0.8rem;
    color: #0d9488;
    text-decoration: none;
    font-weight: 500;
}
.profile-assess-link:hover { text-decoration: underline; }

.profile-assess-explore {
    display: block;
    text-align: center;
    background: #0d9488;
    color: #fff;
    padding: 0.6rem 1rem;
    border-radius: 0.5rem;
    font-size: 0.875rem;
    font-weight: 600;
    text-decoration: none;
    margin-top: 0.75rem;
    transition: background 0.15s;
}
.profile-assess-explore:hover { background: #0f766e; }

.profile-assess-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 0.5rem;
}

.profile-assess-retake {
    background: none;
    border: none;
    font-size: 0.78rem;
    color: #9ca3af;
    cursor: pointer;
    font-family: inherit;
    padding: 0;
    text-decoration: underline;
}
.profile-assess-retake:hover { color: #6b7280; }

/* Profile card in-progress progress bar */
.profile-assess-pbar {
    height: 5px;
    background: #e5e7eb;
    border-radius: 3px;
    overflow: hidden;
    margin: 0.4rem 0 0.75rem;
}
.profile-assess-pfill {
    height: 100%;
    background: #0d9488;
    border-radius: 3px;
    transition: width 0.3s ease;
}
.profile-assess-progress .profile-muted {
    font-size: 0.8rem;
}

/* ── Feed sides (debate panels) ──────────────────────────────────────── */

.feed-sides {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
    margin: 0.75rem 0;
}

@media (max-width: 520px) {
    .feed-sides { grid-template-columns: 1fr; }
}

.feed-side {
    border-radius: 8px;
    padding: 10px 12px;
    border: 1px solid var(--border);
    background: #fff;
}

.feed-side--pro {
    border-left: 3px solid #16a34a;
    background: #f0fdf4;
}

.feed-side--pause {
    border-left: 3px solid #d97706;
    background: #fffbeb;
}

.feed-side--con {
    border-left: 3px solid #dc2626;
    background: #fef2f2;
}

.feed-side--neutral {
    border-left: 3px solid #94a3b8;
    background: #f8fafc;
}

.feed-side__label {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #475569;
    margin-bottom: 6px;
}

.feed-side__list {
    margin: 0;
    padding-left: 14px;
    list-style: disc;
}

.feed-side__list li {
    font-size: 0.78rem;
    color: #374151;
    line-height: 1.45;
    margin-bottom: 3px;
}

/* ── Feed position/weigh-in control ─────────────────────────────────── */

.feed-position-block {
    margin: 0.75rem 0;
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    padding: 12px 14px;
}

.feed-position-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 8px;
    gap: 8px;
    flex-wrap: wrap;
}

.feed-position-label {
    font-size: 0.75rem;
    font-weight: 600;
    color: #475569;
    display: flex;
    align-items: center;
    gap: 5px;
}

.feed-position-yours {
    font-size: 0.72rem;
    color: #64748b;
}

.feed-position-bar {
    height: 7px;
    border-radius: 99px;
    background: #e2e8f0;
    display: flex;
    overflow: hidden;
    margin-bottom: 5px;
    gap: 1px;
}

.feed-posbar-seg {
    height: 100%;
    border-radius: 2px;
    transition: width 0.3s ease;
}
.feed-posbar-support { background: #16a34a; }
.feed-posbar-neutral { background: #94a3b8; }
.feed-posbar-oppose  { background: #dc2626; }

.feed-position-counts {
    display: flex;
    gap: 12px;
    font-size: 0.7rem;
    margin-bottom: 10px;
}

.fpc-support { color: #16a34a; }
.fpc-neutral { color: #64748b; }
.fpc-oppose  { color: #dc2626; }

.feed-stance-row {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

.feed-stance-btn {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 5px 12px;
    border-radius: 20px;
    border: 1.5px solid #cbd5e1;
    background: #fff;
    color: #475569;
    font-size: 0.78rem;
    font-weight: 500;
    cursor: pointer;
    font-family: inherit;
    transition: all 0.12s;
}
.feed-stance-btn:hover { border-color: #94a3b8; background: #f1f5f9; }
.feed-stance-btn.active.stance-support { border-color: #16a34a; background: #f0fdf4; color: #16a34a; }
.feed-stance-btn.active.stance-oppose  { border-color: #dc2626; background: #fef2f2; color: #dc2626; }
.feed-stance-btn.active.stance-neutral { border-color: #64748b; background: #f8fafc; color: #475569; }

/* Support/Oppose/Neutral text color in "your position" label */
strong.stance-support { color: #16a34a; }
strong.stance-oppose  { color: #dc2626; }
strong.stance-neutral { color: #64748b; }

/* ── Feed contact CTA ────────────────────────────────────────────────── */

.feed-contact-cta {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 5px 11px;
    border-radius: 20px;
    border: 1.5px solid #cbd5e1;
    background: #fff;
    color: #475569;
    font-size: 0.78rem;
    font-weight: 500;
    text-decoration: none;
    transition: all 0.12s;
    margin-left: 4px;
}
.feed-contact-cta:hover { border-color: #6366f1; color: #6366f1; background: #eef2ff; }

/* ── Meeting video CTA ───────────────────────────────────────────────── */

.feed-video-cta {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 14px;
    border-radius: 20px;
    border: 1.5px solid #fca5a5;
    background: #fef2f2;
    color: #dc2626;
    font-size: 0.8rem;
    font-weight: 600;
    text-decoration: none;
    transition: all 0.12s;
    margin-bottom: 0.5rem;
}
.feed-video-cta:hover { border-color: #dc2626; background: #fee2e2; color: #b91c1c; }
.feed-video-cta .fa-youtube { font-size: 1rem; }

/* ── Personalized AI analysis ────────────────────────────────────────── */

.feed-ai-btn {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    margin-top: 0.55rem;
    padding: 5px 12px;
    border-radius: 20px;
    border: 1.5px solid #a78bfa;
    background: #f5f3ff;
    color: #7c3aed;
    font-size: 0.78rem;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.12s;
}
.feed-ai-btn:hover:not(:disabled) { background: #ede9fe; border-color: #7c3aed; }
.feed-ai-btn:disabled { opacity: 0.6; cursor: default; }
.feed-ai-btn i { font-size: 0.72rem; }

.feed-ai-gate {
    display: flex;
    align-items: center;
    gap: 5px;
    margin-top: 0.55rem;
    font-size: 0.78rem;
    color: #94a3b8;
}
.feed-ai-gate i { font-size: 0.7rem; }
.feed-ai-gate a { color: #6366f1; text-decoration: none; }

.feed-ai-analysis {
    margin-top: 0.6rem;
    padding: 0.6rem 0.75rem;
    background: linear-gradient(135deg, #f5f3ff 0%, #ede9fe 100%);
    border: 1px solid #c4b5fd;
    border-radius: 8px;
}
.feed-ai-label {
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: #7c3aed;
    margin-bottom: 0.3rem;
    display: flex;
    align-items: center;
    gap: 4px;
}
.feed-ai-label i { font-size: 0.62rem; }
.feed-ai-text {
    font-size: 0.845rem;
    color: #3b1e7a;
    line-height: 1.55;
}

/* ── Video modal ─────────────────────────────────────────────────────────── */
/* .modal is reused by two unrelated modal systems in this app: app.css's
   version styles a small centered content box (max-width:540px, padding,
   border-radius, 90vh cap meant for that box), government.css's version
   styles a full-screen backdrop. Since both are single-class selectors of
   equal specificity, any property app.css's .modal sets that isn't
   explicitly re-set here bleeds through onto this backdrop -- reset all of
   them so the video modal is self-contained regardless of load order. */
.video-modal {
    display: none;
    position: fixed;
    inset: 0;
    align-items: center;
    justify-content: center;
    background: rgba(0,0,0,0.85);
    z-index: 9700;
    width: 100%;
    height: 100%;
    max-width: none;
    max-height: none;
    padding: 0;
    border-radius: 0;
    overflow-y: visible;
    animation: none;
}
.video-modal-inner {
    background: #0f172a;
    border-radius: 12px;
    width: 90%;
    max-width: 900px;
    max-height: 90vh;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    box-shadow: 0 24px 64px rgba(0,0,0,0.6);
}
.video-modal-header {
    padding: 1rem 1.25rem 0.75rem;
    border-bottom: 1px solid rgba(255,255,255,0.08);
}
.video-modal-title-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}
.video-modal-title {
    font-size: 1rem;
    font-weight: 600;
    color: #f1f5f9;
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.video-modal-meta {
    font-size: 0.78rem;
    color: rgba(255,255,255,0.4);
    margin-top: 0.2rem;
}
.video-modal-close {
    background: none;
    border: none;
    color: rgba(255,255,255,0.5);
    font-size: 1.5rem;
    cursor: pointer;
    line-height: 1;
    flex-shrink: 0;
    padding: 0 0.25rem;
}
.video-modal-close:hover { color: #fff; }
.video-responsive-wrap {
    position: relative;
    padding-bottom: 56.25%; /* 16:9 */
    height: 0;
    overflow: hidden;
    background: #000;
}
.video-responsive-wrap iframe {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;
    border: none;
}
.video-modal-summary {
    padding: 1rem 1.25rem;
    border-top: 1px solid rgba(255,255,255,0.08);
}
.video-modal-summary-label {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #a78bfa;
    margin-bottom: 0.6rem;
    display: flex;
    align-items: center;
    gap: 0.4rem;
}
.video-modal-summary-body {
    font-size: 0.875rem;
    line-height: 1.65;
    color: #cbd5e1;
}
.video-modal-actions {
    padding: 0.75rem 1.25rem 1rem;
    border-top: 1px solid rgba(255,255,255,0.06);
    display: flex;
    align-items: center;
    gap: 1rem;
}
.video-modal-yt-link {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.82rem;
    color: #f87171;
    text-decoration: none;
}
.video-modal-yt-link:hover { text-decoration: underline; }
.video-modal-share-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--accent);
    background: rgba(66,200,193,0.12);
    border: 1px solid rgba(66,200,193,0.3);
    border-radius: 6px;
    padding: 0.35rem 0.75rem;
    cursor: pointer;
    transition: background 0.15s;
}
.video-modal-share-btn:hover { background: rgba(66,200,193,0.22); }

/* Feed video CTA button (was <a>, now <button>) */
.feed-video-cta {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    background: rgba(239,68,68,0.15);
    color: #f87171;
    border: 1px solid rgba(239,68,68,0.3);
    border-radius: 6px;
    padding: 0.4rem 0.8rem;
    font-size: 0.82rem;
    font-weight: 600;
    cursor: pointer;
    text-decoration: none;
    transition: background 0.15s;
}
.feed-video-cta:hover { background: rgba(239,68,68,0.28); }

.feed-series-video-link {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    background: none;
    border: none;
    color: #f87171;
    font-size: 0.8rem;
    font-weight: 600;
    cursor: pointer;
    padding: 0;
    text-decoration: none;
}
.feed-series-video-link:hover { text-decoration: underline; }

@media (max-width: 600px) {
    .video-modal-inner { width: 100%; max-height: 100vh; border-radius: 0; }
}

/* ── Feed skeleton loading ──────────────────────────────────────────── */
@keyframes feed-shimmer {
    0%   { background-position: -400px 0; }
    100% { background-position: 400px 0; }
}
.feed-skeleton {
    pointer-events: none;
    border: 1px solid rgba(255,255,255,0.05) !important;
}
.feed-skeleton-line {
    border-radius: 0.3rem;
    background: linear-gradient(90deg,
        rgba(255,255,255,0.05) 25%,
        rgba(255,255,255,0.10) 50%,
        rgba(255,255,255,0.05) 75%);
    background-size: 800px 100%;
    animation: feed-shimmer 1.4s infinite linear;
}
.feed-skeleton-meta     { height: 0.65rem; width: 35%; margin-bottom: 0.6rem; }
.feed-skeleton-headline { height: 1rem;    width: 85%; margin-bottom: 0.5rem; }
.feed-skeleton-body     { height: 0.75rem; width: 95%; margin-bottom: 0.4rem; }
.feed-skeleton-body--short { width: 60%; }

/* ── Local snapshot strip ───────────────────────────────────────────── */
.local-snapshot {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0.75rem;
    margin-bottom: 1.25rem;
    padding: 0;
}
.local-snap-stat {
    background: var(--card, #fff);
    border: 1px solid var(--border, #e2e6ed);
    border-radius: 10px;
    padding: 0.85rem 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    box-shadow: 0 1px 3px rgba(0,0,0,0.06);
}
.local-snap-val {
    font-size: 1.35rem;
    font-weight: 700;
    color: var(--text, #111827);
    line-height: 1;
}
.local-snap-label {
    font-size: 0.68rem;
    color: var(--muted, #6b7280);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    font-weight: 600;
    margin-top: 0.2rem;
}
@media (max-width: 640px) {
    .local-snapshot {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* ── Meeting feed cards ─────────────────────────────────────────────── */
.feed-item--meeting {
    background: var(--card, #fff);
    border: 1px solid var(--border, #e2e6ed);
    border-left: 3px solid #0ea5e9;
    border-radius: 10px;
    padding: 1rem 1.1rem;
    margin-bottom: 0.75rem;
    box-shadow: 0 1px 3px rgba(0,0,0,0.06);
}
.mtg-card-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 0.35rem;
}
.mtg-card-type {
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #38bdf8;
    background: rgba(56,189,248,0.12);
    border-radius: 4px;
    padding: 0.2rem 0.5rem;
    white-space: nowrap;
}
.mtg-card-title {
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--text, #111827);
    flex: 1;
    line-height: 1.35;
}
.mtg-card-date {
    font-size: 0.78rem;
    color: var(--muted, #6b7280);
    white-space: nowrap;
    margin-top: 0.25rem;
}
.mtg-card-body {
    font-size: 0.85rem;
    color: var(--muted, #6b7280);
    line-height: 1.55;
    margin-bottom: 0.75rem;
}
.mtg-card-docs {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
}
.mtg-doc-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.35rem 0.75rem;
    font-size: 0.78rem;
    font-weight: 600;
    border-radius: 6px;
    border: none;
    cursor: pointer;
    text-decoration: none;
    transition: background 0.15s, opacity 0.15s;
}
.mtg-doc-btn--agenda {
    background: #eff6ff;
    color: #2563eb;
    border: 1px solid #bfdbfe;
}
.mtg-doc-btn--agenda:hover { background: #dbeafe; }
.mtg-doc-btn--minutes {
    background: #f0fdf4;
    color: #16a34a;
    border: 1px solid #bbf7d0;
}
.mtg-doc-btn--minutes:hover { background: #dcfce7; }
.mtg-doc-btn--video {
    background: #fff1f2;
    color: #dc2626;
    border: 1px solid #fecaca;
}
.mtg-doc-btn--video:hover { background: #fee2e2; }
.mtg-doc-btn--other {
    background: #f9fafb;
    color: #374151;
    border: 1px solid #e5e7eb;
}
.mtg-doc-btn--other:hover { background: #f3f4f6; }
.mtg-card-link {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.82rem;
    color: #2563eb;
    text-decoration: none;
    font-weight: 600;
    margin-top: 0.1rem;
}
.mtg-card-link:hover { text-decoration: underline; }

/* Unified-stream meeting card additions */
.mtg-source-chip { color: #0284c7 !important; }
.mtg-source-chip i { opacity: 1 !important; }

.mtg-upcoming-badge {
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    padding: 0.15rem 0.45rem;
    border-radius: 0.3rem;
    background: rgba(14,165,233,0.12);
    color: #0284c7;
}

.mtg-inline-docs {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
    padding: 0 0.85rem 0.85rem;
}

.mtg-ai-summary {
    font-size: 0.875rem;
    color: var(--muted, #6b7280);
    line-height: 1.55;
}

.mtg-no-summary {
    font-size: 0.82rem;
    color: var(--muted, #6b7280);
    opacity: 0.7;
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

/* ── Debate / weigh-in feed cards ───────────────────────────────────── */
.feed-item--debate {
    border-left: 3px solid #8b5cf6;
}
/* Source chip override — purple tint for debate category label */
.debate-source-chip {
    color: #7c3aed !important;
}
.debate-source-chip i { opacity: 1 !important; }
/* Voice count chip */
.debate-voice-chip {
    color: #16a34a !important;
}
/* Expanded detail area for debates */
.debate-detail {
    padding-top: 0.75rem;
}
.debate-card-label {
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #7c3aed;
    background: #ede9fe;
    border-radius: 4px;
    padding: 0.2rem 0.5rem;
    display: inline-block;
    margin-bottom: 0.5rem;
}
.debate-card-question {
    font-size: 1rem;
    font-weight: 700;
    color: var(--text, #111827);
    margin-bottom: 0.3rem;
    line-height: 1.35;
}
.debate-card-context {
    font-size: 0.85rem;
    color: var(--muted, #6b7280);
    margin-bottom: 0.75rem;
    line-height: 1.5;
}
/* Vote bar */
.debate-bar-wrap {
    margin-bottom: 0.55rem;
}
.debate-bar {
    display: flex;
    height: 6px;
    border-radius: 3px;
    overflow: hidden;
    background: #f1f5f9;
    margin-bottom: 0.35rem;
}
.debate-bar-yes {
    background: #10b981;
    transition: width 0.4s ease;
    min-width: 0;
}
.debate-bar-no {
    background: #8b5cf6;
    transition: width 0.4s ease;
    min-width: 0;
}
.debate-bar-labels {
    display: flex;
    justify-content: space-between;
    font-size: 0.75rem;
    color: var(--muted, #6b7280);
}
.debate-bar-yes-lbl { color: #059669; font-weight: 600; }
.debate-bar-no-lbl  { color: #7c3aed; font-weight: 600; }
.debate-bar-count {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--muted, #6b7280);
    margin-top: 0.25rem;
}
.debate-bar-empty {
    font-size: 0.8rem;
    color: var(--muted, #6b7280);
    font-style: italic;
    margin-bottom: 0.55rem;
}
/* Debate action buttons */
.debate-card-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: 0.75rem;
    border-top: 1px solid var(--border, #e2e6ed);
    padding-top: 0.75rem;
}
.debate-action-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.4rem 0.85rem;
    font-size: 0.8rem;
    font-weight: 600;
    border-radius: 7px;
    cursor: pointer;
    text-decoration: none;
    transition: background 0.15s, transform 0.1s;
}
.debate-action-btn:active { transform: scale(0.97); }
.debate-action-btn--weigh {
    background: #ede9fe;
    color: #6d28d9;
    border: 1px solid #c4b5fd;
    text-decoration: none;
}
.debate-action-btn--weigh:hover { background: #ddd6fe; }
.debate-action-btn--read {
    background: #f8fafc;
    color: #374151;
    border: 1px solid #e5e7eb;
    text-decoration: none;
}
.debate-action-btn--read:hover { background: #f1f5f9; }
.debate-action-btn--ai {
    background: linear-gradient(135deg, #ede9fe, #e0e7ff);
    color: #5b21b6;
    border: 1px solid #c4b5fd;
    font-style: italic;
}
.debate-action-btn--ai:hover {
    background: linear-gradient(135deg, #ddd6fe, #c7d2fe);
}

/* ── Personalized Analysis modal ─────────────────────────────────────── */
.pa-modal-inner {
    background: #1e293b;
    border: 1px solid rgba(255,255,255,0.1);
    border-radius: 14px;
    width: 100%;
    max-width: 520px;
    max-height: 90vh;
    overflow-y: auto;
    box-shadow: 0 25px 60px rgba(0,0,0,0.6);
}
.pa-modal-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    padding: 1.25rem 1.4rem 0.75rem;
    border-bottom: 1px solid rgba(255,255,255,0.07);
}
.pa-modal-eyebrow {
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: #a78bfa;
    margin-bottom: 0.3rem;
}
.pa-modal-title {
    font-size: 1rem;
    font-weight: 700;
    color: #f1f5f9;
    line-height: 1.35;
    max-width: 380px;
}
.pa-modal-close {
    background: none;
    border: none;
    color: #64748b;
    font-size: 1.4rem;
    cursor: pointer;
    padding: 0 0.2rem;
    line-height: 1;
    flex-shrink: 0;
}
.pa-modal-close:hover { color: #e2e8f0; }
.pa-gate {
    padding: 1.5rem 1.4rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 0.75rem;
}
.pa-gate-icon {
    width: 3rem;
    height: 3rem;
    border-radius: 50%;
    background: rgba(255,255,255,0.06);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.3rem;
    color: #94a3b8;
}
.pa-gate-icon--premium {
    background: linear-gradient(135deg, rgba(139,92,246,0.25), rgba(59,130,246,0.2));
    color: #a78bfa;
}
.pa-gate-headline {
    font-size: 1.05rem;
    font-weight: 700;
    color: #f1f5f9;
    line-height: 1.35;
}
.pa-gate-body {
    font-size: 0.88rem;
    color: #94a3b8;
    line-height: 1.6;
    margin: 0;
    max-width: 380px;
}
.pa-gate-bullets {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    text-align: left;
    width: 100%;
    max-width: 360px;
    background: rgba(255,255,255,0.03);
    border: 1px solid rgba(255,255,255,0.07);
    border-radius: 8px;
    padding: 0.85rem 1rem;
}
.pa-gate-bullet {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    font-size: 0.83rem;
    color: #94a3b8;
    line-height: 1.4;
}
.pa-gate-bullet i {
    color: #34d399;
    margin-top: 0.1rem;
    flex-shrink: 0;
}
.pa-gate-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    width: 100%;
    max-width: 320px;
    padding: 0.65rem 1.25rem;
    font-size: 0.88rem;
    font-weight: 700;
    border-radius: 8px;
    border: none;
    cursor: pointer;
    text-decoration: none;
    transition: background 0.15s, opacity 0.15s;
}
.pa-gate-btn--primary {
    background: #6366f1;
    color: #fff;
}
.pa-gate-btn--primary:hover { background: #4f46e5; }
.pa-gate-btn--secondary {
    background: rgba(255,255,255,0.06);
    color: #94a3b8;
    border: 1px solid rgba(255,255,255,0.1);
}
.pa-gate-btn--secondary:hover { background: rgba(255,255,255,0.1); color: #e2e8f0; }
.pa-gate-btn--premium {
    background: linear-gradient(135deg, #6366f1, #8b5cf6);
    color: #fff;
}
.pa-gate-btn--premium:hover:not(:disabled) { opacity: 0.9; }
.pa-gate-btn:disabled {
    opacity: 0.55;
    cursor: not-allowed;
}
.pa-content {
    padding: 1.25rem 1.4rem 1.5rem;
}
@media (max-width: 600px) {
    .pa-modal-inner { border-radius: 10px 10px 0 0; position: fixed; bottom: 0; left: 0; right: 0; max-height: 85vh; max-width: 100%; }
}

/* ── Community map (bottom-nav section) ─────────────────────────────── */
.gov-map-page-header { padding: 0.75rem 0 0.5rem; }
.gov-map-page-title  { font-size: 1.1rem; font-weight: 700; color: var(--text, #111827); }
.gov-map-page-sub    { font-size: 0.8rem; color: var(--muted, #6b7280); margin-top: 0.1rem; }

.gov-map-container {
    border-radius: 12px;
    overflow: hidden;
    margin-top: 0.5rem;
    min-height: 380px;
    border: 1px solid var(--border, #e2e6ed);
    background: #f0f4f8;
}
/* Leaflet popup overrides */
.gov-map-popup { font-family: inherit; line-height: 1.4; }
.gov-map-popup__name { font-weight: 700; font-size: 0.95rem; color: #111827; margin-bottom: 0.2rem; }
.gov-map-popup__type { font-size: 0.75rem; color: #6b7280; margin-bottom: 0.35rem; }
.gov-map-popup__home { font-size: 0.72rem; font-weight: 600; color: #3b82f6; margin-bottom: 0.35rem; }
.gov-map-popup__topics-label { font-size: 0.68rem; font-weight: 700; text-transform: uppercase; color: #9ca3af; letter-spacing: 0.05em; margin: 0.5rem 0 0.3rem; }
.gov-map-popup__topic { display: block; font-size: 0.78rem; color: #3b82f6; font-weight: 500; text-decoration: none; padding: 0.2rem 0; border-bottom: 1px solid #f3f4f6; line-height: 1.35; }
.gov-map-popup__topic:last-child { border-bottom: none; }
.gov-map-popup__topic:hover { color: #1d4ed8; text-decoration: underline; }
.gov-map-popup__no-topics { font-size: 0.78rem; color: #9ca3af; font-style: italic; padding: 0.2rem 0; }
/* Leaflet attribution bar */
.leaflet-control-attribution { font-size: 0.65rem !important; }

/* ── Feed item save button ──────────────────────────────────────── */
.feed-save-btn {
    background: none;
    border: none;
    color: var(--muted, #9ca3af);
    cursor: pointer;
    padding: 0.15rem 0.25rem;
    font-size: 0.8rem;
    line-height: 1;
    opacity: 0;
    transition: opacity 0.15s, color 0.15s;
    flex-shrink: 0;
    align-self: flex-start;
    margin-top: 0.05rem;
}
.feed-item:hover .feed-save-btn,
.feed-save-btn[data-saved="1"] { opacity: 1; }
.feed-save-btn[data-saved="1"] { color: var(--accent, #059669); }

/* ── Research Tab ───────────────────────────────────────────────── */
.research-page { padding: 0; }

.research-hero {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    padding: 1.25rem 0 1rem;
    gap: 0.75rem;
}
.research-hero-title {
    font-size: 1.35rem;
    font-weight: 800;
    color: var(--text);
    line-height: 1.2;
}
.research-hero-sub {
    font-size: 0.82rem;
    color: var(--muted);
    margin-top: 0.2rem;
}
.research-note-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    background: var(--accent, #059669);
    color: #fff;
    border: none;
    border-radius: 20px;
    padding: 0.4rem 0.9rem;
    font-size: 0.78rem;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
    flex-shrink: 0;
}
.research-note-btn:hover { opacity: 0.9; }

/* Auth gate */
.research-auth-gate {
    text-align: center;
    padding: 2rem 1rem 1.75rem;
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 12px;
    margin-bottom: 1.25rem;
}
.research-gate-icon {
    font-size: 2rem;
    color: var(--muted);
    margin-bottom: 0.75rem;
    display: block;
}
.research-gate-text {
    color: var(--muted);
    font-size: 0.875rem;
    margin: 0 0 1rem;
    line-height: 1.5;
}
.research-gate-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    background: var(--accent, #059669);
    color: #fff;
    border: none;
    border-radius: 8px;
    padding: 0.5rem 1.25rem;
    font-size: 0.875rem;
    font-weight: 600;
    cursor: pointer;
}

/* Saved items */
.research-item {
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 10px;
    padding: 0.85rem 1rem;
    margin-bottom: 0.55rem;
    transition: box-shadow 0.15s;
}
.research-item:hover { box-shadow: var(--shadow-lg); }
.research-item-type {
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--muted);
    letter-spacing: 0.06em;
    margin-bottom: 0.3rem;
    display: flex;
    align-items: center;
    gap: 0.3rem;
}
.research-item-type i { font-size: 0.6rem; }
.research-item-title {
    display: block;
    font-size: 0.88rem;
    font-weight: 600;
    color: var(--text);
    text-decoration: none;
    line-height: 1.4;
    margin-bottom: 0.25rem;
}
.research-item-title:hover { color: var(--accent); text-decoration: underline; }
.research-item-title--plain { cursor: default; }
.research-item-title--plain:hover { text-decoration: none; color: var(--text); }
.research-item-note {
    font-size: 0.8rem;
    color: var(--muted);
    font-style: italic;
    margin-bottom: 0.25rem;
    line-height: 1.45;
}
.research-item-meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 0.35rem;
}
.research-item-date { font-size: 0.7rem; color: var(--muted); }
.research-item-remove {
    background: none;
    border: none;
    color: var(--muted);
    cursor: pointer;
    padding: 0.15rem 0.3rem;
    font-size: 0.72rem;
    opacity: 0.45;
    transition: opacity 0.15s, color 0.15s;
}
.research-item-remove:hover { opacity: 1; color: #ef4444; }

/* Note editor */
.research-note-editor {
    background: var(--card);
    border: 1.5px solid var(--accent, #059669);
    border-radius: 10px;
    padding: 0.9rem;
    margin-bottom: 0.9rem;
}
.research-note-textarea {
    width: 100%;
    min-height: 90px;
    background: transparent;
    border: none;
    outline: none;
    font-size: 0.9rem;
    color: var(--text);
    resize: none;
    font-family: inherit;
    line-height: 1.5;
    box-sizing: border-box;
}
.research-note-actions {
    display: flex;
    gap: 0.5rem;
    margin-top: 0.5rem;
}
.research-save-btn {
    background: var(--accent, #059669);
    color: #fff;
    border: none;
    border-radius: 6px;
    padding: 0.38rem 1rem;
    font-size: 0.8rem;
    font-weight: 600;
    cursor: pointer;
}
.research-cancel-btn {
    background: none;
    border: 1px solid var(--border);
    border-radius: 6px;
    padding: 0.38rem 0.9rem;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--muted);
    cursor: pointer;
}

/* Loading + empty states */
.research-loading {
    color: var(--muted);
    font-size: 0.875rem;
    padding: 1.25rem 0;
    text-align: center;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
}
.research-empty {
    color: var(--muted);
    font-size: 0.875rem;
    text-align: center;
    padding: 1.5rem 1rem;
    background: var(--card);
    border: 1px dashed var(--border);
    border-radius: 10px;
    margin-bottom: 1.25rem;
    line-height: 1.5;
}

/* Section divider */
.research-section-divider {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin: 1.5rem 0 1.25rem;
}
.research-section-divider::before,
.research-section-divider::after {
    content: '';
    flex: 1;
    height: 1px;
    background: var(--border);
}
.research-section-divider span {
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--muted);
    letter-spacing: 0.09em;
    white-space: nowrap;
}

/* Search */
.research-search-wrap { margin-bottom: 1rem; }
.research-search-inner { position: relative; }
.research-search-icon {
    position: absolute;
    left: 0.875rem;
    top: 50%;
    transform: translateY(-50%);
    color: var(--muted);
    pointer-events: none;
}
.research-search-input {
    width: 100%;
    padding: 0.6rem 1rem 0.6rem 2.5rem;
    font-size: 0.95rem;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: var(--card);
    color: var(--text);
    box-sizing: border-box;
    outline: none;
    font-family: inherit;
}
.research-search-input:focus { border-color: var(--accent); }

/* Explore section helpers */
.research-refresh-bar {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 0.55rem;
    background: var(--accent);
    color: white;
    border-radius: 8px;
    margin-bottom: 1rem;
    font-size: 0.82rem;
    font-weight: 600;
    cursor: pointer;
}
.research-sector-back-row {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1.25rem;
}
.research-back-btn {
    background: var(--bg-light);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 0.4rem 0.875rem;
    font-weight: 600;
    font-size: 0.875rem;
    cursor: pointer;
    color: var(--text);
}
.research-sector-title {
    font-size: 1.2rem;
    font-weight: 700;
    color: var(--primary);
    display: flex;
    align-items: center;
    gap: 0.5rem;
}
.research-section-label {
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--muted);
    margin-bottom: 0.75rem;
}
.research-hscroll {
    display: flex;
    gap: 0.75rem;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    padding-bottom: 0.5rem;
    scrollbar-width: none;
}
.research-people-label {
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--muted);
    margin: 0 0 0.6rem;
}
.research-people-row {
    display: flex;
    gap: 0.75rem;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    padding-bottom: 0.25rem;
    scrollbar-width: none;
}

/* ── Reps grid — Cope-prototype inline accordion ──────────────────── */
.reps-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(118px, 1fr));
    gap: 8px;
    margin-bottom: 10px;
}
.rep-card {
    flex-shrink: 0;
    width: 100px;
    background: var(--bg-white);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 12px 8px 10px;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 5px;
    cursor: pointer;
    transition: border-color 0.15s, box-shadow 0.15s;
    position: relative;
    box-sizing: border-box;
}
.rep-card:hover { border-color: var(--accent); }
.rep-card.open  { border-color: var(--accent); background: rgba(66,200,193,0.05); }

.rep-avatar {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    overflow: hidden;
    border: 1px solid var(--border);
    font-size: 1rem;
    font-weight: 700;
    color: white;
}
.rep-avatar i { font-size: 18px; }
.rep-avatar--logo { background: #fff; border-color: rgba(25,30,57,0.1); }
.rep-avatar--logo img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }
.rep-name  { font-size: 12px; font-weight: 700; color: var(--primary); line-height: 1.25; }
.rep-title { font-size: 10px; color: var(--text-muted); line-height: 1.3; }

/* Official detail — white card below the scroll/sub-cards */
.official-detail {
    display: none;
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 10px;
    padding: 16px 18px;
    margin: 0 0 12px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.07);
}
.official-detail.open { display: block; }

/* Sub-card row — shown when a multi-body group is expanded */
.org-sub-row {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 6px 0 10px;
}
.org-sub-card {
    display: flex;
    align-items: center;
    gap: 10px;
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 9px 14px 9px 10px;
    cursor: pointer;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.org-sub-card:hover { border-color: var(--accent); box-shadow: 0 1px 4px rgba(0,0,0,0.06); }
.org-sub-card.open  { border-color: var(--accent); background: rgba(66,200,193,0.05); }
.org-sub-avatar {
    width: 30px; height: 30px;
    border-radius: 50%; flex-shrink: 0; overflow: hidden;
    display: flex; align-items: center; justify-content: center;
    color: #fff; font-size: 12px;
    border: 1px solid rgba(0,0,0,0.08);
    background: #e5e7eb;
}
.org-sub-avatar img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }
.org-sub-label { font-size: 13px; font-weight: 600; color: var(--primary); line-height: 1.25; }

.od-head { display: flex; align-items: flex-start; gap: 12px; margin-bottom: 12px; }
.od-head-avatar {
    width: 40px; height: 40px;
    border-radius: 50%; overflow: hidden; flex-shrink: 0;
    border: 1px solid var(--border);
    display: flex; align-items: center; justify-content: center;
    color: white; font-weight: 700; font-size: 1rem;
}
.od-head-avatar i { font-size: 16px; }
.od-head-main { flex: 1; min-width: 0; }
.od-name  { font-size: 15px; font-weight: 700; color: var(--primary); line-height: 1.2; }
.od-role  { font-size: 12px; color: var(--text-muted); margin-top: 2px; }
.od-party {
    font-size: 11px; font-weight: 700; color: var(--text-muted);
    background: rgba(25,30,57,0.05); padding: 2px 9px; border-radius: 99px;
    flex-shrink: 0; align-self: flex-start;
}
.od-party.dem { background: rgba(29,78,216,0.1); color: #1d4ed8; }
.od-party.rep { background: rgba(185,28,28,0.1); color: #b91c1c; }
.od-head-avatar--logo { background: #fff; border-color: rgba(25,30,57,0.1); }
.od-head-avatar--logo img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }
.od-race-note {
    font-size: 11.5px; font-weight: 700; color: #92400e;
    background: #fef3c7; border: 1px solid #fcd34d;
    border-radius: 6px; padding: 6px 10px; margin-bottom: 10px;
    display: flex; align-items: center; gap: 6px;
}
.od-race-note i { color: #d97706; flex-shrink: 0; font-size: 10px; }
.od-highlights li { font-size: 12.5px; }
.od-facts {
    display: flex; flex-wrap: wrap; gap: 8px 24px;
    padding: 10px 0;
    border-top: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
    margin-bottom: 12px;
}
.od-fact         { display: flex; flex-direction: column; gap: 1px; }
.od-fact-label   { font-size: 10px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-muted); }
.od-fact-value   { font-size: 13px; font-weight: 700; color: var(--primary); }
.od-section-label {
    font-size: 10px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase;
    color: var(--text-muted); margin-bottom: 8px;
}
.od-list {
    list-style: none;
    display: flex; flex-direction: column; gap: 5px;
    margin-bottom: 12px;
}
.od-list li {
    font-size: 13px; color: var(--primary);
    display: flex; align-items: baseline; gap: 8px; line-height: 1.3;
}
.od-list li::before {
    content: ''; width: 5px; height: 5px; border-radius: 50%;
    background: var(--accent); flex-shrink: 0; position: relative; top: -1px;
}
.od-role-tag {
    font-size: 11px; color: var(--text-muted); font-weight: 700;
    margin-left: auto; text-align: right; flex-shrink: 0;
}
.od-contact {
    display: flex; flex-wrap: wrap; gap: 5px 12px; font-size: 12px; margin-top: 6px;
}
.od-contact a {
    color: var(--blue); font-weight: 700; text-decoration: none;
    display: inline-flex; align-items: center; gap: 4px; cursor: pointer;
}
.od-contact a:hover { text-decoration: underline; }
.od-bio {
    font-size: 12.5px; color: var(--text-muted); line-height: 1.5;
    margin-bottom: 10px;
}
.od-sections { margin-top: 10px; }
.od-section-item { margin-bottom: 10px; }
.od-section-item-title {
    font-size: 10px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase;
    color: var(--text-muted); margin-bottom: 4px;
}
.od-section-item-body { font-size: 13px; color: var(--primary); line-height: 1.45; }

@media (max-width: 480px) {
    .reps-grid { grid-template-columns: repeat(2, 1fr) !important; }
}

/* ── Voter registration CTA banner ──────────────────────────────────── */
.voter-reg-banner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    background: #eff6ff;
    border: 1px solid #bfdbfe;
    border-radius: 0.75rem;
    padding: 0.75rem 1rem;
    margin-bottom: 0.75rem;
}
.voter-reg-banner--urgent {
    background: #fef3c7;
    border-color: #fcd34d;
}
.voter-reg-banner__body {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex: 1;
    min-width: 0;
}
.voter-reg-banner__icon {
    color: #3b82f6;
    font-size: 1.1rem;
    flex-shrink: 0;
}
.voter-reg-banner--urgent .voter-reg-banner__icon { color: #d97706; }
.voter-reg-banner__headline {
    font-size: 0.85rem;
    font-weight: 600;
    color: #1e3a5f;
    line-height: 1.3;
}
.voter-reg-banner--urgent .voter-reg-banner__headline { color: #78350f; }
.voter-reg-banner__link {
    display: inline-block;
    font-size: 0.78rem;
    color: #2563eb;
    text-decoration: none;
    margin-top: 0.2rem;
}
.voter-reg-banner__link:hover { text-decoration: underline; }
.voter-reg-banner__dismiss {
    background: none;
    border: none;
    color: #94a3b8;
    font-size: 1rem;
    cursor: pointer;
    padding: 0.25rem;
    flex-shrink: 0;
    line-height: 1;
}
.voter-reg-banner__dismiss:hover { color: #475569; }

/* ── This Week in Your Government ──────────────────────────────────── */
.week-section {
    margin-bottom: 1rem;
}
.week-header {
    margin-bottom: 12px;
}
.week-title {
    font-family: 'Georgia', 'Times New Roman', serif;
    font-size: 20px;
    font-weight: 700;
    color: var(--primary);
    margin: 0 0 2px;
    line-height: 1.2;
}
.week-subtitle {
    font-size: 13px;
    color: var(--text-muted);
    margin: 0 0 6px;
}
.week-freshness {
    display: flex;
    align-items: center;
    gap: 5px;
    font-size: 11px;
    color: var(--text-muted);
}
.week-freshness-dot {
    display: inline-block;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--success);
    flex-shrink: 0;
}
.week-day-label {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--text-muted);
    padding: 8px 0 6px;
    border-top: 1px solid var(--border);
    margin-top: 4px;
    display: flex;
    align-items: center;
    gap: 6px;
}
.week-day-label:first-child {
    border-top: none;
    margin-top: 0;
}
.week-day-label.is-today {
    color: var(--accent);
    color: #0f766e;
}
.week-today-pill {
    background: var(--accent);
    color: var(--primary);
    font-size: 9px;
    font-weight: 700;
    padding: 1px 6px;
    border-radius: 99px;
    letter-spacing: 0.05em;
    text-transform: uppercase;
}
.week-meeting-row {
    background: white;
    border: 1px solid var(--border);
    border-radius: 6px;
    margin-bottom: 4px;
    overflow: hidden;
}
.week-meeting-trigger {
    display: flex;
    align-items: center;
    padding: 11px 13px;
    cursor: pointer;
    gap: 11px;
    width: 100%;
    background: none;
    border: none;
    text-align: left;
    font-family: inherit;
    transition: background 0.15s;
}
.week-meeting-trigger:hover {
    background: #fafafa;
}
.week-meeting-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
    background: #8a8a9a;
    margin-top: 2px;
}
.week-meeting-dot.has-debate {
    background: var(--accent);
}
.week-meeting-dot.is-urgent {
    background: var(--orange);
}
.week-meeting-main {
    flex: 1;
    min-width: 0;
}
.week-meeting-body-name {
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.07em;
    text-transform: uppercase;
    color: var(--text-muted);
    margin-bottom: 2px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.week-meeting-title {
    font-size: 14px;
    font-weight: 700;
    color: var(--primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    margin-bottom: 4px;
}
.week-meeting-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
}
.week-meeting-tag {
    font-size: 10px;
    font-weight: 600;
    padding: 2px 7px;
    border-radius: 99px;
    letter-spacing: 0.02em;
}
.week-meeting-tag.tag-public {
    background: rgba(207,95,58,0.12);
    color: var(--orange-deep);
}
.week-meeting-tag.tag-debate {
    background: rgba(66,200,193,0.15);
    color: #0f766e;
}
.week-meeting-tag.tag-urgent {
    background: rgba(207,95,58,0.15);
    color: var(--orange-deep);
}
.week-meeting-time {
    font-size: 11px;
    color: var(--text-muted);
    flex-shrink: 0;
    white-space: nowrap;
}
.week-meeting-chevron {
    color: var(--text-muted);
    font-size: 12px;
    transition: transform 0.2s;
    flex-shrink: 0;
}
.week-meeting-chevron.open {
    transform: rotate(180deg);
}
.week-meeting-accordion {
    display: none;
    border-top: 1px solid var(--border);
    background: #F7F6F2;
    padding: 11px 13px 13px;
}
.week-meeting-accordion.open {
    display: block;
}
.week-acc-meta {
    display: flex;
    flex-direction: column;
    gap: 3px;
    margin-bottom: 10px;
}
.week-acc-meta-row {
    display: flex;
    align-items: flex-start;
    gap: 6px;
    font-size: 12px;
    color: var(--text-muted);
}
.week-acc-meta-row i {
    width: 14px;
    text-align: center;
    flex-shrink: 0;
    margin-top: 1px;
    color: #94a3b8;
}
.week-agenda-label {
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--text-muted);
    margin-bottom: 6px;
    margin-top: 10px;
}
.week-agenda-item {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    padding: 6px 0;
    border-bottom: 1px solid rgba(25,30,57,0.07);
}
.week-agenda-item:last-child {
    border-bottom: none;
}
.week-agenda-bullet {
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: #8a8a9a;
    flex-shrink: 0;
    margin-top: 6px;
}
.week-agenda-bullet.debate {
    background: #0f766e;
}
.week-agenda-text {
    flex: 1;
    font-size: 13px;
    color: var(--primary);
    line-height: 1.4;
}
.week-attend-cta {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 12px;
    color: var(--orange-deep);
    font-weight: 700;
    padding: 8px 12px;
    background: rgba(207,95,58,0.09);
    border-radius: 4px;
    border: none;
    cursor: pointer;
    width: 100%;
    margin-top: 10px;
    text-decoration: none;
    font-family: inherit;
    transition: background 0.15s;
}
.week-attend-cta:hover {
    background: rgba(207,95,58,0.16);
    color: var(--orange-deep);
    text-decoration: none;
}

/* Federal/Capitol Hill events block within the week section */
.week-federal-section {
    margin-top: 12px;
    border: 1px solid var(--border);
    border-radius: 6px;
    overflow: hidden;
    background: white;
}
.week-federal-toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 11px 13px;
    cursor: pointer;
    width: 100%;
    background: none;
    border: none;
    text-align: left;
    font-family: inherit;
    gap: 10px;
    transition: background 0.15s;
}
.week-federal-toggle:hover { background: #fafafa; }
.week-federal-toggle-left {
    display: flex;
    align-items: center;
    gap: 8px;
}
.week-federal-icon {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #eff6ff;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #1d4ed8;
    font-size: 12px;
    flex-shrink: 0;
}
.week-federal-label {
    font-size: 13px;
    font-weight: 700;
    color: var(--primary);
}
.week-federal-sub {
    font-size: 11px;
    color: var(--text-muted);
}
.week-federal-right {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 11px;
    color: var(--text-muted);
    flex-shrink: 0;
}
.week-federal-body {
    display: none;
    border-top: 1px solid var(--border);
    background: #F7F6F2;
    padding: 10px 13px 12px;
}
.week-federal-body.open { display: block; }
.week-federal-event {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 10px 0;
    border-bottom: 1px solid rgba(25,30,57,0.07);
}
.week-federal-event:last-child { border-bottom: none; }
.week-federal-event-icon {
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: #eff6ff;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #1d4ed8;
    font-size: 11px;
    flex-shrink: 0;
}
.week-federal-event-title {
    font-size: 12.5px;
    font-weight: 700;
    color: var(--primary);
    margin-bottom: 5px;
    line-height: 1.4;
    line-height: 1.3;
}
.week-federal-event-detail {
    font-size: 12px;
    color: var(--text-muted);
    line-height: 1.4;
}
.week-federal-read-more {
    display: flex;
    align-items: center;
    gap: 5px;
    font-size: 12px;
    color: #1d4ed8;
    text-decoration: none;
    font-weight: 600;
    margin-top: 8px;
    padding-top: 8px;
    border-top: 1px solid var(--border);
}
.week-federal-read-more:hover { text-decoration: underline; }

/* Capitol Hill nested section toggles */
.week-cap-section {
    border-bottom: 1px solid var(--border);
}
.week-cap-section:last-of-type {
    border-bottom: none;
}
.week-cap-section-toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: 10px 13px;
    background: none;
    border: none;
    cursor: pointer;
    font-family: inherit;
    gap: 8px;
    transition: background 0.15s;
}
.week-cap-section-toggle:hover { background: #f5f4f0; }
.week-cap-section-toggle[aria-expanded="true"] { background: #f5f4f0; }
.week-cap-section-toggle:active { background: #ececE4; }

.week-cap-section-left {
    display: flex;
    align-items: center;
    gap: 8px;
}
.week-cap-section-icon {
    width: 22px;
    height: 22px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 10px;
    flex-shrink: 0;
}
.week-cap-section-label {
    font-size: 12px;
    font-weight: 700;
    color: var(--primary);
    text-align: left;
}
.week-cap-section-right {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}
.week-cap-section-count {
    font-size: 11px;
    font-weight: 600;
    color: var(--text-muted);
    background: rgba(25,30,57,0.07);
    padding: 1px 7px;
    border-radius: 99px;
}
.week-cap-section-body {
    display: grid;
    grid-template-rows: 0fr;
    background: #fafaf8;
    transition: grid-template-rows 0.28s cubic-bezier(0.4,0,0.2,1);
}
.week-cap-section-body.open {
    grid-template-rows: 1fr;
}
.wk-cap-body-inner {
    overflow: hidden;
    min-height: 0;
    padding: 0 14px;
    transition: padding 0.28s cubic-bezier(0.4,0,0.2,1);
}
.week-cap-section-body.open .wk-cap-body-inner {
    padding: 4px 14px 14px;
}
.wk-cap-fallback {
    display: block;
}

.week-federal-event-content { flex: 1; min-width: 0; }

/* Election tag */
.week-meeting-tag.tag-election {
    background: rgba(66,200,193,0.15);
    color: var(--blue);
}
.week-meeting-dot.is-election {
    background: var(--accent);
}

/* Week title sits above location pills — reduce bottom margin so pills are close */
#govWeekTitle {
    margin-bottom: 0;
}
#govWeekTitle .week-freshness {
    margin-bottom: 8px;
}
/* Space between Capitol Hill block and voter reg banner */
.week-section .voter-reg-banner {
    margin-top: 12px;
}

/* ── Local Impact card — inside Capitol Hill accordion ─────────── */
.wk-local-impact {
    margin: 12px 0 4px;
    background: linear-gradient(135deg, rgba(26,122,118,0.07) 0%, rgba(66,200,193,0.04) 100%);
    border: 1px solid rgba(66,200,193,0.25);
    border-radius: 8px;
    padding: 12px 14px;
}
.wk-li-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 8px;
}
.wk-li-eyebrow {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--blue);
    display: flex;
    align-items: center;
    gap: 5px;
}
.wk-li-regen-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 11px;
    font-weight: 600;
    color: var(--blue);
    background: rgba(66,200,193,0.1);
    border: 1px solid rgba(66,200,193,0.3);
    border-radius: 20px;
    padding: 3px 10px;
    cursor: pointer;
    white-space: nowrap;
    transition: background 0.15s;
    font-family: inherit;
}
.wk-li-regen-btn:hover { background: rgba(66,200,193,0.2); }
.wk-li-analysis {
    font-size: 13px;
    color: var(--text-dark);
    line-height: 1.55;
    margin: 0 0 8px;
}
.wk-li-bullets {
    margin: 0;
    padding-left: 0;
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 5px;
}
.wk-li-bullets li {
    font-size: 12px;
    color: var(--text-muted);
    line-height: 1.45;
    padding-left: 14px;
    position: relative;
}
.wk-li-bullets li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 7px;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: var(--accent);
}

/* Election callout — below Capitol Hill in week section */
.week-election-callout {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    background: linear-gradient(135deg, rgba(66,200,193,0.1) 0%, rgba(66,200,193,0.04) 100%);
    border: 1px solid rgba(66,200,193,0.3);
    border-radius: 8px;
    padding: 13px 14px;
    margin-top: 10px;
}
.week-election-icon {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: var(--accent);
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    flex-shrink: 0;
    margin-top: 1px;
}
.week-election-body { flex: 1; min-width: 0; }
.week-election-eyebrow {
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--blue);
    margin-bottom: 3px;
}
.week-election-title {
    font-size: 14px;
    font-weight: 700;
    color: var(--primary);
    margin-bottom: 2px;
    line-height: 1.3;
}
.week-election-when {
    font-size: 12px;
    color: var(--text-muted);
    margin-bottom: 5px;
}
.week-election-note {
    font-size: 12px;
    color: var(--text-muted);
    line-height: 1.45;
    margin-bottom: 8px;
}
.week-election-link {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 12px;
    font-weight: 700;
    color: var(--blue);
    text-decoration: none;
}
.week-election-link:hover { text-decoration: underline; }

@media (max-width: 400px) {
    .week-meeting-title { font-size: 13px; }
    .week-meeting-body-name { font-size: 9px; }
}

/* ── Capitol Hill briefing card redesign ─────────────────────────────── */

/* Static header — not a toggle button */
.week-federal-section--briefing .week-federal-toggle--header {
    background: linear-gradient(135deg, #eff6ff 0%, #f0f9ff 100%);
    border-bottom: 1px solid rgba(29,78,216,0.12);
    align-items: center;
    padding: 11px 13px;
    cursor: default;
    pointer-events: none;
}
.week-federal-section--briefing .week-federal-toggle--header .wk-cap-pdf-link {
    pointer-events: auto;
}
.week-federal-section--briefing .week-federal-icon {
    background: #1d4ed8;
    color: #fff;
}
.wk-cap-header-text {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

/* Body always open for the briefing card */
.week-federal-section--briefing .week-federal-body {
    display: block;
    padding: 0;
}

/* External report link icon in header */
.wk-cap-pdf-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    color: #1d4ed8;
    background: rgba(29,78,216,0.08);
    font-size: 11px;
    text-decoration: none;
    flex-shrink: 0;
    transition: background 0.15s;
}
.wk-cap-pdf-link:hover { background: rgba(29,78,216,0.16); }

/* Local impact section body (inside collapsible) */
.wk-local-impact-body {
    padding: 10px 12px 12px;
}
.wk-li-analysis {
    font-size: 12.5px;
    color: var(--text-muted);
    line-height: 1.5;
    margin: 0 0 6px;
}
.wk-li-bullets {
    margin: 0 0 8px 0;
    padding-left: 1.1rem;
    font-size: 12px;
    color: var(--text-muted);
    line-height: 1.5;
}
.wk-li-personalize-btn {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 11.5px;
    font-weight: 600;
    color: #1d4ed8;
    background: rgba(29,78,216,0.07);
    border: none;
    border-radius: 20px;
    padding: 4px 10px;
    cursor: pointer;
    transition: background 0.15s;
}
.wk-li-personalize-btn:hover { background: rgba(29,78,216,0.14); }

/* "Today on Capitol Hill" — persisted daily feed card (Federal tab) */
.capitol-briefing-card { border-left: 3px solid #1d4ed8; }
.cb-cat {
    background: rgba(29,78,216,0.1);
    color: #1d4ed8;
}
.cb-cat i { margin-right: 3px; }
.cb-detail {
    padding: 0 16px 16px;
}
.cb-summary {
    font-size: 13px;
    line-height: 1.5;
    color: var(--text-secondary, #444);
    margin: 0 0 12px;
}
.cb-pdf-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    font-weight: 600;
    color: #1d4ed8;
    background: rgba(29,78,216,0.08);
    border-radius: 20px;
    padding: 6px 12px;
    margin-top: 10px;
    text-decoration: none;
}
.cb-pdf-link:hover { background: rgba(29,78,216,0.16); }

.cb-clips-section {
    margin-bottom: 12px;
    padding: 10px 12px;
    background: #f8f9fc;
    border-radius: 10px;
}
.cb-clips-label {
    font-size: 11.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    color: var(--text-muted);
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 6px;
}
.cb-clips-list {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    padding-bottom: 2px;
    -webkit-overflow-scrolling: touch;
}
.cb-clip-row {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 8px;
    background: #fff;
    border: 1px solid rgba(25,30,57,0.08);
    border-radius: 10px;
    padding: 7px 10px;
    max-width: 190px;
    cursor: pointer;
    text-align: left;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.cb-clip-row:hover { border-color: #1d4ed8; box-shadow: 0 1px 4px rgba(29,78,216,0.15); }
.cb-clip-play {
    flex: 0 0 auto;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: #1d4ed8;
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 10px;
}
.cb-clip-info { min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.cb-clip-show {
    font-size: 11.5px;
    font-weight: 600;
    color: var(--text-primary, #191e39);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.cb-clip-time { font-size: 10.5px; color: var(--text-muted); }

/* Notification panel — slide-in from top-right */
.notif-panel {
    position: fixed;
    top: 0;
    right: 0;
    width: 100%;
    max-width: 400px;
    height: 100%;
    max-height: 100dvh;
    background: #fff;
    box-shadow: -4px 0 32px rgba(25,30,57,0.16);
    z-index: 9600;
    display: flex;
    flex-direction: column;
    transform: translateX(100%);
    transition: transform 0.28s cubic-bezier(0.4,0,0.2,1);
    overflow: hidden;
}
.notif-panel.open {
    transform: translateX(0);
}
.notif-panel-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(25,30,57,0.35);
    z-index: 9590;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.25s;
}
.notif-panel-backdrop.open {
    opacity: 1;
    pointer-events: auto;
}
.notif-panel-header {
    padding: 1rem 1.1rem 0.75rem;
    border-bottom: 1px solid var(--border);
    background: var(--primary);
    color: #fff;
    flex-shrink: 0;
}
.notif-panel-header-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
}
.notif-panel-title {
    font-size: 1rem;
    font-weight: 700;
    color: #fff;
    display: flex;
    align-items: center;
    gap: 0.45rem;
}
.notif-panel-close {
    background: rgba(255,255,255,0.12);
    border: none;
    color: #fff;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    font-size: 1.1rem;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.15s;
}
.notif-panel-close:hover { background: rgba(255,255,255,0.22); }
.notif-panel-status {
    font-size: 0.78rem;
    color: rgba(255,255,255,0.7);
    margin-top: 0.2rem;
}
.notif-panel-status--action { color: #fca5a5; font-weight: 600; }
.notif-panel-status--ok { color: #6ee7b7; }
.notif-panel-body {
    flex: 1;
    overflow-y: auto;
    padding: 0.5rem 0.875rem 1rem;
    -webkit-overflow-scrolling: touch;
}

/* Meeting action card (urgent) — inside notification panel */
.notif-mtg-card {
    border: 1px solid var(--border);
    border-left: 3px solid #dc2626;
    border-radius: 8px;
    padding: 0.8rem 0.9rem;
    margin-bottom: 0.65rem;
    background: #fff;
    position: relative;
}
.notif-mtg-card--upcoming {
    border-left-color: var(--accent);
}
.notif-mtg-when {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    background: #dc2626;
    color: #fff;
    border-radius: 4px;
    padding: 2px 7px;
    margin-bottom: 0.4rem;
}
.notif-mtg-card--upcoming .notif-mtg-when {
    background: var(--blue, #1a7a76);
}
.notif-mtg-title {
    font-size: 0.88rem;
    font-weight: 700;
    color: var(--primary);
    line-height: 1.3;
    margin-bottom: 0.2rem;
}
.notif-mtg-meta {
    font-size: 0.75rem;
    color: var(--text-muted);
    margin-bottom: 0.2rem;
}
.notif-mtg-note {
    font-size: 0.75rem;
    color: #059669;
    font-weight: 500;
    margin-bottom: 0.45rem;
    line-height: 1.4;
}
.notif-mtg-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: 0.5rem;
}
.notif-mtg-cta {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    background: var(--primary);
    color: #fff;
    border: none;
    border-radius: 6px;
    padding: 0.35rem 0.8rem;
    font-size: 0.78rem;
    font-weight: 600;
    cursor: pointer;
    text-decoration: none;
    font-family: inherit;
    transition: background 0.15s;
}
.notif-mtg-cta:hover { background: var(--primary-dark); }
.notif-mtg-link {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    font-size: 0.78rem;
    font-weight: 500;
    color: var(--blue);
    text-decoration: none;
}
.notif-mtg-link:hover { text-decoration: underline; }
.notif-mtg-dismiss {
    position: absolute;
    top: 0.55rem;
    right: 0.6rem;
    background: none;
    border: none;
    color: var(--text-muted);
    font-size: 1rem;
    cursor: pointer;
    padding: 2px;
    line-height: 1;
    opacity: 0.5;
    transition: opacity 0.15s;
}
.notif-mtg-dismiss:hover { opacity: 1; color: #dc2626; }

/* Gov alert card inside panel */
.notif-gov-card {
    border: 1px solid var(--border);
    border-left: 3px solid var(--orange, #CF5F3A);
    border-radius: 8px;
    padding: 0.75rem 0.9rem;
    margin-bottom: 0.65rem;
    background: #fff;
    position: relative;
}
.notif-gov-type {
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--orange, #CF5F3A);
    margin-bottom: 0.3rem;
}
.notif-gov-title {
    font-size: 0.88rem;
    font-weight: 600;
    color: var(--primary);
    margin-bottom: 0.15rem;
    line-height: 1.3;
}
.notif-gov-body {
    font-size: 0.78rem;
    color: var(--text-muted);
    line-height: 1.4;
}

@media (max-width: 480px) {
    .notif-panel {
        max-width: 100%;
        border-radius: 0;
    }
    .wk-cap-highlights-section { padding: 9px 11px 10px; }
}
