@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Kalam:wght@400&display=swap');
:root{font-family:'DM Sans',sans-serif;color:#fcf4ff;background:#171027;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-height:100svh;overflow-x:hidden}.ambient{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:-1;background:radial-gradient(ellipse at 50% 10%,#34214c,transparent 65%),#171027}.ambient i{position:absolute;width:60vw;height:60vw;max-width:700px;max-height:700px;filter:blur(75px);border-radius:50%;opacity:.35;animation:drift 16s ease-in-out infinite alternate}.ambient i:nth-child(1){background:#a12cff;left:-20%;top:-20%}.ambient i:nth-child(2){background:#fc4db6;right:-30%;top:25%;animation-delay:-6s}.ambient i:nth-child(3){background:#535aff;left:20%;bottom:-50%;animation-delay:-10s}.ambient span{position:absolute;color:#f9ceef;font-size:35px;animation:twinkle 5s ease-in-out infinite}.ambient span:nth-of-type(1){left:8%;top:30%}.ambient span:nth-of-type(2){right:10%;top:65%;animation-delay:-2s}.ambient span:nth-of-type(3){right:18%;top:13%;font-size:19px;animation-delay:-3s}main{max-width:1040px;margin:auto;padding:30px 32px}header{display:flex;justify-content:space-between;align-items:center}header a{color:#fff;text-decoration:none;font-weight:700;font-size:23px}header a span{font-size:14px;font-weight:400;color:#d3bddf;margin-left:7px}.little{font-size:13px;color:#d3bddf}section{text-align:center;margin:30px auto 0}section[hidden]{display:none}.invitation{max-width:700px;animation:invite-reveal .7s ease both}.landscape{max-width:440px;margin:auto;position:relative;filter:drop-shadow(0 12px 40px #bd5cff55);animation:float 7s ease-in-out infinite}.landscape:before{content:'';position:absolute;inset:15% 5%;border-radius:50%;background:#d27cff22;filter:blur(30px)}.landscape svg{width:100%;display:block;position:relative;border-radius:50% 50% 30% 30%}.landscape svg circle{fill:#ffd99d}.landscape svg path:nth-of-type(1){fill:#986ab7}.landscape svg path:nth-of-type(2){fill:#68458f}.landscape svg path:nth-of-type(3){stroke:#ffd7ef}.landscape svg path:nth-of-type(n+4){stroke:#f1d8ff}.handwritten{font-family:Kalam,cursive;color:#f3bce7;font-size:23px;margin:18px 0 12px}h1{font-size:clamp(38px,5.9vw,62px);letter-spacing:-2.5px;line-height:1.08;margin:0 0 22px;font-weight:700;text-wrap:balance}.invitation h1{min-height:2.16em;background:linear-gradient(110deg,#fff 20%,#ffc5ed 65%,#c3acff);background-clip:text;-webkit-text-fill-color:transparent}.subtitle{font-size:17px;line-height:1.7;color:#d5c6df;margin:0 auto 20px;max-width:460px;text-wrap:balance}.invitation .subtitle{min-height:3.4em}button{font:inherit;cursor:pointer;border:0;border-radius:16px;padding:15px 25px;min-height:48px;touch-action:manipulation}button:focus-visible,a:focus-visible{outline:3px solid #ffe0a3;outline-offset:5px}.primary{background:linear-gradient(120deg,#ffc6e7,#ceadff);color:#321846;font-weight:700;box-shadow:0 5px 0 #80568f,0 10px 35px #eb7cce40;transition:box-shadow .2s,filter .2s}.primary:hover:not(:disabled){filter:brightness(1.08);box-shadow:0 5px 0 #80568f,0 10px 48px #eb7cce70}.secondary{background:#342347;color:#f5e6ff;border:1px solid #b98aca;box-shadow:0 8px 24px #08051155}#playground{position:relative;max-width:600px;height:120px;margin:auto}#yes{position:absolute;left:calc(50% - 150px);top:16px}#no{position:absolute;left:calc(50% + 55px);top:16px;z-index:10}#no.escaping{position:fixed;z-index:50;box-shadow:0 0 0 5px #dc9bf015,0 10px 40px #0007}.footnote{font-size:13px;color:#cbb6d7;line-height:1.7;margin:0}footer{text-align:center;font-family:Kalam,cursive;color:#bea7ce;font-size:15px;padding:35px 0 12px}.text-button{display:block;background:transparent;color:#d5c6df;padding:5px 0;font-size:14px;margin-bottom:20px}.booking{background:linear-gradient(140deg,#ffffff10,#ffffff05);backdrop-filter:blur(22px);border:1px solid #dac1ed30;border-radius:28px;display:grid;grid-template-columns:1fr 1fr;text-align:left;margin:28px auto 20px;max-width:840px;padding:28px;gap:32px;box-shadow:0 25px 80px #08031140}.calendar,.times{min-width:0}.month-nav{display:flex;align-items:center;justify-content:space-between}.month-nav button{padding:8px 15px;background:transparent;color:#ead9f8}.month-nav h2::first-letter{text-transform:uppercase}h2{font-size:18px;font-weight:600;margin:0}.weekdays,.days{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;text-align:center}.weekdays{font-size:12px;color:#bea7ce;margin:14px 0}.days button{padding:0;min-height:0;aspect-ratio:1;border-radius:50%;background:transparent;color:#f7ecff}.days button:hover:not(:disabled){background:#ffffff15}.days button.selected,.days button.selected:hover:not(:disabled){background:#e3b7f3;color:#321846;box-shadow:0 0 24px #cf8eff30}.days button:disabled{color:#87768f;cursor:default}.times{border-left:1px solid #dac1ed25;padding-left:30px}.times p{font-size:13px;line-height:1.6;color:#cab5d8}#slots{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;max-height:290px;overflow:auto;padding:4px;scrollbar-width:thin}#slots button{padding:9px;min-height:42px;background:#ffffff09;color:#ead9f8;border:1px solid #dac1ed25;font-size:14px}#slots button:hover{background:#ffffff18}#slots button.selected{background:#e3b7f3;color:#321846;border-color:#e3b7f3}.empty-slots{grid-column:1/-1;text-align:center;color:#bea7ce;line-height:1.8;padding:25px 10px}.empty-slots span{display:block;font-size:38px;color:#ffd6ed;margin-bottom:12px}.confirm{background:#ffffff08;border:1px solid #dac1ed20;border-radius:20px;max-width:840px;margin:auto;padding:18px 20px}.confirm p{font-size:14px}.confirm p:first-child{margin:0 0 14px}.primary:disabled{opacity:.4;cursor:default;box-shadow:none}#error{color:#ffc0b9}#error:empty{display:none}.success{padding:60px 0;animation:reveal .6s ease both}.success-icon{font-size:80px;color:#ffd99d;filter:drop-shadow(0 0 30px #ffb96f70);animation:float 6s ease-in-out infinite}.success>p:not(.handwritten){line-height:1.7;color:#d5c6df}.success .primary{margin:18px 0}
@keyframes drift{to{transform:translate(12%,18%) scale(1.15)}}@keyframes twinkle{50%{opacity:.3;transform:scale(.7) rotate(25deg)}}@keyframes float{50%{transform:translateY(-9px)}}@keyframes reveal{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:none}}
@media(max-width:600px){main{padding:22px 18px}.little{display:none}section{margin-top:25px}.landscape{max-width:320px}.handwritten{font-size:20px}h1{letter-spacing:-1.6px}.invitation h1{font-size:40px}.subtitle{font-size:16px}.booking{grid-template-columns:1fr;padding:20px;gap:20px}.times{border-left:0;border-top:1px solid #dac1ed25;padding:20px 0 0}#slots{max-height:none}.empty-slots{padding:12px}.empty-slots span{display:none}#playground{height:115px}.confirm .primary{width:100%}footer{padding-top:28px}.ambient i{width:100vw;height:100vw;opacity:.3}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

@keyframes invite-reveal{from{opacity:0}to{opacity:1}}
#yes.emphasized{left:50%;transform:translateX(-50%) scale(var(--yes-scale,1));z-index:12;transition:left .4s ease,transform .4s ease;animation:yes-heartbeat 1.65s ease-in-out infinite;background:linear-gradient(110deg,#ffe2f0,#e4c8ff);border:1px solid #fff0fa}
@keyframes yes-glow{0%,100%{box-shadow:0 5px 0 #80568f,0 0 18px #eb7cce55;filter:brightness(1)}50%{box-shadow:0 5px 0 #80568f,0 0 42px #eb7cceaa,0 0 75px #bc83ff55;filter:brightness(1.17)}}

@keyframes yes-heartbeat{
  0%,32%,100%{transform:translateX(-50%) scale(var(--yes-scale,1));filter:brightness(1);box-shadow:0 5px 0 #80568f,0 0 20px #eb7cce55}
  10%{transform:translateX(-50%) scale(calc(var(--yes-scale,1)*1.075));filter:brightness(1.16);box-shadow:0 5px 0 #80568f,0 0 45px #eb7cceaa}
  17%{transform:translateX(-50%) scale(var(--yes-scale,1));filter:brightness(1)}
  24%{transform:translateX(-50%) scale(calc(var(--yes-scale,1)*1.045));filter:brightness(1.1);box-shadow:0 5px 0 #80568f,0 0 35px #eb7cce88}
}
