:root{
  --paper:#EFE2C6;        /* papel de cartaz */
  --card:#F9F0DC;
  --ink:#17130F;
  --muted:#6B6152;
  --line:#D6C6A4;
  --line-strong:#B9A57E;
  --water:#BFDCE2;
  --land:#F6EBD3;
  --park:#C7D9B4;
  --red:#DE2B1E;          /* acento principal */
  --cyan:#12A0C4;
  --yellow:#F0A81E;
  --step-1:4px; --step-2:8px; --step-3:12px; --step-4:16px;
  --step-5:24px; --step-6:32px; --step-7:48px;
  --sans:"Helvetica Neue",Helvetica,Arial,"Segoe UI",sans-serif;
  --display:Impact,Haettenschweiler,"Arial Narrow Bold","Franklin Gothic Heavy",sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--paper); color:var(--ink); font-family:var(--sans);
  font-size:15px; line-height:1.5; -webkit-font-smoothing:antialiased;
  font-variant-numeric:tabular-nums;
}
a{color:inherit}

/* ---------- cabeçalho-cartaz ---------- */
.poster{position:relative; background:var(--cyan); border-bottom:3px solid var(--ink); overflow:hidden}
.poster::after{ /* granulado de impressão */
  content:""; position:absolute; inset:0; pointer-events:none; opacity:.22;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/></filter><rect width='120' height='120' filter='url(%23n)' opacity='.55'/></svg>");
}
.poster-inner{
  position:relative; z-index:1; max-width:1180px; margin:0 auto;
  padding:var(--step-6) var(--step-5) var(--step-5);
  display:grid; grid-template-columns:1fr auto; gap:var(--step-5); align-items:start;
}
h1{
  font-family:var(--display); font-weight:400;
  font-size:clamp(46px,9vw,104px); line-height:.84; letter-spacing:.005em;
  text-transform:uppercase; color:var(--red); margin:0;
  text-shadow:2px 2px 0 rgba(23,19,15,.18);
}
h1 small{display:block; font-size:.36em; color:var(--paper); letter-spacing:.03em; margin-top:.18em}
.lede{max-width:52ch; margin:var(--step-4) 0 0; color:#0B2D36; font-size:14.5px}
.lede a{color:var(--ink); text-decoration:none; border-bottom:2px solid var(--yellow); font-weight:600}
.lede a:hover{background:var(--yellow)}
.seal{
  width:132px; height:96px; border-radius:50%; background:var(--yellow);
  border:3px solid #2F7A3E; display:grid; place-content:center; text-align:center;
  transform:rotate(6deg); flex:none;
}
.seal b{display:block; font-family:var(--display); font-size:26px; line-height:.9; color:var(--red); letter-spacing:.02em}
.seal span{font-size:8.5px; letter-spacing:.18em; text-transform:uppercase; color:#2F7A3E; font-weight:700}

/* ---------- controles ---------- */
.controls{
  max-width:1180px; margin:0 auto; padding:var(--step-3) var(--step-5);
  display:flex; flex-wrap:wrap; gap:var(--step-3) var(--step-5);
  align-items:center; justify-content:space-between;
  border-bottom:2px solid var(--ink);
  position:sticky; top:0; z-index:900; background:var(--paper);
}
.ctrl-row{display:flex; gap:var(--step-4); flex-wrap:wrap; align-items:center}
.days{display:flex; flex-wrap:wrap; gap:var(--step-1)}
.day-btn{
  font-family:var(--display); font-size:16px; letter-spacing:.03em;
  background:none; border:2px solid transparent; color:var(--muted);
  padding:2px 8px; cursor:pointer; line-height:1.25;
}
.day-btn:hover{color:var(--ink); border-color:var(--line-strong)}
.day-btn[aria-pressed="true"]{background:var(--red); color:var(--paper); border-color:var(--red)}
.seg{display:inline-flex; border:2px solid var(--ink)}
.seg button{
  font-family:var(--display); font-size:14px; letter-spacing:.06em; text-transform:uppercase;
  background:none; border:0; cursor:pointer; padding:4px 11px; color:var(--muted);
}
.seg button + button{border-left:2px solid var(--ink)}
.seg button[aria-pressed="true"]{background:var(--ink); color:var(--paper)}
.toggle{
  font:inherit; font-size:13px; color:var(--muted); display:inline-flex;
  align-items:center; gap:var(--step-2); background:none; border:0; cursor:pointer; padding:4px 0;
}
.toggle .box{width:14px; height:14px; border:2px solid var(--ink); display:inline-block}
.toggle[aria-pressed="true"]{color:var(--ink); font-weight:600}
.toggle[aria-pressed="true"] .box{background:var(--red); border-color:var(--red)}
.day-btn:focus-visible,.toggle:focus-visible,.seg button:focus-visible,input:focus-visible{outline:3px solid var(--red); outline-offset:2px}

/* ---------- layout ---------- */
.wrap{
  max-width:1180px; margin:0 auto; padding:var(--step-5);
  display:grid; grid-template-columns:380px 1fr; gap:var(--step-6); align-items:start;
}
.map-col{position:sticky; top:78px}
.map-frame{background:var(--card); border:2px solid var(--ink); padding:var(--step-3)}
#gmap{width:100%; height:520px; background:var(--water); border:1px solid var(--line-strong)}
.leaflet-container{font-family:var(--sans); background:var(--water)}
.leaflet-popup-content{margin:11px 13px; font-size:13px; line-height:1.45}
.leaflet-popup-content b{display:block; font-family:var(--display); font-size:16px; letter-spacing:.02em; margin-bottom:2px; text-transform:uppercase}
.leaflet-popup-content .pop-note{color:var(--muted)}
.leaflet-popup-content a{color:var(--red); font-size:12px; font-weight:600; display:inline-block; margin-top:6px}
.leaflet-popup-content-wrapper{border-radius:0; border:2px solid var(--ink); background:var(--card); box-shadow:3px 3px 0 rgba(23,19,15,.25)}
.leaflet-popup-tip{background:var(--card); border:2px solid var(--ink)}
.base-marker{width:11px; height:11px; background:var(--paper); border:3px solid var(--ink)}

.wrap.view-map{grid-template-columns:1fr 330px; gap:var(--step-5)}
.wrap.view-map #gmap{height:calc(100vh - 200px)}
.wrap.view-map main{max-height:calc(100vh - 170px); overflow-y:auto; padding-right:var(--step-2)}
.wrap.view-map .ev-note,.wrap.view-map .ev-near-list,.wrap.view-map .tags{display:none}
.wrap.view-map .event{grid-template-columns:1fr; gap:2px; padding:var(--step-3) var(--step-2)}
.wrap.view-map .ev-title{font-size:18px}
.wrap.view-map .day-num{font-size:26px}

.search{display:flex; gap:var(--step-2); margin-bottom:var(--step-3)}
.search input{
  flex:1; font:inherit; font-size:13px; padding:7px 9px;
  border:2px solid var(--ink); background:var(--paper); color:var(--ink);
}
.search button{
  font-family:var(--display); font-size:13px; letter-spacing:.06em; text-transform:uppercase;
  padding:7px 10px; cursor:pointer; border:2px solid var(--ink); background:var(--yellow); color:var(--ink);
}
.search button:hover{background:var(--red); color:var(--paper)}

.legend{
  display:flex; gap:var(--step-4); flex-wrap:wrap; margin-top:var(--step-3);
  padding-top:var(--step-3); border-top:2px solid var(--ink); font-size:12px; color:var(--muted);
}
.legend span, .legend-cats span{display:inline-flex; align-items:center; gap:6px}
.legend-cats{display:flex; flex-wrap:wrap; gap:var(--step-2) var(--step-4); margin-top:var(--step-3); font-size:12px; color:var(--ink)}
.sw{width:12px; height:12px; border-radius:50%; flex:none; border:1.5px solid var(--ink)}
.sw.free{background:var(--red)}
.sw.paid{background:var(--card)}
.sw.base{background:var(--paper); border-radius:0; border-width:3px}
.map-note{margin:var(--step-3) 0 0; font-size:11.5px; color:var(--muted); line-height:1.45}
.fallback-note{font-size:12px; color:var(--ink); background:var(--yellow); border:2px solid var(--ink); padding:var(--step-2) var(--step-3); margin-bottom:var(--step-3)}

/* ---------- meu mapa (Google My Maps) ---------- */
.mymaps-frame{border:2px solid var(--ink); background:var(--card); margin-top:var(--step-3)}
.mymaps-head{
  display:flex; align-items:center; gap:var(--step-2); padding:6px var(--step-3);
  border-bottom:2px solid var(--ink); font-size:12px;
}
.mymaps-head b{font-family:var(--display); font-size:13px; letter-spacing:.05em; text-transform:uppercase; font-weight:400}
.mymaps-head a{margin-left:auto; font-size:11.5px; border-bottom:2px solid var(--yellow); text-decoration:none; font-weight:600; color:var(--ink)}
#mymaps{width:100%; height:320px; border:0; display:block}

/* ---------- lista ---------- */
.day-group{margin-bottom:var(--step-6); scroll-margin-top:96px}
.day-head{
  display:flex; align-items:baseline; gap:var(--step-3);
  padding-bottom:var(--step-1); border-bottom:3px solid var(--ink); margin-bottom:var(--step-4);
}
.day-num{font-family:var(--display); font-size:40px; line-height:.86; color:var(--red); letter-spacing:.01em}
.day-name{font-family:var(--display); font-size:16px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink)}
.day-count{margin-left:auto; font-size:12px; color:var(--muted)}

.event{
  display:grid; grid-template-columns:72px 1fr; gap:var(--step-4);
  padding:var(--step-4) var(--step-3); border-bottom:1px solid var(--line);
  cursor:pointer; background:none; border-left:0; border-right:0; border-top:0;
  width:100%; text-align:left; font:inherit; color:inherit;
}
.event:hover,.event.hot{background:var(--card)}
.event.active{background:var(--card); box-shadow:inset 4px 0 0 var(--red)}
.event:focus-visible{outline:3px solid var(--red); outline-offset:-3px}
.ev-time{font-size:12.5px; color:var(--muted); padding-top:3px}
.ev-title{font-family:var(--display); font-size:21px; line-height:1.06; letter-spacing:.015em; text-transform:uppercase; margin:0 0 4px; display:block}
.ev-meta{font-size:13px; color:var(--muted); margin:0 0 6px}
.ev-note{font-size:13.5px; margin:0; max-width:56ch}
.dist{white-space:nowrap}
.dist::before{content:"·"; margin:0 6px}
.anchor{font-size:10.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--paper); background:var(--red); font-weight:700; display:inline-block; padding:2px 6px; margin-bottom:5px}
.region{font-size:10.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); display:block; margin-bottom:5px}
.tags{display:flex; flex-wrap:wrap; gap:5px; margin-top:9px}
.tag{font-size:10.5px; letter-spacing:.08em; text-transform:uppercase; border:1.5px solid var(--line-strong); color:var(--muted); padding:2px 6px}
.tag.free{border-color:var(--red); color:var(--red); font-weight:700}
.tag.check{border-style:dashed}
.links{display:flex; gap:var(--step-3); margin-top:9px; flex-wrap:wrap}
.links a{font-size:12px; color:var(--ink); text-decoration:none; border-bottom:2px solid var(--yellow); font-weight:600}
.links a:hover{background:var(--yellow)}

.ev-near-list{margin:var(--step-3) 0 0; padding:0 0 0 var(--step-3); border-left:2px solid var(--line-strong); list-style:none}
.ev-near-head{font-size:10.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); margin:0 0 6px}
.ev-near-list li{display:flex; gap:var(--step-2); align-items:baseline; font-size:13px; padding:3px 0}
.ev-near-list li.hot{background:var(--paper)}
.ev-near-list .pl-name{font-weight:600}
.ev-near-list .pl-note{color:var(--muted)}
.ev-near-list .pl-dist{color:var(--muted); font-size:12px; margin-left:auto; white-space:nowrap; padding-left:var(--step-3)}
.ev-near-list a{color:inherit; text-decoration:none}
.ev-near-list a:hover .pl-name{color:var(--red)}
.cat{display:inline-block; width:9px; height:9px; border-radius:50%; flex:none; border:1.5px solid var(--ink); transform:translateY(-1px)}

/* ---------- modal do assistente ---------- */
.cta{
  font-family:var(--display); font-size:15px; letter-spacing:.06em; text-transform:uppercase;
  background:var(--red); color:var(--paper); border:2px solid var(--ink);
  padding:5px 13px; cursor:pointer; box-shadow:3px 3px 0 var(--ink);
}
.cta:hover{background:var(--ink)}
.cta:active{transform:translate(2px,2px); box-shadow:1px 1px 0 var(--ink)}
.modal[hidden]{display:none}
.modal{
  position:fixed; inset:0; z-index:2000; background:rgba(23,19,15,.55);
  display:flex; align-items:flex-start; justify-content:center; padding:var(--step-5) var(--step-3);
  overflow-y:auto;
}
.modal-box{
  background:var(--paper); border:3px solid var(--ink); box-shadow:8px 8px 0 rgba(23,19,15,.4);
  width:min(820px,100%); margin:auto 0;
}
.modal-head{
  background:var(--cyan); border-bottom:3px solid var(--ink);
  padding:var(--step-3) var(--step-4); display:flex; align-items:center; justify-content:space-between; gap:var(--step-3);
}
.modal-head h2{
  font-family:var(--display); font-weight:400; font-size:30px; letter-spacing:.02em;
  text-transform:uppercase; color:var(--red); margin:0; line-height:1;
}
.close{
  font-family:var(--display); font-size:24px; line-height:1; background:var(--paper);
  border:2px solid var(--ink); width:34px; height:34px; cursor:pointer; color:var(--ink);
}
.close:hover{background:var(--red); color:var(--paper)}
.origin-bar{
  display:flex; flex-wrap:wrap; gap:var(--step-2); align-items:center;
  padding:var(--step-3) var(--step-4); border-bottom:2px solid var(--ink); font-size:13px;
}
.modal-tabs{margin:var(--step-3) var(--step-4) 0}
.modal-body{padding:var(--step-4)}
.chips{display:flex; flex-wrap:wrap; gap:var(--step-2); margin:6px 0 var(--step-4)}
.chip{
  font:inherit; font-size:12.5px; padding:5px 10px; cursor:pointer;
  border:2px solid var(--ink); background:var(--card); color:var(--ink);
}
.chip[aria-pressed="true"]{background:var(--ink); color:var(--paper)}
.chip.small{font-size:11.5px; padding:3px 8px; border-width:1.5px}
.q{font-size:12px; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); margin:0}
.cat-block{margin-bottom:var(--step-5)}
.cat-head{
  display:flex; align-items:center; gap:var(--step-2); margin-bottom:var(--step-2);
  padding-bottom:4px; border-bottom:2px solid var(--ink);
}
.cat-head b{font-family:var(--display); font-size:17px; letter-spacing:.04em; text-transform:uppercase; font-weight:400}
.cat-head span{margin-left:auto; font-size:12px; color:var(--muted)}
.near-row{display:flex; gap:var(--step-2); align-items:baseline; font-size:13.5px; padding:4px 0; border-bottom:1px solid var(--line)}
.near-row a{color:inherit; text-decoration:none; font-weight:600}
.near-row a:hover{color:var(--red)}
.near-row .n-note{color:var(--muted); font-weight:400}
.near-row .n-dist{margin-left:auto; color:var(--muted); font-size:12.5px; white-space:nowrap; padding-left:var(--step-3)}
.stop{
  display:grid; grid-template-columns:58px 1fr; gap:var(--step-3);
  padding:var(--step-3) 0; border-bottom:1px solid var(--line);
}
.stop-time{font-family:var(--display); font-size:19px; color:var(--red); letter-spacing:.02em}
.stop b{display:block; font-size:15.5px; margin-bottom:2px}
.stop .s-meta{font-size:12.5px; color:var(--muted)}
.stop .s-why{font-size:13px; margin:4px 0 0}
.stop a{font-size:12px; color:var(--ink); border-bottom:2px solid var(--yellow); text-decoration:none; font-weight:600}
.plan-summary{
  background:var(--card); border:2px solid var(--ink); padding:var(--step-3);
  font-size:13px; margin-bottom:var(--step-4);
}
.plan-summary b{font-family:var(--display); font-size:16px; letter-spacing:.03em; text-transform:uppercase; font-weight:400; display:block; margin-bottom:3px}
.route-btn{margin-top:var(--step-4)}
.modal-note{font-size:12.5px; color:var(--muted); margin:var(--step-3) 0 0}

/* ---------- google embed ---------- */
.map-src{display:flex; gap:var(--step-2); align-items:center; margin-bottom:var(--step-3)}
#gembed{width:100%; height:520px; border:1px solid var(--line-strong); background:var(--water)}
.wrap.view-map #gembed{height:calc(100vh - 200px)}
@media (max-width:900px){ #gembed, .wrap.view-map #gembed{height:58vh} }

/* ---------- ao vivo ---------- */
.wrap.view-live{grid-template-columns:1fr}
.wrap.view-live .map-col, .wrap.view-live main{display:none}
#live[hidden]{display:none}
.live-now{
  display:grid; grid-template-columns:minmax(220px,300px) 1fr; gap:var(--step-5);
  border:3px solid var(--ink); background:var(--card); margin-bottom:var(--step-5);
}
.now-box{background:var(--cyan); border-right:3px solid var(--ink); padding:var(--step-4); position:relative}
.now-temp{font-family:var(--display); font-size:74px; line-height:.86; color:var(--red); margin:0}
.now-temp sup{font-size:.34em; vertical-align:super; margin-left:2px}
.now-cond{font-family:var(--display); font-size:20px; letter-spacing:.04em; text-transform:uppercase; color:var(--ink); margin:6px 0 0}
.now-sub{font-size:12.5px; color:#0B2D36; margin:6px 0 0}
.forecast{padding:var(--step-4); overflow-x:auto}
.fc-row{display:flex; gap:var(--step-2); min-width:min-content}
.fc-day{
  border:2px solid var(--ink); background:var(--paper); padding:var(--step-2) var(--step-3);
  min-width:92px; text-align:center;
}
.fc-day.trip{background:var(--yellow)}
.fc-day b{display:block; font-family:var(--display); font-size:15px; letter-spacing:.06em; text-transform:uppercase; font-weight:400}
.fc-day .fc-t{font-size:16px; font-weight:700; margin:3px 0}
.fc-day .fc-t i{font-style:normal; color:var(--muted); font-weight:400}
.fc-day .fc-c{font-size:11px; line-height:1.25; color:var(--muted); min-height:26px}
.fc-day .fc-p{font-size:11px; color:var(--ink); margin-top:3px}
.cams{display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:var(--step-4)}
.cam{border:3px solid var(--ink); background:var(--ink)}
.cam .cam-head{
  background:var(--paper); border-bottom:3px solid var(--ink); padding:6px var(--step-3);
  display:flex; align-items:center; gap:var(--step-2);
}
.cam .cam-head b{font-family:var(--display); font-size:14px; letter-spacing:.05em; text-transform:uppercase; font-weight:400;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.cam .cam-head a{margin-left:auto; font-size:11px; white-space:nowrap; border-bottom:2px solid var(--yellow); text-decoration:none; font-weight:600}
.dot-live{width:9px; height:9px; border-radius:50%; background:var(--red); flex:none; border:1.5px solid var(--ink)}
.cam iframe{display:block; width:100%; aspect-ratio:16/9; border:0}
.live-head{
  display:flex; align-items:baseline; gap:var(--step-3); border-bottom:3px solid var(--ink);
  padding-bottom:var(--step-1); margin-bottom:var(--step-4);
}
.live-head h2{font-family:var(--display); font-weight:400; font-size:30px; letter-spacing:.02em; text-transform:uppercase; margin:0; color:var(--red)}
.live-head span{font-size:12px; color:var(--muted); margin-left:auto}
@media (max-width:900px){ .live-now{grid-template-columns:1fr} .now-box{border-right:0; border-bottom:3px solid var(--ink)} }

.wc-marker{
  width:16px; height:16px; background:var(--card); border:2px solid #0E6F86;
  color:#0E6F86; font:700 8px/12px var(--sans); text-align:center; letter-spacing:.02em;
}
.sw.wc{background:var(--card); border:2px solid #0E6F86; border-radius:0}
.ext{
  display:inline-flex; align-items:center; justify-content:center;
  width:20px; height:20px; flex:none; margin-left:6px;
  border:1.5px solid var(--line-strong); color:var(--muted);
  font-size:11px; text-decoration:none; line-height:1;
}
.ext:hover{background:var(--red); color:var(--paper); border-color:var(--ink)}
.ev-near-list li{cursor:pointer}
.pl-src{font-size:9.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); border:1px solid var(--line-strong); padding:1px 4px; margin-left:6px}

.empty{color:var(--muted); font-size:14px; padding:var(--step-4) var(--step-3)}
footer{max-width:1180px; margin:0 auto; padding:var(--step-5); border-top:3px solid var(--ink); font-size:12.5px; color:var(--muted); line-height:1.6}
footer p{max-width:62ch; margin:0 0 var(--step-2)}
.barcode{display:flex; gap:2px; align-items:flex-end; height:34px; margin-top:var(--step-4)}
.barcode i{display:block; width:2px; background:var(--ink)}

@media (max-width:900px){
  .wrap, .wrap.view-map{grid-template-columns:1fr; gap:var(--step-5); padding:var(--step-4)}
  .map-col, .wrap.view-map .map-col{position:static}
  #gmap, .wrap.view-map #gmap{height:58vh}
  .wrap.view-map main{max-height:none; overflow:visible}
  .poster-inner{grid-template-columns:1fr; padding:var(--step-5) var(--step-4)}
  .seal{transform:rotate(-4deg)}
  .controls{padding:var(--step-3) var(--step-4)}
  .event{grid-template-columns:60px 1fr; gap:var(--step-3)}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
