@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,500;0,600;0,700;1,500;1,600&display=swap";:root{font-family:DM Sans,sans-serif;color:#f8f5ff;background:#17132d;font-synthesis:none;text-rendering:optimizeLegibility;font-smooth:always;font-weight:400;--ink:#f8f5ff;--muted:#aaa4c2;--pink:#ff8fc7;--blue:#8bc5ff;--gold:#f6d68a;--panel:rgba(255,255,255,.075);--line:rgba(255,255,255,.13)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;background:#17132d}button,input{font:inherit}button{cursor:pointer}button:disabled{opacity:.55;cursor:not-allowed}.gate-page,.admin-page{min-height:100vh;position:relative;overflow:hidden;background:radial-gradient(ellipse at 15% 20%,#3b2860 0,transparent 38%),radial-gradient(ellipse at 85% 80%,#163d61 0,transparent 38%),#17132d}.gate-page{display:grid;place-items:center;padding:24px}.ambient{position:absolute;border-radius:50%;filter:blur(2px);opacity:.28;pointer-events:none}.ambient-one{width:260px;height:260px;background:#ff83bf;top:5%;left:3%}.ambient-two{width:320px;height:320px;background:#4b9cf3;right:0;bottom:0}.gate-card{position:relative;width:min(100%,480px);padding:52px 44px 42px;text-align:center;border:1px solid var(--line);border-radius:28px;background:#1c1736c7;box-shadow:0 30px 100px #08061780;-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px)}.mini-confetti{font-size:25px;color:var(--gold);letter-spacing:12px;margin-bottom:18px}.eyebrow,.section-kicker{font-size:10px;letter-spacing:.22em;font-weight:700;color:#c7bce5}.gate-card h1,.hero h1,.admin-login h1{font-family:Playfair Display,serif;font-size:clamp(42px,9vw,65px);font-weight:500;line-height:1.06;letter-spacing:-.04em;margin:16px 0}.gate-card h1 span,.hero h1 span,.admin-login h1 em{color:var(--pink);font-style:italic}.muted{color:var(--muted);line-height:1.7}.gate-card .muted{font-size:14px;max-width:330px;margin:0 auto 28px}.pin-form,.admin-form{display:grid;gap:12px;text-align:left}.pin-form label,.admin-form label{font-size:12px;color:#d9d3eb}.pin-form input,.admin-form input,.pin-admin input{width:100%;border:1px solid var(--line);background:#ffffff0d;color:#fff;border-radius:12px;padding:15px 16px;outline:none}.pin-form input{text-align:center;font-size:27px;letter-spacing:.55em;padding-left:calc(16px + .55em)}input:focus{border-color:#c18be5;box-shadow:0 0 0 3px #c18be522}.primary,.secondary,.danger-button{border:0;border-radius:12px;padding:14px 18px;font-weight:700}.primary{background:linear-gradient(110deg,#e98bc4,#9a9af4);color:#211631}.primary span{float:right}.secondary{background:#ffffff16;color:#f5efff;border:1px solid var(--line)}.danger-button{background:#8f3c61;color:#fff}.pin-form .primary{margin-top:5px}.error{color:#ffb0bb;font-size:13px}.success{color:#9ce8c2;font-size:13px}.privacy-note{font-size:11px;color:#8e87a8;margin-top:26px}.celebration-page{overflow:hidden;background:#17132d}.topbar{height:72px;display:flex;align-items:center;gap:12px;padding:0 max(5vw,22px);font-size:10px;letter-spacing:.2em;color:#c7bce5;border-bottom:1px solid #ffffff12}.brand-mark{color:var(--gold);font-size:24px}.top-actions{margin-left:auto;display:flex;gap:8px}.quiet-button{border:1px solid var(--line);background:#ffffff08;color:#eee8fa;border-radius:30px;padding:9px 14px;font-size:11px}.hero{min-height:670px;height:calc(100svh - 72px);max-height:900px;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:70px 24px;background:radial-gradient(ellipse at 50% 55%,#4a2c67 0,transparent 50%),linear-gradient(140deg,#211a43,#1a2c4d 55%,#302044)}.hero h1{font-size:clamp(58px,11vw,116px);line-height:.99;margin:26px 0 20px;max-width:1000px}.hero h1 span{color:#f4a2cb}.hero-sub{color:#d1c9e4;font-size:14px}.scroll-link{position:absolute;bottom:38px;color:#d6cde9;text-decoration:none;font-size:9px;letter-spacing:.2em}.scroll-link span{display:block;margin-top:12px;font-size:19px}.hero-orbit{position:absolute;border:1px solid #ffffff20;border-radius:50%;width:min(70vw,650px);aspect-ratio:1}.orbit-b{width:min(90vw,850px);border-style:dashed;opacity:.5}.floating-star{position:absolute;color:var(--gold);font-size:30px;animation:float 4s ease-in-out infinite}.star-a{left:17%;top:27%}.star-b{right:19%;top:35%;animation-delay:-1s}.star-c{right:26%;bottom:21%;animation-delay:-2s}.section-wrap{width:min(1040px,90%);margin:0 auto;padding:115px 0}.section-kicker{margin-bottom:26px}.message-section{text-align:center}.message-card{max-width:700px;margin:auto;padding:55px 45px;border:1px solid var(--line);border-radius:24px;background:linear-gradient(135deg,#ffffff0e,#ffffff04);position:relative}.message-spark{font-size:35px;color:var(--gold)}.message-card h2,.cake-section h2,.section-heading h2,.timeline-section h2,.final-section h2{font-family:Playfair Display,serif;font-size:clamp(38px,7vw,66px);font-weight:500;line-height:1.08;letter-spacing:-.035em;margin:18px 0}.message-card h2 em,.cake-section h2 em,.section-heading h2 em,.timeline-section h2 em,.final-section h2 em{color:var(--pink);font-weight:500}.message-card>p{max-width:520px;margin:25px auto;color:#c5bed7;line-height:1.9;font-size:14px}.signature{color:var(--gold);font-family:Playfair Display,serif;font-style:italic}.cake-section{text-align:center;padding-top:35px}.cake-button{display:flex;flex-direction:column;align-items:center;background:none;border:0;margin:42px auto 20px;position:relative;width:250px;height:190px}.cake-top{width:175px;height:45px;border-radius:50%;background:#ffc1d9;border:5px solid #ffe2eb;z-index:3}.cake-middle{width:195px;height:48px;margin-top:-15px;border-radius:12px 12px 20px 20px;background:linear-gradient(90deg,#a88cf1,#f49acb);border-bottom:7px solid #ffe0ee;z-index:2}.cake-bottom{width:220px;height:52px;margin-top:-10px;border-radius:12px 12px 20px 20px;background:linear-gradient(90deg,#f6a1c9,#9d9af2);border-bottom:8px solid #ffe1ee}.cake-plate{width:245px;height:12px;border-radius:50%;background:#e7d9fa;margin-top:3px}.candle-flames{font-size:25px;color:var(--gold);height:38px;letter-spacing:18px;padding-left:15px}.cake-lit .candle-flames{filter:drop-shadow(0 0 12px #ffca66);animation:glow 1.2s infinite alternate}.cake-section .muted{font-size:12px}.gallery-section{padding-top:55px}.section-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:38px}.photo-count{color:var(--gold);font-size:11px;letter-spacing:.15em;padding-bottom:20px}.photo-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:16px}.photo-frame{margin:0;min-height:220px;grid-column:span 2;border:1px solid var(--line);border-radius:16px;overflow:hidden;background:#ffffff08;position:relative}.photo-frame:nth-child(4),.photo-frame:nth-child(5){grid-column:span 3}.photo-frame img{width:100%;height:100%;min-height:220px;object-fit:cover;display:block}.photo-placeholder{height:100%;min-height:220px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:radial-gradient(circle at 50% 35%,#7e5b9d55,transparent 60%),linear-gradient(135deg,#2a244b,#243b5a)}.photo-placeholder span{font-size:30px;color:var(--gold)}.photo-placeholder strong{font-size:10px;letter-spacing:.2em;color:#e8dff8}.photo-placeholder small{font-size:10px;color:#aaa1bf}.photo-frame figcaption{position:absolute;bottom:0;left:0;right:0;padding:24px 14px 12px;background:linear-gradient(transparent,#0c0a1acc);font-size:12px}.timeline-section{padding-top:55px}.timeline{max-width:620px;margin:55px 0 0 8px;border-left:1px solid #ffffff35}.timeline-item{display:flex;align-items:center;gap:25px;position:relative;padding:0 0 35px 28px}.timeline-dot{position:absolute;left:-15px;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#35274f;border:1px solid #b68bd5;color:var(--gold);font-size:9px}.timeline-item p{margin:0;color:#d5cde5;font-size:14px}.final-section{min-height:560px;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:90px 20px;background:radial-gradient(ellipse at center,#513061,#252044 48%,#17132d 78%);overflow:hidden}.final-section h2{font-size:clamp(50px,9vw,88px)}.final-section>p:not(.eyebrow){color:#d8cfe8}.final-stars{margin-top:35px;color:var(--gold);letter-spacing:.6em}.firework{position:absolute;color:#ffd58b;font-size:50px;filter:drop-shadow(0 0 16px #ff9dcc);animation:burst 2.2s ease-in-out infinite}.firework-one{top:18%;left:18%}.firework-two{top:25%;right:18%;animation-delay:.6s;color:#ff9dcf}.firework-three{bottom:18%;left:28%;animation-delay:1.1s;color:#a7b6ff}.footer{display:flex;justify-content:space-between;padding:24px 5vw;color:#8f87a9;font-size:9px;letter-spacing:.18em}.footer span:nth-child(2){color:var(--gold)}.admin-page{padding:50px max(5vw,20px)}.admin-login{width:min(100%,440px);margin:8vh auto;padding:42px;border:1px solid var(--line);border-radius:22px;background:#1e1939d9}.admin-login h1{font-size:54px}.admin-form{margin:30px 0}.back-link{display:inline-block;margin-top:25px;color:#cbbde8;font-size:12px;text-decoration:none}.admin-header{display:flex;justify-content:space-between;align-items:center;max-width:1200px;margin:0 auto 35px}.admin-header h1{font-family:Playfair Display,serif;font-size:46px;font-weight:500;margin:8px 0}.admin-header .muted{font-size:13px}.admin-gallery-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;max-width:1200px;margin:auto}.admin-panel{border:1px solid var(--line);background:#ffffff08;border-radius:18px;padding:25px}.admin-panel-head{display:flex;justify-content:space-between;gap:10px;align-items:start}.admin-panel h2{font-size:19px;margin:7px 0}.admin-panel .eyebrow{margin:0}.status-dot{font-size:9px;letter-spacing:.12em;color:#ffb2bf;border:1px solid #b75e77;padding:7px 9px;border-radius:20px;white-space:nowrap}.status-dot.is-open{color:#a6e9c1;border-color:#529a79}.small{font-size:11px}.pin-admin{display:flex;gap:8px;margin:20px 0 12px}.pin-admin input{min-width:0}.pin-admin button{white-space:nowrap}.admin-panel>.primary,.admin-panel>.danger-button{width:100%}.admin-photos{margin-top:25px}.admin-photos h3{font-size:12px;color:#d9d1eb;letter-spacing:.1em}.admin-photo-row{display:flex;align-items:center;gap:10px;padding:12px 0;border-top:1px solid #ffffff12}.admin-photo-row>div{display:flex;flex-direction:column;gap:4px;flex:1}.admin-photo-row strong{font-size:12px}.admin-photo-row small{font-size:10px;color:var(--muted)}.upload-label{font-size:10px;color:#e8c4f0;border:1px solid #ffffff25;padding:8px 10px;border-radius:8px;cursor:pointer}.upload-label input{display:none}.text-danger{border:0;background:none;color:#ff9eae;font-size:10px}.logs-panel{max-width:1200px;margin:20px auto}.logs-list{margin-top:18px}.log-row{display:grid;grid-template-columns:75px 1.2fr 1fr 1fr;gap:12px;padding:12px 0;border-top:1px solid #ffffff12;font-size:10px;color:#c8c0da}.log-row time{text-align:right;color:#9991ad}.log-ok{color:#9ce8c2}.log-bad{color:#ff9eae}.admin-alert{max-width:1200px;margin:0 auto 16px}.admin-footnote{max-width:1200px;margin:25px auto;color:#9f97b5;font-size:11px;line-height:1.7}@keyframes float{0%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(-16px) rotate(12deg)}}@keyframes glow{0%{opacity:.7}to{opacity:1;text-shadow:0 0 16px #ffbf61}}@keyframes burst{0%,to{transform:scale(.55);opacity:.35}50%{transform:scale(1.2);opacity:1}}@media(max-width:720px){.gate-card{padding:40px 24px}.topbar{height:62px;font-size:8px}.quiet-button{font-size:9px;padding:8px 10px}.hero{min-height:610px;height:calc(100svh - 62px)}.section-wrap{padding:82px 0}.message-card{padding:42px 23px}.photo-grid{grid-template-columns:repeat(2,1fr);gap:10px}.photo-frame,.photo-frame:nth-child(4),.photo-frame:nth-child(5){grid-column:span 1;min-height:190px}.photo-frame:last-child{grid-column:span 2}.photo-frame img,.photo-placeholder{min-height:190px}.admin-gallery-grid{grid-template-columns:1fr}.admin-page{padding:28px 15px}.admin-header h1{font-size:34px}.admin-panel{padding:18px}.log-row{grid-template-columns:65px 1fr 1fr}.log-row time{grid-column:2/4;text-align:left}.footer{font-size:7px}.top-actions{gap:5px}.topbar{padding:0 14px}.hero h1{font-size:clamp(52px,14vw,82px)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}.opening-overlay{position:fixed;inset:0;z-index:20;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;background:radial-gradient(circle at center,#523366,#17132d 72%);animation:overlayOut .45s ease 2.2s forwards;pointer-events:none}.opening-overlay strong{font-family:Playfair Display,serif;font-size:clamp(110px,25vw,210px);font-weight:500;line-height:1;color:#f6b4d5;text-shadow:0 0 45px #ed92c866}.opening-overlay span{font-size:10px;letter-spacing:.24em;color:#d6cbe9}.secret-section{padding-top:15px;text-align:center}.secret-card{max-width:600px;margin:auto;padding:42px 30px;border:1px solid var(--line);border-radius:22px;background:linear-gradient(135deg,#ffffff0b,#ffffff03)}.secret-icon{font-size:30px;color:var(--gold)}.secret-card h2{font-family:Playfair Display,serif;font-size:clamp(35px,6vw,54px);font-weight:500;line-height:1.08}.secret-card h2 em{color:var(--pink)}.secret-card .muted,.secret-message{max-width:430px;margin:20px auto 25px;color:#c5bed7;font-size:13px;line-height:1.8}.secret-message{color:#f0dff0}@keyframes overlayOut{to{opacity:0;visibility:hidden}}
