:root{
  --bg:#000e57;
  --surface:#0F1119;
  --surface-raised:#161923;
  --surface-hover:#1C2030;
  --border:#1F2335;
  --border-soft:#1A1D2D;
  --text:#E4E6F0;
  --text-muted:#7C82A0;
  --text-dim:#4D5378;
  --primary:#6C5CE7;
  --primary-dim:#6C5CE71A;
  --primary-glow:0 0 24px #6C5CE755;
  --accent:#00D2D3;
  --accent-dim:#00D2D31A;
  --success:#00E676;
  --success-dim:#00E6761A;
  --danger:#FF5252;
  --danger-dim:#FF52521A;
  --warning:#FFD740;
  --warning-dim:#FFD7401A;
  --pink:#FD79A8;
  --pink-dim:#FD79A81A;
  --orange:#FDCB6E;
  --gradient-primary:linear-gradient(135deg,#6C5CE7,#A29BFE);
  --gradient-accent:linear-gradient(135deg,#00D2D3,#81ECEC);
  --gradient-warm:linear-gradient(135deg,#FD79A8,#FDCB6E);
  --gradient-card:linear-gradient(135deg,#161923,#1C2030);
  --shadow-sm:0 2px 8px rgba(0,0,0,.3);
  --shadow-md:0 4px 20px rgba(0,0,0,.4);
  --shadow-lg:0 8px 40px rgba(0,0,0,.5);
  --shadow-xl:0 12px 60px rgba(0,0,0,.6);
  --glow-primary:0 0 20px #6C5CE744;
  --glow-accent:0 0 20px #00D2D344;
  --radius-sm:6px;
  --radius-md:10px;
  --radius-lg:14px;
  --radius-xl:18px;
  --radius-2xl:24px;
  --transition-fast:120ms cubic-bezier(0.4,0,0.2,1);
  --transition-normal:220ms cubic-bezier(0.4,0,0.2,1);
  --transition-slow:350ms cubic-bezier(0.4,0,0.2,1);
  --font-display:'Space Grotesk',sans-serif;
  --font-body:'Inter',sans-serif;
  --font-mono:'JetBrains Mono',monospace;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;scroll-behavior:smooth;}
body{
  background:var(--bg);
  color:var(--text);
  font-family:var(--font-body);
  min-height:100vh;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
.font-display{font-family:var(--font-display);}
.font-mono{font-family:var(--font-mono);}
::-webkit-scrollbar{width:6px;height:6px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:#1F2335;border-radius:6px;}
::-webkit-scrollbar-thumb:hover{background:#2A3050;}
@media (prefers-reduced-motion: reduce){ *{animation:none !important;transition:none !important;} }

/* --- Animations --- */
.fade-in{animation:fadeIn .25s ease;}
@keyframes fadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
.scale-in{animation:scaleIn .3s cubic-bezier(0.34,1.56,0.64,1);}
@keyframes scaleIn{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}
.slide-up{animation:slideUp .3s ease;}
@keyframes slideUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
.module-enter{animation:slideUp .3s ease;}
.toast-in{animation:toastSlide .3s cubic-bezier(0.34,1.56,0.64,1);}
@keyframes toastSlide{from{opacity:0;transform:translateY(16px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}
.toast-out{animation:toastFade .2s ease forwards;}
@keyframes toastFade{to{opacity:0;transform:translateY(-8px) scale(.95)}}
.skeleton{background:linear-gradient(90deg,var(--surface-raised) 25%,var(--surface-hover) 50%,var(--surface-raised) 75%);background-size:200% 100%;animation:skeleton 1.5s ease infinite;border-radius:var(--radius-sm);}
@keyframes skeleton{0%{background-position:200% 0}to{background-position:-200% 0}}
.spin{animation:spin .6s linear infinite;}
@keyframes spin{to{transform:rotate(360deg)}}
.pulse-ring{animation:pulseRing 2s ease infinite;}
@keyframes pulseRing{0%,100%{opacity:1}50%{opacity:.5}}
.shimmer{position:relative;overflow:hidden;}
.shimmer::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.04),transparent);transform:translateX(-100%);animation:shimmer 3s ease infinite;}
@keyframes shimmer{to{transform:translateX(100%)}}
.stagger-1{animation-delay:0ms;}
.stagger-2{animation-delay:60ms;}
.stagger-3{animation-delay:120ms;}
.stagger-4{animation-delay:180ms;}
.confetti-piece{position:fixed;width:5px;height:5px;border-radius:1px;pointer-events:none;z-index:9999;animation:confettiFall 1.2s ease forwards;}
@keyframes confettiFall{0%{opacity:1;transform:translateY(0) rotate(0deg) scale(1)}100%{opacity:0;transform:translateY(250px) rotate(720deg) scale(.2)}}

/* --- Components --- */
.focus-ring:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm);}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary) !important;box-shadow:0 0 0 3px var(--primary-dim);}
input,select,textarea{font-family:inherit;}

.toggle-track{transition:all var(--transition-fast);}
.toggle-track:hover{filter:brightness(1.1);}
.toggle-thumb{transition:transform var(--transition-fast);}

.card{
  background:var(--surface);
  border:1px solid var(--border-soft);
  border-radius:var(--radius-lg);
  transition:all var(--transition-normal);
}
.card:hover{border-color:var(--border);}
.card-raised{
  background:var(--surface-raised);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  transition:all var(--transition-normal);
}
.card-raised:hover{border-color:var(--primary);box-shadow:var(--shadow-md);}
.card-gradient{
  background:var(--gradient-card);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  transition:all var(--transition-normal);
}
.card-gradient:hover{border-color:var(--primary);box-shadow:var(--glow-primary);}

.glass{
  background:rgba(15,17,25,.8);
  backdrop-filter:blur(20px) saturate(1.3);
  -webkit-backdrop-filter:blur(20px) saturate(1.3);
}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:8px 16px;border-radius:var(--radius-md);font-size:13px;font-weight:600;
  transition:all var(--transition-fast);cursor:pointer;border:none;
}
.btn:active:not(:disabled){transform:scale(.97);}
.btn:disabled{opacity:.5;cursor:not-allowed;}
.btn-primary{background:var(--gradient-primary);color:#fff;}
.btn-primary:hover:not(:disabled){box-shadow:var(--glow-primary);}
.btn-ghost{background:var(--surface-raised);color:var(--text-muted);border:1px solid var(--border);}
.btn-ghost:hover:not(:disabled){background:var(--surface-hover);color:var(--text);}

.badge{
  display:inline-flex;align-items:center;gap:4px;
  padding:2px 10px;border-radius:20px;font-size:11px;font-weight:600;
  font-family:var(--font-mono);letter-spacing:.3px;
}
.badge-success{background:var(--success-dim);color:var(--success);}
.badge-danger{background:var(--danger-dim);color:var(--danger);}
.badge-primary{background:var(--primary-dim);color:var(--primary);}
.badge-warning{background:var(--warning-dim);color:var(--warning);}
.badge-accent{background:var(--accent-dim);color:var(--accent);}

.input-base{
  background:var(--surface-raised);
  border:1px solid var(--border);
  color:var(--text);
  border-radius:var(--radius-md);
  padding:8px 12px;
  font-size:13px;
  transition:all var(--transition-fast);
}
.input-base:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-dim);}

.select-base{
  background:var(--surface-raised);
  border:1px solid var(--border);
  color:var(--text);
  border-radius:var(--radius-md);
  padding:8px 12px;
  font-size:13px;
  cursor:pointer;
  transition:all var(--transition-fast);
}
.select-base:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-dim);}

.kbd{
  display:inline-flex;align-items:center;justify-content:center;
  padding:2px 6px;border-radius:4px;font-size:10px;font-family:var(--font-mono);
  background:rgba(255,255,255,.05);border:1px solid var(--border);
  color:var(--text-dim);min-width:20px;
}

:root,[data-theme=dark]{
  --bg:#0b0c12;--bg-alt:#0f1018;
  --surface:#14161f;--surface-2:#1c1f2b;--surface-3:#242837;
  --border:#2a2e3d;--border-light:#1e2230;
  --text:#e8eaf0;--text-2:#989cb8;--text-3:#62678a;
  --primary:#5b6bf7;--primary-dim:rgba(91,107,247,.12);
  --green:#34d399;--green-dim:rgba(52,211,153,.12);
  --red:#f87171;--red-dim:rgba(248,113,113,.12);
  --amber:#fbbf24;--amber-dim:rgba(251,191,36,.12);
  --radius:12px;--radius-sm:8px;
}
[data-theme=light]{
  --bg:#f5f6fa;--bg-alt:#eef0f6;
  --surface:#ffffff;--surface-2:#f0f1f8;--surface-3:#e4e6f0;
  --border:#d1d5e0;--border-light:#e2e4ee;
  --text:#1a1c2e;--text-2:#5a5f7a;--text-3:#8b90a8;
  --primary:#5b6bf7;--primary-dim:rgba(91,107,247,.1);
  --green:#059669;--green-dim:rgba(5,150,105,.1);
  --red:#dc2626;--red-dim:rgba(220,38,38,.1);
  --amber:#d97706;--amber-dim:rgba(217,119,6,.1);
  --amber-dim:rgba(251,191,36,.12);
  --radius:12px;--radius-sm:8px;
}
*,::before,::after{
  box-sizing:border-box
}
html,body{
  margin:0;
  padding:0;
  height:100%
}
body{
  background:var(--bg);
  color:var(--text);
  font-family:'Inter',sans-serif;
  font-size:14px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased
}
.font-mono{
  font-family:'JetBrains Mono',monospace
}
::-webkit-scrollbar{
  width:5px;
  height:5px
}
::-webkit-scrollbar-track{
  background:transparent
}
::-webkit-scrollbar-thumb{
  background:var(--border);
  border-radius:3px
}
::-webkit-scrollbar-thumb:hover{
  background:var(--text-3)
}
input,select,textarea{
  font-family:inherit;
  font-size:13px;
  transition:border-color .15s,box-shadow .15s
}
input:focus,select:focus,textarea:focus{
  outline:none;
  border-color:var(--primary)!important;
  box-shadow:0 0 0 3px var(--primary-dim)!important
}
::placeholder{
  color:var(--text-3)
}
a{
  color:inherit;
  text-decoration:none
}
@keyframes fadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@keyframes scaleIn{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}
@keyframes slideUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
@keyframes toastIn{from{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes toastOut{to{opacity:0;transform:translateY(-6px) scale(.97)}}
@keyframes spin{to{transform:rotate(360deg)}}
.fade-in{animation:fadeIn .25s ease}.scale-in{animation:scaleIn .3s cubic-bezier(.34,1.56,.64,1)}.slide-up,.module-enter{animation:slideUp .3s ease}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 18px;border-radius:var(--radius-sm);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s;border:none;font-family:inherit;white-space:nowrap;}
.btn:hover{filter:brightness(1.1);transform:translateY(-1px)}.btn:active{transform:translateY(0) scale(.98)}.btn:disabled{opacity:.4;cursor:default;filter:none;transform:none}
.btn-primary{background:linear-gradient(135deg,#5b6bf7,#7c5cfc);color:#fff;box-shadow:0 2px 12px rgba(91,107,247,.3)}
.btn-ghost{background:var(--surface-2);color:var(--text-2);border:1px solid var(--border)}.btn-ghost:hover{background:var(--surface-3);color:var(--text)}
.card{background:var(--surface);border:1px solid var(--border-light);border-radius:var(--radius);transition:all .2s}.card:hover{border-color:var(--border);box-shadow:0 2px 16px rgba(0,0,0,.2)}
.badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:6px;font-size:10px;font-weight:700;letter-spacing:.4px;text-transform:uppercase}
.badge-green{background:var(--green-dim);color:var(--green)}.badge-red{background:var(--red-dim);color:var(--red)}.badge-primary{background:var(--primary-dim);color:var(--primary)}
input[type=text],input[type=number],select,textarea{background:var(--surface-2);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);padding:8px 12px}
select{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2362678a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:32px}
.toggle-track{transition:background .15s,box-shadow .15s;cursor:pointer}.toggle-thumb{transition:transform .15s}.toggle-track:hover{filter:brightness(1.08)}
.page{max-width:960px;margin:0 auto;padding:24px 28px}@media(max-width:640px){.page{padding:16px}}