:root{--ink: #3b2e58;--ink-soft: #6d5f8f;--purple: #8b5cf6;--purple-deep: #6d3ff0;--pink: #ff7dab;--coral: #ff8e6e;--gold: #ffc93c;--gold-deep: #f5a623;--mint: #34d399;--sky: #60c8ff;--card: rgba(255, 255, 255, .82);--card-solid: #ffffff;--radius: 26px;--shadow: 0 10px 30px -8px rgba(109, 63, 240, .25);--shadow-soft: 0 6px 18px -6px rgba(59, 46, 88, .18);--font-display: "Baloo 2", system-ui, sans-serif;--font-body: "Nunito", system-ui, sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0}body{font-family:var(--font-body);color:var(--ink);background:linear-gradient(170deg,#d8c7ff,#c9e6ff 38%,#ffe3ef 78%,#fff3d6);background-attachment:fixed;min-height:100dvh;overscroll-behavior-y:none;-webkit-user-select:none;user-select:none}#root{min-height:100dvh}.app-shell{max-width:480px;margin:0 auto;min-height:100dvh;padding:calc(env(safe-area-inset-top) + 16px) 18px calc(env(safe-area-inset-bottom) + 24px);position:relative}h1,h2,h3,.display{font-family:var(--font-display)}.sparkle-field{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:0}.sparkle{position:absolute;font-size:14px;opacity:.5;animation:floaty var(--dur, 9s) ease-in-out infinite;animation-delay:var(--delay, 0s)}@keyframes floaty{0%,to{transform:translateY(0) scale(1);opacity:.25}50%{transform:translateY(-26px) scale(1.15);opacity:.7}}.card{background:var(--card);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-radius:var(--radius);border:1.5px solid rgba(255,255,255,.9);box-shadow:var(--shadow-soft);padding:16px;position:relative}.btn{font-family:var(--font-display);font-weight:700;border:none;cursor:pointer;border-radius:20px;color:#fff;padding:14px 20px;font-size:17px;display:inline-flex;align-items:center;justify-content:center;gap:8px;background:linear-gradient(135deg,var(--purple) 0%,var(--pink) 120%);box-shadow:0 8px 18px -6px #8b5cf68c,inset 0 -3px #0000001f,inset 0 2px #ffffff59;transition:transform .12s ease,box-shadow .12s ease,filter .12s;touch-action:manipulation}.btn:active{transform:scale(.94) translateY(2px);box-shadow:0 4px 10px -4px #8b5cf680,inset 0 -1px #0000001a}.btn:disabled{filter:grayscale(.7) opacity(.6);pointer-events:none}.btn.gold{background:linear-gradient(135deg,#ffd76e,#ff9d3c);box-shadow:0 8px 18px -6px #f5a6238c,inset 0 -3px #0000001f,inset 0 2px #ffffff73}.btn.mint{background:linear-gradient(135deg,#4ade80,#10b981);box-shadow:0 8px 18px -6px #10b98180,inset 0 -3px #0000001f,inset 0 2px #ffffff59}.btn.sky{background:linear-gradient(135deg,#60c8ff,#4f8ef7);box-shadow:0 8px 18px -6px #4f8ef780,inset 0 -3px #0000001f,inset 0 2px #ffffff59}.btn.ghost{background:#ffffffbf;color:var(--ink);box-shadow:var(--shadow-soft);border:1.5px solid rgba(255,255,255,.9)}.btn.danger{background:linear-gradient(135deg,#fb7185,#ef4444)}.btn.small{padding:9px 14px;font-size:14px;border-radius:15px}.btn.block{width:100%}.icon-btn{border:none;cursor:pointer;width:44px;height:44px;border-radius:16px;background:#fffc;box-shadow:var(--shadow-soft);font-size:20px;display:inline-flex;align-items:center;justify-content:center;transition:transform .12s}.icon-btn:active{transform:scale(.88)}.xp-track{height:16px;border-radius:999px;background:#3b2e581f;overflow:hidden;box-shadow:inset 0 2px 4px #3b2e5826}.xp-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,#a78bfa,#f472b6 70%,#fbbf24);background-size:200% 100%;animation:shimmer 3s linear infinite;transition:width .8s cubic-bezier(.22,1.4,.36,1);box-shadow:0 0 10px #f472b68c}@keyframes shimmer{to{background-position:-200% 0}}.pet-stage{border-radius:32px;padding:18px 14px 10px;text-align:center;position:relative;overflow:hidden;border:2px solid rgba(255,255,255,.95);box-shadow:var(--shadow)}.pet-svg-wrap{display:inline-block;position:relative}.pet-bounce{animation:petIdle 3.4s ease-in-out infinite;transform-origin:bottom center}@keyframes petIdle{0%,to{transform:scaleY(1) scaleX(1)}50%{transform:scaleY(1.035) scaleX(.985) translateY(-3px)}}.pet-happy{animation:petHop .9s cubic-bezier(.36,1.6,.5,1) infinite;transform-origin:bottom center}@keyframes petHop{0%,to{transform:translateY(0)}40%{transform:translateY(-14px) rotate(-2deg)}60%{transform:translateY(-10px) rotate(2deg)}}.pet-sad{animation:petSway 4.5s ease-in-out infinite;transform-origin:bottom center}@keyframes petSway{0%,to{transform:rotate(-1.5deg)}50%{transform:rotate(1.5deg)}}.pet-sleep{animation:petBreathe 4s ease-in-out infinite;transform-origin:bottom center}@keyframes petBreathe{0%,to{transform:scaleY(1)}50%{transform:scaleY(1.05)}}.pet-party{animation:petParty .7s ease-in-out infinite;transform-origin:bottom center}@keyframes petParty{0%,to{transform:translateY(0) rotate(-4deg)}50%{transform:translateY(-18px) rotate(4deg)}}.pet-aura{position:absolute;top:-8%;right:-8%;bottom:-8%;left:-8%;border-radius:50%;background:radial-gradient(circle,rgba(255,215,110,.5) 0%,transparent 65%);animation:aura 2.6s ease-in-out infinite;pointer-events:none}@keyframes aura{0%,to{transform:scale(.95);opacity:.6}50%{transform:scale(1.08);opacity:1}}.speech{display:inline-block;background:#fff;border-radius:18px;padding:8px 14px;font-weight:800;font-size:14px;box-shadow:var(--shadow-soft);animation:popIn .4s cubic-bezier(.3,1.6,.5,1)}@keyframes popIn{0%{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}.zzz{position:absolute;font-size:20px;animation:zzz 2.4s ease-in infinite;opacity:0}@keyframes zzz{0%{transform:translate(0) scale(.6);opacity:0}30%{opacity:.9}to{transform:translate(18px,-34px) scale(1.15);opacity:0}}.task-row{display:flex;align-items:center;gap:12px;background:var(--card-solid);border-radius:22px;padding:12px 14px;box-shadow:var(--shadow-soft);border:1.5px solid rgba(139,92,246,.1);transition:transform .15s,opacity .3s;position:relative;overflow:hidden}.task-row:active{transform:scale(.985)}.task-row.done{opacity:.72;background:linear-gradient(135deg,#f0fdf4,#ecfdf5);border-color:#10b98140}.task-row.done .task-name{text-decoration:line-through;color:var(--ink-soft)}.task-check{width:40px;height:40px;min-width:40px;border-radius:14px;border:2.5px dashed rgba(139,92,246,.45);background:#8b5cf60f;display:flex;align-items:center;justify-content:center;font-size:20px;cursor:pointer;transition:all .2s cubic-bezier(.3,1.6,.5,1)}.task-row.done .task-check{border:2.5px solid var(--mint);background:linear-gradient(135deg,#4ade80,#10b981);box-shadow:0 4px 10px -2px #10b98180;animation:checkPop .45s cubic-bezier(.3,2,.5,1)}@keyframes checkPop{0%{transform:scale(.4) rotate(-20deg)}70%{transform:scale(1.2) rotate(6deg)}to{transform:scale(1)}}.task-icon{font-size:26px;width:34px;text-align:center}.task-name{font-weight:800;font-size:15.5px;line-height:1.2}.task-meta{font-size:12px;color:var(--ink-soft);font-weight:700;display:flex;gap:8px;align-items:center}.chip{display:inline-flex;align-items:center;gap:4px;background:#ffc93c2e;color:#b47607;font-weight:900;font-size:12px;border-radius:999px;padding:3px 9px}.chip.xp{background:#8b5cf624;color:var(--purple-deep)}.chip.time{background:#60c8ff29;color:#1272b3}.row{display:flex;align-items:center;gap:10px}.grow{flex:1;min-width:0}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.muted{color:var(--ink-soft);font-weight:700;font-size:13px}.center{text-align:center}.stars-badge{display:inline-flex;align-items:center;gap:6px;background:linear-gradient(135deg,#fff7dd,#ffedb8);border:1.5px solid rgba(245,166,35,.35);border-radius:999px;padding:6px 14px;font-family:var(--font-display);font-weight:800;font-size:17px;color:#a86a00;box-shadow:var(--shadow-soft)}.star-spin{display:inline-block;animation:starTwinkle 2.2s ease-in-out infinite}@keyframes starTwinkle{0%,to{transform:scale(1) rotate(0)}50%{transform:scale(1.25) rotate(12deg)}}.level-badge{display:inline-flex;align-items:center;justify-content:center;min-width:42px;height:42px;padding:0 8px;border-radius:16px;background:linear-gradient(135deg,#a78bfa,#7c3aed);color:#fff;font-family:var(--font-display);font-weight:800;font-size:16px;box-shadow:0 6px 14px -4px #7c3aed8c,inset 0 2px #ffffff59}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#3b2e5873;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:flex-end;justify-content:center;animation:fadeIn .25s ease}@keyframes fadeIn{0%{opacity:0}}.modal-sheet{background:linear-gradient(180deg,#fff,#f6f0ff);width:100%;max-width:480px;border-radius:32px 32px 0 0;padding:20px 20px calc(env(safe-area-inset-bottom) + 24px);max-height:86dvh;overflow-y:auto;animation:slideUp .35s cubic-bezier(.3,1.3,.5,1)}@keyframes slideUp{0%{transform:translateY(60%)}}.modal-handle{width:44px;height:5px;border-radius:99px;background:#3b2e582e;margin:0 auto 14px}input,select,textarea{font-family:var(--font-body);font-weight:700;color:var(--ink);border:2px solid rgba(139,92,246,.25);border-radius:16px;padding:12px 14px;font-size:16px;background:#fff;width:100%;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--purple);box-shadow:0 0 0 4px #8b5cf626}label{font-weight:800;font-size:13px;color:var(--ink-soft);display:block;margin:10px 0 5px}.ring-wrap{position:relative;display:inline-flex;align-items:center;justify-content:center}.ring-label{position:absolute;text-align:center;font-family:var(--font-display);font-weight:800}.confetti-canvas{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:100}@keyframes starFly{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--dx),var(--dy)) scale(.4);opacity:0}}.star-fly{position:fixed;z-index:90;font-size:26px;pointer-events:none;animation:starFly .9s cubic-bezier(.2,.6,.4,1) forwards}.mood-btn{border:2.5px solid transparent;cursor:pointer;background:#fff;border-radius:20px;padding:10px 4px 8px;text-align:center;box-shadow:var(--shadow-soft);transition:all .15s cubic-bezier(.3,1.6,.5,1);font-family:var(--font-body)}.mood-btn .e{font-size:30px;display:block}.mood-btn .t{font-size:11px;font-weight:900;color:var(--ink-soft)}.mood-btn.sel{border-color:var(--purple);transform:scale(1.08);background:#f6f0ff}.mood-btn:active{transform:scale(.92)}.shop-item{background:#fff;border-radius:22px;padding:12px 10px;text-align:center;box-shadow:var(--shadow-soft);border:2px solid transparent;transition:transform .15s}.shop-item:active{transform:scale(.95)}.shop-item.owned{border-color:#10b98166;background:linear-gradient(180deg,#fff,#f0fdf4)}.shop-item.equipped{border-color:var(--purple);background:linear-gradient(180deg,#fff,#f6f0ff)}.shop-emoji{font-size:38px;display:block;margin-bottom:4px;filter:drop-shadow(0 4px 6px rgba(59,46,88,.2))}.cat-chip{border:none;white-space:nowrap;cursor:pointer;background:#ffffffb3;color:var(--ink-soft);font-weight:900;font-size:13px;font-family:var(--font-body);padding:8px 14px;border-radius:999px;box-shadow:var(--shadow-soft)}.cat-chip.sel{background:linear-gradient(135deg,var(--purple),var(--pink));color:#fff}.hscroll{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 10px;scrollbar-width:none}.hscroll::-webkit-scrollbar{display:none}.banner{border-radius:22px;padding:12px 16px;font-weight:800;font-size:14px;display:flex;align-items:center;gap:10px;animation:popIn .4s cubic-bezier(.3,1.6,.5,1)}.banner.bath{background:linear-gradient(135deg,#dbf4ff,#e6e0ff);border:2px solid rgba(96,200,255,.4)}.banner.alert{background:linear-gradient(135deg,#fff3d6,#ffe3ef);border:2px solid rgba(255,157,60,.45);box-shadow:var(--shadow)}.banner.pending{background:linear-gradient(135deg,#fff7dd,#ffedd5);border:2px solid rgba(245,166,35,.35)}.reminder-toast{position:fixed;top:calc(env(safe-area-inset-top) + 12px);left:50%;transform:translate(-50%);z-index:120;width:min(92vw,440px);animation:dropIn .5s cubic-bezier(.3,1.4,.5,1)}@keyframes dropIn{0%{transform:translate(-50%,-120%)}}.profile-card{background:var(--card);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:30px;border:2px solid rgba(255,255,255,.95);box-shadow:var(--shadow);padding:22px 14px;text-align:center;cursor:pointer;transition:transform .15s cubic-bezier(.3,1.6,.5,1)}.profile-card:active{transform:scale(.94)}.avatar-big{width:84px;height:84px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:44px;background:linear-gradient(135deg,#f6f0ff,#ffe9f3);border:3px solid white;box-shadow:var(--shadow-soft)}.section-title{font-family:var(--font-display);font-weight:800;font-size:18px;margin:18px 0 10px;display:flex;align-items:center;gap:8px}.fade-in{animation:fadeUp .45s cubic-bezier(.25,1,.35,1) both}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}}.stagger>*{animation:fadeUp .45s cubic-bezier(.25,1,.35,1) both}.stagger>*:nth-child(1){animation-delay:.03s}.stagger>*:nth-child(2){animation-delay:.08s}.stagger>*:nth-child(3){animation-delay:.13s}.stagger>*:nth-child(4){animation-delay:.18s}.stagger>*:nth-child(5){animation-delay:.23s}.stagger>*:nth-child(6){animation-delay:.28s}.stagger>*:nth-child(7){animation-delay:.33s}.stagger>*:nth-child(8){animation-delay:.38s}.tab-bar{display:flex;gap:6px;background:#fff9;border-radius:999px;padding:5px;box-shadow:var(--shadow-soft);overflow-x:auto;scrollbar-width:none}.tab-bar::-webkit-scrollbar{display:none}.tab-btn{flex:1;border:none;background:transparent;font-family:var(--font-display);font-weight:700;font-size:13.5px;padding:9px 10px;border-radius:999px;color:var(--ink-soft);cursor:pointer;white-space:nowrap}.tab-btn.sel{background:linear-gradient(135deg,var(--purple),var(--pink));color:#fff;box-shadow:0 4px 10px -3px #8b5cf699}.chip.now{background:linear-gradient(135deg,#ff7dab,#ff8e6e);color:#fff;animation:nowPulse 1.6s ease-in-out infinite}@keyframes nowPulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}@keyframes fxFall{0%{transform:translateY(-30px) rotate(0);opacity:0}10%{opacity:.9}to{transform:translateY(105vh) rotate(200deg);opacity:.4}}.mic-pulse{width:76px;height:76px;margin:0 auto;border-radius:50%;font-size:36px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#f472b6,#a855f7);box-shadow:0 0 #f472b680;animation:micPulse 1.4s ease-out infinite}@keyframes micPulse{0%{box-shadow:0 0 #f472b68c}to{box-shadow:0 0 0 26px #f472b600}}.palette{display:grid;grid-template-columns:repeat(7,1fr);gap:7px;margin-top:10px}.swatch{width:100%;aspect-ratio:1;min-width:0;border-radius:12px;border:2.5px solid white;box-shadow:var(--shadow-soft);cursor:pointer;transition:transform .12s;padding:0;display:block;overflow:hidden}.swatch:active{transform:scale(.88)}.swatch.sel{outline:3px solid var(--ink);outline-offset:1px;transform:scale(1.08)}.swatch.rainbow{background:conic-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.memo-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:4px}.memo-card{aspect-ratio:3/3.4;border:none;cursor:pointer;border-radius:18px;background:linear-gradient(135deg,#a78bfa,#7c3aed);box-shadow:var(--shadow-soft),inset 0 2px #ffffff4d;font-size:34px;display:flex;align-items:center;justify-content:center;transition:transform .35s cubic-bezier(.3,1.4,.5,1),background .2s;transform-style:preserve-3d}.memo-card .memo-face{opacity:.55;filter:grayscale(.4);transition:all .2s;transform:scale(.8)}.memo-card.open{background:#fff;transform:rotateY(180deg)}.memo-card.open .memo-face{opacity:1;filter:none;transform:rotateY(180deg) scale(1)}.memo-card.matched{background:linear-gradient(135deg,#d1fae5,#a7f3d0);animation:matchPop .5s cubic-bezier(.3,2,.5,1)}@keyframes matchPop{0%{transform:rotateY(180deg) scale(.8)}60%{transform:rotateY(180deg) scale(1.12)}to{transform:rotateY(180deg) scale(1)}}.pin-dots{display:flex;justify-content:center;gap:12px;margin:14px 0 18px}.pin-dot{width:16px;height:16px;border-radius:50%;background:#3b2e5826;transition:all .15s}.pin-dot.full{background:linear-gradient(135deg,var(--purple),var(--pink));transform:scale(1.15);box-shadow:0 3px 8px -2px #8b5cf699}.pin-dots.shake{animation:shakeX .45s}@keyframes shakeX{0%,to{transform:translate(0)}20%,60%{transform:translate(-9px)}40%,80%{transform:translate(9px)}}.pin-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;max-width:250px;margin:0 auto}.pin-key{border:none;cursor:pointer;aspect-ratio:1.35;border-radius:18px;font-family:var(--font-display);font-weight:800;font-size:24px;color:var(--ink);background:#fff;box-shadow:var(--shadow-soft),inset 0 -3px #3b2e5814;transition:transform .1s}.pin-key:active{transform:scale(.9)}.avatar-photo{border-radius:50%;object-fit:cover;width:46px;height:46px;border:3px solid white;box-shadow:var(--shadow-soft);display:inline-block}.avatar-edit{position:relative;border:none;background:transparent;cursor:pointer;padding:0;display:inline-flex}.avatar-cam{position:absolute;bottom:-4px;right:-4px;font-size:13px;background:#fff;border-radius:50%;width:21px;height:21px;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-soft)}.badge-count{position:absolute;top:-8px;right:-6px;background:linear-gradient(135deg,#fb7185,#ef4444);color:#fff;font-size:13px;font-weight:900;min-width:26px;height:26px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;border:2.5px solid white;box-shadow:0 4px 8px -2px #ef44448c}.order-btn{border:none;cursor:pointer;width:26px;height:22px;border-radius:8px;background:#8b5cf61a;color:var(--purple-deep);font-size:10px;font-weight:900;display:flex;align-items:center;justify-content:center}.order-btn:disabled{opacity:.25}.order-btn:active{transform:scale(.85)}.care-row{display:flex;justify-content:center;gap:8px;margin-top:10px;position:relative;z-index:3}.care-chip{border:none;cursor:pointer;font-family:var(--font-display);font-weight:700;font-size:13px;color:var(--ink);background:#ffffffe6;padding:8px 13px;border-radius:999px;box-shadow:var(--shadow-soft),inset 0 -2px #3b2e5814;transition:transform .12s}.care-chip:active{transform:scale(.9)}.care-chip.done{background:linear-gradient(135deg,#d1fae5,#a7f3d0)}.care-hearts{position:absolute;top:10px;left:14px;font-size:15px;letter-spacing:2px;z-index:3}.stage-overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:2}.bubble{position:absolute;bottom:-20px;border-radius:50%;background:radial-gradient(circle at 30% 30%,#fffffff2,#a0dcff73);border:1.5px solid rgba(120,190,240,.8);animation:bubbleUp 2.6s ease-in forwards}@keyframes bubbleUp{0%{transform:translateY(0) translate(0);opacity:0}15%{opacity:1}to{transform:translateY(-240px) translate(12px);opacity:0}}.heart-float{position:absolute;bottom:30%;animation:heartUp 1.8s ease-out forwards}@keyframes heartUp{0%{transform:translateY(0) scale(.4);opacity:0}20%{opacity:1;transform:translateY(-14px) scale(1.1)}to{transform:translateY(-120px) scale(.9);opacity:0}}.stage-dim{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;background:linear-gradient(180deg,#1e1a408c,#1e1a4059);border-radius:inherit;animation:fadeIn .6s ease}
