:root{--bg: #F5F4EF;--surface: #FFFFFF;--surface-2: #FAFAF7;--ink: #0F1115;--ink-2: #2A2E36;--muted: #6B6F76;--border: #E4E2DA;--border-strong: #C9C6BB;--accent: #2F3AE8;--accent-ink: #FFFFFF;--status-pending: #C97A0E;--status-pending-bg: #FBEDD8;--status-progress: #1F5FD8;--status-progress-bg: #DDE6FB;--status-testing: #7A2ED8;--status-testing-bg: #ECDDFB;--status-done: #0E7A48;--status-done-bg: #D4EEDF;--status-overdue: #B4262A;--status-overdue-bg: #F7D7D8;--radius-sm: 6px;--radius: 10px;--radius-lg: 14px;--shadow-sm: 0 1px 0 rgba(15,17,21,.04), 0 1px 2px rgba(15,17,21,.04);--shadow-md: 0 2px 4px rgba(15,17,21,.04), 0 6px 16px rgba(15,17,21,.06);--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-sans);color:var(--ink);background:var(--bg);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;border-radius:var(--radius-sm);font-size:13px;font-weight:500;border:1px solid transparent;transition:transform .05s ease,background .15s ease,border-color .15s ease;white-space:nowrap}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--ink);color:#fff;border-color:var(--ink)}.btn-primary:hover{background:var(--ink-2)}.btn-accent{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.btn-accent:hover{filter:brightness(1.08)}.btn-secondary{background:var(--surface);color:var(--ink);border-color:var(--border-strong)}.btn-secondary:hover{background:var(--surface-2)}.btn-ghost{background:transparent;color:var(--ink-2);border-color:transparent}.btn-ghost:hover{background:var(--surface-2)}.btn-danger{background:transparent;color:var(--status-overdue);border-color:var(--border)}.btn-danger:hover{background:var(--status-overdue-bg)}.btn-sm{padding:5px 10px;font-size:12px}.field{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}.field label{font-size:12px;font-weight:500;color:var(--ink-2)}.input,.select,.textarea{width:100%;padding:9px 12px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);font-size:14px;outline:none;transition:border-color .15s ease,box-shadow .15s ease}.input:focus,.select:focus,.textarea:focus{border-color:var(--ink);box-shadow:0 0 0 3px #0f111514}.textarea{min-height:80px;resize:vertical;font-family:inherit}.app{min-height:100vh;display:flex;flex-direction:column}.container{max-width:1200px;margin:0 auto;padding:24px;width:100%}.navbar{background:var(--surface);border-bottom:1px solid var(--border);padding:12px 24px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:20}.navbar-brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:15px;letter-spacing:-.01em}.brand-mark{width:26px;height:26px;background:var(--ink);color:#fff;border-radius:6px;display:grid;place-items:center;font-family:var(--font-mono);font-size:12px;font-weight:700}.navbar-nav{display:flex;align-items:center;gap:4px}.nav-link{padding:7px 12px;border-radius:var(--radius-sm);color:var(--ink-2);font-size:13px;font-weight:500}.nav-link:hover{background:var(--surface-2);text-decoration:none}.nav-link.active{background:var(--ink);color:#fff}.navbar-user{display:flex;align-items:center;gap:10px;font-size:13px}.user-chip{display:flex;align-items:center;gap:8px;padding:5px 10px 5px 5px;background:var(--surface-2);border:1px solid var(--border);border-radius:100px}.avatar{width:24px;height:24px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;font-size:11px;font-weight:600;text-transform:uppercase}.page-header{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:20px;gap:16px;flex-wrap:wrap}.page-title{font-size:24px;font-weight:700;letter-spacing:-.02em;margin:0}.page-subtitle{color:var(--muted);font-size:13px;margin-top:4px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:24px}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}.stat-label{font-size:11px;font-weight:500;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px}.stat-value{font-size:28px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.stat.active{border-color:var(--ink)}.filters{display:flex;gap:8px;align-items:center;margin-bottom:14px;flex-wrap:wrap}.tabs{display:flex;gap:2px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:3px}.tab{padding:6px 12px;border:none;background:transparent;border-radius:5px;font-size:13px;font-weight:500;color:var(--muted)}.tab.active{background:var(--ink);color:#fff}.tab-count{margin-left:6px;font-size:11px;opacity:.7;font-variant-numeric:tabular-nums}.search-input{flex:1;min-width:180px;max-width:280px;padding:7px 12px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);font-size:13px;outline:none}.search-input:focus{border-color:var(--ink)}.task-list{display:flex;flex-direction:column;gap:8px}.task-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;display:grid;grid-template-columns:1fr auto;gap:12px;align-items:start;transition:border-color .15s ease}.task-card:hover{border-color:var(--border-strong)}.task-card.overdue{border-left:3px solid var(--status-overdue)}.task-main{min-width:0}.task-title-row{display:flex;align-items:center;gap:10px;margin-bottom:6px;flex-wrap:wrap}.task-title{font-size:15px;font-weight:600;margin:0;color:var(--ink);letter-spacing:-.01em}.task-meta{display:flex;gap:14px;font-size:12px;color:var(--muted);flex-wrap:wrap;align-items:center}.task-meta strong{color:var(--ink-2);font-weight:500}.task-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:100px;font-size:11px;font-weight:600;letter-spacing:.01em;white-space:nowrap}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.badge.pending{color:var(--status-pending);background:var(--status-pending-bg)}.badge.in_progress{color:var(--status-progress);background:var(--status-progress-bg)}.badge.testing{color:var(--status-testing);background:var(--status-testing-bg)}.badge.done{color:var(--status-done);background:var(--status-done-bg)}.badge.overdue{color:var(--status-overdue);background:var(--status-overdue-bg)}.priority-dot{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:6px}.priority-dot.low{background:#a0a5ae}.priority-dot.medium{background:#e0a21a}.priority-dot.high{background:#dc2e33}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f111566;display:grid;place-items:center;z-index:50;padding:16px}.modal{background:var(--surface);border-radius:var(--radius-lg);width:100%;max-width:480px;box-shadow:var(--shadow-md);max-height:90vh;overflow-y:auto}.modal-header{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}.modal-title{font-size:16px;font-weight:600;margin:0}.modal-close{background:transparent;border:none;font-size:20px;color:var(--muted);padding:4px 8px;border-radius:4px}.modal-close:hover{background:var(--surface-2);color:var(--ink)}.modal-body{padding:20px}.modal-footer{padding:14px 20px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px;background:var(--surface-2);border-radius:0 0 var(--radius-lg) var(--radius-lg)}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(1200px 500px at 50% -10%,rgba(47,58,232,.06),transparent 60%),var(--bg)}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:32px;width:100%;max-width:380px;box-shadow:var(--shadow-sm)}.login-brand{display:flex;align-items:center;gap:10px;margin-bottom:22px}.login-title{font-size:20px;font-weight:700;letter-spacing:-.02em;margin:0}.login-subtitle{font-size:12px;color:var(--muted);margin-top:2px}.login-footer{text-align:center;margin-top:18px;font-size:12px;color:var(--muted)}.team-list{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.team-row{display:grid;grid-template-columns:40px 1fr 1fr 140px auto;gap:14px;align-items:center;padding:14px 16px;border-bottom:1px solid var(--border)}.team-row:last-child{border-bottom:none}.team-row.header{background:var(--surface-2);font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600}.team-name{font-weight:500}.team-email{color:var(--muted);font-size:13px}.role-tag{display:inline-block;padding:3px 8px;background:var(--surface-2);border:1px solid var(--border);border-radius:100px;font-size:11px;font-weight:500;color:var(--ink-2)}.role-tag.admin{background:var(--ink);color:#fff;border-color:var(--ink)}.empty{padding:60px 20px;text-align:center;color:var(--muted);background:var(--surface);border:1px dashed var(--border-strong);border-radius:var(--radius)}.empty-title{font-size:15px;font-weight:600;color:var(--ink);margin-bottom:4px}.spinner{display:inline-block;width:14px;height:14px;border:2px solid var(--border-strong);border-top-color:var(--ink);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-page{min-height:100vh;display:grid;place-items:center;color:var(--muted);font-size:13px;gap:10px}.alert{padding:10px 12px;border-radius:var(--radius-sm);font-size:13px;margin-bottom:14px}.alert-error{background:var(--status-overdue-bg);color:var(--status-overdue)}.alert-info{background:var(--status-progress-bg);color:var(--status-progress)}@media (max-width: 720px){.container{padding:16px}.stats{grid-template-columns:repeat(2,1fr)}.task-card{grid-template-columns:1fr}.task-actions{justify-content:flex-start}.navbar{padding:10px 14px}.navbar-user .user-chip span:not(.avatar){display:none}.team-row{grid-template-columns:32px 1fr auto}.team-row .team-email,.team-row .role-cell{display:none}}.duration-chip{display:inline-flex;align-items:center;padding:2px 8px;border-radius:100px;font-size:11px;font-weight:500;background:var(--surface-2);color:var(--muted);border:1px solid var(--border);white-space:nowrap}.duration-chip.overdue{background:var(--status-overdue-bg);color:var(--status-overdue);border-color:var(--status-overdue-bg);font-weight:600}
