:root{--background: oklch(.98 .005 90);--foreground: oklch(.25 .03 195);--card: oklch(.88 .02 90);--card-foreground: oklch(.25 .03 195);--popover: oklch(.88 .02 90);--popover-foreground: oklch(.25 .03 195);--primary: oklch(.25 .03 195);--primary-foreground: oklch(.98 .005 90);--secondary: oklch(.88 .02 90);--secondary-foreground: oklch(.25 .03 195);--muted: oklch(.95 .01 90);--muted-foreground: oklch(.6 .01 90);--accent: oklch(.55 .2 45);--accent-foreground: oklch(.98 .005 90);--destructive: oklch(.628 .258 29.23);--destructive-foreground: oklch(.98 0 0);--border: oklch(.9 .02 90);--input: oklch(.9 .02 90);--ring: oklch(.55 .18 195);--font-sans: "IBM Plex Sans", system-ui, sans-serif;--font-mono: "IBM Plex Mono", "Menlo", "Consolas", monospace;--font-display: "IBM Plex Sans Condensed", "IBM Plex Sans", system-ui, sans-serif;--radius: .25rem;--priority-high: oklch(.55 .2 45);--priority-medium: oklch(.55 .08 250);--priority-low: oklch(.6 .1 145);--priority-done: oklch(.65 .01 90)}.dark{--background: oklch(.12 .01 250);--foreground: oklch(.92 .01 90);--card: oklch(.18 .01 250);--card-foreground: oklch(.92 .01 90);--popover: oklch(.18 .01 250);--popover-foreground: oklch(.92 .01 90);--primary: oklch(.65 .1 195);--primary-foreground: oklch(.15 .02 195);--secondary: oklch(.25 .02 90);--secondary-foreground: oklch(.92 .01 90);--muted: oklch(.2 .01 250);--muted-foreground: oklch(.7 .01 90);--accent: oklch(.65 .2 45);--accent-foreground: oklch(.15 .02 45);--destructive: oklch(.628 .258 29.23);--destructive-foreground: oklch(.98 0 0);--border: oklch(.25 .01 250);--input: oklch(.25 .01 250);--ring: oklch(.7 .18 195);--priority-high: oklch(.65 .2 45);--priority-medium: oklch(.65 .1 250);--priority-low: oklch(.7 .12 145);--priority-done: oklch(.7 .01 90)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-sans);background:var(--background);color:var(--foreground);-webkit-font-smoothing:antialiased;line-height:1.5}#root{min-height:100vh}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:100;background:var(--background);border-bottom:1px solid var(--border);padding:0 24px;display:flex;align-items:center;gap:32px;height:60px}.wordmark{font-family:var(--font-display);font-weight:700;font-size:18px;letter-spacing:.02em;color:var(--foreground);white-space:nowrap;display:flex;align-items:center;gap:8px}.wordmark-icon{width:22px;height:22px;flex-shrink:0}.tabs{display:flex;gap:4px;flex:1;overflow-x:auto}.tab{background:none;border:none;font-family:var(--font-sans);font-size:14px;font-weight:500;color:var(--muted-foreground);padding:8px 14px;cursor:pointer;position:relative;white-space:nowrap;transition:color .15s;display:flex;align-items:center;gap:6px}.tab:hover,.tab.active{color:var(--foreground)}.tab.active:after{content:"";position:absolute;bottom:-1px;left:14px;right:14px;height:2px;background:var(--accent);border-radius:1px}.tab-count{font-size:11px;font-weight:600;background:var(--muted);color:var(--muted-foreground);padding:1px 7px;border-radius:99px;line-height:1.4}.tab.active .tab-count{background:var(--accent);color:var(--accent-foreground)}.topbar-actions{display:flex;align-items:center;gap:12px}.btn{font-family:var(--font-sans);font-size:14px;font-weight:500;border-radius:var(--radius);cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;gap:6px;border:1px solid transparent;line-height:1}.btn-primary{background:var(--accent);color:var(--accent-foreground);border-color:var(--accent);padding:9px 16px}.btn-primary:hover{filter:brightness(1.1)}.btn-outline{background:transparent;color:var(--foreground);border-color:var(--border);padding:9px 16px}.btn-outline:hover{border-color:var(--foreground)}.btn-ghost{background:none;border:none;color:var(--muted-foreground);padding:6px;border-radius:var(--radius)}.btn-ghost:hover{background:var(--muted);color:var(--foreground)}.btn-icon{width:32px;height:32px;justify-content:center;padding:0}.btn-danger:hover{color:var(--destructive)}.btn-sm{font-size:13px;padding:7px 14px}.main{flex:1;display:flex;justify-content:center;padding:32px 24px 64px}.content{width:100%;max-width:680px}.task-list{display:flex;flex-direction:column;gap:12px}.task-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:16px 16px 16px 20px;position:relative;overflow:hidden;transition:border-color .15s}.task-card:hover{border-color:var(--muted-foreground)}.task-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--priority-bar, var(--muted-foreground))}.task-card.done{opacity:.6}.task-card.done .task-title{text-decoration:line-through;text-decoration-color:var(--muted-foreground)}.task-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.task-body{flex:1;min-width:0}.task-title{font-size:16px;font-weight:600;color:var(--foreground);margin-bottom:2px;word-break:break-word}.task-description{font-size:14px;color:var(--muted-foreground);margin-top:6px;word-break:break-word}.task-meta{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap}.badge{font-size:11px;font-weight:600;padding:3px 8px;border-radius:99px;display:inline-flex;align-items:center;gap:4px;white-space:nowrap;letter-spacing:.02em;text-transform:uppercase}.badge-priority-high{background:#b84b0026;background:oklch(.55 .2 45 / .15);color:var(--priority-high)}.badge-priority-medium{background:#4c759f26;color:var(--priority-medium)}.badge-priority-low{background:#58905a26;color:var(--priority-low)}.badge-status{background:var(--muted);color:var(--muted-foreground)}.badge-status.done{background:#58905a26;color:var(--priority-low)}.badge-due{background:transparent;color:var(--muted-foreground);padding:3px 0;font-size:12px;text-transform:none;letter-spacing:0;font-weight:500}.badge-due.overdue{color:var(--destructive);font-weight:600}.task-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.empty-state{text-align:center;padding:80px 24px}.empty-state h2{font-family:var(--font-display);font-size:24px;font-weight:600;color:var(--foreground);margin-bottom:8px}.empty-state p{font-size:15px;color:var(--muted-foreground);margin-bottom:24px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:200;padding:24px;animation:fadeIn .15s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--background);border:1px solid var(--border);border-radius:calc(var(--radius) * 2);width:100%;max-width:520px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px #00000026;animation:slideUp .2s ease}@keyframes slideUp{0%{transform:translateY(16px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 0}.modal-title{font-family:var(--font-display);font-size:20px;font-weight:600;color:var(--foreground)}.modal-body{padding:20px 24px;display:flex;flex-direction:column;gap:16px}.modal-footer{display:flex;justify-content:flex-end;gap:8px;padding:0 24px 20px}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:13px;font-weight:500;color:var(--foreground)}.input,.select,.textarea{font-family:var(--font-sans);font-size:14px;color:var(--foreground);background:var(--input);border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px;width:100%;outline:none;transition:border-color .15s,box-shadow .15s}.input:focus,.select:focus,.textarea:focus{border-color:var(--ring);box-shadow:0 0 0 3px #00858626;box-shadow:0 0 0 3px oklch(.55 .18 195 / .15)}.textarea{resize:vertical;min-height:80px}.field-row{display:flex;gap:12px}.field-row .field{flex:1}.loading{text-align:center;padding:80px 24px;color:var(--muted-foreground);font-size:14px}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:var(--foreground);color:var(--background);padding:10px 20px;border-radius:var(--radius);font-size:14px;font-weight:500;z-index:300;animation:slideUp .2s ease;box-shadow:0 8px 24px #00000026}@media (max-width: 600px){.topbar{padding:0 12px;gap:12px;height:56px}.wordmark{font-size:16px}.tabs{gap:0}.tab{padding:8px;font-size:13px}.main{padding:20px 12px 48px}.task-meta{gap:6px}.field-row{flex-direction:column}}
