@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500&family=Manrope:wght@400;500;600;700&display=swap');
:root{--ink:#161917;--black:#101311;--paper:#efeee7;--gold:#b8a075;--muted:#6d7168;--line:#d4d4c8;--serif:'Cormorant Garamond',Georgia,serif;--sans:Manrope,Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:85px}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.65 var(--sans)}body.locked{overflow:hidden}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}a{color:inherit;text-decoration:none}button{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #ac8549;outline-offset:5px}img{display:block;width:100%;object-fit:cover}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:.96}h2{font-size:clamp(52px,6.4vw,94px);letter-spacing:-.035em}h3{font-size:32px}button{border:0}.eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:.22em;font-weight:600}.button{display:inline-flex;align-items:center;justify-content:center;padding:15px 28px;font-size:14px;font-weight:600;min-height:52px;transition:background .2s}.gold{background:var(--gold);color:var(--black)}.gold:hover{background:#d0bc95}.dark{background:var(--ink);color:var(--paper)}.light{border:1px solid #b8a07566;background:transparent;color:var(--paper)}.text-link{font-size:14px;background:none;border-bottom:1px solid currentColor;padding:7px 0;display:inline-block}.text-link span{margin-left:30px}.fine-print{font-size:12px;line-height:1.6;color:var(--muted)}[hidden]{display:none!important}.site-header{height:84px;display:flex;align-items:center;justify-content:space-between;padding:0 5vw;border-bottom:1px solid var(--line);background:var(--paper)}.wordmark{font-family:var(--serif);font-size:32px}.wordmark i{font-size:23px;margin:0 4px;color:#907649}.site-header nav{display:flex;gap:32px;align-items:center;font-size:13px}.nav-rsvp{padding:10px 0;border-bottom:1px solid var(--ink);background:transparent;font-size:13px}.hero{display:grid;grid-template-columns:1fr 1fr;min-height:calc(100svh - 84px);max-height:1100px}.hero-photo{position:relative;overflow:hidden;min-height:690px}.hero-photo img{position:absolute;height:100%;object-position:center 43%;animation:photo-in 2.6s ease both}.photo-caption{position:absolute;bottom:32px;left:40px;color:white;font-size:12px;letter-spacing:.06em;writing-mode:vertical-rl;transform:rotate(180deg);text-shadow:0 1px 10px #000}.hero-copy{padding:40px 6vw 44px;display:flex;flex-direction:column;justify-content:space-between;position:relative}.hero-top{display:flex;justify-content:space-between;font-size:11px;text-transform:uppercase;letter-spacing:.12em;gap:20px}.hero-copy h1{font-size:clamp(90px,10.2vw,155px);letter-spacing:-.065em;line-height:.8;margin:60px 0 42px;align-self:center}.ampersand{display:block;font-size:.55em;line-height:.95;color:#9a865f;text-align:center;font-style:italic;letter-spacing:0;margin:10px 0}.hero-bottom{max-width:380px;width:100%;margin:auto auto 0}.hero-bottom>p{font-family:var(--serif);font-size:27px;line-height:1.2}.date-line{display:flex;align-items:center;gap:14px;border-top:1px solid var(--line);margin:30px 0 22px;padding-top:22px;line-height:1.4}.date-line>span:first-child{font-family:var(--serif);font-size:60px;line-height:1}.date-line>div{font-size:14px}.date-time{margin-left:auto;font-size:14px}.intro-section{text-align:center;padding:110px 24px 90px}.tiny-monogram{font-family:var(--serif);font-style:italic;color:#8a744e;font-size:24px;display:block;margin-bottom:32px}.intro-quote{font-family:var(--serif);font-size:clamp(32px,4.3vw,56px);line-height:1.05;letter-spacing:-.025em;margin-bottom:28px}.intro-section>p:last-of-type{font-size:14px;color:var(--muted)}.countdown{display:flex;justify-content:center;gap:45px;margin-top:52px}.countdown strong{font-family:var(--serif);font-size:48px;font-weight:400;line-height:1;display:block}.countdown span{font-size:11px;letter-spacing:.08em}.celebration{background:var(--ink);color:var(--paper);display:grid;grid-template-columns:1fr 1fr}.celebration-photo{min-height:750px}.celebration-photo img{height:100%;max-height:870px;object-position:center}.celebration-copy{padding:75px 6vw;align-self:center}.celebration-copy .eyebrow{color:var(--gold);margin-bottom:28px}.event-date{margin:35px 0;border-top:1px solid #ffffff26;border-bottom:1px solid #ffffff26;padding:24px 0;display:flex;flex-direction:column;font-size:14px;gap:5px}.event-date strong{font-family:var(--serif);font-size:32px;font-weight:400}.small-label{font-size:12px;color:var(--gold)}.venue h3{margin:12px 0 15px;line-height:1.1}.venue p{font-size:14px;color:#b5b9ae}.celebration-copy .button{margin:32px 0 14px}.celebration-copy .fine-print{color:#b5b9ae}.story-strip{padding:100px 5vw;display:grid;grid-template-columns:.9fr 1fr 1fr;gap:28px;align-items:center}.story-strip h2{font-size:clamp(46px,5vw,76px);margin-top:30px}.story-strip figure:last-child{margin-top:130px}.story-strip img{aspect-ratio:2/3}.story-strip figcaption{font-family:var(--serif);font-style:italic;font-size:20px;margin-top:16px}.rsvp-section{text-align:center;background:#20261f;color:var(--paper);padding:100px 24px;position:relative;overflow:hidden}.rsvp-section>*{position:relative}.rsvp-section .eyebrow{color:var(--gold)}.rsvp-section h2{margin:30px 0}.rsvp-section>p:not(.eyebrow){color:#c7cbbf;font-size:14px}.rsvp-section .button{margin:35px auto 15px;display:flex;width:max-content}.rsvp-section .text-link{font-size:12px}.rsvp-decoration{position:absolute;left:3%;top:-100px;font:650px var(--serif);opacity:.025;pointer-events:none}.memories{padding:100px 5vw}.memory-heading{display:flex;justify-content:space-between;align-items:end;gap:30px;margin-bottom:45px}.memory-heading h2{margin-top:20px}.memory-heading>p{font-size:14px;color:var(--muted)}.public-gallery{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.public-gallery img,.public-gallery video{width:100%;height:100%;aspect-ratio:3/4;object-fit:cover}.public-gallery figure{position:relative}.public-gallery figcaption{background:#101311af;color:#fff;font-size:11px;padding:7px 12px;position:absolute;bottom:0;left:0;right:0}.memory-actions{display:flex;align-items:center;justify-content:center;gap:30px;margin-top:38px}.wedding-footer{background:var(--black);color:var(--paper);text-align:center;padding:75px 24px 110px}.wedding-footer p{font-family:var(--serif);font-style:italic;font-size:34px;line-height:1.2}.wedding-footer>span{display:block;font-family:var(--serif);font-size:38px;margin:32px 0 8px}.wedding-footer small{font-size:12px;letter-spacing:.22em;color:var(--gold)}.demo-bar{position:fixed;bottom:0;left:0;right:0;z-index:25;background:#f7f6f1f5;backdrop-filter:blur(10px);border-top:1px solid #d7d7c9;padding:9px 22px;display:flex;gap:15px;justify-content:space-between;align-items:center;font-size:11px}.demo-bar div{display:flex;gap:18px}.demo-bar button{background:none;font-size:11px;padding:3px 0;border-bottom:1px solid #b5ac92}.entrance{position:fixed;inset:0;background:var(--black);z-index:100;perspective:1400px;overflow:hidden}.door{position:absolute;top:0;bottom:0;width:50%;background-image:linear-gradient(#0002,#0002),url('assets/puertas.jpg');background-repeat:no-repeat;background-size:200% 100%;transition:transform 2.3s cubic-bezier(.65,.05,.3,1),filter 2.3s;backface-visibility:hidden}.left-door{left:0;background-position:left center;transform-origin:left center}.right-door{right:0;background-position:right center;transform-origin:right center}.entry-copy{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#f7f1dc;background:radial-gradient(ellipse at center,#0009,transparent 65%);transition:opacity .65s}.entry-copy>.eyebrow{font-size:11px;text-shadow:0 2px 15px #000;max-width:280px}.entry-monogram{font-family:var(--serif);font-size:110px;letter-spacing:-.07em;line-height:1.1;margin:25px 0 15px;text-shadow:0 2px 25px #000}.entry-monogram span{font-size:.55em;font-style:italic;color:#d3bd89;display:inline-block;margin:0 10px}.entry-copy>p:not(.eyebrow){font-size:13px;letter-spacing:.15em}.seal{margin-top:48px;background:radial-gradient(circle at 35% 30%,#e0c991,#a88b53 75%);box-shadow:0 0 0 5px #9e8657,0 0 0 6px #ddc89a,0 10px 35px #0008;color:#292313;border-radius:50%;width:95px;height:95px;display:flex;align-items:center;justify-content:center;flex-direction:column;transition:transform .2s}.seal:hover{transform:scale(1.06)}.seal span{font:italic 28px var(--serif)}.seal small{font-size:10px;letter-spacing:.04em}.skip{position:absolute;bottom:28px;left:50%;transform:translateX(-50%);color:#eee2c6;background:#1116;font-size:12px;border-bottom:1px solid #a58e60;white-space:nowrap;padding:6px 12px}.entrance.opening{background:transparent;pointer-events:none}.opening .left-door{transform:rotateY(-105deg);filter:brightness(.35)}.opening .right-door{transform:rotateY(105deg);filter:brightness(.35)}.opening .entry-copy,.opening .skip{opacity:0}.entrance.leaving{opacity:0;transition:opacity .3s}.dashboard{padding:55px 5vw 110px;max-width:1550px;margin:auto;min-height:90vh}.dash-heading{display:flex;justify-content:space-between;gap:24px;align-items:center;margin-bottom:30px}.dash-heading h1{font-size:56px}.dash-heading p{font-size:13px;color:var(--muted);margin-top:12px}.badge{font-size:11px;border:1px solid #cfc5ae;padding:3px 8px;display:inline-block;background:#e7e0cf;color:#635331}.stats{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);margin:25px 0 30px}.stat{padding:22px 26px;border-right:1px solid var(--line)}.stat:last-child{border:0}.stat strong{display:block;font:48px var(--serif)}.stat span{font-size:12px;color:var(--muted)}.tabs{display:flex;gap:25px;border-bottom:1px solid var(--line);margin-bottom:25px;overflow:auto}.tabs button{background:transparent;font-size:14px;padding:10px 0;border-bottom:2px solid transparent;white-space:nowrap}.tabs button.active{border-color:var(--ink)}.table-tools{display:flex;gap:16px;justify-content:space-between;margin-bottom:20px}.table-tools input{max-width:400px}.field,label{display:block}.field{margin-bottom:20px}label{font-size:13px;font-weight:600;margin-bottom:7px}input,select{border:1px solid #c8c9bc;background:#fafaf6;padding:12px 13px;width:100%;border-radius:0;color:var(--ink);min-width:0;font-size:16px}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;text-align:left;font-size:13px;white-space:nowrap}th{font-size:11px;color:var(--muted);font-weight:500;border-bottom:1px solid #aeb09f;padding:13px 12px}td{border-bottom:1px solid var(--line);padding:17px 12px}td small{display:block;font-size:11px;color:var(--muted)}.row-action{background:none;border-bottom:1px solid #8b8d7e;font-size:12px;padding:3px}.pill{font-size:11px;padding:4px 8px;border-radius:3px;background:#e4e8dc;color:#3c5331}.pill.pending{background:#e9e1d1;color:#7b6230}.pill.no{background:#ece3e0;color:#89564a}.two-cols{display:grid;grid-template-columns:1fr 1fr;gap:18px}.seat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.seat-card{border:1px solid var(--line);padding:24px}.seat-card h3{font-size:28px}.seat-card p{font-size:13px;color:var(--muted);margin:8px 0 20px}.seats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.seat{border:1px solid #c5c8b9;font-size:12px;aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:50%}.seat.occupied{background:#354532;color:#fff;border-color:#354532}.moderation-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.media-card{border:1px solid var(--line);padding:12px}.media-card img,.media-card video{height:240px;width:100%;object-fit:cover}.media-card p{font-size:12px;margin:10px 0}.media-card .actions{display:flex;gap:12px;flex-wrap:wrap}.media-card button,.media-card a{font-size:12px}.empty{padding:45px;text-align:center;border:1px dashed #b5b9a9;font-size:14px}.panel-note{font-size:13px;color:var(--muted);margin:15px 0 24px;max-width:760px}.scanner{max-width:660px}.scanner video{width:100%;max-height:360px;background:#131812;margin:18px 0}.scan-result{padding:25px;background:#e3e7d9;margin-top:25px}.scan-result h3{margin:15px 0}.scan-result p{font-size:14px}.scan-result.error{background:#eee0d9}.actions{display:flex;gap:15px;align-items:center;flex-wrap:wrap}.screen{position:fixed;inset:0;background:#080a08;z-index:60;color:#fff}.screen img,.screen video{width:100vw;height:100svh;object-fit:contain}.screen-caption{position:absolute;bottom:8%;left:5%;text-shadow:0 2px 12px #000;background:#0004;padding:20px}.screen-caption span{font:54px var(--serif)}.screen-caption p{font-size:13px}.screen-controls{position:absolute;right:20px;top:20px;display:flex;gap:10px}.screen-controls button{font-size:12px;padding:8px 14px;background:#f6f4ecdd;color:#111}.screen-empty{display:grid;place-content:center;height:100vh;font:40px var(--serif);text-align:center}dialog{border:1px solid #c5b694;background:var(--paper);color:var(--ink);padding:44px;width:min(580px,calc(100% - 28px));max-height:90svh;overflow:auto}dialog::backdrop{background:#081109aa;backdrop-filter:blur(5px)}.modal-close{position:absolute;right:14px;top:8px;font-size:28px;background:none;padding:0 7px}dialog h2{font-size:48px;margin:10px 0 18px}dialog h3{font-size:32px;margin:18px 0}dialog .intro{font-size:14px;color:var(--muted);margin-bottom:25px}dialog .button{width:100%}dialog .eyebrow{color:#857047}dialog .check{display:flex;gap:10px;align-items:flex-start;font-weight:400;font-size:12px;margin:20px 0}dialog .check input{width:16px;margin-top:3px;flex-shrink:0}.ticket{text-align:center}.ticket-name{font:32px var(--serif);margin:18px 0}.qr{background:#fff;padding:15px;margin:20px auto;width:220px;max-width:100%}.qr svg{width:100%;height:auto;display:block}.ticket-seats{display:flex;justify-content:center;gap:30px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:20px;margin-bottom:20px}.ticket-seats strong{display:block;font:32px var(--serif)}.ticket-seats small{font-size:11px}.error-text{font-size:13px;color:#a44430;margin:12px 0}.upload-box{border:1px dashed #9ca68d;background:#e4e7dc;padding:22px;margin:20px 0}.upload-box input{border:0;background:transparent;padding:10px 0;font-size:13px}.upload-box p{font-size:12px;color:var(--muted)}#toast{position:fixed;bottom:75px;left:50%;transform:translate(-50%,15px);opacity:0;pointer-events:none;z-index:150;background:#182317;color:#fff;padding:14px 22px;max-width:90%;font-size:13px;transition:opacity .2s,transform .2s}#toast.show{opacity:1;transform:translate(-50%,0)}.email-preview{padding:25px;background:white;border:1px solid var(--line);font-size:14px}.email-preview p{margin:15px 0}.email-preview small{color:var(--muted)}@keyframes photo-in{from{transform:scale(1.04)}to{transform:scale(1)}}
@media(min-width:1000px){.door{background-size:200% auto;background-position-y:53%}.entrance:after{content:'';position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 160px 80px #0006}.entry-copy{z-index:1}.skip{z-index:2}}
@media(max-width:850px){.site-header{padding:0 24px;height:70px}.site-header nav{gap:18px}.site-header nav>a:first-child{display:none}.hero{min-height:auto;max-height:none;grid-template-columns:1fr}.hero-photo{min-height:0;height:74svh}.hero-photo img{object-position:center 42%}.photo-caption{left:20px;bottom:24px}.hero-copy{padding:28px 30px 45px}.hero-top{font-size:10px}.hero-copy h1{font-size:114px;margin:45px 0 40px;display:block;text-align:center;line-height:.85}.ampersand{font-size:50px;line-height:.6;margin:15px 0}.hero-bottom{max-width:100%}.hero-bottom>p{text-align:center;font-size:29px}.date-line{max-width:340px;margin:30px auto 18px}.hero-bottom>.text-link{display:block;width:max-content;margin:auto}.intro-section{padding:70px 22px}.countdown{gap:28px}.countdown strong{font-size:40px}.celebration{grid-template-columns:1fr}.celebration-photo{min-height:0;height:650px;max-height:85svh}.celebration-copy{padding:55px 30px}.celebration-copy h2{font-size:72px}.story-strip{grid-template-columns:1fr 1fr;padding:65px 24px;gap:18px;align-items:start}.story-strip>div{grid-column:1/-1;margin-bottom:14px}.story-strip h2{font-size:60px}.story-strip figure:last-child{margin-top:70px}.story-strip figcaption{font-size:17px}.rsvp-section{padding:75px 24px}.memories{padding:65px 24px}.memory-heading{display:block}.memory-heading>p{margin-top:24px}.public-gallery{grid-template-columns:repeat(2,1fr);gap:10px}.memory-actions{flex-direction:column;gap:12px}.demo-bar{padding:7px 10px;display:block;text-align:center;font-size:10px}.demo-bar div{justify-content:center;gap:20px;margin-top:3px}.demo-bar button{font-size:10px}.dashboard{padding:32px 22px 110px}.dash-heading{align-items:start}.dash-heading h1{font-size:40px}.dash-heading .button{padding:10px 14px;font-size:12px}.stats{grid-template-columns:1fr 1fr}.stat{padding:18px}.stat:nth-child(2){border:0}.stat:nth-child(-n+2){border-bottom:1px solid var(--line)}.stat strong{font-size:38px}.seat-grid{grid-template-columns:1fr 1fr;gap:14px}.seat-card{padding:14px}.moderation-grid{grid-template-columns:1fr 1fr;gap:14px}.table-tools{flex-wrap:wrap}.screen-caption span{font-size:38px}.entry-monogram{font-size:94px}}
@media(max-width:420px){.hero-copy h1{font-size:98px}.hero-top{font-size:9px;letter-spacing:.08em}.site-header nav>a{display:none}.entry-copy{background:radial-gradient(ellipse,#000a,transparent 85%)}.eyebrow{font-size:10px}.countdown{gap:24px}.countdown strong{font-size:35px}.two-cols{grid-template-columns:1fr}.moderation-grid{grid-template-columns:1fr}.memory-heading h2{font-size:52px}dialog{padding:34px 24px}.seat-grid{grid-template-columns:1fr 1fr}.screen-controls{gap:5px;right:10px;left:10px}.screen-controls button{font-size:10px;padding:7px}.dash-heading{display:block}.dash-heading .button{margin-top:20px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.door{transition:none}.opening .door{opacity:0}}
@media print{.entrance,.site-header,.demo-bar,#site,.modal-close{display:none!important}dialog{display:block!important;position:static;width:100%;max-height:none;border:0}dialog .button{display:none}}

.hero-bottom>.full-names{font:12px var(--sans);letter-spacing:.02em;margin-bottom:18px;color:var(--muted)}

.audio-toggle{background:#171c17e8;color:#f4e9cf;border:1px solid #b8a07580;border-radius:24px;padding:11px 17px;font:12px var(--sans);min-height:44px;z-index:26}
.entry-audio{position:absolute;right:20px;top:20px;z-index:3}
.floating-audio{position:fixed;right:20px;bottom:65px;box-shadow:0 3px 18px #0002}
@media(max-width:850px){.floating-audio{bottom:82px;right:14px}.entry-audio{right:14px;top:14px}}
@media print{.audio-toggle{display:none!important}}

.gifts{display:grid;grid-template-columns:1fr 1fr;background:var(--paper)}
.gifts-photo{overflow:hidden;min-height:800px}
.gifts-photo img{height:100%;object-position:50% 45%}
.gifts-copy{padding:70px 5vw;align-self:center}
.gifts-copy .eyebrow{color:#857047;margin-bottom:20px}
.gifts-intro{font-size:15px;line-height:1.8;margin:25px 0;max-width:460px;color:var(--muted)}
.gift-links{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:34px}
.gift-links .button{padding:13px 20px}
.gift-outline{border:1px solid #9b8a66;background:transparent}
.gift-account{border-top:1px solid var(--line);padding:26px 0 0;margin-top:24px}
.gift-account h3{font-size:29px;line-height:1.15}
.gift-account dl{margin:18px 0 0}
.gift-account dl div{display:grid;grid-template-columns:140px 1fr;gap:10px;margin:8px 0}
.gift-account dt{font-size:12px;color:var(--muted)}
.gift-account dd{margin:0;font-size:14px;overflow-wrap:anywhere}
.hero-photo img{object-position:50% 64%}
@media(max-width:850px){.gifts{grid-template-columns:1fr}.gifts-photo{min-height:0;height:85svh;max-height:800px}.gifts-copy{padding:55px 26px}.gift-account dl div{grid-template-columns:110px 1fr}.hero-photo img{object-position:50% 65%}}

/* Alojamiento junto a la confirmación de asistencia */
.lodging{max-width:620px;margin:60px auto 0;padding:40px 0 0;border-top:1px solid #b8a07566}.lodging h3{font-size:clamp(36px,6vw,48px);margin:16px 0 24px}.lodging>p:not(.eyebrow){font-size:14px;line-height:1.8;color:#d9ddd1}.lodging-phone{text-decoration:underline;text-underline-offset:3px;white-space:nowrap}.lodging .lodging-deadline{margin-top:20px}.lodging-deadline strong{color:var(--paper)}.rsvp-section .lodging .button{margin:24px auto;max-width:100%}.lodging>.text-link{margin-top:8px;overflow-wrap:anywhere}
