
:root{
  --royal:#1a2e6e;--royal-mid:#243d8f;--royal-light:#3355b5;--royal-deep:#0d1a3e;
  --gold:#c9a84c;--gold-light:#e8c96a;--cream:#faf8f4;--white:#ffffff;
  --text-dark:#0d1a3e;--text-mid:#2a3f7a;
}
*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{font-family:'Raleway',sans-serif;background:var(--cream);color:var(--text-dark);overflow-x:hidden;}

/* CANVAS */
#particles-canvas{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0;}
.cursor-glow{position:fixed;width:320px;height:320px;border-radius:50%;background:radial-gradient(circle,rgba(201,168,76,0.055) 0%,transparent 70%);pointer-events:none;z-index:1;transform:translate(-50%,-50%);transition:opacity .3s;}

/* NAV */
nav{position:fixed;top:0;width:100%;z-index:200;padding:18px 52px;display:flex;align-items:center;justify-content:space-between;transition:background .5s,box-shadow .5s,padding .4s;}
nav.scrolled{background:rgba(10,20,55,.97);backdrop-filter:blur(18px);box-shadow:0 1px 0 rgba(201,168,76,.2),0 8px 40px rgba(0,0,0,.35);padding:13px 52px;}
.nav-brand{font-family:'Cormorant Garamond',serif;font-size:1.35rem;font-style:italic;color:var(--gold-light);letter-spacing:2px;opacity:0;transition:opacity .4s;}
nav.scrolled .nav-brand{opacity:1;}
.nav-links{display:flex;gap:36px;list-style:none;}
.nav-links a{font-family:'Cinzel',serif;font-size:.62rem;letter-spacing:3px;color:rgba(255,255,255,.72);text-decoration:none;position:relative;transition:color .3s;}
.nav-links a::after{content:'';position:absolute;bottom:-4px;left:0;width:0;height:1px;background:var(--gold);transition:width .35s;}
.nav-links a:hover{color:var(--gold-light);}
.nav-links a:hover::after{width:100%;}

/* HERO */
.hero{min-height:100vh;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:80px 24px 60px;background:linear-gradient(170deg,#09122e 0%,#0d1a3e 40%,#142060 80%,#1a2e6e 100%);}
.hero-orb{position:absolute;border-radius:50%;filter:blur(80px);pointer-events:none;animation:orbFloat 12s ease-in-out infinite;}
.hero-orb-1{width:500px;height:500px;background:rgba(51,85,181,.16);top:-10%;left:-10%;}
.hero-orb-2{width:400px;height:400px;background:rgba(201,168,76,.065);top:20%;right:-8%;animation-delay:4s;}
.hero-orb-3{width:350px;height:350px;background:rgba(26,46,110,.22);bottom:-5%;left:25%;animation-delay:8s;}
@keyframes orbFloat{0%,100%{transform:translate(0,0) scale(1);}33%{transform:translate(20px,-30px) scale(1.05);}66%{transform:translate(-15px,20px) scale(.97);}}

.hero-stars{position:absolute;inset:0;overflow:hidden;}
.star{position:absolute;border-radius:50%;background:white;animation:twinkle var(--d,3s) ease-in-out infinite;opacity:var(--op,.4);}
@keyframes twinkle{0%,100%{opacity:var(--op,.4);transform:scale(1);}50%{opacity:.08;transform:scale(.4);}}

.hero-content{position:relative;z-index:2;}
.hero-ornament{font-family:'Cinzel',serif;color:var(--gold);font-size:.62rem;letter-spacing:10px;margin-bottom:28px;opacity:0;animation:fadeDownIn 1s ease .3s forwards;}
.hero-monogram{font-family:'Cormorant Garamond',serif;font-size:clamp(4rem,13vw,9rem);font-weight:300;font-style:italic;color:var(--white);line-height:.95;opacity:0;animation:scaleIn 1.4s cubic-bezier(.16,1,.3,1) .5s forwards;text-shadow:0 0 80px rgba(201,168,76,.18);}
.hero-monogram .amp{color:var(--gold-light);font-size:.55em;animation:ampPulse 3s ease-in-out 2s infinite;}
@keyframes ampPulse{0%,100%{text-shadow:0 0 20px rgba(232,201,106,.3);}50%{text-shadow:0 0 50px rgba(232,201,106,.8),0 0 100px rgba(232,201,106,.3);}}
.hero-divider-wrap{display:flex;align-items:center;gap:20px;justify-content:center;margin:32px 0;opacity:0;animation:fadeIn 1s ease 1.2s forwards;}
.hdl{flex:1;max-width:100px;height:1px;background:linear-gradient(90deg,transparent,rgba(201,168,76,.6));}
.hdl.r{background:linear-gradient(90deg,rgba(201,168,76,.6),transparent);}
.hdd{width:6px;height:6px;background:var(--gold);transform:rotate(45deg);box-shadow:0 0 8px rgba(201,168,76,.9);}
.hero-date{font-family:'Cinzel',serif;font-size:1rem;letter-spacing:8px;color:var(--gold-light);opacity:0;animation:fadeIn 1s ease 1.4s forwards;}
.hero-subtitle{font-size:.68rem;color:rgba(255,255,255,.42);letter-spacing:4px;margin-top:8px;opacity:0;animation:fadeIn 1s ease 1.6s forwards;}

.countdown{display:flex;gap:18px;margin-top:56px;justify-content:center;flex-wrap:wrap;opacity:0;animation:fadeUpIn 1s ease 1.8s forwards;}
.count-box{background:rgba(255,255,255,.04);border:1px solid rgba(201,168,76,.2);border-radius:6px;padding:18px 22px;text-align:center;backdrop-filter:blur(6px);transition:border-color .3s,background .3s,transform .3s;position:relative;overflow:hidden;}
.count-box::before{content:'';position:absolute;inset:0;background:linear-gradient(135deg,rgba(201,168,76,.05),transparent);opacity:0;transition:opacity .3s;}
.count-box:hover{border-color:rgba(201,168,76,.5);transform:translateY(-5px);}
.count-box:hover::before{opacity:1;}
.count-num{font-family:'Cormorant Garamond',serif;font-size:2.8rem;font-weight:300;color:var(--gold-light);line-height:1;display:block;transition:transform .2s;}
.count-label{font-size:.52rem;letter-spacing:3px;color:rgba(255,255,255,.38);margin-top:8px;display:block;}

.scroll-cue{position:absolute;bottom:36px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:10px;color:rgba(255,255,255,.28);font-size:.52rem;letter-spacing:3px;opacity:0;animation:fadeIn 1s ease 2.5s forwards;}
.scroll-mouse{width:22px;height:34px;border:1px solid rgba(255,255,255,.22);border-radius:12px;display:flex;justify-content:center;padding-top:6px;}
.scroll-dot{width:3px;height:6px;background:var(--gold);border-radius:3px;animation:scrollDot 2s ease-in-out infinite;}
@keyframes scrollDot{0%{transform:translateY(0);opacity:1;}100%{transform:translateY(10px);opacity:0;}}

/* PETALS */
.petal{position:fixed;pointer-events:none;z-index:1;border-radius:50% 0 50% 0;background:rgba(201,168,76,.22);animation:petalFall linear infinite;}
@keyframes petalFall{0%{transform:translateY(-20px) rotate(0deg);opacity:0;}10%{opacity:1;}90%{opacity:.4;}100%{transform:translateY(110vh) rotate(720deg);opacity:0;}}

/* REVEAL */
.reveal{opacity:0;transform:translateY(52px);transition:opacity .95s cubic-bezier(.16,1,.3,1),transform .95s cubic-bezier(.16,1,.3,1);}
.reveal.visible{opacity:1;transform:translateY(0);}
.reveal-left{opacity:0;transform:translateX(-52px);transition:opacity .95s cubic-bezier(.16,1,.3,1),transform .95s cubic-bezier(.16,1,.3,1);}
.reveal-left.visible{opacity:1;transform:translateX(0);}
.reveal-right{opacity:0;transform:translateX(52px);transition:opacity .95s cubic-bezier(.16,1,.3,1),transform .95s cubic-bezier(.16,1,.3,1);}
.reveal-right.visible{opacity:1;transform:translateX(0);}
.reveal-scale{opacity:0;transform:scale(.88);transition:opacity .95s cubic-bezier(.16,1,.3,1),transform .95s cubic-bezier(.16,1,.3,1);}
.reveal-scale.visible{opacity:1;transform:scale(1);}
.d1{transition-delay:.1s;}.d2{transition-delay:.22s;}.d3{transition-delay:.34s;}.d4{transition-delay:.46s;}.d5{transition-delay:.58s;}.d6{transition-delay:.7s;}

/* SECTIONS */
section{padding:120px 24px;position:relative;z-index:2;}
.section-inner{max-width:960px;margin:0 auto;}
.section-tag{font-family:'Cinzel',serif;font-size:.58rem;letter-spacing:5px;color:var(--gold);margin-bottom:20px;display:flex;align-items:center;gap:14px;}
.section-tag::before,.section-tag::after{content:'';flex:0 0 28px;height:1px;background:var(--gold);opacity:.35;}
.section-title{font-family:'Cormorant Garamond',serif;font-size:clamp(2.2rem,5vw,3.6rem);font-weight:300;font-style:italic;color:var(--royal);margin-bottom:36px;line-height:1.2;}
.gold-bar{width:0;height:2px;background:linear-gradient(90deg,var(--gold),var(--gold-light));margin-bottom:44px;transition:width 1.3s cubic-bezier(.16,1,.3,1) .35s;}
.gold-bar.visible{width:72px;}

/* STORY */
.story-section{background:var(--white);overflow:hidden;}
.story-section::before{content:'';position:absolute;top:-1px;left:0;right:0;height:80px;background:linear-gradient(to bottom,var(--cream),transparent);z-index:1;pointer-events:none;}
.story-grid{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center;}
.story-visual{position:relative;aspect-ratio:3/4;max-height:480px;}
.story-frame{position:absolute;inset:0;background:linear-gradient(135deg,var(--royal) 0%,var(--royal-mid) 50%,#2a4db5 100%);border-radius:4px;overflow:hidden;display:flex;align-items:center;justify-content:center;}
.story-mono-bg{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:11rem;color:rgba(255,255,255,.04);line-height:1;user-select:none;}
.story-mono-c{position:absolute;font-family:'Cormorant Garamond',serif;font-style:italic;font-size:4.5rem;color:rgba(255,255,255,.9);text-shadow:0 0 40px rgba(201,168,76,.4);}
.story-frame-border{position:absolute;inset:14px;border:1px solid rgba(201,168,76,.3);border-radius:2px;pointer-events:none;}
.sc{position:absolute;width:20px;height:20px;border-color:var(--gold);border-style:solid;opacity:.65;}
.sc.tl{top:22px;left:22px;border-width:2px 0 0 2px;}
.sc.tr{top:22px;right:22px;border-width:2px 2px 0 0;}
.sc.bl{bottom:22px;left:22px;border-width:0 0 2px 2px;}
.sc.br{bottom:22px;right:22px;border-width:0 2px 2px 0;}
.story-body{font-size:1rem;line-height:2;color:#3a4a6e;font-weight:300;margin-bottom:24px;}
.story-quote{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:1.42rem;color:var(--royal-mid);border-left:3px solid var(--gold);padding-left:24px;margin:36px 0;line-height:1.55;}

/* INFO CARDS */
.info-section{background:var(--cream);}
.info-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin-top:32px;}
.info-card{background:var(--white);border:1px solid rgba(26,46,110,.07);border-radius:4px;padding:40px 28px;text-align:center;position:relative;overflow:hidden;transition:transform .4s cubic-bezier(.16,1,.3,1),box-shadow .4s;}
.info-card::after{content:'';position:absolute;bottom:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--gold),var(--gold-light));transform:scaleX(0);transform-origin:left;transition:transform .5s cubic-bezier(.16,1,.3,1);}
.info-card:hover{transform:translateY(-10px);box-shadow:0 28px 70px rgba(26,46,110,.13);}
.info-card:hover::after{transform:scaleX(1);}
.info-icon{font-size:2rem;margin-bottom:20px;display:block;}
.info-card h3{font-family:'Cinzel',serif;font-size:.65rem;letter-spacing:3px;color:var(--royal);margin-bottom:14px;}
.info-card p{font-size:.9rem;color:#5a6a8a;line-height:1.85;font-weight:300;}
.info-card strong{color:var(--royal-mid);font-weight:500;}

/* GIFTS */
.gifts-section{background:linear-gradient(160deg,var(--royal-deep) 0%,#1a2e6e 60%,#243d8f 100%);text-align:center;overflow:hidden;position:relative;}
.gifts-section::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 30% 60%,rgba(201,168,76,.06) 0%,transparent 60%),radial-gradient(ellipse at 75% 20%,rgba(51,85,181,.12) 0%,transparent 50%);}
.gifts-section .section-title{color:var(--white);}
.gifts-section .section-tag{color:var(--gold-light);justify-content:center;}
.gifts-section .section-tag::before,.gifts-section .section-tag::after{background:var(--gold-light);opacity:.25;}
.gifts-text{color:rgba(255,255,255,.62);font-size:1rem;line-height:1.9;margin:0 auto 44px;max-width:540px;}
.btn-gift{display:inline-flex;align-items:center;gap:12px;background:linear-gradient(135deg,var(--gold) 0%,var(--gold-light) 100%);color:var(--royal-deep);padding:18px 50px;font-family:'Cinzel',serif;font-size:.68rem;letter-spacing:3px;text-decoration:none;border-radius:2px;transition:transform .4s cubic-bezier(.16,1,.3,1),box-shadow .4s;box-shadow:0 6px 40px rgba(201,168,76,.28);position:relative;overflow:hidden;}
.btn-gift::before{content:'';position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2),transparent);opacity:0;transition:opacity .3s;}
.btn-gift:hover{transform:translateY(-5px) scale(1.02);box-shadow:0 14px 60px rgba(201,168,76,.5);}
.btn-gift:hover::before{opacity:1;}
.gifts-note{color:rgba(255,255,255,.22);font-size:.7rem;margin-top:20px;}
.fl-ring{position:absolute;border-radius:50%;border:1px solid rgba(201,168,76,.1);pointer-events:none;animation:ringFloat 9s ease-in-out infinite;}
.r1{width:240px;height:240px;top:5%;left:3%;}.r2{width:160px;height:160px;top:55%;right:5%;animation-delay:3s;}.r3{width:90px;height:90px;bottom:10%;left:18%;animation-delay:6s;}
@keyframes ringFloat{0%,100%{transform:translate(0,0);}50%{transform:translate(12px,-22px);}}

/* RSVP */
.rsvp-section{background:var(--cream);}
.rsvp-form{background:var(--white);border:1px solid rgba(26,46,110,.07);border-radius:6px;padding:56px;box-shadow:0 32px 90px rgba(26,46,110,.09);position:relative;overflow:hidden;}
.rsvp-form::before{content:'';position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--royal),var(--gold),var(--royal-light));}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-bottom:24px;}
.form-row.full{grid-template-columns:1fr;}
.form-group{display:flex;flex-direction:column;gap:10px;}
.form-group label{font-family:'Cinzel',serif;font-size:.58rem;letter-spacing:3px;color:var(--royal-mid);}
.form-group input,.form-group select,.form-group textarea{border:1px solid rgba(26,46,110,.14);border-radius:2px;padding:14px 18px;font-family:'Raleway',sans-serif;font-size:.9rem;color:var(--text-dark);background:var(--cream);transition:border-color .3s,box-shadow .3s,background .3s;outline:none;}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--royal-mid);background:var(--white);box-shadow:0 0 0 4px rgba(26,46,110,.06);}
.form-group textarea{resize:vertical;min-height:90px;}
.btn-submit{width:100%;padding:18px;background:var(--royal);color:var(--white);font-family:'Cinzel',serif;font-size:.68rem;letter-spacing:4px;border:none;border-radius:2px;cursor:pointer;transition:background .3s,transform .3s,box-shadow .3s;margin-top:8px;}
.btn-submit:hover{background:var(--royal-light);transform:translateY(-2px);box-shadow:0 12px 40px rgba(26,46,110,.28);}
.btn-submit:active{transform:translateY(0);}
.form-success{display:none;text-align:center;padding:60px 40px;}
.success-icon{font-size:3rem;margin-bottom:20px;display:block;animation:successPop .6s cubic-bezier(.16,1,.3,1) both;}
@keyframes successPop{0%{transform:scale(0);}100%{transform:scale(1);}}
.success-title{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:2rem;color:var(--royal);margin-bottom:12px;}
.success-sub{font-size:.95rem;color:#5a6a8a;font-weight:300;}

/* ADMIN */
.admin-section{background:var(--royal-deep);padding:80px 24px;}
.admin-inner{max-width:960px;margin:0 auto;}
.admin-label{font-family:'Cinzel',serif;font-size:.52rem;letter-spacing:4px;color:rgba(255,255,255,.18);margin-bottom:18px;display:block;}
.admin-toggle{background:none;border:1px solid rgba(201,168,76,.22);color:rgba(255,255,255,.38);padding:12px 28px;font-family:'Cinzel',serif;font-size:.58rem;letter-spacing:3px;cursor:pointer;border-radius:2px;transition:all .3s;}
.admin-toggle:hover{border-color:var(--gold);color:var(--gold);background:rgba(201,168,76,.04);}
.admin-panel{display:none;margin-top:36px;background:rgba(255,255,255,.03);border:1px solid rgba(201,168,76,.14);border-radius:4px;padding:40px;animation:slideDown .4s cubic-bezier(.16,1,.3,1);}
@keyframes slideDown{from{opacity:0;transform:translateY(-16px);}to{opacity:1;transform:translateY(0);}}
.admin-login{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:28px;}
.admin-login input{flex:1;min-width:200px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);color:white;padding:12px 18px;border-radius:2px;font-family:'Raleway',sans-serif;font-size:.9rem;outline:none;transition:border-color .3s;}
.admin-login input:focus{border-color:rgba(201,168,76,.5);}
.admin-login input::placeholder{color:rgba(255,255,255,.22);}
.btn-admin{background:linear-gradient(135deg,var(--gold),var(--gold-light));color:var(--royal-deep);border:none;padding:12px 28px;font-family:'Cinzel',serif;font-size:.58rem;letter-spacing:2px;cursor:pointer;border-radius:2px;transition:transform .2s,box-shadow .2s;}
.btn-admin:hover{transform:translateY(-1px);box-shadow:0 6px 20px rgba(201,168,76,.28);}
.login-err{color:#f87171;font-size:.78rem;width:100%;display:none;}
.guest-list{display:none;}
.guest-list h3{font-family:'Cormorant Garamond',serif;font-style:italic;color:var(--gold-light);font-size:1.8rem;margin-bottom:28px;}
.guest-stats{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:32px;}
.stat-card{background:rgba(201,168,76,.06);border:1px solid rgba(201,168,76,.16);border-radius:4px;padding:18px 26px;text-align:center;flex:1;min-width:90px;transition:background .3s;}
.stat-card:hover{background:rgba(201,168,76,.1);}
.stat-num{font-family:'Cormorant Garamond',serif;font-size:2.4rem;color:var(--gold-light);}
.stat-label{font-size:.52rem;letter-spacing:3px;color:rgba(255,255,255,.38);margin-top:4px;display:block;}
.guest-table{width:100%;border-collapse:collapse;font-size:.84rem;}
.guest-table th{font-family:'Cinzel',serif;font-size:.52rem;letter-spacing:2px;color:var(--gold);padding:14px 16px;text-align:left;border-bottom:1px solid rgba(201,168,76,.18);}
.guest-table td{padding:14px 16px;color:rgba(255,255,255,.72);border-bottom:1px solid rgba(255,255,255,.04);vertical-align:top;transition:background .2s;}
.guest-table tr:hover td{background:rgba(255,255,255,.025);}
.badge{display:inline-block;padding:3px 12px;border-radius:20px;font-size:.58rem;letter-spacing:1px;}
.badge-yes{background:rgba(74,222,128,.1);color:#4ade80;border:1px solid rgba(74,222,128,.22);}
.badge-no{background:rgba(248,113,113,.1);color:#f87171;border:1px solid rgba(248,113,113,.22);}
.btn-export{margin-top:24px;background:none;border:1px solid rgba(201,168,76,.38);color:var(--gold);padding:11px 28px;font-family:'Cinzel',serif;font-size:.58rem;letter-spacing:2px;cursor:pointer;border-radius:2px;transition:all .3s;}
.btn-export:hover{background:rgba(201,168,76,.07);border-color:var(--gold);}
.empty-list{color:rgba(255,255,255,.28);font-style:italic;text-align:center;padding:40px;}

/* FOOTER */
footer{background:linear-gradient(135deg,var(--royal-deep),var(--royal));text-align:center;padding:60px 24px;position:relative;overflow:hidden;}
footer::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 50% 0%,rgba(201,168,76,.07),transparent 60%);}
.footer-names{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:2.4rem;color:var(--white);margin-bottom:12px;position:relative;}
.footer-date{font-family:'Cinzel',serif;font-size:.62rem;letter-spacing:7px;color:var(--gold-light);margin-bottom:32px;position:relative;}
.footer-divider{width:80px;height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent);margin:0 auto 24px;}
.footer-copy{font-size:.72rem;color:rgba(255,255,255,.22);letter-spacing:1px;position:relative;}

/* KEYFRAMES */
@keyframes fadeDownIn{from{opacity:0;transform:translateY(-16px);}to{opacity:1;transform:translateY(0);}}
@keyframes fadeUpIn{from{opacity:0;transform:translateY(24px);}to{opacity:1;transform:translateY(0);}}
@keyframes fadeIn{from{opacity:0;}to{opacity:1;}}
@keyframes scaleIn{from{opacity:0;transform:scale(.84);}to{opacity:1;transform:scale(1);}}

@media(max-width:768px){
  nav{padding:12px 18px;}
  .nav-links{gap:16px;}
  .nav-links a{font-size:.52rem;letter-spacing:1px;}
  .story-grid{grid-template-columns:1fr;}
  .story-visual{aspect-ratio:16/9;max-height:220px;}
  .info-grid{grid-template-columns:1fr;}
  .form-row{grid-template-columns:1fr;}
  .rsvp-form{padding:28px 18px;}
  .countdown{gap:10px;}
  .count-box{padding:12px 14px;}
  .count-num{font-size:2rem;}
}
