.celebration{padding-bottom:20px}.countdown-section{text-align:center;padding:0 24px 85px}.countdown-caption{font-size:21px;font-style:italic}.countdown{display:flex;gap:21px;align-items:flex-start;justify-content:center;margin:22px auto 36px;color:var(--green)}.countdown div{min-width:62px}.countdown strong{display:block;font:46px/1.2 var(--body);font-variant-numeric:tabular-nums}.countdown span{font:9px Georgia,serif;letter-spacing:1.7px;display:block;margin-top:8px}.countdown i{font-style:normal;color:var(--gold);font-size:32px}.button{display:inline-flex;justify-content:center;align-items:center;gap:14px;border:1px solid var(--wine);padding:13px 28px;min-height:48px;background:var(--wine);color:#fff5e1;font:500 18px var(--body);text-decoration:none;transition:background .2s,transform .2s}.button:hover{background:#59232c;transform:translateY(-2px)}.green-button{background:var(--green);border-color:var(--green)}.green-button:hover{background:#172d25}.outline-button{background:transparent;color:var(--ink);border-color:var(--gold)}.outline-button:hover{background:#dccda84d}.small-note{font-size:15px;color:#766a56;margin:16px auto 0;line-height:1.6}.venue{background:#d9caa840;border-top:1px solid #bfa97655;border-bottom:1px solid #bfa97655}.venue-inner{max-width:1050px;margin:auto;display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center}.venue-copy>.eyebrow{color:var(--wine);font-size:10px;letter-spacing:2px;margin-bottom:22px}.venue-copy h2.script{font-size:54px}.venue-copy>p:not(.eyebrow):not(.prose):not(.small-note){font-style:italic;font-size:22px}.castle{color:#82704b;width:150px;height:110px;margin:27px auto 0}.venue .prose{font-size:20px;max-width:400px;margin:20px auto 30px}.fantasy-map{transform:rotate(2deg);border:8px solid #eee1c3;box-shadow:0 9px 24px #5b452424;position:relative;max-width:460px;margin:auto;width:100%}.fantasy-map svg{width:100%;height:auto}.map-caption{display:block;background:#eee1c3;font-style:italic;font-size:16px;padding:10px 4px}.story{max-width:1080px;display:grid;grid-template-columns:.9fr 1fr;align-items:center;gap:95px;margin:0 auto;padding-top:110px;padding-bottom:110px}.story-portrait{position:relative;padding:10px;border:1px solid var(--line);border-radius:50% 50% 0 0}.story-portrait img{aspect-ratio:2/3;object-fit:cover;border-radius:50% 50% 0 0;width:100%}.portrait-caption{position:absolute;bottom:22px;left:50%;transform:translateX(-50%) rotate(-5deg);font-size:42px;white-space:nowrap;background:#f2e8d6e8;padding:7px 32px;color:var(--wine);box-shadow:0 5px 12px #28170933}.story-copy .eyebrow{color:var(--wine);font-size:11px;letter-spacing:2px}.story-copy h2{margin-top:16px}.story-copy .prose{font-size:22px}.story-quote{font-size:25px;font-style:italic;color:var(--wine);line-height:1.5;margin-top:26px}.story-copy>.flourish{width:150px}.dress{background:var(--green);color:#f2e8d6;position:relative;border:12px solid var(--green);outline:1px solid #b89e6155;outline-offset:-24px}.dress>.eyebrow{color:#cfba85}.dress-title{font:44px var(--display);color:#d6bf86;margin-top:32px;letter-spacing:2px}.dress-title em{font-family:var(--script);font-size:50px;letter-spacing:0;display:block;font-style:normal}.dress .prose{font-size:21px;color:#e2dccb;max-width:670px}.dress .small-note{color:#d0c5aa}.palette{display:flex;gap:18px;justify-content:center;margin-top:32px}.palette span{width:34px;height:34px;border-radius:50%;background:var(--swatch);border:3px solid var(--green);outline:1px solid #d2bb8666}.photo-break{height:540px;position:relative;overflow:hidden}.photo-break img{width:100%;height:100%;object-fit:cover;object-position:50% 43%}.photo-break::after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#111b20ac,transparent 90%)}.photo-break>div{position:absolute;bottom:60px;width:100%;text-align:center;z-index:1;color:#fff1d5;text-shadow:0 2px 15px #0006}.photo-break .script{font-size:clamp(40px,5vw,62px);line-height:1.3}.gifts{padding-top:70px;padding-bottom:95px}.gifts .prose{max-width:660px}.gifts>.flourish{margin-top:0}.rsvp{background:var(--wine);color:#f6ead7;padding:70px 24px 85px;position:relative}.rsvp::before,.rsvp::after{content:'';position:absolute;left:18px;right:18px;top:18px;bottom:18px;border:1px solid #d3af7844;pointer-events:none}.rsvp::after{inset:24px;border-color:#d3af7822}.rsvp-inner{max-width:510px;margin:auto;position:relative;z-index:1}.rsvp .crest{color:#cfb277;width:105px;height:110px;margin:0 auto 10px}.rsvp .eyebrow{color:#d9bd90;font-size:11px;letter-spacing:2px}.rsvp h2{margin-top:16px}.rsvp-intro{font-size:20px;margin:20px 0 36px;color:#edd7c8}form{text-align:left}.form-field{margin:24px 0}.form-field>label,legend{font-size:17px;display:block;margin-bottom:9px}input[type=text],select{display:block;width:100%;border:1px solid #c4998370;border-radius:0;background:#fff4dc0a;color:#fff1dc;min-height:49px;padding:10px 14px;font-size:18px;outline-offset:3px}input::placeholder{color:#debaa8}select option{background:#f2e8d6;color:#3e352b}fieldset{border:0;padding:0;margin:22px 0;min-width:0}.radio-options{display:flex;gap:26px;flex-wrap:wrap}.radio-options label{font-size:17px;display:flex;align-items:center;gap:8px;cursor:pointer;min-height:36px}input[type=radio]{accent-color:#d8bd87;width:18px;height:18px;cursor:pointer}.rsvp form .button{width:100%;background:#eee0c1;color:#612b34;border-color:#eee0c1;margin-top:10px}.rsvp form .button:hover{background:#fff0d2}.form-demo{text-align:center;font-size:14px;line-height:1.6;color:#dbc0ae;margin-top:15px}.field-error{font-size:15px;color:#ffe4a6;margin-top:7px}.rsvp-success{padding:20px 0}.rsvp-success>.script{font-size:40px;line-height:1.4;margin-bottom:18px}.rsvp-success>.text-button{color:#f6ead7}.rsvp .text-button{margin-top:24px}.rsvp input:focus-visible,.rsvp select:focus-visible,.rsvp button:focus-visible{outline-color:#f6dda6}.gallery{max-width:1200px;margin:auto}.gallery>.eyebrow{font-size:10px;letter-spacing:2px}.gallery h2{margin-bottom:44px}.gallery-grid{display:grid;grid-template-columns:1fr .82fr 1fr;gap:18px;align-items:center}.gallery-item{border:0;background:transparent;padding:0;text-align:left;position:relative}.gallery-item img{aspect-ratio:4/5;object-fit:cover;width:100%;transition:filter .25s}.gallery-item:nth-child(2) img{aspect-ratio:2/3}.gallery-item:hover img{filter:brightness(1.1)}.gallery-item span{display:flex;justify-content:space-between;align-items:center;font-size:17px;font-style:italic;padding:12px 2px}.gallery-item i{font-style:normal;color:var(--wine);font-size:23px}.footer{text-align:center;padding:25px 24px 50px;border-top:1px solid #bfa97666}.footer .crest{height:120px;width:110px;margin:22px auto}.footer>.script{font-size:38px;line-height:1.3}.footer-names{font:40px var(--display);color:var(--wine);margin-top:26px}.footer-date{font:11px Georgia,serif;letter-spacing:4px;margin-top:20px}.footer .flourish{margin:20px auto}.footer-demo{font-size:14px;color:#736856;line-height:1.6}.text-button{border:0;border-bottom:1px solid currentColor;background:transparent;padding:5px 0;color:var(--wine);font-size:16px;margin-top:20px}.venue-dialog{border:1px solid var(--gold);background:var(--paper);color:var(--ink);max-width:540px;width:calc(100% - 40px);padding:65px 40px 40px;text-align:center;box-shadow:0 20px 100px #0005;max-height:calc(100svh - 40px);overflow:auto}.venue-dialog h2{font-size:47px;line-height:1.2;margin:22px 0 15px}.venue-dialog .eyebrow{font-size:10px;letter-spacing:2px;color:var(--wine)}.venue-dialog p{font-size:20px}.venue-dialog .venue-dialog-time{margin:25px 0;font-weight:600}.venue-dialog .demo-callout{font-size:16px;border-top:1px solid var(--line);padding-top:20px;color:#756346}.dialog-close{position:absolute;top:10px;right:12px;display:grid;place-items:center;width:44px;height:44px;border:0;background:transparent;font:32px Georgia,serif;color:inherit;z-index:2}dialog::backdrop{background:#161c19cc;backdrop-filter:blur(5px)}.photo-dialog{border:0;padding:58px 20px 20px;background:#18271f;color:#f4e8d0;max-width:calc(100vw - 32px);max-height:calc(100svh - 32px);text-align:center;overflow:auto}.photo-dialog img{max-height:calc(100svh - 160px);max-width:100%;width:auto;object-fit:contain;margin:auto}.photo-dialog p{font-size:18px;font-style:italic;margin-top:12px}.noscript-note{position:fixed;bottom:0;left:0;background:var(--wine);color:white;padding:10px;width:100%;text-align:center;font-size:16px}#celebration-message{font-size:40px;margin:24px 0}
@media(min-width:1000px){.hero-content{padding-top:155px}.hero h2{margin-top:25px}.hero-image{background-position:center 42%}.hero::after{background:linear-gradient(0deg,#15271fe0,transparent 85%)}}
@media(max-width:760px){.venue-inner{grid-template-columns:1fr;gap:45px}.fantasy-map{max-width:380px;transform:rotate(1deg)}.story{grid-template-columns:1fr;gap:38px;padding-top:75px;padding-bottom:65px}.story-portrait{width:78%;max-width:370px;margin:auto}.story-copy{max-width:520px;margin:auto}.story-copy>.flourish:first-child{display:none}.photo-break{height:430px}.photo-break>div{bottom:45px}.photo-break img{object-position:52% center}.gallery-grid{gap:12px;grid-template-columns:1fr 1fr}.gallery-item:first-child{grid-column:1/-1}.gallery-item:first-child img{aspect-ratio:3/2}.gallery-item:nth-child(2) img,.gallery-item:nth-child(3) img{aspect-ratio:2/3}.gallery-item span{font-size:16px}.gallery-item i{display:none}.gallery h2{margin-bottom:30px}.footer>.script{font-size:33px}.footer-names{font-size:36px}.countdown-section{padding-bottom:65px}}
@media(max-width:400px){.countdown{gap:11px}.countdown div{min-width:50px}.countdown strong{font-size:40px}.countdown span{font-size:8px;letter-spacing:1px}.radio-options{gap:8px 18px}.radio-options label{font-size:16px}.venue-copy h2.script{font-size:44px}.rsvp h2.script{font-size:45px}.gallery h2.script{font-size:40px}.gallery-item span{font-size:15px}.welcome h1{max-width:300px;font-size:40px}.welcome h1 span{font-size:29px;margin:0 2px}.portrait-caption{font-size:35px;padding:7px 20px}}


/* ===== Optimización móvil adicional ===== */
html,body{max-width:100%;overflow-x:hidden}

@media(max-width:760px){
  body{text-align:center;-webkit-text-size-adjust:100%}
  main,.welcome,.section,.countdown-section,.story,.venue,.dress,.gifts,.rsvp,.gallery,.footer{width:100%;max-width:100%}

  .welcome{min-height:100svh;padding:calc(50px + env(safe-area-inset-top)) 20px calc(64px + env(safe-area-inset-bottom))}
  .welcome-content{max-width:560px;margin-inline:auto}
  .welcome h1{font-size:clamp(38px,12vw,52px);max-width:100%;overflow-wrap:anywhere}
  .welcome-script{font-size:clamp(23px,7vw,30px);line-height:1.25}
  .envelope-button{width:min(300px,88vw);height:auto;aspect-ratio:340/195;margin-inline:auto}
  .open-prompt{max-width:300px;margin-inline:auto}

  .nav{padding:0 16px;height:62px;gap:12px}
  .monogram{flex:0 0 auto}
  .nav-rsvp{font-size:14px;white-space:nowrap}
  .nav-rsvp span{margin-left:7px}

  .hero{height:78svh;min-height:520px;max-height:760px}
  .hero-content{width:min(100%,560px);margin:auto;padding:72px 20px 32px}
  .hero h2{font-size:clamp(54px,17vw,78px);line-height:.94;margin:24px 0 18px;overflow-wrap:anywhere}
  .hero h2 span{font-size:.62em}
  .hero .script{font-size:clamp(28px,8vw,36px);line-height:1.2}
  .hero-scroll{margin-top:42px}
  .hero-image{background-position:center 45%}

  .section{padding:64px 20px}
  .section h2.script,.venue-copy h2.script,.rsvp h2.script,.gallery h2.script{font-size:clamp(38px,11vw,52px);line-height:1.14;max-width:100%;margin-inline:auto;overflow-wrap:anywhere}
  .prose,.small-note,.rsvp-intro,.story-quote{max-width:560px;margin-left:auto;margin-right:auto;text-align:center}
  .prose{font-size:clamp(18px,5.4vw,21px);line-height:1.55}
  .eyebrow{max-width:340px;margin-left:auto;margin-right:auto}

  .date-plaque{width:min(220px,76vw)}
  .countdown-section{padding:0 16px 64px}
  .countdown-caption{font-size:19px;max-width:320px;margin-inline:auto}
  .countdown{width:100%;max-width:390px;gap:8px;margin:20px auto 30px;justify-content:center}
  .countdown div{min-width:0;flex:1 1 0;max-width:72px}
  .countdown strong{font-size:clamp(34px,10vw,44px)}
  .countdown span{font-size:8px;letter-spacing:1px;white-space:nowrap}
  .countdown i{font-size:26px;flex:0 0 auto}
  .countdown-section .button{width:min(100%,340px);margin-inline:auto;padding-inline:18px}

  .venue-inner{width:min(100%,560px);margin-inline:auto;grid-template-columns:1fr;gap:40px}
  .venue-copy{text-align:center}
  .venue .prose{max-width:500px}
  .fantasy-map{width:min(100%,390px);margin-inline:auto;transform:none;border-width:6px}
  .map-caption{font-size:14px;padding:9px 8px}

  .story{width:min(100%,600px);margin-inline:auto;padding:70px 20px 64px;grid-template-columns:1fr;gap:36px;text-align:center}
  .story-portrait{width:min(78vw,340px);margin-inline:auto}
  .story-copy{width:100%;max-width:560px;margin-inline:auto;text-align:center}
  .story-copy .prose,.story-quote{text-align:center}
  .portrait-caption{font-size:clamp(29px,9vw,38px);max-width:92vw;white-space:normal;width:max-content;text-align:center}

  .dress{padding-left:20px;padding-right:20px;border-width:8px}
  .dress-title{font-size:clamp(34px,10vw,44px)}
  .dress-title em{font-size:clamp(40px,12vw,50px)}
  .palette{gap:12px;flex-wrap:wrap}

  .photo-break{height:58svh;min-height:360px;max-height:520px}
  .photo-break img{object-position:center 43%}
  .photo-break>div{left:0;right:0;bottom:38px;padding:0 20px}
  .photo-break .script{font-size:clamp(34px,10vw,48px)}

  .gifts{padding-left:20px;padding-right:20px}

  .rsvp{padding:64px 20px 76px}
  .rsvp-inner{width:min(100%,480px);margin-inline:auto;text-align:center}
  .rsvp-intro{font-size:19px}
  .rsvp form{text-align:center}
  .form-field>label,legend{text-align:center}
  input[type=text],select{text-align:center;font-size:17px;min-height:52px}
  select{text-align-last:center}
  .radio-options{justify-content:center;gap:10px 20px}
  .radio-options label{justify-content:center}
  .field-error{text-align:center}
  .rsvp form .button{min-height:54px}

  .gallery{padding-left:20px;padding-right:20px;text-align:center}
  .gallery-grid{width:min(100%,560px);margin-inline:auto;grid-template-columns:1fr;gap:20px}
  .gallery-item,.gallery-item:first-child{grid-column:auto;width:min(100%,390px);margin-inline:auto;text-align:center}
  .gallery-item img,.gallery-item:first-child img,.gallery-item:nth-child(2) img,.gallery-item:nth-child(3) img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:2px}
  .gallery-item:first-child img{object-position:center 45%}
  .gallery-item:nth-child(2) img{object-position:center 42%}
  .gallery-item:nth-child(3) img{object-position:center 43%}
  .gallery-item span{justify-content:center;text-align:center;padding:10px 4px}

  .footer{padding:30px 20px calc(48px + env(safe-area-inset-bottom))}
  .footer-names{font-size:clamp(30px,10vw,38px);overflow-wrap:anywhere}
  .footer-demo{max-width:420px;margin-inline:auto}

  .venue-dialog,.photo-dialog{width:calc(100vw - 24px);max-width:calc(100vw - 24px);max-height:calc(100svh - 24px);margin:auto}
  .venue-dialog{padding:58px 20px 28px}
  .venue-dialog h2{font-size:clamp(36px,11vw,46px)}
  .venue-dialog p{font-size:18px}
  .photo-dialog{padding:54px 12px 16px}
  .photo-dialog img{max-height:calc(100svh - 130px)}
  .dialog-close{top:6px;right:6px;width:46px;height:46px}

  .button{max-width:100%;min-height:50px;padding:12px 18px;white-space:normal;text-align:center}
}

@media(max-width:420px){
  .welcome{padding-left:16px;padding-right:16px}
  .corner{width:52px;height:108px;opacity:.5}
  .hero-content,.section,.story,.rsvp,.gallery{padding-left:16px;padding-right:16px}
  .nav{padding-inline:14px}
  .monogram{font-size:25px}
  .nav-rsvp{font-size:13px}
  .countdown{gap:5px}
  .countdown strong{font-size:clamp(31px,10vw,39px)}
  .countdown i{font-size:22px}
  .countdown span{font-size:7px;letter-spacing:.6px}
  .rsvp::before{inset:12px}.rsvp::after{inset:17px}
  .portrait-caption{padding:6px 14px}
}
