/**
 * Patriot University — Autocracy Tracker page styles (P2.15 step 1)
 *
 * EXTRACTED, NOT REWRITTEN. Every rule below came verbatim from an inline
 * `<style>` block in the generator template named above it. The templates
 * render five WordPress Pages carrying roughly 1.18M characters of generated
 * content, and each shipped its own copy of this CSS inside that content — so
 * a style change meant regenerating and republishing the corpus rather than
 * touching a stylesheet.
 *
 * Namespaced under `.tat-wrapper` and `.fct-wrapper`, which collide with
 * nothing in the parent theme or the apparatus sheet (checked, not assumed).
 * That namespace is why extraction is safe: these rules cannot reach a KB
 * article, a Post, or the chrome.
 *
 * THIS SHEET MUST BE DEPLOYED BEFORE THE TEMPLATES ARE REPUBLISHED. The
 * generated Pages carry no styles once the inline blocks are gone, so the order
 * is: ship the CSS, verify it loads, then run `pu_publish_pages.py --apply`.
 * Reversed, every tracker page renders unstyled until the sheet lands.
 */


/* ── from wp_dashboard.html ─────────────────────────────── */
.tat-wrapper{--threat-low:#27ae60;--threat-elevated:#B8860B;--threat-high:#d35400;--threat-severe:#c0392b;--threat-critical:#8b0000;--radius:8px;--radius-lg:12px;font-family:var(--pu-font-body, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);color:var(--pu-ink, #1A1A2E);line-height:1.6;padding:2rem 0;max-width:1400px;margin:0 auto}
.tat-wrapper *{box-sizing:border-box}
.tat-wrapper .page-header{margin-bottom:2rem}
.tat-wrapper .page-header h1{font-size:1.75rem;font-weight:700;margin-bottom:.25rem;color:var(--pu-ink, #1A1A2E)}
.tat-wrapper .page-header .subtitle{color:var(--pu-gray-600, #475569);font-size:.95rem}
.tat-wrapper .threat-banner{padding:1.5rem 2rem;border-radius:var(--radius-lg);margin-bottom:2rem;display:flex;align-items:center;justify-content:space-between;border:1px solid var(--iti-border, #e2e8f0)}
.tat-wrapper .threat-banner.level-critical{background:rgba(139,0,0,.08);border-color:var(--threat-critical)}
.tat-wrapper .threat-banner.level-severe{background:rgba(192,57,43,.08);border-color:var(--threat-severe)}
.tat-wrapper .threat-banner.level-high{background:rgba(211,84,0,.08);border-color:var(--threat-high)}
.tat-wrapper .threat-banner.level-elevated{background:rgba(184,134,11,.08);border-color:var(--threat-elevated)}
.tat-wrapper .threat-banner.level-low{background:rgba(39,174,96,.08);border-color:var(--threat-low)}
.tat-wrapper .threat-label{font-size:.85rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--pu-gray-600, #475569)}
.tat-wrapper .threat-level{font-size:2rem;font-weight:800;letter-spacing:-.02em}
.tat-wrapper .level-critical .threat-level{color:var(--threat-critical)}
.tat-wrapper .level-severe .threat-level{color:var(--threat-severe)}
.tat-wrapper .level-high .threat-level{color:var(--threat-high)}
.tat-wrapper .level-elevated .threat-level{color:var(--threat-elevated)}
.tat-wrapper .level-low .threat-level{color:var(--threat-low)}
.tat-wrapper .threat-score-display{text-align:right}
.tat-wrapper .score-big{font-size:2.5rem;font-weight:800;line-height:1;color:var(--pu-ink, #1A1A2E)}
.tat-wrapper .score-label{font-size:.8rem;color:var(--pu-gray-600, #475569)}
.tat-wrapper .score-breakdown{display:flex;gap:1rem;margin-bottom:2rem;flex-wrap:wrap}
.tat-wrapper .breakdown-card{flex:1;min-width:200px;padding:1rem 1.25rem;background:var(--pu-gray-50, #f8f9fa);border-radius:var(--radius);border:1px solid var(--iti-border, #e2e8f0)}
.tat-wrapper .bc-label{font-size:.8rem;color:var(--pu-gray-600, #475569);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.25rem}
.tat-wrapper .bc-value{font-size:1.5rem;font-weight:700;color:var(--pu-ink, #1A1A2E)}
.tat-wrapper .section-header{font-size:1.1rem;font-weight:700;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--iti-border, #e2e8f0);color:var(--pu-ink, #1A1A2E)}
.tat-wrapper .card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;margin-bottom:2rem}
.tat-wrapper .marker-card{background:var(--iti-surface, #fff);border:1px solid var(--iti-border, #e2e8f0);border-radius:var(--radius);padding:1.25rem;box-shadow:0 1px 3px rgba(0,0,0,.04)}
.tat-wrapper .card-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:.75rem}
.tat-wrapper .card-id{font-size:.7rem;font-weight:600;color:var(--pu-gray-400, #94a3b8);text-transform:uppercase;letter-spacing:.05em}
.tat-wrapper .card-title{font-size:.95rem;font-weight:600;line-height:1.3;margin-bottom:.5rem;color:var(--pu-ink, #1A1A2E)}
.tat-wrapper .card-score{display:flex;align-items:center;gap:.5rem}
.tat-wrapper .score-badge{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:50%;font-size:1.1rem;font-weight:700}
.tat-wrapper .score-badge.critical{background:rgba(139,0,0,.12);color:var(--threat-critical)}
.tat-wrapper .score-badge.severe{background:rgba(192,57,43,.12);color:var(--threat-severe)}
.tat-wrapper .score-badge.high{background:rgba(211,84,0,.12);color:var(--threat-high)}
.tat-wrapper .score-badge.elevated{background:rgba(184,134,11,.12);color:var(--threat-elevated)}
.tat-wrapper .score-badge.low{background:rgba(39,174,96,.12);color:var(--threat-low)}
.tat-wrapper .trend-arrow{font-size:1rem}
.tat-wrapper .trend-arrow.rising{color:var(--threat-severe)}
.tat-wrapper .trend-arrow.stable{color:var(--pu-gray-400, #94a3b8)}
.tat-wrapper .trend-arrow.falling{color:var(--threat-low)}
.tat-wrapper .card-bar{height:4px;background:var(--pu-gray-200, #e2e8f0);border-radius:2px;margin-top:.75rem;overflow:hidden}
.tat-wrapper .bar-fill{height:100%;border-radius:2px}
.tat-wrapper .bar-fill.critical{background:var(--threat-critical)}
.tat-wrapper .bar-fill.severe{background:var(--threat-severe)}
.tat-wrapper .bar-fill.high{background:var(--threat-high)}
.tat-wrapper .bar-fill.elevated{background:var(--threat-elevated)}
.tat-wrapper .bar-fill.low{background:var(--threat-low)}
.tat-wrapper .evidence-list{list-style:none;margin-top:.5rem;padding:0}
.tat-wrapper .evidence-list li{font-size:.8rem;color:var(--pu-gray-600, #475569);padding:.25rem 0 .25rem 1rem;position:relative}
.tat-wrapper .evidence-list li::before{content:"—";position:absolute;left:0;color:var(--pu-gray-400, #94a3b8)}
.tat-wrapper .activity-list{list-style:none;padding:0}
.tat-wrapper .activity-item{display:flex;gap:1rem;padding:.75rem 0;border-bottom:1px solid var(--iti-border, #e2e8f0)}
.tat-wrapper .activity-item:last-child{border-bottom:none}
.tat-wrapper .activity-time{font-size:.75rem;color:var(--pu-gray-400, #94a3b8);white-space:nowrap;min-width:100px}
.tat-wrapper .activity-content{flex:1}
.tat-wrapper .activity-title{font-weight:600;font-size:.875rem;margin-bottom:.15rem;color:var(--pu-ink, #1A1A2E)}
.tat-wrapper .activity-summary{font-size:.8rem;color:var(--pu-gray-600, #475569)}
.tat-wrapper .tag{display:inline-block;padding:.15rem .5rem;border-radius:4px;font-size:.75rem;font-weight:600;margin:.1rem}
.tat-wrapper .tag.critical{background:rgba(139,0,0,.1);color:var(--threat-critical)}
.tat-wrapper .tag.severe{background:rgba(192,57,43,.1);color:var(--threat-severe)}
.tat-wrapper .tag.high{background:rgba(211,84,0,.1);color:var(--threat-high)}
.tat-wrapper .tag.elevated{background:rgba(184,134,11,.1);color:var(--threat-elevated)}
.tat-wrapper .tag.low{background:rgba(39,174,96,.1);color:var(--threat-low)}
.tat-wrapper .data-freshness{font-size:.8rem;color:var(--pu-gray-400, #94a3b8);text-align:center;margin-top:2rem;padding-top:1rem;border-top:1px solid var(--iti-border, #e2e8f0)}
@media(max-width:768px){.tat-wrapper{padding:1rem 0}.tat-wrapper .threat-banner{flex-direction:column;text-align:center;gap:1rem}.tat-wrapper .threat-score-display{text-align:center}}

/* ── from wp_threat_detail.html ─────────────────────────────── */
.tat-wrapper .section-header{font-size:1.25rem;font-weight:700;margin-bottom:1rem;margin-top:2rem;padding-bottom:.5rem;border-bottom:1px solid var(--iti-border, #e2e8f0);color:var(--pu-ink, #1A1A2E)}
.tat-wrapper details{background:var(--iti-surface, #fff);border:1px solid var(--iti-border, #e2e8f0);border-left:4px solid var(--pu-gray-300, #cbd5e1);border-radius:var(--radius-lg);margin-bottom:1rem;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.04);transition:border-color .2s,box-shadow .2s}
.tat-wrapper details:hover{border-left-color:var(--threat-severe);box-shadow:0 3px 12px rgba(0,0,0,.08)}
.tat-wrapper details[open]{border-left-color:var(--threat-critical);border-color:var(--pu-gray-400, #94a3b8)}
.tat-wrapper summary{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;cursor:pointer;user-select:none;transition:background .15s}
.tat-wrapper summary::-webkit-details-marker{display:none}
.tat-wrapper summary .expand-icon{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--pu-gray-100, #f1f3f4);margin-left:.75rem;transition:transform .2s,background .2s;flex-shrink:0}
.tat-wrapper summary .expand-icon svg{width:14px;height:14px;stroke:var(--pu-gray-600, #475569);stroke-width:2.5;fill:none;transition:stroke .2s}
.tat-wrapper details:hover summary .expand-icon{background:rgba(192,57,43,.1)}
.tat-wrapper details:hover summary .expand-icon svg{stroke:var(--threat-severe)}
.tat-wrapper details[open] summary .expand-icon{transform:rotate(90deg);background:rgba(139,0,0,.1)}
.tat-wrapper details[open] summary .expand-icon svg{stroke:var(--threat-critical)}
.tat-wrapper summary:hover{background:var(--pu-gray-50, #f8f9fa)}
.tat-wrapper .expand-hint{display:inline-block;font-size:.7rem;color:var(--pu-gray-400, #94a3b8);text-transform:uppercase;letter-spacing:.05em;margin-left:.5rem;opacity:0;transition:opacity .2s}
.tat-wrapper details:hover .expand-hint{opacity:1}
.tat-wrapper .marker-summary-left{display:flex;align-items:center;gap:1rem}
.tat-wrapper .marker-id-badge{font-size:.7rem;font-weight:600;color:var(--pu-gray-600, #475569);text-transform:uppercase;letter-spacing:.05em;background:var(--pu-gray-100, #f1f3f4);padding:.2rem .5rem;border-radius:4px}
.tat-wrapper .marker-name{font-size:1rem;font-weight:600;color:var(--pu-ink, #1A1A2E)}
.tat-wrapper .marker-summary-right{display:flex;align-items:center;gap:.75rem}
.tat-wrapper .trend-badge{font-size:.8rem;font-weight:600;padding:.2rem .6rem;border-radius:4px}
.tat-wrapper .trend-badge.rising{background:rgba(192,57,43,.1);color:var(--threat-severe)}
.tat-wrapper .trend-badge.stable{background:rgba(148,163,184,.15);color:var(--pu-gray-600, #475569)}
.tat-wrapper .trend-badge.falling{background:rgba(39,174,96,.1);color:var(--threat-low)}
.tat-wrapper .marker-detail{padding:0 1.5rem 1.5rem}
.tat-wrapper .marker-description{font-size:.9rem;color:var(--pu-gray-600, #475569);margin-bottom:1.25rem;line-height:1.7}
.tat-wrapper .detail-columns{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}
.tat-wrapper .detail-column h4{font-size:.85rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--pu-gray-400, #94a3b8);margin-bottom:.75rem}
.tat-wrapper .indicator-list,.tat-wrapper .evidence-list{list-style:none;padding:0;margin:0}
.tat-wrapper .indicator-list li,.tat-wrapper .evidence-list li{font-size:.85rem;color:var(--pu-gray-600, #475569);padding:.3rem 0 .3rem 1.25rem;position:relative;line-height:1.5}
.tat-wrapper .indicator-list li::before{content:"○";position:absolute;left:0;color:var(--pu-navy, #1a3a6b);font-size:.7rem;top:.45rem}
.tat-wrapper .card-bar{height:6px;background:var(--pu-gray-200, #e2e8f0);border-radius:3px;margin-top:1rem;overflow:hidden}
.tat-wrapper .bar-fill{height:100%;border-radius:3px}
@media(max-width:768px){.tat-wrapper{padding:1rem 0}.tat-wrapper .detail-columns{grid-template-columns:1fr}.tat-wrapper .marker-summary-left{flex-direction:column;align-items:flex-start;gap:.25rem}}

/* ── from wp_infographics.html ─────────────────────────────── */
.tat-wrapper .page-header{margin-bottom:2.5rem;text-align:center;padding:2rem 1rem;background:linear-gradient(135deg, rgba(26,58,107,0.04) 0%, rgba(139,0,0,0.04) 100%);border-radius:var(--radius-lg);border:1px solid var(--iti-border, #e2e8f0)}
.tat-wrapper .page-header h1{font-size:2rem;font-weight:800;margin-bottom:.5rem;color:var(--pu-ink, #1A1A2E);letter-spacing:-0.02em}
.tat-wrapper .page-header .subtitle{color:var(--pu-gray-600, #475569);font-size:1rem;margin:0}
.tat-wrapper .charts-row{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin-bottom:2rem}
.tat-wrapper .chart-card{background:var(--iti-surface, #fff);border:1px solid var(--iti-border, #e2e8f0);border-radius:var(--radius-lg);padding:1.5rem;box-shadow:0 2px 8px rgba(0,0,0,.04);transition:box-shadow .2s ease}
.tat-wrapper .chart-card:hover{box-shadow:0 4px 16px rgba(0,0,0,.08)}
.tat-wrapper .chart-card h3{font-size:1rem;font-weight:600;margin-bottom:1rem;color:var(--pu-ink, #1A1A2E);display:flex;align-items:center;gap:.5rem}
.tat-wrapper .chart-card h3::before{content:'';display:inline-block;width:4px;height:1em;border-radius:2px;background:var(--threat-critical)}
.tat-wrapper .chart-card.full-width{grid-column:1/-1}
.tat-wrapper .chart-container{position:relative;width:100%;min-height:280px}
.tat-wrapper .chart-container canvas{width:100%!important;height:280px!important}
.tat-wrapper .gauge-card{text-align:center;padding:2.5rem 1.5rem;background:linear-gradient(180deg, var(--iti-surface, #fff) 60%, rgba(139,0,0,0.03) 100%);border:2px solid rgba(139,0,0,.15);border-radius:var(--radius-lg);box-shadow:0 4px 20px rgba(139,0,0,.06)}
.tat-wrapper .gauge-card h3{justify-content:center;font-size:1.1rem}
.tat-wrapper .gauge-svg-wrapper{margin:1.5rem auto;width:220px;height:130px;position:relative}
.tat-wrapper .gauge-svg{width:100%;height:100%}
.tat-wrapper .gauge-score-text{font-size:2.8rem;font-weight:900;letter-spacing:-0.03em}
.tat-wrapper .gauge-label{font-size:1.1rem;font-weight:700;margin-top:.75rem;text-transform:uppercase;letter-spacing:.06em}
.tat-wrapper .gauge-sublabel{font-size:.85rem;color:var(--pu-gray-600, #475569);margin-top:.5rem}
.tat-wrapper .gauge-sublabel .gauge-pill{display:inline-flex;align-items:center;gap:.25rem;padding:.15rem .6rem;border-radius:20px;font-weight:600;font-size:.8rem}
.tat-wrapper .gauge-sublabel .gauge-pill.ac{background:rgba(192,57,43,.08);color:#c0392b}
.tat-wrapper .gauge-sublabel .gauge-pill.au{background:rgba(139,0,0,.08);color:#8b0000}
.tat-wrapper .data-table{width:100%;border-collapse:collapse;background:var(--iti-surface, #fff);border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--iti-border, #e2e8f0)}
.tat-wrapper .data-table th{text-align:left;padding:.75rem 1rem;font-size:.75rem;font-weight:700;color:var(--pu-gray-600, #475569);text-transform:uppercase;letter-spacing:.05em;background:var(--pu-gray-50, #f8f9fa);border-bottom:2px solid var(--iti-border, #e2e8f0);cursor:pointer;user-select:none;transition:color .15s}
.tat-wrapper .data-table th:hover{color:var(--threat-critical)}
.tat-wrapper .data-table th::after{content:' ↕';opacity:.4;font-size:.65rem}
.tat-wrapper .data-table td{padding:.65rem 1rem;font-size:.875rem;border-bottom:1px solid var(--iti-border, #e2e8f0);vertical-align:middle;color:var(--pu-ink, #1A1A2E)}
.tat-wrapper .data-table tr:last-child td{border-bottom:none}
.tat-wrapper .data-table tbody tr:hover{background:rgba(26,58,107,.02)}
.tat-wrapper .score-badge{display:inline-flex;align-items:center;justify-content:center;width:2.2rem;height:2.2rem;border-radius:50%;font-size:.85rem;font-weight:700;box-shadow:0 1px 3px rgba(0,0,0,.08)}
.tat-wrapper .score-badge.critical{background:rgba(139,0,0,.1);color:var(--threat-critical);border:1.5px solid rgba(139,0,0,.2)}
.tat-wrapper .score-badge.severe{background:rgba(192,57,43,.1);color:var(--threat-severe);border:1.5px solid rgba(192,57,43,.2)}
.tat-wrapper .score-badge.high{background:rgba(211,84,0,.1);color:var(--threat-high);border:1.5px solid rgba(211,84,0,.2)}
.tat-wrapper .score-badge.elevated{background:rgba(184,134,11,.1);color:var(--threat-elevated);border:1.5px solid rgba(184,134,11,.2)}
.tat-wrapper .score-badge.low{background:rgba(39,174,96,.1);color:var(--threat-low);border:1.5px solid rgba(39,174,96,.2)}
.tat-wrapper .trend-arrow{font-size:.85rem;font-weight:600}
.tat-wrapper .category-bar{display:flex;height:32px;border-radius:6px;overflow:hidden;margin-bottom:.75rem;box-shadow:inset 0 1px 2px rgba(0,0,0,.08)}
.tat-wrapper .category-bar .seg{display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.2)}
.tat-wrapper .heatmap-grid{display:grid;gap:3px;margin-top:1rem}
.tat-wrapper .heatmap-cell{aspect-ratio:1;border-radius:3px;min-width:14px;min-height:14px;transition:transform .15s}
.tat-wrapper .heatmap-cell:hover{transform:scale(1.5);z-index:1}
.tat-wrapper .heatmap-legend{display:flex;align-items:center;gap:.5rem;margin-top:1rem;font-size:.75rem;color:var(--pu-gray-400, #94a3b8)}
.tat-wrapper .heatmap-legend .cell-sample{width:14px;height:14px;border-radius:3px}
.tat-wrapper .section-header{font-size:1.25rem;font-weight:800;margin:2.5rem 0 1.25rem;padding-bottom:.75rem;border-bottom:3px solid var(--threat-critical);color:var(--pu-ink, #1A1A2E);display:flex;align-items:center;gap:.5rem}
.tat-wrapper .data-freshness{font-size:.8rem;color:var(--pu-gray-400, #94a3b8);text-align:center;margin-top:2.5rem;padding:1rem;border-top:1px solid var(--iti-border, #e2e8f0);background:var(--pu-gray-50, #f8f9fa);border-radius:var(--radius)}
.tat-wrapper .freshness-table .status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:.4rem;vertical-align:middle}
.tat-wrapper .freshness-table .status-dot.active{background:var(--threat-low)}
.tat-wrapper .freshness-table .status-dot.demand{background:var(--pu-gray-400, #94a3b8)}
.tat-wrapper .freshness-table .status-dot.stable{background:var(--pu-navy, #1a3a6b)}
@media(max-width:768px){.tat-wrapper{padding:1rem 0}.tat-wrapper .charts-row{grid-template-columns:1fr}.tat-wrapper .gauge-svg-wrapper{width:180px;height:110px}.tat-wrapper .data-table{font-size:.8rem}.tat-wrapper .data-table th,.tat-wrapper .data-table td{padding:.5rem .6rem}}

/* ── from wp_methodology.html ─────────────────────────────── */
.tat-wrapper{--threat-low:#27ae60;--threat-elevated:#B8860B;--threat-high:#d35400;--threat-severe:#c0392b;--threat-critical:#8b0000;--radius:8px;--radius-lg:12px;font-family:var(--pu-font-body, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);color:var(--pu-ink, #1A1A2E);line-height:1.6;padding:2rem 0;max-width:900px;margin:0 auto}
.tat-wrapper h1{font-size:1.75rem;font-weight:700;margin-bottom:.5rem;color:var(--pu-ink, #1A1A2E)}
.tat-wrapper h2{font-size:1.3rem;font-weight:700;margin-top:2.5rem;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--iti-border, #e2e8f0);color:var(--pu-ink, #1A1A2E)}
.tat-wrapper h3{font-size:1.05rem;font-weight:600;margin-top:1.5rem;margin-bottom:.75rem;color:var(--pu-ink, #1A1A2E)}
.tat-wrapper p{color:var(--pu-gray-600, #475569);margin-bottom:1rem;line-height:1.8}
.tat-wrapper .lead{font-size:1.05rem;color:var(--pu-ink, #1A1A2E);margin-bottom:1.5rem}
.tat-wrapper ul,.tat-wrapper ol{color:var(--pu-gray-600, #475569);margin-bottom:1rem;padding-left:1.5rem}
.tat-wrapper li{margin-bottom:.4rem;line-height:1.7}
.tat-wrapper .marker-table{width:100%;border-collapse:collapse;background:var(--iti-surface, #fff);border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--iti-border, #e2e8f0);margin-bottom:1.5rem}
.tat-wrapper .marker-table th{text-align:left;padding:.6rem 1rem;font-size:.8rem;font-weight:600;color:var(--pu-gray-600, #475569);text-transform:uppercase;letter-spacing:.04em;background:var(--pu-gray-50, #f8f9fa);border-bottom:1px solid var(--iti-border, #e2e8f0)}
.tat-wrapper .marker-table td{padding:.6rem 1rem;font-size:.85rem;border-bottom:1px solid var(--iti-border, #e2e8f0);vertical-align:top;color:var(--pu-ink, #1A1A2E)}
.tat-wrapper .marker-table tr:last-child td{border-bottom:none}
.tat-wrapper .level-band{display:flex;align-items:center;gap:.75rem;padding:.6rem 1rem;background:var(--iti-surface, #fff);border:1px solid var(--iti-border, #e2e8f0);border-radius:var(--radius);margin-bottom:.5rem}
.tat-wrapper .level-dot{width:14px;height:14px;border-radius:50%;flex-shrink:0}
.tat-wrapper .level-label{font-weight:600;font-size:.9rem;min-width:80px;color:var(--pu-ink, #1A1A2E)}
.tat-wrapper .level-desc{font-size:.85rem;color:var(--pu-gray-600, #475569)}
.tat-wrapper .callout{background:var(--pu-navy-light, #e8eef8);border-left:3px solid var(--pu-navy, #1a3a6b);padding:1rem 1.25rem;border-radius:0 var(--radius) var(--radius) 0;margin:1.5rem 0;font-size:.9rem}
.tat-wrapper .callout p{margin-bottom:0;color:var(--pu-ink, #1A1A2E)}
.tat-wrapper code{background:var(--pu-gray-100, #f1f3f4);padding:.15rem .4rem;border-radius:3px;font-size:.85rem;color:var(--pu-navy, #1a3a6b)}
@media(max-width:768px){.tat-wrapper{padding:1rem 0}}

/* ── from wp_financial_costs.html ─────────────────────────────── */
.fct-wrapper{--c-direct:#c0392b;--c-indirect:#B8860B;--c-household:#1a3a6b;--radius:8px;--radius-lg:12px;font-family:var(--pu-font-body,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif);color:var(--pu-ink,#1A1A2E);line-height:1.6;padding:2rem 0;max-width:920px;margin:0 auto}
.fct-wrapper *{box-sizing:border-box}
.fct-wrapper h1{font-size:1.9rem;font-weight:700;margin-bottom:.4rem}
.fct-wrapper h2{font-size:1.3rem;font-weight:700;margin-top:2.5rem;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--iti-border,#e2e8f0)}
.fct-wrapper h3{font-size:1.05rem;font-weight:600;margin:1.25rem 0 .5rem}
.fct-wrapper p{color:var(--pu-gray-600,#475569);margin-bottom:1rem}
.fct-wrapper .lead{font-size:1.05rem;color:var(--pu-ink,#1A1A2E)}
.fct-wrapper .asof{font-size:.8rem;color:var(--pu-gray-400,#94a3b8)}
.fct-wrapper .ledgers{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin:1.25rem 0}
.fct-wrapper .ledger{background:var(--iti-surface,#fff);border:1px solid var(--iti-border,#e2e8f0);border-radius:var(--radius-lg);padding:1.25rem}
.fct-wrapper .ledger.a{border-left:4px solid var(--c-direct)}
.fct-wrapper .ledger.ind{border-left:4px solid var(--c-indirect)}
.fct-wrapper .ledger .cap{font-size:.85rem;font-weight:600;color:var(--pu-gray-600,#475569);text-transform:uppercase;letter-spacing:.03em}
.fct-wrapper .ledger .fig{font-size:2rem;font-weight:700;color:var(--pu-ink,#1A1A2E)}
.fct-wrapper .ledger .sub{font-size:.82rem;color:var(--pu-gray-600,#475569)}
.fct-wrapper .note{background:var(--pu-navy-light,#e8eef8);border-left:3px solid var(--pu-navy,#1a3a6b);padding:.75rem 1rem;border-radius:0 var(--radius) var(--radius) 0;font-size:.88rem;margin:1rem 0}
.fct-wrapper table{width:100%;border-collapse:collapse;background:var(--iti-surface,#fff);border:1px solid var(--iti-border,#e2e8f0);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:1rem}
.fct-wrapper th{text-align:left;padding:.55rem 1rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--pu-gray-600,#475569);background:var(--pu-gray-50,#f8f9fa);border-bottom:1px solid var(--iti-border,#e2e8f0)}
.fct-wrapper td{padding:.55rem 1rem;font-size:.88rem;border-bottom:1px solid var(--iti-border,#e2e8f0);vertical-align:top}
.fct-wrapper tr:last-child td{border-bottom:none}
.fct-wrapper .bar{height:10px;border-radius:5px;background:var(--c-direct);display:inline-block;vertical-align:middle;min-width:2px}
.fct-wrapper .cat{margin:1rem 0;padding:1rem 1.25rem;background:var(--iti-surface,#fff);border:1px solid var(--iti-border,#e2e8f0);border-radius:var(--radius);border-left:4px solid var(--iti-border,#e2e8f0)}
.fct-wrapper .cat.direct_federal{border-left-color:var(--c-direct)}
.fct-wrapper .cat.household_burden{border-left-color:var(--c-household)}
.fct-wrapper .cat.indirect{border-left-color:var(--c-indirect)}
.fct-wrapper .pill{display:inline-block;padding:.1rem .5rem;border-radius:999px;font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;border:1px solid var(--iti-border,#e2e8f0);color:var(--pu-gray-600,#475569)}
.fct-wrapper .pill.confirmed{color:#1e7e34;border-color:#1e7e34}
.fct-wrapper .pill.estimated{color:#B8860B;border-color:#B8860B}
.fct-wrapper .pill.contested{color:#c0392b;border-color:#c0392b}
.fct-wrapper a{color:var(--pu-navy,#1a3a6b)}
.fct-wrapper .src{font-size:.78rem;color:var(--pu-gray-400,#94a3b8)}
.fct-wrapper .freshness{font-size:.8rem;color:var(--pu-gray-400,#94a3b8);text-align:center;margin-top:2rem;padding-top:1rem;border-top:1px solid var(--iti-border,#e2e8f0)}
@media(max-width:768px){.fct-wrapper .ledgers{grid-template-columns:1fr}}


/* ══════════════════════════════════════════════════════════════════════════
   P2.15 steps 2 & 3 — container queries, and the mobile layout
   ══════════════════════════════════════════════════════════════════════════

   WHAT WAS DELETED, AND WHY DELETION IS THE FIX

   `.card-grid` already carried `repeat(auto-fill, minmax(300px, 1fr))` and
   `.score-breakdown` already carried `flex-wrap: wrap`. Both do exactly the
   right thing on their own. A `@media (max-width: 768px)` block then overrode
   them to `grid-template-columns: 1fr` and `flex-direction: column`, which is
   what forced a single column all the way up to 768px — on an iPad the grid
   had room for two cards and was told to show one.

   So the mobile fix for the hero and the card grid is REMOVING those two
   declarations, not inverting them. That is done above, in place.

   WHY CONTAINER QUERIES HERE AND NOT MEDIA QUERIES

   These pages are Surface A `page` content rendered inside whatever column the
   theme gives them, and that column is now 802px on an iPad, 991px at 1023,
   1248px on desktop — it changed twice in this workstream alone. A component
   that asks the VIEWPORT how wide it is gets the wrong answer whenever the
   shell around it moves. Asking its own container is stable across every one
   of those changes.
   ══════════════════════════════════════════════════════════════════════════ */

.tat-wrapper,
.fct-wrapper {
    container-type: inline-size;
    container-name: tat;
}

/* ── Hero score ──────────────────────────────────────────────────────────
   The two index tiles reflow on their own: `flex-wrap` is already on the
   parent, so a flex-basis and a min-width give 1-up at 320px and 2-up by about
   480px WITHOUT a breakpoint. Last-updated reads as a caption rather than a
   third equal-weight metric. */
.tat-wrapper .score-breakdown > .breakdown-card {
    flex: 1 1 200px;
    min-width: 200px;
}

@container tat (max-width: 560px) {
    .tat-wrapper .threat-banner {
        flex-direction: column;
        text-align: center;
        gap: 1rem;
    }
    .tat-wrapper .threat-score-display { text-align: center; }
}

/* ── Section headings ────────────────────────────────────────────────────
   Sticky under the site header so the reader always knows which block of
   markers they are in. `--pu-header-h` is the theme's own measure; the
   fallback matches the header measured on a live page (95px). */
.tat-wrapper .section-header {
    position: sticky;
    top: var(--pu-header-h, 95px);
    z-index: 1;
    background: var(--pu-ground, #EFEDE4);
}

/* ── Indicator cards ─────────────────────────────────────────────────────
   The header row is the part that must always be readable and hittable: code
   badge, title, score, trend. 56px is the row height the spec asks for, above
   the 44px tap-target floor. */
.tat-wrapper .card-header {
    min-height: 56px;
    align-items: center;
}

@container tat (max-width: 600px) {
    .tat-wrapper .card-grid { grid-template-columns: 1fr; }
}

/* Data-driven bar widths arrive as a custom property rather than an inline
   `width`, so the presentation stays in this file and the template carries
   only the datum. */
.tat-wrapper .bar-fill { width: var(--score-pct, 0%); }

/* ── Evidence ────────────────────────────────────────────────────────────
   Three bullets per card times twenty markers is a very long phone page. The
   template puts them in a <details>; this styles the summary as a control
   rather than as text, and keeps it a legitimate tap target. */
.tat-wrapper .evidence-toggle {
    cursor: pointer;
    min-height: 44px;
    display: flex;
    align-items: center;
    gap: .4rem;
    font-size: .85rem;
    color: var(--pu-gray-600, #475569);
    list-style: none;
}
.tat-wrapper .evidence-toggle::-webkit-details-marker { display: none; }
.tat-wrapper .evidence-toggle::before {
    content: "\25B8";
    display: inline-block;
    transition: transform 150ms ease;
}
.tat-wrapper details[open] > .evidence-toggle::before { transform: rotate(90deg); }

@media (prefers-reduced-motion: reduce) {
    .tat-wrapper .evidence-toggle::before { transition: none; }
}

/* ── Classes replacing the dashboard's static inline attributes ──────────
   Same declarations, moved verbatim. Inline styles ship inside the generated
   page CONTENT, so each one was another reason a presentation change needed a
   corpus republish rather than a stylesheet deploy.

   The two `style=` attributes still in the dashboard are `--score-pct`, which
   carries a DATUM (a marker's score as a percentage) rather than a rule. That
   is the right place for it: the value is per-marker and cannot live in a
   stylesheet, and the width that consumes it does. */
.tat-wrapper .bc-value--caption { font-size: 1rem; }

.tat-wrapper .section-note {
    font-weight: 400;
    color: var(--pu-gray-600, #475569);
    font-size: .85rem;
}

.tat-wrapper .stack-xs { margin-top: .35rem; }


/* ══════════════════════════════════════════════════════════════════════════
   P2.17 — data tables reach their own columns
   ══════════════════════════════════════════════════════════════════════════

   MEASURED FIRST. 18 tables across the seven live pages, widest is FIVE
   columns. The spec's stacked-card treatment (`td::before { content:
   attr(data-label) }`) is for tables over six columns or key/value shapes, and
   would have meant a publish-pipeline change for a population of zero. This is
   the 4-6 column branch instead.

   THE DEFECT. `.data-table` and `.marker-table` carry `overflow: hidden` so
   their `border-radius` clips. On a 390px phone the five-column marker table is
   358px wide with 433px of content, and `overflow: hidden` means those 77px are
   not merely off-screen — they are UNREACHABLE. `overflow: hidden` still allows
   programmatic `scrollLeft`, which is what makes this easy to test wrongly; a
   finger cannot move it.

   The wrapper is what restores the affordance. The table keeps its own
   `overflow: hidden` for its corners, and is allowed to exceed the wrapper.
   ══════════════════════════════════════════════════════════════════════════ */

.tat-wrapper .table-scroll,
.fct-wrapper .table-scroll {
    overflow-x: auto;
    /* Stop a horizontal swipe that runs out of table from turning into a
       browser back-gesture or a page scroll. */
    overscroll-behavior-x: contain;
    margin-bottom: 1.5rem;
    /* A cue that there is more to the right: shadows pinned to the scroller's
       edges, revealed only while there is content beyond them. Pure CSS — no
       scroll listener, so nothing to keep in sync. */
    background:
        linear-gradient(to right, var(--iti-surface, #fff) 30%, rgba(255,255,255,0)),
        linear-gradient(to right, rgba(255,255,255,0), var(--iti-surface, #fff) 70%) 100% 0,
        radial-gradient(farthest-side at 0 50%, rgba(0,0,0,.14), rgba(0,0,0,0)),
        radial-gradient(farthest-side at 100% 50%, rgba(0,0,0,.14), rgba(0,0,0,0)) 100% 0;
    background-repeat: no-repeat;
    background-size: 40px 100%, 40px 100%, 14px 100%, 14px 100%;
    background-attachment: local, local, scroll, scroll;
}

/* Inside a scroller a `width: 100%` table can never exceed its parent, so it
   would still be clipped — it has to be free to grow to its content. */
.tat-wrapper .table-scroll > table,
.fct-wrapper .table-scroll > table {
    width: auto;
    min-width: 100%;
    margin-bottom: 0;
}

/* The first column is the row's label; without it a scrolled row is a set of
   numbers with nothing to attach them to. Applied only where there is enough
   width to be worth it — a table whose header row has a fourth cell. */
@media (pointer: coarse), (max-width: 767px) {
    .tat-wrapper .table-scroll > table:has(tr > :nth-child(4)) :is(th, td):first-child {
        position: sticky;
        inset-inline-start: 0;
        background: var(--iti-surface, #fff);
        z-index: 1;
    }
}

/* Never below 14px (spec §10.5). The inherited `.data-table{font-size:.8rem}`
   computes to 12.8px on a 16px root, which is below the floor and was set to
   make a table fit rather than to be read. */
.tat-wrapper .data-table { font-size: max(.875rem, .8rem); }
