
:root{
  --bg0:#050814;
  --bg1:#070b18;
  --panel: rgba(255,255,255,.07);
  --panel2: rgba(255,255,255,.05);
  --stroke: rgba(255,255,255,.12);
  --stroke2: rgba(255,255,255,.08);
  --txt: rgba(255,255,255,.92);
  --mut: rgba(255,255,255,.65);

  --p1:#7c3aed;
  --p2:#22c55e;
  --p3:#06b6d4;
  --p4:#f97316;

  --r20:20px;
  --r14:14px;
  --shadow2: 0 10px 30px rgba(0,0,0,.35);

  --font: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Arial;
}

*{box-sizing:border-box; margin:0; padding:0}
html,body{height:100%; width:100%; overflow-x:hidden}
body{
  font-family:var(--font);
  color:var(--txt);
  background:
    radial-gradient(1200px 800px at 20% 10%, rgba(124,58,237,.25), transparent 55%),
    radial-gradient(900px 700px at 85% 20%, rgba(6,182,212,.18), transparent 55%),
    radial-gradient(1000px 700px at 50% 90%, rgba(34,197,94,.14), transparent 55%),
    linear-gradient(180deg, var(--bg0), var(--bg1));
  min-height:100vh;
}

/* background FX */
.bgfx{ position:fixed; inset:0; pointer-events:none; z-index:-1; }
.bgfx::before{
  content:"";
  position:absolute; inset:-40%;
  background: conic-gradient(from 180deg,
    rgba(124,58,237,.18),
    rgba(6,182,212,.14),
    rgba(34,197,94,.12),
    rgba(249,115,22,.12),
    rgba(124,58,237,.18)
  );
  filter: blur(48px);
  animation: spin 18s linear infinite;
  opacity:.7;
}
.blob{
  position:absolute;
  width:520px; height:520px;
  border-radius:999px;
  filter: blur(40px);
  opacity:.22;
  animation: floaty 10s ease-in-out infinite;
}
.blob.b1{left:-140px; top:-160px; background:radial-gradient(circle at 30% 30%, rgba(124,58,237,.9), transparent 60%)}
.blob.b2{right:-160px; top:120px; background:radial-gradient(circle at 30% 30%, rgba(6,182,212,.85), transparent 60%); animation-duration: 12s}
.blob.b3{left:20%; bottom:-220px; background:radial-gradient(circle at 30% 30%, rgba(34,197,94,.75), transparent 60%); animation-duration: 14s}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes floaty{
  0%,100%{ transform: translate3d(0,0,0) scale(1); }
  50%{ transform: translate3d(0,-22px,0) scale(1.02); }
}

a{ text-decoration:none; color:inherit; }

/* navbar */
.navbar{
  background: rgba(0,0,0,.20) !important;
  backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--stroke2) !important;
  padding: 0.75rem 1rem;
}
.brand-badge{ display:inline-flex; gap:8px; align-items:center; flex-wrap:wrap; }
.brand-dot{
  width:10px; height:10px; border-radius:999px;
  background: linear-gradient(90deg, var(--p1), var(--p3));
  box-shadow: 0 0 14px rgba(124,58,237,.7);
  flex-shrink:0;
}
.nav-btn{
  border: 1px solid rgba(255,255,255,.18) !important;
  background: rgba(255,255,255,.04) !important;
  transition: transform .18s ease, box-shadow .18s ease, background .18s ease;
  border-radius: 12px !important;
  padding: 0.375rem 0.75rem !important;
  font-size: 0.875rem !important;
}
.nav-btn:hover{
  transform: translateY(-1px);
  box-shadow: 0 10px 26px rgba(0,0,0,.25);
  background: rgba(255,255,255,.08) !important;
}

/* glass cards */
.card-glass{
  background: linear-gradient(180deg, var(--panel), var(--panel2));
  border: 1px solid var(--stroke);
  border-radius: var(--r20);
  box-shadow: var(--shadow2);
  backdrop-filter: blur(16px);
  position:relative;
  overflow:hidden;
  width:100%;
}
.card-glass > *{ position:relative; }
.soft-divider{ border-color: rgba(255,255,255,.10) !important; }

/* buttons */
.btn{ 
  border-radius: var(--r14) !important; 
  padding: 0.5rem 1rem !important;
  font-size: 0.875rem !important;
  min-height: 42px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  cursor:pointer;
  white-space:nowrap;
  border:none !important;
  transition: all 0.2s ease !important;
}
.btn-sm{ 
  padding: 0.25rem 0.5rem !important; 
  min-height: 32px;
  font-size: 0.8125rem !important;
}
.btn-primary{
  background: linear-gradient(90deg, var(--p1), var(--p3)) !important;
  color:white !important;
}
.btn-primary:hover{
  transform: translateY(-2px);
  box-shadow: 0 12px 30px rgba(124,58,237,.3);
}
.btn-outline-light{
  border: 1px solid rgba(255,255,255,.20) !important;
  background: rgba(255,255,255,.05) !important;
  color: white !important;
}
.btn-outline-light:hover{ 
  background: rgba(255,255,255,.10) !important;
  transform: translateY(-2px);
}
.btn-success{ 
  background: linear-gradient(90deg, rgba(34,197,94,.9), rgba(16,185,129,.9)) !important; 
  color:white !important; 
}
.btn-warning{ 
  background: linear-gradient(90deg, rgba(245,158,11,.95), rgba(249,115,22,.95)) !important; 
  color:white !important; 
}
.btn-danger{  
  background: linear-gradient(90deg, rgba(239,68,68,.95), rgba(244,63,94,.95)) !important; 
  color:white !important; 
}
.btn-info{    
  background: linear-gradient(90deg, rgba(6,182,212,.95), rgba(59,130,246,.95)) !important; 
  color:white !important; 
}
.btn:disabled{ opacity:0.5 !important; cursor:not-allowed !important; }

/* inputs */
.form-control, .form-select{
  background: rgba(255,255,255,.05) !important;
  border: 1px solid rgba(255,255,255,.14) !important;
  color: var(--txt) !important;
  border-radius: var(--r14) !important;
  padding: 0.75rem 1rem !important;
  font-size: 1rem !important;
  min-height: 48px;
  width:100%;
}
.form-control::placeholder{ color: rgba(255,255,255,.45) !important; }
.form-control:focus, .form-select:focus{
  box-shadow: 0 0 0 .20rem rgba(124,58,237,.18) !important;
  border-color: rgba(124,58,237,.40) !important;
  outline:none;
}

/* table */
.table{ 
  border-color: rgba(255,255,255,.10) !important; 
  width:100%;
  margin-bottom:0;
}
.table thead th{
  color: rgba(255,255,255,.78) !important;
  font-weight: 700; 
  letter-spacing:.2px;
  padding: 1rem !important;
  white-space:nowrap;
}
.table tbody td{
  padding: 0.75rem !important;
  vertical-align:middle;
}
.table-hover tbody tr:hover{ background: rgba(255,255,255,.06) !important; }

/* badges */
.badge{ 
  border-radius: 999px !important; 
  padding: .4em .8em !important;
  font-size: 0.75rem !important;
  font-weight: 600;
  display:inline-flex;
  align-items:center;
  gap:4px;
}
.badge.bg-success{ background: rgba(34,197,94,.18) !important; color: rgba(198,255,221,.95) !important; border:1px solid rgba(34,197,94,.35); }
.badge.bg-secondary{ background: rgba(148,163,184,.14) !important; border:1px solid rgba(148,163,184,.25); color:rgba(255,255,255,.85) !important; }

/* REAL-TIME LOG TERMINAL */
.realtime-terminal{
  background: #000 !important;
  border: 2px solid rgba(255,255,255,.15) !important;
  border-radius: 12px;
  padding: 1rem;
  color: #00ff00 !important;
  min-height: 500px;
  max-height: 600px;
  overflow-y: auto;
  font-family: 'Monaco', 'Menlo', 'Consolas', 'Courier New', monospace;
  font-size: 0.875rem;
  line-height:1.4;
  white-space: pre-wrap;
  word-break: break-word;
}
.realtime-terminal::-webkit-scrollbar{ height:10px; width:10px; }
.realtime-terminal::-webkit-scrollbar-thumb{ background: rgba(0,255,0,.3); border-radius: 10px; }
.realtime-terminal::-webkit-scrollbar-track{ background: rgba(0,0,0,.5); }

/* Connection status */
.connection-status {
  padding: 8px 12px;
  border-radius: 8px;
  font-size: 0.875rem;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.connection-status.connected {
  background: rgba(34,197,94,.15);
  color: rgba(198,255,221,.95);
  border: 1px solid rgba(34,197,94,.3);
}
.connection-status.disconnected {
  background: rgba(239,68,68,.15);
  color: rgba(255,198,198,.95);
  border: 1px solid rgba(239,68,68,.3);
}

/* toast */
.toast{
  background: rgba(10,14,30,.95) !important;
  color: rgba(255,255,255,.95) !important;
  border: 1px solid rgba(255,255,255,.14) !important;
  backdrop-filter: blur(16px);
  border-radius: 12px;
  box-shadow: 0 14px 40px rgba(0,0,0,.35);
  max-width: 350px;
  width:100%;
}

/* Modal fixes */
.modal{ z-index: 9999 !important; }
.modal-backdrop{ z-index: 9998 !important; }
.modal-content{
  background:rgba(10,14,30,.95) !important;
  border:1px solid rgba(255,255,255,.14) !important;
  backdrop-filter: blur(16px) !important;
  border-radius:18px !important;
}
.modal-header{
  border-bottom:1px solid rgba(255,255,255,.10) !important;
  padding: 1.25rem 1.5rem !important;
}
.modal-body{
  padding: 1.5rem !important;
}
.modal-footer{
  border-top:1px solid rgba(255,255,255,.10) !important;
  padding: 1.25rem 1.5rem !important;
}
.btn-close{ 
  filter: invert(1) brightness(2) !important; 
  opacity: 0.8 !important;
}

/* Mobile fixes */
@media (max-width: 768px) {
  .container{ padding-left: 1rem !important; padding-right: 1rem !important; }
  .navbar .container{ gap: 0.5rem !important; }
  .btn{ padding: 0.5rem 0.75rem !important; font-size: 0.8125rem !important; min-height: 40px; }
  .card-glass{ border-radius: 16px; }
  .table-responsive{ 
    border: 1px solid rgba(255,255,255,.1); 
    border-radius: 12px; 
    overflow: hidden; 
  }
  .table thead th, 
  .table tbody td{ 
    padding: 0.5rem !important; 
    font-size: 0.8125rem; 
  }
  .realtime-terminal{ 
    min-height: 400px; 
    max-height: 500px; 
    font-size: 0.75rem; 
    padding: 0.75rem; 
  }
}

@media (max-width: 576px) {
  .navbar .container{ flex-direction: column !important; align-items: stretch !important; gap: 0.75rem !important; }
  .navbar-brand{ margin-bottom: 0.5rem; }
  .realtime-terminal{ min-height: 350px; max-height: 450px; }
  .table{ font-size: 0.75rem; }
  .modal-dialog{ margin: 0.5rem !important; }
  .modal-content{ border-radius: 12px !important; }
  .form-control, .form-select{ padding: 0.625rem !important; font-size: 0.875rem !important; min-height: 44px; }
}

/* Action buttons in table */
.action-buttons{
  display:flex;
  gap:0.25rem;
  flex-wrap:wrap;
  justify-content:flex-end;
}
.action-buttons .btn{
  min-width: 36px;
  padding: 0.25rem !important;
}

/* Prevent text overflow */
.text-truncate{
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Card spacing */
.card-body{
  padding: 1.5rem !important;
}
@media (max-width: 768px){
  .card-body{ padding: 1rem !important; }
}

@media (prefers-reduced-motion: reduce){
  *{ animation: none !important; transition: none !important; }
  .bgfx::before{ animation:none !important; }
}
