@font-face{font-family:Cormorant;src:url('fonts/CormorantGaramond-Regular.ttf')}@font-face{font-family:Cormorant;src:url('fonts/CormorantGaramond-Italic.ttf');font-style:italic}
:root{--paper:#f8f4eb;--wine:#571b2b;--gold:#a8894d;--muted:#867467;--line:#d7c7aa}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{background:var(--paper);color:var(--wine);font:20px/1.4 Cormorant,Georgia,serif}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:6px}button{border:0;background:none}button:disabled{cursor:wait}[hidden]{display:none!important}.topbar{position:fixed;z-index:30;top:0;left:0;width:100%;height:70px;padding:0 38px;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.topbar>*{pointer-events:auto}.edition,.utilities,.bottom,.eyebrow{font:10px/1.5 Arial,sans-serif;letter-spacing:2px;text-transform:uppercase}.edition span{margin:0 10px;color:var(--gold)}.utilities{display:flex;gap:22px;letter-spacing:.6px;text-transform:none}.utilities button{font:inherit;padding:12px 0}.bottom{height:64px;position:fixed;bottom:0;width:100%;padding:0 38px;display:flex;align-items:center;justify-content:space-between;z-index:30;background:var(--paper);font-size:9px;letter-spacing:1.4px}.review-label{color:var(--muted)}nav{display:flex;align-items:center;gap:20px}nav i{width:44px;border-top:1px solid var(--line)}nav button{font:inherit;min-height:44px;opacity:.5}nav button[aria-current]{opacity:1}nav button span{margin-left:8px}.chapter-count{min-width:140px;text-align:right;color:var(--muted)}
.scene{position:absolute;inset:70px 38px 64px;display:grid;grid-template-columns:44% 56%;align-items:center;opacity:0;visibility:hidden;transform:translateX(36px);transition:opacity .65s ease,transform .9s cubic-bezier(.2,.7,.2,1),visibility .9s;pointer-events:none}.scene.active{opacity:1;visibility:visible;transform:none;pointer-events:auto}.copy{text-align:center;padding:20px;z-index:2}.eyebrow{letter-spacing:3px;color:var(--muted);margin:0 0 28px}h1,h2{font:clamp(43px,4.9vw,76px)/1.55 Aniyah,cursive;font-weight:400;margin:5px 0 12px}h1 span,.cover h2 span{font:italic .55em Cormorant;display:block;line-height:.3;margin:9px 0}h1{line-height:1.5}.rule{height:1px;width:48px;background:var(--gold);margin:26px auto}.intro{font-size:clamp(24px,2.4vw,36px);line-height:1.15;margin:24px 0 18px}.body-copy{font-size:19px;color:var(--muted);line-height:1.5;margin:16px 0}.date{font-size:24px;letter-spacing:5px;margin:26px 0}.date span{color:var(--gold);margin:0 10px}.next,.open{border-bottom:1px solid var(--gold);padding:14px 0 12px;font-size:19px;display:inline-flex;align-items:center;gap:35px}.next span,.open span{font:24px Cormorant;transition:transform .25s}.next:hover span,.open:hover span{transform:translateX(4px)}.painting{height:100%;width:100%;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;padding:0;margin:0}.painting img{width:100%;height:100%;object-fit:contain;mix-blend-mode:multiply;animation:breath 16s ease-in-out infinite alternate}.art-hint{position:absolute;bottom:20px;right:20px;font:10px Arial,sans-serif;letter-spacing:1px;background:var(--paper);padding:10px 13px;border:1px solid var(--line)}.venue{font-size:25px;margin:28px 0 0}.map{font-size:17px;color:var(--muted);text-underline-offset:5px;display:block;margin:20px 0}.still img{animation:none}
.cover{position:fixed;inset:0;z-index:20;perspective:1800px;overflow:hidden}.leaf{position:absolute;top:0;bottom:0;width:50%;background:var(--paper);transition:transform 1.9s cubic-bezier(.65,0,.2,1);backface-visibility:hidden;overflow:hidden}.leaf.left{left:0;transform-origin:left center;box-shadow:inset -1px 0 var(--line)}.leaf.right{right:0;transform-origin:right center;box-shadow:inset 1px 0 #fff}.arch{position:absolute;top:11%;bottom:11%;width:165%;border:1px solid var(--line);border-radius:50% 50% 1px 1px;opacity:.65}.arch:before,.arch:after{content:'';position:absolute;inset:12px;border:1px solid var(--line);border-radius:inherit}.arch:after{inset:24px;opacity:.5}.left .arch{left:14%}.right .arch{right:14%}.cover-content{position:relative;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:85px 20px;transition:opacity .45s,transform .6s}.monogram{width:125px;height:140px;margin:3px 0 8px;animation:monogram-in 1.8s ease both}.monogram img{width:100%;height:100%;object-fit:contain}.cover h2{font-size:clamp(45px,5.2vw,72px);margin:5px 0 18px;line-height:1.55}.cover h2 span{display:inline;line-height:1;margin:0 15px}.cover-date{letter-spacing:2px;font-size:19px;margin:6px 0 24px}.cover-date span{margin:0 10px;color:var(--gold)}.cover .eyebrow{margin:0 0 12px}.cover-note{font-size:16px;font-style:italic;color:var(--muted);margin:24px 0 0}.opening .cover-content{opacity:0;transform:translateY(-14px);pointer-events:none}.opening .left{transform:rotateY(-105deg)}.opening .right{transform:rotateY(105deg)}.cover.opening{pointer-events:none}
@keyframes monogram-in{from{opacity:0;transform:translateY(12px) scale(.88);filter:blur(3px)}to{opacity:1;transform:none;filter:none}}@keyframes breath{from{transform:scale(1)}to{transform:scale(1.018)}}dialog{border:0;padding:15px;background:var(--paper);max-width:92vw;max-height:94dvh;overflow:auto}dialog::backdrop{background:#241018db}dialog img{display:block;max-width:100%;max-height:82dvh;object-fit:contain}#close-detail{display:block;margin:0 0 8px auto;padding:8px 14px;font-size:18px}.paused *{animation:none!important;transition:none!important}
@media(min-width:1400px){.scene{left:calc((100vw - 1324px)/2);right:calc((100vw - 1324px)/2)}}
@media(max-width:700px){.topbar{height:54px;padding:0 20px}.edition{font-size:9px;letter-spacing:1px}.utilities{gap:12px;font-size:9px}.scene{inset:54px 14px 85px;grid-template-columns:1fr;grid-template-rows:minmax(0,53%) minmax(0,47%);gap:0}.painting{grid-row:1}.copy{grid-row:2;padding:0 10px;align-self:center}.copy .eyebrow{font-size:8px;letter-spacing:2px;margin:0 0 6px}h1,h2{font-size:40px;line-height:1.45;margin:0}h1 span{display:inline;line-height:1;margin:0 8px}.rule{margin:10px auto;width:30px}.intro{font-size:23px;margin:9px 0}.body-copy{font-size:16px;line-height:1.25;margin:8px 0}.copy .body-copy{display:none}.date{font-size:17px;margin:10px 0;letter-spacing:3px}.next{font-size:17px;padding:9px 0;gap:25px}.art-hint{font-size:8px;bottom:5px;right:6px;padding:8px}.bottom{height:76px;flex-wrap:wrap;padding:8px 20px 12px;gap:0}.review-label{font-size:8px;order:2;letter-spacing:.7px}.chapter-count{order:3;font-size:8px;letter-spacing:.7px}nav{width:100%;justify-content:center;gap:16px}nav button{min-height:30px;font-size:9px}nav i{width:30px}.cover h2{font-size:45px;text-align:center}.cover h2 span{display:block;margin:8px 0;line-height:.4}.cover-content{padding:65px 20px 90px}.cover .eyebrow{font-size:8px;letter-spacing:2px}.monogram{width:110px;height:120px;margin:16px 0}.cover-date{font-size:15px;letter-spacing:1px;margin:10px 0 18px}.open{font-size:18px}.cover-note{font-size:14px;margin-top:22px}.arch{top:9%;bottom:9%;width:175%}.venue{font-size:20px;margin:10px 0}#ceremonia .body-copy{display:block;font-size:15px}.map{font-size:14px;margin:10px 0}.cover-note{display:block}}
@media(max-height:690px) and (max-width:700px){.scene{grid-template-rows:46% 54%}h1,h2{font-size:33px}.intro{font-size:20px}.monogram{width:80px;height:85px;margin:5px 0}.cover h2{font-size:38px}.cover-note{margin-top:14px}.cover .eyebrow{margin:0}.rule{margin:6px auto}.date{margin:6px 0}.copy .eyebrow{margin:0}.map{margin:6px 0}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
#invitation{position:fixed;inset:0;overflow:hidden}.monogram{flex-shrink:0}
@media(max-width:700px){.copy h1{font-size:26px;white-space:nowrap;line-height:1.9}.copy h2{font-size:28px;white-space:nowrap;line-height:1.9}.copy .eyebrow{margin-bottom:9px}.scene{grid-template-rows:minmax(0,55%) minmax(0,45%)}.copy .rule{margin:7px auto}.intro{font-size:22px}.cover-content{gap:0}}
@media(max-height:690px) and (max-width:700px){.scene{grid-template-rows:minmax(0,47%) minmax(0,53%)}.copy h1{font-size:24px}.copy h2{font-size:26px}.copy .eyebrow{margin-bottom:5px}.intro{font-size:19px}}
/* Ronda 09: recorrido completo */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}#scene-select{font:13px Cormorant,Georgia,serif;color:var(--wine);background:transparent;border:0;padding:10px 20px;min-width:190px;text-align:center;cursor:pointer}nav button{opacity:1;font-size:22px;min-width:44px;min-height:44px}nav button:disabled{opacity:.25;cursor:default}.small-link{display:block;text-decoration:underline;text-underline-offset:4px;font-size:15px;padding:8px 0;margin:0 auto;color:var(--muted)}.essential{display:block!important}.single{display:flex;justify-content:center;overflow:auto}.single .copy{max-width:780px}.swatches{display:flex;justify-content:center;gap:24px;margin:36px 0;font-size:16px;color:var(--muted)}.swatches span{display:block;background:var(--tone);width:55px;height:55px;border-radius:55% 45% 50% 45%;margin:0 auto 10px;box-shadow:inset 0 0 12px #ffffff30}.places{max-width:430px;margin:26px auto;text-align:left}.places>div{display:flex;align-items:flex-start;gap:16px;border-bottom:1px solid var(--line);padding:18px 0}.place-number{background:var(--wine);color:var(--paper);border-radius:50%;width:30px;height:30px;flex:0 0 30px;text-align:center;font-size:20px;margin-top:3px}.places p{margin:0;color:var(--muted);font-size:18px;line-height:1.6}.places strong{font-weight:400;color:var(--wine);font-size:22px}.places a{font-size:15px;text-underline-offset:4px}.map-credit{font:10px/1.6 Arial,sans-serif;color:var(--muted);margin:20px 0 0}.locations .painting img{animation:none}.gifts-details{max-width:400px;margin:25px auto;color:var(--muted);font-size:18px}.gifts-details summary{cursor:pointer;text-underline-offset:4px;text-decoration:underline}.gifts-details p{font-size:16px}.rsvp-monogram{width:120px;height:150px;object-fit:contain}.form-panel{max-height:100%;overflow-y:auto;overscroll-behavior:contain;padding:30px 45px;border-left:1px solid var(--line);scrollbar-width:thin;scrollbar-color:var(--line) transparent}.form-panel h3{font-size:26px;font-weight:400;margin:0}.assigned{margin-bottom:22px}.assigned .eyebrow{margin:0 0 8px}.assigned p{margin:5px 0 0}fieldset{border:0;border-top:1px solid var(--line);margin:0 0 24px;padding:16px 0 0;min-width:0}legend{font-size:23px;padding:0 10px 0 0}.attendance{display:flex;flex-wrap:wrap;gap:12px 24px;margin-bottom:10px}.attendance label,.parking label{display:inline-flex;align-items:center;gap:8px;font-size:18px;min-height:44px;cursor:pointer}.parking label{margin-right:24px}input[type=radio]{accent-color:var(--wine);width:17px;height:17px}.diet label{font-size:17px;display:block;color:var(--muted)}textarea{display:block;width:100%;min-height:72px;margin-top:8px;border:1px solid var(--line);background:#fffaf2;color:var(--wine);font:17px/1.4 Cormorant,serif;padding:12px;resize:vertical;border-radius:0}.privacy{font-size:15px;color:var(--muted)}.preview{font:11px/1.6 Arial,sans-serif;background:#eee3d1;padding:12px 16px;border-left:2px solid var(--gold);color:var(--wine);margin:0 0 24px}#save-status{font-size:18px;line-height:1.45}.success{color:#455738}.error{color:#992c3c}#credits{max-width:550px;padding:28px}#credits h2{font:32px Cormorant,serif}#credits p{font-size:17px}#close-credits{display:block;margin-left:auto}.topbar .utilities{gap:18px}
@media(max-width:700px){.topbar .utilities{gap:12px}.edition{letter-spacing:.5px}.utilities button{font-size:9px}nav{gap:4px!important}#scene-select{font-size:15px;min-width:185px;padding:8px}.bottom{height:82px;padding-top:4px}#scene-nav button{min-height:36px}.scene{bottom:86px}.locations{grid-template-rows:minmax(0,51%) minmax(0,49%)}.locations .copy{padding:0 12px}.locations .copy h2{font-size:25px}.locations .eyebrow{display:none}.places{margin:4px auto;max-width:330px}.places>div{padding:7px 0;gap:10px}.places p{font-size:13px;line-height:1.5}.places strong{font-size:17px}.places a{font-size:12px}.place-number{width:24px;height:24px;flex-basis:24px;font-size:16px}.locations .next{font-size:15px;padding:7px 0}.locations .map-credit{font-size:8px;margin-top:6px}.locations .rule{display:none}.rsvp-scene{display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain;justify-content:flex-start;gap:0}.rsvp-scene .copy{flex:none;width:100%;padding:15px 15px 20px}.rsvp-scene .copy .intro{font-size:20px}.rsvp-scene .copy .eyebrow{font-size:8px}.rsvp-scene .rsvp-monogram,.rsvp-scene .copy .body-copy,.rsvp-scene .copy .small-link{display:none!important}.form-panel{flex:none;border-left:0;width:100%;overflow:visible;padding:10px 16px 25px;max-height:none}.assigned .eyebrow{font-size:9px}.form-panel h3{font-size:23px}legend{font-size:22px}.preview{font-size:10px;margin-bottom:20px}.single .copy{padding:20px 18px}.single .copy h2{font-size:27px}.swatches{gap:14px;font-size:13px;margin:28px 0}.swatches span{width:40px;height:40px}.gifts-details{font-size:16px;margin:12px 0}.gifts-details p{font-size:14px}.essential{font-size:15px!important}.art-hint{font-size:8px}#recepcion .copy .intro{display:none}#recepcion .venue{margin-top:12px}#recepcion .copy{padding-bottom:8px}.map{margin:8px 0}.small-link{font-size:13px;padding:6px 0}#gracias .eyebrow{font-size:7px;letter-spacing:1px}}
@media(max-height:690px) and (max-width:700px){.locations{grid-template-rows:minmax(0,44%) minmax(0,56%)}.locations .copy h2{font-size:22px}.locations .places>div{padding:5px 0}.locations .map-credit{margin-top:4px}.locations .next{padding:3px 0}.single .copy h2{font-size:25px}#ceremonia .copy .intro{display:none}.single .copy{padding:12px}.swatches{margin:20px 0}.rsvp-scene .copy{padding:5px 10px 12px}}

/* Fixed Aniyah lettering: personal artwork, no downloadable font embedded. */
.names{display:flex;align-items:center;justify-content:center;gap:24px}.names img{display:block;height:auto;max-width:100%}.names b{font:italic 32px Cormorant,serif;font-weight:400}.cover h2{width:min(850px,84vw);margin:12px 0 28px}.cover .name-cherie{width:44%}.cover .name-gabriel{width:49%}.copy h1 .names{flex-direction:column;gap:8px}.copy h1 .name-cherie{width:min(360px,90%)}.copy h1 .name-gabriel{width:min(430px,98%)}.copy h1 .names b{line-height:.8}.lettered{display:flex;align-items:center;justify-content:center;min-height:95px;margin:12px 0!important}.lettered img{width:auto;max-width:min(450px,100%);height:100px;object-fit:contain}.cover h2 .names b{display:block}
@media(max-width:700px){.cover h2{width:85vw;margin:8px 0 22px}.cover .names{flex-direction:column;gap:13px}.cover .names img{width:80%;max-width:280px}.cover .names b{line-height:.5;font-size:26px}.copy h1 .names{flex-direction:row;gap:10px}.copy h1 .name-cherie{width:42%}.copy h1 .name-gabriel{width:49%}.copy h1 .names b{font-size:20px}.lettered{min-height:48px;margin:8px 0!important}.lettered img{height:51px;max-width:94%}.locations .lettered{min-height:38px;margin:4px 0!important}.locations .lettered img{height:42px}.rsvp-scene .lettered img{height:50px}.copy h1{padding:4px 0}.single .lettered img{height:57px}.cover .monogram{width:110px;height:120px}}
@media(max-height:690px) and (max-width:700px){.cover .names img{width:69%}.cover .names{gap:8px}.cover .monogram{width:80px;height:85px}.cover h2{margin:8px 0 18px}.lettered img{height:45px}.locations .lettered img{height:35px}.locations .lettered{min-height:35px}}
a{color:inherit}.places a,.map-credit a{color:var(--muted)}
@media(max-width:700px){#ceremonia .copy .intro{display:none}.rsvp-scene{scroll-padding-bottom:28px}#save-status{padding-bottom:18px}}

.cover h2 .names,.copy h1 .names{display:flex;margin:0;line-height:normal;font:inherit}.cover h2 .names{flex-direction:row}.cover h2 .sr-only,h1 .sr-only{margin:-1px;line-height:1}
@media(max-width:700px){.cover h2 .names{flex-direction:column}}

/* Ronda 10: watercolor edges, quieter lettering, approaching scenes. */
.scene{transform:translateY(16px) scale(.973);transform-origin:58% 48%;transition:opacity .65s ease,transform 1.05s cubic-bezier(.2,.7,.2,1),visibility 1.05s}
.scene.active{transform:none}
.scene .painting{isolation:isolate}
.scene:not(.locations) .painting img{width:auto;height:auto;max-width:100%;max-height:100%;mask-image:radial-gradient(ellipse 73% 72% at 50% 48%,#000 58%,#000d 70%,transparent 96%);animation:watercolor-drift 22s ease-in-out infinite alternate;animation-play-state:paused;transform-origin:50% 55%}
.scene.active:not(.locations) .painting img{animation-play-state:running}
@keyframes watercolor-drift{from{transform:scale(1) translateY(0)}to{transform:scale(1.035) translateY(-.35%)}}
.scene .painting::after{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 65% 20%,#efd0bd28,transparent 58%);mix-blend-mode:soft-light;opacity:0;animation:light-wash 17s ease-in-out infinite alternate;animation-play-state:paused}
.scene.active:not(.locations) .painting::after{animation-play-state:running}
.locations .painting::after{display:none}
@keyframes light-wash{from{opacity:.08;transform:translateX(-2%)}to{opacity:.65;transform:translateX(2%)}}
.paused *, .paused *::before,.paused *::after{animation:none!important;transition:none!important}
.names-entry{display:block;width:100%;padding:8px 4px;line-height:1;letter-spacing:0}
.cover h2{width:min(730px,82vw);margin:6px 0 18px}
.cover h2 .names{gap:15px}
.cover .monogram{padding:6px;transition:transform .35s ease}
.cover .monogram:hover{transform:scale(1.035)}
#patio{display:block}
#patio .painting{position:absolute;inset:0 auto 0 0;width:73%;height:100%;justify-content:flex-start}
#patio .painting img{max-width:100%;max-height:94%}
#patio .copy{position:absolute;right:1.5%;bottom:9%;width:37%;text-align:left;padding:24px 0 24px 24px;background:radial-gradient(ellipse at 80% 55%,var(--paper) 42%,#f8f4ebed 68%,#f8f4eb00 100%)}
#patio .rule{margin:0 0 26px;width:58px}
#patio .intro{font-size:clamp(30px,3vw,42px);line-height:1.12;margin-bottom:22px}
#patio .body-copy{display:block;font-size:20px}
#patio .date{font-size:clamp(30px,3vw,43px);font-weight:600;letter-spacing:2px;white-space:nowrap;margin:25px 0 16px}
#patio .date span{margin:0 4px}
#patio .art-hint{right:auto;left:28px;bottom:18px;background:#f8f4ebd9;border:none;border-bottom:1px solid var(--line)}
#ceremonia .copy,#recepcion .copy{text-align:left;padding-left:34px;padding-right:36px}
#ceremonia .lettered,#recepcion .lettered{justify-content:flex-start}
#ceremonia .rule,#recepcion .rule{margin-left:0}
#ceremonia .small-link{margin-left:0}
#ceremonia .painting{height:96%;align-self:start}
#ceremonia .copy{align-self:end;padding-bottom:65px}
#recepcion{grid-template-columns:38% 62%}
#recepcion .painting{width:112%;margin-left:-5%}
#recepcion .copy{z-index:2}
#recepcion .lettered img{max-width:100%;height:auto;max-height:100px}
#vestimenta::before{content:'';position:absolute;inset:12% 3%;pointer-events:none;background:radial-gradient(ellipse at 40% 50%,#b99b7430,transparent 67%);animation:dress-wash 16s ease-in-out infinite alternate;z-index:-1}
@keyframes dress-wash{from{opacity:.32;filter:hue-rotate(-10deg)}to{opacity:.78;filter:hue-rotate(14deg)}}
.swatches span{transition:box-shadow .6s,transform .6s;animation:pigment 9s ease-in-out infinite alternate}
.swatches>div:nth-child(2) span{animation-delay:-2s}.swatches>div:nth-child(3) span{animation-delay:-4s}.swatches>div:nth-child(4) span{animation-delay:-6s}.swatches>div:nth-child(5) span{animation-delay:-8s}
@keyframes pigment{from{box-shadow:inset 0 0 12px #ffffff20}to{box-shadow:inset 0 0 22px #f8edda75}}
button:focus-visible,a:focus-visible,select:focus-visible,.map-viewport:focus-visible{outline:2px solid var(--gold);outline-offset:4px}
#map-dialog{width:min(920px,96vw);height:min(960px,94dvh);max-width:none;max-height:none;padding:0;overflow:hidden;box-shadow:0 20px 100px #24101855}
#map-dialog[open]{display:flex;flex-direction:column}
.map-toolbar{display:flex;align-items:center;justify-content:space-between;flex:none;padding:12px 22px;border-bottom:1px solid var(--line);gap:12px}
.map-toolbar h2{font:27px/1.2 Cormorant,Georgia,serif;margin:0}
#close-map{min-height:44px;font-size:18px;padding:8px}
.map-controls{display:flex;align-items:center;justify-content:center;gap:12px;padding:8px 16px;flex:none}
.map-controls button{min-width:44px;min-height:44px;border:1px solid var(--line);font-size:22px}
.map-controls button:disabled{opacity:.3;cursor:default}
#zoom-fit{font-size:16px;padding:8px 12px;margin-left:8px}
#zoom-level{font:12px Arial,sans-serif;min-width:48px;text-align:center}
.map-instruction{font:11px/1.5 Arial,sans-serif;color:var(--muted);text-align:center;margin:0 12px 8px;flex:none}
.map-viewport{min-height:0;flex:1;overflow:auto;overscroll-behavior:contain;touch-action:pan-x pan-y pinch-zoom;background:var(--paper);scrollbar-width:thin}
#map-image{display:block;width:100%;height:auto;max-width:none;max-height:none;object-fit:initial;margin:0;mix-blend-mode:normal}
.map-modal-credit{flex:none;margin:0;padding:9px 12px;font:10px Arial,sans-serif;color:var(--muted);text-align:center;border-top:1px solid var(--line)}
@media(min-width:701px){.map-viewport{width:min(100%,640px);align-self:center}#map-dialog .map-viewport{width:100%}#map-image{padding:0 max(0px,calc((100% - 640px)/2))}}
@media(max-width:700px){
 .cover h2{width:80vw;margin:4px 0 15px}.cover h2 .names{gap:6px}.cover .names img{width:77%;max-width:265px}.cover .names b{font-size:24px;line-height:.5}.names-entry{padding:6px}.cover .monogram{margin:8px 0}
 .scene{overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scroll-padding:14px;transform:translateY(10px) scale(.978)}
 .scene:not(.rsvp-scene):not(.single){grid-template-rows:minmax(210px,52%) minmax(min-content,48%)}
 .scene .copy{padding:4px 14px 16px}
 .scene:not(.locations) .painting img{max-height:100%;max-width:100%}
 #patio{display:flex;flex-direction:column;justify-content:flex-start;gap:0}
 #patio .painting{position:relative;inset:auto;width:100%;height:54%;min-height:235px;flex-shrink:0;justify-content:center}
 #patio .painting img{max-height:100%}
 #patio .copy{position:relative;right:auto;bottom:auto;width:94%;padding:8px 14px 18px 40px;align-self:flex-end;flex-shrink:0;background:none}
 #patio .rule{margin:3px 0 12px;width:38px}
 #patio .intro{font-size:29px;margin:10px 0 12px}
 #patio .body-copy{font-size:17px;margin:10px 0}
 #patio .date{font-size:31px;letter-spacing:1.4px;margin:12px 0 8px}
 #patio .art-hint{left:10px;bottom:3px;font-size:8px;padding:7px}
 #ceremonia .copy,#recepcion .copy{text-align:left;padding:5px 22px 20px;align-self:center}
 #ceremonia .copy{padding-bottom:18px}
 #ceremonia .lettered,#recepcion .lettered{justify-content:flex-start}
 #ceremonia .lettered img,#recepcion .lettered img{height:52px;width:auto;max-width:100%}
 #ceremonia .rule,#recepcion .rule{margin:9px 0}
 #ceremonia .venue,#recepcion .venue{font-size:23px;margin:12px 0 6px}
 #ceremonia .map,#recepcion .map{display:inline-block;margin:8px 16px 8px 0;min-height:25px}
 #ceremonia .small-link{display:inline-block;font-size:14px;padding:8px 0}
 #ceremonia .next,#recepcion .next{display:flex;width:max-content;max-width:100%;font-size:17px}
 #ceremonia .painting{height:100%}
 #recepcion{grid-template-columns:1fr;grid-template-rows:minmax(210px,49%) minmax(min-content,51%)}
 #recepcion .painting{width:108%;margin-left:-4%}
 .locations .painting{min-height:220px}
 .locations .copy{padding-bottom:18px}
 #map-dialog{width:100vw;height:100dvh;max-height:100dvh;margin:0;inset:0}
 .map-toolbar{padding:8px 16px;padding-top:max(8px,env(safe-area-inset-top))}
 .map-toolbar h2{font-size:25px}.map-controls{gap:9px;padding:7px 12px}
 .map-modal-credit{padding-bottom:max(10px,env(safe-area-inset-bottom))}
 .single .copy{margin:auto 0}
}
@media(max-height:700px) and (min-width:701px){.scene{overflow:auto}.copy{padding:12px}.lettered{min-height:65px}.lettered img{height:70px}.intro{font-size:27px}.eyebrow{margin-bottom:15px}.rule{margin:15px auto}.venue{margin-top:16px}.body-copy{font-size:17px}#ceremonia .copy{padding-bottom:20px}#patio .copy{bottom:3%}#patio .intro{font-size:31px}#patio .date{font-size:32px}.cover-content{padding:60px 20px}.cover .monogram{width:90px;height:100px}.cover h2{width:min(550px,70vw)}}
@media(max-height:700px) and (max-width:700px){#patio .painting{height:45%;min-height:205px}#patio .copy{padding-top:0;padding-left:28px}#patio .intro{font-size:25px;margin:6px 0 9px}#patio .body-copy{font-size:16px;margin:7px 0}#patio .date{font-size:28px;margin:9px 0 4px}#patio .rule{margin-bottom:8px}.scene:not(.rsvp-scene):not(.single){grid-template-rows:minmax(190px,45%) minmax(min-content,55%)}#ceremonia .lettered img,#recepcion .lettered img{height:45px}.cover .monogram{width:80px;height:86px}.cover h2 .names{gap:3px}.cover .names img{width:69%}.locations .painting{min-height:200px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
@media(min-width:701px){#map-dialog .map-viewport{width:100%;max-width:640px}#map-image{padding:0}}
#recepcion .painting{width:100%;margin-left:0}
.scene:not(.locations) .painting img{mask-image:linear-gradient(to bottom,transparent,#000 5%,#000 95%,transparent),linear-gradient(to right,transparent,#000 5%,#000 95%,transparent),radial-gradient(ellipse 73% 72% at 50% 48%,#000 58%,#000d 70%,transparent 96%);mask-composite:intersect}
@media(max-width:700px){#patio .painting{order:-1}.single .copy{max-width:100%;min-width:0}.single .essential br{display:none}.swatches{gap:clamp(8px,3vw,14px)}.single .lettered img{max-width:100%}.single .copy h2{white-space:normal}.topbar .utilities{gap:10px;white-space:nowrap}.topbar{padding:0 14px}.edition{white-space:nowrap}}
@media(max-width:350px){.topbar{padding:0 10px}.topbar .utilities{gap:8px}.utilities button{font-size:8px}.edition{font-size:8px}.edition span{margin:0 4px}.swatches{font-size:12px}.swatches span{width:35px;height:35px}.single .copy{padding:12px 8px}.essential{font-size:14px!important}}
/* Small landscape screens keep every control reachable. */
@media(max-height:500px) and (min-width:701px){
 .topbar{height:46px;padding:0 24px}.bottom{height:48px;padding:0 24px}.scene{inset:46px 24px 50px}
 .cover-content{padding:50px 20px 55px;overflow-y:auto;justify-content:flex-start}
 .cover .eyebrow{font-size:8px;margin:0}.cover .monogram{width:60px;height:65px;margin:3px 0;padding:0}
 .cover h2{width:430px;margin:0}.cover .names-entry{padding:0}.cover .names img{max-height:80px}.cover .names b{font-size:22px}
 .cover-date{font-size:16px;margin:3px 0 7px}.cover .open{font-size:17px;padding:8px 0}
 #patio .painting{height:100%;width:53%}#patio .copy{position:relative;width:45%;margin-left:auto;right:0;bottom:auto;padding:12px 0}
 #patio .intro{font-size:25px;margin:8px 0}#patio .body-copy{font-size:16px;margin:8px 0}#patio .date{font-size:28px;margin:9px 0}#patio .rule{margin-bottom:10px}
 #ceremonia .copy,#recepcion .copy{align-self:start;padding:10px 18px}.copy .eyebrow{margin-bottom:7px}.lettered{min-height:50px}.lettered img{height:55px}.intro{font-size:23px;margin:10px 0}.rule{margin:10px auto}.venue{font-size:22px;margin-top:10px}.map{margin:9px 0}
}

@media(max-width:700px){#luna .body-copy br{display:none}}

/* v11: animate paint locally; the entire image remains stationary. */
.scene:not(.locations) .painting img{animation:none!important;transform:none!important}
.scene .painting::after{display:none!important;animation:none!important}
.motion-canvas{position:absolute;pointer-events:none;display:block;mix-blend-mode:multiply;mask-image:linear-gradient(to bottom,transparent,#000 5%,#000 95%,transparent),linear-gradient(to right,transparent,#000 5%,#000 95%,transparent),radial-gradient(ellipse 73% 72% at 50% 48%,#000 58%,#000d 70%,transparent 96%);mask-composite:intersect}
.scene .painting img.motion-source{opacity:0}
.art-hint{z-index:2}

/* Detail preserves the same living watercolor at a readable scale. */
#detail .detail-painting{position:relative;display:block;width:fit-content;margin:auto;line-height:0}
#detail .detail-painting>img{height:82dvh;width:auto;max-width:85vw;object-fit:contain}
#detail img.motion-source{opacity:0}
#detail .motion-canvas{mask-image:none}

/* v13: invitation first, one navigation, quieter framing. */
:root{--muted:#6f5f53}
.topbar{justify-content:flex-end;height:58px;padding:0 24px}
.utilities{gap:4px!important}
.utilities button{display:grid;place-items:center;min-width:44px;min-height:44px;padding:0;font:22px/1 Georgia,serif!important}
.bottom{height:56px;justify-content:center;padding:0 12px}
#scene-nav{width:auto;gap:6px!important}
#scene-dots{display:flex;align-items:center}
#scene-dots button{display:grid;place-items:center;min-width:32px;width:32px;height:44px;padding:0}
#scene-dots button span{margin:0;display:block;width:6px;height:6px;border:1px solid var(--muted);border-radius:50%;transition:background .2s,transform .2s}
#scene-dots button[aria-current] span{background:var(--wine);border-color:var(--wine);transform:scale(1.3)}
.scene{top:58px;bottom:58px}
.eyebrow,.preview,.map-instruction,.map-modal-credit,#zoom-level{font-family:Cormorant,Georgia,serif;letter-spacing:0;text-transform:none}
.preview{font-size:17px;background:none;padding:0 0 14px;border:0;border-bottom:1px solid var(--line)}
.leaf.left,.leaf.right{box-shadow:none}
#patio{display:grid;grid-template-columns:58% 42%;gap:0}
#patio .painting{position:relative;inset:auto;width:100%;height:100%}
#patio .copy{position:relative;right:auto;bottom:auto;width:100%;padding:30px 12px 50px 24px;background:none;align-self:end}
#patio .intro{font-size:clamp(28px,2.8vw,40px);line-height:1.18}
#patio .date{font-weight:400;font-size:clamp(29px,2.9vw,41px)}
#patio .painting{cursor:default}
#ceremonia .copy{align-self:center;padding-bottom:20px}
#ceremonia .map,#recepcion .map,#ceremonia .small-link,#recepcion .small-link{display:inline-block;font-size:18px;margin:12px 24px 0 0;min-height:44px;padding-top:12px}
#luna .copy,#rsvp .copy{text-align:left}
#luna .rule,#rsvp .rule{margin-left:0}
#rsvp .lettered{justify-content:flex-start}
.editorial-title{font:400 clamp(42px,5vw,68px)/1.1 Cormorant,Georgia,serif;margin:12px 0}
#luna .body-copy{font-size:23px;line-height:1.5}
#save{background:var(--wine);color:var(--paper);border:0;padding:14px 26px;min-height:48px;justify-content:center;font-size:20px}
.guest-note{font-size:17px;color:var(--muted)}
.closing-links{display:flex;justify-content:center;gap:24px;margin-top:26px}
.closing-links .small-link{margin:0;font-size:16px}
#gracias .intro{font-size:25px;line-height:1.3}
#gracias .body-copy{font-size:23px}
@media(max-width:700px){
 .topbar{height:48px;padding:0 12px}.bottom{height:54px;padding:0 8px}.scene{top:48px;bottom:56px}
 #patio{display:flex}#patio .painting{height:56%;min-height:230px;justify-content:center}
 #patio .copy{width:92%;padding:12px 12px 24px 22px;align-self:flex-end}
 #patio .intro{font-size:28px}#patio .date{font-size:30px;margin-top:24px}
 #ceremonia .copy,#recepcion .copy{padding:12px 24px 24px}
 #ceremonia .body-copy,#recepcion .body-copy{font-size:18px!important;line-height:1.4}
 #ceremonia .map,#recepcion .map,#ceremonia .small-link,#recepcion .small-link{font-size:17px;margin-top:8px;margin-right:20px}
 #rsvp .copy{padding:18px 16px 8px}#rsvp .intro{font-size:23px}
 .preview{font-size:16px;margin-bottom:22px}.form-panel{padding:12px 16px 30px}
 #luna .copy{padding:18px 24px 28px}#luna .editorial-title{font-size:43px;white-space:normal;line-height:1.15;margin:12px 0}
 #luna .body-copy{font-size:20px!important;line-height:1.4}
 #gracias .intro{font-size:22px}#gracias .body-copy{font-size:20px!important}
 .single .essential{font-size:18px!important;line-height:1.4}.single .copy{padding:20px 14px}
 .swatches{font-size:14px;margin:28px 0}.closing-links{margin-top:20px}
 .map-instruction{font-size:15px}.map-modal-credit{font-size:14px}
}
@media(max-height:650px) and (max-width:700px){#patio .painting{height:48%;min-height:195px}#patio .intro{font-size:26px}#patio .date{margin-top:16px}}
@media(min-width:701px){#patio .painting{grid-column:1;grid-row:1}#patio .copy{grid-column:2;grid-row:1}}
.assigned .eyebrow{font-size:16px}

/* v14: Dani review, 6 October. Reception composition and internal motion retained. */
.cover h2{width:min(650px,76vw)}
.cover .monogram{width:156px;height:170px;margin:-35px 0 20px}
#save{border-radius:999px}
#ceremonia,#luna,#gracias{grid-template-columns:34% 66%}
#ceremonia .painting{height:100%;align-self:center}
#ceremonia .painting,#luna .painting,#gracias .painting{animation:art-approach 12s ease-in-out infinite alternate;animation-play-state:paused;transform-origin:50% 50%}
#patio .painting{animation:art-approach 18s ease-in-out infinite alternate;animation-play-state:paused}
#ceremonia.active .painting,#luna.active .painting,#gracias.active .painting,#patio.active .painting{animation-play-state:running}
@keyframes art-approach{from{transform:scale(1)}to{transform:scale(1.065)}}
#music-status{position:fixed;z-index:40;top:58px;right:16px;max-width:290px;padding:12px 16px;background:var(--paper);border:1px solid var(--line);font-size:17px}
.music-retry{position:fixed;z-index:41;top:145px;right:16px;max-width:90vw}
@media(max-width:700px){
 .cover h2{width:76vw}.cover .names img{width:76%;max-width:250px}
 .cover .monogram{width:142px;height:155px;margin:-25px 0 22px}
 #ceremonia,#luna,#gracias{grid-template-columns:1fr;grid-template-rows:minmax(0,64%) minmax(0,36%)}
 #ceremonia .copy,#luna .copy,#gracias .copy{padding:6px 18px 10px}
 #ceremonia .lettered{margin:0!important;min-height:42px}#ceremonia .lettered img{height:43px}
 #ceremonia .venue{margin:5px 0;font-size:22px}#ceremonia .rule{margin:5px 0}
 #ceremonia .body-copy{margin:4px 0;font-size:17px!important}
 #ceremonia .map,#ceremonia .small-link{margin-top:0;padding-top:8px}
 #gracias .lettered{min-height:42px;margin:0!important}#gracias .lettered img{height:46px}
 #gracias .rule{margin:6px auto}#gracias .intro{margin:6px 0;font-size:21px}
 #gracias .body-copy{margin:6px 0}.closing-links{margin-top:6px}
 #luna .editorial-title{font-size:38px;margin:6px 0}#luna .rule{margin:8px 0}
}
@media(max-width:700px) and (max-height:650px){
 .cover .monogram{width:105px;height:112px;margin:-15px 0 12px}.cover .names img{width:65%}
 #ceremonia{grid-template-rows:minmax(0,54%) minmax(0,46%)}
 #luna,#gracias{grid-template-rows:minmax(0,59%) minmax(0,41%)}
 #ceremonia .lettered img,#gracias .lettered img{height:36px}#ceremonia .venue{font-size:20px}
 #ceremonia .body-copy{font-size:15px!important}#ceremonia .map,#ceremonia .small-link{font-size:15px;margin-right:12px}
 #gracias .intro{font-size:18px}#gracias .body-copy{font-size:17px!important}
 #luna .body-copy{font-size:18px!important}
}
@media(prefers-reduced-motion:reduce){.painting{animation:none!important}}

/* D3: fixed frame; all motion is inside the painted regions. */
#patio .painting,#patio .painting img,#patio .painting canvas,#detail .detail-painting img,#detail .detail-painting canvas{animation:none!important;transform:none!important}
#patio .painting::after{display:none}
/* Pases (17 oct): each pass asks for the guest's name, styled like the notes field. 17px+ avoids iOS zoom on focus. */
.name-label{display:block;font-size:17px;color:var(--muted);margin:0 0 10px}.guest-name{display:block;width:100%;margin-top:6px;border:1px solid var(--line);background:#fffaf2;color:var(--wine);font:18px/1.3 Cormorant,serif;padding:11px 12px;border-radius:0}.guest-name:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.guest-name::placeholder{color:#a7978a}
/* Familia (18 oct): add and remove people on open invitations. */
.add-guest{display:block;margin:-6px 0 26px;padding:12px 0;border-bottom:1px solid var(--gold);font-size:18px;color:var(--wine)}.remove-guest{float:right;margin-top:-34px;font-size:15px;color:var(--muted);text-decoration:underline;text-underline-offset:4px;padding:8px 0}
/* Vestimenta con ilustración (19 oct): texto a la izquierda, invitados a la derecha; en móvil, imagen arriba. */
#vestimenta.dress-art{display:grid;grid-template-columns:44% 56%;align-items:center;justify-content:stretch;overflow:hidden}
#vestimenta.dress-art .copy{max-width:none}
#vestimenta .dress-figure{height:100%;max-height:78vh;padding:0 2%}
#vestimenta .dress-figure img{width:100%;height:100%;object-fit:contain;mix-blend-mode:multiply}
@media(max-width:700px){
 #vestimenta.dress-art{display:flex;flex-direction:column;justify-content:flex-start;overflow-y:auto}
 #vestimenta .dress-figure{order:-1;flex:0 0 auto;height:auto;max-height:none;padding:6px 6px 0}
 #vestimenta .dress-figure img{height:auto;max-height:32vh}
 #vestimenta.dress-art .copy{padding-top:4px}
}
#vestimenta .dress-figure img{-webkit-mask-image:none;mask-image:none;mix-blend-mode:multiply}
.cover:not([hidden])~.bottom{background:transparent}
.cover:not([hidden])~.topbar{color:#efe2c8}
/* Portada (19 oct, segunda versión): papel burgundy con grano y luz central, arco nazarí en filete dorado,
   escudo dorado, letras beige. El «telón» vive en el movimiento: las hojas se deslizan hacia los lados. */
.cover{color:#efe2c8;--aw:min(54vw,760px);--at:7vh}
@media(orientation:portrait){.cover{--aw:86vw;--at:9vh}.cover .cover-date{letter-spacing:.11em}}
@media(orientation:landscape){.cover h2{width:min(440px,33vw)}.cover .cover-content{padding-top:16vh}}
.cover .leaf{background-color:#561425;transition:transform 1.7s cubic-bezier(.7,0,.15,1)}
.cover .leaf.left{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .16 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"),radial-gradient(ellipse 120% 80% at 100% 44%,#6e1c30 0%,#571426 46%,#390b17 100%);box-shadow:none}
.cover .leaf.right{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .16 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"),radial-gradient(ellipse 120% 80% at 0% 44%,#6e1c30 0%,#571426 46%,#390b17 100%);box-shadow:none}
.cover .leaf .arch{border:0;border-radius:0;opacity:1;background:url(assets/arco-nazari.svg) center/100% 100% no-repeat;width:var(--aw);height:calc(100% - var(--at) + 60px);top:var(--at);bottom:auto}
.cover .leaf .arch:before,.cover .leaf .arch:after{display:none}
.cover .leaf.left .arch{left:auto;right:calc(var(--aw) / -2)}
.cover .leaf.right .arch{right:auto;left:calc(var(--aw) / -2)}
.cover::after{content:'';position:absolute;left:50%;top:calc(var(--at) + (100% - var(--at) + 60px) * .034 - 19px);width:16px;height:16px;transform:translateX(-50%);background:url(assets/estrella-ocho.svg) center/contain no-repeat;transition:opacity .5s;pointer-events:none}
.cover.opening::after{opacity:0}
.cover.opening .leaf.left{transform:translateX(-101%)}
.cover.opening .leaf.right{transform:translateX(101%)}
.cover .monogram img{filter:drop-shadow(0 1px 0 rgba(0,0,0,.45)) drop-shadow(0 0 16px rgba(201,168,106,.16))}
.cover .names b,.cover .cover-date,.cover h2{color:#efe2c8}
.cover .cover-date{letter-spacing:.16em}
.cover .cover-date span{color:#c9a86a}
.cover .open{color:#efe2c8;border-bottom-color:rgba(201,168,106,.8)}
.cover .open:focus-visible,.cover button:focus-visible{outline-color:#c9a86a}
@media(prefers-reduced-motion:reduce){.cover .leaf{transition-duration:.01s}}
@media(orientation:portrait) and (max-height:720px){.cover{--at:3vh}.cover .cover-content{padding-top:9vh}.cover .monogram{width:84px;height:90px}.cover .cover-date{letter-spacing:.05em}}
/* Portada acuarela (19 oct, tercera versión): el fondo es una acuarela burgundy pintada con su arco nazarí
   dorado; cada hoja muestra su mitad del mismo cuadro, así al abrir se parte como un telón. */
.cover .leaf.left,.cover .leaf.right{background-image:none;background-color:#5a1727}
.cover .leaf::before{content:'';position:absolute;top:0;bottom:0;width:200%;background:url(assets/portada-horizontal.jpg) center top/cover no-repeat}
.cover .leaf.left::before{left:0}
.cover .leaf.right::before{right:0}
@media(orientation:portrait){.cover .leaf::before{background-image:url(assets/portada-vertical-alta.jpg)}}
.cover .leaf .arch,.cover::after{display:none}
.cover .names b,.cover .cover-date,.cover h2,.cover .open{text-shadow:0 1px 10px rgba(40,6,14,.45)}
@media(orientation:landscape) and (max-height:780px){.cover .cover-content{padding-top:24vh}}
/* Gift accounts: compact rows (label, number, copy) so the second account is not left below the fold on phones. */
#gift-details{display:grid;gap:14px;margin-top:10px}
#gift-details .gift h3{font-size:17px;font-weight:600;margin:0 0 1px;color:var(--wine)}
#gift-details .gift p{margin:0;font-size:14px;line-height:1.45}
#gift-details .gift-row{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:10px}
#gift-details .gift-row span{min-width:50px}
#gift-details .gift-row b{font-weight:400;letter-spacing:.02em;font-variant-numeric:tabular-nums;color:var(--wine)}
#gift-details .gift-row .text-link{font-size:13px;padding:0;margin:0;min-height:0}
@media(min-width:900px){#gift-details .gift p{font-size:15px}}
.swatches>div:nth-child(6) span{animation-delay:-10s}
/* On phones the open gift details make the copy taller than its row; anchor it to the top so it grows down instead of over the suitcases. */
@media(max-width:700px){#luna .copy:has(.gifts-details[open]){align-self:start}}
/* Gifts: the Mercado Pago button sits in plain view in the scene; the accounts stay one tap away. */
#luna .gift-cta{margin:22px 0 4px}
#luna .gift-button{display:flex;align-items:center;justify-content:center;gap:16px;width:100%;max-width:400px;min-height:54px;padding:14px 24px;border-radius:999px;background:var(--wine);color:var(--paper);font-size:20px;text-decoration:none;box-shadow:0 8px 22px rgba(87,27,43,.18);transition:transform .2s,box-shadow .2s}
#luna .gift-button span{font:24px Cormorant;transition:transform .25s}
#luna .gift-button:hover{transform:translateY(-1px);box-shadow:0 10px 26px rgba(87,27,43,.24)}
#luna .gift-button:hover span{transform:translateX(4px)}
#luna .gift-button:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
#luna .gift-note{margin:10px 0 0;font-size:14px;line-height:1.4;color:var(--muted)}
#save-status .gift-nudge{display:flex;width:max-content;max-width:100%;margin-top:16px;color:var(--wine)}
/* Short phones: give the gift copy more of the scene so the title clears the suitcases and the button stays in view. */
@media(max-width:700px) and (max-height:760px){#luna{grid-template-rows:minmax(0,36%) minmax(0,64%)}}
