:root{--brand:#ff7a45;--brand-dark:#dd5522;--brand-deep:#b8410f;--brand-soft:#fff1ea;--brand-lift:#ff9470;--ink:#2b2320;--ink-2:#5f524a;--ink-3:#7b6b61;--line:#ece2dd;--paper:#fffdfb;--ok:#1fa855;--ok-soft:#e8f7ee;--no:#e0422f;--no-soft:#fdedeb;--gold:#f0a500;--focus:#3b7dd8;--r-sm:12px;--r-md:18px;--r-lg:26px;--r-xl:34px;--r-pill:999px;--sh-1:0 1px 2px rgba(74,52,36,0.05),0 2px 6px rgba(74,52,36,0.06);--sh-2:0 2px 4px rgba(74,52,36,0.05),0 10px 22px -6px rgba(74,52,36,0.14);--sh-3:0 4px 10px rgba(74,52,36,0.07),0 22px 44px -10px rgba(74,52,36,0.2);--accent:var(--brand);--accent-dark:var(--brand-dark);--accent-deep:var(--brand-deep);--accent-soft:var(--brand-soft);--accent-lift:var(--brand-lift);--ease-pop:cubic-bezier(0.34,1.42,0.64,1);--ease-out:cubic-bezier(0.22,1,0.36,1);--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:22px;--sp-6:30px;--text-xs:0.75rem;--text-sm:0.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.375rem;--text-2xl:clamp(1.6rem,1.25rem + 1.6vw,2rem);--text-display:clamp(2rem,1.5rem + 2.6vw,2.75rem)}@supports (color:oklch(50% 0.1 20)){:root{--brand:oklch(68% 0.17 45);--brand-dark:oklch(57% 0.18 40);--brand-deep:oklch(46% 0.16 35);--brand-soft:oklch(96% 0.035 65);--brand-lift:oklch(76% 0.15 50);--ink:oklch(27% 0.022 45);--ink-2:oklch(42% 0.02 45);--ink-3:oklch(52% 0.018 45);--line:oklch(91% 0.012 55);--paper:oklch(99.2% 0.004 65);--ok:oklch(62% 0.16 150);--ok-soft:oklch(96% 0.045 150);--no:oklch(57% 0.19 27);--no-soft:oklch(96% 0.045 27);--gold:oklch(78% 0.15 82);--focus:oklch(58% 0.16 250)}}*{box-sizing:border-box}body,html{margin:0;padding:0;min-height:100%}body{font-family:PingFang SC,HarmonyOS Sans SC,Hiragino Sans GB,Microsoft YaHei,system-ui,-apple-system,Segoe UI,sans-serif;color:var(--ink);font-size:var(--text-base);line-height:1.6;-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;padding-bottom:env(safe-area-inset-bottom);background-color:var(--brand-soft);background-image:radial-gradient(at 14% 2%,oklch(93% .06 45/.6) 0,transparent 55%),radial-gradient(at 90% 10%,oklch(93% .07 350/.5) 0,transparent 50%),radial-gradient(at 82% 94%,oklch(94% .06 240/.45) 0,transparent 52%),radial-gradient(at 6% 86%,oklch(95% .05 155/.4) 0,transparent 48%);background-attachment:fixed}button{font-family:inherit;border:none;background:none}a,button{color:inherit}a{text-decoration:none}:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:var(--r-sm)}.wrap{width:100%;max-width:920px;margin:0 auto;padding:0 var(--sp-4)}.page{min-height:100vh;min-height:100dvh;padding-bottom:calc(96px + env(safe-area-inset-bottom))}.stack{flex-direction:column;gap:var(--sp-5)}.row,.stack{display:flex}.row{align-items:center;gap:var(--sp-3)}.center{text-align:center}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) 14px;padding-top:calc(var(--sp-3) + env(safe-area-inset-top));background:color-mix(in oklab,var(--paper) 82%,transparent);backdrop-filter:saturate(170%) blur(16px);-webkit-backdrop-filter:saturate(170%) blur(16px);border-bottom:1px solid color-mix(in oklab,var(--line) 70%,transparent)}@supports not (background:color-mix(in oklab,red 50%,blue)){.topbar{background:rgba(255,253,251,.86);border-bottom:1px solid rgba(74,52,36,.06)}}.topbar .title{flex:1 1;font-size:17px;font-weight:800;letter-spacing:.2px;color:var(--ink);text-align:center}.iconbtn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-1);height:40px;min-width:44px;padding:0 14px;border-radius:var(--r-pill);background:var(--paper);border:1px solid var(--line);box-shadow:var(--sh-1);font-size:15px;font-weight:800;color:var(--ink-2);cursor:pointer;transition:transform .16s var(--ease-out),background .16s ease}.iconbtn:active{transform:scale(.94)}.card{padding:var(--sp-4)}.card,.tile{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-2),inset 0 1px 0 rgba(255,255,255,.9)}.tile{position:relative;overflow:hidden}@media (hover:hover){.card:hover,.tile:hover{box-shadow:var(--sh-3),inset 0 1px 0 rgba(255,255,255,.9)}}.press{transition:transform .18s var(--ease-pop),box-shadow .18s var(--ease-out);will-change:transform}.press:active{transform:scale(.955)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:52px;padding:14px 28px;border-radius:var(--r-pill);background-color:var(--accent);background-image:linear-gradient(180deg,rgba(255,255,255,.26),rgba(255,255,255,0) 58%);color:#fff;font-size:var(--text-lg);font-weight:800;letter-spacing:.3px;box-shadow:0 10px 22px -8px rgba(74,52,36,.45),inset 0 -3px 0 rgba(0,0,0,.14),inset 0 1px 0 rgba(255,255,255,.4);cursor:pointer;transition:transform .16s var(--ease-pop),filter .16s ease}.btn:active{transform:scale(.96) translateY(1px);filter:brightness(.97)}.btn.ghost{background-color:var(--paper);color:var(--accent);border:1.5px solid color-mix(in oklab,var(--accent) 35%,var(--line));box-shadow:var(--sh-1)}.btn.ghost,.btn.soft{background-image:none}.btn.soft{background-color:var(--accent-soft);color:var(--accent-dark);box-shadow:none}.btn:disabled{filter:grayscale(.55);opacity:.5;cursor:default}.chip{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:8px 16px;border-radius:var(--r-pill);background:var(--paper);border:2px solid var(--line);color:var(--ink-2);font-size:15px;font-weight:700;cursor:pointer;white-space:nowrap;transition:transform .16s var(--ease-pop),border-color .18s ease,color .18s ease,background .18s ease}.chip:active{transform:scale(.94)}.chip.on{border-color:var(--accent);color:var(--accent-dark);background:var(--accent-soft);box-shadow:0 4px 10px -4px color-mix(in oklab,var(--accent) 40%,transparent)}.pill{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;border-radius:var(--r-pill);background:color-mix(in oklab,var(--ink) 6%,transparent);font-size:var(--text-sm);font-weight:800;color:var(--ink-2)}.scroller{display:flex;gap:var(--sp-3);overflow-x:auto;padding:4px 2px 10px;scrollbar-width:none}.scroller::-webkit-scrollbar{display:none}.grid{display:grid;grid-gap:14px;gap:14px}.grid-cards{grid-template-columns:repeat(auto-fill,minmax(108px,1fr))}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}@media (max-width:420px){.grid-cards{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:11px}}.h1{font-size:var(--text-2xl);font-weight:900;letter-spacing:-.4px;line-height:1.25;color:var(--accent-dark)}.h1,.h2{margin:0}.h2{font-size:var(--text-xl);font-weight:800;letter-spacing:-.2px;color:var(--ink)}.sub{margin:6px 0 0;font-size:var(--text-base);color:var(--ink-2)}.mini{font-size:var(--text-sm);color:var(--ink-3)}.en{font-family:Nunito,Quicksand,SF Pro Rounded,-apple-system,Segoe UI Variable Display,Segoe UI,system-ui,sans-serif;font-weight:800;letter-spacing:.2px}.bar{height:10px;background:color-mix(in oklab,var(--ink) 8%,transparent);overflow:hidden}.bar,.bar>i{border-radius:var(--r-pill)}.bar>i{display:block;height:100%;background:var(--accent);transition:width .6s var(--ease-out)}.ring{--p:0;position:relative;width:86px;height:86px;border-radius:50%;background:conic-gradient(var(--accent) calc(var(--p) * 1%),var(--line) 0);display:grid;place-items:center;box-shadow:var(--sh-1)}.ring:after{content:"";position:absolute;inset:9px;border-radius:50%;background:var(--paper);box-shadow:inset 0 1px 3px rgba(74,52,36,.08)}.ring>span{position:relative;z-index:1;font-size:19px;font-weight:900;color:var(--accent-dark)}.sheet-mask{position:fixed;inset:0;z-index:60;background:rgba(43,35,32,.42);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:flex-end;justify-content:center;animation:fade-in .2s var(--ease-out)}.sheet{width:100%;max-width:560px;background:var(--paper);border-radius:var(--r-xl) var(--r-xl) 0 0;padding:var(--sp-5) 20px calc(26px + env(safe-area-inset-bottom));box-shadow:var(--sh-3);animation:slide-up .32s var(--ease-out)}@media (min-width:640px){.sheet-mask{align-items:center}.sheet{border-radius:var(--r-xl);margin:20px;animation:pop-in .3s var(--ease-out)}}@keyframes pop{0%{transform:scale(.9)}60%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes pop-in{0%{transform:scale(.96);opacity:0}to{transform:scale(1);opacity:1}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-up{0%{transform:translateY(28px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes fade-up{0%{transform:translateY(10px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes shake{0%,to{transform:translateX(0)}25%{transform:translateX(-8px)}50%{transform:translateX(8px)}75%{transform:translateX(-4px)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}@keyframes pulse-ring{0%{box-shadow:0 0 0 0 rgba(255,122,69,.45)}70%{box-shadow:0 0 0 22px rgba(255,122,69,0)}to{box-shadow:0 0 0 0 rgba(255,122,69,0)}}@keyframes wiggle{0%,to{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}@keyframes confetti-fall{0%{transform:translate3d(0,-12vh,0) rotate(0deg);opacity:1}to{transform:translate3d(var(--dx,0),105vh,0) rotate(2turn);opacity:.9}}.anim-pop{animation:pop .34s var(--ease-pop)}.anim-shake{animation:shake .42s ease}.anim-float{animation:float 2.6s ease-in-out infinite}.anim-up{animation:fade-up .36s var(--ease-out) both}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;justify-content:space-around;align-items:stretch;gap:2px;padding:6px 6px calc(6px + env(safe-area-inset-bottom));background:color-mix(in oklab,var(--paper) 88%,transparent);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-top:1px solid color-mix(in oklab,var(--line) 80%,transparent);box-shadow:0 -6px 20px -10px rgba(74,52,36,.22)}@supports not (background:color-mix(in oklab,red 50%,blue)){.tabbar{background:rgba(255,253,251,.93);border-top:1px solid rgba(74,52,36,.06)}}.tabbar a{flex:1 1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:52px;padding:6px 2px;border-radius:var(--r-md);color:var(--ink-3);font-size:11px;font-weight:800;transition:color .18s ease,transform .18s var(--ease-pop),background .2s var(--ease-out)}.tabbar a:active{transform:scale(.92)}.tabbar a.on{color:var(--accent-dark);background:var(--accent-soft)}.tabbar .ico{font-size:23px;line-height:1;transition:transform .26s var(--ease-pop)}.tabbar a.on .ico{transform:translateY(-2px) scale(1.14)}.tabbar .dot{width:5px;height:5px;border-radius:50%;background:var(--accent);margin-top:1px;opacity:0}.tabbar a.on .dot{opacity:1}.hero{position:relative;overflow:hidden;border-radius:var(--r-xl);padding:var(--sp-5) 20px;color:#fff;box-shadow:var(--sh-3),inset 0 1px 0 rgba(255,255,255,.3);background:linear-gradient(135deg,#ff9152,#ff6f91 52%,#9b6bff)}.hero:after{right:-34px;top:-46px;width:150px;height:150px;background:rgba(255,255,255,.16)}.hero:after,.hero:before{content:"";position:absolute;border-radius:50%}.hero:before{left:-20px;bottom:-60px;width:120px;height:120px;background:rgba(255,255,255,.1)}.hero>*{position:relative;z-index:1}.avatar{display:grid;place-items:center;width:62px;height:62px;border-radius:50%;font-size:34px;background:rgba(255,255,255,.26);box-shadow:inset 0 0 0 3px rgba(255,255,255,.5);flex:none}.task{display:flex;align-items:center;gap:var(--sp-3);padding:13px 14px;border-radius:var(--r-md);background:var(--paper);border:1px solid var(--line);box-shadow:var(--sh-1);transition:opacity .2s ease}.task.done{opacity:.55}.task .box{display:grid;place-items:center;width:30px;height:30px;border-radius:10px;border:2.5px solid var(--line);color:transparent;font-size:17px;font-weight:900;flex:none;transition:all .24s var(--ease-pop)}.task.done .box{background:var(--ok);border-color:var(--ok);color:#fff}.searchbox{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-pill);background:var(--paper);border:1px solid var(--line);box-shadow:var(--sh-2)}.searchbox input{flex:1 1;border:none;outline:none;background:none;font-size:16px;font-family:inherit;color:var(--ink);min-width:0}.searchbox input::placeholder{color:var(--ink-3)}.skel{border-radius:var(--r-md);background:linear-gradient(90deg,#ece2dd 25%,#f6f1ee 37%,#ece2dd 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite}@keyframes shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.empty{text-align:center;padding:42px 20px;color:var(--ink-3)}.empty .big{font-size:54px;line-height:1;margin-bottom:10px;filter:grayscale(.25)}.mark{background:#fff3cd;border-radius:4px;padding:0 2px;color:inherit}.auth{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;padding:0 var(--sp-4) calc(var(--sp-6) + env(safe-area-inset-bottom))}.auth-head{padding-top:calc(var(--sp-6) + env(safe-area-inset-top));padding-bottom:var(--sp-5)}.auth-mark{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--text-sm);font-weight:800;letter-spacing:.6px;color:var(--ink-3);text-transform:uppercase}.auth-mark i{display:grid;place-items:center;width:34px;height:34px;border-radius:11px;background:linear-gradient(135deg,var(--brand-lift),var(--brand));color:#fff;font-size:18px;font-style:normal;box-shadow:0 6px 14px -6px rgba(74,52,36,.5)}.auth-title{margin:var(--sp-4) 0 0;font-size:var(--text-display);font-weight:900;line-height:1.15;letter-spacing:-.8px;color:var(--ink)}.auth-title em{font-style:normal;color:var(--brand-dark)}.auth-lede{margin:var(--sp-3) 0 0;max-width:34ch;font-size:var(--text-base);color:var(--ink-2)}.auth-tabs{position:relative;display:flex;gap:4px;padding:4px;border-radius:var(--r-pill);background:color-mix(in oklab,var(--ink) 6%,transparent);margin-bottom:var(--sp-5)}.auth-tabs button{flex:1 1;min-height:44px;border-radius:var(--r-pill);font-size:var(--text-base);font-weight:800;color:var(--ink-2);cursor:pointer;transition:color .2s ease,background .28s var(--ease-out),box-shadow .28s var(--ease-out)}.auth-tabs button.on{background:var(--paper);color:var(--brand-dark);box-shadow:var(--sh-1)}.auth-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:var(--sh-2),inset 0 1px 0 rgba(255,255,255,.9);padding:var(--sp-5) var(--sp-4);animation:fade-up .34s var(--ease-out) both}.field{display:block;margin-bottom:var(--sp-4)}.field>span{display:block;margin-bottom:var(--sp-2);font-size:var(--text-sm);font-weight:800;color:var(--ink-2)}.input{display:flex;align-items:center;gap:var(--sp-2);height:54px;padding:0 var(--sp-4);border-radius:var(--r-md);background:color-mix(in oklab,var(--ink) 4%,var(--paper));border:1.5px solid var(--line);transition:border-color .2s ease,background .2s ease,box-shadow .2s var(--ease-out)}.input:focus-within{background:var(--paper);border-color:var(--brand);box-shadow:0 0 0 4px color-mix(in oklab,var(--brand) 18%,transparent)}.input.bad{border-color:var(--no);background:var(--no-soft)}.input input{flex:1 1;min-width:0;border:none;outline:none;background:none;font-family:inherit;font-size:17px;font-weight:700;color:var(--ink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:.4px}.input input::placeholder{color:var(--ink-3);font-weight:600;letter-spacing:0}.input .prefix{font-size:var(--text-lg);font-weight:800;color:var(--ink-2);flex:none}.input .eye{flex:none;display:grid;place-items:center;width:40px;height:40px;border-radius:var(--r-sm);font-size:18px;cursor:pointer;color:var(--ink-3)}.input .eye:active{transform:scale(.9)}.strength{display:flex;gap:5px;margin-top:var(--sp-2)}.strength i{flex:1 1;height:5px;border-radius:var(--r-pill);background:var(--line);transition:background .3s var(--ease-out)}.strength[data-level="1"] i:first-child{background:var(--no)}.strength[data-level="2"] i:nth-child(-n+2){background:var(--gold)}.strength[data-level="3"] i{background:var(--ok)}.hint{margin:var(--sp-1) 0 0;min-height:20px;font-size:var(--text-sm);font-weight:700;color:var(--ink-3)}.hint.bad{color:var(--no)}.hint.good{color:var(--ok)}.auth-err{display:flex;align-items:flex-start;gap:var(--sp-2);margin-bottom:var(--sp-4);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:var(--no-soft);border:1px solid color-mix(in oklab,var(--no) 25%,transparent);color:color-mix(in oklab,var(--no) 75%,var(--ink));font-size:var(--text-sm);font-weight:700;animation:shake .34s ease}.auth-submit{width:100%;margin-top:var(--sp-2)}.auth-foot{margin-top:var(--sp-5);text-align:center;font-size:var(--text-sm);color:var(--ink-3);line-height:1.7}.auth-foot b{color:var(--brand-dark);cursor:pointer;font-weight:800}.auth-note{display:flex;gap:var(--sp-2);margin-top:var(--sp-5);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:color-mix(in oklab,var(--brand) 8%,var(--paper));border:1px dashed color-mix(in oklab,var(--brand) 35%,transparent);font-size:var(--text-sm);color:var(--ink-2);line-height:1.6}.account-card{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4);border-radius:var(--r-lg);background:linear-gradient(135deg,color-mix(in oklab,var(--brand) 12%,var(--paper)),var(--paper) 70%);border:1px solid color-mix(in oklab,var(--brand) 22%,transparent);box-shadow:var(--sh-1)}.account-card .who{flex:1 1;min-width:0}.account-card .who b{display:block;font-size:var(--text-lg);font-weight:900;color:var(--ink)}.account-card .who span{font-size:var(--text-sm);font-weight:700;color:var(--ink-2);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}