:root{--bg: #eef0f4;--panel: #ffffff;--panel2: #f7f8fa;--hover: #f2f4f7;--card: #ffffff;--text: #1f2329;--text2: #5f6672;--text3: #7b8290;--border: #e4e6ea;--border2: #d6d9de;--p0: #e5484d;--p1: #e08600;--p2: #3d7eff;--ok: #12a150;--accent: #4f6ef7}[data-theme=dark]{--bg: #121419;--panel: #1a1d24;--panel2: #22262e;--hover: #252a33;--card: #1f232b;--text: #e7e9ed;--text2: #a5abb6;--text3: #8d95a2;--border: #2b3038;--border2: #3a4049;--p0: #f2686c;--p1: #f0a23c;--p2: #5b93ff;--ok: #34c27a;--accent: #5b93ff}[data-theme=tech]{--bg: #070b14;--panel: #0f1728;--panel2: #151d2e;--card: #121a2c;--hover: rgba(91, 140, 255, .09);--text: #f8fafc;--text2: #94a3b8;--text3: #7c8aa5;--border: #253047;--border2: #33415c;--p0: #ef4444;--p1: #f59e0b;--p2: #5b8cff;--ok: #22c55e;--accent: #8ea2ff}[data-theme=tech] body,[data-theme=tech] .login-wrap{background-color:#070b14;background-image:radial-gradient(1100px 560px at 82% -8%,rgba(91,140,255,.11),transparent 60%),radial-gradient(900px 520px at 4% 106%,rgba(124,92,255,.08),transparent 55%),linear-gradient(rgba(148,163,184,.026) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.026) 1px,transparent 1px);background-size:auto,auto,32px 32px,32px 32px;background-attachment:fixed}[data-theme=tech] .topbar,[data-theme=tech] .sidebar,[data-theme=tech] .drawer,[data-theme=tech] .modal{background:#0f1728b8}[data-theme=tech] .icon-btn:hover{box-shadow:0 0 10px #22d3ee38}[data-theme=tech] .nav-item.active{box-shadow:inset 2px 0 0 var(--accent);background:#5b8cff1f}[data-theme=tech] .btn-primary{background:linear-gradient(135deg,#5b8cff,#7c5cff);border:none;box-shadow:0 0 12px #5b8cff40,inset 0 1px #ffffff29}[data-theme=tech] .note-item.active{box-shadow:inset 2px 0 0 var(--accent);background:#5b8cff14}[data-theme=tech] .notes-editor{background:#0d1422}[data-theme=tech] .topbar,[data-theme=tech] .sidebar,[data-theme=tech] .trow,[data-theme=tech] .board-col,[data-theme=tech] .board-card,[data-theme=tech] .note-item,[data-theme=tech] .notes-editor,[data-theme=tech] .stat-card,[data-theme=tech] .composer-input,[data-theme=tech] .trash-row,[data-theme=tech] .drawer,[data-theme=tech] .modal,[data-theme=tech] .login-card,[data-theme=tech] .toast{backdrop-filter:blur(18px) saturate(1.3);-webkit-backdrop-filter:blur(18px) saturate(1.3)}[data-theme=glass]{--bg: #eef1f8;--panel: rgba(255, 255, 255, .5);--panel2: rgba(255, 255, 255, .34);--card: rgba(255, 255, 255, .62);--hover: rgba(255, 255, 255, .72);--text: #1f2329;--text2: #565e6b;--text3: #6f7889;--border: rgba(255, 255, 255, .6);--border2: rgba(31, 35, 41, .14);--p0: #e5484d;--p1: #d97706;--p2: #4f6ef7;--ok: #12a150;--accent: #4f6ef7}[data-theme=glass] body,[data-theme=glass] .login-wrap{background:radial-gradient(1000px 520px at 86% -4%,rgba(147,197,253,.4),transparent 55%),radial-gradient(880px 560px at 6% 18%,rgba(196,181,253,.34),transparent 52%),radial-gradient(1100px 640px at 68% 104%,rgba(251,207,232,.32),transparent 56%),linear-gradient(160deg,#e9edfb,#f2edfb 46%,#e7f5fb);background-attachment:fixed}[data-theme=glass] .topbar,[data-theme=glass] .sidebar,[data-theme=glass] .trow,[data-theme=glass] .board-col,[data-theme=glass] .board-card,[data-theme=glass] .note-item,[data-theme=glass] .notes-editor,[data-theme=glass] .stat-card,[data-theme=glass] .composer-input,[data-theme=glass] .trash-row,[data-theme=glass] .drawer,[data-theme=glass] .modal,[data-theme=glass] .login-card,[data-theme=glass] .toast{backdrop-filter:blur(22px) saturate(1.5);-webkit-backdrop-filter:blur(22px) saturate(1.5);box-shadow:inset 0 1px #ffffffa6,0 8px 28px #1f232914}[data-theme=glass] .btn-primary{box-shadow:inset 0 1px #fff6,0 4px 14px #4f6ef740}[data-theme=glass] .md-code pre{background:#0f172a0d}[data-theme=glass] .notes-editor{background:#ffffffe6}body,.topbar,.sidebar,.main,.drawer,.modal,input,select,textarea,.seg,.chip{transition:background-color .25s ease,border-color .25s ease,color .25s ease}.btn:active,.icon-btn:active,.tool-btn:active,.seg button:active,.nav-item:active{transform:scale(.97)}.modal{animation:modal-in .18s ease-out;transform-origin:50% 40%}@keyframes modal-in{0%{opacity:0;transform:scale(.96) translateY(6px)}to{opacity:1;transform:none}}.drawer{animation:drawer-in .2s ease-out}@keyframes drawer-in{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}.toast{animation:toast-in .22s ease-out}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}@media (prefers-reduced-motion: reduce){.modal,.drawer,.toast{animation:none}.btn:active,.icon-btn:active,.tool-btn:active,.seg button:active,.nav-item:active{transform:none}}.proj-modal{width:340px}.proj-palette{display:flex;gap:8px;flex-wrap:wrap}.proj-palette .swatch{width:24px;height:24px;border-radius:8px;cursor:pointer;border:2px solid transparent;transition:transform .12s,box-shadow .12s}.proj-palette .swatch:hover{transform:scale(1.1)}.proj-palette .swatch.on{border-color:var(--text);box-shadow:0 0 0 2px var(--panel),0 0 0 4px color-mix(in srgb,var(--accent) 55%,transparent)}.theme-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.theme-card{position:relative;display:flex;flex-direction:column;gap:5px;border:1px solid var(--border2);border-radius:10px;padding:6px;background:var(--panel);transition:border-color .15s,box-shadow .15s}.theme-card:hover{border-color:var(--accent)}.theme-card.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.theme-card-preview{display:block;height:44px;border-radius:6px;padding:5px;position:relative;overflow:hidden;border:1px solid rgba(0,0,0,.08)}.tcp-top{display:block;height:8px;border-radius:2px;margin-bottom:4px;opacity:.95}.tcp-side{position:absolute;left:5px;top:17px;bottom:5px;width:16px;border-radius:2px;opacity:.95}.tcp-dot{position:absolute;right:8px;bottom:9px;width:7px;height:7px;border-radius:50%}.theme-card-name{font-size:11.5px;color:var(--text2);text-align:center}.theme-card.on .theme-card-name{color:var(--accent);font-weight:500}.theme-card-check{position:absolute;top:4px;right:7px;font-size:11px;line-height:1;color:var(--accent);font-weight:700}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;font-size:13px;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;padding:0}input,select,textarea{font:inherit;color:var(--text);background:var(--panel);border:1px solid var(--border2);border-radius:8px;padding:5px 9px;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--accent)}input::placeholder,textarea::placeholder{color:var(--text3)}svg{display:block;flex:none}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--border2);border-radius:4px}::-webkit-scrollbar-track{background:transparent}.app{display:grid;grid-template-rows:48px 1fr;grid-template-columns:210px 1fr;height:100vh}.topbar{grid-column:1 / 3;display:flex;align-items:center;gap:12px;padding:0 16px;background:var(--panel);border-bottom:1px solid var(--border)}.topbar-title{font-size:14px;font-weight:600;letter-spacing:.2px}.topbar-search{flex:1;max-width:380px;display:flex;align-items:center;gap:7px;color:var(--text3);background:var(--panel2);border:1px solid var(--border);border-radius:10px;padding:0 10px;height:32px;transition:border-color .15s,box-shadow .15s}.topbar-search:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 14%,transparent)}.topbar-search input{border:none;background:none;padding:0;width:100%}.topbar-search kbd{font-family:inherit;font-size:10.5px;color:var(--text3);border:1px solid var(--border);border-radius:5px;padding:1px 6px;background:var(--panel);flex:none}.topbar-spacer{flex:1}.icon-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:7px;color:var(--text2)}.icon-btn:hover{background:var(--hover);color:var(--text)}.sidebar{overflow-y:auto;border-right:1px solid var(--border);background:var(--panel);padding:10px 8px 20px;display:flex;flex-direction:column;gap:2px}.nav-item{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:8px;color:var(--text2);text-align:left;width:100%;transition:background .15s,color .15s,transform .15s}.nav-item:hover{background:var(--hover);color:var(--text);transform:translate(1px)}.nav-item.active{background:var(--hover);color:var(--text);font-weight:500;transform:none;box-shadow:inset 2px 0 0 var(--accent)}.nav-item .count{margin-left:auto;color:var(--text3);font-size:12px}.side-sec{margin:16px 10px 6px;font-size:11px;color:var(--text3);letter-spacing:.5px;display:flex;align-items:center;justify-content:space-between}.side-sec button{color:var(--text3);display:flex;padding:2px;border-radius:4px}.side-sec button:hover{color:var(--text);background:var(--hover)}.proj-dot{width:8px;height:8px;border-radius:50%;flex:none}.proj-item{padding:0 4px 0 2px}.proj-main{display:flex;align-items:center;gap:9px;flex:1;min-width:0;color:inherit;text-align:left;padding:7px 6px 7px 8px;border-radius:8px}.proj-main:hover{background:var(--hover)}.proj-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.proj-main .count{margin-left:auto}.proj-edit{display:none;color:var(--text3);padding:4px;border-radius:6px;flex:none}.proj-item:hover .proj-edit{display:flex}.proj-edit:hover{color:var(--text);background:var(--hover)}.proj-item:hover .count{display:none}.main{overflow-y:auto;padding:18px 22px 60px}.btn{border:1px solid var(--border2);background:var(--panel);color:var(--text);border-radius:8px;padding:5px 12px;white-space:nowrap}.btn:hover{background:var(--hover)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:inset 0 1px #ffffff38}.btn-primary:hover{background:var(--accent);opacity:.92}[data-theme=dark] .btn-primary{background:linear-gradient(135deg,#5b8cff,#7c5cff);border:none;box-shadow:inset 0 1px #ffffff29,0 2px 10px #5b8cff2e}.btn-danger{color:var(--p0);border-color:var(--p0)}.btn-danger:hover{background:var(--p0);color:#fff}.btn-sm{padding:2px 8px;font-size:12px;border-radius:6px}.composer{margin-bottom:14px}.composer-input{display:flex;align-items:center;gap:8px;background:var(--panel);border:1px solid var(--border2);border-radius:12px;padding:4px 6px;box-shadow:0 1px 2px #00000008}.composer-input:focus-within{border-color:var(--accent)}.composer-input input{border:none;background:none;flex:1;padding:7px 0;font-size:13.5px}.composer-proj{border:none;background:var(--panel2);font-size:12px;padding:5px 6px;border-radius:7px;max-width:118px;flex:none}.composer-input kbd{font-family:inherit;font-size:11px;color:var(--text3);border:1px solid var(--border);border-radius:5px;padding:1px 6px;background:var(--panel2)}.composer-preview{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:7px;padding-left:4px;min-height:22px;color:var(--text2)}.chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;background:var(--panel2);border:1px solid var(--border);border-radius:6px;padding:1px 8px}.chip-title{color:var(--text)}.chip.due-overdue{color:var(--p0);border-color:color-mix(in srgb,var(--p0) 40%,transparent)}.filterbar{display:flex;align-items:center;gap:10px;margin-bottom:12px;color:var(--text2);flex-wrap:wrap}.filterbar select{padding:3px 6px;font-size:12.5px}.filterbar .range-date{padding:2px 6px;font-size:12.5px}.filterbar label{display:flex;align-items:center;gap:4px;font-size:12.5px;cursor:pointer}.trow,.note-item,.board-card,.stat-card,.trash-row{transition:transform .2s,border-color .2s,background .2s,box-shadow .2s}.trow:hover,.note-item:hover,.board-card:hover,.trash-row:hover{transform:translateY(-1px);border-color:var(--border2)}.stat-card:hover{border-color:var(--border2)}.task-group-title{display:flex;align-items:center;gap:8px;margin:18px 2px 8px;color:var(--text2);font-size:12.5px;font-weight:500}.task-group-title:first-child{margin-top:2px}button.task-group-title{border:none;background:none;cursor:pointer;padding:0;font:inherit;color:inherit}button.task-group-title:hover{color:var(--accent)}button.task-group-title.clickable:after{content:"⊙";font-size:10px;color:var(--text3)}button.task-group-title.clickable:hover:after{color:var(--accent)}.task-group-title .n{color:var(--text3);font-weight:400}.task-list{display:flex;flex-direction:column;gap:2px}.task-table{overflow-x:auto;padding-bottom:6px}.trow{display:grid;grid-template-columns:30px minmax(150px,1.1fr) 150px 92px 72px 72px 118px minmax(110px,1fr) 30px;gap:10px;align-items:center;min-width:980px;padding:7px 12px;background:var(--card, var(--panel));border:1px solid var(--border);border-radius:12px;cursor:pointer}.cell-created{min-width:0}.t-created{font-size:11.5px;color:var(--text3);font-variant-numeric:tabular-nums;white-space:nowrap}.th-sort{color:var(--text3);font-size:11.5px;cursor:pointer;text-align:left;padding:0;white-space:nowrap;transition:color .12s}.th-sort:hover{color:var(--text2)}.th-sort.on{color:var(--accent);font-weight:500}.proj-all-dot{background:transparent;border:2px solid var(--text3);box-sizing:border-box}.t-del{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:6px;color:var(--text3);opacity:0;transition:opacity .1s}.trow:hover .t-del{opacity:1}.t-del:hover{color:var(--p0);background:color-mix(in srgb,var(--p0) 10%,transparent)}.trow:hover{border-color:var(--border2);background:var(--panel2)}.trow-head{border:none;background:none;padding:0 13px 6px;cursor:default;color:var(--text3);font-size:11.5px;-webkit-user-select:none;user-select:none}.trow-head:hover{border-color:transparent}.trow-head:hover{background:none;border-color:transparent}.trow.done .cell-title,.trow.done .cell-note{color:var(--text3);text-decoration:line-through}.cell{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:6px;padding:3px 6px;margin-left:-6px;cursor:text;font-size:12.5px;display:flex;align-items:center;gap:5px}.cell:hover{background:var(--hover)}.cell input,.cell select{width:100%;min-width:0;padding:2px 4px;font-size:12.5px;border-radius:5px;border:1px solid var(--accent);background:var(--panel)}.cell input[type=datetime-local]{padding:1px 4px}.cell-empty{color:var(--text3)}.t-title-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.t-due-overdue{color:var(--p0)}.t-due-soon{color:var(--p1)}.st{font-size:12px}.st-todo{color:var(--text2)}.st-doing{color:var(--accent)}.st-blocked{color:var(--p0)}.st-done{color:var(--text3)}.t-check{width:18px;height:18px;border-radius:50%;border:1.5px solid var(--border2);display:flex;align-items:center;justify-content:center;color:#fff;flex:none;background:transparent}.t-check:hover{border-color:var(--accent)}.t-check.checked{background:var(--ok);border-color:var(--ok)}.t-proj{display:flex;align-items:center;gap:5px;min-width:0;overflow:hidden}.t-note-icon{color:var(--text3);display:flex}.prio-tag{font-size:11px;padding:0 5px;border-radius:4px;line-height:17px}.prio-1{color:var(--p0);background:color-mix(in srgb,var(--p0) 12%,transparent)}.prio-2{color:var(--p1);background:color-mix(in srgb,var(--p1) 14%,transparent)}.prio-3{color:var(--text2);background:var(--hover)}[data-theme=dark] .prio-1{color:var(--p0)}.empty{color:var(--text3);padding:40px 0;text-align:center}.board-hint{color:var(--text3);font-size:12px;margin:0 0 10px 2px}.board-hint button{color:var(--accent)}.board{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;align-items:start}.board-col{background:var(--panel2);border:1px solid var(--border);border-radius:12px;padding:10px;min-height:300px;transition:border-color .12s}.board-col.drag-over{border-color:var(--accent)}.board-col-title{display:flex;align-items:center;gap:7px;padding:2px 4px 10px;color:var(--text2);font-weight:500;font-size:12.5px}.board-col-title .n{color:var(--text3);font-weight:400}.board-cards{display:flex;flex-direction:column;gap:8px;min-height:60px}.board-card{background:var(--card, var(--panel));border:1px solid var(--border);border-radius:12px;padding:9px 11px;cursor:grab}.board-card:active{cursor:grabbing}.board-card.drag-over-top{box-shadow:0 -2px 0 var(--accent)}.bc-title{margin-bottom:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bc-meta{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--text2);flex-wrap:wrap}.tl-nav{display:flex;align-items:center;gap:6px;margin-bottom:10px}.tl-nav>button{border:1px solid var(--border);background:var(--panel);color:var(--text2);border-radius:6px;padding:3px 10px;cursor:pointer;font-size:13px;line-height:1.5}.tl-nav>button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.tl-nav>button:disabled{opacity:.45;cursor:default}.tl-nav .tl-range{font-size:12px;color:var(--text3);margin-left:4px}.tl-nav .tl-spacer{flex:1}.tl-nav .tl-span{display:inline-flex;border:1px solid var(--border);border-radius:6px;overflow:hidden}.tl-nav .tl-span button{border:none;background:none;color:var(--text3);padding:3px 10px;cursor:pointer;font-size:12px}.tl-nav .tl-span button+button{border-left:1px solid var(--border)}.tl-nav .tl-span button.on{background:var(--accent);color:#fff}.timeline{display:flex;gap:0;overflow-x:auto;padding-bottom:10px;align-items:flex-start}.tl-col{flex:none;width:178px;border-right:1px solid var(--border);padding:0 8px 20px;min-height:300px}.tl-col:first-child{padding-left:2px}.tl-head{position:sticky;top:0;background:var(--bg);padding:4px 2px 10px;z-index:1}.tl-head .d1{font-size:12.5px;font-weight:500}.tl-head .d2{font-size:11px;color:var(--text3)}.tl-col.overdue-col .d1{color:var(--p0)}.tl-cards{display:flex;flex-direction:column;gap:6px}.tl-card{background:var(--card, var(--panel));border:1px solid var(--border);border-radius:8px;padding:6px 8px;cursor:pointer;border-left-width:3px}.tl-card:hover{background:var(--panel2)}.tl-card .tt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:3px}.tl-card .tm{font-size:11px;color:var(--text2);display:flex;gap:6px;align-items:center}.tl-card .tm.overdue{color:var(--p0)}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.stat-card{background:var(--card, var(--panel));border:1px solid var(--border);border-radius:12px;padding:16px 18px}.stat-card h3{margin:0 0 14px;font-size:12.5px;font-weight:500;color:var(--text2)}.donut-wrap{display:flex;align-items:center;gap:22px}.legend{display:flex;flex-direction:column;gap:7px;flex:1;min-width:0}.legend-row{display:flex;align-items:center;gap:8px;font-size:12.5px}.legend-row .lc{margin-left:auto;color:var(--text3)}.big-num{font-size:30px;font-weight:600}.big-num small{font-size:13px;color:var(--text2);font-weight:400;margin-left:4px}.pbar-row{display:flex;align-items:center;gap:10px;margin-bottom:12px;font-size:12.5px}.pbar-row .lbl{width:66px;flex:none}.pbar{flex:1;height:8px;border-radius:4px;background:var(--hover);overflow:hidden}.pbar>i{display:block;height:100%;border-radius:4px}.pbar-row .num{width:84px;text-align:right;color:var(--text3);flex:none}.drawer-mask{position:fixed;top:48px;right:0;bottom:0;left:0;background:#0000001f;z-index:40}.drawer{position:fixed;top:48px;right:0;bottom:0;width:460px;max-width:92vw;background:var(--panel);border-left:1px solid var(--border);z-index:50;display:flex;flex-direction:column;box-shadow:-6px 0 24px #0000000f}.drawer-head{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--border);flex:none}.drawer-head .t{font-weight:600;flex:1}.drawer-body{overflow-y:auto;padding:14px 18px 24px;flex:1}.drawer-foot{display:flex;gap:8px;padding:12px 16px;border-top:1px solid var(--border);flex:none;align-items:center}.d-sec{margin-bottom:20px}.d-sec-title{font-size:11.5px;color:var(--text3);margin-bottom:9px;letter-spacing:.5px}.d-field{display:flex;align-items:center;gap:10px;margin-bottom:8px}.d-field>label{width:64px;flex:none;color:var(--text2);text-align:right}.d-field>input,.d-field>select{flex:1;min-width:0}.d-field>input[type=number]{width:90px;flex:none}.d-field textarea{width:100%;min-height:84px;resize:vertical}.seg{display:flex;border:1px solid var(--border2);border-radius:8px;overflow:hidden;flex:1}.seg{overflow:hidden}.seg button{flex:1;padding:5px 12px;color:var(--text2);border-right:1px solid var(--border);transition:background .15s,color .15s;font-size:12.5px}.seg button:last-child{border-right:none}.seg button:hover:not(.on){background:var(--hover);color:var(--text)}.seg button.on{background:var(--accent);color:#fff;font-weight:500}.log-item{border:1px solid var(--border);border-radius:10px;padding:9px 11px;margin-bottom:8px}.log-item .lh{display:flex;align-items:center;gap:8px;color:var(--text2);margin-bottom:4px}.log-item .lh .time{color:var(--text3);font-size:11.5px;margin-left:auto}.log-item .lt{font-weight:500}.log-note-input{display:flex;gap:6px;margin-top:6px}.log-note-input input{flex:1}.log-note-text{color:var(--text2);margin-top:4px}.log-add-btn{color:var(--text3);font-size:12px;margin-top:4px}.log-add-btn:hover{color:var(--accent)}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000040;z-index:60;display:flex;align-items:center;justify-content:center}.modal{width:480px;max-width:92vw;background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:18px 20px;box-shadow:0 16px 48px #0000002e}.modal h3{margin:0 0 14px;font-size:14px}.modal .field{margin-bottom:12px}.modal .field input{width:100%}.modal .hint{color:var(--text3);font-size:12px;margin:6px 0 0;line-height:1.6}.modal .row-end{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.trash-row{display:flex;align-items:center;gap:10px;padding:8px 12px;margin-bottom:6px;background:var(--card, var(--panel));border:1px solid var(--border);border-radius:10px}.trash-row .tt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text2)}.trash-row .td{color:var(--text3);font-size:12px;flex:none}.toast{position:fixed;bottom:26px;left:50%;transform:translate(-50%);z-index:100;background:var(--text);color:var(--bg);border-radius:8px;padding:8px 16px;font-size:12.5px;box-shadow:0 4px 16px #0000002e;max-width:70vw}.toast.error{background:var(--p0);color:#fff}@media (max-width: 860px){.app{grid-template-columns:56px 1fr}.nav-item span.nav-text,.side-sec,.proj-item span{display:none}.board,.stats-grid{grid-template-columns:1fr}.topbar-search{max-width:none}}.login-wrap{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:var(--bg)}.login-card{width:320px;background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:28px 26px 22px;display:flex;flex-direction:column;gap:10px;box-shadow:0 2px 10px #0000000a}.login-title{font-size:17px;font-weight:600;text-align:center}.login-sub{font-size:12px;color:var(--text3);text-align:center;margin-bottom:8px}.login-input{padding:8px 10px}.login-btn{padding:8px 0;width:100%}.login-hint{font-size:12px;color:var(--text3);text-align:center}.login-forgot{font-size:12px;color:var(--text2);text-align:center;padding:4px 0;border-radius:6px}.login-forgot:hover{color:var(--accent)}.login-tip{font-size:12px;color:var(--text2)}.login-msg{font-size:12px;text-align:center;color:var(--ok);min-height:16px}.login-msg.error{color:var(--p0)}.notes-wrap{display:grid;grid-template-columns:264px 1fr;gap:14px;align-items:start}.notes-list{display:flex;flex-direction:column;gap:6px;max-height:calc(100vh - 160px);overflow-y:auto}.notes-new{display:flex;align-items:center;justify-content:center;gap:6px;border-style:dashed;color:var(--text2);padding:7px 0}.notes-new:hover{color:var(--accent);border-color:var(--accent)}.note-item{background:var(--card, var(--panel));border:1px solid var(--border);border-radius:12px;padding:9px 11px;cursor:pointer}.note-item:hover{background:var(--panel2)}.note-item.active{border-color:var(--accent)}.ni-title{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:3px}.ni-time{font-size:11px;color:var(--text3)}.notes-editor{background:var(--card, var(--panel));border:1px solid var(--border);border-radius:12px;padding:12px 16px 16px;display:flex;flex-direction:column;min-height:calc(100vh - 200px)}.notes-empty-editor{padding:60px 0}.notes-toolbar{display:flex;align-items:center;justify-content:space-between;color:var(--text3);font-size:11.5px;margin-bottom:8px;min-height:26px}.notes-toolbar .t-del{opacity:1}.notes-title-input{border:none;background:none;font-size:15px;font-weight:600;padding:2px 0 8px}.notes-title-input:focus{border:none}.notes-content{flex:1;min-height:320px;border:none;background:none;resize:none;line-height:1.7;font-size:13.5px}.notes-content:focus{border:none}@media (max-width: 860px){.notes-wrap{grid-template-columns:1fr}}.link-btn{color:var(--accent);padding:0 2px}.link-btn:hover{text-decoration:underline}.seg-sm button{padding:3px 10px;font-size:12px}.notes-filterbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.notes-tagcloud{display:flex;gap:4px;flex-wrap:wrap}.notes-clear{color:var(--text3);font-size:12px}.notes-clear:hover{color:var(--accent)}.ntag{font-size:11px;color:var(--text2);border:1px solid var(--border);border-radius:5px;padding:0 5px;line-height:17px;background:var(--panel2)}.ntag:hover{color:var(--accent);border-color:var(--accent)}.ntag.on{color:#fff;background:var(--accent);border-color:var(--accent)}.ni-head{display:flex;align-items:center;gap:5px}.ni-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.ni-pin{color:var(--p1);display:flex;flex:none}.ni-star{color:var(--text3);display:flex;padding:2px;border-radius:4px;flex:none}.ni-star:hover{color:var(--p1);background:var(--hover)}.ni-star.on{color:var(--p1)}.ni-copy{color:var(--text3);display:flex;padding:2px;border-radius:4px;flex:none;opacity:0;transition:opacity .12s}.ni-copy:hover{color:var(--accent);background:var(--hover)}.note-item:hover .ni-copy{opacity:1}.ni-preview{font-size:11.5px;color:var(--text3);margin:3px 0 2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ni-tags{display:flex;gap:4px;flex-wrap:wrap;margin:4px 0 2px}.hl{background:color-mix(in srgb,var(--accent) 22%,transparent);border-radius:2px;color:inherit}.st-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--text3);margin-right:6px;vertical-align:1px;flex:none}.st-dot.ok{background:var(--ok);box-shadow:0 0 6px color-mix(in srgb,var(--ok) 45%,transparent)}.st-dot.saving{background:var(--p1);animation:st-pulse 1s ease-in-out infinite}.st-dot.err{background:var(--p0)}@keyframes st-pulse{0%,to{opacity:1}50%{opacity:.35}}.empty-workspace{padding:90px 0 60px;display:flex;flex-direction:column;align-items:center;gap:10px}.empty-workspace .empty-icon{color:var(--text3);opacity:.55;margin-bottom:4px}.empty-workspace .empty-title{color:var(--text2);font-size:13.5px}.empty-hints{display:flex;gap:14px;margin-top:6px}.empty-hints span{color:var(--text3);font-size:12px;display:flex;align-items:center;gap:5px}.empty-hints kbd{font-family:inherit;font-size:10.5px;border:1px solid var(--border);border-radius:4px;padding:1px 5px;background:var(--panel2)}.notes-toolbar .tool-btn{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:6px;color:var(--text3);flex:none}.notes-toolbar .tool-btn:hover{background:var(--hover);color:var(--text)}.notes-toolbar .tool-btn.on{color:var(--p1)}.notes-tags-input{border:none;background:none;font-size:12px;color:var(--text2);padding:0 0 8px;border-bottom:1px dashed var(--border);border-radius:0}.notes-tags-input:focus{border-bottom-color:var(--accent)}.ngroup-title{color:var(--text3);font-size:11.5px;margin:10px 2px 5px;display:flex;align-items:center;gap:6px;-webkit-user-select:none;user-select:none}.ngroup-title .n{font-size:11px}.kbd-hint{font-size:10px;color:var(--text3);border:1px solid var(--border);border-radius:4px;padding:0 4px}.md-preview{flex:1;overflow-y:auto;line-height:1.75;font-size:13.5px;padding-top:4px}.md-title{font-size:17px;font-weight:600;margin:0 0 8px}.md-tags{display:flex;gap:4px;margin-bottom:10px}.md-preview h3,.md-preview h4,.md-preview h5{margin:14px 0 6px}.md-preview h3{font-size:15.5px}.md-preview h4{font-size:14.5px}.md-preview h5{font-size:13.5px;color:var(--text2)}.md-preview p{margin:6px 0}.md-preview ul,.md-preview ol{margin:6px 0;padding-left:22px}.md-preview blockquote{margin:8px 0;padding:2px 12px;border-left:3px solid var(--border2);color:var(--text2)}.md-preview hr.md-hr{border:none;border-top:1px solid var(--border);margin:14px 0}.md-preview .md-ic{background:var(--hover);border-radius:4px;padding:1px 5px;font-size:12.5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.md-code{margin:10px 0;border:1px solid var(--border);border-radius:8px;overflow:hidden}.md-code-bar{display:flex;align-items:center;justify-content:space-between;background:var(--panel2);padding:4px 10px;border-bottom:1px solid var(--border)}.md-lang{font-size:11px;color:var(--text3)}.md-copy{font-size:11px;color:var(--text2);padding:1px 8px;border-radius:5px}.md-copy:hover{color:var(--accent);background:var(--hover)}.md-code pre{margin:0;padding:10px 12px;overflow-x:auto}.md-code code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;line-height:1.6;white-space:pre}.import-confirm{margin-top:10px;padding:10px 12px;border:1px solid var(--border2);border-radius:8px;background:var(--panel2);font-size:12.5px;color:var(--text2)}.notes-meta-row{display:flex;gap:8px;align-items:center;padding-bottom:8px;border-bottom:1px dashed var(--border)}.notes-hist{border:1px solid var(--border);border-radius:10px;margin-bottom:10px;background:var(--panel2);padding:4px}.notes-hist .nh-head{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;font-size:12px;color:var(--text3)}.notes-hist .nh-empty{padding:10px 12px;font-size:12px;color:var(--text3)}.notes-hist .nh-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px}.notes-hist .nh-item:hover{background:var(--hover)}.notes-hist .nh-main{flex:1;min-width:0}.notes-hist .nh-title{font-size:12.5px;color:var(--text);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notes-hist .nh-time{font-size:11px;color:var(--text3);font-weight:400;margin-left:8px}.notes-hist .nh-preview{font-size:11.5px;color:var(--text3);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notes-hist .nh-restore{flex:none;font-size:11.5px;padding:4px 10px;border-radius:6px;border:1px solid var(--border2);color:var(--text2);background:var(--panel)}.notes-hist .nh-restore:hover{border-color:var(--accent);color:var(--accent)}.notes-cat-select{border:1px solid var(--border);background:var(--panel2);font-size:12px;color:var(--text2);padding:3px 6px;border-radius:7px;flex:none}.notes-proj-select{border:none;background:var(--panel2);font-size:12px;color:var(--text2);padding:5px 8px;border-radius:7px;max-width:150px;flex:none}.notes-meta-row .notes-tags-input{flex:1;border-bottom:none;padding:5px 0}.ni-time{display:flex;align-items:center;gap:8px}.ni-time .t-proj{gap:4px;font-size:11px}
