@import"https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=Space+Grotesk:wght@500;700&display=swap";body{margin:0;min-width:320px;min-height:100vh;background-color:#0a0a0f}:root{--bg-primary: #0a0a0f;--bg-secondary: #12121a;--bg-tertiary: #1a1a25;--bg-card: #151520;--bg-hover: #1f1f2e;--text-primary: #fafafa;--text-secondary: #a1a1aa;--text-muted: #71717a;--accent-primary: #6366f1;--accent-primary-hover: #818cf8;--accent-gradient: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);--priority-high: #ff6b35;--priority-medium: #f7c948;--priority-low: #4ecdc4;--status-todo: #6c757d;--status-review: #f7c948;--status-done: #4ecdc4;--border-color: #27273a;--border-hover: #3f3f5a;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .4), 0 2px 4px -1px rgba(0, 0, 0, .2);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .5), 0 4px 6px -2px rgba(0, 0, 0, .3);--shadow-glow: 0 0 20px rgba(99, 102, 241, .15);--font-display: "Space Grotesk", sans-serif;--font-body: "Plus Jakarta Sans", sans-serif;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font-body);background-color:var(--bg-primary);color:var(--text-primary);line-height:1.6;-webkit-font-smoothing:antialiased}.app{min-height:100vh;display:flex;flex-direction:column}.app-header{background:linear-gradient(180deg,var(--bg-secondary) 0%,var(--bg-primary) 100%);border-bottom:1px solid var(--border-color);padding:var(--space-lg) var(--space-xl);position:sticky;top:0;z-index:100}.header-content{max-width:1400px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;gap:var(--space-lg)}.app-header h1{font-family:var(--font-display);font-size:1.75rem;font-weight:700;display:flex;align-items:center;gap:var(--space-sm);background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.logo-icon{-webkit-text-fill-color:initial;font-size:1.5rem}.btn-focus{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:transparent;border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-secondary);font-family:var(--font-body);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s ease}.btn-focus:hover{border-color:var(--border-hover);color:var(--text-primary)}.btn-focus.active{background:linear-gradient(135deg,#ff6b3533,#f7c94833);border-color:var(--priority-high);color:var(--priority-high);box-shadow:0 0 15px #ff6b3533}.app-main{flex:1;max-width:1400px;width:100%;margin:0 auto;padding:var(--space-xl)}.add-task-section{margin-bottom:var(--space-xl)}.add-task-form{display:flex;gap:var(--space-md);background:var(--bg-card);padding:var(--space-lg);border-radius:var(--radius-lg);border:1px solid var(--border-color);box-shadow:var(--shadow-md)}.task-input{flex:1;padding:var(--space-md) var(--space-lg);background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-body);font-size:1rem;outline:none;transition:all .2s ease}.task-input:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px #6366f11a}.task-input::placeholder{color:var(--text-muted)}.priority-select{padding:var(--space-md) var(--space-lg);background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-body);font-size:1rem;cursor:pointer;outline:none;min-width:140px}.priority-select:focus{border-color:var(--accent-primary)}.btn-add{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);background:var(--accent-gradient);border:none;border-radius:var(--radius-md);color:#fff;font-family:var(--font-body);font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s ease;box-shadow:var(--shadow-sm)}.btn-add:hover{transform:translateY(-2px);box-shadow:var(--shadow-glow)}.focus-banner{display:flex;align-items:center;justify-content:center;gap:var(--space-md);padding:var(--space-md) var(--space-lg);margin-bottom:var(--space-xl);background:linear-gradient(90deg,#ff6b351a,#f7c9481a);border:1px solid rgba(255,107,53,.3);border-radius:var(--radius-md);color:var(--priority-high);font-weight:600}.board{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-lg)}@media(max-width:1024px){.board{grid-template-columns:1fr}}.column{background:var(--bg-secondary);border-radius:var(--radius-lg);border:1px solid var(--border-color);display:flex;flex-direction:column;min-height:500px;box-shadow:var(--shadow-md)}.column-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-md) var(--space-lg);border-bottom:2px solid;background:var(--bg-card);border-radius:var(--radius-lg) var(--radius-lg) 0 0}.column-title{display:flex;align-items:center;gap:var(--space-sm);font-family:var(--font-display);font-weight:600;font-size:.875rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary)}.task-count{background:var(--bg-tertiary);color:var(--text-secondary);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-xl);font-size:.875rem;font-weight:700;min-width:28px;text-align:center}.column-content{flex:1;padding:var(--space-md);display:flex;flex-direction:column;gap:var(--space-md);overflow-y:auto}.empty-state{display:flex;align-items:center;justify-content:center;padding:var(--space-2xl) var(--space-lg);color:var(--text-muted);font-size:.875rem;text-align:center;border:2px dashed var(--border-color);border-radius:var(--radius-md);margin:var(--space-sm)}.task-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:var(--space-md);transition:all .2s ease;animation:slideIn .3s ease-out}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.task-card:hover{border-color:var(--border-hover);box-shadow:var(--shadow-md);transform:translateY(-2px)}.task-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-sm)}.task-id{font-family:var(--font-display);font-size:.75rem;font-weight:700;color:var(--text-muted);background:var(--bg-tertiary);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm)}.task-actions{display:flex;gap:var(--space-xs)}.btn-move,.btn-delete{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:transparent;border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;transition:all .2s ease;font-size:.75rem}.btn-move:hover,.btn-delete:hover{border-color:var(--border-hover);color:var(--text-primary)}.btn-delete:hover{background:#ef44441a;border-color:#ef4444;color:#ef4444}.task-description{font-size:.9375rem;line-height:1.5;color:var(--text-primary);margin-bottom:var(--space-md);word-wrap:break-word}.task-footer{display:flex;justify-content:space-between;align-items:center}.priority-badge{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);font-size:.75rem;font-weight:600;border:1px solid}.btn-move.forward{width:auto;padding:var(--space-xs) var(--space-sm);font-size:.75rem;font-weight:600;color:var(--accent-primary);border-color:var(--accent-primary)}.btn-move.forward:hover{background:var(--accent-primary);color:#fff}.app-footer{margin-top:var(--space-2xl);padding:var(--space-lg);text-align:center;color:var(--text-muted);font-size:.875rem;border-top:1px solid var(--border-color)}@media(max-width:768px){.app-header{padding:var(--space-md)}.app-header h1{font-size:1.25rem}.header-content{flex-wrap:wrap}.app-main{padding:var(--space-md)}.add-task-form{flex-direction:column}.priority-select{width:100%}.btn-add{width:100%;justify-content:center}.board{gap:var(--space-md)}.column{min-height:300px}}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-tertiary);border-radius:var(--radius-sm)}::-webkit-scrollbar-thumb{background:var(--border-hover);border-radius:var(--radius-sm)}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.header-nav{display:flex;align-items:center;gap:var(--space-sm);flex:1;margin-left:var(--space-xl)}.btn-nav{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:transparent;border:1px solid transparent;border-radius:var(--radius-md);color:var(--text-secondary);font-family:var(--font-body);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s ease}.btn-nav:hover{background:var(--bg-tertiary);color:var(--text-primary)}.btn-nav.active{background:var(--accent-gradient);color:#fff;border-color:var(--accent-primary)}.cron-page{animation:fadeIn .3s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.cron-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-xl);padding-bottom:var(--space-lg);border-bottom:1px solid var(--border-color)}.cron-title{display:flex;align-items:center;gap:var(--space-md)}.cron-title h2{font-family:var(--font-display);font-size:1.5rem;font-weight:700;color:var(--text-primary)}.cron-title svg{color:var(--accent-primary)}.cron-count{background:var(--bg-tertiary);color:var(--text-secondary);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-xl);font-size:.875rem;font-weight:600}.btn-refresh{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-secondary);font-family:var(--font-body);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s ease}.btn-refresh:hover{border-color:var(--accent-primary);color:var(--accent-primary)}.btn-refresh:disabled{opacity:.5;cursor:not-allowed}.spin{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.cron-error{display:flex;align-items:flex-start;gap:var(--space-md);padding:var(--space-md) var(--space-lg);background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:var(--radius-md);color:#ef4444;margin-bottom:var(--space-lg)}.cron-error .error-content{flex:1}.cron-error .error-instructions{margin-top:var(--space-sm);font-size:.875rem;color:var(--text-secondary)}.cron-error .error-instructions p{margin-bottom:var(--space-xs)}.cron-error .error-instructions ol{margin-left:var(--space-lg);line-height:1.8}.cron-error .error-instructions code{background:var(--bg-tertiary);padding:2px 6px;border-radius:4px;font-family:JetBrains Mono,monospace;font-size:.8rem}.cron-error button{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;padding:0 var(--space-sm)}.cron-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-2xl);color:var(--text-muted);gap:var(--space-md)}.cron-table-container{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-md)}.cron-table{width:100%;border-collapse:collapse;font-size:.875rem}.cron-table th{background:var(--bg-card);padding:var(--space-md) var(--space-lg);text-align:left;font-family:var(--font-display);font-weight:600;color:var(--text-secondary);text-transform:uppercase;font-size:.75rem;letter-spacing:.05em;border-bottom:1px solid var(--border-color)}.cron-table td{padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--border-color);color:var(--text-primary)}.cron-table tr:hover:not(.logs-row){background:var(--bg-hover)}.cron-table tr.disabled{opacity:.6}.cron-table tr.disabled td{color:var(--text-muted)}.status-badge{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);font-size:.75rem;font-weight:600;text-transform:uppercase}.status-badge.ok{background:#4ecdc426;color:var(--priority-low);border:1px solid rgba(78,205,196,.3)}.status-badge.error{background:#ef444426;color:#ef4444;border:1px solid rgba(239,68,68,.3)}.status-badge.running{background:#6366f126;color:var(--accent-primary);border:1px solid rgba(99,102,241,.3)}.status-badge.pending{background:var(--bg-tertiary);color:var(--text-muted);border:1px solid var(--border-color)}.status-badge svg{flex-shrink:0}.job-name{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.job-name .name{font-weight:500;color:var(--text-primary)}.badge-paused{background:#f7c94826;color:var(--priority-medium);padding:2px 6px;border-radius:var(--radius-sm);font-size:.625rem;font-weight:700;border:1px solid rgba(247,201,72,.3)}.job-schedule{display:flex;align-items:center;gap:var(--space-xs);color:var(--text-secondary)}.job-schedule code{font-family:JetBrains Mono,monospace;font-size:.75rem;background:var(--bg-tertiary);padding:2px 6px;border-radius:var(--radius-sm);color:var(--accent-primary)}.job-actions{display:flex;gap:var(--space-xs)}.btn-action{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.btn-action:hover{border-color:var(--border-hover);color:var(--text-primary)}.btn-action:disabled{opacity:.5;cursor:not-allowed}.btn-action.pause:hover{background:#ef44441a;border-color:#ef4444;color:#ef4444}.btn-action.resume:hover{background:#4ecdc41a;border-color:var(--priority-low);color:var(--priority-low)}.btn-action.run:hover{background:#6366f11a;border-color:var(--accent-primary);color:var(--accent-primary)}.btn-action.logs:hover,.btn-action.logs.active{background:#f7c9481a;border-color:var(--priority-medium);color:var(--priority-medium)}.logs-row td{padding:0;background:var(--bg-primary)}.logs-panel{padding:var(--space-lg)}.logs-header{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-md);padding-bottom:var(--space-md);border-bottom:1px solid var(--border-color);color:var(--text-secondary);font-weight:600}.logs-header button{margin-left:auto;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-sm);padding:var(--space-xs);color:var(--text-secondary);cursor:pointer}.logs-header button:hover{border-color:var(--accent-primary);color:var(--accent-primary)}.logs-loading,.logs-empty{padding:var(--space-xl);text-align:center;color:var(--text-muted)}.logs-list{display:flex;flex-direction:column;gap:var(--space-sm);max-height:300px;overflow-y:auto}.log-entry{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:var(--space-md)}.log-entry.ok{border-left:3px solid var(--priority-low)}.log-entry.error{border-left:3px solid #ef4444}.log-header{display:flex;align-items:center;gap:var(--space-md);font-size:.8125rem}.log-run{font-family:var(--font-display);font-weight:700;color:var(--text-muted)}.log-status{text-transform:uppercase;font-weight:600;padding:2px 6px;border-radius:var(--radius-sm);font-size:.625rem}.log-entry.ok .log-status{background:#4ecdc426;color:var(--priority-low)}.log-entry.error .log-status{background:#ef444426;color:#ef4444}.log-time{color:var(--text-secondary)}.log-duration{margin-left:auto;color:var(--accent-primary);font-family:JetBrains Mono,monospace}.log-error{margin-top:var(--space-sm);padding:var(--space-sm);background:#ef44440d;border-radius:var(--radius-sm);color:#ef4444;font-size:.75rem;font-family:JetBrains Mono,monospace;white-space:pre-wrap;word-break:break-word}.cron-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-2xl);color:var(--text-muted);gap:var(--space-md)}.cron-actions{display:flex;align-items:center;gap:var(--space-md)}.sync-info{display:flex;align-items:center;gap:var(--space-xs);color:var(--text-muted);font-size:.875rem;padding:var(--space-xs) var(--space-sm);background:var(--bg-tertiary);border-radius:var(--radius-sm);border:1px solid var(--border-color)}.sync-info svg{color:var(--accent-primary)}.cron-info-banner{display:flex;align-items:flex-start;gap:var(--space-md);padding:var(--space-md) var(--space-lg);background:#6366f11a;border:1px solid rgba(99,102,241,.3);border-radius:var(--radius-md);color:var(--accent-primary);margin-bottom:var(--space-lg)}.cron-info-banner svg{flex-shrink:0;margin-top:2px}.cron-info-banner strong{display:block;margin-bottom:var(--space-xs);color:var(--text-primary)}.cron-info-banner p{color:var(--text-secondary);font-size:.875rem;line-height:1.5}.cron-info-banner code{background:var(--bg-card);padding:2px 6px;border-radius:4px;font-family:JetBrains Mono,monospace;font-size:.8rem;color:var(--accent-primary)}.cron-footer{margin-top:var(--space-xl);padding-top:var(--space-lg);border-top:1px solid var(--border-color)}.sync-status{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);color:var(--text-muted);font-size:.875rem}.sync-status svg{color:var(--accent-primary)}@media(max-width:768px){.cron-actions{flex-direction:column;align-items:flex-end;gap:var(--space-sm)}.sync-info,.cron-table{font-size:.75rem}.cron-table th,.cron-table td{padding:var(--space-sm)}.job-actions{flex-direction:column}.btn-action{width:28px;height:28px}}@media(max-width:768px){.header-nav{margin-left:0;order:3;width:100%;justify-content:center}.cron-table-container{overflow-x:auto}.cron-table{min-width:900px}}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-2xl);color:var(--text-muted);gap:var(--space-md);min-height:300px}.loading-state p{font-size:1rem;font-weight:500}.error-banner{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);margin-bottom:var(--space-lg);background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:var(--radius-md);color:#ef4444;font-weight:500}.error-banner button{background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;padding:0 var(--space-sm);opacity:.7;transition:opacity .2s ease}.error-banner button:hover{opacity:1}button:disabled{opacity:.6;cursor:not-allowed}.btn-add:disabled{transform:none;box-shadow:none}
