:root{
  --bg:#F6F2EC; --surface:#FFFDFA; --ink:#2D3142; --muted:#686B7D; --line:#E3DCD2;
  --accent:#EB6C36; --accent-text:#B3471A; --on-accent:#2D3142; --glow:rgba(235,108,54,.13);
  --map-bg:#F1EBE3; --map-street:#C9C0B6; --pin-off:#B9AFA4;
  --display:"Instrument Serif","Iowan Old Style","Palatino Linotype",Georgia,serif;
  --sans:"Hanken Grotesk",system-ui,-apple-system,"Segoe UI",sans-serif;
  color-scheme:light;
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --bg:#1D2030; --surface:#272B3C; --ink:#F5F5F5; --muted:#A3A6B4; --line:#383C50;
    --accent:#EB6C36; --accent-text:#F2895A; --on-accent:#1D2030; --glow:rgba(235,108,54,.12);
    --map-bg:#222535; --map-street:#3E4359; --pin-off:#5A6078;
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --bg:#1D2030; --surface:#272B3C; --ink:#F5F5F5; --muted:#A3A6B4; --line:#383C50;
  --accent:#EB6C36; --accent-text:#F2895A; --on-accent:#1D2030; --glow:rgba(235,108,54,.12);
  --map-bg:#222535; --map-street:#3E4359; --pin-off:#5A6078;
  color-scheme:dark;
}
*,*::before,*::after{box-sizing:inherit}
html{scroll-padding-top:env(safe-area-inset-top,0px)}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;min-height:100vh}
body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
  background:radial-gradient(ellipse 55% 40% at 50% -8%,var(--glow),transparent 72%);
  animation:luci 1.6s ease-out both}
@keyframes luci{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){body::after{animation:none}}
button,select{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

.shell{position:relative;z-index:1;max-width:1320px;margin:0 auto;padding:0 clamp(16px,3vw,40px)}
header.top{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 0 14px;border-bottom:1px solid var(--line)}
.brand{display:block;color:var(--ink);line-height:0}
.logo{display:block;height:clamp(44px,6vw,58px);width:auto}
.updated{font-size:13px;color:var(--muted);text-align:right}

.layout{display:grid;grid-template-columns:250px minmax(0,1fr);gap:clamp(24px,4vw,56px);padding:34px 0 56px}
aside{position:sticky;top:calc(24px + env(safe-area-inset-top,0px));align-self:start}
.aside-h{font-family:var(--display);font-weight:400;font-size:26px;line-height:1.1;margin:0 0 14px}
.quick{display:grid;gap:8px;margin-bottom:22px}
.qbtn{display:flex;justify-content:space-between;align-items:baseline;width:100%;padding:12px 14px;border:1px solid var(--line);background:var(--surface);border-radius:10px;cursor:pointer;text-align:left;font-weight:500}
.qbtn small{color:var(--muted);font-size:13px;font-weight:400}
.qbtn[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--bg)}
.qbtn[aria-pressed="true"] small{color:inherit;opacity:.75}

.cal{border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:12px}
.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.cal-head span{font-family:var(--display);font-size:20px;text-transform:capitalize}
.cal-nav{border:0;background:none;width:32px;height:32px;border-radius:8px;cursor:pointer;font-size:18px;color:var(--muted)}
.cal-nav:hover:not(:disabled){background:var(--bg);color:var(--ink)}
.cal-nav:disabled{opacity:.3;cursor:default}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center}
.cal-dow{font-size:11px;color:var(--muted);padding:4px 0}
.cal-day{position:relative;aspect-ratio:1;border:0;background:none;border-radius:8px;cursor:pointer;font-size:14px;font-variant-numeric:tabular-nums}
.cal-day:hover:not(:disabled){background:var(--bg)}
.cal-day:disabled{color:var(--muted);opacity:.4;cursor:default}
.cal-day.has::after{content:"";position:absolute;left:50%;bottom:5px;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:var(--accent)}
.cal-day.today{font-weight:600;box-shadow:inset 0 0 0 1px var(--line)}
.cal-day[aria-pressed="true"]{background:var(--ink);color:var(--bg)}
.aside-note{font-size:13px;color:var(--muted);margin:14px 2px 0}

.stage-h{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px 24px;margin-bottom:26px}
.bigdate{font-family:var(--display);font-weight:400;font-size:clamp(44px,6.6vw,84px);line-height:.95;letter-spacing:-.01em;margin:0}
.count{margin:12px 0 0;color:var(--muted);font-size:17px}
.count strong{color:var(--ink);font-weight:600}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:999px;padding:3px;background:var(--surface)}
.seg button{border:0;background:none;padding:8px 18px;border-radius:999px;cursor:pointer;font-weight:500}
.seg button[aria-pressed="true"]{background:var(--ink);color:var(--bg)}

/* mappa */
.map-wrap{position:relative;width:100%;border-radius:18px;overflow:hidden;border:1px solid var(--line);background:var(--map-bg)}
.map-wrap svg{display:block;width:100%;height:auto}
.strade{fill:var(--map-street)}
.duomo{fill:var(--accent)}
.bussola circle{fill:var(--map-bg);stroke:var(--map-street);stroke-width:1.5}
.bussola path{fill:var(--ink)}
.bussola text,.scala text{font-family:var(--sans);font-size:15px;font-weight:600;fill:var(--muted)}
.bussola text{paint-order:stroke;stroke:var(--map-bg);stroke-width:5px}
.scala path{stroke:var(--muted);stroke-width:2;fill:none}
.pin{cursor:pointer}
.pin .dot{fill:var(--accent);stroke:var(--map-bg);stroke-width:4}
.pin.off{cursor:default}
.pin.off .dot{fill:var(--pin-off);stroke-width:3}
.pin .n{font-family:var(--sans);font-weight:700;font-size:17px;fill:var(--on-accent);text-anchor:middle;dominant-baseline:central;pointer-events:none}
.pin .lb{font-family:var(--sans);font-size:16px;font-weight:600;fill:var(--ink);paint-order:stroke;stroke:var(--map-bg);stroke-width:5px;stroke-linejoin:round;pointer-events:none}
.pin .halo{fill:none;stroke:var(--ink);stroke-width:3}
.pin:focus{outline:none}
.pin:focus-visible .dot{stroke:var(--ink)}

.pop{position:absolute;z-index:3;width:min(330px,80%);background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px 16px 8px;box-shadow:0 18px 40px -18px rgba(29,32,48,.45)}
.pop h3{font-family:var(--display);font-weight:400;font-size:25px;line-height:1.05;margin:0 30px 4px 0}
.pop .addr{font-size:13px;color:var(--muted);margin:0 0 8px}
.pop ul{list-style:none;margin:0;padding:0;max-height:270px;overflow:auto}
.pop li+li{border-top:1px solid var(--line)}
.pop li button{display:grid;grid-template-columns:50px 1fr;gap:4px 10px;width:100%;padding:9px 0;border:0;background:none;text-align:left;cursor:pointer}
.pop li button:hover .pt{text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:3px}
.pop .tm{font-variant-numeric:tabular-nums;font-weight:600}
.pop .tm.ind{color:var(--muted);font-weight:500}
.pop .pt{font-family:var(--display);font-size:19px;line-height:1.15}
.pop .ptipo{grid-column:2;font-size:12px;color:var(--accent-text);margin-top:-2px}
.pop .close{position:absolute;top:8px;right:8px;width:32px;height:32px;border:0;background:none;border-radius:8px;cursor:pointer;font-size:20px;color:var(--muted)}
.pop .close:hover{background:var(--bg);color:var(--ink)}
.venue-chips{display:none;margin-top:12px}
.venue-chips .chip span{color:var(--accent-text);font-weight:600;margin-left:2px}
.venue-chips .chip[aria-pressed="true"] span{color:inherit}
.map-hint{font-size:14px;color:var(--muted);margin:12px 2px 0}

/* lista */
.tools{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:18px}
.sel{appearance:none;border:1px solid var(--line);background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23686B7D' stroke-width='1.6'/%3E%3C/svg%3E") no-repeat right 14px center;padding:9px 38px 9px 14px;border-radius:999px;max-width:100%}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{border:1px solid var(--line);background:var(--surface);padding:8px 14px;border-radius:999px;cursor:pointer;font-size:15px}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.slot-h{font-family:var(--display);font-weight:400;font-size:24px;color:var(--muted);margin:28px 0 4px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.slot-h:first-child{margin-top:0}
.rows{list-style:none;margin:0;padding:0}
.rows li+li{border-top:1px solid var(--line)}
.row{display:grid;grid-template-columns:80px minmax(0,1fr) auto;gap:4px 18px;align-items:baseline;width:100%;padding:16px 6px;border:0;background:none;text-align:left;cursor:pointer;border-radius:8px}
.row:hover{background:var(--surface)}
.row .time{font-family:var(--display);font-size:30px;font-variant-numeric:lining-nums tabular-nums;line-height:1}
.row .time.ind{color:var(--muted)}
.row .time.tbd{font-family:var(--sans);font-size:13px;color:var(--muted);line-height:1.3}
.row .title{display:block;font-family:var(--display);font-size:26px;line-height:1.1}
.row .by{display:block;color:var(--muted);font-size:15px;margin-top:3px}
.row .where{display:block;font-size:15px;margin-top:6px}
.row .where em{font-style:normal;color:var(--muted)}
.tipo{font-size:13px;font-weight:600;color:var(--accent-text);white-space:nowrap}
.empty{padding:40px 24px;text-align:center;border:1px dashed var(--line);border-radius:14px;color:var(--muted)}
.empty strong{display:block;font-family:var(--display);font-weight:400;font-size:28px;color:var(--ink);margin-bottom:6px}
.empty .chip{margin-top:14px}

footer{border-top:1px solid var(--line);padding:22px 0 40px;font-size:13px;color:var(--muted)}
footer p{margin:0 0 6px;max-width:72ch}
.ind-mark{border-bottom:1px dotted currentColor}

/* scheda */
dialog{border:0;padding:0;background:transparent;max-width:min(560px,calc(100vw - 32px));width:100%;color:var(--ink)}
dialog::backdrop{background:rgba(20,22,34,.55)}
.sheet{position:relative;background:var(--surface);border-radius:18px;padding:28px 28px 24px;border:1px solid var(--line)}
.sheet .tipo{display:block;margin-bottom:6px}
.sheet h2{font-family:var(--display);font-weight:400;font-size:clamp(34px,6vw,46px);line-height:1;margin:0 36px 8px 0}
.sheet .by{color:var(--muted);margin:0 0 20px}
.facts{display:grid;grid-template-columns:auto 1fr;gap:8px 18px;margin:0 0 20px}
.facts dt{color:var(--muted);font-size:14px}
.facts dd{margin:0}
.note{font-size:13px;color:var(--muted);margin:-8px 0 18px}
.cta{display:inline-block;background:var(--accent);color:var(--on-accent);text-decoration:none;padding:12px 20px;border-radius:999px;font-weight:600}
.cta:hover{filter:brightness(1.06)}
.other-h{font-size:14px;color:var(--muted);margin:22px 0 8px}
.other{display:flex;flex-wrap:wrap;gap:6px}
.other .chip{font-size:14px;padding:6px 12px}
.sheet .x{position:absolute;top:12px;right:12px;width:36px;height:36px;border:0;background:none;border-radius:10px;font-size:22px;cursor:pointer;color:var(--muted)}
.sheet .x:hover{background:var(--bg);color:var(--ink)}

.stato{padding:60px 0;text-align:center;color:var(--muted)}

@media (max-width:860px){
  .layout{grid-template-columns:1fr;padding-top:22px}
  aside{position:static}
  .quick{grid-template-columns:repeat(2,1fr);margin-bottom:12px}
  details.cal-box>summary{cursor:pointer;color:var(--muted);font-size:15px;padding:6px 2px;list-style:none}
  details.cal-box>summary::-webkit-details-marker{display:none}
  .aside-h,.aside-note{display:none}
}
@media (min-width:861px){ details.cal-box>summary{display:none} }
.pop.sotto{position:static;width:auto;margin-top:12px;box-shadow:none}
@media (max-width:640px){
  .row{grid-template-columns:62px minmax(0,1fr)}
  .row .tipo{grid-column:2}
  .row .time{font-size:24px}
  .row .title{font-size:23px}
  .updated{display:none}
  .venue-chips{display:flex}
  .pin .lb{display:none}
  .pin.active .lb{display:block}
}
