:root{color-scheme:dark;--text: #eef1f8;--text-dim: rgba(238, 241, 248, .66);--text-faint: rgba(238, 241, 248, .44);--accent: #7f77dd;--accent-soft: rgba(127, 119, 221, .18);--teal: #5dcaa5;--amber: #ef9f27;--danger: #e24b4a;--glass-border: rgba(255, 255, 255, .16);--glass-hi: rgba(255, 255, 255, .3);--radius-lg: 24px;--radius-md: 16px}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:15px;line-height:1.55;color:var(--text);background:radial-gradient(1200px 780px at 72% -12%,#17224c 0%,transparent 62%),radial-gradient(900px 640px at 8% 108%,#123c3a 0%,transparent 60%),#070b18;background-attachment:fixed;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::selection{background:#7f77dd66}input,textarea,button{font-family:inherit}.app-root{position:relative;min-height:100dvh;padding:clamp(18px,4vw,48px) clamp(12px,4vw,32px);display:flex;justify-content:center}.aurora{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;overflow:hidden;pointer-events:none}.aurora span{position:absolute;border-radius:50%;filter:blur(70px);opacity:.5}.blob-1{width:44vw;height:44vw;min-width:320px;min-height:320px;left:-8vw;top:-10vh;background:radial-gradient(circle at 35% 35%,#7f77dd,transparent 68%);animation:drift-a 26s ease-in-out infinite}.blob-2{width:38vw;height:38vw;min-width:280px;min-height:280px;right:-6vw;top:14vh;background:radial-gradient(circle at 50% 50%,#1d9e75,transparent 68%);animation:drift-b 32s ease-in-out infinite}.blob-3{width:40vw;height:40vw;min-width:300px;min-height:300px;left:24vw;bottom:-16vh;background:radial-gradient(circle at 50% 50%,#378add,transparent 70%);animation:drift-c 29s ease-in-out infinite}@keyframes drift-a{0%,to{transform:translateZ(0) scale(1)}50%{transform:translate3d(6vw,8vh,0) scale(1.12)}}@keyframes drift-b{0%,to{transform:translateZ(0) scale(1.05)}50%{transform:translate3d(-7vw,10vh,0) scale(.92)}}@keyframes drift-c{0%,to{transform:translateZ(0) scale(1)}50%{transform:translate3d(5vw,-9vh,0) scale(1.15)}}.glass{background:linear-gradient(180deg,#ffffff1f,#ffffff0d);backdrop-filter:blur(24px) saturate(180%);-webkit-backdrop-filter:blur(24px) saturate(180%);border:1px solid var(--glass-border);box-shadow:0 18px 48px #0306126b,inset 0 1px 0 var(--glass-hi)}@supports not ((backdrop-filter: blur(2px)) or (-webkit-backdrop-filter: blur(2px))){.glass{background:#12182edb}}.shell{position:relative;z-index:1;width:100%;max-width:760px;display:flex;flex-direction:column;gap:16px}.shell-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.shell-title{margin:0;font-size:26px;font-weight:600;letter-spacing:.01em;text-shadow:0 2px 14px rgba(0,0,0,.35)}.shell-date{margin:4px 0 0;font-size:12.5px;color:var(--text-faint)}.btn{border:1px solid rgba(255,255,255,.16);background:#ffffff14;color:var(--text);font-size:13.5px;font-weight:500;padding:10px 18px;border-radius:999px;cursor:pointer;transition:transform .18s ease,background .18s ease,border-color .18s ease,box-shadow .18s ease}.btn:hover{background:#ffffff26;transform:translateY(-1px)}.btn:active{transform:translateY(0) scale(.98)}.btn:focus-visible{outline:2px solid rgba(127,119,221,.75);outline-offset:2px}.btn-primary{background:linear-gradient(135deg,#7f77ddeb,#5dcaa5b8);border-color:#ffffff42;box-shadow:0 12px 28px #7f77dd4d}.btn-primary:hover{box-shadow:0 16px 34px #7f77dd6b}.btn-ghost{background:#ffffff0d}.composer{display:flex;align-items:center;gap:10px;padding:8px 8px 8px 16px;border-radius:999px}.composer-plus{display:grid;place-items:center;width:22px;height:22px;color:var(--text-faint);flex:none}.composer-plus svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}.composer-input{flex:1;min-width:0;background:transparent;border:none;outline:none;color:var(--text);font-size:16px;padding:8px 0}.composer-input::placeholder{color:var(--text-faint)}.composer-submit{flex:none;padding:10px 20px}.prio-chip{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;padding:4px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.12);background:#ffffff0f;color:var(--text-dim);cursor:pointer;flex:none;transition:background .18s ease,border-color .18s ease,color .18s ease}.prio-chip:hover{background:#ffffff1f}.prio-chip.on,.prio-chip.prio-1{color:#f7c983;border-color:#ef9f2759;background:#ef9f2724}.prio-chip.prio-2{color:#f4a9a7;border-color:#e24b4a61;background:#e24b4a29}.dot{width:6px;height:6px;border-radius:50%;background:currentColor;display:inline-block}.filter-bar{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.seg{position:relative;display:flex;padding:4px;border-radius:999px;flex:1 1 320px}.seg-thumb{position:absolute;top:4px;bottom:4px;left:4px;width:calc((100% - 8px) / 3);border-radius:999px;background:linear-gradient(180deg,#ffffff3d,#ffffff1a);border:1px solid rgba(255,255,255,.22);box-shadow:inset 0 1px #ffffff52;transform:translate(calc(var(--i, 0) * 100%));transition:transform .3s cubic-bezier(.4,0,.2,1);pointer-events:none}.seg-btn{position:relative;z-index:1;flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 10px;border:none;background:transparent;color:var(--text-faint);font-size:13px;font-weight:500;border-radius:999px;cursor:pointer;transition:color .2s ease}.seg-btn.active{color:#fff}.seg-btn em{font-style:normal;font-size:11px;opacity:.72;font-variant-numeric:tabular-nums}.search{display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;flex:0 1 240px}.search svg{width:16px;height:16px;fill:none;stroke:var(--text-faint);stroke-width:1.7;stroke-linecap:round;flex:none}.search input{flex:1;min-width:0;background:transparent;border:none;outline:none;color:var(--text);font-size:16px}.search input::placeholder{color:var(--text-faint)}.search-clear{border:none;background:transparent;color:var(--text-faint);font-size:18px;line-height:1;cursor:pointer;padding:0 2px}.list-panel{padding:14px;border-radius:var(--radius-lg)}.todo-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.todo-row{display:flex;align-items:flex-start;gap:12px;padding:13px 14px;border-radius:var(--radius-md);background:#ffffff0e;border:1px solid rgba(255,255,255,.1);box-shadow:inset 0 1px #ffffff1f;animation:row-in .34s ease both;transition:transform .2s ease,background .2s ease,border-color .2s ease}.todo-row:hover{transform:translateY(-2px);background:#ffffff17;border-color:#ffffff2e}.todo-row.pending{opacity:.55;pointer-events:none}.todo-row.editing{background:#ffffff1a;border-color:#7f77dd66}@keyframes row-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.check{flex:none;width:26px;height:26px;margin-top:2px;border-radius:50%;border:1.6px solid rgba(255,255,255,.38);background:#ffffff0a;display:grid;place-items:center;cursor:pointer;padding:0;transition:background .22s ease,border-color .22s ease,box-shadow .22s ease,transform .16s ease}.check:hover{border-color:#5dcaa5cc;transform:scale(1.06)}.check:focus-visible{outline:2px solid rgba(127,119,221,.75);outline-offset:2px}.check svg{width:15px;height:15px;fill:none;stroke:#fff;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:32;stroke-dashoffset:32;transition:stroke-dashoffset .26s ease}.todo-row.done .check{background:linear-gradient(135deg,#5dcaa5,#1d9e75);border-color:transparent;box-shadow:0 8px 18px #1d9e7559}.todo-row.done .check svg{stroke-dashoffset:0}.row-main{flex:1;min-width:0}.todo-title{margin:0;font-size:15px;line-height:1.5;color:var(--text);display:inline-block;position:relative;word-break:break-word;transition:color .24s ease}.todo-title:after{content:"";position:absolute;left:0;top:54%;height:1px;width:0;background:currentColor;opacity:.65;transition:width .28s ease}.todo-row.done .todo-title{color:var(--text-faint)}.todo-row.done .todo-title:after{width:100%}.row-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px}.due{font-size:11.5px;padding:3px 9px;border-radius:999px;background:#ffffff0f;color:var(--text-dim)}.due-overdue{color:#f4a9a7;background:#e24b4a29}.due-today{color:#f7c983;background:#ef9f2729}.note-tag{font-size:11.5px;color:var(--text-faint);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-actions{display:flex;gap:6px;flex:none;opacity:0;transition:opacity .2s ease}.todo-row:hover .row-actions,.todo-row:focus-within .row-actions,.todo-row.editing .row-actions{opacity:1}.icon-btn{width:34px;height:34px;border-radius:12px;display:grid;place-items:center;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);color:var(--text-dim);cursor:pointer;padding:0;transition:background .18s ease,color .18s ease,border-color .18s ease,transform .18s ease}.icon-btn svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.icon-btn:hover{color:#fff;background:#ffffff29;transform:translateY(-1px)}.icon-btn.danger:hover{color:#f7c1c1;background:#e24b4a33;border-color:#e24b4a6b}.edit-area{flex:1;min-width:0;display:flex;flex-direction:column;gap:10px}.edit-title,.edit-note,.edit-date{width:100%;background:#ffffff12;border:1px solid rgba(255,255,255,.14);border-radius:14px;padding:10px 12px;color:var(--text);font-size:15px;outline:none;transition:border-color .18s ease,box-shadow .18s ease}.edit-title:focus,.edit-note:focus,.edit-date:focus{border-color:#7f77dd99;box-shadow:0 0 0 3px #7f77dd2e}.edit-note{resize:vertical;min-height:60px;font-size:14px}.edit-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.edit-date{width:auto;flex:none;font-size:13.5px;padding:8px 12px}.prio-group{display:flex;gap:6px}.edit-actions{margin-left:auto;display:flex;gap:8px}.stats{display:flex;align-items:center;gap:20px;flex-wrap:wrap;padding:16px 20px;border-radius:20px}.stats-numbers{display:flex;gap:20px}.stat{display:flex;flex-direction:column}.stat-value{font-size:22px;font-weight:600;line-height:1.15;font-variant-numeric:tabular-nums}.stat-label{font-size:11.5px;color:var(--text-faint);margin-top:2px}.accent{color:#a89ff0}.teal{color:var(--teal)}.progress{flex:1 1 140px;height:6px;border-radius:999px;background:#ffffff1a;overflow:hidden}.progress span{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#7f77dd,#5dcaa5);transition:width .4s cubic-bezier(.4,0,.2,1)}.clear-btn{margin-left:auto;font-size:12.5px;padding:8px 14px}.clear-btn.confirm{color:#f7c1c1;border-color:#e24b4a73;background:#e24b4a2e}.gate{position:relative;z-index:1;min-height:100dvh;display:grid;place-items:center;padding:20px}.gate-card{width:min(400px,100%);padding:38px 30px 30px;text-align:center;border-radius:28px;animation:card-in .5s cubic-bezier(.22,1,.36,1) both}@keyframes card-in{0%{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.gate-logo{display:grid;place-items:center;margin-bottom:18px}.gate-logo span{width:58px;height:58px;border-radius:50%;background:radial-gradient(circle at 32% 28%,#ffffffbf,#ffffff14 62%);border:1px solid rgba(255,255,255,.28);box-shadow:0 12px 30px #7f77dd47,inset 0 1px #ffffff80}.gate-title{margin:0;font-size:24px;font-weight:600;letter-spacing:.02em}.gate-sub{margin:6px 0 22px;font-size:13px;color:var(--text-dim)}.glass-input{width:100%;padding:14px 16px;border-radius:16px;background:#ffffff12;border:1px solid rgba(255,255,255,.16);color:var(--text);font-size:16px;text-align:center;outline:none;margin-bottom:14px;transition:border-color .18s ease,box-shadow .18s ease}.glass-input:focus{border-color:#7f77dd99;box-shadow:0 0 0 3px #7f77dd2e}.gate-card .btn-primary{width:100%;padding:13px;font-size:14.5px}.gate-error{min-height:18px;margin:12px 0 0;font-size:12.5px;color:#f4a9a7;opacity:0;transition:opacity .2s ease}.gate-error.show{opacity:1}.shake{animation:shake .42s cubic-bezier(.36,.07,.19,.97)}@keyframes shake{10%,90%{transform:translate(-2px)}20%,80%{transform:translate(4px)}30%,50%,70%{transform:translate(-7px)}40%,60%{transform:translate(7px)}}.boot{position:relative;z-index:1;min-height:60dvh;display:grid;place-items:center}.boot-dot{width:34px;height:34px;border-radius:50%;border:2px solid rgba(255,255,255,.18);border-top-color:var(--accent);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.empty{padding:46px 20px;text-align:center;color:var(--text-faint);font-size:13.5px}.empty-orb{display:block;width:54px;height:54px;margin:0 auto 14px;border-radius:50%;background:radial-gradient(circle at 32% 30%,#ffffff8c,#ffffff0f 62%);border:1px solid rgba(255,255,255,.2);box-shadow:0 10px 26px #00000040}.toast-stack{position:fixed;z-index:50;left:50%;transform:translate(-50%);bottom:calc(22px + env(safe-area-inset-bottom));width:min(420px,calc(100vw - 32px));display:flex;flex-direction:column;gap:10px}.toast{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:16px;font-size:13.5px;animation:toast-in .28s cubic-bezier(.22,1,.36,1) both}@keyframes toast-in{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.toast-action{margin-left:auto;flex:none;border:none;border-radius:999px;padding:6px 12px;font-size:12.5px;cursor:pointer;background:#7f77dd38;color:#cfc8ff;transition:background .18s ease}.toast-action:hover{background:#7f77dd5c}.toast-close{flex:none;border:none;background:transparent;color:var(--text-faint);font-size:18px;line-height:1;cursor:pointer;padding:0 2px}@media (max-width: 720px){.app-root{padding:16px 12px calc(96px + env(safe-area-inset-bottom))}.shell{gap:14px}.shell-title{font-size:22px}.composer{position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:30;margin:0;padding:7px 7px 7px 14px;box-shadow:0 18px 40px #0306128c,inset 0 1px 0 var(--glass-hi)}.seg,.search{flex:1 1 100%}.stats{gap:14px;padding:14px 16px}.row-actions{opacity:1}.progress{order:3;flex-basis:100%}.clear-btn{margin-left:0}.toast-stack{bottom:calc(76px + env(safe-area-inset-bottom))}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
