@font-face{font-family:Caveat;src:url('assets/fonts/caveat.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:Caveat;src:url('assets/fonts/caveat-bold.ttf') format('truetype');font-weight:700;font-display:swap}
@font-face{font-family:'Patrick Hand';src:url('assets/fonts/patrick-hand.ttf') format('truetype');font-weight:400;font-display:swap}
:root{color-scheme:light;--brown:#583d30;--ink:#543c30;--pink:#edbac5;--blue:#c1d8e4;--cream:#faf1df;--hand:'Patrick Hand','Comic Sans MS',cursive;--script:Caveat,'Comic Sans MS',cursive}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;color:var(--ink);background-color:#876953;background-image:repeating-linear-gradient(90deg,transparent 0 3px,#3f221809 3px 4px),repeating-linear-gradient(0deg,transparent 0 3px,#fff2d40b 3px 4px);font:1.5rem/1.5 var(--hand);}
[hidden]{display:none!important}
button,input{font:inherit;color:inherit}
button,a,summary{-webkit-tap-highlight-color:transparent}
button,summary{cursor:pointer}
a{color:inherit;text-underline-offset:4px}
button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible{outline:3px solid #296585;outline-offset:5px}
button{touch-action:manipulation}
.gate{min-height:100svh;display:grid;place-items:center;padding:70px 30px}
.book-cover{position:relative;width:min(620px,100%);min-height:680px;padding:75px 58px 62px;border-radius:4px 15px 15px 4px;background-color:#e4b6bd;background-image:linear-gradient(90deg,#744c3555 0,transparent 3%,#95634e30 4%,transparent 7%),repeating-linear-gradient(90deg,transparent 0 26px,#ffffff20 26px 52px),repeating-linear-gradient(0deg,transparent 0 26px,#ffffff20 26px 52px);box-shadow:15px 18px 0 -7px #f1e4ce,19px 22px 0 -7px #644734,22px 28px 40px #30201555;transform:rotate(-2deg);border-left:16px solid #7d5b4c}
.cover-date{position:absolute;right:28px;top:22px;font:1.1rem var(--script);transform:rotate(3deg)}
.cover-label{position:relative;background:var(--cream);padding:25px 20px 18px;box-shadow:1px 3px 5px #6d4b392b;text-align:center;transform:rotate(4deg);border:1px solid #baa791}
.cover-label:before,.tape{content:'';position:absolute;width:110px;height:33px;z-index:2;top:-16px;left:calc(50% - 55px);transform:rotate(-8deg);background-color:#b6cedacc;clip-path:polygon(0 4%,98% 0,100% 15%,97% 30%,100% 45%,98% 60%,100% 80%,97% 100%,0 96%,3% 80%,0 60%,3% 45%,0 20%);pointer-events:none}
.tiny-type{font:0.75rem/1.6 ui-monospace,monospace;letter-spacing:.08em}
.cover-label h1{font:7rem/.95 var(--script);margin:12px 0 0;font-weight:700}
.cover-label h1 span{display:inline-block;font-size:4rem;color:#b15669;margin-left:15px;transform:rotate(12deg)}
.from{font:2rem var(--script);margin:12px 0 0}
.sticker{object-fit:contain;filter:drop-shadow(3px 4px 1px #543b3030);pointer-events:none;user-select:none}
.cover-kitty{position:absolute;top:235px;right:-35px;transform:rotate(13deg);width:145px;height:auto}
#birthday-form{position:relative;margin:63px auto 0;max-width:360px;text-align:center;transform:rotate(2deg)}
#birthday-form label{font-size:1.3rem;display:block;margin-bottom:14px}
.code-row{display:flex;gap:12px;align-items:center;justify-content:center;flex-wrap:wrap}
#birthday-code{width:185px;min-width:0;height:55px;border:0;border-bottom:2px dashed #97705c;background:#fff8ebc9;border-radius:0;padding:6px 14px;letter-spacing:.3em;text-align:center;font:1.5rem ui-monospace,monospace}
.paper-button{border:1px solid #7694a5;background:#c2dbe8;padding:9px 17px;box-shadow:3px 4px 0 #a68875;transform:rotate(-4deg);font:1.6rem var(--script);white-space:nowrap;transition:transform .2s}
.paper-button:hover{transform:rotate(0) translateY(-3px)}
.code-hint{font:0.75rem ui-monospace,monospace;letter-spacing:.14em;margin:14px 0 0}
.personal-hint{display:block;font:1.15rem/1.4 var(--hand);letter-spacing:normal;margin-top:8px}
.code-error{font-size:1.1rem;color:#87354a;min-height:1.65em;margin:8px 0 0}
.cover-number{position:absolute;left:25px;bottom:12px;font:3rem var(--script);color:#7a5b49;transform:rotate(-13deg)}
.top-note{max-width:1120px;margin:0 auto;padding:22px 24px 16px;display:flex;justify-content:space-between;gap:16px;color:#fff0da;font:1.1rem var(--script)}
.top-note a{text-decoration:none}
.scrapbook{width:min(1100px,calc(100% - 64px));margin:0 auto;background-color:#f3e8d3;background-image:radial-gradient(#9d7c4620 .6px,transparent .6px),linear-gradient(90deg,transparent 0 35px,#c4a99630 35px 37px,transparent 37px);background-size:5px 5px,100% 100%;box-shadow:0 6px 30px #33231550;outline:none;position:relative;overflow:clip}
.inside-cover{position:relative;padding:75px 95px 80px;min-height:450px}
.date-label{display:inline-block;background:#c5dce6;padding:3px 16px;transform:rotate(-3deg);font:1rem var(--script)}
.inside-cover h1{font:700 clamp(3rem,6vw,5.7rem)/1.02 var(--script);margin:24px 0 0;position:relative;z-index:1;max-width:800px}
.birthday-number{color:#ac5b72;display:inline-block;transform:rotate(-8deg)}

.scroll-note{display:block;margin-top:40px;font:1.15rem var(--script);color:#796451}
.hello{position:absolute;right:75px;bottom:52px;transform:rotate(12deg)}
.spread{position:relative;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:16px;padding:40px 85px 110px;align-items:start}
.photo-place{position:relative;z-index:1;min-width:0}
.polaroid{margin:0;background:#fffdf6;padding:13px 13px 20px;box-shadow:3px 6px 10px #654c322c;transform:rotate(var(--tilt,0deg));transition:transform .25s;position:relative;border:1px solid #dacfc2}
.polaroid:focus-within,.polaroid:hover{z-index:3;transform:rotate(0deg) translateY(-4px)}
.photo-button{display:block;padding:0;border:0;background:#e9dfd0;width:100%;position:relative;cursor:zoom-in}
.photo-button img{display:block;width:100%;height:auto}
figcaption{font:1.55rem/1.12 var(--script);padding:17px 8px 0;text-align:center}
.photo-hint{position:absolute;right:8px;bottom:8px;padding:4px 8px;background:#fff9e8ed;box-shadow:1px 2px 3px #3f281728;font:1rem var(--script);transform:rotate(-2deg)}
.photo-index{position:absolute;left:-28px;bottom:5px;font:1.2rem var(--script);color:#876650;transform:rotate(-9deg)}
.tape-blue{background-color:#a9cbd9aa;background-image:repeating-linear-gradient(90deg,transparent 0 8px,#ffffff35 8px 10px)}
.tape-pink{background-color:#dc9fb1aa;transform:rotate(9deg)}
.tape-check{background-color:#c9b99ba8;background-image:repeating-linear-gradient(90deg,transparent 0 8px,#81695133 8px 16px),repeating-linear-gradient(0deg,transparent 0 8px,#81695133 8px 16px)}
.letter-page{position:relative;background:#fff9ec;padding:28px 30px 36px;box-shadow:2px 4px 7px #5d42221c;transform:rotate(2deg);font-size:1.55rem;line-height:1.52}
.ruled-paper{background-image:repeating-linear-gradient(transparent 0 36px,#9fb6ba48 36px 37px);background-position:0 26px}
.letter-page h2{font:700 3.5rem var(--script);margin:0 0 14px}
p{margin:0 0 20px}
p:last-child{margin-bottom:0}
.small-heart{position:absolute;bottom:2px;right:25px;color:#ac5b72;font:3rem var(--script)}
.first-photo{grid-column:1/6;max-width:345px;margin-top:15px}
.first-spread .letter-page{grid-column:7/13;margin-top:55px}
.woody{position:absolute;right:16px;bottom:4px;height:200px;width:auto;transform:rotate(11deg);z-index:2}
.note{position:relative;font-size:1.6rem;line-height:1.45;padding:25px 26px}
.blue-note{background:#cbdfe5;box-shadow:2px 5px 4px #72553821;transform:rotate(-3deg);border-radius:1px 5px 2px 1px}
.pink-note{background:#efc0c8;box-shadow:2px 5px 5px #72553824;transform:rotate(3deg)}
.second-spread{row-gap:40px;padding-top:70px}
.glasses-photo{grid-column:1/6;grid-row:1/3;max-width:350px}
.second-spread .blue-note{grid-column:7/13;grid-row:1;margin:0 -10px 0 0}
.ikea-photo{grid-column:8/13;grid-row:2/4;margin:35px 0 0 -35px}
.congratulations{grid-column:1/7;grid-row:3;padding:0 12px 0 0;transform:rotate(-2deg);margin-top:0}
.underlined{text-decoration:underline;text-decoration-color:#ba7684;text-decoration-thickness:2px;text-underline-offset:5px}
.jessie{position:absolute;right:25px;top:-60px;transform:rotate(10deg);width:130px;height:auto;z-index:2}
.balloon-spread{padding-top:65px;padding-bottom:105px;row-gap:55px}
.balloon-photo{grid-column:2/12}
.along-the-way{grid-column:1/8;grid-row:2;margin-top:0;padding:30px 33px;font:2.2rem/1.25 var(--script)}
.folded-note{background:#c4d9e5;box-shadow:3px 6px 7px #7156402e;transform:rotate(-5deg);position:relative;min-width:0}
.folded-note summary{padding:25px 28px;list-style:none;display:flex;gap:14px;justify-content:space-between;align-items:center;font:2rem var(--script);transition:background .2s,transform .2s;background:linear-gradient(135deg,transparent calc(100% - 32px),#a5c0cf 0)}
.folded-note summary::-webkit-details-marker{display:none}
.folded-note summary:hover{transform:translateY(-3px);background-color:#d3e3ea}
.fold-heart{font-size:2.6rem;line-height:1;color:#7a5760}
.folded-note p{padding:0 25px 25px;font:1.6rem/1.35 var(--script)}
.folded-note[open] summary{font-size:1.4rem}

.buzz{position:relative;grid-column:9/13;grid-row:2;align-self:center;justify-self:center;transform:rotate(12deg);z-index:2}
.together-spread{padding-top:55px;row-gap:65px}
.chanaya-photo{grid-column:1/6;grid-row:1;max-width:355px}
.thank-you{grid-column:7/13;grid-row:1;margin-top:40px;transform:rotate(-3deg)}
.side-comment{font-family:var(--script);color:#a8536d;white-space:normal}
.study-photo{grid-column:8/13;grid-row:2;max-width:310px;margin-top:15px}
.looking-forward{grid-column:1/7;grid-row:2;align-self:center;transform:rotate(2deg);font-size:1.45rem;padding:0 20px 0 0}
.photobooth-spread{row-gap:25px;padding-top:65px;padding-bottom:90px}
.birthday-wish{grid-column:1/7;grid-row:1;margin-top:70px;transform:rotate(-4deg);padding:30px 34px}
.signature{display:block;font:3rem var(--script)}
.photobooth-photo{grid-column:8/13;grid-row:1/3;margin-left:-15px}
.last-note{grid-column:2/6;grid-row:2;max-width:250px;margin-top:30px}
.last-kitty{position:absolute;bottom:10px;left:40px;transform:rotate(-10deg)}
.last-page{position:relative;padding:70px 60px 80px;text-align:center;border-top:2px dashed #b59a7e66;margin:20px 60px 0}
.last-page p{font:1.7rem/1.5 var(--script);margin:0 auto 25px;max-width:550px}
.last-page h2{font:700 clamp(2.8rem,5vw,4.5rem)/1.1 var(--script);color:#a5556b;margin:0 0 15px}
.back-to-top{display:block;font:1.1rem var(--script);margin-top:50px}



#photo-viewer{width:min(1000px,calc(100% - 36px));max-height:calc(100svh - 36px);padding:18px 24px 22px;border:0;background:#fff8e9;box-shadow:0 20px 80px #0005;color:var(--ink);overflow:auto}
#photo-viewer::backdrop{background:#241710da;backdrop-filter:blur(5px)}
.viewer-top{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:14px;font:1.2rem var(--script)}
.viewer-top button,.viewer-controls button{border:0;padding:6px 12px;background:transparent;font:1.3rem var(--script)}
#viewer-image{display:block;margin:0 auto;max-height:65svh;max-width:100%;width:auto;height:auto;object-fit:contain}
#viewer-caption{text-align:center;font:1.6rem/1.2 var(--script);margin:15px 0}
.viewer-controls{display:flex;justify-content:space-between}
.viewer-controls button{background:#c8dce6;min-width:110px}
.viewer-controls button:disabled{opacity:.35;cursor:default}
@media(min-width:1500px){.inside-cover{padding-top:95px}.gate{padding:80px 30px}}
@media(max-width:900px){.scrapbook{width:calc(100% - 40px)}.spread{padding-left:55px;padding-right:55px;gap:18px}.letter-page{padding:22px;font-size:1.35rem}.note{font-size:1.4rem}.first-spread{padding-bottom:85px}.inside-cover{padding:60px 60px 65px;min-height:400px}.hello{right:35px;bottom:30px;width:125px;height:auto}.woody{height:165px}.second-spread,.together-spread{row-gap:50px}.along-the-way{font:1.9rem/1.3 var(--script)}.buzz{width:140px}.folded-note summary{padding:22px 18px;font-size:1.8rem}.photobooth-spread{padding-bottom:110px}.birthday-wish{margin-top:30px}.last-kitty{width:110px;height:auto}.last-page{margin:10px 30px 0;padding:50px 20px 60px}}
@media(max-width:620px){body{font-size:1.2rem}.gate{padding:35px 22px}.book-cover{padding:70px 25px 45px;min-height:620px;border-left-width:10px}.cover-label h1{font-size:5.7rem}.cover-label h1 span{font-size:3rem}.cover-kitty{width:105px;right:-13px;top:227px}.tiny-type{font-size:.7rem}.cover-date{right:15px;font-size:1rem}#birthday-form{margin-top:70px}#birthday-form label{font-size:1.2rem}.code-row{gap:14px}#birthday-code{width:155px}.paper-button{padding:8px 12px;font-size:1.4rem}.top-note{padding:15px 18px;font-size:.95rem}.top-note span{display:none}.scrapbook{width:calc(100% - 22px);background-image:radial-gradient(#9d7c4620 .6px,transparent .6px);background-size:5px 5px}.inside-cover{padding:45px 30px 70px;min-height:390px}.inside-cover h1{font-size:3.8rem;max-width:350px}.hello{width:85px;right:25px;bottom:15px}.scroll-note{margin-top:28px}.spread{display:flex;flex-direction:column;padding:30px 40px 70px;gap:45px}.photo-place{width:88%;max-width:350px;margin:0!important;align-self:center}.polaroid{padding:10px 10px 16px}figcaption{font-size:1.4rem;padding:15px 4px 0}.letter-page{margin:0!important;width:100%;font-size:1.35rem;padding:25px}.first-spread .letter-page{margin-top:5px!important}.woody{bottom:0;right:5px;height:135px}.first-spread{padding-bottom:95px}.note{padding:24px;font-size:1.4rem;width:100%;margin:0!important}.second-spread{padding-top:50px;padding-bottom:75px}.glasses-photo{align-self:flex-start;width:85%}.second-spread .blue-note{width:95%;align-self:flex-end}.ikea-photo{align-self:flex-end;width:85%}.congratulations{padding:10px 0 0;font-size:1.5rem}.jessie{width:90px;top:-22px;right:8px}.balloon-spread{padding-left:25px;padding-right:25px;padding-bottom:90px}.balloon-photo{width:97%;max-width:none}.along-the-way{width:90%;font:1.85rem/1.35 var(--script);align-self:flex-start}.buzz{width:110px;height:auto;align-self:flex-end;margin-top:-20px}.chanaya-photo{align-self:flex-start;width:87%}.study-photo{align-self:flex-end;width:77%}.looking-forward{padding:10px 0;font-size:1.5rem}.photobooth-spread{padding-bottom:110px}.birthday-wish{width:95%}.photobooth-photo{align-self:flex-end;width:87%}.last-note{margin:0;align-self:center;width:75%}.last-kitty{bottom:-5px;left:18px;width:90px}.last-page{margin:0 25px;padding:60px 0 50px}.last-page p{font-size:1.5rem}.last-page h2{font-size:3.2rem}#photo-viewer{padding:12px 15px 18px}#viewer-caption{font-size:1.4rem}.photo-index{left:-24px}.photo-hint{font-size:.85rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}
@media print{body{background:white}.gate,.top-note,.back-to-top,.scroll-note,.photo-hint,dialog{display:none!important}.scrapbook{width:100%;box-shadow:none}.spread{break-inside:avoid}.inside-cover{min-height:0;padding:30px}.polaroid{transform:none}.folded-note{display:none}.last-page{break-inside:avoid}}
