.weather-intro{display:grid;grid-template-columns:1.2fr 1fr;gap:8%;padding-block:64px 55px;align-items:end}.weather-intro h1{margin:18px 0 0}.intro-note{max-width:520px;padding-bottom:8px}.intro-note p{margin:18px 0 0}.altitude{font:clamp(2.2rem,4vw,4rem)/1 var(--serif);color:var(--terracotta)}.altitude small{font:500 13px var(--sans);letter-spacing:.1em;display:inline-block;margin-left:12px}.weather-photo{height:clamp(400px,45vw,680px);position:relative;overflow:hidden}.weather-photo img{height:100%;object-fit:cover;object-position:50% 55%}.weather-photo:after{content:"";position:absolute;inset:40% 0 0;background:linear-gradient(transparent,rgba(23,26,22,.75))}.photo-caption{position:absolute;z-index:1;bottom:28px;left:var(--page-gutter);right:var(--page-gutter);color:#fffaf2}.photo-caption span{font:clamp(2.3rem,3.5vw,4.5rem)/1.15 var(--serif)}.photo-caption p{margin:10px 0 0;font-size:var(--text-support)}.climate-section,.forecast-section{padding-block:85px}.section-top{display:grid;grid-template-columns:1.1fr 1fr;gap:10%;align-items:end;margin-bottom:40px}.section-top h2{margin:16px 0 0}.section-top>p{max-width:650px;margin-bottom:8px}.climate-board{background:#fffaf2;border:1px solid #dacbb9;padding:32px 32px 0}.chart-head{display:flex;justify-content:space-between;gap:15px;align-items:center}.chart-head p{margin:5px 0 0;font-size:var(--text-support)}.unit-switch{display:flex;border:1px solid #c9b59e;padding:4px}.unit-switch button{border:0;background:transparent;font:500 17px var(--sans);min-width:44px;min-height:40px;cursor:pointer}.unit-switch button[aria-pressed=true]{background:var(--terracotta);color:white}.legend{display:flex;gap:25px;align-items:center;margin-top:28px;font-size:15px}.legend i{display:inline-block;width:22px;height:3px;margin:0 8px 4px 0}.high-key{background:#9d4b31}.low-key{background:#666a50}.chart-hint{margin-left:auto;color:#645c50}.chart-scroll{overflow:auto;margin-top:5px}#climate-chart{display:block;width:100%;min-width:740px}#climate-chart text{font-family:var(--sans)}.months{display:grid;grid-template-columns:repeat(12,1fr);border-top:1px solid #dfd1c0;gap:2px;padding:17px 0}.months button{font:500 16px var(--sans);padding:12px 3px;cursor:pointer;border:0;background:transparent;color:#594e43}.months button:hover{background:#eee2d2}.months button[aria-pressed=true]{background:var(--terracotta);color:#fff}.month-story{margin:0 -32px;background:#ece1d1;display:grid;grid-template-columns:.8fr 1fr 1.65fr;gap:30px;padding:32px;align-items:center}.month-heading h3{font-size:45px;margin:12px 0 0}.month-heading .eyebrow{font-size:12px}.month-temperatures{display:flex;gap:24px}.month-temperatures strong{font:56px/1 var(--serif);display:block;color:var(--terracotta)}.month-temperatures>div:last-child strong{color:var(--olive)}.month-temperatures span{font-size:14px;white-space:nowrap}.month-description h4{font:30px/1.1 var(--serif);margin:0 0 9px}.month-description p{font-size:17px;line-height:1.6;margin:0}.source-note{font-size:14px;line-height:1.7;max-width:980px;margin:20px 0}.data-details{border-bottom:1px solid #cbbca7;font-size:16px;padding:18px 0}.data-details summary{cursor:pointer}.data-details p{margin-top:20px;max-width:900px}.table-scroll{overflow:auto}table{border-collapse:collapse;width:100%;text-align:left}caption{text-align:left;margin-bottom:12px}td,th{padding:10px;border-bottom:1px solid #dfd1c0}.feeling-section{background:var(--olive);color:var(--paper);padding:75px 0}.feeling-grid{display:grid;grid-template-columns:1fr 1.15fr;gap:12%}.feeling-grid h2{margin-top:20px}.feeling-grid>div>p{max-width:530px}.feeling-notes article{padding:25px 0;border-top:1px solid #aaa98d}.feeling-notes span{font-size:13px;letter-spacing:.12em}.feeling-notes h3{font-size:36px;line-height:1.1;margin:14px 0}.feeling-notes p{font-size:18px;line-height:1.7;margin:0}.host-note{text-align:center;padding-block:75px}.host-note blockquote{max-width:960px;margin:25px auto;font:italic clamp(2rem,3vw,3.5rem)/1.25 var(--serif)}.host-note>span{font-size:14px}.forecast-section{border-top:1px solid #cbbca7}.forecast-links{display:grid;grid-template-columns:repeat(3,1fr);gap:30px}.forecast-links a{display:block;text-decoration:none;border-top:2px solid var(--terracotta);padding:22px 0}.forecast-links span{font-size:12px;letter-spacing:.12em}.forecast-links h3{font-size:31px;line-height:1.15;margin:16px 0}.forecast-links p{font-size:17px;line-height:1.6}.forecast-links a:hover h3{color:var(--terracotta)}.pool-note{border-top:1px solid #cbbca7;padding-block:45px 65px;display:grid;grid-template-columns:1fr 1.2fr;gap:10%}.pool-note h2{font-size:46px;margin:18px 0}.pool-note p{font-size:var(--text-support)}.mobile-hint{display:none}button:focus-visible,a:focus-visible,summary:focus-visible,.chart-scroll:focus-visible{outline:3px solid #9d4b31;outline-offset:4px}@media(max-width:850px){.weather-intro,.section-top,.feeling-grid,.pool-note{grid-template-columns:1fr;gap:25px}.weather-intro{padding-block:40px}.weather-intro .display{font-size:clamp(3.3rem,10vw,5.5rem)}.weather-photo{height:430px}.climate-section,.forecast-section{padding-block:50px}.climate-board{padding:22px 18px 0}.chart-head{align-items:start}.chart-head .eyebrow{font-size:13px}.chart-head p{font-size:16px}.legend{gap:14px;font-size:13px}.chart-hint{display:none}.months{grid-template-columns:repeat(6,1fr)}.month-story{margin-inline:-18px;padding:25px 20px;grid-template-columns:1fr 1fr;gap:20px}.month-description{grid-column:1/-1}.month-heading h3{font-size:37px}.month-temperatures{gap:16px}.month-temperatures strong{font-size:46px}.month-temperatures span{font-size:12px}.mobile-hint{display:block;font-size:13px;margin:8px 0;color:#645c50}.forecast-links{grid-template-columns:1fr;gap:5px}.feeling-section{padding:45px 0}.host-note{padding-block:50px}.section-top h2{font-size:48px}.altitude small{font-size:11px}.photo-caption p{font-size:16px}.source-note{font-size:14px}.pool-note h2{font-size:40px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

/* Share the site's continuous reading scale instead of fixed mockup type sizes.
   SVG chart labels already scale with its viewBox; keep their coordinate sizes. */
.weather-intro { padding-block:var(--section-space); }
.intro-note,.section-top>p,.feeling-grid>div>p { max-width:42ch; }
.altitude { font-size:clamp(2.2rem,1.6rem + 2.5vw,7rem); }
.altitude small { font-size:var(--text-label); margin-left:.75em; }
.climate-section,.forecast-section { padding-block:var(--section-space); }
.section-top { margin-bottom:var(--panel-space); }
.climate-board { --weather-inset:var(--panel-space); padding:var(--weather-inset) var(--weather-inset) 0; }
.chart-head { gap:var(--panel-space); }
.chart-head p { font-size:var(--text-support); }
.chart-head .eyebrow,.month-heading .eyebrow,.feeling-notes span,.forecast-links span { font-size:var(--text-label); }
.unit-switch button { font-size:var(--text-support); min-width:2.75em; min-height:2.5em; }
.legend { font-size:var(--text-fine); gap:1.5em; margin-top:var(--panel-space); flex-wrap:wrap; }
.legend i { width:1.5em; height:.2em; margin:0 .5em .25em 0; }
.months { padding-block:1rem; }
.months button { font-size:var(--text-label); padding:.75em .2em; min-height:44px; }
.month-story { margin-inline:calc(-1 * var(--weather-inset)); padding:var(--weather-inset); gap:var(--panel-space); grid-template-columns:minmax(0,.8fr) minmax(0,1fr) minmax(0,1.65fr); }
.month-heading h3 { font-size:clamp(2.3rem,1.6rem + 1.8vw,6rem); }
.month-temperatures { gap:1em; }
.month-temperatures strong { font-size:clamp(2.875rem,2rem + 2vw,7rem); }
.month-temperatures span { font-size:var(--text-fine); white-space:normal; display:block; }
.month-description h4 { font-size:var(--text-card-title); margin-bottom:.4em; }
.month-description p,.feeling-notes p,.forecast-links p { font-size:var(--text-panel); }
.source-note { font-size:var(--text-fine); max-width:85ch; margin-block:1.25em; }
.data-details { font-size:var(--text-support); padding-block:1em; }
.data-details p { max-width:var(--reading-measure); }
.data-details th,.data-details td { padding:.6em; }
.feeling-section { padding-block:var(--section-space); }
.feeling-notes article { padding-block:var(--panel-space); }
.feeling-notes h3,.forecast-links h3 { font-size:var(--text-card-title); margin-block:.5em; }
.forecast-links { gap:var(--panel-space); }
.forecast-links a { padding-block:var(--panel-space); }
.pool-note { padding-block:var(--section-space); }
.pool-note h2 { font-size:clamp(2.5rem,1.8rem + 2vw,7rem); }
.mobile-hint { font-size:var(--text-fine); }
.photo-caption p { font-size:var(--text-support); }
@media(max-width:850px) {
  .month-story { grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:1.25rem; }
  .month-description { grid-column:1/-1; }
  .month-temperatures { gap:.75rem; }
  .legend { gap:1em; }
  .forecast-links { gap:.5rem; }
}
@media(max-width:420px) {
  .month-story { grid-template-columns:1fr; }
  .month-temperatures { gap:2rem; }
}

/* Full-width climate board with readable supporting text. */
.climate-board { max-width:none; }
.months button { font-size:var(--text-support); }
.month-description p { font-size:var(--text-body); }
.month-temperatures span,.legend { font-size:var(--text-support); }

/* v1.0.27: the interactive month panel is primary reading content. */
.months button { font-size:clamp(1.125rem,1rem + .8vw,2.5rem); font-weight:600; }
.month-heading .eyebrow { font-size:clamp(1rem,.8rem + .6vw,2rem); }
.month-description p { font-size:clamp(1.25rem,1rem + .9vw,3rem); max-width:45ch; }
.month-temperatures span { font-size:clamp(1.125rem,.9rem + .7vw,2.5rem); }
.source-note,.data-details { font-size:clamp(1.125rem,1rem + .65vw,2.5rem); }
.source-note { max-width:70ch; }
@media (min-width:851px) and (max-width:1200px) {
  .month-story { grid-template-columns:1fr 1fr; }
  .month-description { grid-column:1/-1; }
}
