/* ---------- gráficos e animações das reportagens ---------- */
.reveal{opacity:0;transform:translateY(24px);transition:opacity .7s ease,transform .7s ease}
.reveal[data-anim=left]{transform:translateX(-40px)}
.reveal[data-anim=right]{transform:translateX(40px)}
.reveal[data-anim=zoom]{transform:scale(.92)}
.reveal[data-anim=fade]{transform:none}
.reveal.is-in{opacity:1;transform:none}
/* mapa */
.map{position:relative;overflow:hidden;aspect-ratio:5/3;background:var(--f)}
.map__world{position:absolute;inset:0;transform-origin:50% 50%;transition:transform .9s cubic-bezier(.3,.6,.2,1)}
.map__world svg{position:absolute;inset:0;width:100%;height:100%}
.map__land{fill:var(--land)}
.story--dark .map__land{fill:#333}
.map__route{fill:none;stroke:var(--ink);stroke-width:calc(.35px*var(--inv,1));stroke-dasharray:1;stroke-dashoffset:0;transition:stroke-dashoffset 2.2s ease .2s}
.reveal:not(.is-in) .map__route{stroke-dashoffset:1}
.map__pin{position:absolute;width:1.7rem;height:1.7rem;margin:-.85rem 0 0 -.85rem;padding:0;border-radius:50%;border:2px solid var(--bg);background:var(--ink);color:var(--bg);font:500 .75rem/1 "Jost",sans-serif;cursor:pointer;transform:scale(var(--inv,1));transition:transform .9s,background .3s,color .3s}
.map__pin.is-active{background:var(--bg);color:var(--ink);box-shadow:0 0 0 3px var(--ink)}
.map__card{margin-top:.75rem;font-size:.95rem;color:var(--mute);min-height:1.6em}
.map__card strong{color:var(--ink);font-weight:500}
/* cronologia */
.timeline{list-style:none;margin-inline:0;padding:0 0 0 1.5rem;border-left:1px solid var(--ink)}
.timeline__item{position:relative;padding-bottom:1.75rem}
.timeline__item::before{content:"";position:absolute;left:calc(-1.5rem - 5px);top:.45rem;width:9px;height:9px;border-radius:50%;background:var(--ink)}
.timeline time{font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;color:var(--mute)}
.timeline h3{margin:.1rem 0 .3rem;font-size:1.15rem;font-weight:500}
.timeline p{margin:0}
/* números */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));gap:1.5rem;padding:1.5rem 0;border-block:1px solid var(--line)}
.stats__value{font-size:clamp(2.2rem,5vw,3.4rem);font-weight:300;line-height:1;margin:0 0 .4rem!important}
/* gráficos */
.chart h3{font-size:1rem;font-weight:500;margin:0 0 1rem}
.chart__row{display:grid;grid-template-columns:7rem 1fr 4.5rem;gap:.75rem;align-items:center;margin-bottom:.6rem;font-size:.9rem}
.chart__track{height:.9rem;background:var(--line)}
.chart__track i{display:block;height:100%;width:var(--w);background:var(--ink);transition:width 1.1s cubic-bezier(.2,.7,.2,1)}
.chart:not(.is-in) .chart__track i{width:0}
.chart__val{text-align:right;color:var(--mute)}
.chart__line{max-width:36rem}
.chart__line svg{display:block;width:100%;height:auto}
.chart__line polyline{fill:none;stroke:var(--ink);stroke-width:.6;stroke-dasharray:1;stroke-dashoffset:0;transition:stroke-dashoffset 1.8s ease}
.chart:not(.is-in) .chart__line polyline{stroke-dashoffset:1}
.chart__axis{display:flex;justify-content:space-between;font-size:.75rem;color:var(--mute);margin-top:.4rem}
/* antes / depois */
.compare__box{position:relative;overflow:hidden;user-select:none}
.compare__after{position:absolute;inset:0;clip-path:inset(0 0 0 var(--pos))}
.compare__after .f,.compare__after .ph,.compare__after img{height:100%;width:100%;object-fit:cover}
.compare__after .ph{aspect-ratio:auto!important;background:linear-gradient(135deg,#9a9a9a,#4d4d4d)}
.compare__line{position:absolute;top:0;bottom:0;left:var(--pos);width:2px;margin-left:-1px;background:#fff;pointer-events:none}
.compare__tag{position:absolute;top:.75rem;font:500 .75rem "Jost",sans-serif;background:rgba(0,0,0,.6);color:#fff;padding:.2rem .5rem;pointer-events:none}
.compare__tag--a{left:.75rem}
.compare__tag--b{right:.75rem}
.compare__range{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:ew-resize}
.compare__box:focus-within{outline:2px solid var(--ink);outline-offset:3px}
/* parallax */
.parallax{position:relative;height:70vh;overflow:hidden;display:flex;align-items:center;justify-content:center;margin-block:2rem}
.parallax__layer{position:absolute;inset:-18% 0;will-change:transform}
.parallax__layer .f,.parallax__layer .ph{height:100%}
.parallax__layer .ph{aspect-ratio:auto!important}
.parallax__text{position:relative;color:#fff;text-align:center;padding:0 1.5rem;text-shadow:0 1px 18px rgba(0,0,0,.5)}
.parallax__text h2{font-size:clamp(2rem,5vw,3.6rem);font-weight:300;margin:0}
.parallax__text p{margin:.5rem 0 0}
/* áudio */
.audio{display:flex;gap:1rem;align-items:center;padding:1rem 1.25rem;border:1px solid var(--line)}
.audio audio{width:100%;margin-top:.4rem}
.audio__btn{flex:none;position:relative;width:3rem;height:3rem;border-radius:50%;border:1px solid var(--ink);background:none;cursor:pointer}
.audio__btn::after{content:"";position:absolute;left:1.2rem;top:.9rem;border:.6rem solid transparent;border-left:.9rem solid var(--ink);border-right:0}
.audio.is-playing .audio__btn::after{border:0;left:1rem;top:1rem;width:1rem;height:1rem;border-left:.3rem solid var(--ink);border-right:.3rem solid var(--ink)}
.audio__body{flex:1;min-width:0}
.audio__wave{display:flex;align-items:center;gap:2px;height:2.2rem;margin:.4rem 0}
.audio__wave i{flex:1;background:var(--mute);border-radius:1px}
.audio.is-playing .audio__wave i{background:var(--ink);animation:wave 1s ease-in-out infinite alternate}
.audio__wave i:nth-child(3n){animation-delay:-.3s}
.audio__wave i:nth-child(3n+1){animation-delay:-.6s}
@keyframes wave{to{transform:scaleY(.35)}}
@media (max-width:760px){.chart__row{grid-template-columns:5rem 1fr 3.5rem}.parallax{height:55vh}}
@media (prefers-reduced-motion:reduce){
  .reveal{opacity:1;transform:none;transition:none}
  .map__world,.map__pin,.map__route,.chart__track i,.chart__line polyline{transition:none}
  .audio.is-playing .audio__wave i{animation:none}
}
