:root{--bg:#eaf7ff;--ink:#33415c;--ink-soft:#6b7a99;--card:#fff;--brand:#ff9a3c;--brand-dark:#e5791a;--green:#4cc46a;--blue:#4aa8ff;--pink:#ff7fb0;--radius:22px;--shadow:0 6px 18px #3c648c29;--nav-h:68px;--safe-b:env(safe-area-inset-bottom,0px);--safe-t:env(safe-area-inset-top,0px);font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Noto Sans CJK SC,Segoe UI,sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink);overscroll-behavior:none;-webkit-font-smoothing:antialiased;font-weight:600}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;background:0 0;border:0;padding:0}input,select,textarea{font:inherit;color:inherit}h1,h2,h3,p{margin:0}.app{background:linear-gradient(#a6dcff 0%,#cdeeff 60%);position:fixed;inset:0;overflow:hidden}.btn{min-height:48px;box-shadow:0 4px 0 #0000001f, var(--shadow);background:#fff;border-radius:999px;justify-content:center;align-items:center;gap:6px;padding:0 20px;font-size:17px;font-weight:800;transition:transform 80ms,box-shadow 80ms,filter .12s;display:inline-flex;position:relative}.btn:active:not(:disabled){filter:brightness(.96);transform:translateY(3px)scale(.97);box-shadow:0 1px #0000001f}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:linear-gradient(#ffb454, var(--brand));color:#fff;box-shadow:0 5px 0 var(--brand-dark), 0 8px 16px #ff8c2859;text-shadow:0 1px #0000001f}.btn.primary:active:not(:disabled){box-shadow:0 1px 0 var(--brand-dark)}.btn.green{background:linear-gradient(#6fdc86, var(--green));color:#fff;box-shadow:0 5px 0 #34a050, var(--shadow)}.btn.ghost{background:#ffffffd9}.btn.danger{color:#d64545}.btn.small{min-height:38px;padding:0 14px;font-size:14px}.btn.big{width:100%;min-height:60px;font-size:22px}.icon-btn{width:46px;height:46px;box-shadow:0 3px 0 #0000001a, var(--shadow);background:#ffffffeb;border-radius:50%;place-items:center;font-size:22px;transition:transform 80ms;display:grid}.icon-btn:active{transform:scale(.88)}.icon-btn.on{background:#ffe9a8}.island-wrap,.island-stage{position:absolute;inset:0}.island-wrap.hidden{display:none}.hud-top{top:calc(var(--safe-t) + 10px);pointer-events:none;align-items:stretch;gap:8px;display:flex;position:absolute;left:10px;right:10px}.hud-top>*{pointer-events:auto}.energy-pill{min-width:0;box-shadow:var(--shadow);background:#ffffffed;border-radius:22px;flex:1;padding:8px 14px}.energy-pill .row{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.energy-pill .num{color:#f58a1f;font-size:26px;font-weight:900;line-height:1}.energy-pill .label{color:var(--ink-soft);font-size:12px}.energy-pill .next{color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.bar{background:#e5eef7;border-radius:99px;height:10px;margin-top:6px;overflow:hidden}.bar>i{background:linear-gradient(90deg,#ffd54a,#ff9a3c);border-radius:99px;height:100%;transition:width .6s cubic-bezier(.2,.9,.3,1.2);display:block}.hud-btns{flex-direction:column;gap:6px;display:flex}.hud-side{right:10px;top:calc(var(--safe-t) + 94px);flex-direction:column;gap:8px;display:flex;position:absolute}.family-dock{left:0;right:0;bottom:calc(var(--nav-h) + var(--safe-b) + 8px);grid-template-columns:repeat(4,1fr);gap:8px;padding:0 10px;display:grid;position:absolute}.member-card{box-shadow:var(--shadow);border-bottom:5px solid var(--c);background:#fffffff2;border-radius:20px;flex-direction:column;align-items:center;gap:2px;min-width:0;padding:8px 4px;transition:transform .1s;display:flex}.member-card:active{transform:scale(.94)translateY(2px)}.member-card .name{font-size:15px;font-weight:900}.member-card .e{color:#f58a1f;font-size:13px;font-weight:800}.member-card .sub{color:var(--ink-soft);white-space:nowrap;font-size:11px}.member-card .done{position:absolute}.building-sheet{left:12px;right:12px;bottom:calc(var(--nav-h) + var(--safe-b) + 150px);z-index:5;background:#fff;border-radius:24px;padding:14px 16px;animation:.25s cubic-bezier(.2,1.3,.4,1) pop;position:absolute;box-shadow:0 10px 30px #28466e47}.building-sheet .title{align-items:center;gap:10px;font-size:20px;font-weight:900;display:flex}.building-sheet .title .em{font-size:34px}.building-sheet .close{background:#f0f4f8;border-radius:50%;width:36px;height:36px;margin-left:auto;font-size:18px}.building-sheet p{color:var(--ink-soft);margin-top:6px;font-size:14px}.tag{color:var(--ink-soft);background:#eef4fb;border-radius:99px;padding:3px 10px;font-size:12px;font-weight:800;display:inline-block}.tag.ok{color:#218a3b;background:#dcf7e3}.tag.lock{color:#b36a00;background:#fff0d6}.tabbar{height:calc(var(--nav-h) + var(--safe-b));padding-bottom:var(--safe-b);z-index:20;background:#fffffff7;border-radius:26px 26px 0 0;grid-template-columns:repeat(5,1fr);display:grid;position:absolute;bottom:0;left:0;right:0;box-shadow:0 -4px 18px #3c648c24}.tab{color:var(--ink-soft);flex-direction:column;justify-content:center;align-items:center;gap:1px;font-size:12px;font-weight:800;transition:transform .1s;display:flex}.tab .ico{font-size:26px;line-height:1;transition:transform .2s}.tab:active{transform:scale(.88)}.tab.active{color:var(--brand-dark)}.tab.active .ico{transform:translateY(-3px)scale(1.15)}.page{inset:0;bottom:calc(var(--nav-h) + var(--safe-b));-webkit-overflow-scrolling:touch;padding:calc(var(--safe-t) + 12px) 14px 28px;background:linear-gradient(#d8f0ff,#f4fbff 40%,#fffaf0);position:absolute;overflow:hidden auto}.page-inner{flex-direction:column;gap:14px;max-width:760px;margin:0 auto;display:flex}.page-title{align-items:center;gap:10px;padding:4px 2px;font-size:24px;font-weight:900;display:flex}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 16px}.card h3{align-items:center;gap:6px;margin-bottom:10px;font-size:17px;font-weight:900;display:flex}.muted{color:var(--ink-soft);font-size:13px}.row{align-items:center;gap:10px;display:flex}.spacer{flex:1}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{background:#eef4fb;border-radius:99px;min-height:40px;padding:8px 14px;font-size:15px;font-weight:800;transition:transform 80ms,background .15s}.chip:active{transform:scale(.93)}.chip.on{background:var(--brand);color:#fff;box-shadow:0 3px 0 var(--brand-dark)}.m-head{background:var(--soft);box-shadow:var(--shadow);border:3px solid #fff;border-radius:26px;align-items:center;gap:12px;padding:14px;display:flex}.m-head .info{flex:1;min-width:0}.m-head h2{font-size:24px;font-weight:900}.m-head .title{color:var(--ink-soft);font-size:13px}.lv-bar{background:#fffc;border-radius:99px;height:12px;margin-top:6px;overflow:hidden}.lv-bar>i{background:var(--c);border-radius:99px;height:100%;transition:width .6s;display:block}.stat-grid{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.stat{text-align:center;box-shadow:var(--shadow);background:#fff;border-radius:18px;padding:10px 4px}.stat b{color:var(--c,var(--brand-dark));font-size:22px;font-weight:900;display:block}.stat span{color:var(--ink-soft);font-size:12px}.switcher{gap:8px;display:flex}.switcher button{background:#ffffffb3;border:3px solid #0000;border-radius:18px;flex-direction:column;flex:1;align-items:center;padding:6px 2px;font-size:12px;font-weight:800;transition:transform .1s;display:flex}.switcher button:active{transform:scale(.92)}.switcher button.on{border-color:var(--c);box-shadow:var(--shadow);background:#fff}.act-grid{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.act{background:#f3f8fd;border:3px solid #0000;border-radius:20px;flex-direction:column;align-items:center;gap:4px;min-height:92px;padding:12px 4px 10px;font-weight:800;transition:transform .1s,background .15s;display:flex}.act .e{font-size:38px;line-height:1}.act .n{font-size:15px}.act .u{color:var(--ink-soft);font-size:11px}.act:active{transform:scale(.92)}.act.on{border-color:var(--brand);background:#fff4e0;box-shadow:0 4px 12px #ff96324d}.act.add{color:var(--ink-soft);background:0 0;border:3px dashed #c6d6e8}.big-acts{grid-template-columns:repeat(2,1fr);gap:12px;display:grid}.big-act{box-shadow:0 5px 0 #bfe8cb, var(--shadow);background:linear-gradient(#fff,#f2fff6);border-radius:28px;flex-direction:column;align-items:center;gap:4px;padding:16px 8px;transition:transform .1s,box-shadow .1s;display:flex}.big-act:active:not(:disabled){transform:translateY(4px)scale(.96);box-shadow:0 1px #bfe8cb}.big-act .e{font-size:58px;line-height:1.05;animation:2.4s ease-in-out infinite bounce}.big-act .n{font-size:20px;font-weight:900}.big-act .u{color:var(--ink-soft);font-size:13px}.amount{align-items:center;gap:8px;display:flex}.amount input{text-align:center;background:#fff;border:3px solid #dbe7f3;border-radius:18px;outline:none;flex:1;width:100%;min-width:0;height:56px;font-size:30px;font-weight:900}.amount input:focus{border-color:var(--brand)}.step{background:#eef4fb;border-radius:18px;width:56px;height:56px;font-size:28px;font-weight:900;transition:transform 80ms;box-shadow:0 3px #d3e0ee}.step:active{box-shadow:none;transform:translateY(2px)scale(.94)}.preview{text-align:center;color:#f58a1f;font-size:16px;font-weight:900}.date-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.date-row input[type=date]{background:#fff;border:3px solid #dbe7f3;border-radius:14px;height:40px;padding:0 10px}.toggle{text-align:left;background:#f3f8fd;border-radius:16px;align-items:center;gap:10px;width:100%;padding:10px 12px;font-weight:800;display:flex}.toggle .sw{background:#cfd9e6;border-radius:99px;flex:none;width:46px;height:28px;margin-left:auto;transition:background .2s;position:relative}.toggle .sw:after{content:"";background:#fff;border-radius:50%;width:22px;height:22px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #00000040}.toggle.on .sw{background:var(--green)}.toggle.on .sw:after{transform:translate(18px)}.timer{text-align:center;padding:6px 0}.timer .time{font-variant-numeric:tabular-nums;color:var(--c);letter-spacing:1px;font-size:48px;font-weight:900}.timer .ring{place-items:center;width:150px;height:150px;margin:0 auto;display:grid;position:relative}.timer svg{position:absolute;inset:0;transform:rotate(-90deg)}.timer .row{justify-content:center;margin-top:8px}.rec{border-bottom:1px dashed #e2ebf4;align-items:center;gap:10px;padding:10px 0;display:flex}.rec:last-child{border-bottom:0}.rec .e{font-size:28px}.rec .main{flex:1;min-width:0}.rec .t{font-weight:800}.rec .s{color:var(--ink-soft);font-size:12px}.rec .en{color:#f58a1f;white-space:nowrap;font-weight:900}.mini{background:#eef4fb;border-radius:12px;width:36px;height:36px;font-size:16px;transition:transform 80ms}.mini:active{transform:scale(.85)}.stars{justify-content:center;gap:6px;font-size:44px;display:flex}.stars span{filter:grayscale()opacity(.28);transition:all .4s}.stars span.on{filter:none;animation:1.8s ease-in-out infinite twinkle}.adv-map{background:linear-gradient(#bde9ff,#d8f7c9 60%,#b8e6a0);border-radius:22px;padding:10px 6px 4px;position:relative}.adv-map svg{width:100%;height:auto;display:block}.badge-grid{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.badge{text-align:center;background:#fff8e1;border-radius:16px;padding:8px 2px;font-size:11px;font-weight:800}.badge .e{font-size:30px;display:block}.badge.locked{color:#9aa7b8;background:#f1f4f8}.badge.locked .e{filter:grayscale()opacity(.4)}.cal-head{justify-content:space-between;align-items:center;display:flex}.cal-head h2{font-size:20px;font-weight:900}.cal-grid{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.cal-wd{text-align:center;color:var(--ink-soft);padding-bottom:2px;font-size:12px}.cal-day{aspect-ratio:1/1.08;background:#f4f8fc;border:2px solid #0000;border-radius:14px;flex-direction:column;justify-content:space-between;align-items:center;min-width:0;padding:5px 2px;font-size:14px;font-weight:800;transition:transform 80ms;display:flex}.cal-day:active:not(.empty){transform:scale(.92)}.cal-day.empty{background:0 0}.cal-day.today{background:#fff4d6}.cal-day.sel{border-color:var(--brand);background:#fff;box-shadow:0 3px 10px #ff963259}.cal-day.future{opacity:.45}.dots{grid-template-columns:repeat(2,9px);gap:3px;min-height:21px;display:grid}.dots i{background:#e1e9f2;border-radius:50%;width:9px;height:9px}.dots i.on{background:var(--c)}.cal-day .mins{color:var(--ink-soft);height:11px;font-size:9px}.legend{flex-wrap:wrap;gap:12px;font-size:12px;display:flex}.legend i{border-radius:50%;width:10px;height:10px;margin-right:4px;display:inline-block}.sum-row{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.sum-row .stat b{font-size:20px}.day-member{border-left:6px solid var(--c);margin-top:10px;padding-left:10px}.day-member h4{align-items:center;gap:8px;margin:0 0 2px;font-size:15px;display:flex}.ch{flex-direction:column;gap:8px;display:flex}.ch .head{align-items:center;gap:10px;display:flex}.ch .em{font-size:34px}.ch .ttl{font-size:17px;font-weight:900}.ch .rw{flex-wrap:wrap;gap:6px;display:flex}.ch.done{background:linear-gradient(#fffdf2,#fff4cf)}.pbar{background:#e6eef6;border-radius:99px;height:14px;position:relative;overflow:hidden}.pbar>i{background:linear-gradient(90deg,#7be495,#3fc46a);border-radius:99px;height:100%;transition:width .5s;display:block}.shelf{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.seg{background:#ffffffb3;border-radius:18px;grid-template-columns:repeat(4,1fr);gap:6px;padding:4px;display:grid}.seg button{border-radius:14px;padding:10px 0;font-size:14px;font-weight:900;transition:background .15s,transform 80ms}.seg button:active{transform:scale(.94)}.seg button.on{box-shadow:var(--shadow);color:var(--brand-dark);background:#fff}.bars{align-items:flex-end;gap:4px;height:130px;padding-top:6px;display:flex}.bars .col{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;min-width:0;height:100%;display:flex}.bars .stack{background:#eef3f8;border-radius:8px 8px 3px 3px;flex-direction:column-reverse;width:100%;max-width:30px;min-height:3px;display:flex;overflow:hidden}.bars .lab{color:var(--ink-soft);margin-top:3px;font-size:10px}.member-line{align-items:center;gap:10px;padding:8px 0;display:flex}.member-line .vals{text-align:right;margin-left:auto;font-size:13px}.member-line .vals b{font-size:16px}.roadmap{flex-direction:column;gap:6px;display:flex}.roadmap .lv{background:#f3f8fd;border-radius:14px;align-items:center;gap:10px;padding:8px 10px;font-weight:800;display:flex}.roadmap .lv.cur{background:var(--soft);border:2px solid var(--c)}.roadmap .lv.locked{opacity:.5}.overlay{z-index:50;background:#1e325073;justify-content:center;align-items:flex-end;animation:.2s fade;display:flex;position:fixed;inset:0}.overlay.center{align-items:center}.sheet{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;width:100%;max-width:560px;min-height:0;max-height:88dvh;padding:18px 18px calc(22px + var(--safe-b));background:#fff;border-radius:28px 28px 0 0;flex-direction:column;gap:14px;animation:.28s cubic-bezier(.2,1,.3,1) slideUp;display:flex;overflow-y:auto}.sheet>.row:last-child{bottom:calc(-22px - var(--safe-b));z-index:2;margin:0 -18px calc(-22px - var(--safe-b));padding:13px 18px calc(22px + var(--safe-b));background:#fff;flex-wrap:wrap;flex-shrink:0;position:sticky;box-shadow:0 -5px 16px #3c648c17}.sheet>.row:last-child>.btn{min-width:84px}.sheet>.row:last-child>.spacer{min-width:0}@supports (height:100dvh){.overlay{height:100dvh}}@media (height<=700px){.sheet{max-height:95dvh}}.sheet h3{align-items:center;gap:8px;font-size:20px;font-weight:900;display:flex}.sheet .field{flex-direction:column;gap:6px;display:flex}.sheet .field>label{color:var(--ink-soft);font-size:14px;font-weight:800}.text-input{background:#fff;border:3px solid #dbe7f3;border-radius:16px;outline:none;width:100%;height:50px;padding:0 14px;font-size:17px;font-weight:700}.text-input:focus{border-color:var(--brand)}.slider{width:100%;height:36px;accent-color:var(--brand)}.setting-row{align-items:center;gap:12px;display:flex}.setting-row .lab{white-space:nowrap;flex:none;width:74px;font-weight:800}.setting-row .slider{flex:1;min-width:0}.err{color:#d64545;font-size:14px;font-weight:800}.celebrate{z-index:60;background:radial-gradient(#fff0aabf,#28508c8c);place-items:center;padding:20px;animation:.25s fade;display:grid;position:fixed;inset:0}.cel-card{text-align:center;background:#fff;border-radius:34px;flex-direction:column;align-items:center;gap:10px;width:min(92vw,400px);padding:26px 20px 20px;animation:.5s cubic-bezier(.2,1.5,.4,1) pop;display:flex;position:relative;overflow:hidden;box-shadow:0 16px 50px #0000004d}.cel-card .big-e{font-size:78px;line-height:1;animation:1s ease-in-out infinite bounce}.cel-card h2{color:var(--brand-dark);font-size:26px;font-weight:900}.cel-card .energy{color:#f58a1f;text-shadow:0 2px #fff3d0;font-size:44px;font-weight:900;animation:.6s cubic-bezier(.2,1.5,.4,1) .2s both pop}.cel-card .voice{background:#fff5dd;border-radius:18px;padding:10px 14px;font-size:16px;font-weight:800}.cel-card .unlock{color:#1f8f4a;background:linear-gradient(#e6fff0,#c9f5da);border-radius:18px;width:100%;padding:10px 14px;font-weight:900}.confetti{pointer-events:none;position:absolute;inset:0;overflow:hidden}.confetti i{font-size:22px;font-style:normal;animation:linear forwards fall;position:absolute;top:-30px}.toast{left:50%;top:calc(var(--safe-t) + 18px);color:#fff;z-index:80;text-align:center;background:#283755f0;border-radius:99px;max-width:90vw;padding:10px 18px;font-size:15px;font-weight:800;animation:.25s pop;position:fixed;transform:translate(-50%)}@keyframes pop{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(60px)}to{opacity:1;transform:none}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes twinkle{0%,to{transform:scale(1)rotate(0)}50%{transform:scale(1.12)rotate(6deg)}}@keyframes fall{to{opacity:.9;transform:translateY(105vh)rotate(540deg)}}.paused-anim *,.paused-anim :before,.paused-anim :after{animation-play-state:paused!important}@media (prefers-reduced-motion:reduce){.big-act .e,.cel-card .big-e,.stars span.on{animation:none}}@media (width>=760px){.family-dock{width:100%;max-width:640px;left:50%;transform:translate(-50%)}.building-sheet{width:560px;margin:0 auto;left:0;right:0}.act-grid{grid-template-columns:repeat(5,1fr)}}@media (width<=400px){.member-card .sub{letter-spacing:-.3px;font-size:10px}}@media (width<=360px){.stat b{font-size:18px}.member-card .name{font-size:13px}}.quick-audio{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.sound-chip{white-space:nowrap;background:#eef4fb;border-radius:14px;flex:auto;min-height:44px;padding:8px 10px;font-size:13px;font-weight:800}.sound-chip[aria-pressed=true]{color:#8b4d08;background:#fff0d3;box-shadow:inset 0 0 0 2px #ffb454}
