:root{--ink:#405d50;--pine:#5e7766;--cream:#f3f0e8;--paper:#fffdf8;--wine:#a36d66;--gold:#b7a77d;--muted:#849188;--sage:#95a98e;--sans:'DM Sans',sans-serif;--serif:'Cormorant Garamond',serif;--script:'Parisienne',cursive}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--sans)}button,input,select{font:inherit}button{cursor:pointer}.site-header{height:76px;padding:0 6vw;display:flex;align-items:center;justify-content:space-between;position:absolute;z-index:10;width:100%;color:#fffaf1}.brand{display:flex;gap:10px;align-items:center;font-family:var(--serif);font-size:22px;color:inherit;text-decoration:none}.brand-mark{font-family:var(--script);font-size:31px;border:1px solid #fffaf1;border-radius:50%;width:35px;height:35px;display:grid;place-items:center}.admin-link{font-size:13px;color:inherit;text-decoration:none}.admin-link span{margin-left:6px}.invite-stage{min-height:720px;background:linear-gradient(135deg,#587264 0%,#728a77 53%,#9eae92 130%);position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center}.invite-stage:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 75% 22%,rgba(255,253,244,.24),transparent 29%),linear-gradient(115deg,rgba(37,65,54,.2),transparent 54%)}.invite-stage:after{content:"";position:absolute;border:1px solid rgba(255,250,240,.27);width:700px;height:700px;border-radius:50%;right:-330px;top:-265px}.botanical{position:absolute;font-family:var(--serif);font-size:230px;color:#d6ddbf;opacity:.22}.botanical-left{left:-40px;bottom:-72px;transform:rotate(36deg)}.botanical-right{right:-40px;top:35px;transform:rotate(210deg)}.intro-copy{position:absolute;z-index:1;left:8vw;top:178px;color:#fffaf1;transition:opacity .35s}.intro-copy span,.eyebrow{letter-spacing:.18em;text-transform:uppercase;font-size:10px;font-weight:700;color:var(--gold)}.intro-copy h1{font:400 68px/1.05 var(--script);letter-spacing:0;margin:10px 0}.intro-copy p{font:15px/1.6 var(--sans);max-width:220px;color:#edf0e5}.is-hidden{opacity:0;pointer-events:none}.envelope-scene{z-index:2;width:430px;height:330px;position:relative;margin:100px 0 0 190px;perspective:1200px;transform-style:preserve-3d}.envelope{position:absolute;width:100%;height:262px;bottom:0;background:#d6bb8a}.envelope.back{background:linear-gradient(135deg,#e1cda8,#bea276);box-shadow:0 22px 35px rgba(42,60,49,.27)}.envelope.front{z-index:4;clip-path:polygon(0 0,50% 47%,100% 0,100% 100%,0 100%);background:linear-gradient(135deg,#e3cb9f 0 50%,#caa878 50%);pointer-events:none}.envelope-flap{position:absolute;z-index:5;width:100%;height:200px;top:67px;background:#ead8b8;clip-path:polygon(0 0,100% 0,50% 78%);transform-origin:top center;backface-visibility:hidden;box-shadow:0 2px 3px rgba(0,0,0,.1)}.letter{position:absolute;z-index:2;left:30px;bottom:22px;width:370px;height:270px;background:var(--paper);padding:28px 40px;text-align:center;color:#456657;box-shadow:0 3px 7px rgba(45,60,50,.14);transition:transform 1.25s .36s cubic-bezier(.16,.91,.32,1),height .45s 1.34s,box-shadow .7s .5s;overflow:hidden}.letter:before{content:"";position:absolute;inset:9px;border:1px solid #e7dfcc;pointer-events:none}.letter>*{position:relative}.letter-sprig{font:32px var(--serif);color:var(--wine);margin-bottom:3px}.letter h2{font:500 40px/.9 var(--serif);margin:7px 0 2px}.script{font:22px var(--script);margin:0}.date-block{margin:14px auto 12px;display:flex;flex-direction:column;align-items:center;gap:6px;font-size:8px;letter-spacing:.12em}.date-block .date-row{display:flex;align-items:center;justify-content:center;gap:12px;width:100%}.date-block .date-year{display:block;font:600 15px/.8 var(--serif);font-style:normal;letter-spacing:.18em;color:#426453;text-align:center}.date-block strong{font:500 44px/.7 var(--serif)}.letter-rule{height:1px;background:#d9d4bd}.letter-message{font:13px/1.5 var(--serif);margin:12px 0}.read-button{border:0;border-bottom:1px solid var(--wine);color:var(--wine);padding:0 0 3px;background:transparent;font-size:13px;letter-spacing:.1em;text-transform:uppercase}.wax-seal{position:absolute;z-index:7;left:50%;bottom:108px;transform:translateX(-50%);width:76px;height:76px;border-radius:50%;border:4px solid #a06b66;background:radial-gradient(circle at 35% 25%,#c1887c,#925d58 72%);box-shadow:0 4px 7px rgba(99,66,61,.55);color:#f3d4c5;display:grid;place-content:center;transition:opacity .25s}.wax-seal span{font:24px var(--script);line-height:17px}.wax-seal i{font-style:normal;font-size:12px}.seal-caption{position:absolute;z-index:8;bottom:74px;left:50%;transform:translateX(-50%);width:max-content;text-align:center;color:#fffaf1;font-size:13px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;background:rgba(35,55,46,.78);padding:6px 16px;border-radius:20px;white-space:nowrap}.is-open .envelope-flap{animation:unfold-flap 1s cubic-bezier(.43,.03,.32,1) forwards}.is-open .letter{transform:translateY(-198px) rotate(-.45deg);height:450px;z-index:8;box-shadow:0 22px 36px rgba(37,58,48,.3)}.is-open .wax-seal,.is-open .seal-caption{opacity:0;pointer-events:none}@keyframes unfold-flap{0%{transform:rotateX(0);opacity:1}68%{opacity:1}100%{transform:rotateX(-172deg);opacity:0}}.details{padding:110px 7vw 90px;text-align:center;background:var(--paper)}.details h2{font:500 48px/.98 var(--serif);margin:14px auto 56px}.details-grid{display:grid;grid-template-columns:minmax(0,420px);justify-content:center;max-width:1040px;margin:auto;border-top:1px solid #e1dbd0;border-bottom:1px solid #e1dbd0}.details-grid article{padding:30px 24px}.details-grid article+article{border-left:1px solid #e1dbd0}.detail-icon{font:36px var(--serif);color:var(--wine)}.details-grid h3{font:600 25px var(--serif);margin:8px 0}.details-grid p{font-size:13px;line-height:1.65;margin:2px}.details-grid a{display:inline-block;color:var(--wine);font-size:11px;margin-top:13px;text-decoration:none}.tag{display:inline-block;background:#edf0e7;color:#587464;border-radius:20px;padding:6px 9px;margin-top:10px;text-transform:uppercase;letter-spacing:.08em;font-size:10px}.notice{max-width:550px;margin:27px auto 58px;padding:14px 20px;background:#f0efe8;color:#5c7166;font:15px/1.5 var(--serif)}.rsvp-card{max-width:570px;margin:auto;padding:47px 35px;background:var(--pine);color:#fffaf1;position:relative;overflow:hidden}.rsvp-card:after{content:'❦';position:absolute;right:-8px;bottom:-60px;color:#c4d0b3;font:180px var(--serif);opacity:.3}.rsvp-card h3{font:500 40px var(--serif);margin:12px 0 5px}.rsvp-card>p{font-size:15px;color:#edf0e8;position:relative;z-index:1}.rsvp-actions{display:flex;gap:10px;justify-content:center;margin-top:25px;position:relative;z-index:1}.rsvp-actions button,.rsvp-actions a{display:inline-block;box-sizing:border-box;border:1px solid #e5d5aa;padding:12px 17px;color:#fff;background:transparent;font-size:13px;text-align:center;text-decoration:none;font-family:inherit}.rsvp-actions .yes,.rsvp-actions button:hover,.rsvp-actions .selected{background:#d0be8e;color:#476456;border-color:#d0be8e}.rsvp-status{min-height:20px;margin:18px 0 0!important;color:#fff!important}footer{background:#506c5c;color:#eee7d6;text-align:center;padding:23px;font:14px var(--serif);letter-spacing:.06em}.admin-header{position:relative;background:var(--pine)}.admin-pill{color:#e6d5aa;border:1px solid #a4b09c;border-radius:20px;padding:6px 12px;font-size:10px;text-transform:uppercase;letter-spacing:.12em}.dashboard{max-width:1200px;margin:auto;padding:62px 30px 80px}.dashboard-title{display:flex;justify-content:space-between;align-items:end;margin-bottom:35px}.dashboard h1{font:500 48px/.9 var(--serif);margin:10px 0}.dashboard-title p{color:#74847b;font-size:14px;margin:0}.primary{background:var(--pine);border:0;color:white;padding:14px 21px;font-size:12px;font-weight:700}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:36px}.metrics-subheading{font:600 13px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:#5d7567;margin:0 0 14px}.metrics.type-metrics{grid-template-columns:repeat(2,1fr)}.metrics article{background:var(--paper);padding:24px;border:1px solid #e3ddd1}.metrics span,.metrics small{font-size:11px;color:#7b8981;display:block}.metrics strong{font:500 45px/.9 var(--serif);display:block;margin:9px 0}.guest-table-wrap{background:var(--paper);border:1px solid #e3ddd1}.table-header{display:flex;justify-content:space-between;align-items:center;padding:25px 27px;border-bottom:1px solid #e3ddd1}.table-header h2{font:500 28px var(--serif);margin:0}.table-header p{margin:3px 0 0;font-size:12px;color:#74847b}.filters button{border:0;background:transparent;color:#687b70;font-size:11px;margin-left:13px;padding:7px}.filters .active{background:#e6ebe0;color:var(--pine)}.guest-table{width:100%}.table-row{display:grid;grid-template-columns:1.6fr 1.4fr .55fr 1fr 1fr 96px;align-items:center;gap:7px;padding:15px 27px;border-bottom:1px solid #eeeae1;font-size:12px;color:#526b5e}.row-actions{display:flex;gap:4px;justify-content:flex-end}.table-row:last-child{border:0}.table-head{font-size:9px;letter-spacing:.12em;color:#8b958f;font-weight:700}.guest-name{display:flex;align-items:center;gap:10px;color:#466555;cursor:pointer}.guest-name:hover b{text-decoration:underline}.guest-name>span{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#e5eadf;color:#708175;font:17px var(--serif)}.type-dot{display:inline-block;width:7px;height:7px;background:#c6ac76;border-radius:50%;margin-right:7px}.type-dot.iglesia-sola{background:#7d8fae}.open-state{color:#909992}.was-opened{color:#72907c}.status{display:inline-block;width:7px;height:7px;border-radius:50%;background:#cbb574;margin-right:7px}.status.confirmado{background:#7ea28a}.status.no-asistirá{background:#bd8079}.more{border:0;background:transparent;color:#5c7a69;font-size:19px}.share-box{background:#e6ebe0;margin-top:25px;padding:27px 31px;display:flex;align-items:center;justify-content:space-between}.share-box>div{display:grid;grid-template-columns:34px 1fr;column-gap:12px}.share-box span{grid-row:span 2;font-size:26px;color:var(--wine)}.share-box h3{margin:0;font:600 24px var(--serif)}.share-box p{margin:3px 0;color:#6b7e73;font-size:12px}.secondary{border:1px solid #789080;background:transparent;color:var(--pine);padding:12px 17px;font-size:11px;font-weight:700}.modal-overlay{display:none;position:fixed;z-index:30;inset:0;background:rgba(60,82,69,.65);place-items:center;padding:20px}.modal-overlay.show{display:grid}.modal-card{max-width:470px;width:100%;padding:40px;background:#fffdf8;position:relative}.modal-card h2{font:500 34px var(--serif);margin:10px 0 27px}.close-modal{position:absolute;right:18px;top:14px;border:0;background:none;color:#718178;font-size:25px}.modal-card label{display:block;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#5d7567;margin:15px 0}.modal-card input,.modal-card select{display:block;width:100%;border:1px solid #d8d5c9;background:white;padding:12px;margin-top:7px;color:#496758}.modal-card .primary{width:100%;margin-top:10px}
@media(max-width:800px){.site-header{padding:0 23px}.admin-link{font-size:0}.admin-link span{font-size:18px}.invite-stage{min-height:680px;align-items:end}.intro-copy{left:0;top:105px;width:100%;text-align:center}.intro-copy h1{font-size:54px}.intro-copy p{margin:auto}.envelope-scene{transform:scale(.76);transform-origin:bottom center;margin:0 0 -10px;left:0}.details{padding:75px 22px}.details h2{font-size:40px;margin-bottom:38px}.details-grid{grid-template-columns:1fr}.details-grid article+article{border-left:0;border-top:1px solid #ded5c6}.rsvp-card{padding:37px 20px}.rsvp-card h3{font-size:38px}.dashboard{padding:40px 16px}.dashboard-title{align-items:start;gap:20px}.dashboard h1{font-size:40px}.dashboard-title .primary{white-space:nowrap;padding:12px}.metrics{grid-template-columns:1fr 1fr}.metrics.type-metrics{grid-template-columns:1fr}.metrics article{padding:17px}.metrics strong{font-size:35px}.table-header{padding:20px;display:block}.filters{margin-top:16px}.filters button:first-child{margin-left:0}.guest-table-wrap{overflow-x:auto}.guest-table{min-width:800px}.table-row{padding:15px 20px}.share-box{padding:23px;display:block}.share-box .secondary{margin-top:18px;width:100%}}

/* Handcrafted envelope art direction */
.invite-stage{min-height:760px;background:radial-gradient(circle at 70% 19%,#839988 0,rgba(131,153,136,.25) 20%,transparent 42%),linear-gradient(128deg,#173a34 0%,#31584d 47%,#78917a 130%)}
.invite-stage:before{background:linear-gradient(105deg,rgba(4,30,26,.34),transparent 55%),url('./assets/cotton-paper-texture.jpg');background-size:auto,560px;mix-blend-mode:soft-light;opacity:.34}
.invite-stage:after{width:760px;height:760px;right:-345px;top:-350px;border-color:rgba(243,234,210,.22);box-shadow:0 0 0 42px rgba(243,234,210,.035),0 0 0 84px rgba(243,234,210,.02)}
.botanical{font-size:300px;color:#d8d7b6;opacity:.1;filter:blur(.2px)}
.botanical-left{left:-66px;bottom:-108px}.botanical-right{right:-68px;top:5px}
.intro-copy{left:7vw;top:182px;text-shadow:0 2px 16px rgba(13,35,30,.25)}
.intro-copy h1{font-size:74px;letter-spacing:0}.intro-copy p{color:#f2f0e8}
.envelope-scene{width:520px;height:410px;margin:125px 0 0 245px;perspective:1700px;filter:drop-shadow(0 30px 26px rgba(10,34,29,.24))}
.envelope-shadow{position:absolute;z-index:0;left:7%;right:7%;bottom:0;height:55px;border-radius:50%;background:rgba(10,34,29,.42);filter:blur(18px);transform:scaleY(.45)}
.envelope{width:100%;height:300px;bottom:10px;border-radius:3px;overflow:hidden}
.envelope.back{z-index:1;background:linear-gradient(115deg,rgba(126,86,58,.1),transparent 38%),url('./assets/cotton-paper-texture.jpg') center/520px,linear-gradient(135deg,#e6d0af,#c79d70);box-shadow:inset 0 1px rgba(255,255,255,.65),inset 0 -7px 16px rgba(102,68,42,.18),0 14px 22px rgba(21,40,33,.18)}
.envelope.back:after{content:'';position:absolute;inset:0;background:linear-gradient(45deg,rgba(255,250,234,.18),transparent 48%,rgba(117,76,51,.14));mix-blend-mode:multiply}
.envelope-liner{position:absolute;z-index:1;inset:13px 14px 62px;clip-path:polygon(0 0,100% 0,50% 67%);background:linear-gradient(135deg,rgba(61,92,77,.93),rgba(105,131,103,.9)),url('./assets/cotton-paper-texture.jpg');background-blend-mode:multiply;border:1px solid rgba(255,249,230,.45);box-shadow:inset 0 -15px 30px rgba(20,53,43,.24)}
.envelope-liner:after{content:'J  ·  T';position:absolute;left:0;right:0;top:30px;text-align:center;color:rgba(247,238,216,.68);font:16px var(--serif);letter-spacing:.52em}
.letter{z-index:3;left:40px;bottom:36px;width:440px;height:294px;padding:30px 45px;background:linear-gradient(rgba(255,253,247,.72),rgba(255,253,247,.82)),url('./assets/cotton-paper-texture.jpg') center/620px;color:#385c4d;border-radius:2px;box-shadow:0 3px 8px rgba(63,41,29,.14),0 12px 18px rgba(35,52,43,.18);transition:transform 1.25s .3s cubic-bezier(.16,.91,.32,1),height .45s 1.25s,box-shadow .7s .45s}
.letter:before{inset:10px;border-color:rgba(145,118,81,.3)}
.letter:after{content:'';position:absolute;top:20px;left:50%;height:2px;width:52px;transform:translateX(-50%);background:linear-gradient(90deg,transparent,#aa8d62,transparent)}
.letter-sprig{color:#a06962;font-size:36px;margin:3px 0 0}.letter h2{font-size:43px}.date-block{margin-top:16px}.letter-message{font-size:14px}
.envelope.front{z-index:6;bottom:10px;overflow:visible;clip-path:polygon(0 0,50% 48%,100% 0,100% 100%,0 100%);background:linear-gradient(90deg,rgba(227,202,163,.86),rgba(247,232,204,.78) 49%,rgba(209,172,128,.88)),url('./assets/cotton-paper-texture.jpg') center/560px;box-shadow:inset 0 1px rgba(255,255,255,.55)}
.envelope.front:after{content:'';position:absolute;inset:0;background:linear-gradient(108deg,rgba(113,75,51,.12),transparent 26% 70%,rgba(255,255,255,.22));mix-blend-mode:multiply}
.fold{position:absolute;inset:0;pointer-events:none}.fold-left{clip-path:polygon(0 0,50% 48%,0 100%);background:linear-gradient(130deg,rgba(246,226,195,.55),rgba(164,112,74,.16));border-right:1px solid rgba(110,72,48,.16)}
.fold-right{clip-path:polygon(100% 0,50% 48%,100% 100%);background:linear-gradient(230deg,rgba(247,229,201,.58),rgba(154,101,67,.18));border-left:1px solid rgba(110,72,48,.13)}
.fold-bottom{clip-path:polygon(0 100%,50% 48%,100% 100%);background:linear-gradient(0deg,rgba(197,151,107,.22),rgba(255,244,218,.14));box-shadow:inset 0 18px 28px rgba(123,76,48,.12)}
.envelope-flap{z-index:8;top:100px;width:100%;height:230px;background:linear-gradient(180deg,rgba(248,230,199,.96),rgba(211,174,130,.97)),url('./assets/cotton-paper-texture.jpg') center/560px;clip-path:polygon(0 0,100% 0,50% 84%);transform-origin:top center;box-shadow:inset 0 1px rgba(255,255,255,.68),0 3px 5px rgba(84,52,32,.12)}
.envelope-flap:after{content:'';position:absolute;inset:5px 8px 24px;clip-path:polygon(0 0,100% 0,50% 84%);border-bottom:1px solid rgba(126,83,56,.22);filter:drop-shadow(0 1px rgba(255,255,255,.35))}
.flap-liner{position:absolute;inset:17px 24px 37px;clip-path:polygon(0 0,100% 0,50% 82%);background:linear-gradient(135deg,rgba(49,83,69,.88),rgba(108,134,105,.82)),url('./assets/cotton-paper-texture.jpg');background-blend-mode:multiply;opacity:.9;box-shadow:inset 0 0 0 1px rgba(246,238,218,.36)}
.wax-seal{z-index:10;bottom:104px;width:80px;height:80px;border:0;background:radial-gradient(circle at 31% 25%,#da9a88 0 8%,#b66961 22%,#8d474c 68%,#643640 100%);box-shadow:inset 2px 2px 3px rgba(255,218,196,.45),inset -4px -4px 7px rgba(76,30,40,.42),0 7px 10px rgba(59,32,34,.48);isolation:isolate}
.wax-seal:before{content:'';position:absolute;inset:5px;border-radius:50%;border:1px dashed rgba(247,203,182,.45);box-shadow:inset 0 0 0 2px rgba(95,44,51,.18)}
.wax-seal span{font-size:27px;color:#f2c6b2;text-shadow:0 1px #713c47;z-index:1}.wax-seal i{z-index:1;color:#f0c5b0}.seal-caption{z-index:11;bottom:68px;text-shadow:0 1px 6px rgba(15,35,29,.55)}
.is-open .letter{transform:translateY(-228px) rotate(-.55deg);height:465px;z-index:12;box-shadow:0 26px 44px rgba(17,39,32,.36)}
.is-open .envelope-flap{animation:unfold-flap 1.05s cubic-bezier(.43,.03,.32,1) forwards}
@media(max-width:800px){.invite-stage{min-height:700px}.envelope-scene{width:520px;height:410px;transform:scale(.68);transform-origin:bottom center;margin:0 0 -18px}.letter{left:40px;width:440px}.intro-copy h1{font-size:54px}}

/* Opening sequence: wax yields, flap lifts, then the letter rises into view. */
.envelope-scene:before{content:'';position:absolute;z-index:13;left:50%;top:48px;width:235px;height:235px;border:1px solid rgba(247,237,207,.26);border-radius:50%;transform:translateX(-50%) scale(.84);opacity:0;pointer-events:none}
.is-opening .wax-seal{animation:seal-release .36s cubic-bezier(.25,.76,.39,1) both}
.is-opening .wax-seal:after{content:'';position:absolute;inset:18px;border-radius:50%;background:conic-gradient(from 28deg,transparent 0 12%,rgba(246,202,182,.8) 12.5% 14%,transparent 14.5% 38%,rgba(246,202,182,.78) 38.5% 40%,transparent 40.5% 69%,rgba(246,202,182,.75) 69.5% 71%,transparent 71.5%);mix-blend-mode:screen;opacity:0;animation:seal-crack .2s .14s both}
.is-opening .seal-caption{opacity:0;transform:translateX(-50%) translateY(5px);transition:opacity .18s,transform .18s}
.is-open.envelope-scene:before{animation:open-halo .9s .04s ease-out both}
.is-open .letter>*{animation:letter-reveal .52s 1.18s cubic-bezier(.19,.89,.25,1) both}
.is-open .letter .letter-sprig{animation-delay:1.08s}.is-open .letter h2{animation-delay:1.21s}.is-open .letter .script{animation-delay:1.28s}.is-open .letter .date-block{animation-delay:1.35s}.is-open .letter .letter-rule{animation-delay:1.4s}.is-open .letter .letter-message{animation-delay:1.47s}.is-open .letter .read-button{animation-delay:1.54s}
.is-open .envelope.front{animation:front-settle .68s .1s cubic-bezier(.18,.75,.28,1) both}
@keyframes seal-release{0%{transform:translateX(-50%) rotate(0) scale(1)}28%{transform:translateX(-50%) rotate(-7deg) scale(1.06)}56%{transform:translateX(-50%) rotate(8deg) scale(.96)}100%{transform:translateX(-50%) rotate(0) scale(.78);opacity:0}}
@keyframes seal-crack{to{opacity:1;transform:scale(1.35)}}
@keyframes open-halo{0%{opacity:.72;transform:translateX(-50%) scale(.32)}100%{opacity:0;transform:translateX(-50%) scale(1.24)}}
@keyframes letter-reveal{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@keyframes front-settle{0%{filter:brightness(1.1)}65%{filter:brightness(.97)}100%{filter:brightness(1)}}
@keyframes unfold-flap{0%{transform:rotateX(0) translateY(0);opacity:1}25%{transform:rotateX(-18deg) translateY(-2px);opacity:1}100%{transform:rotateX(-172deg) translateY(-5px);opacity:0}}
.dashboard-actions{display:flex;gap:10px;align-items:center}.modal-card textarea{display:block;width:100%;resize:vertical;border:1px solid #d8d5c9;background:white;padding:12px;margin-top:7px;color:#496758;font:inherit;line-height:1.4}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.event-modal{max-width:620px}.event-modal h2{margin-bottom:16px}.event-modal .primary{margin-top:22px}
@media(max-width:800px){.dashboard-actions{gap:7px;flex-direction:column;align-items:stretch}.dashboard-actions .secondary,.dashboard-actions .primary{width:100%}.settings-grid{grid-template-columns:1fr}.event-modal{padding:34px 24px}}
@media(prefers-reduced-motion:reduce){.envelope-scene *, .envelope-scene:before{animation-duration:.01ms!important;animation-delay:0ms!important;transition-duration:.01ms!important}}

/* Closed envelope state and the refined three-act opening. */
.brand-mark{width:42px;height:42px;font:600 16px/1 var(--serif);letter-spacing:-.08em}
.letter{bottom:10px}
.flap-liner{opacity:0}
.envelope-flap{background:linear-gradient(180deg,rgba(250,234,205,.98),rgba(215,179,135,.98)),url('./assets/cotton-paper-texture.jpg') center/560px}
.envelope-flap:after{inset:7px 10px 25px;border-bottom-color:rgba(126,83,56,.28)}
.envelope-scene:after{content:'✦\00a0\00a0 · \00a0\00a0 ✧';position:absolute;z-index:14;left:50%;top:74px;transform:translate(-50%,16px) scale(.86);color:#f8eccd;font:18px var(--serif);letter-spacing:1.2em;white-space:nowrap;opacity:0;pointer-events:none;text-shadow:0 1px 8px rgba(255,240,190,.45)}
.is-flap-opening.envelope-scene:before{animation:open-halo .95s ease-out both}
.is-flap-opening.envelope-scene:after{animation:paper-motes 1.1s .08s ease-out both}
.is-flap-opening .envelope-flap{animation:flap-uncurl .94s cubic-bezier(.18,.77,.23,1) forwards}
.is-letter-rising .letter,.is-open .letter{transform:translateY(-258px) rotate(-1.05deg);height:485px;z-index:12;box-shadow:0 30px 48px rgba(17,39,32,.4)}
.is-letter-rising .letter>*{animation:letter-reveal .5s cubic-bezier(.19,.89,.25,1) both}
.is-letter-rising .letter .letter-sprig{animation-delay:.12s}.is-letter-rising .letter h2{animation-delay:.2s}.is-letter-rising .letter .script{animation-delay:.28s}.is-letter-rising .letter .date-block{animation-delay:.36s}.is-letter-rising .letter .letter-rule{animation-delay:.43s}.is-letter-rising .letter .letter-message{animation-delay:.5s}.is-letter-rising .letter .read-button{animation-delay:.57s}
.is-open .envelope-flap{animation:none;opacity:0;transform:rotateX(-172deg) translateY(-5px)}
.is-open .letter>*{animation:none}
@keyframes flap-uncurl{0%{transform:rotateX(0) translateY(0);opacity:1;filter:brightness(1)}18%{transform:rotateX(-10deg) translateY(-3px);opacity:1;filter:brightness(1.08)}58%{transform:rotateX(-82deg) translateY(-5px);opacity:.94}100%{transform:rotateX(-172deg) translateY(-5px);opacity:0}}
@keyframes paper-motes{0%{opacity:0;transform:translate(-50%,16px) scale(.86)}28%{opacity:.95}100%{opacity:0;transform:translate(-50%,-24px) scale(1.12)}}

/* The invitation reveal below the envelope. */
.details{position:relative;isolation:isolate;overflow:hidden;padding:132px 7vw 112px;background:radial-gradient(circle at 12% 22%,rgba(194,210,185,.34),transparent 25%),radial-gradient(circle at 92% 72%,rgba(218,190,147,.2),transparent 24%),linear-gradient(rgba(255,253,247,.88),rgba(255,253,247,.88)),url('./assets/cotton-paper-texture.jpg') center/680px}
.details:before{content:'';position:absolute;z-index:-1;width:720px;height:720px;border:1px solid rgba(95,123,102,.15);border-radius:50%;right:-410px;top:-220px;box-shadow:0 0 0 35px rgba(95,123,102,.03),0 0 0 70px rgba(95,123,102,.025)}
.details:after{content:'';position:absolute;z-index:-1;left:-160px;bottom:-245px;width:480px;height:480px;border-radius:50%;background:radial-gradient(circle,rgba(183,151,108,.11),transparent 69%)}
.details-bloom{position:absolute;z-index:-1;color:rgba(68,103,86,.12);font:260px var(--serif);line-height:1;animation:botanical-drift 8s ease-in-out infinite alternate}.bloom-one{left:-48px;top:110px;transform:rotate(25deg)}.bloom-two{right:3vw;bottom:65px;font-size:190px;color:rgba(172,113,103,.1);animation-delay:-4s}
.details-hero{max-width:780px;margin:0 auto 76px;text-align:center;position:relative}.details-hero .eyebrow{color:#a48a5c}.details-monogram{width:66px;height:66px;margin:22px auto 18px;border:1px solid rgba(129,104,72,.5);border-radius:50%;display:grid;place-items:center;color:#426755;font:600 23px var(--serif);letter-spacing:-.12em;box-shadow:0 0 0 5px rgba(255,253,247,.76),0 0 0 6px rgba(129,104,72,.22)}
.details-pretitle{max-width:600px;margin:0 auto 10px;color:#927763;font:italic 26px/1.45 var(--serif);letter-spacing:.02em}.details-hero h2{font:500 clamp(58px,6.5vw,88px)/.77 var(--serif);letter-spacing:-.045em;margin:15px auto 25px;color:#315749}.details-hero h2 em{font-family:var(--script);font-style:normal;font-size:1.06em;color:#a56e68;letter-spacing:0}.details-date{display:flex;flex-direction:column;align-items:center;gap:9px;margin:26px auto 20px;color:#456555}.details-date-row{display:flex;align-items:center;justify-content:center;gap:17px}.details-date-row:before,.details-date-row:after{content:'';width:62px;height:1px;background:linear-gradient(90deg,transparent,#c6ab7a)}.details-date-row:after{transform:scaleX(-1)}.details-date span{font-size:12px;font-weight:700;line-height:1.45;letter-spacing:.17em;text-align:left}.details-date strong{font:500 74px/.7 var(--serif);color:#a26c67}.details-date-year{display:block;font-style:normal;font-size:15px;font-weight:700;letter-spacing:.17em;color:#456555}.details-intro{max-width:460px;margin:18px auto 0;color:#6b7c70;font:23px/1.45 var(--serif)}
.details-grid{position:relative;z-index:1;max-width:1060px;border:0;gap:18px;grid-template-columns:minmax(0,420px);justify-content:center;align-items:stretch}.details-grid article,.details-grid article+article{border:1px solid rgba(165,142,104,.28)}.detail-card{min-height:305px;padding:35px 28px 31px!important;background:linear-gradient(145deg,rgba(255,255,255,.61),rgba(240,237,224,.76));box-shadow:0 12px 24px rgba(77,83,63,.055);transition:transform .4s ease,box-shadow .4s ease,border-color .4s ease}.detail-card:hover{transform:translateY(-8px);border-color:rgba(160,106,99,.5);box-shadow:0 20px 35px rgba(77,83,63,.13)}.detail-number{display:block;color:#b39463;font:italic 14px var(--serif);letter-spacing:.14em}.detail-icon{display:block;margin:14px 0 8px;font-size:36px;color:#a36d66}.detail-label{margin:0!important;color:#a28a67;font-size:11px!important;font-weight:700;letter-spacing:.16em;text-transform:uppercase}.details-grid h3{font:500 33px var(--serif);letter-spacing:-.025em;margin:6px 0 4px;color:#355a4b}.details-grid p{color:#567063}.details-grid .detail-time{margin:9px 0 8px;font:italic 21px var(--serif);color:#a26d68}.details-grid a{position:relative;margin-top:18px!important;padding-bottom:4px;font-size:10px!important;letter-spacing:.08em;text-transform:uppercase;color:#9c645f}.details-grid a:after{content:'';position:absolute;left:0;bottom:0;width:100%;height:1px;background:currentColor;transform:scaleX(.38);transform-origin:left;transition:transform .3s}.details-grid a:hover:after{transform:scaleX(1)}.details-grid a b{font-size:14px;margin-left:3px}.guest-card{background:linear-gradient(155deg,rgba(238,243,232,.9),rgba(249,246,235,.86));display:flex;flex-direction:column;justify-content:center}.guest-seats{margin:8px 0!important;font:21px var(--serif)}.guest-seats b{font-size:32px;color:#a26d68}.tag{background:#dfe7da;color:#55715d;padding:7px 11px;margin-top:13px}
.notice{position:relative;max-width:680px;margin:32px auto 74px;padding:20px 52px;background:rgba(230,232,219,.7);border-left:1px solid #c7ad7d;border-right:1px solid #c7ad7d;font:18px/1.45 var(--serif);color:#66796e}.notice:before,.notice:after{content:'✦';position:absolute;top:50%;transform:translateY(-50%);color:#b48c72;font-size:12px}.notice:before{left:22px}.notice:after{right:22px}
.rsvp-card{max-width:650px;padding:58px 48px;background:linear-gradient(135deg,#315c4e,#557460);box-shadow:0 24px 45px rgba(48,79,63,.22)}.rsvp-card:before{content:'';position:absolute;inset:12px;border:1px solid rgba(238,219,178,.38);pointer-events:none}.rsvp-card .eyebrow{position:relative;z-index:1;color:#dec88e}.rsvp-card h3{font-size:46px;position:relative;z-index:1}.rsvp-card>p{font:17px var(--serif)}.rsvp-actions button,.rsvp-actions a{transition:transform .25s,background .25s,color .25s}.rsvp-actions button:hover,.rsvp-actions a:hover{transform:translateY(-3px)}
.reveal{opacity:0;transform:translateY(26px);transition:opacity .85s cubic-bezier(.2,.75,.25,1),transform .85s cubic-bezier(.2,.75,.25,1)}.reveal.is-visible{opacity:1;transform:translateY(0)}.reveal-delay{transition-delay:.13s}.reveal-delay-two{transition-delay:.26s}@keyframes botanical-drift{from{translate:0 0;rotate:-2deg}to{translate:12px -18px;rotate:3deg}}
@media(max-width:800px){.details{padding:92px 22px 78px}.details-hero{margin-bottom:46px}.details-hero h2{font-size:60px}.details-date-row:before,.details-date-row:after{width:30px}.details-grid{gap:12px}.detail-card{min-height:0;padding:30px 20px!important}.notice{padding:19px 42px;margin-bottom:55px}.rsvp-card{padding:45px 22px}.rsvp-card h3{font-size:43px}.details-bloom{font-size:190px}}

/* Ceremony, optional dinner and dress-code chapters. */
.celebration-note{max-width:950px;margin:62px auto 112px;padding:57px 70px 48px;text-align:center;position:relative;background:linear-gradient(128deg,rgba(245,239,221,.93),rgba(229,239,228,.9));border-top:1px solid rgba(167,130,85,.47);border-bottom:1px solid rgba(167,130,85,.47);box-shadow:0 22px 46px rgba(81,90,67,.09)}
.celebration-note:before,.celebration-note:after{content:'';position:absolute;width:42px;height:42px;border-color:#b48d66;border-style:solid;opacity:.65}.celebration-note:before{top:13px;left:13px;border-width:1px 0 0 1px}.celebration-note:after{right:13px;bottom:13px;border-width:0 1px 1px 0}.celebration-seal{width:44px;height:44px;margin:-79px auto 18px;border-radius:50%;display:grid;place-items:center;background:#a36d66;color:#f6e7ce;font:600 17px var(--serif);letter-spacing:-.12em;border:4px solid #f5efdf;box-shadow:0 2px 8px rgba(103,67,63,.3)}.celebration-note .eyebrow{color:#a38356}.celebration-note h3{margin:11px 0 13px;color:#365b4d;font:500 58px/.86 var(--serif);letter-spacing:-.03em}.celebration-note h3 em,.attire-intro h3 em{color:#a16b66;font:normal 1.12em var(--script);letter-spacing:0}.celebration-note>p{max-width:650px;margin:0 auto;color:#62786b;font:24px/1.5 var(--serif)}.celebration-options{display:grid;grid-template-columns:1fr 1fr;gap:0;max-width:720px;margin:33px auto 23px;border-top:1px solid rgba(157,136,101,.34);border-bottom:1px solid rgba(157,136,101,.34)}.celebration-options article{padding:22px 28px}.celebration-options article+article{border-left:1px solid rgba(157,136,101,.34)}.celebration-options span{display:block;color:#aa716b;font-size:18px}.celebration-options h4{margin:7px 0 5px;color:#3d614f;font:500 27px var(--serif)}.celebration-options p{margin:0;color:#667c6e;font:15px/1.45 var(--serif)}.celebration-note .celebration-closing{color:#9a7665;font-style:italic}
.attire-section{max-width:1120px;margin:0 auto 104px}.attire-intro{text-align:center;max-width:580px;margin:0 auto 42px}.attire-intro .eyebrow{color:#a38356}.attire-intro h3{margin:13px 0 9px;color:#365b4d;font:500 56px/.82 var(--serif);letter-spacing:-.035em}.attire-intro p{margin:0;color:#6e8175;font:20px var(--serif)}.attire-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.attire-card{background:rgba(255,253,247,.74);border:1px solid rgba(165,137,101,.3);box-shadow:0 16px 34px rgba(72,82,62,.08);overflow:hidden;transition:transform .4s ease,box-shadow .4s ease}.attire-card:hover{transform:translateY(-7px);box-shadow:0 25px 40px rgba(72,82,62,.14)}.attire-copy{position:relative;padding:28px 30px 22px;background:linear-gradient(105deg,rgba(236,242,231,.76),rgba(255,250,239,.88))}.attire-men .attire-copy{background:linear-gradient(105deg,rgba(239,233,217,.82),rgba(243,248,239,.88))}.attire-index{position:absolute;right:26px;top:26px;color:#bc9e73;font:italic 19px var(--serif);letter-spacing:.12em}.attire-copy h4{margin:5px 0;color:#365b4d;font:500 37px var(--serif)}.attire-copy p{min-height:50px;max-width:400px;margin:0;color:#5f7568;font:18px/1.4 var(--serif)}.attire-copy>span:last-child{display:block;margin-top:13px;color:#9f7067;font-size:12px;font-weight:700;letter-spacing:.09em;text-transform:uppercase}.attire-card figure{height:285px;margin:0;overflow:hidden;background:#e8dfce}.attire-card img{width:100%;height:100%;display:block;object-fit:cover;object-position:center 31%;transition:transform .7s cubic-bezier(.2,.75,.25,1)}.attire-card:hover img{transform:scale(1.045)}
@media(max-width:800px){.celebration-note{margin:48px auto 74px;padding:44px 24px 35px}.celebration-note h3{font-size:39px}.celebration-options{grid-template-columns:1fr;margin-top:27px}.celebration-options article{padding:19px 12px}.celebration-options article+article{border-left:0;border-top:1px solid rgba(157,136,101,.34)}.attire-section{margin-bottom:76px}.attire-intro h3{font-size:44px}.attire-grid{grid-template-columns:1fr}.attire-card figure{height:265px}.attire-copy p{min-height:0}}

/* Botanical hero envelope: transparent watercolor layers blend into the page background. */
.invite-stage{min-height:860px}.envelope-scene{width:660px;height:630px;margin:92px 0 0 285px;filter:drop-shadow(0 30px 28px rgba(8,28,23,.3))}.envelope-shadow{display:none}.envelope-art,.envelope-art-open{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center;will-change:transform,opacity,filter;pointer-events:none}.envelope-art{z-index:9;filter:saturate(.94) contrast(.99)}.envelope-art-open{z-index:10;opacity:0;transform:translateY(14px) scale(.965);filter:saturate(.94) contrast(.99)}.envelope,.envelope-flap{visibility:hidden}.envelope-scene .letter{opacity:0;visibility:hidden;pointer-events:none}.wax-seal{z-index:15;top:calc(50.5% - 51px);bottom:auto;width:102px;height:102px;background:radial-gradient(circle at 31% 25%,#5d846b 0 8%,#315b48 23%,#173b31 69%,#0d2921 100%);box-shadow:inset 2px 2px 3px rgba(203,224,193,.45),inset -4px -4px 7px rgba(8,37,29,.5),0 7px 10px rgba(7,28,23,.48)}.wax-seal:before{border-color:rgba(216,230,196,.46);box-shadow:inset 0 0 0 2px rgba(10,46,35,.25)}.wax-seal span{color:#dfe8cc;text-shadow:0 1px #173b31}.wax-seal i{color:#dfe8cc}.seal-caption{z-index:16;top:calc(50.5% + 69px);bottom:auto;color:#f5eedb}.is-flap-opening .envelope-art{animation:botanical-closed-release .62s cubic-bezier(.21,.75,.31,1) forwards}.is-flap-opening .envelope-art-open{animation:botanical-flap-lift 1.08s .1s cubic-bezier(.18,.8,.22,1) forwards}.is-open .envelope-art,.is-open .envelope-art-open{animation:botanical-open-fade .4s ease forwards;pointer-events:none}.is-letter-rising .letter,.is-open .letter{z-index:17;opacity:1;visibility:visible;pointer-events:auto;transition:transform 1.25s .3s cubic-bezier(.16,.91,.32,1),height .45s 1.25s,box-shadow .7s .45s,opacity .34s .24s}.date-block .date-day{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}.date-block .date-day strong{display:block}.date-block .date-day em{font:600 15px/.8 var(--serif);font-style:normal;letter-spacing:.18em;color:#426453}.is-flap-opening.envelope-scene:before,.is-flap-opening.envelope-scene:after{z-index:18}@keyframes botanical-closed-release{0%{opacity:1;transform:scale(1)}30%{opacity:1;transform:scale(.985) translateY(3px)}100%{opacity:0;transform:scale(.94) translateY(20px);filter:brightness(1.08) blur(.4px)}}@keyframes botanical-flap-lift{0%{opacity:0;transform:translateY(14px) scale(.965);filter:brightness(1.08) blur(.8px)}35%{opacity:1;transform:translateY(-5px) scale(1.01);filter:brightness(1.04)}100%{opacity:1;transform:translateY(0) scale(1);filter:saturate(.94) contrast(.99)}}@keyframes botanical-open-fade{from{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(18px) scale(.97);filter:blur(1px)}}
@media(max-width:800px){.invite-stage{min-height:735px}.envelope-scene{width:600px;height:570px;transform:scale(.78);transform-origin:bottom center;margin:0 0 -6px}.wax-seal{top:calc(55% - 40px)}}

/* Open-letter editorial treatment. */
.letter{padding:17px 42px 25px}.letter-floral{height:132px;margin:-17px -57px -43px;overflow:hidden;position:relative;z-index:2;pointer-events:none}.letter-floral img{display:block;width:100%;height:210px;object-fit:cover;object-position:50% top}.letter-announcement{position:relative;z-index:3;margin:0 auto 2px;text-align:center;color:#2f4a3d;font:400 36px/1 var(--script);letter-spacing:0;transform:rotate(-2deg);-webkit-text-stroke:5px rgba(255,253,247,.95);paint-order:stroke fill;text-shadow:-2px -2px 0 #fffdf7,2px -2px 0 #fffdf7,-2px 2px 0 #fffdf7,2px 2px 0 #fffdf7,0 0 14px rgba(255,253,247,.9)}.letter-sprig{display:none}.letter .eyebrow{display:block;margin:20px 0 5px;color:#a2835c;font-size:15px}
.letter .date-block{font-size:14px}.letter h2{margin:16px 0 16px;font-size:50px;letter-spacing:-.045em}.letter .script{margin:0;font-size:26px;line-height:1;color:#567263}.letter .date-block{margin:16px auto 10px}.letter .letter-message{margin:10px 0 9px;font-size:21px}.is-letter-rising .letter,.is-open .letter{height:540px}.is-letter-rising .letter .letter-floral,.is-letter-rising .letter .letter-announcement{animation:letter-reveal .5s cubic-bezier(.19,.89,.25,1) both}.is-letter-rising .letter .letter-announcement{animation-delay:.08s}@media(max-width:800px){.letter-floral{height:126px}.letter h2{font-size:52px}.is-letter-rising .letter,.is-open .letter{height:535px}}

/* Editorial invitation body, inspired by classic printed stationery. */
.story-itinerary{position:relative;max-width:510px;margin:0 auto 72px;padding:112px 48px 42px;text-align:center;background:rgba(255,253,247,.76);border:1px solid rgba(174,145,101,.34);box-shadow:0 20px 42px rgba(78,79,56,.09)}.story-itinerary:before,.story-itinerary:after{content:'';position:absolute;inset:10px;border:1px solid rgba(187,155,101,.13);pointer-events:none}.story-itinerary:after{inset:auto 50% 20px;width:52px;height:2px;transform:translateX(-50%);background:linear-gradient(90deg,transparent,#b89862,transparent);border:0}.itinerary-floral{position:absolute;top:-44px;left:50%;width:455px;height:150px;transform:translateX(-50%);object-fit:cover;object-position:50% top;pointer-events:none}.story-itinerary>.eyebrow{position:relative;color:#a88b5e}.itinerary-event{position:relative;margin-top:22px;color:#3e5e50}.rings-icon{width:51px;height:34px;margin:0 auto 14px;position:relative}.rings-icon i{position:absolute;top:6px;width:30px;height:30px;border:3px solid #c5a35e;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(255,249,215,.8)}.rings-icon i:first-child{left:3px;transform:rotate(-22deg)}.rings-icon i:last-child{right:3px;transform:rotate(22deg)}.itinerary-time{margin:0 0 5px;color:#344d43;font:500 23px/1 var(--serif);letter-spacing:.14em}.itinerary-event h3{margin:0 0 7px;color:#365d4d;font:600 16px/1 var(--sans);letter-spacing:.28em;text-transform:uppercase}.itinerary-event>p:not(.itinerary-time){margin:0;color:#63766b;font:19px/1.45 var(--serif)}.itinerary-event a{display:inline-block;margin-top:15px;padding:9px 20px 10px;color:#fffdf4;background:#496c58;clip-path:polygon(8px 0,calc(100% - 8px) 0,100% 50%,calc(100% - 8px) 100%,8px 100%,0 50%);font:600 12px var(--sans);letter-spacing:.08em;text-decoration:none;transition:transform .25s,background .25s}.itinerary-event a:hover{background:#345445;transform:translateY(-2px)}.itinerary-divider{position:relative;display:flex;align-items:center;gap:11px;margin:26px 0;color:#c4a05c}.itinerary-divider:before,.itinerary-divider:after{content:'';height:1px;flex:1;background:linear-gradient(90deg,transparent,#d2b577)}.itinerary-divider:after{transform:scaleX(-1)}.itinerary-divider span{font:22px var(--serif);line-height:1}.itinerary-message{margin:0 auto;color:#476455;font:20px/1.35 var(--serif);max-width:365px}.itinerary-message em{color:#b18468;font-size:1.18em}.toast-icon{width:43px;height:43px;margin:0 auto 10px;color:#c6a563;font:40px/.85 var(--serif);transform:rotate(20deg)}@media(max-width:800px){.story-itinerary{margin-bottom:52px;padding:100px 27px 36px}.itinerary-floral{width:390px;height:132px;top:-38px}.itinerary-message{font-size:18px}}

/* Keep the opening sequence fully visible and comfortable on phones. */
body{overflow-x:hidden}.letter-floral{margin:0 -57px -43px}.is-letter-rising .letter,.is-open .letter{transform:translateY(-105px) rotate(0deg)}
@media(max-width:800px){.site-header{height:68px;padding:0 20px}.brand{font-size:20px}.brand-mark{width:33px;height:33px;font-size:28px}.invite-stage{min-height:720px;padding-top:68px;align-items:flex-end}.intro-copy{top:96px;padding:0 24px}.intro-copy h1{font-size:54px}.intro-copy p{font-size:14px;max-width:245px}.envelope-scene{width:480px;height:515px;left:auto;margin:0 0 -8px;transform:scale(.74);transform-origin:bottom center}.letter{left:20px;width:440px}.is-letter-rising .letter,.is-open .letter{height:520px;transform:translateY(-145px) rotate(0deg) scale(1.4)}.letter-floral{height:124px;margin:0 -57px -40px}.letter-floral img{height:195px}.letter h2{font-size:48px}.letter .script{font-size:22px}.letter .letter-message{font-size:18px}.seal-caption{font-size:12px}.details{padding:82px 18px 70px}.details-hero{margin-bottom:56px}.details-hero h2{font-size:50px}.details-grid{margin-left:0;margin-right:0}.story-itinerary{max-width:100%;overflow:hidden}.itinerary-floral{width:390px;max-width:112%;height:128px}.attire-card figure{height:235px}.rsvp-card{max-width:100%}}
@media(max-width:390px){.site-header{padding:0 15px}.brand{font-size:18px}.envelope-scene{transform:scale(.68);margin-bottom:-28px}.intro-copy h1{font-size:46px}.details-hero h2{font-size:46px}.story-itinerary{padding-left:22px;padding-right:22px}}

/* Natural icon illustrations replace the geometric placeholders. */
.rings-icon,.toast-icon{display:grid;place-items:center;overflow:visible;transform:none}.rings-icon{width:78px;height:58px;margin:0 auto 11px}.toast-icon{width:82px;height:68px;margin:0 auto 9px;color:inherit;font-size:initial;line-height:normal}.rings-icon img,.toast-icon img{display:block;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 2px 1px rgba(115,87,33,.12))}.rings-icon i{display:none}@media(max-width:800px){.rings-icon{width:72px;height:53px}.toast-icon{width:76px;height:62px}}

/* Final mobile layout audit: all invitation content stays within one viewport-wide column. */
@media(max-width:800px){html,body{max-width:100%;overflow-x:hidden}.details-grid{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:14px;width:100%;max-width:440px;margin-left:auto;margin-right:auto}.details-grid>article{width:100%;min-width:0;min-height:0}.detail-card{padding:30px 22px 32px!important}.details-grid article+article{border:1px solid rgba(165,142,104,.28)}.details-date{gap:7px;margin:22px auto 18px}.details-date-row{gap:10px}.details-date-row:before,.details-date-row:after{width:24px;flex:0 0 24px}.details-date strong{font-size:64px}.details-date span{font-size:11px;letter-spacing:.13em}.details-date-year{font-size:14px}.details-intro{font-size:22px;padding:0 8px}.story-itinerary{width:100%;margin-left:auto;margin-right:auto}.celebration-note{width:100%;padding-left:22px;padding-right:22px}.celebration-options{width:100%}.attire-section{width:100%;max-width:440px}.attire-grid{grid-template-columns:minmax(0,1fr)!important}.attire-card{min-width:0}.rsvp-card{width:100%;padding:40px 22px}.rsvp-actions{flex-direction:column;align-items:stretch;gap:10px}.rsvp-actions button,.rsvp-actions a{width:100%;min-height:47px;line-height:23px}.rsvp-card h3{font-size:41px}.details-bloom{display:none}footer{padding:19px 18px;font-size:13px}}
@media(max-width:480px){.details{padding:68px 14px 60px}.details-hero h2{font-size:46px;line-height:.82}.details-pretitle{font-size:23px}.details-date{gap:6px}.details-date-row{gap:8px}.details-date-row:before,.details-date-row:after{width:18px;flex-basis:18px}.details-date strong{font-size:58px}.details-date span{font-size:10px;letter-spacing:.1em}.details-date-year{font-size:13px}.story-itinerary{padding:96px 20px 34px}.itinerary-floral{width:370px;max-width:118%;height:123px}.itinerary-message{font-size:18px}.itinerary-event>p:not(.itinerary-time){font-size:18px}.celebration-note h3,.attire-intro h3{font-size:42px}.attire-copy{padding:24px 22px 20px}.attire-card figure{height:225px}.rsvp-card h3{font-size:34px}.rsvp-card>p{font-size:18px}.rsvp-actions button,.rsvp-actions a{font-size:14px}.envelope-scene{margin-left:0;margin-right:0}.site-header .admin-link{padding:10px 0}}

/* Mobile hero: centered copy with a higher, proportionate envelope. */
@media(max-width:800px){.intro-copy h1{font-style:normal;letter-spacing:0;transform:none;text-wrap:balance}.intro-copy p{transform:none}.envelope-scene{margin-bottom:88px}.wax-seal{width:94px;height:94px;top:calc(50.5% - 47px)}.seal-caption{top:calc(50.5% + 63px)}}
@media(max-width:480px){.envelope-scene{margin-bottom:84px}.wax-seal{width:88px;height:88px;top:calc(50.5% - 44px)}.seal-caption{top:calc(50.5% + 59px)}}

/* The mobile envelope lives on the true horizontal center, independently of the desktop composition. */
@media(max-width:800px){.invite-stage{display:block}.invite-stage .envelope-scene{position:absolute;left:50%;right:auto;bottom:88px;margin:0!important;transform:translateX(-50%) scale(.74);transform-origin:bottom center}.invite-stage .letter{left:50%;margin-left:-220px}.intro-copy{left:0;right:0;margin:0 auto;text-align:center}}
@media(max-width:480px){.invite-stage .envelope-scene{bottom:74px;transform:translateX(-50%) scale(.68)}}

/* Reproductor de musica de fondo */
#music-toggle{position:fixed;z-index:60;bottom:20px;right:20px;width:46px;height:46px;border-radius:50%;border:1px solid rgba(255,250,241,.35);background:rgba(35,55,46,.82);color:#fffaf1;font-size:19px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 6px 16px rgba(15,35,29,.32);opacity:0;transform:translateY(8px);pointer-events:none;transition:opacity .4s,transform .4s,background .2s}
#music-toggle.visible{opacity:1;transform:translateY(0);pointer-events:auto}
#music-toggle:hover{background:rgba(35,55,46,.95)}
#music-toggle span{animation:music-note-bounce 1.6s ease-in-out infinite}
#music-toggle.muted span{animation:none;text-decoration:line-through;opacity:.6}
@keyframes music-note-bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}
@media(max-width:480px){#music-toggle{width:42px;height:42px;bottom:16px;right:16px;font-size:17px}}

/* Tarjeta unificada de ceremonia */
.ceremony-card .date-block{margin:12px auto 14px;font-size:15px}
.ceremony-lead{margin:0;color:#8a7455;font:italic 21px var(--serif)}
.ceremony-icon{width:100px;height:100px;margin:8px auto 12px}
.ceremony-icon img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 3px 4px rgba(54,91,77,.14))}
.ceremony-time{margin:4px 0 5px;font:600 38px var(--serif);color:#365b4d}
.ceremony-venue{margin:0 0 10px;color:#5c7166;font:25px/1.4 var(--serif)}
.ceremony-map{display:inline-block;margin-bottom:22px;color:var(--wine);font-size:16px;letter-spacing:.06em;text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:2px}
@media(max-width:480px){.ceremony-card h3{font-size:46px}.ceremony-card .date-block{font-size:14px}.ceremony-lead{font-size:19px}.ceremony-time{font-size:33px}.ceremony-venue{font-size:22px}.ceremony-map{font-size:15px}.celebration-note>p{font-size:21px}.ceremony-icon{width:88px;height:88px}}

@media(max-width:800px){.ceremony-card h3{font-size:46px}}

/* Tarjeta de recepcion (Bruma) */
.reception-card .eyebrow{display:block;margin:8px 0 2px;font-size:14px}
.reception-grid{display:flex;align-items:center;justify-content:center;max-width:640px;margin:26px auto 6px;text-align:left}
.reception-icon{flex:0 0 130px;width:130px;height:130px}
.reception-icon img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 3px 4px rgba(54,91,77,.14))}
.reception-ornament{flex:1;align-self:stretch;display:flex;justify-content:center;padding:0 20px;min-width:40px}
.reception-ornament span{width:1px;background:linear-gradient(180deg,transparent,#d2b577 18%,#d2b577 82%,transparent)}
.reception-details{flex:0 0 250px;min-width:0}
.reception-brand{margin:0;font:400 42px/1 var(--script);color:#2f4a3d}
.reception-type{margin:2px 0 12px;font:20px var(--serif);color:#5c7166}
.reception-address{display:flex;align-items:flex-start;gap:6px;margin:0 0 10px;font:18px/1.4 var(--serif);color:#5c7166}
.reception-address svg{flex:0 0 auto;margin-top:4px;color:var(--wine)}
.reception-details .itinerary-time{margin:0 0 8px;font-size:18px}
@media(max-width:600px){.reception-grid{flex-direction:column}.reception-ornament{display:none}.reception-details{flex:0 0 auto;text-align:center}.reception-address{justify-content:center}}
@media(max-width:480px){.reception-brand{font-size:36px}.reception-type{font-size:18px}.reception-address{font-size:16px}}

.restricted{display:flex;align-items:center;justify-content:center;min-height:60vh;text-align:center;padding:60px 24px}
.restricted-note{max-width:480px}
.restricted-note h1{font:500 34px var(--serif);color:#365b4d;margin:14px 0}
.restricted-note p{color:#6b7c70;font:16px/1.5 var(--serif)}

.rsvp-card .celebration-closing{display:block;margin:10px 0 0;color:#e7ddc2;font-style:italic;font-size:15px;position:relative;z-index:1}

.attire-link{display:block;width:max-content;margin-top:14px;color:var(--wine);font-size:13px;letter-spacing:.04em;text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:2px}

.countdown-section{padding:44px 24px;text-align:center;background:var(--paper)}
.countdown-section .eyebrow{display:block;margin-bottom:18px}
.countdown-grid{display:flex;justify-content:center;gap:28px;max-width:420px;margin:0 auto}
.countdown-unit{display:flex;flex-direction:column;align-items:center;min-width:56px}
.countdown-unit strong{font:500 40px/.9 var(--serif);color:var(--ink)}
.countdown-unit span{margin-top:6px;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:#8b958f}
@media(max-width:480px){.countdown-grid{gap:16px}.countdown-unit{min-width:46px}.countdown-unit strong{font-size:32px}}

.calendar-btn{display:inline-flex;align-items:center;gap:8px;margin-top:18px;padding:11px 20px;border:1px solid var(--pine);background:transparent;color:var(--pine);font-size:12px;letter-spacing:.04em;border-radius:24px;cursor:pointer}
.calendar-btn:hover{background:var(--pine);color:#fff}

.map-embed{display:block;width:100%;height:190px;border:0;margin:14px 0;filter:saturate(.9)}

.confetti-petal{position:fixed;top:-16px;z-index:999;width:9px;height:9px;border-radius:50%;pointer-events:none;animation:confetti-fall linear forwards}
@keyframes confetti-fall{0%{transform:translateY(0) rotate(0deg);opacity:1}100%{transform:translateY(100vh) rotate(360deg);opacity:0}}
.attire-link b{font-size:14px;margin-left:2px}
