:root,[data-theme=light]{--color-bg: #ffffff;--color-bg-subtle: #f6f7f9;--color-bg-muted: #eef0f4;--color-surface: #ffffff;--color-surface-raised: #f8f9fb;--color-border: #e2e5eb;--color-border-subtle: #eef0f4;--color-text: #1a1d24;--color-text-secondary: #5f6878;--color-text-tertiary: #8b93a1;--color-accent: #2563eb;--color-accent-hover: #1d4fd8;--color-accent-subtle: #eff4ff;--color-accent-text: #ffffff;--color-sidebar-bg: #f8f9fb;--color-sidebar-hover: #eef0f4;--color-sidebar-active: #e8eaef;--color-sidebar-active-text: #1a1d24;--color-sidebar-active-indicator: #2563eb;--color-toggle-bg: #e2e5eb;--color-toggle-knob: #ffffff;--color-toggle-icon: #5f6878;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .04);--shadow-md: 0 2px 8px rgba(0, 0, 0, .06);--transition-fast: .16s ease;--transition-normal: .25s ease;color-scheme:light}[data-theme=dark]{--color-bg: #0f1117;--color-bg-subtle: #161820;--color-bg-muted: #1c1f2a;--color-surface: #161820;--color-surface-raised: #1c1f2a;--color-border: #2a2d3a;--color-border-subtle: #22252f;--color-text: #e8eaef;--color-text-secondary: #9ba1af;--color-text-tertiary: #6b7280;--color-accent: #5b8def;--color-accent-hover: #7ba4f7;--color-accent-subtle: rgba(91, 141, 239, .1);--color-accent-text: #ffffff;--color-sidebar-bg: #13151c;--color-sidebar-hover: #1c1f2a;--color-sidebar-active: #1e2233;--color-sidebar-active-text: #e8eaef;--color-sidebar-active-indicator: #5b8def;--color-toggle-bg: #2a2d3a;--color-toggle-knob: #e8eaef;--color-toggle-icon: #9ba1af;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .2);--shadow-md: 0 2px 8px rgba(0, 0, 0, .3);color-scheme:dark}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:Google Sans,Segoe UI,system-ui,sans-serif;background-color:var(--color-bg);color:var(--color-text);transition:background-color var(--transition-normal),color var(--transition-normal)}.sidebar{width:252px;height:100vh;position:fixed;top:0;left:0;background:var(--color-sidebar-bg);border-right:1px solid var(--color-border);display:flex;flex-direction:column;transition:width var(--transition-normal),background-color var(--transition-normal),border-color var(--transition-normal);z-index:10;overflow:hidden}.sidebar.collapsed{width:64px}.sidebar.collapsed+.main-content{margin-left:64px}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:14px 12px;border-bottom:1px solid var(--color-border-subtle);transition:border-color var(--transition-normal);min-height:56px}.sidebar-logo{font-size:18px;font-weight:700;letter-spacing:-.3px;color:var(--color-text);white-space:nowrap;overflow:hidden;transition:color var(--transition-normal)}.sidebar.collapsed .sidebar-logo{font-size:20px;letter-spacing:0;text-align:center;width:100%}.sidebar-collapse-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:none;border:1px solid var(--color-border);border-radius:6px;color:var(--color-text-tertiary);cursor:pointer;flex-shrink:0;transition:background-color var(--transition-fast),color var(--transition-fast),border-color var(--transition-normal)}.sidebar-collapse-btn:hover{background:var(--color-sidebar-hover);color:var(--color-text-secondary)}.sidebar-collapse-btn svg{width:16px;height:16px}.sidebar.collapsed .sidebar-header{justify-content:center;padding:14px 8px}.sidebar.collapsed .sidebar-logo{display:none}.sidebar.collapsed .sidebar-collapse-btn{width:36px;height:36px}.sidebar-nav{flex:1;padding:8px 10px;display:flex;flex-direction:column;gap:2px}.sidebar.collapsed .sidebar-nav{padding:8px;align-items:center}.sidebar-link{display:flex;align-items:center;gap:10px;padding:9px 12px;font-size:13.5px;font-weight:400;letter-spacing:.01em;text-decoration:none;color:var(--color-text-secondary);border-radius:8px;position:relative;white-space:nowrap;overflow:hidden;transition:background-color var(--transition-fast),color var(--transition-fast)}.sidebar-link:hover{background:var(--color-sidebar-hover);color:var(--color-text)}.sidebar-link.active{background:var(--color-sidebar-active);color:var(--color-sidebar-active-text);font-weight:500}.sidebar-link.active:before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:0 3px 3px 0;background:var(--color-sidebar-active-indicator);transition:background-color var(--transition-normal)}.sidebar-link svg{width:18px;height:18px;flex-shrink:0;opacity:.65;transition:opacity var(--transition-fast)}.sidebar-link:hover svg,.sidebar-link.active svg{opacity:1}.sidebar-link-label{overflow:hidden;opacity:1;transition:opacity var(--transition-fast)}.sidebar.collapsed .sidebar-link{justify-content:center;gap:0;padding:0;width:40px;height:40px}.sidebar.collapsed .sidebar-link-label{display:none}.sidebar.collapsed .sidebar-link.active:before{display:none}.sidebar-footer{padding:12px 10px;border-top:1px solid var(--color-border-subtle);transition:border-color var(--transition-normal)}.sidebar.collapsed .sidebar-footer{padding:12px 8px;display:flex;justify-content:center}.theme-toggle{display:flex;align-items:center;gap:10px;width:100%;padding:9px 12px;font-size:13px;font-family:inherit;color:var(--color-text-tertiary);background:none;border:none;border-radius:8px;cursor:pointer;overflow:hidden;white-space:nowrap;transition:background-color var(--transition-fast),color var(--transition-fast)}.theme-toggle:hover{background:var(--color-sidebar-hover);color:var(--color-text-secondary)}.sidebar.collapsed .theme-toggle{justify-content:center;gap:0;padding:0;width:40px;height:40px}.sidebar.collapsed .theme-toggle .sidebar-link-label{display:none}.toggle-track{position:relative;width:38px;height:22px;background:var(--color-toggle-bg);border-radius:11px;transition:background-color var(--transition-normal);flex-shrink:0}.toggle-knob{position:absolute;top:3px;left:3px;width:16px;height:16px;background:var(--color-toggle-knob);border-radius:50%;box-shadow:var(--shadow-sm);transition:transform var(--transition-normal),background-color var(--transition-normal);display:flex;align-items:center;justify-content:center}[data-theme=dark] .toggle-knob{transform:translate(16px)}.toggle-knob svg{width:10px;height:10px;color:var(--color-toggle-icon)}.sidebar.collapsed .toggle-track{display:none}.sidebar.collapsed .theme-toggle .sidebar-link-label{width:0;opacity:0;pointer-events:none}.theme-toggle-icon{display:none;width:18px;height:18px;flex-shrink:0;opacity:.65}.sidebar.collapsed .theme-toggle-icon{display:block}.main-content{flex:1;margin-left:252px;padding:28px 32px;background:var(--color-bg);transition:background-color var(--transition-normal),margin-left var(--transition-normal);min-height:100vh;overflow-y:auto}.main-content h1{font-size:22px;font-weight:600;letter-spacing:-.3px;color:var(--color-text)}.app-layout{display:flex;min-height:100vh}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.btn{font-family:inherit;font-size:13px;font-weight:500;border:none;border-radius:6px;cursor:pointer;padding:6px 12px;display:inline-flex;align-items:center;justify-content:center;gap:6px;line-height:1.2;transition:background-color var(--transition-fast),color var(--transition-fast),opacity var(--transition-fast)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-sm{font-size:12px;padding:4px 10px;border-radius:5px}.btn-primary{background:var(--color-accent);color:var(--color-accent-text)}.btn-primary:hover:not(:disabled){background:var(--color-accent-hover)}.btn-ghost{background:none;color:var(--color-text-secondary)}.btn-ghost:hover{background:var(--color-bg-muted)}.btn-icon{width:30px;height:30px;padding:0;background:none;color:var(--color-text-tertiary);border-radius:6px}.btn-icon:hover{background:var(--color-bg-muted);color:var(--color-text)}.btn-icon svg{width:15px;height:15px}.btn-icon-danger:hover{background:#dc26261a;color:#dc2626}.btn-danger-sm{background:#dc2626;color:#fff;padding:4px 10px;font-size:12px}.btn-danger-sm:hover{background:#b91c1c}.btn-ghost-sm{background:none;color:var(--color-text-tertiary);padding:4px 10px;font-size:12px}.btn-ghost-sm:hover{background:var(--color-bg-muted)}.btn-danger{background:#dc2626;color:#fff}.btn-danger:hover:not(:disabled){background:#b91c1c}.ts-form{background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:10px;padding:20px;margin-bottom:24px;transition:background-color var(--transition-normal),border-color var(--transition-normal)}.ts-form-title{font-size:15px;font-weight:600;color:var(--color-text);margin-bottom:16px}.ts-form-field{margin-bottom:14px}.ts-form-field label{display:block;font-size:13px;font-weight:500;color:var(--color-text-secondary);margin-bottom:6px}.ts-form-field input,.ts-form-field textarea,.ts-form-field select{width:100%;padding:9px 12px;font-family:inherit;font-size:13.5px;color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;outline:none;resize:vertical;transition:border-color var(--transition-fast),background-color var(--transition-normal)}.ts-form-field input::placeholder,.ts-form-field textarea::placeholder,.ts-form-field select::placeholder{color:var(--color-text-tertiary)}.ts-form-field input:focus,.ts-form-field textarea:focus,.ts-form-field select:focus{border-color:var(--color-accent)}.ts-form-error{display:block;font-size:12px;color:#dc2626;margin-top:4px}.ts-form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.list-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:16px;flex-wrap:wrap}.list-toolbar-search{flex:1;min-width:200px;padding:8px 12px;font-size:13.5px;font-family:inherit;border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface-raised);color:var(--color-text);transition:border-color var(--transition-fast)}.list-toolbar-search::placeholder{color:var(--color-text-tertiary)}.list-toolbar-search:focus{outline:none;border-color:var(--color-accent)}.list-toolbar select{padding:8px 12px;font-size:13px;font-family:inherit;border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface-raised);color:var(--color-text);cursor:pointer;transition:border-color var(--transition-fast)}.list-toolbar select:focus{outline:none;border-color:var(--color-accent)}.status-toggle{display:flex;gap:0;border:1px solid var(--color-border);border-radius:8px;overflow:hidden}.status-toggle-btn{padding:7px 14px;font-size:13px;font-family:inherit;font-weight:500;border:none;background:var(--color-surface-raised);color:var(--color-text-tertiary);cursor:pointer;transition:background-color var(--transition-fast),color var(--transition-fast)}.status-toggle-btn:not(:last-child){border-right:1px solid var(--color-border)}.status-toggle-btn:hover{background:var(--color-bg-muted)}.status-toggle-btn.active-selected{background:#059669;color:#fff}.status-toggle-btn.draft-selected{background:var(--color-text-tertiary);color:#fff}.list-toolbar-apply{padding:8px 16px;font-size:13px;font-family:inherit;font-weight:600;border:none;border-radius:8px;background:var(--color-accent);color:var(--color-accent-text);cursor:pointer;transition:background-color var(--transition-fast);flex-shrink:0}.list-toolbar-apply:hover{background:var(--color-accent-hover)}.pagination{display:flex;align-items:center;justify-content:center;gap:4px;margin-top:20px}.pagination-btn{padding:6px 12px;font-size:13px;font-family:inherit;font-weight:500;border:1px solid var(--color-border);border-radius:6px;background:var(--color-surface-raised);color:var(--color-text-secondary);cursor:pointer;transition:background-color var(--transition-fast),border-color var(--transition-fast)}.pagination-btn:hover:not(:disabled){border-color:var(--color-accent);background:var(--color-bg-muted)}.pagination-btn:disabled{opacity:.4;cursor:not-allowed}.pagination-btn.active{background:var(--color-accent);color:var(--color-accent-text);border-color:var(--color-accent)}.pagination-info{font-size:12px;color:var(--color-text-tertiary);margin-left:12px}.ts-list{display:flex;flex-direction:column;gap:8px}.ts-card{display:flex;align-items:center;justify-content:space-between;background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:10px;padding:16px 20px;transition:background-color var(--transition-normal),border-color var(--transition-normal)}.ts-card:hover{border-color:var(--color-accent)}.ts-card-body{flex:1;min-width:0}.ts-card-name{font-size:14.5px;font-weight:600;color:var(--color-text);margin-bottom:2px}.ts-card-desc{font-size:13px;color:var(--color-text-secondary);margin-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ts-card-meta{font-size:12px;color:var(--color-text-tertiary)}.ts-card-actions{display:flex;align-items:center;gap:4px;margin-left:16px;flex-shrink:0}.ts-delete-confirm{display:flex;gap:4px}.ts-empty{color:var(--color-text-tertiary);font-size:14px;padding:20px 0}.ts-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--color-text-tertiary)}.ts-empty-icon{width:48px;height:48px;margin-bottom:16px;opacity:.4}.ts-empty-icon svg{width:100%;height:100%}.ts-empty-state p{font-size:15px;font-weight:500;color:var(--color-text-secondary);margin-bottom:4px}.ts-empty-state span{font-size:13px}.tag-picker{display:flex;flex-wrap:wrap;gap:6px}.tag-chip{display:inline-flex;align-items:center;padding:5px 12px;font-family:inherit;font-size:12.5px;font-weight:500;color:var(--color-text-secondary);background:var(--color-bg-muted);border:1px solid var(--color-border);border-radius:16px;cursor:pointer;transition:background-color var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast)}.tag-chip:hover{border-color:var(--color-accent);color:var(--color-text)}.tag-chip.selected{background:var(--color-accent-subtle);border-color:var(--color-accent);color:var(--color-accent)}.ts-card-tags{display:flex;flex-wrap:wrap;gap:4px;margin:6px 0}.tag-badge{display:inline-flex;align-items:center;padding:2px 8px;font-size:11px;font-weight:500;color:var(--color-accent);background:var(--color-accent-subtle);border-radius:10px}.ts-form-hint{font-size:13px;color:var(--color-text-tertiary)}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--color-bg)}.login-card{display:flex;flex-direction:column;align-items:center;background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:16px;padding:48px 40px;width:100%;max-width:400px;box-shadow:var(--shadow-md)}.login-logo{font-size:28px;font-weight:700;letter-spacing:-.5px;color:var(--color-text);margin-bottom:4px}.login-subtitle{font-size:14px;color:var(--color-text-tertiary);margin-bottom:32px}.login-error{font-size:13px;color:#dc2626;background:#dc262614;border:1px solid rgba(220,38,38,.2);border-radius:8px;padding:10px 16px;margin-bottom:20px;width:100%;text-align:center}.login-btn{display:flex;align-items:center;gap:10px;width:100%;justify-content:center;padding:12px 20px;font-size:14px}.auth-loading{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--color-bg)}.auth-loading-spinner{width:32px;height:32px;border:3px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.sidebar-user{display:flex;align-items:center;gap:10px;padding:8px 12px;margin-bottom:8px;overflow:hidden}.sidebar-user-avatar{width:32px;height:32px;border-radius:50%;background:var(--color-accent);color:var(--color-accent-text);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;flex-shrink:0}.sidebar-user-info{display:flex;flex-direction:column;min-width:0;overflow:hidden}.sidebar-user-name{font-size:13px;font-weight:500;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-logout-btn{background:none;border:none;padding:0;font-family:inherit;font-size:12px;color:var(--color-text-tertiary);cursor:pointer;text-align:left}.sidebar-logout-btn:hover{color:var(--color-accent)}.sidebar.collapsed .sidebar-user-info{display:none}.sidebar.collapsed .sidebar-user{justify-content:center;padding:8px}.main-content:has(.tc-detail){display:flex;flex-direction:column;height:100vh;overflow:hidden}.tc-detail{display:flex;flex-direction:column;flex:1;min-height:0}.tc-detail-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px;flex-shrink:0}.tc-detail-header-left{display:flex;flex-direction:column;gap:8px;min-width:0;flex:1}.tc-back-btn{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;font-size:13px;align-self:flex-start}.tc-detail-title{font-size:22px;font-weight:600;letter-spacing:-.3px;color:var(--color-text);line-height:1.3}.tc-detail-title-input{width:100%;padding:6px 10px;font-family:inherit;font-size:22px;font-weight:600;letter-spacing:-.3px;color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-accent);border-radius:8px;outline:none}.tc-detail-header-actions{display:flex;align-items:center;gap:8px;flex-shrink:0;padding-top:28px}.tc-detail-meta{margin-bottom:20px;flex-shrink:0}.tc-detail-meta .ts-card-tags{margin-bottom:8px}.tc-detail-meta-text{font-size:12px;color:var(--color-text-tertiary)}.tc-detail-tag-picker{margin-bottom:8px}.tc-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;flex:1;min-height:0}.tc-detail-left{display:flex;flex-direction:column;min-height:0}.tc-detail-right{display:flex;flex-direction:column;gap:20px;min-height:0}.tc-detail-section{display:flex;flex-direction:column;flex:1;min-height:0}.tc-detail-label{font-size:13px;font-weight:500;color:var(--color-text-secondary);margin-bottom:8px;flex-shrink:0}.tc-detail-textarea{width:100%;flex:1;min-height:0;padding:10px 12px;font-family:inherit;font-size:13.5px;color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;outline:none;resize:none;overflow:auto;transition:border-color var(--transition-fast),background-color var(--transition-normal)}.tc-detail-textarea:focus{border-color:var(--color-accent)}.tc-detail-content{flex:1;min-height:0;padding:10px 12px;font-size:13.5px;color:var(--color-text);background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:8px;white-space:pre-wrap;word-break:break-word;overflow:auto;transition:background-color var(--transition-normal),border-color var(--transition-normal)}.tc-detail-placeholder{color:var(--color-text-tertiary);font-style:italic}.ai-generate-btn{display:inline-flex;align-items:center}.status-badge{display:inline-flex;align-items:center;padding:2px 8px;font-size:11px;font-weight:500;border-radius:10px;margin-left:8px;vertical-align:middle}.status-draft{color:#d97706;background:#d977061a}.status-active{color:#059669;background:#0596691a}.ai-stepper{display:flex;align-items:center;gap:0;margin-bottom:28px;padding:16px 0}.ai-step{display:flex;align-items:center;gap:8px;flex:1}.ai-step-number{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;background:var(--color-bg-muted);color:var(--color-text-tertiary);border:2px solid var(--color-border);flex-shrink:0;transition:all var(--transition-fast)}.ai-step-active .ai-step-number{background:var(--color-accent);color:var(--color-accent-text);border-color:var(--color-accent)}.ai-step-completed .ai-step-number{background:#059669;color:#fff;border-color:#059669}.ai-step-label{font-size:13px;font-weight:500;color:var(--color-text-tertiary);white-space:nowrap}.ai-step-active .ai-step-label{color:var(--color-text)}.ai-step-line{flex:1;height:2px;background:var(--color-border);margin:0 12px;min-width:20px}.ai-step-completed .ai-step-line{background:#059669}.ai-error{font-size:13px;color:#dc2626;background:#dc262614;border:1px solid rgba(220,38,38,.2);border-radius:8px;padding:10px 16px;margin-bottom:16px}.bug-badge{display:inline-flex;align-items:center;padding:2px 8px;font-size:11px;font-weight:500;border-radius:10px}.priority-critical{color:#dc2626;background:#dc26261a}.priority-high{color:#ea580c;background:#ea580c1a}.priority-medium{color:#d97706;background:#d977061a}.priority-low{color:#059669;background:#0596691a}.severity-blocker,.severity-critical{color:#dc2626;background:#dc26261a}.severity-major{color:#ea580c;background:#ea580c1a}.severity-minor{color:#d97706;background:#d977061a}.severity-trivial{color:#6b7280;background:#6b72801a}.bug-badge.bug-type{color:#7c3aed;background:#7c3aed1a}.bug-badge.assigned,.status-new{color:#2563eb;background:#2563eb1a}.status-open{color:#ea580c;background:#ea580c1a}.status-in_progress{color:#d97706;background:#d977061a}.status-resolved{color:#059669;background:#0596691a}.status-closed{color:#6b7280;background:#6b72801a}.status-reopened{color:#dc2626;background:#dc26261a}.state-new-selected{color:#2563eb;background:#2563eb26;border-color:#2563eb}.state-open-selected{color:#ea580c;background:#ea580c26;border-color:#ea580c}.state-progress-selected{color:#d97706;background:#d9770626;border-color:#d97706}.state-resolved-selected{color:#059669;background:#05966926;border-color:#059669}.state-closed-selected{color:#6b7280;background:#6b728026;border-color:#6b7280}
