@import "https://fonts.googleapis.com/css2?family=Caveat:wght@400;600&family=Cormorant+Garamond:ital,wght@0,300;0,400;0,600;1,300;1,400&family=Space+Mono:wght@400;700&display=swap";:root{color:#1f2333;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#4368ee;font-family:Space Grotesk,system-ui,sans-serif;font-weight:400;line-height:1.5}*{box-sizing:border-box}html{scrollbar-gutter:stable}body{min-width:320px;margin:0}button,input,textarea,select{font:inherit}img{max-width:100%}#root,.page-shell{min-height:100vh}.page-shell-locked{position:relative;overflow:hidden}.page-shell-locked>:not(.passcode-overlay){filter:blur(16px);pointer-events:none;-webkit-user-select:none;user-select:none}.passcode-overlay{z-index:20;background:#0003;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.passcode-card{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);color:#fffaf3;background:#0a08148c;border:1px solid #ffffff24;border-radius:18px;padding:18px 20px;box-shadow:0 18px 44px #00000080,0 0 0 1px #a078ff14}.passcode-form{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.passcode-label{color:#ffffffd1;letter-spacing:.04em;text-transform:lowercase;font-family:Space Mono,monospace;font-size:.82rem}.passcode-input{color:#fffaf3;background:#ffffff1a;border:1px solid #ffffff38;border-radius:10px;outline:none;width:min(180px,48vw);padding:8px 12px;transition:border-color .18s,box-shadow .18s,background .18s}.passcode-input:focus{background:#ffffff29;border-color:#ffffff94;box-shadow:0 0 0 3px #ffffff1f}.passcode-error{color:#ffd8d8;flex-basis:100%;margin:2px 0 0;font-size:.8rem}.page{background:#000;flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:48px 24px 96px;display:flex;position:relative;overflow:hidden}.dream-background,.dream-gradient{position:absolute;inset:0}.dream-background{pointer-events:none}.dream-gradient{background:radial-gradient(at 15% 10%,#7850ff2e,#0000 30%),radial-gradient(at 78% 8%,#ff8cb41f,#0000 28%),radial-gradient(at 50% 60%,#2814508c,#0000 55%),radial-gradient(at 90% 75%,#5028a01a,#0000 30%)}.dream-star{background:#fff;border-radius:999px;animation:4.5s ease-in-out infinite twinkle;position:absolute;box-shadow:0 0 3px 1px #ffffffbf,0 0 8px 2px #c8d2ff4d}.dream-star-default{background:#fff;box-shadow:0 0 3px 1px #ffffffbf,0 0 8px 2px #c8d2ff4d}.dream-star-cool{background:#d0e8ff;box-shadow:0 0 3px 1px #b4d2ffcc,0 0 10px 2px #82b4ff66}.dream-star-warm{background:#fff5d0;box-shadow:0 0 3px 1px #fff0b4cc,0 0 9px 2px #ffd2644d}.dream-star-bright{animation-name:twinkle-bright}.dream-star-faint{animation-name:twinkle-faint}.milky-way{filter:blur(28px);pointer-events:none;opacity:.6;background:linear-gradient(118deg,#0000 10%,#b4beff0f 30%,#c8d2ff17 50%,#b4beff0f 70%,#0000 88%);position:absolute;inset:0}.shooting-star{pointer-events:none;opacity:0;background:linear-gradient(90deg,#fff0 0%,#ffffffe6 100%);border-radius:999px;width:120px;height:1.5px;position:absolute}.shooting-star-1{animation:10s ease-in-out 2s infinite shoot;top:12%;left:15%;transform:rotate(-18deg)}.shooting-star-2{animation:13s ease-in-out 7s infinite shoot;top:22%;left:55%;transform:rotate(-14deg)}.dream-cloud{width:220px;height:80px;box-shadow:none;filter:blur(18px);opacity:1;background:radial-gradient(#a078ff12,#0000 70%);border-radius:999px;position:absolute}.dream-cloud-left{bottom:30%;left:5%;transform:scale(.5)}.dream-cloud-right{bottom:33%;right:6%;transform:scale(.4)}.shelf-heading,.shelf-intro,.shelf{z-index:1;position:relative}.shelf-heading{text-align:center;flex-direction:column;align-items:center;gap:10px;margin-bottom:22px;display:flex}.heading-super{letter-spacing:.08em;color:#ffffffa6;margin:0;font-family:Cormorant Garamond,serif;font-size:clamp(1rem,2.5vw,1.3rem);font-style:italic;font-weight:300}.heading-main{letter-spacing:-.02em;color:#fffaf3;text-transform:none;margin:0;font-family:Cormorant Garamond,serif;font-size:clamp(3rem,8.5vw,6rem);font-style:italic;font-weight:300;line-height:1}.heading-note{color:#ffffffb8;letter-spacing:.02em;text-align:center;max-width:400px;margin:0;font-family:Cormorant Garamond,serif;font-size:clamp(.9rem,1.8vw,1.05rem);font-style:italic;font-weight:300;line-height:1.5}.shelf-intro{text-align:center;color:#ffffffd6;max-width:560px;margin-bottom:30px;font-size:.98rem}.music-notch{z-index:12;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);color:#fffaf3;background:#08061299;border:1px solid #ffffff1f;border-radius:999px;align-items:center;gap:10px;width:min(290px,100vw - 28px);padding:10px 12px;display:flex;position:fixed;top:18px;right:18px;box-shadow:0 12px 30px #00000080,0 0 0 1px #a078ff0f}.music-mini-cover{background:linear-gradient(145deg,#ffd19df0,#ff7a91db),#ffffff3d;border-radius:999px;flex:0 0 38px;width:38px;height:38px;position:relative;box-shadow:inset 0 0 0 1px #ffffff38,0 8px 16px #0b112629}.music-mini-cover-ring{background:radial-gradient(circle,#11182eeb 0 26%,#0000 27%),repeating-conic-gradient(#fffaf3eb 0deg 22deg,#fffaf36b 22deg 44deg);border-radius:999px;position:absolute;inset:11px}.music-notch-playing .music-mini-cover-ring{animation:2.8s linear infinite cassette-spin}.music-mini-copy{flex:1;min-width:0}.music-track-title{white-space:nowrap;text-overflow:ellipsis;margin:0;font-family:Cormorant Garamond,serif;font-size:.95rem;line-height:1.1;overflow:hidden}.music-track-meta{color:#ffffffb8;white-space:nowrap;text-overflow:ellipsis;margin:2px 0 0;font-size:.72rem;overflow:hidden}.music-mini-button{color:#fffaf3;cursor:pointer;font:inherit;background:#ffffff14;border:1px solid #ffffff38;border-radius:999px;flex:none;align-items:center;gap:6px;padding:7px 10px;font-size:.72rem;transition:transform .18s,background .18s,border-color .18s;display:inline-flex}.music-mini-button:hover,.music-mini-button:focus-visible{background:#ffffff24;border-color:#ffffff61;transform:translateY(-1px)}.music-mini-button:focus-visible{outline-offset:2px;outline:2px solid #ffffffeb}.music-mini-button:disabled{opacity:.5;cursor:not-allowed;transform:none}.music-mini-pulse{background:#ffffffa6;border-radius:999px;width:7px;height:7px}.music-mini-pulse-playing{background:#9dffb5;box-shadow:0 0 10px #9dffb5b3}.shelf{width:min(1280px,100%)}.books-row{scrollbar-width:none;justify-content:center;align-items:flex-end;gap:2px;padding:48px 16px 0;display:flex;position:relative;overflow-x:auto}.books-row::-webkit-scrollbar{display:none}.shelf-ledge{background:linear-gradient(#1a1a2a 0%,#0a0a12 100%);border-radius:0 0 4px 4px;height:10px;box-shadow:0 18px 40px #000000b3,inset 0 2px 2px #ffffff0a}.shelf-shadow{background:radial-gradient(at top,#00000057,#0000 70%);height:40px}.book-wrapper{flex:none;align-items:flex-end;display:flex;position:relative}.book-wrapper-selected{z-index:4}.book-spine{cursor:pointer;transform-origin:bottom;border:0;border-radius:3px 4px 1px 1px;flex-direction:column;justify-content:flex-start;align-items:center;padding:10px 4px 12px;transition:transform .22s,box-shadow .22s,filter .22s;display:flex;position:relative;overflow:hidden;box-shadow:inset 1px 0 #ffffff0f,inset -1px 0 #00000038}.book-spine:hover,.book-spine:focus-visible,.book-wrapper-selected .book-spine{transform:translateY(-14px)scale(1.025);box-shadow:inset 1px 0 #ffffff1f,inset -1px 0 #00000047,0 14px 28px #0e132b6b}.book-spine:focus-visible{outline-offset:3px;outline:2px solid #fffffff2}.noise-overlay{mix-blend-mode:screen;opacity:.42;pointer-events:none;background:radial-gradient(circle at 12% 18%,#ffffff42,#0000 18%),radial-gradient(circle at 88% 32%,#ffffff29,#0000 16%),radial-gradient(circle at 36% 84%,#ffffff21,#0000 14%),repeating-radial-gradient(circle,#ffffff0f 0 1px,#0000 1px 4px);position:absolute;inset:0}.spine-stars,.spine-title,.spine-author{z-index:1;position:relative}.spine-stars{letter-spacing:.18em;color:var(--book-accent);margin-bottom:8px;font-size:.36rem}.spine-title{writing-mode:vertical-rl;text-transform:uppercase;letter-spacing:.08em;text-align:center;flex:1;justify-content:center;align-items:center;font-size:.7rem;font-weight:700;display:flex}.spine-author{writing-mode:vertical-rl;letter-spacing:.14em;opacity:.72;text-transform:uppercase;font-size:.48rem}.book-glow{pointer-events:none;background:radial-gradient(circle,#fffffff2,#0000 70%);width:18px;height:18px;position:absolute;inset:auto auto 18% 50%;transform:translate(-50%)}.memory-overlay{z-index:30;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#000000a6;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.memory-overlay-card{border-radius:24px;width:min(980px,100%);max-height:min(90vh,860px);position:relative;overflow:auto;box-shadow:0 26px 60px #090c1e73}.memory-close{z-index:3;color:#fff;cursor:pointer;background:#2c2329e6;border:0;border-radius:999px;width:42px;height:42px;margin:14px 14px -44px auto;font-size:1.8rem;line-height:1;position:sticky;top:14px;left:calc(100% - 62px)}.scrapbook{background:linear-gradient(135deg,#ffffff75,#0000 40%),repeating-linear-gradient(0deg,#8a5c7a08 0 2px,#0000 2px 36px),#f8f0e5;border:1px solid #8861611f;padding:56px}.scrapbook-header{text-align:center;margin-bottom:30px}.scrapbook-kicker,.scrapbook-date{text-transform:uppercase;letter-spacing:.18em;color:#8d5d70;margin:0;font-family:Space Mono,monospace;font-size:.72rem}.scrapbook-header h2{color:#412432;margin:10px 0;font-family:Cormorant Garamond,serif;font-size:clamp(2.2rem,5vw,3.8rem)}.scrapbook-location{color:#8b5e71;margin:12px 0 0;font-family:Caveat,cursive;font-size:1.55rem}.scrapbook-grid{grid-template-columns:minmax(0,1.8fr) minmax(280px,1fr);align-items:start;gap:28px;display:grid}.scrapbook-grid-photos-only{grid-template-columns:1fr}.scrapbook-photos{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px;display:grid}.photo-card{transform:rotate(var(--photo-rotation));background:#fffaf5;margin:0;padding:14px 14px 34px;position:relative;box-shadow:0 10px 24px #4d2b3a1f,inset 0 0 0 1px #5f3f4d0f}.photo-card img{aspect-ratio:4/3;object-fit:cover;background:#f2e5de;width:100%;display:block}.photo-tape{background:#f9e9b7b3;border:1px solid #ab914d2e;width:76px;height:22px;position:absolute;top:-8px;left:50%;transform:translate(-50%)rotate(-2deg)}.scrapbook-note{background:linear-gradient(#ffffff9e,#0000 38%),#fffdf8;border:1px solid #5f3f4d1a;padding:28px 24px;position:relative;box-shadow:0 12px 26px #4d2b3a14}.scrapbook-note p{color:#5f3f4d;margin:0;font-family:Caveat,cursive;font-size:1.7rem;line-height:1.35}.email-link-btn{cursor:pointer;opacity:.75;background:0 0;border:none;margin-top:14px;font-size:1.4rem;text-decoration:none;transition:opacity .15s,transform .15s;display:inline-block}.email-link-btn:hover{opacity:1;transform:scale(1.2)}.note-pin{background:#d56c7a;border-radius:999px;width:18px;height:18px;position:absolute;top:10px;right:22px;box-shadow:inset -3px -3px #00000014}.scrapbook-stickers{flex-wrap:wrap;gap:10px;margin-top:22px;display:flex}.scrapbook-sticker{background:#fff4c6;border-radius:14px;justify-content:center;align-items:center;width:40px;height:40px;font-size:1.2rem;display:inline-flex;box-shadow:0 8px 16px #4d2b3a1a}@keyframes twinkle{0%,to{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1.15)}}@keyframes twinkle-bright{0%,to{opacity:.2;transform:scale(.75)}40%{opacity:1;transform:scale(1.35)}60%{opacity:.85;transform:scale(1.2)}}@keyframes twinkle-faint{0%,to{opacity:.15;transform:scale(.9)}50%{opacity:.55;transform:scale(1.05)}}@keyframes shoot{0%{opacity:0;transform:rotate(-18deg)translate(0)scaleX(.3)}3%{opacity:1;transform:rotate(-18deg)translate(60px)scaleX(1)}10%{opacity:0;transform:rotate(-18deg)translate(280px)scaleX(.5)}to{opacity:0;transform:rotate(-18deg)translate(280px)scaleX(.5)}}@keyframes cassette-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (width<=900px){.scrapbook{padding:52px 24px 28px}.scrapbook-grid{grid-template-columns:1fr}}@media (width<=640px){.page{padding:36px 14px 72px}.heading-note,.shelf-intro{font-size:.92rem}.books-row{justify-content:flex-start;padding-inline:6px}.memory-overlay{padding:10px}.memory-overlay-card{max-height:94vh}.scrapbook{padding:48px 16px 20px}.scrapbook-note p{font-size:1.45rem}.music-notch{width:min(260px,100vw - 28px);padding:9px 10px;top:14px;right:14px}}.sticker{z-index:10;position:fixed}.sticker-body{background:#fffdf8;border-radius:18px;justify-content:center;align-items:center;padding:10px 12px;display:flex;position:relative;box-shadow:0 4px 16px #00000059,0 1px 3px #0000002e,inset 0 1px #ffffffe6}.sticker-coffee{bottom:30px;left:24px;transform:rotate(-9deg)}.spill-puddle{pointer-events:none;background:radial-gradient(#7b4520 0%,#4e2a0e 55%,#0000 100%);border-radius:999px;width:52px;height:22px;animation:.55s cubic-bezier(.22,1,.36,1) forwards spill-spread;position:absolute;bottom:-6px;left:50%;transform:translate(-50%)}.spill-cup{z-index:1;cursor:pointer;transform-origin:bottom;background:0 0;border:none;padding:0;font-size:1.9rem;line-height:1;transition:transform .3s cubic-bezier(.34,1.56,.64,1);position:relative}.spill-cup:not(.spill-cup-tipped):hover{transform:rotate(-10deg)scale(1.12)}.spill-cup-tipped{cursor:default;transform:rotate(-112deg)translate(-8px)}@keyframes spill-spread{0%{opacity:.8;width:6px;height:4px}65%{opacity:1;width:62px;height:26px}to{opacity:.88;width:54px;height:22px}}.sticker-stairs{cursor:pointer;bottom:30px;right:24px;transform:rotate(7deg)}.sticker-stairs:not(.stairs-broken):hover .sticker-body{box-shadow:0 6px 20px #0006,0 1px 3px #0003,inset 0 1px #ffffffe6}.stair-step{transform-box:fill-box;transform-origin:50%}.stairs-broken .stair-s1{animation:.55s cubic-bezier(.55,0,1,.45) forwards stair-break-1}.stairs-broken .stair-s2{animation:.55s cubic-bezier(.55,0,1,.45) 40ms forwards stair-break-2}.stairs-broken .stair-s3{animation:.5s cubic-bezier(.55,0,1,.45) 80ms forwards stair-break-3}.stairs-broken .stair-s4{animation:.48s cubic-bezier(.55,0,1,.45) .12s forwards stair-break-4}@keyframes stair-break-1{to{opacity:0;transform:translate(-22px,18px)rotate(-38deg)}}@keyframes stair-break-2{to{opacity:0;transform:translate(8px,28px)rotate(22deg)}}@keyframes stair-break-3{to{opacity:0;transform:translate(18px,-12px)rotate(55deg)}}@keyframes stair-break-4{to{opacity:0;transform:translate(-10px,-24px)rotate(-70deg)}}
