/* ===== Weavers Platform :: animated UI ===== */
* { -webkit-font-smoothing: antialiased; }
body { font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; }

/* ---- glassmorphism ---- */
.glass{
  background: rgba(255,255,255,0.06);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  border: 1px solid rgba(255,255,255,0.12);
}

/* ---- animated background blobs ---- */
.blob{ position:absolute; width:420px; height:420px; border-radius:50%;
  filter: blur(90px); opacity:.55; }
.blob-1{ top:-120px; left:-100px; animation: float1 14s ease-in-out infinite; }
.blob-2{ bottom:-140px; right:-120px; animation: float2 18s ease-in-out infinite; }
.blob-3{ top:40%; left:50%; width:300px; height:300px; opacity:.35;
  animation: float3 20s ease-in-out infinite; }
@keyframes float1{ 0%,100%{transform:translate(0,0) scale(1)} 50%{transform:translate(60px,40px) scale(1.15)} }
@keyframes float2{ 0%,100%{transform:translate(0,0) scale(1)} 50%{transform:translate(-50px,-40px) scale(1.1)} }
@keyframes float3{ 0%,100%{transform:translate(-50%,0) scale(1)} 50%{transform:translate(-40%,-30px) scale(1.2)} }

/* ---- entrance ---- */
.animate-rise{ animation: rise .7s cubic-bezier(.2,.8,.2,1) both; }
@keyframes rise{ from{opacity:0; transform:translateY(24px) scale(.98)} to{opacity:1; transform:none} }
.animate-shake{ animation: shake .4s; }
@keyframes shake{ 0%,100%{transform:translateX(0)} 25%{transform:translateX(-6px)} 75%{transform:translateX(6px)} }

/* ---- logo orb ---- */
.logo-orb{ width:64px; height:64px; border-radius:20px; display:flex; align-items:center;
  justify-content:center; box-shadow:0 8px 30px rgba(0,0,0,.4); animation: pulseOrb 3s ease-in-out infinite; }
@keyframes pulseOrb{ 0%,100%{transform:scale(1)} 50%{transform:scale(1.06)} }

/* ---- floating-label inputs ---- */
.input-wrap{ position:relative; }
.input-wrap input, .input-wrap textarea{
  width:100%; padding:14px 14px 14px 14px; border-radius:14px;
  background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.14);
  color:#fff; outline:none; transition:.2s; font:inherit; resize:vertical;
}
.input-wrap input:focus, .input-wrap textarea:focus{ border-color:var(--secondary); box-shadow:0 0 0 3px color-mix(in srgb,var(--secondary) 25%,transparent); }
.input-wrap label{
  position:absolute; left:14px; top:14px; color:#94a3b8; pointer-events:none; transition:.18s;
}
.input-wrap input:focus + label,
.input-wrap input:not(:placeholder-shown) + label,
.input-wrap textarea:focus + label,
.input-wrap textarea:not(:placeholder-shown) + label{
  top:-9px; left:10px; font-size:11px; background:#0f172a; padding:0 6px; color:var(--secondary);
}

/* ---- buttons ---- */
.btn-primary{
  padding:13px; border-radius:14px; font-weight:600; color:#fff; border:none; cursor:pointer;
  background:linear-gradient(135deg,var(--primary),var(--secondary));
  background-size:200% 200%; transition:.3s; box-shadow:0 8px 24px rgba(0,0,0,.35);
}
.btn-primary:hover{ background-position:100% 0; transform:translateY(-1px); }

/* ---- dashboard shell ---- */
.sidebar-link{ display:flex; gap:10px; align-items:center; padding:10px 14px; border-radius:12px;
  color:#cbd5e1; transition:.15s; }
.sidebar-link:hover{ background:rgba(255,255,255,.06); color:#fff; }
.sidebar-link.active{ background:linear-gradient(135deg,var(--primary),var(--secondary)); color:#fff; }

.stat-card{ background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.08);
  border-radius:18px; padding:20px; transition:.2s; }
.stat-card:hover{ transform:translateY(-3px); border-color:var(--secondary); }

.card{ background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.08); border-radius:18px; }
table th{ text-align:left; font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:#94a3b8; }
table td{ padding:10px 12px; border-top:1px solid rgba(255,255,255,.06); }
.badge{ padding:2px 10px; border-radius:999px; font-size:11px; font-weight:600; }
