:root{color:#241b18;background:#fff8ec;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;--ease-out: cubic-bezier(.22, 1, .36, 1);--motion-fast: .18s;--motion-base: .28s;--motion-slow: .7s;--motion-ambient: 14s;--wedding-red: #a92f28;--wedding-red-deep: #651e1b;--wedding-red-dark: #3f1513;--wedding-red-soft: #f8e8df;--wedding-gold: #d9a85e;--wedding-gold-bright: #f6d69a;--wedding-ink: #241b18;--wedding-ink-deep: #140d0b;--wedding-paper: #fff8ec;--wedding-paper-deep: #f5ead8;--wedding-muted: #735e56;--font-display: "Songti SC", "STSong", "SimSun", Georgia, serif;--radius-small: 8px;--radius-card: 16px;--radius-large: 24px;--shadow-soft: 0 22px 70px rgba(63, 21, 19, .1);--shadow-lifted: 0 30px 100px rgba(63, 21, 19, .24)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{min-width:320px;margin:0;cursor:url(/xi-cursor.svg) 16 16,auto;background:linear-gradient(180deg,#fff8ecfa,#f5ead8e6),repeating-linear-gradient(90deg,rgba(169,47,40,.025) 0 1px,transparent 1px 118px),repeating-linear-gradient(0deg,rgba(217,168,94,.045) 0 1px,transparent 1px 128px)}body.opening-animation-active{overflow:hidden}button,input{font:inherit}button{cursor:url(/xi-cursor.svg) 16 16,pointer}button:focus-visible,a:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--wedding-gold);outline-offset:3px}.skip-link{position:fixed;top:12px;left:12px;z-index:30;padding:10px 14px;color:#fff;background:var(--wedding-red-deep);border-radius:6px;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.site-header{position:fixed;top:0;right:0;left:0;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:17px clamp(18px,4vw,56px);color:#fff;background:linear-gradient(180deg,#3f1513e0,#3f15132e);border-bottom:1px solid rgba(246,214,154,.15);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.brand,.site-header nav,.site-header a{color:inherit}.brand{display:inline-flex;gap:8px;align-items:center;min-height:44px;font-weight:800;letter-spacing:.08em;text-decoration:none}.site-header nav{display:flex;gap:clamp(14px,3vw,32px);font-size:.95rem}.site-header nav a{position:relative;display:inline-flex;align-items:center;min-height:44px;cursor:url(/xi-cursor.svg) 16 16,pointer;text-decoration:none}.site-header nav a:after{position:absolute;right:0;bottom:-6px;left:0;height:2px;content:"";background:var(--wedding-gold);transform:scaleX(0);transform-origin:left;transition:transform .28s var(--ease-out)}.site-header nav a:hover:after{transform:scaleX(1)}.hero{position:relative;min-height:min(820px,100svh);overflow:hidden;color:#fff;isolation:isolate}.hero-image{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;object-position:center 24%}.hero-overlay{position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,#3f1513bd,#3f151347 50%,#241b1814),linear-gradient(0deg,rgba(20,13,11,.56),transparent 48%,rgba(169,47,40,.12))}.hero-ambient{position:absolute;inset:-14%;z-index:0;overflow:hidden;pointer-events:none}.hero-ambient:before,.hero-ambient:after{position:absolute;content:"";pointer-events:none}.hero-ambient:before{inset:0;background:radial-gradient(circle at 18% 68%,rgba(246,214,154,.23),transparent 28%),radial-gradient(circle at 78% 22%,rgba(169,47,40,.18),transparent 30%);opacity:.76;transform:translate3d(-2%,1%,0) scale(1);animation:hero-ambient-drift var(--motion-ambient) ease-in-out infinite alternate;will-change:opacity,transform}.hero-ambient:after{top:-18%;bottom:-18%;left:-24%;width:min(34vw,480px);background:linear-gradient(90deg,transparent,rgba(255,235,196,.14),transparent);opacity:0;filter:blur(18px);transform:rotate(10deg) translate3d(-28%,0,0);animation:hero-light-sweep 2.1s .45s var(--ease-out) both;will-change:opacity,transform}.hero-content{position:relative;z-index:1;display:grid;align-content:end;width:min(1040px,calc(100% - 36px));min-height:min(820px,100svh);margin:0 auto 0 clamp(32px,8vw,148px);padding:128px 0 54px}.hero-kicker,.section-heading p{display:inline-flex;gap:8px;align-items:center;margin:0 0 14px;font-size:.82rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.hero h1{max-width:740px;margin:0;font-family:var(--font-display);font-size:clamp(3.4rem,7vw,7rem);font-weight:600;letter-spacing:.02em;line-height:.94;text-shadow:0 18px 54px rgba(20,13,11,.32)}.hero-invitation-copy{max-width:560px;margin:22px 0 0;color:#fff8eceb;font-family:var(--font-display);font-size:clamp(1.05rem,2vw,1.35rem);letter-spacing:.05em;line-height:1.8}.hero-wedding-card{display:grid;grid-template-columns:minmax(210px,1fr) minmax(210px,1fr) 132px;width:min(820px,100%);margin-top:38px;overflow:hidden;color:var(--wedding-ink);background:#fff8ecf0;border:1px solid rgba(246,214,154,.74);border-radius:var(--radius-card);box-shadow:0 28px 90px #140d0b4d;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.wedding-detail{display:flex;gap:12px;align-items:center;min-width:0;min-height:96px;padding:18px 20px;color:var(--wedding-red-deep);text-align:left;background:transparent;border:0;border-right:1px solid rgba(101,30,27,.13);transition:background .24s var(--ease-out)}.wedding-detail:hover{background:#d9a85e1f}.wedding-detail span{display:grid;gap:5px;min-width:0}.wedding-detail small{color:var(--wedding-muted);font-size:.73rem;font-weight:800;letter-spacing:.12em}.wedding-detail strong{overflow:hidden;color:var(--wedding-ink);font-size:.98rem;text-overflow:ellipsis;white-space:nowrap}.countdown-panel{display:grid;place-items:center;align-content:center;padding:14px;color:var(--wedding-paper);text-align:center;background:linear-gradient(145deg,var(--wedding-red),var(--wedding-red-deep))}.countdown-panel span{display:block;font-family:var(--font-display);font-size:2.8rem;font-weight:900;line-height:1}.countdown-panel p{margin:2px 0 0;color:#fff8ecd6;font-size:.76rem;font-weight:700;letter-spacing:.14em}.section{padding:clamp(54px,8vw,104px) clamp(18px,5vw,72px)}.section-heading{width:min(1080px,100%);margin:0 auto 28px}.section-heading p{color:#9d352d}.section-heading h2{margin:0;font-family:var(--font-display);font-size:clamp(2.2rem,5vw,4.4rem);font-weight:500}.story-layout{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(260px,.7fr);gap:clamp(18px,4vw,48px);width:min(1080px,100%);margin:0 auto}.story-copy{position:relative;display:grid;gap:20px;align-content:start;padding:clamp(26px,5vw,48px);background:#fff8ecdb;border:1px solid rgba(169,47,40,.12);border-radius:var(--radius-card);box-shadow:var(--shadow-soft);font-size:clamp(1.05rem,2vw,1.35rem);line-height:1.8}.story-seal{display:grid;place-items:center;width:64px;height:64px;color:var(--wedding-paper);background:var(--wedding-red);border:1px solid var(--wedding-gold);border-radius:50%;font-family:var(--font-display);font-size:2rem;box-shadow:0 14px 36px #651e1b33}.story-copy p,.story-copy address{margin:0}.story-copy address{color:#66514a;font-style:normal}.note-list{display:grid;gap:12px;padding:0;margin:0;list-style:none}.note-list li{display:flex;gap:10px;align-items:center;padding:16px;min-height:64px;color:var(--wedding-red-deep);background:linear-gradient(135deg,#fffdf7,var(--wedding-paper));border:1px solid rgba(183,53,43,.12);border-radius:var(--radius-card);box-shadow:0 16px 36px #24181414;transition:border-color .24s var(--ease-out),box-shadow .24s var(--ease-out),transform .24s var(--ease-out)}.note-list li:hover{border-color:#b7352b3d;box-shadow:0 20px 48px #143a351f;transform:translateY(-3px)}.gallery-section{color:#fff;background:linear-gradient(135deg,#3f1513fc,#651e1bf5),repeating-linear-gradient(0deg,rgba(255,226,163,.08) 0 1px,transparent 1px 96px)}.gallery-section .section-heading p{color:#f6c27a}.gallery-section .collection-grid{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch}.gallery-cta{display:flex;justify-content:center;width:min(1180px,100%);margin:36px auto 0}.secondary-link,.back-button{display:inline-flex;gap:9px;align-items:center;justify-content:center;min-height:46px;padding:0 16px;border-radius:8px;font-weight:850;text-decoration:none}.secondary-link{color:var(--wedding-ink);background:linear-gradient(135deg,var(--wedding-gold-bright),var(--wedding-gold));box-shadow:0 18px 44px #8f171729;transition:box-shadow .24s var(--ease-out),transform .24s var(--ease-out)}.secondary-link:hover{box-shadow:0 24px 62px #8f17173d;transform:translateY(-2px)}.gallery-grid{display:grid;grid-auto-flow:dense;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;width:min(1180px,100%);margin:0 auto}.photo-tile{position:relative;grid-column:span 4;min-height:0;aspect-ratio:4 / 5;padding:0;overflow:hidden;color:#fff;text-align:left;background:var(--wedding-ink-deep);border:0;border-radius:var(--radius-card);box-shadow:0 18px 44px #0000002e;isolation:isolate}.photo-tile-landscape{grid-column:span 8;aspect-ratio:3 / 2}.photo-tile img,.dialog-image{width:100%;height:100%;object-fit:cover}.photo-tile img{position:absolute;inset:0;transition:filter var(--motion-base) var(--ease-out),transform var(--motion-slow) var(--ease-out)}.photo-tile:hover img{filter:saturate(1.08) contrast(1.03);transform:scale(1.025)}.photo-tile span{position:absolute;right:0;bottom:0;left:0;display:grid;padding:70px 18px 18px;background:linear-gradient(0deg,#000000b8,#0000)}.photo-tile span:before{width:38px;height:2px;content:"";background:#f6c27a;transform:scaleX(.72);transform-origin:left;transition:transform .32s var(--ease-out)}.photo-tile:hover span:before{transform:scaleX(1)}.photo-tile strong{font-size:1.25rem}.dialog-backdrop{position:fixed;inset:0;z-index:40;display:grid;place-items:center;padding:clamp(14px,3vw,28px);background:#2b0d0cdb;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.photo-dialog{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(290px,340px);width:min(1240px,100%);max-height:min(820px,calc(100vh - 36px));overflow:hidden;color:var(--wedding-ink);background:var(--wedding-paper);border:1px solid rgba(246,214,154,.76);border-radius:var(--radius-card);box-shadow:var(--shadow-lifted)}.dialog-close{position:absolute;top:14px;right:14px;z-index:2}.dialog-media{position:relative;min-height:620px;background:var(--wedding-red-dark)}.icon-button{display:inline-grid;place-items:center;width:42px;height:42px;color:var(--wedding-red-deep);background:#fff8ecf2;border:1px solid rgba(101,30,27,.18);border-radius:var(--radius-small);transition:background var(--motion-fast) var(--ease-out),transform var(--motion-fast) var(--ease-out)}.icon-button:hover{background:#fff;transform:translateY(-1px)}.dialog-image{display:block;max-height:min(820px,calc(100vh - 36px));min-height:620px;object-fit:contain;background:var(--wedding-red-dark)}.dialog-copy{display:grid;gap:16px;align-content:center;padding:clamp(24px,3vw,38px);background:linear-gradient(180deg,#fff8ecfa,#f5ead8f5),repeating-linear-gradient(90deg,rgba(169,47,40,.04) 0 1px,transparent 1px 92px)}.dialog-copy p,.dialog-copy h3,.dialog-copy span,.dialog-copy dl,.dialog-copy dd{margin:0}.dialog-copy p{color:var(--wedding-red);font-weight:800;text-transform:uppercase}.dialog-copy h3{font-family:var(--font-display);font-size:clamp(2.2rem,4vw,3.4rem);font-weight:500;line-height:1}.dialog-copy span{color:#5f4f49;font-size:1.05rem;line-height:1.8}.dialog-description{padding-bottom:4px;color:var(--wedding-muted);font-family:var(--font-display)}.dialog-facts{display:grid;gap:14px;padding-top:8px}.dialog-facts div{display:grid;gap:5px;padding-top:14px;border-top:1px solid rgba(101,30,27,.14)}.dialog-facts dt{color:var(--wedding-red);font-size:.78rem;font-weight:850;text-transform:uppercase}.dialog-facts dd{color:#2c201d;line-height:1.7}.dialog-progress{height:3px;overflow:hidden;background:#651e1b1f;border-radius:999px}.dialog-progress span{display:block;width:100%;height:100%;background:linear-gradient(90deg,var(--wedding-red),var(--wedding-gold));border-radius:inherit;transform-origin:left;transition:transform .28s var(--ease-out)}.dialog-actions{display:flex;flex-wrap:wrap;gap:10px}.dialog-action{min-height:42px;border:0}.dialog-nav{position:absolute;top:50%;z-index:2;transform:translateY(-50%)}.dialog-nav:hover{transform:translateY(calc(-50% - 1px))}.dialog-nav-previous{left:14px}.dialog-nav-next{right:14px}.gallery-page{color:var(--wedding-ink);background:var(--wedding-paper)}.gallery-page-hero{position:relative;min-height:520px;overflow:hidden;color:#fff;isolation:isolate}.gallery-page-hero-image,.gallery-page-hero-overlay{position:absolute;inset:0}.gallery-page-hero-image{z-index:-2;width:100%;height:100%;object-fit:cover;object-position:center 34%}.gallery-page-hero-overlay{z-index:-1;background:linear-gradient(90deg,#3f1513c2,#651e1b29),linear-gradient(0deg,#140d0b94,#140d0b0a)}.gallery-page-hero-copy{display:grid;gap:18px;align-content:end;width:min(1080px,calc(100% - 36px));min-height:520px;margin:0 auto;padding:108px 0 72px}.gallery-page-hero-copy p,.gallery-page-hero-copy h1,.gallery-page-hero-copy span{margin:0}.gallery-page-hero-copy p,.collection-heading p{color:#f6c27a;font-size:.82rem;font-weight:850;text-transform:uppercase}.gallery-page-hero-copy h1{max-width:760px;font-family:var(--font-display);font-size:clamp(3rem,8vw,7rem);font-weight:500;line-height:.94}.gallery-page-hero-copy span{max-width:680px;color:#fff6ea;font-size:clamp(1rem,2vw,1.25rem);line-height:1.7}.back-button{width:fit-content;color:#fff;background:#ffffff24;border:1px solid rgba(255,255,255,.34);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);transition:background .24s var(--ease-out),border-color .24s var(--ease-out)}.back-button:hover{background:#ffffff38;border-color:#ffffff85}.gallery-collection-section:nth-of-type(odd){background:var(--wedding-paper-deep)}.collection-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;width:min(1180px,100%);margin:0 auto}.gallery-section .collection-grid{margin-top:10px}.gallery-section .collection-card,.gallery-section .collection-card:nth-child(1),.gallery-section .collection-card:nth-child(6){grid-column:auto;min-height:430px}.collection-card{position:relative;display:grid;min-height:470px;padding:0;overflow:hidden;color:#fff;text-align:left;background:var(--wedding-red-dark);border:0;border-radius:var(--radius-card);box-shadow:0 22px 64px #0000002e;isolation:isolate}.collection-card:nth-child(1),.collection-card:nth-child(6){grid-column:span 2}.collection-card img{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;object-position:center 24%;transition:filter var(--motion-base) var(--ease-out),transform var(--motion-slow) var(--ease-out)}.collection-card:after{position:absolute;inset:0;z-index:-1;content:"";background:linear-gradient(0deg,#000000b8,#0000001f),linear-gradient(90deg,#651e1b61,#651e1b00)}.collection-card:hover img{filter:saturate(1.08) contrast(1.03);transform:scale(1.025)}.collection-card-copy{display:grid;gap:10px;align-self:end;padding:28px}.collection-card-copy strong{font-family:var(--font-display);font-size:clamp(2rem,4vw,3.4rem);font-weight:500;line-height:1}.collection-card-copy small{color:var(--wedding-gold);font-weight:850}.collection-card-copy em{max-width:520px;color:#fff6ea;font-style:normal;line-height:1.7}.collection-card-action{position:absolute;top:18px;right:18px;display:inline-flex;gap:8px;align-items:center;min-height:40px;padding:0 13px;color:var(--wedding-red-deep);background:linear-gradient(135deg,#fff8ecf7,#f6d69af7);border-radius:var(--radius-small);font-weight:850;box-shadow:0 16px 34px #8f171729}.collection-heading{display:grid;grid-template-columns:minmax(0,.9fr) minmax(260px,1.1fr);gap:24px;align-items:end;width:min(1180px,100%);margin:0 auto 24px}.collection-heading p,.collection-heading h2,.collection-heading span{margin:0}.collection-heading h2{margin-top:8px;font-family:var(--font-display);font-size:clamp(2rem,5vw,4rem);font-weight:500}.collection-heading span{color:#5f4f49;font-size:clamp(1rem,2vw,1.18rem);line-height:1.7}.gallery-collection-section .gallery-grid{grid-template-columns:repeat(12,minmax(0,1fr))}.scene-page-actions{display:flex;flex-wrap:wrap;gap:10px}.rsvp-section{scroll-margin-top:72px;background:linear-gradient(180deg,#fff8ecfc,#f5ead8f2),repeating-linear-gradient(90deg,rgba(169,47,40,.035) 0 1px,transparent 1px 118px)}.rsvp-layout{display:grid;grid-template-columns:minmax(280px,.85fr) minmax(360px,1fr);gap:0;width:min(980px,100%);margin:0 auto;overflow:hidden;background:#fff;border:1px solid rgba(234,222,210,.9);border-radius:var(--radius-large);box-shadow:0 28px 90px #24181421}.rsvp-invitation-panel{position:relative;display:grid;gap:18px;align-content:center;min-height:440px;padding:clamp(28px,5vw,48px);color:#fff;background:linear-gradient(135deg,#651e1beb,#3f1513d1),url(/api/photos/ah3a1499.jpg) center 42% / cover;isolation:isolate}.rsvp-invitation-panel:before{position:absolute;inset:0;z-index:-1;content:"";background:linear-gradient(135deg,#651e1bd1,#140d0b9e),radial-gradient(circle at 24% 20%,rgba(246,214,154,.24),transparent 34%)}.rsvp-invitation-panel p,.rsvp-invitation-panel h3,.rsvp-invitation-panel ul{margin:0}.rsvp-invitation-panel p{color:#f6c27a;font-size:.82rem;font-weight:850;text-transform:uppercase}.rsvp-invitation-panel h3{max-width:320px;font-family:var(--font-display);font-size:clamp(2.2rem,4vw,3.6rem);font-weight:500;line-height:1.05}.rsvp-invitation-panel ul{display:grid;gap:12px;padding:0;list-style:none}.rsvp-invitation-panel li{display:flex;gap:10px;align-items:center;color:#fff7ec;font-weight:750}.rsvp-seal{display:inline-grid;place-items:center;width:74px;height:74px;color:var(--wedding-red-deep);background:var(--wedding-gold-bright);border-radius:999px;box-shadow:0 18px 44px #f6c27a40}.rsvp-form{display:grid;gap:18px;margin:0;padding:clamp(26px,5vw,46px);background:linear-gradient(180deg,#fffdf7fc,#fff8ecf7),repeating-linear-gradient(0deg,rgba(217,168,94,.075) 0 1px,transparent 1px 82px)}.rsvp-form-head{display:grid;gap:6px;padding-bottom:6px}.rsvp-form-head span{color:var(--wedding-red);font-size:.82rem;font-weight:850;text-transform:uppercase}.rsvp-form-head strong{font-family:var(--font-display);font-size:clamp(2rem,4vw,3rem);font-weight:500}.admin-page{display:grid;min-height:100vh;padding:110px clamp(18px,5vw,72px) 56px;background:linear-gradient(120deg,#12312de6,#2c201db8),radial-gradient(circle at 30% 24%,rgba(246,194,122,.22),transparent 32%),repeating-linear-gradient(90deg,rgba(255,255,255,.06) 0 1px,transparent 1px 118px);place-items:center}.access-page{position:relative;display:grid;min-height:100svh;padding:104px clamp(18px,6vw,80px) 86px;overflow:hidden;color:#fff;background:var(--wedding-red-dark);isolation:isolate;place-items:center}.access-backdrop{position:absolute;inset:0;z-index:-2;background:radial-gradient(circle at 78% 24%,rgba(246,214,154,.16),transparent 30%),radial-gradient(circle at 18% 78%,rgba(169,47,40,.34),transparent 36%),linear-gradient(120deg,#3f1513,#651e1b 54%,#2b1110);transform:scale(1.015)}.access-page:after{position:absolute;inset:22px;z-index:-1;pointer-events:none;content:"";border:1px solid rgba(246,214,154,.28);border-radius:var(--radius-large)}.access-brand{position:absolute;top:34px;left:clamp(24px,5vw,72px);display:grid;grid-template-columns:auto auto;gap:0 9px;align-items:center;color:var(--wedding-paper);font-weight:900;letter-spacing:.08em}.access-brand small{grid-column:2;color:#fff8ecad;font-size:.63rem;font-weight:700;letter-spacing:.15em;text-transform:uppercase}.access-record{position:absolute;right:clamp(24px,5vw,72px);bottom:32px;left:clamp(24px,5vw,72px);display:flex;gap:20px;justify-content:space-between;color:#fff8ecbf;font-size:.78rem}.access-record a{color:inherit;text-decoration:none}.access-card,.admin-login-card{display:grid;gap:18px;width:min(440px,100%);padding:clamp(26px,5vw,44px);color:#2c201d;background:#fff9f2f2;border:1px solid rgba(255,255,255,.68);border-radius:8px;box-shadow:0 28px 90px #00000038;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.access-card{position:relative;gap:16px;width:min(470px,100%);padding:clamp(28px,5vw,46px);color:var(--wedding-ink);background:#fff8ecf5;border:1px solid rgba(246,214,154,.78);border-radius:var(--radius-large);box-shadow:0 40px 120px #140d0b75,inset 0 0 0 1px #ffffff85}.access-card:before{position:absolute;inset:10px;pointer-events:none;content:"";border:1px solid rgba(169,47,40,.1);border-radius:calc(var(--radius-large) - 7px)}.access-card-heading{display:flex;align-items:center;justify-content:space-between}.access-lock{display:inline-flex;gap:7px;align-items:center;min-height:36px;padding:0 12px;color:var(--wedding-red-deep);background:#a92f2814;border:1px solid rgba(169,47,40,.12);border-radius:999px;font-size:.78rem;font-weight:800}.access-intro{color:var(--wedding-muted);line-height:1.75}.admin-login-shell{display:grid;grid-template-columns:minmax(300px,.9fr) minmax(340px,440px);width:min(980px,100%);overflow:hidden;background:#fff9f2f0;border:1px solid rgba(255,255,255,.72);border-radius:8px;box-shadow:0 28px 90px #24181429}.admin-login-copy{display:grid;gap:18px;align-content:center;min-height:500px;padding:clamp(30px,5vw,54px);color:#fff;background:linear-gradient(135deg,#12312df5,#2c201dd1),repeating-linear-gradient(0deg,rgba(255,255,255,.055) 0 1px,transparent 1px 96px)}.admin-login-copy p,.admin-login-copy h1,.admin-login-copy span{margin:0}.admin-login-copy p{color:#f6c27a;font-size:.82rem;font-weight:850;text-transform:uppercase}.admin-login-copy h1{max-width:420px;font-family:Georgia,Times New Roman,serif;font-size:clamp(2.8rem,6vw,5rem);font-weight:500;line-height:.98}.admin-login-copy span{max-width:430px;color:#fff6ea;line-height:1.8}.admin-login-icon{display:inline-grid;place-items:center;width:64px;height:64px;color:#12312d;background:#f6c27a;border-radius:999px}.admin-login-shell .admin-login-card{width:100%;min-height:500px;border:0;border-radius:0;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}.access-card p,.admin-login-card p{display:inline-flex;gap:8px;align-items:center;margin:0;color:var(--wedding-red);font-size:.82rem;font-weight:850;text-transform:uppercase}.access-card h1,.admin-login-card h1,.admin-login-card h2,.admin-heading h1{margin:0;font-family:var(--font-display);font-size:clamp(2.4rem,6vw,4.2rem);font-weight:500;line-height:1}.admin-login-card h2{font-size:clamp(2rem,4vw,3rem)}.access-card label,.admin-login-card label,.admin-panel label{font-weight:850}.access-card input,.admin-login-card input,.admin-panel input{width:100%;min-height:56px;padding:0 15px;color:#2c201d;background:#fffaf5e6;border:1px solid #d6c3b3;border-radius:8px}.access-seal{display:inline-grid;place-items:center;width:68px;height:68px;color:var(--wedding-paper);background:var(--wedding-red);border:1px solid var(--wedding-gold);border-radius:999px;font-family:var(--font-display);font-size:2rem;box-shadow:0 18px 44px #651e1b3d}.access-loading-page{background:linear-gradient(145deg,var(--wedding-red-dark),var(--wedding-red-deep)),var(--wedding-red-dark)}.access-loading-card{justify-items:center;text-align:center}.admin-page{align-items:start;background:linear-gradient(180deg,#fff9f2f0,#edf7f3db),repeating-linear-gradient(90deg,rgba(15,118,110,.04) 0 1px,transparent 1px 118px);place-items:stretch center}.admin-dashboard{display:grid;gap:28px;width:min(1180px,100%)}.admin-heading p{margin:0 0 10px;color:#0f766e;font-size:.82rem;font-weight:850;text-transform:uppercase}.admin-panels{display:grid;grid-template-columns:minmax(280px,.75fr) minmax(0,1.25fr);gap:18px;align-items:start}.admin-panel{display:grid;gap:16px;padding:clamp(22px,4vw,34px);background:#fffffff0;border:1px solid #eaded2;border-radius:8px;box-shadow:var(--shadow-soft)}.admin-panel-title{display:flex;gap:10px;align-items:center;justify-content:space-between}.admin-panel-title h2{flex:1;margin:0;font-family:Georgia,Times New Roman,serif;font-size:2rem;font-weight:500}.admin-panel-hint{margin:0;color:#66514a;line-height:1.7}.photo-admin-panel{grid-column:1 / -1}.admin-photo-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.admin-photo-card{display:grid;gap:12px;min-width:0;padding:12px;background:#fffaf5;border:1px solid #eaded2;border-radius:8px}.admin-photo-card img{width:100%;aspect-ratio:4 / 5;object-fit:cover;background:#eaded2;border-radius:6px}.admin-photo-copy{display:grid;gap:5px}.admin-photo-copy span{color:#9d352d;font-size:.78rem;font-weight:850}.admin-photo-copy strong{color:var(--wedding-ink);font-size:1rem}.admin-photo-copy code{overflow:hidden;color:#66514a;font-size:.78rem;text-overflow:ellipsis;white-space:nowrap}.photo-file-control{display:grid;place-items:center;min-height:42px;padding:0 12px;color:#66514a;background:#fff;border:1px dashed #d6c3b3;border-radius:8px;cursor:pointer;font-weight:800;text-align:center}.photo-file-control input{position:absolute;width:1px;height:1px;min-height:1px;padding:0;overflow:hidden;border:0;clip:rect(0 0 0 0);white-space:nowrap;clip-path:inset(50%)}.photo-replace-button{width:100%}.photo-replace-button:disabled{cursor:not-allowed;opacity:.62;transform:none}.guest-table-wrap{overflow:auto}.guest-table{width:100%;border-collapse:collapse;min-width:620px}.guest-table th,.guest-table td{padding:14px 12px;text-align:left;border-bottom:1px solid #eaded2}.guest-table th{color:#0f766e;font-size:.82rem;text-transform:uppercase}.empty-guests{margin:0;color:#66514a}.field-group{display:grid;gap:10px}.field-group label{font-weight:800}.field-group input{width:100%;min-height:58px;padding:0 16px;color:var(--wedding-ink);background:#fffdf7e6;border:1px solid #d5bfa9;border-radius:var(--radius-small);transition:background .2s var(--ease-out),border-color .2s var(--ease-out),box-shadow .2s var(--ease-out)}.field-group input:focus{background:#fff;border-color:var(--wedding-red);box-shadow:0 0 0 4px #a92f281c,0 14px 30px #651e1b14}.field-group input[aria-invalid=true]{border-color:#a23434;box-shadow:0 0 0 3px #a234341f}.field-error,.form-message{margin:0;font-size:.92rem}.field-error,.error-message{color:#8f2525}.success-message{display:flex;gap:10px;align-items:flex-start;padding:14px;color:var(--wedding-red-deep);background:#d9a85e24;border:1px solid rgba(169,47,40,.14);border-radius:var(--radius-small)}.success-message span{display:grid;gap:3px}.success-message strong{color:var(--wedding-red)}.primary-button,.footer-secret{display:inline-flex;gap:9px;align-items:center;justify-content:center;min-height:50px;padding:0 18px;color:#fff;background:linear-gradient(135deg,var(--wedding-red),var(--wedding-red-deep));border:0;border-radius:var(--radius-small);font-weight:850;box-shadow:0 18px 46px #8f171738;transition:background .22s var(--ease-out),box-shadow .22s var(--ease-out),transform .22s var(--ease-out)}.primary-button:hover,.footer-secret:hover{box-shadow:0 24px 62px #8f17174d;transform:translateY(-2px)}.primary-button:disabled{cursor:wait;opacity:.68}.site-footer{display:flex;gap:18px;align-items:center;justify-content:space-between;padding:26px clamp(18px,5vw,72px);color:#fff;background:linear-gradient(120deg,var(--wedding-red-dark),var(--wedding-red-deep)),var(--wedding-red-dark);border-top:1px solid rgba(246,214,154,.18)}.footer-record-link,.footer-record-text{color:#ffffffc2;font-size:.92rem;line-height:1.6;text-align:center}.footer-record-link{text-decoration:none}.footer-record-link:hover{color:#fff;text-decoration:underline;text-underline-offset:4px}.footer-secret{min-height:42px;background:linear-gradient(135deg,var(--wedding-gold-bright),var(--wedding-gold));color:#2c201d;box-shadow:0 18px 46px #f6c27a2e}.invitation-opening-overlay{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:28px;overflow:hidden;pointer-events:all;background:linear-gradient(135deg,#3f1513fc,#a92f28fa 52%,#651e1bfc),repeating-linear-gradient(45deg,rgba(246,214,154,.11) 0 1px,transparent 1px 28px);animation:opening-overlay-fade 2.65s var(--ease-out) forwards}.opening-glow{position:absolute;inset:0;background:linear-gradient(90deg,#ffe3a800,#ffe3a833,#ffe3a800),linear-gradient(180deg,rgba(255,248,239,.16),transparent 34%,rgba(0,0,0,.16));opacity:0;animation:opening-light-sweep 2.25s .22s var(--ease-out) forwards}.opening-card-stage{position:relative;width:min(430px,84vw);aspect-ratio:.72;perspective:1200px;animation:opening-stage-arrive 2.25s var(--ease-out) forwards}.opening-card-shadow{position:absolute;right:12%;bottom:-18px;left:12%;height:42px;background:#140e0c57;filter:blur(18px);transform:scaleX(.86);animation:opening-shadow-soften 2.25s var(--ease-out) forwards}.opening-card{position:absolute;inset:0;overflow:hidden;color:var(--wedding-paper);background:linear-gradient(135deg,#fff8eff5,#fff1e2eb),repeating-linear-gradient(90deg,rgba(183,53,43,.06) 0 1px,transparent 1px 22px);border:1px solid rgba(255,227,168,.82);border-radius:var(--radius-card);box-shadow:0 36px 120px #140e0c61,inset 0 0 0 1px #ffffff94;transform-style:preserve-3d}.opening-card:before,.opening-card:after{position:absolute;inset:18px;z-index:1;pointer-events:none;content:"";border:1px solid rgba(233,184,111,.48);border-radius:11px}.opening-card:after{inset:26px;border-color:#b7352b29}.opening-card-inner{position:absolute;inset:0;z-index:2;display:grid;gap:9px;place-items:center;align-content:center;padding:34px;color:var(--wedding-red-deep);text-align:center;opacity:0;transform:translateY(18px) scale(.98);animation:opening-card-message 1.75s .7s var(--ease-out) forwards}.opening-card-kicker,.opening-card-date{color:#8a5a2b;font-size:.76rem;font-weight:850;text-transform:uppercase}.opening-card-inner strong{display:block;color:var(--wedding-red);font-family:Songti SC,STSong,SimSun,serif;font-size:clamp(4.8rem,22vw,7.2rem);line-height:.92;text-shadow:0 8px 24px rgba(183,53,43,.16)}.opening-card-couple{color:var(--wedding-ink);font-family:var(--font-display);font-size:clamp(1.55rem,7vw,2.35rem);line-height:1}.opening-card-date{margin-top:4px;color:#6a4b30}.opening-card-door{position:absolute;top:0;bottom:0;z-index:4;display:grid;place-items:center;width:50.2%;overflow:hidden;background:linear-gradient(135deg,#ffe3a82e,#ffe3a800),linear-gradient(180deg,#b7352b,#7d1d1a);border:1px solid rgba(255,227,168,.56);backface-visibility:hidden;transform-style:preserve-3d}.opening-card-door span{color:var(--wedding-gold-bright);font-family:Songti SC,STSong,SimSun,serif;font-size:clamp(3rem,15vw,5rem);font-weight:900;text-shadow:0 5px 22px rgba(0,0,0,.24)}.opening-card-door-left{left:0;border-radius:var(--radius-card) 0 0 var(--radius-card);transform-origin:left center;animation:opening-door-left 1.85s .42s cubic-bezier(.2,.74,.2,1) forwards}.opening-card-door-right{right:0;border-radius:0 var(--radius-card) var(--radius-card) 0;transform-origin:right center;animation:opening-door-right 1.85s .42s cubic-bezier(.2,.74,.2,1) forwards}.opening-sparkle{position:absolute;z-index:6;width:8px;height:8px;background:var(--wedding-gold-bright);border-radius:999px;box-shadow:0 0 18px #ffe3a8e6;opacity:0;animation:opening-sparkle-bloom 1.8s .78s var(--ease-out) forwards}.opening-sparkle-top-left{top:10%;left:16%;--sparkle-x: -38px;--sparkle-y: -44px}.opening-sparkle-top-right{top:14%;right:14%;--sparkle-x: 42px;--sparkle-y: -38px}.opening-sparkle-middle-left{top:48%;left:8%;--sparkle-x: -52px;--sparkle-y: 4px}.opening-sparkle-middle-right{top:48%;right:8%;--sparkle-x: 52px;--sparkle-y: 4px}.opening-sparkle-bottom-left{bottom:15%;left:20%;--sparkle-x: -32px;--sparkle-y: 42px}.opening-sparkle-bottom-right{right:20%;bottom:13%;--sparkle-x: 36px;--sparkle-y: 42px}.confetti-layer{position:fixed;inset:0;z-index:60;pointer-events:none;overflow:hidden}.confetti-heart{position:absolute;top:-36px;display:grid;place-items:center;color:#e95d71;animation:heart-fall 1.35s ease-in forwards}.cursor-glow{position:fixed;display:block;margin:-5px 0 0 -5px;background:radial-gradient(circle,#fff3c9f5 0 22%,#e9b86fe0 23% 48%,#b7352b00 68%),linear-gradient(90deg,#ffe3a800,#ffe3a8e6,#b7352b00);border-radius:999px;box-shadow:0 0 8px #e9b86f80,0 0 14px #b7352b29;transform:translateZ(0) rotate(var(--glow-rotation));animation:cursor-light-trail .62s var(--ease-out) forwards;will-change:transform,opacity}.cursor-glow:after{position:absolute;top:50%;right:42%;width:30px;height:2px;content:"";background:linear-gradient(90deg,#e9b86f00,#ffe3a8db);border-radius:999px;transform:translateY(-50%)}.celebration-glyph{position:fixed;display:grid;place-items:center;width:72px;height:72px;margin:-36px 0 0 -36px;color:#d71920;font-family:Songti SC,STSong,Georgia,serif;font-size:3.5rem;font-weight:900;line-height:1;text-shadow:0 0 0 #fff3c9,0 8px 26px rgba(143,23,23,.3),0 0 28px rgba(246,194,122,.62);transform:translateZ(0) scale(var(--glyph-scale, 1));transform-origin:center;animation:xi-flash .48s ease-in-out infinite alternate;will-change:transform,filter,opacity}.celebration-glyph:before,.celebration-glyph:after{position:absolute;inset:5px;content:"";border:1px solid rgba(246,194,122,.64);border-radius:999px;animation:xi-ring .9s ease-out infinite}.celebration-glyph:after{inset:-4px;border-color:#d7192047;animation-delay:.18s}.firework-particle{position:fixed;display:grid;place-items:center;margin:-6px 0 0 -6px;border-radius:999px;box-shadow:0 0 0 1px #ffffff6b,0 0 18px currentColor;transform:translateZ(0);animation:firework-pop .9s var(--ease-out) forwards;will-change:transform,opacity}.firework-particle-spark{width:4px!important;border-radius:999px}.firework-particle-xi{background:transparent;box-shadow:none;font-family:Songti SC,STSong,Georgia,serif;font-size:clamp(.9rem,2vw,1.2rem);font-weight:900;line-height:1;text-shadow:0 6px 16px rgba(143,23,23,.22)}@keyframes hero-ambient-drift{0%{opacity:.62;transform:translate3d(-2%,1%,0) scale(1)}to{opacity:.86;transform:translate3d(2.5%,-1.5%,0) scale(1.06)}}@keyframes hero-light-sweep{0%{opacity:0;transform:rotate(10deg) translate3d(-28%,0,0)}34%{opacity:.72}to{opacity:0;transform:rotate(10deg) translate3d(410%,0,0)}}@keyframes heart-fall{0%{opacity:0;transform:translateY(0) rotate(0)}15%{opacity:1}to{opacity:0;transform:translateY(105vh) rotate(220deg)}}@keyframes cursor-light-trail{0%{opacity:0;transform:translateZ(0) rotate(var(--glow-rotation)) scale(.62)}18%{opacity:.82}to{opacity:0;transform:translate3d(var(--glow-x),var(--glow-y),0) rotate(var(--glow-rotation)) scale(.18)}}@keyframes xi-flash{0%{filter:brightness(1);opacity:.9}to{filter:brightness(1.22);opacity:1}}@keyframes xi-ring{0%{opacity:.78;transform:scale(.74)}to{opacity:0;transform:scale(1.42)}}@keyframes firework-pop{0%{opacity:0;transform:translateZ(0) rotate(0) scale(.5)}12%{opacity:1}72%{opacity:.95}to{opacity:0;transform:translate3d(var(--particle-x),var(--particle-y),0) rotate(var(--particle-rotation)) scale(.18)}}@keyframes opening-overlay-fade{0%,78%{opacity:1}to{opacity:0}}@keyframes opening-light-sweep{0%{opacity:0;transform:translate(-22%)}28%,68%{opacity:1}to{opacity:0;transform:translate(22%)}}@keyframes opening-stage-arrive{0%{opacity:0;transform:translate3d(0,18px,0) scale(.92)}18%,72%{opacity:1;transform:translateZ(0) scale(1)}to{opacity:0;transform:translate3d(0,-10px,0) scale(1.02)}}@keyframes opening-shadow-soften{0%{opacity:0;transform:scaleX(.68)}24%,78%{opacity:1;transform:scaleX(.94)}to{opacity:0;transform:scaleX(1.08)}}@keyframes opening-card-message{0%{opacity:0;transform:translateY(18px) scale(.98)}44%,to{opacity:1;transform:translateY(0) scale(1)}}@keyframes opening-door-left{0%{transform:rotateY(0)}to{transform:rotateY(-118deg)}}@keyframes opening-door-right{0%{transform:rotateY(0)}to{transform:rotateY(118deg)}}@keyframes opening-sparkle-bloom{0%{opacity:0;transform:translateZ(0) scale(.5)}24%{opacity:1}to{opacity:0;transform:translate3d(var(--sparkle-x),var(--sparkle-y),0) scale(.12)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.invitation-opening-overlay{animation:opening-overlay-fade .01ms linear forwards}.hero-ambient:before{animation:none;opacity:.68;transform:none}.hero-ambient:after{display:none}}@media(max-width:920px){.story-layout,.photo-dialog,.collection-heading{grid-template-columns:1fr}.gallery-grid,.gallery-collection-section .gallery-grid,.collection-grid,.gallery-section .collection-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.collection-card,.collection-card:nth-child(1),.collection-card:nth-child(6),.photo-tile{grid-column:auto}.photo-dialog{overflow:auto}.dialog-media{min-height:420px}.dialog-image{max-height:560px;min-height:360px}.rsvp-layout{grid-template-columns:1fr}.hero-wedding-card{grid-template-columns:repeat(2,minmax(0,1fr));width:min(650px,100%)}.hero-wedding-card .countdown-panel{grid-column:1 / -1;min-height:92px}.rsvp-invitation-panel{min-height:340px}.admin-panels{grid-template-columns:1fr}.admin-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-login-shell{grid-template-columns:1fr}.admin-login-copy,.admin-login-shell .admin-login-card{min-height:auto}}@media(max-width:640px){.site-header{padding:14px 16px}.site-header nav{gap:14px}.hero{min-height:760px}.hero-content{min-height:760px;margin:0 auto;padding:94px 0 24px}.hero-image{object-position:51% 24%}.hero h1{font-size:clamp(2.8rem,13vw,4rem)}.hero-invitation-copy{margin-top:16px;font-size:1rem}.hero-wedding-card{grid-template-columns:1fr;margin-top:24px;border-radius:14px}.wedding-detail{min-height:66px;padding:12px 15px;border-right:0;border-bottom:1px solid rgba(101,30,27,.12)}.hero-wedding-card .countdown-panel{grid-column:auto;grid-template-columns:auto auto;gap:8px;justify-content:center;min-height:74px}.countdown-panel span{font-size:2.35rem}.gallery-grid,.gallery-collection-section .gallery-grid,.collection-grid,.gallery-section .collection-grid{grid-template-columns:1fr}.collection-card{min-height:360px}.photo-tile-portrait{aspect-ratio:2 / 3}.photo-tile-landscape{aspect-ratio:3 / 2}.gallery-section .collection-card{min-height:390px}.collection-card-copy{gap:8px;padding:96px 18px 18px;background:linear-gradient(0deg,#000000c7,#0000)}.collection-card-copy strong{font-size:clamp(2.1rem,12vw,3.1rem);line-height:.96}.collection-card-copy small{width:fit-content;padding:3px 8px;color:#12312d;background:#f6c27a;border-radius:6px;font-size:.85rem}.collection-card-copy em{display:-webkit-box;max-width:100%;overflow:hidden;font-size:.98rem;line-height:1.55;-webkit-box-orient:vertical;-webkit-line-clamp:2}.collection-card-action{top:14px;right:14px;min-height:44px;padding:0 11px;font-size:.92rem}.dialog-media{min-height:320px}.photo-dialog{max-height:calc(100svh - 20px);border-radius:14px}.dialog-copy{gap:14px;padding:22px}.dialog-nav{width:44px;height:44px}.site-footer{display:grid;justify-items:start}.access-page{padding:92px 18px 104px}.access-page:after{inset:10px;border-radius:18px}.access-brand{top:25px;left:24px}.access-card{padding:26px 24px;border-radius:18px}.access-record{right:24px;bottom:28px;left:24px;display:grid;gap:6px}.invitation-opening-overlay{padding:18px}.opening-card-stage{width:min(310px,82vw)}.opening-card-inner{gap:8px;padding:26px}.opening-card-kicker,.opening-card-date{font-size:.68rem}.opening-card-door span{font-size:clamp(2.8rem,18vw,4.2rem)}.opening-sparkle{width:6px;height:6px}.admin-photo-grid{grid-template-columns:1fr}}
