:root{--bg:#121316;--surface:#1a1c20;--surface-2:#212327;--border:#2b2e33;--text:#e9eaec;--text-muted:#93979e;--text-faint:#5f636a;--accent:#6b8afd;--accent-soft:#6b8afd26;--danger:#e0645a;--radius:10px;--radius-sm:6px;--sidebar-w:260px;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Roboto, sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);height:100%;color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;padding:0;font-size:14px}body{overflow:hidden}a{color:inherit;text-decoration:none}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}button{cursor:pointer}input,select,textarea{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);outline:none;padding:8px 10px}input:focus,select:focus,textarea:focus{border-color:var(--accent)}.btn{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 14px;font-weight:500;transition:background .12s,border-color .12s}.btn:hover{background:var(--border)}.btn-primary{background:var(--accent);border-color:var(--accent);color:#0d1117;font-weight:600}.btn-primary:hover{background:var(--accent);color:#0d1117;filter:brightness(1.08)}.btn-danger{color:var(--danger)}.btn-icon{border-radius:var(--radius-sm);color:var(--text-muted);background:0 0;border:none;padding:4px 6px}.btn-icon:hover{background:var(--surface-2);color:var(--text)}.app-shell{width:100vw;height:100vh;display:flex}.scrollbar-thin{scrollbar-width:thin;scrollbar-color:var(--border) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}.field{flex-direction:column;gap:4px;margin-bottom:12px;display:flex}.field label{color:var(--text-muted);font-size:12px;font-weight:500}.field-row{gap:10px;display:flex}.field-row>.field{flex:1}.modal-backdrop{z-index:100;background:#000000a6;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:420px;max-height:90vh;padding:20px;overflow-y:auto}.modal h2{margin:0 0 16px;font-size:16px}.modal-actions{align-items:center;gap:8px;margin-top:16px;display:flex}.modal-actions .left{gap:8px;display:flex}.modal-actions .btn-danger{margin-left:auto}input[type=checkbox]{appearance:none;border:1.5px solid var(--border);background:var(--surface-2);cursor:pointer;border-radius:5px;flex-shrink:0;width:18px;min-width:18px;height:18px;margin:0;transition:background .12s,border-color .12s;display:inline-block;position:relative}input[type=checkbox]:hover{border-color:var(--accent)}input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}input[type=checkbox]:checked:after{content:"";border:2px solid #0d1117;border-width:0 2px 2px 0;width:5px;height:9px;position:absolute;top:1px;left:5px;transform:rotate(45deg)}input[type=checkbox]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.swatch-grid{flex-wrap:wrap;align-items:center;gap:12px;padding-top:2px;display:flex}.swatch,.swatch-add{cursor:pointer;border-radius:50%;flex-shrink:0;width:32px;height:32px;padding:0;position:relative}.swatch{border:2px solid #0000;transition:transform .1s,box-shadow .12s}.swatch:hover{transform:scale(1.08)}.swatch.selected{border-color:var(--bg);box-shadow:0 0 0 2px var(--accent)}.swatch-none{background:var(--surface-2);border:1.5px solid var(--border);background-image:linear-gradient(135deg, transparent 46%, var(--text-faint) 46%, var(--text-faint) 54%, transparent 54%)}.swatch-remove{background:var(--danger);color:#fff;text-align:center;opacity:0;border-radius:50%;width:17px;height:17px;font-size:12px;line-height:17px;transition:opacity .12s;position:absolute;top:-5px;right:-5px}.swatch:hover .swatch-remove{opacity:1}.swatch-add{background:var(--surface-2);border:1.5px dashed var(--border);color:var(--text-muted);justify-content:center;align-items:center;font-size:16px;transition:border-color .12s,color .12s;display:flex}.swatch-add:hover{border-color:var(--accent);color:var(--accent)}.swatch-native-input{opacity:0;pointer-events:none;width:0;height:0;position:absolute}.cal-view-wrap{position:relative}.cal-view-select{appearance:none;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);cursor:pointer;width:100%;padding:8px 32px 8px 14px;font-weight:500}.cal-view-select:hover{background:var(--border)}.cal-view-chevron{pointer-events:none;color:var(--text-muted);font-size:11px;position:absolute;top:50%;right:12px;transform:translateY(-50%)}.dot{border-radius:50%;flex-shrink:0;width:9px;height:9px;display:inline-block}.error-text{color:var(--danger);margin-top:4px;font-size:12px}.hidden{display:none!important}.tree-cat{margin-bottom:2px}.tree-row{border-radius:var(--radius-sm);cursor:pointer;user-select:none;align-items:center;gap:9px;padding:9px;display:flex}.tree-row:hover{background:var(--surface-2)}.tree-row.active{background:var(--accent-soft);color:var(--accent)}.tree-row .tree-label{text-overflow:ellipsis;white-space:nowrap;flex:1;font-weight:500;overflow:hidden}.tree-row .tree-actions{opacity:0;pointer-events:none;flex-shrink:0;gap:3px;display:flex}.tree-row:hover .tree-actions{opacity:1;pointer-events:auto}.tree-row .tree-actions .btn-icon{justify-content:center;align-items:center;width:24px;height:24px;padding:0;font-size:13px;display:flex}.tree-row .chevron{width:14px;color:var(--text-faint);flex-shrink:0;font-size:14px;transition:transform .12s}.chevron-spacer{flex-shrink:0;width:14px}.tree-row .chevron.collapsed{transform:rotate(-90deg)}.tree-cat-row{gap:10px;padding:11px 9px}.tree-cat-row .tree-label{font-size:15px;font-weight:600}.tree-cat-row .dot{width:12px;height:12px}.tree-cat-row .chevron{width:17px;font-size:17px}.tree-projects{padding-left:20px}.tree-project{padding:8px 9px}.tree-project .tree-label{font-size:13.5px;font-weight:400}.tree-project .dot{width:9px;height:9px}.tree-project .tree-actions .btn-icon{width:25px;height:25px;font-size:14px}.tree-empty{color:var(--text-faint);padding:6px 8px 12px;font-size:13px}.tree-tasks{padding-left:18px}.tree-task{gap:8px;padding:6px 9px}.tree-task .tree-label{color:var(--text);font-size:12.5px;font-weight:400}.tree-task.done .tree-label{color:var(--text-faint);text-decoration:line-through}.month-grid{flex:1;grid-template-rows:auto repeat(6,1fr);grid-template-columns:repeat(7,minmax(0,1fr));min-height:0;display:grid;overflow:hidden}.month-head{text-align:center;color:var(--text);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border);padding:7px 0;font-size:13px;font-weight:700}.month-head.today{color:var(--accent);border-bottom:2px solid var(--accent)}.month-cell{border-right:1px solid var(--border);border-bottom:1px solid var(--border);cursor:pointer;flex-direction:column;min-width:0;min-height:0;padding:6px;display:flex}.month-cell:hover{background:#ffffff05}.month-cell.dim .month-cell-date{color:var(--text-faint)}.month-cell.today .month-cell-date{background:var(--accent);color:#0d1117}.month-cell-date{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;margin-bottom:4px;font-size:12px;font-weight:600;display:flex}.month-cell-tasks{flex-direction:column;gap:3px;min-width:0;min-height:0;display:flex;overflow-y:auto}.task-pill{white-space:nowrap;text-overflow:ellipsis;cursor:grab;border-radius:4px;min-width:0;max-width:100%;padding:3px 6px;font-size:12.5px;overflow:hidden}.task-pill.done,.timed-task.done{opacity:.55;text-decoration:line-through}.month-cell-tasks .task-pill{flex-shrink:0}.tg-wrap{flex-direction:column;flex:1;min-height:0;display:flex}.tg-header,.tg-alldayrow{display:flex}.tg-corner,.tg-corner-label{flex-shrink:0;width:56px}.tg-corner-label{color:var(--text-muted);align-items:center;padding-left:4px;font-size:12px;font-weight:600;display:flex}.tg-daylabel{text-align:center;border-bottom:1px solid var(--border);flex:1;min-width:0;padding:8px 4px}.tg-daylabel-dow{text-transform:uppercase;letter-spacing:.03em;color:var(--text);font-size:14px;font-weight:700}.tg-daylabel-date{color:var(--text);margin-top:2px;font-size:13px}.tg-daylabel.today{border-bottom:2px solid var(--accent)}.tg-daylabel.today .tg-daylabel-dow,.tg-daylabel.today .tg-daylabel-date{color:var(--accent)}.tg-alldayrow{border-bottom:1px solid var(--border);min-height:46px}.allday-col{border-left:1px solid var(--border);cursor:pointer;flex-direction:column;flex:1;gap:2px;min-width:0;padding:6px 4px;display:flex}.tg-scroll{flex:1;min-height:0;overflow-y:auto}.tg-body{display:flex}.tg-hours{flex-shrink:0;width:56px}.tg-hour-label{color:var(--text);text-align:right;padding-right:8px;font-size:13px;font-weight:500;transform:translateY(-6px)}.day-col{border-left:1px solid var(--border);flex:1;min-width:0;position:relative}.hour-row{border-top:1px solid var(--border);cursor:pointer}.hour-row:hover{background:#ffffff05}.agenda-list{flex:1;padding:4px 0 24px;overflow-y:auto}.agenda-day{border-bottom:1px solid var(--border)}.agenda-day-head{text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);padding:12px 16px 6px;font-size:12px;font-weight:700}.agenda-day-head.today{color:var(--accent)}.agenda-day-tasks{flex-direction:column;min-height:32px;display:flex}.agenda-task{border-top:1px solid var(--border);align-items:center;gap:10px;padding:10px 16px;display:flex}.agenda-task:first-child{border-top:none}.agenda-task-time{color:var(--text-faint);flex-shrink:0;width:56px;font-size:12px}.agenda-task-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:14px;overflow:hidden}.agenda-task-title.done{color:var(--text-faint);text-decoration:line-through}.agenda-empty{color:var(--text-faint);padding:8px 16px 14px;font-size:12px}.timed-task{white-space:nowrap;text-overflow:ellipsis;cursor:grab;border-radius:5px;padding:3px 6px;font-size:12.5px;position:absolute;left:3px;right:3px;overflow:hidden;box-shadow:0 1px 3px #0006}@media (width<=820px){.tree-row .tree-actions{opacity:1;pointer-events:auto}#cal-body.day-view .tg-header .tg-corner{width:0}}
