:root{--bg: #f7f7f8;--surface: #ffffff;--surface-2: #f0f0f2;--border: #e4e4e7;--text: #1c1c1f;--text-2: #6b6b73;--text-3: #a1a1aa;--accent: #4f7cff;--danger: #e5484d;--study: #4f7cff;--jobs: #f08c2e;--personal: #30a46c;--radius: 10px;--shadow: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 1px rgba(0, 0, 0, .03);color-scheme:light}@media (prefers-color-scheme: dark){:root{--bg: #161618;--surface: #1f1f22;--surface-2: #2a2a2e;--border: #2e2e33;--text: #ececef;--text-2: #a0a0a8;--text-3: #6b6b73;--accent: #6d93ff;--danger: #ff6369;--study: #6d93ff;--jobs: #f5a04f;--personal: #3dbf80;--shadow: none;color-scheme:dark}}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{font-family:Segoe UI Variable Text,Segoe UI,system-ui,sans-serif;font-size:13px;color:var(--text);background:var(--bg);overflow:hidden;-webkit-user-select:none;user-select:none;-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;padding:0}input,textarea{font:inherit;color:inherit;-webkit-user-select:text;user-select:text}svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.cat-study{--cat: var(--study)}.cat-jobs{--cat: var(--jobs)}.cat-personal{--cat: var(--personal)}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--cat, var(--text-3));flex-shrink:0}.app{display:flex;flex-direction:column;height:100%}.titlebar{display:flex;align-items:center;justify-content:space-between;height:36px;padding:0 6px 0 14px;-webkit-app-region:drag;flex-shrink:0}.brand{font-weight:600;font-size:12px;letter-spacing:.02em;color:var(--text-2)}.win-buttons{display:flex;gap:2px;-webkit-app-region:no-drag}.icon-btn{display:grid;place-items:center;width:28px;height:26px;border-radius:6px;color:var(--text-2)}.icon-btn:hover{background:var(--surface-2);color:var(--text)}.icon-btn.active{color:var(--accent)}.icon-btn.active svg{fill:var(--accent);fill-opacity:.2}.icon-btn.close:hover{background:var(--danger);color:#fff}.icon-btn.tiny{width:20px;height:20px;opacity:0}.icon-btn.tiny svg{width:12px;height:12px}.quick-add{padding:2px 12px 8px;flex-shrink:0}.qa-input{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:0 10px;box-shadow:var(--shadow);transition:border-color .15s,box-shadow .15s}.qa-input:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.qa-plus{color:var(--text-3);flex-shrink:0}.qa-input input{flex:1;border:none;outline:none;background:none;height:36px;min-width:0}.qa-input input::placeholder{color:var(--text-3)}.qa-meta{display:flex;align-items:center;gap:6px;height:22px;margin-top:6px;padding:0 2px;overflow:hidden;white-space:nowrap}.qa-hint{color:var(--text-3);font-size:11px;overflow:hidden;text-overflow:ellipsis}.qa-meta .qa-hint:last-child:not(:first-child){margin-left:auto}.chip{display:inline-flex;align-items:center;gap:5px;height:20px;padding:0 8px;border-radius:999px;background:var(--surface-2);font-size:11px;color:var(--text-2)}button.chip:not(.locked):hover{background:var(--border)}.chip.locked{cursor:default;background:color-mix(in srgb,var(--cat) 15%,transparent);color:var(--text)}.chip.date.none{color:var(--text-3)}.tabs{display:flex;gap:2px;margin:0 12px;padding:3px;background:var(--surface-2);border-radius:9px;flex-shrink:0}.tab{flex:1;height:26px;border-radius:7px;color:var(--text-2);font-weight:500;display:flex;align-items:center;justify-content:center;gap:6px}.tab:hover{color:var(--text)}.tab.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.tab .count{font-size:11px;color:var(--text-3);font-variant-numeric:tabular-nums}.progress{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:12px 14px 4px;flex-shrink:0}.prog-label{display:flex;justify-content:space-between;font-size:11px;color:var(--text-2);margin-bottom:4px}.prog-num{color:var(--text-3);font-variant-numeric:tabular-nums}.bar{height:4px;border-radius:2px;background:var(--surface-2);overflow:hidden}.fill{height:100%;background:var(--cat);border-radius:2px;transition:width .3s ease}.list{flex:1;overflow-y:auto;padding:4px 12px 16px}.list::-webkit-scrollbar{width:8px}.list::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px;border:2px solid var(--bg)}.group{margin-top:12px}.group h3{display:flex;align-items:center;gap:6px;margin:0 0 6px;padding:0 4px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-2)}.group.danger h3{color:var(--danger)}.group.empty-day{margin-top:8px}.group.empty-day h3{color:var(--text-3);font-weight:500;margin:0}.group-count{font-weight:500;color:var(--text-3)}.group h3.clickable{cursor:pointer}.chev{display:inline-block;transition:transform .15s;font-size:14px;line-height:1}.chev.open{transform:rotate(90deg)}.link-btn{margin-left:auto;font-size:11px;color:var(--accent);text-transform:none;letter-spacing:0;font-weight:500}.link-btn:hover{text-decoration:underline}.empty{display:flex;flex-direction:column;align-items:center;gap:6px;padding:48px 16px;color:var(--text-2);text-align:center}.empty small{color:var(--text-3)}code{font-family:Cascadia Code,Consolas,monospace;font-size:11px;background:var(--surface-2);padding:1px 5px;border-radius:4px}.task{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:4px;box-shadow:var(--shadow);position:relative;overflow:hidden}.task:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--cat);opacity:.85}.task-row{display:flex;align-items:flex-start;gap:10px;padding:9px 10px 9px 12px;cursor:pointer}.task-row:hover{background:color-mix(in srgb,var(--surface-2) 50%,transparent)}.task-main{flex:1;min-width:0}.task-title{line-height:18px;word-wrap:break-word}.task-meta{display:flex;align-items:center;gap:8px;margin-top:3px;font-size:11px;color:var(--text-3)}.task-meta .dot{width:6px;height:6px}.task-meta .overdue{color:var(--danger)}.task.done .task-title{color:var(--text-3);text-decoration:line-through}.task.done:before{opacity:.25}.check{width:18px;height:18px;flex-shrink:0;border-radius:50%;border:1.5px solid var(--text-3);display:grid;place-items:center;color:transparent;transition:all .12s}.check svg{width:12px;height:12px;stroke-width:2}.check:hover{border-color:var(--cat, var(--accent));color:var(--cat, var(--accent))}.check.checked{background:var(--cat, var(--accent));border-color:var(--cat, var(--accent));color:#fff}.check.small{width:15px;height:15px;border-radius:4px}.check.small svg{width:10px;height:10px}.editor{padding:2px 12px 12px 40px;display:flex;flex-direction:column;gap:10px;cursor:default}.ed-title{border:none;border-bottom:1px solid var(--border);background:none;outline:none;padding:4px 0;font-weight:500}.ed-title:focus{border-color:var(--accent)}.ed-row{display:flex;align-items:center;gap:8px}.ed-label{font-size:11px;color:var(--text-2);width:28px}.ed-date{background:var(--surface-2);border:1px solid transparent;border-radius:6px;padding:3px 6px;font-size:12px;outline:none}.ed-date:focus{border-color:var(--accent)}.ed-row .link-btn{margin-left:0}.segmented{display:flex;background:var(--surface-2);border-radius:7px;padding:2px;gap:2px}.segmented button{display:flex;align-items:center;gap:5px;padding:3px 9px;border-radius:5px;font-size:11px;color:var(--text-2)}.segmented button.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.subtasks{display:flex;flex-direction:column;gap:2px}.subtask{display:flex;align-items:center;gap:8px;min-height:24px}.subtask:hover .icon-btn.tiny{opacity:1}.sub-title{flex:1;-webkit-user-select:text;user-select:text}.subtask.done .sub-title{color:var(--text-3);text-decoration:line-through}.sub-add,.notes{border:none;outline:none;background:none;padding:4px 0;font-size:12px}.sub-add::placeholder,.notes::placeholder{color:var(--text-3)}.notes{resize:vertical;background:var(--surface-2);border-radius:6px;padding:6px 8px;min-height:34px}.ed-footer{display:flex;justify-content:flex-end}.danger-btn{font-size:11px;color:var(--danger);padding:3px 8px;border-radius:5px}.danger-btn:hover{background:color-mix(in srgb,var(--danger) 12%,transparent)}.toast{position:fixed;bottom:14px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:14px;padding:8px 10px 8px 14px;background:var(--text);color:var(--bg);border-radius:8px;font-size:12px;box-shadow:0 6px 20px #0003;animation:rise .18s ease-out}.toast button{color:var(--accent);font-weight:600}@keyframes rise{0%{opacity:0;transform:translate(-50%,6px)}}.icon-btn.sync{position:relative}.icon-btn.sync-synced,.icon-btn.sync-syncing{color:var(--accent)}.icon-btn.sync-syncing svg{animation:pulse 1s ease-in-out infinite}.icon-btn.sync-error{color:var(--danger)}.icon-btn.sync-off,.icon-btn.sync-unconfigured,.icon-btn.sync-offline{color:var(--text-3)}.icon-btn .badge{position:absolute;top:4px;right:5px;width:6px;height:6px;border-radius:50%;background:var(--jobs)}@keyframes pulse{50%{opacity:.35}}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000040;z-index:10;animation:fade .15s ease-out}.sheet{position:fixed;top:calc(40px + env(safe-area-inset-top));left:10px;right:10px;max-width:420px;margin:0 auto;z-index:11;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 14px 14px;box-shadow:0 12px 32px #0000002e;animation:drop .16s ease-out;-webkit-user-select:text;user-select:text}@keyframes fade{0%{opacity:0}}@keyframes drop{0%{opacity:0;transform:translateY(-6px)}}.sheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.sheet-head h2{margin:0;font-size:14px;font-weight:600}.sheet p{margin:6px 0 10px;line-height:1.45}.muted{color:var(--text-2)}.small{font-size:11px}.field{display:block;width:100%;height:34px;margin-bottom:8px;padding:0 10px;border:1px solid var(--border);border-radius:8px;background:var(--bg);outline:none}.field:focus{border-color:var(--accent)}.form-msg{font-size:12px;color:var(--text-2)}.form-msg.error{color:var(--danger)}.sheet-actions{display:flex;gap:8px;margin-top:4px}.btn{height:32px;padding:0 14px;border-radius:8px;background:var(--accent);color:#fff;font-weight:500}.btn:disabled{opacity:.6;cursor:default}.btn.ghost{background:var(--surface-2);color:var(--text)}.acct-row{display:flex;flex-direction:column;gap:2px;margin:4px 0 10px}.acct-status{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--text-2)}.status-dot{width:7px;height:7px;border-radius:50%;background:var(--text-3)}.acct-status.sync-synced .status-dot{background:var(--personal)}.acct-status.sync-syncing .status-dot{background:var(--accent)}.acct-status.sync-error .status-dot{background:var(--danger)}.acct-status.sync-offline .status-dot{background:var(--jobs)}.titlebar.web{-webkit-app-region:no-drag}.titlebar.web .brand{font-size:13px}.app{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}@media (min-width: 640px){.app{max-width:520px;margin:0 auto}}@media (pointer: coarse){body{font-size:15px}input,textarea,.field,.qa-input input{font-size:16px}.qa-input input{height:44px}.tab{height:34px}.task-row{padding:12px 12px 12px 14px}.task-title{line-height:21px}.task-meta{font-size:12px}.check{width:22px;height:22px}.check.small{width:19px;height:19px}.icon-btn{width:36px;height:34px}.icon-btn.tiny{opacity:1;width:28px;height:28px}.segmented button{padding:6px 10px;font-size:13px}.subtask{min-height:32px}.ed-date{font-size:15px;padding:5px 8px}.qa-hint{font-size:12px}.btn{height:40px}.field{height:42px}.task-row:hover{background:none}}
