@import url('https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:wght@400;500;600;700&family=Fraunces:ital,opsz,wght@0,9..144,600;1,9..144,600&display=swap');
:root{--night:#21172e;--gold:#ffd381;--lilac:#ecdaf5;--paper:#fff3df;--serif:Fraunces,Georgia,serif;--sans:"Bricolage Grotesque",system-ui,sans-serif}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--night);color:var(--paper);font:500 1.1rem/1.6 var(--sans)}
a{color:inherit;text-underline-offset:.26em}
header{min-height:76px;padding:0 max(6vw,22px);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #f4d6ff29;gap:15px}
header a{text-decoration:none;font-size:.92rem}
header .brand{font:600 1.6rem var(--serif);color:var(--gold)}
.hero,.details,.treats{padding:clamp(60px,8vw,118px) max(7vw,24px);display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:clamp(28px,7vw,120px);position:relative}
.hero{isolation:isolate;overflow:hidden;min-height:min(740px,85vh);background:radial-gradient(ellipse at 78% 55%,#583563,transparent 54%),radial-gradient(ellipse at 1% 95%,#382448,transparent 70%)}
.eyebrow{text-transform:uppercase;font-size:.78rem;font-weight:700;letter-spacing:.21em;color:var(--gold);margin:0 0 20px}
h1,h2{font-family:var(--serif);font-weight:600;letter-spacing:-.058em;line-height:.94;margin:0}
h1{font-size:clamp(4.3rem,10.2vw,10rem)}
h2{font-size:clamp(3rem,6.7vw,7rem)}
em{color:var(--gold)}
.intro>p:not(.eyebrow),.treat-copy>p:not(.eyebrow){max-width:31ch;margin:26px 0}
.button{display:inline-flex;align-items:center;gap:22px;padding:13px 23px;border-radius:100px;border:1px solid transparent;background:var(--gold);color:#281a30;text-decoration:none;font:700 1rem/1.4 var(--sans);cursor:pointer;transition:background .2s,transform .2s}
.button:hover{background:#ffe5ae;transform:translateY(-3px)}
:focus-visible{outline:3px solid #ad72dd;outline-offset:5px}
.portrait{position:relative;width:min(100%,440px);margin:0 auto;isolation:isolate}
.arch{overflow:hidden;aspect-ratio: .84;border-radius:50% 50% 46% 46% / 42% 42% 34% 34%;border:2px solid var(--gold);box-shadow:0 0 0 8px #f6dca31d,0 20px 55px #11091da6;background:#60426b}
.arch img,.frames img,.snout img{width:100%;height:100%;object-fit:cover;display:block}
.arch img{object-position:50% 43%;animation:portrait 10s ease-in-out infinite alternate}
.orbit{position:absolute;inset:-5%;border:1px solid #ffd38177;border-radius:50%;transform:rotate(32deg);z-index:-1}
.portrait figcaption{position:absolute;right:-1%;bottom:3%;background:var(--paper);color:var(--night);font:italic 600 clamp(1rem,2.4vw,1.55rem) var(--serif);padding:12px 25px;transform:rotate(-8deg);box-shadow:0 4px 18px #21172e55}
.ribbon{text-align:center;background:var(--gold);color:var(--night);font-size:.73rem;letter-spacing:.18em;font-weight:700;padding:14px 16px}
.details{background:var(--paper);color:var(--night);scroll-margin-top:0}
.details .eyebrow{color:#744360}
.date p:not(.eyebrow){max-width:30ch}
.time{font-size:clamp(1.35rem,3vw,2.35rem);font-weight:700;margin:18px 0}
.calendar{display:inline-block;margin-top:8px;font-weight:700}
.frames{position:relative;display:flex;justify-content:center;align-items:center;padding:15px 10px}
.frames figure{width:48%;aspect-ratio:.75;margin:0;padding:8px 8px 24px;background:#fffaf1;box-shadow:0 14px 36px #5a3a3e31;transform:rotate(-11deg);transition:transform .35s}
.frames figure:nth-child(2){transform:translate(-4%,9%) rotate(10deg)}
.frames figure:hover{transform:translateY(-6%) rotate(0);z-index:2}
.treats{background:radial-gradient(ellipse at 80% 60%,#5e386e,transparent 60%),var(--night)}
.treats h2 em{font-size:.73em}
#reaction{color:var(--lilac);min-height:3.2em;font-size:.93rem}
.snout{position:relative;margin:auto;width:min(90%,380px);aspect-ratio:1;border:2px solid var(--gold);border-radius:50%;box-shadow:0 0 0 10px #ffe0a12b}
.snout img{border-radius:inherit;object-position:50% 54%}
footer{padding:24px;text-align:center;background:#170f20;color:var(--gold);font:italic 600 1.25rem var(--serif)}
footer a{text-decoration:none}
.confetti{position:fixed;pointer-events:none;z-index:5;color:var(--gold);animation:burst 850ms ease-out forwards}
@keyframes burst{to{transform:translate(var(--x),var(--y)) rotate(var(--spin));opacity:0}}
@keyframes portrait{from{transform:scale(1.01)}to{transform:scale(1.1) translateY(2%)}}
@media(max-width:700px){.hero,.details,.treats{grid-template-columns:1fr;padding-block:56px;gap:46px}.portrait{width:min(87%,390px)}.details .frames{order:2}.date,.intro,.treat-copy{text-align:center}.date p,.intro p,.treat-copy p{margin-inline:auto!important}.frames{width:min(100%,420px);margin:auto}.snout{width:min(72%,300px)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.confetti{display:none}}

.album{padding:clamp(48px,7vw,100px) max(7vw,24px);background:var(--paper);color:var(--night)}
.album h2 em{color:#80436f}
.album-heading{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:26px}
.album-controls{white-space:nowrap}
.album-controls button{width:44px;height:44px;border:1px solid #80436f55;border-radius:50%;color:var(--night);background:transparent;font:inherit;cursor:pointer}
.album-controls button:hover{background:#f0d8eb}
.album-controls button:disabled{opacity:.35;cursor:default}
.album-track{display:grid;grid-auto-flow:column;grid-auto-columns:clamp(205px,27vw,350px);gap:18px;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-inline:contain;padding:8px 0 16px;scrollbar-color:#a66b99 transparent}
.album-track figure{margin:0;scroll-snap-align:start;border-radius:22px;overflow:hidden;background:#fffaf2}
.album-track img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;transition:transform .45s ease}
.album-track figure:hover img{transform:scale(1.04)}
.album-track figcaption{position:relative;padding:10px 14px;background:#fffaf2;font-size:.95rem}
@media(max-width:700px){.album-heading{align-items:start;flex-direction:column}.album-track{grid-auto-columns:74%}}

.icon-library{position:absolute;width:0;height:0;overflow:hidden}
.dog-icon{width:1.12em;height:1.12em;fill:currentColor;vertical-align:-.18em;flex:none}
.brand .dog-icon{width:1em;height:1em}
.eyebrow .dog-icon,.ribbon .dog-icon{margin-inline:.3em}
.time .dog-icon{margin-inline:.25em;color:#864471}
.paw-back{transform:rotate(-90deg)}
.paw-next{transform:rotate(90deg)}
@media(pointer:fine){body,a,button,summary,.button,.album-controls button,.album-controls button:disabled{cursor:url('paw.svg') 16 8,auto}}
.runner{position:fixed;bottom:clamp(5px,3vh,35px);left:0;width:clamp(105px,13vw,174px);z-index:6;animation:run-across 4.6s linear forwards;filter:drop-shadow(0 6px 6px #22172f45)}
@keyframes run-across{from{transform:translateX(-110%)}to{transform:translateX(calc(100vw + 10px))}}
@media(prefers-reduced-motion:reduce){.runner{display:none}}

.memories{padding:clamp(50px,7vw,100px) max(7vw,24px);text-align:center;background:#362341}
.memories p{margin:18px auto 30px}
.memory-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(8px,2vw,25px);max-width:760px;margin:auto}
.memory-grid img{width:100%;height:auto;display:block;border-radius:14px;transition:transform .35s ease}
.memory-grid img:hover{transform:translateY(-5px)}

.ribbon{display:flex;justify-content:space-evenly;align-items:center;overflow:hidden;min-height:45px;gap:13px}
.ribbon .dog-icon{margin:0;color:#794c45;font-size:1.2rem;transform:rotate(-20deg)}
.ribbon .dog-icon:nth-child(even){transform:translateY(4px) rotate(22deg);opacity:.64}
.runner{border:0;padding:0;background:transparent;line-height:0}
.runner img{display:block;width:100%;pointer-events:none}
.runner-paused{animation-play-state:paused}
.runner-bubble{display:none;position:absolute;bottom:69%;right:0;background:var(--paper);color:var(--night);padding:8px 12px;border-radius:15px 15px 15px 4px;white-space:nowrap;font:700 .9rem/1.15 var(--sans);pointer-events:none}
.runner-paused .runner-bubble{display:block}

.runner-puff{display:none;position:absolute;right:89%;bottom:32%;width:25px;height:16px;border-radius:50%;background:#acc581;box-shadow:-9px 4px 0 -2px #c9d796,5px -7px 0 -2px #d6dda1;pointer-events:none}
.runner-toot .runner-puff{display:block;animation:puff .73s ease-out forwards}
@keyframes puff{from{transform:scale(.5);opacity:0}25%{opacity:.9}to{transform:translate(-19px,-10px) scale(1.5);opacity:0}}
