@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@600&family=Source+Sans+3:wght@400;500;600;700&display=swap');
:root{--paper:#f7f1e5;--panel:#efe3d3;--ink:#282720;--accent:#844a2d;--line:#d4c3ac;--sans:"Source Sans 3",system-ui,sans-serif;--serif:var(--sans)}
[data-season=spring]{--paper:#f5f3e9;--panel:#e8eddb;--accent:#405a3b;--line:#c7cfb9}
[data-season=summer]{--paper:#faf3e1;--panel:#f0e7c8;--accent:#546035;--line:#d5c9a7}
[data-season=winter]{--paper:#efefea;--panel:#dce0df;--accent:#3f5261;--line:#bec6c8}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font:17px/1.5 var(--sans)}
.wrap{width:min(1190px,calc(100% - 88px));margin-inline:auto}
a{color:inherit;text-underline-offset:.2em}
a:hover{color:var(--accent)}
a:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:5px}
.skip{position:absolute;left:1rem;top:-10rem;z-index:5;background:var(--paper);padding:1rem}
.skip:focus{top:1rem}
.masthead,.masthead nav,footer,.section-heading,.season-bar{display:flex;align-items:center;justify-content:space-between;gap:1rem}
.masthead{min-height:105px;border-bottom:1px solid var(--line)}
.brand{display:flex;gap:13px;align-items:center;text-decoration:none;font:34px/.95 var(--serif)}
.brand small{display:block;font:600 12px/1.5 var(--sans);margin-top:4px;letter-spacing:.08em}
.mark{font:34px/1 var(--serif);width:46px;height:46px;display:grid;place-items:center;border:1px solid var(--accent);border-radius:50%;color:var(--accent)}
.masthead nav{gap:clamp(14px,3vw,36px);flex-wrap:wrap}
.masthead nav a{font-weight:600;text-decoration:none}
.hero{margin-top:26px;display:grid;grid-template-columns: 42% 58%;min-height:430px;background:var(--panel);border:1px solid var(--line);overflow:hidden}
.intro{position:relative;z-index:1;padding:57px 0 55px clamp(25px,5vw,69px)}
.place{margin:0 0 12px;font-size:13px;font-weight:700;letter-spacing:.17em;text-transform:uppercase;color:var(--accent)}
h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.05;margin:0}
h1{font-size:clamp(57px,7.1vw,106px);letter-spacing:-.035em}
.lead{max-width:290px;margin:19px 15px 24px 0}
.button{display:inline-flex;align-items:center;gap:20px;padding:11px 17px;border-radius:2px;background:var(--accent);color:white;text-decoration:none;font-weight:600}
.button:hover{color:white;text-decoration:underline}
.illustration{align-self:center;position:relative;min-width:0;isolation:isolate;overflow:hidden}
.art{display:block;width:100%;height:auto}
#weather{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.particle{position:absolute;top:-30px;left:var(--x);width:var(--size);height:var(--size);border-radius:50%;background:#fff;box-shadow:0 0 4px #8796a35c;animation:fall var(--duration) var(--delay) linear infinite}
[data-season=autumn] .particle{background:#a15a32;border-radius:85% 0 85% 0;height:calc(var(--size)*.65);box-shadow:none}
@keyframes fall{0%{transform:translateY(-10px) rotate(0);opacity:0}15%{opacity:.7}85%{opacity:.7}100%{transform:translate(55px,540px) rotate(245deg);opacity:0}}
.season-bar{padding:13px 0;border-bottom:1px solid var(--line);font-size:14px;color:var(--accent);font-weight:600;flex-wrap:wrap}
select{font:inherit;color:var(--ink);background:var(--paper);border:1px solid var(--line);padding:4px 8px;margin:0 8px}
.motion{display:flex;align-items:center;gap:5px}
input{accent-color:var(--accent)}
.community{display:grid;grid-template-columns: 1.7fr 1fr;gap:clamp(28px,6vw,85px);padding:44px 0 54px}
h2{font-size:48px}h3{font-size:32px}
.section-heading{align-items:baseline;flex-wrap:wrap}
.section-heading a,time{font-size:14px;color:var(--accent);font-weight:600}
article{padding:20px 0;border-bottom:1px solid var(--line)}
article h3{margin-top:4px}article h3 a{text-decoration:none}article h3 a:hover{text-decoration:underline}
article p{margin:5px 0 0}
aside{padding:24px;background:var(--panel);border:1px solid var(--line);align-self:start}
aside h2{font-size:39px}
aside ul{padding:0;margin:12px 0 0;list-style:none}
aside li a{display:flex;justify-content:space-between;gap:1rem;padding:10px 0;border-bottom:1px solid var(--line);text-decoration:none}
aside li:last-child a{border:0}
footer{border-top:1px solid var(--line);padding:20px 0 32px;font-size:14px;flex-wrap:wrap}
@media(max-width:760px){.wrap{width:calc(100% - 34px)}.masthead{align-items:flex-start;flex-direction:column;padding:20px 0}.hero,.community{grid-template-columns:1fr}.intro{padding:32px 24px}.community{padding-top:28px}h2{font-size:40px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.particle{display:none}}
@media(min-width:761px){h1{font-size:clamp(49px,5.9vw,84px)}}

.masthead nav{justify-content:flex-end;gap:clamp(8px,1.6vw,22px)}
.masthead nav a[aria-current=page]{color:var(--accent);text-decoration:underline}
.inner{padding-block:clamp(32px,6vw,75px)}
.inner h1{margin-bottom:22px}
.inner .lead,.content-list{max-width:760px}
.inner .content-list h2{font-size:clamp(28px,4vw,40px)}
.inner article time{display:block;margin-bottom:6px}
@media(max-width:760px){.masthead nav{justify-content:flex-start;gap:8px 16px}}
.search-link{padding:5px 10px;border:1px solid var(--accent);border-radius:2px}
.search-form{display:flex;align-items:end;gap:12px;flex-wrap:wrap;max-width:860px;margin-top:20px}
.search-form>div:first-child{flex:1 1 250px}
.search-form label{display:block;font-weight:600}
.search-form input,.search-form select{font:inherit;padding:10px;color:var(--ink);background:var(--paper);border:1px solid var(--line);margin:0}
.search-form input{width:100%}
.search-form button{border:0;font:inherit;cursor:pointer}
.search-shortcuts,.result-category,#result-status{color:var(--accent);font-size:15px}
.result-category{margin:0 0 5px}
.content-list article{scroll-margin-top:16px}
.content-list article:target{background:var(--panel);padding-inline:16px}
.archive-year{margin-block:28px;scroll-margin-top:16px}
.archive-year h3 a{text-decoration:underline}
.archived-post{margin-top:20px;overflow-wrap:anywhere}
.archived-post img{max-width:100%;height:auto;display:block;margin:12px 0}
.archived-post table{width:100%;table-layout:fixed}
.archived-post td{vertical-align:top;padding:4px}
.archived-post>div{margin-bottom:16px}
.archive-years{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px;margin:20px 0 36px}
.archive-years a{display:grid;padding:14px 18px;border:1px solid var(--line);background:var(--panel);text-decoration:none}
.archive-years a:hover{border-color:var(--accent)}
.archive-years strong{font:42px/1 var(--serif);color:var(--accent)}
.archive-years span{font-size:14px;font-weight:600}
.archive-year h2{margin:0 0 14px}
.archive-year article{position:relative;border-left:1px solid var(--line);margin-left:7px;padding:16px 0 16px 24px}
.archive-year article::before{content:"";position:absolute;left:-5px;top:24px;width:9px;height:9px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px var(--paper)}
.archive-year article h3{font-size:clamp(25px,4vw,34px)}
.archive-year article h3 a{text-decoration:none}
.archive-year article h3 a:hover{text-decoration:underline}
.photo-year{margin:32px 0;scroll-margin-top:24px}
.photo-year h2{margin:0 0 16px}
.album-grid,.photo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:16px}
.album-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr))}
.album-card{display:block;border:1px solid var(--line);background:var(--panel);text-decoration:none}
.album-card:hover{border-color:var(--accent)}
.album-card img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:contain}
.album-card div{padding:14px 18px}
.album-card h3{margin:0}
.album-card p{margin:5px 0 0}
.photo-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,225px),1fr))}
.photo-grid a{display:grid;place-items:center;background:var(--panel);border:1px solid var(--line);aspect-ratio:4/3}
.photo-grid img{display:block;max-width:100%;max-height:100%;width:100%;height:100%;object-fit:contain}

/* News archive year ruler */
.news-ruler{margin:1.25rem 0 2rem;padding:clamp(.85rem,2.5vw,1.5rem);border:1px solid var(--line);border-radius:3px 7px 4px 8px;background:var(--panel)}
.news-ruler-heading{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.2rem 1rem;margin-bottom:.65rem}
.news-ruler-heading h2{margin:0;font-size:clamp(1.5rem,3vw,2rem)}
.news-ruler-heading p{margin:0;font-size:.875rem}
.news-ruler-scroll{overflow-x:auto;padding:0 .25rem .65rem;scroll-snap-type:x proximity;scrollbar-color:var(--accent) var(--panel)}
.news-ruler-track{display:grid;grid-auto-flow:column;grid-auto-columns:4.75rem;width:max-content;min-width:100%;border-top:2px solid var(--accent);background:repeating-linear-gradient(to right,var(--line) 0 1px,transparent 1px calc(4.75rem / 4)) top left/100% 6px no-repeat}
.news-ruler-track a{position:relative;display:grid;gap:.2rem;align-content:start;min-height:4.8rem;padding:.95rem .35rem .35rem;text-align:left;text-decoration:none;scroll-snap-align:start}
.news-ruler-track a::before{content:"";position:absolute;left:0;top:0;width:2px;height:.62rem;background:var(--accent)}
.news-ruler-track a:hover,.news-ruler-track a:focus-visible{background:var(--paper)}
.news-ruler-track a:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.news-ruler-track strong{font:1.6rem/1 var(--serif);color:var(--accent)}
.news-ruler-track span{font-size:.78rem;white-space:nowrap}
.archive-year-heading{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;border-bottom:1px solid var(--line)}
.archive-year-heading a{font-size:.85rem}
.archive-year:target .archive-year-heading h2{color:var(--accent)}
@media(prefers-reduced-motion:reduce){.news-ruler-scroll{scroll-snap-type:none}}

.story-with-preview{display:grid;grid-template-columns:minmax(6rem,clamp(6rem,24%,11rem)) minmax(0,1fr);align-items:start;gap:clamp(.7rem,2vw,1.25rem)}
.story-preview{display:block;overflow:hidden;border:1px solid var(--line);border-radius:4px;background:var(--panel)}
.story-preview img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:contain}
.story-preview-copy{min-width:0;overflow-wrap:anywhere}
@media(max-width:440px){
  .story-with-preview{grid-template-columns:1fr}
  .story-preview{max-width:14rem}
}

.pencil-symbol,.search-link::before{display:inline-block;flex:none;width:1.7em;height:1.7em;background-image:url('site-pencil-symbols.webp');background-size:300% 300%;background-position:var(--symbol-x) var(--symbol-y);background-repeat:no-repeat;mix-blend-mode:multiply}
.pencil-heading{display:flex;align-items:center;gap:.4em}
.pencil-heading .pencil-symbol{width:.95em;height:.95em}
.masthead .search-link{display:inline-flex;align-items:center;gap:.35rem}
.search-link::before{content:"";--symbol-x:100%;--symbol-y:0%;width:1.35rem;height:1.35rem}
#residents a .shortcut-label{flex:1}
#residents .pencil-symbol{width:1.5rem;height:1.5rem}
.photo-year-controls{margin:1rem 0 1.25rem}
.photo-year-controls label{display:block;font-weight:700;margin-bottom:.35rem}
.photo-year-controls select{min-height:44px;margin:0;font:inherit;max-width:100%;background:var(--paper)}
.photo-year[hidden],.photo-year-controls[hidden]{display:none}
.brand .mark{font-size:0;flex:none}
.brand .mark::before{content:"";display:block;width:32px;height:32px;background:url('site-pencil-symbols.webp') 0 0/300% 300% no-repeat;mix-blend-mode:multiply}

.photo-grid a[hidden],.album-more[hidden]{display:none}
.album-more{margin:1.2rem 0;min-height:44px;border:0;cursor:pointer}
.album-viewer{box-sizing:border-box;width:min(980px,calc(100% - 1.5rem));max-height:94dvh;padding:1rem;border:1px solid var(--line);border-radius:6px;background:var(--paper);color:var(--ink)}
.album-viewer::backdrop{background:#12120ee6}
.viewer-controls{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.6rem;margin-bottom:.8rem}
.viewer-controls p{margin:0;font-weight:600}
.viewer-controls button{min-height:44px;padding:.45rem .8rem;background:var(--panel);color:var(--ink);border:1px solid var(--accent);border-radius:4px;font:inherit;cursor:pointer}
.viewer-controls button:disabled{opacity:.55;cursor:default}
.viewer-controls button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.album-viewer img{display:block;width:100%;height:auto;max-height:74dvh;object-fit:contain}

.photo-year-links{margin:1.5rem 0}
.photo-year-links h2{font-size:1.6rem;margin:0 0 .65rem}
.photo-year-links div{display:flex;flex-wrap:wrap;gap:.45rem}
.photo-year-links a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:3.5rem;padding:.35rem .7rem;border:1px solid var(--accent);border-radius:4px;font-weight:600;text-decoration:none}
.photo-year-links a:hover{background:var(--panel)}
.photo-year-links a[aria-current]{background:var(--accent);color:white}
.featured-photography{display:inline-flex;align-items:center;gap:1rem;padding:.65rem 1rem .65rem .65rem;border:1px solid var(--accent);border-radius:5px;background:var(--panel);text-decoration:none}
.featured-photography img{width:clamp(4rem,12vw,7rem);height:auto;aspect-ratio:4/3;object-fit:contain}
.featured-photography strong,.featured-photography span span{display:block}
.featured-photography strong{font:1.65rem var(--serif)}
.featured-photography span span{text-decoration:underline;text-underline-offset:.2em}

.pencil-symbol.information-pencil-symbol{background-image:url('information-symbols.webp')}
@media(max-width:760px){
  .masthead nav a{display:inline-flex;align-items:center;min-height:44px}
}


/* Pencil & Paper */
:root {
  --paper: #f6f1e5;
  --panel: #eee6d6;
  --ink: #282923;
  --accent: #854727;
  --line: #cbbcaa;
}
body {
  background-image:
    radial-gradient(ellipse at 92% 5%, var(--panel), transparent 42rem),
    radial-gradient(ellipse at 8% 0%, #fffdf6, transparent 42rem);
}
.brand { font-family: var(--sans); font-weight: 700; line-height: 1.05; }
.brand small { letter-spacing: .035em; }
.masthead { padding-block: .85rem; }
.masthead nav a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  border-radius: 999px;
}
.masthead .search-link { padding-inline: .85rem; }
h1, h2, h3 { font-family: var(--sans); font-weight: 600; line-height: 1.2; }
h1 { font-size: clamp(2.25rem, 4.5vw, 3.85rem); letter-spacing: -.035em; }
h2 { font-size: clamp(1.65rem, 3.2vw, 2.45rem); }
h3 { font-size: clamp(1.2rem, 2.4vw, 1.7rem); }
.inner h1 {
  text-decoration: underline;
  text-decoration-color: var(--line);
  text-underline-offset: .18em;
  text-decoration-thickness: .035em;
}
.hero {
  grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
  min-height: 0;
  border: 0;
  border-radius: 2rem 2rem 4rem 1.25rem;
  background: linear-gradient(112deg, var(--panel), var(--paper));
}
.hero .intro { padding: clamp(1.5rem, 4vw, 3.5rem); }
.hero .place { letter-spacing: .045em; text-transform: none; }
.hero .illustration { margin: .65rem; border-radius: 1.5rem 1.5rem 3.5rem 1.5rem; }
.hero .art { mask-image: radial-gradient(ellipse 82% 76% at 55% 49%, black 48%, transparent 100%); }
.hero .lead { max-width: 31ch; }
.button { border-radius: 999px; }
.information-cards article,
.local-service-cards .local-service-card,
.trade-directory .trade-group,
.amenity-list article,
.nearby-event-cards article,
.album-card,
.community aside {
  border-radius: 1rem 1rem 1.6rem .8rem;
  box-shadow: 0 .35rem 1rem #2829230b;
}
.inner, .hero, .masthead { overflow-wrap: anywhere; }
footer { border-top-style: dashed; }
@media (max-width: 60rem) {
  .masthead { flex-wrap: wrap; }
  .masthead nav { justify-content: flex-start; }
}
@media (max-width: 48rem) {
  .hero { grid-template-columns: minmax(0, 1fr); }
  .hero .illustration { margin-top: 0; }
  .hero .intro { padding-bottom: .75rem; }
}

/* Two-line masthead inspired by the Evening Press clipping */
.inner .noticeboard-art + h1 {
  position: relative;
  isolation: isolate;
  display: grid;
  inline-size: fit-content;
  max-inline-size: 100%;
  margin-inline: 0;
  padding: .42em .55em .46em;
  justify-items: center;
  gap: .04em;
  color: #fff8eb;
  font-family: "Barlow Condensed", "Arial Narrow", var(--sans);
  font-size: clamp(1.8rem, 4vw, 3.2rem);
  font-weight: 600;
  line-height: .92;
  letter-spacing: .015em;
  text-align: center;
  text-decoration: none;
  text-transform: uppercase;
}
.inner .noticeboard-art + h1::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0;
  border-radius: .18em;
  background: #b22268;
  clip-path: polygon(0 0, 100% 7%, 100% 95%, 0 100%);
}
.noticeboard-masthead-bottom { font-size: 1.35em; }


.masthead { flex-wrap: wrap; row-gap: .45rem; }
.masthead-local-row { flex: 0 0 100%; width: 100%; }
.masthead-local {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  width: fit-content;
  max-width: 100%;
  margin-block: .25rem .1rem;
  margin-inline-end: auto;
  border: 1px solid var(--line);
  border-radius: .75rem;
  background: color-mix(in srgb, var(--paper) 72%, var(--panel));
  font-size: .88rem;
  line-height: 1.25;
}
.masthead-clock, .masthead-forecast { padding: .5rem .8rem; }
.masthead-clock { display: grid; align-content: center; gap: .15rem; }
.masthead-time, .masthead-temperature {
  font-size: 1.4rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  line-height: 1;
}
.masthead-time { color: var(--accent); }
.masthead-date, .masthead-weather-detail { color: color-mix(in srgb, var(--ink) 83%, var(--paper)); }
.masthead-forecast {
  display: flex;
  align-items: center;
  gap: .55rem;
  border-inline-start: 1px solid var(--line);
}
.masthead-weather-heading { display: flex; align-items: baseline; flex-wrap: wrap; gap: .35rem; font-weight: 600; }
.masthead-weather-detail { margin-top: .15rem; }
.masthead-weather-icon {
  display: grid;
  place-items: center;
  flex: 0 0 2.15rem;
  width: 2.15rem;
  height: 2.15rem;
  border-radius: 50%;
  background: #e4ebed;
  color: #3b6171;
}
.masthead-weather-icon[data-artwork="sun"], .masthead-weather-icon[data-artwork="partly"] {
  background: #f6e7be;
  color: #805018;
}
.masthead-weather-icon[data-artwork="moon"] { background: #e6e5ee; color: #4d567b; }
.masthead-weather-icon svg { width: 1.55rem; height: 1.55rem; }
.masthead-forecast[hidden], .masthead-weather-icon[hidden] { display: none; }
@media (max-width: 400px) {
  .masthead-clock, .masthead-forecast { padding-inline: .55rem; }
  .masthead-forecast { gap: .4rem; }
  .masthead-weather-icon { width: 1.85rem; height: 1.85rem; flex-basis: 1.85rem; }
}
@media (max-width: 340px) {
  .masthead-forecast { border-inline-start: 0; border-top: 1px solid var(--line); width: 100%; }
}

.masthead-search { position: relative; width: clamp(10rem, 13vw, 14rem); max-width: 100%; }
.masthead-search input {
  width: 100%;
  min-height: 44px;
  padding: .4rem .85rem;
  border: 1px solid var(--accent);
  border-radius: 2rem;
  background: var(--paper);
  color: var(--ink);
  font: inherit;
}
.masthead-search-results {
  position: absolute;
  z-index: 20;
  inset-inline-end: 0;
  top: calc(100% + .45rem);
  width: min(26rem, calc(100vw - 2.5rem));
  max-height: min(24rem, 60vh);
  overflow: auto;
  padding: .65rem 1rem;
  border: 1px solid var(--line);
  border-radius: .8rem;
  background: var(--paper);
  box-shadow: 0 .35rem 1rem #0002;
}
.masthead-search-results p { margin: 0 0 .35rem; font-size: .9rem; }
.masthead-search-results ul { list-style: none; padding: 0; margin: 0; }
.masthead-search-results li { padding: .4rem 0; border-top: 1px solid var(--line); }
.masthead-search-results a { text-decoration: underline; }
.masthead-search-results small { display: block; }
@media (max-width: 60rem) {
  .masthead-search { width: 100%; }
  .masthead-search-results { inset-inline-start: 0; width: 100%; }
}

.resident-seasonal {
  margin-top: .85rem;
  padding: .75rem .85rem .25rem;
  border: 1px solid var(--line);
  border-radius: .65rem;
  background: color-mix(in srgb, var(--paper) 68%, var(--panel));
}
.resident-seasonal h3 {
  margin: 0 0 .2rem;
  color: var(--accent);
  font-size: 1rem;
  font-weight: 700;
}
#residents .resident-seasonal ul { margin: 0; }

#residents .resident-pencil {
  width: 1.5rem;
  height: 1.5rem;
  flex: 0 0 1.5rem;
  color: #4b542b;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.55;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.road-shimmer {
  position: absolute;
  inset: 0;
  overflow: hidden;
  clip-path: polygon(44% 55%, 54% 55%, 55% 62%, 65% 76%, 83% 86%, 17% 86%, 35% 76%, 43% 64%);
  mask-image: radial-gradient(ellipse 34% 19% at 49% 73%, black 17%, transparent 93%);
}
.road-shimmer::before, .road-shimmer::after {
  content: "";
  position: absolute;
  inset: 0;
  background: url("entrance-summer.webp") center / 100% 100% no-repeat;
}
.road-shimmer::before {
  filter: blur(.8px);
  animation: road-heat-refraction 3.6s ease-in-out infinite alternate;
}
.road-shimmer::after {
  mask-image: repeating-linear-gradient(to top, transparent 0%, black 4%, transparent 8%);
  filter: blur(1px);
  animation: road-heat-rise 3s linear infinite;
}
@keyframes road-heat-refraction {
  0% { opacity: .26; transform: translate(-.25%, .18%); }
  46% { opacity: .52; transform: translate(.32%, -.3%); }
  100% { opacity: .34; transform: translate(-.17%, -.55%); }
}
@keyframes road-heat-rise {
  from { opacity: 0; transform: translateY(3%); }
  45% { opacity: .42; }
  to { opacity: 0; transform: translateY(-3%); }
}
@media (prefers-reduced-motion: reduce) {
  .road-shimmer { display: none; }
}
