:root{--paper:#f6f1e8;--ink:#423d34;--muted:#857c6e;--accent:#b36345;--line:#ded5c7}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif}.grain{position:fixed;inset:0;pointer-events:none;z-index:6;opacity:.16;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='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.2' filter='url(%23n)'/%3E%3C/svg%3E")}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:7px}header{margin:0 5%;height:95px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{font-size:10px;letter-spacing:2px;display:flex;align-items:center;gap:12px}.brand span{font-family:"Songti SC",SimSun,serif;font-size:19px;letter-spacing:3px}.brand i{font-size:22px;color:var(--accent);font-style:normal}nav{display:flex;gap:32px;font-size:12px;color:#6f665a}nav a:hover{color:var(--accent)}.edition{font-size:10px;letter-spacing:2px;color:var(--muted)}main{max-width:1560px;margin:auto;padding:0 5%}.hero{position:relative;text-align:center;padding:66px 0 28px}.eyebrow{font-size:10px;letter-spacing:2.6px;color:var(--muted);font-weight:normal}.hero .eyebrow span{display:inline-block;background:var(--accent);height:5px;width:5px;border-radius:50%;margin:0 9px 2px 0}.salutation{font-size:15px;letter-spacing:3px;margin:44px 0 15px}h1{font-family:"Songti SC","Noto Serif CJK SC",SimSun,serif;font-weight:400;font-size:clamp(28px,3.4vw,48px);letter-spacing:5px;margin:0 0 37px}.timer{display:flex;justify-content:center;align-items:flex-start;gap:clamp(10px,2.2vw,34px);padding:0 3%;font-variant-numeric:tabular-nums}.unit>span{font-family:Georgia,"Times New Roman",serif;font-size:clamp(48px,9.8vw,145px);font-weight:400;letter-spacing:-.055em;line-height:1.15;display:block}.unit small{display:flex;justify-content:center;align-items:center;gap:9px;margin-top:16px;font-size:12px;font-weight:400;color:var(--muted)}.unit small i{font:9px Arial,sans-serif;letter-spacing:2px}.seconds{color:var(--accent)}.sep{font-family:Georgia,serif;font-size:clamp(32px,5vw,75px);line-height:1.75;font-weight:normal;color:#b8ae9e}.since{font-size:10px;color:var(--muted);letter-spacing:3px;display:flex;justify-content:center;align-items:center;gap:15px;margin:38px 0 24px}.rule{width:38px;height:1px;background:var(--line)}.hero-note{font-size:13px;line-height:2;color:var(--muted);letter-spacing:1px}.mobile{display:none}.birthday{font-size:12px;letter-spacing:1px;display:inline-block;border:1px solid #cfb9a5;border-radius:40px;padding:10px 22px;margin-top:16px;color:var(--accent)}.down{display:block;margin:29px auto 0;font-size:21px;color:var(--muted);width:45px;padding:10px}.sketch{position:absolute;pointer-events:none}.star{font-family:Georgia,serif;color:#b99d70}.s1{font-size:66px;top:106px;left:7%;transform:rotate(-15deg)}.s2{font-size:34px;top:172px;right:9%}.circle{width:22px;height:22px;border:1px solid #c3b29a;border-radius:50%;bottom:150px;left:14%}.side-note{position:absolute;right:0;bottom:115px;writing-mode:vertical-rl;font-size:9px;color:#a29888;letter-spacing:2px}.dateline{border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:18px 0;font-size:10px;letter-spacing:1px;color:var(--muted);font-variant-numeric:tabular-nums}.wish{display:grid;grid-template-columns:1fr 1fr;gap:80px;max-width:1070px;margin:0 auto;padding:95px 0}.wish h2,.letter h2{font-family:"Songti SC",SimSun,serif;font-size:clamp(28px,3vw,43px);font-weight:400;letter-spacing:2px;line-height:1.5;margin:23px 0}.wish-copy>p:not(.eyebrow):not(.status){font-size:14px;line-height:2.2;color:var(--muted)}.pill{background:var(--ink);color:var(--paper);border:0;border-radius:40px;padding:15px 23px;display:flex;gap:32px;align-items:center;margin-top:26px;font:12px Arial,"PingFang SC",sans-serif;cursor:pointer;transition:background .2s}.pill:hover{background:var(--accent)}.status{font-size:11px;color:var(--muted);line-height:1.7;min-height:2em;margin-top:13px}.cake-scene{position:relative;background:#ebe1d2;border-radius:50% 50% 4px 4px;display:flex;align-items:center;justify-content:center;min-height:390px;overflow:hidden}.cake-label{position:absolute;top:50px;font-size:9px;letter-spacing:2px;color:var(--muted)}.cake{position:relative;width:185px;height:150px;margin-top:65px}.layer{position:absolute;left:12px;top:60px;height:77px;width:160px;border-radius:0 0 48% 48% / 0 0 20% 20%;background:linear-gradient(#b8795d 0 32%,#e9bb98 32% 39%,#b8795d 39% 72%,#e9bb98 72% 79%,#b8795d 79%);box-shadow:inset -12px 0 20px #a2644220}.frosting{position:absolute;top:43px;left:12px;width:160px;height:42px;border-radius:50%;background:#fcf4de;z-index:2;box-shadow:0 7px 0 #eed9b6}.plate{position:absolute;bottom:0;left:-12px;width:210px;height:28px;border-radius:50%;background:#dbcfbd;border-bottom:5px solid #c3b49d;z-index:0}.layer{z-index:1}.candle{position:absolute;left:86px;top:-6px;width:12px;height:70px;background:repeating-linear-gradient(45deg,#78917a 0 7px,#d9ddc1 7px 13px);z-index:3;border-radius:2px}.wick{position:absolute;left:5px;top:-5px;height:6px;width:2px;background:#534433}.flame{position:absolute;top:-34px;left:-2px;width:17px;height:29px;border-radius:60% 40% 55% 45%;background:radial-gradient(ellipse at 50% 80%,#fff6c6 10%,#e9ba5c 50%,#d79141);box-shadow:0 0 30px #edb95a70;transform:rotate(6deg);animation:flicker 2s ease-in-out infinite;transition:opacity .3s}.flame.out{opacity:0;animation:none}.cake-caption{position:absolute;bottom:33px;font-family:Georgia,"Songti SC",serif;font-style:italic;font-size:19px;color:#83694e}.cake-star{position:absolute;color:#b59362}.cs1{font-size:28px;top:120px;left:45px}.cs2{font-size:42px;right:48px;top:130px}.letter{max-width:1070px;margin:0 auto 80px;padding:45px 7% 55px;border:1px solid var(--line);background:#faf7f0;position:relative;box-shadow:0 10px 30px #59452403}.letter-top{display:flex;justify-content:space-between;align-items:center}.stamp{border:1px solid #cbb59a;padding:9px 13px;font:24px Georgia,serif;text-align:center;color:#b3946b;transform:rotate(8deg);line-height:1}.stamp small{font:9px Arial;letter-spacing:2px}.letter-kicker{font-size:11px;letter-spacing:2px;color:var(--muted);margin-top:30px}.letter h2{font-size:clamp(25px,2.7vw,38px)}.letter>p:last-of-type{font-size:14px;line-height:2.4;color:var(--muted)}.sign{font-family:"Songti SC",SimSun,serif;font-size:18px;letter-spacing:2px;margin-top:34px}.sign span{color:var(--accent);padding-left:20px;font-size:28px}footer{border-top:1px solid var(--line);padding:28px 0 35px;display:flex;justify-content:space-between;align-items:center;color:var(--muted);gap:30px;font-size:10px;line-height:2;letter-spacing:1px}footer b{font-weight:normal;color:var(--ink);font-size:12px}footer p{text-align:right;letter-spacing:0}footer a{font-size:23px}#confetti{position:fixed;inset:0;z-index:9;pointer-events:none;overflow:hidden}.confetto{position:absolute;top:-25px;width:7px;height:13px;animation:fall 3.5s ease-in forwards}@keyframes flicker{50%{transform:rotate(-5deg) scale(.93,1.08)}}@keyframes fall{to{transform:translateY(105vh) rotate(540deg);opacity:0}}@media(min-width:1550px){.hero{padding-top:80px;padding-bottom:40px}.timer{gap:34px}}@media(max-width:750px){header{height:75px}.edition{display:none}nav{gap:18px;font-size:11px}.hero{padding-top:46px}.hero .eyebrow{font-size:8px;letter-spacing:1.6px}.salutation{margin-top:35px;font-size:13px}h1{font-size:27px;letter-spacing:3px;margin-bottom:24px}.timer{gap:9px;padding:0}.unit>span{font-size:clamp(34px,9.5vw,70px);letter-spacing:-.06em}.sep{font-size:24px;line-height:1.6}.unit small{font-size:10px;gap:3px;flex-direction:column;margin-top:12px}.unit small i{font-size:7px;letter-spacing:1px}.since{margin-top:28px;font-size:9px}.hero-note{font-size:12px}.mobile{display:block}.s1{font-size:34px;top:95px;left:1%}.s2{font-size:23px;top:140px;right:1%}.circle,.side-note{display:none}.birthday{font-size:10px;padding:9px 15px}.dateline{flex-direction:column;gap:9px;font-size:9px}.wish{grid-template-columns:1fr;gap:30px;padding:55px 0}.wish-copy{padding:0 5%}.cake-scene{min-height:355px;max-width:440px;width:100%;margin:auto}.letter{padding:25px 7% 35px;margin-bottom:45px}.letter h2{font-size:26px}.letter-top .eyebrow{font-size:8px}.letter-kicker{font-size:10px}footer{flex-wrap:wrap;gap:12px}footer p{text-align:left;order:3;width:100%;font-size:9px;margin:0}.sign{font-size:16px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.flame,.confetto{animation:none}.confetto{display:none}}
/* First-screen night sky */
.night-sky{position:relative;isolation:isolate;background:#000;color:#eeeef2;overflow:hidden;min-height:100svh;display:flex;flex-direction:column}.night-sky canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}.night-sky #meteors{z-index:2}.night-sky header{position:relative;z-index:3;border-color:#ffffff1c;flex-shrink:0}.night-sky header nav,.night-sky .edition{color:#adadb9}.night-sky .brand i{color:#dec99d}.night-sky .hero{z-index:1;width:90%;max-width:1404px;margin:auto;flex:1;display:flex;flex-direction:column;justify-content:center;padding:50px 0 25px}.night-sky .eyebrow{color:#b2a58b}.night-sky .hero .eyebrow span{background:#dfcc9f;box-shadow:0 0 12px #e8d5a488}.night-sky .salutation{color:#c1bec9}.night-sky h1{color:#f1ede7}.night-sky .timer{flex-shrink:0}.night-sky .unit>span{text-shadow:0 0 36px #fff2dc12}.night-sky .unit small,.night-sky .hero-note,.night-sky .since{color:#a4a1ad}.night-sky .seconds{color:#e4cda4}.night-sky .sep{color:#68636f}.night-sky .rule{background:#73664c}.night-sky .birthday{align-self:center;border-color:#bda17455;color:#dcc8a4;background:#0009}.night-sky .down{color:#b8b0c1;margin-top:17px;margin-bottom:0}.night-sky .meteor-hint{align-self:center;background:none;border:0;color:#96929f;font:10px Arial,"PingFang SC",sans-serif;letter-spacing:1.6px;padding:12px 15px;cursor:pointer;margin-top:6px}.night-sky .meteor-hint:hover{color:#e8d4b1}.grain{z-index:0}.dateline,main{position:relative}@media(max-width:750px){.night-sky .hero{padding-top:38px;padding-bottom:22px}.night-sky .meteor-hint{font-size:9px;letter-spacing:.8px}.night-sky .salutation{margin-top:32px}.night-sky{min-height:100svh}}@media(max-height:750px) and (min-width:751px){.night-sky .hero{padding-top:32px}.night-sky .salutation{margin-top:24px}.night-sky h1{margin-bottom:24px}.night-sky .since{margin-top:25px;margin-bottom:15px}.night-sky .birthday{margin-top:10px}}
.life-progress{width:min(540px,90%);align-self:center;margin:8px auto 0;text-align:left}.life-heading{display:flex;justify-content:space-between;align-items:center;color:#cdc7bb;font-size:12px;letter-spacing:1px;margin-bottom:17px}.life-heading small{font-size:8px;color:#8c8790;letter-spacing:1.5px;margin-left:10px}.life-heading strong{font:28px Georgia,serif;color:#efd498;font-variant-numeric:tabular-nums;letter-spacing:0}.life-track{height:7px;border-radius:10px;background:#ffffff16;position:relative}.life-fill{height:100%;width:0;border-radius:10px;background:linear-gradient(90deg,#7d5d24,#c59948 60%,#ffe3a1);box-shadow:0 0 16px #e4b95844;position:relative}.life-fill:after{content:'';position:absolute;right:-4px;top:-1px;width:9px;height:9px;border-radius:50%;background:#fff0ca;box-shadow:0 0 12px #ffcf75aa}.life-scale{display:flex;justify-content:space-between;color:#87818d;font:9px Arial,sans-serif;margin-top:13px}.life-scale span{position:relative}.life-stage{display:flex;align-items:center;justify-content:center;gap:8px;font-size:12px;color:#d7c6a6;letter-spacing:.5px;margin-top:22px}.stage-dot{width:5px;height:5px;border-radius:50%;background:#e5c17a;box-shadow:0 0 8px #e5c17a66}.life-note{color:#918994;font-size:9px;letter-spacing:.5px;text-align:center;margin:11px 0 0}@media(max-width:750px){.life-progress{width:92%;margin-top:7px}.life-heading small{font-size:7px;margin-left:6px;letter-spacing:1px}.life-heading strong{font-size:25px}.life-stage{font-size:10px;letter-spacing:0}.life-note{font-size:8px}}

.life-heading{flex-wrap:wrap;gap:10px}.life-heading strong{font-variant-numeric:tabular-nums;white-space:nowrap}.life-progress{margin-bottom:10px}@media(max-width:400px){.life-heading strong{font-size:22px}.life-heading small{display:block;margin:5px 0 0}}

body{background:#000}.grain{display:none}.night-sky .meteor-hint{margin-top:28px}
