:root{font-family:Avenir Next,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif;color:#f4f1e9;background:#dededd;font-synthesis:none;text-rendering:optimizeLegibility;--text: #f4f1e9;--muted: #aaa8ae;--accent-gradient: linear-gradient(108deg, #8dbbff 0%, #9983ff 31%, #df83c9 63%, #ffc082 100%);--mono: "SFMono-Regular", Consolas, "Liberation Mono", monospace;--display: Didot, "Bodoni 72", "Iowan Old Style", "Songti SC", "STSong", serif;--content-max: 1480px;--page-gutter: clamp(24px, 5vw, 84px);--grid-gap: clamp(12px, 1.45vw, 24px);color-scheme:dark}*{box-sizing:border-box}html{min-width:320px;background:#0b0a0d}body{margin:0;min-width:320px;min-height:100dvh;overflow-x:hidden;color:var(--text);background:#0b0a0d}button{font:inherit}button:focus-visible{outline:2px solid #ffc183;outline-offset:4px}button:active{transform:translateY(1px)}.app-shell{position:relative;min-height:100dvh;overflow:hidden;background:#0b0a0d}.cover-screen,.birthday-page{position:relative;display:grid;min-height:calc(100dvh - 32px);width:min(calc(100% - 32px),1540px);margin:16px auto;border:1px solid rgba(244,241,233,.28);border-radius:2px 2px 24px 24px;overflow:hidden;background:#08070a;box-shadow:0 22px 52px #00000052;--ambient-one: #745782;--ambient-two: #99566e;--ambient-three: #b8754d}.birthday-page[data-ambient=tribute][data-tribute-tone=rose]{--ambient-one: #694052;--ambient-two: #834b5d;--ambient-three: #98614f}.birthday-page[data-ambient=tribute][data-tribute-tone=amber]{--ambient-one: #654138;--ambient-two: #86553d;--ambient-three: #ad7545}.birthday-page[data-ambient=tribute][data-tribute-tone=champagne]{--ambient-one: #59443d;--ambient-two: #79604a;--ambient-three: #9f7952}.birthday-page[data-ambient=tribute][data-tribute-tone=lilac]{--ambient-one: #4c4565;--ambient-two: #655573;--ambient-three: #7b5f5a}.birthday-page[data-ambient=tribute][data-tribute-tone=ember]{--ambient-one: #602f36;--ambient-two: #7d3e3c;--ambient-three: #a35f47}.birthday-page[data-ambient=tribute][data-tribute-tone=pearl]{--ambient-one: #62504f;--ambient-two: #7d625b;--ambient-three: #98765f}.cosmic-field{position:fixed;z-index:0;top:17px;right:max(17px,calc((100vw - 1540px)/2));bottom:17px;left:max(17px,calc((100vw - 1540px)/2));overflow:hidden;border-radius:1px 1px 23px 23px;isolation:isolate;pointer-events:none;background:linear-gradient(180deg,#0a090d,#08070a 54%,#070609)}.cosmic-field canvas{position:absolute;z-index:2;inset:0;width:100%;height:100%;opacity:.82}.cosmic-field:before{position:absolute;z-index:1;inset:0;content:"";opacity:.7;background:radial-gradient(ellipse at 50% 44%,transparent 20%,rgba(1,1,3,.28) 72%,rgba(1,1,3,.58) 100%),linear-gradient(180deg,rgba(255,255,255,.012),transparent 34%)}.cosmic-field:after{position:absolute;z-index:5;inset:0;content:"";opacity:.09;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.32'/%3E%3C/svg%3E")}.cosmic-haze{position:absolute;z-index:3;display:block;width:min(58vw,900px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,currentColor 0%,transparent 72%);filter:blur(110px);mix-blend-mode:screen;opacity:.12;will-change:transform;transition:color 4.6s cubic-bezier(.45,0,.55,1),opacity 4.6s ease}.cosmic-haze-one{top:4%;left:-9%;color:var(--ambient-one);animation:hazeOne 27s cubic-bezier(.45,0,.55,1) infinite alternate}.cosmic-haze-two{top:27%;right:-12%;color:var(--ambient-two);opacity:.1;animation:hazeTwo 33s cubic-bezier(.45,0,.55,1) infinite alternate}.cosmic-haze-three{right:18%;bottom:-24%;width:min(52vw,760px);color:var(--ambient-three);opacity:.11;animation:hazeThree 23s cubic-bezier(.45,0,.55,1) infinite alternate}@keyframes hazeOne{to{transform:translate3d(42px,28px,0)}}@keyframes hazeTwo{to{transform:translate3d(-46px,34px,0)}}@keyframes hazeThree{to{transform:translate3d(26px,-38px,0)}}.frame-corners{position:absolute;z-index:2;inset:28px;pointer-events:none;opacity:.16;background:linear-gradient(#f4f1e9,#f4f1e9) left top / 26px 1px no-repeat,linear-gradient(#f4f1e9,#f4f1e9) left top / 1px 26px no-repeat,linear-gradient(#f4f1e9,#f4f1e9) right top / 26px 1px no-repeat,linear-gradient(#f4f1e9,#f4f1e9) right top / 1px 26px no-repeat,linear-gradient(#f4f1e9,#f4f1e9) left bottom / 26px 1px no-repeat,linear-gradient(#f4f1e9,#f4f1e9) left bottom / 1px 26px no-repeat,linear-gradient(#f4f1e9,#f4f1e9) right bottom / 26px 1px no-repeat,linear-gradient(#f4f1e9,#f4f1e9) right bottom / 1px 26px no-repeat}.cover-nav,.birthday-nav{position:absolute;z-index:4;top:34px;left:50%;display:flex;width:min(calc(100% - (var(--page-gutter) * 2)),var(--content-max));justify-content:space-between;color:#f4f1e980;font:500 8px/1 var(--mono);letter-spacing:.18em;transform:translate(-50%)}.birthday-nav{padding-right:clamp(172px,17vw,224px)}.system-label{margin:0 0 24px;color:#f4f1e980;font:500 8px/1 var(--mono);letter-spacing:.22em}.cover-copy{position:absolute;z-index:3;top:51%;left:50%;display:grid;width:min(calc(100% - (var(--page-gutter) * 2)),var(--content-max));grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--grid-gap);text-align:left;transform:translate(-50%,-50%)}.cover-copy .system-label{grid-column:2 / 7}.cover-copy h1,.birthday-heading h1{margin:0;font-family:var(--display);font-weight:400;line-height:.86;letter-spacing:-.06em;text-shadow:0 4px 24px rgba(0,0,0,.32);-webkit-font-smoothing:antialiased;text-wrap:balance}.cover-copy h1{grid-column:2 / 11;font-size:clamp(72px,9vw,138px)}.cover-copy h1>span,.cover-copy h1>em,.birthday-heading h1>span,.birthday-heading h1>em{display:block;will-change:transform,opacity,filter,clip-path}.title-character{display:inline-block;font:inherit;font-style:inherit;will-change:transform,opacity}.cover-copy h1 em,.birthday-heading h1 em{margin-top:.08em;padding:.04em .08em .12em;color:#d2b0c0;background:none;font-style:italic;font-weight:400;filter:drop-shadow(0 8px 24px rgba(169,101,145,.12))}.cover-copy h1 em{margin-left:.7em}.cover-copy>p:not(.system-label){max-width:31rem;margin:18px auto 22px;color:#f4f1e994;font-size:clamp(11px,1.2vw,14px);line-height:1.75}.cover-copy .primary-button{grid-column:2 / 5;justify-self:start;margin-top:34px}.primary-button{min-height:38px;padding:0 0 8px;border:0;border-bottom:1px solid rgba(244,241,233,.5);border-radius:0;color:#f4f1e9e0;background:transparent;box-shadow:none;cursor:pointer;font:500 11px/1 var(--mono);letter-spacing:.16em;white-space:nowrap;transition:transform .36s cubic-bezier(.16,1,.3,1),border-color .36s ease,color .36s ease}.primary-button:after{content:" →"}.primary-button:hover{color:#fff;border-color:#f4f1e9d6}.cover-exclamation,.birthday-exclamation{position:absolute;z-index:2;color:#f4f1e908;font-family:var(--display);font-weight:400;line-height:.72;-webkit-text-stroke:1px rgba(215,189,205,.07);-webkit-user-select:none;user-select:none}.cover-exclamation{top:18%;right:3%;font-size:clamp(240px,32vw,480px)}.cover-edition,.birthday-meta{position:absolute;z-index:4;right:44px;bottom:42px;margin:0;color:#f4f1e96b;font:500 8px/1.6 var(--mono);letter-spacing:.16em;text-align:right}.cover-edition-left,.birthday-meta-left{right:auto;left:44px;text-align:left}.music-control{position:fixed;z-index:30;top:max(34px,env(safe-area-inset-top));right:38px;display:flex;min-height:32px;padding:0 0 7px;align-items:center;gap:9px;border:0;border-bottom:1px solid rgba(244,241,233,.23);border-radius:0;color:#f4f1e999;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;cursor:pointer;font:500 8px/1 var(--mono);letter-spacing:.14em;transition:color .32s ease,border-color .32s ease,transform .32s ease}.music-control:hover{color:#f4f1e9e6;border-color:#f4f1e97a}.music-bars{display:flex;height:12px;align-items:flex-end;gap:2px}.music-bars i{display:block;width:2px;height:4px;background:#e9a2be}.music-bars.is-playing i:nth-child(2){height:9px}.music-bars.is-playing i:nth-child(3){height:6px}.birthday-content{position:relative;z-index:3;width:min(calc(100% - (var(--page-gutter) * 2)),var(--content-max));margin:0 auto;text-align:left}.birthday-page{display:block}.birthday-hero{position:relative;display:grid;min-height:calc(100dvh - 32px);padding:clamp(82px,10vh,118px) 0 clamp(78px,10vh,120px);grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--grid-gap);align-content:center;row-gap:clamp(36px,5vh,56px)}.birthday-hero:after{position:absolute;z-index:8;inset:0 calc(var(--page-gutter) * -1);pointer-events:none;background:#0201032e;opacity:0;transition:opacity 1.8s ease;content:""}.birthday-hero:has(.cake-moment.is-extinguished):after{opacity:1}.birthday-heading{grid-column:1 / -1;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--grid-gap)}.birthday-heading>p{grid-column:1 / 6;margin:0 0 24px;color:#f4f1e980;font:500 8px/1 var(--mono);letter-spacing:.2em}.birthday-heading h1{grid-column:1 / -1;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--grid-gap);font-size:clamp(76px,9.4vw,144px)}.birthday-heading h1>span{grid-column:1 / 8;text-align:left}.birthday-heading h1>em{grid-column:7 / 13;margin-top:-.06em;text-align:left}.birthday-heading>span{display:block;grid-column:9 / 13;margin-top:14px;color:#f4f1e959;font:500 7px/1 var(--mono);letter-spacing:.26em}.cake-moment{position:relative;z-index:4;grid-column:8 / 12;display:grid;min-height:196px;place-items:center;align-content:center;gap:12px;justify-self:center}.cake-visual{position:relative;width:250px;height:178px;padding:0;border:0;color:inherit;background:transparent;cursor:pointer;filter:drop-shadow(0 18px 24px rgba(0,0,0,.28));transform:scale(.76);transform-origin:50% 58%}.cake-visual:before{position:absolute;z-index:0;left:50%;bottom:62px;width:230px;height:190px;border-radius:50%;pointer-events:none;background:radial-gradient(circle at 50% 30%,rgba(255,190,111,.28),rgba(222,115,82,.1) 34%,transparent 70%);filter:blur(18px);opacity:1;transform:translate(-50%);transition:opacity 1.8s ease;content:""}.cake-plate{position:absolute;z-index:1;left:50%;bottom:5px;width:236px;height:25px;border:1px solid rgba(244,241,233,.22);border-radius:50%;background:linear-gradient(180deg,#f4f1e91f,#f4f1e905);transform:translate(-50%)}.cake-body{position:absolute;z-index:2;left:50%;bottom:17px;display:grid;width:190px;height:78px;place-items:center;border:1px solid rgba(244,241,233,.22);border-radius:4px 4px 34px 34px;color:#f4f1e9b8;background:linear-gradient(105deg,rgba(255,255,255,.08),transparent 28%),linear-gradient(110deg,#555975,#6c5875 45%,#8c5f70 76%,#aa765d);box-shadow:inset 0 -18px 35px #120b1b47;transform:translate(-50%)}.cake-body span{margin-top:7px;font:italic 400 29px/1 var(--display);letter-spacing:-.04em;text-shadow:0 3px 14px rgba(15,8,30,.36)}.cake-top{position:absolute;z-index:3;left:50%;bottom:78px;width:190px;height:42px;border:1px solid rgba(244,241,233,.28);border-radius:50%;background:linear-gradient(110deg,#cbc8d8,#c7b8d2 40%,#d4b4bd 72%,#dfc1a7);box-shadow:0 6px 15px #140c1f38;transform:translate(-50%)}.cake-candle{position:absolute;z-index:4;left:50%;bottom:105px;width:10px;height:49px;border-radius:5px 5px 2px 2px;background:repeating-linear-gradient(135deg,#f2ede6 0 7px,#aa8bef 7px 12px);box-shadow:0 4px 14px #160e2638;transform:translate(-50%)}.cake-flame{position:absolute;z-index:5;left:50%;bottom:154px;width:17px;height:27px;border-radius:70% 35% 65%;background:radial-gradient(circle at 52% 72%,#fff7d7 0 18%,#ffc46f 34%,#ff765f 67%,transparent 70%);filter:drop-shadow(0 0 10px rgba(255,171,94,.78));transform:translate(-50%);transform-origin:50% 100%;transition:opacity 1.1s ease;animation:candleFlicker 1.6s ease-in-out infinite alternate}.cake-smoke{position:absolute;z-index:5;left:calc(50% - 4px);bottom:154px;width:8px;height:30px;border-left:2px solid rgba(216,213,225,.5);border-radius:50%;opacity:0;transform:translateY(5px)}.cake-copy{min-height:39px;text-align:center}.cake-copy p{margin:0;color:#f4f1e9a3;font:500 9px/1.5 var(--mono);letter-spacing:.15em}.cake-copy small{display:block;margin-top:7px;color:#f4f1e96b;font-size:9px}.cake-moment.is-extinguished .cake-visual:before{opacity:0}.cake-moment.is-extinguished .cake-flame{opacity:0;animation:none}.cake-moment.is-extinguished .cake-smoke{animation:candleSmoke 2.2s ease-out both}@keyframes candleFlicker{0%{opacity:.84;transform:translate3d(-50%,1px,0);filter:drop-shadow(0 0 8px rgba(255,171,94,.68))}to{opacity:1;transform:translate3d(-50%,-1px,0);filter:drop-shadow(0 0 13px rgba(255,171,94,.86))}}@keyframes candleSmoke{0%{opacity:0;transform:translate3d(0,4px,0)}18%{opacity:.56}to{opacity:0;transform:translate3d(8px,-34px,0)}}.tribute-section{position:relative;width:100%;margin:0 auto;padding:clamp(120px,17vh,200px) 0 clamp(130px,18vh,210px);text-align:left}.tribute-heading{min-height:88dvh;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--grid-gap);align-content:center}.tribute-heading>p{grid-column:2 / 7;display:flex;align-items:center;gap:10px;margin:0 0 24px;color:#f4f1e96b;font:500 8px/1 var(--mono);letter-spacing:.22em}.tribute-heading>p:before{width:5px;height:5px;flex:0 0 auto;border-radius:50%;background:#f2a4be;box-shadow:0 0 14px #f2a4be8c;content:""}.tribute-heading h2{grid-column:2 / 9;margin:0;color:var(--text);font-family:var(--display);font-size:clamp(76px,10vw,150px);font-weight:400;line-height:.9;letter-spacing:-.065em;text-wrap:balance}.tribute-index{display:grid;counter-reset:tribute-item}.tribute-item{position:relative;--tribute-color: #f4f1e9;--tribute-glow: rgba(244, 241, 233, .08);min-height:clamp(480px,62dvh,720px);display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-template-rows:auto auto;column-gap:var(--grid-gap);align-content:center;padding:clamp(78px,10vh,116px) 0;counter-increment:tribute-item}.tribute-item[data-tone=rose]{--tribute-color: #e2a2b5;--tribute-glow: rgba(226, 162, 181, .13)}.tribute-item[data-tone=amber]{--tribute-color: #e3b16e;--tribute-glow: rgba(227, 177, 110, .13)}.tribute-item[data-tone=champagne]{--tribute-color: #ddc08f;--tribute-glow: rgba(221, 192, 143, .12)}.tribute-item[data-tone=lilac]{--tribute-color: #b7add6;--tribute-glow: rgba(183, 173, 214, .13)}.tribute-item[data-tone=ember]{--tribute-color: #d68e7c;--tribute-glow: rgba(214, 142, 124, .13)}.tribute-item[data-tone=pearl]{--tribute-color: #efe1da;--tribute-glow: rgba(239, 225, 218, .11)}.tribute-item:before{grid-column:1 / 3;grid-row:1;width:clamp(80px,9vw,146px);margin-bottom:clamp(44px,6vh,70px);padding-top:13px;border-top:1px solid rgba(244,241,233,.26);color:#f4f1e961;font:500 8px/1 var(--mono);letter-spacing:.2em;content:counter(tribute-item,decimal-leading-zero)}.tribute-item-copy{grid-column:1 / 9;grid-row:2;min-width:0}.tribute-item:nth-child(2n):before{grid-column:5 / 7}.tribute-item:nth-child(2n) .tribute-item-copy{grid-column:5 / 13}.tribute-item-copy h3{max-width:940px;margin:0;color:var(--tribute-color);font-family:var(--display);font-size:clamp(58px,7vw,106px);font-weight:400;line-height:.96;letter-spacing:-.052em;text-wrap:balance;text-shadow:0 0 46px var(--tribute-glow),0 12px 38px rgba(0,0,0,.2)}.tribute-item-copy p{margin:clamp(17px,2.4vh,25px) 0 0;color:#f4f1e96e;font:500 clamp(8px,.72vw,10px)/1.4 var(--mono);letter-spacing:.24em;text-transform:uppercase}.tribute-item--long .tribute-item-copy h3{max-width:880px;font-size:clamp(48px,5.8vw,84px);line-height:1.02}.tribute-item--with-image{align-items:center}.tribute-item--with-image:nth-child(odd) .tribute-item-copy{grid-column:1 / 8}.tribute-item--with-image:nth-child(odd) .tribute-media{grid-column:9 / 13}.tribute-item--with-image:nth-child(2n) .tribute-item-copy{grid-column:6 / 13}.tribute-item--with-image:nth-child(2n) .tribute-media{grid-column:1 / 5}.tribute-media{grid-row:2;width:100%;max-width:242px;margin:0;align-self:center;justify-self:center}.tribute-media-frame{position:relative;overflow:hidden;aspect-ratio:242 / 216;border:0;border-radius:2px;background:#1111196b;box-shadow:none}.tribute-media-frame:after{position:absolute;inset:0;pointer-events:none;background:linear-gradient(145deg,rgba(255,194,157,.12),transparent 48%),repeating-radial-gradient(circle at 20% 20%,rgba(255,255,255,.08) 0 .5px,transparent .8px 3px);mix-blend-mode:soft-light;opacity:.45;content:""}.tribute-media img{display:block;width:100%;height:100%;object-fit:cover;filter:saturate(.76) sepia(.1) contrast(.96) brightness(.91);transition:filter .7s ease}.tribute-finale{min-height:100dvh;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--grid-gap);align-items:center}.tribute-finale-copy{grid-column:7 / 13;width:100%}.tribute-closing{width:100%;margin:0;color:#f4f1e99e;font-family:var(--display);font-size:clamp(64px,9vw,122px);font-weight:400;line-height:1;letter-spacing:-.065em;text-align:left;text-wrap:nowrap}.tribute-signature{display:inline-flex;align-items:center;gap:12px;margin:clamp(38px,5vh,56px) 0 0 34%;color:#efe1da7a;font:500 clamp(8px,.7vw,10px)/1 var(--mono);letter-spacing:.22em;text-transform:lowercase}.tribute-signature svg{display:block;width:clamp(22px,2vw,30px);height:auto;overflow:visible;fill:currentColor;filter:drop-shadow(0 0 12px rgba(226,162,181,.12))}.birthday-letter{max-width:660px;margin:0 auto;padding:26px 0 0;border-top:1px solid rgba(244,241,233,.15)}.birthday-letter p{margin:0 0 14px;color:#f4f1e9bf;font-size:clamp(13px,1.2vw,16px);line-height:1.72}.birthday-letter p:last-of-type{margin-top:22px;color:var(--text);font-family:var(--display);font-size:clamp(28px,3.2vw,44px);line-height:1.1}.birthday-letter small{display:block;margin-top:28px;color:#f4f1e961;font-size:9px;line-height:1.65}.birthday-exclamation{right:4%;bottom:-8%;font-size:clamp(260px,39vw,580px)}@media(hover:hover){.primary-button:hover{transform:translateY(-1px)}.tribute-media:hover img{filter:saturate(.86) sepia(.06) contrast(.98) brightness(.96)}}@media(max-width:767px){.cover-screen,.birthday-page{min-height:calc(100dvh - 16px);width:calc(100% - 16px);margin:8px auto;border-width:1px;border-radius:1px 1px 18px 18px}.cosmic-field{inset:9px;border-radius:0 0 17px 17px}.frame-corners{inset:17px;opacity:.18}.cosmic-field canvas{opacity:.72}.cosmic-field:before{opacity:.76}.cosmic-haze{width:92vw;filter:blur(74px);opacity:.1}.cover-nav,.birthday-nav{top:23px;width:calc(100% - 44px);font-size:6px}.birthday-nav{padding-right:0}.birthday-nav span:last-child{display:none}.cover-copy{top:51%;width:calc(100% - 48px)}.cover-copy .system-label{grid-column:1 / 13}.cover-copy h1{grid-column:1 / 13;max-width:340px;margin:0;font-size:clamp(52px,16vw,70px)}.cover-copy h1 em{margin-left:.58em}.cover-copy>p:not(.system-label){max-width:270px;margin-top:15px;font-size:11px}.cover-copy .primary-button{grid-column:1 / 8;margin-top:32px}.primary-button{min-height:34px;padding:0 0 7px;font-size:10px}.cover-exclamation{top:24%;right:-8%;font-size:76vw}.cover-edition{right:20px;bottom:22px;font-size:7px}.cover-edition-left{right:auto;left:20px}.music-control{top:max(20px,env(safe-area-inset-top));right:20px;width:auto;min-height:28px;padding:0;justify-content:center;font-size:6px;max-width:156px;white-space:nowrap}.music-control>span:last-child{display:block}.music-bars{display:none}.birthday-content{width:calc(100% - 44px)}.birthday-hero{min-height:calc(100vh - 16px);min-height:calc(100dvh - 16px);min-height:calc(100svh - 16px);padding:70px 0 54px;align-content:center;row-gap:24px}.birthday-heading>p{grid-column:1 / 9;margin-bottom:18px;font-size:6px}.birthday-heading h1{max-width:none;margin:0;font-size:clamp(47px,12.8vw,56px)}.birthday-heading h1>span{grid-column:1 / 11}.birthday-heading h1>em{grid-column:5 / 13;margin-top:0}.birthday-heading>span{grid-column:7 / 13;margin-top:11px;font-size:6px}.cake-moment{grid-column:6 / 13;min-height:174px;justify-self:end}.cake-visual{transform:scale(.66)}.birthday-letter{padding-top:22px}.birthday-letter p{margin-bottom:12px;font-size:12px;line-height:1.65}.birthday-letter p:last-of-type{margin-top:18px;font-size:27px}.birthday-letter small{margin-top:23px;font-size:8px}.birthday-exclamation{right:-11%;bottom:12%;opacity:.5;font-size:72vw}.birthday-meta{display:none}.tribute-section{width:100%;padding:88px 0 132px}.tribute-heading{min-height:82dvh}.tribute-heading>p{grid-column:1 / 13;margin-bottom:18px;font-size:6px}.tribute-heading h2{grid-column:1 / 12;font-size:clamp(58px,17vw,74px)}.tribute-item{min-height:64dvh;grid-template-rows:auto auto auto;padding:72px 2px}.tribute-item:before,.tribute-item:nth-child(2n):before{grid-column:1 / 6;grid-row:1;width:96px;margin-bottom:42px;font-size:7px}.tribute-item-copy,.tribute-item:nth-child(2n) .tribute-item-copy,.tribute-item--with-image:nth-child(odd) .tribute-item-copy,.tribute-item--with-image:nth-child(2n) .tribute-item-copy{grid-column:1 / 13;grid-row:2}.tribute-item-copy h3{font-size:clamp(40px,12vw,52px);line-height:1;letter-spacing:-.05em;text-shadow:0 0 24px var(--tribute-glow),0 10px 28px rgba(0,0,0,.18)}.tribute-item-copy p{margin-top:18px;font-size:7px;line-height:1.5;letter-spacing:.2em}.tribute-item--long .tribute-item-copy h3{max-width:100%;font-size:clamp(34px,9.6vw,42px);line-height:1.08}.tribute-item--with-image{min-height:82dvh}.tribute-item--with-image:nth-child(odd) .tribute-media,.tribute-item--with-image:nth-child(2n) .tribute-media{grid-column:1 / 13;grid-row:3;width:min(62vw,242px);margin:42px 0 0 auto;justify-self:end}.tribute-media-frame{border-radius:1px}.tribute-finale{min-height:92dvh}.tribute-finale-copy{grid-column:2 / 13}.tribute-closing{font-size:clamp(52px,15vw,66px)}.tribute-signature{gap:9px;margin:42px 0 0 48%;font-size:7px}.tribute-signature svg{width:22px;filter:drop-shadow(0 0 8px rgba(226,162,181,.1))}}@media(prefers-reduced-motion:reduce){.birthday-page[data-ambient][data-tribute-tone]{--ambient-one: #50283e;--ambient-two: #713330;--ambient-three: #8d5740}.cosmic-field:before,.cosmic-haze,.frame-corners,.cake-flame,.cake-smoke,.cover-copy h1 em,.birthday-heading h1 em,.music-bars.is-playing i{animation:none!important}*,*:before,*:after{transition-duration:.01ms!important}}:root{--text: #f4f1e9;--muted: #aaa8ae;--paper-dark: #08070a;--paper-deep: #0b0a0d;--editorial-accent: #e9a2be}html,body,.app-shell{background:#0b0a0d}.app-shell{background:var(--paper-deep)}.cover-screen,.birthday-page{color:var(--text);background:var(--paper-dark)}.cosmic-field{background:radial-gradient(circle at 72% 18%,rgba(153,86,110,.09),transparent 38%),linear-gradient(180deg,#0a090d,#08070a 54%,#070609)}.cosmic-field:after{opacity:.035}.cosmic-field canvas{opacity:.58}.cover-screen.is-leaving{pointer-events:none;animation:coverExit 1.12s cubic-bezier(.22,1,.36,1) both;transform-origin:50% 50%}@keyframes coverExit{to{opacity:0;filter:blur(8px);transform:scale(.96)}}.cover-copy{top:46%}.cover-copy h1{grid-column:2 / 12;font-size:clamp(76px,10vw,146px);line-height:.8}.cover-copy h1 em{margin:.06em 0 0 1.25em;color:#d2b0c0}.cover-copy h1 em .title-character,.birthday-heading h1 em .title-character{color:#df83c9}.cover-copy h1 em .title-character:nth-child(1),.birthday-heading h1 em .title-character:nth-child(1){color:#8dbbff}.cover-copy h1 em .title-character:nth-child(2),.birthday-heading h1 em .title-character:nth-child(2){color:#9983ff}.cover-copy h1 em .title-character:nth-child(3),.birthday-heading h1 em .title-character:nth-child(3){color:#ae84ee}.cover-copy h1 em .title-character:nth-child(4),.birthday-heading h1 em .title-character:nth-child(4){color:#c683dc}.cover-copy h1 em .title-character:nth-child(5),.birthday-heading h1 em .title-character:nth-child(5){color:#df83c9}.cover-copy h1 em .title-character:nth-child(6),.birthday-heading h1 em .title-character:nth-child(6){color:#ee9eae}.cover-copy h1 em .title-character:nth-child(n+7),.birthday-heading h1 em .title-character:nth-child(n+7){color:#ffc082}.cover-copy .cover-intro{grid-column:3 / 8;max-width:none;margin:32px 0 0;color:#f4f1e985;font:400 clamp(13px,1.1vw,16px)/1.9 "Songti SC","STSong",serif;letter-spacing:.08em}.cover-copy .primary-button{grid-column:3 / 6;margin-top:38px}.cover-exclamation{color:#f4f1e905;-webkit-text-stroke-color:rgba(215,189,205,.07)}.music-bars i{background:#e9a2be}.birthday-page{--ambient-one: #745782;--ambient-two: #99566e;--ambient-three: #b8754d}.birthday-page[data-ambient=birthday]{--ambient-one: #81506d;--ambient-two: #b46667;--ambient-three: #c98a4f}.birthday-page[data-ambient=tribute]{--ambient-one: #50283e;--ambient-two: #713330;--ambient-three: #8d5740}.birthday-page[data-ambient=ending]{--ambient-one: #704735;--ambient-two: #9d613b;--ambient-three: #c28b51}.birthday-content{width:min(calc(100% - (var(--page-gutter) * 2)),var(--content-max))}.story-chapter{position:relative}.section-label{display:flex;align-items:center;gap:12px;margin:0;color:#f4f1e970;font:500 clamp(9px,.75vw,11px)/1 var(--mono);font-style:normal;letter-spacing:.2em;text-transform:uppercase}.section-label i{display:block;width:clamp(72px,8vw,128px);height:1px;background:#f4f1e938}.birthday-hero{min-height:max(100svh,760px);padding:clamp(105px,13vh,148px) 0 clamp(96px,13vh,150px);align-content:center;isolation:isolate}.birthday-hero>.section-label{position:absolute;z-index:4;top:clamp(102px,13vh,146px);left:0}.age-motif{position:absolute;z-index:-1;top:50%;left:50%;color:#f4f1e913;font-family:var(--display);font-size:clamp(180px,30vw,460px);font-weight:400;line-height:.8;letter-spacing:-.09em;transform:translate(-47%,-52%);-webkit-user-select:none;user-select:none}.birthday-heading{position:relative;z-index:2}.birthday-heading>p{grid-column:2 / 6}.birthday-heading h1{font-size:clamp(72px,8.6vw,132px)}.birthday-heading h1>span{grid-column:2 / 8}.birthday-heading h1>em{grid-column:7 / 13;color:#d2b0c0}.birthday-heading>span{grid-column:9 / 13}.cake-moment{grid-column:8 / 12}.cake-body{background:linear-gradient(105deg,rgba(255,255,255,.08),transparent 28%),linear-gradient(110deg,#555975,#6c5875 45%,#8c5f70 76%,#aa765d)}.cake-top{background:linear-gradient(110deg,#cbc8d8,#c7b8d2 40%,#d4b4bd 72%,#dfc1a7)}.cake-candle{background:repeating-linear-gradient(135deg,#f2ede6 0 7px,#aa8bef 7px 12px)}.section-heading{min-height:clamp(620px,82svh,900px);display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--grid-gap);align-content:center}.section-heading .section-label{grid-column:2 / 8;margin-bottom:44px}.section-kicker{grid-column:2 / 7;margin:0 0 22px;color:#f4f1e957;font:500 9px/1 var(--mono);letter-spacing:.24em}.section-heading h2{grid-column:2 / 10;margin:0;color:var(--text);font-family:var(--display);font-size:clamp(78px,10vw,148px);font-weight:400;line-height:.9;letter-spacing:-.065em}.section-heading--quiet{min-height:clamp(420px,62svh,690px);align-content:end;padding-bottom:12vh}.section-heading--quiet .section-label{grid-column:7 / 13}.section-heading--final{min-height:clamp(420px,64svh,720px)}.section-heading--final .section-label{grid-column:6 / 12}.tribute-index{display:grid}.tribute-item{min-height:clamp(530px,72svh,820px);padding:clamp(110px,15vh,174px) 0}.tribute-item:before{content:attr(data-number);grid-column:1 / 3;counter-increment:none}.tribute-item[data-align=left]:before{grid-column:1 / 3}.tribute-item[data-align=left] .tribute-item-copy{grid-column:1 / 9}.tribute-item[data-align=right]:before{grid-column:5 / 7}.tribute-item[data-align=right] .tribute-item-copy{grid-column:5 / 13}.tribute-item-copy h3{font-size:clamp(56px,6.6vw,98px);line-height:1}.tribute-item-copy p{margin-top:24px}.tribute-item--with-image[data-align=right] .tribute-item-copy{grid-column:6 / 13}.tribute-item--with-image[data-align=right] .tribute-media{grid-column:1 / 5}.tribute-item--with-image[data-align=left] .tribute-item-copy{grid-column:1 / 8}.tribute-item--with-image[data-align=left] .tribute-media{grid-column:9 / 13}.tribute-media{max-width:300px}.tribute-media-frame{aspect-ratio:4 / 3;border-radius:0}.tribute-item--long{min-height:max(100svh,760px);place-items:center;text-align:center}.tribute-item--long:before{position:absolute;top:14%;left:50%;width:110px;transform:translate(-50%)}.tribute-item--long .tribute-item-copy,.tribute-item--long[data-align=right] .tribute-item-copy{grid-column:2 / 12;max-width:980px;text-align:center}.tribute-item--long .tribute-item-copy h3{max-width:980px;font-size:clamp(48px,6vw,82px);line-height:1.18}.story-ending>.tribute-item{min-height:clamp(560px,78svh,860px)}.story-ending>.tribute-item .tribute-item-copy{grid-column:3 / 12}.story-ending>.tribute-item:before{grid-column:3 / 5}.tribute-finale{position:relative;min-height:max(100svh,720px)}.tribute-finale-copy{grid-column:4 / 10;text-align:center}.tribute-closing{font-size:clamp(66px,8vw,112px);text-align:center}.tribute-signature{position:absolute;right:0;bottom:clamp(72px,10vh,110px);margin:0;justify-content:center}.scroll-progress{position:fixed;z-index:22;top:50%;right:max(28px,calc((100vw - 1540px)/2 + 26px));display:grid;gap:12px;color:#f4f1e947;transform:translateY(-50%)}.scroll-progress>span{display:grid;grid-template-columns:18px 18px auto;align-items:center;gap:8px;opacity:.32;transition:opacity .7s ease,color .7s ease}.scroll-progress b,.scroll-progress small{font:500 7px/1 var(--mono);letter-spacing:.16em}.scroll-progress b{font-weight:500}.scroll-progress small{max-width:0;overflow:hidden;white-space:nowrap;opacity:0;transition:max-width .6s ease,opacity .6s ease}.scroll-progress i{width:14px;height:1px;background:currentColor;transition:width .6s ease}.birthday-page[data-section="01"] .scroll-progress [data-progress-id="01"],.birthday-page[data-section="02"] .scroll-progress [data-progress-id="02"],.birthday-page[data-section="03"] .scroll-progress [data-progress-id="03"],.birthday-page[data-section="04"] .scroll-progress [data-progress-id="04"]{color:#f4f1e9eb;opacity:1}.birthday-page[data-section="01"] .scroll-progress [data-progress-id="01"] i,.birthday-page[data-section="02"] .scroll-progress [data-progress-id="02"] i,.birthday-page[data-section="03"] .scroll-progress [data-progress-id="03"] i,.birthday-page[data-section="04"] .scroll-progress [data-progress-id="04"] i{width:18px}@media(max-width:767px){html,body,.app-shell{background:#0b0a0d}.scroll-progress{display:none}.cover-copy{top:46%}.cover-copy h1{max-width:100%;font-size:clamp(58px,18vw,76px);line-height:.82}.cover-copy h1 em{margin-left:.72em}.cover-copy .cover-intro{grid-column:2 / 11;margin-top:26px;font-size:12px}.cover-copy .primary-button{grid-column:2 / 8;margin-top:30px}.birthday-content{width:calc(100% - 48px)}.birthday-hero{min-height:calc(100svh - 16px);padding:94px 0 70px;row-gap:28px}.birthday-hero>.section-label{top:82px}.section-label{gap:8px;font-size:7px}.section-label i{width:64px}.age-motif{top:43%;font-size:clamp(150px,54vw,220px)}.birthday-heading>p{grid-column:1 / 10}.birthday-heading h1{font-size:clamp(46px,12.4vw,54px)}.birthday-heading h1>span{grid-column:1 / 12}.birthday-heading h1>em{grid-column:5 / 13}.cake-moment{grid-column:6 / 13}.section-heading{min-height:76svh}.section-heading .section-label{grid-column:1 / 13;margin-bottom:34px}.section-kicker{grid-column:1 / 13;font-size:7px}.section-heading h2{grid-column:1 / 12;font-size:clamp(58px,17vw,72px)}.section-heading--quiet{min-height:54svh;padding-bottom:10vh}.section-heading--quiet .section-label,.section-heading--final .section-label{grid-column:4 / 13}.tribute-item{min-height:64svh;padding:104px 0;grid-template-rows:auto auto auto}.tribute-item:before,.tribute-item[data-align=left]:before,.tribute-item[data-align=right]:before{grid-column:1 / 6;grid-row:1;width:88px;margin-bottom:38px}.tribute-item .tribute-item-copy,.tribute-item[data-align=left] .tribute-item-copy,.tribute-item[data-align=right] .tribute-item-copy,.tribute-item--with-image[data-align=left] .tribute-item-copy,.tribute-item--with-image[data-align=right] .tribute-item-copy{grid-column:1 / 13;grid-row:2}.tribute-item-copy h3{font-size:clamp(38px,11.5vw,48px);line-height:1.04}.tribute-item--long{min-height:92svh;text-align:left;place-items:initial}.tribute-item--long:before{position:static;grid-column:1 / 6;transform:none}.tribute-item--long .tribute-item-copy,.tribute-item--long[data-align=right] .tribute-item-copy{grid-column:1 / 13;text-align:left}.tribute-item--long .tribute-item-copy h3{font-size:clamp(34px,9.3vw,40px);line-height:1.22}.tribute-item--with-image[data-align=left] .tribute-media,.tribute-item--with-image[data-align=right] .tribute-media{grid-column:4 / 13;grid-row:3;width:min(58vw,230px);margin:44px 0 0 auto}.story-ending>.tribute-item .tribute-item-copy{grid-column:1 / 13}.story-ending>.tribute-item:before{grid-column:1 / 5}.tribute-finale{min-height:94svh}.tribute-finale-copy{grid-column:1 / 13}.tribute-closing{font-size:clamp(54px,15vw,66px)}.tribute-signature{right:2px;bottom:max(58px,env(safe-area-inset-bottom));margin:0}}@media(prefers-reduced-motion:reduce){.cover-screen.is-leaving{animation:none!important;opacity:0}.age-motif{opacity:.075!important;transform:translate(-47%,-52%)!important}}.story-portrait{position:relative}.tribute-canvas{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-template-rows:repeat(24,clamp(58px,4.3vw,68px));column-gap:var(--grid-gap);row-gap:clamp(10px,1vw,16px);padding:clamp(150px,19vh,210px) 0 clamp(140px,18vh,200px)}.tribute-canvas-item,.tribute-canvas-item:nth-child(2n){min-height:0;display:block;padding:0;align-self:center;counter-increment:none}.tribute-canvas-item:before,.tribute-canvas-item:nth-child(2n):before{display:none;content:none}.tribute-canvas-item .tribute-item-copy,.tribute-canvas-item:nth-child(2n) .tribute-item-copy{min-width:0;text-align:left}.tribute-canvas-item .tribute-item-copy h3{max-width:none;font-size:clamp(42px,4.25vw,68px);line-height:1.02}.tribute-canvas-item .tribute-item-copy p{margin-top:clamp(13px,1.5vh,18px)}.tribute-canvas-item:nth-child(1){grid-column:1 / 6;grid-row:1 / 3}.tribute-canvas-item:nth-child(2){grid-column:7 / 13;grid-row:2 / 5}.tribute-canvas-item:nth-child(3){grid-column:2 / 8;grid-row:5 / 7}.tribute-canvas-item:nth-child(4){grid-column:8 / 13;grid-row:6 / 8}.tribute-canvas-item:nth-child(5){grid-column:1 / 6;grid-row:8 / 10}.tribute-canvas-item:nth-child(6){grid-column:6 / 13;grid-row:9 / 11}.tribute-canvas-item:nth-child(7){grid-column:2 / 8;grid-row:11 / 13}.tribute-canvas-item:nth-child(8){grid-column:7 / 13;grid-row:12 / 14}.tribute-canvas-item:nth-child(9){grid-column:1 / 5;grid-row:14 / 16}.tribute-canvas-item:nth-child(10){grid-column:3 / 11;grid-row:16 / 19}.tribute-canvas-item:nth-child(11){grid-column:8 / 13;grid-row:19 / 21}.tribute-canvas-item:nth-child(12){grid-column:1 / 7;grid-row:20 / 22}.tribute-canvas-item:nth-child(13){grid-column:5 / 12;grid-row:23 / 25}.tribute-canvas-item:nth-child(3) .tribute-item-copy h3,.tribute-canvas-item:nth-child(8) .tribute-item-copy h3,.tribute-canvas-item:nth-child(13) .tribute-item-copy h3{font-size:clamp(48px,5.1vw,80px)}.tribute-canvas-item:nth-child(10),.tribute-canvas-item:nth-child(10) .tribute-item-copy{text-align:center}.tribute-canvas-item:nth-child(10) .tribute-item-copy h3{max-width:900px;margin-inline:auto;font-size:clamp(42px,4.8vw,72px);line-height:1.12}.tribute-canvas .tribute-item--with-image{display:grid;grid-template-columns:minmax(0,1fr) clamp(120px,12vw,180px);gap:clamp(18px,2vw,30px);align-items:center}.tribute-canvas .tribute-item--with-image .tribute-item-copy,.tribute-canvas .tribute-item--with-image:nth-child(2n) .tribute-item-copy{grid-column:1;grid-row:1}.tribute-canvas .tribute-item--with-image .tribute-media,.tribute-canvas .tribute-item--with-image:nth-child(2n) .tribute-media{grid-column:2;grid-row:1;width:100%;max-width:180px;margin:0;justify-self:end}.tribute-canvas .tribute-media-frame{border-radius:0}.tribute-finale{min-height:max(100svh,720px);padding:clamp(120px,16vh,170px) 0}.tribute-finale-copy{grid-column:3 / 11;text-align:left}.tribute-closing{max-width:880px;color:#f4f1e9bd;font-size:clamp(24px,2.45vw,38px);line-height:1.82;letter-spacing:.015em;text-align:left;text-wrap:pretty;white-space:normal}.closing-nowrap{white-space:nowrap}@media(max-width:767px){.tribute-canvas{display:block;padding:104px 0 92px}.tribute-canvas-item,.tribute-canvas-item:nth-child(2n){--item-indent: 0px;width:calc(100% - var(--item-indent));min-height:auto;margin-left:var(--item-indent);padding:56px 0 62px}.tribute-canvas-item:nth-child(3n+2){--item-indent: 10vw}.tribute-canvas-item:nth-child(3n){--item-indent: 4vw}.tribute-canvas-item .tribute-item-copy h3,.tribute-canvas-item:nth-child(3) .tribute-item-copy h3,.tribute-canvas-item:nth-child(8) .tribute-item-copy h3,.tribute-canvas-item:nth-child(13) .tribute-item-copy h3{font-size:clamp(32px,9.7vw,42px);line-height:1.08}.tribute-canvas-item:nth-child(10),.tribute-canvas-item:nth-child(10) .tribute-item-copy{text-align:left}.tribute-canvas-item:nth-child(10) .tribute-item-copy h3{max-width:100%;font-size:clamp(29px,8.4vw,36px);line-height:1.18}.tribute-canvas-item .tribute-item-copy p{margin-top:14px}.tribute-canvas .tribute-item--with-image{display:block}.tribute-canvas .tribute-item--with-image .tribute-media,.tribute-canvas .tribute-item--with-image:nth-child(2n) .tribute-media{width:min(44vw,170px);margin:28px 0 0 auto}.tribute-finale{min-height:max(100svh,720px);padding:104px 0 92px}.tribute-finale-copy{grid-column:1 / 13}.tribute-closing{max-width:100%;font-size:clamp(20px,5.7vw,25px);line-height:1.82;letter-spacing:.02em}}
