:root{--paper:#f4faff;--ice:#e5f4ff;--blue:#a8d8f0;--accent:#71b7dc;--ink:#243642;--deep:#315a72;--cream:#fff8ed;--pink:#f5c8cf;--muted:#526b7a;--serif:Georgia,'Times New Roman',serif;--sans:'Segoe UI',Arial,sans-serif;--hand:'Segoe Print','Bradley Hand',cursive}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.7 var(--sans);overflow-wrap:anywhere}button,a,summary{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}button,a,summary{touch-action:manipulation}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #315a72;outline-offset:5px}button{border:0}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-weight:400}h1,h2{font-family:var(--serif);line-height:1.08;letter-spacing:-.055em}h2{font-size:clamp(2.6rem,4.8vw,4.7rem)}h2 em,h1 em{font-weight:400;color:var(--deep)}p{color:var(--muted)}h3{font-family:var(--serif);font-size:1.45rem;line-height:1.3}img{display:block;max-width:100%;height:auto}.wrap{width:min(1180px,calc(100% - 100px));margin-inline:auto}.section{padding:110px 0}.eyebrow{font-size:.75rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--deep);margin-bottom:26px}.center{text-align:center}.section-title{margin-bottom:60px}.section-title>p:last-child{margin-top:23px}.handwritten{font-family:var(--hand);font-size:1.3rem;color:var(--deep)}.tiny{font-size:.75rem;letter-spacing:.13em}.personal-note{white-space:pre-line;margin:24px 0}.site-header{position:fixed;z-index:20;left:0;top:0;width:100%;display:flex;align-items:center;justify-content:space-between;padding:18px 4%;background:#f4faffed;border-bottom:1px solid #315a7215;backdrop-filter:blur(12px);gap:20px}.brand{font-family:var(--serif);font-style:italic;font-size:1.25rem;white-space:nowrap}.brand span{margin-left:8px}.site-header nav{display:flex;gap:26px}.site-header nav a{font-size:.85rem;padding:7px 0;border-bottom:1px solid transparent}.site-header nav a[aria-current]{border-color:var(--deep);font-weight:600}.menu-toggle{display:none;background:none;padding:10px}.skip{position:fixed;top:-100px;left:15px;background:white;padding:12px;z-index:100}.skip:focus{top:10px}.hero{position:relative;min-height:850px;min-height:100svh;background:radial-gradient(ellipse at 85% 55%,#cbe8f8 0,transparent 50%),linear-gradient(120deg,#f6fbff,#e7f4fb);overflow:hidden;padding:145px 0 80px;display:flex;align-items:center}.hero-inner{display:grid;grid-template-columns:1.1fr 1fr;align-items:center;gap:55px;position:relative;z-index:1}.hero h1{font-size:clamp(4rem,7.2vw,7rem);line-height:.99}.her-name{font-size:.66em;letter-spacing:-.035em;display:inline-block;margin-top:14px}.heading-star{position:absolute;font-size:.5em;transform:translate(15px,-15px);color:#6c9db6}.hero-subtitle{max-width:360px;margin:28px 0;font-size:1.05rem}.button{display:inline-flex;align-items:center;justify-content:center;gap:27px;border-radius:5px;background:var(--deep);color:white;padding:15px 23px;min-height:52px;font-size:.9rem;box-shadow:0 6px 14px #315a7212;transition:background .2s,transform .2s}.button:hover{background:#214459;transform:translateY(-2px)}.hero-date{font-size:.8rem;margin-top:30px;display:flex;align-items:center;gap:12px}.date-rule{height:1px;width:28px;background:#7194a8}.hero-art{position:relative;padding:35px 20px 20px;max-width:480px;width:100%;justify-self:end}.polaroid{padding:14px 14px 0;background:#fffefa;box-shadow:0 12px 32px #27475815;border:1px solid #315a720e}.polaroid figcaption{padding:15px 5px 18px;text-align:center;font-family:var(--hand);font-size:1rem;color:var(--deep)}.hero-frame{position:relative;transform:rotate(5deg);z-index:2}.hero-frame:before,.final-frame:before{content:'';position:absolute;top:-15px;left:35%;width:110px;height:34px;background:#e5d8bb96;transform:rotate(-8deg);z-index:3}.photo-placeholder{background:linear-gradient(150deg,#d3e9f6,#b9d9e9 55%,#dfedf1);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px;color:var(--deep);padding:20px;text-align:center;min-height:100px}.photo-placeholder>span:first-child{font-size:3.5rem;color:#5f8da5;font-family:var(--serif)}.photo-placeholder>span:nth-child(2){font-size:.8rem;letter-spacing:.1em}.photo-placeholder small{font-size:.75rem}.frame-back{position:absolute;inset:30px 10px 25px;background:#edf6f9;border:1px solid #b0cbd9;transform:rotate(-6deg)}.hero-note{position:absolute;z-index:4;top:-23px;right:12px;font-size:1.12rem;line-height:1.5;transform:rotate(8deg)}.round-note{position:absolute;left:-30px;bottom:8px;z-index:3;width:112px;height:112px;border-radius:50%;background:var(--cream);border:1px dashed #a18b68;text-align:center;line-height:1.25;padding-top:18px;font-size:.7rem;letter-spacing:.1em;transform:rotate(-12deg);color:#665746}.round-note b{font-size:1.5rem;font-weight:400}.small-star{position:absolute;right:-24px;bottom:70px;font-size:3rem;color:#5f8da5}.scroll-cue{position:absolute;bottom:22px;left:50%;transform:translateX(-50%);text-align:center;font-size:.75rem;letter-spacing:.04em;white-space:nowrap}.scroll-cue span{display:block;font-size:1.25rem}.hero-orbit{position:absolute;width:700px;height:700px;right:-200px;top:10%;border:1px solid #fff9;border-radius:50%;animation:drift 14s ease-in-out infinite alternate}.ribbon{display:flex;justify-content:space-around;align-items:center;gap:30px;padding:19px 30px;white-space:nowrap;overflow:hidden;background:#d8edf7;color:var(--deep);font:italic 1.1rem var(--serif)}.letter-section{background:#fcfcf8}.letter-layout{display:grid;grid-template-columns:1fr 1.15fr;gap:80px;align-items:center}.section-intro>p:not(.eyebrow){margin-top:25px}.marginal-note{display:block;transform:rotate(-5deg);margin-top:38px;font-size:1.05rem}.stationery{position:relative;background:#fffef9;padding:55px 45px;box-shadow:0 12px 40px #344b6110;border:1px solid #e6e6dd;transform:rotate(1deg);min-height:420px}.stamp{position:absolute;right:22px;top:20px;border:1px dashed #8eaabd;padding:5px 10px;color:#6f91a7;text-align:center;font-size:1.6rem;line-height:1.5;transform:rotate(8deg)}.stamp small{display:block;font: .6rem var(--sans);letter-spacing:.1em}.salutation{padding-top:25px;font-size:1.4rem}.letter-text{white-space:pre-line;line-height:2.2;margin:30px 0 45px;background:repeating-linear-gradient(transparent,transparent calc(2.2em - 1px),#315a7212 calc(2.2em - 1px),#315a7212 2.2em);min-height:90px}.closing{line-height:2}.interests-section{background:var(--paper)}.interest-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}.interest-card{text-align:center;padding:30px 18px 25px;border:1px solid #bfd7e360;border-radius:14px;background:#fff9}.interest-card:nth-child(3n+2){background:#e8f3f9}.interest-card:nth-child(3n){background:#fff9f0}.interest-icon{display:block;font-size:2rem;min-height:60px;filter:saturate(.65)}.interest-card p{font-size:.85rem;margin-top:12px}.cookie-section{background:var(--cream)}.cookie-layout{display:grid;grid-template-columns:1fr 1fr;gap:85px;align-items:center}.cookie-collage{height:540px;position:relative}.cookie-photo{position:absolute;width:57%}.cookie-photo-0{top:45px;left:0;transform:rotate(-9deg)}.cookie-photo-1{top:165px;right:0;transform:rotate(7deg)}.cookie-photo .photo-placeholder{background:linear-gradient(145deg,#eee4d5,#e1d0b8)}.cookie-label{position:absolute;z-index:4;top:0;right:10px;background:#f5ead8;border:1px solid #988367;border-radius:50%;padding:23px 20px;text-align:center;color:#70563e;font-size:.7rem;transform:rotate(10deg)}.cookie-label strong{display:block;font:italic 1.8rem var(--serif)}.cookie-label>span{letter-spacing:.15em;font-size:.6rem}.cookie-copy>p:not(.eyebrow){margin-top:25px}.cookie-copy .handwritten{display:block;margin-top:26px;color:#786149;font-size:1.1rem}.cookie-secret{position:absolute;left:30px;bottom:8px;font-size:2.2rem;background:transparent;transform:rotate(-15deg);padding:10px}.cookie-secret:hover{transform:rotate(12deg)}.secret-message{position:absolute;bottom:-35px;left:0;font-size:.9rem;max-width:85%}.achievement-section{background:#f9fcff}.milestones{max-width:760px;margin:auto;padding:0;list-style:none}.milestones li{display:grid;grid-template-columns:100px 1fr;gap:38px;position:relative;padding-bottom:42px}.milestones li:not(:last-child):before{content:'';position:absolute;left:49px;top:78px;bottom:6px;border-left:1px dashed #9cbacc}.milestone-mark{display:grid;place-items:center;width:100px;height:78px;border:1px solid #b2cedf;border-radius:50%;font:2.2rem var(--serif);background:#e9f4fb;color:var(--deep)}.milestones h3{margin:4px 0 8px;font-size:1.7rem}.milestones p{max-width:550px}.milestones .tiny{color:#5a7688}.achievement-note{margin-top:10px;font-size:1.15rem}.gallery-section{background:#e4f1f8}.gallery-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:55px}.gallery-heading>.handwritten{transform:rotate(6deg);margin-right:70px}.gallery{columns:3;column-gap:28px}.gallery-frame{break-inside:avoid;margin-bottom:30px;transform:rotate(-2deg)}.gallery-frame.frame-1{transform:rotate(2deg)}.gallery-frame.frame-2{transform:rotate(-1deg)}.gallery-frame:nth-child(2n) .photo-placeholder{background:linear-gradient(145deg,#d5e5e8,#b7cfdf)}.photo-button{display:block;background:none;width:100%;padding:0}.photo-button:hover{opacity:.9}.cinema-section{background:#f9fbfd}.film-strip{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:20px;border-top:24px solid #c1d8e6;border-bottom:24px solid #c1d8e6;padding:25px 24px;background:#e4eff7}.film-strip:before,.film-strip:after{content:'';position:absolute;left:8px;right:8px;height:10px;background:repeating-linear-gradient(90deg,#f9fbfd 0 15px,transparent 15px 30px);top:-17px}.film-strip:after{top:auto;bottom:-17px}.film-card{background:#f8fbfd;border:1px solid #c8dae5;padding:23px;text-align:center;min-height:250px;display:flex;flex-direction:column;justify-content:space-between}.film-symbol{display:block;font:3.5rem var(--serif);color:#7198b0}.film-card h3{font-size:1.1rem}.film-card .tiny{font-size:.65rem}.reasons-section{background:#edf6fb}.reasons-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:18px;align-items:start}.reason{border:1px solid #c6dce8;border-radius:8px;background:#fffdf8;overflow:hidden}.reason:nth-child(3n){background:#e1eef6}.reason summary{cursor:pointer;list-style:none;text-align:center;padding:25px 12px 18px;min-height:150px}.reason summary::-webkit-details-marker{display:none}.reason-number{display:block;font:2.7rem var(--serif);color:#587e96}.reason-prompt{font-size:.7rem;letter-spacing:.04em;display:block;margin-top:16px}.reason-prompt span{margin-left:5px}.reason[open]{box-shadow:0 6px 18px #315a7210}.reason[open] summary{border-bottom:1px dashed #bed4e0;min-height:100px}.reason[open] .reason-number{font-size:2rem}.reason p{text-align:center;font-size:.9rem;padding:20px 12px;white-space:pre-line}.future-section{background:radial-gradient(ellipse at 50% 100%,#c9e5f5,transparent 70%),#eef8ff;position:relative;text-align:center}.future-inner{max-width:740px}.future-inner h2{font-size:clamp(3.7rem,7vw,6.4rem)}.future-star{font-size:3rem;color:#698fa5;display:block;margin-bottom:20px}.future-lead{font:1.4rem/1.8 var(--serif);margin:35px 0 25px;color:var(--deep)}.future-inner .handwritten{display:block;margin-top:35px}.wish-section{background:#fdfbf6}.wish-layout{display:grid;grid-template-columns:.75fr 1.25fr;gap:100px;align-items:center}.final-frame{position:relative;transform:rotate(-5deg)}.wish-layout h2{font-size:clamp(2.6rem,4.5vw,4.3rem)}.signature{font-size:1.1rem;margin:25px 0}.surprise-message{margin-top:25px;max-width:560px}.surprise-message p+p{font-family:var(--serif);margin-top:15px;font-size:1.2rem}footer{display:flex;justify-content:space-between;gap:25px;padding-top:28px;padding-bottom:28px;font-size:.8rem}footer a{padding:5px}#countdown{margin-top:24px;font-size:.85rem}#countdown .time-grid{display:flex;gap:22px}#countdown strong{display:block;font:1.8rem var(--serif);color:var(--deep)}dialog{border:0;border-radius:10px;background:#f4faff;color:var(--ink);padding:18px;width:min(1100px,95vw);max-height:95dvh}dialog::backdrop{background:#102b40cf;backdrop-filter:blur(5px)}.lightbox-bar{display:flex;align-items:center;justify-content:space-between;gap:20px}.lightbox-bar button,.lightbox-content>button{background:#dfedf6;border-radius:6px;min-width:48px;min-height:48px;padding:10px}.lightbox-content{display:grid;grid-template-columns:48px minmax(0,1fr) 48px;align-items:center;gap:15px;margin-top:14px}.lightbox-content img{max-height:72dvh;width:auto;margin:auto;object-fit:contain}.lightbox-content figcaption{text-align:center;margin-top:10px}.confetti{position:fixed;top:-20px;width:8px;height:13px;pointer-events:none;z-index:100;animation:fall 3.2s ease-in forwards}.enhanced #surprise{display:inline-flex}body:not(.enhanced) #surprise{display:none}@keyframes fall{to{transform:translate(var(--dx),105vh) rotate(650deg);opacity:0}}@keyframes drift{to{transform:translate(-35px,25px) scale(1.06)}}
@media(min-width:1500px){.hero{min-height:900px}}@media(max-width:1000px){.wrap{width:calc(100% - 60px)}.site-header nav{gap:16px}.hero-inner{gap:25px}.hero-art{padding:35px 15px 20px;max-width:370px}.round-note{left:-5px}.letter-layout,.cookie-layout{gap:45px}.cookie-collage{height:470px}.reasons-grid{grid-template-columns:repeat(5,1fr);gap:12px}.wish-layout{gap:60px}.interest-grid{gap:14px}.hero .eyebrow{max-width:290px}.hero h1{font-size:5.5rem}.her-name{font-size:.55em}}
@media(max-width:760px){html{scroll-padding-top:82px}.wrap{width:calc(100% - 40px)}.section{padding:76px 0}.site-header{padding:12px 20px;flex-wrap:wrap;gap:0}.brand{font-size:1.1rem}.enhanced .menu-toggle{display:block}.site-header nav{width:100%;justify-content:space-between;gap:5px;flex-wrap:wrap}.enhanced .site-header nav{display:none;padding:18px 0 8px}.enhanced .site-header nav.open{display:flex}.site-header nav a{font-size:.8rem;padding:10px 8px}.hero{padding-top:125px;padding-bottom:90px;min-height:auto}.hero-inner{grid-template-columns:1fr;gap:60px}.hero h1{font-size:clamp(4.5rem,15vw,6.8rem)}.hero-copy{padding:0 10px}.hero .eyebrow{font-size:.67rem;max-width:none}.hero-subtitle{font-size:1rem;max-width:100%}.hero-art{width:80%;max-width:370px;margin:0 auto;justify-self:center}.hero-note{right:-10px}.hero-date{flex-wrap:wrap;font-size:.75rem}.round-note{left:-32px;width:96px;height:96px;padding-top:10px}.scroll-cue{bottom:16px}.ribbon{justify-content:flex-start;gap:24px;font-size:1rem;padding:16px 20px}.letter-layout,.cookie-layout,.wish-layout{grid-template-columns:1fr;gap:50px}.stationery{padding:45px 27px;min-height:370px}.marginal-note{margin-top:22px}.interest-grid{grid-template-columns:repeat(2,1fr)}.interest-card{padding:23px 12px}.interest-card h3{font-size:1.25rem}.interest-card p{font-size:.8rem}.section-title{margin-bottom:38px}.cookie-copy{grid-row:1}.cookie-collage{max-width:440px;width:100%;height:510px;margin:auto}.cookie-photo-1{top:145px}.cookie-secret{bottom:0}.milestones li{grid-template-columns:70px 1fr;gap:20px;padding-bottom:34px}.milestone-mark{width:70px;height:64px;font-size:1.7rem}.milestones li:not(:last-child):before{left:34px;top:68px}.milestones h3{font-size:1.4rem}.milestones p{font-size:.95rem}.gallery{columns:2;column-gap:18px}.gallery-frame{padding:8px 8px 0;margin-bottom:20px}.gallery-frame figcaption{font-size:.78rem;padding:11px 2px}.gallery-heading{align-items:end;gap:20px}.gallery-heading>.handwritten{font-size:.9rem;margin:0}.gallery .photo-placeholder{padding:10px}.gallery .photo-placeholder>span:nth-child(2){font-size:.65rem;letter-spacing:0}.gallery .photo-placeholder small{font-size:.65rem}.film-strip{gap:12px;padding:20px 14px;grid-template-columns:1fr}.film-card{min-height:185px;padding:20px}.film-symbol{font-size:2.8rem}.reasons-grid{grid-template-columns:repeat(2,1fr);gap:15px}.reason summary{min-height:140px}.future-lead{font-size:1.2rem}.final-frame{max-width:300px;width:80%;justify-self:center}.wish-layout{gap:60px}.wish-layout>div{text-align:center}.wish-layout .eyebrow{font-size:.68rem}footer{flex-direction:column;text-align:center;gap:10px}.lightbox-content{gap:8px;grid-template-columns:44px minmax(0,1fr) 44px}.lightbox-content>button{min-width:44px;padding:5px}dialog{padding:12px}.lightbox-content img{max-height:66dvh}.eyebrow{font-size:.7rem}body:not(.enhanced) .hero{padding-top:180px}}
@media(max-width:370px){.hero h1{font-size:4.2rem}.hero-copy{padding:0}.gallery{columns:1}.cookie-collage{height:430px}.button{gap:16px;padding:14px 18px}.hero-date{font-size:.7rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.confetti{display:none}}
/* Revision: quiet copy, tactile interactions. */
[hidden]{display:none!important}
p:empty,figcaption:empty{display:none}
.section{padding-block:88px}
.letter-seal{display:none}
.enhanced .letter-seal{display:flex;align-items:center;justify-content:center;gap:12px;min-height:52px;background:var(--deep);color:white;border-radius:50px;padding:12px 24px;position:relative;z-index:2;margin:0 auto;transition:transform .3s,background .3s}
.enhanced .letter-seal:hover{transform:rotate(-4deg) scale(1.04)}
.enhanced .stationery:not(.unsealed){display:grid;place-items:center;min-height:310px;background:linear-gradient(155deg,#fffdf7,#edf5fa)}
.enhanced .stationery:not(.unsealed) #letter-body{display:none}
.enhanced .stationery.unsealed .letter-seal{margin:0 0 10px auto;padding:8px 18px;font-size:.875rem}
.letter-text{min-height:0}
.hero-frame,.gallery-frame,.interest-card{transition:transform .3s ease,box-shadow .3s ease}
.tilting{transform:perspective(900px) rotateX(var(--tilt-x)) rotateY(var(--tilt-y));box-shadow:0 20px 42px #27475820}
.reason summary{transition:background .25s}
.reason summary:hover{background:#dceef780}
.reason[open] .reason-number{color:var(--deep)}
.reason-prompt{font-size:1.1rem;margin-top:8px}
.hero .her-name{font-size:.56em;line-height:1.15}
.scroll-cue{font-size:1.3rem}
.interest-card p{font-size:.95rem}
@media(max-width:760px){.section{padding-block:64px}.hero-inner{gap:42px}.hero-art{width:76%}.hero-note{font-size:1rem}.hero h1{font-size:clamp(4rem,14vw,5.8rem)}.letter-layout{gap:30px}.stationery{min-height:300px}.interest-card p{font-size:.9rem}}
@media(prefers-reduced-motion:reduce){.tilting{transform:none!important}}
.birthday-keepsake{position:relative;display:flex;align-items:center;flex-direction:column;justify-content:center;min-height:530px;padding:35px;background:linear-gradient(145deg,#fffdf7,#f4faff);border:1px solid #c8dce7;box-shadow:0 20px 50px #315a7214;transform:rotate(4deg);transition:transform .3s,box-shadow .3s}
.keepsake-month{text-transform:uppercase;font-size:1rem;letter-spacing:.3em;color:var(--deep)}
.keepsake-day{font:clamp(8rem,14vw,13rem)/1.15 var(--serif);letter-spacing:-.07em;color:var(--deep);padding-right:.07em}
.keepsake-year{letter-spacing:.45em;font-size:.85rem;color:var(--muted)}
.wish-star{margin:26px 0 18px;background:#e4f1f8;border:1px solid #b4d2e2;color:var(--deep);border-radius:50%;width:58px;height:58px;font-size:1.7rem;transition:background .2s}
.wish-star:hover{background:#cbe5f3}
.birthday-keepsake .handwritten{font-size:1rem;text-align:center}
.love-spark{position:fixed;pointer-events:none;z-index:100;font-size:1.3rem;color:#507d97}
.cookie-collage.no-photos{height:280px;display:grid;place-items:center;border:1px dashed #cbb899;border-radius:18px}
.no-photos .cookie-label{position:static;transform:rotate(-7deg);padding:35px 30px;font-size:.8rem}
.no-photos .cookie-label strong{font-size:2.5rem}
.no-photos .cookie-secret{left:auto;right:20px;bottom:5px}
.no-photos .secret-message{position:static;max-width:90%;text-align:center;font-size:.85rem;min-height:1.7em}
.wish-layout.no-photo{display:block;text-align:center;max-width:800px}
.wish-layout.no-photo .surprise-message{margin-inline:auto}
.hero-art{padding-top:20px}
@media(max-width:760px){.birthday-keepsake{min-height:350px;padding:28px 18px}.keepsake-day{font-size:7.5rem}.keepsake-month{font-size:.8rem}.birthday-keepsake .handwritten{font-size:.85rem}.wish-star{margin:15px 0}.hero-art{width:80%}.cookie-collage.no-photos{height:300px}.no-photos .cookie-label strong{font-size:2.1rem}}
/* Final review: reserve room for the cookie message and strengthen touch states. */
.cookie-collage.no-photos{height:auto;min-height:320px;padding:32px 24px 18px;grid-template-rows:auto auto auto;gap:16px}
.no-photos .cookie-secret{position:static;grid-row:2;padding:4px 12px;min-width:48px;min-height:48px}
.no-photos .secret-message{grid-row:3;min-height:3.4em;line-height:1.5}
.birthday-keepsake.tilting{transform:perspective(900px) rotateX(var(--tilt-x)) rotateY(var(--tilt-y))}
body:not(.enhanced) .wish-star,body:not(.enhanced) .cookie-secret{display:none}
.reason summary:active{background:#cbe5f3}
.reason[open] summary{background:#e3f1f8}
.letter-seal:focus-visible,.wish-star:focus-visible{outline-offset:6px}
@media(max-width:760px){.salutation{font-size:1.15rem}.milestones li{padding-bottom:28px}.milestones h3{font-size:1.3rem}}
/* Real photographs retain their complete original frame. */
.polaroid picture{display:block}
.polaroid img{width:100%;height:auto;object-fit:contain}
.gallery-frame{padding-bottom:14px}
.gallery-frame:has(figcaption){padding-bottom:0}
.photo-love{position:absolute;z-index:4;bottom:-10px;left:-4px;box-shadow:0 5px 15px #315a7220}
.video-frame{width:min(100%,380px);margin:auto;padding:12px;background:#fffdf8;border:1px solid #c8dae5;box-shadow:0 14px 38px #315a7218;border-radius:10px}
.video-frame video{display:block;width:100%;height:auto;max-height:75svh;object-fit:contain;background:#152632;border-radius:4px}
.video-frame figcaption{text-align:center;padding:12px 0 0;font-family:var(--hand)}
.video-frame+.film-strip{margin-top:40px}
@media(max-width:760px){.gallery-frame{padding-bottom:8px}.photo-love{left:-20px;bottom:-14px}.video-frame{width:min(100%,340px)}}
/* Gallery follows the same left-to-right order visually and with the keyboard. */
.gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:30px;columns:auto;align-items:start}
.gallery-frame{margin:0;position:relative}
.photo-button{cursor:zoom-in;border-radius:2px}
.photo-button:focus-visible{outline-offset:5px}
.gallery-frame:focus-within{transform:rotate(0deg);box-shadow:0 16px 34px #315a7228}
.lightbox-content figure{min-height:200px;display:grid;place-items:center;align-content:center}
#photo-status{padding:24px;text-align:center}
html:has(#lightbox[open]){overflow:hidden}
@media(max-width:760px){.gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 18px}}
@media(max-width:370px){.gallery{grid-template-columns:1fr}}
/* Photo navigation: preserve pinch zoom and reduce persistent decorative movement. */
#large-photo{touch-action:pan-y pinch-zoom}
.hero-orbit{animation-iteration-count:2}
.lightbox-content>button:hover,.lightbox-bar button:hover{background:#c7e2f2}
.lightbox-content>button:active{transform:scale(.94)}
@media(prefers-reduced-motion:reduce){.lightbox-content>button:active{transform:none}}
/* Final polish: a more compact phone opening, stable viewer, and intentional focus. */
section[tabindex="-1"]:focus,main[tabindex="-1"]:focus{outline:none}
#retry-photo{background:var(--deep);color:white;border-radius:6px;padding:12px 22px;min-height:48px;margin:12px auto}
#large-photo{max-width:100%;height:auto}
.lightbox-content figure{min-height:min(65dvh,680px)}
.letter-layout{align-items:start}
.section-intro{padding-top:36px}
.reason summary:focus-visible{outline-offset:-5px;border-radius:8px}
@media(max-width:760px){
  .hero{padding-top:105px;padding-bottom:70px}
  .hero-inner{gap:26px}
  .hero h1{font-size:clamp(3.3rem,12vw,4.2rem)}
  .hero-subtitle{margin:18px 0;font-size:.95rem;max-width:30ch}
  .hero-date{margin-top:18px}
  .hero-art{max-width:260px;width:76%;padding-top:14px}
  .hero .eyebrow{margin-bottom:20px}
  .section-intro{padding-top:0}
  .lightbox-content{grid-template-columns:44px minmax(0,1fr) 44px}
  .lightbox-content figure{min-height:55dvh}
}
