:root{--bg:#f6f7f4;--bg-panel:#fbfcf8;--surface:#fff;--text:#17211c;--text-dim:#637168;--text-faint:#8e988f;--border:#d7ded8;--ink:#17211c;--ink-hover:#2a352e;--accent:#0f6b4f;--accent-soft:#dff0e8;--accent-hover:#0c5640;--blue:#235c9d;--blue-soft:#e6f0fb;--gold:#9a6a17;--gold-soft:#f7ecd1;--danger:#9b3731;--danger-soft:#f8e6e3;--ok:var(--accent);--ok-soft:var(--accent-soft);--doing:var(--gold);--doing-soft:var(--gold-soft);--todo:var(--text-faint);--todo-soft:#eef0eb;--radius:8px;--shadow:0 16px 44px #17211c14;--sans:-apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Segoe UI", sans-serif;font-family:var(--sans);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}body{color:var(--text);background:linear-gradient(90deg, #0f6b4f0b 1px, transparent 1px), linear-gradient(180deg, #0f6b4f0b 1px, transparent 1px), var(--bg);background-size:30px 30px;margin:0;line-height:1.6}#root{min-height:100vh}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;font-family:inherit}::selection{background:var(--accent-soft)}.layout{min-height:100vh;display:flex}.sidebar{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-right:1px solid var(--border);background:#f6f7f4f0;flex-direction:column;flex-shrink:0;gap:4px;width:220px;padding:22px 18px;display:flex}.brand{border-bottom:1px solid var(--border);color:var(--text);align-items:center;gap:10px;margin-bottom:16px;padding-bottom:18px;display:flex}.brand svg{width:24px;height:24px;color:var(--accent);flex-shrink:0}.brand span{font-size:15px;font-weight:800;line-height:1.3}.sidebar a{color:var(--text-dim);border-radius:6px;padding:8px 10px;font-size:14px;font-weight:500;text-decoration:none;transition:color .15s,background .15s}.sidebar a.active{color:var(--accent);background:var(--accent-soft);font-weight:800}.sidebar a:hover:not(.active){color:var(--accent);background:var(--accent-soft)}.sidebar .logout{color:var(--text-faint);text-align:left;background:0 0;border:none;margin-top:auto;padding:8px 10px;font-size:12.5px}.sidebar .logout:hover{color:var(--danger)}.content{flex:1;max-width:920px;padding:44px 52px 100px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:24px;padding:28px}.eyebrow{color:var(--accent);letter-spacing:.08em;text-transform:uppercase;margin:0 0 10px;font-size:12px;font-weight:800;display:block}.lede{color:var(--text-dim);margin:0 0 32px;font-size:13.5px}h2{letter-spacing:-.01em;color:var(--text);margin:0 0 10px;font-size:24px;font-weight:800;line-height:1.3}label{color:var(--text-dim);margin-top:24px;margin-bottom:8px;font-size:12.5px;font-weight:700;display:block}label:first-child{margin-top:0}input,textarea,select{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);width:100%;height:38px;color:var(--text);padding:0 12px;font-family:inherit;font-size:14.5px;transition:border-color .15s,box-shadow .15s}input::placeholder,textarea::placeholder{color:var(--text-faint)}input:focus,textarea:focus,select:focus{outline:3px solid var(--accent-soft);border-color:var(--accent)}textarea{resize:vertical;background:var(--bg-panel);height:auto;min-height:90px;padding:12px;line-height:1.6}select{padding:0 8px}.row{gap:16px;display:flex}.row>*{flex:1}.btn{border-radius:var(--radius);border:1px solid var(--ink);background:var(--ink);color:#fff;align-items:center;gap:6px;height:40px;padding:0 20px;font-size:13.5px;font-weight:800;transition:background .15s,border-color .15s,transform 50ms;display:inline-flex}.btn:hover{background:var(--ink-hover);border-color:var(--ink-hover)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.35;cursor:not-allowed}.btn.secondary{background:var(--surface);color:var(--text);border-color:var(--border)}.btn.secondary:hover{border-color:var(--text);background:var(--surface)}.btn.danger{background:var(--surface);color:var(--danger);border-color:var(--danger)}.btn.danger:hover{background:var(--danger-soft)}.actions{gap:10px;margin-top:28px;display:flex}.list-item{border-bottom:1px solid var(--border);padding:16px 0}.list-item:last-child{border-bottom:none}.list-item strong{font-size:15px}.muted{color:var(--text-dim);font-size:13px}.badge{background:var(--todo-soft);min-height:24px;color:var(--todo);border-radius:999px;align-items:center;gap:4px;padding:2px 9px;font-size:12px;font-weight:800;display:inline-flex}.badge.done{background:var(--ok-soft);color:var(--ok)}.badge.doing{background:var(--doing-soft);color:var(--doing)}.badge.todo{background:var(--todo-soft);color:var(--text-dim)}.error{color:var(--danger);margin-top:10px;font-size:13px}table{border-collapse:collapse;width:100%;font-size:14px}th,td{text-align:left;border-bottom:1px solid var(--border);vertical-align:top;padding:11px 10px}th:first-child,td:first-child{padding-left:0}th{color:var(--text-faint);letter-spacing:.03em;text-transform:uppercase;font-size:12px;font-weight:700}tbody tr:hover{background:var(--bg-panel)}.filters{gap:14px;margin-bottom:20px;display:flex}.filters select,.filters input{width:auto;min-width:140px}.owner-input{width:100%;min-width:0;color:var(--text);background:0 0;border:1px solid #0000;border-radius:6px;padding:5px 8px;font-size:14px;transition:border-color .12s,background .12s}.owner-input:hover{border-color:var(--border)}.owner-input:focus{border-color:var(--accent);background:var(--surface)}.owner-input.is-unassigned{color:var(--gold);background:var(--gold-soft);border-color:#0000}.owner-input.is-unassigned::placeholder{color:var(--gold);opacity:.85}.owner-input:disabled{opacity:.55}.task-text{width:100%;color:var(--text);white-space:pre-wrap;word-break:break-word;cursor:text;border:1px solid #0000;border-radius:6px;padding:5px 8px;font-size:14px;line-height:1.55;transition:background .12s,border-color .12s}.task-text:hover{background:var(--bg-panel);border-color:var(--border)}.task-edit{border:1px solid var(--accent);background:var(--surface);resize:vertical;border-radius:6px;width:100%;min-height:60px;padding:5px 8px;font-size:14px;line-height:1.55;overflow:hidden}.date-input{background:0 0;border:1px solid #0000;border-radius:6px;width:auto;min-width:0;padding:4px 6px;font-size:13px}.date-input:hover{border-color:var(--border)}.date-input:focus{border-color:var(--accent);background:var(--surface)}.add-todo-grid{grid-template-columns:150px 1fr 150px 110px;gap:10px;margin-bottom:4px;display:grid}.add-todo-grid input,.add-todo-grid select{width:100%;min-width:0}@media (width<=640px){.add-todo-grid{grid-template-columns:1fr 1fr}}.status-select{border:1px solid var(--border);border-radius:20px;width:auto;min-width:96px;padding:4px 8px;font-size:13px}.status-select.done{background:var(--ok-soft);color:var(--ok);border-color:#0000}.status-select.doing{background:var(--doing-soft);color:var(--doing);border-color:#0000}.status-select.todo{background:var(--todo-soft);color:var(--text-dim);border-color:#0000}.unassigned-note{color:var(--gold);font-weight:600}.cat-select{border:1px solid #0000;border-radius:20px;width:auto;min-width:72px;padding:3px 8px;font-size:12px;font-weight:700}.cat-select:disabled{opacity:.55}.filters-spacer{flex:1}.btn.secondary.active{background:var(--ink);color:#fff;border-color:var(--ink)}.cat-manager{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-panel);margin-bottom:22px;padding:18px}.cat-manager-title{margin-bottom:14px;font-size:14px;font-weight:700}.cat-manager-title .muted{font-size:12px;font-weight:400}.cat-manager-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;display:grid}.cat-card{border:1px solid var(--border);background:var(--surface);border-radius:10px;padding:12px}.cat-card-add{background:0 0;border-style:dashed}.cat-card-top{align-items:center;gap:8px;margin-bottom:10px;display:flex}.cat-pill{border-radius:20px;padding:3px 12px;font-size:12px;font-weight:700}.cat-add-label{color:var(--text-dim);font-size:13px;font-weight:700}.cat-count{margin-left:auto;font-size:12px}.cat-del{width:22px;height:22px;color:var(--text-faint);cursor:pointer;background:0 0;border:none;border-radius:50%;padding:0;font-size:18px;line-height:1}.cat-del:hover{background:var(--danger-soft);color:var(--danger)}.cat-rename{border:1px solid var(--border);border-radius:6px;width:100%;margin-bottom:10px;padding:6px 8px;font-size:14px}.swatches{flex-wrap:wrap;gap:7px;display:flex}.swatch{cursor:pointer;border:2px solid #0000;border-radius:50%;width:22px;height:22px;padding:0;transition:transform .1s}.swatch:hover{transform:scale(1.15)}.swatch.sel{border-color:var(--text);box-shadow:0 0 0 2px var(--surface) inset}.cat-add-btn{width:100%;margin-top:12px}.rich-list{margin:8px 0 22px;padding-left:22px}.rich-list li{color:var(--text);margin-bottom:9px;line-height:1.72}.rich-list li:last-child{margin-bottom:0}.rich-p{color:var(--text);margin:8px 0 22px;line-height:1.72}.rich-empty{margin:6px 0 22px}.pitfall-head{align-items:center;gap:14px;margin-bottom:8px;display:flex}.pitfall-head .spacer{flex:1}.resolved-toggle{color:var(--text-dim);cursor:pointer;align-items:center;gap:5px;margin:0;font-size:13px;display:inline-flex}.resolved-toggle input{width:auto;margin:0}.link-btn{width:auto;color:var(--text-dim);cursor:pointer;background:0 0;border:none;padding:2px 4px;font-size:13px}.link-btn:hover{color:var(--text);text-decoration:underline}.link-btn.danger{color:var(--danger)}.source-line{margin-top:8px}.tag-manual{color:var(--text-faint);border:1px dashed var(--border);border-radius:4px;padding:1px 8px;font-size:12px}.add-form{border:1px solid var(--accent-soft);background:var(--bg-panel)}.login-page{justify-content:center;align-items:center;min-height:100vh;display:flex}.login-box{text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:440px;box-shadow:var(--shadow);padding:48px}.login-box .brand{border-bottom:none;margin-bottom:36px;padding-bottom:0}.item-row{align-items:flex-start;gap:8px;margin-bottom:8px;display:flex}.item-row>*{flex:1}.item-row button{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);height:38px;color:var(--text-dim);flex:none;padding:0 12px;font-size:12.5px}.item-row button:hover{border-color:var(--danger);color:var(--danger)}.empty-state{color:var(--text-faint);flex-direction:column;align-items:flex-start;gap:12px;padding:10px 0;display:flex}.empty-state svg{width:36px;height:36px;color:var(--accent);opacity:.7}
