/* A single visual system for Niff's birthday journal. */
:root{--paper:#f5f0e7;--ink:#3e292b;--wine:#6e263c;--muted:#846c68;--line:#d9ccc0;--pink:#edd4d0;--sage:#e1e4d8;--serif:Georgia,'Times New Roman',serif;--gutter:clamp(24px,6vw,100px)}
*{box-sizing:border-box}html{scroll-behavior:smooth}html.lenis,html.lenis body{scroll-behavior:auto}body{margin:0;background:var(--paper);color:var(--ink);font:14px/1.7 Arial,sans-serif;-webkit-font-smoothing:antialiased}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:disabled{opacity:.35;cursor:default}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button:focus-visible,a:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:2px solid #b3714a;outline-offset:6px}button{border:0}p{margin:0 0 20px}h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.05;margin:0;letter-spacing:-.055em}h2{font-size:clamp(42px,5vw,76px)}h3{font-size:clamp(30px,3vw,46px)}em{font-weight:400;color:var(--wine)}[hidden]{display:none!important}::selection{background:#e2b1b7;color:#3d1c26}.eyebrow{font:10px/1.6 Arial,sans-serif;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-bottom:24px}.handwritten{font:italic 30px/1.35 var(--serif)}
header{height:95px;display:flex;align-items:center;justify-content:space-between;padding:0 var(--gutter);border-bottom:1px solid var(--line);gap:25px}.wordmark{font:italic 28px var(--serif);white-space:nowrap}.wordmark span{color:var(--wine);padding-left:10px}header nav{display:flex;gap:30px;font-size:11px}header nav a{padding:12px 0}.date{font-size:9px;letter-spacing:.13em}.reading-progress{position:fixed;top:0;left:0;width:100%;height:3px;z-index:100}.reading-progress span{display:block;background:var(--wine);height:100%;width:100%;transform:scaleX(0);transform-origin:left}
.journal-hero{min-height:min(820px,calc(100svh - 95px));padding:70px var(--gutter) 90px;display:grid;grid-template-columns:1.08fr 1fr;gap:25px;position:relative;overflow:hidden}.hero-copy{align-self:center;z-index:2}.hero-copy h1{font-size:clamp(76px,8.5vw,138px);line-height:.95;letter-spacing:-.07em;margin:24px 0 35px}.hero-copy h1 em{white-space:nowrap}.hero-dedication{font:18px/1.65 var(--serif);color:var(--muted);margin-bottom:30px}.round-link{display:inline-flex;align-items:center;gap:32px;font-size:11px;text-transform:uppercase;letter-spacing:.12em}.round-link>span:last-child{border:1px solid var(--wine);color:var(--wine);border-radius:50%;width:48px;height:48px;display:grid;place-items:center;font:26px var(--serif);transition:transform .3s,background .3s}.round-link:hover>span:last-child{transform:rotate(45deg);background:var(--pink)}.hero-sign{font:italic 18px var(--serif);margin:38px 0 0}.hero-sign span{font:10px Arial;display:block;margin-top:10px;letter-spacing:.05em}.hero-collage{position:relative;min-height:560px;align-self:center;perspective:1200px}.hero-main{position:absolute;top:0;right:5%;width:70%;margin:0;padding:12px 12px 18px;background:#fffaf3;box-shadow:5px 18px 30px #41232b18;transform:rotate(6deg) translateY(var(--float,0px));transition:rotate .4s}.hero-main img{width:100%;height:400px;object-fit:cover}.hero-main figcaption,.hero-small figcaption{font:italic 13px var(--serif);text-align:center;margin-top:15px}.hero-small{position:absolute;left:0;bottom:0;width:45%;padding:10px 10px 17px;background:#fffaf3;transform:rotate(-10deg) translateY(calc(var(--float,0px)*-.65));box-shadow:3px 10px 28px #41232b22;margin:0}.hero-small img{width:100%;height:235px;object-fit:cover}.hero-stamp{position:absolute;right:-5px;bottom:40px;color:var(--wine);border:1px solid var(--wine);width:92px;height:112px;text-align:center;padding:10px;transform:rotate(9deg);font:9px Arial;letter-spacing:.15em;background:var(--paper)}.hero-stamp b{display:block;font:48px/.95 var(--serif);padding:8px 0}.hero-stamp span{font:italic 11px var(--serif);letter-spacing:0}.hero-heart{position:absolute;left:0;top:0;width:90px;height:90px;transform:rotate(-15deg);color:var(--wine)}.ink-heart{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round}.ink-heart path{stroke-dasharray:100;stroke-dashoffset:100;transition:stroke-dashoffset 1.8s ease}.ink-heart.is-visible path{stroke-dashoffset:0}.hero-bottom{position:absolute;bottom:22px;left:var(--gutter);right:var(--gutter);display:flex;justify-content:space-between;padding-top:20px;border-top:1px solid var(--line);font-size:9px;letter-spacing:.14em}.hero-bottom span:nth-child(2){font:italic 14px var(--serif);letter-spacing:0}
.chapter-index{background:var(--wine);color:var(--paper);padding:42px 0 40px;overflow:hidden}.index-heading{display:flex;align-items:center;justify-content:space-between;padding:0 var(--gutter);gap:20px;margin-bottom:20px}.index-heading .eyebrow{color:#d9b5b9;margin:0}.index-heading>p:not(.eyebrow){font:italic 26px var(--serif);margin:0}.index-heading>span{font-size:10px;color:#d9b5b9}.chapter-strip{display:flex;gap:18px;overflow-x:auto;padding:15px var(--gutter) 24px;scrollbar-width:thin;scrollbar-color:#c3989f transparent;touch-action:pan-x pan-y;cursor:grab}.chapter-card{flex:0 0 240px;position:relative;background:#f2e4d4;color:var(--wine);padding:9px 9px 20px;text-align:left;transform:rotate(-2deg);transition:transform .4s;user-select:none;box-shadow:4px 8px 0 #401b2944}.chapter-card:nth-child(even){background:#e3d9d8;transform:rotate(2deg)}.chapter-card:nth-child(3n){background:#dfe3d5}.chapter-card:hover{transform:translateY(-7px) rotate(0)}.chapter-card img{height:185px;width:100%;object-fit:cover;pointer-events:none}.chapter-card small{display:block;letter-spacing:.15em;font:8px Arial;margin:17px 10px 7px}.chapter-card strong{font:24px var(--serif);display:block;padding:0 10px}.chapter-card>span{position:absolute;right:17px;bottom:18px}.is-dragging{cursor:grabbing!important}.is-dragging *{cursor:grabbing!important}.is-dragging .chapter-card{pointer-events:none}
.section{position:relative;padding:100px var(--gutter);scroll-margin-top:30px}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:40px;margin-bottom:45px}.section-heading>p{font:17px/1.7 var(--serif);color:var(--muted);max-width:280px;margin-bottom:5px}.section-heading h2 em{display:inline-block}.story-section{padding-bottom:90px}.chapter-tabs{display:flex;gap:0;overflow-x:auto;border-bottom:1px solid var(--line);margin-bottom:38px}.chapter-tabs button{background:transparent;white-space:nowrap;padding:16px 22px;color:var(--muted);border-bottom:2px solid transparent;font-size:11px}.chapter-tabs button[aria-selected=true]{color:var(--wine);border-color:var(--wine)}.chapter-panel{display:grid;grid-template-columns:42% 1fr;gap:8%;align-items:center}.chapter-art{position:relative;padding:0;background:transparent;border:0;box-shadow:none;transform:perspective(1000px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .2s ease}.chapter-art:after{display:none}.chapter-art img{width:100%;height:450px;object-fit:contain;object-position:center;clip-path:none}.chapter-copy{max-width:580px}.chapter-copy h3{margin-bottom:25px}.chapter-copy p:not(.eyebrow){font:16px/1.9 Arial;color:#6b5754}.chapter-controls{display:flex;gap:20px;align-items:center;margin-top:32px;font:11px Arial}.chapter-controls button,.gallery-controls button{background:transparent;border:1px solid var(--line);border-radius:50%;width:42px;height:42px;font:22px var(--serif)}.story-caption{text-align:center;font:italic clamp(20px,2.5vw,33px)/1.5 var(--serif);color:var(--wine);margin:55px auto;max-width:850px}.march-memory{position:relative;max-width:850px;margin:65px auto 0;border-block:1px solid var(--line);padding:45px 30px 45px 145px}.march-date{position:absolute;left:20px;top:45px;color:var(--wine);text-align:center}.march-date span{display:block;font:70px/.9 var(--serif)}.march-date small{font-size:9px;line-height:1.6;display:block;margin-top:10px;letter-spacing:.15em}.march-memory .eyebrow{margin-bottom:15px}.march-memory h3{font-size:35px}.march-question{font:italic 21px/1.65 var(--serif);margin:20px 0}.march-reveal{background:none;padding:0;color:var(--wine);border-bottom:1px solid #bf8d93;font-size:11px}.march-reveal span{margin-left:15px}#march-answer{margin-top:30px;max-width:570px}#march-answer p{font-size:14px}.march-sign{font:italic 23px var(--serif)!important}#march-answer a{font-size:11px;text-decoration:underline}
.film-section{background:#342126;color:#f3e5d9;overflow:hidden}.film-section .eyebrow,.film-section .section-heading>p{color:#c5a7aa}.film-section h2 em{color:#dca7ae}.film-layout{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:10%;max-width:1020px;margin:auto}.film-frame{max-width:360px;margin:auto;width:100%;padding:12px;border:1px solid #856268;box-shadow:15px 16px 0 #24161a;transform:rotate(-2deg)}.film-frame video{display:block;width:100%;aspect-ratio:9/16;background:#171013;object-fit:contain}.film-note{max-width:420px}.film-note .handwritten{font-size:42px;color:#dfb8b9}.film-note p{font:22px/1.65 var(--serif);margin-top:25px}.film-note .quiet{font:14px/1.8 Arial;color:#c5a7aa}.note-rule{width:75px;height:1px;background:#bb8992;transform-origin:left;transform:scaleX(var(--draw,1));margin:35px 0}.text-link{display:inline-flex;gap:30px;font-size:10px;letter-spacing:.05em;padding-top:20px}.film-section .ink-heart{width:90px;height:90px;color:#b58491;position:absolute;right:8%;bottom:45px}
.memories-section{overflow:hidden;background:#eee4d7}.memory-grid{display:flex;gap:28px;overflow-x:auto;padding:28px 4px 42px;position:relative;scrollbar-width:thin;scrollbar-color:#ac8679 transparent;cursor:grab}.memory-card{flex:0 0 295px;background:#fffaf1;padding:11px 11px 25px;text-align:left;box-shadow:3px 8px 16px #492a2410;transform:rotate(-3deg);transition:transform .4s;user-select:none;position:relative}.memory-card:nth-child(even){transform:rotate(3deg)}.memory-card:hover{transform:translateY(-8px) rotate(0)}.memory-card img{width:100%;height:330px;object-fit:cover;pointer-events:none}.memory-card>span:not(.photo-number){font:italic 17px var(--serif);display:block;margin:20px 20px 0 3px}.photo-number{position:absolute;right:12px;bottom:8px;font:9px Arial;color:var(--muted)}.gallery-controls{display:flex;justify-content:space-between;align-items:center;font-size:10px;letter-spacing:.1em}.gallery-controls>div{display:flex;gap:10px}.gallery-controls p{margin:0}#gallery-count{margin-left:25px}.our-dates{display:flex;justify-content:center;align-items:center;gap:45px;margin-top:65px;text-align:center}.our-dates div>span{font:italic 27px var(--serif);color:var(--wine)}.our-dates p{font-size:11px;color:var(--muted);margin-top:14px}.date-thread{color:#ad7077}
.little-world{background:var(--sage)}.keepsake-drawer{display:grid;grid-template-columns:repeat(3,1fr);border-left:1px solid #b9bfad;border-top:1px solid #b9bfad}.keepsake{position:relative;background:transparent;text-align:center;min-height:240px;padding:30px;border-right:1px solid #b9bfad;border-bottom:1px solid #b9bfad;transition:background .3s,transform .3s}.keepsake:hover{background:transparent;transform:none}.keepsake svg{fill:none;stroke:#627059;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;width:80px;height:80px;margin:auto auto 20px;display:block;transition:transform .4s}.keepsake:hover svg{transform:rotate(-8deg) scale(1.08)}.keepsake strong{display:block;font:26px var(--serif)}.keepsake>span{display:block;font-size:9px;letter-spacing:.08em;color:#78836f;margin-top:20px}.drawer-note{text-align:center;font:italic 20px var(--serif);margin:35px 0 0}
.open-when-section{text-align:center;background:var(--pink);padding-top:95px;padding-bottom:110px}.section-intro{font:16px/1.7 var(--serif);max-width:480px;margin:25px auto 45px;color:var(--muted)}.open-when-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;max-width:1100px;margin:auto}.open-note{min-height:245px;position:relative;background:#f8eee3;border:1px solid #d5b4ad;text-align:left;padding:65px 28px 30px;box-shadow:0 7px 0 #e3bdb5;transition:transform .4s}.open-note:before{content:'';position:absolute;left:0;top:0;width:100%;height:90px;background:#eee0d2;clip-path:polygon(0 0,100% 0,50% 100%);border-top:1px solid #dfc8bb}.open-note:hover{transform:translateY(-10px) rotate(-2deg)}.note-heart{position:absolute;right:25px;top:65px;font:35px var(--serif);color:var(--wine)}.note-to{display:block;font:italic 18px var(--serif);margin:40px 0 10px}.open-note strong{display:block;font:29px var(--serif);max-width:230px}.note-open{display:block;font-size:10px;margin-top:22px;color:var(--muted)}
.letter-section{text-align:center;background:#fcf8f1}.letter-intro{font:17px/1.8 var(--serif);margin:25px 0 40px;color:var(--muted)}.envelope{position:relative;width:min(100%,550px);height:290px;background:#ead9c5;border:1px solid #d0b79f;box-shadow:0 14px 0 #f4e9dc,0 15px 0 #d5bdab;overflow:hidden;perspective:1000px;transition:transform .5s}.envelope:hover{transform:rotate(-2deg) translateY(-5px)}.envelope-flap{position:absolute;inset:0 0 auto;height:65%;background:#e2cab3;clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top;transition:transform .5s}.envelope-address{position:absolute;bottom:65px;left:30px;font:italic 30px var(--serif)}.seal{position:absolute;top:42%;left:calc(50% - 25px);border-radius:50%;width:50px;height:50px;display:grid;place-items:center;background:var(--wine);color:#efd6c2;font:30px var(--serif)}.envelope-label{position:absolute;bottom:25px;right:25px;font-size:10px;color:var(--muted)}.envelope.is-opening .envelope-flap{transform:rotateX(160deg)}.letter-paper{max-width:780px;margin:55px auto 0;text-align:left;border:1px solid var(--line);padding:45px 65px 65px;box-shadow:6px 6px 0 #eee4d7,7px 7px 0 #cdbbae;background:#fffdf8}.letter-tools{display:flex;align-items:center;justify-content:space-between;gap:15px;border-bottom:1px solid var(--line);padding-bottom:20px;margin-bottom:40px;font:italic 15px var(--serif)}.letter-tools button{background:none;border:1px solid var(--line);padding:8px 10px;font:10px Arial;margin-left:8px}.letter-body{font:19px/1.95 var(--serif)}.letter-body p{margin-bottom:28px}.letter-body.large{font-size:23px}.letter-body .lyric{font:italic 28px/1.6 var(--serif);color:var(--wine);border-left:2px solid #b77f87;padding-left:22px;margin:45px 0}.letter-signature{font:italic 30px var(--serif);margin-top:40px}.letter-signature span{color:var(--wine)}.letter-signature small{display:block;margin-top:12px;font-size:20px}
.future-section{background:#3c4237;color:#f6efdf}.future-section .eyebrow,.future-section .section-heading>p{color:#c1c6b4}.future-section h2 em{color:#d6c59b}.future-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.future-ticket{background:#eee7d8;color:#3d4236;text-align:left;min-height:340px;padding:30px;position:relative;border:1px solid #d0c6b2;transition:transform .4s,background .4s}.future-ticket:nth-child(2){background:#dcd5be}.future-ticket:nth-child(3){background:#d4dbce}.future-ticket:hover{transform:translateY(-7px) rotate(1deg)}.ticket-front,.ticket-back{display:flex;flex-direction:column;height:100%}.ticket-number{font:9px Arial;letter-spacing:.15em}.ticket-symbol{font:70px var(--serif);margin:28px 0}.ticket-front strong{font:32px/1.1 var(--serif);letter-spacing:-.03em;max-width:230px}.ticket-turn{font-size:10px;display:block;margin-top:30px}.ticket-back strong{font:28px/1.1 var(--serif);margin-bottom:25px}.ticket-back>span{font-size:14px;line-height:1.85}.ticket-back small{display:block;margin-top:25px;font-size:10px}.ending{text-align:center;overflow:hidden;min-height:620px;padding-block:100px}.ending-flower{font:65px var(--serif);color:var(--wine);display:inline-block;margin-bottom:20px;transform:rotate(var(--spin,0deg))}.ending h2{font-size:clamp(75px,9vw,140px);line-height:.95}.ending>p:not(.eyebrow){font:18px/1.7 var(--serif);margin-top:30px}.button{background:var(--wine);color:var(--paper);padding:16px 25px;font-size:11px;display:inline-flex;gap:25px;align-items:center}.button span{font:22px var(--serif)}.ending #last-note{font:italic 28px/1.6 var(--serif);color:var(--wine)}footer{border-top:1px solid var(--line);padding:35px var(--gutter) 120px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:25px;font-size:10px;color:var(--muted)}footer p{margin:0}
.music-player{position:fixed;bottom:20px;right:25px;z-index:100;display:flex;align-items:center;gap:10px;background:#472734;color:#f6e8d8;border:1px solid #9d6a78;box-shadow:0 8px 25px #23151c22;padding:11px 14px 11px 11px;border-radius:5px;max-width:560px}.music-cover{width:40px;height:40px;object-fit:cover;border-radius:50%;border:3px solid #986572}.song-info{display:flex;flex-direction:column;gap:4px;min-width:140px}.song-info strong{font:14px var(--serif);max-width:165px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.song-info span{font:8px Arial;color:#caaab0}.play-button{background:#ead6c8;color:var(--wine);width:35px;height:35px;border-radius:50%;display:grid;place-items:center;flex-shrink:0}.play-button svg{width:17px;height:17px;fill:currentColor}.track-step,.playlist-toggle,#volume-toggle{background:none;color:#efd8cf;padding:0;width:24px;height:32px;flex-shrink:0;font-size:22px}.track-step{font-size:20px}#music-time{display:none}#music-seek{width:55px;accent-color:#d8acae;height:3px;cursor:pointer}.playlist-panel{position:absolute;right:0;bottom:calc(100% + 12px);width:320px;max-width:90vw;padding:25px;background:#472734;color:#f6e8d8;border:1px solid #9d6a78;box-shadow:0 12px 30px #23151c22}.playlist-panel>p{font:italic 23px var(--serif)}.playlist-options{display:grid;gap:3px;max-height:290px;overflow-y:auto}.playlist-options button{background:transparent;color:inherit;text-align:left;padding:12px}.playlist-options button[aria-current=true],.playlist-options button:hover{background:#67414f}.playlist-options small{display:block;font-size:9px;color:#caaab0;margin-top:5px}.player-expand{display:none;background:none;color:inherit;width:30px}.reading-controls .player-expand{display:block}.reading-compact .song-info,.reading-compact .music-cover,.reading-compact .track-step,.reading-compact #music-seek,.reading-compact .playlist-toggle,.reading-compact #volume-toggle{display:none}
dialog{background:#fcf6ed;color:var(--ink);border:1px solid #d3bfb1;padding:25px;max-height:88dvh;max-width:90vw;box-shadow:0 25px 80px #0004}dialog::backdrop{background:#26161ee6}#photo-dialog{padding:12px 12px 25px;max-width:min(90vw,750px)}#photo-dialog img{max-height:72dvh;object-fit:contain;margin:auto}#photo-dialog p{text-align:center;font:italic 20px/1.4 var(--serif);margin:20px 10px 0}#close-photo,.us-dialog-close{position:absolute;top:13px;right:13px;background:#fcf6ed;border:1px solid var(--line);border-radius:50%;width:35px;height:35px;font-size:24px;z-index:2}.us-dialog{width:650px;padding:50px}.us-dialog h3{font-size:42px;margin:15px 0 30px}.us-dialog .eyebrow{padding-right:25px}.us-dialog p:not(.eyebrow){font:18px/1.8 var(--serif)}#us-dialog-art svg{width:65px;height:65px;fill:none;stroke:var(--wine);stroke-width:1.5}.us-dialog-sign{font-style:italic!important;color:var(--wine);margin:30px 0 0}#toast{position:fixed;left:50%;bottom:110px;transform:translateX(-50%);background:var(--wine);color:var(--paper);padding:15px 25px;max-width:90vw;z-index:110;opacity:0;pointer-events:none;font-size:12px}#toast.visible{opacity:1}.web-doodle{position:absolute;right:0;top:0;width:100px;height:100px;stroke:#b8878c;fill:none;stroke-width:.65;opacity:.6;pointer-events:none}.reveal{opacity:0;transform:translateY(28px);transition:opacity .75s ease,transform .75s cubic-bezier(.2,.7,.2,1)}.reveal.is-visible{opacity:1;transform:none}.section-heading:after{content:'';flex:0 0 30px;border-top:1px solid currentColor;opacity:.3;transform:scaleX(var(--draw,1));transform-origin:left}.quiet-reading .letter-section{background:#fcf8f1}
@media(min-width:1600px){.journal-hero,.section,header,.chapter-index{padding-left:max(100px,calc((100vw - 1450px)/2));padding-right:max(100px,calc((100vw - 1450px)/2))}.chapter-index{padding-inline:0}.hero-main{max-width:400px}.hero-collage{max-width:600px;width:100%}}
@media(max-width:1000px){.date{display:none}.hero-copy h1{font-size:clamp(67px,9vw,100px)}.hero-collage{min-height:490px}.hero-main img{height:340px}.hero-small img{height:190px}.hero-main{width:77%;right:0}.hero-small{width:52%;left:-5%}.hero-stamp{bottom:20px;right:-10px}.section{padding-block:80px}.chapter-panel{gap:6%}.chapter-art img{height:420px}.open-note{padding-inline:20px}.open-note strong{font-size:25px}.future-ticket{padding:24px}.ticket-front strong{font-size:28px}.section-heading:after{display:none}}
@media(max-width:700px){header{height:75px;gap:20px}.wordmark{font-size:25px}header nav{gap:18px;font-size:10px}header nav a:nth-child(2){display:none}.journal-hero{grid-template-columns:1fr;padding-top:38px;padding-bottom:70px;gap:34px;min-height:0}.hero-copy h1{font-size:clamp(70px,15.6vw,110px);margin:20px 0 22px}.hero-copy .eyebrow{font-size:8px;letter-spacing:.12em}.hero-dedication{font-size:16px;max-width:260px;line-height:1.5;margin-bottom:20px}.hero-sign{position:absolute;right:var(--gutter);top:280px;text-align:right;font-size:14px;max-width:140px}.round-link{gap:18px;font-size:9px}.round-link>span:last-child{width:37px;height:37px;font-size:23px}.hero-collage{width:100%;max-width:480px;margin:0 auto;min-height:450px}.hero-main{width:67%;right:6%;top:0}.hero-main img{height:300px}.hero-small{width:44%;left:0;bottom:5px}.hero-small img{height:180px}.hero-main figcaption,.hero-small figcaption{font-size:10px;margin-top:12px}.hero-stamp{width:70px;height:90px;right:0;bottom:20px;font-size:8px}.hero-stamp b{font-size:36px;padding:5px 0}.hero-stamp span{font-size:9px}.hero-heart{width:65px;height:65px;top:10px;left:0}.hero-bottom{bottom:20px;padding-top:15px;font-size:7px;letter-spacing:.09em}.hero-bottom span:nth-child(2){font-size:11px}.index-heading{flex-wrap:wrap;gap:10px}.index-heading .eyebrow{font-size:8px;width:100%}.index-heading>p:not(.eyebrow){font-size:22px}.index-heading>span{font-size:9px}.chapter-index{padding:32px 0 26px}.chapter-card{flex-basis:205px}.chapter-card img{height:160px}.chapter-card strong{font-size:22px}.chapter-strip{gap:16px}.section{padding:65px var(--gutter)}h2{font-size:45px;letter-spacing:-.05em}.eyebrow{font-size:9px;letter-spacing:.15em;margin-bottom:20px}.section-heading{display:block;margin-bottom:30px}.section-heading>p{font-size:16px;margin-top:25px}.chapter-tabs{margin-bottom:28px}.chapter-tabs button{padding:13px 18px;font-size:10px}.chapter-panel{grid-template-columns:1fr;gap:30px}.chapter-art{width:100%;max-width:370px;margin:auto;padding:0;border:0}.chapter-art img{height:350px}.chapter-copy h3{font-size:34px}.chapter-copy p:not(.eyebrow){font-size:14px;line-height:1.85}.chapter-copy .eyebrow{margin-bottom:16px}.chapter-controls{margin-top:22px}.story-caption{margin:40px auto;font-size:24px}.march-memory{padding:35px 0;margin-top:40px}.march-date{position:static;display:flex;gap:10px;align-items:center;text-align:left;margin-bottom:25px}.march-date span{font-size:52px}.march-date small{margin:0;font-size:8px}.march-memory h3{font-size:30px}.march-question{font-size:20px}.film-layout{grid-template-columns:1fr;gap:40px}.film-frame{width:84%;max-width:310px}.film-note{max-width:400px;margin:auto;text-align:center}.film-note .handwritten{font-size:34px}.film-note p{font-size:20px}.note-rule{margin:30px auto}.film-section .ink-heart{right:10px;bottom:15px;width:55px;height:55px}.memory-grid{gap:22px;margin-right:calc(var(--gutter)*-1);padding-right:var(--gutter)}.memory-card{flex-basis:255px}.memory-card img{height:290px}.memory-card>span:not(.photo-number){font-size:15px}.gallery-controls{margin-top:5px}.our-dates{gap:14px;align-items:start;margin-top:45px}.our-dates div>span{font-size:21px}.our-dates p{font-size:10px}.date-thread{font-size:0;padding-top:17px}.date-thread:after{content:'♡';font-size:18px}.keepsake-drawer{grid-template-columns:repeat(2,1fr)}.keepsake{padding:25px 14px;min-height:200px}.keepsake svg{width:60px;height:60px;margin-bottom:15px}.keepsake strong{font-size:22px}.keepsake>span{font-size:8px;margin-top:15px}.drawer-note{font-size:17px;line-height:1.5}.open-when-grid{grid-template-columns:1fr;gap:24px;max-width:400px}.open-note{min-height:200px;padding:48px 28px 25px}.open-note strong{font-size:30px;max-width:none}.note-to{margin-top:35px}.note-heart{right:30px;top:80px}.section-intro{font-size:15px}.envelope{height:240px}.envelope-address{font-size:26px;left:24px}.letter-paper{padding:25px 23px 45px;margin-top:35px}.letter-tools{font-size:12px;gap:6px}.letter-tools button{padding:7px;font-size:9px;margin-left:3px}.letter-body{font-size:18px}.letter-body.large{font-size:21px}.letter-body .lyric{font-size:25px;padding-left:15px}.letter-signature{font-size:26px}.future-grid{grid-template-columns:1fr;gap:20px}.future-ticket{min-height:265px;padding:30px}.ticket-symbol{margin:15px 0;font-size:60px}.ticket-front strong{font-size:32px;max-width:90%}.ticket-turn{margin-top:25px}.ending h2{font-size:80px}.ending{min-height:570px}.ending-flower{font-size:50px}footer{font-size:9px;padding-bottom:125px;gap:20px}footer p{order:4;width:100%}.music-player{bottom:12px;right:12px;left:12px;max-width:none;padding:10px;gap:7px}.music-cover{width:30px;height:30px;border-width:2px}.song-info{flex:1;min-width:0}.song-info strong{font-size:13px;max-width:145px}.song-info span{font-size:7px}.music-player #music-seek{display:none}.track-step{width:20px}.playlist-toggle{width:23px}.music-player #volume-toggle{width:20px;font-size:18px}.play-button{width:33px;height:33px}.music-player.reading-compact{left:auto}.us-dialog{padding:40px 25px}.us-dialog h3{font-size:34px}.us-dialog p:not(.eyebrow){font-size:17px}.web-doodle{width:65px;height:65px}}
@media(max-width:370px){.hero-sign{top:290px;font-size:12px}.hero-collage{min-height:405px}.hero-main img{height:270px}.hero-small img{height:155px}.hero-copy h1{font-size:65px}.music-cover{display:none}.song-info strong{max-width:125px}.section h2{font-size:40px}.our-dates div>span{font-size:19px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}.ink-heart path{stroke-dashoffset:0}.hero-main{transform:rotate(6deg)}.hero-small{transform:rotate(-10deg)}}
@media(max-width:700px){.hero-sign{position:static;text-align:left;max-width:none;margin:23px 0 0;display:flex;align-items:baseline;gap:14px}.hero-sign span{margin:0}}

@media(hover:hover) and (pointer:fine){
 .chapter-card:hover{transform:perspective(800px) translateY(-7px) rotateX(3deg) rotateY(-5deg)}
 .memory-card:hover{transform:perspective(900px) translateY(-7px) rotateY(4deg) rotateX(2deg)}
 .future-ticket:hover{transform:perspective(900px) translateY(-5px) rotateY(-4deg)}
}
@media(max-width:700px){.chapter-art img{height:350px}.chapter-art:after{inset:9px}.chapter-art{transform:perspective(1000px) rotateY(var(--ry,0deg))}}
@media(prefers-reduced-motion:reduce){.chapter-art,.chapter-card:hover,.memory-card:hover,.future-ticket:hover{transform:none}}
.ending{background:radial-gradient(ellipse at 50% 90%,#46302e 0%,#291f1e 48%,#151412 100%);color:#f3e8da;padding-top:95px;padding-bottom:120px;isolation:isolate}
.ending:before{content:'';position:absolute;width:460px;height:460px;border:1px solid #a98f6c66;border-radius:50%;right:-235px;top:145px;box-shadow:inset 0 0 0 24px #211a1700;z-index:-1;pointer-events:none}
.ending:after{content:'';position:absolute;width:410px;height:410px;border:1px solid #a98f6c25;border-radius:50%;right:-210px;top:170px;z-index:-1;pointer-events:none}
.ending h2{font-size:clamp(65px,7.7vw,115px);line-height:1.05}.ending h2 em{color:#d6a0af}.ending .eyebrow{color:#eed7b3}.ending-flower{color:#d5b75e}.ending>p:not(.eyebrow){color:#dfc7b4;font-size:22px;line-height:1.8;margin:36px auto 45px}.ending .button{background:transparent;border:1px solid #a97482;color:#efd4db;min-width:255px;justify-content:space-between;padding:23px 28px;transition:background .3s,transform .3s}.ending .button:hover{background:#7a485633;transform:translateY(-3px)}.ending #last-note{color:#deb0bc}.ending-doodle{position:absolute;fill:none;stroke:#c4a17c;stroke-width:1;opacity:.6;pointer-events:none}.ending-heart{left:4%;bottom:135px;width:68px;height:68px}.ending-star{right:8%;top:55px;width:46px;height:46px}.ending-label{position:absolute;right:28px;bottom:115px;transform:rotate(90deg);font:italic 24px var(--serif);color:#bb9479;opacity:.65;pointer-events:none}
footer{background:#141413;color:#d9c2a2;border-top-color:#503e3566}
@media(max-width:700px){.ending{padding-top:75px;padding-bottom:105px}.ending h2{font-size:clamp(62px,10vw,85px)}.ending>p:not(.eyebrow){font-size:19px;margin:30px auto 38px}.ending:before{width:340px;height:340px;right:-240px;top:150px}.ending:after{width:300px;height:300px;right:-220px;top:170px}.ending-heart{width:45px;height:45px;left:20px;bottom:35px}.ending-star{right:23px;top:30px;width:28px;height:28px}.ending-label{right:8px;bottom:62px;font-size:18px}.ending .button{min-width:240px;padding:20px 25px}}
