@import "https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600&family=Outfit:wght@300;400;500;600;700&display=swap";:root{--bg-dark:#020617;--bg-card:#0f172ab3;--bg-input:#1e293bcc;--primary:#10b981;--primary-glow:#10b98180;--secondary:#3b82f6;--secondary-glow:#3b82f680;--text-main:#f8fafc;--text-muted:#94a3b8;--border-color:#ffffff1a}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-dark);color:var(--text-main);min-height:100vh;font-family:Outfit,sans-serif;position:relative;overflow-x:hidden}.orb-1{background:radial-gradient(circle, var(--primary-glow) 0%, transparent 60%);filter:blur(100px);z-index:-1;width:50vw;height:50vw;animation:20s infinite alternate floatOrb;position:absolute;top:-10%;left:-10%}.orb-2{background:radial-gradient(circle, var(--secondary-glow) 0%, transparent 60%);filter:blur(100px);z-index:-1;width:50vw;height:50vw;animation:25s infinite alternate floatOrb2;position:absolute;bottom:-10%;right:-10%}@keyframes floatOrb{0%{transform:translate(0)}to{transform:translate(20%,20%)}}@keyframes floatOrb2{0%{transform:translate(0)}to{transform:translate(-20%,-20%)}}.glass-panel{background:var(--bg-card);-webkit-backdrop-filter:blur(20px);border:1px solid var(--border-color);border-radius:24px;box-shadow:0 25px 50px -12px #00000080}.login-container{width:100%;min-height:100vh;display:flex}.login-left{flex-direction:column;flex:1;justify-content:center;padding:10%;display:flex;position:relative;overflow:hidden}.login-right{flex:1;justify-content:center;align-items:center;padding:40px;display:flex}.brand-title{background:linear-gradient(90deg,#10b981,#3b82f6);color:#0000;-webkit-background-clip:text;margin-bottom:20px;font-family:Fira Code,monospace;font-size:3rem;font-weight:700}.brand-desc{color:var(--text-muted);font-size:1.25rem;line-height:1.6}.login-form-box{width:100%;max-width:480px;padding:48px}.form-group{margin-bottom:24px}.form-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px;font-size:.875rem;font-weight:600;display:block}.input-row{gap:12px;display:flex}.input-style{background:var(--bg-input);border:1px solid var(--border-color);width:100%;color:var(--text-main);border-radius:12px;outline:none;padding:16px;font-family:Fira Code,monospace;font-size:1rem;transition:all .3s}.input-style:focus{border-color:var(--primary);background:#0f172ae6;box-shadow:0 0 0 4px #10b9811a}.btn-submit{background:var(--primary);color:#020617;cursor:pointer;width:100%;box-shadow:0 10px 20px -10px var(--primary);border:none;border-radius:12px;justify-content:center;align-items:center;gap:12px;margin-top:32px;padding:16px;font-family:Fira Code,monospace;font-size:1.125rem;font-weight:700;transition:all .3s;display:flex}.btn-submit:hover:not(:disabled){box-shadow:0 15px 25px -10px var(--primary);background:#059669;transform:translateY(-2px)}.btn-submit:disabled{color:#94a3b8;cursor:not-allowed;box-shadow:none;background:#334155}.dash-layout{max-width:1400px;min-height:100vh;margin:0 auto;padding:40px}.bento-grid{grid-template-columns:repeat(3,1fr);grid-auto-rows:minmax(200px,auto);gap:24px;margin-top:32px;display:grid}.bento-item{flex-direction:column;padding:32px;display:flex}.bento-wide{grid-column:span 2}.bento-tall{grid-row:span 2}.bento-title{color:var(--text-main);align-items:center;gap:12px;margin-bottom:24px;font-size:1.25rem;font-weight:600;display:flex}.status-indicator{border-radius:30px;align-items:center;gap:8px;padding:8px 16px;font-family:Fira Code,monospace;font-size:.875rem;font-weight:600;display:inline-flex}.status-active{color:var(--primary);background:#10b9811a;border:1px solid #10b98133}.status-error{color:#ef4444;background:#ef44441a;border:1px solid #ef444433}.terminal-box{background:#020617cc;border:1px solid #ffffff0d;border-radius:16px;flex-grow:1;max-height:400px;padding:24px;font-family:Fira Code,monospace;font-size:.9rem;overflow-y:auto}.log-line{color:var(--text-muted);margin-bottom:12px;line-height:1.5}.log-line.success{color:var(--primary)}.log-line.error{color:#ef4444}.log-line.warning{color:#f59e0b}.pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.spin{animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (width<=1024px){.login-container{flex-direction:column}.login-left{display:none}.bento-grid{grid-template-columns:1fr}.bento-wide,.bento-tall{grid-area:span 1/span 1}}
