/* Different keepsake pens share one nib anchor; all text keeps its final layout. */
[data-ink]{position:relative}
.ink-accessible{position:absolute!important;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.ink-visual{position:relative}
.ink-word{display:inline-block;max-width:100%;overflow-wrap:anywhere;vertical-align:baseline}
.ink-pen{--ink-spark:#d1a34b;--ink-glow:#efd6a563;position:absolute;left:0;top:0;width:46px;height:68px;z-index:8;pointer-events:none;opacity:0;transition:opacity .2s;filter:drop-shadow(2px 3px 2px #6651322a);will-change:transform}
.ink-pen>svg{width:100%;height:100%;overflow:visible;display:block}
.ink-pen[data-pen-style=feather-quill]{--ink-spark:#cba698;--ink-glow:#f2d8d37a;filter:drop-shadow(1px 2px 2px #90736338)}
.ink-pen[data-pen-style=rose-dip]{--ink-spark:#cc8b8d;--ink-glow:#f8c1d075}
.ink-pen[data-pen-style=midnight-fountain]{--ink-spark:#91a9d4;--ink-glow:#b6cff775}
.ink-pen[data-pen-style=crystal-dip]{--ink-spark:#83bdcc;--ink-glow:#bceefb85;filter:drop-shadow(1px 2px 2px #5e90a547)}
.is-writing>.ink-pen{opacity:1}
.ink-pen:before{content:'';position:absolute;left:-8px;top:54px;width:22px;height:22px;border-radius:50%;background:radial-gradient(circle,#fffef2 0 12%,#ffe6a6b8 25%,var(--ink-glow) 46%,transparent 73%);filter:drop-shadow(0 0 5px #f7d8988c);animation:nib-glow 1.15s ease-in-out infinite alternate}
.ink-pen:after{content:'';position:absolute;left:-2px;top:60px;width:10px;height:10px;background:#fffdf0;clip-path:polygon(50% 0,62% 37%,100% 50%,62% 63%,50% 100%,38% 63%,0 50%,38% 37%);filter:drop-shadow(0 0 3px #f5c46b);animation:nib-flare 1.8s ease-in-out infinite}
.ink-pen i{position:absolute;left:1px;top:63px;width:4px;height:4px;opacity:0;background:#e6b458;filter:drop-shadow(0 0 1.5px #fff1b7);clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%);animation:nib-spark 1.35s ease-out infinite;--spark-x:-17px;--spark-y:-23px}
.ink-pen i:nth-of-type(2){animation-delay:-.19s;animation-duration:1.5s;--spark-x:8px;--spark-y:-25px;background:#fff7d9}
.ink-pen i:nth-of-type(3){animation-delay:-.41s;animation-duration:1.22s;--spark-x:-25px;--spark-y:-9px;width:3px;height:3px;background:var(--ink-spark)}
.ink-pen i:nth-of-type(4){animation-delay:-.63s;animation-duration:1.6s;--spark-x:-11px;--spark-y:-31px;width:5px;height:5px;background:#fffdf0}
.ink-pen i:nth-of-type(5){animation-delay:-.87s;--spark-x:-29px;--spark-y:-17px;width:3px;height:3px;clip-path:none;border-radius:50%;background:#f3ca83}
.ink-pen i:nth-of-type(6){animation-delay:-1.05s;animation-duration:1.48s;--spark-x:-8px;--spark-y:8px;width:3px;height:3px;clip-path:none;border-radius:50%;background:#fff9e8}
.ink-pen i:nth-of-type(7){animation-delay:-1.23s;animation-duration:1.75s;--spark-x:4px;--spark-y:-16px;width:3px;height:3px;background:#e3b85e}
.ink-pen:before,.ink-pen:after,.ink-pen i{animation-play-state:paused}
.is-writing>.ink-pen:before,.is-writing>.ink-pen:after,.is-writing>.ink-pen i{animation-play-state:running}
.apology-note:has([data-ink]){transform:none}
.apology-body[data-ink]{font-family:var(--hand);font-size:clamp(28px,2.6vw,34px);line-height:1.38;font-weight:600}
.closing-message[data-ink]{font-family:var(--hand);font-size:clamp(26px,2.6vw,33px);line-height:1.4;font-weight:600}
.almost-said{--chapter-quiet:#fff2f6;position:relative;isolation:isolate;overflow:hidden;padding:76px 32px 90px;background:radial-gradient(ellipse at 50% 35%,#fff9fb,transparent 70%),var(--chapter-quiet)}
.almost-said-inner{position:relative;z-index:2;max-width:670px;margin:auto;text-align:center}
.almost-said .eyebrow{color:#965264;margin-bottom:24px}
.almost-said h2{font-size:clamp(38px,4.6vw,62px);margin-bottom:38px}
.almost-line{font-family:var(--hand);font-size:clamp(28px,3vw,39px);font-weight:500;line-height:1.42;margin:0 auto 23px;text-wrap:pretty}
.almost-line:last-child{font-size:clamp(34px,4.1vw,52px);color:#a85770;margin-top:34px;margin-bottom:0}
.almost-line .ink-pen{filter:drop-shadow(2px 4px 3px #92607730)}
.seam-to-quiet{--chapter-from:var(--chapter-memories);--chapter-to:#fff2f6}
.seam-to-love{--chapter-from:#fff2f6}
.memory-reel[hidden]+.seam-to-quiet{--chapter-from:var(--chapter-promises)}
@keyframes nib-spark{0%{opacity:0;transform:translate(0,0) scale(.35)}16%{opacity:.96}58%{opacity:.55}100%{opacity:0;transform:translate(var(--spark-x),var(--spark-y)) scale(.2) rotate(80deg)}}
@keyframes nib-glow{from{opacity:.65;transform:scale(.84)}to{opacity:1;transform:scale(1.09)}}
@keyframes nib-flare{0%,100%{opacity:.65;transform:scale(.75) rotate(-7deg)}50%{opacity:1;transform:scale(1.12) rotate(12deg)}}
@media(max-width:740px){.almost-said{padding:62px 37px 72px}.almost-said h2{font-size:39px}.almost-line{font-size:29px;line-height:1.35}.almost-line:last-child{font-size:36px}.apology-body[data-ink]{font-size:29px}}
@media(prefers-reduced-motion:reduce){.ink-pen{display:none}.ink-pen:before,.ink-pen:after,.ink-pen i{animation:none!important}.ink-word{clip-path:none!important}}
