/* Responsive hardening for phones from 320px upward. */
img, video, audio { max-width: 100%; }
body.intro-active { overflow: hidden; }
.campaign-intro { position: fixed; inset: 0; z-index: 9999; overflow: hidden; display: grid; grid-template-columns: .9fr 1.1fr; align-items: center; padding: clamp(24px, 5vw, 72px); color: #fff; background: radial-gradient(circle at 65% 35%, #173bd0 0, #0a218f 38%, #06144f 78%); isolation: isolate; transition: opacity .55s ease, visibility .55s ease; }
.campaign-intro.is-closing { opacity: 0; visibility: hidden; pointer-events: none; }
.intro-glow { position: absolute; width: 55vw; aspect-ratio: 1; right: -8vw; top: -20vw; border: clamp(55px, 8vw, 130px) solid rgba(255, 11, 104, .28); border-radius: 50%; z-index: -1; animation: intro-pulse 2.4s ease-in-out infinite; }
.intro-candidate { align-self: end; justify-self: center; width: min(38vw, 570px); max-height: 100vh; overflow: hidden; transform: translateY(110%) scale(.86); opacity: 0; animation: intro-candidate-in .9s .05s cubic-bezier(.16,1,.3,1) forwards; filter: drop-shadow(0 35px 45px rgba(0,0,0,.35)); }
.intro-candidate img { display: block; width: 100%; height: auto; max-height: calc(100vh - 24px); object-fit: contain; object-position: center bottom; }
.intro-copy { position: relative; z-index: 2; text-align: center; transform: translateX(50px); opacity: 0; animation: intro-copy-in .65s .15s ease-out forwards; }
.intro-copy > img { width: min(270px, 50%); max-height: 190px; object-fit: contain; margin-bottom: 10px; }
.intro-copy p, .intro-copy small { margin: 0; text-transform: uppercase; font-weight: 800; letter-spacing: .22em; }
.intro-copy p { font-size: clamp(.9rem, 1.5vw, 1.25rem); color: var(--cyan); }
.intro-copy strong { display: flex; justify-content: center; color: var(--yellow); font-family: "Archivo Black", Inter, sans-serif; font-size: clamp(5.5rem, 14vw, 13rem); line-height: .95; letter-spacing: -.09em; text-shadow: 0 12px 0 rgba(0,0,0,.14); }
.intro-copy strong span { display: inline-block; opacity: 0; transform: translateY(-70px) rotate(-8deg); animation: intro-number .45s cubic-bezier(.2,.9,.3,1.3) forwards; }
.intro-copy strong span:nth-child(1) { animation-delay: .4s; }
.intro-copy strong span:nth-child(2) { animation-delay: .52s; }
.intro-copy strong span:nth-child(3) { animation-delay: .64s; }
.intro-copy strong span:nth-child(4) { animation-delay: .76s; }
.intro-copy strong span:nth-child(5) { animation-delay: .88s; color: #fff; }
.intro-copy small { display: block; font-size: clamp(.75rem, 1.5vw, 1.15rem); }
.intro-skip { position: absolute; top: max(18px, env(safe-area-inset-top)); right: max(18px, env(safe-area-inset-right)); z-index: 4; min-height: 44px; padding: 10px 16px; border: 1px solid rgba(255,255,255,.45); border-radius: 999px; background: rgba(4,13,54,.35); color: #fff; font-weight: 700; }
.intro-skip:hover, .intro-skip:focus-visible { background: #fff; color: var(--blue); outline: none; }
@keyframes intro-candidate-in { to { transform: translateY(0) scale(1); opacity: 1; } }
@keyframes intro-copy-in { to { transform: translateX(0); opacity: 1; } }
@keyframes intro-number { to { opacity: 1; transform: translateY(0) rotate(0); } }
@keyframes intro-pulse { 50% { transform: scale(1.06); opacity: .7; } }
.hero-copy, .hero-art, .story-grid > *, .section-heading > *, .proposal-card,
.media-grid > *, .audio-card > div, .participate > * { min-width: 0; }
.menu-toggle, .topbar nav a, .card-link { min-height: 44px; }
.menu-toggle { min-width: 44px; align-items: center; justify-content: center; }
.proposal-form input, .proposal-form select, .proposal-form textarea { font-size: 16px; }
.brand { width: 150px; height: 72px; display: flex; align-items: center; }
.brand img { width: 100%; height: 68px; object-fit: contain; }
.hero h1 { font-size: clamp(3.35rem, 6.2vw, 7rem); }
.instagram-button { display: inline-flex; align-items: center; gap: 10px; min-height: 48px; padding: 10px 15px; border: 2px solid rgba(255,255,255,.38); border-radius: 999px; color: #fff; font-size: .88rem; }
.instagram-button:hover { border-color: var(--pink); background: rgba(255,11,104,.16); }
.instagram-button svg { width: 25px; height: 25px; fill: none; stroke: currentColor; stroke-width: 2; flex: 0 0 auto; }
.candidate-cutout { width: min(38vw, 520px); align-self: end; filter: drop-shadow(0 36px 48px rgba(0, 0, 0, .3)); }
.candidate-cutout img { display: block; width: 100%; height: auto; }
.campaign-badge { display: block; width: min(310px, 80%); height: auto; aspect-ratio: 1; object-fit: cover; clip-path: circle(49%); margin-top: 42px; box-shadow: 0 18px 42px rgba(9, 18, 58, .16); border-radius: 50%; }
#historia, #livro, #propostas, #midia, #participe { scroll-margin-top: 96px; }
.social-icons { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 30px; }
.social-icons a, .social-coming { min-height: 48px; display: inline-flex; align-items: center; gap: 10px; padding: 10px 15px; border: 2px solid #c8cee8; border-radius: 999px; font-weight: 800; }
.social-icons a:hover { border-color: var(--pink); color: var(--pink); }
.social-icons svg { width: 25px; height: 25px; fill: none; stroke: currentColor; stroke-width: 2; }
.social-icons .social-coming svg { fill: currentColor; stroke: none; }
.social-coming { opacity: .7; }
.audio-download { display: inline-block; margin-top: 12px; font-size: .84rem; font-weight: 800; text-decoration: underline; text-underline-offset: 4px; }
.footer-campaign-logo { width: min(190px, 100%); max-height: 150px; object-fit: contain; object-position: left center; }
.book { display: grid; grid-template-columns: minmax(340px, .85fr) 1.15fr; gap: clamp(44px, 7vw, 100px); align-items: center; color: #fff; background: linear-gradient(135deg, #06144f 0%, #0b2188 58%, #1537c6 100%); overflow: hidden; position: relative; }
.book::after { content: ""; position: absolute; width: 260px; height: 260px; right: -150px; bottom: -155px; border: 55px solid rgba(255,11,104,.24); border-radius: 50%; }
.book-visual { min-height: 560px; position: relative; display: grid; place-items: center; isolation: isolate; }
.book-orbit { position: absolute; width: 430px; max-width: 90%; aspect-ratio: 1; border: 58px solid var(--pink); border-radius: 50%; opacity: .9; z-index: -2; transform: translate(-9%, -5%); }
.book-visual::after { content: ""; position: absolute; width: 78%; height: 82%; background: var(--yellow); border-radius: 36px; transform: rotate(7deg); z-index: -1; box-shadow: 0 30px 80px rgba(0,0,0,.3); }
.book-cover { width: min(300px, 68%); padding: 10px; background: #fff; border-radius: 18px; box-shadow: 0 28px 70px rgba(4,13,54,.35); transform: rotate(-3deg); }
.book-cover img { display: block; width: 100%; border-radius: 10px; }
.book-pages { position: absolute; top: 10%; right: 1%; display: grid; place-items: center; width: 92px; height: 92px; border-radius: 50%; background: var(--cyan); color: var(--blue); box-shadow: 8px 8px 0 var(--pink); transform: rotate(7deg); }
.book-pages strong { font-family: "Archivo Black", Inter, sans-serif; font-size: 2rem; line-height: .9; }
.book-pages span { font-size: .68rem; font-weight: 800; text-transform: uppercase; }
.book-candidate-number { position: absolute; left: 0; bottom: 4%; padding: 12px 18px; color: var(--blue); background: var(--yellow); font-family: "Archivo Black", Inter, sans-serif; font-size: clamp(2.2rem, 4vw, 4rem); line-height: 1; transform: rotate(-4deg); box-shadow: 8px 8px 0 var(--pink); }
.book .section-label { color: #aab6eb; border-color: #3f4f98; }
.book-copy h2 { font-family: "Archivo Black", Inter, sans-serif; text-transform: uppercase; font-size: clamp(2.6rem, 5vw, 5.5rem); line-height: .96; letter-spacing: -.045em; margin: 0 0 26px; }
.book-copy > p:not(.eyebrow) { max-width: 640px; color: #dce2ff; font-size: 1.1rem; line-height: 1.7; }
.book-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 22px; margin-top: 32px; }
.book-download { max-width: 490px; text-align: center; line-height: 1.25; }
.tv-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.video-frame { position: relative; width: 100%; aspect-ratio: 16 / 9; overflow: hidden; border-radius: 18px; background: radial-gradient(circle at 75% 25%, #2147d8 0, #0b257f 38%, #040d36 100%); }
.video-card iframe { display: block; width: 100%; height: 100%; border: 0; background: #000; }
.campaign-audios { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: 18px; }
.campaign-audios .audio-card { min-height: 205px; }
.more-videos { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin-top: 28px; padding-top: 24px; border-top: 1px solid #3f4f98; }
.more-videos strong { margin-right: auto; }
.more-videos a { padding: 10px 14px; border: 1px solid #5366bb; border-radius: 999px; font-weight: 700; }
.more-videos a:hover { border-color: var(--yellow); color: var(--yellow); }
.topbar {
  padding-left: max(20px, env(safe-area-inset-left));
  padding-right: max(20px, env(safe-area-inset-right));
}
.floating-whatsapp {
  right: max(16px, env(safe-area-inset-right));
  bottom: max(16px, env(safe-area-inset-bottom));
}
.agency-credit {
  grid-column: 1 / -1;
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 8px;
  padding-top: 14px;
  border-top: 1px solid rgba(255, 255, 255, .08);
  color: #919bc4;
  opacity: .78;
}
.agency-credit span {
  font-size: .62rem;
  font-weight: 600;
  letter-spacing: .1em;
  text-transform: uppercase;
  white-space: nowrap;
}
.agency-credit img {
  width: 118px;
  height: auto;
  border-radius: 4px;
}

@media (max-width: 600px) {
  .campaign-intro { grid-template-columns: 1fr; grid-template-rows: 1fr 1.1fr; padding: 66px 18px 0; }
  .intro-copy { grid-row: 1; align-self: end; }
  .intro-copy > img { width: 132px; max-height: 105px; margin-bottom: 0; }
  .intro-copy strong { font-size: clamp(4.5rem, 25vw, 7rem); letter-spacing: -.11em; }
  .intro-copy small { font-size: .7rem; }
  .intro-candidate { grid-row: 2; width: min(73vw, 320px); margin-top: 10px; }
  .intro-glow { width: 105vw; right: -58vw; top: 7vh; border-width: 58px; }
  .intro-skip { font-size: .75rem; padding: 8px 13px; }
  .topbar { height: 68px; }
  #historia, #livro, #propostas, #midia, #participe { scroll-margin-top: 76px; }
  .brand { width: 112px; height: 58px; }
  .brand img { height: 56px; }
  .topbar nav {
    top: 68px;
    padding: 14px 20px 22px;
    gap: 2px;
    box-shadow: 0 18px 30px rgba(0, 0, 0, .24);
  }
  .topbar nav a {
    display: flex;
    align-items: center;
    border-bottom: 1px solid rgba(255, 255, 255, .12);
  }
  .hero { min-height: auto; padding: 58px 20px 92px; gap: 8px; }
  .hero h1 {
    font-size: clamp(2.3rem, 11.5vw, 3.45rem);
    line-height: .96;
    overflow-wrap: normal;
  }
  .hero-lead { line-height: 1.55; margin: 22px 0; }
  .hero-actions { gap: 14px; }
  .hero-actions .button { width: 100%; padding: 15px 18px; }
  .hero-actions .instagram-button { width: 100%; justify-content: center; }
  .hero-actions .text-link { align-self: center; }
  .vote-card { margin-top: 34px; max-width: none; }
  .vote-card strong { font-size: clamp(3.2rem, 18vw, 4.4rem); }
  .hero-art { margin-top: 38px; }
  .candidate-cutout { width: min(82vw, 390px); margin: 0 auto; }
  .ticker { padding: 11px 0; }
  .section { padding: 68px 20px; }
  .section-label { margin-bottom: 26px; }
  .story h2, .proposals h2, .participate h2 {
    font-size: clamp(2.15rem, 11vw, 3.25rem);
    line-height: .98;
  }
  .story-copy { padding-top: 0; font-size: 1rem; }
  .story-copy p:first-child { font-size: 1.12rem; }
  .campaign-badge { width: min(250px, 76vw); margin: 34px auto 0; }
  .social-icons { margin-top: 26px; }
  .manifesto { margin-top: 54px; padding: 24px; gap: 11px; border-radius: 20px; }
  .book { grid-template-columns: 1fr; gap: 38px; padding-top: 52px; }
  .book-visual { min-height: 420px; }
  .book-visual::after { width: 82%; height: 82%; border-radius: 26px; }
  .book-orbit { width: 340px; border-width: 44px; }
  .book-cover { width: min(220px, 62vw); }
  .book-pages { top: 7%; right: 2%; width: 78px; height: 78px; }
  .book-pages strong { font-size: 1.6rem; }
  .book-candidate-number { left: 1%; bottom: 3%; font-size: 2.35rem; }
  .book-copy h2 { font-size: clamp(2.15rem, 11vw, 3.15rem); }
  .book-actions { align-items: stretch; flex-direction: column; }
  .book-download { width: 100%; }
  .section-heading { margin-bottom: 34px; }
  .proposal-card { min-height: 0; padding: 26px; border-radius: 20px; }
  .icon { margin: 22px 0 32px; }
  .proposal-card h3 { font-size: 1.35rem; }
  .proposal-cta { min-height: 280px; }
  .media-grid { gap: 14px; }
  .tv-grid, .campaign-audios { grid-template-columns: 1fr; gap: 14px; }
  .video-card { border-radius: 20px; }
  .video-card video { aspect-ratio: 4 / 5; }
  .video-frame {
    width: 100%;
    height: clamp(190px, 58vw, 260px);
    aspect-ratio: auto;
    border-radius: 12px;
  }
  .video-card p { gap: 12px; font-size: .9rem; }
  .audio-card { min-height: 0; padding: 20px; flex-direction: column; gap: 4px; border-radius: 20px; }
  .audio-card audio { min-width: 0; }
  .more-videos { align-items: stretch; flex-direction: column; }
  .more-videos strong { margin: 0 0 6px; }
  .more-videos a { text-align: center; }
  .light-link { justify-self: start; }
  .participate { gap: 38px; }
  .contact-note { margin-top: 28px; }
  .proposal-form { padding: 22px 18px; border-radius: 20px; }
  .submit-button { padding: 15px 14px; gap: 10px; line-height: 1.25; }
  .vote { padding-top: 58px; padding-bottom: 58px; }
  .vote strong {
    font-size: clamp(3.35rem, 17.5vw, 6rem);
    letter-spacing: 0;
    white-space: nowrap;
  }
  .vote span { display: block; font-size: .82rem; line-height: 1.5; }
  footer { padding-bottom: 88px; }
  .agency-credit { flex-direction: row; align-items: center; justify-content: flex-start; gap: 8px; padding-top: 12px; }
  .agency-credit img { width: 104px; }
  .floating-whatsapp { width: 52px; height: 52px; padding: 0; justify-content: center; }
  .floating-whatsapp span { font-size: 1.45rem; }
  .toast {
    width: calc(100% - 32px);
    text-align: center;
    bottom: max(20px, env(safe-area-inset-bottom));
    border-radius: 16px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .campaign-intro, .intro-glow, .intro-candidate, .intro-copy, .intro-copy strong span { animation: none; transition-duration: .01ms; }
  .intro-candidate, .intro-copy, .intro-copy strong span { opacity: 1; transform: none; }
}

@media (max-width: 360px) {
  .topbar { padding-left: 14px; padding-right: 10px; }
  .brand { width: 102px; }
  .hero { padding-left: 16px; padding-right: 16px; }
  .hero h1 { font-size: clamp(2.55rem, 13.8vw, 3rem); }
  .section { padding-left: 16px; padding-right: 16px; }
  .story h2, .proposals h2, .participate h2 { font-size: 2.15rem; }
  .proposal-card { padding: 22px; }
  .proposal-form { margin-right: 5px; }
  .vote strong { font-size: 16.5vw; }
  .manifesto { padding: 20px; }
  .audio-card { padding: 18px; }
  footer { padding-left: 16px; padding-right: 16px; }
}

@media (max-height: 520px) and (orientation: landscape) and (max-width: 900px) {
  .hero { padding-top: 38px; }
  .hero-art { max-width: 440px; margin: 28px auto 0; }
  .topbar nav { max-height: calc(100vh - 68px); overflow-y: auto; }
}
