:root{color-scheme:light;--bg:#F6F5F2;--surface:#FFFFFF;--surface-2:#FAF9F6;--surface-3:#FBFAF8;--fill:#EFEEEA;--fill-2:#EAE8E3;--fill-3:#EEEDEA;--line:#F0EEE9;--line-2:#ECEAE5;--border:#E4E2DC;--border-2:#DAD7D0;--border-3:#C9C5BC;--border-4:#BDB9B0;--text:#1C1B19;--text-2:#3D3B36;--text-3:#4A4842;--muted:#66635B;--faint:#8A867D;--unread:#F7F9FF;--accent:#1E4FB5;--accent-fg:#FFFFFF;--danger-bg:#FCE4E2;--danger-border:#F2B8B2;--danger-text:#7A1A12;--danger:#B42318;--warn-bg:#FFF6E5;--warn-border:#F0D9A8;--warn-text:#5C4508;--warn-strong:#D9BC7A;--seg-on:#FFFFFF;--toast-bg:#1C1B19;--toast-fg:#FFFFFF;--shadow:0 1px 2px rgba(0,0,0,.04),0 8px 24px rgba(0,0,0,.08)}html.dark{color-scheme:dark;--bg:#161514;--surface:#1F1E1C;--surface-2:#252422;--surface-3:#232220;--fill:#2A2927;--fill-2:#2E2D2A;--fill-3:#34322F;--line:#2C2B28;--line-2:#33312E;--border:#3A3835;--border-2:#4A4844;--border-3:#5A5853;--border-4:#6E6B65;--text:#F1EFEA;--text-2:#DDD9D2;--text-3:#C9C5BD;--muted:#A8A49B;--faint:#8F8B82;--unread:#1D2433;--accent:#7EA2F2;--accent-fg:#10131A;--danger-bg:#3A1D1A;--danger-border:#6B2C25;--danger-text:#F7C1BA;--danger:#F28B80;--warn-bg:#33290F;--warn-border:#5C4A1A;--warn-text:#F3DFA6;--warn-strong:#8A6F2A;--seg-on:#45433F;--toast-bg:#F1EFEA;--toast-fg:#1C1B19;--shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px rgba(0,0,0,.4)}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text)}body{font-family:Inter,system-ui,-apple-system,sans-serif;font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}input::placeholder,textarea::placeholder{color:var(--faint)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1,h2,h3{font-family:Inter Tight,Inter,sans-serif;letter-spacing:-.01em;margin:0}.shell{display:flex;min-height:100vh}.sidebar{width:264px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);height:100vh;position:-webkit-sticky;position:sticky;top:0;display:flex;flex-direction:column}.sidebar-scroll{flex:1 1;overflow-y:auto;padding:8px 10px 16px}.brand{display:flex;align-items:center;gap:10px;padding:16px 18px 10px}.brand-mark{width:28px;height:28px;border-radius:8px;background:var(--text);color:var(--bg);display:grid;place-items:center;font-size:13px}.brand-mark,.brand-name{font-weight:800;font-family:Inter Tight,Inter,sans-serif}.brand-name{font-size:16px;letter-spacing:.06em}.nav-item{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:8px;color:var(--text-2);cursor:pointer;border:0;background:none;width:100%;text-align:left;font-weight:500}.nav-item:hover{background:var(--fill)}.nav-item.active{background:var(--fill-2);color:var(--text);font-weight:600}.nav-item .grow{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge{background:var(--danger);color:#fff;border-radius:999px;font-size:11px;font-weight:700;padding:1px 7px}html.dark .badge{color:#1C1B19}.sec-head{display:flex;align-items:center;gap:6px;padding:14px 10px 4px;color:var(--faint);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.sec-head button.toggle{color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;padding:0;display:flex;align-items:center;gap:4px;flex:1 1;text-align:left}.icon-btn,.sec-head button.toggle{border:0;background:none;cursor:pointer}.icon-btn{color:var(--muted);width:26px;height:26px;border-radius:6px;display:inline-grid;place-items:center;flex-shrink:0}.icon-btn:hover{background:var(--fill);color:var(--text)}.folder{margin:2px 0}.folder-head{display:flex;align-items:center;gap:6px;padding:5px 10px;color:var(--muted);font-size:13px;font-weight:600;cursor:pointer;border-radius:6px}.folder-head:hover{background:var(--fill)}.folder-body{padding-left:14px}.dot{width:9px;height:9px;border-radius:3px;flex-shrink:0}.sidebar-foot{border-top:1px solid var(--border);padding:8px 10px}.main{flex:1 1;min-width:0;display:flex;flex-direction:column}.page{padding:32px 40px 80px;max-width:1180px;width:100%}.page.wide{max-width:none}.page-head{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:20px}.page-head h1{font-size:30px;font-weight:700;letter-spacing:-.02em}.sub{color:var(--muted)}.spacer{flex:1 1}.scrim,.topbar{display:none}.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border-2);background:var(--surface);color:var(--text);padding:7px 12px;border-radius:8px;cursor:pointer;font-weight:600;font-size:13px;white-space:nowrap}.btn:hover{border-color:var(--border-3)}.btn.primary{background:var(--text);color:var(--bg);border-color:var(--text)}.btn.danger{color:var(--danger);border-color:var(--danger-border)}.btn.ghost{border-color:transparent;background:none;color:var(--muted)}.btn.ghost:hover{background:var(--fill);color:var(--text)}.btn:disabled{opacity:.5;cursor:default}.btn.sm{padding:4px 9px;font-size:12px}.input,.select,.textarea{width:100%;border:1px solid var(--border-2);background:var(--surface);border-radius:8px;padding:8px 10px}.input:focus,.select:focus,.textarea:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:transparent}.textarea{resize:vertical;min-height:90px}.label{display:block;font-size:12px;font-weight:600;color:var(--muted);margin-bottom:5px}.field{margin-bottom:14px}.row{display:flex;align-items:center;gap:8px}.wrap{flex-wrap:wrap}.seg{display:inline-flex;background:var(--fill);border-radius:9px;padding:3px;gap:2px}.seg button{border:0;background:none;padding:5px 12px;border-radius:7px;font-weight:600;font-size:13px;color:var(--muted);cursor:pointer}.seg button.on{background:var(--seg-on);color:var(--text);box-shadow:0 1px 2px rgba(0,0,0,.08)}.check{width:18px;height:18px;border-radius:50%;border:1.5px solid var(--border-4);background:none;cursor:pointer;display:inline-grid;place-items:center;flex-shrink:0;padding:0;color:transparent}.check:hover{border-color:var(--text-3);color:var(--faint)}.check.done{background:#1F7A4D;border-color:#1F7A4D;color:#fff}.check.sq{border-radius:5px}.chip{gap:5px;color:var(--muted);background:var(--fill);padding:2px 8px;max-width:220px;overflow:hidden;text-overflow:ellipsis}.chip,.pill{display:inline-flex;align-items:center;font-size:12px;border-radius:999px;white-space:nowrap}.pill{gap:6px;font-weight:600;padding:2px 9px}.avatar{border-radius:50%;display:inline-grid;place-items:center;color:#fff;font-weight:700;flex-shrink:0}.muted{color:var(--muted)}.faint{color:var(--faint)}.danger-text{color:var(--danger)}.small{font-size:12px}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px}.empty{padding:28px;text-align:center;color:var(--faint)}.toggle-sw{width:36px;height:20px;border-radius:999px;background:var(--border-3);border:0;position:relative;cursor:pointer;flex-shrink:0;padding:0}.toggle-sw:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:left .15s}.toggle-sw.on{background:#1F7A4D}.toggle-sw.on:after{left:18px}.group{margin-bottom:22px}.group-head{display:flex;align-items:center;gap:8px;font-weight:700;font-size:13px;padding:0 4px 8px}.group-head .count{color:var(--faint);font-weight:600}.task-row{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line);cursor:pointer;min-height:46px}.task-row:last-child{border-bottom:0}.task-row:hover{background:var(--surface-2)}.task-row .title{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.task-row .title.done{text-decoration:line-through;color:var(--faint)}.due{font-size:12px;color:var(--muted);white-space:nowrap}.due.late{color:var(--danger);font-weight:600}.quick-add{display:flex;gap:8px;padding:10px;margin-bottom:24px;flex-wrap:wrap}.quick-add .input{flex:1 1;min-width:200px;border:0;background:none}.quick-add .input[type=date],.quick-add .select{width:auto}.board{display:flex;gap:14px;overflow-x:auto;padding-bottom:20px;align-items:flex-start}.col{width:290px;flex-shrink:0;background:var(--fill-3);border-radius:12px;padding:10px;min-height:120px}.col.drop{outline:2px dashed var(--accent);outline-offset:-2px}.col-head{display:flex;align-items:center;gap:8px;padding:2px 4px 10px;font-weight:700;font-size:13px}.tcard{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:10px 12px;margin-bottom:8px;cursor:pointer}.tcard:hover{border-color:var(--border-3)}.tcard.dragging{opacity:.4}.tcard .t{font-weight:600;margin-bottom:8px;word-break:break-word}.tcard .meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px;color:var(--muted)}.add-inline{width:100%;border:0;background:none;color:var(--muted);text-align:left;padding:6px 4px;cursor:pointer;border-radius:6px;font-weight:500}.add-inline:hover{background:var(--fill);color:var(--text)}.list-head,.list-row{display:grid;grid-template-columns:26px minmax(0,1fr) 150px 120px 80px;grid-gap:10px;gap:10px;align-items:center;padding:9px 14px}.list-head{font-size:11px;font-weight:700;color:var(--faint);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border)}.list-row{border-bottom:1px solid var(--line);cursor:pointer}.list-row:hover{background:var(--surface-2)}.list-group.drop{outline:2px dashed var(--accent);outline-offset:-2px;border-radius:10px}.drawer-scrim{position:fixed;inset:0;background:rgba(0,0,0,.25);z-index:40}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(560px,100vw);background:var(--surface);z-index:41;box-shadow:var(--shadow);display:flex;flex-direction:column}.drawer-head{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--border)}.drawer-body{flex:1 1;overflow-y:auto;padding:18px 22px 40px}.title-input{width:100%;border:0;background:none;font-family:Inter Tight,Inter,sans-serif;font-size:22px;font-weight:700;padding:4px 0;letter-spacing:-.01em;resize:none}.title-input:focus{outline:none}.props{display:grid;grid-template-columns:110px minmax(0,1fr);grid-gap:8px 12px;gap:8px 12px;align-items:center;margin:14px 0 22px}.props .k{color:var(--muted);font-size:13px}.section-title{font-weight:700;font-size:13px;margin:22px 0 8px}.section-title,.sub-row{display:flex;align-items:center;gap:8px}.sub-row{padding:4px 0}.sub-row input.input{border-color:transparent;padding:5px 6px}.sub-row input.input:hover{border-color:var(--border)}.comment{display:flex;gap:10px;padding:10px 0}.comment .body{white-space:pre-wrap;word-break:break-word}.mention{color:var(--accent);font-weight:600}.suggest{position:absolute;bottom:100%;left:0;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow);min-width:200px;z-index:5;overflow:hidden}.suggest button{display:flex;gap:8px;align-items:center;width:100%;border:0;background:none;padding:7px 10px;cursor:pointer;text-align:left}.suggest button.on,.suggest button:hover{background:var(--fill)}.modal-scrim{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:50;display:grid;place-items:center;padding:16px}.modal{background:var(--surface);border-radius:14px;width:min(520px,100%);max-height:calc(100vh - 32px);overflow-y:auto;box-shadow:var(--shadow)}.modal-head{padding:18px 20px 6px;display:flex;align-items:center}.modal-head h2{font-size:18px;flex:1 1}.modal-body{padding:10px 20px 8px}.modal-foot{padding:12px 20px 18px;display:flex;gap:8px;justify-content:flex-end}.swatches{display:flex;gap:6px;flex-wrap:wrap}.swatch{width:24px;height:24px;border-radius:7px;border:2px solid transparent;cursor:pointer;padding:0}.swatch.on{border-color:var(--text)}.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:var(--toast-bg);color:var(--toast-fg);padding:10px 16px;border-radius:10px;font-weight:500;z-index:60;box-shadow:var(--shadow);max-width:calc(100vw - 32px)}.note{display:flex;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line);cursor:pointer}.note.unread{background:var(--unread)}.note:hover{background:var(--surface-2)}.note .unread-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);margin-top:7px;flex-shrink:0}.table{width:100%;border-collapse:collapse}.table th{text-align:left;font-size:11px;color:var(--faint);text-transform:uppercase;letter-spacing:.05em;padding:10px 14px;border-bottom:1px solid var(--border)}.table td{padding:10px 14px;border-bottom:1px solid var(--line);vertical-align:middle}.table tr:last-child td{border-bottom:0}.set-grid{display:grid;grid-template-columns:1fr auto;grid-gap:10px 16px;gap:10px 16px;align-items:center}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:16px}.login-card{width:min(400px,100%);padding:32px 28px}@media (max-width:860px){.sidebar{position:fixed;left:0;top:0;bottom:0;z-index:45;transform:translateX(-100%);transition:transform .2s;box-shadow:var(--shadow)}.sidebar.open{transform:none}.scrim.open{display:block;position:fixed;inset:0;background:rgba(0,0,0,.3);z-index:44}.topbar{display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--surface);border-bottom:1px solid var(--border);position:-webkit-sticky;position:sticky;top:0;z-index:30}.topbar .t{flex:1 1;font-family:Inter Tight,Inter,sans-serif;font-weight:700;font-size:17px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page{padding:18px 16px 80px}.page-head h1{font-size:24px}.list-head{display:none}.list-row{grid-template-columns:26px minmax(0,1fr) auto}.list-row .hide-sm{display:none}.props{grid-template-columns:90px minmax(0,1fr)}.drawer-body{padding:14px 16px 40px}.col{width:260px}}