@font-face{font-family:"Public Sans";src:url("public-sans.5ed4d31c98.woff2") format("woff2");font-weight:400 700;font-style:normal;font-display:swap}
@font-face{font-family:"Source Serif 4";src:url("source-serif-4.29b5f9d2da.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
:root{color-scheme:light;--paper:#f5f3ed;--surface:#fdfcf9;--ink:#173238;--muted:#4c6569;--line:#d4ddda;--high:#a54329;--low:#176971;--rain:#2d767b;--rain-soft:#a9c8c7;--wash:#e7efeb;--highlight:#f5e4d8;--focus:#a54329;--space:8px;--radius:6px}
html[data-theme="dark"]{color-scheme:dark;--paper:#12272d;--surface:#19343b;--ink:#edf1e8;--muted:#b3c9c9;--line:#38545a;--high:#ffb39b;--low:#9bd7de;--rain:#8dd0d0;--rain-soft:#456f76;--wash:#203e43;--highlight:#453a35;--focus:#ffc5a5}
@media(prefers-color-scheme:dark){html:not([data-theme="light"]):not([data-theme="dark"]){color-scheme:dark;--paper:#12272d;--surface:#19343b;--ink:#edf1e8;--muted:#b3c9c9;--line:#38545a;--high:#ffb39b;--low:#9bd7de;--rain:#8dd0d0;--rain-soft:#456f76;--wash:#203e43;--highlight:#453a35;--focus:#ffc5a5}}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:20px}body{margin:0;background:var(--paper);color:var(--ink);font-family:"Public Sans",sans-serif;font-size:16px;line-height:1.6;font-variant-numeric:tabular-nums}button,select{font:inherit;color:inherit}button,a,select,summary{-webkit-tap-highlight-color:transparent}a{color:inherit;text-underline-offset:4px;text-decoration-thickness:1px}a:hover{text-decoration-color:var(--high)}button{cursor:pointer}button,select{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}a:focus-visible,button:focus-visible,select:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--focus);outline-offset:3px}h1,h2,h3,p{margin:0}h1,h2{font-family:"Source Serif 4",Georgia,serif;font-weight:400;letter-spacing:-.045em;line-height:1.12}h1{font-size:clamp(38px,5.5vw,64px)}h1 em{font-style:normal;color:var(--high)}h2{font-size:30px}h3{font-size:16px;font-weight:600;letter-spacing:-.02em}strong{font-weight:600}.container{width:min(1180px,100%);margin-inline:auto;padding-inline:24px}.visually-hidden{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:10;top:8px;left:12px;background:var(--surface);padding:12px 18px;transform:translateY(-160%);border:2px solid var(--focus)}.skip-link:focus{transform:translateY(0)}
.site-header{border-bottom:1px solid var(--line)}.topbar{display:grid;gap:12px;padding-block:16px}.brand{display:inline-flex;gap:10px;align-items:center;justify-self:start;text-decoration:none;min-height:44px;font-size:20px;letter-spacing:-.055em}.brand svg{width:34px;height:34px;fill:none;stroke:var(--ink);stroke-width:1.6}.brand strong{font-weight:600}.header-tools{display:flex;gap:8px;align-items:center}.header-tools select{height:44px;min-width:0;flex:1;width:150px;padding:0 10px;font-size:16px}.unit-switch{display:flex;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;flex:none}.unit-switch button{border:0;border-radius:0;background:transparent;width:44px;min-height:44px;font-size:15px}.unit-switch button[aria-pressed="true"]{background:var(--ink);color:var(--paper)}.unit-switch button:hover{box-shadow:inset 0 0 0 1px var(--muted)}.theme-toggle{width:44px;min-height:44px;display:grid;place-items:center;flex:none}.theme-toggle svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6}
.breadcrumbs{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font-size:13px;color:var(--muted);padding-block:14px 6px}.breadcrumbs a{display:inline-flex;align-items:center;min-height:44px;text-decoration:none}.breadcrumbs a:hover{text-decoration:underline}.eyebrow{text-transform:uppercase;font-size:12px;line-height:1.5;letter-spacing:.13em;font-weight:600;color:var(--muted)}.status-dot{display:inline-block;width:6px;height:6px;background:var(--low);border-radius:50%;margin-right:6px;vertical-align:middle}.period{letter-spacing:.04em;margin-left:8px;white-space:nowrap}.hero{padding-block:16px 32px;display:grid;gap:30px}.hero-copy h1{margin-block:12px 20px}.lede{font-size:17px;line-height:1.65;max-width:33.66em}.climate-not-forecast{font-size:12px;line-height:1.6;color:var(--muted);margin-top:12px;max-width:39.78em}.key-figures{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-content:start;border-block:1px solid var(--line);padding-block:18px;gap:10px}.figure{display:flex;flex-direction:column;gap:8px;min-width:0}.figure-label{font-size:12px;line-height:1.45;font-weight:600;min-height:32px;color:var(--muted)}.figure-value{font-size:clamp(24px,6.5vw,36px);font-weight:500;line-height:1.1;letter-spacing:-.065em;white-space:nowrap}.figure-high .figure-value{color:var(--high)}.figure-low .figure-value{color:var(--low)}.figure-value small{font-size:14px;letter-spacing:-.02em}.figure-note{font-size:12px;line-height:1.5;color:var(--muted);max-width:11.02em}.section-kicker{display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:12px;color:var(--muted);margin-bottom:10px}.section-kicker>span{text-transform:uppercase;letter-spacing:.1em;font-size:12px;font-weight:600}.section-kicker a{display:inline-flex;gap:8px;align-items:center;min-height:44px}.month-navigation{margin-bottom:40px}.month-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}.month-grid a{min-height:44px;display:flex;align-items:center;justify-content:center;background:var(--surface);border:1px solid var(--line);border-radius:4px;text-decoration:none;font-size:13px;transition:background .16s,color .16s}.month-grid a:hover{background:var(--wash);border-color:var(--muted)}.month-grid a.active{background:var(--ink);border-color:var(--ink);color:var(--paper);font-weight:600}
.content-grid{display:grid;gap:32px;padding-bottom:40px;border-bottom:1px solid var(--line)}.charts-panel{min-width:0}.section-heading{display:flex;gap:14px;align-items:center;justify-content:space-between;margin-bottom:22px}.section-heading h2{margin-top:4px}.data-note{font-size:12px;line-height:1.5;text-align:right;flex:none;color:var(--muted)}.chart-legend{display:flex;flex-wrap:wrap;gap:20px;font-size:12px;color:var(--muted);margin-bottom:8px}.chart-legend>span{display:flex;align-items:center;gap:8px}.chart-legend i{display:inline-block;width:18px;height:2px}.legend-high{background:var(--high)}.legend-low{background:var(--low)}.temperature-chart,.rain-chart{display:block;width:100%;height:auto;overflow:visible}.chart-grid{stroke:var(--line);stroke-width:1;vector-effect:non-scaling-stroke}.axis-label,.month-axis{fill:var(--muted);font-family:"Public Sans",sans-serif;font-size:12px}.selected-axis{fill:var(--ink);font-weight:700}.chart-line{fill:none;stroke-width:2.4;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}.line-high{stroke:var(--high)}.line-low{stroke:var(--low)}.point-high{fill:var(--high);stroke:var(--paper);stroke-width:2}.point-low{fill:var(--low);stroke:var(--paper);stroke-width:2}.selected-month-band{fill:var(--highlight)}.rain-heading{margin-top:20px;margin-bottom:10px;display:flex;align-items:baseline;justify-content:space-between;gap:12px}.rain-heading>span{font-size:12px;color:var(--muted)}.rain-bar{fill:var(--rain-soft)}.rain-bar.active-bar{fill:var(--rain)}.chart-caption{font-size:12px;line-height:1.65;color:var(--muted);margin-top:16px;max-width:47.74em}.chart-caption a{display:inline-block;min-height:44px;line-height:44px}.month-context{padding:24px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}.month-context h2{font-size:26px;max-width:7.41em;margin-top:6px;margin-bottom:20px}.neighbor-list{display:grid;gap:8px}.neighbor{display:grid;grid-template-columns:1fr auto 12px;gap:10px;align-items:center;text-decoration:none;padding:12px 10px;min-height:68px;border:1px solid transparent;border-radius:4px}.neighbor:hover{border-color:var(--line);background:var(--wash)}.neighbor.current{background:var(--wash);border-color:var(--line)}.neighbor-month{font-size:14px;font-weight:600}.neighbor small{display:block;font-size:12px;font-weight:400;color:var(--muted);margin-top:3px}.neighbor-values{font-size:16px;line-height:1.4;text-align:right}.neighbor-arrow{font-size:17px}.context-note{padding-top:20px;margin-top:20px;border-top:1px solid var(--line)}.context-note>p+p{margin-top:8px;font-size:14px;line-height:1.7}.source-stamp{display:flex;align-items:flex-start;gap:10px;margin-top:24px;padding-top:20px;border-top:1px solid var(--line)}.source-stamp svg{width:23px;height:23px;flex:none;fill:none;stroke:var(--low);stroke-width:1.5}.source-stamp p{font-size:12px;line-height:1.65;color:var(--muted)}.source-stamp strong{font-size:12px;color:var(--ink)}.source-stamp span{display:block}.marker-link{display:flex;flex-direction:column;border-bottom:1px solid var(--line);padding:12px 0;text-decoration:none;font-size:12px;color:var(--muted)}.marker-link strong{font-size:18px;color:var(--ink)}
.table-section{padding-block:40px}.table-scroll{overflow:auto;max-width:100%;border-top:1px solid var(--line)}table{border-collapse:collapse;width:100%;min-width:465px;font-size:14px;text-align:right}th,td{border-bottom:1px solid var(--line);padding:10px 12px;white-space:nowrap}th:first-child{text-align:left;padding-left:12px}thead th{font-size:12px;color:var(--muted);font-weight:500;line-height:1.45;padding-block:14px}thead small{display:block;font-size:12px}tbody th{font-weight:400}tbody a{display:flex;align-items:center;min-height:44px;text-decoration:none}tbody a:hover{text-decoration:underline}.selected-row{background:var(--highlight)}.selected-row th{font-weight:600}.table-high{color:var(--high)}.table-footnote{font-size:12px;line-height:1.65;margin-top:12px;color:var(--muted);max-width:50.18em}.methodology{border-top:1px solid var(--line);padding-block:40px;display:grid;gap:28px}.methodology h2{margin-top:8px;margin-bottom:14px}.methodology>div>p:not(.eyebrow){max-width:25.7em;color:var(--muted);font-size:15px;line-height:1.75}.text-link{display:inline-flex;align-items:center;gap:12px;min-height:44px;margin-top:10px;font-size:13px;font-weight:500}.faq-list details{border-bottom:1px solid var(--line)}.faq-list details:first-child{border-top:1px solid var(--line)}.faq-list summary{cursor:pointer;padding-block:18px;font-size:15px;font-weight:500;min-height:56px;list-style-position:outside;margin-left:18px;padding-left:6px}.faq-list summary::marker{color:var(--high)}.faq-list details>p{padding:0 0 20px 24px;font-size:14px;color:var(--muted);line-height:1.75;max-width:45.9em}.site-footer{border-top:1px solid var(--line)}.footer-brand{font-family:"Source Serif 4",Georgia,serif;font-size:19px;color:var(--ink)}.home-intro{padding-block:70px 36px;max-width:780px}.home-intro h1{margin-top:12px;margin-bottom:20px}
@media(min-width:600px){.container{padding-inline:32px}.month-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:6px}.key-figures{gap:24px}.figure-label{font-size:12px;min-height:0}.figure-note{font-size:12px}.figure-value{font-size:42px}.section-heading h2{font-size:34px}}
@media(min-width:768px){.topbar{display:flex;align-items:center;justify-content:space-between;padding-block:18px}.header-tools{gap:12px}.header-tools select{width:210px;flex:none}.hero{padding-block:20px 36px}.key-figures{max-width:650px}.content-grid{grid-template-columns:minmax(0,1fr) 290px;gap:28px}.month-context{padding:22px}.methodology{grid-template-columns:minmax(0,1fr) minmax(0,1.6fr);gap:56px}.chart-caption a{line-height:inherit;min-height:auto;padding-block:8px}.table-section{padding-block:48px}.temperature-chart{min-height:210px}.rain-chart{min-height:120px}}
@media(min-width:1040px){.hero{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:center;gap:48px}.key-figures{border:0;border-left:1px solid var(--line);padding-left:32px;padding-block:20px;gap:16px}.figure-value{font-size:35px}.figure-label{min-height:36px}.hero-copy .lede{font-size:16px}.hero-copy h1{margin-bottom:18px}.content-grid{grid-template-columns:minmax(0,1fr) 310px;gap:38px}.month-context{padding:24px}.month-context h2{font-size:28px}.container{padding-inline:40px}.month-navigation{margin-bottom:44px}}
html:not(.js) .header-tools{display:none}
h1[tabindex="-1"]:focus{outline:none}.mobile-only{display:none}.chart-unit{margin-left:auto;font-weight:600}.chart-legend{font-size:12px}.context-note>p+p,.faq-list details>p,.methodology>div>p:not(.eyebrow){font-size:16px}table{font-size:16px}.table-low{color:var(--low)}
@media(max-width:599px){.mobile-only{display:block}.desktop-only,.temperature-low-column{display:none}table{min-width:0}th,td{padding-inline:7px}th:first-child{padding-left:7px}thead th{font-size:12px}.axis-label,.month-axis{font-size:26px}.figure-label{font-size:12px}.figure-note{font-size:12px}.data-note{max-width:6.73em}.section-heading{align-items:flex-start}}
@media(min-width:600px) and (max-width:1039px){.content-grid{grid-template-columns:minmax(0,1fr)}.month-context{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:32px}.month-context>.eyebrow,.month-context>h2{grid-column:1/-1}.month-context .source-stamp{grid-column:1/-1}.neighbor-list{grid-column:1}.context-note{margin-top:0}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}
@media print{.header-tools,.month-navigation,.site-footer{display:none}body{background:#fff;color:#111}.container{max-width:none;padding:0}.content-grid{display:block}.month-context{break-inside:avoid}.table-scroll{overflow:visible}a{text-decoration:none}.methodology{display:block}.faq-list details>p{display:block}}

/* ClimaNote site layer: components added on top of atlas.css (the two files are joined at build time). */
.brand-mark{flex:none;width:34px;height:34px;stroke:none}
.bm-tile{fill:var(--ink)}.bm-fold{fill:var(--rain)}.bm-sun{fill:#f2a65a}.bm-line{fill:var(--paper)}.bm-line2{fill:var(--paper);opacity:.55}
h1.long{font-size:clamp(30px,4.4vw,52px)}
.city-search{position:relative;flex:1;min-width:0}
.city-search input{width:100%;height:44px;padding:0 14px;font:inherit;font-size:16px;color:inherit;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}
.city-search input::placeholder{color:var(--muted)}
.search-results{position:absolute;z-index:30;left:0;top:100%;margin:4px 0 0;padding:4px;list-style:none;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 12px 30px rgba(23,50,56,.18);width:max(100%,min(340px,88vw))}
.search-results[hidden]{display:none}
.search-results a{display:flex;align-items:baseline;justify-content:space-between;gap:12px;min-height:44px;padding:8px 12px;text-decoration:none;border-radius:4px}
.search-results small{color:var(--muted);font-size:12px;white-space:nowrap}
.search-results a:hover,.search-results [aria-selected="true"] a{background:var(--wash)}
.home-search{max-width:540px;margin-top:22px}
.home-search input{height:54px;font-size:17px;padding-inline:18px}
@media(min-width:768px){.header-tools .city-search{flex:none;width:250px}}
.breadcrumbs{padding-block:8px 0}
.breadcrumbs ol{display:flex;flex-wrap:wrap;align-items:center;gap:0 10px;list-style:none;margin:0;padding:0}
.breadcrumbs li{display:flex;align-items:center;gap:10px;min-height:44px}
.breadcrumbs [aria-current]{color:var(--ink);font-weight:500}
.breadcrumbs li+li::before{content:"/";color:var(--muted)}
.home-intro,.page-intro{padding-block:28px 24px}
.home-intro h1,.page-intro h1{margin-block:12px 18px}
.page-intro .lede+.lede{margin-top:12px}
.glance{max-width:45.29em;padding-bottom:30px;display:grid;gap:14px}
.glance p{font-size:17px;line-height:1.7}
.glance a{font-weight:500}
.home-section{padding-block:34px;border-top:1px solid var(--line)}
.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.card{display:grid;align-content:start;gap:4px;padding:16px 18px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);text-decoration:none}
.card:hover{border-color:var(--muted)}
.card strong{font-size:18px;font-weight:600;letter-spacing:-.02em;line-height:1.3}
.card-meta{font-size:13px;line-height:1.5;color:var(--muted)}
.pill-links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;list-style:none;margin:0;padding:0}
@media(min-width:560px){.pill-links{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(min-width:900px){.pill-links{grid-template-columns:repeat(6,minmax(0,1fr))}}
.pill-links a,.related a{display:inline-flex;align-items:center;min-height:44px;padding:0 16px;border:1px solid var(--line);border-radius:999px;background:var(--surface);text-decoration:none;font-size:15px}
.pill-links a:hover,.related a:hover{background:var(--wash)}
.pill-links a{width:100%;justify-content:center}
.related{padding-block:8px 36px;display:flex;flex-wrap:wrap;gap:8px}
.link-columns{columns:3 230px;column-gap:32px;list-style:none;margin:0;padding:0}
.link-columns li{break-inside:avoid;padding-block:2px;line-height:1.5}
.link-columns a{display:inline-block;padding-block:4px}
.muted{color:var(--muted);font-size:13px}
.index-group{padding-block:26px;border-top:1px solid var(--line)}
.index-group h2{font-size:26px;margin-bottom:12px}
.region-title{margin:28px 0 8px;font-family:"Source Serif 4",Georgia,serif;font-size:20px;font-weight:400;letter-spacing:-.02em}
.nearby{padding-block:36px;border-top:1px solid var(--line)}
.nearby-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;list-style:none;margin:0;padding:0}
.nearby-grid a{display:grid;align-content:start;gap:2px;height:100%;padding:14px 16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);text-decoration:none}
.nearby-grid a:hover{border-color:var(--muted)}
.nearby-grid strong{font-weight:600;line-height:1.35}
.nearby-grid span{font-size:13px;line-height:1.5;color:var(--muted)}
.rank-grid{display:grid;gap:36px;padding-block:24px 8px}
@media(min-width:1040px){.rank-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:44px 48px}}
.rank-grid h2{font-size:26px;margin:4px 0 12px}
.rank-grid table{min-width:0}
.row-sub{display:block;font-size:12px;color:var(--muted);font-weight:400;line-height:1.3;margin-top:-6px;padding-bottom:6px}
.prose{max-width:45.29em;padding-block:4px 40px}
.prose h2{font-size:28px;margin:38px 0 12px}
.prose p,.prose li{font-size:16px;line-height:1.75}
.prose p{margin:0 0 14px}
.prose ul{padding-left:22px;margin:0 0 14px}
.prose li{margin-bottom:8px}
.prose .cite{font-size:14px;color:var(--muted);overflow-wrap:anywhere}
.site-footer{border-top:1px solid var(--line);margin-top:48px;padding-block:34px 44px;color:var(--muted);font-size:14px;line-height:1.7}
.footer-grid{display:grid;gap:28px}
.footer-brand{display:block;font-weight:400;color:var(--ink);font-size:20px;letter-spacing:-.04em;margin-bottom:6px}
.footer-title{font-family:"Public Sans",sans-serif;font-size:12px;text-transform:uppercase;letter-spacing:.12em;font-weight:600;color:var(--muted);margin:0 0 8px}
.footer-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px}
.footer-list.single{grid-template-columns:1fr}
.footer-list a{display:inline-flex;align-items:center;min-height:36px;color:var(--ink);text-decoration:none}
.footer-list a:hover{text-decoration:underline}
.footer-legal{margin:26px 0 0;padding-top:18px;border-top:1px solid var(--line);font-size:12px;line-height:1.7;max-width:67.32em}
@media(min-width:768px){.footer-grid{grid-template-columns:1.1fr 1.5fr .8fr;gap:40px}.footer-list{grid-template-columns:repeat(3,minmax(0,1fr))}.footer-list.single{grid-template-columns:1fr}}
@media print{.city-search,.glance+.month-navigation,.footer-grid{display:none}}

/* ---- UX layer (audit E): one-row phone header, first-screen answer, 2x2 figures, month grid with values, sticky mobile table head, forced colours ---- */
.topbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 6px;padding-block:12px}
.brand{font-size:19px}
.header-tools{gap:6px;margin-left:auto}
.topbar .city-search{flex:1 1 100%;order:3}
.search-toggle{display:none;width:44px;min-height:44px;place-items:center;flex:none;padding:0}
.search-toggle svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round}
.search-toggle[aria-expanded="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
html.js .search-toggle{display:grid}
html.js .topbar .city-search:not(.open){display:none}
html:not(.js) .topbar .city-search{display:none}
@media(min-width:768px){
  .topbar{flex-wrap:nowrap;padding-block:16px}
  .header-tools{gap:10px;margin-left:0}
  .topbar .city-search{flex:0 1 260px;order:0;margin-left:auto}
  html.js .search-toggle{display:none}
  html.js .topbar .city-search:not(.open){display:block}
}
.breadcrumbs{padding-block:2px 0}
.breadcrumbs li{min-height:36px}
.hero{padding-block:6px 18px;gap:18px}
.hero-copy h1{margin-block:8px 12px}
.verdict{font-size:18px;line-height:1.5;max-width:36.72em}
.hero-copy .lede+.lede{margin-top:10px}
.pleasant-badge{display:inline-flex;align-items:center;gap:6px;margin:6px 6px 0 0;padding:3px 11px;min-height:30px;border:1px solid var(--rain);border-radius:999px;font-size:13px;font-weight:500;color:var(--rain);text-decoration:none;background:var(--surface);white-space:nowrap}
.pleasant-badge:hover{background:var(--wash)}
.key-figures{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 12px;padding-block:14px;border-block:1px solid var(--line)}
.figure{gap:3px}
.figure-label{min-height:0;font-size:12px;letter-spacing:.01em}
.figure-value{font-size:clamp(28px,8vw,36px);letter-spacing:-.05em}
.figure-note{font-size:12px;max-width:none}
.figure-day .figure-value{color:var(--ink)}
.month-navigation{margin-block:14px 26px}
.section-kicker{margin-bottom:6px}
.month-grid{gap:5px}
.month-grid a{flex-direction:column;gap:0;min-height:52px;padding:4px 1px;line-height:1.2;border-radius:6px}
.month-short{font-size:12px;letter-spacing:.02em;color:var(--muted)}
.month-value{font-size:15px;font-weight:600;font-variant-numeric:tabular-nums}
.month-value::after{content:"°"}
.month-grid a.active .month-short{color:inherit;opacity:.85}
.glance{padding-bottom:24px}
.line-low{stroke-dasharray:7 5}
.legend-low{background:repeating-linear-gradient(90deg,var(--low) 0 5px,transparent 5px 8px)}
@media(min-width:600px){
  .key-figures{grid-template-columns:repeat(4,minmax(0,1fr));max-width:none;gap:18px;padding-block:18px}
  .figure-value{font-size:36px}
  .month-grid a{min-height:54px}
}
@media(min-width:1040px){
  .hero{gap:40px;padding-block:14px 26px}
  .key-figures{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 28px;padding-left:34px;padding-block:14px}
  .figure-value{font-size:36px}
  .figure-label{min-height:0}
  .month-navigation{margin-bottom:30px}
}
@media(max-width:599px){
  .table-scroll{overflow:visible}
  th:first-child,td:first-child{white-space:normal}
  thead th{position:sticky;top:0;background:var(--paper);z-index:1;box-shadow:0 1px 0 var(--line)}
  .table-scroll[tabindex]{outline-offset:0}
}
@media(forced-colors:active){
  .unit-switch button[aria-pressed="true"],.month-grid a.active,.search-toggle[aria-expanded="true"]{forced-color-adjust:none;background:Highlight;color:HighlightText;outline:2px solid CanvasText;outline-offset:-2px}
  .selected-row th,.selected-row td{outline:2px solid CanvasText;outline-offset:-2px}
  .chart-line{stroke:CanvasText}
  .rain-bar{fill:GrayText}
  .rain-bar.active-bar{fill:CanvasText}
  .selected-month-band{fill:Canvas;stroke:CanvasText;stroke-dasharray:4 3}
  .status-dot,.legend-high{background:CanvasText}
  .legend-low{background:repeating-linear-gradient(90deg,CanvasText 0 5px,transparent 5px 8px)}
  .point-high,.point-low{fill:CanvasText;stroke:Canvas}
}
@media print{
  .search-toggle,.pleasant-badge::before{display:none}
}
.search-empty{padding:10px 12px;font-size:14px;line-height:1.5;color:var(--muted)}
/* ---- UX layer 2 (audit E): non-text contrast >= 3:1 for interactive boundaries and chart bars (WCAG 1.4.11) ---- */
:root{--line-strong:#6f8a8c}
html[data-theme="dark"]{--line-strong:#5f7f85}
@media(prefers-color-scheme:dark){
  html:not([data-theme="light"]):not([data-theme="dark"]){--line-strong:#5f7f85}
}
.city-search input,.unit-switch,.theme-toggle,.search-toggle,.month-grid a,.pill-links a,.related a{border-color:var(--line-strong)}
.rain-bar{stroke:var(--rain);stroke-width:1}
/* ---- UX layer 3 (audit E): metric-matched fallback fonts so a late webfont swap does not shift layout (CLS) ---- */
@font-face{font-family:"Public Sans Fallback";src:local("Arial"),local("Liberation Sans"),local("Helvetica");size-adjust:105.49%;ascent-override:90.06%;descent-override:21.33%;line-gap-override:0%}
@font-face{font-family:"Source Serif 4 Fallback";src:local("Georgia");size-adjust:106.05%;ascent-override:97.69%;descent-override:31.59%;line-gap-override:0%}
body,.footer-title,.axis-label,.month-axis{font-family:"Public Sans","Public Sans Fallback",sans-serif}
h1,h2,.region-title{font-family:"Source Serif 4","Source Serif 4 Fallback",Georgia,serif}
@media(min-width:1040px){
  .hero{align-items:start}
  .key-figures{margin-top:36px}
}
/* --- perf (audit D, P2): below-the-fold index tables are styled/laid out only when they approach the viewport.
   Only the long tables: on short sections (.home-section on /404 and hubs) the 600 px placeholder collapses when it enters the
   viewport and produced CLS 0.07-0.12 at 768/1280 (audit E, merged/evidence/shots/metrics.json) --- */
.table-section,.index-group{content-visibility:auto;contain-intrinsic-size:auto 600px}
/* Month hubs on a phone (audit C3e-01). The four ranking tables used to widen their grid column - and with it the whole page - when their columns could not get narrower
   than the screen (December on a 390 px phone: a 402 px page). The column may now shrink, a table that still does not fit scrolls inside its own box (the region is focusable
   and labelled "scroll horizontally if needed"), cells are a little tighter and a very long city name may break inside the word. Measured with Chromium on all twelve hubs at
   320, 360, 390 and 412 px: no page overflow and no table scrolling. The serif face has ONE weight (400); .footer-brand asks for 400 so no bold is synthesised (C3e-02). */
@media(max-width:599px){.rank-grid{grid-template-columns:minmax(0,1fr)}.rank-grid .table-scroll{overflow-x:auto}.rank-grid th,.rank-grid td{padding-inline:5px}.rank-grid th:first-child{padding-left:5px}.rank-grid tbody th:first-child{overflow-wrap:anywhere}}

/* W7-B6 open-data page (/data/): long checksums and code lines wrap instead of widening a phone screen */
.data-page code{font-size:.9em;overflow-wrap:anywhere;word-break:break-all}
.data-page .data-hash{font-size:14px;color:var(--muted)}
.data-page .data-bib{font-size:14px;line-height:1.6}

/* ws-city layer (audit E wave 4): E-B03 nearby strip, E-B08 phone daylight column, E-B10 hub anchor row, E-B14 one focus style */
/* E-B03: compact "Nearby in <Month>" row right under the month strip on city-month pages */
.nearby-strip{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin-top:12px;font-size:14px;min-width:0}
.nearby-strip-title{font-size:13px;font-weight:600;color:var(--muted)}
.nearby-strip ul{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0;padding:0;min-width:0;max-width:100%}
.nearby-strip li{min-width:0;max-width:100%}
.nearby-strip a{display:inline-flex;align-items:center;gap:6px;max-width:100%;min-height:44px;padding:0 12px;border:1px solid var(--line-strong);border-radius:999px;background:var(--surface);text-decoration:none}
.nearby-strip a:hover{background:var(--wash)}
.nearby-strip .ns-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nearby-strip .ns-high{flex:none;color:var(--high);font-weight:600}
@media print{.nearby-strip{display:none}}
/* E-B08: daylight on the phone table too ("14 h", whole hours); the six phone columns fit 272 px (320 px screen) with tighter cells and wrapping heads */
@media(max-width:599px){
  .table-section th,.table-section td{padding-inline:3px}
  .table-section th:first-child{padding-left:3px}
  .table-section thead th{white-space:normal}
  .table-section tbody td:last-child{white-space:nowrap}
}
@media(max-width:599px){.table-section tbody th .month-rest{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}}
/* E-B10: hub anchor row, styled as the existing pill links */
.page-anchors{margin:0 0 18px}
.page-anchors .pill-links a{min-height:44px}
@media print{.page-anchors{display:none}}
/* E-B14: one focus style for every interactive element (month grid, badges, anchor row, nearby links, table region, inputs): 2 px --focus, offset 2 px */
a:focus-visible,button:focus-visible,select:focus-visible,summary:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
@media(forced-colors:active){
  a:focus-visible,button:focus-visible,select:focus-visible,summary:focus-visible,input:focus-visible,[tabindex]:focus-visible,
  .month-grid a.active:focus-visible,.unit-switch button[aria-pressed="true"]:focus-visible,.search-toggle[aria-expanded="true"]:focus-visible{outline:2px solid CanvasText;outline-offset:2px}
}

/* ws-lists (audit E-B04): country pages - largest-cities quick list, region anchors, sticky table head from 600 px.
   From 600 px the box is no scroll container (overflow visible), so the sticky head sticks to the window. The table still fits:
   min-width 465 px < the 552 px content box at 600 px, and long city names wrap instead of widening the table. */
.quick-list{padding-top:28px}
.quick-title{font-size:15px;font-weight:500;margin:0 0 10px}
.quick-links{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0}
.quick-links a{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border:1px solid var(--line-strong);border-radius:999px;background:var(--surface);text-decoration:none;font-size:14px}
.quick-links a:hover{background:var(--wash)}
.quick-links.compact{gap:4px 6px}
.quick-links.compact a{min-height:32px;padding:0 10px;font-size:13px}
.region-jump{margin-bottom:20px}
@media(min-width:600px){
  .sticky-head.table-scroll{overflow:visible}
  .sticky-head thead th{position:sticky;top:0;background:var(--paper);z-index:1;box-shadow:0 1px 0 var(--line)}
  .sticky-head tbody th:first-child{white-space:normal;overflow-wrap:anywhere}
}
/* ws-lists (audit E-B05): month hub jump link to the A-Z country list */
.jump-link{margin-top:8px;font-size:14px}
.jump-link a{display:inline-flex;align-items:center;gap:6px;min-height:44px}
#countries-a-z{scroll-margin-top:16px}

/* B8 accessibility. Unfocused screen look at 360/390/1280 is unchanged: every rule is :focus-visible, print, or max-width 359px. */

/* F2: .unit-switch{overflow:hidden} clips the global 2px ring at offset 2px (the gap is 1px). Draw the ring inside.
   The pressed button is ink-on-paper, so a paper ring keeps the indicator visible on both backgrounds (1.4.11). */
.unit-switch button:focus-visible{outline:2px solid var(--focus);outline-offset:-3px;box-shadow:inset 0 0 0 1px var(--paper)}
.unit-switch button[aria-pressed="true"]:focus-visible{outline-color:var(--paper);box-shadow:inset 0 0 0 1px var(--ink)}
@media(forced-colors:active){
  .unit-switch button:focus-visible,.unit-switch button[aria-pressed="true"]:focus-visible{outline:2px solid CanvasText;outline-offset:-3px;box-shadow:none}
}

/* F4: aria-selected now lives on the option link. This only paints the keyboard highlight. */
.search-results a[aria-selected="true"]{background:var(--wash)}

/* F3: the empty-result sentence is a sibling of the listbox. Same dropdown chrome, and only while it is shown. */
.city-search>.search-empty{position:absolute;z-index:30;left:0;top:100%;margin:4px 0 0;padding:10px 12px;width:max(100%,min(340px,88vw));background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 12px 30px rgba(23,50,56,.18);font-size:14px;line-height:1.5;color:var(--muted)}
.city-search>.search-empty[hidden]{display:none}

/* F5: below 360px the phone rule sets .table-scroll{overflow:visible}, and .table-section{content-visibility:auto} then clips the last column.
   Scroll inside the wrapper at 320px (and with WCAG text spacing). 360/390/1280 keep the existing rule. */
@media(max-width:359px){
  .table-scroll{overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
  .table-section{content-visibility:visible}
}

/* F6: printing from the dark theme uses the light palette. Light print is unchanged: these selectors do not match html[data-theme="light"]. */
@media print{
  html[data-theme="dark"],html:not([data-theme="light"]):not([data-theme="dark"]){color-scheme:light;--paper:#f5f3ed;--surface:#fdfcf9;--ink:#173238;--muted:#4c6569;--line:#d4ddda;--line-strong:#6f8a8c;--high:#a54329;--low:#176971;--rain:#2d767b;--rain-soft:#a9c8c7;--wash:#e7efeb;--highlight:#f5e4d8;--focus:#a54329}
  html.js .topbar .city-search:not(.open),[data-city-search],.search-toggle{display:none}
}
