/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */@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-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}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, 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;--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;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, 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:where(:not(iframe)){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}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::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{.static{position:static}.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}.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,)}.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,-webkit-backdrop-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))}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-9px)}}@keyframes breathe{0%,to{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.025)}}@keyframes light-bloom{0%{opacity:.4;transform:scale(1)}to{opacity:1;transform:scale(3)}}@keyframes ken-burns{0%{object-position:45% 45%;transform:scale(1)}to{object-position:55% 55%;transform:scale(1.035)}}@keyframes connection-travel{0%,to{opacity:0;left:0}15%,85%{opacity:1}50%{left:calc(100% - 30px)}}@keyframes glow{0%,to{opacity:.7;transform:scale(.9)}50%{opacity:1;transform:scale(1.15)}}@keyframes mother-hug{0%{left:12%}80%,to{opacity:0;left:50%}}@keyframes son-hug{0%{left:88%}80%,to{opacity:0;left:50%}}@keyframes label-fade{0%,30%{opacity:1}70%,to{opacity:0}}@keyframes flicker{0%,to{transform:scaleY(.95)rotate(-3deg)}35%{transform:scaleY(1.06)rotate(4deg)}65%{transform:scaleY(.9)rotate(-2deg)}}@keyframes smoke{0%{opacity:.45;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(-70px)scale(3)}}@keyframes celebrate{0%{opacity:0;transform:rotate(var(--a)) translateY(0)}20%{opacity:1}to{opacity:0;transform:rotate(var(--a)) translateY(calc(-1 * var(--d))) rotate(90deg)}}@keyframes heartbeat{0%,to{transform:scale(1)}12%{transform:scale(1.035)}24%{transform:scale(1)}36%{transform:scale(1.05)}55%{transform:scale(1)}}@keyframes heart-ring{0%{opacity:1;transform:scale(.6)}to{opacity:0;transform:scale(1.8)}}@keyframes petal-fall{0%{opacity:0;transform:translate(0)rotate(0)}10%{opacity:.65}85%{opacity:.6}to{opacity:0;transform:translate(70px,105svh)rotate(260deg)}}:root{color:#fff7ed;font-synthesis:none;--gold:#e3c89c;--rose:#c99a91;--muted:#b5a2ad;--serif:"Cormorant Garamond", Georgia, serif;background:#150e19;font-family:Inter,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{min-width:320px;margin:0}button,input{font:inherit}button{cursor:pointer;touch-action:manipulation;color:inherit;background:0 0;border:0}button:disabled{opacity:.35;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--gold);outline-offset:5px}h1:focus{outline:none}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:400}h1{letter-spacing:-.035em;font-size:clamp(44px,5.6vw,80px);line-height:1.03}h1 em{color:#d6acaa;font-weight:400}h2{font-size:clamp(30px,3.3vw,44px);line-height:1.15}h3{font-size:clamp(27px,3vw,38px);line-height:1.25}p{color:#cbb8c2;font-size:14px;line-height:1.8}i{font-style:normal}svg{flex-shrink:0}::selection{color:#fff7ed;background:#9c6676}.tribute-app{isolation:isolate;background:radial-gradient(at 50% 42%,#3b2335aa 0,#0000 58%),linear-gradient(120deg,#19101e,#201321 45%,#160f1d);min-height:100svh;position:relative;overflow:clip}.ambient-light{z-index:-2;pointer-events:none;background:radial-gradient(at 50% 35%,#a5716020,#0000 46%);position:fixed;top:0;right:0;bottom:0;left:0}.botanicals,.particles,.grain{pointer-events:none;z-index:-1;width:100%;height:100%;position:fixed;top:0;right:0;bottom:0;left:0}.botanicals{opacity:.8}.grain{opacity:.055;z-index:20;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.8' filter='url(%23n)'/%3E%3C/svg%3E")}.site-header{z-index:40;height:110px;padding-top:env(safe-area-inset-top);border-bottom:1px solid #dcbca218;justify-content:space-between;align-items:center;margin:0 5%;display:flex;position:relative}.wordmark{font-family:var(--serif);letter-spacing:.24em;text-align:left;padding:8px 0;font-size:28px;line-height:1.2}.wordmark span{letter-spacing:.21em;color:var(--muted);margin-top:6px;font-family:Inter,sans-serif;font-size:7px;display:block}.header-dedication{color:var(--muted);font-family:var(--serif);align-items:center;gap:12px;font-size:18px;font-style:italic;display:flex;position:absolute;left:50%;transform:translate(-50%)}.header-dedication svg{color:var(--rose)}.nav-button{letter-spacing:.05em;color:#d8c6cf;align-items:center;gap:18px;min-height:44px;padding:0 0 0 12px;font-size:11px;display:flex}.nav-button.active{color:var(--gold)}.nav-backdrop{z-index:41;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#100a15aa;position:fixed;top:110px;right:0;bottom:0;left:0}.chapter-menu{z-index:42;background:#241827;border:1px solid #e3c89c2c;border-radius:3px;width:min(360px,90%);padding:22px;position:absolute;top:98px;right:5%;box-shadow:0 30px 90px #08040c80}.menu-title{letter-spacing:.16em;color:var(--gold);align-items:center;gap:12px;margin-bottom:20px;font-size:9px;display:flex}.mode-switch{background:#150e19;border-radius:4px;margin-bottom:12px;padding:4px;display:flex}.mode-switch button{flex:1;min-height:44px;font-size:10px}.mode-switch button.active{color:var(--gold);background:#5b3946;border-radius:3px}.chapter-menu>button{text-align:left;border-bottom:1px solid #e3c89c0c;align-items:center;gap:15px;width:100%;min-height:44px;padding:8px 10px;font-size:12px;display:flex}.chapter-menu>button:hover,.chapter-menu>button[aria-current]{background:#e3c89c0b}.chapter-menu small{color:var(--rose);font-size:9px}.current-dot{background:var(--gold);border-radius:50%;width:5px;height:5px;margin-left:auto}.story-main{z-index:1;width:100%;position:relative}.scene-container{max-width:1120px;min-height:calc(100svh - 210px);margin:auto;padding:65px 48px 35px}.scene-container>section{text-align:center}.eyebrow{color:var(--gold);letter-spacing:.22em;font-size:9px;font-weight:500;line-height:1.8;display:block}.fine-print{color:var(--muted);letter-spacing:.025em;font-size:10px;line-height:1.7}.script,.signature{color:var(--rose);font-family:Allura,cursive;font-size:39px;line-height:1.5}.primary-button{color:#301c2b;letter-spacing:.035em;background:linear-gradient(120deg,#e8cfad,#c89b90);border:1px solid #e3c89c60;border-radius:3px;justify-content:center;align-items:center;gap:26px;min-height:52px;padding:0 26px;font-size:11px;font-weight:500;transition:transform .3s,box-shadow .3s;display:inline-flex;box-shadow:0 6px 24px #c99a9110}.primary-button:hover{transform:translateY(-2px);box-shadow:0 8px 30px #c99a9130}.text-button{color:var(--gold);justify-content:center;align-items:center;gap:12px;min-height:44px;padding:6px 10px;font-size:11px;display:inline-flex}.icon-button{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;display:inline-flex}.icon-button:hover{background:#c99a9115}.scene-heading{margin-bottom:38px}.scene-heading h1{margin-top:20px;font-size:clamp(40px,4.8vw,64px);line-height:1.12}.scene-heading p{max-width:450px;margin:18px auto 0}.welcome-scene{padding-top:0;position:relative}.dedication{color:var(--rose);justify-content:center;align-items:center;gap:17px;margin-bottom:19px;display:flex}.dedication>span{background:linear-gradient(90deg,#0000,#c99a9160);width:40px;height:1px}.dedication>span:last-child{transform:rotate(180deg)}.welcome-scene h1{margin:20px 0}.welcome-lead{font-family:var(--serif);color:#c6afbc;font-size:20px;line-height:1.5}.welcome-action{flex-direction:column;align-items:center;gap:18px;margin-top:8px;display:flex}.welcome-action>p{font-size:12px}.gift-button{position:relative;overflow:visible}.gift-button:before{content:"";border:1px solid #e3c89c26;border-radius:7px;animation:4s ease-in-out infinite breathe;position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px}.side-note{writing-mode:vertical-rl;letter-spacing:.25em;color:#a58c9c;font-size:8px;position:absolute;top:50%;left:-32px;transform:rotate(180deg)}.envelope-wrap{perspective:1000px;width:330px;max-width:100%;margin:42px auto 24px;padding-top:10px;animation:7s ease-in-out infinite float;position:relative}.envelope{filter:drop-shadow(0 28px 24px #05020860);width:100%;height:180px;position:relative;transform:rotate(-5deg)}.envelope-glow{filter:blur(16px);background:radial-gradient(#d39b7f17,#0000 65%);border-radius:50%;transition:opacity .5s;position:absolute;top:10px;right:-65px;bottom:-30px;left:-65px}.envelope-back{background:linear-gradient(125deg,#e7d0b0,#c9ac91);border-radius:3px;position:absolute;top:0;right:0;bottom:0;left:0;box-shadow:inset 0 0 0 1px #e9d5bc66}.envelope-fold{z-index:3;clip-path:polygon(0 0,50% 55%,100% 0,100% 100%,0 100%);background:linear-gradient(153deg,#0000 49.6%,#d9bea0 50%) 0 0/51% 100% no-repeat,linear-gradient(207deg,#0000 49.6%,#dfc6a7 50%) 100% 0/51% 100% no-repeat;position:absolute;top:0;right:0;bottom:0;left:0}.envelope-flap{z-index:5;clip-path:polygon(0 0,100% 0,50% 57%);transform-origin:top;backface-visibility:visible;background:linear-gradient(170deg,#e5d2b7,#bfa28c);position:absolute;top:0;right:0;bottom:0;left:0;box-shadow:0 3px 4px #38203533}.envelope-address{z-index:4;color:#654639;font-family:var(--serif);font-size:21px;line-height:1.2;position:absolute;bottom:20px;left:0;right:0;transform:rotate(0)}.envelope-address span{letter-spacing:.09em;color:#876653;margin-top:7px;font-family:Inter,sans-serif;font-size:7px;display:block}.wax-seal{z-index:6;color:#e2b6a0;background:radial-gradient(circle at 30% 25%,#ba8074,#794740 75%);border:3px solid #b37667;border-radius:46% 52% 45% 48%;justify-content:center;align-items:center;width:46px;height:46px;display:flex;position:absolute;top:77px;left:calc(50% - 23px);transform:rotate(10deg);box-shadow:0 3px 5px #3f242b44,inset 0 0 0 1px #d5a08b88}.envelope-letter{color:#7a5347;z-index:1;opacity:0;background:#fff2dc;padding:25px;font-family:Allura,cursive;font-size:28px;position:absolute;top:10px;right:15px;bottom:10px;left:15px}.envelope-caption{color:#b39195;letter-spacing:.2em;margin-top:28px;font-size:7px;display:block}.envelope-wrap.opened .envelope-glow{background:radial-gradient(#f7d5a88c,#0000 70%);animation:2s forwards light-bloom}.story-footer{z-index:2;max-width:90%;min-height:100px;padding-bottom:max(20px,env(safe-area-inset-bottom));border-top:1px solid #e3c89c12;align-items:center;gap:28px;margin:auto;display:flex;position:relative}.footer-date{font-family:var(--serif);color:#d0b397;align-items:center;gap:10px;font-size:34px;display:flex}.footer-date i{letter-spacing:.18em;font:8px Inter,sans-serif}.footer-quote{font-family:var(--serif);color:var(--muted);border-left:1px solid #c99a9133;padding-left:27px;font-size:16px;font-style:italic}.scene-controls{align-items:center;gap:17px;width:calc(100% - 260px);max-width:650px;display:flex}.scene-controls>span{white-space:nowrap;gap:8px;font-size:10px;display:flex}.scene-controls i{color:var(--muted)}.scene-controls strong{color:var(--gold);font-weight:400}.next-button{min-height:44px;color:var(--gold);justify-content:center;align-items:center;gap:20px;margin-left:auto;font-size:11px;display:flex}.music-player{right:5%;bottom:max(22px,env(safe-area-inset-bottom));z-index:45;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#221824e8;border:1px solid #e3c89c2b;border-radius:5px;width:225px;position:fixed;box-shadow:0 10px 45px #08040c33}.music-bar{align-items:center;gap:3px;height:58px;padding:5px 12px 5px 5px;display:flex}.music-label{text-align:left;flex:1;min-height:44px;padding:5px 0}.music-label span{color:#ead6cc;font-size:10px;display:block}.music-label small{color:var(--muted);margin-top:4px;font-size:8px;display:block}.music-details{border-bottom:1px solid #c99a9126;padding:15px 20px 12px}.music-details>div:first-child{justify-content:space-between;align-items:center;margin-top:-6px;display:flex}.music-details .eyebrow{letter-spacing:.1em;font-size:7px}.music-details strong{font-family:var(--serif);font-size:25px;font-weight:400}.music-details p{font-size:11px}.audio-note{margin-top:15px;line-height:1.7;font-size:10px!important}.range-label{color:var(--muted);margin-top:15px;font-size:9px;display:block}.range-label span{font-size:8px}.music-details input{width:100%;accent-color:var(--rose);min-height:30px;display:block}.volume-row{align-items:center;display:flex}.intro-scene{padding:5px 0 30px}.intro-orbit{background:radial-gradient(circle,#c99a9112,#0000 70%);border:1px solid #e3c89c30;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;width:260px;height:260px;margin:30px auto;display:flex;position:relative;box-shadow:0 0 70px #c99a9108}.intro-orbit:after{content:"";border:1px solid #e3c89c13;border-radius:50%;position:absolute;top:14px;right:14px;bottom:14px;left:14px}.intro-number{font-family:var(--serif);letter-spacing:-.07em;color:#e1c5a5;font-size:128px;font-weight:400;line-height:.9}.intro-month{color:var(--rose);font-family:Allura,cursive;font-size:49px}.orbit-star{background:var(--gold);border-radius:50%;width:6px;height:6px;position:absolute;top:39px;right:28px;box-shadow:0 0 20px 4px #e3c89c55}.orbit-star.second{width:4px;height:4px;inset:auto auto 39px 28px}.intro-scene h1{justify-content:center;align-items:center;min-height:90px;font-size:clamp(40px,5vw,62px);display:flex}.sequence-dots{justify-content:center;gap:0;margin:18px auto 8px;display:flex}.sequence-dots button{min-width:44px;height:44px;position:relative}.sequence-dots button:after{content:"";background:#b9a3af66;border-radius:50%;width:4px;height:4px;position:absolute;top:20px;left:20px}.sequence-dots button.active:after{background:var(--gold);box-shadow:0 0 12px #e3c89c66}.memory-composition{text-align:left;grid-template-columns:1.1fr 1fr;align-items:center;gap:70px;max-width:800px;margin:50px auto 20px;padding:0 15px;display:grid;position:relative}.memory-feature{z-index:2;position:relative}.memory-photo{color:#6f5149;background:linear-gradient(120deg,#f1e5d5,#d9c8b6);padding:10px 10px 18px;transform:rotate(-3deg);box-shadow:0 18px 45px #08040c55}.memory-photo>img,.photo-placeholder{aspect-ratio:4/5;object-fit:cover;width:100%;display:block}.memory-photo>img{animation:24s ease-in-out infinite alternate ken-burns}.memory-photo figcaption{font-family:var(--serif);text-align:center;padding-top:15px;font-size:17px;font-style:italic;line-height:1.25}.photo-placeholder{text-align:center;color:#dfc4b5;background:radial-gradient(at 50% 65%,#b8877b55,#0000 70%),linear-gradient(150deg,#62414f,#302534);flex-direction:column;justify-content:center;align-items:center;gap:20px;padding:20px;display:flex;position:relative;overflow:hidden}.photo-placeholder.shade-1{background:radial-gradient(at 50% 70%,#cfaa7055,#0000 70%),linear-gradient(150deg,#75655b,#382f38)}.photo-placeholder.shade-2{background:radial-gradient(at 50% 65%,#bda3bc55,#0000 70%),linear-gradient(150deg,#605267,#302534)}.photo-arch{border:1px solid #dbc0ab40;border-radius:50% 50% 0 0;position:absolute;top:10%;right:18%;bottom:-10%;left:18%;box-shadow:0 0 0 16px #d6b4a008}.photo-placeholder svg{z-index:1}.photo-placeholder span{font-family:var(--serif);z-index:1;max-width:180px;font-size:23px;line-height:1.2}.photo-placeholder small{z-index:1;color:#cdb5ae;max-width:160px;font-size:8px;line-height:1.5}.memory-background{z-index:0;opacity:.4;filter:brightness(.65);width:28%;position:absolute;top:9%}.memory-background.left{left:-28px;transform:rotate(-12deg)}.memory-background.right{top:3%;left:75px;transform:rotate(9deg)}.memory-background .photo-placeholder span,.memory-background .photo-placeholder small{visibility:hidden}.memory-quote{z-index:3;position:relative}.memory-quote h2{margin:20px 0}.memory-quote p{font-family:var(--serif);color:#d5bfc8;font-size:24px;line-height:1.5}.memory-timeline{justify-content:center;max-width:520px;margin:35px auto 5px;display:flex;position:relative}.memory-timeline:before{content:"";background:#c99a9126;height:1px;position:absolute;top:16px;left:22px;right:22px}.memory-timeline button{min-width:44px;min-height:53px;color:var(--muted);flex-direction:column;flex:1;align-items:center;gap:13px;padding:12px 0;font-size:8px;display:flex}.memory-timeline button>span{z-index:1;background:#291b2a;border:1px solid #b59596;border-radius:50%;width:7px;height:7px}.memory-timeline .active{color:var(--gold)}.memory-timeline .active>span{background:var(--gold);border-color:var(--gold);box-shadow:0 0 15px #e3c89c66}.growing-illustration{width:100%;max-width:720px;max-height:350px;margin:-15px auto -5px}.growing-child{transition:transform 1.4s}.love-bond{filter:drop-shadow(0 0 4px #e3c89c);transition:d 1.3s}.timeline-steps{max-width:620px;margin:0 auto 24px;display:flex;position:relative}.timeline-steps:before{content:"";background:#c99a9140;height:1px;position:absolute;top:12px;left:12%;right:12%}.timeline-steps button{min-height:55px;color:var(--muted);flex-direction:column;flex:1;align-items:center;gap:15px;font-size:9px;display:flex;position:relative}.timeline-steps button span{background:#4d3444;border-radius:50%;width:7px;height:7px;margin-top:9px}.timeline-steps .active{color:var(--gold)}.timeline-steps .active span{background:var(--gold);box-shadow:0 0 15px #e3c89c55}.childhood-caption p{max-width:450px;font-family:var(--serif);margin:13px auto 0;font-size:21px;line-height:1.6}.light-connection{max-width:660px;height:170px;margin:45px auto 25px;position:relative}.connection-track{background:linear-gradient(90deg,#e3c89c11,#e3c89ca0,#e3c89c11);height:1px;position:absolute;top:70px;left:12%;right:12%;box-shadow:0 0 15px #e3c89c33}.connection-track:before{content:"";background:#fff2d7;width:30px;height:1px;animation:5s ease-in-out infinite connection-travel;position:absolute;top:0;left:0;box-shadow:0 0 12px 1px #e3c89c55}.light-point{flex-direction:column;align-items:center;gap:30px;transition:left 3s ease-in-out;display:flex;position:absolute;top:65px;transform:translate(-50%)}.light-point.mother{left:12%}.light-point.son{left:88%}.light-point i{background:#f9e6c4;border-radius:50%;width:10px;height:10px;animation:4s ease-in-out infinite glow;box-shadow:0 0 18px 4px #e3c89c80,0 0 70px 20px #e3c89c1c}.light-point span{letter-spacing:.2em;color:var(--gold);font-size:9px}.connection-heart{color:var(--gold);opacity:0;filter:drop-shadow(0 0 18px #e3c89c);transition:opacity 1s 2s;position:absolute;top:54px;left:calc(50% - 21px)}.hug .light-point.mother{animation:3.5s ease-in-out forwards mother-hug}.hug .light-point.son{animation:3.5s ease-in-out forwards son-hug}.hug .light-point span{animation:3.5s forwards label-fade}.hug .connection-heart{opacity:1}.hug .connection-track{opacity:.2}.distance-copy{flex-direction:column;justify-content:center;align-items:center;min-height:120px;display:flex}.distance-copy h2{font-size:clamp(33px,4.3vw,52px)}.distance-copy p{margin-top:20px}.letter-closed{padding-bottom:30px}.letter-closed .envelope-wrap{margin:70px auto 50px}.letter-closed .fine-print{margin-top:20px}.letter-paper{text-align:left;color:#513d3c;background:#f5eadb url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.06' filter='url(%23n)'/%3E%3C/svg%3E");border:1px solid #caa996;max-width:640px;margin:40px auto 35px;padding:50px 72px 65px;position:relative;overflow:hidden;box-shadow:0 25px 80px #08030c70}.letter-paper:before{content:"";pointer-events:none;border:1px solid #9d766b30;position:absolute;top:16px;right:16px;bottom:16px;left:16px}.letter-top{color:#9b6c65;align-items:center;gap:15px;margin-bottom:35px;display:flex}.letter-top>span{letter-spacing:.14em;flex:1;font-size:7px}.letter-top button{margin-right:-12px}.letter-paper p{color:#624b48;white-space:pre-line;margin:0 0 25px;font-family:Playfair Display,Georgia,serif;font-size:16px;line-height:1.95}.letter-paper .letter-salutation{font-family:var(--serif);color:#7b484c;margin-bottom:36px;font-size:35px;font-style:italic}.letter-paper .signature{color:#8d5559;margin-top:30px;font-size:43px}.letter-flower{color:#ae8174;position:absolute;bottom:30px;right:35px}.cake-experience{padding-bottom:15px}.cake-illustration{width:300px;height:300px;margin:45px auto 15px;position:relative}.candle-row{z-index:4;justify-content:space-between;display:flex;position:absolute;top:0;left:90px;right:90px}.candle{background:repeating-linear-gradient(115deg,#e7c791 0,#e7c791 7px,#a17f61 8px,#a17f61 11px);border-radius:3px 3px 0 0;width:8px;height:70px;position:relative;box-shadow:inset -3px 0 3px #614e3a44}.candle:nth-child(2){transform:translateY(-6px)}.flame{transform-origin:bottom;background:radial-gradient(at 50% 70%,#fff9da,#f2c471 55%,#db8749);border-radius:70% 30% 55% 45%;width:12px;height:25px;transition:opacity .4s;animation:2s ease-in-out infinite flicker;position:absolute;top:-27px;left:-2px;box-shadow:0 0 15px #edc380bb,0 0 55px #edc38044}.candle:nth-child(2) .flame{animation-delay:.5s}.candle:nth-child(3) .flame{animation-delay:1s}.wick{background:#574434;width:2px;height:5px;position:absolute;top:-4px;left:3px}.smoke{opacity:0;filter:blur(3px);background:linear-gradient(#cbb9b755,#0000);border-radius:50%;width:8px;height:35px;position:absolute;top:-15px;left:0}.blown .flame{opacity:0;animation:none}.blown .smoke{animation:3s ease-out forwards smoke}.cake-top{z-index:3;background:radial-gradient(at 50% 30%,#f8e7cd,#ddc6a4);border:1px solid #eddfc9;border-radius:50%;height:66px;position:absolute;top:49px;left:20px;right:20px;box-shadow:inset 0 0 0 7px #efdac0}.cake-top span{color:#98715e;font-family:Allura,cursive;font-size:28px;position:absolute;top:25px;left:95px;transform:rotate(-7deg)}.cake-body{z-index:2;background:linear-gradient(90deg,#bd9c86,#e9d3b5 20%,#f0dec4 45%,#dbc1a0 75%,#a78571);border-bottom:7px solid #d4b68e;border-radius:0 0 50% 50%/0 0 25% 25%;height:137px;position:absolute;top:80px;left:20px;right:20px;overflow:hidden}.cake-pearl-row{gap:5px;display:flex;position:absolute;top:23px;left:0;right:0;transform:rotate(1deg)}.cake-pearl-row i{background:radial-gradient(circle at 25% 25%,#fff7e8,#d8bd9d);border-radius:50%;flex-shrink:0;width:11px;height:11px}.cake-ribbon{background:linear-gradient(90deg,#78515c,#b8878e 45%,#8a5d67);border-block:1px solid #c29697;height:25px;position:absolute;top:85px;left:0;right:0;transform:rotate(-2deg)}.cake-flower{filter:drop-shadow(2px 3px 3px #5b3a3b44);width:58px;height:58px;position:absolute;top:55px;right:30px}.cake-stand{z-index:1;background:linear-gradient(165deg,#c6a57a,#f3deba 45%,#9f7e5a);border-radius:50%;height:46px;position:absolute;top:190px;left:0;right:0;box-shadow:0 8px #8b6c50,0 10px #cfaa7e}.cake-stand:after{content:"";z-index:-1;background:linear-gradient(90deg,#9a785a,#e2c195,#8c6a4f);border-radius:0 0 20% 20%;width:38px;height:38px;position:absolute;top:35px;left:131px}.cake-shadow{filter:blur(15px);background:#09050c;border-radius:50%;height:20px;position:absolute;bottom:0;left:25px;right:25px}.wish-message{max-width:560px;min-height:150px;margin:auto}.wish-message h3{color:var(--gold);margin:15px 0 10px}.wish-message .primary-button{margin-top:20px}.wish-message .text-button{margin-top:10px}.celebration{z-index:6;pointer-events:none;position:absolute;top:0;right:0;bottom:0;left:0}.celebration i{background:var(--gold);width:3px;height:5px;transform:rotate(var(--a));animation:2.5s ease-out forwards celebrate;position:absolute;top:40%;left:50%}.heart-experience{min-height:370px;margin:25px auto 20px}.heart-button{background:radial-gradient(circle,#a4596c16,#0000 70%);border-radius:50%;justify-content:center;align-items:center;width:230px;height:230px;margin:0 auto 20px;display:flex;position:relative}.big-heart{stroke:#d0a19e;filter:drop-shadow(0 15px 16px #05020980);width:160px;height:160px;animation:3s ease-in-out infinite heartbeat}.touched .big-heart{filter:drop-shadow(0 0 35px #cb809077)}.heart-rings{border:1px solid #d8a99d66;border-radius:50%;animation:2s ease-out forwards heart-ring;position:absolute;top:0;right:0;bottom:0;left:0}.heart-rings:before,.heart-rings:after{content:"";border:1px solid #e3c89c44;border-radius:50%;position:absolute;top:15px;right:15px;bottom:15px;left:15px}.heart-rings:after{top:35px;right:35px;bottom:35px;left:35px}.heart-experience h3{margin-bottom:16px;font-size:clamp(28px,3vw,38px)}.heart-experience .script{margin-top:18px;display:block}.star-sky{background:radial-gradient(#b58bb71a,#0000 65%);max-width:650px;height:300px;margin:20px auto 0;position:relative}.star-sky>svg{width:100%;height:100%;position:absolute;top:0;right:0;bottom:0;left:0}.message-star{width:54px;height:54px;color:var(--gold);filter:drop-shadow(0 0 9px #e3c89c80);border-radius:50%;justify-content:center;align-items:center;transition:background .3s;display:flex;position:absolute;transform:translate(-50%,-50%)}.message-star>span{color:var(--muted);letter-spacing:.12em;opacity:.7;font-size:7px;position:absolute;bottom:-4px}.message-star.selected{background:#e3c89c20;outline:1px solid #e3c89c44}.message-star.seen{color:var(--rose)}.star-message{max-width:650px;min-height:125px;margin:auto}.star-message p{font-family:var(--serif);color:#e6cdd2;margin:10px 0 25px;font-size:clamp(26px,3vw,35px);line-height:1.3}.star-message .eyebrow{font-size:7px}.album-cover{background:linear-gradient(90deg,#2b1b29 0,#71525b 5%,#563441 9%,#664352 40%,#4a2c3c);border-radius:2px 5px 5px 2px;width:260px;height:335px;margin:45px auto 65px;padding:17px 18px 17px 28px;transition:transform .6s;display:block;position:relative;transform:rotate(-6deg);box-shadow:5px 4px #d3bca4,8px 6px #3c2736,12px 22px 40px #07030b66}.album-cover:hover{transform:rotate(-2deg)translateY(-5px)}.album-border{height:100%;color:var(--gold);outline-offset:-6px;border:1px solid #cba98288;outline:1px solid #cba98233;flex-direction:column;justify-content:space-around;align-items:center;padding:20px;display:flex}.album-border>span{font-family:var(--serif);font-size:38px;line-height:1}.album-border i{font-style:italic}.album-border small{letter-spacing:.23em;font-size:7px}.album-hint{color:var(--muted);letter-spacing:.04em;font-size:10px;position:absolute;bottom:-44px;left:0;right:0;transform:rotate(6deg)}.album-open{max-width:730px;margin:40px auto 10px}.album-page{color:#614449;transform-origin:0;background:#ede0cc;grid-template-columns:1fr 1fr;gap:40px;padding:24px;display:grid;position:relative;box-shadow:0 20px 50px #07030b55}.album-page:after{content:"";pointer-events:none;background:linear-gradient(90deg,#0000,#5a43321a,#0000);width:16px;position:absolute;top:0;bottom:0;left:50%}.album-page .memory-photo{padding:7px 7px 10px;transform:rotate(-2deg);box-shadow:0 6px 15px #3b29322b}.album-caption{text-align:left;align-self:center;padding-right:15px}.album-caption .eyebrow{color:#95625c;font-size:7px}.album-caption h3{margin:20px 0;font-size:34px}.album-caption p{font-family:var(--serif);color:#795e5b;font-size:21px;line-height:1.6}.photo-controls{color:var(--gold);justify-content:center;align-items:center;gap:28px;margin-top:20px;font-size:11px;display:flex}.photo-controls i{color:var(--muted);font-size:9px}.final-scene{padding:0 0 20px;position:relative}.final-lights .light-connection{max-width:400px;height:110px;margin:15px auto 0}.final-lights .connection-track{top:40px}.final-lights .light-point{top:35px}.final-lights .connection-heart{top:25px}.final-lights .light-point span{display:none}.final-line{font-family:var(--serif);color:#dbc2cb;min-height:32px;font-size:22px;font-style:italic;line-height:1.4}.final-story{opacity:.75;margin-bottom:15px;font-size:9px}.final-scene h1{font-size:clamp(70px,8vw,110px);line-height:.93}.final-scene .final-love{font-family:var(--serif);color:var(--gold);margin:20px 0 14px;font-size:30px}.final-scene>p:not(.final-line):not(.final-love){font-size:12px;line-height:1.7}.final-scene .signature{margin:20px auto 22px;font-size:36px}.final-buttons{justify-content:center;align-items:center;gap:20px;display:flex}.hug-message{color:#bd9da8;margin:20px 0 0;font-size:10px!important}.petal-shower{pointer-events:none;z-index:30;position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden}.petal-shower i{opacity:0;background:linear-gradient(140deg,#d4a59e,#8a4f66);border-radius:80% 20% 70% 30%;width:13px;height:23px;animation:8s ease-in forwards petal-fall;position:absolute;top:-30px}@media(min-width:1500px){.scene-container{padding-top:80px}.welcome-scene h1{font-size:90px}.envelope-wrap{width:370px;margin-top:55px;margin-bottom:30px}.envelope{height:200px}.wax-seal{top:86px}.welcome-action{margin-top:25px}}@media(max-width:900px){.scene-container{padding:50px 35px 35px}.side-note{display:none}.memory-composition{gap:40px;margin-inline:25px}.memory-background{display:none}.scene-controls{width:calc(100% - 230px)}.next-button{gap:10px}.final-buttons{flex-direction:column;gap:5px}.botanicals{opacity:.6}}@media(max-width:600px){.site-header{height:88px;margin:0 7%}.wordmark{letter-spacing:.2em;font-size:24px}.wordmark span{letter-spacing:.13em;font-size:6px}.header-dedication{display:none}.nav-button{gap:12px;font-size:10px}.chapter-menu{width:86%;padding:18px;top:78px;right:7%}.nav-backdrop{top:88px;right:0;bottom:0;left:0}.scene-container{min-height:calc(100svh - 230px);padding:37px 24px 30px}.welcome-scene h1{margin:19px 0 17px;font-size:clamp(45px,11.5vw,65px)}.welcome-lead{font-size:19px}.welcome-scene .eyebrow{letter-spacing:.19em;font-size:8px}.dedication{margin-bottom:16px}.envelope-wrap{width:270px;margin:37px auto 24px}.envelope{height:155px}.envelope-address{font-size:19px;bottom:19px}.envelope-address span{font-size:6px}.wax-seal{width:40px;height:40px;top:65px;left:calc(50% - 20px)}.wax-seal svg{width:18px}.envelope-caption{margin-top:25px;font-size:6px}.welcome-action{gap:17px;margin-top:8px}.welcome-action>p{max-width:245px;font-size:10px;line-height:1.7}.welcome-action .fine-print{font-size:9px}.primary-button{gap:22px;min-height:52px;padding:0 22px;font-size:10px}.story-footer{align-items:flex-start;gap:17px;max-width:86%;min-height:133px;padding-top:20px;padding-bottom:78px;display:flex}.footer-date{font-size:26px}.footer-date i{font-size:7px}.footer-quote{margin-top:6px;padding-left:17px;font-size:13px}.music-player{right:7%;bottom:max(14px,env(safe-area-inset-bottom));width:205px}.music-bar{height:50px}.music-label span{font-size:9px}.music-label small{font-size:7px}.music-player canvas{width:32px}.scene-controls{align-items:center;gap:8px;width:100%;max-width:none;margin-top:-10px}.scene-controls>span{gap:5px;font-size:9px}.next-button{gap:11px;font-size:10px}.scene-heading{margin-bottom:30px}.scene-heading h1{margin-top:16px;font-size:clamp(37px,9.7vw,50px)}.scene-heading .eyebrow{letter-spacing:.18em;font-size:7px}.scene-heading p{max-width:270px;margin-top:15px;font-size:12px;line-height:1.7}.intro-scene{padding-top:10px}.intro-orbit{width:215px;height:215px;margin:35px auto}.intro-number{font-size:110px}.intro-month{font-size:40px}.intro-scene h1{min-height:105px;font-size:40px}.sequence-dots{margin-top:12px}.memory-composition{flex-direction:column;gap:26px;max-width:320px;margin:35px auto 12px;padding:0 10px;display:flex}.memory-feature{width:220px}.memory-photo{padding:8px 8px 14px}.memory-photo figcaption{padding-top:10px;font-size:16px}.photo-placeholder{gap:15px;padding:15px}.photo-placeholder span{font-size:23px}.photo-placeholder small{font-size:7px}.memory-quote{text-align:center;max-width:300px}.memory-quote .eyebrow{font-size:7px}.memory-quote h2{margin:14px 0;font-size:30px}.memory-quote p{font-size:21px;line-height:1.4}.memory-timeline{justify-content:flex-start;max-width:100%;margin-top:22px;padding:0 0 5px;overflow-x:auto}.memory-timeline button{min-width:44px}.memory-timeline:before{width:352px;right:0}.growing-illustration{width:calc(100% + 34px);max-width:none;margin:0 -17px}.timeline-steps{margin:15px -5px 20px}.timeline-steps button{gap:14px;font-size:8px}.childhood-caption h2{font-size:30px}.childhood-caption p{max-width:280px;font-size:20px}.light-connection{height:150px;margin:55px auto 25px}.light-point.mother{left:8%}.light-point.son{left:92%}.connection-track{left:8%;right:8%}.light-point span{letter-spacing:.15em;font-size:8px}.distance-copy{min-height:145px}.distance-copy h2{font-size:36px;line-height:1.1}.distance-copy .script{margin-top:25px;font-size:32px;line-height:1.25}.distance-scene .sequence-dots button{min-width:36px}.distance-scene .sequence-dots button:after{left:16px}.letter-closed .envelope-wrap{margin:65px auto 45px}.letter-paper{margin:35px -6px 20px;padding:35px 27px 55px}.letter-paper:before{top:10px;right:10px;bottom:10px;left:10px}.letter-paper p{margin-bottom:24px;font-size:15px;line-height:2}.letter-top{gap:8px;margin-bottom:30px}.letter-top>span{letter-spacing:.04em;font-size:6px}.letter-paper .letter-salutation{font-size:32px}.letter-paper .signature{font-size:36px}.cake-illustration{margin-top:55px;margin-bottom:0;transform:scale(.9)}.wish-message p{font-size:12px}.wish-message h3{font-size:31px}.wish-message .eyebrow{font-size:7px}.heart-experience{min-height:370px;margin:10px auto}.heart-button{width:210px;height:210px}.big-heart{width:145px;height:145px}.heart-experience h3{font-size:28px}.heart-experience p{font-size:13px}.heart-experience .script{font-size:32px}.star-sky{height:265px;margin-top:5px}.star-message{min-height:145px}.star-message p{max-width:290px;margin:15px auto 24px;font-size:28px}.album-cover{width:235px;height:310px;margin:40px auto 65px}.album-open{margin-top:30px}.album-page{grid-template-columns:1fr;gap:20px;padding:23px}.album-page:after{display:none}.album-page .memory-photo{justify-self:center;width:100%;max-width:220px}.album-caption{text-align:center;padding:0}.album-caption h3{margin:13px 0;font-size:30px}.album-caption p{font-size:20px;line-height:1.5}.photo-controls{margin-top:10px}.final-scene h1{font-size:clamp(67px,19vw,92px)}.final-scene .eyebrow{letter-spacing:.15em;font-size:7px}.final-lights .light-connection{height:95px;margin-top:10px}.final-line{justify-content:center;align-items:center;min-height:50px;font-size:20px;display:flex}.final-story{margin-bottom:13px;font-size:8px}.final-scene .final-love{margin-top:22px;font-size:27px}.final-scene .signature{font-size:31px}.botanicals{opacity:.38;width:170%;left:-35%}.final-scene>p:not(.final-line):not(.final-love){font-size:11px}}@media(max-width:360px){.scene-container{padding-inline:19px}.welcome-scene h1{font-size:43px}.envelope-wrap{width:245px}.envelope{height:145px}.envelope-address{font-size:17px}.wax-seal{top:59px}.cake-illustration{transform-origin:top;height:260px;margin-left:calc(50% - 150px);transform:scale(.8)}.scene-heading h1{font-size:36px}.music-player{width:190px}.letter-paper{padding-inline:24px}.letter-top>span{max-width:105px}.heart-experience h3{font-size:25px}}@media(prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.hug .light-point.mother,.hug .light-point.son{left:50%}.hug .light-point span{opacity:0}.growing-child{transition:none}.memory-photo>img{animation:none}.petal-shower{display:none}}.site-header{z-index:61}.nav-backdrop{z-index:59}.chapter-menu{z-index:60;max-height:calc(100svh - 110px);overflow-y:auto}.sequence-dots{flex-wrap:wrap}.distance-scene .sequence-dots button{min-width:44px}.distance-scene .sequence-dots button:after{left:20px}.music-compact-icon{display:none}@media(max-width:600px){.music-player:not(.expanded){border-radius:50%;width:54px}.music-player:not(.expanded) .music-bar{justify-content:center;height:52px;padding:0}.music-player:not(.expanded) .music-bar>.icon-button,.music-player:not(.expanded) .music-label>span,.music-player:not(.expanded) .music-label>small,.music-player:not(.expanded) canvas{display:none}.music-player:not(.expanded) .music-label{width:52px;height:52px;color:var(--gold);justify-content:center;align-items:center;padding:0;display:flex}.music-player:not(.expanded) .music-compact-icon{display:block}}.memory-photo>img{object-fit:contain;background:#241a27}@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-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}
