:root{--bg-black: #0a0a0f;--bg-deep: #0f0f1a;--bg-card: #14141f;--bg-hover: #1a1a2e;--accent-pink: #ff2d78;--accent-pink-glow: rgba(255, 45, 120, .3);--accent-purple: #a855f7;--accent-purple-glow: rgba(168, 85, 247, .3);--accent-cyan: #22d3ee;--text-primary: #f0e6ff;--text-secondary: #a78bba;--text-muted: #5a4f6a;--border-subtle: rgba(168, 85, 247, .15);--border-active: rgba(255, 45, 120, .5);--font: "Inter", "Segoe UI", system-ui, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--radius: 8px;--radius-lg: 16px;--transition: .18s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;width:100%}body{font-family:var(--font);background-color:var(--bg-black);color:var(--text-primary);line-height:1.6;overflow-x:hidden}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:var(--bg-deep)}::-webkit-scrollbar-thumb{background:var(--accent-purple);border-radius:2px}h1,h2,h3{font-weight:700;letter-spacing:-.02em}.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 22px;border:none;border-radius:var(--radius);font-family:var(--font);font-size:.9rem;font-weight:600;cursor:pointer;transition:var(--transition);text-decoration:none}.btn-primary{background:linear-gradient(135deg,var(--accent-pink),var(--accent-purple));color:#fff;box-shadow:0 0 20px var(--accent-pink-glow)}.btn-primary:hover{box-shadow:0 0 30px var(--accent-pink-glow),0 0 60px var(--accent-purple-glow);transform:translateY(-1px)}.btn-ghost{background:transparent;color:var(--text-secondary);border:1px solid var(--border-subtle)}.btn-ghost:hover{border-color:var(--accent-purple);color:var(--accent-purple);background:var(--bg-hover)}.btn-danger{background:transparent;color:var(--accent-pink);border:1px solid rgba(255,45,120,.3);padding:5px 12px;font-size:.75rem}.btn-danger:hover{background:#ff2d781a}.card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:24px}.input{width:100%;background:var(--bg-deep);border:1px solid var(--border-subtle);border-radius:var(--radius);padding:10px 14px;color:var(--text-primary);font-family:var(--font);font-size:.9rem;transition:var(--transition);outline:none}.input:focus{border-color:var(--accent-purple);box-shadow:0 0 0 2px var(--accent-purple-glow)}textarea.input{resize:vertical;min-height:120px}.text-glow-pink{color:var(--accent-pink);text-shadow:0 0 20px var(--accent-pink-glow)}.text-glow-purple{color:var(--accent-purple);text-shadow:0 0 20px var(--accent-purple-glow)}.neon-divider{height:1px;background:linear-gradient(90deg,transparent,var(--accent-purple),var(--accent-pink),transparent);border:none;margin:16px 0}.badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.badge-admin{background:#ff2d7826;color:var(--accent-pink);border:1px solid rgba(255,45,120,.3)}.badge-user{background:#a855f71f;color:var(--accent-purple);border:1px solid rgba(168,85,247,.3)}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%}.status-dot.pending{background:var(--text-muted)}.status-dot.processing{background:var(--accent-cyan);box-shadow:0 0 8px var(--accent-cyan);animation:pulse 1s infinite}.status-dot.complete{background:#22c55e;box-shadow:0 0 8px #22c55e66}.status-dot.error{background:var(--accent-pink);box-shadow:0 0 8px var(--accent-pink-glow)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.app-layout{display:flex;height:100vh;overflow:hidden}.sidebar{width:280px;flex-shrink:0;background:var(--bg-deep);border-right:1px solid var(--border-subtle);display:flex;flex-direction:column;overflow:hidden}.sidebar-logo{padding:24px 20px 16px;font-size:1.3rem;font-weight:800;letter-spacing:-.03em}.sidebar-nav{flex:1;overflow-y:auto;padding:8px 12px}.sidebar-footer{padding:12px 16px;border-top:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:space-between}.nav-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius);cursor:pointer;transition:var(--transition);font-size:.85rem;color:var(--text-secondary);border:none;background:transparent;width:100%;text-align:left}.nav-item:hover{background:var(--bg-hover);color:var(--text-primary)}.nav-item.active{background:var(--bg-hover);color:var(--accent-purple);border-left:2px solid var(--accent-purple)}.history-preview{font-size:.78rem;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}.chat-area{flex:1;display:flex;flex-direction:column;overflow:hidden}.chat-header{padding:16px 24px;border-bottom:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:space-between}.messages-container{flex:1;overflow-y:auto;padding:24px;display:flex;flex-direction:column;gap:20px}.message-row{display:flex;gap:12px;max-width:780px}.message-row.user{align-self:flex-end;flex-direction:row-reverse}.message-avatar{width:32px;height:32px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700}.message-row.user .message-avatar{background:linear-gradient(135deg,var(--accent-pink),var(--accent-purple))}.message-row.assistant .message-avatar{background:var(--bg-card);border:1px solid var(--border-subtle);color:var(--accent-purple)}.message-bubble{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:14px 18px;font-size:.9rem;line-height:1.7;white-space:pre-wrap;word-break:break-word}.message-row.user .message-bubble{background:linear-gradient(135deg,#ff2d781f,#a855f71f);border-color:var(--border-active)}.message-footer{margin-top:8px;display:flex;align-items:center;gap:10px}.chat-input-bar{padding:16px 24px;border-top:1px solid var(--border-subtle);background:var(--bg-deep)}.chat-input-row{display:flex;gap:10px;align-items:flex-end}.chat-textarea{flex:1;resize:none;min-height:44px;max-height:160px;padding:10px 14px;background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius);color:var(--text-primary);font-family:var(--font);font-size:.9rem;outline:none;transition:var(--transition);line-height:1.5}.chat-textarea:focus{border-color:var(--accent-purple);box-shadow:0 0 0 2px var(--accent-purple-glow)}.send-btn{width:44px;height:44px;border-radius:var(--radius);background:linear-gradient(135deg,var(--accent-pink),var(--accent-purple));border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:var(--transition);flex-shrink:0;color:#fff;font-size:1.1rem}.send-btn:hover{box-shadow:0 0 20px var(--accent-pink-glow);transform:scale(1.05)}.send-btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.login-page{height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 30% 40%,rgba(168,85,247,.08) 0%,transparent 60%),radial-gradient(ellipse at 80% 60%,rgba(255,45,120,.06) 0%,transparent 60%),var(--bg-black)}.login-card{width:100%;max-width:420px;text-align:center}.login-logo{font-size:2.8rem;font-weight:900;letter-spacing:-.04em;margin-bottom:8px}.login-sub{color:var(--text-secondary);font-size:.95rem;margin-bottom:32px}.admin-page{flex:1;padding:32px;overflow-y:auto}.admin-page h2{margin-bottom:4px}.admin-page .subtitle{color:var(--text-secondary);font-size:.9rem;margin-bottom:28px}.job-table{width:100%;border-collapse:collapse;font-size:.85rem}.job-table th{text-align:left;color:var(--text-muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;padding:8px 12px;border-bottom:1px solid var(--border-subtle)}.job-table td{padding:10px 12px;border-bottom:1px solid rgba(168,85,247,.06);color:var(--text-secondary)}.job-table tr:hover td{background:var(--bg-hover)}@keyframes blink-cursor{0%,to{opacity:1}50%{opacity:0}}.cursor{display:inline-block;width:2px;height:1em;background:var(--accent-purple);animation:blink-cursor .8s step-end infinite;margin-left:2px;vertical-align:text-bottom}.spinner{width:18px;height:18px;border:2px solid var(--border-subtle);border-top-color:var(--accent-purple);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
