:root{
  --p:#0a84ff;--p-ink:#ffffff;
  --ok:#1f9d55;--warn:#b8860b;--err:#c0392b;--purple:#7c3aed;

  --bg:#ffffff;
  --surface:#f4f5f7;
  --surface-2:#ebedf0;
  --border:#d8dbe0;
  --border-2:#b9bec5;
  --txt:#0d0f12;
  --txt2:#525860;
  --txt3:#7a8189;

  --r-sm:10px;
  --r:14px;
  --r-lg:16px;
  --r-pill:999px;

  --ease-spring:cubic-bezier(.34,1.56,.64,1);
  --ease-out:cubic-bezier(.2,.8,.2,1);

  --font:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif;
  --mono:'JetBrains Mono',ui-monospace,monospace;
  color-scheme:light;
}

[data-theme="dark"]{
  --p:#4aa3ff;--p-ink:#06101a;
  --ok:#34c46b;--warn:#e0a800;--err:#ff6b60;--purple:#a78bfa;

  --bg:#0a0b0d;
  --surface:#14171a;
  --surface-2:#1b1f23;
  --border:#2a2f35;
  --border-2:#3a4047;
  --txt:#f2f4f6;
  --txt2:#a6adb5;
  --txt3:#7d858d;
  color-scheme:dark;
}

*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  font:400 16px/1.55 var(--font);
  background:var(--bg);color:var(--txt);
  letter-spacing:-.005em;-webkit-font-smoothing:antialiased;
  min-height:100vh;min-height:100dvh;overflow-x:hidden;
  transition:background-color .3s ease,color .3s ease;
}
body.modal-open{overflow:hidden;padding-right:var(--scrollbar-width,0);}
img,svg{display:block;max-width:100%;height:auto}
a{color:var(--p);text-decoration:none}
button{font:inherit}
a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid var(--p);outline-offset:2px;border-radius:6px}
.ic{width:20px;height:20px;display:inline-block;vertical-align:middle;flex-shrink:0;pointer-events:none}

/* Animasi Full */
.fade-in { animation: fadeIn .3s var(--ease-out) both; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } }
.reveal { opacity: 0; transform: translateY(12px); animation: revealUp .5s var(--ease-out) forwards; }
@keyframes revealUp { to { opacity: 1; transform: translateY(0); } }

.dashboard-layout{display:flex;min-height:100vh;min-height:100dvh;position:relative;z-index:1}

