.valentine-page{--ink: #3d3538;--ink-light: #5c5256;--paper: #f6f2ee;--paper-dark: #ebe5df;--accent: #a67a82;--font: Georgia, "Times New Roman", serif;--safe-top: env(safe-area-inset-top, 0);--safe-right: env(safe-area-inset-right, 0);--safe-bottom: env(safe-area-inset-bottom, 0);--safe-left: env(safe-area-inset-left, 0)}.valentine-page{min-height:100vh;min-height:100dvh;min-height:calc(100vh - var(--safe-top) - var(--safe-bottom));background:var(--paper);position:relative;padding:calc(1rem + var(--safe-top)) calc(1rem + var(--safe-right)) calc(1.5rem + var(--safe-bottom)) calc(1rem + var(--safe-left));overflow-x:hidden}.valentine-page.landing{background:var(--paper);display:flex;align-items:center;justify-content:center;padding:calc(1.5rem + var(--safe-top)) calc(1rem + var(--safe-right)) calc(2rem + var(--safe-bottom)) calc(1rem + var(--safe-left))}.hearts-bg-subtle .heart-float{opacity:.12;font-size:.85rem}.landing-inner{text-align:center;position:relative;z-index:1;max-width:380px}.landing-question{font-family:var(--font);font-size:1.35rem;font-weight:400;color:var(--ink);line-height:1.5;margin-bottom:2rem}.landing-buttons{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center;align-items:center}.landing-btn{font-family:var(--font);font-size:1rem;font-weight:400;padding:.75rem 1.5rem;min-height:2.75rem;min-width:4.5rem;border:1px solid var(--ink-light);border-radius:2px;cursor:pointer;background:#fff;color:var(--ink);transition:background .15s ease,color .15s ease;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.landing-btn-yes{background:var(--ink);color:var(--paper);border-color:var(--ink)}.landing-btn-yes:hover{background:var(--ink-light);border-color:var(--ink-light)}.landing-btn-no{background:transparent;color:var(--ink-light)}.landing-btn-no:hover{background:var(--paper-dark)}.hearts-bg{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:0}.heart-float{position:absolute;font-size:.9rem;opacity:.15;color:var(--accent);left:calc(var(--i) * 11%);top:calc((var(--i) * 14) % 100%)}.nyan-column{flex:1 1 260px;min-width:0;display:flex;align-items:center;justify-content:center}.hero{text-align:center;padding:.75rem 1rem 1rem;position:relative;z-index:1}.hero-title{font-family:var(--font);font-size:1.35rem;font-weight:400;color:var(--ink)}.hero-sub{font-size:.9rem;color:var(--ink-light);margin-top:.2rem}.section-hint{text-align:center;font-size:.85rem;color:var(--ink-light);margin-bottom:.5rem;position:relative;z-index:1}.letter-and-pics{display:flex;flex-wrap:wrap;flex-direction:row;gap:1.25rem;align-items:flex-start;justify-content:center;max-width:920px;margin:0 auto;position:relative;z-index:1;padding:0 .25rem}.letter-column{flex:1 1 260px;min-width:0;display:flex;flex-direction:column;align-items:center;margin-top:.25rem}.pics-column{flex:1 1 300px;min-width:0}.envelope{width:min(280px,100%);cursor:pointer;position:relative;transform:rotate(-.3deg);-webkit-tap-highlight-color:transparent;touch-action:manipulation;padding:.5rem 0;margin:-.5rem 0}.envelope-body{background:#faf6f2;border:1px solid #d4ccc4;border-radius:0 0 2px 2px;padding:1.25rem 1rem;min-height:160px;position:relative;border-top:none}.envelope-flap{position:relative;height:0;width:0;border-left:min(140px,50%) solid transparent;border-right:min(140px,50%) solid transparent;border-top:48px solid #e8e2dc;margin-left:50%;transform:translate(-50%);transition:transform .5s ease;z-index:2}.envelope-flap:before{content:"";position:absolute;top:-48px;left:-min(140px,50%);border-left:min(140px,50%) solid transparent;border-right:min(140px,50%) solid transparent;border-top:48px solid #e8e2dc;border-top-left-radius:2px;border-top-right-radius:2px}.envelope.open .envelope-flap{transform:translate(-50%) rotateX(-160deg)}.letter-tap{text-align:center;color:var(--ink-light);font-size:.95rem;padding:1.25rem .75rem}.letter-paper{position:relative;background:#fffdfb;border:1px solid #ddd6cf;border-radius:0;padding:1rem .9rem}.letter-text{font-family:var(--font);font-size:clamp(.9rem,2.5vw,1rem);line-height:1.65;color:var(--ink);font-style:italic;text-align:left}.letter-sign{margin-top:.75rem;text-align:right;font-size:.85rem;color:var(--ink-light)}.letter-paper:before{content:"♥";position:absolute;top:.35rem;right:.5rem;font-size:.8rem;color:var(--accent);opacity:.5}.gallery{display:grid;grid-template-columns:repeat(2,1fr);gap:.6rem .9rem}.gallery-item{position:relative;overflow:hidden;aspect-ratio:1;background:#fff;border:1px solid #d4ccc4;padding:3px;box-shadow:0 1px 3px #0000000f;cursor:pointer;transition:box-shadow .2s ease}.gallery-item:hover{box-shadow:0 4px 12px #00000026;z-index:2}.gallery-item:nth-child(5n+1){transform:rotate(-.8deg)}.gallery-item:nth-child(5n+2){transform:rotate(.6deg)}.gallery-item:nth-child(5n+3){transform:rotate(.3deg)}.gallery-item:nth-child(5n+4){transform:rotate(-.5deg)}.gallery-item:nth-child(5n){transform:rotate(.7deg)}.gallery-item img{width:100%;height:100%;object-fit:cover;display:block}.footer{text-align:center;padding:1.25rem 1rem;position:relative;z-index:1}.footer p{font-size:.9rem;color:var(--ink-light)}.image-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#000000bf;display:flex;align-items:center;justify-content:center;padding:1rem;cursor:pointer;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.image-modal img{display:block;max-width:90vw;max-height:90vh;object-fit:contain;border-radius:4px;box-shadow:0 8px 30px #0000004d}.nyan-cat-block{position:relative;width:100%;max-width:320px;margin:0 auto;aspect-ratio:16 / 9;min-height:140px;border-radius:8px;overflow:hidden;border:1px solid rgba(0,0,0,.08);box-shadow:0 2px 8px #0000000f}.nyan-cat-block.playing{cursor:pointer}.nyan-cat-bg{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:center;background-repeat:no-repeat}.nyan-cat-rainbow{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.nyan-cat-rainbow:before{content:"";position:absolute;top:0;left:0;bottom:0;width:200%;height:100%;background:repeating-linear-gradient(90deg,transparent 0,transparent 40%,rgba(255,0,0,.15) 40%,rgba(255,136,0,.15) 45%,rgba(255,255,0,.15) 50%,rgba(0,255,0,.15) 55%,rgba(0,255,255,.15) 60%,rgba(0,136,255,.15) 65%,rgba(136,0,255,.15) 70%,transparent 70%,transparent 100%);background-size:50% 100%;animation:nyan-rainbow-scroll 2s linear infinite;animation-play-state:paused}.nyan-cat-img{position:absolute;left:-5%;top:50%;transform:translateY(-50%);height:55%;width:auto;max-width:70%;object-fit:contain;animation:nyan-cat-bob .4s steps(2,start) infinite;animation-play-state:paused;filter:drop-shadow(0 2px 6px rgba(0,0,0,.15))}.nyan-cat-block.playing .nyan-cat-rainbow:before,.nyan-cat-block.playing .nyan-cat-img{animation-play-state:running}@keyframes nyan-rainbow-scroll{0%{transform:translate(0)}to{transform:translate(-50%)}}@keyframes nyan-cat-bob{0%{transform:translateY(-55%)}to{transform:translateY(-45%)}}.nyan-cat-button{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:10;font-family:var(--font, Georgia, "Times New Roman", serif);font-size:1.05rem;font-weight:400;padding:.75rem 1.5rem;border:1px solid var(--ink-light, #5c5256);border-radius:4px;cursor:pointer;background:#fff9;color:var(--ink, #3d3538);-webkit-tap-highlight-color:transparent;touch-action:manipulation;transition:all .2s ease;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}.nyan-cat-button:hover{background:#ffffffe6;border-color:var(--ink, #3d3538);box-shadow:0 4px 12px #0000001a}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:Georgia,Times New Roman,serif;min-height:100vh;overflow-x:hidden}#root{min-height:100vh}
