@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap";@import "https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&display=swap";:root{--bg-dark:#0a0e1a;--bg-darker:#0d1117;--glass-bg:#0f172ab3;--glass-border:#38bdf81a;--primary-start:#06b6d4;--primary-end:#3b82f6;--success:#10b981;--error:#ef4444;--warning:#f59e0b;--text-main:#f8fafc;--text-muted:#94a3b8}*{box-sizing:border-box;margin:0;padding:0}body{background:radial-gradient(circle at top right, var(--bg-dark), var(--bg-darker) 70%);color:var(--text-main);min-height:100vh;font-family:Inter,sans-serif;line-height:1.5}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#0003}::-webkit-scrollbar-thumb{background:#38bdf84d;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#38bdf899}.glass-panel{background:var(--glass-bg);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);border-radius:16px;transition:all .3s}.glass-panel:hover{border-color:#38bdf84d;box-shadow:0 0 20px #06b6d426}h1,h2,h3,h4,h5,h6{letter-spacing:-.02em;font-weight:600}.gradient-text{background:linear-gradient(to right, var(--primary-start), var(--primary-end));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.btn{cursor:pointer;color:#fff;border:none;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:10px 20px;font-size:.95rem;font-weight:500;transition:all .3s;display:inline-flex}.btn-primary{background:linear-gradient(135deg, var(--primary-start), var(--primary-end));box-shadow:0 4px 15px #06b6d433}.btn-primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 0 20px #06b6d466}.btn-primary:disabled{opacity:.6;cursor:not-allowed;transform:none}.btn-glass{color:var(--text-main);background:#ffffff0d;border:1px solid #ffffff1a}.btn-glass:hover:not(:disabled){background:#ffffff1a;border-color:#38bdf84d}.btn-danger{color:var(--error);background:#ef44441a;border:1px solid #ef44444d}.btn-danger:hover{background:#ef444433;box-shadow:0 0 15px #ef44444d}.app-container{min-height:100vh;display:flex}.main-content{flex:1;margin-left:260px;padding:2rem;transition:padding .3s}.grid{gap:1.5rem;display:grid}.grid-cols-2{grid-template-columns:repeat(2,1fr)}.grid-cols-4{grid-template-columns:repeat(4,1fr)}@media (width<=1024px){.grid-cols-4{grid-template-columns:repeat(2,1fr)}.main-content{margin-left:80px}}@media (width<=768px){.grid-cols-2,.grid-cols-4{grid-template-columns:1fr}.main-content{margin-left:0;padding:1rem 1rem 80px}}@keyframes pulse-ring{0%{transform:scale(.8);box-shadow:0 0 #10b981b3}70%{transform:scale(1);box-shadow:0 0 0 10px #10b98100}to{transform:scale(.8);box-shadow:0 0 #10b98100}}@keyframes pulse-ring-error{0%{transform:scale(.8);box-shadow:0 0 #ef4444b3}70%{transform:scale(1);box-shadow:0 0 0 10px #ef444400}to{transform:scale(.8);box-shadow:0 0 #ef444400}}.status-dot{border-radius:50%;width:10px;height:10px;display:inline-block}.status-dot.connected{background-color:var(--success);animation:2s infinite pulse-ring}.status-dot.error{background-color:var(--error);animation:2s infinite pulse-ring-error}.input-field{color:#fff;background:#0003;border:1px solid #ffffff1a;border-radius:8px;width:100%;padding:12px 16px;font-family:inherit;font-size:1rem;transition:all .3s}.input-field:focus{border-color:var(--primary-start);outline:none;box-shadow:0 0 10px #06b6d433}.label{color:var(--text-muted);margin-bottom:8px;font-size:.9rem;font-weight:500;display:block}.table-container{width:100%;overflow-x:auto}.table{border-collapse:collapse;width:100%}.table th,.table td{text-align:left;border-bottom:1px solid #ffffff0d;padding:12px 16px}.table th{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.85rem;font-weight:500}.table tr{transition:background-color .2s}.table tr:hover{background-color:#ffffff05}.modal-overlay{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:1000;opacity:0;visibility:hidden;background:#0009;justify-content:center;align-items:center;transition:all .3s;display:flex;position:fixed;inset:0}.modal-overlay.open{opacity:1;visibility:visible}.modal-content{width:100%;max-width:500px;transition:all .3s;transform:translateY(20px)scale(.95)}.modal-overlay.open .modal-content{transform:translateY(0)scale(1)}.toast-container{z-index:9999;flex-direction:column;gap:12px;display:flex;position:fixed;bottom:24px;right:24px}.toast{color:#fff;border-radius:8px;align-items:center;gap:12px;padding:12px 20px;font-weight:500;animation:.3s forwards slideIn;display:flex;box-shadow:0 4px 12px #0003}.toast.success{border:1px solid var(--success);background:#10b981e6}.toast.error{border:1px solid var(--error);background:#ef4444e6}.toast.info{border:1px solid var(--primary-end);background:#3b82f6e6}@keyframes slideIn{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.switch{width:48px;height:24px;display:inline-block;position:relative}.switch input{opacity:0;width:0;height:0}.slider{cursor:pointer;background-color:#ffffff1a;border-radius:24px;transition:all .4s;position:absolute;inset:0}.slider:before{content:"";background-color:#fff;border-radius:50%;width:18px;height:18px;transition:all .4s;position:absolute;bottom:3px;left:3px}input:checked+.slider{background-image:linear-gradient(to right, var(--primary-start), var(--primary-end))}input:checked+.slider:before{transform:translate(24px)}.progress-bar{background-size:200% 100%;animation:2s linear infinite gradient-shift}@keyframes gradient-shift{0%{background-position:100% 0}to{background-position:-100% 0}}.progress-circle circle:last-child{stroke-linecap:round;filter:drop-shadow(0 0 4px var(--primary-start))}@keyframes pulse-glow{0%{box-shadow:0 0 15px #06b6d433}50%{box-shadow:0 0 30px #06b6d480}to{box-shadow:0 0 15px #06b6d433}}.pulse-glow{border:1px solid #06b6d44d;animation:3s infinite pulse-glow}.live-progress-overlay{-webkit-backdrop-filter:blur(16px);background:#0a0e1ad9;border:1px solid #38bdf833}.progress-item{animation:.4s ease-out forwards slideInBottom}@keyframes slideInBottom{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.typing-animation{border-right:.15em solid var(--primary-start);white-space:nowrap;letter-spacing:.05em;margin:0 auto;animation:3.5s steps(40,end) typing,.75s step-end infinite blink-caret;overflow:hidden}@keyframes typing{0%{width:0}to{width:100%}}@keyframes blink-caret{0%,to{border-color:#0000}50%{border-color:var(--primary-start)}}
