:root{
  --bg:#f6f1e6; --bg2:#efe6d2; --ink:#17303f; --muted:#4d6573; --accent:#0a6b7d;
  --accent-ink:#ffffff; --warm:#b5481a; --card:#fffdf7; --line:#d9cfb9; --line-soft:#e4dcc8;
  --sea-deep:#0b2233; --focus:#b3541e; --chip:#e9f0ec;
  --stage:#0d2a3c; --stage-ink:#eef4f1; --stage-muted:#b9cdd3; --stage-line:#24485c;
  --land:#ece7da; --land2:#ddd4c0; --lagoon:#a9c8cc; --coast:#7b6a4c; --mapink:#3c4a4f; --maphalo:rgba(246,240,226,.92); --border:rgba(110,80,60,.55);
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,"Times New Roman",serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
}
html[data-theme="dark"]{
  --bg:#0b1b26; --bg2:#0e2433; --ink:#e9f1ee; --muted:#aac3cc; --accent:#4fc3d3;
  --accent-ink:#07222b; --warm:#ffa25e; --card:#112935; --line:#2a4b5e; --line-soft:#1d3a4a;
  --sea-deep:#071624; --focus:#ffb27a; --chip:#16394a;
  --stage:#081c29; --stage-ink:#eef4f1; --stage-muted:#a9c1c8; --stage-line:#1f4255;
  --land:#1c2a2f; --land2:#141f24; --lagoon:#2c4a55; --coast:#8c9a94; --mapink:#d6e0dc; --maphalo:rgba(14,26,31,.9); --border:rgba(210,190,160,.45);
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:1.06rem;line-height:1.62;overflow-x:hidden}
a{color:var(--accent)}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:4px}
.skip{position:absolute;left:-9999px;top:0;background:var(--card);color:var(--ink);padding:.5rem 1rem;z-index:60}
.skip:focus{left:.5rem;top:.5rem}
.topbar{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:1rem;height:44px;
  padding:0 clamp(.7rem,3vw,1.4rem);background:var(--bg);border-bottom:1px solid var(--line-soft)}
.topbar .home{font-weight:700;color:var(--ink);text-decoration:none;white-space:nowrap;display:flex;align-items:center;gap:.4rem;font-size:.95rem}
.home-wave{width:22px;height:11px;fill:none;stroke:var(--warm);stroke-width:2;stroke-linecap:round}
.topbar nav{display:flex;gap:.9rem;margin-left:auto;overflow:hidden;white-space:nowrap}
.topbar nav a{color:var(--muted);text-decoration:none;font-size:.9rem}
.topbar nav a:hover{color:var(--ink)}
@media (max-width:620px){.topbar nav{display:none}.langsw{margin-left:auto}}
.langsw{display:flex;gap:.2rem;align-items:center;font-size:.88rem}
.langsw a{padding:.1rem .45rem;border-radius:99px;text-decoration:none;color:var(--muted)}
.langsw a[aria-current]{background:var(--accent);color:var(--accent-ink);font-weight:700}
.theme-btn{border:0;background:transparent;color:var(--ink);border-radius:99px;
  width:44px;height:44px;display:grid;place-items:center;cursor:pointer;margin-right:-.5rem}
.theme-btn svg[hidden]{display:none}
.progress{position:sticky;top:44px;height:2px;z-index:49;pointer-events:none}
.progress i{display:block;height:100%;background:var(--warm);transform-origin:0 50%;transform:scaleX(0)}
main{display:block}
.wrap{max-width:44rem;margin:0 auto;padding:0 clamp(1rem,4vw,1.5rem)}
.wide{max-width:76rem;margin:0 auto;padding:0 clamp(.6rem,2.5vw,1.5rem)}
.kicker{letter-spacing:.14em;text-transform:uppercase;font-size:.78rem;color:var(--warm);font-weight:700;margin:2.2rem 0 .4rem}
h1{font-family:var(--serif);font-size:clamp(1.9rem,5.2vw,3.1rem);line-height:1.1;margin:.2rem 0 .8rem;font-weight:650;letter-spacing:-.01em}
.deck{font-size:clamp(1.08rem,2.5vw,1.27rem);line-height:1.5;color:var(--ink);margin:0 0 1.4rem}
.shared{border-left:4px solid var(--warm);background:var(--card);padding:.6rem .9rem;border-radius:0 10px 10px 0;margin:.4rem 0 1rem}
.shared p{margin:.1rem 0 .4rem;font-size:1.08rem}
.standfirst-note{color:var(--muted);font-size:.93rem;line-height:1.5}
h2{font-family:var(--serif);font-size:clamp(1.45rem,3.6vw,2.1rem);line-height:1.2;margin:2.6rem 0 .7rem;font-weight:650}
h3{font-size:1.1rem;margin:1.6rem 0 .4rem}
p{margin:.7rem 0}

/* ---------- the stage: map + wall of summers ---------- */
.band{background:var(--stage);color:var(--stage-ink);padding:clamp(1rem,3vw,2.2rem) 0;margin:1rem 0 0}
.stage{color:var(--stage-ink)}
.stage-head{max-width:46rem;margin:0 0 1.1rem}
.stage-h{font-family:var(--serif);color:var(--stage-ink);margin:.1rem 0 .3rem;font-size:clamp(1.35rem,3vw,1.8rem)}
.stage-lead{color:var(--stage-muted);margin:0;font-size:1rem}
.stage-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(1rem,2.4vw,2rem);align-items:start}
@media (max-width:900px){.stage-grid{grid-template-columns:1fr}.wallbox{display:contents}.stage-grid>.wallbox>.stage-head{order:-1}}
.mapbox{position:relative;min-width:0}
#map{display:block;border-radius:12px;touch-action:manipulation;margin:0 auto}
.map-day{position:absolute;right:.7rem;bottom:.7rem;text-align:right;display:flex;flex-direction:column;gap:.05rem;pointer-events:none;
  background:rgba(8,26,38,.72);color:#f3f6f2;padding:.45rem .7rem;border-radius:10px;max-width:calc(100% - 1.4rem)}
.md-date{font-family:var(--serif);font-size:clamp(1.05rem,2.6vw,1.35rem);line-height:1.15}
.md-read{font-size:.86rem;color:#cfe0e2}
.tip{position:absolute;transform:translate(-50%,-100%);background:rgba(8,26,38,.9);color:#fff;font-size:.8rem;padding:.2rem .5rem;border-radius:6px;pointer-events:none;white-space:nowrap;margin:0}
.pop{position:absolute;z-index:5;width:15.5rem;background:var(--card);color:var(--ink);border-radius:12px;padding:.7rem .9rem .8rem;
  box-shadow:0 10px 30px -8px rgba(0,0,0,.45);border:1px solid var(--line)}
.pop.sheet{left:.4rem;right:.4rem;bottom:.4rem;width:auto;top:auto}
.pop.sheet.top{top:.4rem;bottom:auto}
.pop h4{margin:0 1.6rem .25rem 0;font-family:var(--serif);font-size:1.15rem}
.pop p{margin:0 0 .5rem;font-size:.92rem;line-height:1.4}
.pop-x{position:absolute;top:.25rem;right:.25rem;width:36px;height:36px;border:0;background:transparent;color:var(--muted);font-size:1.4rem;cursor:pointer;border-radius:50%}
.pop-go{font-weight:650;font-size:.92rem}
.wallbox{min-width:0}
.wallbox h3{color:var(--stage-ink);margin:.1rem 0 .55rem;font-size:1rem;font-weight:600}
#wall{display:block;border-radius:8px;cursor:crosshair;touch-action:manipulation}
.legend{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;font-size:.82rem;color:var(--stage-muted);margin-top:.55rem;position:relative}
.legend .bar{height:.6rem;flex:1 1 10rem;border-radius:99px}
.legend.days{flex-wrap:nowrap}
.legend.days span:first-child,.legend.days span:last-child{white-space:nowrap}
.legend .barwrap{position:relative;flex:1 1 10rem;display:flex}
.legend .barwrap .bar{flex:1}
.legend .tick20{position:absolute;top:-4px;bottom:-4px;width:2px;background:#fff;left:63.6%}
.legend .lab20{position:absolute;top:.85rem;left:63.6%;transform:translateX(-50%);font-size:.72rem;color:var(--stage-ink)}
.legend{padding-bottom:1rem}
.controls{display:grid;grid-template-columns:auto 1fr 1fr;gap:.6rem 1rem;align-items:center;margin-top:.9rem}
@media (max-width:560px){.controls{grid-template-columns:1fr 1fr}.controls .play{grid-column:1/-1}}
.btn{font:inherit;border:1px solid var(--accent);background:var(--accent);color:var(--accent-ink);
  border-radius:99px;padding:.5rem 1.05rem;min-height:44px;cursor:pointer;font-weight:650}
.btn.play{background:#f6c46d;border-color:#f6c46d;color:#2a1a08;min-width:10.5rem}
.btn.play[data-on="1"]{background:transparent;color:#f6c46d}
.btn.ghost{background:transparent;color:var(--accent)}
.btn.small{min-height:38px;padding:.3rem .8rem;font-size:.92rem}
.btn:hover{filter:brightness(1.07)}
.rng{display:flex;flex-direction:column;gap:.15rem;flex:1 1 9rem;font-size:.82rem;color:var(--stage-muted)}
.rng b{color:var(--stage-ink);font-weight:650}
.rng input{width:100%;accent-color:#f6c46d;min-height:28px}
.wall-status{min-height:1.4em;color:var(--stage-muted);font-size:.86rem;margin:.4rem 0 0}
.stage .standfirst-note{color:var(--stage-muted);margin:1rem 0 0;max-width:62rem}

/* ---------- picker ---------- */
.big-num{font-family:var(--serif);font-size:clamp(2.2rem,6vw,3.4rem);color:var(--warm);line-height:1}
.stat-row{display:flex;gap:1.6rem;flex-wrap:wrap;margin:1.2rem 0}
.stat{min-width:9rem}
.stat .lbl{color:var(--muted);font-size:.9rem;max-width:15rem}
figure{margin:1.2rem 0}
figcaption{color:var(--muted);font-size:.92rem;margin-top:.5rem;line-height:1.5}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:1rem clamp(.8rem,3vw,1.3rem)}
.toolbar{display:flex;gap:.6rem;flex-wrap:wrap;align-items:end;margin:.8rem 0}
.field{display:flex;flex-direction:column;gap:.25rem}
.field label,.lbl-like{font-size:.88rem;color:var(--muted);font-weight:600}
input[type="date"]{font:inherit;padding:.55rem .7rem;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink);min-height:44px}
.resort-btns{display:flex;flex-wrap:wrap;gap:.45rem;margin:.6rem 0}
.resort-btns button{font:inherit;font-size:.95rem;border:1px solid var(--line);background:var(--chip);color:var(--ink);
  border-radius:99px;padding:.45rem .85rem;min-height:44px;cursor:pointer}
.resort-btns button[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:700}
.result{border-left:4px solid var(--warm);padding:.4rem 0 .4rem 1rem;margin:1rem 0}
.result .big{font-size:1.22rem;line-height:1.45}
.chance{display:flex;flex-direction:column;gap:.35rem;margin:.6rem 0 .8rem}
.ch-row{display:flex;align-items:center;gap:.28rem}
.ch-lab{width:6.2rem;font-size:.85rem;color:var(--muted)}
.ch-row i{width:18px;height:18px;border-radius:50%;border:1.5px solid var(--line);display:inline-block}
.ch-row.then i.on{background:#7cc4bd;border-color:#5aa9a2}
.ch-row.now i.on{background:#f29a57;border-color:#d97c3c}
.share-row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin:.8rem 0 0}
.share-row .sh-lbl{color:var(--muted);font-size:.92rem;margin-right:.2rem}
@media (max-width:440px){.share-row .sh-lbl{flex-basis:100%}}
.share-row a,.share-row button{width:40px;height:40px;border-radius:50%;border:1px solid var(--line-soft);
  display:grid;place-items:center;color:var(--ink);background:transparent;cursor:pointer}
@media (pointer:coarse){.share-row a,.share-row button{width:44px;height:44px}}
.share-row a:hover,.share-row button:hover{color:var(--accent);border-color:var(--accent)}
.share-row svg{width:18px;height:18px;fill:currentColor}
.share-status{min-height:1.2em;color:var(--muted);font-size:.88rem;margin:.3rem 0}

/* ---------- small maps ---------- */
.minis{margin:1.4rem 0 1.8rem}
.minis-h{margin:0 0 .6rem;color:var(--ink);font-size:1rem}
.minis-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(.5rem,2vw,1.4rem)}
.mini{position:relative;min-width:0}
.mini canvas{display:block;border-radius:10px;margin:0 auto}
.mini-y{position:absolute;left:.5rem;top:.4rem;font-family:var(--serif);font-size:clamp(.95rem,2.4vw,1.25rem);color:var(--mapink);
  background:var(--maphalo);padding:.05rem .45rem;border-radius:6px}
.legend.days{color:var(--muted)}

/* ---------- tables, ribbons, method ---------- */
table{border-collapse:collapse;width:100%;font-size:.96rem}
th,td{border-bottom:1px solid var(--line-soft);padding:.5rem .55rem;text-align:right}
th:first-child,td:first-child{text-align:left}
thead th{color:var(--muted);font-size:.84rem;border-bottom:2px solid var(--line)}
.tbl-scroll{overflow-x:auto}
details{margin:1rem 0}
summary{cursor:pointer;color:var(--accent);font-weight:600}
.rib-h{font-size:1rem;margin:1.6rem 0 .3rem}
.rib-key{font-size:.85rem;color:var(--muted);margin:.2rem 0 .6rem}
.rib-key .k{display:inline-block;width:1.6rem;height:.45rem;border-radius:3px;vertical-align:middle;margin:0 .25rem 0 .6rem}
.rib-key .k:first-child{margin-left:0}
.rib-key .k.old{background:var(--muted);opacity:.55}
.rib-key .k.new{background:linear-gradient(90deg,#f0a95a,#df6642)}
.ribbon{margin:.4rem 0 1rem}
.rib-row{display:grid;grid-template-columns:11rem 1fr;gap:.6rem;align-items:center;margin:.3rem 0}
.rib-name{font-size:.9rem;text-align:right;color:var(--ink);line-height:1.25}
.rib-track{position:relative;height:1.5rem;background:var(--bg2);border-radius:6px}
.rib-band{position:absolute;border-radius:5px}
.rib-band.old{top:.22rem;height:.45rem;background:var(--muted);opacity:.55}
.rib-band.new{top:.78rem;height:.45rem;background:linear-gradient(90deg,#f0a95a,#df6642)}
.rib-axis{display:flex;justify-content:space-between;color:var(--muted);font-size:.78rem;margin-left:11.6rem}
@media (max-width:640px){.rib-row{grid-template-columns:6.8rem 1fr}.rib-name{font-size:.8rem}.rib-axis{margin-left:7.4rem;font-size:.7rem}}
.neighbours{background:var(--bg2);border-radius:14px;padding:1rem 1.2rem;margin:2rem 0}
.method{color:var(--muted);font-size:.97rem}
footer{border-top:1px solid var(--line);margin-top:3rem;padding:1.4rem clamp(1rem,4vw,1.5rem) 2.2rem;
  display:flex;gap:.6rem 1.2rem;flex-wrap:wrap;color:var(--muted);font-size:.9rem;max-width:76rem;margin-inline:auto}
footer a{color:var(--ink)}
.rail{position:fixed;right:.7rem;top:50%;transform:translateY(-50%);z-index:40;display:flex;flex-direction:column;gap:.6rem;opacity:0;transition:opacity .4s}
body.rail-on .rail{opacity:1}
.rail a{width:7px;height:7px;border-radius:50%;background:var(--line);position:relative;display:block}
.rail a::before{content:"";position:absolute;inset:-8px}
.rail a[aria-current]{background:var(--warm)}
.rail a span{position:absolute;right:1rem;top:50%;transform:translateY(-50%);white-space:nowrap;background:var(--card);
  border:1px solid var(--line);color:var(--ink);font-size:.78rem;padding:.12rem .5rem;border-radius:6px;opacity:0;pointer-events:none}
.rail a:hover span,.rail a:focus-visible span{opacity:1}
@media (max-width:1300px){.rail{display:none}}
.to-top{position:fixed;right:1rem;bottom:calc(1rem + env(safe-area-inset-bottom));z-index:45;width:44px;height:44px;
  border-radius:50%;border:1px solid var(--line);background:var(--bg);color:var(--ink);cursor:pointer;display:none;place-items:center;opacity:.8}
.to-top svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}
.to-top.show{display:grid}
@media (max-width:600px){.to-top{opacity:.55;right:.5rem;bottom:calc(.5rem + env(safe-area-inset-bottom))}}
@media print{.topbar,.rail,.to-top,.share-row,.theme-btn,.controls{display:none!important}}
