/* ============================================================
   Santos Populares em Lisboa '26
   Dark editorial — noite de arraial: âmbar/dourado sobre quase-preto.
   Display: Anton (cartaz)  ·  Texto: Archivo
   ============================================================ */
:root{
  --bg:#0F0D0B;
  --bg-2:#16120E;
  --card:#1A1510;
  --card-2:#211A13;
  --ink:#F4ECDC;
  --ink-soft:#BCA98C;
  --ink-dim:#867256;
  --gold:#E9A53A;
  --gold-2:#F4C56B;
  --orange:#E0622C;
  --red:#D8442E;
  --line:rgba(233,165,58,.20);
  --line-soft:rgba(244,236,220,.09);
  --glow:rgba(233,165,58,.14);
  --radius:16px;
  --maxw:1080px;
  --col:600px;            /* largura de leitura central */
  --safe-top:env(safe-area-inset-top,0px);
  --safe-bottom:env(safe-area-inset-bottom,0px);
  --font-display:"Anton",Impact,sans-serif;
  --font:"Archivo",system-ui,sans-serif;
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html{-webkit-text-size-adjust:100%;}
body{
  margin:0;font-family:var(--font);color:var(--ink);background-color:var(--bg);
  line-height:1.5;overflow-x:hidden;padding-bottom:calc(40px + var(--safe-bottom));
  background-image:
    radial-gradient(70% 45% at 50% -5%, rgba(233,165,58,.16), transparent 70%),
    radial-gradient(45% 30% at 85% 8%, rgba(224,98,44,.12), transparent 70%),
    radial-gradient(60% 40% at 10% 30%, rgba(216,68,46,.07), transparent 70%);
  background-attachment:fixed;
}
body::before{
  content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.55;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.05'/%3E%3C/svg%3E");
}

::selection{background:var(--gold);color:#1a1409;}

/* ---------- Luzes de festão ---------- */
.lights{
  position:sticky;top:0;z-index:50;height:40px;margin-top:var(--safe-top);
  background:var(--bg) url("bunting.svg") repeat-x top center;
  background-size:120px 32px;
  box-shadow:0 10px 24px -14px #000;
}

/* ---------- Masthead ---------- */
.masthead{
  position:relative;z-index:45;max-width:var(--maxw);margin:0 auto;padding:30px 22px 10px;
  text-align:center;animation:rise .7s cubic-bezier(.2,.7,.2,1) both;
}
.kicker{
  font-size:.72rem;letter-spacing:.42em;text-transform:uppercase;font-weight:700;
  color:var(--gold);margin:0 0 14px;
}
.title{
  font-family:var(--font-display);font-weight:400;
  font-size:clamp(3.4rem,17vw,7rem);line-height:.84;letter-spacing:.01em;
  text-transform:uppercase;margin:0;color:var(--ink);
  text-shadow:0 2px 30px rgba(233,165,58,.18);
}
.subtitle{
  font-family:var(--font-display);font-size:clamp(1.3rem,5vw,1.9rem);
  text-transform:uppercase;letter-spacing:.14em;margin:.45rem 0 0;color:var(--gold);
}
.year{color:var(--orange);}
.lang-toggle{
  position:absolute;top:6px;right:14px;z-index:5;display:flex;
  border:1.5px solid var(--line);border-radius:999px;overflow:hidden;background:rgba(0,0,0,.25);
}
.lang-btn{
  border:0;background:transparent;cursor:pointer;font-family:var(--font);
  font-weight:800;font-size:.72rem;letter-spacing:.05em;color:var(--ink-soft);
  padding:.45em .72em;transition:background .2s,color .2s;
}
.lang-btn + .lang-btn{border-left:1.5px solid var(--line);}
.lang-btn[aria-pressed="true"]{background:var(--gold);color:#1a1409;}
.lang-toggle.legal-lang{position:fixed;top:calc(var(--safe-top) + 50px);right:14px;z-index:55;}

/* ---------- Seletor de cidade ---------- */
.city-row{position:relative;display:inline-flex;align-items:center;gap:10px;margin-top:.55rem;}
.city-select{
  display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-family:var(--font-display);
  font-size:clamp(1.3rem,5vw,1.9rem);text-transform:uppercase;letter-spacing:.12em;
  color:var(--gold);background:transparent;border:0;padding:.1em .15em;line-height:1;
}
.city-select #city-name{display:inline-block;}
.city-select .chev{width:.7em;height:.7em;transition:transform .25s;opacity:.85;}
.city-select[aria-expanded="true"] .chev{transform:rotate(180deg);}
.city-row .year{font-family:var(--font-display);font-size:clamp(1.3rem,5vw,1.9rem);text-transform:uppercase;letter-spacing:.1em;color:var(--orange);}
.city-menu{
  position:absolute;top:calc(100% + 10px);left:50%;transform:translateX(-50%);z-index:60;
  width:min(86vw,300px);max-height:60vh;overflow-y:auto;text-align:left;
  background:var(--bg-2);border:1px solid var(--line);border-radius:16px;padding:6px;
  box-shadow:0 18px 44px -12px #000;animation:fade .18s both;
}
.city-menu[hidden]{display:none;}
.city-opt{display:flex;flex-direction:column;gap:1px;width:100%;text-align:left;cursor:pointer;
  background:transparent;border:0;border-radius:11px;padding:10px 13px;font-family:var(--font);color:var(--ink);transition:background .15s;}
.city-opt:hover{background:rgba(233,165,58,.08);}
.city-opt.active{background:rgba(233,165,58,.14);}
.city-opt-name{font-weight:800;font-size:1rem;letter-spacing:.01em;}
.city-opt-fest{font-size:.74rem;color:var(--gold);font-weight:600;text-transform:uppercase;letter-spacing:.08em;}
.slogan{max-width:34ch;margin:1rem auto 0;font-size:.9rem;line-height:1.5;color:var(--ink-soft);}

/* ---------- Segmented toggle (3) ---------- */
.toolbar{
  position:sticky;top:40px;z-index:40;max-width:var(--col);margin:18px auto 0;
  padding:6px 18px 14px;background:linear-gradient(var(--bg) 62%,transparent);
}
.segmented{
  position:relative;display:grid;grid-template-columns:repeat(3,1fr);
  background:var(--card);border:1px solid var(--line);border-radius:999px;padding:4px;
}
.seg-btn{
  position:relative;z-index:2;border:0;background:transparent;cursor:pointer;
  font-family:var(--font);font-weight:700;font-size:.92rem;color:var(--ink-soft);
  padding:.62em 0;border-radius:999px;transition:color .25s;letter-spacing:.01em;
}
.seg-btn[aria-selected="true"]{color:#1a1409;}
.seg-thumb{
  position:absolute;z-index:1;top:4px;left:4px;bottom:4px;width:calc((100% - 8px)/3);
  background:linear-gradient(180deg,var(--gold-2),var(--gold));border-radius:999px;
  box-shadow:0 4px 14px -4px rgba(233,165,58,.6);
  transition:transform .34s cubic-bezier(.5,1.3,.4,1);
}
.segmented[data-active="local"] .seg-thumb{transform:translateX(100%);}
.segmented[data-active="vibe"] .seg-thumb{transform:translateX(200%);}
/* modo 2 vistas (vibe escondida) */
.segmented[data-tabs="2"]{grid-template-columns:repeat(2,1fr);}
.segmented[data-tabs="2"] .seg-thumb{width:calc((100% - 8px)/2);}

/* ---------- Views ---------- */
.view{max-width:var(--maxw);margin:0 auto;padding:6px 16px 0;}
.view[hidden]{display:none;}

/* ---------- Datas para não falhar ---------- */
.keydates{max-width:var(--maxw);margin:6px auto 16px;}
.keydates:empty{display:none;}
.keydates-title{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.16em;color:var(--orange);margin:0 2px 9px;}
.keydates-row{display:flex;gap:10px;overflow-x:auto;scrollbar-width:none;margin:0 -16px;padding:2px 16px 8px;scroll-snap-type:x proximity;}
.keydates-row::-webkit-scrollbar{display:none;}
.keydate{
  scroll-snap-align:start;flex:none;width:200px;cursor:pointer;text-align:left;
  background:linear-gradient(180deg,var(--card-2),var(--card));
  border:1px solid var(--line);border-radius:14px;padding:11px 13px;font-family:var(--font);
  transition:transform .12s,border-color .2s;
}
.keydate:active{transform:scale(.97);}
.keydate:hover{border-color:var(--gold);}
.keydate-day{font-family:var(--font-display);font-size:1.15rem;color:var(--gold);text-transform:uppercase;line-height:1;}
.keydate-txt{font-size:.8rem;color:var(--ink-soft);margin-top:5px;line-height:1.3;}

/* ---------- Day navigation ---------- */
.daynav{display:flex;align-items:center;gap:10px;justify-content:space-between;padding:2px 2px;max-width:var(--col);margin:0 auto;}
.daynav-arrow{
  flex:none;width:44px;height:44px;border-radius:50%;border:1px solid var(--line);
  background:var(--card);color:var(--gold);font-size:1.5rem;line-height:1;cursor:pointer;
  display:grid;place-items:center;transition:transform .12s,border-color .2s,background .2s;
}
.daynav-arrow:active{transform:scale(.9);}
.daynav-arrow:hover{border-color:var(--gold);}
.daynav-arrow:disabled{opacity:.3;cursor:default;}
.daynav-current{flex:1;text-align:center;}
.dnc-weekday{font-family:var(--font-display);font-size:1.7rem;line-height:1;text-transform:uppercase;letter-spacing:.02em;}
.dnc-date{font-size:.84rem;color:var(--ink-soft);font-weight:600;margin-top:3px;}
.dnc-tag{
  display:inline-block;margin-left:.4em;font-size:.6rem;font-weight:800;text-transform:uppercase;
  letter-spacing:.08em;padding:.18em .5em;border-radius:.5em;vertical-align:.18em;
}
.dnc-tag.today{background:var(--gold);color:#1a1409;}
.dnc-tag.holiday{background:transparent;border:1px solid var(--orange);color:var(--orange);}

/* ---------- Day strip ---------- */
.daystrip{
  display:flex;gap:8px;overflow-x:auto;scroll-snap-type:x proximity;
  padding:14px 16px;margin:6px -16px 4px;scrollbar-width:none;justify-content:flex-start;
}
.daystrip::-webkit-scrollbar{display:none;}
.daychip{
  scroll-snap-align:center;flex:none;cursor:pointer;min-width:50px;
  display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 7px;border-radius:13px;
  background:var(--card);border:1px solid var(--line-soft);color:var(--ink);font-family:var(--font);
  transition:transform .12s,border-color .2s,background .2s;
}
.daychip:active{transform:scale(.94);}
.daychip-wd{font-size:.64rem;font-weight:700;text-transform:uppercase;color:var(--ink-dim);letter-spacing:.06em;}
.daychip-day{font-family:var(--font-display);font-size:1.25rem;line-height:1;color:var(--ink);}
.daychip-dot{width:5px;height:5px;border-radius:50%;background:var(--gold);margin-top:2px;opacity:.9;}
.daychip-dot.empty{background:transparent;}
.daychip[data-today="1"]{border-color:var(--gold);}
.daychip[aria-selected="true"]{background:linear-gradient(180deg,var(--gold-2),var(--gold));border-color:var(--gold);}
.daychip[aria-selected="true"] .daychip-wd,
.daychip[aria-selected="true"] .daychip-day{color:#1a1409;}
.daychip[aria-selected="true"] .daychip-dot{background:#1a1409;}

.daysummary{max-width:var(--col);margin:2px auto 16px;padding:0 2px;font-weight:600;font-size:.92rem;color:var(--ink-soft);text-align:center;}
.daysummary b{font-family:var(--font-display);font-weight:400;color:var(--gold);font-size:1.15rem;letter-spacing:.02em;}

/* ---------- Cards (grelha) ---------- */
.cards{display:grid;grid-template-columns:1fr;gap:12px;max-width:var(--col);margin:0 auto;}
.card{
  position:relative;background:linear-gradient(180deg,var(--card-2),var(--card));
  border:1px solid var(--line);border-radius:var(--radius);padding:15px 16px 15px 19px;
  overflow:hidden;animation:pop .4s cubic-bezier(.2,.8,.3,1.1) both;
}
.card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(var(--gold),var(--orange));}
.card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:9px;}
.zone-chip{
  flex:none;font-size:.66rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;
  color:var(--gold);padding:.2em 0;
}
.venue-name{font-weight:600;font-size:.92rem;color:var(--ink);text-align:right;line-height:1.25;}
.venue-loc{display:block;font-weight:500;font-size:.72rem;color:var(--ink-dim);}

.lineup{display:flex;flex-direction:column;gap:7px;}
.act{display:flex;align-items:baseline;gap:10px;}
.act-time{
  flex:none;font-family:var(--font);font-variant-numeric:tabular-nums;font-weight:700;font-size:.74rem;
  color:var(--gold);border:1px solid var(--line);padding:.16em .5em;border-radius:.45em;min-width:3.2em;text-align:center;
}
.act-name{font-family:var(--font-display);font-weight:400;font-size:1.4rem;line-height:1.06;letter-spacing:.01em;color:var(--ink);text-transform:uppercase;}
.card.solo .act-name{font-size:1.65rem;}

.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:11px;}
.chip{font-size:.68rem;font-weight:700;padding:.24em .6em;border-radius:999px;border:1px solid var(--line-soft);color:var(--ink-dim);}
.chip.sponsor{border-color:rgba(233,165,58,.4);color:var(--gold);}
.chip.paid{border-color:var(--orange);color:var(--orange);}
.chip.time{border-color:var(--line);color:var(--ink-soft);}

.card.festa{padding:13px 16px 13px 19px;}
.card.festa::before{background:var(--ink-dim);opacity:.5;}
.festa-row{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.festa-label{font-weight:600;font-size:.9rem;color:var(--ink-soft);}
.festa-label .lit{font-family:var(--font-display);font-weight:400;font-size:1.05rem;letter-spacing:.02em;color:var(--gold);text-transform:uppercase;}

.festa-group{margin-top:20px;grid-column:1 / -1;}
.festa-cards{display:grid;grid-template-columns:1fr;gap:12px;}
.festa-group-title{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.14em;color:var(--ink-dim);margin:0 2px 8px;display:flex;align-items:center;gap:10px;}
.festa-group-title::after{content:"";flex:1;height:1px;background:var(--line-soft);}

.empty-day{text-align:center;padding:40px 20px;color:var(--ink-soft);max-width:var(--col);margin:0 auto;grid-column:1 / -1;}
.empty-day .big{font-family:var(--font-display);font-size:1.5rem;color:var(--ink);margin-bottom:6px;text-transform:uppercase;letter-spacing:.02em;}
.empty-ask{margin:16px 0 16px;color:var(--ink-soft);font-size:.92rem;}
.empty-day .suggest-trigger{margin:0;}

/* faixa "festival em curso" */
.fest-banner{grid-column:1 / -1;display:flex;align-items:center;gap:13px;
  background:linear-gradient(180deg,rgba(233,165,58,.15),rgba(233,165,58,.05));
  border:1px solid var(--line);border-radius:var(--radius);padding:13px 16px;animation:pop .4s cubic-bezier(.2,.8,.3,1.1) both;}
.fest-ic{font-size:1.5rem;flex:none;line-height:1;}
.fest-main{display:flex;flex-direction:column;gap:2px;}
.fest-title{font-family:var(--font-display);font-weight:400;font-size:1.3rem;line-height:1.04;text-transform:uppercase;letter-spacing:.01em;color:var(--gold);}
.fest-range{font-size:.76rem;color:var(--ink-soft);font-weight:700;text-transform:uppercase;letter-spacing:.07em;}

/* CTA inline no slogan */
.slogan-cta{background:none;border:0;cursor:pointer;font:inherit;color:var(--gold);font-weight:700;padding:0;border-bottom:2px solid var(--gold);}

/* ---------- Por local ---------- */
.search-wrap{
  position:sticky;top:112px;z-index:30;max-width:calc(var(--col) - 36px);margin:18px auto 20px;padding:7px;
  background:rgba(18,15,12,.82);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border:1px solid var(--line);border-radius:16px;box-shadow:0 10px 26px -12px #000;
}
.search{
  width:100%;font-family:var(--font);font-size:1rem;color:var(--ink);
  padding:.78em 1em;border:1px solid var(--line-soft);border-radius:11px;background:var(--card);
}
.search::placeholder{color:var(--ink-dim);}
.search:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px var(--glow);}

.venue-list{display:grid;grid-template-columns:1fr;gap:10px;max-width:var(--col);margin:0 auto;}
.vcard{background:linear-gradient(180deg,var(--card-2),var(--card));border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;}
.vcard-head{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:transparent;border:0;cursor:pointer;font-family:var(--font);padding:14px 16px;color:var(--ink);}
.vcard-bar{flex:none;width:4px;height:38px;border-radius:4px;background:linear-gradient(var(--gold),var(--orange));}
.vcard-main{flex:1;min-width:0;}
.vcard-name{font-family:var(--font-display);font-weight:400;font-size:1.12rem;line-height:1.05;text-transform:uppercase;letter-spacing:.01em;}
.vcard-sub{font-size:.76rem;color:var(--ink-soft);font-weight:600;display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:3px;}
.vcard-count{flex:none;font-weight:800;font-size:.76rem;color:#1a1409;background:var(--gold);padding:.2em .6em;border-radius:999px;}
.vcard-count.zero{background:transparent;color:var(--ink-dim);border:1px solid var(--line-soft);}
.vcard-arrow{flex:none;color:var(--ink-dim);font-size:1.2rem;transition:transform .25s;}
.vcard[open] .vcard-arrow{transform:rotate(90deg);}
.vcard-body{display:none;padding:0 16px 14px 32px;}
.vcard[open] .vcard-body{display:block;animation:fade .3s both;}
.vline{display:flex;gap:12px;padding:9px 0;border-top:1px solid var(--line-soft);align-items:baseline;}
.vline:first-child{border-top:0;}
.vline-date{flex:none;min-width:5.2em;font-weight:700;font-size:.82rem;color:var(--ink);font-variant-numeric:tabular-nums;}
.vline-date .wd{display:block;font-size:.66rem;color:var(--ink-dim);font-weight:600;text-transform:uppercase;}
.vline-act{font-family:var(--font-display);font-weight:400;font-size:1.08rem;color:var(--ink);text-transform:uppercase;letter-spacing:.01em;}
.vline-act .t{font-family:var(--font);font-weight:700;font-size:.72rem;color:var(--gold);border:1px solid var(--line);padding:.1em .4em;border-radius:.4em;margin-right:.5em;vertical-align:.1em;text-transform:none;}
.vline-act.festa-only{font-family:var(--font);font-style:italic;font-size:.9rem;color:var(--ink-dim);text-transform:none;}
.vcard-empty{padding:8px 0 4px;color:var(--ink-dim);font-style:italic;}
.vcard-meta{padding:10px 0 2px;font-size:.78rem;color:var(--ink-soft);}

/* ---------- Pela vibe ---------- */
.vibe-intro{max-width:var(--col);margin:2px auto 18px;text-align:center;color:var(--ink-soft);font-size:.95rem;}
.vibe-grid{display:grid;grid-template-columns:1fr;gap:14px;}
.vibe-card{background:linear-gradient(180deg,var(--card-2),var(--card));border:1px solid var(--line);border-radius:18px;padding:18px 16px;}
.vibe-head{display:flex;align-items:center;gap:13px;margin-bottom:4px;}
.vibe-ic{flex:none;width:50px;height:50px;border-radius:50%;border:1.5px solid var(--gold);display:grid;place-items:center;color:var(--gold);background:var(--glow);}
.vibe-ic svg{width:26px;height:26px;}
.vibe-title{font-family:var(--font-display);font-weight:400;font-size:1.7rem;line-height:.95;text-transform:uppercase;color:var(--gold);letter-spacing:.01em;}
.vibe-bom{font-size:.74rem;color:var(--ink-dim);font-weight:600;margin-top:2px;}
.vibe-bom b{color:var(--orange);}
.vibe-spots{margin-top:14px;display:flex;flex-direction:column;gap:8px;}
.spot{display:flex;align-items:center;gap:12px;width:100%;text-align:left;cursor:pointer;font-family:var(--font);
  background:rgba(0,0,0,.18);border:1px solid var(--line-soft);border-radius:12px;padding:10px 12px;color:var(--ink);transition:border-color .2s,transform .12s,background .2s;}
.spot:hover{border-color:var(--gold);background:rgba(233,165,58,.06);}
.spot:active{transform:scale(.98);}
.spot-ic{flex:none;width:34px;height:34px;border-radius:50%;border:1.5px solid var(--orange);display:grid;place-items:center;color:var(--orange);}
.spot-ic svg{width:18px;height:18px;}
.spot-main{flex:1;min-width:0;}
.spot-name{font-weight:800;font-size:.86rem;text-transform:uppercase;letter-spacing:.04em;color:var(--gold-2);}
.spot-desc{font-size:.8rem;color:var(--ink-soft);line-height:1.3;}
.spot-go{flex:none;color:var(--ink-dim);font-size:1.1rem;}

/* ---------- Footer ---------- */
.footer{max-width:var(--col);margin:38px auto 0;padding:24px 14px;text-align:center;font-size:.8rem;color:var(--ink-soft);line-height:1.55;}
.suggest-trigger{display:inline-block;margin:0 auto 22px;cursor:pointer;font-family:var(--font);background:transparent;color:var(--gold);
  font-weight:700;font-size:.92rem;padding:.7em 1.3em;border-radius:999px;border:1px solid var(--gold);transition:background .2s,transform .12s;}
.suggest-trigger strong{font-weight:800;}
.suggest-trigger:hover{background:var(--glow);}
.suggest-trigger:active{transform:scale(.97);}
.credits{margin:0;color:var(--ink-soft);}
.credits-line{display:block;line-height:1.6;font-size:clamp(.66rem,3.2vw,.88rem);}
.credits-line:first-child{white-space:nowrap;}
.credits-line.wrap{white-space:normal;text-wrap:balance;max-width:38ch;margin:.45em auto 0;font-size:.84rem;}
.credits a{color:var(--ink);text-decoration:none;border-bottom:2px solid var(--gold);}
.credits a strong{font-weight:700;}
.credits-sig{margin:12px 0 0;font-size:.84rem;color:var(--ink-soft);line-height:1.6;}
.credits-sig a{color:var(--gold);text-decoration:none;font-weight:700;}
.credits-sig .heart{color:var(--red);font-style:normal;}
.credits-sig .sig-note{display:inline-block;margin-top:3px;font-size:.78rem;color:var(--ink-dim);font-style:italic;}
.credits-sig .sig-thanks{display:block;margin-top:10px;}
.credits-sig .sig-thanks[hidden]{display:none;}
.footer-meta{margin-top:14px;font-size:.74rem;color:var(--ink-dim);}
.footer-meta a{color:var(--ink-soft);text-decoration:underline;text-underline-offset:2px;}
.footer-link{background:none;border:0;cursor:pointer;font:inherit;color:var(--ink-soft);padding:0;text-decoration:underline;text-underline-offset:2px;}
.footer-link:hover,.footer-meta a:hover{color:var(--gold);}

/* ---------- Modal ---------- */
.modal{position:fixed;inset:0;z-index:100;display:grid;place-items:end center;}
.modal[hidden]{display:none;}
.modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.66);backdrop-filter:blur(3px);animation:fade .25s both;}
.modal-card{position:relative;width:100%;max-width:460px;background:var(--bg-2);border:1px solid var(--line);overflow:hidden;
  border-radius:20px 20px 0 0;padding:24px 20px calc(24px + var(--safe-bottom));box-shadow:0 -20px 50px -10px #000;animation:slideup .32s cubic-bezier(.2,.8,.3,1) both;}
.modal-card::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;border-radius:20px 20px 0 0;background:linear-gradient(90deg,var(--gold),var(--orange),var(--red));}
.modal-x{position:absolute;top:14px;right:14px;width:36px;height:36px;border-radius:50%;border:1px solid var(--line);background:var(--card);color:var(--ink);font-size:1.4rem;line-height:1;cursor:pointer;display:grid;place-items:center;}
.modal-title{font-family:var(--font-display);font-weight:400;font-size:1.8rem;margin:.1em 0 .2em;text-transform:uppercase;letter-spacing:.01em;}
.modal-sub{margin:0 0 16px;font-size:.9rem;color:var(--ink-soft);}
.field{display:block;margin-bottom:14px;}
.field > span{display:block;font-weight:700;font-size:.8rem;margin-bottom:5px;color:var(--ink);}
.field input,.field textarea{width:100%;font-family:var(--font);font-size:1rem;color:var(--ink);padding:.7em .85em;border:1px solid var(--line);border-radius:11px;background:var(--card);resize:vertical;}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px var(--glow);}
.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none;}
.field-note{font-size:.76rem;color:var(--ink-dim);margin:0 0 12px;line-height:1.5;}
.field-hint{display:block;font-size:.72rem;color:var(--ink-dim);margin-top:5px;line-height:1.45;}
.field em{font-style:normal;color:var(--ink-dim);font-weight:500;}
.turnstile-box{display:flex;justify-content:center;margin:0 0 14px;}
.turnstile-box:empty{display:none;}
.field-note a{color:var(--gold);}
.form-msg{margin:0 0 12px;font-weight:600;font-size:.88rem;min-height:1.2em;}
.form-msg.ok{color:var(--gold-2);}
.form-msg.err{color:var(--red);}
.btn-send{width:100%;font-family:var(--font);font-weight:800;font-size:1rem;color:#1a1409;background:linear-gradient(180deg,var(--gold-2),var(--gold));border:0;border-radius:12px;padding:.9em 1em;cursor:pointer;transition:transform .12s,opacity .2s;}
.btn-send:active{transform:scale(.98);}
.btn-send:disabled{opacity:.55;cursor:default;}

/* ---------- Install pill (flutuante) ---------- */
.install-pill{position:fixed;right:16px;bottom:calc(18px + var(--safe-bottom));z-index:200;display:flex;align-items:center;gap:4px;
  background:var(--card);border-radius:999px;border:1px solid var(--gold);box-shadow:0 10px 26px -8px #000;padding-right:5px;animation:rise .5s both;pointer-events:auto;}
.install-pill[hidden]{display:none;}
.install-action{background:none;border:0;cursor:pointer;font-family:var(--font);color:var(--gold);font-weight:700;font-size:.9rem;padding:.7em .5em .7em 1.1em;touch-action:manipulation;}
.install-close{flex:none;width:34px;height:34px;border-radius:50%;cursor:pointer;background:rgba(255,255,255,.08);border:0;color:var(--ink-soft);font-size:1.25rem;line-height:1;display:grid;place-items:center;touch-action:manipulation;}

/* ---------- Página legal ---------- */
.legal{max-width:var(--col);margin:0 auto;padding:24px 20px calc(40px + var(--safe-bottom));font-size:.94rem;line-height:1.62;color:var(--ink);}
.legal-back{display:inline-block;color:var(--gold);font-weight:700;text-decoration:none;margin:6px 0 14px;}
.legal-title{font-family:var(--font-display);font-weight:400;font-size:2.3rem;line-height:1;margin:.2em 0 .1em;text-transform:uppercase;}
.legal-updated{color:var(--ink-dim);font-size:.82rem;margin:0 0 20px;}
.legal h2{font-family:var(--font-display);font-weight:400;font-size:1.35rem;margin:1.5em 0 .3em;color:var(--gold);text-transform:uppercase;letter-spacing:.01em;}
.legal ul{padding-left:1.2em;margin:.4em 0;}
.legal li{margin:.4em 0;}
.legal a{color:var(--gold);}

/* ---------- Animations ---------- */
@keyframes rise{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:none;}}
@keyframes pop{from{opacity:0;transform:translateY(10px) scale(.99);}to{opacity:1;transform:none;}}
@keyframes fade{from{opacity:0;}to{opacity:1;}}
@keyframes slideup{from{transform:translateY(100%);}to{transform:none;}}
@keyframes cityDrop{from{transform:translateY(-75%);opacity:0;}to{transform:translateY(0);opacity:1;}}
.cards .card{animation-delay:calc(var(--i,0) * 40ms);}
@media (prefers-reduced-motion:reduce){*{animation-duration:.001s !important;}.seg-thumb,.daynav-arrow,.vcard-arrow{transition:none;}}

/* ============================================================
   DESKTOP — aproveitar o espaço
   ============================================================ */
@media (min-width:760px){
  .cards{grid-template-columns:repeat(2,1fr);max-width:var(--maxw);}
  .venue-list{grid-template-columns:repeat(2,1fr);max-width:var(--maxw);}
  .vibe-grid{grid-template-columns:repeat(2,1fr);}
  .festa-group{max-width:var(--maxw);}
  .festa-group .card.festa{margin:0;}
  .festa-cards{grid-template-columns:repeat(2,1fr);}
  .daysummary,.daynav,.daystrip,.vibe-intro,.footer{max-width:var(--maxw);}
  .modal{place-items:center;}
  .modal-card{border-radius:20px;}
  .modal-card::before{border-radius:20px 20px 0 0;}
}
@media (min-width:1080px){
  .cards{grid-template-columns:repeat(3,1fr);}
  .festa-cards{grid-template-columns:repeat(3,1fr);}
  .venue-list{grid-template-columns:repeat(3,1fr);}
  .title{font-size:7.5rem;}
}

/* ---------- Modal de local (vline reaproveitado) ---------- */
.vmodal{max-width:520px;}
.vm-body{max-height:60vh;overflow-y:auto;margin-top:4px;}
.vm-body .vline{display:flex;gap:12px;padding:9px 0;border-top:1px solid var(--line-soft);align-items:baseline;}
.vm-body .vline:first-child{border-top:0;}
.vm-body .vcard-meta{padding:2px 0 6px;}

/* ---------- Partilha ---------- */
.share-btn { display:inline-flex; align-items:center; justify-content:center; width:40px; height:40px; border-radius:50%; border:1px solid rgba(244,236,220,.18); background:transparent; color:var(--cream,#F4ECDC); cursor:pointer; }
.share-btn:hover { background:rgba(244,236,220,.08); }
.toast { position:fixed; left:50%; bottom:24px; transform:translateX(-50%) translateY(12px); background:#1c1814; color:#F4ECDC; padding:12px 18px; border-radius:999px; font-weight:600; box-shadow:0 8px 30px rgba(0,0,0,.4); opacity:0; transition:opacity .2s, transform .2s; z-index:9999; pointer-events:none; }
.toast.show { opacity:1; transform:translateX(-50%) translateY(0); }

/* ---------- Partilha por arraial ---------- */
.vcard-head .vshare, .vshare { background:transparent; border:none; color:var(--muted,#BCA98C); cursor:pointer; padding:4px; border-radius:8px; display:inline-flex; align-items:center; }
.vshare:hover { color:var(--cream,#F4ECDC); background:rgba(244,236,220,.08); }
.vshare-modal { position:absolute; top:18px; right:54px; }
.share-menu { position:fixed; z-index:9998; background:#1c1814; border:1px solid rgba(244,236,220,.14); border-radius:14px; padding:6px; box-shadow:0 12px 40px rgba(0,0,0,.5); min-width:220px; }
.share-menu button { display:flex; align-items:center; gap:10px; width:100%; background:transparent; border:none; color:#F4ECDC; padding:12px 14px; border-radius:10px; font:inherit; text-align:left; cursor:pointer; }
.share-menu button:hover { background:rgba(244,236,220,.08); }

/* ---------- Ícone de localização (mapa) ---------- */
.venue-map { display:inline-flex; align-items:center; justify-content:center; flex:none; width:30px; height:30px; border-radius:50%; border:1px solid rgba(233,165,58,.35); background:rgba(233,165,58,.08); color:var(--gold,#E9A53A); text-decoration:none; }
.venue-map:hover { background:rgba(233,165,58,.18); }
.venue-head { display:flex; align-items:flex-start; gap:8px; }
.venue-head .venue-name { text-align:left; }
.vcard-nameline { display:flex; align-items:center; gap:8px; }
.modal-sub .venue-map { width:26px; height:26px; vertical-align:middle; }
