/* =========================================================
   Vlaanderen 2026 — guida di viaggio PWA
   Palette: carta / inchiostro / oro fiammingo / mattone
   Nessun font esterno: tutto offline-safe.
   ========================================================= */

:root{
  --paper:#f4f0e8;
  --paper-2:#ebe5d9;
  --card:#fffdf8;
  --ink:#1b1a17;
  --ink-2:#3f3b34;
  --muted:#7a7267;
  --line:#ddd4c4;
  --line-2:#c9bda6;
  --gold:#e0a409;
  --gold-d:#a97906;
  --brick:#9d3b2c;
  --moss:#4a6b42;
  --sky:#2f5d84;
  --plum:#5c3d63;
  --shadow:0 1px 0 rgba(27,26,23,.05), 0 6px 24px -12px rgba(27,26,23,.28);
  --radius:14px;
  --serif: "Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,"Times New Roman",serif;
  --sans: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --mono: ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --topbar-h:56px;
  --tabbar-h:60px;
  /* L'inset di sistema in basso è 34px sugli iPhone con home indicator e
     rende la tabbar sproporzionata. Le icone sono già alte abbastanza da
     restare toccabili, quindi lo limitiamo. */
  --safe-b:env(safe-area-inset-bottom, 0px);       /* fallback */
  --safe-b:min(env(safe-area-inset-bottom, 0px), 6px);
}

@media (prefers-color-scheme: dark){
  :root{
    --paper:#15140f;
    --paper-2:#1d1b15;
    --card:#211f19;
    --ink:#f0ebe0;
    --ink-2:#cfc7b6;
    --muted:#9a9184;
    --line:#332f26;
    --line-2:#463f33;
    --gold:#f0b93a;
    --gold-d:#f0b93a;
    --brick:#d4705e;
    --moss:#89b07c;
    --sky:#7fb0dd;
    --plum:#b98ec2;
    --shadow:0 1px 0 rgba(0,0,0,.4), 0 8px 26px -14px rgba(0,0,0,.9);
  }
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  background:var(--paper);
  color:var(--ink);
  font-family:var(--sans);
  font-size:16px;
  line-height:1.55;
  padding-bottom:calc(var(--tabbar-h) + var(--safe-b));
  overflow-wrap:break-word;
}
img{max-width:100%}
a{color:inherit}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}

/* ---------- Topbar ---------- */
.topbar{
  position:sticky;top:0;z-index:40;
  height:calc(var(--topbar-h) + env(safe-area-inset-top));
  padding-top:env(safe-area-inset-top);
  display:flex;align-items:center;gap:10px;
  padding-inline:14px;
  background:color-mix(in srgb,var(--paper) 88%,transparent);
  backdrop-filter:saturate(180%) blur(12px);
  -webkit-backdrop-filter:saturate(180%) blur(12px);
  border-bottom:1px solid var(--line);
}
.topbar .back{
  width:34px;height:34px;border-radius:10px;display:none;
  align-items:center;justify-content:center;border:1px solid var(--line);
  background:var(--card);flex:0 0 auto;
}
.topbar.has-back .back{display:flex}
.topbar h1{
  font-family:var(--serif);font-size:19px;font-weight:600;margin:0;
  letter-spacing:.1px;flex:1;min-width:0;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.topbar .flag{
  width:22px;height:22px;border-radius:4px;flex:0 0 auto;
  background:linear-gradient(90deg,#000 0 33.3%,var(--gold) 33.3% 66.6%,#c8102e 66.6%);
  box-shadow:0 0 0 1px rgba(0,0,0,.15) inset;
}
.icon-btn{
  width:34px;height:34px;border-radius:10px;display:flex;align-items:center;
  justify-content:center;border:1px solid var(--line);background:var(--card);flex:0 0 auto;
}
.icon-btn svg{width:18px;height:18px}

/* ---------- Layout ---------- */
main{max-width:820px;margin:0 auto;padding:16px 14px 40px}
.section-title{
  font-family:var(--serif);font-size:13px;font-weight:700;text-transform:uppercase;
  letter-spacing:.14em;color:var(--muted);margin:26px 0 10px;
}
.section-title:first-child{margin-top:6px}

/* ---------- Hero home ---------- */
.hero{
  position:relative;border-radius:var(--radius);overflow:hidden;
  background:
    radial-gradient(120% 100% at 100% 0%, color-mix(in srgb,var(--gold) 22%,transparent) 0%, transparent 55%),
    linear-gradient(160deg, var(--paper-2), var(--card));
  border:1px solid var(--line);box-shadow:var(--shadow);
  padding:20px 18px;margin-bottom:6px;
}
.hero::after{
  content:"";position:absolute;inset:auto 0 0 0;height:6px;
  background:repeating-linear-gradient(90deg,var(--ink) 0 14px,transparent 14px 20px);
  opacity:.18;
}
.hero .kicker{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-d)}
.hero h2{font-family:var(--serif);font-size:29px;line-height:1.12;margin:6px 0 8px;font-weight:600}
.hero p{margin:0;color:var(--ink-2);font-size:14.5px}
.hero .legs{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}
.leg{
  font-size:12px;font-family:var(--mono);padding:4px 9px;border-radius:999px;
  background:var(--card);border:1px solid var(--line-2);color:var(--ink-2);
}

/* countdown / stato viaggio */
.tripstate{
  display:flex;align-items:center;gap:10px;margin-top:14px;padding:10px 12px;
  border-radius:10px;background:color-mix(in srgb,var(--gold) 14%,var(--card));
  border:1px solid color-mix(in srgb,var(--gold) 40%,var(--line));
  font-size:13.5px;
}
.tripstate b{font-family:var(--mono)}

/* ---------- Griglia categorie ---------- */
.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
@media(min-width:620px){.grid{grid-template-columns:repeat(3,1fr)}}
.tile{
  display:flex;flex-direction:column;gap:6px;text-align:left;text-decoration:none;color:inherit;
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:14px 13px;box-shadow:var(--shadow);min-height:104px;
  transition:transform .12s ease, border-color .12s ease;
}
.tile:active{transform:scale(.975)}
.tile .em{font-size:22px;line-height:1}
.tile .t{font-family:var(--serif);font-size:16px;font-weight:600;line-height:1.2}
.tile .s{font-size:12px;color:var(--muted);line-height:1.35}
.tile.wide{grid-column:1/-1;min-height:0;flex-direction:row;align-items:center;gap:12px}
.tile.wide .em{font-size:20px}
.tile.wide .t{font-size:15px}

/* ---------- Search ---------- */
.searchwrap{position:relative;margin-bottom:12px}
.searchwrap input{
  width:100%;padding:12px 14px 12px 40px;border-radius:12px;
  border:1px solid var(--line-2);background:var(--card);color:var(--ink);
  font-size:16px;font-family:var(--sans);
}
.searchwrap input:focus{outline:2px solid color-mix(in srgb,var(--gold) 60%,transparent);outline-offset:1px}
.searchwrap svg{position:absolute;left:13px;top:50%;transform:translateY(-50%);width:17px;height:17px;opacity:.5}

/* ---------- Chips / filtri ---------- */
.chips{display:flex;gap:7px;overflow-x:auto;padding:2px 0 10px;scrollbar-width:none;-ms-overflow-style:none}
.chips::-webkit-scrollbar{display:none}
.chip{
  flex:0 0 auto;font-size:13px;padding:6px 12px;border-radius:999px;
  border:1px solid var(--line-2);background:var(--card);color:var(--ink-2);white-space:nowrap;
}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.chip .n{font-family:var(--mono);font-size:11px;opacity:.6;margin-left:4px}

/* ---------- Card POI ---------- */
.list{display:flex;flex-direction:column;gap:10px}
.poi{
  position:relative;display:block;width:100%;text-align:left;
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:13px 14px;box-shadow:var(--shadow);
}
.poi:active{transform:scale(.99)}
.poi .row1{display:flex;align-items:flex-start;gap:10px}
.poi .em{font-size:19px;line-height:1.3;flex:0 0 auto}
.poi h3{font-family:var(--serif);font-size:17px;font-weight:600;margin:0;line-height:1.25;flex:1}
.poi .sub{font-size:13px;color:var(--muted);margin:3px 0 0}
.poi .desc{font-size:14px;color:var(--ink-2);margin:8px 0 0}
.poi .meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.tag{
  font-size:11.5px;font-family:var(--mono);letter-spacing:.02em;
  padding:3px 8px;border-radius:6px;background:var(--paper-2);
  color:var(--ink-2);border:1px solid var(--line);
}
.tag.gold{background:color-mix(in srgb,var(--gold) 20%,var(--card));border-color:color-mix(in srgb,var(--gold) 45%,var(--line));color:var(--gold-d)}
.tag.brick{background:color-mix(in srgb,var(--brick) 14%,var(--card));border-color:color-mix(in srgb,var(--brick) 38%,var(--line));color:var(--brick)}
.tag.sky{background:color-mix(in srgb,var(--sky) 13%,var(--card));border-color:color-mix(in srgb,var(--sky) 36%,var(--line));color:var(--sky)}
.tag.moss{background:color-mix(in srgb,var(--moss) 15%,var(--card));border-color:color-mix(in srgb,var(--moss) 40%,var(--line));color:var(--moss)}
.tag.plum{background:color-mix(in srgb,var(--plum) 14%,var(--card));border-color:color-mix(in srgb,var(--plum) 38%,var(--line));color:var(--plum)}
.fav{
  position:absolute;top:8px;right:8px;width:34px;height:34px;border-radius:9px;
  display:flex;align-items:center;justify-content:center;color:var(--muted);
}
.fav svg{width:18px;height:18px}
.fav[aria-pressed="true"]{color:var(--gold-d)}
.fav[aria-pressed="true"] svg{fill:currentColor}

/* --- visti --- */
.seen-flag{
  display:inline-flex;align-items:center;gap:3px;vertical-align:middle;
  margin-left:7px;font-family:var(--mono);font-size:10.5px;font-weight:400;
  padding:2px 7px 2px 5px;border-radius:999px;white-space:nowrap;
  background:color-mix(in srgb,var(--moss) 16%,var(--card));
  border:1px solid color-mix(in srgb,var(--moss) 40%,var(--line));
  color:var(--moss);
}
.seen-flag svg{width:11px;height:11px}
.poi.is-seen{border-color:color-mix(in srgb,var(--moss) 32%,var(--line))}
.poi.is-seen .em{opacity:.65}

.btn.seen[aria-pressed="true"]{
  background:color-mix(in srgb,var(--moss) 18%,var(--card));
  border-color:color-mix(in srgb,var(--moss) 45%,var(--line));
  color:var(--moss);
}
.btn.seen[aria-pressed="true"] svg{opacity:1}

.visto-box{
  display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;
  margin:0 0 14px;padding:11px 13px;border-radius:12px;
  background:color-mix(in srgb,var(--moss) 9%,var(--card));
  border:1px solid color-mix(in srgb,var(--moss) 30%,var(--line));
}
.visto-box label{font-size:12.5px;color:var(--muted)}
.visto-box input[type="date"]{
  font:inherit;font-size:14px;padding:6px 9px;border-radius:9px;
  border:1px solid var(--line-2);background:var(--card);color:var(--ink);
}
.lnk{
  font-size:12.5px;color:var(--muted);text-decoration:underline;
  text-underline-offset:2px;padding:2px 0;
}
.lnk.danger{color:var(--brick)}

/* nei preferiti i visti restano consultabili ma non competono per l'attenzione */
.list.done .poi{opacity:.62;background:var(--paper-2)}
.list.done .poi:active{opacity:1}

.progress{
  height:5px;border-radius:999px;background:var(--line);
  overflow:hidden;margin:0 0 16px;
}
.progress span{
  display:block;height:100%;border-radius:999px;
  background:var(--moss);transition:width .3s ease;
}

.pop-seen{
  font-family:var(--mono);font-size:10.5px;font-weight:400;
  color:var(--moss);white-space:nowrap;
}
.poi.hasfav h3{padding-right:30px}

/* ---------- Dettaglio ---------- */
.detail h2{font-family:var(--serif);font-size:25px;line-height:1.18;margin:2px 0 4px;font-weight:600}
.detail .lead{color:var(--muted);font-size:14px;margin:0 0 12px}
.panel{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:14px;box-shadow:var(--shadow);margin-bottom:12px;
}
.kv{display:grid;grid-template-columns:104px 1fr;gap:7px 12px;font-size:14px}
.kv dt{color:var(--muted);font-size:12.5px;padding-top:1px}
.kv dd{margin:0;color:var(--ink-2)}
.detail .body{font-size:15px;line-height:1.62}
.detail .body p{margin:0 0 11px}
.detail .body ul{margin:0 0 12px;padding-left:19px}
.detail .body li{margin-bottom:6px}
.detail .body h4{font-family:var(--serif);font-size:16.5px;margin:18px 0 7px}
.detail .body strong{color:var(--ink)}

.actions{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 14px}
.btn{
  display:inline-flex;align-items:center;gap:7px;font-size:13.5px;font-weight:500;
  padding:9px 13px;border-radius:11px;border:1px solid var(--line-2);
  background:var(--card);text-decoration:none;box-shadow:var(--shadow);
}
.btn svg{width:15px;height:15px;opacity:.75}
.btn.primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.btn.primary svg{opacity:.9}
.btn.gold{background:var(--gold);color:#1b1a17;border-color:var(--gold-d)}
.btn.ask{
  background:color-mix(in srgb,var(--plum) 12%,var(--card));
  border-color:color-mix(in srgb,var(--plum) 42%,var(--line));
  color:var(--plum);
}
.btn.ask svg{opacity:1}

/* foglio di fallback per la copia manuale */
.sheet{
  position:fixed;inset:0;z-index:80;display:none;
  align-items:flex-end;justify-content:center;
  background:rgba(27,26,23,.45);backdrop-filter:blur(3px);
}
.sheet.show{display:flex}
.sheet-in{
  width:100%;max-width:640px;background:var(--card);
  border-radius:18px 18px 0 0;padding:18px 16px calc(18px + var(--safe-b));
  border:1px solid var(--line);box-shadow:0 -8px 40px -12px rgba(0,0,0,.5);
}
.sheet-in b{font-family:var(--serif);font-size:17px}
.sheet-in .s{font-size:13.5px;color:var(--muted);margin:4px 0 10px}
.sheet-in textarea{
  width:100%;height:180px;font-family:var(--mono);font-size:12px;line-height:1.5;
  padding:10px;border-radius:10px;border:1px solid var(--line-2);
  background:var(--paper-2);color:var(--ink);resize:vertical;margin-bottom:12px;
}

/* ---------- Contenuti long-form ---------- */
.article{font-size:15.5px;line-height:1.65}
.article h3{font-family:var(--serif);font-size:20px;margin:26px 0 8px;font-weight:600;line-height:1.25}
.article h3:first-child{margin-top:4px}
.article h4{font-family:var(--serif);font-size:16.5px;margin:18px 0 6px;font-weight:600}
.article p{margin:0 0 12px;color:var(--ink-2)}
.article ul,.article ol{margin:0 0 14px;padding-left:20px;color:var(--ink-2)}
.article li{margin-bottom:7px}
.article strong{color:var(--ink);font-weight:600}
.article a{color:var(--sky);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}
.article code{font-family:var(--mono);font-size:.88em;background:var(--paper-2);padding:1px 5px;border-radius:5px;border:1px solid var(--line)}
.article hr{border:none;border-top:1px solid var(--line);margin:22px 0}
.article blockquote{
  margin:0 0 14px;padding:11px 14px;border-left:3px solid var(--gold);
  background:var(--paper-2);border-radius:0 10px 10px 0;font-size:14.5px;
}
.article table{width:100%;border-collapse:collapse;font-size:13.5px;margin:0 0 14px;display:block;overflow-x:auto}
.article th,.article td{border:1px solid var(--line);padding:7px 9px;text-align:left;vertical-align:top}
.article th{background:var(--paper-2);font-weight:600;font-size:12.5px;white-space:nowrap}
.callout{
  border-radius:12px;padding:12px 14px;margin:0 0 14px;font-size:14.5px;
  border:1px solid var(--line-2);background:var(--paper-2);
}
.callout b:first-child{display:block;margin-bottom:4px;font-family:var(--serif);font-size:15px}
.callout.warn{background:color-mix(in srgb,var(--brick) 10%,var(--card));border-color:color-mix(in srgb,var(--brick) 35%,var(--line))}
.callout.tip{background:color-mix(in srgb,var(--moss) 11%,var(--card));border-color:color-mix(in srgb,var(--moss) 32%,var(--line))}
.callout.info{background:color-mix(in srgb,var(--sky) 10%,var(--card));border-color:color-mix(in srgb,var(--sky) 32%,var(--line))}
.callout.gold{background:color-mix(in srgb,var(--gold) 14%,var(--card));border-color:color-mix(in srgb,var(--gold) 40%,var(--line))}

/* timeline storia */
.tl{position:relative;padding-left:22px;margin:0 0 18px}
.tl::before{content:"";position:absolute;left:6px;top:4px;bottom:4px;width:2px;background:var(--line-2)}
.tl-item{position:relative;margin-bottom:15px}
.tl-item::before{
  content:"";position:absolute;left:-20px;top:7px;width:9px;height:9px;border-radius:50%;
  background:var(--gold);border:2px solid var(--paper);box-shadow:0 0 0 1px var(--line-2);
}
.tl-y{font-family:var(--mono);font-size:12.5px;font-weight:700;color:var(--gold-d);letter-spacing:.02em}
.tl-t{font-family:var(--serif);font-size:15.5px;font-weight:600;margin:1px 0 2px;line-height:1.25}
.tl-d{font-size:14px;color:var(--ink-2);margin:0}

/* ---------- Tab bar ---------- */
.tabbar{
  position:fixed;left:0;right:0;bottom:0;z-index:50;
  height:calc(var(--tabbar-h) + var(--safe-b));
  padding-bottom:var(--safe-b);
  display:flex;background:color-mix(in srgb,var(--paper) 92%,transparent);
  backdrop-filter:saturate(180%) blur(14px);-webkit-backdrop-filter:saturate(180%) blur(14px);
  border-top:1px solid var(--line);
}
.tabbar a{
  flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  text-decoration:none;color:var(--muted);font-size:10.5px;letter-spacing:.02em;
}
.tabbar a svg{width:21px;height:21px}
.tabbar a.on{color:var(--ink)}
.tabbar a.on svg{color:var(--gold-d)}

/* ---------- misc ---------- */
.empty{text-align:center;color:var(--muted);padding:40px 20px;font-size:14.5px}
.offline-badge{
  position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--tabbar-h) + 14px + var(--safe-b));
  background:var(--ink);color:var(--paper);font-size:12.5px;padding:7px 14px;border-radius:999px;
  z-index:60;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:opacity .25s;
}
.offline-badge.show{opacity:1}
.offline-badge.tap{pointer-events:auto;cursor:pointer;border:1px solid var(--gold)}
.count{font-family:var(--mono);font-size:12px;color:var(--muted);margin:0 0 10px}

/* =========================================================
   MAPPA
   ========================================================= */

/* In map-mode si azzerano i padding di body e main, altrimenti la pagina
   risulterebbe più alta della viewport e scrollerebbe. */
body.map-mode{padding-bottom:0;overscroll-behavior:none}
body.map-mode main{max-width:none;padding:0}

/* z-index:0 crea lo stacking context che manca a Leaflet: senza, i suoi
   .leaflet-top/.leaflet-bottom (z-index 1000) e .leaflet-control (800)
   competerebbero nel contesto radice contro topbar 40, tabbar 50, badge 60
   e sheet 80, finendo sopra a tutto. */
.mapwrap{
  position:relative;z-index:0;
  height:calc(100vh - var(--topbar-h) - env(safe-area-inset-top));   /* fallback */
  height:calc(100dvh - var(--topbar-h) - env(safe-area-inset-top));
  background:var(--paper-2);
}
#map{position:absolute;inset:0}
.leaflet-container{background:var(--paper-2);font-family:var(--sans)}

/* le tile raster OSM sono sempre chiare: in tema scuro si invertono,
   ma SOLO il pane delle tile, mai i marker */
@media (prefers-color-scheme: dark){
  .leaflet-tile-pane{filter:invert(1) hue-rotate(180deg) brightness(.95) contrast(.9)}
}

/* in landscape su iPhone le safe-area diventano left/right: senza questo
   i controlli finiscono sotto il notch */
.leaflet-control-container .leaflet-left{padding-left:env(safe-area-inset-left)}
.leaflet-control-container .leaflet-right{padding-right:env(safe-area-inset-right)}
.leaflet-control-container .leaflet-bottom{
  padding-bottom:calc(var(--tabbar-h) + var(--safe-b));
}
.leaflet-control-attribution{
  background:color-mix(in srgb,var(--card) 88%,transparent)!important;
  color:var(--muted)!important;font-size:10.5px!important;
}
.leaflet-control-attribution a{color:var(--muted)!important}

/* barra dei filtri sovrapposta */
.map-bar{
  position:absolute;left:0;right:0;top:0;z-index:500;
  padding:10px 12px 12px;
  background:linear-gradient(to bottom,
    color-mix(in srgb,var(--paper) 92%,transparent) 0%,
    color-mix(in srgb,var(--paper) 70%,transparent) 60%,
    transparent 100%);
  pointer-events:none;
}
.map-bar .chips{pointer-events:auto;margin:0;padding-bottom:0}
.map-bar .chip{box-shadow:var(--shadow);background:var(--card)}
/* .map-bar .chip ha la stessa specificità di .chip[aria-pressed="true"] ma viene
   dopo, quindi ne vincerebbe lo sfondo lasciando il testo chiaro su bianco */
.map-bar .chip[aria-pressed="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.map-note{
  pointer-events:auto;display:inline-block;margin-top:8px;
  font-size:11.5px;color:var(--ink-2);background:var(--card);
  border:1px solid var(--line-2);border-radius:999px;padding:4px 10px;
  box-shadow:var(--shadow);
}
.map-note b{color:var(--brick)}

/* pulsanti flottanti */
.map-fabs{
  position:absolute;right:12px;z-index:500;
  bottom:calc(var(--tabbar-h) + var(--safe-b) + 14px);
  display:flex;flex-direction:column;gap:8px;
}
.map-fab{
  width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;
  background:var(--card);border:1px solid var(--line-2);box-shadow:var(--shadow);color:var(--ink);
}
.map-fab svg{width:19px;height:19px}
.map-fab:active{transform:scale(.94)}

/* marker */
.pin{
  width:32px;height:32px;border-radius:50% 50% 50% 4px;
  transform:rotate(-45deg);
  background:var(--card);border:2px solid var(--ink);
  box-shadow:0 3px 8px -2px rgba(0,0,0,.45);
  display:flex;align-items:center;justify-content:center;
}
.pin span{transform:rotate(45deg);font-size:15px;line-height:1}
.pin.approx{border-style:dashed;opacity:.85}
.pin.gold{border-color:var(--gold-d);background:color-mix(in srgb,var(--gold) 22%,var(--card))}
.pin.sky{border-color:var(--sky);background:color-mix(in srgb,var(--sky) 16%,var(--card))}
.pin.plum{border-color:var(--plum);background:color-mix(in srgb,var(--plum) 16%,var(--card))}
.pin.moss{border-color:var(--moss);background:color-mix(in srgb,var(--moss) 18%,var(--card))}

/* popup */
.leaflet-popup-content-wrapper{
  background:var(--card);color:var(--ink);border-radius:12px;
  border:1px solid var(--line-2);box-shadow:var(--shadow);
}
.leaflet-popup-content{margin:11px 13px;font-family:var(--sans);width:auto!important;min-width:190px}
.leaflet-popup-tip{background:var(--card);border:1px solid var(--line-2)}
.leaflet-popup-close-button{color:var(--muted)!important}
.pop-t{font-family:var(--serif);font-size:15.5px;font-weight:600;line-height:1.25;margin:0 16px 2px 0}
.pop-s{font-size:12px;color:var(--muted);margin:0 0 8px;line-height:1.35}
/* leaflet.css ha .leaflet-container a{color:#0078A8}: specificità (0,1,1),
   che batte .pop-a (0,1,0) a prescindere dall'ordine dei file. Serve
   qualificare il selettore, non basta caricare leaflet.css per primo. */
.leaflet-container a.pop-a{
  display:inline-block;font-size:12.5px;font-weight:500;text-decoration:none;
  padding:6px 11px;border-radius:9px;background:var(--ink);color:var(--paper);
}
.leaflet-container a.pop-a:hover{color:var(--paper)}
.pop-warn{font-size:11px;color:var(--brick);margin:7px 0 0;line-height:1.35}

/* stato senza rete */
.map-offline{
  position:absolute;inset:0;z-index:600;display:flex;
  align-items:center;justify-content:center;padding:28px;
  background:var(--paper);
}
/* senza questa riga display:flex batte l'attributo hidden e il banner
   resterebbe visibile per sempre */
.map-offline[hidden]{display:none}
.map-offline div{max-width:300px;text-align:center}
.map-offline .em{font-size:34px;display:block;margin-bottom:10px}
.map-offline b{font-family:var(--serif);font-size:18px;display:block;margin-bottom:6px}
.map-offline p{font-size:14px;color:var(--ink-2);margin:0 0 14px;line-height:1.5}
.footnote{font-size:12.5px;color:var(--muted);margin-top:26px;padding-top:14px;border-top:1px solid var(--line);line-height:1.5}
.srcs{font-size:12px;color:var(--muted)}
.srcs a{color:var(--muted)}
