html,body,#root{height:100%;width:100%;margin:0}body{overflow-x:hidden}html,body,#root{min-height:100%;width:100%}#root{max-width:none!important;margin:0!important;padding:0!important}body{margin:0;overflow-x:hidden}:root{--ink: #2f1930;--muted: rgba(73, 41, 81, .68);--glass: rgba(255, 255, 255, .58);--glass-strong: rgba(255, 255, 255, .74);--stroke: rgba(220, 184, 202, .36);--shadow: 0 28px 76px rgba(34, 12, 35, .2);--shadow-soft: 0 16px 34px rgba(34, 12, 35, .14);--radius: 24px}*{box-sizing:border-box}.app{min-height:100vh;width:100%;position:relative;color:var(--ink);font-family:Trebuchet MS,Segoe UI,sans-serif;overflow-x:hidden;background:radial-gradient(920px 620px at 18% 18%,rgba(255,193,224,.66),transparent 60%),radial-gradient(860px 620px at 84% 20%,rgba(255,223,179,.5),transparent 62%),radial-gradient(940px 700px at 50% 100%,rgba(255,214,236,.62),transparent 66%),linear-gradient(180deg,#fff2f7,#fff6ef 40%,#fff0f7)}.app:before{content:"";position:fixed;inset:-20%;pointer-events:none;opacity:.52;background-image:radial-gradient(1px 1px at 10% 20%,rgba(255,255,255,.95),transparent 60%),radial-gradient(1px 1px at 30% 80%,rgba(255,255,255,.8),transparent 60%),radial-gradient(1px 1px at 70% 30%,rgba(255,255,255,.9),transparent 60%),radial-gradient(1px 1px at 90% 70%,rgba(255,255,255,.85),transparent 60%),radial-gradient(1px 1px at 55% 55%,rgba(255,255,255,.75),transparent 60%);background-size:260px 260px;animation:drift 70s linear infinite}@keyframes drift{0%{transform:translateZ(0)}to{transform:translate3d(-6%,6%,0)}}.topBar{position:relative;z-index:30}.topBadge{position:fixed;top:18px;left:0;right:0;display:flex;justify-content:center;padding:0 16px}.pill{padding:11px 16px;border-radius:999px;background:var(--glass-strong);border:1px solid rgba(255,255,255,.52);box-shadow:var(--shadow-soft);font-weight:800;letter-spacing:.02em;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.pageShell{width:min(680px,calc(100% - 28px));margin:0 auto;padding:92px 0 26px;position:relative;z-index:2}.heroStage{width:100%;display:flex;justify-content:center}.envelopeWrap{width:100%;max-width:620px;text-align:center;position:relative;padding-top:clamp(170px,22vh,240px)}.envelopeBtn{appearance:none;display:block;width:100%;border:none;background:transparent;cursor:pointer;padding:0;margin-bottom:12px;transition:margin-bottom .52s cubic-bezier(.22,1,.36,1)}.envelopeWrap.is-open .envelopeBtn{margin-bottom:252px}.envelope{width:min(560px,94vw);height:360px;position:relative;margin:0 auto;border-radius:var(--radius);filter:drop-shadow(var(--shadow));transform:translateZ(0);overflow:visible}.envBack{position:absolute;inset:0;border-radius:var(--radius);background:linear-gradient(180deg,#fffffff7,#fffafdcc);border:1px solid rgba(220,184,202,.45);z-index:1}.envFront{position:absolute;inset:0;border-radius:var(--radius);background:linear-gradient(135deg,#ffdcebad,#ffffff3d),linear-gradient(225deg,#ffe7c794,#ffffff38);border:1px solid rgba(215,179,201,.34);clip-path:polygon(0 45%,50% 78%,100% 45%,100% 100%,0 100%);z-index:4}.envFlap{position:absolute;left:0;right:0;top:0;height:68%;border-radius:var(--radius);transform-origin:50% 0%;background:linear-gradient(180deg,#fffffffa,#fff2f7c2);border:1px solid rgba(220,184,202,.34);clip-path:polygon(0 0,100% 0,50% 64%);z-index:5}.envelope.letterOut .envFront{z-index:1;opacity:.55}.envelope.letterOut .envFlap{z-index:1;opacity:.34}.seal{position:absolute;left:39.75%;top:60%;transform:translate(-50%,-50%);z-index:6;background:transparent;border:none;width:auto;height:auto;font-size:118px;line-height:1;color:#d11b42;text-shadow:0 10px 18px rgba(20,10,30,.18);pointer-events:none}.pocketMask{position:absolute;left:0;right:0;bottom:0;height:68%;overflow:hidden;z-index:2;display:grid;place-items:end center;padding-bottom:18px}.envelope.letterOut .pocketMask{overflow:visible}.letter{position:relative;width:min(520px,82%);max-width:520px;height:520px;max-height:520px;display:flex;flex-direction:column;border-radius:18px;background:#fffffffa;border:1px solid rgba(220,184,202,.34);box-shadow:var(--shadow-soft);padding:16px;z-index:3}.envelope.letterOut .letter{z-index:20}.letterHead{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.stamp{width:44px;height:44px;display:grid;place-items:center;font-size:44px}.toLine{display:flex;align-items:baseline;gap:8px;color:#492951ad}.toLine strong{color:var(--ink)}.letterBody{flex:1;overflow-y:auto;padding-right:6px}.letterBody::-webkit-scrollbar,.reasonsDockList::-webkit-scrollbar,.drawer::-webkit-scrollbar{width:10px}.letterBody::-webkit-scrollbar-thumb,.reasonsDockList::-webkit-scrollbar-thumb,.drawer::-webkit-scrollbar-thumb{background:#c699b757;border-radius:999px}.letterText{margin:0;text-align:left;white-space:pre-wrap;line-height:1.58;font-size:15.5px;color:#281234eb;position:relative}.hint{margin-top:14px;display:inline-flex;gap:10px;align-items:center;padding:10px 12px;border-radius:999px;background:#ffffff8f;border:1px dashed rgba(212,170,197,.55);color:#492951c7;box-shadow:var(--shadow-soft)}.hintSpark{filter:drop-shadow(0 8px 16px rgba(0,0,0,.1))}.subNote,.afterOpenLine{width:min(560px,94vw);margin:14px auto 0;color:var(--muted)}.afterOpenLine{font-weight:700;color:#562e60d1}.contentStack{width:100%;display:flex;flex-direction:column;gap:22px;padding:16px 0 10px}.birthdayCardWrap,.reasonsDockWrap,.wishCardWrap,.constellationSection,.reassuranceSection{width:100%;display:grid;place-items:center}.birthdayCard{width:min(560px,94vw)}.birthdayCardInner{width:100%;text-align:left;padding:20px 22px;border-radius:22px;background:var(--glass);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.66);box-shadow:0 18px 50px #140a1e1f}.birthdayCardLabel{font-size:18px;font-weight:900;line-height:1.3;color:#562248eb}.birthdayCardSub{margin-top:8px;font-size:13px;color:var(--muted)}.reasonsDock,.wishCard,.constellationWrap,.reassuranceWrap{width:min(560px,94vw)}.reasonsDock{text-align:left;position:relative;background:var(--glass);border:1px solid var(--stroke);border-radius:18px;box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding:12px 12px 10px}.reasonsDock:after{content:"";position:absolute;inset:-10px;border-radius:22px;pointer-events:none;opacity:.92;background:radial-gradient(180px 120px at 20% 20%,rgba(255,180,220,.35),transparent 60%),radial-gradient(220px 160px at 80% 50%,rgba(255,220,175,.24),transparent 60%)}.reasonsDockTop{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}.reasonsDockTitle{font-weight:900;color:#2d1237f0}.reasonsRevealBtn{appearance:none;border:1px solid rgba(220,184,202,.4);background:#ffffffe0;padding:10px 12px;border-radius:999px;cursor:pointer;font-weight:850;box-shadow:var(--shadow-soft);white-space:nowrap;transition:transform .16s ease,opacity .16s ease}.reasonsRevealBtn:hover{transform:translateY(-1px)}.reasonsRevealBtn:disabled{opacity:.55;cursor:not-allowed;transform:none}.reasonsDockSub,.reasonsDockList{position:relative;z-index:1}.reasonsDockSub{font-size:12.5px;color:var(--muted);margin-bottom:10px}.reasonsDockList{display:flex;flex-direction:column;gap:6px;max-height:160px;overflow:auto;padding-right:6px}.reasonsEmpty{color:#49295199;font-weight:700;padding:8px 2px}.reasonItem{display:flex;gap:8px;align-items:flex-start;color:#281234eb;font-weight:650;line-height:1.35}.spark{color:#cc67a7c7;margin-top:1px}.wishCard{text-align:left;background:var(--glass);border:1px solid var(--stroke);border-radius:18px;box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding:16px 16px 18px}.wishCardDisabled{opacity:.7}.wishCardTop{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.wishCardTitle{font-weight:900;color:#2d1237f0}.wishCardSub{margin-top:4px;font-size:12.5px;color:var(--muted)}.wishCardCount{min-width:44px;padding:8px 10px;border-radius:999px;background:#ffffffb8;border:1px solid var(--stroke);text-align:center;font-size:12px;font-weight:800;color:#562e60d1}.cakeCard{margin-top:18px;padding-top:8px}.cakeCandles{display:flex;justify-content:center;align-items:flex-end;gap:28px;margin-bottom:10px}.candleButton{appearance:none;border:none;background:transparent;display:inline-flex;flex-direction:column;align-items:center;gap:2px;padding:0;cursor:pointer}.candleButton:disabled{cursor:default}.candleFlame{width:14px;height:18px;border-radius:70%/75% 75% 45% 45%;background:radial-gradient(circle at 50% 35%,#fff9c2fa,#ffad3feb 62%,#ee6e34eb);opacity:.18;transform:scale(.7);transition:opacity .22s ease,transform .22s ease,box-shadow .22s ease}.candleButton.isLit .candleFlame{opacity:1;transform:scale(1);box-shadow:0 0 18px #ffb64cbf;animation:flameFlicker 1.6s ease-in-out infinite}.candleWax{width:16px;height:46px;border-radius:999px;background:linear-gradient(180deg,#ffd9ea,#f4a6c9);border:1px solid rgba(206,138,171,.42);box-shadow:inset 0 -6px 10px #d167952e}.cakeBase{width:min(240px,80%);margin:0 auto;position:relative}.cakeIcing{display:block;height:22px;border-radius:18px 18px 10px 10px;background:linear-gradient(180deg,#fff7faf5,#ffe4eff2);border:1px solid rgba(230,196,212,.6);position:relative;z-index:2}.cakeIcing:after{content:"";position:absolute;left:8%;right:8%;bottom:-10px;height:12px;border-radius:999px;background:radial-gradient(circle at 10% 50%,rgba(255,233,243,.98) 0 18%,transparent 19%),radial-gradient(circle at 30% 50%,rgba(255,233,243,.98) 0 18%,transparent 19%),radial-gradient(circle at 50% 50%,rgba(255,233,243,.98) 0 18%,transparent 19%),radial-gradient(circle at 70% 50%,rgba(255,233,243,.98) 0 18%,transparent 19%),radial-gradient(circle at 90% 50%,rgba(255,233,243,.98) 0 18%,transparent 19%)}.cakePlate{display:block;height:44px;margin-top:8px;border-radius:14px 14px 24px 24px;background:linear-gradient(180deg,#ffc2dbeb,#f59cc0eb);border:1px solid rgba(216,137,171,.44);box-shadow:inset 0 -10px 16px #be638f29}.wishBlessing{margin:18px 4px 0;color:#492951d6;line-height:1.55;font-weight:700}@keyframes flameFlicker{0%,to{transform:scale(1) translateY(0)}50%{transform:scale(1.04) translateY(-1px)}}.constellationWrap{text-align:center;background:radial-gradient(circle at 50% 118%,rgba(255,171,183,.26),transparent 0 34%),radial-gradient(circle at 18% 20%,rgba(160,122,255,.22),transparent 0 36%),radial-gradient(circle at 82% 18%,rgba(255,209,160,.14),transparent 0 28%),linear-gradient(180deg,#4a306af0,#2a2258f5 52%,#1c1d48fa);border:1px solid rgba(202,183,255,.2);border-radius:20px;box-shadow:0 22px 50px #180c2d47,inset 0 1px #ffffff0f;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding:18px 18px 22px}.constellationInner{display:grid;justify-items:center}.constellationSvg{width:min(390px,100%);height:auto;aspect-ratio:320 / 260;overflow:visible}.silverStar{fill:#fffffffa;stroke:#fff0d0fa;stroke-width:.6;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 16px rgba(255,247,211,1)) drop-shadow(0 0 32px rgba(255,218,138,.72));cursor:pointer;transform-origin:center;animation:twinkleSlow 4.5s ease-in-out infinite;transition:filter .2s ease,transform .2s ease,fill .2s ease,stroke .2s ease;-webkit-tap-highlight-color:transparent}.silverStar:focus{outline:none}.silverStar:focus-visible{outline:none;stroke:#fff7e2;stroke-width:1.1;filter:drop-shadow(0 0 18px rgba(255,248,222,1)) drop-shadow(0 0 34px rgba(255,214,125,.86))}@keyframes twinkleSlow{0%,to{opacity:1}50%{opacity:.78}}.silverStar:hover{transform:scale(1.1);filter:drop-shadow(0 0 22px rgba(255,250,235,1)) drop-shadow(0 0 38px rgba(255,223,158,.86))}.silverStar.active{animation:none;fill:#fff;stroke:#fff2cd;filter:drop-shadow(0 0 24px rgba(255,248,222,1)) drop-shadow(0 0 46px rgba(255,216,130,.94));transform:scale(1.08)}.heartPath{fill:none;stroke:#fff8ecfc;stroke-width:2.8;stroke-linecap:round;stroke-dasharray:520;stroke-dashoffset:520;animation:drawHeart 1.6s ease forwards}.heartPathGlow{fill:none;stroke:#ffe8bfdb;stroke-width:6;stroke-linecap:round;stroke-dasharray:520;stroke-dashoffset:520;animation:drawHeart 1.6s ease forwards;filter:blur(.2px) drop-shadow(0 0 16px rgba(255,220,154,.92))}@keyframes drawHeart{to{stroke-dashoffset:0}}.constellationHint{margin-top:10px;font-size:12.5px;color:#f9f0ffe6;background:#ffffff1a;border:1px solid rgba(224,205,255,.18);border-radius:999px;display:inline-block;padding:8px 12px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.constellationText{margin-top:14px;font-size:14px;font-weight:800;color:#fff0f5f2;animation:fadeIn .8s ease forwards}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.reassuranceWrap{display:grid;justify-items:center;gap:12px;padding:0}.reassuranceButton,.reassuranceNext{appearance:none;border:1px solid rgba(220,184,202,.38);background:#ffffffc7;box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:999px;padding:11px 14px;cursor:pointer;color:#492951d6;font-weight:800}.reassuranceCard{width:min(440px,calc(100vw - 40px));background:#ffffff9e;border:1px solid rgba(220,184,202,.34);border-radius:20px;box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding:14px 16px 16px;text-align:center}.reassuranceLabel{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#562e60a3;font-weight:800}.reassuranceText{margin:12px 0 14px;color:#492951e0;font-weight:700;line-height:1.5}.reassuranceNext{padding:9px 12px;font-size:13px}.footer{width:min(680px,calc(100% - 28px));margin:6px auto 42px;padding:0 0 12px;color:#4929519e;text-align:center;font-weight:700;position:relative;z-index:2}.floatLayer{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:1}.floatItem{position:absolute;will-change:transform}.floatEmoji{display:inline-block;transform:translateZ(0);-webkit-user-select:none;user-select:none;line-height:1;filter:saturate(1.05)}.drawerTab{position:fixed;right:12px;top:50%;transform:translateY(-50%);z-index:60;display:flex;align-items:center;gap:10px;border:1px solid rgba(220,184,202,.36);background:#ffffffbd;box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:999px;padding:10px 12px;cursor:pointer}.drawerArrow{font-size:22px;line-height:1;color:#6c3362d9;font-weight:900;margin-top:-1px}.drawerLabel{font-weight:800;color:#492951cc;font-size:13px}.drawer{position:fixed;right:0;top:0;height:100dvh;width:min(360px,86vw);z-index:59;transform:translate(110%);transition:transform .32s cubic-bezier(.2,.9,.2,1);background:#ffffffc2;border-left:1px solid rgba(220,184,202,.36);box-shadow:-20px 0 50px #1e0a282e;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);padding:14px;overflow:auto}.drawer.open{transform:translate(0)}.drawerHeader{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.drawerTitle{font-weight:900;color:#2d1237eb}.drawerSub{font-size:12px;color:var(--muted)}.drawerClose,.photoClose{border:1px solid rgba(220,184,202,.36);background:#ffffffc7;border-radius:12px;width:36px;height:36px;cursor:pointer;font-weight:900;color:#492951c7}.drawerGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.drawerThumb{border:1px solid rgba(220,184,202,.3);background:#ffffff8f;border-radius:14px;overflow:hidden;padding:0;cursor:pointer;box-shadow:var(--shadow-soft)}.drawerThumb img{width:100%;height:110px;object-fit:cover;display:block}.drawerCap{padding:8px 10px;font-size:12px;font-weight:750;color:#492951bd}.photoModal{position:fixed;inset:0;z-index:200;display:grid;place-items:center;background:#00000047;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding:18px}.photoCard{position:relative;width:min(820px,92vw);border-radius:18px;overflow:hidden;background:#ffffffd6;border:1px solid rgba(220,184,202,.38);box-shadow:0 30px 90px #140a1e40}.photoCard img{width:100%;max-height:72vh;object-fit:contain;display:block;background:#ffffff94}.photoCaption{padding:10px 12px 12px;font-weight:800;font-size:13px;color:#492951c2}.photoClose{position:absolute;top:10px;right:10px;font-size:18px}@media(max-width:900px){.drawerTab{top:auto;bottom:18px;transform:none}}@media(max-width:768px){.topBadge{top:14px}.pill{font-size:14px}.pageShell{width:min(640px,calc(100% - 18px));padding-top:88px}.envelopeWrap{padding-top:144px}.envelopeWrap.is-open .envelopeBtn{margin-bottom:228px}.envelope{height:320px}.letter{height:490px}.constellationSvg{width:min(320px,100%)}.drawer{width:min(330px,90vw)}}@media(max-width:520px){.hint,.subNote,.afterOpenLine,.footer,.wishBlessing,.reassuranceText{font-size:13px}.pageShell{width:calc(100% - 14px)}.envelopeWrap{padding-top:124px}.envelopeWrap.is-open .envelopeBtn{margin-bottom:212px}.letter{width:min(520px,86%);height:470px}.letterText{font-size:14px}.birthdayCardInner{padding:18px}.birthdayCardLabel{font-size:16px}.reasonsDockTop,.wishCardTop{align-items:flex-start;flex-direction:column}.wishCardCount{margin-top:4px}.cakeCandles{gap:22px}.reassuranceButton,.reassuranceNext{font-size:13px}.drawerTab{right:8px;bottom:14px}.drawerThumb img{height:100px}}
