.sv-scope{--bg1:#07060a;--bg2:#14040e;--wine:#5d0015;--wine2:#8b001f;--gold:#ffcc3d;--pink:#ff4d8d;--rose:#ff2d55;--card: rgba(18, 6, 14, .88);--stroke: rgba(255,255,255,.16);--text:#fff;--muted: rgba(255,255,255,.78);--shadow: 0 22px 70px rgba(0,0,0,.62);color:var(--text);border-radius:26px;overflow:hidden;box-shadow:0 22px 70px #0003;border:1px solid rgba(255,255,255,.22);background:radial-gradient(1200px 900px at 70% 10%,rgba(255,77,141,.16) 0%,transparent 60%),radial-gradient(900px 700px at 20% 85%,rgba(255,204,61,.1) 0%,transparent 60%),radial-gradient(700px 600px at 10% 10%,rgba(139,0,31,.16) 0%,transparent 60%),linear-gradient(180deg,var(--bg1),var(--bg2))}.sv-scope .app{min-height:720px;display:grid;place-items:center;padding:22px;position:relative;overflow:hidden}.sv-scope .bg-hearts{position:absolute;inset:-20%;background-image:radial-gradient(circle at 12% 22%,rgba(255,77,141,.16) 0 2px,transparent 3px),radial-gradient(circle at 62% 12%,rgba(255,204,61,.12) 0 2px,transparent 3px),radial-gradient(circle at 34% 74%,rgba(255,45,85,.12) 0 2px,transparent 3px),radial-gradient(circle at 86% 70%,rgba(255,255,255,.06) 0 2px,transparent 3px);opacity:.95;animation:sv-drift 18s linear infinite;pointer-events:none}@keyframes sv-drift{0%{transform:translateZ(0) scale(1)}50%{transform:translate3d(-2%,2%,0) scale(1.02)}to{transform:translateZ(0) scale(1)}}@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::-moz-placeholder{opacity:1}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::-moz-placeholder{color:currentColor}::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::-moz-placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.block{display:block}.flex{display:flex}.hidden{display:none}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.border{border-style:var(--tw-border-style);border-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}}:root{color-scheme:dark}html{scroll-behavior:smooth}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}:root{--bg: #14040c;--wine: #5a0f2e;--rose: #e0184f;--rose-soft: #ff8fab;--blush: #ffd6e0;--cream: #fff4ef;--gold: #f2c777;--ink: #fdeef2;--muted: rgba(255, 232, 238, .68);--glass: rgba(255, 255, 255, .06);--glass-brd: rgba(255, 255, 255, .14);--serif: "Cormorant Garamond", Georgia, "Times New Roman", serif;--script: "Pinyon Script", "Snell Roundhand", "Apple Chancery", cursive;--hand: "Caveat", "Bradley Hand", cursive;--ko: "Nanum Myeongjo", "Noto Serif KR", "Apple SD Gothic Neo", "Malgun Gothic", serif;--ko-hand: "Nanum Pen Script", "Apple SD Gothic Neo", cursive;--sans: "Outfit", system-ui, -apple-system, "Segoe UI", sans-serif;--ease: cubic-bezier(.2, .8, .2, 1)}*,*:before,*:after{box-sizing:border-box}[hidden]{display:none!important}dialog{margin:auto}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{margin:0;min-height:100vh;position:relative;overflow-x:hidden;font-family:var(--sans);font-weight:300;line-height:1.6;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}img,svg,canvas{max-width:100%}button{font-family:inherit}:focus-visible{outline:2px solid var(--rose-soft);outline-offset:3px}::-moz-selection{background:#ff5c8a80;color:#fff}::selection{background:#ff5c8a80;color:#fff}.aurora{position:fixed;inset:0;z-index:-2;overflow:hidden;background:radial-gradient(120% 90% at 50% -10%,#4b0e2c,#2a0a1b 48%,#14040c)}.aurora i{position:absolute;border-radius:50%;animation:drift 30s ease-in-out infinite alternate;will-change:transform}.aurora i:nth-child(1){width:70vmax;height:70vmax;left:-22vmax;top:-18vmax;background:radial-gradient(circle,rgba(220,40,100,.38),transparent 65%)}.aurora i:nth-child(2){width:60vmax;height:60vmax;right:-20vmax;top:30vh;background:radial-gradient(circle,rgba(140,50,190,.26),transparent 65%);animation-duration:38s;animation-delay:-8s}.aurora i:nth-child(3){width:55vmax;height:55vmax;left:10vw;bottom:-25vmax;background:radial-gradient(circle,rgba(255,130,90,.18),transparent 65%);animation-duration:44s;animation-delay:-15s}.grain{position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.05;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.fx-canvas{position:fixed;inset:0;width:100%;height:100%;z-index:700;pointer-events:none}.vines{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden}main,.footer{position:relative;z-index:1}.cb{position:relative;min-height:100vh}main{overflow-x:clip}.rose{display:block;overflow:visible}.rose .pt{transform-origin:0 0;transform:scale(.05) rotate(-40deg);opacity:0}.rose.bloom .pt,.cake-stage.in .rose .pt{animation:petalOpen 1.25s cubic-bezier(.2,.9,.25,1.2) both;animation-delay:calc(var(--i) * 85ms + var(--d, 0ms))}.rose.bloom{filter:drop-shadow(0 4px 8px rgba(110,0,40,.35))}.nav{position:fixed;top:max(12px,env(safe-area-inset-top));left:10px;right:10px;width:-moz-fit-content;width:fit-content;max-width:calc(100vw - 20px);margin-inline:auto;z-index:800;display:flex;align-items:center;gap:4px;padding:6px 8px 6px 10px;border-radius:999px;background:#2c081a80;border:1px solid var(--glass-brd);backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4);box-shadow:0 10px 40px #0000004d;transition:background .3s,box-shadow .3s}.nav.scrolled{background:#1e0512c7;box-shadow:0 14px 44px #00000080}.nav-brand{width:36px;height:36px;display:grid;place-items:center;flex:none}.nav-brand svg{width:32px;height:32px}.nav-links{display:flex;flex:0 1 auto;gap:2px;min-width:0;overflow-x:auto;scrollbar-width:none}.nav-links::-webkit-scrollbar{display:none}.nav-links a{padding:8px 14px;border-radius:999px;color:var(--muted);text-decoration:none;font-size:.9rem;font-weight:400;white-space:nowrap;transition:color .2s,background .2s}.nav-links a:hover{color:#fff;background:#ffffff14}.nav-links a.active{color:#fff;background:linear-gradient(135deg,#ff5c8a8c,#e0184f8c)}.nav-petals{display:flex;align-items:center;gap:6px;border:0;cursor:pointer;padding:8px 14px;border-radius:999px;color:#fff;font-size:.9rem;font-weight:500;background:linear-gradient(135deg,#ff5c8a,#c9184a);box-shadow:0 6px 18px #c9184a73;transition:transform .2s;flex:none}.nav-petals:hover{transform:scale(1.05)}.nav-petals b{font-weight:500}.section{position:relative;z-index:1;padding:clamp(72px,10vw,132px) max(clamp(16px,4vw,32px),calc((100% - 1120px)/2))}.section-head{text-align:center;margin-bottom:clamp(28px,5vw,56px);position:relative;z-index:3}.kicker{margin:0;font:500 .78rem/1 var(--sans);letter-spacing:.34em;text-transform:uppercase;color:var(--gold)}.h2{margin:.35em 0 .1em;font:600 clamp(2.3rem,6.4vw,4.2rem)/1.05 var(--serif);letter-spacing:-.01em}.h2 em{font:400 1.3em/1 var(--script);color:var(--rose-soft);font-style:normal;padding-left:.04em;text-shadow:0 0 40px rgba(255,90,140,.45)}.lead{color:var(--muted);font-size:1.06rem;max-width:34em;margin:.6em auto 0}.divider{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:14px}.divider:before,.divider:after{content:"";height:1px;width:min(22vw,170px);background:linear-gradient(90deg,transparent,rgba(255,150,180,.65))}.divider:after{transform:scaleX(-1)}.divider svg{width:46px;height:46px}.hint{text-align:center;color:var(--muted);font-size:.86rem;margin:14px 0 0}.reveal{opacity:0;transform:translateY(28px);transition:opacity .9s var(--ease),transform .9s var(--ease)}.reveal.in{opacity:1;transform:none}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:.6em;padding:.85em 1.45em;border-radius:999px;color:#fff;font:500 .98rem/1.2 var(--sans);transition:transform .2s var(--ease),box-shadow .2s,background .2s;position:relative;overflow:hidden}.btn i{font-style:normal}.btn:hover{transform:translateY(-2px)}.btn:active{transform:translateY(0) scale(.98)}.btn-primary{background:linear-gradient(135deg,#ff5c8a,#e0184f);box-shadow:0 10px 26px #e0184f66,inset 0 1px #ffffff59}.btn-primary:hover{box-shadow:0 14px 32px #e0184f8c,inset 0 1px #ffffff59}.btn-primary:after{content:"";position:absolute;top:0;bottom:0;left:-60%;width:40%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.35),transparent);transform:skew(-20deg);transition:left .6s}.btn-primary:hover:after{left:130%}.btn-ghost{background:var(--glass);border:1px solid var(--glass-brd);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.btn-ghost:hover{background:#ffffff21}.btn.on,.btn.listening{background:#ff5c8a38;border-color:#ff5c8a99}.btn.listening{box-shadow:0 0 0 calc(var(--lvl, 0) * 16px) #ff5c8a4d;animation:listen 1.2s ease-in-out infinite}.hero{position:relative;z-index:1;min-height:100vh;min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:104px 20px 84px}.hero-kicker{margin-bottom:8px}.hero-title{margin:0;line-height:.95;font-weight:400}.hero-title .pre{display:block;font:italic 500 clamp(1.3rem,3.6vw,2rem)/1 var(--serif);letter-spacing:.28em;text-transform:uppercase;color:var(--blush);opacity:.85;margin-bottom:.1em}.hero-title .name-ko{display:block;font:800 clamp(5.4rem,21vw,12rem)/1.08 var(--ko);letter-spacing:.04em;padding:.02em .12em .06em;width:-moz-max-content;width:max-content;max-width:100%;margin:0 auto;background:linear-gradient(110deg,#ffe6ee,#ff9ab8 32%,#f2c777,#ff9ab8 72%,#ffe6ee);background-size:240% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 8px 34px rgba(255,80,130,.42));animation:write 2.8s cubic-bezier(.6,.05,.2,1) .3s both,shimmer 8s linear 3.2s infinite}.hero-title .name-fr{display:block;margin-top:-.1em;font:400 clamp(2.6rem,9vw,4.6rem)/1.1 var(--script);color:var(--rose-soft);text-shadow:0 0 40px rgba(255,90,140,.5);animation:fadeUp 1s 1.6s both}.hero-ko{margin:0 0 8px}.tagline{min-height:1.6em;margin:.5rem 0 0;font:italic 500 clamp(1.25rem,3vw,1.7rem)/1.4 var(--serif);color:var(--blush);opacity:0;transform:translateY(8px);transition:opacity .6s,transform .6s}.tagline.in{opacity:1;transform:none}.dome{position:relative;width:min(72vw,300px);aspect-ratio:320 / 440;margin:.8rem auto 0}.dome-svg{position:relative;z-index:1;display:block;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 22px 36px rgba(0,0,0,.45))}.dome-glow{position:absolute;inset:-22% -34% -6%;background:radial-gradient(closest-side,#ff5a8c80,#ff5a8c00 72%);animation:pulseGlow 5s ease-in-out infinite}.dome-rose-g{transform-box:view-box;transform-origin:160px 250px;animation:roseSway 7s ease-in-out infinite}.dome .leaf{transform-box:fill-box;transform-origin:0 50%}.fall-petal{transform-box:fill-box;transform-origin:center;animation:petalFall 12s ease-in 3s infinite;opacity:0}.dome-sparkles{position:absolute;inset:0;z-index:2;pointer-events:none}.dome-sparkles i{position:absolute;width:var(--s);height:var(--s);border-radius:50%;background:#ffe3ea;box-shadow:0 0 10px 3px #ffaac8d9;opacity:0;animation:floaty var(--t) ease-in-out var(--d) infinite}.love{margin-top:2.2rem;width:min(100%,540px)}.counter-title{margin:0 0 14px;text-align:center;font:italic 500 1.25rem/1.3 var(--serif);color:var(--blush)}.counter{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.cbox{padding:14px 6px 12px;border-radius:20px;text-align:center;background:linear-gradient(180deg,#ffffff17,#ffffff08);border:1px solid var(--glass-brd);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:inset 0 1px #ffffff1f,0 10px 30px #00000040}.cbox .v{display:block;font:600 clamp(1.7rem,6vw,2.6rem)/1 var(--serif);font-variant-numeric:tabular-nums;color:#fff}.cbox .l{display:block;margin-top:6px;font-size:.66rem;letter-spacing:.22em;text-transform:uppercase;color:var(--muted)}.scroll-cue{position:absolute;bottom:22px;left:50%;width:26px;height:42px;margin-left:-13px;border:2px solid rgba(255,255,255,.38);border-radius:14px}.scroll-cue span{position:absolute;left:50%;top:8px;width:4px;height:8px;margin-left:-2px;border-radius:2px;background:var(--rose-soft);animation:cue 1.8s ease-in-out infinite}.birthday{overflow:hidden;padding-top:clamp(110px,14vw,170px)}.birthday:before{content:"";position:absolute;left:50%;top:22%;width:min(140vw,1100px);aspect-ratio:1;transform:translate(-50%);background:radial-gradient(closest-side,rgba(255,110,150,.2),transparent 70%);pointer-events:none}.bunting{position:absolute;top:0;left:0;right:0;height:100px;pointer-events:none;z-index:2}.rope{position:absolute;top:0;left:0;width:100%;height:56px;overflow:visible}.rope path{fill:none;stroke:#ffe2b4bf;stroke-width:2}.flag{position:absolute;width:clamp(22px,3.6vw,40px);aspect-ratio:1 / 1.2;margin-left:calc(clamp(22px,3.6vw,40px)/-2);background:var(--c);clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:50% 0;animation:swing 3.6s ease-in-out infinite;animation-delay:calc(var(--k) * -.35s);filter:brightness(.95)}.balloons{position:absolute;inset:0;z-index:2;pointer-events:none}.balloon{position:absolute;width:calc(64px * var(--s));height:calc(80px * var(--s));padding:0;border:0;cursor:pointer;pointer-events:auto;border-radius:50% 50% 48% 48%/46% 46% 54% 54%;background:radial-gradient(circle at 32% 26%,rgba(255,255,255,.9) 0 5%,var(--c1) 22%,var(--c2) 100%);box-shadow:inset -6px -8px 14px #0000002e,0 14px 26px #0000004d;animation:float 6s ease-in-out infinite;animation-delay:var(--d);transition:opacity .25s}.balloon:before{content:"";position:absolute;left:50%;bottom:-7px;width:12px;height:9px;margin-left:-6px;background:var(--c2);clip-path:polygon(50% 0,100% 100%,0 100%)}.balloon:after{content:"";position:absolute;left:50%;top:100%;width:1px;height:110px;background:linear-gradient(rgba(255,255,255,.55),transparent)}.balloon.popped{animation:none;transform:scale(1.5);opacity:0;pointer-events:none}.balloon:nth-child(1){top:22%}.balloon:nth-child(2){top:44%}.balloon:nth-child(3){top:10%}.balloon:nth-child(4){top:30%}.balloon:nth-child(5){top:54%}.balloon:nth-child(6){top:14%}.cake-stage{position:relative;width:min(94vw,640px);margin:0 auto;z-index:3}.cake{display:block;width:100%;height:auto;overflow:visible;filter:drop-shadow(0 30px 34px rgba(0,0,0,.35))}.cake-stage:not(.in) .cake *{animation-play-state:paused!important}.cake-halo{transform-box:fill-box;transform-origin:center;animation:haloPulse 5s ease-in-out infinite}.stand{animation:fadeUp 1s both}.cake-bob{animation:bob 6s ease-in-out infinite}.tier{animation:tierDrop 1.15s cubic-bezier(.3,1.45,.5,1) both;animation-delay:calc(var(--i) * .42s + .25s)}.drip{transform-box:fill-box;transform-origin:50% 0;animation:dripGrow 1.5s cubic-bezier(.3,.9,.3,1) both;animation-delay:calc(var(--i) * .42s + .95s + var(--k) * .12s)}.pearl,.heart-deco{transform-box:fill-box;transform-origin:center;animation:pop .55s cubic-bezier(.3,1.8,.5,1) both;animation-delay:calc(var(--i) * .42s + 1.1s + var(--k, 0) * 35ms)}.tier-text{font-family:var(--script);fill:#a3153f;animation:fadeIn 1.2s 2.1s both}.leaves{transform-box:fill-box;transform-origin:center;animation:pop .6s cubic-bezier(.3,1.8,.5,1) both;animation-delay:var(--d, 1.5s)}.candle{cursor:pointer;animation:candleUp .7s cubic-bezier(.3,1.5,.5,1) both;animation-delay:calc(2.5s + var(--k) * .12s);outline:none}.candle:focus-visible .candle-hit{stroke:var(--rose-soft);stroke-width:2;stroke-dasharray:4 4}.flame-wrap{transform-box:fill-box;transform-origin:50% 100%;transition:transform .45s cubic-bezier(.5,-.5,.5,1),opacity .35s}.candle.out .flame-wrap{transform:scale(0);opacity:0}.flame{transform-box:fill-box;transform-origin:50% 100%;animation:flicker 1.5s ease-in-out infinite;animation-delay:calc(var(--k) * -.31s)}.glow{animation:glowPulse 2s ease-in-out infinite;animation-delay:calc(var(--k) * -.4s)}.smoke{opacity:0;stroke-dasharray:70;stroke-dashoffset:70}.candle.out .smoke{animation:smoke 2.8s ease-out .1s both}.tw{transform-box:fill-box;transform-origin:center;animation:twinkle 2.8s ease-in-out infinite;animation-delay:calc(var(--k) * -.55s)}.cake-stage.celebrate .cake{animation:cakeJump .9s var(--ease)}.wish{text-align:center;margin-top:1rem;animation:fadeUp .9s both}.wish-big{margin:0;font:400 clamp(2.6rem,9vw,4.4rem)/1.05 var(--script);background:linear-gradient(110deg,#ffe6ee,#ff9ab8,#f2c777,#ff9ab8,#ffe6ee);background-size:240% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shimmer 5s linear infinite;padding:.05em .1em .12em}.wish-small{margin:.2em 0 0;font:italic 500 1.3rem var(--serif);color:var(--blush)}.bd-actions{position:relative;z-index:3;display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:clamp(22px,4vw,36px)}.birthday .hint{position:relative;z-index:3}.bd-bottom{position:relative;z-index:3;display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,6vw,80px);align-items:start;margin-top:clamp(56px,8vw,96px)}.bd-letter{display:flex;flex-direction:column;align-items:center}.envelope{position:relative;width:230px;height:150px;margin-top:8px;padding:0;border:0;background:none;cursor:pointer;perspective:900px;transition:transform .3s var(--ease)}.envelope:hover,.envelope:focus-visible{transform:translateY(-4px) rotate(-1deg)}.env-back{position:absolute;inset:0;border-radius:6px;background:#f1bcc9;box-shadow:0 22px 40px #00000073}.env-paper{position:absolute;left:12px;right:12px;top:10px;height:122px;z-index:1;display:grid;place-items:center;text-align:center;border-radius:4px;background:#fffaf5;color:#b0204a;font:400 1.9rem/1.1 var(--script);transition:transform .55s .12s cubic-bezier(.3,1.3,.5,1)}.env-front{position:absolute;inset:0;z-index:2;border-radius:6px;background:linear-gradient(160deg,#f9d3dc,#eaa9b9);clip-path:polygon(0 0,50% 58%,100% 0,100% 100%,0 100%)}.env-flap{position:absolute;left:0;right:0;top:0;height:87px;z-index:3;background:linear-gradient(#f5c0cd,#e79cae);clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top;transition:transform .5s cubic-bezier(.4,0,.2,1)}.env-seal{position:absolute;left:50%;top:58%;z-index:4;width:34px;height:34px;margin:-17px 0 0 -17px;display:grid;place-items:center;border-radius:50%;color:#fff;font-size:15px;background:radial-gradient(circle at 35% 30%,#ff7a9f,#c9184a);box-shadow:0 4px 10px #00000059;transition:opacity .2s}.envelope:hover .env-paper,.envelope:focus-visible .env-paper{transform:translateY(-58px)}.envelope:hover .env-flap,.envelope:focus-visible .env-flap{transform:rotateX(180deg);z-index:0}.envelope:hover .env-seal,.envelope:focus-visible .env-seal{opacity:0}.letter,.advent-dialog{border:0;padding:0;background:transparent;width:min(92vw,520px);max-width:none;color:#3b1420;overflow:visible}.letter::backdrop,.advent-dialog::backdrop{background:#14020abd;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.letter-paper{position:relative;padding:clamp(28px,6vw,48px);border-radius:8px;background:repeating-linear-gradient(transparent 0 33px,#b0204a1a 33px 34px),linear-gradient(#fffaf3,#fdeee6);box-shadow:0 30px 80px #0009;animation:unfold .8s cubic-bezier(.2,.9,.3,1.1) both}.letter h3{margin:0 0 .5em;font:400 clamp(2.1rem,7vw,3rem)/1.1 var(--script);color:#b0204a}.letter p{margin:0 0 .7em;font:600 clamp(1.15rem,3.8vw,1.45rem)/1.5 var(--hand);opacity:0;animation:fadeUp .8s both;animation-delay:calc(.6s + var(--i) * .6s)}.letter .sign{text-align:right;color:#b0204a}.letter-close{position:absolute;top:8px;right:12px;border:0;background:none;font-size:2rem;line-height:1;color:#b0204a;cursor:pointer}.albums{display:grid;gap:14px;max-width:880px;margin:0 auto}.album-bar{width:100%;display:flex;align-items:center;gap:16px;padding:12px 18px;border-radius:22px;border:1px solid var(--glass-brd);background:linear-gradient(180deg,#ffffff17,#ffffff08);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:var(--ink);text-align:left;cursor:pointer;box-shadow:0 12px 30px #00000040;transition:background .25s,transform .2s}.album-bar:hover{background:#ffffff21;transform:translateY(-2px)}.album-bar.open{background:linear-gradient(180deg,#ff5c8a29,#ffffff0a)}.album-thumbs{display:flex;flex:none;padding-left:12px}.album-thumbs img{width:46px;height:46px;margin-left:-12px;border-radius:12px;-o-object-fit:cover;object-fit:cover;border:2px solid #2a0a1b;transform:rotate(calc((var(--i) - 1) * 5deg));box-shadow:0 4px 10px #0006}.album-title{flex:1;min-width:0;font:400 clamp(1.8rem,4.6vw,2.5rem)/1.1 var(--script);color:var(--blush);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-bottom:.08em}.album-count{flex:none;font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}.album-chevron{flex:none;width:36px;height:36px;display:grid;place-items:center;border-radius:50%;background:#ffffff17;font-size:1.5rem;line-height:1;padding-bottom:3px;transition:transform .35s var(--ease),background .3s}.album-bar.open .album-chevron{transform:rotate(45deg);background:linear-gradient(135deg,#ff5c8a,#e0184f)}.album-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .55s var(--ease)}.album-body.open{grid-template-rows:1fr}.album-body>div{min-height:0;overflow:hidden}.anim-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px;max-width:1000px;margin:0 auto}.anim-card{overflow:hidden;border-radius:24px;border:1px solid var(--glass-brd);background:#ffffff0d;box-shadow:0 16px 40px #0000004d}.anim-card img,.anim-card video{display:block;width:100%;height:240px;-o-object-fit:cover;object-fit:cover}.gallery-wrapper{position:relative}.gallery-track{display:flex;gap:clamp(14px,2.4vw,26px);overflow-x:auto;padding:26px 14px 34px;scroll-snap-type:x proximity;scrollbar-width:none;-webkit-overflow-scrolling:touch;outline:none;cursor:grab;-webkit-mask-image:linear-gradient(90deg,transparent,#000 20px,#000 calc(100% - 20px),transparent);mask-image:linear-gradient(90deg,transparent,#000 20px,#000 calc(100% - 20px),transparent)}.gallery-track::-webkit-scrollbar{display:none}.gallery-track.dragging{cursor:grabbing;scroll-snap-type:none}.gallery-track.dragging .polaroid-btn{pointer-events:none}.polaroid{position:relative;flex:0 0 auto;margin:0;padding:10px 10px 36px;border-radius:4px;background:#fff8f3;box-shadow:0 16px 32px #0000006b;transform:rotate(var(--tilt, 0deg));transition:transform .4s cubic-bezier(.3,1.4,.5,1),box-shadow .4s;scroll-snap-align:center}.polaroid:before{content:"";position:absolute;top:-11px;left:50%;width:72px;height:22px;margin-left:-36px;background:#ffd2e099;transform:rotate(-2deg);box-shadow:0 1px 3px #0003;z-index:1}.polaroid:hover{transform:rotate(0) translateY(-8px) scale(1.03);box-shadow:0 26px 44px #00000080;z-index:2}.polaroid-btn{display:block;padding:0;border:0;background:#2a0d18;cursor:zoom-in}.polaroid img{display:block;height:clamp(210px,32vw,320px);width:auto;min-width:160px;max-width:78vw;-o-object-fit:cover;object-fit:cover;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.gallery-nav{position:absolute;top:50%;z-index:4;width:48px;height:48px;margin-top:-24px;padding:0 0 4px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--glass-brd);background:#2c081ab8;color:#fff;font-size:1.9rem;line-height:1;cursor:pointer;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:opacity .25s,transform .2s,background .2s}.gallery-nav:hover{background:#e0184fb3;transform:scale(1.08)}.gallery-nav.prev{left:4px}.gallery-nav.next{right:4px}.at-start .prev,.at-end .next,.no-overflow .gallery-nav{opacity:0;pointer-events:none}@media(hover:none)and (pointer:coarse){.gallery-nav{display:none}}.lightbox{border:0;padding:0;background:transparent;width:100vw;height:100vh;height:100dvh;max-width:none;max-height:none;overflow:hidden;color:#fff}.lightbox::backdrop{background:#0c0106f2}.lb-fig{margin:0;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:60px clamp(12px,8vw,90px) 24px}.lb-img{max-width:100%;max-height:calc(100vh - 150px);max-height:calc(100dvh - 150px);-o-object-fit:contain;object-fit:contain;border-radius:6px;box-shadow:0 30px 80px #0009;opacity:0;transform:scale(.97);transition:opacity .35s,transform .35s var(--ease);-webkit-user-drag:none}.lb-img.in{opacity:1;transform:none}.lb-cap{display:flex;align-items:baseline;gap:16px;color:var(--muted);font-size:.85rem;letter-spacing:.12em}.lb-title{font:400 1.9rem var(--script);color:var(--blush);letter-spacing:0}.lb-close,.lb-nav{position:absolute;z-index:5;border:1px solid var(--glass-brd);background:#ffffff14;color:#fff;border-radius:50%;cursor:pointer;display:grid;place-items:center;transition:background .2s}.lb-close:hover,.lb-nav:hover{background:#e0184fb3}.lb-close{top:16px;right:18px;width:44px;height:44px;font-size:1.8rem;line-height:1;padding-bottom:3px}.lb-nav{top:50%;width:52px;height:52px;margin-top:-26px;font-size:2rem;line-height:1;padding-bottom:5px}.lb-prev{left:14px}.lb-next{right:14px}.lightbox.single .lb-nav{display:none}.heart-card{max-width:580px;margin:0 auto;padding:clamp(16px,4vw,28px);text-align:center;border-radius:32px;background:linear-gradient(180deg,#ffffff14,#ffffff05);border:1px solid var(--glass-brd);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 30px 70px #00000059,inset 0 1px #ffffff1f}.heart-canvas{display:block;width:100%;height:clamp(270px,62vw,400px);touch-action:pan-y}.heart-controls{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:10px}.footer{text-align:center;padding:40px 20px 110px;color:var(--muted);font-size:.9rem}.footer-roses{display:flex;justify-content:center;align-items:flex-end;gap:6px;margin-bottom:10px}.footer-roses svg{width:46px;height:46px}.footer-roses span:nth-child(2) svg{width:62px;height:62px}.footer p{margin:0}.beat{display:inline-block;color:var(--rose-soft);animation:beat 1.2s ease-in-out infinite}.toast{position:fixed;left:50%;bottom:96px;z-index:1300;max-width:min(90vw,440px);padding:12px 20px;border-radius:999px;background:#1e0512eb;border:1px solid var(--glass-brd);color:#fff;font-size:.92rem;text-align:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 14px 40px #00000080;transform:translate(-50%,20px);opacity:0;pointer-events:none;transition:opacity .3s,transform .3s var(--ease)}.toast.show{opacity:1;transform:translate(-50%)}.vine{position:absolute;top:0;overflow:visible}.vine-left{left:6px}.vine-right{right:6px}.v-stem{fill:none;stroke:#2f7d4f;stroke-width:3;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;opacity:.8;transition:stroke-dashoffset .6s linear}.v-pop{transform-box:fill-box;transform-origin:center;transform:scale(0);opacity:0;transition:transform .9s cubic-bezier(.3,1.6,.5,1),opacity .5s}.v-pop.in{transform:none;opacity:1}.v-leaf{fill:#2f8a55}.v-pop:nth-of-type(3n) .v-leaf{fill:#3a9962}.v-pop:nth-of-type(4n) .v-leaf{fill:#24704a}.vine-rose{filter:drop-shadow(0 3px 8px rgba(255,60,110,.35))}.player{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));z-index:900;display:flex;flex-direction:column-reverse;align-items:flex-end;gap:12px;pointer-events:none}.player>*{pointer-events:auto}.p-fab{position:relative;width:70px;height:70px;padding:0;border:0;border-radius:50%;cursor:pointer;background:#22091a;box-shadow:0 14px 34px #0000008c,0 0 0 1px #ffffff1f;transition:transform .25s var(--ease)}.p-fab:hover{transform:scale(1.07)}.player:not(.seen) .p-fab{animation:fabHint 2.6s ease-in-out infinite}.p-ring{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}.p-ring circle{fill:none;stroke-width:3}.p-ring-bg{stroke:#ffffff24}.p-ring-fg{stroke:var(--rose-soft);stroke-linecap:round;transition:stroke-dashoffset .3s linear}.p-disc{position:absolute;inset:7px;border-radius:50%;box-shadow:inset 0 0 0 2px #00000073}.playing .p-disc{animation:spin 8s linear infinite}.p-hole{position:absolute;left:50%;top:50%;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;background:#1b0611;box-shadow:0 0 0 2px #ffffff47}.p-badge{position:absolute;right:-3px;top:-3px;width:26px;height:26px;display:grid;place-items:center;border-radius:50%;color:#fff;background:linear-gradient(135deg,#ff5c8a,#e0184f);box-shadow:0 4px 10px #0006}.p-badge svg{width:13px;height:13px}.cover{background-size:cover;background-position:center;background-repeat:no-repeat}.cover.no-cover{background-image:radial-gradient(circle at 30% 25%,#ff8fab,#c9184a 55%,#5a0f2e)}.np-sleeve.no-cover:after,.p-thumb.no-cover:after{content:"🌹";position:absolute;inset:0;display:grid;place-items:center;font-size:3.2rem}.p-thumb.no-cover:after{font-size:1.3rem}.p-panel{width:min(392px,calc(100vw - 32px));max-height:min(80vh,680px);overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.2) transparent;border-radius:28px;background:linear-gradient(180deg,#3e0e28f0,#180410f7);border:1px solid var(--glass-brd);backdrop-filter:blur(24px) saturate(1.3);-webkit-backdrop-filter:blur(24px) saturate(1.3);box-shadow:0 30px 80px #0009;transform-origin:bottom right;transform:scale(.86) translateY(24px);opacity:0;visibility:hidden;transition:transform .38s cubic-bezier(.3,1.3,.5,1),opacity .25s,visibility 0s .38s}.player.open .p-panel{transform:none;opacity:1;visibility:visible;transition-delay:0s}.p-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px 4px 22px;font:500 .74rem/1 var(--sans);letter-spacing:.22em;text-transform:uppercase;color:var(--gold)}.p-head small{margin-left:8px;letter-spacing:.1em;color:var(--muted);text-transform:none;font-size:.78rem}.p-close{width:34px;height:34px;border:0;border-radius:50%;background:#ffffff14;color:#fff;font-size:1.4rem;line-height:1;cursor:pointer;padding-bottom:2px}.p-close:hover{background:#ffffff29}.np{padding:4px 20px 6px}.np-stage{position:relative;height:190px;display:flex;justify-content:center;align-items:center}.np-sleeve{position:relative;z-index:2;width:172px;height:172px;border-radius:14px;box-shadow:0 18px 40px #0000008c;transition:transform .9s cubic-bezier(.3,1.2,.5,1)}.np-vinyl{position:absolute;z-index:1;left:50%;top:50%;width:162px;height:162px;margin:-81px 0 0 -81px;border-radius:50%;background:repeating-radial-gradient(circle,#151015 0 2px,#241b24 2px 4px);box-shadow:0 10px 30px #00000080;transition:transform .9s cubic-bezier(.3,1.1,.5,1)}.np-vinyl-spin{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 20deg,transparent 0 20%,rgba(255,255,255,.09) 25%,transparent 30% 70%,rgba(255,255,255,.09) 75%,transparent 80%)}.playing .np-vinyl-spin{animation:spin 4.5s linear infinite}.np-label{position:absolute;left:50%;top:50%;width:62px;height:62px;margin:-31px 0 0 -31px;border-radius:50%}.np-label:after{content:"";position:absolute;left:50%;top:50%;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;background:#1b0611}.playing .np-vinyl{transform:translate(72px)}.playing .np-sleeve{transform:translate(-44px)}.np-meta{text-align:center;margin-top:6px}.np-title{margin:0;font:600 1.4rem/1.2 var(--serif);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.np-artist{margin:2px 0 0;color:var(--muted);font-size:.9rem}.swap .np-meta{animation:fadeUp .5s both}.p-bars{display:flex;gap:3px;justify-content:center;align-items:flex-end;height:22px;margin:8px 0 2px}.p-bars i{width:4px;height:4px;border-radius:2px;background:linear-gradient(#ff8fab,#e0184f);transition:height .4s}.playing .p-bars i{animation:eq .9s ease-in-out infinite}.playing .p-bars i:nth-child(3n){animation-duration:1.15s;animation-delay:-.3s}.playing .p-bars i:nth-child(3n+1){animation-duration:.75s;animation-delay:-.5s}.playing .p-bars i:nth-child(5n){animation-duration:1.4s;animation-delay:-.1s}.playing .p-bars i:nth-child(7n){animation-duration:.6s;animation-delay:-.7s}.np-time{display:flex;align-items:center;gap:10px;font:400 .74rem/1 var(--sans);color:var(--muted);font-variant-numeric:tabular-nums}.np-time span{width:34px}.np-time .p-dur{text-align:right}.np input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex:1;height:22px;margin:0;background:transparent;cursor:pointer}.np input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:linear-gradient(90deg,var(--rose-soft) var(--p, 0%),rgba(255,255,255,.17) var(--p, 0%))}.np input[type=range]::-moz-range-track{height:4px;border-radius:2px;background:#ffffff2b}.np input[type=range]::-moz-range-progress{height:4px;border-radius:2px;background:var(--rose-soft)}.np input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;margin-top:-5px;border-radius:50%;background:#fff;box-shadow:0 2px 6px #00000080}.np input[type=range]::-moz-range-thumb{width:14px;height:14px;border:0;border-radius:50%;background:#fff;box-shadow:0 2px 6px #00000080}.np-ctrl{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:4px}.p-btn{position:relative;width:46px;height:46px;padding:0;border:0;border-radius:50%;display:grid;place-items:center;background:transparent;color:#fff;cursor:pointer;transition:transform .15s,background .2s,color .2s}.p-btn svg{width:22px;height:22px;fill:currentColor}.p-btn:hover{background:#ffffff1a}.p-btn:active{transform:scale(.92)}.p-play{width:62px;height:62px;background:linear-gradient(135deg,#ff5c8a,#e0184f);box-shadow:0 10px 24px #e0184f80}.p-play:hover{background:linear-gradient(135deg,#ff6f99,#ea2a5d)}.p-play svg{width:28px;height:28px}.p-shuf,.p-rep{color:var(--muted)}.p-shuf svg,.p-rep svg{fill:none}.p-shuf.on,.p-rep.on{color:var(--rose-soft)}.p-shuf.on:after,.p-rep.on:after{content:"";position:absolute;bottom:5px;left:50%;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:var(--rose-soft)}.p-rep-1{display:none;position:absolute;font:700 .55rem/1 var(--sans);top:50%;left:50%;transform:translate(-50%,-45%)}.p-rep.one .p-rep-1{display:block}.np-vol{display:flex;align-items:center;gap:8px;padding:2px 10px 0;color:var(--muted)}.p-vol-i svg{width:18px;height:18px;display:block}.p-list{list-style:none;margin:8px 0 0;padding:8px 8px 12px;max-height:min(30vh,250px);overflow-y:auto;border-top:1px solid rgba(255,255,255,.08);scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.2) transparent}.p-item{width:100%;display:flex;align-items:center;gap:12px;padding:7px 10px;border:0;border-radius:14px;background:transparent;color:var(--ink);text-align:left;cursor:pointer;transition:background .2s}.p-item:hover{background:#ffffff12}.p-item.is-current{background:#ff5c8a26}.p-num{width:18px;flex:none;text-align:center;font-size:.8rem;color:var(--muted);font-variant-numeric:tabular-nums}.p-eq{display:none;width:18px;flex:none;height:14px;align-items:flex-end;justify-content:center;gap:2px}.p-eq i{width:3px;height:4px;background:var(--rose-soft);border-radius:1px;animation:eq .8s ease-in-out infinite}.p-eq i:nth-child(2){animation-delay:-.3s;animation-duration:1s}.p-eq i:nth-child(3){animation-delay:-.6s}.p-item.is-playing .p-num{display:none}.p-item.is-playing .p-eq{display:flex}.p-thumb{position:relative;width:44px;height:44px;flex:none;border-radius:9px}.p-info{min-width:0}.p-info b{display:block;font-weight:500;font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.p-info small{display:block;color:var(--muted);font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.p-item.is-current b{color:var(--rose-soft)}@keyframes drift{to{transform:translate3d(6vw,4vh,0) scale(1.08)}}@keyframes write{0%{clip-path:inset(-20% 100% -20% 0)}to{clip-path:inset(-20% -5% -20% 0)}}@keyframes shimmer{to{background-position:-240% 0}}@keyframes pulseGlow{0%,to{opacity:.7;transform:scale(.96)}50%{opacity:1;transform:scale(1.05)}}@keyframes roseSway{0%,to{transform:rotate(-2.2deg)}50%{transform:rotate(2.2deg)}}@keyframes petalFall{0%{opacity:0;transform:translate(0) rotate(0)}8%{opacity:1}70%{opacity:1;transform:translate(-18px,130px) rotate(200deg)}82%{opacity:1;transform:translate(-14px,156px) rotate(250deg)}to{opacity:0;transform:translate(-14px,158px) rotate(262deg)}}@keyframes floaty{0%{opacity:0;transform:translateY(14px)}30%{opacity:.95}to{opacity:0;transform:translateY(-44px)}}@keyframes cue{0%{opacity:0;transform:translateY(0)}30%{opacity:1}to{opacity:0;transform:translateY(16px)}}@keyframes petalOpen{0%{transform:scale(.05) rotate(-40deg);opacity:0}25%{opacity:1}to{transform:scale(1) rotate(0);opacity:1}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes eq{0%,to{height:4px}50%{height:20px}}@keyframes fabHint{0%,to{box-shadow:0 14px 34px #0000008c,0 0 0 1px #ffffff1f,0 0 #ff5c8a8c}60%{box-shadow:0 14px 34px #0000008c,0 0 0 1px #ffffff1f,0 0 0 16px #ff5c8a00}}@keyframes tierDrop{0%{transform:translateY(-260px);opacity:0}35%{opacity:1}to{transform:none;opacity:1}}@keyframes dripGrow{0%{transform:scaleY(0)}to{transform:scaleY(1)}}@keyframes pop{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeUp{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@keyframes candleUp{0%{opacity:0;transform:translateY(-40px)}to{opacity:1;transform:none}}@keyframes flicker{0%,to{transform:scale(1) rotate(-1.5deg)}18%{transform:scale(.93,1.09) rotate(2.5deg)}36%{transform:scale(1.05,.93) rotate(-2.5deg)}55%{transform:scale(.96,1.06) rotate(1.5deg)}78%{transform:scale(1.03,.97) rotate(-1deg)}}@keyframes glowPulse{0%,to{opacity:.75}50%{opacity:1}}@keyframes smoke{0%{opacity:.85;stroke-dashoffset:70;transform:translateY(0)}55%{opacity:.5}to{opacity:0;stroke-dashoffset:0;transform:translateY(-16px)}}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes haloPulse{0%,to{opacity:.8;transform:scale(.96)}50%{opacity:1;transform:scale(1.05)}}@keyframes twinkle{0%,to{opacity:0;transform:scale(.3) rotate(0)}50%{opacity:1;transform:scale(1) rotate(45deg)}}@keyframes cakeJump{0%{transform:translateY(0) scale(1)}30%{transform:translateY(-16px) scale(1.03,.98)}60%{transform:translateY(0) scale(.99,1.01)}to{transform:none}}@keyframes float{0%,to{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-16px) rotate(2.5deg)}}@keyframes swing{0%,to{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}@keyframes unfold{0%{opacity:0;transform:perspective(900px) rotateX(-40deg) scale(.9)}to{opacity:1;transform:none}}@keyframes listen{0%,to{transform:scale(1)}50%{transform:scale(1.04)}}@keyframes beat{0%,to{transform:scale(1)}15%{transform:scale(1.3)}30%{transform:scale(1)}45%{transform:scale(1.2)}}@media(max-width:760px){.bd-bottom{grid-template-columns:1fr}.balloon:nth-child(n+4){display:none}.balloon{--s: .7 !important}.polaroid img{height:clamp(190px,58vw,280px)}}@media(max-width:560px){.nav-petals b{display:none}.nav-petals{padding:8px 12px}.nav-links a{padding:8px 10px;font-size:.84rem}.counter{gap:6px}.album-head-x{flex-direction:column;align-items:flex-start;gap:0}.album-count{margin-left:0}.lb-fig{padding-inline:8px}.lb-nav{top:auto;bottom:22px;margin-top:0}.lb-prev{left:22px}.lb-next{right:22px}.player{left:0;right:0;bottom:0;padding:0 12px max(12px,env(safe-area-inset-bottom));align-items:stretch}.p-fab{align-self:flex-end;width:62px;height:62px}.p-panel{width:100%;max-height:82vh}.toast{bottom:90px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;animation-delay:0s!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}}.ko-pair{display:inline-flex;align-items:baseline;justify-content:center;flex-wrap:wrap;gap:.1em .55em}.ko-pair .ko{font-family:var(--ko);font-weight:700;letter-spacing:.02em;color:var(--blush)}.ko-pair .ko-dot{font-style:normal;opacity:.55}.ko-pair .ko-en{font-family:var(--sans);font-weight:300;font-size:.86em;letter-spacing:.04em;color:var(--muted)}.kicker .ko{font-size:1.08em;letter-spacing:.1em;color:var(--gold)}.kicker .ko-en{letter-spacing:.3em;color:var(--gold);opacity:.85}.lead-ko,.bouquet-ko,.bd-letter-ko,.sv-ko,.footer-ko{margin:.5em 0 0;font-size:1.05rem;text-align:center}.tier-text.ko-font{font-family:var(--ko-hand)}.wish-ko{margin:.7em 0 0;font-size:1.15rem}.hero-ko{display:flex;margin-bottom:8px}.footer-ko{margin-top:4px}.lang{display:flex;flex:none;padding:3px;border-radius:999px;background:#ffffff12;border:1px solid var(--glass-brd)}.lang button{border:0;background:transparent;color:var(--muted);font:600 .72rem/1 var(--sans);letter-spacing:.08em;padding:7px 10px;border-radius:999px;cursor:pointer;transition:color .2s,background .2s}.lang button.on{color:#fff;background:linear-gradient(135deg,#ff5c8aa6,#e0184fa6)}.bouquet{position:relative;z-index:3;margin-top:clamp(56px,8vw,100px);text-align:center}.bouquet .counter-title{margin-bottom:6px}.bouquet-frame{position:relative;width:min(92vw,470px);aspect-ratio:1 / .98;margin:6px auto 0}.bq-cell{position:absolute;width:17%;aspect-ratio:1;padding:0;border:0;background:none;cursor:pointer;transform:translate(-50%,-50%);transition:transform .3s var(--ease);-webkit-tap-highlight-color:transparent}.bq-cell:hover{transform:translate(-50%,-50%) scale(1.16)}.bq-cell .rose{width:100%;height:100%}.bq-cell .bud{position:absolute;left:50%;top:50%;width:48%;height:48%;margin:-24% 0 0 -24%;border-radius:50%/62% 62% 38% 38%;background:radial-gradient(circle at 35% 30%,#ff7a95,#b3123a 60%,#5a0418);box-shadow:0 4px 10px #00000073;animation:budPulse 2.2s ease-in-out infinite;animation-delay:calc(var(--k) * -.17s)}.bq-cell .bud:after{content:"";position:absolute;left:50%;bottom:-16%;width:76%;height:36%;transform:translate(-50%);background:#2f7d4f;clip-path:polygon(0 0,100% 0,50% 100%)}.bq-cell.open .bud{animation:none;transform:scale(0);opacity:0;transition:transform .35s,opacity .3s}.bq-center{position:absolute;left:50%;top:42%;width:36%;transform:translate(-50%,-50%);text-align:center;pointer-events:none}.bq-count{font:600 clamp(1.6rem,6vw,2.5rem)/1 var(--serif);color:var(--blush);font-variant-numeric:tabular-nums}.bq-msg{display:block;font:400 clamp(1.15rem,4.2vw,1.8rem)/1.15 var(--script);color:var(--blush);text-shadow:0 0 24px rgba(255,90,140,.7);animation:fadeUp .8s both}.bouquet-frame.done .bq-cell .rose{filter:drop-shadow(0 0 10px rgba(255,80,130,.75))}.bouquet .btn{margin-top:14px}.valentine .sv-frame{max-width:920px;margin:0 auto}.sv-scope{position:relative;z-index:2}.petal-game,.garden-wrap{position:relative;z-index:3;max-width:780px;margin:clamp(56px,8vw,96px) auto 0;text-align:center}.pg-title{margin:0 0 12px;font:600 clamp(1.5rem,4vw,2.1rem)/1.15 var(--serif);color:var(--blush)}.pg-stage{display:grid;grid-template-columns:minmax(0,300px) 1fr;align-items:center;gap:24px;justify-content:center}.pg-svg{width:100%;max-width:300px;margin:0 auto;overflow:visible;filter:drop-shadow(0 20px 30px rgba(0,0,0,.4))}.pg-petal{cursor:pointer;transition:filter .2s}.pg-petal:hover{filter:brightness(1.18)}.pg-petal:focus-visible{outline:none;filter:brightness(1.3) drop-shadow(0 0 6px #fff)}.pg-petal.gone{pointer-events:none;animation:pgFall 1s ease-in forwards}.pg-say{min-height:130px;display:grid;align-content:center;gap:6px}.pg-say p{margin:0;font:400 clamp(1.9rem,5.4vw,2.7rem)/1.2 var(--script);color:var(--blush);animation:fadeUp .5s both;padding-bottom:.1em}.pg-say .pg-final{font-size:clamp(2.4rem,7vw,3.4rem);text-shadow:0 0 30px rgba(255,90,140,.8)}.pg-say .pg-ko{font:400 1.1rem var(--sans)}.pg-actions{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;margin-top:18px}.pg-count{color:var(--muted);font-variant-numeric:tabular-nums}.garden{position:relative;height:clamp(300px,56vw,400px);border-radius:28px;overflow:hidden;cursor:crosshair;border:1px solid var(--glass-brd);background:linear-gradient(180deg,#1d0a2a,#3d0f3a 48%,#5a1730);box-shadow:0 24px 60px #0006;-webkit-tap-highlight-color:transparent}.garden-sky{position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 82% 16%,rgba(255,240,200,.95) 0 16px,rgba(255,240,200,.25) 17px 54px,transparent 56px),radial-gradient(1.5px 1.5px at 14% 20%,#fff,transparent),radial-gradient(1.2px 1.2px at 32% 10%,#fff,transparent),radial-gradient(1.5px 1.5px at 52% 26%,#ffe9b8,transparent),radial-gradient(1.2px 1.2px at 66% 12%,#fff,transparent),radial-gradient(1.5px 1.5px at 24% 38%,#fff,transparent)}.garden-soil{position:absolute;left:-6%;right:-6%;bottom:-46px;height:120px;border-radius:50% 50% 0 0/100% 100% 0 0;background:linear-gradient(#3b1420,#1d0710);pointer-events:none;z-index:9999}.garden-empty{position:absolute;inset:0;display:grid;place-items:center;padding:20px;color:var(--muted);text-align:center;pointer-events:none}.plant{position:absolute;transform:translate(-50%,-100%);pointer-events:none}.plant-stem{position:absolute;left:30%;bottom:0;width:40%;height:calc(100% - var(--s) * .45);transform-origin:50% 100%;animation:stemGrow .9s var(--ease) both;overflow:visible}.plant-rose{position:absolute;left:0;top:0;width:100%;height:auto;filter:drop-shadow(0 4px 10px rgba(255,60,110,.4))}.album-count{white-space:nowrap}@media(max-width:640px){.pg-stage{grid-template-columns:1fr}.album-thumbs{display:none}.album-bar{padding:12px 14px;gap:12px}}@media(max-width:560px){.nav{padding-right:6px}.lang button{padding:7px 8px}.adv-door{border-radius:10px}}@keyframes budPulse{0%,to{transform:scale(1)}50%{transform:scale(1.12)}}@keyframes pgFall{0%{transform:none;opacity:1}to{transform:translateY(-70px) rotate(50deg) scale(.5);opacity:0}}@keyframes stemGrow{0%{transform:scaleY(0)}to{transform:scaleY(1)}}.noel{isolation:isolate;overflow:hidden;background:linear-gradient(180deg,transparent 0,#0c1a48 12%,#08122f 58%,#050a1f 100%)}.noel-sky{position:absolute;inset:0;z-index:-1;pointer-events:none;background-image:radial-gradient(1.6px 1.6px at 12% 18%,#fff,transparent),radial-gradient(1.2px 1.2px at 30% 8%,#fff,transparent),radial-gradient(1.8px 1.8px at 47% 26%,#cfe0ff,transparent),radial-gradient(1.2px 1.2px at 63% 12%,#fff,transparent),radial-gradient(1.6px 1.6px at 78% 30%,#fff,transparent),radial-gradient(1.2px 1.2px at 90% 10%,#ffe9b8,transparent),radial-gradient(1.4px 1.4px at 22% 44%,#fff,transparent),radial-gradient(1.2px 1.2px at 70% 52%,#cfe0ff,transparent);background-size:520px 520px;animation:skyTwinkle 5s ease-in-out infinite alternate}.noel .h2 em{color:#ffd6a0;text-shadow:0 0 40px rgba(255,190,90,.4)}.noel .kicker,.noel .kicker .ko{color:#9fd3ff}.tree-wrap{display:flex;flex-direction:column;align-items:center;gap:22px}.tree-svg{width:min(88vw,440px);height:auto;overflow:visible;filter:drop-shadow(0 20px 44px rgba(0,0,0,.55))}.tree-controls{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}.bulb{fill:#3a3f4d;opacity:.55;transition:fill .3s,opacity .3s}.lights-on .bulb{fill:var(--c);opacity:1;filter:drop-shadow(0 0 5px var(--c));animation:bulbBlink 1.6s ease-in-out infinite;animation-delay:var(--k)}.ball-in{transform-box:fill-box;transform-origin:50% 50%;animation:pop .6s cubic-bezier(.3,1.8,.5,1) both}.ball-sw{transform-box:fill-box;transform-origin:50% 0;animation:ballSwing 4.5s ease-in-out infinite;animation-delay:var(--k)}.star-rays{transform-box:fill-box;transform-origin:center;animation:spin 16s linear infinite}.star-body{transform-box:fill-box;transform-origin:center;filter:drop-shadow(0 0 8px #ffd84a);animation:starPulse 2.4s ease-in-out infinite}.gift{cursor:pointer}.gift:hover:not(.open){filter:brightness(1.15)}.gift .lid{transform-box:fill-box;transform-origin:20% 100%;transition:transform .6s cubic-bezier(.3,1.4,.5,1)}.gift.open .lid{transform:translateY(-16px) rotate(-14deg)}.gift-rose{pointer-events:none}.advent-head{margin-top:clamp(56px,9vw,110px)}.advent-tree{position:relative;width:min(100%,520px);margin:0 auto;padding-top:44px;display:flex;flex-direction:column;align-items:center;gap:10px}.advent-star{--sx: -50%;position:absolute;top:0;left:50%;transform:translate(-50%);font-size:2.8rem;line-height:1;color:#ffd84a;text-shadow:0 0 22px rgba(255,216,74,.9);animation:starPulse 2.4s ease-in-out infinite}.advent-row{width:100%;display:flex;justify-content:center;gap:10px}.advent-trunk{width:64px;height:34px;margin-top:2px;border-radius:0 0 8px 8px;background:linear-gradient(90deg,#5a3216,#8a5a2c,#4d2a12);box-shadow:0 10px 20px #0006}.advent-ko{text-align:center;margin:22px 0 0;font-size:1.1rem}.adv-door{position:relative;flex:0 0 calc((100% - 50px) / 6);aspect-ratio:1;padding:0;border:0;background:none;cursor:pointer;perspective:700px}.adv-door .door-back,.adv-door .door-front{position:absolute;inset:0;border-radius:12px;display:grid;place-items:center}.adv-door .door-back{background:radial-gradient(circle,#fff6d6,#f2c777);box-shadow:inset 0 0 14px #00000059;overflow:hidden}.adv-door .door-back .rose{width:86%;height:86%}.adv-door .door-front{transform-origin:left center;color:#fff;font:600 clamp(1.05rem,3.6vw,1.7rem) var(--serif);border:2px solid rgba(255,255,255,.32);box-shadow:0 8px 18px #0006,inset 0 0 18px #ffffff1a;transition:transform .85s cubic-bezier(.3,1.1,.4,1);backface-visibility:hidden;-webkit-backface-visibility:hidden}.adv-door .door-front b{font-weight:600;text-shadow:0 2px 6px rgba(0,0,0,.4)}.adv-door.c0 .door-front{background:linear-gradient(145deg,#e3364f,#a3122d)}.adv-door.c1 .door-front{background:linear-gradient(145deg,#2f9e57,#15602f)}.adv-door.c2 .door-front{background:linear-gradient(145deg,#e9b545,#b57a18)}.adv-door:hover .door-front{transform:rotateY(-22deg)}.adv-door.open .door-front,.adv-door.open:hover .door-front{transform:rotateY(-118deg)}.adv-door.shake{animation:shake .5s}.advent-dialog{border:0;padding:0;background:transparent;width:min(92vw,400px);max-width:none;overflow:visible}.advent-dialog::backdrop{background:#14020abd;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.advent-card{position:relative;width:100%;padding:38px 28px 32px;border-radius:26px;text-align:center;color:#4a1420;background:linear-gradient(160deg,#fff8ec,#ffe3d6);box-shadow:0 30px 80px #0000008c;animation:unfold .7s cubic-bezier(.2,.9,.3,1.1) both}.advent-day{font:600 4.8rem/1 var(--serif);color:#c9184a}.advent-kicker{margin:0 0 14px;font:500 .75rem var(--sans);letter-spacing:.3em;text-transform:uppercase;color:#8a5a3a}.advent-msg{margin:0;font:600 1.5rem/1.4 var(--hand);color:#4a1420}.advent-close{position:absolute;top:8px;right:14px;border:0;background:none;font-size:2rem;line-height:1;color:#b0204a;cursor:pointer}@keyframes skyTwinkle{0%{opacity:.55}to{opacity:1}}@keyframes bulbBlink{0%,to{opacity:1}50%{opacity:.4}}@keyframes ballSwing{0%,to{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}@keyframes starPulse{0%,to{transform:translate(var(--sx, 0)) scale(1) rotate(-3deg)}50%{transform:translate(var(--sx, 0)) scale(1.14) rotate(3deg)}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-6px) rotate(-3deg)}40%{transform:translate(6px) rotate(3deg)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}
