/* Price Watch — paper, ink, and five honest measures. All assets are self-hosted. */
:root{color-scheme:light;--paper:#f7f7f2;--surface:#fff;--ink:#172b38;--muted:#5f6c72;--line:#dce1df;--blue:#2961a8;--emerald:#28735b;--caution:#81561c;--radius:12px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}
*,*::before,*::after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:20px}body{margin:0;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:4px}a:hover{color:var(--blue)}button,select{font:inherit;color:inherit}button,summary,select{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}button:focus-visible,a:focus-visible,select:focus-visible,summary:focus-visible,[role=slider]:focus-visible{outline:3px solid #477fc3;outline-offset:4px}button,a,select,summary{-webkit-tap-highlight-color:transparent}[hidden]{display:none!important}svg{display:block}button svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.wrap{max-width:1440px;margin:0 auto;padding-inline:40px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;z-index:30;top:8px;left:8px;padding:12px 20px;background:var(--ink);color:white;transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}
.site-header{height:70px;display:flex;align-items:center;gap:26px;border-bottom:1px solid var(--line)}.wordmark{display:inline-flex;align-items:center;text-decoration:none;font-weight:750;font-size:24px;letter-spacing:-1px;white-space:nowrap;min-height:44px}.wordmark-period{color:var(--blue)}.brand-mark{width:31px;height:31px;margin-right:10px}.brand-mark rect{fill:var(--ink)}.brand-mark path{fill:none;stroke:#fff;stroke-width:2;stroke-linecap:round}.edition{font-size:10px;font-weight:650;letter-spacing:1.2px;color:var(--muted);margin-top:3px}.edition span{padding-inline:7px;color:#a1aaa9}.header-link{margin-left:auto;font-size:12px;font-weight:550;min-height:44px;display:flex;align-items:center;gap:12px;text-decoration:none}.header-link span{font-size:19px}.intro{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-block:24px 22px}.eyebrow{font-size:10px;font-weight:700;letter-spacing:1.75px;margin:0 0 8px;color:var(--muted)}h1{font-family:Georgia,"Times New Roman",serif;font-size:clamp(30px,3vw,45px);line-height:1.13;font-weight:400;letter-spacing:-1.7px;margin:0}h1 em{font-weight:400;font-style:italic;color:#6a7778}.intro-copy{font-size:13px;color:var(--muted);line-height:1.65;margin:17px 0 0;max-width:350px}.dashboard-toolbar{display:flex;align-items:center;gap:28px;border-block:1px solid var(--line);padding-block:4px;min-height:53px}.toolbar-start{display:flex;align-items:center;gap:15px}.toolbar-label,.comparison-control label{font-size:12px;color:var(--muted)}.range-controls{display:flex;gap:3px;align-items:center}.range-controls button{border:0;background:transparent;min-width:46px;min-height:44px;border-radius:6px;font-size:12px;font-weight:650}.range-controls button[aria-pressed=true]{background:var(--ink);color:white}.range-controls button:hover:not([aria-pressed=true]){background:#e9edeb}.comparison-control{display:flex;align-items:center;gap:12px}.comparison-control select{height:44px;border:0;border-radius:5px;background:transparent;font-size:12px;font-weight:600;padding:0 25px 0 7px;cursor:pointer}.download-button{margin-left:auto;border:1px solid #cfd7d5;border-radius:7px;min-height:44px;padding:0 15px;display:inline-flex;align-items:center;justify-content:center;gap:9px;background:var(--surface);font-size:12px;font-weight:600}.download-button:hover{border-color:#899a9b;background:#fafcfb}.status-strip{display:flex;justify-content:space-between;align-items:center;gap:15px;min-height:36px;font-size:11px;color:var(--muted)}.status-strip p{margin:0}.status-dot{display:inline-block;width:6px;height:6px;background:var(--emerald);border-radius:50%;margin-right:7px;vertical-align:1px}.status-strip .attention .status-dot{background:var(--caution)}.chart-help{color:#56666c}.error-banner,.warning-banner{padding:16px 20px;margin:0 0 16px;border:1px solid #dec9a6;border-radius:8px;background:#fff9ed;color:#6b4b20;font-size:13px;overflow-wrap:anywhere}.error-banner{display:flex;align-items:center;justify-content:space-between;gap:18px}.error-banner p{margin:4px 0 0}.error-banner button{flex-shrink:0;min-height:44px;border:1px solid #c4b18f;border-radius:6px;padding:0 15px;background:transparent}.warning-banner ul{margin:0;padding-left:17px}.chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:18px}.price-card{--accent:var(--blue);min-width:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 22px 0;overflow:hidden}.price-card[data-series=gasoline]{--accent:#324b60}.price-card[data-series=diesel]{--accent:#537389}.price-card[data-series=groceries]{--accent:var(--emerald)}.price-card[data-series=national_debt]{--accent:#3b5771;grid-column:1/-1}.card-heading{display:flex;align-items:baseline;justify-content:space-between;gap:14px;margin-bottom:4px}.card-heading h2{font-size:15px;letter-spacing:-.25px;margin:0;font-weight:650;display:flex;align-items:baseline;gap:9px}.series-number{font-size:10px;font-weight:500;letter-spacing:.5px;color:#5f6c72}.observed-date{font-size:10px;color:var(--muted);white-space:nowrap;display:flex;align-items:center;gap:7px}.stale-badge{font-weight:650;color:var(--caution);font-size:10px;background:#fbf2df;padding:2px 6px;border-radius:3px}.metric-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px}.metric-block{display:flex;align-items:baseline;gap:11px;min-width:0}.metric{font-size:43px;font-weight:620;line-height:1;letter-spacing:-1.9px;font-variant-numeric:tabular-nums lining-nums}.metric-unit{font-size:11px;color:var(--muted);max-width:126px;line-height:1.4}.comparison-block{text-align:right;flex-shrink:0}.comparison{font-size:13px;line-height:1.6;font-weight:650;letter-spacing:-.25px;font-variant-numeric:tabular-nums;color:var(--ink)}.comparison-period{font-size:10px;color:var(--muted)}.card-note-row{display:flex;justify-content:space-between;gap:10px;min-height:25px;align-items:center}.card-note{font-size:10px;margin:2px 0 0;color:var(--muted);line-height:1.4}.mini-stat{font-size:10px;font-weight:550;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}.chart-frame{position:relative;height:158px;margin-top:6px;touch-action:pan-y;border-radius:3px;cursor:crosshair}.chart-frame:focus-visible{outline-offset:2px}.chart-svg{width:100%;height:100%;overflow:visible}.chart-svg text{font-family:inherit;font-size:10px;fill:#6d7c83;font-variant-numeric:tabular-nums}.chart-grid-line{stroke:#e8ecea;stroke-width:1;shape-rendering:crispEdges}.chart-zero-line{stroke:#c3cdcb}.chart-line{fill:none;stroke:var(--accent);stroke-width:2.3;stroke-linejoin:round;stroke-linecap:round}.chart-fill{fill:var(--accent);opacity:.045}.chart-presenter-democrat{fill:#2f6fdb;opacity:.22}.chart-presenter-republican{fill:#c23b3b;opacity:.22}.chart-presenter-vacant{fill:#81561c;opacity:.12}.chart-presenter-photo{pointer-events:none}.chart-endpoint{fill:var(--accent);stroke:white;stroke-width:2}.chart-cursor{stroke:var(--accent);stroke-width:1;stroke-dasharray:3 3;opacity:.5}.chart-selected-dot{fill:var(--accent);stroke:white;stroke-width:2}.chart-tooltip{position:absolute;z-index:5;pointer-events:none;top:3px;width:min(200px,calc(100% - 12px));background:var(--ink);color:#fff;border-radius:7px;padding:11px 13px;box-shadow:0 4px 15px #172b3820;font-size:11px;line-height:1.5}.tooltip-date{font-size:10px;color:#d7e4ea}.tooltip-value{font-size:20px;letter-spacing:-.5px;font-weight:650;font-variant-numeric:tabular-nums}.tooltip-extra{margin-top:3px;font-size:10px;color:#dce8ec}.view-modes{display:flex;gap:3px;align-items:center;margin-top:8px;border-bottom:1px solid #edf0ef}.view-modes button{border:0;background:transparent;border-bottom:2px solid transparent;min-height:44px;padding:0 12px;font-size:10px;color:var(--muted);font-weight:550}.view-modes button:first-child{padding-left:0;padding-right:12px}.view-modes button[aria-pressed=true]{border-bottom-color:var(--accent);color:var(--accent);font-weight:650}.view-modes button:hover{color:var(--ink)}.price-card[data-series=groceries] .chart-frame{height:108px;margin-top:4px}.price-card[data-series=national_debt] .chart-frame{height:168px}.price-card[data-series=national_debt] .metric-unit{max-width:none}.price-card[data-series=national_debt] .card-note{font-size:11px}.card-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:40px;border-top:1px solid #e9edeb;font-size:10px;color:var(--muted)}.source-caption{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:65%}.source-caption a{text-decoration:none}.card-details{margin:0 -22px;border-top:1px solid #e9edeb;font-size:12px}.card-details>summary{min-height:44px;display:flex;align-items:center;justify-content:space-between;padding:0 22px;color:var(--muted);font-size:10px;list-style:none;cursor:pointer}.card-details>summary::-webkit-details-marker{display:none}.details-label{display:flex;align-items:center;gap:9px;font-size:10px;white-space:nowrap}.details-plus{display:inline-block;font-size:16px;line-height:1;font-weight:400}.card-details[open] .details-plus{transform:rotate(45deg)}.detail-body{padding:2px 22px 18px;line-height:1.7;color:var(--muted);border-top:1px solid #edf0ef;overflow-wrap:anywhere}.detail-body h3{color:var(--ink);font-size:12px;margin:13px 0 4px}.detail-body p{margin:7px 0}.source-link{display:inline-flex;min-height:44px;align-items:center;gap:8px;font-weight:600;color:var(--blue)}.comparison-detail{font-variant-numeric:tabular-nums}.observation-table{margin-top:12px}.observation-table>summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-weight:600;color:var(--ink)}.table-scroll{max-height:280px;overflow:auto;border:1px solid var(--line);border-radius:5px;margin-top:8px}table{border-collapse:collapse;width:100%;font-size:11px;text-align:left;font-variant-numeric:tabular-nums}caption{text-align:left;padding:9px 12px;font-size:10px}th,td{padding:7px 12px;border-bottom:1px solid #e9edeb;white-space:nowrap}th{background:#f4f6f4;position:sticky;top:0;color:var(--ink);font-weight:600}td:not(:first-child),th:not(:first-child){text-align:right}.series-error{min-height:238px;display:flex;flex-direction:column;justify-content:center;color:var(--muted);font-size:13px;gap:8px}.series-error strong{font-weight:550;font-size:15px;color:var(--ink)}.series-error p{margin:0}.series-error .unavailable-mark{font-size:34px;font-weight:350;color:#9ba8ac}.coverage-note{font-size:10px;color:var(--caution);margin:3px 0 6px}.loading-panel{grid-column:1/-1;min-height:300px;display:flex;align-items:center;justify-content:center;gap:12px;color:var(--muted);font-size:13px}.loading-rule{width:24px;height:3px;background:var(--blue);animation:breathe 1.2s infinite alternate}@keyframes breathe{to{opacity:.25}}.reading-note{display:grid;grid-template-columns:.7fr 1.4fr 1.8fr;gap:35px;align-items:start;padding:32px 2px;margin-top:14px;border-bottom:1px solid var(--line)}.reading-note .eyebrow{margin-top:5px}.reading-note h2{font-family:Georgia,"Times New Roman",serif;font-size:24px;font-weight:400;line-height:1.25;letter-spacing:-.6px;margin:0}.reading-note>p:last-child{font-size:12px;color:var(--muted);margin:0;line-height:1.7;max-width:490px}.methodology>details>summary{min-height:62px;display:flex;align-items:center;justify-content:space-between;font-size:12px;cursor:pointer;list-style:none}.methodology>details>summary::-webkit-details-marker{display:none}.methodology>details>summary span{font-size:21px;color:var(--muted);font-weight:300}.methodology>details[open]>summary span{transform:rotate(45deg)}.methodology-body{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;padding:5px 0 28px}.methodology h3{font-size:13px;margin:0 0 10px}.methodology p,.methodology li{font-size:12px;color:var(--muted);line-height:1.75;margin:0 0 10px}.methodology ul{margin:0;padding-left:17px}.site-footer{display:flex;justify-content:space-between;gap:24px;align-items:center;border-top:1px solid var(--line);min-height:83px;font-size:10px;color:var(--muted)}.site-footer p{margin:0}.site-footer strong{color:var(--ink);font-size:12px;letter-spacing:-.3px;margin-right:10px}.site-footer>div{display:flex;gap:22px;align-items:center;flex-wrap:wrap}.site-footer a{display:inline-flex;align-items:center;gap:8px;min-height:44px;text-decoration:none}.not-found{min-height:70vh;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;max-width:720px}.not-found h1{font-size:56px}.not-found p{color:var(--muted);max-width:450px}.not-found>a{display:inline-flex;align-items:center;min-height:44px;font-weight:600}
@media(min-width:1500px){.wrap{padding-inline:48px}.chart-frame{height:168px}.price-card[data-series=groceries] .chart-frame{height:118px}}
@media(max-width:1100px){.wrap{padding-inline:28px}.edition{display:none}.intro-copy{max-width:265px;font-size:12px}.intro{gap:18px}.metric{font-size:38px}.metric-block{gap:8px}.metric-unit{font-size:10px;max-width:96px}.price-card{padding-inline:18px}.card-details{margin-inline:-18px}.card-details>summary{padding-inline:18px}.detail-body{padding-inline:18px}.card-note-row{align-items:flex-start;min-height:30px}.card-note{font-size:9px}.mini-stat{font-size:9px}.chart-frame{height:164px}.price-card[data-series=groceries] .chart-frame{height:112px}.comparison{font-size:12px}.observed-date{font-size:9px}.reading-note{grid-template-columns:1fr 1.5fr;gap:15px 30px}.reading-note .eyebrow{grid-column:1/-1}.methodology-body{grid-template-columns:1fr 1fr}.methodology-body>div:last-child{grid-column:1/-1}}
@media(max-width:800px){.wrap{padding-inline:20px}.site-header{height:72px}.wordmark{font-size:22px}.intro{align-items:flex-start;flex-direction:column;gap:0;padding-block:25px 22px}h1{font-size:38px}.intro-copy{max-width:none;margin-top:12px}.desktop-break{display:none}.dashboard-toolbar{gap:15px}.comparison-control{gap:5px}.toolbar-label{display:none}.price-card{padding-inline:15px;padding-top:16px}.card-details{margin-inline:-15px}.card-details>summary{padding-inline:15px}.detail-body{padding-inline:15px}.card-heading h2{font-size:13px;gap:6px}.series-number{font-size:9px}.card-heading{gap:6px;align-items:center}.observed-date{font-size:9px}.observed-frequency{display:none}.metric{font-size:33px;letter-spacing:-1.5px}.metric-block{gap:6px}.metric-unit{font-size:9px;max-width:70px}.comparison{font-size:11px}.comparison-period{font-size:9px}.metric-row{gap:6px}.chart-grid{gap:12px}.card-note-row{min-height:33px}.mini-stat{display:none}.view-modes button{padding-inline:8px;font-size:9px}.view-modes button:first-child{padding-right:8px}.chart-frame{height:157px}.price-card[data-series=groceries] .chart-frame{height:105px}.card-footer{font-size:9px;min-height:37px}.source-caption{max-width:57%}.chart-help{font-size:10px}.status-strip{font-size:10px;gap:10px}.price-card[data-series=national_debt] .metric{font-size:40px}}
@media(max-width:600px){.wrap{padding-inline:16px}.site-header{height:66px;gap:15px}.brand-mark{width:27px;height:27px;margin-right:8px}.wordmark{font-size:21px}.header-link{font-size:10px;gap:5px}.header-link span{font-size:16px}.intro{padding-block:26px 21px}h1{font-size:35px;letter-spacing:-1.1px;max-width:360px}h1 em{display:block;margin-top:3px}.eyebrow{font-size:9px;letter-spacing:1.6px;margin-bottom:9px}.intro-copy{font-size:12px;line-height:1.6;max-width:310px;margin-top:13px}.dashboard-toolbar{display:grid;grid-template-columns:1fr auto;gap:5px 10px;padding-block:7px}.toolbar-start{gap:7px}.toolbar-label{display:block;font-size:11px}.range-controls button{min-width:39px;font-size:11px}.comparison-control{grid-row:2;grid-column:1/-1;justify-content:space-between;border-top:1px solid #e3e7e3;gap:12px;padding-top:3px}.comparison-control label{font-size:11px}.comparison-control select{font-size:11px;min-width:143px;padding-right:7px;text-align:right}.download-button{grid-column:2;grid-row:1;min-height:44px;padding-inline:10px;font-size:10px;gap:7px}.download-button svg{width:16px;height:16px}.status-strip{min-height:42px}.chart-help{display:none}.chart-grid{grid-template-columns:1fr;gap:15px}.price-card{padding:18px 18px 0;border-radius:10px}.card-heading h2{font-size:15px;gap:9px}.series-number{font-size:10px}.card-heading{margin-bottom:10px}.observed-date{font-size:10px}.observed-frequency{display:inline}.metric{font-size:43px;letter-spacing:-1.8px}.metric-row{gap:10px;min-height:57px}.metric-block{gap:10px}.metric-unit{font-size:10px;max-width:106px}.comparison{font-size:12px}.comparison-period{font-size:9px}.card-note-row{min-height:27px;align-items:center}.card-note{font-size:10px;max-width:100%}.chart-frame{height:175px;margin-top:9px}.view-modes{margin-top:8px}.view-modes button{font-size:10px;padding-inline:13px}.view-modes button:first-child{padding-right:13px}.price-card[data-series=groceries] .chart-frame{height:152px;margin-top:5px}.price-card[data-series=national_debt]{grid-column:auto}.price-card[data-series=national_debt] .chart-frame{height:175px}.price-card[data-series=national_debt] .metric{font-size:43px}.price-card[data-series=national_debt] .metric-unit{max-width:75px}.price-card[data-series=national_debt] .card-note{font-size:10px}.card-footer{min-height:39px;font-size:10px}.source-caption{max-width:62%}.card-details{margin-inline:-18px}.card-details>summary{padding-inline:18px;min-height:44px;font-size:10px}.detail-body{padding-inline:18px}.reading-note{display:block;padding-block:28px; margin-top:2px}.reading-note .eyebrow{margin-bottom:12px}.reading-note h2{font-size:27px;max-width:300px;margin-bottom:13px}.reading-note>p:last-child{font-size:12px;line-height:1.75;max-width:340px}.methodology>details>summary{font-size:11px;min-height:62px;gap:20px}.methodology-body{display:block;padding-bottom:18px}.methodology-body>div{margin-top:15px}.methodology p,.methodology li{font-size:12px}.site-footer{align-items:flex-start;flex-direction:column;gap:8px;padding-block:20px 22px;min-height:0}.site-footer p{font-size:10px}.site-footer strong{font-size:12px;margin-right:8px}.site-footer>div{align-items:flex-start;justify-content:space-between;width:100%;gap:2px;font-size:9px}.site-footer>div>span{max-width:195px;padding-top:13px}.error-banner{align-items:flex-start;flex-direction:column;padding:14px;font-size:12px;gap:12px}.warning-banner{font-size:11px;padding:12px}.not-found h1{font-size:42px}}
@media(max-width:359px){.wrap{padding-inline:12px}.site-header{gap:10px}.wordmark{font-size:19px}.header-link{max-width:100px;line-height:1.4;font-size:9px}.brand-mark{width:25px;height:25px;margin-right:7px}h1{font-size:33px}.toolbar-start{gap:3px}.toolbar-label{font-size:10px}.range-controls{gap:1px}.range-controls button{min-width:33px;font-size:10px}.download-button{font-size:9px;padding-inline:8px;gap:5px}.download-button svg{width:14px}.price-card{padding-inline:14px}.card-heading h2{font-size:14px;gap:7px}.observed-date{font-size:9px}.observed-frequency{display:none}.metric,.price-card[data-series=national_debt] .metric{font-size:37px;letter-spacing:-1.6px}.metric-unit{font-size:9px;max-width:73px}.metric-block{gap:7px}.comparison{font-size:11px}.comparison-period{font-size:9px}.card-note{font-size:9px}.chart-frame{height:166px}.price-card[data-series=groceries] .chart-frame{height:145px}.view-modes button{font-size:9px;padding-inline:11px}.card-details{margin-inline:-14px}.card-details>summary{padding-inline:14px}.detail-body{padding-inline:14px}.card-footer{font-size:9px}.source-caption{max-width:57%}.site-footer>div>span{max-width:170px}.reading-note h2{font-size:25px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}
@media print{body{background:white}.site-header{height:65px}.dashboard-toolbar,.chart-help,.card-details,.methodology,.site-footer>div,.view-modes{display:none}.wrap{padding-inline:0}.chart-grid{gap:15px}.price-card{break-inside:avoid}.intro{padding-block:20px}.reading-note{break-inside:avoid}.chart-tooltip{display:none!important}.chart-frame{height:180px!important}}
