:root{--ivory:#faf7f0;--paper:#fffdf8;--linen:#ece3d5;--sage:#66765f;--sage-dark:#40513e;--ink:#37342f;--gold:#b99b62;--rose:#bd8177;--muted:#746d63;--ease:cubic-bezier(.22,.8,.25,1)}*{box-sizing:border-box}body{margin:0;background:var(--ivory);color:var(--ink);font:16px/1.6 Arial,sans-serif}button,input{font:inherit}.shell{max-width:900px;margin:auto;padding:28px 18px 70px}.card,.gate-paper{background:var(--paper);border:1px solid #dfd2bf;border-radius:2px;padding:32px;box-shadow:0 14px 45px #3e3a3410}.gate{min-height:100svh;display:grid;place-items:center;padding:24px;background:var(--ivory)}.gate-paper{max-width:520px;text-align:center}h1,h2{font-family:Georgia,serif;font-weight:500;line-height:1.05}h2{font-size:2rem}.eyebrow{text-transform:uppercase;letter-spacing:.16em;font-size:.7rem;color:var(--sage)}input{width:100%;padding:14px;border:1px solid #cfc4b2;border-radius:2px;background:#fffefa;margin:8px 0}button{cursor:pointer;border:0;border-radius:999px;padding:15px 22px;background:var(--sage);color:#fff;font-weight:bold}.error{color:#9c3f35;min-height:1.5em}.hidden{display:none}.admin-list{padding:0;list-style:none}.admin-list li{border-bottom:1px solid #eee;padding:12px 0}.muted{color:#817666}

.invitation-page{isolation:isolate;position:relative;display:grid;grid-template-rows:auto 1fr auto;min-height:100svh;overflow:hidden;padding:24px 24px 34px;background:var(--ivory);outline:none}.page-paper{position:absolute;z-index:-3;inset:14px;border:1px solid #ddd0ba;pointer-events:none}.page-header{display:flex;justify-content:center}.page-count{display:flex;align-items:center;gap:8px;margin:0;color:#817869;font-size:.68rem;letter-spacing:.14em;font-variant-numeric:tabular-nums}.page-count span{color:var(--sage-dark);font-weight:bold}.page-count i{display:block;width:34px;height:1px;background:var(--gold)}.page-content{position:relative;z-index:1;align-self:center;max-width:34rem;margin:auto;text-align:center;padding:44px 0 16px}.reveal-item{opacity:0;animation:editorial-in 680ms var(--ease) both}.page-content .eyebrow{margin:0 0 20px;animation-delay:100ms}.hero-title{max-width:12ch;margin:0 auto;font-size:clamp(3rem,12vw,6.2rem);letter-spacing:-.055em;overflow-wrap:anywhere;animation-delay:250ms}.page-date .hero-title,.page-time .hero-title{font-size:clamp(4.9rem,24vw,9rem);line-height:.9}.page-place .hero-title{font-size:clamp(2.8rem,10vw,5rem)}.hero-detail{margin:17px 0 0;font-family:Georgia,serif;font-size:1.05rem;color:var(--sage-dark);animation-delay:390ms}.editorial-rule{width:70px;height:1px;margin:24px auto 0;background:var(--gold);animation-delay:440ms}.hero-copy{max-width:31ch;margin:20px auto 0;color:var(--muted);animation-delay:560ms}.page-footer{position:relative;z-index:1;display:grid;justify-items:center}.continue{display:inline-flex;align-items:center;justify-content:center;gap:11px;min-width:min(100%,290px);min-height:54px;box-shadow:0 10px 20px #40513e20;transition:background-color 180ms ease,transform 180ms ease,box-shadow 180ms ease;animation-delay:720ms}.continue:hover{background:var(--sage-dark);box-shadow:0 13px 24px #40513e2b}.continue:active{transform:scale(.975)}.continue:focus-visible{outline:3px solid var(--gold);outline-offset:4px}.continue span{font-size:1.3rem;transition:transform 180ms ease}.continue:hover span{transform:translateX(4px)}.tap-hint{margin:15px 0 0;color:#948879;font-size:.68rem;letter-spacing:.11em;text-transform:uppercase;animation-delay:840ms}

.botanical-branch{position:absolute;z-index:-1;width:min(78vw,420px);height:auto;fill:none;stroke:var(--sage);stroke-width:1.25;stroke-linecap:round;opacity:.74}.botanical-branch path{stroke-dasharray:600;stroke-dashoffset:600;animation:branch-draw 1300ms 120ms var(--ease) forwards}.botanical-branch .leaves{fill:var(--sage);stroke:none;transform-origin:center;animation:leaves-in 700ms 800ms var(--ease) both}.branch-0{right:-90px;bottom:7%;transform:rotate(-12deg)}.branch-1{left:-98px;bottom:4%;transform:rotate(17deg)}.branch-2{right:-76px;top:10%;transform:rotate(12deg)}.branch-3{left:-104px;top:16%;transform:rotate(-8deg)}.branch-4{right:-86px;bottom:2%;transform:rotate(2deg)}.branch-5{left:-98px;bottom:3%;transform:rotate(14deg)}.pollen{position:absolute;z-index:-1;inset:0;pointer-events:none}.pollen i{position:absolute;width:4px;height:4px;border-radius:50%;background:var(--gold);opacity:0;animation:pollen-drift 7s 500ms ease-in-out infinite}.pollen i:nth-child(1){top:23%;left:15%;animation-delay:.7s}.pollen i:nth-child(2){top:34%;right:13%;animation-delay:1.6s}.pollen i:nth-child(3){top:58%;left:8%;animation-delay:2.8s}.pollen i:nth-child(4){top:65%;right:10%;animation-delay:3.5s}.pollen i:nth-child(5){top:17%;right:27%;animation-delay:4.2s}.pollen i:nth-child(6){top:77%;left:27%;animation-delay:5s}

.portrait-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;width:min(100%,350px);margin:0 auto 26px;animation-delay:180ms}.portrait{margin:0;opacity:0;animation:portrait-in 800ms cubic-bezier(.34,1.2,.64,1) both}.portrait-one{animation-delay:240ms}.portrait-two{animation-delay:370ms}.portrait img,.portrait-placeholder{display:grid;width:100%;aspect-ratio:4/5;place-items:center;overflow:hidden;border:1px solid #d8c7ad;border-radius:100vmax 100vmax 6px 6px;background:var(--linen);object-fit:cover}.portrait-placeholder{font-family:Georgia,serif;font-size:3.3rem;color:var(--sage-dark)}.portrait figcaption{margin-top:8px;font-family:Georgia,serif;color:var(--ink)}.page-portraits .hero-title{font-size:clamp(2.7rem,10vw,4.5rem);animation-delay:500ms}.page-portraits .editorial-rule{animation-delay:620ms}.page-portraits .hero-copy{animation-delay:720ms}.page-portraits .continue{animation-delay:840ms}.page-portraits .tap-hint{animation-delay:960ms}

::view-transition-old(root){animation:page-out 220ms ease both}::view-transition-new(root){animation:page-in 420ms var(--ease) both}@keyframes editorial-in{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes portrait-in{from{opacity:0;transform:translateY(16px) scale(.965)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes branch-draw{to{stroke-dashoffset:0}}@keyframes leaves-in{from{opacity:0;transform:scale(.3)}to{opacity:1;transform:scale(1)}}@keyframes pollen-drift{0%,100%{opacity:0;transform:translate(0,0)}18%,72%{opacity:.62}50%{transform:translate(13px,-26px)}90%{opacity:0;transform:translate(18px,-39px)}}@keyframes page-out{to{opacity:0;transform:translateY(-8px)}}@keyframes page-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:600px){.invitation-page{padding:20px 19px 28px}.page-paper{inset:10px}.page-content{padding:34px 0 12px}.hero-copy{font-size:.97rem}.botanical-branch{width:88vw}.branch-0,.branch-2,.branch-4{right:-132px}.branch-1,.branch-3,.branch-5{left:-137px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-delay:0ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}.continue,.continue span{transition:none}::view-transition-old(root),::view-transition-new(root){animation:none}}

/* Original geometric ornaments: a couple of slow wiggle-lines and stars, not a particle field. */
.ornament-field{position:absolute;z-index:-1;inset:0;pointer-events:none}.wiggle{position:absolute;width:90px;height:28px;border-top:1px solid var(--gold);border-radius:50%;opacity:.65;animation:wiggle 5s ease-in-out infinite}.wiggle:after{content:"";position:absolute;inset:7px -8px auto 8px;height:20px;border-top:1px solid var(--rose);border-radius:50%}.wiggle-one{top:19%;right:11%;transform:rotate(-18deg)}.wiggle-two{bottom:18%;left:10%;transform:rotate(21deg);animation-delay:-2.4s}.star{position:absolute;color:var(--gold);font-size:1.15rem;opacity:.78;animation:star-pulse 4s ease-in-out infinite}.star-one{top:27%;left:13%}.star-two{top:42%;right:12%;animation-delay:-1.5s}.star-three{bottom:26%;right:25%;font-size:.78rem;animation-delay:-2.8s}.geometry{position:absolute;right:8%;bottom:11%;width:64px;fill:none;stroke:var(--sage);stroke-width:1;opacity:.4;transform:rotate(12deg)}.geometry circle{stroke:var(--gold)}.invitation-card{display:grid;gap:0;max-width:340px;margin:25px auto 0;padding:19px 0 4px;border-top:1px solid var(--gold);border-bottom:1px solid var(--gold);animation-delay:690ms}.invitation-card div{padding:9px 0;border-bottom:1px solid #ded2bf}.invitation-card div:last-child{border-bottom:0}.invitation-card dt{font-size:.65rem;letter-spacing:.15em;text-transform:uppercase;color:var(--sage)}.invitation-card dd{margin:2px 0 0;font-family:Georgia,serif;font-size:1rem}.page-recap .hero-title{font-size:clamp(3.4rem,13vw,5.8rem)}.page-recap .continue{animation-delay:830ms}.home-page{min-height:100svh;padding:25px 24px 72px;background:var(--ivory)}.home-header{display:flex;align-items:center;justify-content:space-between;max-width:760px;margin:auto}.home-header .eyebrow{margin:0}.home-link{color:var(--sage-dark);font-size:.8rem;text-decoration:none;border-bottom:1px solid var(--gold)}.home-hero{max-width:690px;margin:14vh auto 17vh;text-align:center}.home-hero h1{max-width:10ch;margin:14px auto 20px;font-size:clamp(3.2rem,13vw,6rem);letter-spacing:-.055em}.home-hero>p:last-child{max-width:36ch;margin:auto;color:var(--muted)}.home-section{max-width:650px;margin:0 auto 74px}.home-section h2{max-width:12ch;margin:12px 0;font-size:clamp(2rem,7vw,3.4rem)}.home-programme ol{padding:0;margin:24px 0;list-style:none;border-top:1px solid #d8cbb5}.home-programme li{display:grid;grid-template-columns:minmax(100px,.8fr) 1.4fr;gap:18px;padding:17px 0;border-bottom:1px solid #d8cbb5}.home-programme span{font-size:.88rem;color:var(--sage-dark)}.home-programme strong{font-family:Georgia,serif;font-size:1.08rem;font-weight:500}.guestbook{padding:38px 0;border-top:1px solid var(--gold);border-bottom:1px solid var(--gold)}.guestbook p:last-child{max-width:36ch;color:var(--muted)}@keyframes wiggle{0%,100%{translate:0 0}50%{translate:9px -5px}}@keyframes star-pulse{0%,100%{opacity:.35;transform:scale(.78) rotate(0)}50%{opacity:.9;transform:scale(1.08) rotate(16deg)}}@media(max-width:600px){.geometry{right:-4%;bottom:13%}.home-page{padding:22px 21px 60px}.home-hero{margin:13vh auto 14vh}.home-programme li{grid-template-columns:1fr;gap:2px}}

.sparkle-layer{position:absolute;z-index:-2;inset:0;width:100%;height:100%;pointer-events:none;opacity:.56}.home-page{isolation:isolate;position:relative;overflow:hidden}.home-aurora{z-index:-1;opacity:.22;mix-blend-mode:multiply}
