/* cx-design v1.5.1 */
:root {

  --cx-gray-0:   #ffffff;
  --cx-gray-50:  #f8fafc;
  --cx-gray-100: #f1f5f9;
  --cx-gray-200: #e2e8f0;
  --cx-gray-300: #cbd5e1;
  --cx-gray-400: #94a3b8;
  --cx-gray-500: #64748b;
  --cx-gray-600: #475569;
  --cx-gray-700: #334155;
  --cx-gray-800: #1e293b;
  --cx-gray-900: #0f172a;
  --cx-gray-950: #020617;

  --cx-bg:            var(--cx-gray-50);
  --cx-surface:       var(--cx-gray-0);
  --cx-surface-2:     var(--cx-gray-100);
  --cx-border:        var(--cx-gray-200);
  --cx-border-strong: var(--cx-gray-300);
  --cx-text:          var(--cx-gray-900);
  --cx-text-2:        var(--cx-gray-600);
  --cx-text-3:        var(--cx-gray-500);
  --cx-overlay:       rgb(15 23 42 / .5);
  --cx-row-hover:     var(--cx-gray-50);
  --cx-row-sum:       var(--cx-gray-200);
  --cx-row-total:     var(--cx-gray-800);
  --cx-on-row-total:  var(--cx-gray-0);

  --cx-primary:       #2563eb;
  --cx-primary-rgb:   37, 99, 235;
  --cx-primary-hover: #1d4ed8;
  --cx-primary-soft:  #eff6ff;
  --cx-primary-text:  #1d4ed8;
  --cx-on-primary:    #ffffff;
  --cx-accent:        #0ea5e9;
  --cx-focus-ring:    rgb(37 99 235 / .35);

  --cx-success:      #15803d;  --cx-success-soft: #dcfce7;
  --cx-warning:      #b45309;  --cx-warning-soft: #fef3c7;
  --cx-danger:       #dc2626;  --cx-danger-soft:  #fee2e2;
  --cx-info:         #0369a1;  --cx-info-soft:    #e0f2fe;
  --cx-on-danger:    #ffffff;
  --cx-success-rgb: 21, 128, 61;
  --cx-warning-rgb: 180, 83, 9;
  --cx-danger-rgb:  220, 38, 38;
  --cx-info-rgb:    3, 105, 161;

  --cx-font-sans: "NanumSquareAc", "Apple SD Gothic Neo", "Malgun Gothic", system-ui, -apple-system, "Segoe UI", sans-serif;
  --cx-font-display: var(--cx-font-sans);
  --cx-font-mono: ui-monospace, "Cascadia Code", Consolas, "D2Coding", monospace;
  --cx-fs-xs:  0.75rem;
  --cx-fs-sm:  0.875rem;
  --cx-fs-md:  1rem;
  --cx-fs-lg:  1.125rem;
  --cx-fs-xl:  1.25rem;
  --cx-fs-2xl: 1.5rem;
  --cx-fs-3xl: 1.875rem;
  --cx-fs-4xl: 2.25rem;
  --cx-fw-regular:  400;
  --cx-fw-semibold: 700;
  --cx-fw-bold:     800;
  --cx-lh-tight: 1.3;
  --cx-lh-base:  1.6;
  --cx-lh-dense: 1.4;

  --cx-sp-1:  0.25rem;
  --cx-sp-2:  0.5rem;
  --cx-sp-3:  0.75rem;
  --cx-sp-4:  1rem;
  --cx-sp-5:  1.25rem;
  --cx-sp-6:  1.5rem;
  --cx-sp-8:  2rem;
  --cx-sp-10: 2.5rem;
  --cx-sp-12: 3rem;

  --cx-r-sm:   6px;
  --cx-r-md:   10px;
  --cx-r-lg:   14px;
  --cx-r-xl:   20px;
  --cx-r-full: 9999px;
  --cx-shadow-sm: 0 1px 2px rgb(15 23 42 / .06), 0 1px 3px rgb(15 23 42 / .08);
  --cx-shadow-md: 0 4px 12px rgb(15 23 42 / .10);
  --cx-shadow-lg: 0 16px 40px rgb(15 23 42 / .18);
  --cx-control-h:    44px;
  --cx-control-h-sm: 36px;
  --cx-border-w:     1px;

  --cx-container: 1200px;
  --cx-gutter:    16px;

  --cx-chrome:        var(--cx-gray-900);
  --cx-chrome-text:   var(--cx-gray-200);
  --cx-chrome-muted:  var(--cx-gray-400);
  --cx-chrome-hover:  rgb(255 255 255 / .08);
  --cx-chrome-active: #93c5fd;
  --cx-topbar-h:      48px;
  --cx-tabbar-h:      40px;

  --cx-dur-fast: 120ms;
  --cx-dur:      200ms;
  --cx-ease:     cubic-bezier(.2, 0, 0, 1);

  --cx-z-dropdown: 1000;
  --cx-z-sticky:   1020;
  --cx-z-overlay:  1040;
  --cx-z-modal:    1055;
  --cx-z-dialog:   1085;
  --cx-z-toast:    1090;
}

@media (min-width: 768px) {
  :root { --cx-gutter: 24px; }
}

[data-bs-theme="dark"] {
  --cx-bg:            var(--cx-gray-950);
  --cx-surface:       var(--cx-gray-900);
  --cx-surface-2:     var(--cx-gray-800);
  --cx-border:        var(--cx-gray-800);
  --cx-border-strong: var(--cx-gray-600);
  --cx-text:          var(--cx-gray-100);
  --cx-text-2:        var(--cx-gray-300);
  --cx-text-3:        var(--cx-gray-400);
  --cx-overlay:       rgb(2 6 23 / .7);
  --cx-row-hover:     rgb(255 255 255 / .03);
  --cx-row-sum:       var(--cx-gray-800);
  --cx-row-total:     var(--cx-gray-200);
  --cx-on-row-total:  var(--cx-gray-900);

  --cx-primary:       #60a5fa;
  --cx-primary-rgb:   96, 165, 250;
  --cx-primary-hover: #93c5fd;
  --cx-primary-soft:  rgb(96 165 250 / .14);
  --cx-primary-text:  #93c5fd;
  --cx-on-primary:    #0b1220;
  --cx-focus-ring:    rgb(96 165 250 / .45);

  --cx-success: #4ade80;  --cx-success-soft: rgb(74 222 128 / .14);
  --cx-warning: #fbbf24;  --cx-warning-soft: rgb(251 191 36 / .14);
  --cx-danger:  #f87171;  --cx-danger-soft:  rgb(248 113 113 / .14);
  --cx-info:    #38bdf8;  --cx-info-soft:    rgb(56 189 248 / .14);
  --cx-on-danger: #1a0606;
  --cx-success-rgb: 74, 222, 128;
  --cx-warning-rgb: 251, 191, 36;
  --cx-danger-rgb:  248, 113, 113;
  --cx-info-rgb:    56, 189, 248;

  --cx-shadow-sm: 0 1px 2px rgb(0 0 0 / .4);
  --cx-shadow-md: 0 4px 12px rgb(0 0 0 / .5);
  --cx-shadow-lg: 0 16px 40px rgb(0 0 0 / .6);
  color-scheme: dark;
}

html { color-scheme: light; }
body {
  margin: 0;
  background: var(--cx-bg);
  color: var(--cx-text);
  font-family: var(--cx-font-sans);
  font-size: var(--cx-fs-md);
  line-height: var(--cx-lh-base);
  word-break: keep-all;
  overflow-wrap: anywhere;
  -webkit-font-smoothing: antialiased;
}
:focus-visible { outline: 3px solid var(--cx-focus-ring); outline-offset: 2px; }

.cx-theme-toggle__icon::before { content: "☾"; font-size: 1.1em; line-height: 1; }
[data-bs-theme="dark"] .cx-theme-toggle__icon::before { content: "☀"; }

[data-bs-theme="dark"] .cx-only-light, :root:not([data-bs-theme="dark"]) .cx-only-dark { display: none !important; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
}
