:root{color:#f0ece4;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-optical-sizing:auto;--paper:#f2ede4;--muted:#9c9993;--ink:#080909;--wine:#a82642;--gutter:clamp(20px, 5vw, 76px);background:#080909;font-family:Georgia,Times New Roman,serif;font-weight:400}*{box-sizing:border-box}html{scroll-behavior:smooth;min-width:320px;scroll-padding-top:24px}body{background:var(--ink);min-width:320px;margin:0}button,a{font:inherit}button{color:inherit}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline-offset:4px;outline:2px solid #dcbca5}img,video{max-width:100%;display:block}.page-shell{width:100%;min-height:100vh}.pin-screen{background:radial-gradient(at 50% 46%,#6c24362e,#0000 49%),#080909;place-items:center;min-height:100svh;padding:88px 20px;animation:.9s cubic-bezier(.2,.7,.2,1) both page-arrive;display:grid;position:relative;overflow:hidden}.pin-screen--leaving{pointer-events:none;animation:.65s cubic-bezier(.6,0,.7,.2) both page-leave}.pin-brand{color:#e8dfd3;letter-spacing:-.035em;font-size:clamp(23px,4vw,40px);position:absolute;top:34px;left:50%;transform:translate(-50%)}.pin-panel{text-align:center;width:min(440px,100%);animation:.9s .12s both reveal-up}.pin-title{color:var(--paper);letter-spacing:-.085em;margin-bottom:12px;font-size:clamp(54px,10vw,88px);line-height:.9}.pin-panel>p:first-of-type{color:#bbb4aa;letter-spacing:.13em;text-transform:uppercase;margin:20px 0;font-size:13px}.pin-display{color:#766f69;justify-content:center;gap:27px;padding:15px 0 23px;font-size:25px;display:flex;position:relative}.pin-display:focus-within{outline-offset:5px;outline:1px solid #f1e9dd66}.pin-display input{opacity:0;cursor:text;border:0;width:100%;height:100%;padding:0;position:absolute;inset:0}.pin-display .filled{color:#d98691;animation:.28s ease-out both pin-heart}.keypad{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.keypad button{background:#f2ede40b;border:1px solid #f1e9dd21;border-radius:12px;min-height:58px;font-size:17px;transition:background .18s,transform .18s,border-color .18s}.keypad button:hover{background:#f2ede41c;border-color:#f1e9dd5c;transform:translateY(-2px)}.keypad button:active{transform:scale(.96)}.pin-error{color:#e69da7;min-height:18px;margin:13px 0 0;font-size:13px}.archive-page{background:radial-gradient(at 50% 8%,#6224321a,#0000 31%),#090a0a;min-height:100vh;overflow:clip}.page-enter{animation:.95s cubic-bezier(.2,.7,.2,1) both page-arrive}.heart-hero{isolation:isolate;grid-template-rows:auto 1fr;place-items:center;min-height:100svh;padding:90px 20px 54px;display:grid;position:relative;overflow:hidden}.heart-hero:before,.heart-hero:after{z-index:-1;content:"";pointer-events:none;border-radius:50%;position:absolute}.heart-hero:before{aspect-ratio:1;filter:blur(130px);opacity:.12;background:#672434;width:min(85vw,760px);animation:8s ease-in-out infinite alternate ambient-glow}.heart-hero:after{background:linear-gradient(#0000,#090a0a);border-radius:0;height:23%;inset:auto 0 0}.archive-nav{z-index:3;height:74px;padding:0 var(--gutter);justify-content:space-between;align-items:center;display:flex;position:absolute;inset:0 0 auto}.archive-nav nav{align-items:center;gap:clamp(20px,4vw,54px);display:flex}.archive-nav nav a{color:#b7b2aa;letter-spacing:.16em;font-family:Arial,sans-serif;font-size:10px;transition:color .18s}.archive-nav nav a:hover{color:var(--paper)}.nav-brand{color:#eadfd1;font-size:27px;font-style:italic}.heart-hero-title{z-index:-1;color:#e9e0d60b;letter-spacing:-.09em;white-space:nowrap;pointer-events:none;font-size:clamp(72px,19vw,260px);line-height:.8;animation:14s ease-in-out infinite alternate title-drift;position:absolute;top:14%;left:50%;transform:translate(-50%)}.heart-mosaic{width:min(960px,90vw,86svh);aspect-ratio:calc(var(--columns) / var(--rows));grid-row:1/-1;grid-template-columns:repeat(var(--columns), minmax(0, 1fr));grid-template-rows:repeat(var(--rows), minmax(0, 1fr));transform-origin:50%;filter:drop-shadow(0 26px 56px #89264033);align-self:center;gap:clamp(2px,.38vw,5px);animation:3.2s ease-in-out infinite heart-beat;display:grid;-webkit-mask-image:radial-gradient(#000 72%,#0000 100%);mask-image:radial-gradient(#000 72%,#0000 100%)}.scatter-field{z-index:2;pointer-events:none;position:absolute;inset:0;overflow:hidden}.scatter-item{top:var(--scatter-top,auto);right:var(--scatter-right,auto);bottom:var(--scatter-bottom,auto);left:var(--scatter-left,auto);width:clamp(36px, var(--scatter-width), 132px);object-fit:contain;filter:drop-shadow(0 12px 18px #00000057);transform-origin:50%;height:auto;animation:keepsake-float 5.2s ease-in-out var(--scatter-delay,0s) infinite;position:absolute}.heart-pixel{min-width:0;min-height:0;image-rendering:pixelated;animation:pixel-arrive .85s var(--tile-delay,0s) both;background:#1c1114;overflow:hidden}.heart-pixel img{object-fit:cover;width:100%;height:100%;image-rendering:pixelated;opacity:.85;filter:saturate(.79)brightness(.79);transition:filter .45s,opacity .45s,transform .9s}.heart-mosaic:hover .heart-pixel img{opacity:1;filter:saturate()brightness()}.scroll-cue{place-items:start center;width:32px;height:42px;display:grid;position:absolute;bottom:30px;left:50%;transform:translate(-50%)}.scroll-cue span{background:linear-gradient(#e9ddd0,#0000);width:1px;height:30px;animation:1.8s ease-in-out infinite scroll-pulse}.section-wrap{isolation:isolate;width:min(1220px, calc(100% - var(--gutter) * 2));margin:0 auto;padding:clamp(76px,12vw,160px) 0;position:relative}.section-wrap>:not(.scatter-field){z-index:1;position:relative}.section-heading{justify-content:space-between;align-items:baseline;gap:20px;margin-bottom:clamp(26px,4vw,56px);display:flex}.section-index{color:#a99c8b;letter-spacing:.18em;text-transform:uppercase;font-family:Arial,sans-serif;font-size:10px}.section-heading h1,.section-heading h2{color:var(--paper);letter-spacing:-.065em;margin:0;font-size:clamp(31px,6vw,70px);font-weight:400;line-height:.95}.birthday-art-grid{grid-template-columns:1.03fr .97fr;align-items:center;gap:clamp(17px,4vw,58px);display:grid}.birthday-art-card{background:#111;margin:0;overflow:hidden}.birthday-art-card img{object-fit:contain;width:100%;height:auto;max-height:78svh;transition:transform .8s cubic-bezier(.2,.7,.2,1)}.birthday-art-card:hover img{transform:scale(1.025)}.birthday-art-card--2{margin-top:15%}.eyes-feature{width:min(1420px, calc(100% - var(--gutter) * 2));isolation:isolate;background:#171214;align-items:flex-end;min-height:clamp(390px,64vw,760px);margin:0 auto;display:flex;position:relative;overflow:hidden}.eyes-feature:after{z-index:0;content:"";background:linear-gradient(#0000,#070707bd);position:absolute;inset:35% 0 0}.eyes-feature .scatter-field{z-index:2}.eyes-image{z-index:-1;object-fit:cover;object-position:center 40%;filter:saturate(.8)brightness(.82);width:100%;height:100%;transition:transform 1.2s cubic-bezier(.2,.7,.2,1),filter 1s;position:absolute;inset:0}.eyes-feature:hover .eyes-image{filter:saturate()brightness(.95);transform:scale(1.035)}.eyes-caption{z-index:3;padding:clamp(23px,5vw,66px);position:relative}.eyes-caption span{color:#eee1d1;letter-spacing:.2em;font-family:Arial,sans-serif;font-size:10px}.eyes-caption h2{color:#fffaf1;letter-spacing:-.085em;margin:10px 0 0;font-size:clamp(54px,11vw,125px);font-weight:400;line-height:.85}.film-grid{grid-template-columns:.84fr 1.16fr;align-items:start;gap:clamp(18px,5vw,68px);display:grid}.film-card{background:#111;margin:0;overflow:hidden}.film-card video{object-fit:cover;background:#121212;width:100%;height:clamp(270px,48vw,620px)}.film-card--1 video{height:clamp(250px,39vw,500px)}.film-card--2{margin-top:16%}.film-card figcaption{color:#aaa29b;letter-spacing:.04em;padding-top:12px;font-size:13px}.puzzle-section{flex-direction:column;align-items:center;display:flex}.puzzle-section .section-heading{width:100%}.puzzle-board{aspect-ratio:1;background:#1b1516;border:1px solid #ffffff29;grid-template-columns:repeat(3,1fr);gap:4px;width:min(440px,84vw);display:grid;position:relative;overflow:hidden}.puzzle-piece{cursor:pointer;background-color:#241719;background-size:300% 300%;border:1px solid #0b090947;min-width:0;min-height:0;padding:0;transition:transform .2s,filter .22s,box-shadow .22s}.puzzle-piece:hover{z-index:1;filter:brightness(1.15)}.puzzle-piece--selected{z-index:2;filter:brightness(1.25);transform:scale(.92);box-shadow:inset 0 0 0 3px #f4d0c4}.puzzle-board--solved .puzzle-piece{cursor:default}.puzzle-solved{color:#fff8f0;text-align:center;pointer-events:none;background:linear-gradient(#0000,#090808d1);padding:14px;font-size:20px;animation:.55s both reveal-up;position:absolute;inset:auto 0 0}.puzzle-controls{gap:14px;margin-top:18px;display:flex}.puzzle-controls button,.wish-button{color:#e8ddd0;background:0 0;border:1px solid #f5ede43b;border-radius:99px;min-height:43px;padding:0 20px;font-size:13px;transition:color .18s,border-color .18s,background .18s}.puzzle-controls button:hover,.wish-button:hover{color:#fff;background:#e8c6b514;border-color:#e8c6b5}.birthday-section{flex-direction:column;align-items:center;display:flex}.birthday-section .section-heading{width:100%}.cake-scene{flex-direction:column;justify-content:flex-end;align-items:center;width:min(620px,90vw);padding-top:36px;display:flex}.candles{z-index:1;grid-template-columns:repeat(20,minmax(0,1fr));place-items:end center;width:91%;height:68px;display:grid}.candle{transform-origin:bottom;width:clamp(7px,1.5vw,12px);height:clamp(32px,6vw,52px);animation:candle-sway 1.4s var(--candle-index) cubic-bezier(.45, 0, .55, 1) infinite alternate;background:repeating-linear-gradient(135deg,#f3d9bd 0 4px,#a84650 4px 8px);border-radius:4px 4px 1px 1px;padding:0;transition:opacity .45s,transform .45s;position:relative}.candle:before{content:"";background:#ffd285;border-radius:70% 30% 65% 35%;width:9px;height:14px;transition:opacity .3s,transform .3s;position:absolute;top:-13px;left:50%;transform:translate(-50%)rotate(45deg);box-shadow:0 0 15px 5px #ffad524d}.candle--out{opacity:.55;animation:none;transform:scaleY(.55)}.candle--out:before{opacity:0;transform:translate(-50%,8px)scale(.4)rotate(45deg)}.cake{background:radial-gradient(at 30% 5%,#fff4e0c2,#0000 24%),linear-gradient(170deg,#812a3c,#3e1723 73%);border-radius:50% 50% 10px 10px/24% 24% 10px 10px;width:100%;height:clamp(90px,17vw,155px);position:relative;overflow:hidden;box-shadow:0 26px 55px #701f2f36}.cake-icing{background:linear-gradient(90deg,#eab9ac,#f0d7c2 48%,#c47a7d);border-radius:50%;height:24%;position:absolute;inset:0 0 auto;box-shadow:0 9px 13px #1c0c0e3d}.wish-button{margin-top:25px}.letter-section{padding-bottom:125px}.letter-wrap{perspective:1100px;flex-direction:column;justify-content:flex-start;align-items:center;min-height:425px;padding-top:32px;display:flex;position:relative}.letter-wrap--open{min-height:0;padding-bottom:30px}.envelope{z-index:2;cursor:pointer;background:linear-gradient(150deg,#8b2639,#411822 78%);border:0;border-radius:4px 4px 13px 13px;width:min(430px,84vw);height:240px;transition:transform .7s cubic-bezier(.2,.7,.2,1);position:relative;overflow:hidden;box-shadow:0 24px 54px #00000059}.envelope-flap{clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top;background:linear-gradient(145deg,#a4374c,#702235);height:58%;transition:transform .65s cubic-bezier(.2,.7,.2,1);position:absolute;inset:0 0 auto}.envelope-seal{color:#eed8c6;background:#7d2539;border:1px solid #f8e5cf99;border-radius:50%;place-items:center;width:45px;height:45px;transition:opacity .22s;display:grid;position:absolute;top:55%;left:50%;transform:translate(-50%,-50%)}.envelope-hint{color:#f8eadbb8;letter-spacing:.18em;font-family:Arial,sans-serif;font-size:9px;position:absolute;bottom:13px;right:16px}.envelope--open{transform:translateY(30px)scale(.93)}.envelope--open .envelope-flap{transform:rotateX(180deg)}.envelope--open .envelope-seal{opacity:0}.letter-paper{z-index:1;color:#302322;opacity:0;pointer-events:none;background:#f1e9dd;border:1px solid #ffffff14;width:min(460px,87vw);padding:30px clamp(19px,5vw,40px);transition:opacity .5s,transform .7s cubic-bezier(.2,.7,.2,1);position:absolute;top:49px;transform:translateY(60px)scale(.9);box-shadow:0 30px 60px #0000004d}.letter-paper--open{z-index:3;opacity:1;pointer-events:auto;width:min(760px,100%);margin-top:-108px;padding:clamp(24px,5vw,48px);position:relative;top:auto;transform:none}.letter-paper p{margin:0 0 19px;font-size:clamp(14px,1.25vw,17px);line-height:1.8}.archive-footer{min-height:105px;padding:20px var(--gutter);color:#a8a098;border-top:1px solid #ffffff17;justify-content:space-between;align-items:center;gap:20px;font-size:12px;display:flex}.archive-footer strong{color:#e7ded2;font-size:14px;font-weight:400}.archive-footer a{border:1px solid #fff3;border-radius:50%;place-items:center;width:34px;height:34px;transition:transform .2s,border-color .2s;display:grid}.archive-footer a:hover{border-color:#e7ded2;transform:translateY(-3px)}.reveal{opacity:0;transition:opacity .75s cubic-bezier(.2,.7,.2,1),transform .85s cubic-bezier(.2,.7,.2,1);transform:translateY(38px)}.reveal.is-visible{opacity:1;transform:translateY(0)}.birthday-art-card:nth-child(2),.film-card--2{transition-delay:.12s}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}@keyframes page-arrive{0%{opacity:0;filter:blur(6px)}to{opacity:1;filter:blur()}}@keyframes page-leave{to{opacity:0;filter:blur(9px);transform:scale(1.025)}}@keyframes reveal-up{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}@keyframes pin-heart{0%{opacity:.3;transform:scale(.5)}to{opacity:1;transform:scale(1)}}@keyframes heart-beat{0%,15%,40%,68%,to{transform:scale(1)}8%,27%,48%{transform:scale(1.035)}}@keyframes pixel-arrive{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}@keyframes ambient-glow{0%{opacity:.1;transform:scale(.89)}to{opacity:.2;transform:scale(1.08)}}@keyframes title-drift{0%{letter-spacing:-.09em}to{letter-spacing:-.065em}}@keyframes scroll-pulse{0%,to{opacity:.35;transform-origin:top;transform:scaleY(.65)}50%{opacity:1;transform-origin:top;transform:scaleY(1)}}@keyframes candle-sway{0%{transform:rotate(-2deg)}to{transform:rotate(2deg)}}@keyframes keepsake-float{0%,to{transform:translateY(0) rotate(var(--scatter-angle))}50%{transform:translateY(-9px) rotate(calc(var(--scatter-angle) + 2deg))}}@media (width<=760px){.heart-hero{padding:76px 12px 44px}.heart-mosaic{gap:2px;width:min(104vw,78svh,960px)}.heart-hero-title{font-size:clamp(52px,15vw,116px);top:21%}.archive-nav{height:64px;padding-left:18px;padding-right:18px}.archive-nav nav{gap:clamp(12px,3vw,22px)}.archive-nav nav a{letter-spacing:.1em;font-size:9px}.birthday-art-grid{grid-template-columns:1fr;gap:17px}.birthday-art-card--2{justify-self:end;width:86%;margin-top:0}.eyes-feature{width:calc(100% - 28px);min-height:min(120vw,620px)}.eyes-image{object-position:52% center}.film-grid{grid-template-columns:1fr;gap:31px}.film-card--1{width:76%}.film-card--2{justify-self:end;width:88%;margin-top:0}.film-card video,.film-card--1 video{height:min(115vw,520px)}}@media (width<=480px){:root{--gutter:19px}.pin-brand{top:27px}.archive-nav nav a{letter-spacing:.08em;font-size:8px}.heart-hero-title{font-size:clamp(47px,15vw,72px);top:23%}.heart-mosaic{gap:1.5px;width:min(104vw,78svh,960px)}.section-heading{align-items:flex-start}.section-index{padding-top:7px;font-size:9px}.section-heading h1,.section-heading h2{text-align:right;font-size:clamp(32px,9vw,48px)}.eyes-feature{min-height:125vw}.eyes-caption h2{font-size:clamp(59px,17vw,84px)}.candles{width:94%;height:60px}.candle{width:7px;height:34px}.cake{height:92px}.archive-footer{flex-wrap:wrap;font-size:11px}.archive-footer strong{order:2;width:100%}.archive-footer a{order:1;margin-left:auto}}@media (height<=700px){.heart-hero{padding-top:70px;padding-bottom:40px}.heart-mosaic{width:min(85vw,76svh,960px)}}@media (height<=480px){.heart-hero{padding-top:64px;padding-bottom:32px}.heart-mosaic{width:min(85vw,68svh,960px)}.heart-hero-title{font-size:clamp(48px,11vw,82px);top:15%}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.reveal{opacity:1;transform:none}}
