:root {
  --navy: #062a57;
  --navy-deep: #031f43;
  --cyan: #16bfd3;
  --ink: #0b2649;
  --muted: #738096;
  --line: #dfe5eb;
  --page: #f7f5f1;
  --shadow: 0 9px 24px rgba(23, 45, 72, 0.075), 0 2px 5px rgba(23, 45, 72, 0.045);
}

* { box-sizing: border-box; }
html { background: var(--page); }
body { margin: 0; background: radial-gradient(circle at 55% 15%, #fff 0, #f9f7f3 46%, #f3f1ec 100%); color: var(--ink); font-family: Arial, Helvetica, sans-serif; }
button, select { font: inherit; }
button { cursor: pointer; }
[hidden], .is-hidden { display: none !important; }
.brand-logo { width: 92px; height: 60px; object-fit: contain; display: block; flex: 0 0 auto; }
.loading-overlay { position: fixed; inset: 0; z-index: 100; display: grid; place-items: center; background: rgba(247,245,241,.75); backdrop-filter: blur(3px); }
.loading-box { display: flex; align-items: center; gap: 11px; padding: 14px 19px; border: 1px solid var(--line); border-radius: 13px; background: #fff; box-shadow: var(--shadow); color: var(--navy); font-size: 12px; font-weight: 700; }
.loading-ring.small { width: 22px; height: 22px; }
.tab-panel { max-width: 1480px; margin: 0 auto; }
.hospital-icon { width: 62px; height: 62px; fill: none; stroke: #e5fdff; stroke-width: 2.15; stroke-linecap: round; stroke-linejoin: round; }
.topbar svg, .tabs svg, .export-button svg, .header-refresh-button svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.filter-label { display: grid; gap: 4px; }
.updated-at { margin-left: auto; padding: 0 8px; align-self: center; font-size: 9px; color: #7c8998; white-space: nowrap; }

.app-shell { min-height: 100vh; padding: 14px 24px 18px; }
.topbar { max-width: 1480px; min-height: 82px; margin: 0 auto; padding: 10px 15px 10px 18px; display: flex; align-items: center; justify-content: space-between; gap: 22px; border: 1px solid rgba(14, 43, 75, .08); border-radius: 14px; background: rgba(255,255,255,.95); box-shadow: var(--shadow); }
.header-brand { min-width: 0; display: flex; align-items: center; gap: 18px; }
.header-divider { width: 1px; height: 46px; flex: 0 0 auto; background: linear-gradient(transparent, #d8e0e8 18%, #d8e0e8 82%, transparent); }
.header-title { min-width: 0; display: grid; gap: 2px; }
.header-title > span { color: #0b8796; font-size: 8px; font-weight: 800; letter-spacing: .13em; }
.header-title h1 { margin: 0; color: var(--ink); font-size: clamp(18px, 1.65vw, 25px); line-height: 1.05; letter-spacing: -.035em; }
.header-title p { margin: 2px 0 0; color: var(--muted); font-size: 10px; }
.brand { display: flex; align-items: center; gap: 9px; padding-right: 22px; border-right: 1px solid #e1e6eb; }
.brand > span:last-child { display: grid; line-height: 1.05; }
.brand strong { font-size: 10px; letter-spacing: .01em; color: #315377; }
.brand small { margin-top: 4px; font-size: 7px; color: #2e91b2; }
.brand-symbol { position: relative; width: 29px; height: 30px; display: block; }
.brand-symbol i, .brand-symbol b { position: absolute; display: block; width: 7px; height: 28px; border-radius: 50%; transform: rotate(34deg); }
.brand-symbol i { left: 8px; top: -1px; background: #0098ac; }
.brand-symbol b { left: 14px; top: 7px; height: 23px; background: #e21947; transform: rotate(-50deg); }
.commission-title { flex: 1; font-size: 12px; color: #3e4d61; }
.topbar-actions { display: flex; align-items: center; justify-content: flex-end; gap: 9px; flex: 0 0 auto; }
.icon-button { width: 35px; height: 35px; display: grid; place-items: center; border: 0; background: transparent; color: #233b57; border-radius: 8px; }
.icon-button:hover { background: #eef4f7; }
.header-refresh-button, .export-button { height: 40px; padding: 0 15px; display: flex; align-items: center; justify-content: center; gap: 8px; border-radius: 8px; font-size: 10px; font-weight: 800; transition: transform .18s ease, box-shadow .18s ease, background .18s ease; }
.header-refresh-button { border: 1px solid #bfe5e9; background: #edf9fa; color: #087d89; }
.header-refresh-button:hover { background: #dff5f7; transform: translateY(-1px); }
.header-refresh-button:disabled { opacity: .55; cursor: wait; }
.export-button { border: 0; background: var(--navy); color: #fff; box-shadow: 0 6px 12px rgba(6,42,87,.18); }
.export-button:hover { background: #0a376c; transform: translateY(-1px); box-shadow: 0 8px 16px rgba(6,42,87,.2); }
.avatar { width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; background: linear-gradient(135deg,#14b6c5,#092b55); color: #fff; font-size: 11px; font-weight: 800; }

.page-heading { max-width: 1480px; margin: 27px auto 10px; display: flex; justify-content: space-between; align-items: flex-end; gap: 20px; }
.eyebrow { display: flex !important; align-items: center; gap: 6px; margin-bottom: 6px !important; font-size: 9px !important; font-weight: 800; letter-spacing: .13em; color: #118b9b !important; }
.page-heading h1 { margin: 0; font-size: clamp(26px, 2.5vw, 40px); letter-spacing: -.04em; line-height: 1.03; }
.page-heading p { margin: 7px 0 0; font-size: 12px; color: var(--muted); }
.source-pill { display: flex; align-items: center; gap: 8px; padding: 8px 11px; border-radius: 99px; font-size: 9px; font-weight: 700; background: #fff; border: 1px solid var(--line); box-shadow: 0 4px 12px rgba(20,42,68,.05); white-space: nowrap; }
.source-pill > span { width: 7px; height: 7px; border-radius: 50%; background: #e19a3e; box-shadow: 0 0 0 4px rgba(225,154,62,.12); }
.source-pill.live > span { background: #1ba892; box-shadow: 0 0 0 4px rgba(27,168,146,.12); }

.tabs { max-width: 1480px; margin: 10px auto; display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 8px; }
.tabs button { height: 46px; min-width: 0; padding: 0 18px; display: flex; align-items: center; justify-content: center; gap: 9px; border: 1px solid #d9e1e8; border-radius: 9px; background: rgba(255,255,255,.86); color: #536073; font-size: 11px; font-weight: 800; transition: .2s ease; }
.tabs button svg { width: 19px; height: 19px; }
.tabs button:hover { border-color: #99b8c6; transform: translateY(-1px); }
.tabs button.active { background: var(--navy); border-color: var(--navy); color: #fff; box-shadow: 0 5px 12px rgba(4,40,83,.16); }

.filter-strip { max-width: 1480px; margin: 0 auto 10px; padding: 9px 12px; display: flex; align-items: flex-end; gap: 9px; border: 1px solid rgba(24,56,88,.08); background: rgba(255,255,255,.76); border-radius: 10px; }
.filter-strip label { display: grid; gap: 4px; min-width: 150px; }
.filter-strip label:first-child { min-width: 230px; }
.filter-strip label > span { font-size: 9px; font-weight: 700; color: #7a8797; }
.filter-strip select { height: 35px; padding: 0 32px 0 10px; border: 1px solid #dbe3e9; border-radius: 7px; background: #fff; color: #233b57; font-size: 11px; outline: none; }
.filter-strip select:focus { border-color: #19aaba; box-shadow: 0 0 0 3px rgba(25,170,186,.12); }
.clear-button, .refresh-button { height: 35px; padding: 0 12px; display: flex; align-items: center; gap: 7px; border-radius: 7px; font-size: 10px; font-weight: 700; }
.clear-button { border: 1px solid #dbe3e9; background: #fff; color: #526173; }
.refresh-button { border: 0; background: #e8f7f8; color: #087a87; }
.refresh-button:disabled { opacity: .55; }
.error-banner { max-width: 1480px; margin: 0 auto 12px; padding: 11px 14px; display: flex; align-items: center; gap: 10px; background: #fff4e8; border: 1px solid #f2cfaa; color: #9d5314; border-radius: 8px; font-size: 11px; }

.summary-grid { max-width: 1480px; margin: 0 auto; display: grid; grid-template-columns: repeat(24, minmax(0, 1fr)); grid-template-rows: minmax(272px, auto) minmax(260px, auto); gap: 12px; }
.hero-card { grid-column: span 8; }
.trend-card { grid-column: span 11; }
.filter-summary { grid-column: span 5; }
.demographic-card { grid-column: span 6; }
.service-card { grid-column: span 4; }
.card, .service-card, .hero-card { position: relative; overflow: hidden; border-radius: 14px; }
.card { border: 1px solid rgba(19,49,79,.11); background: rgba(255,255,255,.94); box-shadow: var(--shadow); }
.navy-card { padding: 22px 22px 17px; background: radial-gradient(circle at 88% 18%, rgba(16,99,143,.32), transparent 38%), linear-gradient(145deg,#082f61,#031d3f); color: #fff; box-shadow: 0 12px 27px rgba(4,38,79,.17); }
.navy-card > .card-kicker { position: relative; z-index: 2; }
.card-kicker { display: block; font-size: 10px; font-weight: 800; letter-spacing: .045em; color: rgba(255,255,255,.82); }
.card-kicker.dark { color: #506175; }
.hero-content { height: calc(100% - 26px); display: grid; grid-template-columns: 1fr 155px; align-items: center; gap: 8px; }
.hero-content > div:first-child { display: grid; align-content: center; justify-items: start; z-index: 2; }
.big-number { font-size: clamp(52px,5vw,74px); line-height: .95; letter-spacing: -.06em; }
.hero-content span { margin-top: 8px; font-size: 11px; color: #c9dae9; }
.hero-content em { margin-top: 22px; padding: 7px 11px; display: flex; align-items: center; gap: 6px; border: 1px solid #08a6c2; border-radius: 8px; font-size: 10px; font-style: normal; background: rgba(0,178,206,.16); color: #dcfbff; }
.hero-content em.down { border-color: #ef7890; background: rgba(239,120,144,.15); }
.gauge-chart { width: 155px; height: 155px; position: relative; z-index: 2; transform: translateZ(0); }
.gauge-chart svg { shape-rendering: geometricPrecision; text-rendering: geometricPrecision; }
.hero-lines { position: absolute; left: 0; right: 0; bottom: 0; width: 100%; height: 44%; z-index: 0; opacity: .82; pointer-events: none; }
.hero-area { fill: url(#heroFill); }
.hero-wave { fill: none; stroke: url(#heroStroke); stroke-width: 2; vector-effect: non-scaling-stroke; }

.trend-tip { min-width: 190px; display: grid; gap: 6px; }
.trend-tip > strong { padding-bottom: 5px; border-bottom: 1px solid rgba(255,255,255,.18); font-size: 12px; }
.trend-tip small { margin-top: 3px; color: #9fd9e2; font-size: 9px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; }
.trend-tip-total, .trend-tip-row { display: flex; align-items: center; justify-content: space-between; gap: 18px; }
.trend-tip-total b { font-size: 16px; color: #25d3e3; }
.trend-tip-row b { color: #fff; }
.trend-tip p { max-width: 290px; margin: 0; color: #e8f3f9; line-height: 1.45; white-space: normal; }

.trend-card { padding: 18px 17px 10px; }
.card-header { min-height: 35px; display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.card-header h2 { margin: 4px 0 0; font-size: 15px; letter-spacing: -.015em; }
.period-chip { padding: 7px 9px; display: flex; align-items: center; gap: 6px; border-radius: 6px; background: var(--navy); color: #fff; font-size: 9px; white-space: nowrap; }
.trend-chart { height: 215px; width: 100%; }

.filter-summary { padding: 19px 17px 14px; display: flex; flex-direction: column; }
.filter-summary h2 { margin: 5px 0 17px; font-size: 15px; }
.mini-stat { padding: 10px 0; display: flex; align-items: center; gap: 9px; border-top: 1px dashed #d8dfe5; color: #0c8796; }
.mini-stat span { display: grid; gap: 3px; font-size: 9px; color: #8590a0; }
.mini-stat strong { max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; color: #263c58; }
.filter-summary > small { margin-top: auto; display: flex; justify-content: center; align-items: center; gap: 5px; font-size: 8px; color: #8792a1; }

.demographic-card { padding: 20px 22px 17px; display: flex; flex-direction: column; }
.age-highlight { margin-top: 8px; font-size: 49px; line-height: 1; letter-spacing: -.05em; }
.demographic-card > span:not(.card-kicker) { margin-top: 3px; font-size: 10px; color: #8692a2; }
.sex-list { margin-top: 16px; padding-top: 15px; display: grid; grid-template-columns: 1fr 1fr; border-top: 1px dashed #dce2e7; }
.sex-list > div { display: grid; grid-template-columns: 48px minmax(0,1fr); grid-template-rows: auto auto auto; align-items: center; column-gap: 12px; row-gap: 2px; }
.sex-list > div + div { padding-left: 18px; border-left: 1px solid #e1e6eb; }
.sex-icon { grid-row: 1 / 4; width: 46px; height: 46px; display: grid; place-items: center; border-radius: 50%; border: 2px solid currentColor; background: currentColor; }
.sex-icon svg { width: 23px; height: 23px; fill: none; stroke: #fff; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.sex-list small { font-size: 10px; font-weight: 700; color: currentColor; }
.sex-list strong { font-size: 22px; line-height: 1; }
.sex-list em { font-size: 11px; font-style: normal; font-weight: 800; }
.female { color: #e93f8e; }
.male { color: #4568b4; }

.service-card { padding: 20px; display: flex; flex-direction: column; align-items: center; justify-content: space-between; text-align: center; background: radial-gradient(circle at 82% 10%,rgba(24,200,207,.28),transparent 42%), linear-gradient(150deg,#087582,#054e5b); color: #fff; box-shadow: 0 12px 27px rgba(2,82,91,.16); }
.service-card .card-kicker { align-self: flex-start; }
.hospital-mark { width: 88px; height: 88px; display: grid; place-items: center; border: 1px solid rgba(215,251,253,.24); border-radius: 22px; background: linear-gradient(145deg,rgba(255,255,255,.13),rgba(255,255,255,.035)); box-shadow: inset 0 1px rgba(255,255,255,.12), 0 12px 28px rgba(0,43,51,.14); }
.service-card > strong { max-width: 100%; font-size: 30px; font-weight: 600; letter-spacing: -.035em; overflow-wrap: anywhere; }
.service-card > span:not(.card-kicker) { margin-top: -7px; font-size: 11px; color: #aeeaed; }
.service-card button { width: 100%; min-height: 34px; padding: 0 2px; align-self: stretch; display: flex; align-items: center; justify-content: space-between; border: 0; border-top: 1px solid rgba(225,253,255,.14); background: transparent; color: #e1fdff; font-size: 10px; font-weight: 700; }

.causes-card { grid-column: span 14; padding: 18px 17px 13px; }
.causes-card .card-header button { border: 0; background: transparent; color: #1763c0; font-size: 9px; font-weight: 700; }
.causes-card ol { margin: 11px 0 0; padding: 0; list-style: none; }
.causes-card li { min-height: 32px; padding: 3px 9px 3px 4px; display: grid; grid-template-columns: 29px minmax(240px,1.25fr) minmax(110px,.8fr) 34px; align-items: center; gap: 10px; border-bottom: 1px solid #edf0f3; font-size: 10px; }
.causes-card li.top { border: 1px solid #bcebf0; border-radius: 7px; background: #ebfafb; }
.rank { width: 23px; height: 23px; display: grid; place-items: center; border: 1px solid #b7c5d1; border-radius: 50%; color: #506074; font-size: 8px; }
.top .rank { border-color: #14bed0; color: #00899a; }
.cause-name { min-width: 0; display: flex; align-items: center; gap: 8px; }
.cause-name strong { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.causes-card li em { flex: 0 0 auto; padding: 3px 7px; border: 1px solid #9ee3e9; border-radius: 99px; color: #078d9c; background: rgba(255,255,255,.64); font-size: 7px; font-style: normal; white-space: nowrap; }
.causes-card li i { height: 4px; overflow: hidden; border-radius: 4px; background: #e0e5e9; }
.causes-card li i b { height: 100%; display: block; border-radius: inherit; background: #16bed0; }
.count { height: 20px; display: grid; place-items: center; border-radius: 5px; background: #eef2f4; font-weight: 800; }

.analysis-grid, .quality-grid { max-width: 1480px; margin: 0 auto; display: grid; gap: 13px; }
.analysis-grid { grid-template-columns: repeat(3, 1fr); }
.chart-card { padding: 18px; min-height: 345px; }
.analysis-chart { height: 278px; width: 100%; }
.cause-analysis-card { overflow: visible; background: linear-gradient(155deg, #fff 0%, #fbfdff 100%); }
.cause-analysis-header { margin-bottom: 12px; align-items: center; }
.cause-analysis-header > div { display: grid; gap: 4px; }
.cause-analysis-header > div > span { color: #0b96a5; font-size: 8px; font-weight: 800; letter-spacing: .12em; }
.cause-analysis-header h2 { margin: 0; }
.cause-total-badge { padding: 6px 9px; border: 1px solid #dce8ee; border-radius: 99px; background: #f4f8fa; color: #617387; font-size: 8px; white-space: nowrap; }
.cause-ranking { display: grid; gap: 9px; }
.cause-leader { min-height: 68px; padding: 11px 12px; display: grid; grid-template-columns: 34px minmax(0,1fr) auto; align-items: center; gap: 10px; border: 1px solid #9ee2ea; border-radius: 11px; background: linear-gradient(135deg, #eafafb 0%, #f5fcfd 56%, #eef7fb 100%); box-shadow: 0 7px 16px rgba(14,133,149,.08); }
.cause-leader-rank { width: 30px; height: 30px; display: grid; place-items: center; border-radius: 50%; background: #fff; border: 1px solid #1bbccd; color: #078b9b; font-size: 8px; font-weight: 800; box-shadow: 0 4px 10px rgba(7,139,155,.1); }
.cause-leader-copy, .cause-rank-copy { min-width: 0; display: grid; }
.cause-leader-copy { gap: 4px; }
.cause-leader-copy small { color: #0b94a3; font-size: 7px; font-weight: 800; letter-spacing: .08em; }
.cause-leader-copy strong { overflow: hidden; color: #0a3159; font-size: 11px; line-height: 1.25; white-space: nowrap; text-overflow: ellipsis; }
.cause-leader-value { min-width: 48px; padding-left: 10px; display: grid; justify-items: end; gap: 2px; border-left: 1px solid #cce9ed; }
.cause-leader-value strong { color: #073665; font-size: 23px; line-height: 1; }
.cause-leader-value span { color: #168c99; font-size: 8px; font-weight: 800; }
.cause-progress { width: 100%; height: 3px; overflow: hidden; border-radius: 5px; background: #dce9ee; }
.cause-progress i { height: 100%; display: block; border-radius: inherit; background: linear-gradient(90deg,#12b6c8,#087ca0); }
.cause-ranking-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 7px; }
.cause-rank-item { min-height: 49px; padding: 8px 9px; display: grid; grid-template-columns: 25px minmax(0,1fr) auto; align-items: center; gap: 7px; border: 1px solid #e0e7ec; border-radius: 9px; background: rgba(255,255,255,.9); transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease; }
.cause-rank-item:hover { transform: translateY(-1px); border-color: #b7dce2; box-shadow: 0 6px 13px rgba(22,55,83,.07); }
.cause-rank-number { width: 23px; height: 23px; display: grid; place-items: center; border: 1px solid #cbd6df; border-radius: 50%; color: #728194; font-size: 7px; font-weight: 800; }
.cause-rank-copy { gap: 6px; }
.cause-rank-copy strong { min-height: 20px; display: -webkit-box; overflow: hidden; color: #183653; font-size: 8px; line-height: 10px; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.cause-rank-value { min-width: 31px; display: grid; justify-items: end; gap: 2px; }
.cause-rank-value strong { color: #0c335a; font-size: 14px; line-height: 1; }
.cause-rank-value span { color: #8694a3; font-size: 7px; font-weight: 700; }
.cause-ranking-more { justify-self: center; color: #7a8a9b; font-size: 8px; }
.cause-ranking-empty { min-height: 240px; display: grid; place-content: center; justify-items: center; gap: 5px; color: #8390a0; text-align: center; }
.cause-ranking-empty strong { color: #334c66; font-size: 11px; }
.cause-ranking-empty span { font-size: 8px; }
.wide { grid-column: 1 / 4; }
.wide-chart { height: 330px; width: 100%; }
.quality-grid { grid-template-columns: minmax(0, 2fr) minmax(280px, .75fr); }
.quality-main { min-height: 520px; }
.quality-chart { height: 440px; width: 100%; }
.quality-stats { display: grid; gap: 10px; }
.quality-stats article { padding: 14px; display: flex; align-items: center; gap: 13px; }
.quality-stats article > div { display: grid; gap: 4px; }
.quality-stats small { font-size: 9px; font-weight: 700; color: #66758a; }
.quality-stats strong { font-size: 27px; }
.quality-stats div > span { font-size: 9px; color: #8490a0; }
.status-dot { width: 29px; height: 29px; flex: 0 0 auto; display: grid; place-items: center; border-radius: 50%; }
.status-dot.ok { background: #e0f5f0; color: #0d9581; }
.status-dot.attention { background: #fff0e0; color: #d47b26; }
.status-dot.na { background: #eef2f5; color: #7b8795; }

.empty-state { height: 210px; display: grid; place-content: center; justify-items: center; gap: 6px; color: #8190a2; text-align: center; }
.empty-state strong { font-size: 12px; color: #41536a; }
.empty-state span { font-size: 9px; }
.loading-screen { min-height: 100vh; display: grid; place-content: center; justify-items: center; gap: 16px; background: var(--page); color: #203d5e; }
.loading-ring { width: 38px; height: 38px; border: 3px solid #d8e8eb; border-top-color: #0f9fad; border-radius: 50%; animation: spin .8s linear infinite; }
.spin { animation: spin .8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

footer { max-width: 1480px; margin: 13px auto 0; padding-top: 10px; display: flex; justify-content: space-between; border-top: 1px solid rgba(27,54,82,.08); color: #8a95a3; font-size: 8px; }

@media (max-width: 1100px) {
  .source-pill { display: none; }
  .summary-grid { grid-template-columns: 1fr 1fr; grid-template-rows: auto; }
  .hero-card, .trend-card, .filter-summary, .demographic-card, .service-card { grid-column: auto; }
  .hero-card, .trend-card { min-height: 280px; }
  .filter-summary { min-height: 260px; }
  .causes-card { grid-column: 1 / 3; }
  .analysis-grid { grid-template-columns: 1fr 1fr; }
  .wide { grid-column: 1 / 3; }
}

@media (max-width: 720px) {
  .app-shell { padding: 8px; }
  .topbar { height: auto; min-height: 0; padding: 9px 11px; flex-wrap: wrap; gap: 8px; }
  .header-brand { width: 100%; gap: 10px; }
  .brand-logo { width: 70px; height: 48px; }
  .header-divider { height: 38px; }
  .header-title > span { font-size: 7px; }
  .header-title h1 { font-size: 17px; }
  .header-title p { display: none; }
  .topbar-actions { width: 100%; }
  .header-refresh-button, .export-button { flex: 1; height: 38px; }
  .brand { flex: 1; border: 0; }
  .export-button { padding: 0 10px; }
  .tabs { margin: 8px 0; gap: 5px; }
  .tabs button { height: 42px; padding: 0 8px; font-size: 10px; }
  .tabs button svg { width: 16px; height: 16px; }
  .filter-strip { display: grid; grid-template-columns: 1fr 1fr; }
  .filter-strip label, .filter-strip label:first-child { min-width: 0; }
  .filter-strip label:first-child { grid-column: 1 / 3; }
  .refresh-button { margin: 0; }
  .updated-at { grid-column: 1 / 3; margin: 0; padding: 3px 0; text-align: center; }
  .summary-grid, .analysis-grid, .quality-grid { grid-template-columns: 1fr; }
  .hero-card, .trend-card, .filter-summary, .demographic-card, .service-card, .causes-card, .wide { grid-column: 1; }
  .hero-content { grid-template-columns: 1fr 130px; }
  .gauge-chart { width: 130px; height: 130px; }
  .trend-card { min-height: 290px; }
  .causes-card li { grid-template-columns: 26px minmax(120px,1fr) 55px 26px; gap: 7px; }
  .causes-card li em { display: none; }
  .causes-card li i { min-width: 55px; }
  .wide-chart { height: 360px; }
  .cause-ranking-grid { grid-template-columns: 1fr; }
  .cause-leader-copy strong { white-space: normal; }
  footer { flex-direction: column; gap: 6px; }
}

@media print {
  body { background: #fff; }
  .app-shell { padding: 0; }
  .topbar, .filter-strip, .tabs, .source-pill, footer { display: none !important; }
  .summary-grid { max-width: none; grid-template-columns: 1fr 1.4fr .7fr; gap: 8px; }
  .card, .hero-card, .service-card { break-inside: avoid; box-shadow: none; }
}
