@font-face{font-family:Cormorant;src:url("assets/cormorant-500-normal.ttf") format("truetype");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:Cormorant;src:url("assets/cormorant-500-italic.ttf") format("truetype");font-weight:500;font-style:italic;font-display:swap}
@font-face{font-family:Manrope;src:url("assets/manrope-400-normal.ttf") format("truetype");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Manrope;src:url("assets/manrope-600-normal.ttf") format("truetype");font-weight:600;font-style:normal;font-display:swap}
:root{--paper:#fbf5ed;--ink:#432e2c;--muted:#806d64;--berry:#a23b4a;--rose:#d48c8d;--line:#e5d8cb;--peach:#f1e5d7;--serif:Cormorant,Georgia,serif;--sans:Manrope,Arial,sans-serif;--ease:cubic-bezier(.2,.75,.3,1);--scroll:0}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:32px}
body{margin:0;background:var(--paper);color:var(--ink);font:400 14px/1.8 var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden}
body.modal-open{overflow:hidden}
::selection{background:#eac0b8;color:#692c3b}
button,a{-webkit-tap-highlight-color:transparent}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;cursor:pointer}
button:disabled{cursor:default}
button,a{-webkit-touch-callout:none}
button:focus-visible,a:focus-visible,[tabindex="0"]:focus-visible{outline:2px solid var(--berry);outline-offset:7px}
button{border:0;background:none}
svg{display:block}
img{display:block;max-width:100%}
p,h1,h2,h3{margin:0}
h1,h2,h3{font-family:var(--serif);font-weight:500;line-height:1.04}
em{font-family:var(--serif);font-weight:500;color:var(--berry)}
button,[role="tab"]{touch-action:manipulation}
[hidden]{display:none!important}
.svg-defs{position:absolute;width:0;height:0;overflow:hidden}
.icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.section-wrap{width:min(1280px,calc(100% - 112px));margin-inline:auto}
.section-space{padding-block:110px}
.eyebrow{font:600 10px/1.6 var(--sans);letter-spacing:2.1px;color:var(--berry)}
.section-number{margin-right:14px;opacity:.55;letter-spacing:1px}
.button{display:inline-flex;align-items:center;justify-content:center;gap:28px;min-height:56px;padding:16px 27px;border-radius:50px;font-size:12px;font-weight:600;transition:transform .35s var(--ease),box-shadow .35s,background .35s}
.button-primary{color:#fff7ef;background:var(--berry);box-shadow:0 6px 22px #982e4212}
.button-primary:hover{background:#8f2d3d;transform:translateY(-3px);box-shadow:0 10px 26px #982e422b}
.button-primary .icon{transition:transform .35s}
.button-primary:hover .icon{transform:translateX(3px)}
.text-button{display:inline-flex;align-items:center;gap:16px;padding:12px 0;font-size:12px;font-weight:600;border-bottom:1px solid #bc8c7e;transition:gap .3s,color .3s}
.text-button:hover{gap:24px;color:var(--berry)}
.skip-link{position:fixed;top:-80px;left:16px;z-index:100;padding:10px 18px;background:var(--ink);color:white;border-radius:4px}
.skip-link:focus{top:12px}
.reading-progress{position:fixed;left:0;top:0;width:100%;height:3px;z-index:80;pointer-events:none}
.reading-progress span{display:block;width:100%;height:100%;background:var(--berry);transform:scaleX(0);transform-origin:left}
#petals{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:35}
.site-header{width:min(1392px,calc(100% - 80px));height:104px;margin:auto;display:flex;align-items:center;justify-content:space-between;position:relative;z-index:40;border-bottom:1px solid var(--line)}
.wordmark{display:flex;align-items:center;gap:12px;font:500 24px/1.3 var(--serif)}
.brand-flower{width:41px;height:41px;fill:var(--berry);transition:transform 1s var(--ease)}
.brand-flower circle{fill:#e5bd9d}
.wordmark:hover .brand-flower{transform:rotate(95deg)}
.wordmark-sub{display:block;font:600 7px/2 var(--sans);letter-spacing:1.4px;color:var(--muted)}
.desktop-nav{display:flex;align-items:center;gap:35px;margin-left:28px;font-size:11px}
.desktop-nav a{position:relative;padding:10px 0;color:#6e5950}
.desktop-nav a:after{content:"";position:absolute;bottom:3px;left:0;width:100%;height:1px;background:var(--berry);transform:scaleX(0);transform-origin:left;transition:transform .3s}
.desktop-nav a:hover:after{transform:scaleX(1)}
.header-actions{display:flex;align-items:center;gap:28px}
.sound-toggle{display:flex;align-items:center;gap:9px;padding:10px 0;font-size:10px;color:var(--muted)}
.sound-bars{height:15px;display:flex;align-items:center;gap:3px}
.sound-bars i{width:2px;height:5px;background:var(--berry);border-radius:2px}
.sound-bars i:nth-child(2){height:13px}.sound-bars i:nth-child(3){height:9px}.sound-bars i:nth-child(4){height:6px}
.sound-toggle[aria-pressed="true"] .sound-bars i{animation:equalizer .9s ease-in-out infinite alternate}
.sound-toggle[aria-pressed="true"] .sound-bars i:nth-child(2){animation-delay:-.5s}
.sound-toggle[aria-pressed="true"] .sound-bars i:nth-child(3){animation-delay:-.2s}
.header-letter{display:flex;align-items:center;gap:13px;padding:9px 0 9px 23px;border-left:1px solid var(--line);font-size:11px}
.header-letter .icon{width:17px;height:17px;color:var(--berry)}
.hero{min-height:693px;padding-top:57px;padding-bottom:60px;display:grid;grid-template-columns:1fr 1.03fr;align-items:center;gap:30px;position:relative}
.hero-copy{z-index:2;padding:10px 0 0}
.tiny-heart{font-size:19px;vertical-align:-2px;line-height:1;margin-right:8px}
.hero h1{font-size:clamp(67px,7.6vw,109px);letter-spacing:-3.3px;line-height:.99;margin:27px 0 28px}
.hero h1 em{white-space:nowrap}
.hero-description{color:var(--muted);font-size:12px;line-height:1.95}
.hero-description .hero-name{color:var(--ink);font-size:14px;margin-bottom:10px}
.hero-name span{color:var(--berry)}
.hero-buttons{display:flex;align-items:center;gap:23px;margin-top:32px}
.hero-sign{font:italic 500 19px/1.25 var(--serif);color:#8a6e61;max-width:140px;position:relative}
.hero-sign .icon{display:inline-block;width:14px;height:14px;margin-left:3px;vertical-align:-2px;transform:rotate(-15deg)}
.scroll-cue{display:flex;align-items:center;gap:12px;width:fit-content;font-size:9px;letter-spacing:.3px;color:var(--muted);margin-top:57px}
.scroll-cue>span{display:inline-flex;align-items:center;justify-content:center;width:29px;height:36px;border:1px solid #d7bfb1;border-radius:20px;font-size:16px;animation:scrollHint 2.5s ease-in-out infinite}
.hero-visual{height:566px;position:relative;padding:5px 16px 18px 8px}
.hero-image-frame{width:100%;height:100%;position:relative;overflow:hidden;border-radius:48% 48% 8px 8px;transform:rotate(2deg);isolation:isolate;background:#eacbae;box-shadow:0 12px 40px #77462b0b}
.hero-image{width:100%;height:100%;object-fit:cover;object-position:50% 50%;transform:scale(1.06);will-change:transform}
.image-shimmer{position:absolute;inset:-50%;background:linear-gradient(105deg,transparent 35%,#fff9e434 50%,transparent 65%);transform:translateX(-100%);animation:shimmer 12s ease-in-out infinite;pointer-events:none;mix-blend-mode:screen}
.hero-orbit{position:absolute;inset:-9px 0 4px -4px;border:1px solid #c59e7c50;border-radius:49% 49% 8px 8px;transform:rotate(-3deg);pointer-events:none}
.orbit-two{inset:-19px 10px 14px 4px;transform:rotate(5deg);opacity:.35}
.mors-label{position:absolute;left:-24px;top:73px;z-index:4;padding:14px 21px 15px 19px;transform:rotate(-7deg);background:#fcf6ebed;box-shadow:0 8px 28px #6c403211;backdrop-filter:blur(14px);font:600 9px/1.7 var(--sans);letter-spacing:1.6px;border:1px solid #fff8ef}
.mors-label-sub{display:block;color:#8b6f5c;font-size:8px;font-weight:400;letter-spacing:.3px;margin-left:16px}
.live-dot{display:inline-block;width:5px;height:5px;margin:0 8px 1px 0;border-radius:50%;background:var(--berry);box-shadow:0 0 0 3px #a23b4a12;animation:dotPulse 3s infinite}
.love-stamp{position:absolute;right:-21px;bottom:-4px;width:123px;height:123px;color:#f7e4cf;filter:drop-shadow(0 4px 10px #6c253c18);transform:rotate(10deg)}
.love-stamp>circle{fill:var(--berry);stroke:#c1646a;stroke-width:1}
.stamp-text{transform-origin:70px 70px;animation:turn 35s linear infinite}
.stamp-text text{font:9px var(--sans);letter-spacing:2px;fill:#f9e8d8}
.love-stamp>use{fill:none;stroke:#f9e8d8;stroke-width:1}
.visual-caption{position:absolute;left:40px;bottom:-17px;color:#9c7866;font:italic 500 20px var(--serif);transform:rotate(-3deg)}
.hero-sparkle{position:absolute;fill:#bb765d;opacity:.75;animation:twinkle 5s ease-in-out infinite}
.sparkle-one{width:34px;height:34px;right:-23px;top:49px}
.sparkle-two{width:22px;height:22px;left:-38px;bottom:70px;animation-delay:-2s}
.hero-enter{animation:heroEnter 1.1s var(--ease) both}
.hero-copy>.hero-enter:nth-child(2){animation-delay:.08s}.hero-copy>.hero-enter:nth-child(3){animation-delay:.16s}.hero-copy>.hero-enter:nth-child(4){animation-delay:.24s}.hero-copy>.hero-enter:nth-child(5){animation-delay:.32s}.hero-visual.hero-enter{animation-delay:.16s}
.love-ribbon{overflow:hidden;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#f7ede1;padding:22px 0}
.ribbon-track{display:flex;align-items:center;gap:44px;width:max-content;animation:marquee 46s linear infinite}
.ribbon-track span{font-size:9px;font-weight:600;letter-spacing:2.7px;white-space:nowrap;color:#8b6456}
.ribbon-track i{font:normal 28px/1 var(--serif);color:#b77866}
.section-intro{text-align:center}
.section-intro h2{font-size:clamp(44px,4.7vw,67px);margin:22px 0}
.section-intro>p:last-child{color:var(--muted);font-size:12px}
.qualities{display:grid;grid-template-columns:repeat(3,1fr);margin-top:58px}
.quality{position:relative;text-align:center;padding:0 39px}
.quality+.quality{border-left:1px solid var(--line)}
.quality-art{width:135px;height:116px;margin:0 auto 25px;transition:transform .65s var(--ease)}
.quality:hover .quality-art{transform:translateY(-8px) rotate(-4deg)}
.quality-art svg{width:100%;height:100%;overflow:visible}
.quality-number{font-size:9px;letter-spacing:2px;color:#b28e7e}
.quality h3{font-size:35px;margin:11px 0 18px}
.quality>p{font-size:12px;line-height:1.9;color:var(--muted);max-width:310px;margin:auto}
.quality-note{display:block;font:italic 500 18px/1.4 var(--serif);color:#a06a5f;margin-top:22px}
.flower-petals{fill:#c88583;transform-box:fill-box;transform-origin:center;animation:sway 9s ease-in-out infinite}
.care-orbit{transform-origin:75px 62px;animation:turn 35s linear infinite}
.love-small{transform-origin:75px 74px;animation:heartbeat 4s ease-in-out infinite}
.story{background:#f2e8db;border-top:1px solid #e8d7c83d;border-bottom:1px solid #e8d7c83d}
.story-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:40px}
.story-heading h2{font-size:clamp(48px,5.4vw,75px);margin-top:22px}
.story-heading>p{font-size:12px;color:var(--muted);max-width:300px;padding-bottom:7px;line-height:1.95}
.story-tabs{display:grid;grid-template-columns:repeat(4,1fr);position:relative;margin-top:66px}
.story-tabs:before{content:"";position:absolute;top:7px;left:0;right:0;height:1px;background:#d8c5b2}
.story-tabs button{position:relative;text-align:left;padding:36px 10px 12px 0;font-size:11px;color:#7a655b;transition:color .4s;z-index:1}
.story-tabs button[aria-selected="true"]{color:var(--berry);font-weight:600}
.tab-dot{width:15px;height:15px;border:1px solid #bba28c;border-radius:50%;position:absolute;top:0;left:0;background:#f2e8db;transition:all .4s}
.story-tabs button[aria-selected="true"] .tab-dot{background:var(--berry);border-color:var(--berry);box-shadow:0 0 0 5px #a23b4a0c}
.tab-index{margin-right:12px;color:#a79485;font-size:9px}
.timeline-fill{height:1px;background:var(--berry);width:0;position:absolute;left:0;top:7px;transition:width .6s var(--ease)}
.story-content{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center;margin-top:26px;min-height:416px}
.story-art{position:relative;padding-bottom:18px;min-width:0}
.story-art>svg{width:100%;height:auto;overflow:visible}
.art-word{position:absolute;bottom:20px;left:50%;transform:translateX(-50%) rotate(-7deg);font:italic 500 115px/.9 var(--serif);color:#b68c6c18;pointer-events:none}
.story-art-caption{display:block;position:relative;z-index:1;text-align:center;font-size:9px;letter-spacing:.7px;color:#9a7d68;margin-top:10px}
.scene{opacity:0;transition:opacity .6s,transform .7s var(--ease);transform:translateY(8px)}
.story-art[data-stage="0"] .scene-0,.story-art[data-stage="1"] .scene-1,.story-art[data-stage="2"] .scene-2,.story-art[data-stage="3"] .scene-3{opacity:1;transform:translateY(0)}
.story-ring{transform-origin:250px 178px;animation:turn 100s linear infinite}
.story-thread{stroke-dasharray:800;stroke-dashoffset:800;animation:drawThread 3s var(--ease) forwards}
.floating-heart{animation:float 5s ease-in-out infinite}
.story-panels{padding:20px 18px 20px 0}
.chapter-label{font-size:8px;letter-spacing:1.7px;color:#9c7762}
.story-panel{animation:panelEnter .6s var(--ease);min-height:300px}
.story-panel h3{font-size:47px;line-height:1.08;margin:20px 0 23px}
.story-panel p{font-size:12px;color:#7b675c;line-height:1.9;margin:12px 0;max-width:440px}
.chapter-footer{display:block;font:italic 500 19px/1.4 var(--serif);color:#a26456;margin-top:22px;max-width:410px}
.story-next{margin-top:14px}
.distance{position:relative;background:#352027;color:#f4e3d0;overflow:hidden}
.distance-grid{display:grid;grid-template-columns:1fr 1fr;gap:55px;align-items:center;position:relative;z-index:1}
.distance .eyebrow{color:#d8aa92}
.distance h2{font-size:clamp(46px,4.9vw,70px);margin:24px 0 25px}
.distance h2 em{color:#e4b393}
.distance-copy>p{max-width:445px;font-size:12px;line-height:1.95;color:#c3ada6;margin-top:18px}
.distance-copy>p.distance-lead{font:500 25px var(--serif);color:#efd0b5;margin-top:0}
.distance-copy>.eyebrow{font:600 9px/1.7 var(--sans);letter-spacing:1.8px;color:#d8aa92}
.distance-quote{display:flex;gap:20px;align-items:stretch;margin-top:34px}
.distance-quote>span{width:1px;background:#9f6c61}
.distance-quote p{font:italic 500 25px/1.35 var(--serif);color:#e7c9b7}
.night-grain{position:absolute;inset:0;opacity:.5;pointer-events:none;background-image:radial-gradient(#fff1dd22 .5px,transparent .8px);background-size:5px 5px;mask-image:linear-gradient(120deg,transparent,#000)}
.constellation{position:relative;min-width:0;aspect-ratio:1.04}
.connection-svg{width:100%;height:100%;position:relative;z-index:2;overflow:visible}
.night-halo{position:absolute;inset:12%;background:radial-gradient(ellipse,#c2726530,transparent 65%);filter:blur(30px);animation:breathe 7s ease-in-out infinite}
.night-stars{position:absolute;inset:0}
.night-star{position:absolute;border-radius:50%;background:#e8cda8;animation:twinkle var(--duration,4s) ease-in-out infinite;animation-delay:var(--delay,0s)}
.home-pulse{transform-origin:370px 144px;animation:homePulse 4s ease-out infinite}
.signal-dash{animation:signal 5s linear infinite}
.son-heart{transform-origin:108px 300px;animation:heartbeat 4s ease-in-out infinite}
.constellation-label{position:absolute;font:600 9px/1.5 var(--sans);letter-spacing:2px;color:#ecd4b7;z-index:3}
.constellation-label>span{display:block;font-size:8px;letter-spacing:.7px;font-weight:400;color:#b2988e;margin-top:5px;white-space:nowrap}
.home-label{left:64%;top:43%}
.son-label{left:13%;top:72%}
.connection-caption{position:absolute;bottom:0;left:0;width:100%;text-align:center;font-size:7px;letter-spacing:1.9px;color:#d5ad99}
.connection-caption i{display:inline-block;width:4px;height:4px;background:#dcad84;border-radius:50%;margin:0 8px 1px 0;box-shadow:0 0 9px #e9b992}
.family-grid{display:grid;grid-template-columns:1fr 1fr;gap:35px;margin-top:55px}
.family-person{display:grid;grid-template-columns:145px 1fr;gap:28px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:35px 0 40px}
.family-illustration{position:relative;align-self:center;height:180px;display:flex;align-items:center}
.family-illustration svg{width:140px;height:140px;fill:none;stroke:currentColor;stroke-width:1;color:#a2906f;position:relative;z-index:1;transition:transform 1.4s var(--ease)}
.brother .family-illustration svg{color:#b67e77}
.family-person:hover .family-illustration svg{transform:rotate(12deg)}
.family-initial{position:absolute;font:500 210px/1 var(--serif);left:0;top:-6px;color:#dfd2c320;pointer-events:none}
.family-person-copy .eyebrow{font-size:8px;letter-spacing:1.5px}
.family-person h3{font-size:38px;margin:12px 0 18px}
.family-person p{font-size:11px;color:var(--muted);line-height:1.95}
.family-note{font:italic 500 20px var(--serif);display:block;margin-top:18px;color:#a16a5c}
.family-footer{display:flex;align-items:center;gap:20px;justify-content:center;text-align:left;margin-top:45px}
.family-footer svg{width:35px;height:35px;fill:none;stroke:#b8786c;stroke-width:1}
.family-footer p{font:500 23px/1.3 var(--serif)}
.family-footer span{font:400 10px var(--sans);color:var(--muted)}
.gratitude{background:#f4e2db;position:relative;overflow:hidden;padding-block:77px}
.gratitude:before,.gratitude:after{content:"";position:absolute;width:450px;height:450px;border:1px solid #bc817924;border-radius:50%;top:-145px;left:-270px}
.gratitude:after{left:auto;right:-290px;top:40px}
.gratitude-inner{text-align:center}
.gratitude-flower{width:43px;height:43px;fill:#be7878;margin:0 auto 22px;animation:turn 40s linear infinite}
.gratitude-flower circle{fill:#f4d7be}
.gratitude .eyebrow{font-size:8px;color:#99685e}
.gratitude-text{min-height:168px;display:flex;align-items:center;justify-content:center}
.gratitude-text p{font:500 clamp(34px,3.6vw,49px)/1.18 var(--serif);padding:25px 0}
.gratitude-text em{color:#a8575c}
.gratitude-button{font-size:10px}
.gratitude-button>span{font-size:21px;line-height:1;font-weight:400}
.gratitude-dots{display:flex;justify-content:center;gap:7px;margin-top:24px}
.gratitude-dots i{width:4px;height:4px;border-radius:50%;background:#cba49b;transition:all .4s}
.gratitude-dots i.active{background:var(--berry);width:15px;border-radius:4px}
.letter-section{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:60px;padding-top:130px;padding-bottom:135px}
.letter-intro h2{font-size:clamp(50px,5.5vw,75px);margin:25px 0}
.letter-intro>p:last-child{font-size:12px;line-height:1.95;color:var(--muted)}
.envelope-area{text-align:center;position:relative;padding-top:44px}
.envelope{width:370px;height:255px;max-width:100%;position:relative;display:block;margin:0 auto 32px;padding:0;perspective:1200px;isolation:isolate;transform:rotate(-6deg);transition:transform .6s var(--ease)}
.envelope:hover,.envelope:focus-visible{transform:rotate(-2deg) translateY(-8px)}
.envelope-back{position:absolute;inset:0;background:#dec5ac;border-radius:5px;box-shadow:0 20px 40px #7f53431a}
.envelope-paper{position:absolute;inset:0 19px 12px;background:#fffaf0;z-index:1;transition:transform .7s var(--ease);padding:20px;text-align:left;color:#a88772;box-shadow:0 2px 8px #956c3f10}
.envelope-paper>span{font:italic 500 26px var(--serif)}
.envelope-paper i{display:block;width:100%;height:1px;background:#dcc8b8;margin-top:17px}
.envelope-paper i:last-child{width:75%}
.envelope:hover .envelope-paper,.envelope:focus-visible .envelope-paper{transform:translateY(-35px)}
.envelope-front{position:absolute;inset:0;z-index:3;background:linear-gradient(145deg,#e8d0b8,#e0bea2);clip-path:polygon(0 0,50% 52%,100% 0,100% 100%,0 100%);border-radius:4px}
.envelope-flap{position:absolute;inset:0 0 auto;height:55%;background:#ecd6bf;clip-path:polygon(0 0,100% 0,50% 100%);z-index:4;filter:drop-shadow(0 3px 3px #b3886133);transform-origin:top;transition:transform .6s var(--ease)}
.envelope-seal{position:absolute;left:calc(50% - 27px);top:calc(50% - 14px);width:54px;height:54px;background:#aa4e54;color:#f1d3ba;border-radius:50% 47% 49% 45%;z-index:5;box-shadow:inset 0 0 0 5px #973c4540,inset 0 0 0 7px #be687640,2px 4px 7px #703c3f22;display:grid;place-items:center}
.envelope-seal svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1}
.envelope-address{position:absolute;z-index:5;left:23px;bottom:22px;font:italic 500 22px/1.25 var(--serif);text-align:left;color:#946c53}
.envelope-address small{font:400 8px var(--sans);letter-spacing:1px}
.open-letter-text{margin-top:8px}
.envelope-footnote{display:block;font-size:8px;letter-spacing:.6px;color:#a18570;margin-top:15px}
.finale{background:#efd8cf;text-align:center;padding:95px 24px 78px;position:relative;overflow:hidden;isolation:isolate}
.finale-content{position:relative;z-index:2}
.finale .eyebrow{font-size:9px;letter-spacing:2px;color:#95585a}
.finale h2{font-size:clamp(68px,8.5vw,118px);line-height:.95;margin:25px 0 28px;letter-spacing:-2px}
.finale h2 em{color:#a04750}
.finale-content>p:not(.eyebrow):not(.hug-message){font-size:11px;color:#8f6a5c}
.hug-button{margin-top:29px;gap:14px;min-width:190px;min-height:58px}
.hug-button .icon{width:18px;height:18px}
.hug-button:hover .icon{transform:scale(1.1)}
.hug-message{min-height:22px;font-size:9px;color:#986f63;margin-top:19px}
.finale-rings{position:absolute;width:900px;height:900px;left:50%;top:50%;transform:translate(-50%,-50%);z-index:0}
.finale-rings i{position:absolute;inset:8%;border:1px solid #b9706922;border-radius:50%;animation:breathe 8s ease-in-out infinite}
.finale-rings i:nth-child(2){inset:18%;animation-delay:-2s}.finale-rings i:nth-child(3){inset:0;animation-delay:-4s}
.site-footer{min-height:115px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding-block:30px}
.footer-brand{font:500 24px var(--serif);white-space:nowrap}
.footer-brand span{color:var(--berry);margin-left:7px}
.site-footer p{font-size:8px;color:#9e897b;letter-spacing:.4px;text-align:center}
.site-footer>a:last-child{font-size:9px;color:#8d6b5d}
.effects-toggle{position:fixed;right:18px;bottom:max(15px,env(safe-area-inset-bottom));z-index:45;display:flex;align-items:center;gap:7px;padding:8px 12px;border:1px solid #dbc4b15c;border-radius:25px;background:#fcf6ecdf;box-shadow:0 3px 20px #513b3710;backdrop-filter:blur(10px);font-size:8px;color:#8b6959}
.effects-toggle svg{width:13px;height:13px;fill:currentColor}
.effects-toggle[aria-pressed="false"]{opacity:.75}
.hug-overlay{position:fixed;inset:0;pointer-events:none;display:flex;align-items:center;justify-content:center;z-index:60;opacity:0;background:#f8e4d380}
.hug-overlay svg{width:min(52vw,300px);height:min(52vw,300px);fill:#a54553;filter:drop-shadow(0 15px 40px #b2434a35)}
.hug-overlay.is-hugging{animation:hugGlow 2.5s var(--ease) both}
.hug-overlay.is-hugging svg{animation:hugHeart 2.5s var(--ease) both}
.letter-dialog{border:1px solid #f4e6d5;border-radius:3px;background:#fff9ef;color:var(--ink);width:min(720px,calc(100% - 32px));max-height:88dvh;padding:0;box-shadow:0 30px 100px #1b121666;overflow-y:auto;overscroll-behavior:contain}
.letter-dialog::backdrop{background:#302027ad;backdrop-filter:blur(7px)}
.letter-dialog[open]{animation:letterOpen .5s var(--ease)}
.dialog-close{position:sticky;top:14px;float:right;margin:14px 14px -56px 0;width:38px;height:38px;border-radius:50%;background:#f2e5d5;font:500 25px var(--sans);line-height:1;z-index:3;color:#8d6553;display:grid;place-items:center}
.dialog-close:hover{background:#e9d7c4}
.letter-paper{padding:48px 62px 55px}
.letter-flower{width:34px;height:34px;fill:#b36a67;margin-bottom:23px}
.letter-flower circle{fill:#ecc5a3}
.letter-paper .eyebrow{font-size:8px;letter-spacing:1.5px}
.letter-paper h2{font-size:43px;margin:22px 0 30px;line-height:1.1}
.letter-paper>p:not(.eyebrow){font-size:12px;line-height:2;color:#786054;margin-top:18px}
.letter-paper>p.letter-last-line{font:500 24px/1.4 var(--serif);color:#8e4450;margin-top:28px}
.letter-signature{font:500 22px/1.3 var(--serif);margin-top:33px;text-align:right}
.letter-signature em{font-size:27px}
.letter-signature svg{display:inline-block;width:20px;height:20px;fill:none;stroke:var(--berry);stroke-width:1;margin-left:11px}
.reveal-ready{opacity:0;transform:translateY(25px);transition:opacity 1s var(--ease) var(--delay,0ms),transform 1s var(--ease) var(--delay,0ms)}
.reveal-ready.is-visible{opacity:1;transform:translateY(0)}
.motion-off *,.motion-off *:before,.motion-off *:after{animation:none!important;transition:none!important}
.motion-off .hero-enter,.motion-off .reveal-ready{opacity:1;transform:none}
.motion-off .story-thread{stroke-dashoffset:0}
.motion-off #petals,.motion-off .hug-overlay{display:none}
.motion-off{scroll-behavior:auto}
.page-hidden *,.page-hidden *:before,.page-hidden *:after{animation-play-state:paused!important}
@keyframes heroEnter{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
@keyframes panelEnter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@keyframes marquee{to{transform:translateX(-50%)}}
@keyframes turn{to{transform:rotate(360deg)}}
@keyframes shimmer{0%,55%{transform:translateX(-100%)}85%,100%{transform:translateX(100%)}}
@keyframes twinkle{0%,100%{opacity:.3;transform:scale(.8)}50%{opacity:1;transform:scale(1.1)}}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@keyframes sway{0%,100%{rotate:-5deg}50%{rotate:7deg}}
@keyframes heartbeat{0%,30%,65%,100%{scale:1}40%,55%{scale:1.055}}
@keyframes dotPulse{0%,100%{box-shadow:0 0 0 3px #a23b4a12}50%{box-shadow:0 0 0 6px #a23b4a05}}
@keyframes scrollHint{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}
@keyframes drawThread{to{stroke-dashoffset:0}}
@keyframes signal{from{stroke-dashoffset:0}to{stroke-dashoffset:-100}}
@keyframes breathe{0%,100%{transform:scale(.94);opacity:.65}50%{transform:scale(1.05);opacity:1}}
@keyframes homePulse{0%{scale:1;opacity:.8}100%{scale:1.8;opacity:0}}
@keyframes equalizer{from{transform:scaleY(.4)}to{transform:scaleY(1.2)}}
@keyframes hugGlow{0%{opacity:0}18%,62%{opacity:1}100%{opacity:0}}
@keyframes hugHeart{0%{transform:scale(.3);opacity:0}20%{transform:scale(1);opacity:1}34%{transform:scale(1.12)}48%{transform:scale(1)}62%{transform:scale(1.13);opacity:1}100%{transform:scale(1.8);opacity:0}}
@keyframes letterOpen{from{opacity:0;transform:translateY(20px) rotate(-1deg)}to{opacity:1;transform:translateY(0) rotate(0)}}
@media(min-width:1600px){.hero{min-height:760px}.hero-visual{height:600px}.hero h1{font-size:115px}}
@media(max-width:1150px){
  .section-wrap{width:calc(100% - 80px)}.site-header{width:calc(100% - 60px)}
  .desktop-nav{gap:20px;margin:0}.header-actions{gap:18px}
  .hero{gap:20px;min-height:660px}.hero h1{font-size:86px;letter-spacing:-2.5px}.hero-visual{height:510px}
  .hero-buttons{gap:15px}.hero-sign{font-size:17px}.hero .button{gap:18px;padding-inline:22px}
  .quality{padding-inline:25px}.quality h3{font-size:31px}
  .story-content{gap:30px}.story-panel h3{font-size:41px}.story-panel{min-height:315px}
  .family-person{grid-template-columns:100px 1fr;gap:18px}.family-illustration svg{width:100px;height:100px}.family-initial{font-size:165px;top:12px}
  .envelope{width:330px;height:230px}.distance-grid{gap:24px}
}
@media(max-width:900px){
  .section-wrap{width:calc(100% - 56px)}.site-header{width:calc(100% - 44px);height:90px}
  .desktop-nav{display:none}.hero h1{font-size:74px}.hero-visual{height:460px}.hero{min-height:600px;gap:14px}
  .hero-description{font-size:11px}.hero-description .hero-name{font-size:12px}.hero .eyebrow{font-size:8px;letter-spacing:1.5px}
  .hero-buttons{flex-wrap:wrap;gap:15px}.hero-sign{font-size:17px}.hero-sign .icon{display:none}
  .mors-label{left:-10px;top:45px;padding:11px 15px;font-size:8px}.mors-label-sub{font-size:7px}
  .love-stamp{width:102px;height:102px;right:-8px}.sparkle-one{right:-12px}.sparkle-two{left:-21px}
  .section-space{padding-block:85px}.quality{padding-inline:17px}.quality h3{font-size:29px}.quality>p{font-size:11px}
  .quality-note{font-size:17px}.story-tabs{margin-top:50px}.story-tabs button{font-size:10px}.tab-index{margin-right:7px}
  .story-content{gap:20px}.story-panel h3{font-size:36px}.story-panel p{font-size:11px}.chapter-label{font-size:7px}.chapter-footer{font-size:17px}
  .family-grid{gap:27px}.family-person{grid-template-columns:1fr;gap:12px}.family-illustration{height:120px;justify-content:center}
  .family-initial{font-size:155px;top:-25px;left:calc(50% - 50px)}.family-person-copy{text-align:center}.family-person p{max-width:300px;margin:auto}
  .envelope{width:285px;height:205px}.envelope-paper>span{font-size:22px}.letter-section{gap:32px}.letter-intro h2{font-size:56px}
  .distance-grid{grid-template-columns:1.05fr .95fr;gap:8px}.distance h2{font-size:51px}.distance-copy>p{font-size:11px}.constellation-label{font-size:8px;letter-spacing:1px}.constellation-label>span{font-size:7px}
  .connection-caption{font-size:6px;letter-spacing:1px}.distance-quote p{font-size:22px}
}
@media(max-width:680px){
  html{scroll-padding-top:18px}
  .section-wrap{width:calc(100% - 42px)}.section-space{padding-block:72px}
  .site-header{width:calc(100% - 36px);height:82px}.wordmark{font-size:21px;gap:8px}.brand-flower{width:32px;height:32px}.wordmark-sub{font-size:5.7px;letter-spacing:1.05px}
  .header-actions{gap:14px}.header-letter{font-size:10px;border:0;padding:10px 0;gap:6px}.header-letter .icon{width:15px;height:15px}.sound-label{display:none}.sound-toggle{padding:12px 6px}
  .hero{grid-template-columns:1fr;padding-top:40px;padding-bottom:48px;gap:33px;min-height:0}
  .hero-copy{padding:0 3px}.hero h1{font-size:clamp(67px,15.6vw,98px);letter-spacing:-2.4px;line-height:.99;margin:23px 0 23px}
  .hero .eyebrow{font-size:8px;letter-spacing:1.55px}.tiny-heart{font-size:17px;margin-right:6px}
  .hero-description{font-size:11px;line-height:1.9}.hero-description .hero-name{font-size:12px;margin-bottom:8px}
  .hero-buttons{margin-top:25px;gap:22px;flex-wrap:nowrap}.hero .button{min-height:51px;font-size:11px;padding:14px 23px;gap:22px}
  .hero-sign{font-size:18px;max-width:120px;line-height:1.15}
  .hero-visual{height:auto;aspect-ratio:1.04;margin:0 11px 13px;padding:0 5px 6px;max-width:490px;width:calc(100% - 22px);justify-self:center}
  .hero-image-frame{border-radius:45% 45% 5px 5px}.hero-image{object-position:center 55%}
  .mors-label{top:37px;left:-17px;font-size:8px;padding:10px 14px;letter-spacing:1.2px}.mors-label-sub{font-size:7px;margin-left:13px}
  .live-dot{margin-right:6px;width:4px;height:4px}.love-stamp{width:99px;height:99px;bottom:-13px;right:-13px}
  .visual-caption{font-size:18px;left:13px;bottom:-24px}.hero-orbit{inset:-6px -3px 0 -3px}.orbit-two{inset:-11px 4px 8px}
  .sparkle-one{width:26px;height:26px;right:-15px;top:15px}.sparkle-two{width:17px;height:17px;left:-18px;bottom:50px}
  .scroll-cue{display:none}.love-ribbon{padding:17px 0}.ribbon-track{gap:28px}.ribbon-track span{font-size:8px;letter-spacing:1.8px}.ribbon-track i{font-size:22px}
  .section-intro h2{font-size:43px;margin:19px 0}.section-intro .eyebrow{font-size:8px;letter-spacing:1.5px}.section-number{margin-right:9px}
  .section-intro>p:last-child{font-size:11px;max-width:290px;margin:auto}
  .qualities{grid-template-columns:1fr;margin-top:35px}
  .quality{padding:28px 12px 35px;display:grid;grid-template-columns:78px 1fr;text-align:left;column-gap:23px}
  .quality+.quality{border-left:0;border-top:1px solid var(--line)}
  .quality-art{width:85px;height:85px;grid-column:1;grid-row:1 / 5;align-self:center;margin:0}
  .quality-number{grid-column:2;font-size:8px}.quality h3{grid-column:2;font-size:30px;margin:6px 0 10px}.quality>p{grid-column:2;font-size:11px;max-width:none;margin:0}.quality-note{grid-column:2;font-size:17px;margin-top:13px}
  .about{padding-bottom:42px}.story-heading{display:block}.story-heading .eyebrow{font-size:8px;letter-spacing:1.5px}
  .story-heading h2{font-size:53px;margin-top:19px}.story-heading>p{font-size:11px;max-width:none;margin-top:20px;line-height:1.8}
  .story-heading>p br{display:none}.story-tabs{margin-top:37px}
  .story-tabs button{padding:27px 5px 9px 0;font-size:9px;line-height:1.5}.tab-index{display:block;font-size:7px;margin:0 0 3px}
  .tab-dot{width:11px;height:11px;top:2px}.story-content{grid-template-columns:1fr;gap:14px;margin-top:13px;min-height:0}
  .story-art{max-width:400px;justify-self:center;width:100%;padding-bottom:15px}.story-art>svg{max-height:270px}
  .story-art-caption{font-size:8px;margin-top:0}.art-word{font-size:90px;bottom:13px}
  .story-panels{padding:8px 5px 0;min-height:355px}.story-panel{min-height:277px}.chapter-label{font-size:7px;letter-spacing:1.5px}
  .story-panel h3{font-size:42px;margin:16px 0 17px}.story-panel p{font-size:12px;line-height:1.9;margin:10px 0;max-width:none}.chapter-footer{font-size:19px;margin-top:17px}
  .story-next{font-size:11px;margin-top:12px}.distance-grid{grid-template-columns:1fr;gap:25px}
  .distance{padding-bottom:50px}.distance h2{font-size:55px;margin:21px 0}.distance-copy>.eyebrow{font-size:8px;letter-spacing:1.6px}
  .distance-copy>p{font-size:12px;max-width:none}.distance-copy>p.distance-lead{font-size:24px}.distance-quote{margin-top:26px}.distance-quote p{font-size:24px}
  .constellation{max-width:420px;width:100%;justify-self:center;aspect-ratio:1.13}
  .constellation-label{font-size:9px}.constellation-label>span{font-size:8px}.home-label{top:42%}.son-label{top:73%}.connection-caption{font-size:7px;bottom:-8px}
  .family-grid{grid-template-columns:1fr;gap:0;margin-top:35px}.family-person{display:grid;grid-template-columns:92px 1fr;gap:18px;padding:30px 0;border-bottom:0}
  .family-person:last-child{border-bottom:1px solid var(--line)}
  .family-illustration{height:120px}.family-illustration svg{width:91px;height:91px}.family-initial{font-size:150px;left:-4px;top:-13px}
  .family-person-copy{text-align:left}.family-person h3{font-size:34px;margin:10px 0 13px}.family-person p{font-size:11px;max-width:none}.family-note{font-size:19px;margin-top:14px}.family-person-copy .eyebrow{font-size:7px}
  .family-footer{gap:13px;margin-top:29px}.family-footer p{font-size:22px}.family-footer span{font-size:9px}.family-footer svg{width:28px;height:28px;flex-shrink:0}
  .gratitude{padding-block:57px}.gratitude-flower{width:35px;height:35px;margin-bottom:18px}.gratitude-text{min-height:168px}.gratitude-text p{font-size:35px;line-height:1.2;padding:22px 0}.gratitude .eyebrow{font-size:7px;letter-spacing:1.8px}
  .letter-section{grid-template-columns:1fr;gap:36px;padding-bottom:70px}.letter-intro{text-align:center}.letter-intro .eyebrow{font-size:8px;letter-spacing:1.4px}.letter-intro h2{font-size:56px;margin:22px 0}.letter-intro>p:last-child{font-size:11px}
  .envelope-area{padding-top:25px}.envelope{width:300px;height:210px;margin-bottom:23px}.envelope-address{font-size:21px}
  .open-letter-text{font-size:11px}.envelope-footnote{font-size:8px}
  .finale{padding:71px 20px 58px}.finale h2{font-size:79px;letter-spacing:-1.8px;margin:23px 0}.finale .eyebrow{font-size:8px;letter-spacing:1.5px}
  .finale-content>p:not(.eyebrow):not(.hug-message){font-size:10px}.hug-button{min-height:54px;font-size:11px;margin-top:24px}.hug-message{font-size:8px;max-width:290px;margin:17px auto 0;min-height:30px}
  .finale-rings{width:650px;height:650px}.site-footer{display:grid;grid-template-columns:1fr auto;gap:10px;padding:27px 0 67px;min-height:130px}
  .footer-brand{font-size:23px}.site-footer p{grid-row:2;grid-column:1 / 3;text-align:left;font-size:8px}.site-footer>a:last-child{grid-row:1;grid-column:2}
  .effects-toggle{font-size:7px;padding:7px 10px;right:12px;bottom:max(12px,env(safe-area-inset-bottom))}
  .letter-dialog{width:calc(100% - 24px);max-height:90dvh}.letter-paper{padding:37px 25px 40px}.letter-paper h2{font-size:35px;margin:22px 0}
  .letter-paper>p:not(.eyebrow){font-size:12px;line-height:1.9}.letter-paper>p.letter-last-line{font-size:22px;line-height:1.35}.letter-signature{font-size:21px}.letter-signature em{font-size:25px}
  .dialog-close{width:34px;height:34px;font-size:23px;top:10px;margin:10px 10px -44px 0}
}
@media(max-width:370px){
  .section-wrap{width:calc(100% - 34px)}.wordmark{font-size:19px}.wordmark-sub{font-size:5.1px}.brand-flower{width:28px;height:28px}.header-actions{gap:8px}.header-letter{font-size:9px}
  .hero h1{font-size:65px}.hero .eyebrow{font-size:7px}.hero-sign{font-size:16px;max-width:100px}.hero-buttons{gap:15px}.hero .button{padding-inline:20px;font-size:10px}
  .quality{column-gap:17px;grid-template-columns:65px 1fr}.quality-art{width:70px;height:75px}.quality h3{font-size:27px}
  .section-intro h2{font-size:39px}.story-panel h3{font-size:38px}.distance h2{font-size:49px}.family-person{grid-template-columns:75px 1fr;gap:14px}.family-illustration svg{width:75px}
  .family-footer span{font-size:8px}.gratitude-text p{font-size:31px}.envelope{width:270px;height:195px}.finale h2{font-size:70px}.hug-message{font-size:8px}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  .hero-enter,.reveal-ready{opacity:1;transform:none}
  .story-thread{stroke-dashoffset:0}
}
