.opening{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:var(--space-6) var(--space-4);background:radial-gradient(circle at 50% 78%,rgba(233,123,165,.16),transparent 58%),radial-gradient(circle at 18% 12%,rgba(192,132,252,.12),transparent 46%),var(--surface-0);overflow:hidden;transition:opacity .8s var(--ease-smooth),transform .8s var(--ease-smooth)}.opening--exit{opacity:0;transform:scale(1.06);pointer-events:none}.opening__vignette{position:absolute;inset:0;background:radial-gradient(circle at 50% 50%,transparent 42%,rgba(0,0,0,.55) 100%);pointer-events:none}.opening__skip{position:absolute;top:max(var(--space-5),env(safe-area-inset-top));right:var(--space-5);z-index:5;padding:var(--space-2) var(--space-5);font-size:var(--text-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--text-tertiary);background:#ffffff0d;border:1px solid var(--surface-4);border-radius:var(--radius-full);cursor:pointer;backdrop-filter:blur(6px);transition:all var(--duration-base) var(--ease-smooth)}.opening__skip:hover{color:var(--text-primary);border-color:var(--accent-primary)}.opening__content{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;gap:var(--space-8);width:min(560px,100%);animation:fadeIn .7s var(--ease-smooth) both}.opening__header{text-align:center}.opening__title{font-size:var(--text-4xl);font-style:italic;background:linear-gradient(120deg,var(--accent-secondary),var(--accent-primary),var(--accent-tertiary));-webkit-background-clip:text;background-clip:text;color:transparent;letter-spacing:-.01em}.opening__subtitle{margin-top:var(--space-3);font-size:var(--text-sm);color:var(--text-tertiary);letter-spacing:.04em;min-height:1.4em}.opening__cake{position:relative;width:min(320px,82vw);aspect-ratio:1 / 1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;filter:drop-shadow(0 30px 45px rgba(0,0,0,.55))}.cake__glow{position:absolute;bottom:26%;left:50%;width:240px;height:240px;transform:translate(-50%);border-radius:50%;background:radial-gradient(circle,rgba(244,164,96,.34),transparent 68%);animation:cakeGlow 3.6s ease-in-out infinite;pointer-events:none;transition:opacity .9s var(--ease-smooth)}.opening__cake.is-smoked .cake__glow{opacity:0}@keyframes cakeGlow{0%,to{opacity:.75;transform:translate(-50%) scale(.94)}50%{opacity:1;transform:translate(-50%) scale(1.06)}}.cake__candles{position:relative;z-index:3;display:flex;align-items:flex-end;justify-content:center;gap:clamp(14px,5vw,26px);margin-bottom:-6px}.candle{position:relative;width:12px;height:clamp(42px,12vw,56px);border:none;padding:0;border-radius:4px;cursor:pointer;background:repeating-linear-gradient(135deg,#fdf2f8 0 6px,var(--accent-primary) 6px 12px);box-shadow:inset -2px 0 3px #00000040;transform-origin:bottom center;transition:transform var(--duration-base) var(--ease-smooth),filter var(--duration-base)}.candle:hover{transform:translateY(-2px)}.candle:focus-visible{outline:2px solid var(--accent-primary);outline-offset:4px}.candle.is-out{filter:grayscale(.6) brightness(.7);cursor:default}.candle__wick{position:absolute;top:-6px;left:50%;width:2px;height:7px;transform:translate(-50%);background:#2a2a2a;border-radius:1px}.candle__flame{position:absolute;top:-22px;left:50%;width:12px;height:20px;transform:translate(-50%);border-radius:50% 50% 46% 46%/62% 62% 38% 38%;background:radial-gradient(circle at 50% 78%,#fff8e1,#ffcf6b 42%,#ff8a3d 72%,#ff5e0026);animation:flameFlicker 1.4s ease-in-out infinite;will-change:transform,opacity;box-shadow:0 0 14px #ffaa3cbf}.candle__flame-inner{position:absolute;inset:34% 26% 8%;border-radius:50%;background:#fffdf5;filter:blur(.4px);animation:flameInner .9s ease-in-out infinite alternate}.candle__halo{position:absolute;top:-46px;left:50%;width:90px;height:90px;transform:translate(-50%);border-radius:50%;background:radial-gradient(circle,rgba(255,186,96,.42),transparent 66%);animation:haloPulse 2.4s ease-in-out infinite;pointer-events:none}@keyframes flameFlicker{0%,to{transform:translate(-50%) scale(1) rotate(-1.5deg);opacity:1}25%{transform:translate(-50%) scale(1.05,.95) rotate(1.5deg);opacity:.94}50%{transform:translate(-50%) scale(.94,1.08) rotate(-2deg);opacity:1}75%{transform:translate(-50%) scale(1.03,.97) rotate(2deg);opacity:.9}}@keyframes flameInner{0%{transform:scale(.9) translateY(1px);opacity:.85}to{transform:scale(1.05) translateY(-1px);opacity:1}}@keyframes haloPulse{0%,to{opacity:.55;transform:translate(-50%) scale(.9)}50%{opacity:.9;transform:translate(-50%) scale(1.1)}}.candle__smoke{position:absolute;top:-18px;left:50%;width:8px;height:8px;transform:translate(-50%);border-radius:50%;background:#c8c8d273;filter:blur(3px);animation:smokeRise 2.4s ease-out infinite}@keyframes smokeRise{0%{opacity:.5;transform:translate(-50%) scale(.6)}to{opacity:0;transform:translate(-50%,-58px) scale(2.4)}}.cake__tier{position:relative;width:100%;border-radius:12px 12px 6px 6px}.cake__tier--top{width:58%;height:clamp(38px,11vw,50px);background:linear-gradient(180deg,#f6c6d8,#d98bab 78%);z-index:3}.cake__tier--mid{width:78%;height:clamp(46px,13vw,60px);margin-top:-4px;background:linear-gradient(180deg,#f7dcb9,#d9a06f 82%);z-index:2}.cake__tier--base{width:96%;height:clamp(52px,15vw,70px);margin-top:-4px;background:linear-gradient(180deg,#f3b9c9,#b97490 84%);z-index:1}.cake__drip{position:absolute;inset:0 0 auto;height:42%;border-radius:12px 12px 40% 40%/12px 12px 26px 26px;background:#ffffff8c;box-shadow:0 6px #ffffff59}.cake__plate{width:108%;height:12px;margin-top:2px;border-radius:0 0 50% 50%/0 0 100% 100%;background:linear-gradient(180deg,var(--surface-4),var(--surface-2));box-shadow:0 10px 26px #00000080}.opening__controls{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);text-align:center;min-height:96px}.opening__mic-btn{padding:var(--space-3) var(--space-6);font-size:var(--text-sm)}.opening__hint{font-size:var(--text-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--text-tertiary)}.opening__hint--warn{color:var(--accent-secondary);text-transform:none;letter-spacing:.02em;font-size:var(--text-sm)}.mic-meter{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);width:min(300px,100%)}.mic-meter__label{font-size:var(--text-xs);letter-spacing:.08em;color:var(--accent-primary)}.mic-meter__track{width:100%;height:6px;border-radius:var(--radius-full);background:var(--surface-4);overflow:hidden}.mic-meter__fill{height:100%;width:100%;transform-origin:left center;transform:scaleX(0);background:linear-gradient(90deg,var(--accent-secondary),var(--accent-primary));transition:transform .12s linear}.mic-meter__stop{font-size:var(--text-xs);padding:var(--space-1) var(--space-4)}.opening__done{font-family:var(--font-display);font-size:var(--text-2xl);color:var(--accent-secondary);animation:fadeIn .5s var(--ease-smooth) both}.confetti-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:4}.confetti{position:absolute;top:-8%;border-radius:2px;animation-name:confettiFall;animation-timing-function:cubic-bezier(.35,.15,.6,1);animation-fill-mode:forwards;will-change:transform,opacity}@keyframes confettiFall{0%{opacity:0;transform:translate3d(0,-10vh,0) rotate(0)}10%{opacity:1}to{opacity:0;transform:translate3d(var(--drift),105vh,0) rotate(720deg)}}@media (prefers-reduced-motion: reduce){.confetti{display:none}.candle__flame,.candle__halo,.cake__glow{animation:none}}.hero{position:relative;min-height:100svh;display:grid;place-items:center;overflow:hidden;padding-block:var(--space-24)}.hero__aurora{position:absolute;inset:-20%;background:radial-gradient(closest-side at 30% 25%,rgba(233,123,165,.32),transparent),radial-gradient(closest-side at 72% 62%,rgba(192,132,252,.26),transparent),radial-gradient(closest-side at 50% 92%,rgba(244,164,96,.22),transparent);filter:blur(60px);animation:auroraDrift 22s ease-in-out infinite alternate;pointer-events:none}@keyframes auroraDrift{0%{transform:translate3d(-3%,-2%,0) scale(1)}to{transform:translate3d(4%,3%,0) scale(1.12)}}.hero__stars{position:absolute;inset:0;background-image:radial-gradient(1.4px 1.4px at 12% 22%,rgba(255,255,255,.75),transparent),radial-gradient(1.2px 1.2px at 78% 16%,rgba(255,255,255,.6),transparent),radial-gradient(1.6px 1.6px at 62% 74%,rgba(255,255,255,.55),transparent),radial-gradient(1.1px 1.1px at 28% 82%,rgba(255,255,255,.5),transparent),radial-gradient(1.3px 1.3px at 88% 58%,rgba(255,255,255,.48),transparent),radial-gradient(1px 1px at 42% 38%,rgba(255,255,255,.4),transparent);animation:twinkle 6s ease-in-out infinite alternate;pointer-events:none}@keyframes twinkle{0%{opacity:.45}to{opacity:.95}}.hero__inner{position:relative;z-index:2;text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--space-5)}.hero__eyebrow{font-size:var(--text-xs);letter-spacing:.42em;text-transform:uppercase;color:var(--accent-secondary);opacity:0;animation:fadeIn .9s var(--ease-smooth) .15s both}.hero__name{display:flex;flex-wrap:wrap;justify-content:center;gap:.02em;font-size:clamp(3rem,13vw,7rem);font-weight:700;line-height:1;letter-spacing:-.03em;background:linear-gradient(105deg,#fff 8%,var(--accent-primary) 42%,var(--accent-secondary) 74%,var(--accent-tertiary));-webkit-background-clip:text;background-clip:text;color:transparent}.hero__letter{display:inline-block;opacity:0;transform:translateY(38%) rotate(6deg);transition:opacity .6s var(--ease-smooth) var(--d),transform .6s var(--ease-elastic) var(--d);will-change:transform,opacity}.hero__letter.is-in{opacity:1;transform:none}.hero__subtitle{max-width:34ch;font-size:var(--text-lg);color:var(--text-secondary);font-weight:300;opacity:0;transform:translateY(12px);transition:opacity .7s var(--ease-smooth),transform .7s var(--ease-smooth)}.hero__date{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-5);font-size:var(--text-xs);letter-spacing:.24em;text-transform:uppercase;color:var(--text-tertiary);border:1px solid var(--surface-4);border-radius:var(--radius-full);background:#ffffff08;opacity:0;transition:opacity .7s var(--ease-smooth) .12s}.hero__date-dot{width:6px;height:6px;border-radius:50%;background:var(--accent-primary);box-shadow:0 0 10px var(--accent-primary)}.hero__actions{display:flex;flex-direction:column;align-items:center;gap:var(--space-6);margin-top:var(--space-6);opacity:0;transform:translateY(16px);transition:opacity .8s var(--ease-smooth) .2s,transform .8s var(--ease-smooth) .2s}.hero__subtitle.is-in,.hero__date.is-in,.hero__actions.is-in{opacity:1;transform:none}.hero__cta{gap:var(--space-3);animation:glowPulse 4s ease-in-out infinite}.hero__scroll{padding:var(--space-2);min-width:0}.hero__scroll-line{display:block;width:1px;height:46px;background:linear-gradient(180deg,transparent,var(--accent-primary));animation:scrollHint 2.2s ease-in-out infinite}@keyframes scrollHint{0%{opacity:0;transform:scaleY(.2);transform-origin:top}50%{opacity:1;transform:scaleY(1);transform-origin:top}to{opacity:0;transform:scaleY(.2) translateY(46px);transform-origin:top}}[data-theme=light] .hero__aurora{opacity:.55}[data-theme=light] .hero__stars{opacity:.25}[data-theme=light] .hero__name{background:linear-gradient(105deg,#2a1a24 8%,var(--accent-primary) 46%,var(--accent-secondary) 78%,var(--accent-tertiary));-webkit-background-clip:text;background-clip:text}@media (prefers-reduced-motion: reduce){.hero__aurora,.hero__stars,.hero__cta,.hero__scroll-line{animation:none}}.gallery{background:linear-gradient(180deg,transparent,rgba(255,255,255,.015) 40%,transparent)}.gallery__grid{display:grid;gap:var(--space-4)}.gallery__grid--masonry{column-count:2;column-gap:var(--space-4)}@media (min-width: 720px){.gallery__grid--masonry{column-count:3}}@media (min-width: 1080px){.gallery__grid--masonry{column-count:4}}.gallery__grid--polaroid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--space-6)}.gallery__item{margin:0 0 var(--space-4);break-inside:avoid;border-radius:var(--radius-lg);overflow:hidden;background:var(--surface-2);border:1px solid var(--surface-3);transition:transform var(--duration-base) var(--ease-smooth),box-shadow var(--duration-base)}.gallery__item--polaroid{margin:0;padding:var(--space-3) var(--space-3) var(--space-6);background:#fdfbf7;border:none;border-radius:4px;box-shadow:0 14px 24px -14px #000000b3;transform:rotate(var(--tilt))}.gallery__item--polaroid:hover{transform:rotate(0) translateY(-4px) scale(1.02);box-shadow:0 20px 34px -16px #000000bf}.gallery__item:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}.gallery__button{display:block;width:100%;padding:0;border:none;background:none;cursor:zoom-in;position:relative;line-height:0}.gallery__button img{width:100%;height:auto;display:block;object-fit:cover;transition:transform .6s var(--ease-smooth),filter .4s;background:var(--surface-3)}.gallery__item--polaroid .gallery__button img{aspect-ratio:1 / 1;object-fit:cover}.gallery__button:hover img{transform:scale(1.04)}.gallery__overlay{position:absolute;inset:auto 0 0;display:flex;flex-direction:column;gap:2px;padding:var(--space-6) var(--space-3) var(--space-3);background:linear-gradient(180deg,transparent,rgba(0,0,0,.78));opacity:0;transition:opacity var(--duration-base) var(--ease-smooth);text-align:left}.gallery__button:hover .gallery__overlay,.gallery__button:focus-visible .gallery__overlay{opacity:1}.gallery__item--polaroid .gallery__overlay{position:static;opacity:1;background:none;padding:var(--space-3) 0 0;color:#3a3138}.gallery__caption{font-size:var(--text-xs);line-height:1.4;color:#fff;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.gallery__item--polaroid .gallery__caption{color:#3a3138;font-family:var(--font-display);font-size:var(--text-sm)}.gallery__date{font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:#fff9}.gallery__item--polaroid .gallery__date{color:#8b7f86}.gallery__more{display:flex;justify-content:center;margin-top:var(--space-8)}.lightbox{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:var(--space-4);background:#05070cf0;backdrop-filter:blur(10px);animation:fadeIn .26s var(--ease-smooth) both}.lightbox__figure{margin:0;max-width:min(1100px,100%);max-height:86svh;display:flex;flex-direction:column;align-items:center;gap:var(--space-3)}.lightbox__figure img{max-width:100%;max-height:74svh;object-fit:contain;border-radius:var(--radius-md);box-shadow:var(--shadow-xl)}.lightbox figcaption{text-align:center;display:flex;flex-direction:column;gap:2px}.lightbox__caption{color:var(--text-primary);font-size:var(--text-sm)}.lightbox__date{font-size:var(--text-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--text-tertiary)}.lightbox__counter{font-size:.7rem;color:var(--text-tertiary);margin-top:var(--space-1)}.lightbox__close,.lightbox__nav{position:absolute;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;border:1px solid var(--surface-4);background:#ffffff0f;color:var(--text-primary);font-size:1.4rem;cursor:pointer;transition:all var(--duration-base) var(--ease-smooth);z-index:2}.lightbox__close:hover,.lightbox__nav:hover{background:var(--accent-primary);color:var(--text-inverse);border-color:transparent}.lightbox__close{top:max(var(--space-4),env(safe-area-inset-top));right:var(--space-4);font-size:1rem}.lightbox__nav--prev{left:var(--space-3)}.lightbox__nav--next{right:var(--space-3)}@media (max-width: 520px){.lightbox__nav{width:38px;height:38px;font-size:1.1rem}}.timeline__list{position:relative;list-style:none;margin:0 auto;padding:0;max-width:900px}.timeline__list:before{content:"";position:absolute;top:0;bottom:0;left:14px;width:1px;background:linear-gradient(180deg,transparent,var(--surface-4) 8%,var(--surface-4) 92%,transparent)}@media (min-width: 820px){.timeline__list:before{left:50%;transform:translate(-.5px)}}.timeline__item{position:relative;padding-left:44px;margin-bottom:var(--space-10)}.timeline__item:last-child{margin-bottom:0}@media (min-width: 820px){.timeline__item{width:50%;padding-left:0;padding-right:48px}.timeline__item.is-right{margin-left:50%;padding-right:0;padding-left:48px}}.timeline__marker{position:absolute;top:26px;left:7px;z-index:2}@media (min-width: 820px){.timeline__item .timeline__marker{left:auto;right:-7px}.timeline__item.is-right .timeline__marker{right:auto;left:-7px}}.timeline__dot{display:block;width:15px;height:15px;border-radius:50%;background:var(--surface-0);border:2px solid var(--accent-primary);box-shadow:0 0 0 4px #e97ba524,0 0 16px #e97ba580}.timeline__card{background:var(--surface-2);border:1px solid var(--surface-3);border-radius:var(--radius-xl);overflow:hidden;transition:border-color var(--duration-base) var(--ease-smooth),transform var(--duration-base) var(--ease-smooth)}.timeline__card:hover{border-color:var(--accent-primary);transform:translateY(-2px)}.timeline__media{aspect-ratio:16 / 10;overflow:hidden;background:var(--surface-3)}.timeline__media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .7s var(--ease-smooth)}.timeline__card:hover .timeline__media img{transform:scale(1.05)}.timeline__body{padding:var(--space-5)}.timeline__date{display:inline-block;font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;color:var(--accent-secondary);margin-bottom:var(--space-2)}.timeline__title{font-size:var(--text-xl);margin-bottom:var(--space-2)}.timeline__text{font-size:var(--text-sm);color:var(--text-secondary);white-space:pre-line}@media (prefers-reduced-motion: reduce){.timeline__card,.timeline__media img{transition:none}}.letter{background:linear-gradient(180deg,transparent,rgba(192,132,252,.05),transparent)}.letter__stage{display:grid;place-items:center;min-height:320px}.envelope{position:relative;width:min(340px,86vw);aspect-ratio:3 / 2;border:none;padding:0;background:none;cursor:pointer;perspective:1200px;animation:float 7s ease-in-out infinite}.envelope__back{position:absolute;inset:0;background:linear-gradient(160deg,#e3b08a,#c58a63);border-radius:10px;box-shadow:0 26px 48px -22px #000000d9}.envelope__letter-peek{position:absolute;left:6%;right:6%;top:8%;height:78%;background:#fdf8f1;border-radius:6px;transform:translateY(14%);transition:transform .7s var(--ease-elastic)}.envelope:hover .envelope__letter-peek{transform:translateY(4%)}.envelope__front{position:absolute;inset:0;border-radius:10px;background:linear-gradient(200deg,#f0c9a4,#dda87f);clip-path:polygon(0 34%,50% 66%,100% 34%,100% 100%,0 100%)}.envelope__flap{position:absolute;inset:0 0 auto;height:62%;background:linear-gradient(180deg,#f7d7b6,#e5b78f);border-radius:10px 10px 0 0;clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top center;transition:transform .6s var(--ease-smooth);z-index:3}.envelope:hover .envelope__flap{transform:rotateX(24deg)}.envelope__seal{position:absolute;top:44%;left:50%;transform:translate(-50%,-50%);width:46px;height:46px;display:grid;place-items:center;border-radius:50%;background:radial-gradient(circle at 35% 30%,var(--accent-primary),#a4496c);box-shadow:0 0 22px #e97ba5a6;z-index:4;animation:glowPulse 3.4s ease-in-out infinite}.envelope__heart{color:#fff;font-size:1.05rem}.envelope__label{position:absolute;left:0;right:0;bottom:-44px;font-size:var(--text-xs);letter-spacing:.22em;text-transform:uppercase;color:var(--text-tertiary)}.letter__paper{position:relative;width:min(680px,100%);padding:clamp(var(--space-6),5vw,var(--space-12));background:linear-gradient(180deg,#fffffff5,#fdf8f1fa);border-radius:var(--radius-lg);box-shadow:0 40px 70px -40px #000000e6,0 0 0 1px #0000000d;color:#2e2830;animation:paperRise .8s var(--ease-elastic) both}@keyframes paperRise{0%{opacity:0;transform:translateY(60px) rotate(-2deg) scale(.94)}to{opacity:1;transform:none}}.letter__paper-edge{position:absolute;inset:10px;border:1px solid rgba(180,140,120,.28);border-radius:4px;pointer-events:none}.letter__text{font-family:var(--font-display);font-size:clamp(1rem,.95rem + .4vw,1.2rem);line-height:1.95;white-space:pre-wrap;min-height:8em;position:relative;z-index:1}.letter__caret{display:inline-block;width:2px;height:1.05em;margin-left:2px;vertical-align:text-bottom;background:var(--accent-primary);animation:caretBlink .9s steps(2,start) infinite}@keyframes caretBlink{0%,to{opacity:1}50%{opacity:0}}.letter__again{margin-top:var(--space-8);padding:var(--space-2) var(--space-5);font-size:var(--text-xs);letter-spacing:.16em;text-transform:uppercase;background:none;border:1px solid rgba(46,40,48,.25);border-radius:var(--radius-full);color:#5a4f58;cursor:pointer;transition:all var(--duration-base) var(--ease-smooth)}.letter__again:hover{background:var(--accent-primary);border-color:transparent;color:#fff}@media (prefers-reduced-motion: reduce){.envelope,.letter__paper{animation:none}.letter__caret{display:none}}.player{position:fixed;z-index:60;left:50%;bottom:max(var(--space-4),env(safe-area-inset-bottom));transform:translate(-50%);width:min(440px,calc(100% - var(--space-6)));display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);background:#10131cd1;border:1px solid var(--surface-4);border-radius:var(--radius-2xl);backdrop-filter:blur(16px) saturate(1.3);box-shadow:0 18px 40px -20px #000000e6;transition:border-color var(--duration-base) var(--ease-smooth)}.player:hover,.player.is-expanded{border-color:var(--accent-primary)}.player__cover{position:relative;width:44px;height:44px;padding:0;border:none;border-radius:var(--radius-md);overflow:hidden;background:linear-gradient(135deg,var(--surface-4),var(--surface-3));cursor:pointer;display:grid;place-items:center;flex-shrink:0}.player__cover img{width:100%;height:100%;object-fit:cover}.player__cover-fallback{font-size:1.2rem;color:var(--accent-primary)}.player__pulse{position:absolute;inset:0;border-radius:var(--radius-md);border:2px solid var(--accent-primary);animation:playerPulse 2s ease-out infinite}@keyframes playerPulse{0%{opacity:.8;transform:scale(1)}to{opacity:0;transform:scale(1.25)}}.player__meta{display:flex;flex-direction:column;min-width:0}.player__title{font-size:var(--text-sm);font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player__sub{font-size:.68rem;color:var(--text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player__controls{display:flex;align-items:center;gap:var(--space-1)}.player__icon{width:30px;height:30px;display:grid;place-items:center;border:none;border-radius:50%;background:transparent;color:var(--text-secondary);font-size:.75rem;cursor:pointer;transition:color var(--duration-base)}.player__icon:hover{color:var(--accent-primary)}.player__play{width:40px;height:40px;display:grid;place-items:center;border:none;border-radius:50%;background:linear-gradient(135deg,var(--accent-primary),var(--accent-secondary));color:var(--text-inverse);font-size:.8rem;cursor:pointer;box-shadow:0 0 18px #e97ba573;transition:transform var(--duration-base) var(--ease-smooth)}.player__play:active{transform:scale(.92)}.player__expanded{grid-column:1 / -1;display:none;flex-direction:column;gap:var(--space-2);padding:var(--space-1) var(--space-1) var(--space-2)}.player.is-expanded .player__expanded{display:flex;animation:fadeIn .22s var(--ease-smooth) both}.player__progress{height:4px;border-radius:var(--radius-full);background:var(--surface-4);overflow:hidden;cursor:pointer}.player__progress-fill{height:100%;width:100%;transform-origin:left center;transform:scaleX(0);background:linear-gradient(90deg,var(--accent-secondary),var(--accent-primary));transition:transform .2s linear}.player__volume{display:flex;align-items:center;gap:var(--space-2);font-size:.8rem;color:var(--text-tertiary)}.player__volume input[type=range]{padding:0;border:none;background:transparent;height:20px;accent-color:var(--accent-primary)}.player__volume input[type=range]:focus{box-shadow:none}@media (max-width: 420px){.player{width:calc(100% - var(--space-4))}.player__meta .player__sub{display:none}}.gift__stage{display:flex;flex-direction:column;align-items:center;gap:var(--space-5);min-height:260px;justify-content:center}.giftbox{position:relative;width:min(190px,56vw);aspect-ratio:1 / 1;border:none;background:none;padding:0;cursor:pointer;transition:transform var(--duration-base) var(--ease-smooth);animation:float 6s ease-in-out infinite}.giftbox:hover{transform:translateY(-4px) rotate(-1.5deg)}.giftbox:active{transform:scale(.97)}.giftbox__body{position:absolute;inset:32% 6% 6%;border-radius:8px;background:linear-gradient(160deg,#e97ba5,#b44b72);box-shadow:inset -10px 0 20px #00000038,0 22px 40px -20px #000000d9}.giftbox__ribbon{position:absolute;top:0;bottom:0;left:50%;width:18%;transform:translate(-50%);background:linear-gradient(180deg,#ffd88a,#f4a460);box-shadow:0 0 16px #f4a46099}.giftbox__lid{position:absolute;top:20%;left:2%;right:2%;height:20%;border-radius:6px;background:linear-gradient(160deg,#f790b3,#c85c84);box-shadow:0 10px 18px -10px #000c;z-index:2;transition:transform .5s var(--ease-elastic);transform-origin:center left}.giftbox:hover .giftbox__lid{transform:translateY(-6px) rotate(-3deg)}.giftbox__bow{position:absolute;top:-34%;left:50%;width:44%;height:60%;transform:translate(-50%);background:radial-gradient(circle at 22% 30%,#ffd88a,#f4a460 70%) left/48% 100% no-repeat,radial-gradient(circle at 78% 30%,#ffd88a,#f4a460 70%) right/48% 100% no-repeat;border-radius:50% 50% 40% 40%;filter:drop-shadow(0 0 10px rgba(244,164,96,.55))}.giftbox__shine{position:absolute;inset:0;border-radius:12px;background:radial-gradient(circle at 30% 20%,rgba(255,255,255,.28),transparent 52%);pointer-events:none}.gift__hint{font-size:var(--text-xs);letter-spacing:.22em;text-transform:uppercase;color:var(--text-tertiary)}.gift__reveal{position:relative;width:min(560px,100%);display:grid;place-items:center;padding:var(--space-10) var(--space-6);animation:fadeIn .5s var(--ease-smooth) both}.gift__message{position:relative;z-index:2;font-family:var(--font-display);font-size:var(--text-xl);line-height:1.7;text-align:center;color:var(--text-primary);padding:var(--space-6) var(--space-5);background:#ffffff0a;border:1px solid var(--surface-4);border-radius:var(--radius-xl);backdrop-filter:blur(8px);box-shadow:0 0 44px -12px #e97ba58c;animation:messagePop .7s var(--ease-elastic) both}@keyframes messagePop{0%{opacity:0;transform:translateY(24px) scale(.94)}to{opacity:1;transform:none}}.gift__rays{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,transparent 0deg 8deg,rgba(244,164,96,.16) 8deg 14deg,transparent 14deg 24deg);animation:raysSpin 16s linear infinite;pointer-events:none;mask-image:radial-gradient(circle,#000 20%,transparent 72%)}@keyframes raysSpin{to{transform:rotate(360deg)}}.gift__sparks span{position:absolute;top:50%;left:50%;width:8px;height:8px;border-radius:50%;background:var(--accent-secondary);box-shadow:0 0 12px var(--accent-secondary);animation:sparkFly 1s var(--ease-smooth) var(--delay) both}@keyframes sparkFly{0%{opacity:1;transform:translate(-50%,-50%) rotate(var(--angle)) translateY(0) scale(.4)}to{opacity:0;transform:translate(-50%,-50%) rotate(var(--angle)) translateY(-150px) scale(1)}}.gift__orb{position:absolute;width:220px;height:220px;border-radius:50%;background:radial-gradient(circle,rgba(233,123,165,.5),transparent 68%);animation:orbGrow .9s var(--ease-elastic) both}@keyframes orbGrow{0%{transform:scale(.2);opacity:0}to{transform:scale(1);opacity:1}}@media (prefers-reduced-motion: reduce){.giftbox,.gift__rays,.gift__sparks span,.gift__orb{animation:none}}.wishes{position:relative;overflow:hidden;text-align:center;padding-bottom:calc(var(--space-20) + 80px)}.wishes__glow{position:absolute;bottom:-30%;left:50%;width:120%;height:90%;transform:translate(-50%);background:radial-gradient(closest-side,rgba(233,123,165,.24),transparent 72%);filter:blur(50px);pointer-events:none}.wishes__inner{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:var(--space-5);max-width:680px}.wishes__title{font-size:var(--text-4xl);font-style:italic;background:linear-gradient(110deg,var(--text-primary),var(--accent-primary));-webkit-background-clip:text;background-clip:text;color:transparent}.wishes__body{color:var(--text-secondary);font-size:var(--text-base);max-width:44ch}.wishes__actions{display:flex;flex-wrap:wrap;gap:var(--space-3);justify-content:center;margin-top:var(--space-2)}.wishes__actions .btn{padding:var(--space-3) var(--space-6);font-size:var(--text-sm)}.wishes__surprise{margin:var(--space-4) 0 0;padding:var(--space-5) var(--space-6);font-family:var(--font-display);font-size:var(--text-lg);font-style:italic;color:var(--accent-secondary);border-left:2px solid var(--accent-secondary);text-align:left;max-width:46ch;animation:fadeIn .5s var(--ease-smooth) both}.wishes__share-state{font-size:var(--text-xs);color:var(--text-tertiary);word-break:break-all}.wishes__closing{margin-top:var(--space-6);font-family:var(--font-display);font-size:var(--text-xl);color:var(--text-primary);max-width:34ch}.wishes__footer{display:flex;flex-wrap:wrap;gap:var(--space-3);justify-content:center;margin-top:var(--space-8)}.wishes__footer .btn{padding:var(--space-3) var(--space-6);font-size:var(--text-sm)}.wishes__signature{margin-top:var(--space-10);font-size:var(--text-xs);letter-spacing:.24em;text-transform:uppercase;color:var(--text-tertiary)}.particles{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;opacity:.85}@media (max-width: 520px){.particles{opacity:.6}}.countdown{position:fixed;top:max(var(--space-3),env(safe-area-inset-top));left:50%;transform:translate(-50%);z-index:55;display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--text-secondary);background:#10131cbf;border:1px solid var(--surface-4);border-radius:var(--radius-full);backdrop-filter:blur(12px);animation:fadeIn .6s var(--ease-smooth) both}.countdown--today{color:var(--accent-secondary);border-color:#f4a46066;text-transform:none;letter-spacing:.04em;font-size:var(--text-xs)}.countdown__label{color:var(--text-tertiary)}.countdown__value{color:var(--accent-primary);font-weight:500;font-variant-numeric:tabular-nums}@media (max-width: 380px){.countdown{font-size:.62rem;padding:var(--space-1) var(--space-3)}}:root{--surface-0: #05070C;--surface-1: #0A0D12;--surface-2: #0F131C;--surface-3: #161D2B;--surface-4: #1E2636;--surface-5: #2A3447;--accent-primary: #E97BA5;--accent-secondary: #F4A460;--accent-tertiary: #C084FC;--accent-glow: #FF69B4;--rose-muted: #9D7087;--amber-muted: #A67C52;--lavender-muted: #8B7AA8;--text-primary: #F8F9FA;--text-secondary: #C1C7CD;--text-tertiary: #8B92A0;--text-inverse: #0A0D12;--font-display: "Playfair Display", serif;--font-body: "Inter", sans-serif;--text-xs: clamp(.75rem, .7rem + .25vw, .875rem);--text-sm: clamp(.875rem, .8rem + .375vw, 1rem);--text-base: clamp(1rem, .925rem + .375vw, 1.125rem);--text-lg: clamp(1.125rem, 1rem + .625vw, 1.375rem);--text-xl: clamp(1.25rem, 1.1rem + .75vw, 1.625rem);--text-2xl: clamp(1.5rem, 1.3rem + 1vw, 2rem);--text-3xl: clamp(1.875rem, 1.6rem + 1.375vw, 2.625rem);--text-4xl: clamp(2.25rem, 1.9rem + 1.75vw, 3.375rem);--text-5xl: clamp(3rem, 2.5rem + 2.5vw, 4.5rem);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem;--space-24: 6rem;--radius-sm: .375rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--radius-2xl: 1.5rem;--radius-full: 999px;--radius-circle: 50%;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .5);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .5);--shadow-glow: 0 0 20px rgba(233, 123, 165, .4);--shadow-glow-intense: 0 0 40px rgba(233, 123, 165, .6);--duration-fast: .15s;--duration-base: .25s;--duration-slow: .4s;--duration-slower: .6s;--ease-smooth: cubic-bezier(.4, 0, .2, 1);--ease-bounce: cubic-bezier(.68, -.55, .265, 1.55);--ease-elastic: cubic-bezier(.175, .885, .32, 1.275)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-body);font-size:var(--text-base);line-height:1.6;color:var(--text-primary);background:var(--surface-0);overflow-x:hidden;position:relative}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:600;line-height:1.2;letter-spacing:-.02em}h1{font-size:var(--text-5xl)}h2{font-size:var(--text-4xl)}h3{font-size:var(--text-3xl)}h4{font-size:var(--text-2xl)}h5{font-size:var(--text-xl)}h6{font-size:var(--text-lg)}p{line-height:1.75;letter-spacing:.01em}a{color:var(--accent-primary);text-decoration:none;transition:color var(--duration-base) var(--ease-smooth)}a:hover{color:var(--accent-glow)}.container{width:100%;max-width:1280px;margin:0 auto;padding:0 var(--space-4)}@media (min-width: 768px){.container{padding:0 var(--space-8)}}.section{position:relative;padding:var(--space-20) 0;min-height:100vh;display:flex;flex-direction:column;justify-content:center}@media (max-width: 767px){.section{padding:var(--space-16) 0;min-height:auto}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-4) var(--space-8);font-family:var(--font-body);font-size:var(--text-base);font-weight:500;border:none;border-radius:var(--radius-full);cursor:pointer;transition:all var(--duration-base) var(--ease-smooth);position:relative;overflow:hidden}.btn-primary{background:linear-gradient(135deg,var(--accent-primary),var(--accent-secondary));color:var(--text-inverse);box-shadow:var(--shadow-md)}.btn-primary:hover{box-shadow:var(--shadow-glow);transform:translateY(-2px)}.btn-secondary{background:var(--surface-3);color:var(--text-primary);border:1px solid var(--surface-4)}.btn-secondary:hover{background:var(--surface-4);border-color:var(--accent-primary)}.btn-ghost{background:transparent;color:var(--accent-primary)}.btn-ghost:hover{background:#e97ba51a}.card{background:var(--surface-2);border-radius:var(--radius-xl);padding:var(--space-6);border:1px solid var(--surface-3);transition:all var(--duration-base) var(--ease-smooth)}.card:hover{background:var(--surface-3);border-color:var(--accent-primary);box-shadow:var(--shadow-lg)}input,textarea,select{font-family:var(--font-body);font-size:var(--text-base);color:var(--text-primary);background:var(--surface-2);border:1px solid var(--surface-4);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);transition:all var(--duration-base) var(--ease-smooth);width:100%}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px #e97ba533}.spinner{width:40px;height:40px;border:3px solid var(--surface-4);border-top-color:var(--accent-primary);border-radius:var(--radius-circle);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-20px)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes glowPulse{0%,to{box-shadow:0 0 20px #e97ba566}50%{box-shadow:0 0 40px #e97ba5cc}}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--surface-1)}::-webkit-scrollbar-thumb{background:var(--surface-4);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--accent-primary)}::selection{background:var(--accent-primary);color:var(--text-inverse)}.boot-screen{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-4);background:radial-gradient(circle at 50% 40%,var(--surface-3),var(--surface-0) 70%);color:var(--text-secondary);font-size:var(--text-sm);letter-spacing:.14em;text-transform:uppercase}.boot-heart{font-size:2.5rem;color:var(--accent-primary);animation:heartbeat 1.4s var(--ease-smooth) infinite}@keyframes heartbeat{0%,to{transform:scale(1);opacity:.75}40%{transform:scale(1.18);opacity:1}60%{transform:scale(1.05);opacity:.9}}.section-heading{text-align:center;margin-bottom:var(--space-12)}.section-heading__eyebrow{display:inline-block;font-size:var(--text-xs);letter-spacing:.32em;text-transform:uppercase;color:var(--accent-primary);margin-bottom:var(--space-3)}.section-heading__title{font-size:var(--text-4xl);margin-bottom:var(--space-3)}.section-heading__subtitle{color:var(--text-tertiary);max-width:46ch;margin:0 auto;font-size:var(--text-base)}.reveal{opacity:0;transform:translateY(28px);transition:opacity .7s var(--ease-smooth),transform .7s var(--ease-smooth)}.reveal.is-visible{opacity:1;transform:none}
