/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.relative{position:relative}.start{inset-inline-start:var(--spacing)}}:root{--ink:#fff8f4;--rose:#f2b8b5;--rose-bright:#ffd2cf;--shadow:#14080c}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{background:var(--shadow);color:var(--ink);font-family:Arial,Helvetica,sans-serif}.birthdayPage{isolation:isolate;justify-content:center;align-items:flex-end;min-height:100svh;padding:5vh 24px 6vh;display:flex;position:relative;overflow:hidden}.photoWall{z-index:-4;background:#170e11;grid-template-columns:.9fr 1.2fr .9fr 1.25fr .95fr .8fr;display:grid;position:absolute;inset:0}.photoFrame{border-right:1px solid #ffffff24;min-width:0;height:100%;margin:0;position:relative;overflow:hidden}.photoFrame:last-child{border-right:0}.photoFrame:before{z-index:0;background-image:var(--photo-image);background-position:var(--photo-position);content:"";opacity:0;pointer-events:none;background-size:cover;position:absolute;inset:-24px}.photoFrame img{z-index:1;object-fit:cover;object-position:var(--photo-position);filter:saturate(.88)brightness(.9)contrast(1.04);width:100%;height:100%;animation:18s ease-in-out infinite alternate slow-drift;animation-delay:calc(var(--photo-index) * -2.1s);position:relative;transform:scale(1.045)}.photoFrame:nth-child(2) img,.photoFrame:nth-child(4) img{animation-direction:alternate-reverse}.colourWash{z-index:-3;background:linear-gradient(90deg,#260a134d,#0000 32% 68%,#230c1447),linear-gradient(#08040747 0%,#0804070d 38%,#0c05098a 64%,#0b0408e8 100%);position:absolute;inset:0}.lightLeak{z-index:-2;filter:blur(80px);opacity:.16;pointer-events:none;border-radius:50%;width:46vw;height:46vw;position:absolute}.lightLeakOne{background:#ffb29b;top:-31vw;left:-10vw}.lightLeakTwo{background:#bd5572;bottom:-30vw;right:-23vw}.scrollCue{display:none}.messageCard{text-align:center;-webkit-backdrop-filter:blur(14px)saturate(1.15);background:linear-gradient(135deg,#14090da1,#14080c73);border:1px solid #ffffff45;border-radius:30px;width:min(940px,100%);padding:clamp(25px,3vw,42px) clamp(24px,5vw,70px) clamp(27px,3.4vw,46px);animation:1.1s cubic-bezier(.16,1,.3,1) both card-arrival;position:relative;box-shadow:0 28px 90px #06020470}.messageCard:before{content:"";pointer-events:none;border:1px solid #ffffff1a;border-radius:21px;position:absolute;inset:9px}.eyebrow{color:var(--rose-bright);letter-spacing:.24em;text-transform:uppercase;justify-content:center;align-items:center;gap:13px;margin:0 0 12px;font-size:clamp(.61rem,1.2vw,.76rem);font-weight:700;line-height:1.5;display:flex}.eyebrow span{background:linear-gradient(90deg, transparent, var(--rose));width:38px;height:1px}.eyebrow span:last-child{transform:rotate(180deg)}h1{color:var(--ink);letter-spacing:-.055em;text-wrap:balance;text-shadow:0 4px 30px #00000052;margin:0;font-family:Iowan Old Style,Palatino Linotype,Palatino,Georgia,serif;font-size:clamp(3.1rem,7.2vw,6.1rem);font-weight:400;line-height:.88}h1 .happy,h1 .birthday{letter-spacing:-.045em;font-size:.67em}h1 .age{color:var(--rose-bright);letter-spacing:-.09em;font-weight:700;display:inline-block;position:relative}h1 sup{letter-spacing:0;text-transform:uppercase;font-family:Arial,Helvetica,sans-serif;font-size:.2em;font-style:normal;font-weight:700;position:absolute;top:.02em;right:-.55em}h1 em{color:#fff;letter-spacing:-.045em;margin-top:.12em;font-size:1.08em;font-weight:400;display:block}.heartRule{width:min(240px,58%);color:var(--rose-bright);align-items:center;gap:14px;margin:clamp(17px,2.8vh,28px) auto 13px;display:flex}.heartRule span{background:linear-gradient(90deg,#0000,#ffdad6a8);flex:1;height:1px}.heartRule span:last-child{transform:rotate(180deg)}.heartRule b{font-size:.68rem;font-weight:400}.signature{justify-content:center;align-items:baseline;gap:13px;margin:0;font-family:Snell Roundhand,Segoe Script,cursive;font-size:clamp(1.45rem,3vw,2rem);line-height:1.1;display:flex}.signature small{color:var(--rose-bright);letter-spacing:.08em;font-family:Iowan Old Style,Georgia,serif;font-size:.6em;font-style:italic}.sparkles{z-index:-1;pointer-events:none;position:absolute;inset:0;overflow:hidden}.sparkles span{color:#ffe1daba;text-shadow:0 0 14px #ffc6beb3;font-family:Georgia,serif;font-size:clamp(.65rem,1.4vw,1.1rem);animation:3.8s ease-in-out infinite twinkle;position:absolute}.sparkles span:first-child{top:11%;left:7%}.sparkles span:nth-child(2){animation-delay:-.8s;top:22%;right:9%}.sparkles span:nth-child(3){animation-delay:-2.2s;top:48%;left:5%}.sparkles span:nth-child(4){animation-delay:-1.5s;top:8%;right:35%}.sparkles span:nth-child(5){animation-delay:-2.9s;top:56%;right:4%}.sparkles span:nth-child(6){animation-delay:-3.4s;top:32%;left:38%}@keyframes slow-drift{0%{transform:scale(1.045)translateY(-.35%)}to{transform:scale(1.09)translateY(.35%)}}@keyframes card-arrival{0%{opacity:0;transform:translateY(26px)scale(.985)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes twinkle{0%,to{opacity:.28;transform:translateY(0)scale(.8)}50%{opacity:1;transform:translateY(-8px)scale(1.12)}}@keyframes cue-fade{0%,55%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-7px)}}@media (max-width:700px){html{scroll-snap-type:y proximity}body{overflow-x:hidden}.birthdayPage{min-height:calc(var(--photo-count) * 100vh);min-height:calc(var(--photo-count) * 100svh);padding:0;display:block;overflow:visible}.photoWall{flex-direction:column;height:100%;display:flex}.photoFrame{flex:0 0 calc(100% / var(--photo-count));height:calc(100% / var(--photo-count));scroll-snap-align:start;scroll-snap-stop:normal;border:0;position:relative;inset:auto}.photoFrame img,.photoFrame:nth-child(2) img,.photoFrame:nth-child(4) img{transform:scale(var(--mobile-scale)) translate3d(0, var(--mobile-shift), 0);animation:none}.landscapePhoto:before{opacity:1;filter:blur(20px)saturate(.88)brightness(.66);transform:scale(1.12)}.landscapePhoto img,.landscapePhoto:nth-child(2) img,.landscapePhoto:nth-child(4) img{object-fit:contain;object-position:50% 31%;filter:saturate(.94)brightness(.94)contrast(1.03);transform:none}.colourWash{pointer-events:none;background:linear-gradient(#0803061f 0%,#08030605 47%,#0a040840 70%,#0a0408e0 100%),linear-gradient(90deg,#1c080f1f,#0000,#1c080f24);position:fixed}.lightLeak,.sparkles{position:fixed}.scrollCue{z-index:2;top:max(14px, env(safe-area-inset-top));color:#fff8f4e8;letter-spacing:.12em;text-transform:uppercase;-webkit-backdrop-filter:blur(10px);pointer-events:none;background:#12080c73;border:1px solid #ffffff3b;border-radius:999px;align-items:center;gap:8px;width:max-content;margin:0;padding:8px 12px;font-size:.63rem;font-weight:700;line-height:1;animation:5s 1.2s forwards cue-fade;display:flex;position:fixed;left:50%;box-shadow:0 8px 26px #05020433}.scrollCue span{color:var(--rose-bright);font-size:.9rem}.messageCard{z-index:3;right:9px;bottom:max(8px, env(safe-area-inset-bottom));background:linear-gradient(145deg,#14080db0,#14080d87);border-radius:20px;width:auto;padding:14px 14px 16px;position:fixed;left:9px;box-shadow:0 16px 50px #0602045c}.messageCard:before{border-radius:15px;inset:5px}.eyebrow{letter-spacing:.13em;gap:6px;margin-bottom:5px;font-size:clamp(.5rem,2.1vw,.62rem);line-height:1.3}.eyebrow span{width:14px}h1{font-size:clamp(2.55rem,11.8vw,3.55rem);line-height:.86}h1 .happy,h1 .birthday{font-size:.56em}h1 em{margin-top:.1em}.heartRule{gap:10px;width:min(180px,54%);margin-top:10px;margin-bottom:7px}.signature{gap:9px;font-size:clamp(1.18rem,5.3vw,1.45rem)}.sparkles span:nth-child(4),.sparkles span:nth-child(6){display:none}}@media (max-height:660px) and (min-width:701px){.messageCard{padding-top:18px;padding-bottom:20px}.eyebrow{margin-bottom:6px}h1{font-size:clamp(2.5rem,12vh,4.6rem)}.heartRule{margin-top:11px;margin-bottom:9px}}@media (prefers-reduced-motion:reduce){.photoFrame img,.photoFrame,.messageCard,.sparkles span,.scrollCue{animation:none}}
