/* ---------------------------------------------------------------------------
   Climate & Infrastructure Almanac.
   The map is the dominant element. Two columns only from 1280px, where the
   inspector can be restrained without becoming a narrow rail; below that the
   map takes the full width and the evidence sits under it in a compact grid.
   --------------------------------------------------------------------------- */
.alm{--alm-map-h:clamp(220px,38vh,320px);--alm-line:#DFE7EB;--alm-quiet:#567684}
.alm-head{max-width:64ch;margin-bottom:1.5rem}
.alm-eyebrow{font-size:.8125rem;font-weight:600;color:var(--teal);margin:0 0 .35rem}
.alm-head h1{margin:0 0 .5rem}
.alm-lede{color:var(--slate);margin:0 0 .75rem}
.alm-coverage{font-size:.875rem;color:var(--slate);background:var(--teal-soft);border-radius:8px;padding:.6rem .85rem;margin:0}
.alm-work{display:block}
.alm-stage{min-width:0}

.alm-bar{display:grid;grid-template-columns:1fr;gap:.6rem;margin-bottom:.85rem}
.alm-picker{position:relative}
.alm-pick{width:100%;min-height:44px;display:flex;align-items:center;gap:.6rem;background:#fff;
  border:1px solid var(--mist);border-radius:10px;padding:.5rem .9rem;cursor:pointer;text-align:left;font:inherit}
.alm-pick-l{font-size:.75rem;font-weight:600;color:var(--alm-quiet);flex:none}
.alm-pick-v{font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.alm-pick[aria-expanded="true"]{border-color:var(--teal);box-shadow:0 0 0 3px var(--teal-soft)}
.alm-pop{position:absolute;z-index:30;top:calc(100% + .4rem);left:0;right:0;background:#fff;
  border:1px solid var(--mist);border-radius:10px;box-shadow:0 18px 40px -20px rgba(2,52,88,.45);
  padding:.5rem;max-height:min(60vh,30rem);overflow:auto}
.alm-jl{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.alm-jl button{width:100%;min-height:44px;display:flex;align-items:baseline;gap:.6rem;background:none;
  border:0;border-radius:8px;padding:.5rem .6rem;cursor:pointer;text-align:left;font:inherit}
.alm-jl button:hover{background:var(--teal-soft)}
.alm-nm{font-weight:600;color:var(--ink);flex:1}
.alm-bs{font-size:.75rem;color:var(--alm-quiet)}
.alm-jl button[aria-current="true"]{background:var(--ink)}
.alm-jl button[aria-current="true"] .alm-nm,.alm-jl button[aria-current="true"] .alm-bs{color:#fff}
.alm-topics{display:grid;gap:.85rem}
.alm-tgroup h3{font-size:.75rem;font-weight:600;color:var(--alm-quiet);margin:0 0 .35rem}
.alm-chips{display:flex;flex-wrap:wrap;gap:.35rem}
.alm-chips button{min-height:44px;background:#fff;border:1px solid var(--mist);border-radius:999px;
  padding:.35rem .85rem;cursor:pointer;font:inherit;font-size:.875rem;font-weight:600;color:var(--alm-quiet)}
.alm-chips button[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:#fff}

.alm-mapwrap{position:relative;background:linear-gradient(180deg,#FAFCFD,#EDF3F6);
  border:1px solid var(--alm-line);border-radius:14px;overflow:hidden;min-height:var(--alm-map-h)}
.alm-map{display:block;width:100%;height:var(--alm-map-h)}

.alm-bound{fill:#7FB3C4;stroke:#023458;stroke-width:.8;cursor:pointer}
.alm-bound:hover{fill:#5F9DB2}
.alm-bound:focus{outline:none;fill:#5F9DB2;stroke:var(--ember);stroke-width:2}
.alm-bound:focus-visible{stroke:var(--ember);stroke-width:2.4}
@media (prefers-reduced-motion:reduce){.alm-bound{transition:none}}
.alm-bound.alm-sel{fill:var(--ink);stroke:var(--ember);stroke-width:1.8}
.alm-state{position:absolute;left:1rem;top:1rem;margin:0;font-size:.875rem;color:var(--alm-quiet);
  background:rgba(255,255,255,.92);border-radius:8px;padding:.5rem .75rem;max-width:32rem}
.alm-fail{border-left:3px solid var(--ember);color:var(--ink)}
.alm-ctl,.alm-pad{position:absolute;display:grid;gap:.35rem}
/* display:grid beat the hidden attribute, so the map controls kept a 143px box and
   stayed in the tab order while closed. */
.alm-ctl[hidden],.alm-pad[hidden]{display:none}
.alm-ctl{top:.75rem;right:.75rem}
.alm-pad{bottom:.75rem;right:.75rem;grid-template-columns:repeat(3,44px);
  grid-template-areas:". u ." "l . r" ". d ."}
.alm-pad #alm-pu{grid-area:u}.alm-pad #alm-pl{grid-area:l}.alm-pad #alm-pr{grid-area:r}.alm-pad #alm-pd{grid-area:d}
.alm-ctl button,.alm-pad button{min-height:44px;min-width:44px;display:grid;place-items:center;cursor:pointer;
  background:rgba(255,255,255,.94);border:1px solid var(--mist);border-radius:9px;font:inherit;
  font-size:1.05rem;color:var(--ink)}
.alm-ctl button:hover,.alm-pad button:hover{border-color:var(--teal);background:#fff}
.alm-pending{position:static;margin:.6rem;max-width:none;pointer-events:none;
  background:rgba(255,255,255,.96);border:1px solid var(--mist);border-left:3px solid var(--teal);
  border-radius:10px;padding:.55rem .8rem;font-size:.8125rem;color:var(--ink)}

.alm-panel{min-width:0}
.alm-panel-h{font-size:1.125rem;margin:0 0 .6rem}
.alm-sum{background:#fff;border:1px solid var(--alm-line);border-radius:12px;padding:1rem 1.1rem}
.alm-jname{font-size:1.35rem;font-weight:650;color:var(--ink);margin:0}
.alm-status{font-size:.8125rem;font-weight:600;color:var(--teal);margin:.2rem 0 .6rem}
.alm-status-pending{color:var(--alm-quiet)}
.alm-tally{font-size:.9375rem;margin:0}
.alm-tally-note{display:block;margin-top:.3rem;font-size:.8125rem;color:var(--alm-quiet)}
.alm-avail{margin-top:.75rem;border-top:1px solid var(--alm-line)}
.alm-avail>summary{cursor:pointer;padding:.6rem 0 0;font-size:.875rem;font-weight:600;color:var(--teal);min-height:44px;display:flex;align-items:center}
.alm-avail-body{display:grid;gap:.85rem;padding-bottom:.5rem}
.alm-avail-group h4{margin:0 0 .3rem;font-size:.75rem;font-weight:600;color:var(--alm-quiet)}
.alm-avail-group ul{list-style:none;margin:0;padding:0}
.alm-avail-group li{display:flex;justify-content:space-between;gap:.75rem;padding:.25rem 0;
  border-bottom:1px dotted var(--mist-soft);font-size:.875rem}
.alm-s{color:var(--alm-quiet);font-size:.8125rem;text-align:right}
.alm-s.yes{color:var(--teal);font-weight:600}
.alm-notes{margin-top:.85rem;background:var(--teal-soft);border-radius:12px;padding:.9rem 1.05rem;font-size:.8125rem;display:grid;gap:.35rem}
.alm-notes h3{font-size:.8125rem;margin:0}
.alm-cards{display:grid;gap:.85rem;margin-top:.85rem}
.alm-card{background:#fff;border:1px solid var(--alm-line);border-radius:12px;padding:1rem 1.1rem}
.alm-card-h{display:flex;align-items:baseline;justify-content:space-between;gap:.6rem;margin-bottom:.5rem}
.alm-card-h h3{font-size:1rem;margin:0}
.alm-pill{font-size:.6875rem;font-weight:600;color:var(--teal);background:var(--teal-soft);border-radius:999px;padding:.15rem .55rem;white-space:nowrap}
.alm-pill-thin{color:var(--ember-on-wash);background:var(--orange-wash)}
.alm-obs{font-size:1.5rem;font-weight:600;color:var(--ink);margin:0;line-height:1.2}
.alm-u{font-size:.8125rem;font-weight:600;color:var(--alm-quiet)}
.alm-obsub{font-size:.8125rem;color:var(--alm-quiet);margin:.15rem 0 0}
.alm-rows{display:grid;gap:.2rem;margin:.75rem 0 0;font-size:.875rem}
.alm-rows>div{display:flex;justify-content:space-between;gap:.85rem;padding:.3rem 0;border-top:1px solid var(--mist-soft)}
.alm-rows dt{color:var(--alm-quiet)}
.alm-rows dd{margin:0;text-align:right}
.alm-dash{color:var(--alm-quiet)}
.alm-lim{margin:.6rem 0 0;font-size:.8125rem;background:var(--paper);border-left:3px solid var(--mist);border-radius:0 6px 6px 0;padding:.5rem .75rem}
.alm-src{margin:.7rem 0 0;font-size:.75rem;color:var(--alm-quiet)}
.alm-empty{background:#fff;border:1px dashed var(--mist);border-radius:12px;padding:1rem 1.1rem;font-size:.875rem;color:var(--alm-quiet);margin-top:.85rem}
.alm-empty-h{font-size:1.125rem;font-weight:650;color:var(--ink);margin:0 0 .3rem}
.alm-meth{margin-top:1.75rem;border-top:1px solid var(--alm-line);padding-top:.85rem}
.alm-meth>summary{cursor:pointer;font-size:.875rem;font-weight:600;color:var(--teal);min-height:44px;display:flex;align-items:center}
.alm-meth-body{max-width:78ch;font-size:.875rem;color:var(--slate);display:grid;gap:.5rem;margin-top:.5rem}
.alm-meth-body h3{font-size:.875rem;color:var(--ink);margin:.5rem 0 0}

@media (min-width:768px){
  .alm{--alm-map-h:clamp(260px,42vh,380px)}
  /* the notice becomes an overlay only where it cannot reach the pan control */
  .alm-pending{position:absolute;left:.75rem;bottom:.75rem;margin:0;max-width:min(22rem,calc(100% - 10rem))}
  .alm-bar{grid-template-columns:minmax(15rem,22rem) 1fr}
  .alm-pop-wide{width:min(34rem,90vw)}
  .alm-cards{grid-template-columns:1fr 1fr}
  .alm-notes,.alm-empty{grid-column:1 / -1}
}
@media (min-width:1280px){
  .alm{--alm-map-h:clamp(300px,46vh,420px)}
  .alm-work{display:block}
  .alm-cards{grid-template-columns:1fr}
}
@media (min-width:1600px){.alm{--alm-map-h:clamp(320px,48vh,460px)}}

/* v2 integration: brighter surround, same accepted map and evidence panel */
.alm-mapwrap{background:var(--ici-sky);border-radius:var(--ici-radius);padding:.75rem}
/* Land and water are told apart by hue, not by lightness. Blue on blue made a zoomed-in
   coastline ambiguous: a pin correctly placed inland read as floating offshore. Water is
   pale blue, land is warm stone, and the selected land stays a land tone rather than going
   near-black. The same system is used for both countries. */
.alm-map{background:#DCEEF4;border-radius:var(--ici-radius)}
.alm-bound{fill:#F4F1E8;stroke:#0B5968;stroke-width:.6;cursor:pointer}
.alm-bound:hover{fill:#E7E1CE}
.alm-bound:focus-visible{stroke:#0B5968;stroke-width:2.6;outline:none}
.alm-bound.alm-sel{fill:#CFE4DF;stroke:#0B5968;stroke-width:2.2}
.alm-panel{background:var(--ici-white);border:1px solid var(--ici-hairline);border-radius:var(--ici-radius)}
.alm-state{font-weight:650}


/* ---- Evidence below the map, across the content width ---- */
.alm-work{display:block}
.alm-stage{width:100%;min-width:0}
.alm-evidence{display:block;width:100%;max-width:none;margin:1.75rem 0 0;
  border:0;background:transparent;padding:0;float:none;position:static}
.alm-evgrid{display:grid;gap:1rem;grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:1200px){.alm-evgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:760px){.alm-evgrid{grid-template-columns:1fr}}
.alm-evcard details{margin:.45rem 0 0}
.alm-evcard summary{cursor:pointer;font-size:.85rem;color:var(--ici-teal-ink)}
.alm-evcard details p,.alm-evcard details li{font-size:.82rem;color:#40525E}

.alm-fsaform{background:var(--ici-white);border:1px solid var(--ici-hairline);border-radius:var(--ici-radius);padding:.9rem 1.1rem;margin:0 0 1rem}
.alm-fsaform label{display:block;font-size:.95rem}
.alm-fsahint{display:block;font-size:.82rem;color:#40525E;margin:.2rem 0 .55rem;font-weight:400}
.alm-fsarow{display:flex;gap:.5rem;flex-wrap:wrap}
.alm-fsarow input{min-height:2.75rem;width:7rem;padding:.4rem .6rem;font-family:var(--font-data);
  font-size:1rem;text-transform:uppercase;border:1px solid var(--ici-hairline);border-radius:var(--ici-radius)}
.alm-fsarow button{min-height:2.75rem;padding:.4rem .9rem;border-radius:var(--ici-radius);
  border:1px solid var(--ici-teal-ink);background:var(--ici-teal);color:var(--ici-navy);font-weight:650;cursor:pointer}
.alm-fsarow button#alm-fsaclear{background:transparent;color:var(--ici-teal-ink)}
.alm-fsarow input:focus-visible,.alm-fsarow button:focus-visible{outline:3px solid var(--ici-navy);outline-offset:2px}
.alm-fsamsg{margin:.5rem 0 0;font-size:.88rem;color:#40525E;min-height:1.2em}
.alm-scope{font-size:.9rem;color:#40525E;margin:.4rem 0 0}
.alm-scopenote{font-size:.82rem;color:#40525E;margin:.15rem 0 .35rem;font-style:italic}
.alm-rel summary{cursor:pointer;font-size:.85rem;color:var(--ici-teal-ink);margin-top:.4rem}
.alm-rel p,.alm-rel li{font-size:.85rem;color:#33424E}

.alm-opts{list-style:none;margin:.5rem 0 0;padding:0;display:grid;gap:.35rem}
.alm-opts button{min-height:2.75rem;width:100%;text-align:left;padding:.45rem .7rem;border:1px solid var(--ici-hairline);border-radius:var(--ici-radius);background:var(--ici-white);cursor:pointer;font:inherit}
.alm-opts button:hover,.alm-opts button:focus-visible{background:var(--ici-sky);outline:2px solid var(--ici-teal-ink)}
.alm-optarea{color:#40525E;font-size:.82rem}


.alm-evcard .alm-state{position:static;left:auto;top:auto;display:inline-block;
  margin:0 0 .45rem;padding:.2rem .55rem;font-size:.72rem;font-weight:650;letter-spacing:.05em;
  text-transform:uppercase;color:var(--ici-navy);background:var(--ici-sky);
  border:1px solid var(--ici-hairline);border-radius:999px;box-shadow:none;white-space:nowrap}
.alm-evcard h3{margin:0 0 .35rem}
.alm-evcard .alm-figure{margin:.15rem 0 .25rem}

/* Evidence cards: elevated, equal height, and openable into a detail dialog. */
.alm-evgrid{align-items:stretch}
.alm-evcard{position:relative;display:flex;flex-direction:column;
  background:linear-gradient(180deg,var(--ici-white) 0%,#F7FBFD 100%);
  border:1px solid var(--ici-hairline);border-radius:14px;padding:1.1rem 1.2rem 1rem;
  box-shadow:0 1px 2px rgba(2,52,88,.06),0 8px 22px rgba(2,52,88,.07);
  transition:box-shadow .15s ease,transform .15s ease,border-color .15s ease}
.alm-evcard:hover{box-shadow:0 2px 4px rgba(2,52,88,.08),0 14px 30px rgba(2,52,88,.12);
  transform:translateY(-2px);border-color:var(--ici-teal)}
.alm-evcard:focus-within{border-color:var(--ici-navy);box-shadow:0 0 0 3px rgba(2,52,88,.18)}
.alm-evcard::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;
  border-radius:14px 0 0 14px;background:var(--ici-teal)}
.alm-evcard h3{font-size:1.05rem;letter-spacing:-.01em;margin:0 0 .35rem}
.alm-evcard .alm-figure{font-size:1.65rem;line-height:1.1;margin:.15rem 0 .25rem}
.alm-evcard .alm-state{position:static;left:auto;top:auto;display:inline-block;
  margin:0 0 .45rem;padding:.2rem .55rem;font-size:.72rem;font-weight:650;letter-spacing:.05em;
  text-transform:uppercase;color:var(--ici-navy);background:var(--ici-sky);
  border:1px solid var(--ici-hairline);border-radius:999px;box-shadow:none;white-space:nowrap}
.alm-open{margin:auto 0 0;width:100%;min-height:2.75rem;display:flex;align-items:center;
  justify-content:space-between;gap:.5rem;padding:.55rem .8rem;font:inherit;font-size:.9rem;
  font-weight:650;color:var(--ici-navy);background:var(--ici-sky);cursor:pointer;
  border:1px solid var(--ici-hairline);border-radius:10px}
.alm-open:hover{background:var(--ici-teal);border-color:var(--ici-teal-ink)}
.alm-open:focus-visible{outline:3px solid var(--ici-navy);outline-offset:2px}

/* Detail dialog: opens over the page so the grid never stretches. */
.alm-detail{width:min(56rem,94vw);max-height:88vh;padding:0;border:0;border-radius:16px;
  box-shadow:0 24px 60px rgba(2,52,88,.28);color:var(--ici-ink);background:var(--ici-white)}
.alm-detail::backdrop{background:rgba(2,52,88,.45)}
.alm-d-head{position:sticky;top:0;z-index:1;display:flex;gap:1rem;align-items:flex-start;
  justify-content:space-between;padding:1.2rem 1.4rem 1rem;
  background:linear-gradient(180deg,var(--ici-sky) 0%,var(--ici-white) 100%);
  border-bottom:1px solid var(--ici-hairline);border-radius:16px 16px 0 0}
.alm-d-head h2{margin:0;font-size:1.3rem;color:var(--ici-navy)}
.alm-d-head h2:focus-visible{outline:3px solid var(--ici-navy);outline-offset:3px}
.alm-d-figure{margin:.3rem 0 .2rem;font-family:var(--font-data);font-size:1.7rem;color:var(--ici-navy)}
.alm-d-figure span{font-size:.9rem;color:#40525E}
.alm-d-note{margin:0;font-size:.88rem;color:#40525E}
.alm-d-close{flex:none;width:2.5rem;height:2.5rem;border-radius:50%;border:1px solid var(--ici-hairline);
  background:var(--ici-white);font-size:1.4rem;line-height:1;cursor:pointer;color:var(--ici-navy)}
.alm-d-close:hover{background:var(--ici-sky)}
.alm-d-close:focus-visible{outline:3px solid var(--ici-navy);outline-offset:2px}
.alm-d-body{padding:1rem 1.4rem 1.6rem;overflow-y:auto;max-height:calc(88vh - 7rem)}
.alm-d-body h3{margin:1.2rem 0 .5rem;font-size:1.05rem;color:var(--ici-navy)}
.alm-d-body h3:first-child{margin-top:0}
.alm-d-lede{font-size:.95rem;color:#33424E;margin:0 0 .8rem}
.alm-d-season{margin:.5rem 0 0}
.alm-d-season h5{margin:0 0 .2rem;font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:#5D6F7B}
.alm-d-season ul{list-style:none;margin:0;padding:0;display:grid;gap:.3rem}
.alm-d-season li{font-size:.88rem;color:#33424E;padding-left:.6rem;border-left:3px solid var(--ici-teal)}
.alm-d-professional_service,.alm-d-professional_assessment{border-left-color:var(--ici-sun)}
.alm-d-tag{display:inline-block;font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;
  background:var(--ici-sky);color:var(--ici-navy);border-radius:999px;padding:.1rem .45rem;margin-right:.4rem}
.alm-d-professional_service .alm-d-tag,.alm-d-professional_assessment .alm-d-tag{background:var(--ici-sun)}
.alm-d-limit{font-size:.82rem;color:#5D6F7B;margin:.8rem 0 0}
@media (max-width:640px){
  .alm-detail{width:100vw;max-width:100vw;max-height:100vh;height:100vh;border-radius:0;margin:0}
  .alm-d-head{border-radius:0}
  .alm-d-body{max-height:calc(100vh - 7rem)}
}
@media (min-width:760px){.alm-d-eq{display:block}}
@media print{.alm-detail,.alm-open{display:none !important}
  .alm-evcard{box-shadow:none;transform:none;border:0.6pt solid #444}}
@media (prefers-reduced-motion:reduce){.alm-evcard{transition:none}.alm-evcard:hover{transform:none}}

/* Dialog body: collapsible groups, then one collapsible item per asset. */
.alm-d-group{border:1px solid var(--ici-hairline);border-radius:12px;background:var(--ici-white);
  margin:0 0 .7rem;overflow:hidden}
.alm-d-group>summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:.6rem;
  justify-content:space-between;padding:.8rem 1rem;background:var(--ici-sky)}
.alm-d-group>summary::-webkit-details-marker{display:none}
.alm-d-group>summary h3{margin:0;font-size:1rem;color:var(--ici-navy)}
.alm-d-group>summary em{font-style:normal;font-size:.78rem;color:#40525E;white-space:nowrap}
.alm-d-group>summary::after{content:"\203A";margin-left:.2rem;font-size:1.3rem;line-height:1;
  color:var(--ici-navy);transform:rotate(90deg);transition:transform .15s ease}
.alm-d-group[open]>summary::after{transform:rotate(-90deg)}
.alm-d-group>summary:hover{background:var(--ici-teal)}
.alm-d-group>summary:focus-visible{outline:3px solid var(--ici-navy);outline-offset:-3px}
.alm-d-group>.alm-d-lede{margin:.8rem 1rem .4rem;font-size:.9rem;color:#33424E}
.alm-d-item{border-top:1px solid var(--ici-hairline)}
.alm-d-item>summary{cursor:pointer;list-style:none;display:flex;align-items:center;
  justify-content:space-between;gap:.6rem;padding:.65rem 1rem;font-size:.94rem;font-weight:650;
  color:var(--ici-navy);background:var(--ici-white)}
.alm-d-item>summary::-webkit-details-marker{display:none}
.alm-d-item>summary em{font-style:normal;font-weight:400;font-size:.76rem;color:#5D6F7B;white-space:nowrap}
.alm-d-item>summary::after{content:"+";display:grid;place-items:center;flex:none;width:1.4rem;
  height:1.4rem;border-radius:50%;background:var(--ici-sky);color:var(--ici-navy);
  font-family:var(--font-data);font-size:.85rem}
.alm-d-item[open]>summary::after{content:"\2212"}
.alm-d-item>summary:hover{background:#F3F9FC}
.alm-d-item>summary:focus-visible{outline:3px solid var(--ici-navy);outline-offset:-3px}
.alm-d-inner{padding:.2rem 1rem 1rem;background:#F7FBFD}
.alm-d-inner p{margin:.35rem 0;font-size:.9rem;color:#33424E}
@media (max-width:480px){
  .alm-d-group>summary,.alm-d-item>summary{flex-wrap:wrap}
  .alm-d-group>summary em,.alm-d-item>summary em{width:100%;order:3}
}

/* Column count must not depend on rule order. auto-fit collapses on its own. */
/* Explicit and ordered, so no earlier rule can win. Placed last in the sheet. */
.alm-evgrid{display:grid;gap:1rem;align-items:stretch;grid-template-columns:1fr}
@media (min-width:700px){.alm-evgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1100px){.alm-evgrid{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* The card leads with a sentence, not a badge. */
.alm-evcard .alm-plain{margin:.1rem 0 .55rem;font-size:.95rem;line-height:1.45;color:#22333F}
.alm-evcard .alm-figure{font-size:1.45rem;margin:.1rem 0 .3rem;color:var(--ici-navy)}
.alm-evcard .alm-figure .alm-u{font-size:.78rem;color:#5D6F7B}
.alm-evcard .alm-sub{font-size:.84rem;color:#40525E;margin:.15rem 0}
.alm-evcard .alm-src{font-size:.78rem;color:#5D6F7B;margin:.35rem 0 .2rem}
.alm-scope{font-size:.92rem;color:#33424E;margin:.5rem 0 0;max-width:70ch}

/* Dialog rows: a three-column grid so labels, notes and the toggle line up down the list
   instead of drifting with text length. */
.alm-d-item>summary,.alm-d-group>summary{display:grid;align-items:center;
  grid-template-columns:1fr auto 1.4rem;column-gap:.8rem}
.alm-d-group>summary h3{grid-column:1}
.alm-d-group>summary em,.alm-d-item>summary em{grid-column:2;text-align:right}
.alm-d-group>summary::after{grid-column:3;justify-self:center}
.alm-d-item>summary::after{grid-column:3;justify-self:center}
.alm-d-item>summary>span{grid-column:1;min-width:0;overflow-wrap:anywhere}
@media (max-width:480px){
  .alm-d-item>summary,.alm-d-group>summary{grid-template-columns:1fr 1.4rem;row-gap:.15rem}
  .alm-d-group>summary em,.alm-d-item>summary em{grid-column:1;grid-row:2;text-align:left}
  .alm-d-group>summary::after,.alm-d-item>summary::after{grid-column:2;grid-row:1}
}
/* Card body: consistent rhythm so the blocks line up across a row. */
.alm-evcard .alm-figure{display:flex;align-items:baseline;gap:.45rem;flex-wrap:wrap}
.alm-evcard .alm-sub+.alm-sub{margin-top:.1rem}
.alm-srcdetail{margin-top:.4rem}
.alm-srcdetail>summary{font-size:.8rem}
.alm-boundary{max-width:70ch;margin:1.6rem 0 0;font-size:.85rem;color:#5D6F7B}

.alm-sech{margin:1.6rem 0 .2rem;font-size:1.05rem;color:var(--ici-navy);
  padding-bottom:.35rem;border-bottom:2px solid var(--ici-teal)}
.alm-sechnote{margin:.3rem 0 .9rem;font-size:.88rem;color:#40525E;max-width:70ch}
.alm-demandgrid .alm-evcard::before{background:var(--ici-sun)}
.alm-demandgrid .alm-evcard .alm-figure{color:#8A5A00}

/* A real horizontal gutter, and nothing allowed to touch the viewport edge. */
.alm-evidence,.alm-work,.alm-fsaform{width:min(100%,1504px);margin-inline:auto;
  padding-inline:clamp(18px,4vw,48px);box-sizing:border-box}
.alm-evgrid{gap:clamp(16px,2vw,28px)}
.alm-evcard{min-width:0;overflow-wrap:anywhere}
.alm-evcard .alm-figure,.alm-evcard .alm-u,.alm-evcard .alm-src,.alm-evcard .alm-sub{
  min-width:0;overflow-wrap:anywhere;hyphens:auto}
.alm-qual{margin:.2rem 0 .5rem;font-size:.8rem;color:#5D6F7B;font-style:italic}
.alm-scope-strong{font-size:.95rem;color:#22333F;background:var(--ici-sky);
  padding:.7rem .9rem;border-radius:10px;border-left:4px solid var(--ici-sun)}
@media (max-width:600px){
  .alm-evidence,.alm-work,.alm-fsaform{
    padding-left:max(18px,env(safe-area-inset-left));
    padding-right:max(18px,env(safe-area-inset-right))}
  .alm-evcard{padding:20px 18px}
}

/* Confidence is visible, and not equal across cards. */
.alm-qual-row{display:flex;flex-wrap:wrap;gap:.35rem;margin:.1rem 0 .5rem}
.alm-qbadge,.alm-tbadge{font-size:.7rem;letter-spacing:.04em;text-transform:uppercase;
  padding:.18rem .5rem;border-radius:999px;white-space:nowrap;font-weight:650}
.alm-qbadge{background:var(--ici-teal);color:var(--ici-navy);cursor:help}
.alm-q-experimental_comparison{background:var(--ici-sun)}
.alm-q-published_inventory,.alm-q-historical_evidence{background:var(--ici-sky);color:var(--ici-navy)}
.alm-q-representative_area_context{background:var(--ici-sky);color:var(--ici-navy)}
.alm-q-direct_local_evidence{background:var(--ici-teal);color:var(--ici-navy)}
.alm-tbadge{background:transparent;color:#5D6F7B;border:1px solid var(--ici-hairline);font-weight:400}
@media (max-width:480px){.alm-qbadge,.alm-tbadge{white-space:normal}}

/* Evidence quality: visible meaning, keyboard and touch reachable, no hover dependency. */
.alm-ev{margin:.15rem 0 .6rem}
.alm-ev-line{margin:0 0 .25rem;display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}
.alm-ev-k{font-size:.78rem;color:#5D6F7B}
.alm-qbadge,.alm-tbadge{font-size:.7rem;letter-spacing:.04em;text-transform:uppercase;
  padding:.18rem .5rem;border-radius:999px;font-weight:650;white-space:normal}
.alm-qbadge{background:var(--ici-teal);color:var(--ici-navy)}
.alm-q-experimental_comparison{background:var(--ici-sun)}
.alm-q-published_inventory,.alm-q-historical_evidence,.alm-q-representative_area_context{
  background:var(--ici-sky);color:var(--ici-navy)}
.alm-tbadge{background:transparent;color:#5D6F7B;border:1px solid var(--ici-hairline);font-weight:400}
.alm-ev-mean{margin:.1rem 0 0;font-size:.82rem;line-height:1.45;color:#40525E}
.alm-ev-more{margin:.3rem 0 0}
.alm-ev-more>summary{cursor:pointer;font-size:.8rem;color:var(--ici-teal-ink);
  min-height:2.75rem;display:flex;align-items:center;padding:.2rem .1rem}
.alm-ev-more>summary:focus-visible{outline:3px solid var(--ici-navy);outline-offset:2px;border-radius:6px}
.alm-ev-more p{margin:.2rem 0 0;font-size:.82rem;line-height:1.45;color:#40525E}
.alm-gate{margin:.6rem 0 0;border:1px solid var(--ici-hairline);border-radius:12px;background:var(--ici-white)}
.alm-gate>summary{cursor:pointer;min-height:2.9rem;display:flex;align-items:center;
  padding:.7rem 1rem;font-weight:650;color:var(--ici-navy);background:var(--ici-sky);border-radius:12px}
.alm-gate>summary:focus-visible{outline:3px solid var(--ici-navy);outline-offset:-3px}
.alm-gate-note{margin:.8rem 1rem 0;font-size:.88rem;color:#40525E;max-width:70ch}
@media (max-width:390px){.alm-ev-mean,.alm-ev-more p{font-size:.84rem}}

/* The representative example is an action, not a footnote. */
.alm-gate{margin:1.1rem 0 0;border:0;border-radius:14px;overflow:hidden;
  box-shadow:0 2px 4px rgba(2,52,88,.10),0 12px 28px rgba(2,52,88,.14)}
.alm-gate>summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:1rem;
  justify-content:space-between;padding:1.05rem 1.25rem;background:var(--ici-navy);color:#fff;
  min-height:3.4rem;border-radius:14px}
.alm-gate>summary::-webkit-details-marker{display:none}
.alm-gate>summary:hover{background:#04416d}
.alm-gate>summary:focus-visible{outline:3px solid var(--ici-sun);outline-offset:3px}
.alm-gate-main{display:grid;gap:.2rem;min-width:0}
.alm-gate-title{font-size:1.05rem;font-weight:700;letter-spacing:-.01em}
.alm-gate-sub{font-size:.85rem;color:#BFDCEA;font-weight:400}
.alm-gate-chev{flex:none;width:2.1rem;height:2.1rem;border-radius:50%;background:var(--ici-sun);
  display:grid;place-items:center;position:relative}
.alm-gate-chev::before{content:"";width:.6rem;height:.6rem;border-right:2.5px solid var(--ici-navy);
  border-bottom:2.5px solid var(--ici-navy);transform:rotate(45deg) translate(-2px,-2px);
  transition:transform .15s ease}
.alm-gate[open]>summary{border-radius:14px 14px 0 0}
.alm-gate[open] .alm-gate-chev::before{transform:rotate(-135deg) translate(-2px,-2px)}
.alm-gate[open]{background:var(--ici-white);border:1px solid var(--ici-hairline)}
.alm-gate-note{margin:1rem 1.25rem 0}
@media (max-width:520px){
  .alm-gate>summary{padding:.9rem 1rem;gap:.7rem}
  .alm-gate-title{font-size:.98rem}
}
@media (prefers-reduced-motion:reduce){.alm-gate-chev::before{transition:none}}

.alm-secnote-more{margin:-.4rem 0 1rem;max-width:70ch}
.alm-secnote-more>summary{cursor:pointer;font-size:.85rem;color:var(--ici-teal-ink);
  min-height:2.75rem;display:flex;align-items:center}
.alm-secnote-more>summary:focus-visible{outline:3px solid var(--ici-navy);outline-offset:2px;border-radius:6px}
.alm-secnote-more p{margin:.2rem 0 0;font-size:.85rem;line-height:1.5;color:#40525E}

.alm-live{margin:1.2rem 0 0}
.alm-live-out{background:var(--ici-sky);border-radius:12px;padding:1rem 1.1rem}
.alm-alerts{display:grid;gap:.7rem}
.alm-alert{border:1px solid var(--ici-hairline);border-left:5px solid var(--ici-sun);
  border-radius:10px;background:var(--ici-white);padding:.9rem 1rem}
.alm-alert-k{margin:0;font-size:.74rem;text-transform:uppercase;letter-spacing:.06em;color:#5D6F7B}
.alm-alert h4{margin:.2rem 0 .4rem;font-size:1.05rem;color:var(--ici-navy)}
.alm-alert-text{margin:0;white-space:pre-wrap;font-family:inherit;font-size:.9rem;color:#22333F}
.alm-alert-t{margin:.5rem 0 0;font-size:.78rem;color:#5D6F7B}
.alm-prep{display:grid;gap:.7rem}
.alm-prep-g{border:1px solid var(--ici-hairline);border-radius:10px;padding:.8rem .95rem;background:var(--ici-white)}
.alm-prep-g h4{margin:0 0 .2rem;font-size:.95rem;color:var(--ici-navy);text-transform:capitalize}
.alm-prep-why{margin:0 0 .4rem;font-size:.8rem;color:#5D6F7B}
.alm-prep-g ul{list-style:none;margin:0;padding:0;display:grid;gap:.3rem}
.alm-prep-g li{font-size:.88rem;color:#33424E}
.alm-prep-tag{display:inline-block;font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;
  background:var(--ici-sky);color:var(--ici-navy);border-radius:999px;padding:.1rem .45rem;margin-right:.4rem}
.alm-live-now{margin:.3rem 0;font-family:var(--font-data);font-size:1.6rem;color:var(--ici-navy)}
.alm-live-src{margin:.15rem 0;font-size:.82rem;color:#40525E}

.alm-season{display:grid;gap:.7rem}
.alm-season-s{border:1px solid var(--ici-hairline);border-left:5px solid var(--ici-teal);
  border-radius:10px;background:var(--ici-white);padding:.8rem .95rem}
.alm-season-s h4{margin:0 0 .35rem;font-size:.98rem;color:var(--ici-navy)}
.alm-season-s ul{list-style:none;margin:0;padding:0;display:grid;gap:.3rem}
.alm-season-s li{font-size:.9rem;color:#33424E}
.alm-season-early{margin:.2rem 0 .6rem;font-size:.88rem;color:#8A5A00;background:#FFF3DA;
  padding:.5rem .7rem;border-radius:8px}
.alm-season-more{margin:.6rem 0 0}
.alm-season-more>summary{cursor:pointer;font-size:.84rem;color:var(--ici-teal-ink);
  min-height:2.75rem;display:flex;align-items:center}
.alm-season-more>summary:focus-visible{outline:3px solid var(--ici-navy);outline-offset:2px;border-radius:6px}
.alm-season-more p{margin:.2rem 0 0;font-size:.84rem;color:#40525E}
@media (min-width:760px){.alm-season{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Collapsible card groups, and room to breathe inside every card. */
.alm-group{border:1px solid var(--ici-hairline);border-radius:14px;background:var(--ici-white);
  margin:1.2rem 0 0;overflow:hidden}
.alm-group>summary{cursor:pointer;list-style:none;display:grid;align-items:center;
  grid-template-columns:1fr auto 1.6rem;column-gap:.9rem;padding:1rem 1.2rem;background:var(--ici-sky)}
.alm-group>summary::-webkit-details-marker{display:none}
.alm-group>summary h3{margin:0;font-size:1.05rem;color:var(--ici-navy)}
.alm-group>summary em{font-style:normal;font-size:.82rem;color:#40525E;white-space:nowrap}
.alm-group>summary::after{content:"";width:.7rem;height:.7rem;justify-self:center;
  border-right:2.5px solid var(--ici-navy);border-bottom:2.5px solid var(--ici-navy);
  transform:rotate(45deg) translate(-3px,-3px);transition:transform .15s ease}
.alm-group[open]>summary::after{transform:rotate(-135deg) translate(-3px,-3px)}
.alm-group>summary:hover{background:var(--ici-teal)}
.alm-group>summary:focus-visible{outline:3px solid var(--ici-navy);outline-offset:-3px}
.alm-group>.alm-sechnote{margin:1rem 1.2rem .2rem}
.alm-group>.alm-evgrid{padding:1rem 1.2rem 1.3rem}
.alm-group>.alm-secnote-more{margin:0 1.2rem}

/* Cards: more internal room, consistent rhythm, nothing crowding an edge. */
.alm-evcard{padding:1.35rem 1.4rem 1.25rem;row-gap:0}
.alm-evcard h3{margin:0 0 .5rem;line-height:1.3}
.alm-evcard .alm-ev{margin:.1rem 0 .75rem}
.alm-evcard .alm-plain{margin:.1rem 0 .85rem;line-height:1.55}
.alm-evcard .alm-figure{margin:.2rem 0 .55rem;line-height:1.2}
.alm-evcard .alm-sub{margin:.25rem 0;line-height:1.5}
.alm-evcard .alm-src{margin:.7rem 0 .35rem;line-height:1.45}
.alm-evcard .alm-srcdetail{margin-top:.5rem}
.alm-evcard .alm-open{margin-top:1.1rem}
@media (max-width:700px){
  .alm-group>summary{grid-template-columns:1fr 1.6rem;row-gap:.2rem;padding:.9rem 1rem}
  .alm-group>summary em{grid-column:1;grid-row:2;white-space:normal}
  .alm-group>summary::after{grid-column:2;grid-row:1}
  .alm-group>.alm-evgrid{padding:.9rem 1rem 1.1rem}
  .alm-group>.alm-sechnote{margin:.9rem 1rem .2rem}
  .alm-evcard{padding:1.15rem 1.15rem 1.1rem}
}
@media (min-width:768px) and (max-width:1099px){
  .alm-evcard{padding:1.3rem 1.35rem 1.2rem}
}

/* Cards must stretch to the row, and the call to action must sit on the floor of every card. */
.alm-evgrid{align-items:stretch}
.alm-evcard{display:flex;flex-direction:column;height:100%}
.alm-evcard>:last-child{margin-bottom:0}
.alm-evcard .alm-open{margin-top:auto;flex:none}
.alm-evcard .alm-srcdetail{margin-bottom:.2rem}

/* "What these comparisons do not measure" is a control, and its text is visibly contained. */
.alm-note{margin:.2rem 0 1rem}
.alm-note>summary{list-style:none;display:inline-block;cursor:pointer}
.alm-note>summary::-webkit-details-marker{display:none}
.alm-note-btn{display:inline-flex;align-items:center;gap:.5rem;min-height:2.5rem;
  padding:.45rem .9rem;border:1px solid var(--ici-hairline);border-radius:999px;
  background:var(--ici-white);color:var(--ici-navy);font-size:.85rem;font-weight:650}
.alm-note-btn::after{content:"+";font-family:var(--font-data);font-size:.95rem;color:var(--ici-teal-ink)}
.alm-note[open] .alm-note-btn::after{content:"\2212"}
.alm-note-btn:hover{background:var(--ici-sky)}
.alm-note>summary:focus-visible .alm-note-btn{outline:3px solid var(--ici-navy);outline-offset:2px}
.alm-note-body{margin:.6rem 0 0;padding:.85rem 1rem;background:var(--ici-sky);
  border-radius:10px;border-left:4px solid var(--ici-teal);max-width:70ch}
.alm-note-body p{margin:0;font-size:.88rem;line-height:1.55;color:#33424E}
.alm-live-code{font-family:var(--font-data);font-size:.78rem;color:#5D6F7B}

/* Postal-area reference point. Drawn only when a postal area has resolved, so the framed
   map has something to read at that zoom. Display only: it marks the published reference
   point for the area, never a building. */
/* Gold reads against both the stone land and the pale water; navy did not against either. */
.alm-pin-halo{fill:#F5B642;opacity:.30}
.alm-pin-dot{fill:#F5B642;stroke:#0B2C3A;stroke-width:1.6}
.alm-pin-label{font-family:var(--font-data,inherit);font-size:15px;font-weight:600;
  fill:var(--ici-navy);paint-order:stroke;stroke:#fff;stroke-width:4;stroke-linejoin:round}
@media (prefers-reduced-motion:no-preference){
  .alm-pin-halo{animation:alm-pin-pulse 2.4s ease-out infinite}
}
@keyframes alm-pin-pulse{0%{opacity:.28;r:12}70%{opacity:0;r:26}100%{opacity:0;r:26}}

/* The Almanac container had no horizontal gutter, so any direct child that was not inside a
   padded panel sat flush against the window edge. The methodology disclosure is the one that
   shows it: its text ran to the very left of the viewport with nothing between. */
.alm { padding-left: clamp(1rem, 4vw, 2.5rem); padding-right: clamp(1rem, 4vw, 2.5rem); }
.alm-meth { margin-top: 2rem; padding-top: 1.1rem; }
.alm-meth-body { padding-bottom: 1.5rem; line-height: 1.6; }
.alm-meth-body h3 { margin: 1.1rem 0 .2rem; }

/* "Systems not shown yet" is a control, not a paragraph.
   The whole list used to sit inside the summary, so the clickable label was four lines of
   comma-separated system names and there was nothing left to reveal. The summary is now a
   short pill with a count, and the list is what opens. */
.alm-season-more{margin:1rem 0 0}
.alm-season-more>summary{
  list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:.5rem;
  min-height:44px;padding:.45rem .9rem;border:1px solid var(--ici-hairline,#D9E3E8);
  border-radius:999px;background:#fff;font-size:.875rem;font-weight:600;
  color:var(--ici-teal-ink,#0A7A6A);white-space:nowrap}
.alm-season-more>summary::-webkit-details-marker{display:none}
.alm-season-more>summary::after{
  content:"+";font-size:1.05rem;line-height:1;font-weight:700;color:var(--ici-teal-ink,#0A7A6A)}
.alm-season-more[open]>summary::after{content:"\2212"}
.alm-season-more>summary:hover{border-color:var(--ici-teal-ink,#0A7A6A);background:var(--ici-sky,#E4F0F4)}
.alm-more-count{
  display:inline-flex;align-items:center;justify-content:center;min-width:1.5rem;height:1.5rem;
  padding:0 .35rem;border-radius:999px;background:var(--ici-sky,#E4F0F4);
  color:var(--ici-navy,#023458);font-size:.8rem;font-weight:700}
.alm-more-list{
  margin:.85rem 0 0;padding:.85rem 1rem;list-style:none;
  border-left:3px solid var(--ici-teal,#00B89C);background:#F6F9FB;border-radius:0 8px 8px 0;
  display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:.3rem .9rem}
.alm-more-list li{font-size:.875rem;line-height:1.45;color:#233B4A}
.alm-season-more p{margin:.7rem 0 0;font-size:.875rem;line-height:1.55;color:#45626F}
@media (max-width:40rem){
  .alm-more-list{grid-template-columns:1fr;padding:.75rem .85rem}
  .alm-season-more>summary{white-space:normal;text-align:left}
}

/* Country switch. Canada is the default and the United States is a second coverage set;
   the control makes which one is showing unmistakable rather than implying one map. */
.alm-country{display:flex;gap:.5rem;border:0;padding:0;margin:0 0 1rem}
.alm-country-opt{position:relative;display:inline-flex}
.alm-country-opt input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}
.alm-country-opt span{
  display:inline-flex;align-items:center;min-height:44px;padding:.45rem 1rem;
  border:1px solid var(--ici-hairline,#D9E3E8);border-radius:999px;background:#fff;
  font-size:.9rem;font-weight:600;color:var(--ici-navy,#023458);white-space:nowrap}
.alm-country-opt input:checked+span{
  background:var(--ici-navy,#023458);border-color:var(--ici-navy,#023458);color:#fff}
.alm-country-opt input:focus-visible+span{outline:3px solid var(--ici-teal-ink,#0A7A6A);outline-offset:2px}
.alm-country-opt input:hover+span{border-color:var(--ici-teal-ink,#0A7A6A)}
@media (max-width:30rem){.alm-country{flex-wrap:wrap}.alm-country-opt span{padding:.45rem .8rem}}

/* United States live block. Same visual weight as the Canadian sections so neither country
   reads as the more important one. */
.alm-live-sec{margin:1.6rem 0 0;padding-top:1.2rem;border-top:1px solid var(--ici-hairline,#D9E3E8)}
.alm-live-sec>h2{font-size:1.15rem;margin:0 0 .5rem;color:var(--ici-navy,#023458)}
.alm-live-sec>h3{font-size:.95rem;margin:1rem 0 .4rem;color:var(--ici-navy,#023458)}
.alm-count{margin:0 0 .6rem;font-size:.85rem;font-weight:700;color:var(--ici-teal-ink,#0A7A6A)}
.alm-alert,.alm-cmp{margin:.8rem 0;padding:.85rem 1rem;background:#F6F9FB;
  border-left:3px solid var(--ici-teal,#00B89C);border-radius:0 8px 8px 0}
.alm-alert h3,.alm-cmp h3{margin:0 0 .35rem;font-size:1rem;color:var(--ici-navy,#023458)}
.alm-alert p,.alm-cmp p{margin:0 0 .35rem;font-size:.9rem;line-height:1.5;color:#233B4A}
.alm-alert-area{font-size:.85rem;color:#45626F}
.alm-cmp .alm-figure{font-size:.95rem}
.alm-cmp .alm-figure strong{font-size:1.25rem;color:var(--ici-navy,#023458)}
.alm-fc{margin:.4rem 0;padding-left:1.1rem}
.alm-fc li{margin:0 0 .35rem;font-size:.9rem;line-height:1.5}
.alm-limits{margin:.4rem 0 0;padding-left:1.1rem}
.alm-limits li{margin:0 0 .35rem;font-size:.85rem;line-height:1.5;color:#45626F}
.alm-live-fail{margin:1.2rem 0 0;padding:.85rem 1rem;background:#FFF6EC;
  border-left:3px solid #D9822B;border-radius:0 8px 8px 0}
.alm-live-fail h2{margin:0 0 .3rem;font-size:1rem}
.alm-live-fail p{margin:0;font-size:.9rem;line-height:1.5}

/* The map is directly interactive, so it says so and shows focus. touch-action:pan-y keeps a
   one-finger swipe scrolling the page; two fingers are handled by the map itself. */
.alm-map{cursor:grab;touch-action:pan-y}
.alm-map.is-dragging{cursor:grabbing}
.alm-map:focus-visible{outline:3px solid var(--ici-teal-ink,#0A7A6A);outline-offset:2px}

/* The unavailable list is a collapsed container like the others, not a floating block. */
.alm-unavail-group>summary h3{display:inline}
.alm-unavail-list{margin:.6rem 0 0;padding-left:1.1rem;columns:2;column-gap:1.6rem}
.alm-unavail-list li{font-size:.9rem;line-height:1.5;color:#45626F;break-inside:avoid}
@media (max-width:700px){.alm-unavail-list{columns:1}}

/* The button pads sit over the map. Their container must not swallow gestures: at 390px the
   pan pad covered part of the map and a drag starting there did nothing. The buttons keep
   their own pointer events; the space around them belongs to the map. */
.alm-pad,.alm-ctl-zoom{pointer-events:none}
.alm-pad button,.alm-ctl-zoom button{pointer-events:auto}

/* Recorded flood events. Matches the established Canadian group containers: contained
   section, heading, count, chevron, three columns at desktop and one on mobile. */
.alm-flood-group .alm-gbody{padding-top:.25rem}
.alm-flood-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem}
@media (max-width:900px){.alm-flood-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.alm-flood-cards{grid-template-columns:1fr}}
.alm-floodcard .alm-flood-rec{font-variant-numeric:tabular-nums;opacity:.75;word-break:break-all}
.alm-flood-detail summary{cursor:pointer;margin-top:.5rem}
.alm-flood-detail>div{padding-top:.35rem}
.alm-flood-none{margin:.5rem 0}
.alm-flood-source{margin-top:.75rem}

/* United States measured-nearby: the unavailable topics sit inside the evidence group, in
   the same list pattern the Almanac already uses for topics with no source held. */
.alm-measured-pending{margin-top:1rem;padding-top:.75rem;border-top:1px solid rgba(0,0,0,.08)}
.alm-measured-pending h4{margin:0 0 .25rem}
.alm-measured-pending ul{margin:.5rem 0 0;padding-left:1.1rem}
.alm-measured-pending li{margin:.35rem 0}

/* ------------------------------------------------------------------ result group colour
   Subject colours, not severity. "What has been measured nearby" is teal wherever it
   appears, in Canada and the United States alike; the interpretation layer is blue; a
   recorded-hazard group carries the ICI orange as an accent only. None of these say
   anything about whether a condition is high, low, good or bad, and orange is deliberately
   never used for an unavailable or pending group, where it would read as a warning.

   Colour lives on the summary: a left accent, a tinted summary bar, and the count. The card
   area stays neutral so the data is read on white. */
.alm-group { border: 1px solid var(--aqua-100); border-radius: 10px; overflow: hidden;
  margin-block: 0.85rem; background: #FFFFFF; }
.alm-group > summary { display: flex; align-items: center; gap: 0.75rem;
  padding: 0.85rem 1rem 0.85rem 1.15rem; cursor: pointer; list-style: none;
  border-left: 4px solid var(--aqua-300); background: var(--aqua-50); }
.alm-group > summary::-webkit-details-marker { display: none; }
.alm-group > summary > h3 { margin: 0; flex: 1 1 auto; font-size: 1.0625rem; color: var(--ink); }
.alm-group > summary > em { font-style: normal; font-size: 0.875rem; color: var(--teal);
  background: #FFFFFF; border: 1px solid var(--aqua-300); border-radius: 999px;
  padding: 0.15rem 0.6rem; white-space: nowrap; }
/* chevron, visible while closed and rotated while open */
.alm-group > summary::after {
  content: ''; flex: 0 0 auto; width: 0.6rem; height: 0.6rem; margin-left: 0.2rem;
  border-right: 2px solid var(--teal); border-bottom: 2px solid var(--teal);
  transform: rotate(45deg); transform-origin: center; transition: transform 140ms ease; }
.alm-group[open] > summary::after { transform: rotate(-135deg); }
.alm-group > summary:hover { filter: brightness(0.985); }
.alm-group > summary:focus-visible { outline: 3px solid var(--focus-ring); outline-offset: -3px; }
.alm-group > *:not(summary) { padding-inline: 1.15rem; }
.alm-group > summary + * { padding-top: 0.9rem; }
.alm-group > *:last-child { padding-bottom: 1.1rem; }

/* measured evidence: teal */
.alm-g-measured > summary { border-left-color: var(--teal); background: var(--aqua-50); }
.alm-g-measured > summary > em { color: var(--teal); border-color: var(--aqua-300); }
.alm-g-measured > summary::after { border-color: var(--teal); }

/* interpretation: blue */
.alm-g-interpret > summary { border-left-color: var(--ink); background: #EAF1F7; }
.alm-g-interpret > summary > em { color: var(--ink); border-color: #B9CFE0; }
.alm-g-interpret > summary::after { border-right-color: var(--ink); border-bottom-color: var(--ink); }

/* recorded hazard history: ICI orange as an accent only, never a fill */
.alm-g-hazard > summary { border-left-color: #C9761A; background: var(--orange-wash); }
.alm-g-hazard > summary > em { color: #8A4F0F; border-color: #E8C79B; }
.alm-g-hazard > summary::after { border-right-color: #8A4F0F; border-bottom-color: #8A4F0F; }

/* pending and supporting topics: neutral with a teal detail, never orange */
.alm-g-pending > summary { border-left-color: var(--aqua-300); background: #F4F7F8; }
.alm-g-pending > summary > em { color: var(--teal); border-color: var(--aqua-300); }

@media (max-width: 45.999rem) {
  .alm-group > summary { flex-wrap: wrap; padding: 0.75rem 0.85rem 0.75rem 0.95rem; }
  .alm-group > summary > h3 { flex: 1 1 100%; font-size: 1rem; }
  .alm-group > summary > em { order: 2; }
  .alm-group > summary::after { order: 3; margin-left: auto; }
  .alm-group > *:not(summary) { padding-inline: 0.85rem; }
}
@media (prefers-reduced-motion: reduce) {
  .alm-group > summary::after { transition: none; }
}

/* ===========================================================================
   Map, R15.10.8. Supersedes the map colour, marker and control rules above and in
   ici-foundation.css section 5, which stay in place until the map styles are consolidated.

   Value hierarchy. Land near-white, water a pale cool blue a clear step darker, so the
   continent reads as a shape. Internal borders are hairlines; the coastline is the
   strongest line on the map, drawn as a silhouette outline of the land group so shared
   borders are never doubled. Markers are then the only saturated thing on the map.
   Light only, by founder ruling.
   =========================================================================== */
main[class] .alm-mapwrap { background: #FFFFFF; border: 1px solid #DCE5EA; padding: 0;
  display: flex; flex-wrap: wrap; align-items: center; }
main[class] #alm-map { flex: 1 1 100%; background: #D7E6EE; border-radius: 0; }
main[class] #alm-map .alm-land { filter: drop-shadow(0 0 0.4px #30505F) drop-shadow(0 0 0.4px #30505F); }
main[class] #alm-map path[data-code] { fill: #FCFCFA; stroke: #A9BAC4; stroke-width: 0.5;
  stroke-opacity: 0.9; vector-effect: non-scaling-stroke; transition: fill 160ms ease; }
main[class] #alm-map path[data-code]:hover { fill: #F1F5F2; filter: none; }
main[class] #alm-map path[data-code].alm-sel { fill: #E4F0EC; stroke: #0B5968; stroke-width: 1.6; }
main[class] #alm-map path[data-code]:focus-visible { stroke: var(--ember); stroke-width: 2; outline: none; }

/* Orientation labels: quiet, never interactive, beneath the markers. */
main[class] #alm-map .alm-labels { pointer-events: none; fill: #6E8594; font-weight: 600;
  letter-spacing: 0.08em; font-family: var(--font-body, system-ui, sans-serif); }
main[class] #alm-map .alm-labels text { paint-order: stroke; stroke: #FCFCFA; stroke-width: 3px;
  stroke-linejoin: round; }

/* Markers: one colour, encoding nothing. */
main[class] #alm-map .alm-marker { cursor: pointer; transform-box: fill-box; transform-origin: center;
  transition: transform 140ms ease; }
main[class] #alm-map .alm-marker-hit { fill: transparent; stroke: none; }
main[class] #alm-map .alm-marker-halo { fill: #FFFFFF; fill-opacity: 1; stroke: none; }
main[class] #alm-map .alm-marker-dot { fill: #0B6F8C; }
main[class] #alm-map .alm-marker:hover,
main[class] #alm-map .alm-marker:focus-visible { transform: scale(1.7); }
main[class] #alm-map .alm-marker:hover .alm-marker-dot,
main[class] #alm-map .alm-marker:focus-visible .alm-marker-dot { fill: #084F66; }
main[class] #alm-map .alm-marker:focus-visible .alm-marker-halo { stroke: var(--ember); stroke-width: 1.5; }

/* Entrance on a topic change: short, staggered, coarse tier first. */
@keyframes alm-marker-in { from { opacity: 0; transform: scale(0.3); } to { opacity: 1; transform: scale(1); } }
main[class] #alm-map .alm-enter .alm-marker {
  animation: alm-marker-in 260ms cubic-bezier(.2,.7,.3,1) both;
  animation-delay: calc(min(var(--k, 0) * 1.6ms, 320ms) + var(--enter-offset, 0ms)); }
@media (prefers-reduced-motion: reduce) {
  main[class] #alm-map .alm-enter .alm-marker { animation: none; }
  main[class] #alm-map .alm-marker, main[class] #alm-map path[data-code] { transition: none; }
}

/* The reading on hover and focus. */
main[class] .alm-tip { position: absolute; z-index: 3; pointer-events: none; max-width: 17rem;
  background: #FFFFFF; border: 1px solid #C9D6DD; border-radius: 6px; padding: 0.5rem 0.65rem;
  box-shadow: 0 1px 2px rgba(10, 42, 66, 0.08); display: grid; gap: 0.1rem; }
main[class] .alm-tip[hidden] { display: none; }
main[class] .alm-tip-s { font-weight: 650; color: var(--ink); font-size: 0.875rem; line-height: 1.3; }
main[class] .alm-tip-v { font-family: var(--font-display, inherit); font-weight: 700; color: #084F66;
  font-size: 1.25rem; line-height: 1.2; font-variant-numeric: tabular-nums; }
main[class] .alm-tip-v small { font-size: 0.75rem; font-weight: 600; color: #4E6573; }
main[class] .alm-tip-m { font-size: 0.75rem; color: #4E6573; line-height: 1.35; }
main[class] .alm-tip-n { font-size: 0.6875rem; color: #6E8594; margin-top: 0.15rem; }

/* Controls off the map: one quiet strip under the frame, zoom on the left, pan on the right.
   Every control is kept and keeps its 44px target; nothing sits on the land any more. */
main[class] .alm-mapwrap > .alm-ctl, main[class] .alm-mapwrap > .alm-pad {
  position: static; display: flex; gap: 0.25rem; padding: 0.4rem 0.5rem; grid-template: none; }
main[class] .alm-mapwrap > .alm-ctl[hidden], main[class] .alm-mapwrap > .alm-pad[hidden] { display: none; }
main[class] .alm-mapwrap > .alm-pad { margin-left: auto; }
main[class] .alm-pad #alm-pu, main[class] .alm-pad #alm-pl,
main[class] .alm-pad #alm-pr, main[class] .alm-pad #alm-pd { grid-area: auto; }
main[class] .alm-pad #alm-pl { order: 1; } main[class] .alm-pad #alm-pu { order: 2; }
main[class] .alm-pad #alm-pd { order: 3; } main[class] .alm-pad #alm-pr { order: 4; }
main[class] .alm-mapwrap > .alm-ctl button, main[class] .alm-mapwrap > .alm-pad button {
  min-width: 44px; min-height: 44px; background: transparent; border: 1px solid transparent;
  border-radius: 6px; box-shadow: none; color: #30505F; font-size: 1.05rem; }
main[class] .alm-mapwrap > .alm-ctl button:hover, main[class] .alm-mapwrap > .alm-pad button:hover {
  background: #EEF3F6; border-color: #DCE5EA; }
main[class] .alm-mapwrap > .alm-ctl button:focus-visible, main[class] .alm-mapwrap > .alm-pad button:focus-visible {
  outline: 2px solid var(--ember); outline-offset: 1px; }
main[class] .alm-mapwrap > .alm-ctl { border-right: 1px solid #E6EDF1; }

/* Frame proportions. The stations span roughly a square in this projection once the High
   Arctic is included, so a phone gets a near-square frame (no empty bands of ocean above and
   below) and a wide screen gets a taller frame so the continent is drawn larger. The drawing
   itself follows whatever shape results, so neither choice can letterbox. */
@media (max-width: 47.99rem) {
  main[class] .alm-mapwrap #alm-map { aspect-ratio: 1 / 1.02; height: auto; }
  main[class] .alm-mapwrap > .alm-ctl, main[class] .alm-mapwrap > .alm-pad { gap: 0; padding: 0.25rem; }
}
@media (min-width: 48rem) {
  main[class] .alm-mapwrap #alm-map { aspect-ratio: auto; height: clamp(440px, 66vh, 660px); max-height: none; }
}

/* Controls, second pass. The four pan arrows are retired (drag, two fingers and the arrow keys
   move the map), so the strip beneath the map is gone. Zoom in, zoom out and reset sit as one
   small group in the lower-left corner, which is open Pacific at the default view on every
   width; one quiet line under the map says how to move it. */
main[class] .alm-mapwrap { display: block; }
main[class] .alm-mapwrap > .alm-ctl { position: absolute; left: 0.6rem; bottom: 2.6rem; top: auto; right: auto;
  display: flex; flex-direction: row; gap: 0; padding: 0; background: #FFFFFF; border: 1px solid #CFDAE0;
  border-radius: 8px; overflow: hidden; box-shadow: 0 1px 2px rgba(10, 42, 66, 0.06); }
main[class] .alm-mapwrap > .alm-ctl[hidden] { display: none; }
main[class] .alm-mapwrap > .alm-ctl button { border: 0; border-radius: 0; background: #FFFFFF; }
main[class] .alm-mapwrap > .alm-ctl button + button { border-left: 1px solid #E3EAEE; }
main[class] .alm-mapwrap > .alm-ctl button:hover { background: #EEF3F6; border-color: #E3EAEE; }
main[class] .alm-hint { margin: 0; padding: 0.5rem 0.8rem; font-size: 0.8125rem; line-height: 1.4;
  color: #4E6573; background: #FFFFFF; border-top: 1px solid #E6EDF1; }
main[class] .alm-hint[hidden] { display: none; }

/* Offshore names for shapes too small to hold one, joined by a leader line. */
main[class] #alm-map .alm-leader { stroke: #9AAEB9; stroke-width: 0.75; vector-effect: non-scaling-stroke; }
main[class] #alm-map .alm-labels text.alm-callout { stroke: #D7E6EE; }

/* The hint line sits above the map, so the zoom group can anchor to the map's own lower edge
   whatever the hint wraps to. */
main[class] .alm-mapwrap { display: flex; flex-direction: column; }
main[class] .alm-mapwrap > .alm-hint { order: -1; border-top: 0; border-bottom: 1px solid #E6EDF1; }
main[class] .alm-mapwrap > .alm-ctl { bottom: 0.6rem; }
main[class] .alm-mapwrap > #alm-map { flex: none; }
/* On a phone the group stands upright in the open Pacific, clear of the western states. */
@media (max-width: 47.99rem) {
  main[class] .alm-mapwrap > .alm-ctl { flex-direction: column; }
  main[class] .alm-mapwrap > .alm-ctl button + button { border-left: 0; border-top: 1px solid #E3EAEE; }
}
