:root{--blue-deep: #0d1b4b;--blue-mid: #1a2a6c;--rose: #e8607a;--rose-light: #f4a0b0;--gold: #d4af37;--gold-light: #f0d060;--white: #fdf6ee;--font-heading: "Cormorant Garamond", Georgia, serif;--font-body: "Lato", sans-serif}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--blue-deep);color:var(--white);font-family:var(--font-body);overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{display:block;max-width:100%;height:auto}.hero{position:relative;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;padding:3rem 1.5rem 5rem}.hero-bg{position:absolute;inset:0;background:linear-gradient(135deg,#0d1b4b,#1a2a6c 30%,#3a1a4b 55%,#5a1a2e 75%,#1a2a6c);background-size:300% 300%;animation:gradientShift 12s ease infinite;z-index:0}@keyframes gradientShift{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.hero-bg:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 70% 60% at 50% 40%,rgba(212,175,55,.08) 0%,transparent 70%)}.particles{position:absolute;inset:0;pointer-events:none;z-index:1}.particle{position:absolute;-webkit-user-select:none;user-select:none;will-change:transform,opacity;bottom:0}.hero-content{position:relative;z-index:2;text-align:center;max-width:680px;width:100%}.hero-subtitle{font-family:var(--font-body);font-size:clamp(.65rem,2vw,.85rem);letter-spacing:.25em;text-transform:uppercase;color:var(--gold);margin-bottom:1rem}.hero-title{font-family:var(--font-heading);font-size:clamp(3rem,10vw,7rem);font-weight:300;line-height:1.05;color:var(--white);text-shadow:0 0 40px rgba(212,175,55,.35),0 2px 8px rgba(0,0,0,.5);margin-bottom:1.25rem}.hero-divider{display:flex;justify-content:center;margin-bottom:2rem}.hero-divider span{display:block;height:1px;width:180px;background:linear-gradient(90deg,transparent,var(--gold) 30%,var(--rose) 70%,transparent);transform-origin:center}.wish-text{font-family:var(--font-heading);font-size:clamp(1.1rem,2.5vw,1.5rem);font-weight:300;font-style:italic;line-height:1.9;color:#fdf6eeeb}.wish-text p{margin:0}.scroll-hint{position:absolute;bottom:1.8rem;left:50%;transform:translate(-50%);z-index:2;opacity:.7}.hero-portrait-wrap{position:relative;width:clamp(140px,28vw,220px);height:clamp(140px,28vw,220px);margin:0 auto 1.5rem}.hero-portrait{width:100%;height:100%;border-radius:50%;object-fit:cover;object-position:center top;position:relative;z-index:2;display:block}.hero-portrait-ring{position:absolute;inset:-5px;border-radius:50%;background:conic-gradient(from 0deg,var(--gold),var(--rose),var(--blue-mid),var(--gold));z-index:1;animation:ringRotate 6s linear infinite}.hero-portrait-ring:after{content:"";position:absolute;inset:4px;border-radius:50%;background:#0d1b4b;z-index:1}.hero-portrait{position:relative;z-index:3}.hero-portrait-glow{position:absolute;inset:-20px;border-radius:50%;background:radial-gradient(circle,rgba(232,96,122,.35) 0%,rgba(212,175,55,.2) 40%,transparent 70%);z-index:0;pointer-events:none}@keyframes ringRotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.gallery-section{padding:5rem 1.5rem 6rem;background:linear-gradient(180deg,#0d1b4b,#0a1230 40%,#120828);position:relative;overflow:hidden}.gallery-section:before{content:"";position:absolute;inset:0;background-image:radial-gradient(circle,rgba(212,175,55,.06) 1px,transparent 1px);background-size:36px 36px;pointer-events:none}.gallery-heading-wrap{text-align:center;margin-bottom:3.5rem;position:relative;z-index:1}.gallery-eyebrow{font-family:var(--font-body);font-size:clamp(.6rem,2vw,.8rem);letter-spacing:.3em;text-transform:uppercase;color:var(--gold);margin-bottom:.75rem}.gallery-title{font-family:var(--font-heading);font-size:clamp(2rem,6vw,4rem);font-weight:300;line-height:1.15;color:var(--white);text-shadow:0 0 30px rgba(232,96,122,.25);margin-bottom:1.25rem}.gallery-divider{height:1px;width:140px;margin:0 auto;background:linear-gradient(90deg,transparent,var(--rose) 40%,var(--gold) 60%,transparent);transform-origin:center}.photo-skeleton{position:absolute;inset:0;background:linear-gradient(90deg,#ffffff0a,#ffffff1a 40%,#ffffff0a);background-size:200% 100%;animation:shimmer 1.6s ease-in-out infinite;border-radius:4px;z-index:2}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.75rem;max-width:1100px;margin:0 auto;position:relative;z-index:1}.photo-card{cursor:pointer;outline:none;border-radius:4px}.photo-card:focus-visible .photo-frame{box-shadow:0 0 0 3px var(--gold),0 8px 40px #d4af3759}.photo-frame{position:relative;border-radius:4px;overflow:hidden;border:1.5px solid rgba(212,175,55,.4);box-shadow:0 4px 24px #00000080,0 0 0 1px #d4af371a;transition:box-shadow .35s ease;aspect-ratio:4 / 3}.photo-card:hover .photo-frame{box-shadow:0 8px 48px #d4af3766,0 0 0 1.5px #d4af3799}.photo-frame img{width:100%;height:100%;object-fit:cover;display:block;position:absolute;inset:0;transition:transform .5s ease}.photo-card:hover .photo-frame img{transform:scale(1.06)}.photo-glow{position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(13,27,75,.55) 100%);pointer-events:none}.photo-caption{text-align:center;font-family:var(--font-heading);font-style:italic;font-size:.95rem;color:var(--rose-light);margin-top:.55rem;padding:0 .5rem}.no-photos{text-align:center;font-family:var(--font-heading);font-style:italic;font-size:1.1rem;color:#fdf6ee8c;max-width:520px;margin:0 auto;line-height:1.8}.no-photos code{font-family:monospace;font-style:normal;color:var(--gold);font-size:.9em}.lightbox-overlay{position:fixed;inset:0;background:#050a1eeb;z-index:100;display:flex;align-items:center;justify-content:center;padding:1.5rem;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.lightbox-inner{position:relative;max-width:min(90vw,860px);max-height:90vh}.lightbox-inner img{width:100%;max-height:78vh;object-fit:contain;border-radius:4px;border:1.5px solid rgba(212,175,55,.5);box-shadow:0 0 80px #d4af3733}.lightbox-caption{text-align:center;font-family:var(--font-heading);font-style:italic;color:var(--rose-light);margin-top:.75rem;font-size:1.35rem}
