/* Acabamento visual do convite. O estilo original permanece como base. */
@font-face {
  font-family:'Rakkas';
  src:url('fonts/Rakkas-Latin.woff2') format('woff2');
  font-style:normal;
  font-weight:400;
  font-display:swap;
}
:root { --ink:#4e3561; --line:#e8dce9; }
body { color:var(--ink); -webkit-font-smoothing:antialiased; }
::selection { background:#dbc8e5; color:#3d2854; }
.skip-link { position:fixed; z-index:20; top:12px; left:12px; transform:translateY(-160%); padding:12px 18px; border-radius:12px; background:#fff; color:var(--purple-dark); box-shadow:0 10px 30px #33234344; font-weight:700; }
.skip-link:focus { transform:translateY(0); }
:focus-visible { outline:3px solid var(--green-dark); outline-offset:4px; }
.hero { min-height:780px; background-position:center 54%; }
.hero::after { background:linear-gradient(90deg,rgba(255,253,247,.83) 0%,rgba(255,253,247,.66) 39%,rgba(255,253,247,.05) 78%); }
header { height:108px; }
.mark { font-family:'Rakkas',Georgia,serif; font-weight:400; letter-spacing:0; }
nav { gap:29px; }
nav a { padding:8px 2px; transition:color .18s ease,background .18s ease,transform .18s ease; }
nav a:hover { color:var(--green-dark); }
nav a:last-child { background:#fffdf9d9; box-shadow:0 8px 25px #5c3b7d10; }
nav a:last-child:hover { background:#fff; transform:translateY(-2px); }
.hero-grid { min-height:630px; }
.copy { padding-bottom:48px; }
.eyebrow,.section-kicker { letter-spacing:.23em; }
h1 { max-width:760px; font-family:'Rakkas',Georgia,serif; font-weight:400; letter-spacing:0; }
h1 span { letter-spacing:0; }
.age { font-family:'Rakkas',Georgia,serif; font-weight:400; }
.intro { max-width:550px; color:#554c62; }
.event-meta { max-width:600px; gap:9px; margin-bottom:29px; }
.event-meta span { background:#fffdf9ed; border-color:#ddcfe1; box-shadow:0 5px 16px #4731580d; color:#58396c; }
.event-meta span:last-child { color:var(--green-dark); }
.button { gap:12px; min-height:58px; transition:transform .18s ease,box-shadow .18s ease,filter .18s ease; }
.button:hover { transform:translateY(-3px); box-shadow:0 14px 32px #5d3c7c30; filter:saturate(1.05); }
.button:active { transform:translateY(0); }
.primary { background:linear-gradient(120deg,#6b3d8c,#8d57a4); }
.secondary { background:#fffdf9e8; }
.character-tag { box-shadow:0 12px 28px #4731582a; }
.below { padding-top:35px; padding-bottom:47px; }
.tile { min-height:106px; transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease; }
.tile:hover { transform:translateY(-4px); border-color:#c6abd1; box-shadow:0 16px 34px #5a3b7929; }
.tile strong { font-size:22px; }
.section { padding-top:96px; padding-bottom:96px; }
.section-inner { width:100%; }
.section h2 { max-width:840px; font-family:'Rakkas',Georgia,serif; font-weight:400; letter-spacing:0; }
.party-grid { gap:70px; }
.party-details { gap:14px; }
.party-notice { margin-top:25px; padding:16px 20px; border-left:4px solid var(--green-dark); border-radius:0 14px 14px 0; background:#f3f6f1; }
.party-notice strong { display:block; margin-bottom:3px; color:var(--green-dark); font-size:14px; font-weight:800; }
.section .party-notice p { color:#574e60; font-size:15px; line-height:1.5; }
.mini-fact { border-left-width:3px; background:#f5f2ed; }
.mini-fact strong { font-weight:700; }
.route-art { background:radial-gradient(circle at 50% 40%,#fffdfa 0 16%,transparent 60%),linear-gradient(135deg,#e2f0e9,#eee1f5); }
.route-art .pin { top:19%; left:calc(50% - 56px); }
.route-art-label { position:absolute; z-index:1; left:9%; right:9%; bottom:9%; display:grid; gap:5px; padding:18px 22px; text-align:center; background:#fffdf9ee; border:1px solid #d9c5de; border-radius:18px; box-shadow:0 10px 28px #6149761c; }
.route-art-label small { color:var(--green-dark); text-transform:uppercase; font-size:11px; font-weight:800; letter-spacing:.18em; }
.route-art-label strong { font:700 28px Georgia,serif; color:var(--purple); }
.route-art-label span { color:#665a70; font-size:14px; }
.agnes-story { max-width:890px; }
.gift-note { max-width:890px; border:1px solid #e8d9ee; }
.message { padding-top:104px; padding-bottom:104px; }
footer { border-top:1px solid #f0e8ee; }
@media (max-width:1100px) and (min-width:901px) {
  .inner { padding-left:44px; padding-right:44px; }
  nav { gap:16px; font-size:14px; }
  .characters { right:-8px; }
}
@media (max-width:900px) {
  .hero { min-height:970px; background-position:67% center; }
  .hero::after { background:linear-gradient(180deg,rgba(255,253,247,.83) 0%,rgba(255,253,247,.77) 49%,rgba(255,253,247,.16) 100%); }
  header { justify-content:center; }
  .mark { margin-inline:auto; }
  .copy { padding-top:48px; padding-bottom:0; }
  .eyebrow { font-size:12px; }
  h1 { font-size:clamp(56px,13vw,82px); }
  .intro { max-width:470px; line-height:1.58; }
  .event-meta { justify-content:center; }
  .event-meta span:last-child { width:auto; }
  .character-stage { height:410px; }
  .agnes-story::before,.agnes-story::after { display:none; }
  .section { padding-top:72px; padding-bottom:72px; }
  .party-grid,.route-grid { gap:43px; }
  .route-art { order:2; }
  .message { padding-top:76px; padding-bottom:76px; }
}
@media (max-width:500px) {
  .hero { min-height:870px; background-position:67% center; }
  header { height:74px; }
  .mark { font-size:19px; }
  .copy { padding-top:28px; }
  h1 { font-size:clamp(52px,12.5vw,64px); }
  .age { font-size:20px; }
  .intro { font-size:16px; margin-top:18px; }
  .event-meta { gap:7px; margin-bottom:20px; }
  .event-meta span { font-size:12px; padding:7px 10px; }
  .event-meta span:last-child { flex-basis:100%; justify-content:center; max-width:275px; }
  .actions { gap:10px; }
  .button { min-height:50px; padding:11px 17px; font-size:14px; }
  .character-stage { height:310px; }
  .characters { top:36px; }
  .aura { top:36px; }
  .character-tag { font-size:13px; padding:9px 14px; }
  .below { padding-top:25px; padding-bottom:35px; }
  .tile { min-height:90px; }
  .tile-icon { width:55px; height:55px; font-size:27px; }
  .section { padding-top:62px; padding-bottom:62px; }
  .section h2 { line-height:1.02; }
  .route-art { height:300px; }
  .route-art .pin { width:88px; height:88px; left:calc(50% - 44px); font-size:44px; }
  .route-art-label { bottom:7%; padding:14px; }
  .route-art-label strong { font-size:23px; }
  .agnes-story { padding:35px 26px; }
  .agnes-story p { font-size:20px; }
  .message { padding-top:67px; padding-bottom:67px; }
  .message::before,.message::after { display:none; }
  .message .signature { font-size:clamp(16px,4.6vw,20px); line-height:1.35; }
}
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { transition-duration:.01ms !important; animation-duration:.01ms !important; }
}
/* Mapa incorporado: carrega apenas quando a seção entra na tela. */
.map-shell { overflow:hidden; min-width:0; border:2px solid #d8c6db; border-radius:26px; background:#f8f4f7; box-shadow:0 22px 55px #6f4a8b21; }
.map-frame { display:block; width:100%; height:390px; border:0; background:#eee7f0; }
.map-caption { display:flex; align-items:center; gap:10px; min-height:54px; padding:12px 20px; border-top:1px solid #e5d8e8; background:#fffdf9; color:var(--purple); font:700 18px Georgia,serif; }
.map-caption span { color:var(--green-dark); font-size:25px; line-height:1; }
@media (max-width:900px) { .map-shell { order:2; } .map-frame { height:340px; } }
@media (max-width:500px) { .map-shell { border-radius:20px; } .map-frame { height:290px; } .map-caption { min-height:50px; font-size:16px; padding:10px 15px; } }

/* Confirmação no próprio convite */
.rsvp-card { min-width:0; padding:clamp(24px,3.2vw,42px); border:1px solid #ddcbe4; border-top:5px solid #c9a451; border-radius:28px; background:linear-gradient(155deg,#fffdf9 20%,#f8f1f9 100%); box-shadow:0 20px 55px #51346919; scroll-margin-top:28px; }
.rsvp-kicker { color:var(--green-dark); font-size:12px; font-weight:800; letter-spacing:.2em; text-transform:uppercase; }
.rsvp-card h3 { margin:10px 0 12px; color:var(--purple); font:400 clamp(34px,3.8vw,49px)/1.08 'Rakkas',Georgia,serif; }
.rsvp-card > p { margin:0 0 24px; color:#62586b; font-size:16px; line-height:1.55; }
.rsvp-card form { display:grid; gap:18px; }
.rsvp-field { display:grid; gap:8px; min-width:0; }
.rsvp-field label,.rsvp-attendance legend { color:#513469; font-size:14px; font-weight:800; }
.rsvp-field input { width:100%; min-width:0; min-height:52px; padding:12px 14px; border:1px solid #cab8d1; border-radius:13px; background:#fff; color:#3f3548; font:16px/1.3 Arial,sans-serif; box-shadow:0 2px 8px #51346908; }
.rsvp-field input::placeholder { color:#8d8292; }
.rsvp-field input:focus { border-color:var(--green-dark); outline:3px solid #176c6433; }
.rsvp-attendance { min-width:0; margin:0; padding:0; border:0; }
.rsvp-attendance legend { margin-bottom:9px; }
.rsvp-choices { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.rsvp-choices label { position:relative; display:flex; align-items:center; justify-content:center; min-height:54px; padding:10px; border:1px solid #d9c9df; border-radius:13px; background:#fff; color:#5b4d66; font-size:15px; font-weight:700; text-align:center; cursor:pointer; }
.rsvp-choices label:has(input:checked) { border-color:var(--green-dark); background:#edf7f3; color:var(--green-dark); box-shadow:inset 0 0 0 1px var(--green-dark); }
.rsvp-choices input { position:absolute; left:11px; top:16px; width:18px; height:18px; margin:0; accent-color:var(--green-dark); }
.rsvp-choices span { padding-left:20px; }
.rsvp-counts { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.rsvp-counts[hidden],.rsvp-count-note[hidden] { display:none; }
.rsvp-honey { position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
.rsvp-card form .rsvp-count-note { margin:-12px 0 0; color:#756a7a; font-size:13px; }
.rsvp-submit { display:flex; align-items:center; justify-content:space-between; width:100%; min-height:55px; padding:13px 20px; border:0; border-radius:999px; background:var(--green-dark); color:#fff; font:700 16px Arial,sans-serif; cursor:pointer; transition:background .2s,transform .2s; }
.rsvp-submit:hover { background:#145b54; transform:translateY(-2px); }
.rsvp-submit:disabled { opacity:.65; cursor:wait; transform:none; }
.rsvp-card form .rsvp-note { margin:-4px 0 0; color:#766b7b; font-size:12px; line-height:1.5; }
.rsvp-card form .rsvp-status { min-height:0; margin:0; color:var(--green-dark); font-size:14px; font-weight:700; line-height:1.45; }
.rsvp-status:empty { display:none; }
.rsvp-status[data-error="true"] { color:#a03846; }
@media (max-width:500px) { .rsvp-card { padding:24px 20px; border-radius:22px; } .rsvp-card h3 { font-size:36px; } .rsvp-choices { grid-template-columns:1fr; } .rsvp-choices label { justify-content:flex-start; padding-left:18px; } .rsvp-choices input { position:static; flex:0 0 auto; margin-right:10px; } .rsvp-choices span { padding-left:0; } }
