:root{--bg: #0f0f0f;--bg-elevated: #171717;--bg-elevated-2: #1e1e1e;--border: #2a2a2a;--text: #eaeaea;--text-dim: #9a9a9a;--accent: #6ee7ff;--accent-dim: #2a6b78;--danger: #ff6b6b;--success: #4ade80;--warning: #fbbf24;--radius: 12px;--bottom-nav-h: 60px;--sidebar-w: 260px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}button,input,textarea{font-family:inherit;color:inherit}a{color:var(--accent)}.full-screen-center{height:100vh;display:flex;align-items:center;justify-content:center}.spinner{width:32px;height:32px;border-radius:50%;border:3px solid var(--border);border-top-color:var(--accent);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login-screen{height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(circle at 50% 0%,#14232a 0%,var(--bg) 60%)}.login-card{width:100%;max-width:360px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);padding:32px 24px}.login-brand{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:24px}.login-brand h1{font-size:20px;margin:0}.login-form{display:flex;flex-direction:column;gap:16px}.field{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--text-dim)}.field input{background:var(--bg-elevated-2);border:1px solid var(--border);border-radius:8px;padding:12px 14px;font-size:15px;color:var(--text);outline:none}.field input:focus{border-color:var(--accent)}.btn-primary{background:var(--accent);color:#06262c;border:none;border-radius:8px;padding:12px 16px;font-size:15px;font-weight:600;cursor:pointer}.btn-primary:disabled{opacity:.6;cursor:default}.form-error{background:#2a1414;border:1px solid #522;color:var(--danger);padding:8px 12px;border-radius:8px;font-size:13px}.app-shell{height:100vh;display:flex;flex-direction:column}.app-main{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.sidebar{display:none}.bottom-nav{display:flex;height:var(--bottom-nav-h);border-top:1px solid var(--border);background:var(--bg-elevated);flex-shrink:0}.bottom-nav-link{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--text-dim);text-decoration:none;font-size:11px}.bottom-nav-link.active{color:var(--accent)}@media (min-width: 900px){.app-shell{flex-direction:row}.bottom-nav{display:none}.sidebar{display:flex;flex-direction:column;width:var(--sidebar-w);flex-shrink:0;background:var(--bg-elevated);border-right:1px solid var(--border);height:100vh}.sidebar-brand{display:flex;align-items:center;gap:10px;padding:20px 18px;font-weight:700;font-size:16px;border-bottom:1px solid var(--border)}.sidebar-brand img{border-radius:6px}.sidebar-nav{display:flex;flex-direction:column;padding:12px;gap:4px}.sidebar-link{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:8px;color:var(--text-dim);text-decoration:none;font-size:14px}.sidebar-link:hover{background:var(--bg-elevated-2)}.sidebar-link.active{background:var(--accent-dim);color:var(--accent)}.sidebar-footer{margin-top:auto;padding:12px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:8px}.sidebar-user{font-size:12px;color:var(--text-dim);padding:0 4px}.sidebar-logout{display:flex;align-items:center;gap:10px;background:transparent;border:1px solid var(--border);color:var(--text-dim);border-radius:8px;padding:8px 12px;cursor:pointer;font-size:13px}.sidebar-logout:hover{color:var(--danger);border-color:var(--danger)}}.chat-page{display:flex;flex:1;min-height:0;position:relative;overflow:hidden}.chat-sidebar{position:fixed;top:0;left:0;bottom:var(--bottom-nav-h);width:82%;max-width:320px;background:var(--bg-elevated);border-right:1px solid var(--border);transform:translate(-100%);transition:transform .2s ease;z-index:40;display:flex;flex-direction:column}.chat-sidebar.open{transform:translate(0)}.chat-sidebar-header{padding:12px;border-bottom:1px solid var(--border)}.btn-new-conversation{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;background:var(--accent-dim);color:var(--accent);border:none;border-radius:8px;padding:10px;font-size:14px;cursor:pointer}.conversation-list{list-style:none;margin:0;padding:8px;overflow-y:auto;flex:1}.conversation-list li{position:relative;display:flex;align-items:center}.conversation-item{flex:1;text-align:left;background:transparent;border:none;color:var(--text);padding:10px 32px 10px 10px;border-radius:8px;cursor:pointer;width:100%}.conversation-item:hover{background:var(--bg-elevated-2)}.conversation-item.active{background:var(--accent-dim)}.conversation-item-title{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.conversation-item-date{font-size:11px;color:var(--text-dim);margin-top:2px}.conversation-item-delete{position:absolute;right:6px;background:transparent;border:none;color:var(--text-dim);font-size:18px;cursor:pointer;padding:4px 8px}.conversation-item-delete:hover{color:var(--danger)}.conversation-list-empty{padding:20px;color:var(--text-dim);font-size:13px;text-align:center}.chat-main{flex:1;min-width:0;display:flex;flex-direction:column;position:relative}.chat-topbar{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border);flex-shrink:0}.chat-mobile-menu-btn{background:transparent;border:none;color:var(--text);font-size:20px;cursor:pointer;padding:0}.chat-topbar-title{font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (min-width: 900px){.chat-sidebar{position:static;transform:none;width:280px;max-width:none;bottom:0}.chat-mobile-menu-btn{display:none}}.chat-messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px}.chat-row{display:flex}.row-user{justify-content:flex-end}.row-assistant,.file-row{justify-content:flex-start}.bubble{max-width:78%;padding:10px 14px;border-radius:16px;font-size:14.5px;line-height:1.4;white-space:pre-wrap;word-break:break-word}.bubble-user{background:var(--accent);color:#06262c;border-bottom-right-radius:4px}.bubble-assistant{background:var(--bg-elevated-2);color:var(--text);border-bottom-left-radius:4px}.cursor-blink{display:inline-block;margin-left:2px;animation:blink 1s step-start infinite}@keyframes blink{50%{opacity:0}}.tool-indicator{font-size:12.5px;color:var(--text-dim);font-style:italic;padding:6px 12px;background:var(--bg-elevated);border:1px dashed var(--border);border-radius:12px}.chat-empty,.chat-loading{color:var(--text-dim);text-align:center;padding:40px 16px;font-size:14px}.chat-error{margin:0 16px 8px;background:#2a1414;border:1px solid #522;color:var(--danger);padding:8px 12px;border-radius:8px;font-size:13px}.chat-input-bar{display:flex;align-items:flex-end;gap:8px;padding:10px 12px;border-top:1px solid var(--border);flex-shrink:0;padding-bottom:calc(10px + env(safe-area-inset-bottom))}.chat-textarea{flex:1;resize:none;background:var(--bg-elevated-2);border:1px solid var(--border);border-radius:18px;padding:10px 14px;font-size:15px;color:var(--text);outline:none;max-height:120px;line-height:1.4}.chat-textarea:focus{border-color:var(--accent)}.icon-btn{background:var(--bg-elevated-2);border:1px solid var(--border);color:var(--text-dim);border-radius:50%;width:40px;height:40px;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}.icon-btn:hover{color:var(--text)}.send-btn{background:var(--accent);color:#06262c;border:none}.send-btn:disabled{opacity:.5;cursor:default}.drop-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#0f0f0fd9;border:2px dashed var(--accent);display:flex;align-items:center;justify-content:center;z-index:20;pointer-events:none}.drop-overlay-text{color:var(--accent);font-size:18px;font-weight:600}.file-card{display:flex;align-items:center;gap:10px;background:var(--bg-elevated-2);border:1px solid var(--border);border-radius:12px;padding:10px 12px;max-width:280px}.file-card-icon{color:var(--accent);flex-shrink:0}.file-card-info{flex:1;min-width:0}.file-card-name{font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-card-size{font-size:11.5px;color:var(--text-dim)}.file-card-download{color:var(--text-dim);flex-shrink:0;display:flex}.file-card-download:hover{color:var(--accent)}.tasks-page,.files-page{padding:16px;padding-bottom:calc(16px + var(--bottom-nav-h));overflow-y:auto;flex:1}@media (min-width: 900px){.tasks-page,.files-page{padding-bottom:16px;max-width:900px}}.page-header h1{font-size:20px;margin:0 0 16px}.tabs{display:flex;gap:6px;overflow-x:auto;padding-bottom:8px;margin-bottom:12px}.tab{flex-shrink:0;background:var(--bg-elevated);border:1px solid var(--border);color:var(--text-dim);border-radius:20px;padding:8px 14px;font-size:13px;cursor:pointer;white-space:nowrap}.tab.active{background:var(--accent-dim);color:var(--accent);border-color:var(--accent-dim)}.empty-state{color:var(--text-dim);text-align:center;padding:40px 16px;font-size:14px}.job-list{display:flex;flex-direction:column;gap:10px}.job-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:12px;padding:14px}.job-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.badge{font-size:11px;text-transform:uppercase;letter-spacing:.03em;padding:3px 9px;border-radius:10px;font-weight:600}.badge-pending{background:#3a3620;color:var(--warning)}.badge-running{background:#1c3a4a;color:var(--accent)}.badge-completed{background:#163a22;color:var(--success)}.badge-partial{background:#3a2f16;color:var(--warning)}.badge-failed{background:#3a1616;color:var(--danger)}.job-progress{font-size:13px;color:var(--text-dim);font-variant-numeric:tabular-nums}.job-description{font-size:14.5px;margin-bottom:8px}.job-dates{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:11.5px;color:var(--text-dim)}.files-list{display:flex;flex-direction:column;gap:8px}.file-row-card{display:flex;align-items:center;gap:12px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:12px;padding:12px 14px}.file-row-info{flex:1;min-width:0}.file-row-name{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:4px}.file-row-meta{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:11.5px;color:var(--text-dim)}.file-tag{background:var(--bg-elevated-2);border-radius:6px;padding:1px 6px;text-transform:capitalize}.file-status{text-transform:capitalize}
