@charset "UTF-8";
/*! modern-normalize v3.0.1 | MIT License | https://github.com/sindresorhus/modern-normalize */
/*
Document
========
*/
/**
Use a better box model (opinionated).
*/
*,
::before,
::after {
  box-sizing: border-box;
}

html {
  /* Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3) */
  font-family: system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
  line-height: 1.15; /* 1. Correct the line height in all browsers. */
  -webkit-text-size-adjust: 100%; /* 2. Prevent adjustments of font size after orientation changes in iOS. */
  tab-size: 4; /* 3. Use a more readable tab size (opinionated). */
}

/*
Sections
========
*/
body {
  margin: 0; /* Remove the margin in all browsers. */
}

/*
Text-level semantics
====================
*/
/**
Add the correct font weight in Chrome and Safari.
*/
b,
strong {
  font-weight: bolder;
}

/**
1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)
2. Correct the odd 'em' font sizing in all browsers.
*/
code,
kbd,
samp,
pre {
  font-family: ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; /* 1 */
  font-size: 1em; /* 2 */
}

/**
Add the correct font size in all browsers.
*/
small {
  font-size: 80%;
}

/**
Prevent 'sub' and 'sup' elements from affecting the line height in all browsers.
*/
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

/*
Tabular data
============
*/
/**
Correct table border color inheritance in Chrome and Safari. (https://issues.chromium.org/issues/40615503, https://bugs.webkit.org/show_bug.cgi?id=195016)
*/
table {
  text-indent: 0; /* 1 */
  border-color: inherit; /* 2 */
}

/*
Forms
=====
*/
/**
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
*/
button,
input,
optgroup,
select,
textarea {
  font-family: inherit; /* 1 */
  font-size: 100%; /* 1 */
  line-height: 1.15; /* 1 */
  margin: 0; /* 2 */
}

/**
Correct the inability to style clickable types in iOS and Safari.
*/
button,
[type=button],
[type=reset],
[type=submit] {
  -webkit-appearance: button;
}

/**
Remove the inner border and padding in Firefox.
*/
::-moz-focus-inner {
  border-style: none;
  padding: 0;
}

/**
Restore the focus styles unset by the previous rule.
*/
:-moz-focusring {
  outline: 1px dotted ButtonText;
}

/**
Remove the additional ':invalid' styles in Firefox.
See: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737
*/
:-moz-ui-invalid {
  box-shadow: none;
}

/**
Remove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.
*/
legend {
  padding: 0;
}

/**
Add the correct vertical alignment in Chrome and Firefox.
*/
progress {
  vertical-align: baseline;
}

/**
Correct the cursor style of increment and decrement buttons in Safari.
*/
::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
  height: auto;
}

/**
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/
[type=search] {
  -webkit-appearance: textfield; /* 1 */
  outline-offset: -2px; /* 2 */
}

/**
Remove the inner padding in Chrome and Safari on macOS.
*/
::-webkit-search-decoration {
  -webkit-appearance: none;
}

/**
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to 'inherit' in Safari.
*/
::-webkit-file-upload-button {
  -webkit-appearance: button; /* 1 */
  font: inherit; /* 2 */
}

/*
Interactive
===========
*/
/*
Add the correct display in Chrome and Safari.
*/
summary {
  display: list-item;
}

:root {
  --breakpoint-sm: 40em;
  --breakpoint-md: 48em;
  --breakpoint-lg: 64em;
  --breakpoint-xl: 80em;
  --breakpoint-xxl: 96em;
}

/**
 * INFO: This file is used to define the color tokens.
 * Custom https://shrtm.nu/pCac
 * Sass HSLA https://sass-lang.com/documentation/modules**/
:root {
  /* ----- Common Core Color ----- */
  --color-default: #0d5d8f;
  --color-moonstone: #31a9c7;
  --color-hotpink: #ff69b4;
  /* ----- Primary Variation ----- */
  --primary-h: 191;
  --primary-s: 47%;
  --primary-l: 53%;
  --primary-alpha: 100%;
  --color-primary: hsla(
    var(--primary-h),
    var(--primary-s),
    var(--primary-l),
    var(--primary-alpha)
  );
  --color-primary-light: hsla(
    var(--primary-h),
    var(--primary-s),
    calc(var(--primary-l) + 15%),
    var(--primary-alpha)
  );
  --color-primary-dark: hsla(
    var(--primary-h),
    var(--primary-s),
    calc(var(--primary-l) - 15%),
    var(--primary-alpha)
  );
  /* ----- Primary Variation ----- */
  /* ----- Secondary HSLA ---- */
  --secondary-h: 224;
  --secondary-s: 23%;
  --secondary-l: 44%;
  --secondary-alpha: 100%;
  --color-secondary: hsla(
    var(--secondary-h),
    var(--secondary-s),
    var(--secondary-l),
    var(--secondary-alpha)
  );
  --color-secondary-light: hsla(
    var(--secondary-h),
    var(--secondary-s),
    calc(var(--secondary-l) + 15%),
    var(--secondary-alpha)
  );
  --color-secondary-dark: hsla(
    var(--secondary-h),
    var(--secondary-s),
    calc(var(--secondary-l) - 15%),
    var(--secondary-alpha)
  );
  /* -----  Color Text ----- */
  --color-text: #4c5059;
  --color-text-p: #393d43;
  --color-text-secondary: #666;
  --color-text-a: #1867b5;
  --color-text-a-hover: #1976d2;
  --color-text-a-visited: #35206a;
  /* ----- Color BackGround ----- */
  --color-bg: #f9f9f9;
  --color-item-bg: #e8e8f1;
  --color-item-bg-light: #e8e8f1cc;
  --color-item-bg-dark: #5c5c63;
  --color-box: #fff;
  --color-bg-code: #f0f0f0;
  --color-bg-footer: #f9f9f9;
  --color-bg-strong: #fff996;
  --color-bg-btn: #1976d2;
  --color-bg-cancel: #92989f;
  /* ----- Color Function ----- */
  --color-accent: #d429e0;
  --color-accent-dark: #b923b9;
  --color-accent-light: #e858f0;
  --color-success: #00a859;
  --color-success-dark: #008c4e;
  --color-success-light: #00d9a6;
  --color-warning: #ebbb0c;
  --color-warning-dark: #d99e00;
  --color-warning-light: #f5e854;
  --color-danger: #e1323c;
  --color-danger-dark: #c82727;
  --color-danger-light: #f8a7a7;
  --color-info: #1ec2c2;
  --color-info-dark: #1a9fa2;
  --color-info-light: #4de5e5;
  /* ----- Origin Color ----- */
  --color-elegant: #48626f;
  --color-elegant-dark: #3c4a57;
  --color-elegant-light: #6c818c;
  --color-elegant-transparent: rgba(72, 98, 111, 0.5);
  --color-elegant-transparent-dark: rgba(60, 60, 63, 0.5);
  --color-elegant-transparent-light: rgba(108, 129, 140, 0.5);
  /* ----- Color Transparent ----- */
  --color-transparent: transparent;
  --color-initial: #fff;
  /* ----- Color Dark ----- */
  --color-black: #1d1d1d;
  --color-dark: #1d1d1d;
  --color-dark-dark: #0f0f0f;
  --color-dark-light: #2f2f2f;
  --color-dark-transparent: rgba(29, 29, 29, 0.5);
  --color-dark-transparent-light: rgba(47, 47, 47, 0.3);
  --color-dark-transparent-lighter: rgba(47, 47, 47, 0.1);
  --color-dark-transparent-dark: rgba(15, 15, 15, 0.5);
  --color-dark-transparent-darker: rgba(7, 7, 7, 0.7);
  /* ----- Color Light ----- */
  --color-white: white;
  --color-ghost: ghostwhite;
  --color-light: #f4f5f6;
  --color-light-dark: #d1d1d1;
  --color-light-light: #e1e1e1;
  --color-light-transparent: rgba(244, 245, 246, 0.5);
  --color-light-transparent-light: rgba(209, 209, 209, 0.7);
  --color-light-transparent-lighter: rgba(225, 225, 225, 0.85);
  /* ----- Gray ----- */
  --color-gray: #9ca8b3;
  --color-gray-dark: #606c76;
  --color-gray-light: #f4f5f6;
  --color-gray-transparent: rgba(148, 168, 179, 0.5);
  --color-gray-transparent-light: rgba(148, 168, 179, 0.3);
  --color-gray-transparent-lighter: rgba(148, 168, 179, 0.1);
  --color-gray-transparent-dark: rgba(148, 168, 179, 0.7);
  --color-gray-transparent-darker: rgba(148, 168, 179, 0.85);
  /* ----- Color Border ----- */
  --color-border: rgba(0, 0, 0, 0.2);
  --color-border-light: rgba(0, 0, 0, 0.1);
  --color-border-dark: rgba(0, 0, 0, 0.3);
  /* ----- Color Shadow Elevation ----- */
  --box-shadow: 0.1rem 0.2rem 1rem rgba(0, 0, 0, 0.08);
  --text-shadow: 0px 0px 2px var(--color-black);
  /* ----- Width Query ----- */
  --max-width: 1440px;
  --inner-width: 960px;
  /* ----- Font Family ---- */
  /* --font-sans: "Yu Gothic Medium", "游ゴシック Medium", YuGothic, "游ゴシック体", "ヒラギノ角ゴ ProN", "Hiragino Kaku Gothic ProN", "メイリオ", Meiryo, sans-serif; */
  /*
  --font-sans: Helvetica Neue, Arial, Hiragino Sans, Hiragino Kaku Gothic ProN, BIZ UDPGothic, Meiryo, sans-serif;
  --font-design: "Comfortaa", sans-serif;
  --font-mincho: serif;
  */
}

/* ================================================
   DARK MODE THEME
   ================================================ */
[data-theme=dark] {
  /* ----- Primary Variation (Dark Mode) ----- */
  /* Increase lightness for better visibility on dark backgrounds */
  --primary-l: 65%;
  --color-primary: hsla(
    var(--primary-h),
    var(--primary-s),
    var(--primary-l),
    var(--primary-alpha)
  );
  --color-primary-light: hsla(
    var(--primary-h),
    var(--primary-s),
    calc(var(--primary-l) + 15%),
    var(--primary-alpha)
  );
  --color-primary-dark: hsla(
    var(--primary-h),
    var(--primary-s),
    calc(var(--primary-l) - 15%),
    var(--primary-alpha)
  );
  /* ----- Secondary Variation (Dark Mode) ----- */
  --secondary-l: 60%;
  --color-secondary: hsla(
    var(--secondary-h),
    var(--secondary-s),
    var(--secondary-l),
    var(--secondary-alpha)
  );
  --color-secondary-light: hsla(
    var(--secondary-h),
    var(--secondary-s),
    calc(var(--secondary-l) + 15%),
    var(--secondary-alpha)
  );
  --color-secondary-dark: hsla(
    var(--secondary-h),
    var(--secondary-s),
    calc(var(--secondary-l) - 15%),
    var(--secondary-alpha)
  );
  /* ----- Text Colors (Dark Mode) ----- */
  --color-text: #e4e4e7;
  --color-text-p: #d4d4d8;
  --color-text-secondary: #a1a1aa;
  --color-text-a: #60a5fa;
  --color-text-a-hover: #93c5fd;
  --color-text-a-visited: #a78bfa;
  /* ----- Background Colors (Dark Mode) ----- */
  --color-bg: #0f0f0f;
  --color-item-bg: #1f1f23;
  --color-item-bg-light: #1f1f23cc;
  --color-item-bg-dark: #2a2a2e;
  --color-box: #18181b;
  --color-bg-code: #1e1e1e;
  --color-bg-footer: #0a0a0a;
  --color-bg-strong: #4a4a00;
  --color-bg-btn: #2563eb;
  --color-bg-cancel: #52525b;
  /* ----- Functional Colors (Dark Mode) ----- */
  /* Slightly desaturated and lighter for dark backgrounds */
  --color-accent: #e879f9;
  --color-accent-dark: #c026d3;
  --color-accent-light: #f0abfc;
  --color-success: #22c55e;
  --color-success-dark: #16a34a;
  --color-success-light: #4ade80;
  --color-warning: #fbbf24;
  --color-warning-dark: #f59e0b;
  --color-warning-light: #fde047;
  --color-danger: #ef4444;
  --color-danger-dark: #dc2626;
  --color-danger-light: #f87171;
  --color-info: #22d3ee;
  --color-info-dark: #06b6d4;
  --color-info-light: #67e8f9;
  /* ----- Elegant Color (Dark Mode) ----- */
  --color-elegant: #94a3b8;
  --color-elegant-dark: #64748b;
  --color-elegant-light: #cbd5e1;
  --color-elegant-transparent: rgba(148, 163, 184, 0.5);
  --color-elegant-transparent-dark: rgba(100, 116, 139, 0.5);
  --color-elegant-transparent-light: rgba(203, 213, 225, 0.5);
  /* ----- Dark & Light Colors (Dark Mode) ----- */
  /* Note: Keep semantic meaning - dark = dark colors, light = light colors */
  /* Do not invert these values in dark mode */
  /* ----- Gray (Dark Mode) ----- */
  --color-gray: #71717a;
  --color-gray-dark: #52525b;
  --color-gray-light: #3f3f46;
  --color-gray-transparent: rgba(113, 113, 122, 0.5);
  --color-gray-transparent-light: rgba(113, 113, 122, 0.3);
  --color-gray-transparent-lighter: rgba(113, 113, 122, 0.1);
  --color-gray-transparent-dark: rgba(113, 113, 122, 0.7);
  --color-gray-transparent-darker: rgba(113, 113, 122, 0.85);
  /* ----- Border Colors (Dark Mode) ----- */
  --color-border: rgba(255, 255, 255, 0.1);
  --color-border-light: rgba(255, 255, 255, 0.05);
  --color-border-dark: rgba(255, 255, 255, 0.2);
  /* ----- Shadow Elevation (Dark Mode) ----- */
  --box-shadow: 0.1rem 0.2rem 1rem rgba(0, 0, 0, 0.5);
  --text-shadow: 0px 0px 2px rgba(0, 0, 0, 0.8);
}

.container {
  padding: 1.5rem 2rem 1rem;
}

section.section,
.box,
.paper {
  margin: 1.5rem 2rem 1rem;
  padding: 1.5rem 2rem 1rem;
  background-color: white;
  box-shadow: var(--box-shadow);
}

.fit {
  max-width: fit-content;
  max-height: fit-content;
}

.space-pd {
  padding: 1.5rem 2rem 1rem;
}
.space-mg {
  margin: 1.5rem 2rem 1rem;
}

/* ----- Block ----- */
.w-100 {
  width: 100%;
}

.w-75 {
  width: 75%;
}

.w-50 {
  width: 50%;
}

.w-25 {
  width: 25%;
}

.max.mw-100 {
  max-width: 100%;
}
.max.mw-75 {
  max-width: 75%;
}
.max.mw-50 {
  max-width: 50%;
}
.max.mw-25 {
  max-width: 25%;
}
.max.mvw-100 {
  max-width: 100vw;
}
.max.mvw-75 {
  max-width: 75vw;
}
.max.mvw-50 {
  max-width: 50vw;
}
.max.mvw-25 {
  max-width: 25vw;
}
@media only screen and (max-width: 768px) {
  .max {
    max-width: 100% !important;
  }
}

/* ----- flex-box Mixin ----- */
/**
  * ======= Flex Box =======
  * Example:
  *   @include flex(center, center)
  *   @include flex(null, end, column, nowrap)
*/
/* ----- flex-box Class ----- */
.flex {
  display: flex;
  flex-wrap: wrap;
}
.flex.horizontal-grids > div:not(:first-child) {
  margin-left: 2rem;
}
.flex.vertical-grids > div:not(:first-child) {
  margin-top: 2rem;
}

.flex-row {
  flex-direction: row;
}

.flex-wrap {
  flex-wrap: wrap;
}

.flex-no-wrap {
  flex-wrap: nowrap;
}

.flex-column {
  flex-direction: column;
}

/* 子要素の左右反転 */
.flex-row-reverse {
  flex-direction: row-reverse;
}

.flex-center {
  align-items: center;
  justify-content: center;
}

.flex-ai-center {
  align-items: center;
}

.flex-jc-center {
  justify-content: center;
}

.flex-jc-between {
  justify-content: space-between;
}

.flex-jc-around {
  justify-content: space-around;
}

/* ----- flex MGM ----- */
html {
  font-size: 100%;
}

body {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  background-color: var(--color-bg);
  color: var(--color-text);
  letter-spacing: 0.01em;
  font: 14px "Inter", "Helvetica Neue", "Helvetica", "Arial", "Noto Sans JP", sans-serif;
  font-weight: 400;
  line-height: 1.5;
}

img {
  max-width: 100%;
}

a {
  text-decoration: none;
  color: var(--color-primary);
}
a:focus, a:hover {
  color: var(--color-secondary);
}

b,
strong {
  font-weight: 700;
}

.semibold {
  font-weight: 500;
}

p {
  margin-top: 0;
  margin-bottom: 0;
  line-height: 1.35;
}

h1,
h2,
h3,
h4,
h5,
h6,
.head-1,
.head-2,
.head-3,
.head-4,
.head-5,
.head-6 {
  margin-top: 0.4em;
  margin-bottom: 0.2em;
  letter-spacing: -0.1rem;
  font-weight: 500;
}
h1.mg-0,
h2.mg-0,
h3.mg-0,
h4.mg-0,
h5.mg-0,
h6.mg-0,
.head-1.mg-0,
.head-2.mg-0,
.head-3.mg-0,
.head-4.mg-0,
.head-5.mg-0,
.head-6.mg-0 {
  margin: 0;
}

h4,
h5,
h6,
.head-4,
.head-5,
.head-6 {
  margin-top: 0.25em;
}

h1,
.head-1 {
  font-size: clamp(2rem, 5vw + 1rem, 3.2rem);
  line-height: 1.2;
}

h2,
.head-2 {
  font-size: clamp(1.75rem, 4vw + 0.5rem, 2.4rem);
  line-height: 1.25;
}

h3,
.head-3 {
  font-size: clamp(1.5rem, 3vw + 0.5rem, 2rem);
  line-height: 1.3;
}

h4,
.head-4 {
  letter-spacing: -0.08rem;
  font-size: clamp(1.25rem, 2vw + 0.5rem, 1.4rem);
  line-height: 1.35;
}

h5,
.head-5 {
  letter-spacing: -0.05rem;
  font-size: clamp(1.1rem, 1.5vw + 0.5rem, 1.2rem);
  line-height: 1.5;
}

h6,
.head-6 {
  letter-spacing: 0;
  font-size: clamp(1rem, 1vw + 0.5rem, 1rem);
  line-height: 1.4;
}

/* ----jj

- デザインフォント ----- */
.design-font-en {
  font-family: "Poppins", sans-serif;
  letter-spacing: 0.02rem;
  color: var(--color-hotpink);
}

h1.design-font-en {
  width: fit-content;
  border-bottom: 1px dashed currentColor;
}

h1.design-font-en h2.design-font-en,
h1.design-font-en + div h2.design-font-en {
  margin-top: 0.25em;
  color: var(--color-info-dark);
}

/* ----- BlockQuote ---- */
blockquote {
  margin-right: 0;
  margin-left: 0;
  padding: 1em 1.5em;
  border-left: 0.3em solid var(--color-border);
  font-size: 0.95rem;
}

blockquote *:last-child {
  margin-bottom: 0;
}

hr {
  margin: 2rem 0;
  border: 0;
  border-top: 0.1rem solid var(--color-border-light);
}

.button,
button,
input[type=button],
input[type=reset],
input[type=submit] {
  position: relative;
  display: inline-block;
  height: var(--global-component-height);
  margin: 0.2rem 0.25rem;
  padding: 0 2rem;
  cursor: pointer;
  transition: background-color 0.25s, border-color 0.25s, color 0.25s;
  text-align: center;
  white-space: nowrap;
  text-decoration: none;
  letter-spacing: 0.1em;
  border-radius: var(--border-radius-all);
  font-size: 1.05rem;
  font-weight: 500;
  line-height: var(--global-component-line-height);
  color: var(--color-white);
  background-color: var(--color-primary);
  border: 1px solid var(--color-primary);
}
.button:focus, .button:hover,
button:focus,
button:hover,
input[type=button]:focus,
input[type=button]:hover,
input[type=reset]:focus,
input[type=reset]:hover,
input[type=submit]:focus,
input[type=submit]:hover {
  outline: 0;
  color: var(--color-white);
  background-color: var(--color-secondary);
  border: 1px solid var(--color-secondary);
}
.button.btn-secondary,
button.btn-secondary,
input[type=button].btn-secondary,
input[type=reset].btn-secondary,
input[type=submit].btn-secondary {
  color: var(--color-white);
  border: 1px solid var(--color-secondary);
  background-color: var(--color-secondary);
}
.button.btn-secondary:focus, .button.btn-secondary:hover,
button.btn-secondary:focus,
button.btn-secondary:hover,
input[type=button].btn-secondary:focus,
input[type=button].btn-secondary:hover,
input[type=reset].btn-secondary:focus,
input[type=reset].btn-secondary:hover,
input[type=submit].btn-secondary:focus,
input[type=submit].btn-secondary:hover {
  border-color: var(--color-secondary-dark);
  background-color: var(--color-secondary-dark);
}
.button.btn-accent,
button.btn-accent,
input[type=button].btn-accent,
input[type=reset].btn-accent,
input[type=submit].btn-accent {
  color: var(--color-white);
  border: 1px solid var(--color-accent);
  background-color: var(--color-accent);
}
.button.btn-accent:focus, .button.btn-accent:hover,
button.btn-accent:focus,
button.btn-accent:hover,
input[type=button].btn-accent:focus,
input[type=button].btn-accent:hover,
input[type=reset].btn-accent:focus,
input[type=reset].btn-accent:hover,
input[type=submit].btn-accent:focus,
input[type=submit].btn-accent:hover {
  border-color: var(--color-accent-dark);
  background-color: var(--color-accent-dark);
}
.button.btn-success,
button.btn-success,
input[type=button].btn-success,
input[type=reset].btn-success,
input[type=submit].btn-success {
  color: var(--color-white);
  border: 1px solid var(--color-success);
  background-color: var(--color-success);
}
.button.btn-success:focus, .button.btn-success:hover,
button.btn-success:focus,
button.btn-success:hover,
input[type=button].btn-success:focus,
input[type=button].btn-success:hover,
input[type=reset].btn-success:focus,
input[type=reset].btn-success:hover,
input[type=submit].btn-success:focus,
input[type=submit].btn-success:hover {
  border-color: var(--color-success-dark);
  background-color: var(--color-success-dark);
}
.button.btn-warning,
button.btn-warning,
input[type=button].btn-warning,
input[type=reset].btn-warning,
input[type=submit].btn-warning {
  color: var(--color-white);
  border: 1px solid var(--color-warning);
  background-color: var(--color-warning);
}
.button.btn-warning:focus, .button.btn-warning:hover,
button.btn-warning:focus,
button.btn-warning:hover,
input[type=button].btn-warning:focus,
input[type=button].btn-warning:hover,
input[type=reset].btn-warning:focus,
input[type=reset].btn-warning:hover,
input[type=submit].btn-warning:focus,
input[type=submit].btn-warning:hover {
  border-color: var(--color-warning-dark);
  background-color: var(--color-warning-dark);
}
.button.btn-danger,
button.btn-danger,
input[type=button].btn-danger,
input[type=reset].btn-danger,
input[type=submit].btn-danger {
  color: var(--color-white);
  border: 1px solid var(--color-danger);
  background-color: var(--color-danger);
}
.button.btn-danger:focus, .button.btn-danger:hover,
button.btn-danger:focus,
button.btn-danger:hover,
input[type=button].btn-danger:focus,
input[type=button].btn-danger:hover,
input[type=reset].btn-danger:focus,
input[type=reset].btn-danger:hover,
input[type=submit].btn-danger:focus,
input[type=submit].btn-danger:hover {
  border-color: var(--color-danger-dark);
  background-color: var(--color-danger-dark);
}
.button.btn-info,
button.btn-info,
input[type=button].btn-info,
input[type=reset].btn-info,
input[type=submit].btn-info {
  color: var(--color-white);
  border: 1px solid var(--color-info);
  background-color: var(--color-info);
}
.button.btn-info:focus, .button.btn-info:hover,
button.btn-info:focus,
button.btn-info:hover,
input[type=button].btn-info:focus,
input[type=button].btn-info:hover,
input[type=reset].btn-info:focus,
input[type=reset].btn-info:hover,
input[type=submit].btn-info:focus,
input[type=submit].btn-info:hover {
  border-color: var(--color-info-dark);
  background-color: var(--color-info-dark);
}
.button.btn-elegant,
button.btn-elegant,
input[type=button].btn-elegant,
input[type=reset].btn-elegant,
input[type=submit].btn-elegant {
  color: var(--color-white);
  border: 1px solid var(--color-elegant);
  background-color: var(--color-elegant);
}
.button.btn-elegant:focus, .button.btn-elegant:hover,
button.btn-elegant:focus,
button.btn-elegant:hover,
input[type=button].btn-elegant:focus,
input[type=button].btn-elegant:hover,
input[type=reset].btn-elegant:focus,
input[type=reset].btn-elegant:hover,
input[type=submit].btn-elegant:focus,
input[type=submit].btn-elegant:hover {
  border-color: var(--color-elegant-dark);
  background-color: var(--color-elegant-dark);
}
.button.btn-outline-secondary,
button.btn-outline-secondary,
input[type=button].btn-outline-secondary,
input[type=reset].btn-outline-secondary,
input[type=submit].btn-outline-secondary {
  color: var(--color-secondary);
  border: 1px solid var(--color-secondary);
  background-color: transparent;
}
.button.btn-outline-secondary:focus, .button.btn-outline-secondary:hover,
button.btn-outline-secondary:focus,
button.btn-outline-secondary:hover,
input[type=button].btn-outline-secondary:focus,
input[type=button].btn-outline-secondary:hover,
input[type=reset].btn-outline-secondary:focus,
input[type=reset].btn-outline-secondary:hover,
input[type=submit].btn-outline-secondary:focus,
input[type=submit].btn-outline-secondary:hover {
  color: var(--color-white);
  border-color: var(--color-secondary-dark);
  background-color: var(--color-secondary-dark);
}
.button.btn-outline-accent,
button.btn-outline-accent,
input[type=button].btn-outline-accent,
input[type=reset].btn-outline-accent,
input[type=submit].btn-outline-accent {
  color: var(--color-accent);
  border: 1px solid var(--color-accent);
  background-color: transparent;
}
.button.btn-outline-accent:focus, .button.btn-outline-accent:hover,
button.btn-outline-accent:focus,
button.btn-outline-accent:hover,
input[type=button].btn-outline-accent:focus,
input[type=button].btn-outline-accent:hover,
input[type=reset].btn-outline-accent:focus,
input[type=reset].btn-outline-accent:hover,
input[type=submit].btn-outline-accent:focus,
input[type=submit].btn-outline-accent:hover {
  color: var(--color-white);
  border-color: var(--color-accent-dark);
  background-color: var(--color-accent-dark);
}
.button.btn-outline-success,
button.btn-outline-success,
input[type=button].btn-outline-success,
input[type=reset].btn-outline-success,
input[type=submit].btn-outline-success {
  color: var(--color-success);
  border: 1px solid var(--color-success);
  background-color: transparent;
}
.button.btn-outline-success:focus, .button.btn-outline-success:hover,
button.btn-outline-success:focus,
button.btn-outline-success:hover,
input[type=button].btn-outline-success:focus,
input[type=button].btn-outline-success:hover,
input[type=reset].btn-outline-success:focus,
input[type=reset].btn-outline-success:hover,
input[type=submit].btn-outline-success:focus,
input[type=submit].btn-outline-success:hover {
  color: var(--color-white);
  border-color: var(--color-success-dark);
  background-color: var(--color-success-dark);
}
.button.btn-outline-warning,
button.btn-outline-warning,
input[type=button].btn-outline-warning,
input[type=reset].btn-outline-warning,
input[type=submit].btn-outline-warning {
  color: var(--color-warning);
  border: 1px solid var(--color-warning);
  background-color: transparent;
}
.button.btn-outline-warning:focus, .button.btn-outline-warning:hover,
button.btn-outline-warning:focus,
button.btn-outline-warning:hover,
input[type=button].btn-outline-warning:focus,
input[type=button].btn-outline-warning:hover,
input[type=reset].btn-outline-warning:focus,
input[type=reset].btn-outline-warning:hover,
input[type=submit].btn-outline-warning:focus,
input[type=submit].btn-outline-warning:hover {
  color: var(--color-white);
  border-color: var(--color-warning-dark);
  background-color: var(--color-warning-dark);
}
.button.btn-outline-danger,
button.btn-outline-danger,
input[type=button].btn-outline-danger,
input[type=reset].btn-outline-danger,
input[type=submit].btn-outline-danger {
  color: var(--color-danger);
  border: 1px solid var(--color-danger);
  background-color: transparent;
}
.button.btn-outline-danger:focus, .button.btn-outline-danger:hover,
button.btn-outline-danger:focus,
button.btn-outline-danger:hover,
input[type=button].btn-outline-danger:focus,
input[type=button].btn-outline-danger:hover,
input[type=reset].btn-outline-danger:focus,
input[type=reset].btn-outline-danger:hover,
input[type=submit].btn-outline-danger:focus,
input[type=submit].btn-outline-danger:hover {
  color: var(--color-white);
  border-color: var(--color-danger-dark);
  background-color: var(--color-danger-dark);
}
.button.btn-outline-info,
button.btn-outline-info,
input[type=button].btn-outline-info,
input[type=reset].btn-outline-info,
input[type=submit].btn-outline-info {
  color: var(--color-info);
  border: 1px solid var(--color-info);
  background-color: transparent;
}
.button.btn-outline-info:focus, .button.btn-outline-info:hover,
button.btn-outline-info:focus,
button.btn-outline-info:hover,
input[type=button].btn-outline-info:focus,
input[type=button].btn-outline-info:hover,
input[type=reset].btn-outline-info:focus,
input[type=reset].btn-outline-info:hover,
input[type=submit].btn-outline-info:focus,
input[type=submit].btn-outline-info:hover {
  color: var(--color-white);
  border-color: var(--color-info-dark);
  background-color: var(--color-info-dark);
}
.button.btn-outline-elegant,
button.btn-outline-elegant,
input[type=button].btn-outline-elegant,
input[type=reset].btn-outline-elegant,
input[type=submit].btn-outline-elegant {
  color: var(--color-elegant);
  border: 1px solid var(--color-elegant);
  background-color: transparent;
}
.button.btn-outline-elegant:focus, .button.btn-outline-elegant:hover,
button.btn-outline-elegant:focus,
button.btn-outline-elegant:hover,
input[type=button].btn-outline-elegant:focus,
input[type=button].btn-outline-elegant:hover,
input[type=reset].btn-outline-elegant:focus,
input[type=reset].btn-outline-elegant:hover,
input[type=submit].btn-outline-elegant:focus,
input[type=submit].btn-outline-elegant:hover {
  color: var(--color-white);
  border-color: var(--color-elegant-dark);
  background-color: var(--color-elegant-dark);
}
.button.btn-outline-light,
button.btn-outline-light,
input[type=button].btn-outline-light,
input[type=reset].btn-outline-light,
input[type=submit].btn-outline-light {
  background: transparent;
  color: white;
  border: 2px solid white;
}
.button.btn-outline-light:hover,
button.btn-outline-light:hover,
input[type=button].btn-outline-light:hover,
input[type=reset].btn-outline-light:hover,
input[type=submit].btn-outline-light:hover {
  background: rgba(255, 255, 255, 0.1);
}
.button.btn-outline-light:focus,
button.btn-outline-light:focus,
input[type=button].btn-outline-light:focus,
input[type=reset].btn-outline-light:focus,
input[type=submit].btn-outline-light:focus {
  box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.3);
}
.button[disabled],
button[disabled],
input[type=button][disabled],
input[type=reset][disabled],
input[type=submit][disabled] {
  cursor: default;
  opacity: 0.5;
}
.button[disabled]:focus, .button[disabled]:hover,
button[disabled]:focus,
button[disabled]:hover,
input[type=button][disabled]:focus,
input[type=button][disabled]:hover,
input[type=reset][disabled]:focus,
input[type=reset][disabled]:hover,
input[type=submit][disabled]:focus,
input[type=submit][disabled]:hover {
  border-color: var(--color-primary);
  background-color: var(--color-primary);
}
.button.button-outline,
button.button-outline,
input[type=button].button-outline,
input[type=reset].button-outline,
input[type=submit].button-outline {
  color: var(--color-primary);
  background-color: transparent;
}
.button.button-outline:focus, .button.button-outline:hover,
button.button-outline:focus,
button.button-outline:hover,
input[type=button].button-outline:focus,
input[type=button].button-outline:hover,
input[type=reset].button-outline:focus,
input[type=reset].button-outline:hover,
input[type=submit].button-outline:focus,
input[type=submit].button-outline:hover {
  color: var(--color-secondary);
  border-color: var(--color-secondary);
  background-color: transparent;
}
.button.button-outline[disabled]:focus, .button.button-outline[disabled]:hover,
button.button-outline[disabled]:focus,
button.button-outline[disabled]:hover,
input[type=button].button-outline[disabled]:focus,
input[type=button].button-outline[disabled]:hover,
input[type=reset].button-outline[disabled]:focus,
input[type=reset].button-outline[disabled]:hover,
input[type=submit].button-outline[disabled]:focus,
input[type=submit].button-outline[disabled]:hover {
  color: var(--color-primary);
  border-color: inherit;
}
.button.button-cancel,
button.button-cancel,
input[type=button].button-cancel,
input[type=reset].button-cancel,
input[type=submit].button-cancel {
  color: var(--color-white);
  border-color: transparent;
  background-color: var(--color-bg-cancel);
}
.button.button-cancel:focus, .button.button-cancel:hover,
button.button-cancel:focus,
button.button-cancel:hover,
input[type=button].button-cancel:focus,
input[type=button].button-cancel:hover,
input[type=reset].button-cancel:focus,
input[type=reset].button-cancel:hover,
input[type=submit].button-cancel:focus,
input[type=submit].button-cancel:hover {
  border-color: transparent;
  background-color: var(--color-secondary);
}
.button.button-cancel[disabled]:focus, .button.button-cancel[disabled]:hover,
button.button-cancel[disabled]:focus,
button.button-cancel[disabled]:hover,
input[type=button].button-cancel[disabled]:focus,
input[type=button].button-cancel[disabled]:hover,
input[type=reset].button-cancel[disabled]:focus,
input[type=reset].button-cancel[disabled]:hover,
input[type=submit].button-cancel[disabled]:focus,
input[type=submit].button-cancel[disabled]:hover {
  color: var(--color-white);
  background-color: var(--color-bg-cancel);
}
.button.button-clear,
button.button-clear,
input[type=button].button-clear,
input[type=reset].button-clear,
input[type=submit].button-clear {
  color: var(--color-primary);
  background-color: transparent;
  box-shadow: none;
}
.button.button-clear:focus, .button.button-clear:hover,
button.button-clear:focus,
button.button-clear:hover,
input[type=button].button-clear:focus,
input[type=button].button-clear:hover,
input[type=reset].button-clear:focus,
input[type=reset].button-clear:hover,
input[type=submit].button-clear:focus,
input[type=submit].button-clear:hover {
  color: var(--color-secondary);
  border-color: var(--color-secondary);
  background-color: transparent;
}
.button.button-clear[disabled]:focus, .button.button-clear[disabled]:hover,
button.button-clear[disabled]:focus,
button.button-clear[disabled]:hover,
input[type=button].button-clear[disabled]:focus,
input[type=button].button-clear[disabled]:hover,
input[type=reset].button-clear[disabled]:focus,
input[type=reset].button-clear[disabled]:hover,
input[type=submit].button-clear[disabled]:focus,
input[type=submit].button-clear[disabled]:hover {
  color: var(--color-primary);
}

*:focus:not(:focus-visible) {
  outline: none;
}

*:focus-visible {
  outline: 2px solid var(--color-primary, #31a9c7);
  outline-offset: 2px;
  border-radius: 2px;
}

button:focus-visible,
[type=button]:focus-visible,
[type=reset]:focus-visible,
[type=submit]:focus-visible {
  outline: 2px solid var(--color-primary, #31a9c7);
  outline-offset: 2px;
}

a:focus-visible {
  outline: 2px solid var(--color-primary, #31a9c7);
  outline-offset: 2px;
  border-radius: 2px;
}

input:focus-visible,
textarea:focus-visible,
select:focus-visible {
  outline: 2px solid var(--color-primary, #31a9c7);
  outline-offset: 0;
  border-color: var(--color-primary, #31a9c7);
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}
@media (prefers-reduced-motion: no-preference) {
  html {
    scroll-behavior: smooth;
  }
}
@media (prefers-contrast: high) {
  button,
  [type=button],
  [type=reset],
  [type=submit] {
    border: 2px solid currentColor;
  }
  a {
    text-decoration: underline;
  }
}
.skip-link {
  position: absolute;
  top: -40px;
  left: 0;
  background: var(--color-primary, #31a9c7);
  color: white;
  padding: 8px 16px;
  text-decoration: none;
  border-radius: 0 0 4px 0;
  z-index: 100;
}
.skip-link:focus {
  top: 0;
}

.touch-target {
  min-width: 44px;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.focus-trap {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 1000;
}

.visually-hidden {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.not-visually-hidden {
  position: static !important;
  width: auto !important;
  height: auto !important;
  padding: 0 !important;
  margin: 0 !important;
  overflow: visible !important;
  clip: auto !important;
  white-space: normal !important;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) {
    --color-bg: #1a1a1a;
    --color-text: #f0f0f0;
    --color-bg-secondary: #2d2d2d;
    --color-border: #404040;
  }
}
@media (forced-colors: active) {
  * {
    forced-color-adjust: auto;
  }
}
.aria-live-polite {
  position: absolute;
  left: -10000px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

body.using-keyboard *:focus {
  outline: 2px solid var(--color-primary, #31a9c7);
  outline-offset: 2px;
}

@media print {
  *,
  *::before,
  *::after {
    background: transparent !important;
    color: #000 !important;
    box-shadow: none !important;
    text-shadow: none !important;
  }
  a,
  a:visited {
    text-decoration: underline;
  }
  a[href]::after {
    content: " (" attr(href) ")";
  }
  abbr[title]::after {
    content: " (" attr(title) ")";
  }
  a[href^="#"]::after,
  a[href^="javascript:"]::after {
    content: "";
  }
  pre,
  blockquote {
    border: 1px solid #999;
    page-break-inside: avoid;
  }
  thead {
    display: table-header-group;
  }
  tr,
  img {
    page-break-inside: avoid;
  }
  img {
    max-width: 100% !important;
  }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3;
  }
  h2,
  h3 {
    page-break-after: avoid;
  }
}
/**
 * Document Layout
 * Reusable documentation page layout pattern
 * Used in: Documentation pages, style guides, component libraries
 */
.doc-layout {
  display: flex;
  min-height: 100vh;
}
@media (max-width: 768px) {
  .doc-layout {
    flex-direction: column;
  }
}

.doc-main {
  flex: 1;
  padding: 2rem;
  max-width: 1200px;
}
@media (max-width: 768px) {
  .doc-main {
    padding: 1rem;
  }
}

.doc-section {
  margin-bottom: 4rem;
  padding-top: 2rem;
}
.doc-section h1 {
  font-size: 2.5rem;
  margin-bottom: 0.5rem;
  border-bottom: 2px solid var(--color-primary);
  padding-bottom: 0.5rem;
}
.doc-section h2 {
  font-size: 1.8rem;
  margin-top: 2rem;
  margin-bottom: 1rem;
  color: var(--color-text-secondary);
}
.doc-section h3 {
  font-size: 1.4rem;
  margin-top: 1.5rem;
  margin-bottom: 0.75rem;
  color: var(--color-text-secondary);
}

/* Footer */
.doc-footer {
  margin-top: 4rem;
  padding-top: 2rem;
  border-top: 2px solid var(--color-border);
}
.doc-footer-content {
  text-align: center;
  color: var(--color-text-secondary);
}

/**
 * Sidebar Navigation
 * Reusable sidebar navigation pattern with compact mode support
 * Used in: Documentation pages, admin dashboards, app navigation
 */
.sidebar-nav {
  width: 280px;
  background: var(--color-box);
  border-right: 1px solid var(--color-border);
  padding: 2rem 1rem;
  position: sticky;
  top: 0;
  height: 100vh;
  overflow-y: auto;
  transition: width 0.3s ease, padding 0.3s ease;
  flex-shrink: 0;
}
.sidebar-nav.compact {
  width: 70px;
  padding: 2rem 0.5rem;
}
.sidebar-nav.compact ul {
  display: none;
}
.sidebar-nav.compact h2 {
  justify-content: center;
  gap: 0 !important;
}
.sidebar-nav.compact .nav-text {
  display: none;
}
.sidebar-nav.compact .nav-logo-link {
  display: none;
}
.sidebar-nav.compact #navToggle {
  display: block !important;
  cursor: pointer;
  width: 24px;
  height: 24px;
  flex-shrink: 0;
}
.sidebar-nav h2 {
  font-size: 1.5rem;
  margin: 0 0 1rem 0;
  color: var(--color-primary);
}
.sidebar-nav .nav-logo-link:hover {
  opacity: 0.8;
}
.sidebar-nav #navToggle:hover {
  opacity: 0.7;
}
.sidebar-nav ul {
  list-style: none;
  padding: 0;
  margin: 0;
}
.sidebar-nav li {
  margin: 0.5rem 0;
}
.sidebar-nav a {
  text-decoration: none;
  color: var(--color-text);
  padding: 0.5rem 1rem;
  display: block;
  border-radius: 4px;
  transition: all 0.2s;
}
.sidebar-nav a:hover {
  background: var(--color-item-bg-light);
  color: var(--color-primary);
}
@media (max-width: 768px) {
  .sidebar-nav {
    width: 100%;
    height: auto;
    position: relative;
  }
}

.nav-icon,
.section-icon {
  display: inline-block;
  margin-right: 0.5rem;
  font-weight: normal;
  opacity: 0.7;
}

.section-icon {
  font-size: 1.2em;
  opacity: 0.8;
}

/* Badge for NEW items */
.badge {
  display: inline-block;
  padding: 0.2rem 0.5rem;
  font-size: 0.7rem;
  font-weight: 600;
  text-transform: uppercase;
  background: var(--color-accent);
  color: var(--color-white);
  border-radius: 3px;
  margin-left: 0.5rem;
  vertical-align: middle;
}

/**
 * Layout Patterns
 * Common layout patterns for web applications
 * Includes: Holy Grail, Admin Dashboard, Card Grid, Streaming UI
 */
/* ----- Holy Grail Layout ----- */
.holy-grail-layout {
  display: flex;
  flex-direction: column;
  min-height: 300px;
}
.holy-grail-layout .layout-header,
.holy-grail-layout .layout-footer {
  background: var(--color-primary, #6366f1);
  color: white;
  padding: 1rem;
  text-align: center;
}
.holy-grail-layout .layout-content {
  display: flex;
  flex: 1;
  gap: 1rem;
}
@media (max-width: 768px) {
  .holy-grail-layout .layout-content {
    flex-direction: column;
  }
}
.holy-grail-layout .layout-sidebar-left,
.holy-grail-layout .layout-sidebar-right {
  background: var(--color-secondary-light, #e0e7ff);
  padding: 1rem;
  min-width: 150px;
}
.holy-grail-layout .layout-main {
  flex: 1;
  background: var(--color-bg-secondary, #f8f9fa);
  padding: 1rem;
}

/* ----- Admin Dashboard Layout ----- */
.admin-layout {
  display: flex;
  min-height: 400px;
}
@media (max-width: 768px) {
  .admin-layout {
    flex-direction: column;
  }
}

.admin-sidebar {
  width: 200px;
  background: var(--color-primary-dark, #4338ca);
  color: white;
  padding: 1rem;
}
@media (max-width: 768px) {
  .admin-sidebar {
    width: 100%;
  }
}

.admin-logo {
  font-size: 1.5rem;
  font-weight: bold;
  margin-bottom: 2rem;
  text-align: center;
}

.admin-nav {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.admin-nav-item {
  padding: 0.75rem 1rem;
  color: rgba(255, 255, 255, 0.8);
  text-decoration: none;
  border-radius: 4px;
  transition: all 0.2s;
}
.admin-nav-item:hover, .admin-nav-item.active {
  background: rgba(255, 255, 255, 0.1);
  color: white;
}

.admin-main {
  flex: 1;
  display: flex;
  flex-direction: column;
}

.admin-header {
  background: var(--color-bg-secondary, #f8f9fa);
  border-bottom: 1px solid var(--color-border, #e0e0e0);
  padding: 1rem 2rem;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.admin-header h2 {
  margin: 0;
  font-size: 1.5rem;
}

.admin-user {
  background: var(--color-primary, #6366f1);
  color: white;
  padding: 0.5rem 1rem;
  border-radius: 20px;
  font-size: 0.875rem;
}

.admin-content {
  flex: 1;
  padding: 2rem;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1rem;
}

.admin-card {
  background: var(--color-bg, #ffffff);
  border: 1px solid var(--color-border, #e0e0e0);
  border-radius: 8px;
  padding: 2rem;
  text-align: center;
  min-height: 120px;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* ----- Card Grid Layout ----- */
.card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 1.5rem;
}
@media (max-width: 768px) {
  .card-grid {
    grid-template-columns: 1fr;
  }
}

.card-item {
  background: var(--color-bg, #ffffff);
  border: 1px solid var(--color-border, #e0e0e0);
  border-radius: 8px;
  overflow: hidden;
  transition: transform 0.2s, box-shadow 0.2s;
}
.card-item:hover {
  transform: translateY(-4px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

.card-image {
  background: linear-gradient(135deg, var(--color-primary, #6366f1), var(--color-secondary, #ec4899));
  height: 150px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  font-weight: bold;
}

.card-content {
  padding: 1.5rem;
}
.card-content h3 {
  margin: 0 0 0.5rem 0;
  font-size: 1.125rem;
}
.card-content p {
  margin: 0 0 1rem 0;
  color: var(--color-text-secondary, #666);
  font-size: 0.875rem;
}

/* ----- Streaming UI Layout ----- */
.streaming-layout {
  background: #141414;
  color: white;
  min-height: 500px;
}

.streaming-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1rem 2rem;
  background: rgba(0, 0, 0, 0.5);
}

.streaming-logo {
  font-size: 1.5rem;
  font-weight: bold;
  color: #e50914;
}

.streaming-nav {
  display: flex;
  gap: 1.5rem;
}
.streaming-nav a {
  color: white;
  text-decoration: none;
  transition: color 0.2s;
}
.streaming-nav a:hover {
  color: #e50914;
}

.streaming-user {
  background: #e50914;
  padding: 0.5rem 1rem;
  border-radius: 4px;
  font-size: 0.875rem;
}

.streaming-hero {
  background: linear-gradient(to bottom, transparent, #141414), url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 400"><rect fill="%23333" width="800" height="400"/></svg>');
  background-size: cover;
  padding: 4rem 2rem;
  min-height: 250px;
}
.streaming-hero h2 {
  font-size: 2rem;
  margin: 0 0 1rem 0;
}
.streaming-hero p {
  margin: 0 0 1.5rem 0;
  font-size: 1.125rem;
  opacity: 0.9;
}

.streaming-categories {
  padding: 2rem;
}
.streaming-categories h3 {
  margin: 0 0 1rem 0;
  font-size: 1.25rem;
}

.streaming-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 0.75rem;
}
@media (max-width: 768px) {
  .streaming-row {
    grid-template-columns: repeat(2, 1fr);
  }
}

.streaming-card {
  background: #333;
  aspect-ratio: 16/9;
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: transform 0.2s;
}
.streaming-card:hover {
  transform: scale(1.05);
}

/* ----- Dark Mode Support ----- */
[data-theme=dark] .holy-grail-layout .layout-sidebar-left,
[data-theme=dark] .holy-grail-layout .layout-sidebar-right {
  background: rgba(99, 102, 241, 0.2);
  color: #d4d4d4;
}
[data-theme=dark] .holy-grail-layout .layout-main {
  background: #2a2a2a;
}
[data-theme=dark] .admin-header {
  background: #2a2a2a;
  border-bottom-color: #3a3a3a;
}
[data-theme=dark] .admin-card {
  background: #1e1e1e;
  border-color: #3a3a3a;
}
[data-theme=dark] .card-item {
  background: #1e1e1e;
  border-color: #3a3a3a;
}
[data-theme=dark] .card-content p {
  color: #a8a8a8;
}

dl,
ol,
ul {
  margin: 0 0 1rem;
  padding-left: 0;
  list-style: none;
}

dl dl,
dl ol,
dl ul {
  margin: 0.5rem 0 1rem 2rem;
  font-size: 90%;
}

ol dl,
ol ol,
ol ul {
  margin: 0.5rem 0 1rem 2rem;
  font-size: 90%;
}

ul dl,
ul ol,
ul ul {
  margin: 0.5rem 0 1rem 2rem;
  font-size: 90%;
}

/* ----- List Style Reset = Default ----- */
li {
  margin: 0.4rem 0;
  list-style: none;
}

ol li {
  list-style: decimal inside;
}

ul {
  list-style: circle inside;
}

ul.disc li {
  list-style: disc inside;
}

ul.circle li {
  list-style: circle inside;
}

fieldset,
input,
select,
textarea {
  margin-bottom: 1.2rem;
}

input[type=email],
input[type=number],
input[type=password],
input[type=search],
input[type=tel],
input[type=text],
input[type=url],
textarea,
select {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background-color: transparent;
  border: 0.1rem solid var(--color-border);
  border-radius: 0.4rem;
  box-shadow: none;
  box-sizing: inherit;
  height: 2.4rem;
  padding: 0.3rem 0.8rem;
  width: auto;
  min-width: 50%;
  color: var(--color-elegant);
  font-size: 1rem;
}

input[type=email]:focus,
input[type=number]:focus,
input[type=password]:focus,
input[type=search]:focus,
input[type=tel]:focus,
input[type=text]:focus,
input[type=url]:focus,
textarea:focus,
select:focus {
  border-color: var(--color-primary);
  outline: 0;
}

/* Fill = %23+HEX
 * INFO: https://stackoverflow.com/questions/61099149/svg-fill-color-not-working-with-hex-colors
*/
select {
  background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 8" width="30"><path fill="%235c5c6366" d="M0,0l6,8l6-8"/></svg>') center right no-repeat;
  padding-right: 3rem;
}

select:focus {
  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 8" width="30"><path fill="%235c5c63cc" d="M0,0l6,8l6-8"/></svg>');
}

[data-theme=dark] select {
  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 8" width="30"><path fill="%23a1a1aa" d="M0,0l6,8l6-8"/></svg>');
}

[data-theme=dark] select:focus {
  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 8" width="30"><path fill="%2360a5fa" d="M0,0l6,8l6-8"/></svg>');
}

textarea {
  min-height: 6.5rem;
  padding: 0.5rem 0.8rem;
  font-size: 1rem;
}

label,
legend {
  display: block;
  font-size: 1rem;
  font-weight: 400;
  margin-bottom: 0.25rem;
  margin-left: 0.25rem;
}
label:hover,
legend:hover {
  cursor: pointer;
  color: var(--color-primary);
}

fieldset {
  border-width: 0;
  padding: 0;
}

input[type=checkbox],
input[type=radio] {
  display: inline;
  margin: 0.25em;
}

.label-inline {
  display: inline-block;
  font-weight: normal;
  margin-left: 0.5rem;
}

table {
  display: block;
  overflow-x: auto;
  width: 100%;
  border-spacing: 0;
  text-align: left;
  border: 1px solid var(--color-item-bg-light);
  border-bottom: none;
}
table.stripe {
  border-bottom: 1px solid var(--color-item-bg-light);
}
table.stripe th,
table.stripe td {
  border: none;
}
table.stripe tr:nth-child(even) {
  background-color: var(--color-item-bg-light);
}

td,
th {
  padding: 0.5rem 1rem;
  border-bottom: 1px solid var(--color-border-light);
}

td {
  padding: 0.5rem 1rem;
}

th {
  padding: 0.8rem 1rem;
}

thead.dark > tr > th {
  color: var(--color-ghost);
  background-color: var(--color-item-bg-dark);
}

[data-theme=dark] table {
  border-color: var(--color-border);
  color: var(--color-text);
}
[data-theme=dark] table.stripe {
  border-color: var(--color-border);
}
[data-theme=dark] table.stripe tr:nth-child(even) {
  background-color: var(--color-item-bg-light);
  color: var(--color-text);
}
[data-theme=dark] table.stripe tr:nth-child(odd) {
  background-color: transparent;
  color: var(--color-text);
}
[data-theme=dark] td,
[data-theme=dark] th {
  border-color: var(--color-border);
  color: var(--color-text);
}
[data-theme=dark] thead.dark > tr > th {
  background-color: var(--color-item-bg-dark);
}

@media (min-width: 40rem) {
  table {
    display: table;
    overflow-x: initial;
  }
}
.mg-container {
  position: relative;
  width: 100%;
  max-width: 112rem;
  margin: 0 auto;
  padding: 0 2rem;
}
.mg-container.column-show .row {
  background-color: var(--color-gray-transparent-dark);
}
.mg-container.column-show .row .column {
  margin-right: 2px;
  margin-bottom: 2px;
  background-color: var(--color-secondary);
  color: var(--color-white);
  text-align: center;
}
.mg-container .row {
  display: flex;
  flex-direction: row;
  width: 100%;
  padding: 0;
}
.mg-container .row.row-no-padding {
  padding: 0;
}
.mg-container .row.row-no-padding > .column {
  padding: 0;
}
.mg-container .row.row-wrap {
  flex-wrap: wrap;
}
.mg-container .row.row-top {
  align-items: flex-start;
}
.mg-container .row.row-bottom {
  align-items: flex-end;
  justify-content: flex-end;
}
.mg-container .row.row-center {
  align-items: center;
}
.mg-container .row.row-stretch {
  align-items: stretch;
}
.mg-container .row.row-baseline {
  align-items: baseline;
}
.mg-container .row .column {
  display: block;
  width: 100%;
  margin-left: 0;
  padding: 0.25rem;
}
.mg-container .row .column.column-offset-auto {
  margin-left: auto;
}
.mg-container .row .column.column-offset-10 {
  margin-left: 10%;
}
.mg-container .row .column.column-offset-20 {
  margin-left: 20%;
}
.mg-container .row .column.column-offset-25 {
  margin-left: 25%;
}
.mg-container .row .column.column-offset-33 {
  margin-left: 33.3333333333%;
}
.mg-container .row .column.column-offset-50 {
  margin-left: 50%;
}
.mg-container .row .column.column-offset-66 {
  margin-left: 66.6666666667%;
}
.mg-container .row .column.column-offset-75 {
  margin-left: 75%;
}
.mg-container .row .column.column-offset-80 {
  margin-left: 80%;
}
.mg-container .row .column.column-offset-90 {
  margin-left: 90%;
}
.mg-container .row .column.column-auto {
  flex: auto;
  max-width: none;
}
.mg-container .row .column.column-10 {
  flex: 0 0 10%;
  max-width: 10%;
}
.mg-container .row .column.column-20 {
  flex: 0 0 20%;
  max-width: 20%;
}
.mg-container .row .column.column-25 {
  flex: 0 0 25%;
  max-width: 25%;
}
.mg-container .row .column.column-33 {
  flex: 0 0 33.3333333333%;
  max-width: 33.3333333333%;
}
.mg-container .row .column.column-40 {
  flex: 0 0 40%;
  max-width: 40%;
}
.mg-container .row .column.column-50 {
  flex: 0 0 50%;
  max-width: 50%;
}
.mg-container .row .column.column-60 {
  flex: 0 0 60%;
  max-width: 60%;
}
.mg-container .row .column.column-66 {
  flex: 0 0 66.6666666667%;
  max-width: 66.6666666667%;
}
.mg-container .row .column.column-75 {
  flex: 0 0 75%;
  max-width: 75%;
}
.mg-container .row .column.column-80 {
  flex: 0 0 80%;
  max-width: 80%;
}
.mg-container .row .column.column-90 {
  flex: 0 0 90%;
  max-width: 90%;
}
.mg-container .row .column .column-top {
  align-self: flex-start;
}
.mg-container .row .column .column-bottom {
  align-self: flex-end;
}
.mg-container .row .column .column-center {
  align-self: center;
}

@media (max-width: 768px) {
  .mg-container,
  .mg-container.column-show {
    width: 100%;
    margin: 2px;
    padding: 0;
  }
  .mg-container .row,
  .mg-container.column-show .row {
    margin: 0;
    padding: 0;
  }
  .mg-container .row .column,
  .mg-container .row [class^=column-],
  .mg-container.column-show .row .column,
  .mg-container.column-show .row [class^=column-] {
    width: 100%;
    max-width: 100%;
    flex: auto;
    margin: 2px;
    padding: 0;
  }
  .mg-container.sp-column .row {
    flex-direction: column;
  }
}
code {
  margin: 0 0.2rem;
  padding: 0.2rem 0.5rem;
  white-space: nowrap;
  border-radius: 0.4rem;
  background: var(--color-light);
  font-size: 0.9rem;
}

pre {
  overflow-y: hidden;
  border-left: 0.3rem solid var(--color-primary);
  background: var(--color-light);
}
pre > code {
  display: block;
  padding: 0.8rem 1.2rem;
  white-space: pre;
  color: var(--color-secondary);
  border-radius: 0;
}

/* Modal & Dialog Components */
/* Modal Overlay */
.modal-overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.5);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1000;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.3s ease, visibility 0.3s ease;
}
.modal-overlay.active {
  opacity: 1;
  visibility: visible;
}

/* Modal Container */
.modal {
  background: var(--color-box);
  border-radius: 8px;
  box-shadow: var(--box-shadow);
  max-width: 500px;
  width: 90%;
  max-height: 90vh;
  overflow-y: auto;
  transform: scale(0.9);
  transition: transform 0.3s ease;
}
.modal-overlay.active .modal {
  transform: scale(1);
}

/* Modal Header */
.modal-header {
  padding: 1.5rem;
  border-bottom: 1px solid var(--color-border);
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.modal-header h2, .modal-header h3 {
  margin: 0;
  font-size: 1.5rem;
}

/* Modal Close Button */
.modal-close {
  background: transparent;
  border: none;
  font-size: 1.5rem;
  cursor: pointer;
  color: var(--color-text-secondary);
  padding: 0.5rem;
  line-height: 1;
  transition: color 0.2s ease;
}
.modal-close:hover {
  color: var(--color-danger);
}

/* Modal Body */
.modal-body {
  padding: 1.5rem;
}

/* Modal Footer */
.modal-footer {
  padding: 1rem 1.5rem;
  border-top: 1px solid var(--color-border);
  display: flex;
  gap: 0.75rem;
  justify-content: flex-end;
}

/* Dialog Variants */
.modal-sm {
  max-width: 400px;
}

.modal-lg {
  max-width: 700px;
}

.modal-fullscreen {
  max-width: 100%;
  width: 100%;
  height: 100vh;
  max-height: 100vh;
  border-radius: 0;
}

/* Responsive */
@media (max-width: 768px) {
  .modal {
    max-width: 95%;
  }
  .modal-header {
    padding: 1rem;
  }
  .modal-body {
    padding: 1rem;
  }
  .modal-footer {
    padding: 0.75rem 1rem;
    flex-direction: column;
  }
  .modal-footer .button {
    width: 100%;
  }
}
/* Tooltip Component */
/* Tooltip Container */
.tooltip {
  position: relative;
  display: inline-block;
  cursor: help;
}

/* Tooltip Content */
.tooltip-content {
  position: absolute;
  bottom: 100%;
  left: 50%;
  transform: translateX(-50%) translateY(-8px);
  background: var(--color-text, #333);
  color: var(--color-bg-white, #fff);
  padding: 0.5rem 0.75rem;
  border-radius: 4px;
  font-size: 0.875rem;
  white-space: nowrap;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease, transform 0.2s ease;
  z-index: 1000;
  pointer-events: none;
  /* Tooltip Arrow */
}
.tooltip-content::after {
  content: "";
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  border: 5px solid transparent;
  border-top-color: var(--color-text, #333);
}

/* Show Tooltip on Hover */
.tooltip:hover .tooltip-content,
.tooltip:focus .tooltip-content {
  opacity: 1;
  visibility: visible;
  transform: translateX(-50%) translateY(-4px);
}

/* Tooltip Positions */
.tooltip-top .tooltip-content {
  bottom: 100%;
  left: 50%;
  transform: translateX(-50%) translateY(-8px);
}
.tooltip-top .tooltip-content::after {
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  border-top-color: var(--color-text, #333);
  border-bottom-color: transparent;
}

.tooltip-bottom .tooltip-content {
  top: 100%;
  bottom: auto;
  transform: translateX(-50%) translateY(8px);
}
.tooltip-bottom .tooltip-content::after {
  bottom: 100%;
  top: auto;
  border-bottom-color: var(--color-text, #333);
  border-top-color: transparent;
}

.tooltip-left .tooltip-content {
  top: 50%;
  bottom: auto;
  left: auto;
  right: 100%;
  transform: translateY(-50%) translateX(-8px);
}
.tooltip-left .tooltip-content::after {
  top: 50%;
  left: 100%;
  right: auto;
  transform: translateY(-50%);
  border-left-color: var(--color-text, #333);
  border-right-color: transparent;
  border-top-color: transparent;
}

.tooltip-right .tooltip-content {
  top: 50%;
  bottom: auto;
  left: 100%;
  right: auto;
  transform: translateY(-50%) translateX(8px);
}
.tooltip-right .tooltip-content::after {
  top: 50%;
  right: 100%;
  left: auto;
  transform: translateY(-50%);
  border-right-color: var(--color-text, #333);
  border-left-color: transparent;
  border-top-color: transparent;
}

/* Show on Hover for Different Positions */
.tooltip-top:hover .tooltip-content {
  transform: translateX(-50%) translateY(-4px);
}

.tooltip-bottom:hover .tooltip-content {
  transform: translateX(-50%) translateY(4px);
}

.tooltip-left:hover .tooltip-content {
  transform: translateY(-50%) translateX(-4px);
}

.tooltip-right:hover .tooltip-content {
  transform: translateY(-50%) translateX(4px);
}

/* Tooltip Color Variants */
.tooltip-primary .tooltip-content {
  background: var(--color-primary, #6366f1);
}
.tooltip-primary .tooltip-content::after {
  border-top-color: var(--color-primary, #6366f1);
}

.tooltip-success .tooltip-content {
  background: var(--color-success, #10b981);
}
.tooltip-success .tooltip-content::after {
  border-top-color: var(--color-success, #10b981);
}

.tooltip-warning .tooltip-content {
  background: var(--color-warning, #f59e0b);
}
.tooltip-warning .tooltip-content::after {
  border-top-color: var(--color-warning, #f59e0b);
}

.tooltip-danger .tooltip-content {
  background: var(--color-danger, #ef4444);
}
.tooltip-danger .tooltip-content::after {
  border-top-color: var(--color-danger, #ef4444);
}

/* Multiline Tooltip */
.tooltip-multiline .tooltip-content {
  white-space: normal;
  max-width: 200px;
  text-align: center;
}

.alert {
  position: relative;
  padding: var(--spacing-4, 1rem) var(--spacing-5, 1.25rem);
  margin-bottom: var(--spacing-4, 1rem);
  border: 1px solid transparent;
  border-radius: var(--border-radius, 0.375rem);
  font-size: 0.9375rem;
  line-height: 1.6;
}
.alert > :last-child {
  margin-bottom: 0;
}
.alert-heading {
  font-weight: 600;
  margin-bottom: var(--spacing-2, 0.5rem);
  font-size: 1rem;
}
.alert a {
  font-weight: 600;
  text-decoration: underline;
}
.alert a:hover {
  opacity: 0.8;
}

.alert-primary {
  color: var(--color-primary-dark, #1a6b7e);
  background-color: color-mix(in srgb, var(--color-primary) 15%, transparent);
  border-color: color-mix(in srgb, var(--color-primary) 30%, transparent);
}
.alert-primary a {
  color: var(--color-primary-dark, #1a6b7e);
}

.alert-success {
  color: #0f5132;
  background-color: color-mix(in srgb, var(--color-success) 15%, transparent);
  border-color: color-mix(in srgb, var(--color-success) 30%, transparent);
}
[data-theme=dark] .alert-success {
  color: #75b798;
  background-color: color-mix(in srgb, var(--color-success) 20%, transparent);
  border-color: color-mix(in srgb, var(--color-success) 35%, transparent);
}
.alert-success a {
  color: #0a3622;
}
[data-theme=dark] .alert-success a {
  color: #9fdfbe;
}

.alert-warning {
  color: #664d03;
  background-color: color-mix(in srgb, var(--color-warning) 15%, transparent);
  border-color: color-mix(in srgb, var(--color-warning) 30%, transparent);
}
[data-theme=dark] .alert-warning {
  color: #ffda6a;
  background-color: color-mix(in srgb, var(--color-warning) 20%, transparent);
  border-color: color-mix(in srgb, var(--color-warning) 35%, transparent);
}
.alert-warning a {
  color: #523e02;
}
[data-theme=dark] .alert-warning a {
  color: #ffe69c;
}

.alert-danger {
  color: #842029;
  background-color: color-mix(in srgb, var(--color-danger) 15%, transparent);
  border-color: color-mix(in srgb, var(--color-danger) 30%, transparent);
}
[data-theme=dark] .alert-danger {
  color: #ea868f;
  background-color: color-mix(in srgb, var(--color-danger) 20%, transparent);
  border-color: color-mix(in srgb, var(--color-danger) 35%, transparent);
}
.alert-danger a {
  color: #6a1a21;
}
[data-theme=dark] .alert-danger a {
  color: #f1aeb5;
}

.alert-info {
  color: #055160;
  background-color: color-mix(in srgb, var(--color-info) 15%, transparent);
  border-color: color-mix(in srgb, var(--color-info) 30%, transparent);
}
[data-theme=dark] .alert-info {
  color: #6edff6;
  background-color: color-mix(in srgb, var(--color-info) 20%, transparent);
  border-color: color-mix(in srgb, var(--color-info) 35%, transparent);
}
.alert-info a {
  color: #04414d;
}
[data-theme=dark] .alert-info a {
  color: #9eeaf9;
}

.alert-secondary {
  color: #41464b;
  background-color: color-mix(in srgb, var(--color-gray) 15%, transparent);
  border-color: color-mix(in srgb, var(--color-gray) 30%, transparent);
}
[data-theme=dark] .alert-secondary {
  color: #a1a1aa;
  background-color: color-mix(in srgb, var(--color-gray) 20%, transparent);
  border-color: color-mix(in srgb, var(--color-gray) 35%, transparent);
}
.alert-secondary a {
  color: #34383c;
}
[data-theme=dark] .alert-secondary a {
  color: #d4d4d8;
}

.alert-light {
  color: #636464;
  background-color: color-mix(in srgb, var(--color-light) 25%, transparent);
  border-color: color-mix(in srgb, var(--color-light-dark) 40%, transparent);
}
[data-theme=dark] .alert-light {
  color: #f4f5f6;
  background-color: color-mix(in srgb, var(--color-light) 10%, transparent);
  border-color: color-mix(in srgb, var(--color-light) 20%, transparent);
}
.alert-light a {
  color: #4f5050;
}
[data-theme=dark] .alert-light a {
  color: #ffffff;
}

.alert-dark {
  color: #141619;
  background-color: color-mix(in srgb, var(--color-dark) 15%, transparent);
  border-color: color-mix(in srgb, var(--color-dark) 30%, transparent);
}
[data-theme=dark] .alert-dark {
  color: #e4e4e7;
  background-color: color-mix(in srgb, var(--color-dark) 25%, transparent);
  border-color: color-mix(in srgb, var(--color-dark) 40%, transparent);
}
.alert-dark a {
  color: #0a0b0d;
}
[data-theme=dark] .alert-dark a {
  color: #ffffff;
}

.alert-dismissible {
  padding-right: var(--spacing-12, 3rem);
}
.alert-dismissible .alert-close {
  position: absolute;
  top: 0;
  right: 0;
  z-index: 2;
  padding: var(--spacing-4, 1rem) var(--spacing-5, 1.25rem);
  background-color: transparent;
  border: 0;
  font-size: 1.5rem;
  font-weight: 700;
  line-height: 1;
  color: inherit;
  opacity: 0.5;
  cursor: pointer;
  transition: opacity 0.15s ease-in-out;
}
.alert-dismissible .alert-close:hover {
  opacity: 0.75;
}
.alert-dismissible .alert-close:focus {
  outline: 2px solid currentColor;
  outline-offset: 2px;
  opacity: 1;
}

.alert-with-icon {
  display: flex;
  align-items: flex-start;
  gap: var(--spacing-3, 0.75rem);
}
.alert-with-icon .alert-icon {
  flex-shrink: 0;
  width: 1.5rem;
  height: 1.5rem;
  margin-top: 0.125rem;
}
.alert-with-icon .alert-content {
  flex: 1;
}

.alert-solid.alert-primary {
  color: #fff;
  background-color: var(--color-primary);
  border-color: var(--color-primary);
}
.alert-solid.alert-secondary {
  color: #fff;
  background-color: var(--color-gray);
  border-color: var(--color-gray);
}
.alert-solid.alert-success {
  color: #fff;
  background-color: var(--color-success);
  border-color: var(--color-success);
}
.alert-solid.alert-warning {
  color: #000;
  background-color: var(--color-warning);
  border-color: var(--color-warning);
}
[data-theme=dark] .alert-solid.alert-warning {
  color: #000;
}
.alert-solid.alert-danger {
  color: #fff;
  background-color: var(--color-danger);
  border-color: var(--color-danger);
}
.alert-solid.alert-info {
  color: #fff;
  background-color: var(--color-info);
  border-color: var(--color-info);
}
.alert-solid.alert-light {
  color: #000;
  background-color: var(--color-light);
  border-color: var(--color-light);
}
.alert-solid.alert-dark {
  color: #fff;
  background-color: var(--color-dark);
  border-color: var(--color-dark);
}

.alert-sm {
  padding: var(--spacing-2, 0.5rem) var(--spacing-3, 0.75rem);
  font-size: 0.875rem;
}
.alert-sm.alert-dismissible {
  padding-right: var(--spacing-10, 2.5rem);
}
.alert-sm.alert-dismissible .alert-close {
  padding: var(--spacing-2, 0.5rem) var(--spacing-3, 0.75rem);
  font-size: 1.25rem;
}

.alert-lg {
  padding: var(--spacing-5, 1.25rem) var(--spacing-6, 1.5rem);
  font-size: 1rem;
}
.alert-lg.alert-dismissible {
  padding-right: var(--spacing-16, 4rem);
}
.alert-lg.alert-dismissible .alert-close {
  padding: var(--spacing-5, 1.25rem) var(--spacing-6, 1.5rem);
  font-size: 1.75rem;
}

@keyframes alert-fade-out {
  from {
    opacity: 1;
    transform: scale(1);
  }
  to {
    opacity: 0;
    transform: scale(0.95);
  }
}
.alert.dismissing {
  animation: alert-fade-out 0.15s ease-out forwards;
}

@media (prefers-reduced-motion: reduce) {
  .alert.dismissing {
    animation: none;
    display: none;
  }
  .alert-close {
    transition: none;
  }
}
.badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.25em 0.5em;
  font-size: 0.75rem;
  font-weight: 600;
  line-height: 1;
  color: var(--color-text-inverse, #fff);
  background-color: var(--color-gray, #6c757d);
  border-radius: 0.25rem;
  white-space: nowrap;
  vertical-align: baseline;
  transition: background-color 0.15s ease-in-out, color 0.15s ease-in-out;
}
.badge:empty {
  display: inline-block;
  width: 0.5rem;
  height: 0.5rem;
  padding: 0;
  border-radius: 50%;
}
a > .badge, button > .badge {
  position: relative;
  top: -1px;
}

.badge-primary {
  color: #fff;
  background-color: var(--color-primary, #31a9c7);
}
[data-theme=dark] .badge-primary {
  color: #000;
  background-color: var(--color-primary-light, #4ec4df);
}

.badge-secondary {
  color: #fff;
  background-color: var(--color-secondary, #596784);
}
[data-theme=dark] .badge-secondary {
  background-color: var(--color-secondary-light, #7a8aac);
}

.badge-accent {
  color: #fff;
  background-color: var(--color-accent, #d429e0);
}
[data-theme=dark] .badge-accent {
  color: #000;
  background-color: var(--color-accent-light, #e879f9);
}

.badge-success {
  color: #fff;
  background-color: var(--color-success, #00a859);
}
[data-theme=dark] .badge-success {
  color: #000;
  background-color: var(--color-success-light, #22c55e);
}

.badge-warning {
  color: #000;
  background-color: var(--color-warning, #ebbb0c);
}
[data-theme=dark] .badge-warning {
  background-color: var(--color-warning-light, #fbbf24);
}

.badge-danger {
  color: #fff;
  background-color: var(--color-danger, #e1323c);
}
[data-theme=dark] .badge-danger {
  background-color: var(--color-danger-light, #ef4444);
}

.badge-info {
  color: #fff;
  background-color: var(--color-info, #1ec2c2);
}
[data-theme=dark] .badge-info {
  color: #000;
  background-color: var(--color-info-light, #22d3ee);
}

.badge-light {
  color: var(--color-text, #4c5059);
  background-color: var(--color-box, #fff);
  border: 1px solid var(--color-border, rgba(0, 0, 0, 0.1));
}
[data-theme=dark] .badge-light {
  color: var(--color-text, #e4e4e7);
  background-color: var(--color-box, #18181b);
  border-color: var(--color-border, rgba(255, 255, 255, 0.1));
}

.badge-dark {
  color: #fff;
  background-color: var(--color-text, #4c5059);
}
[data-theme=dark] .badge-dark {
  color: #000;
  background-color: var(--color-text, #e4e4e7);
}

.badge-elegant {
  color: #fff;
  background-color: var(--color-elegant, #48626f);
}
[data-theme=dark] .badge-elegant {
  background-color: var(--color-elegant-light, #5a7a8a);
}

.badge-outline {
  background-color: transparent;
  border: 1px solid currentColor;
}
.badge-outline.badge-primary {
  color: var(--color-primary, #31a9c7);
}
.badge-outline.badge-secondary {
  color: var(--color-secondary, #596784);
}
.badge-outline.badge-accent {
  color: var(--color-accent, #d429e0);
}
.badge-outline.badge-success {
  color: var(--color-success, #00a859);
}
.badge-outline.badge-warning {
  color: var(--color-warning, #ebbb0c);
}
[data-theme=dark] .badge-outline.badge-warning {
  color: var(--color-warning-light, #fbbf24);
}
.badge-outline.badge-danger {
  color: var(--color-danger, #e1323c);
}
.badge-outline.badge-info {
  color: var(--color-info, #1ec2c2);
}
.badge-outline.badge-dark {
  color: var(--color-text, #4c5059);
}
[data-theme=dark] .badge-outline.badge-dark {
  color: var(--color-text, #e4e4e7);
}

.badge-soft.badge-primary {
  color: var(--color-primary-dark, #1a6b7e);
  background-color: color-mix(in srgb, var(--color-primary) 15%, transparent);
}
.badge-soft.badge-success {
  color: #0f5132;
  background-color: color-mix(in srgb, var(--color-success) 15%, transparent);
}
[data-theme=dark] .badge-soft.badge-success {
  color: #75b798;
}
.badge-soft.badge-warning {
  color: #664d03;
  background-color: color-mix(in srgb, var(--color-warning) 15%, transparent);
}
[data-theme=dark] .badge-soft.badge-warning {
  color: #ffda6a;
}
.badge-soft.badge-danger {
  color: #842029;
  background-color: color-mix(in srgb, var(--color-danger) 15%, transparent);
}
[data-theme=dark] .badge-soft.badge-danger {
  color: #ea868f;
}
.badge-soft.badge-info {
  color: #055160;
  background-color: color-mix(in srgb, var(--color-info) 15%, transparent);
}
[data-theme=dark] .badge-soft.badge-info {
  color: #6edff6;
}

.badge-sm {
  padding: 0.2em 0.4em;
  font-size: 0.65rem;
}
.badge-sm:empty {
  width: 0.4rem;
  height: 0.4rem;
}

.badge-lg {
  padding: 0.35em 0.65em;
  font-size: 0.875rem;
}
.badge-lg:empty {
  width: 0.65rem;
  height: 0.65rem;
}

.badge-xl {
  padding: 0.5em 0.85em;
  font-size: 1rem;
}
.badge-xl:empty {
  width: 0.85rem;
  height: 0.85rem;
}

.badge-pill {
  border-radius: 10rem;
}

.badge-square {
  border-radius: 0;
}

.badge-circle {
  border-radius: 50%;
  padding: 0.35em;
  width: 1.5rem;
  height: 1.5rem;
}
.badge-circle.badge-sm {
  width: 1.25rem;
  height: 1.25rem;
}
.badge-circle.badge-lg {
  width: 2rem;
  height: 2rem;
}
.badge-circle.badge-xl {
  width: 2.5rem;
  height: 2.5rem;
}

.badge-dot {
  padding: 0;
  width: 0.5rem;
  height: 0.5rem;
  border-radius: 50%;
}
.badge-dot.badge-sm {
  width: 0.4rem;
  height: 0.4rem;
}
.badge-dot.badge-lg {
  width: 0.65rem;
  height: 0.65rem;
}
.badge-dot.badge-pulse {
  animation: badge-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
@media (prefers-reduced-motion: reduce) {
  .badge-dot.badge-pulse {
    animation: none;
  }
}

@keyframes badge-pulse {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0.5;
  }
}
.badge-with-icon {
  display: inline-flex;
  align-items: center;
  gap: 0.25em;
}
.badge-with-icon .badge-icon {
  width: 1em;
  height: 1em;
}

.badge-positioned {
  position: absolute;
  top: 0;
  right: 0;
  transform: translate(50%, -50%);
  border: 2px solid var(--color-bg, #fff);
}
[data-theme=dark] .badge-positioned {
  border-color: var(--color-bg, #0f0f0f);
}

.position-relative {
  position: relative;
}

a.badge:hover,
button.badge:hover {
  filter: brightness(0.9);
}
a.badge:focus,
button.badge:focus {
  outline: 2px solid currentColor;
  outline-offset: 2px;
}
a.badge:active,
button.badge:active {
  transform: scale(0.95);
}

.badge-group {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 0.25rem;
}

@media (prefers-reduced-motion: reduce) {
  .badge,
  a.badge,
  button.badge {
    transition: none;
  }
  .badge:active,
  a.badge:active,
  button.badge:active {
    transform: none;
  }
}
.tabs {
  display: flex;
  flex-direction: column;
  width: 100%;
}

.tabs-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
  border-bottom: 2px solid var(--color-border, rgba(0, 0, 0, 0.1));
  margin-bottom: var(--spacing-4, 1rem);
}
[data-theme=dark] .tabs-nav {
  border-color: var(--color-border, rgba(255, 255, 255, 0.1));
}

.tab-link {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: var(--spacing-3, 0.75rem) var(--spacing-4, 1rem);
  background-color: transparent;
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  color: var(--color-text-muted, #6c757d);
  font-size: 0.9375rem;
  font-weight: 500;
  line-height: 1.5;
  text-align: center;
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
  transition: color 0.15s ease-in-out, border-color 0.15s ease-in-out, background-color 0.15s ease-in-out;
}
.tab-link:hover:not(.active):not([disabled]) {
  color: var(--color-text, #4c5059);
  border-color: var(--color-border-light, rgba(0, 0, 0, 0.05));
  background-color: var(--color-hover, rgba(0, 0, 0, 0.03));
}
[data-theme=dark] .tab-link:hover:not(.active):not([disabled]) {
  color: var(--color-text, #e4e4e7);
  border-color: var(--color-border-light, rgba(255, 255, 255, 0.05));
  background-color: var(--color-hover, rgba(255, 255, 255, 0.05));
}
.tab-link:focus-visible {
  outline: 2px solid var(--color-primary, #31a9c7);
  outline-offset: 2px;
  z-index: 1;
}
.tab-link.active, .tab-link[aria-selected=true] {
  color: var(--color-primary, #31a9c7);
  border-color: var(--color-primary, #31a9c7);
  font-weight: 600;
}
[data-theme=dark] .tab-link.active, [data-theme=dark] .tab-link[aria-selected=true] {
  color: var(--color-primary-light, #4ec4df);
  border-color: var(--color-primary-light, #4ec4df);
}
.tab-link[disabled] {
  color: var(--color-text-disabled, #adb5bd);
  cursor: not-allowed;
  opacity: 0.5;
}
.tab-link .tab-icon {
  width: 1.25rem;
  height: 1.25rem;
  flex-shrink: 0;
}
.tab-link .badge {
  margin-left: 0.25rem;
}

.tabs-content {
  position: relative;
}

.tab-panel {
  display: none;
  animation: tab-fade-in 0.2s ease-in-out;
}
.tab-panel.active, .tab-panel[aria-hidden=false] {
  display: block;
}
@media (prefers-reduced-motion: reduce) {
  .tab-panel {
    animation: none;
  }
}

@keyframes tab-fade-in {
  from {
    opacity: 0;
    transform: translateY(0.5rem);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.tabs-pills .tabs-nav {
  border-bottom: none;
  gap: 0.5rem;
  margin-bottom: var(--spacing-4, 1rem);
}
.tabs-pills .tab-link {
  border-radius: 0.375rem;
  border: 1px solid transparent;
  margin-bottom: 0;
}
.tabs-pills .tab-link.active, .tabs-pills .tab-link[aria-selected=true] {
  color: #fff;
  background-color: var(--color-primary, #31a9c7);
  border-color: var(--color-primary, #31a9c7);
}
[data-theme=dark] .tabs-pills .tab-link.active, [data-theme=dark] .tabs-pills .tab-link[aria-selected=true] {
  color: #000;
  background-color: var(--color-primary-light, #4ec4df);
  border-color: var(--color-primary-light, #4ec4df);
}

.tabs-pills-outline .tabs-nav {
  border-bottom: none;
  gap: 0.5rem;
  margin-bottom: var(--spacing-4, 1rem);
}
.tabs-pills-outline .tab-link {
  border-radius: 0.375rem;
  border: 1px solid var(--color-border, rgba(0, 0, 0, 0.2));
  margin-bottom: 0;
}
[data-theme=dark] .tabs-pills-outline .tab-link {
  border-color: var(--color-border, rgba(255, 255, 255, 0.1));
}
.tabs-pills-outline .tab-link.active, .tabs-pills-outline .tab-link[aria-selected=true] {
  color: var(--color-primary, #31a9c7);
  background-color: color-mix(in srgb, var(--color-primary) 10%, transparent);
  border-color: var(--color-primary, #31a9c7);
}
[data-theme=dark] .tabs-pills-outline .tab-link.active, [data-theme=dark] .tabs-pills-outline .tab-link[aria-selected=true] {
  color: var(--color-primary-light, #4ec4df);
  border-color: var(--color-primary-light, #4ec4df);
}

.tabs-vertical {
  flex-direction: row;
  gap: var(--spacing-4, 1rem);
}
.tabs-vertical .tabs-nav {
  flex-direction: column;
  border-bottom: none;
  border-right: 2px solid var(--color-border, rgba(0, 0, 0, 0.1));
  margin-bottom: 0;
  margin-right: 0;
  min-width: 200px;
}
[data-theme=dark] .tabs-vertical .tabs-nav {
  border-color: var(--color-border, rgba(255, 255, 255, 0.1));
}
.tabs-vertical .tab-link {
  justify-content: flex-start;
  text-align: left;
  border-bottom: none;
  border-right: 2px solid transparent;
  margin-bottom: 0;
  margin-right: -2px;
}
.tabs-vertical .tab-link.active, .tabs-vertical .tab-link[aria-selected=true] {
  border-right-color: var(--color-primary, #31a9c7);
}
.tabs-vertical .tabs-content {
  flex: 1;
}

.tabs-justified .tabs-nav {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
}
.tabs-justified .tab-link {
  width: 100%;
}

.tabs-centered .tabs-nav {
  justify-content: center;
}

.tabs-right .tabs-nav {
  justify-content: flex-end;
}

.tabs-sm .tab-link {
  padding: var(--spacing-2, 0.5rem) var(--spacing-3, 0.75rem);
  font-size: 0.875rem;
}
.tabs-sm .tab-link .tab-icon {
  width: 1rem;
  height: 1rem;
}

.tabs-lg .tab-link {
  padding: var(--spacing-4, 1rem) var(--spacing-5, 1.25rem);
  font-size: 1rem;
}
.tabs-lg .tab-link .tab-icon {
  width: 1.5rem;
  height: 1.5rem;
}

.tabs-animated .tabs-nav {
  position: relative;
}
.tabs-animated .tabs-nav::after {
  content: "";
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 0;
  height: 2px;
  background-color: var(--color-primary, #31a9c7);
  transition: all 0.3s ease-in-out;
}
[data-theme=dark] .tabs-animated .tabs-nav::after {
  background-color: var(--color-primary-light, #4ec4df);
}
@media (prefers-reduced-motion: reduce) {
  .tabs-animated .tabs-nav::after {
    transition: none;
  }
}

.tabs-scrollable .tabs-nav {
  flex-wrap: nowrap;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
  scrollbar-color: var(--color-border, rgba(0, 0, 0, 0.2)) transparent;
}
.tabs-scrollable .tabs-nav::-webkit-scrollbar {
  height: 4px;
}
.tabs-scrollable .tabs-nav::-webkit-scrollbar-track {
  background: transparent;
}
.tabs-scrollable .tabs-nav::-webkit-scrollbar-thumb {
  background-color: var(--color-border, rgba(0, 0, 0, 0.2));
  border-radius: 2px;
}
[data-theme=dark] .tabs-scrollable .tabs-nav {
  scrollbar-color: var(--color-border, rgba(255, 255, 255, 0.1)) transparent;
}
[data-theme=dark] .tabs-scrollable .tabs-nav::-webkit-scrollbar-thumb {
  background-color: var(--color-border, rgba(255, 255, 255, 0.1));
}

@media (max-width: 48em) {
  .tabs-vertical {
    flex-direction: column;
  }
  .tabs-vertical .tabs-nav {
    border-right: none;
    border-bottom: 2px solid var(--color-border, rgba(0, 0, 0, 0.1));
    margin-right: 0;
    margin-bottom: var(--spacing-4, 1rem);
    min-width: auto;
  }
  [data-theme=dark] .tabs-vertical .tabs-nav {
    border-color: var(--color-border, rgba(255, 255, 255, 0.1));
  }
  .tabs-vertical .tab-link {
    border-right: none;
    border-bottom: 2px solid transparent;
    margin-right: 0;
    margin-bottom: -2px;
  }
  .tabs-vertical .tab-link.active, .tabs-vertical .tab-link[aria-selected=true] {
    border-right-color: transparent;
    border-bottom-color: var(--color-primary, #31a9c7);
  }
  .tabs-nav {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}
@media (prefers-reduced-motion: reduce) {
  .tab-link {
    transition: none;
  }
}
.accordion {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-2, 0.5rem);
}

.accordion-item {
  border: 1px solid var(--color-border, rgba(0, 0, 0, 0.1));
  border-radius: 0.375rem;
  overflow: hidden;
  background-color: var(--color-box, #fff);
  transition: box-shadow 0.2s ease-in-out;
}
[data-theme=dark] .accordion-item {
  background-color: var(--color-box, #18181b);
  border-color: var(--color-border, rgba(255, 255, 255, 0.1));
}
.accordion-item:hover {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
[data-theme=dark] .accordion-item:hover {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}

.accordion-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  padding: var(--spacing-4, 1rem) var(--spacing-5, 1.25rem);
  background-color: transparent;
  border: none;
  color: var(--color-text, #4c5059);
  font-size: 1rem;
  font-weight: 600;
  text-align: left;
  cursor: pointer;
  transition: background-color 0.15s ease-in-out, color 0.15s ease-in-out;
}
[data-theme=dark] .accordion-header {
  color: var(--color-text, #e4e4e7);
}
.accordion-header:hover {
  background-color: rgba(0, 0, 0, 0.03);
}
[data-theme=dark] .accordion-header:hover {
  background-color: rgba(255, 255, 255, 0.05);
}
.accordion-header:focus-visible {
  outline: 2px solid var(--color-primary, #31a9c7);
  outline-offset: -2px;
  z-index: 1;
}
.accordion-header::after {
  content: "";
  width: 1.25rem;
  height: 1.25rem;
  flex-shrink: 0;
  margin-left: auto;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%234c5059' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
  transition: transform 0.2s ease-in-out;
}
[data-theme=dark] .accordion-header::after {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23e4e4e7' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
}
.accordion-header[aria-expanded=true]::after {
  transform: rotate(180deg);
}
@media (prefers-reduced-motion: reduce) {
  .accordion-header::after {
    transition: none;
  }
}

.accordion-panel {
  display: grid;
  grid-template-rows: 0fr;
  overflow: hidden;
  transition: grid-template-rows 0.3s ease-in-out;
}
.accordion-panel > * {
  min-height: 0;
}
.accordion-panel.active, .accordion-panel[aria-hidden=false] {
  grid-template-rows: 1fr;
}
.accordion-panel.active > *, .accordion-panel[aria-hidden=false] > * {
  padding: var(--spacing-4, 1rem) var(--spacing-5, 1.25rem);
  border-top: 1px solid var(--color-border, rgba(0, 0, 0, 0.1));
}
[data-theme=dark] .accordion-panel.active > *, [data-theme=dark] .accordion-panel[aria-hidden=false] > * {
  border-color: var(--color-border, rgba(255, 255, 255, 0.1));
}
@media (prefers-reduced-motion: reduce) {
  .accordion-panel {
    transition: none;
  }
}

.accordion-flush .accordion-item {
  border: none;
  border-radius: 0;
  border-bottom: 1px solid var(--color-border, rgba(0, 0, 0, 0.1));
}
[data-theme=dark] .accordion-flush .accordion-item {
  border-color: var(--color-border, rgba(255, 255, 255, 0.1));
}
.accordion-flush .accordion-item:last-child {
  border-bottom: none;
}
.accordion-flush .accordion-item:hover {
  box-shadow: none;
}

.accordion-compact .accordion-header {
  padding: var(--spacing-3, 0.75rem) var(--spacing-4, 1rem);
  font-size: 0.9375rem;
}
.accordion-compact .accordion-panel.active > *,
.accordion-compact .accordion-panel[aria-hidden=false] > * {
  padding: var(--spacing-3, 0.75rem) var(--spacing-4, 1rem);
}

.accordion-always-open .accordion-item {
  margin-bottom: var(--spacing-2, 0.5rem);
}
.accordion-always-open .accordion-item:last-child {
  margin-bottom: 0;
}

.pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.25rem;
  padding: var(--spacing-2, 0.5rem) 0;
  list-style: none;
}

.page-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.5rem;
  height: 2.5rem;
  padding: var(--spacing-2, 0.5rem) var(--spacing-3, 0.75rem);
  background-color: var(--color-box, #fff);
  border: 1px solid var(--color-border, rgba(0, 0, 0, 0.1));
  border-radius: 0.375rem;
  color: var(--color-text, #4c5059);
  font-size: 0.9375rem;
  font-weight: 500;
  line-height: 1;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  transition: all 0.15s ease-in-out;
}
[data-theme=dark] .page-link {
  background-color: var(--color-box, #18181b);
  border-color: var(--color-border, rgba(255, 255, 255, 0.1));
  color: var(--color-text, #e4e4e7);
}
.page-link:hover:not(.active):not(.disabled) {
  background-color: var(--color-primary-light, #e8f5f9);
  border-color: var(--color-primary, #31a9c7);
  color: var(--color-primary, #31a9c7);
}
[data-theme=dark] .page-link:hover:not(.active):not(.disabled) {
  background-color: color-mix(in srgb, var(--color-primary) 20%, transparent);
  border-color: var(--color-primary-light, #4ec4df);
  color: var(--color-primary-light, #4ec4df);
}
.page-link:focus-visible {
  outline: 2px solid var(--color-primary, #31a9c7);
  outline-offset: 2px;
  z-index: 1;
}
.page-link.active {
  background-color: var(--color-primary, #31a9c7);
  border-color: var(--color-primary, #31a9c7);
  color: #fff;
  font-weight: 600;
  cursor: default;
}
[data-theme=dark] .page-link.active {
  background-color: var(--color-primary-light, #4ec4df);
  border-color: var(--color-primary-light, #4ec4df);
  color: #000;
}
.page-link.disabled {
  background-color: var(--color-box, #fff);
  border-color: var(--color-border, rgba(0, 0, 0, 0.1));
  color: var(--color-text-disabled, #adb5bd);
  cursor: not-allowed;
  opacity: 0.6;
}
[data-theme=dark] .page-link.disabled {
  background-color: var(--color-box, #18181b);
  border-color: var(--color-border, rgba(255, 255, 255, 0.1));
}

.page-prev,
.page-next {
  font-weight: 600;
}
.page-prev::before, .page-prev::after,
.page-next::before,
.page-next::after {
  content: "";
  width: 1rem;
  height: 1rem;
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
}

.page-prev::before {
  margin-right: 0.25rem;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='15 18 9 12 15 6'%3E%3C/polyline%3E%3C/svg%3E");
}

.page-next::after {
  margin-left: 0.25rem;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 18 15 12 9 6'%3E%3C/polyline%3E%3C/svg%3E");
}

.page-ellipsis {
  padding: 0 var(--spacing-2, 0.5rem);
  background: none;
  border: none;
  color: var(--color-text-muted, #6c757d);
  cursor: default;
}
.page-ellipsis:hover {
  background: none;
  border: none;
  color: var(--color-text-muted, #6c757d);
}

.pagination-pills .page-link {
  border-radius: 2rem;
}

.pagination-sm .page-link {
  min-width: 2rem;
  height: 2rem;
  padding: var(--spacing-1, 0.25rem) var(--spacing-2, 0.5rem);
  font-size: 0.875rem;
}

.pagination-lg .page-link {
  min-width: 3rem;
  height: 3rem;
  padding: var(--spacing-3, 0.75rem) var(--spacing-4, 1rem);
  font-size: 1rem;
}

.pagination-simple {
  justify-content: space-between;
}
.pagination-simple .page-link:not(.page-prev):not(.page-next) {
  display: none;
}

@media (max-width: 48em) {
  .pagination {
    gap: 0.125rem;
  }
  .page-link {
    min-width: 2.25rem;
    height: 2.25rem;
    padding: var(--spacing-1, 0.25rem) var(--spacing-2, 0.5rem);
    font-size: 0.875rem;
  }
  .pagination:not(.pagination-simple) .page-link:not(.page-prev):not(.page-next):not(.active) {
    display: none;
  }
}
@media (prefers-reduced-motion: reduce) {
  .page-link {
    transition: none;
  }
}
.breadcrumb {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--spacing-2, 0.5rem);
  padding: var(--spacing-3, 0.75rem) 0;
  list-style: none;
  font-size: 0.9375rem;
}

.breadcrumb-item {
  display: inline-flex;
  align-items: center;
  color: var(--color-text-muted, #6c757d);
  text-decoration: none;
  transition: color 0.15s ease-in-out;
}
[data-theme=dark] .breadcrumb-item {
  color: var(--color-text-muted, #9ca3af);
}
.breadcrumb-item:not(:last-child)::after {
  content: "/";
  display: inline-block;
  margin-left: var(--spacing-2, 0.5rem);
  color: var(--color-text-muted, #6c757d);
  opacity: 0.5;
}
[data-theme=dark] .breadcrumb-item:not(:last-child)::after {
  color: var(--color-text-muted, #9ca3af);
}
.breadcrumb-item:hover {
  color: var(--color-primary, #31a9c7);
  text-decoration: underline;
}
[data-theme=dark] .breadcrumb-item:hover {
  color: var(--color-primary-light, #4ec4df);
}
.breadcrumb-item:focus-visible {
  outline: 2px solid var(--color-primary, #31a9c7);
  outline-offset: 2px;
  border-radius: 0.25rem;
}
.breadcrumb-item.active {
  color: var(--color-text, #4c5059);
  font-weight: 500;
}
[data-theme=dark] .breadcrumb-item.active {
  color: var(--color-text, #e4e4e7);
}

.breadcrumb-arrow .breadcrumb-item:not(:last-child)::after {
  content: "";
  width: 1rem;
  height: 1rem;
  margin-left: var(--spacing-2, 0.5rem);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 18 15 12 9 6'%3E%3C/polyline%3E%3C/svg%3E");
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
  opacity: 1;
}
[data-theme=dark] .breadcrumb-arrow .breadcrumb-item:not(:last-child)::after {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 18 15 12 9 6'%3E%3C/polyline%3E%3C/svg%3E");
}

.breadcrumb-dot .breadcrumb-item:not(:last-child)::after {
  content: "•";
}

.breadcrumb-gt .breadcrumb-item:not(:last-child)::after {
  content: ">";
}

.breadcrumb-compact {
  padding: var(--spacing-2, 0.5rem) 0;
  font-size: 0.875rem;
  gap: var(--spacing-1, 0.25rem);
}
.breadcrumb-compact .breadcrumb-item:not(:last-child)::after {
  margin-left: var(--spacing-1, 0.25rem);
}

.breadcrumb-bg {
  padding: var(--spacing-3, 0.75rem) var(--spacing-4, 1rem);
  background-color: var(--color-bg, #f9f9f9);
  border-radius: 0.375rem;
}
[data-theme=dark] .breadcrumb-bg {
  background-color: color-mix(in srgb, var(--color-box) 50%, transparent);
}

.breadcrumb-item-icon {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
}
.breadcrumb-item-icon .breadcrumb-icon {
  width: 1rem;
  height: 1rem;
  flex-shrink: 0;
}

@media (max-width: 48em) {
  .breadcrumb {
    font-size: 0.875rem;
  }
  .breadcrumb-responsive .breadcrumb-item:not(:first-child):not(:last-child):not(.breadcrumb-keep) {
    display: none;
  }
  .breadcrumb-responsive .breadcrumb-item:first-child:not(:last-child)::after {
    content: "...";
  }
}
@media (prefers-reduced-motion: reduce) {
  .breadcrumb-item {
    transition: none;
  }
}
.progress {
  display: flex;
  height: 1rem;
  overflow: hidden;
  font-size: 0.75rem;
  background-color: var(--color-bg, #f0f0f0);
  border-radius: 0.375rem;
}
[data-theme=dark] .progress {
  background-color: color-mix(in srgb, var(--color-box) 50%, #000);
}

.progress-bar {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  height: 100%;
  color: #fff;
  text-align: center;
  white-space: nowrap;
  background-color: var(--color-primary, #31a9c7);
  transition: width 0.6s ease;
}
[data-theme=dark] .progress-bar {
  background-color: var(--color-primary-light, #4ec4df);
  color: #000;
}
@media (prefers-reduced-motion: reduce) {
  .progress-bar {
    transition: none;
  }
}

.progress-label {
  font-size: 0.75rem;
  font-weight: 600;
  line-height: 1;
}

.progress-bar-success {
  background-color: var(--color-success, #00a859);
}
[data-theme=dark] .progress-bar-success {
  background-color: var(--color-success-light, #22c55e);
}

.progress-bar-warning {
  background-color: var(--color-warning, #ebbb0c);
  color: #000;
}
[data-theme=dark] .progress-bar-warning {
  background-color: var(--color-warning-light, #fbbf24);
}

.progress-bar-danger {
  background-color: var(--color-danger, #e1323c);
}
[data-theme=dark] .progress-bar-danger {
  background-color: var(--color-danger-light, #ef4444);
}

.progress-bar-info {
  background-color: var(--color-info, #1ec2c2);
}
[data-theme=dark] .progress-bar-info {
  background-color: var(--color-info-light, #22d3ee);
}

.progress-sm {
  height: 0.5rem;
}
.progress-sm .progress-label {
  display: none;
}

.progress-lg {
  height: 1.5rem;
}
.progress-lg .progress-label {
  font-size: 0.875rem;
}

.progress-xl {
  height: 2rem;
}
.progress-xl .progress-label {
  font-size: 1rem;
}

.progress-bar-striped {
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-size: 1rem 1rem;
}

.progress-bar-animated {
  animation: progress-bar-stripes 1s linear infinite;
}
@media (prefers-reduced-motion: reduce) {
  .progress-bar-animated {
    animation: none;
  }
}

@keyframes progress-bar-stripes {
  0% {
    background-position: 1rem 0;
  }
  100% {
    background-position: 0 0;
  }
}
.progress-indeterminate .progress-bar {
  width: 100% !important;
  background: linear-gradient(90deg, transparent, var(--color-primary, #31a9c7), transparent);
  background-size: 50% 100%;
  animation: progress-indeterminate 1.5s ease-in-out infinite;
}
[data-theme=dark] .progress-indeterminate .progress-bar {
  background: linear-gradient(90deg, transparent, var(--color-primary-light, #4ec4df), transparent);
}
@media (prefers-reduced-motion: reduce) {
  .progress-indeterminate .progress-bar {
    animation: none;
    background: var(--color-primary, #31a9c7);
  }
}

@keyframes progress-indeterminate {
  0% {
    background-position: -50% 0;
  }
  100% {
    background-position: 150% 0;
  }
}
.progress-stacked .progress-bar:not(:last-child) {
  border-right: 1px solid rgba(255, 255, 255, 0.2);
}

.progress-vertical {
  flex-direction: column;
  width: 1rem;
  height: 100%;
}
.progress-vertical .progress-bar {
  width: 100%;
  transition: height 0.6s ease;
}
@media (prefers-reduced-motion: reduce) {
  .progress-vertical .progress-bar {
    transition: none;
  }
}
.progress-vertical.progress-sm {
  width: 0.5rem;
}
.progress-vertical.progress-lg {
  width: 1.5rem;
}
.progress-vertical.progress-xl {
  width: 2rem;
}

.progress-with-label {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-2, 0.5rem);
}
.progress-with-label .progress-label-text {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--color-text, #4c5059);
}
[data-theme=dark] .progress-with-label .progress-label-text {
  color: var(--color-text, #e4e4e7);
}
.progress-with-label .progress .progress-label {
  display: none;
}

.progress-rounded {
  border-radius: 2rem;
}
.progress-rounded .progress-bar {
  border-radius: 2rem;
}

.progress-square {
  border-radius: 0;
}
.progress-square .progress-bar {
  border-radius: 0;
}

.spinner {
  display: inline-block;
  width: 2rem;
  height: 2rem;
  border: 0.25rem solid var(--color-border, rgba(0, 0, 0, 0.1));
  border-right-color: var(--color-primary, #31a9c7);
  border-radius: 50%;
  animation: spinner-rotate 0.75s linear infinite;
}
[data-theme=dark] .spinner {
  border-color: rgba(255, 255, 255, 0.1);
  border-right-color: var(--color-primary-light, #4ec4df);
}
@media (prefers-reduced-motion: reduce) {
  .spinner {
    animation: spinner-rotate 1.5s linear infinite;
  }
}

@keyframes spinner-rotate {
  to {
    transform: rotate(360deg);
  }
}
.spinner-sm {
  width: 1rem;
  height: 1rem;
  border-width: 0.15rem;
}

.spinner-lg {
  width: 3rem;
  height: 3rem;
  border-width: 0.35rem;
}

.spinner-xl {
  width: 4rem;
  height: 4rem;
  border-width: 0.5rem;
}

.spinner-primary {
  border-right-color: var(--color-primary, #31a9c7);
}

.spinner-success {
  border-right-color: var(--color-success, #00a859);
}

.spinner-warning {
  border-right-color: var(--color-warning, #ebbb0c);
}

.spinner-danger {
  border-right-color: var(--color-danger, #e1323c);
}

.spinner-info {
  border-right-color: var(--color-info, #1ec2c2);
}

.spinner-light {
  border-color: rgba(255, 255, 255, 0.2);
  border-right-color: #fff;
}

.spinner-dark {
  border-color: rgba(0, 0, 0, 0.05);
  border-right-color: var(--color-text, #4c5059);
}

.spinner-grow {
  background-color: var(--color-primary, #31a9c7);
  border: none;
  opacity: 0;
  animation: spinner-grow 0.75s linear infinite;
}
[data-theme=dark] .spinner-grow {
  background-color: var(--color-primary-light, #4ec4df);
}
@media (prefers-reduced-motion: reduce) {
  .spinner-grow {
    animation: spinner-grow 1.5s linear infinite;
  }
}

@keyframes spinner-grow {
  0% {
    transform: scale(0);
    opacity: 1;
  }
  100% {
    transform: scale(1);
    opacity: 0;
  }
}
.spinner-border {
  border-width: 0.35rem;
}

.spinner-dots {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  width: auto;
  height: auto;
  border: none;
  animation: none;
}
.spinner-dots::before, .spinner-dots::after {
  content: "";
  width: 0.5rem;
  height: 0.5rem;
  background-color: var(--color-primary, #31a9c7);
  border-radius: 50%;
  animation: spinner-dots-bounce 1.4s infinite ease-in-out both;
}
[data-theme=dark] .spinner-dots::before, [data-theme=dark] .spinner-dots::after {
  background-color: var(--color-primary-light, #4ec4df);
}
.spinner-dots::before {
  animation-delay: -0.32s;
}
.spinner-dots {
  background: radial-gradient(circle, var(--color-primary, #31a9c7) 0.5rem, transparent 0.5rem);
  background-position: center;
  background-repeat: no-repeat;
  animation: spinner-dots-bounce 1.4s infinite ease-in-out both;
  animation-delay: -0.16s;
}
.spinner-dots::after {
  animation-delay: 0s;
}
@media (prefers-reduced-motion: reduce) {
  .spinner-dots::before, .spinner-dots::after {
    animation: none;
  }
  .spinner-dots {
    animation: none;
  }
}

@keyframes spinner-dots-bounce {
  0%, 80%, 100% {
    transform: scale(0);
    opacity: 0.5;
  }
  40% {
    transform: scale(1);
    opacity: 1;
  }
}
.spinner-pulse {
  border: none;
  background-color: var(--color-primary, #31a9c7);
  animation: spinner-pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
[data-theme=dark] .spinner-pulse {
  background-color: var(--color-primary-light, #4ec4df);
}
@media (prefers-reduced-motion: reduce) {
  .spinner-pulse {
    animation: spinner-pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite;
  }
}

@keyframes spinner-pulse {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0.3;
  }
}
.loading-overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: rgba(255, 255, 255, 0.9);
  z-index: 9999;
}
[data-theme=dark] .loading-overlay {
  background-color: rgba(0, 0, 0, 0.9);
}
.loading-overlay .spinner {
  width: 3rem;
  height: 3rem;
  border-width: 0.35rem;
}

.btn-loading,
.button-loading {
  position: relative;
  color: transparent !important;
  pointer-events: none;
}
.btn-loading::after,
.button-loading::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 1rem;
  height: 1rem;
  margin: -0.5rem 0 0 -0.5rem;
  border: 0.15rem solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  color: inherit;
  animation: spinner-rotate 0.75s linear infinite;
}

.loading-text {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  color: var(--color-text-muted, #6c757d);
  font-size: 0.9375rem;
}
.loading-text .spinner {
  width: 1.25rem;
  height: 1.25rem;
  border-width: 0.15rem;
}

@media (prefers-reduced-motion: reduce) {
  .spinner,
  .spinner-grow,
  .spinner-pulse,
  .spinner-dots {
    animation-duration: 2s;
  }
}
.skeleton {
  display: block;
  background-color: var(--color-bg, #e0e0e0);
  background-image: linear-gradient(90deg, var(--color-bg, #e0e0e0) 0%, var(--color-box, #f0f0f0) 50%, var(--color-bg, #e0e0e0) 100%);
  background-size: 200% 100%;
  animation: skeleton-loading 1.5s ease-in-out infinite;
  border-radius: 0.25rem;
}
[data-theme=dark] .skeleton {
  background-color: color-mix(in srgb, var(--color-box) 30%, #000);
  background-image: linear-gradient(90deg, color-mix(in srgb, var(--color-box) 30%, #000) 0%, color-mix(in srgb, var(--color-box) 50%, #000) 50%, color-mix(in srgb, var(--color-box) 30%, #000) 100%);
}
@media (prefers-reduced-motion: reduce) {
  .skeleton {
    animation: none;
  }
}

@keyframes skeleton-loading {
  0% {
    background-position: 200% 0;
  }
  100% {
    background-position: -200% 0;
  }
}
.skeleton-text {
  width: 100%;
  height: 1em;
  border-radius: 0.25rem;
}
.skeleton-text.skeleton-text-sm {
  height: 0.875em;
}
.skeleton-text.skeleton-text-lg {
  height: 1.25em;
}

.skeleton-heading {
  width: 60%;
  height: 1.5em;
  margin-bottom: 0.5em;
  border-radius: 0.25rem;
}
.skeleton-heading.skeleton-h1 {
  height: 2em;
}
.skeleton-heading.skeleton-h2 {
  height: 1.75em;
}
.skeleton-heading.skeleton-h3 {
  height: 1.5em;
}

.skeleton-paragraph {
  display: flex;
  flex-direction: column;
  gap: 0.5em;
}
.skeleton-paragraph .skeleton-text:last-child {
  width: 80%;
}

.skeleton-rect {
  width: 100%;
  height: 100px;
}

.skeleton-square {
  width: 100px;
  height: 100px;
}

.skeleton-circle {
  width: 50px;
  height: 50px;
  border-radius: 50%;
}

.skeleton-avatar {
  border-radius: 50%;
}
.skeleton-avatar.skeleton-avatar-sm {
  width: 2rem;
  height: 2rem;
}
.skeleton-avatar.skeleton-avatar-md {
  width: 3rem;
  height: 3rem;
}
.skeleton-avatar.skeleton-avatar-lg {
  width: 4rem;
  height: 4rem;
}
.skeleton-avatar.skeleton-avatar-xl {
  width: 6rem;
  height: 6rem;
}

.skeleton-button {
  width: 100px;
  height: 2.5rem;
  border-radius: 0.375rem;
}
.skeleton-button.skeleton-button-sm {
  height: 2rem;
}
.skeleton-button.skeleton-button-lg {
  height: 3rem;
}
.skeleton-button.skeleton-button-block {
  width: 100%;
}

.skeleton-card {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  padding: 1rem;
  background-color: var(--color-box, #fff);
  border: 1px solid var(--color-border, rgba(0, 0, 0, 0.1));
  border-radius: 0.5rem;
}
[data-theme=dark] .skeleton-card {
  background-color: var(--color-box, #18181b);
  border-color: var(--color-border, rgba(255, 255, 255, 0.1));
}

.skeleton-table-row {
  display: flex;
  gap: 1rem;
  padding: 0.75rem 0;
}
.skeleton-table-row:not(:last-child) {
  border-bottom: 1px solid var(--color-border, rgba(0, 0, 0, 0.1));
}
[data-theme=dark] .skeleton-table-row:not(:last-child) {
  border-color: var(--color-border, rgba(255, 255, 255, 0.1));
}
.skeleton-table-row .skeleton {
  flex: 1;
}

.skeleton-list-item {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 0.75rem 0;
}
.skeleton-list-item .skeleton-avatar {
  flex-shrink: 0;
}
.skeleton-list-item .skeleton-content {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.skeleton-media {
  display: flex;
  gap: 1rem;
}
.skeleton-media .skeleton-image {
  width: 100px;
  height: 100px;
  flex-shrink: 0;
}
.skeleton-media .skeleton-body {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.skeleton-pulse {
  animation: skeleton-pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
@media (prefers-reduced-motion: reduce) {
  .skeleton-pulse {
    animation: none;
  }
}

@keyframes skeleton-pulse {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0.4;
  }
}
.skeleton-wave {
  animation: skeleton-loading 1.5s ease-in-out infinite;
}

.skeleton-static {
  animation: none;
  background-image: none;
}

.skeleton-group {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.skeleton-post .skeleton-heading {
  width: 70%;
  margin-bottom: 1rem;
}
.skeleton-post .skeleton-meta {
  display: flex;
  gap: 1rem;
  margin-bottom: 1rem;
}
.skeleton-post .skeleton-meta .skeleton-text {
  width: 100px;
}
.skeleton-post .skeleton-image {
  width: 100%;
  height: 200px;
  margin-bottom: 1rem;
}
.skeleton-post .skeleton-paragraph .skeleton-text:nth-child(1) {
  width: 100%;
}
.skeleton-post .skeleton-paragraph .skeleton-text:nth-child(2) {
  width: 95%;
}
.skeleton-post .skeleton-paragraph .skeleton-text:nth-child(3) {
  width: 85%;
}

.skeleton-profile {
  display: flex;
  align-items: center;
  gap: 1rem;
}
.skeleton-profile .skeleton-avatar {
  width: 4rem;
  height: 4rem;
}
.skeleton-profile .skeleton-info {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.skeleton-profile .skeleton-info .skeleton-text:first-child {
  width: 150px;
  height: 1.25em;
}
.skeleton-profile .skeleton-info .skeleton-text:last-child {
  width: 200px;
}

@media (prefers-reduced-motion: reduce) {
  .skeleton {
    animation: none;
    background-image: none;
  }
}
.card {
  position: relative;
  display: flex;
  flex-direction: column;
  min-width: 0;
  background-color: var(--color-box, #fff);
  border: 1px solid var(--color-border, rgba(0, 0, 0, 0.1));
  border-radius: 0.5rem;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
  overflow: hidden;
  transition: box-shadow 0.2s ease-in-out, transform 0.2s ease-in-out;
}
[data-theme=dark] .card {
  background-color: var(--color-box, #18181b);
  border-color: var(--color-border, rgba(255, 255, 255, 0.1));
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
}
.card > :last-child {
  margin-bottom: 0;
}

.card-header {
  padding: var(--spacing-4, 1rem) var(--spacing-5, 1.25rem);
  background-color: rgba(0, 0, 0, 0.02);
  border-bottom: 1px solid var(--color-border, rgba(0, 0, 0, 0.1));
  font-weight: 600;
  font-size: 1.125rem;
}
[data-theme=dark] .card-header {
  background-color: rgba(255, 255, 255, 0.03);
  border-color: var(--color-border, rgba(255, 255, 255, 0.1));
}
.card-header:first-child {
  border-radius: calc(0.5rem - 1px) calc(0.5rem - 1px) 0 0;
}
.card-header .card-header-icon {
  width: 1.25rem;
  height: 1.25rem;
  margin-right: 0.5rem;
  vertical-align: middle;
}

.card-body {
  flex: 1 1 auto;
  padding: var(--spacing-5, 1.25rem);
  color: var(--color-text, #4c5059);
}
[data-theme=dark] .card-body {
  color: var(--color-text, #e4e4e7);
}

.card-footer {
  padding: var(--spacing-4, 1rem) var(--spacing-5, 1.25rem);
  background-color: rgba(0, 0, 0, 0.02);
  border-top: 1px solid var(--color-border, rgba(0, 0, 0, 0.1));
}
[data-theme=dark] .card-footer {
  background-color: rgba(255, 255, 255, 0.03);
  border-color: var(--color-border, rgba(255, 255, 255, 0.1));
}
.card-footer:last-child {
  border-radius: 0 0 calc(0.5rem - 1px) calc(0.5rem - 1px);
}

.card-title {
  margin-top: 0;
  margin-bottom: var(--spacing-3, 0.75rem);
  font-size: 1.25rem;
  font-weight: 600;
  line-height: 1.3;
  color: var(--color-text, #4c5059);
}
[data-theme=dark] .card-title {
  color: var(--color-text, #e4e4e7);
}

.card-subtitle {
  margin-top: calc(var(--spacing-3, 0.75rem) * -0.5);
  margin-bottom: var(--spacing-3, 0.75rem);
  font-size: 0.9375rem;
  color: var(--color-text-muted, #6c757d);
}
[data-theme=dark] .card-subtitle {
  color: var(--color-text-muted, #9ca3af);
}

.card-text {
  margin-bottom: var(--spacing-3, 0.75rem);
  line-height: 1.6;
}
.card-text:last-child {
  margin-bottom: 0;
}

.card-img,
.card-img-top,
.card-img-bottom {
  width: 100%;
  height: auto;
}

.card-img,
.card-img-top {
  border-top-left-radius: calc(0.5rem - 1px);
  border-top-right-radius: calc(0.5rem - 1px);
}

.card-img,
.card-img-bottom {
  border-bottom-left-radius: calc(0.5rem - 1px);
  border-bottom-right-radius: calc(0.5rem - 1px);
}

.card-img-overlay {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  padding: var(--spacing-5, 1.25rem);
  border-radius: calc(0.5rem - 1px);
  background: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.6));
  color: #fff;
}

.card-link {
  text-decoration: none;
  color: var(--color-primary, #31a9c7);
}
.card-link:hover {
  text-decoration: underline;
}
.card-link + .card-link {
  margin-left: var(--spacing-5, 1.25rem);
}

.card-actions {
  display: flex;
  align-items: center;
  gap: var(--spacing-2, 0.5rem);
}
.card-actions.card-actions-end {
  justify-content: flex-end;
}
.card-actions.card-actions-center {
  justify-content: center;
}
.card-actions.card-actions-between {
  justify-content: space-between;
}

.card-hover:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
  transform: translateY(-2px);
}
[data-theme=dark] .card-hover:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
}
@media (prefers-reduced-motion: reduce) {
  .card-hover:hover {
    transform: none;
  }
}

a.card,
.card-clickable {
  cursor: pointer;
  text-decoration: none;
  color: inherit;
}
a.card:hover,
.card-clickable:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
  transform: translateY(-2px);
}
[data-theme=dark] a.card:hover,
[data-theme=dark] .card-clickable:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
}
a.card:focus-visible,
.card-clickable:focus-visible {
  outline: 2px solid var(--color-primary, #31a9c7);
  outline-offset: 2px;
}

.card-sm .card-header,
.card-sm .card-footer {
  padding: var(--spacing-3, 0.75rem) var(--spacing-4, 1rem);
  font-size: 1rem;
}
.card-sm .card-body {
  padding: var(--spacing-4, 1rem);
}

.card-lg .card-header,
.card-lg .card-footer {
  padding: var(--spacing-5, 1.25rem) var(--spacing-6, 1.5rem);
  font-size: 1.25rem;
}
.card-lg .card-body {
  padding: var(--spacing-6, 1.5rem);
}

.card-borderless {
  border: none;
}

.card-flat {
  box-shadow: none;
}
.card-flat:hover {
  box-shadow: none;
}

.card-outlined {
  border-width: 2px;
  box-shadow: none;
}

.card-primary {
  border-color: var(--color-primary, #31a9c7);
}
.card-primary .card-header {
  background-color: var(--color-primary, #31a9c7);
  color: #fff;
  border-color: var(--color-primary, #31a9c7);
}

.card-success {
  border-color: var(--color-success, #00a859);
}
.card-success .card-header {
  background-color: var(--color-success, #00a859);
  color: #fff;
  border-color: var(--color-success, #00a859);
}

.card-warning {
  border-color: var(--color-warning, #ebbb0c);
}
.card-warning .card-header {
  background-color: var(--color-warning, #ebbb0c);
  color: #000;
  border-color: var(--color-warning, #ebbb0c);
}

.card-danger {
  border-color: var(--color-danger, #e1323c);
}
.card-danger .card-header {
  background-color: var(--color-danger, #e1323c);
  color: #fff;
  border-color: var(--color-danger, #e1323c);
}

.card-info {
  border-color: var(--color-info, #1ec2c2);
}
.card-info .card-header {
  background-color: var(--color-info, #1ec2c2);
  color: #fff;
  border-color: var(--color-info, #1ec2c2);
}

.card-horizontal {
  flex-direction: row;
}
.card-horizontal .card-img,
.card-horizontal .card-img-top {
  max-width: 40%;
  border-radius: calc(0.5rem - 1px) 0 0 calc(0.5rem - 1px);
}
@media (max-width: 48em) {
  .card-horizontal {
    flex-direction: column;
  }
  .card-horizontal .card-img,
  .card-horizontal .card-img-top {
    max-width: 100%;
    border-radius: calc(0.5rem - 1px) calc(0.5rem - 1px) 0 0;
  }
}

.card-group {
  display: flex;
  flex-flow: row wrap;
  gap: 0;
}
.card-group .card {
  flex: 1 0 0%;
  margin-bottom: 0;
}
.card-group .card:not(:first-child) {
  border-left: 0;
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
}
.card-group .card:not(:last-child) {
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
@media (max-width: 48em) {
  .card-group {
    flex-direction: column;
  }
  .card-group .card:not(:first-child) {
    border-left: 1px solid var(--color-border, rgba(0, 0, 0, 0.1));
    border-top: 0;
    border-radius: 0;
  }
  .card-group .card:first-child {
    border-radius: 0.5rem 0.5rem 0 0;
  }
  .card-group .card:last-child {
    border-radius: 0 0 0.5rem 0.5rem;
  }
}

.card-deck {
  display: flex;
  flex-flow: row wrap;
  gap: var(--spacing-4, 1rem);
}
.card-deck .card {
  flex: 1 0 0%;
}
@media (max-width: 48em) {
  .card-deck {
    flex-direction: column;
  }
}

.card-columns {
  column-count: 3;
  column-gap: var(--spacing-4, 1rem);
}
.card-columns .card {
  display: inline-block;
  width: 100%;
  margin-bottom: var(--spacing-4, 1rem);
  break-inside: avoid;
}
@media (max-width: 64em) {
  .card-columns {
    column-count: 2;
  }
}
@media (max-width: 48em) {
  .card-columns {
    column-count: 1;
  }
}

@media (prefers-reduced-motion: reduce) {
  .card {
    transition: none;
  }
  .card-hover:hover,
  a.card:hover,
  .card-clickable:hover {
    transform: none;
  }
}
.avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 3rem;
  height: 3rem;
  border-radius: 50%;
  background-color: var(--color-gray, #9ca8b3);
  color: #fff;
  font-size: 1.125rem;
  font-weight: 600;
  text-align: center;
  text-transform: uppercase;
  line-height: 1;
  overflow: hidden;
  flex-shrink: 0;
}
.avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.avatar-xs {
  width: 1.5rem;
  height: 1.5rem;
  font-size: 0.625rem;
}

.avatar-sm {
  width: 2rem;
  height: 2rem;
  font-size: 0.75rem;
}

.avatar-md {
  width: 3rem;
  height: 3rem;
  font-size: 1.125rem;
}

.avatar-lg {
  width: 4rem;
  height: 4rem;
  font-size: 1.5rem;
}

.avatar-xl {
  width: 6rem;
  height: 6rem;
  font-size: 2rem;
}

.avatar-xxl {
  width: 8rem;
  height: 8rem;
  font-size: 2.5rem;
}

.avatar-square {
  border-radius: 0.375rem;
}

.avatar-rounded {
  border-radius: 0.75rem;
}

.avatar-bordered {
  border: 2px solid var(--color-box, #fff);
  box-shadow: 0 0 0 1px var(--color-border, rgba(0, 0, 0, 0.1));
}
[data-theme=dark] .avatar-bordered {
  border-color: var(--color-box, #18181b);
  box-shadow: 0 0 0 1px var(--color-border, rgba(255, 255, 255, 0.1));
}
.avatar-bordered.avatar-xs {
  border-width: 1px;
}
.avatar-bordered.avatar-xl, .avatar-bordered.avatar-xxl {
  border-width: 3px;
}

.avatar-primary {
  background-color: var(--color-primary, #31a9c7);
}
[data-theme=dark] .avatar-primary {
  background-color: var(--color-primary-light, #4ec4df);
  color: #000;
}

.avatar-secondary {
  background-color: var(--color-secondary, #596784);
}

.avatar-success {
  background-color: var(--color-success, #00a859);
}
[data-theme=dark] .avatar-success {
  background-color: var(--color-success-light, #22c55e);
  color: #000;
}

.avatar-warning {
  background-color: var(--color-warning, #ebbb0c);
  color: #000;
}

.avatar-danger {
  background-color: var(--color-danger, #e1323c);
}

.avatar-info {
  background-color: var(--color-info, #1ec2c2);
}
[data-theme=dark] .avatar-info {
  background-color: var(--color-info-light, #22d3ee);
  color: #000;
}

.avatar-elegant {
  background-color: var(--color-elegant, #48626f);
}

.avatar-status {
  position: relative;
}
.avatar-status::after {
  content: "";
  position: absolute;
  bottom: 0;
  right: 0;
  width: 25%;
  height: 25%;
  min-width: 0.5rem;
  min-height: 0.5rem;
  border-radius: 50%;
  border: 2px solid var(--color-box, #fff);
  background-color: var(--color-gray, #9ca8b3);
}
[data-theme=dark] .avatar-status::after {
  border-color: var(--color-box, #18181b);
}
.avatar-status.avatar-status-online::after {
  background-color: var(--color-success, #00a859);
}
.avatar-status.avatar-status-offline::after {
  background-color: var(--color-gray, #9ca8b3);
}
.avatar-status.avatar-status-away::after {
  background-color: var(--color-warning, #ebbb0c);
}
.avatar-status.avatar-status-busy::after {
  background-color: var(--color-danger, #e1323c);
}

.avatar-group {
  display: inline-flex;
  align-items: center;
  padding-left: 0.5rem;
}
.avatar-group .avatar {
  margin-left: -0.5rem;
  border: 2px solid var(--color-box, #fff);
  transition: transform 0.2s ease-in-out, z-index 0s 0.2s;
}
[data-theme=dark] .avatar-group .avatar {
  border-color: var(--color-box, #18181b);
}
.avatar-group .avatar:hover {
  transform: translateY(-0.25rem);
  z-index: 10;
  transition: transform 0.2s ease-in-out, z-index 0s;
}
@media (prefers-reduced-motion: reduce) {
  .avatar-group .avatar {
    transition: none;
  }
  .avatar-group .avatar:hover {
    transform: none;
  }
}
.avatar-group .avatar-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 3rem;
  height: 3rem;
  margin-left: -0.5rem;
  padding: 0 0.75rem;
  border: 2px solid var(--color-box, #fff);
  border-radius: 2rem;
  background-color: var(--color-bg, #f0f0f0);
  color: var(--color-text, #4c5059);
  font-size: 0.875rem;
  font-weight: 600;
}
[data-theme=dark] .avatar-group .avatar-count {
  border-color: var(--color-box, #18181b);
  background-color: color-mix(in srgb, var(--color-box) 50%, #000);
  color: var(--color-text, #e4e4e7);
}
.avatar-group.avatar-group-sm .avatar {
  width: 2rem;
  height: 2rem;
  margin-left: -0.375rem;
}
.avatar-group.avatar-group-sm .avatar-count {
  height: 2rem;
  min-width: 2rem;
  padding: 0 0.5rem;
  font-size: 0.75rem;
}
.avatar-group.avatar-group-lg .avatar {
  width: 4rem;
  height: 4rem;
  margin-left: -0.75rem;
  border-width: 3px;
}
.avatar-group.avatar-group-lg .avatar-count {
  height: 4rem;
  min-width: 4rem;
  padding: 0 1rem;
  border-width: 3px;
  font-size: 1rem;
}

.avatar-icon .avatar-icon-img {
  width: 60%;
  height: 60%;
}

.avatar-placeholder {
  background: linear-gradient(90deg, var(--color-bg, #e0e0e0) 0%, var(--color-box, #f0f0f0) 50%, var(--color-bg, #e0e0e0) 100%);
  background-size: 200% 100%;
  animation: avatar-loading 1.5s ease-in-out infinite;
}
[data-theme=dark] .avatar-placeholder {
  background: linear-gradient(90deg, color-mix(in srgb, var(--color-box) 30%, #000) 0%, color-mix(in srgb, var(--color-box) 50%, #000) 50%, color-mix(in srgb, var(--color-box) 30%, #000) 100%);
}
@media (prefers-reduced-motion: reduce) {
  .avatar-placeholder {
    animation: none;
  }
}

@keyframes avatar-loading {
  0% {
    background-position: 200% 0;
  }
  100% {
    background-position: -200% 0;
  }
}
a.avatar,
button.avatar,
.avatar-clickable {
  cursor: pointer;
  transition: transform 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
a.avatar:hover,
button.avatar:hover,
.avatar-clickable:hover {
  transform: scale(1.05);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
}
[data-theme=dark] a.avatar:hover,
[data-theme=dark] button.avatar:hover,
[data-theme=dark] .avatar-clickable:hover {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.5);
}
a.avatar:focus-visible,
button.avatar:focus-visible,
.avatar-clickable:focus-visible {
  outline: 2px solid var(--color-primary, #31a9c7);
  outline-offset: 2px;
}
a.avatar:active,
button.avatar:active,
.avatar-clickable:active {
  transform: scale(0.95);
}
@media (prefers-reduced-motion: reduce) {
  a.avatar,
  button.avatar,
  .avatar-clickable {
    transition: none;
  }
  a.avatar:hover, a.avatar:active,
  button.avatar:hover,
  button.avatar:active,
  .avatar-clickable:hover,
  .avatar-clickable:active {
    transform: none;
  }
}

.avatar-list {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-3, 0.75rem);
}
.avatar-list .avatar-list-item {
  display: flex;
  align-items: center;
  gap: var(--spacing-3, 0.75rem);
}
.avatar-list .avatar-list-item .avatar-info {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.avatar-list .avatar-list-item .avatar-info .avatar-name {
  font-weight: 600;
  color: var(--color-text, #4c5059);
}
[data-theme=dark] .avatar-list .avatar-list-item .avatar-info .avatar-name {
  color: var(--color-text, #e4e4e7);
}
.avatar-list .avatar-list-item .avatar-info .avatar-meta {
  font-size: 0.875rem;
  color: var(--color-text-muted, #6c757d);
}
[data-theme=dark] .avatar-list .avatar-list-item .avatar-info .avatar-meta {
  color: var(--color-text-muted, #9ca3af);
}

.form-control.is-valid, .form-group.has-success .form-control,
input.is-valid,
.form-group.has-success input,
textarea.is-valid,
.form-group.has-success textarea,
select.is-valid,
.form-group.has-success select,
.was-validated .form-control:valid,
.was-validated input:valid,
.was-validated textarea:valid,
.was-validated select:valid {
  border-color: var(--color-success, #00a859);
  padding-right: calc(1.5em + 0.75rem);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%2300a859' viewBox='0 0 16 16'%3E%3Cpath d='M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right calc(0.375em + 0.1875rem) center;
  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}
[data-theme=dark] .form-control.is-valid, [data-theme=dark] .form-group.has-success .form-control, .form-group.has-success [data-theme=dark] .form-control,
[data-theme=dark] input.is-valid,
[data-theme=dark] .form-group.has-success input,
.form-group.has-success [data-theme=dark] input,
[data-theme=dark] textarea.is-valid,
[data-theme=dark] .form-group.has-success textarea,
.form-group.has-success [data-theme=dark] textarea,
[data-theme=dark] select.is-valid,
[data-theme=dark] .form-group.has-success select,
.form-group.has-success [data-theme=dark] select,
[data-theme=dark] .was-validated .form-control:valid,
[data-theme=dark] .was-validated input:valid,
[data-theme=dark] .was-validated textarea:valid,
[data-theme=dark] .was-validated select:valid {
  border-color: var(--color-success-light, #22c55e);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%2322c55e' viewBox='0 0 16 16'%3E%3Cpath d='M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0z'/%3E%3C/svg%3E");
}
.form-control.is-valid:focus, .form-group.has-success .form-control:focus,
input.is-valid:focus,
.form-group.has-success input:focus,
textarea.is-valid:focus,
.form-group.has-success textarea:focus,
select.is-valid:focus,
.form-group.has-success select:focus,
.was-validated .form-control:valid:focus,
.was-validated input:valid:focus,
.was-validated textarea:valid:focus,
.was-validated select:valid:focus {
  border-color: var(--color-success, #00a859);
  box-shadow: 0 0 0 0.2rem rgba(0, 168, 89, 0.25);
}
[data-theme=dark] .form-control.is-valid:focus, [data-theme=dark] .form-group.has-success .form-control:focus, .form-group.has-success [data-theme=dark] .form-control:focus,
[data-theme=dark] input.is-valid:focus,
[data-theme=dark] .form-group.has-success input:focus,
.form-group.has-success [data-theme=dark] input:focus,
[data-theme=dark] textarea.is-valid:focus,
[data-theme=dark] .form-group.has-success textarea:focus,
.form-group.has-success [data-theme=dark] textarea:focus,
[data-theme=dark] select.is-valid:focus,
[data-theme=dark] .form-group.has-success select:focus,
.form-group.has-success [data-theme=dark] select:focus,
[data-theme=dark] .was-validated .form-control:valid:focus,
[data-theme=dark] .was-validated input:valid:focus,
[data-theme=dark] .was-validated textarea:valid:focus,
[data-theme=dark] .was-validated select:valid:focus {
  border-color: var(--color-success-light, #22c55e);
  box-shadow: 0 0 0 0.2rem rgba(34, 197, 94, 0.25);
}

.form-control.is-invalid, .form-group.has-error .form-control,
input.is-invalid,
.form-group.has-error input,
textarea.is-invalid,
.form-group.has-error textarea,
select.is-invalid,
.form-group.has-error select,
.was-validated .form-control:invalid,
.was-validated input:invalid,
.was-validated textarea:invalid,
.was-validated select:invalid {
  border-color: var(--color-danger, #e1323c);
  padding-right: calc(1.5em + 0.75rem);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23e1323c' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z'/%3E%3Cpath d='M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0zM7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 4.995z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right calc(0.375em + 0.1875rem) center;
  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}
[data-theme=dark] .form-control.is-invalid, [data-theme=dark] .form-group.has-error .form-control, .form-group.has-error [data-theme=dark] .form-control,
[data-theme=dark] input.is-invalid,
[data-theme=dark] .form-group.has-error input,
.form-group.has-error [data-theme=dark] input,
[data-theme=dark] textarea.is-invalid,
[data-theme=dark] .form-group.has-error textarea,
.form-group.has-error [data-theme=dark] textarea,
[data-theme=dark] select.is-invalid,
[data-theme=dark] .form-group.has-error select,
.form-group.has-error [data-theme=dark] select,
[data-theme=dark] .was-validated .form-control:invalid,
[data-theme=dark] .was-validated input:invalid,
[data-theme=dark] .was-validated textarea:invalid,
[data-theme=dark] .was-validated select:invalid {
  border-color: var(--color-danger-light, #ef4444);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23ef4444' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z'/%3E%3Cpath d='M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0zM7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 4.995z'/%3E%3C/svg%3E");
}
.form-control.is-invalid:focus, .form-group.has-error .form-control:focus,
input.is-invalid:focus,
.form-group.has-error input:focus,
textarea.is-invalid:focus,
.form-group.has-error textarea:focus,
select.is-invalid:focus,
.form-group.has-error select:focus,
.was-validated .form-control:invalid:focus,
.was-validated input:invalid:focus,
.was-validated textarea:invalid:focus,
.was-validated select:invalid:focus {
  border-color: var(--color-danger, #e1323c);
  box-shadow: 0 0 0 0.2rem rgba(225, 50, 60, 0.25);
}
[data-theme=dark] .form-control.is-invalid:focus, [data-theme=dark] .form-group.has-error .form-control:focus, .form-group.has-error [data-theme=dark] .form-control:focus,
[data-theme=dark] input.is-invalid:focus,
[data-theme=dark] .form-group.has-error input:focus,
.form-group.has-error [data-theme=dark] input:focus,
[data-theme=dark] textarea.is-invalid:focus,
[data-theme=dark] .form-group.has-error textarea:focus,
.form-group.has-error [data-theme=dark] textarea:focus,
[data-theme=dark] select.is-invalid:focus,
[data-theme=dark] .form-group.has-error select:focus,
.form-group.has-error [data-theme=dark] select:focus,
[data-theme=dark] .was-validated .form-control:invalid:focus,
[data-theme=dark] .was-validated input:invalid:focus,
[data-theme=dark] .was-validated textarea:invalid:focus,
[data-theme=dark] .was-validated select:invalid:focus {
  border-color: var(--color-danger-light, #ef4444);
  box-shadow: 0 0 0 0.2rem rgba(239, 68, 68, 0.25);
}

.form-control.is-warning, .form-group.has-warning .form-control,
input.is-warning,
.form-group.has-warning input,
textarea.is-warning,
.form-group.has-warning textarea,
select.is-warning,
.form-group.has-warning select {
  border-color: var(--color-warning, #ebbb0c);
  padding-right: calc(1.5em + 0.75rem);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23ebbb0c' viewBox='0 0 16 16'%3E%3Cpath d='M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right calc(0.375em + 0.1875rem) center;
  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}
[data-theme=dark] .form-control.is-warning, [data-theme=dark] .form-group.has-warning .form-control, .form-group.has-warning [data-theme=dark] .form-control,
[data-theme=dark] input.is-warning,
[data-theme=dark] .form-group.has-warning input,
.form-group.has-warning [data-theme=dark] input,
[data-theme=dark] textarea.is-warning,
[data-theme=dark] .form-group.has-warning textarea,
.form-group.has-warning [data-theme=dark] textarea,
[data-theme=dark] select.is-warning,
[data-theme=dark] .form-group.has-warning select,
.form-group.has-warning [data-theme=dark] select {
  border-color: var(--color-warning-light, #fbbf24);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23fbbf24' viewBox='0 0 16 16'%3E%3Cpath d='M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z'/%3E%3C/svg%3E");
}
.form-control.is-warning:focus, .form-group.has-warning .form-control:focus,
input.is-warning:focus,
.form-group.has-warning input:focus,
textarea.is-warning:focus,
.form-group.has-warning textarea:focus,
select.is-warning:focus,
.form-group.has-warning select:focus {
  border-color: var(--color-warning, #ebbb0c);
  box-shadow: 0 0 0 0.2rem rgba(235, 187, 12, 0.25);
}
[data-theme=dark] .form-control.is-warning:focus, [data-theme=dark] .form-group.has-warning .form-control:focus, .form-group.has-warning [data-theme=dark] .form-control:focus,
[data-theme=dark] input.is-warning:focus,
[data-theme=dark] .form-group.has-warning input:focus,
.form-group.has-warning [data-theme=dark] input:focus,
[data-theme=dark] textarea.is-warning:focus,
[data-theme=dark] .form-group.has-warning textarea:focus,
.form-group.has-warning [data-theme=dark] textarea:focus,
[data-theme=dark] select.is-warning:focus,
[data-theme=dark] .form-group.has-warning select:focus,
.form-group.has-warning [data-theme=dark] select:focus {
  border-color: var(--color-warning-light, #fbbf24);
  box-shadow: 0 0 0 0.2rem rgba(251, 191, 36, 0.25);
}

.valid-feedback,
.invalid-feedback,
.warning-feedback {
  display: none;
  width: 100%;
  margin-top: 0.25rem;
  font-size: 0.875rem;
  line-height: 1.4;
}

.valid-feedback {
  color: var(--color-success, #00a859);
}
[data-theme=dark] .valid-feedback {
  color: var(--color-success-light, #22c55e);
}

.invalid-feedback {
  color: var(--color-danger, #e1323c);
}
[data-theme=dark] .invalid-feedback {
  color: var(--color-danger-light, #ef4444);
}

.warning-feedback {
  color: var(--color-warning, #ebbb0c);
}
[data-theme=dark] .warning-feedback {
  color: var(--color-warning-light, #fbbf24);
}

.is-valid ~ .valid-feedback, .form-group.has-success .form-control ~ .valid-feedback,
.form-group.has-success input ~ .valid-feedback,
.form-group.has-success textarea ~ .valid-feedback,
.form-group.has-success select ~ .valid-feedback,
.is-valid ~ .valid-tooltip,
.form-group.has-success .form-control ~ .valid-tooltip,
.form-group.has-success input ~ .valid-tooltip,
.form-group.has-success textarea ~ .valid-tooltip,
.form-group.has-success select ~ .valid-tooltip,
.was-validated :valid ~ .valid-feedback,
.was-validated :valid ~ .valid-tooltip {
  display: block;
}

.is-invalid ~ .invalid-feedback, .form-group.has-error .form-control ~ .invalid-feedback,
.form-group.has-error input ~ .invalid-feedback,
.form-group.has-error textarea ~ .invalid-feedback,
.form-group.has-error select ~ .invalid-feedback,
.is-invalid ~ .invalid-tooltip,
.form-group.has-error .form-control ~ .invalid-tooltip,
.form-group.has-error input ~ .invalid-tooltip,
.form-group.has-error textarea ~ .invalid-tooltip,
.form-group.has-error select ~ .invalid-tooltip,
.was-validated :invalid ~ .invalid-feedback,
.was-validated :invalid ~ .invalid-tooltip {
  display: block;
}

.is-warning ~ .warning-feedback, .form-group.has-warning .form-control ~ .warning-feedback,
.form-group.has-warning input ~ .warning-feedback,
.form-group.has-warning textarea ~ .warning-feedback,
.form-group.has-warning select ~ .warning-feedback,
.is-warning ~ .warning-tooltip,
.form-group.has-warning .form-control ~ .warning-tooltip,
.form-group.has-warning input ~ .warning-tooltip,
.form-group.has-warning textarea ~ .warning-tooltip,
.form-group.has-warning select ~ .warning-tooltip {
  display: block;
}

.valid-tooltip,
.invalid-tooltip,
.warning-tooltip {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 5;
  display: none;
  max-width: 100%;
  padding: 0.5rem 0.75rem;
  margin-top: 0.1rem;
  font-size: 0.875rem;
  line-height: 1.4;
  color: #fff;
  background-color: rgba(0, 0, 0, 0.9);
  border-radius: 0.375rem;
}

.valid-tooltip {
  background-color: var(--color-success, #00a859);
}

.invalid-tooltip {
  background-color: var(--color-danger, #e1323c);
}

.warning-tooltip {
  background-color: var(--color-warning, #ebbb0c);
  color: #000;
}

.form-check-input.is-valid, .form-group.has-success .form-check-input.form-control,
.form-group.has-success input.form-check-input,
.form-group.has-success textarea.form-check-input,
.form-group.has-success select.form-check-input, .form-check-input.was-validated:valid {
  border-color: var(--color-success, #00a859);
}
.form-check-input.is-valid:checked, .form-group.has-success .form-check-input.form-control:checked,
.form-group.has-success input.form-check-input:checked,
.form-group.has-success textarea.form-check-input:checked,
.form-group.has-success select.form-check-input:checked, .form-check-input.was-validated:valid:checked {
  background-color: var(--color-success, #00a859);
}
.form-check-input.is-valid:focus, .form-group.has-success .form-check-input.form-control:focus,
.form-group.has-success input.form-check-input:focus,
.form-group.has-success textarea.form-check-input:focus,
.form-group.has-success select.form-check-input:focus, .form-check-input.was-validated:valid:focus {
  box-shadow: 0 0 0 0.2rem rgba(0, 168, 89, 0.25);
}
.form-check-input.is-valid ~ .form-check-label, .form-group.has-success .form-check-input.form-control ~ .form-check-label,
.form-group.has-success input.form-check-input ~ .form-check-label,
.form-group.has-success textarea.form-check-input ~ .form-check-label,
.form-group.has-success select.form-check-input ~ .form-check-label, .form-check-input.was-validated:valid ~ .form-check-label {
  color: var(--color-success, #00a859);
}
.form-check-input.is-invalid, .form-group.has-error .form-check-input.form-control,
.form-group.has-error input.form-check-input,
.form-group.has-error textarea.form-check-input,
.form-group.has-error select.form-check-input, .form-check-input.was-validated:invalid {
  border-color: var(--color-danger, #e1323c);
}
.form-check-input.is-invalid:checked, .form-group.has-error .form-check-input.form-control:checked,
.form-group.has-error input.form-check-input:checked,
.form-group.has-error textarea.form-check-input:checked,
.form-group.has-error select.form-check-input:checked, .form-check-input.was-validated:invalid:checked {
  background-color: var(--color-danger, #e1323c);
}
.form-check-input.is-invalid:focus, .form-group.has-error .form-check-input.form-control:focus,
.form-group.has-error input.form-check-input:focus,
.form-group.has-error textarea.form-check-input:focus,
.form-group.has-error select.form-check-input:focus, .form-check-input.was-validated:invalid:focus {
  box-shadow: 0 0 0 0.2rem rgba(225, 50, 60, 0.25);
}
.form-check-input.is-invalid ~ .form-check-label, .form-group.has-error .form-check-input.form-control ~ .form-check-label,
.form-group.has-error input.form-check-input ~ .form-check-label,
.form-group.has-error textarea.form-check-input ~ .form-check-label,
.form-group.has-error select.form-check-input ~ .form-check-label, .form-check-input.was-validated:invalid ~ .form-check-label {
  color: var(--color-danger, #e1323c);
}

select.is-valid, .form-group.has-success select.form-control,
.form-group.has-success select,
select.is-invalid,
.form-group.has-error select.form-control,
.form-group.has-error select,
select.is-warning,
.form-group.has-warning select.form-control,
.form-group.has-warning select {
  background-position: right 0.75rem center, center right 2rem;
  background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}

textarea.is-valid, .form-group.has-success textarea.form-control,
.form-group.has-success textarea,
textarea.is-invalid,
.form-group.has-error textarea.form-control,
.form-group.has-error textarea,
textarea.is-warning,
.form-group.has-warning textarea.form-control,
.form-group.has-warning textarea {
  background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
}

.form-group.has-success .form-label,
.form-group.has-success label {
  color: var(--color-success, #00a859);
}
.form-group.has-error .form-label,
.form-group.has-error label {
  color: var(--color-danger, #e1323c);
}
.form-group.has-warning .form-label,
.form-group.has-warning label {
  color: var(--color-warning, #ebbb0c);
}

.form-text {
  display: block;
  margin-top: 0.25rem;
  font-size: 0.875rem;
  color: var(--color-text-muted, #6c757d);
  line-height: 1.4;
}
[data-theme=dark] .form-text {
  color: var(--color-text-muted, #9ca3af);
}

.required::after,
.form-required::after {
  content: " *";
  color: var(--color-danger, #e1323c);
}

.dropdown {
  position: relative;
  display: inline-block;
}

.dropdown-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  cursor: pointer;
}
.dropdown-toggle::after {
  content: "";
  display: inline-block;
  width: 0.75em;
  height: 0.75em;
  margin-left: 0.25em;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
  transition: transform 0.2s ease-in-out;
}
.dropdown-toggle[aria-expanded=true]::after {
  transform: rotate(180deg);
}
@media (prefers-reduced-motion: reduce) {
  .dropdown-toggle::after {
    transition: none;
  }
}

.dropdown-toggle-no-caret::after {
  display: none;
}

.dropdown-menu {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1000;
  display: none;
  min-width: 10rem;
  padding: 0.5rem 0;
  margin: 0.125rem 0 0;
  font-size: 0.9375rem;
  color: var(--color-text, #4c5059);
  text-align: left;
  list-style: none;
  background-color: var(--color-box, #fff);
  background-clip: padding-box;
  border: 1px solid var(--color-border, rgba(0, 0, 0, 0.1));
  border-radius: 0.375rem;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
  animation: dropdown-fade-in 0.15s ease-out;
}
[data-theme=dark] .dropdown-menu {
  background-color: var(--color-box, #18181b);
  border-color: var(--color-border, rgba(255, 255, 255, 0.1));
  color: var(--color-text, #e4e4e7);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
}
.dropdown-menu.show, .dropdown-menu[aria-hidden=false] {
  display: block;
}
@media (prefers-reduced-motion: reduce) {
  .dropdown-menu {
    animation: none;
  }
}

@keyframes dropdown-fade-in {
  from {
    opacity: 0;
    transform: translateY(-0.5rem);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.dropdown-item {
  display: block;
  width: 100%;
  padding: 0.5rem 1rem;
  clear: both;
  font-weight: 400;
  color: var(--color-text, #4c5059);
  text-align: inherit;
  text-decoration: none;
  white-space: nowrap;
  background-color: transparent;
  border: 0;
  cursor: pointer;
  transition: background-color 0.15s ease-in-out, color 0.15s ease-in-out;
}
[data-theme=dark] .dropdown-item {
  color: var(--color-text, #e4e4e7);
}
.dropdown-item:hover, .dropdown-item:focus {
  color: var(--color-primary, #31a9c7);
  background-color: rgba(0, 0, 0, 0.03);
}
[data-theme=dark] .dropdown-item:hover, [data-theme=dark] .dropdown-item:focus {
  color: var(--color-primary-light, #4ec4df);
  background-color: rgba(255, 255, 255, 0.05);
}
.dropdown-item:focus-visible {
  outline: 2px solid var(--color-primary, #31a9c7);
  outline-offset: -2px;
}
.dropdown-item.active, .dropdown-item:active {
  color: #fff;
  background-color: var(--color-primary, #31a9c7);
}
[data-theme=dark] .dropdown-item.active, [data-theme=dark] .dropdown-item:active {
  color: #000;
  background-color: var(--color-primary-light, #4ec4df);
}
.dropdown-item.disabled, .dropdown-item:disabled {
  color: var(--color-text-disabled, #adb5bd);
  pointer-events: none;
  background-color: transparent;
  opacity: 0.5;
}

.dropdown-header {
  display: block;
  padding: 0.5rem 1rem;
  margin-bottom: 0;
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--color-text-muted, #6c757d);
  white-space: nowrap;
}
[data-theme=dark] .dropdown-header {
  color: var(--color-text-muted, #9ca3af);
}

.dropdown-divider {
  height: 0;
  margin: 0.5rem 0;
  overflow: hidden;
  border-top: 1px solid var(--color-border, rgba(0, 0, 0, 0.1));
}
[data-theme=dark] .dropdown-divider {
  border-color: var(--color-border, rgba(255, 255, 255, 0.1));
}

.dropdown-item-text {
  display: block;
  padding: 0.5rem 1rem;
  color: var(--color-text, #4c5059);
}
[data-theme=dark] .dropdown-item-text {
  color: var(--color-text, #e4e4e7);
}

.dropdown-menu-right {
  right: 0;
  left: auto;
}

.dropdown-menu-center {
  left: 50%;
  transform: translateX(-50%);
}

.dropup .dropdown-menu {
  top: auto;
  bottom: 100%;
  margin-top: 0;
  margin-bottom: 0.125rem;
}
.dropup .dropdown-toggle::after {
  transform: rotate(180deg);
}
.dropup .dropdown-toggle[aria-expanded=true]::after {
  transform: rotate(0deg);
}

.dropend .dropdown-menu {
  top: 0;
  right: auto;
  left: 100%;
  margin-top: 0;
  margin-left: 0.125rem;
}
.dropend .dropdown-toggle::after {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 18 15 12 9 6'%3E%3C/polyline%3E%3C/svg%3E");
}

.dropstart .dropdown-menu {
  top: 0;
  right: 100%;
  left: auto;
  margin-top: 0;
  margin-right: 0.125rem;
}
.dropstart .dropdown-toggle::before {
  content: "";
  display: inline-block;
  width: 0.75em;
  height: 0.75em;
  margin-right: 0.25em;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='15 18 9 12 15 6'%3E%3C/polyline%3E%3C/svg%3E");
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
}
.dropstart .dropdown-toggle::after {
  display: none;
}

.dropdown-item-icon {
  display: inline-flex;
  align-items: center;
  gap: 0.75rem;
}
.dropdown-item-icon .dropdown-icon {
  width: 1.25rem;
  height: 1.25rem;
  flex-shrink: 0;
}

.dropdown-menu-sm {
  min-width: 8rem;
  font-size: 0.875rem;
}
.dropdown-menu-sm .dropdown-item {
  padding: 0.375rem 0.75rem;
}

.dropdown-menu-lg {
  min-width: 15rem;
  font-size: 1rem;
}
.dropdown-menu-lg .dropdown-item {
  padding: 0.75rem 1.25rem;
}

.dropdown-search {
  padding: 0.5rem;
  border-bottom: 1px solid var(--color-border, rgba(0, 0, 0, 0.1));
}
[data-theme=dark] .dropdown-search {
  border-color: var(--color-border, rgba(255, 255, 255, 0.1));
}
.dropdown-search input {
  width: 100%;
  padding: 0.375rem 0.75rem;
  border: 1px solid var(--color-border, rgba(0, 0, 0, 0.2));
  border-radius: 0.25rem;
  font-size: 0.875rem;
}
.dropdown-search input:focus {
  outline: 2px solid var(--color-primary, #31a9c7);
  outline-offset: 0;
}

.dropdown-item-badge {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
}
.dropdown-item-badge .badge {
  margin-left: auto;
}

@media (max-width: 48em) {
  .dropdown-menu-responsive {
    position: fixed;
    top: auto;
    right: 0;
    bottom: 0;
    left: 0;
    width: 100%;
    max-width: 100%;
    margin: 0;
    border-radius: 0.5rem 0.5rem 0 0;
    animation: dropdown-slide-up 0.2s ease-out;
  }
}
@media (max-width: 48em) and (prefers-reduced-motion: reduce) {
  .dropdown-menu-responsive {
    animation: none;
  }
}
@keyframes dropdown-slide-up {
  from {
    transform: translateY(100%);
  }
  to {
    transform: translateY(0);
  }
}
@media (prefers-reduced-motion: reduce) {
  .dropdown-toggle::after {
    transition: none;
  }
  .dropdown-menu {
    animation: none;
  }
  .dropdown-item {
    transition: none;
  }
}
.global-nav {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: 60px;
  background: rgba(255, 255, 255, 0.95);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 2rem;
  z-index: 1000;
}
[data-theme=dark] .global-nav {
  background: rgba(24, 24, 27, 0.95);
  border-color: rgba(255, 255, 255, 0.1);
}

.nav-logo {
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--color-primary);
  text-decoration: none;
}
.nav-logo:hover {
  opacity: 0.8;
}

.nav-links {
  display: flex;
  align-items: center;
  gap: 1.5rem;
}
.nav-links a {
  color: var(--color-text);
  text-decoration: none;
  font-size: 0.875rem;
  font-weight: 500;
  transition: color 0.2s;
}
.nav-links a:hover {
  color: var(--color-primary);
}

@media (max-width: 768px) {
  .global-nav {
    padding: 0 1rem;
  }
  .nav-links {
    gap: 1rem;
  }
  .nav-links a {
    font-size: 0.8rem;
  }
}
.scroll-top {
  position: fixed;
  bottom: 2rem;
  right: 2rem;
  width: 44px;
  height: 44px;
  padding: 0;
  margin: 0;
  background: var(--color-primary);
  color: white;
  border: none;
  border-radius: 50%;
  cursor: pointer;
  opacity: 0;
  visibility: hidden;
  transition: all 0.3s ease;
  z-index: 999;
  font-size: 1.25rem;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
}
.scroll-top.show {
  opacity: 1;
  visibility: visible;
}
.scroll-top:hover {
  background: var(--color-accent, var(--color-primary-dark, #2563eb));
  transform: translateY(-3px);
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.3);
}
.scroll-top:focus {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}
.scroll-top svg {
  width: 20px;
  height: 20px;
  stroke: currentColor;
}

[data-theme=dark] .scroll-top {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
}
[data-theme=dark] .scroll-top:hover {
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.5);
}

@media (max-width: 768px) {
  .scroll-top {
    bottom: 1rem;
    right: 1rem;
    width: 40px;
    height: 40px;
    font-size: 1rem;
  }
}
.theme-toggle {
  width: 32px;
  height: 32px;
  padding: 0;
  background: var(--color-bg);
  border: 1px solid var(--color-border, rgba(0, 0, 0, 0.1));
  border-radius: 6px;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s;
  vertical-align: middle;
  color: var(--color-text);
}
.theme-toggle:hover {
  background: var(--color-box);
  transform: scale(1.05);
}
.theme-toggle:focus {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}
.theme-toggle svg {
  width: 16px;
  height: 16px;
}
.theme-toggle span,
.theme-toggle #theme-icon {
  font-size: 14px;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
}

[data-theme=dark] .theme-toggle {
  background: var(--color-box);
  border-color: rgba(255, 255, 255, 0.1);
}

.theme-toggle-sm {
  width: 28px;
  height: 28px;
}
.theme-toggle-sm svg {
  width: 14px;
  height: 14px;
}

.theme-toggle-lg {
  width: 40px;
  height: 40px;
}
.theme-toggle-lg svg {
  width: 20px;
  height: 20px;
}

.floating-theme-toggle {
  position: fixed;
  top: 1.5rem;
  right: 1.5rem;
  z-index: 1000;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.floating-theme-toggle svg {
  width: 20px;
  height: 20px;
}
.floating-theme-toggle:hover {
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2);
}

[data-theme=dark] .floating-theme-toggle {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
}
[data-theme=dark] .floating-theme-toggle:hover {
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.5);
}

@media (max-width: 768px) {
  .floating-theme-toggle {
    top: 1rem;
    right: 1rem;
    width: 40px;
    height: 40px;
  }
}
/**
 * Code Block Component
 * Syntax highlighting and code display
 * Used in: Documentation, tutorials, code examples
 */
.code-block {
  background: var(--color-bg-code);
  border: 1px solid var(--color-border);
  border-radius: 4px;
  padding: 1rem;
  margin: 1rem 0;
  overflow-x: auto;
  position: relative;
}
.code-block pre {
  margin: 0;
  font-size: 0.9rem;
  background: transparent;
}
.code-block code {
  color: var(--color-text);
  background: var(--color-item-bg-light);
  padding: 0.2em 0.4em;
  border-radius: 3px;
}

/* Copy button */
.copy-button {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  padding: 0.4rem 0.8rem;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--color-text);
  background: var(--color-box);
  border: 1px solid var(--color-border);
  border-radius: 4px;
  cursor: pointer;
  transition: all 0.2s ease;
  z-index: 10;
  display: flex;
  align-items: center;
  justify-content: center;
}
.copy-button:hover {
  background: var(--color-primary);
  color: var(--color-white);
  border-color: var(--color-primary);
}
.copy-button.copied {
  background: var(--color-success);
  color: var(--color-white);
  border-color: var(--color-success);
}
.copy-button:active {
  transform: scale(0.95);
}

/**
 * Demo Box Component
 * Display examples and demonstrations
 * Used in: Component showcases, examples, previews
 */
.demo-box {
  background: var(--color-box);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 1.5rem;
  margin: 1rem 0;
  color: var(--color-text);
}
.demo-box code {
  color: var(--color-text);
  background: var(--color-item-bg-light);
  padding: 0.2em 0.4em;
  border-radius: 3px;
}

/**
 * Color Swatch Component
 * Display color palettes and design tokens
 * Used in: Style guides, color documentation
 */
.color-swatch {
  display: inline-block;
  width: 120px;
  height: 80px;
  border-radius: 8px;
  margin: 0.5rem;
  box-shadow: var(--box-shadow);
  position: relative;
}
.color-swatch-label {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  background: var(--color-light-transparent-lighter);
  padding: 0.25rem;
  font-size: 0.75rem;
  text-align: center;
  border-radius: 0 0 8px 8px;
  color: var(--color-text);
}
.color-swatch-container {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
}

.color-primary {
  color: var(--color-primary);
}
.color-primary-light {
  color: var(--color-primary-light);
}
.color-primary-dark {
  color: var(--color-primary-dark);
}
.color-secondary {
  color: var(--color-secondary);
}
.color-secondary-light {
  color: var(--color-secondary-light);
}
.color-secondary-dark {
  color: var(--color-secondary-dark);
}
.color-moonstone {
  color: var(--color-moonstone);
}
.color-hotpink {
  color: var(--color-hotpink);
}
.color-accent {
  color: var(--color-accent);
}
.color-success {
  color: var(--color-success);
}
.color-warning {
  color: var(--color-warning);
}
.color-danger {
  color: var(--color-danger);
}
.color-info {
  color: var(--color-info);
}
.color-elegant {
  color: var(--color-elegant);
}
.color-dark {
  color: var(--color-dark);
}
.color-light {
  color: var(--color-light);
}
.color-gray {
  color: var(--color-gray);
}

:root {
  /* ----- Global Components ----- */
  --global-component-height: 2.45rem;
  --global-component-line-height: 2.4rem;
  /* ----- Radius ----- */
  --border-radius-all: 3rem;
}

.grid {
  display: grid;
  gap: var(--grid-gap, 1rem);
}

.grid-cols-1 {
  grid-template-columns: repeat(1, 1fr);
}

.grid-cols-2 {
  grid-template-columns: repeat(2, 1fr);
}

.grid-cols-3 {
  grid-template-columns: repeat(3, 1fr);
}

.grid-cols-4 {
  grid-template-columns: repeat(4, 1fr);
}

.grid-cols-5 {
  grid-template-columns: repeat(5, 1fr);
}

.grid-cols-6 {
  grid-template-columns: repeat(6, 1fr);
}

.grid-cols-12 {
  grid-template-columns: repeat(12, 1fr);
}

.grid-rows-1 {
  grid-template-rows: repeat(1, 1fr);
}

.grid-rows-2 {
  grid-template-rows: repeat(2, 1fr);
}

.grid-rows-3 {
  grid-template-rows: repeat(3, 1fr);
}

.grid-rows-4 {
  grid-template-rows: repeat(4, 1fr);
}

.grid-rows-5 {
  grid-template-rows: repeat(5, 1fr);
}

.grid-rows-6 {
  grid-template-rows: repeat(6, 1fr);
}

.grid-auto-fit-sm {
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}

.grid-auto-fit-md {
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
}

.grid-auto-fit-lg {
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}

.grid-auto-fit-xl {
  grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
}

.grid-auto-fill-sm {
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
}

.grid-auto-fill-md {
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
}

.grid-auto-fill-lg {
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
}

.grid-auto-fill-xl {
  grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));
}

.gap-0 {
  gap: 0;
}

.gap-1 {
  gap: 0.25rem;
}

.gap-2 {
  gap: 0.5rem;
}

.gap-3 {
  gap: 0.75rem;
}

.gap-4 {
  gap: 1rem;
}

.gap-5 {
  gap: 1.25rem;
}

.gap-6 {
  gap: 1.5rem;
}

.gap-8 {
  gap: 2rem;
}

.gap-10 {
  gap: 2.5rem;
}

.gap-12 {
  gap: 3rem;
}

.gap-x-0 {
  column-gap: 0;
}

.gap-x-1 {
  column-gap: 0.25rem;
}

.gap-x-2 {
  column-gap: 0.5rem;
}

.gap-x-3 {
  column-gap: 0.75rem;
}

.gap-x-4 {
  column-gap: 1rem;
}

.gap-x-6 {
  column-gap: 1.5rem;
}

.gap-x-8 {
  column-gap: 2rem;
}

.gap-y-0 {
  row-gap: 0;
}

.gap-y-1 {
  row-gap: 0.25rem;
}

.gap-y-2 {
  row-gap: 0.5rem;
}

.gap-y-3 {
  row-gap: 0.75rem;
}

.gap-y-4 {
  row-gap: 1rem;
}

.gap-y-6 {
  row-gap: 1.5rem;
}

.gap-y-8 {
  row-gap: 2rem;
}

.col-span-1 {
  grid-column: span 1;
}

.col-span-2 {
  grid-column: span 2;
}

.col-span-3 {
  grid-column: span 3;
}

.col-span-4 {
  grid-column: span 4;
}

.col-span-5 {
  grid-column: span 5;
}

.col-span-6 {
  grid-column: span 6;
}

.col-span-full {
  grid-column: 1/-1;
}

.row-span-1 {
  grid-row: span 1;
}

.row-span-2 {
  grid-row: span 2;
}

.row-span-3 {
  grid-row: span 3;
}

.row-span-4 {
  grid-row: span 4;
}

.row-span-full {
  grid-row: 1/-1;
}

.col-start-1 {
  grid-column-start: 1;
}

.col-start-2 {
  grid-column-start: 2;
}

.col-start-3 {
  grid-column-start: 3;
}

.col-start-auto {
  grid-column-start: auto;
}

.col-end-1 {
  grid-column-end: 1;
}

.col-end-2 {
  grid-column-end: 2;
}

.col-end-3 {
  grid-column-end: 3;
}

.col-end-auto {
  grid-column-end: auto;
}

.place-items-start {
  place-items: start;
}

.place-items-center {
  place-items: center;
}

.place-items-end {
  place-items: end;
}

.place-items-stretch {
  place-items: stretch;
}

.place-content-start {
  place-content: start;
}

.place-content-center {
  place-content: center;
}

.place-content-end {
  place-content: end;
}

.place-content-between {
  place-content: space-between;
}

.place-content-around {
  place-content: space-around;
}

.place-content-evenly {
  place-content: space-evenly;
}

.place-self-auto {
  place-self: auto;
}

.place-self-start {
  place-self: start;
}

.place-self-center {
  place-self: center;
}

.place-self-end {
  place-self: end;
}

.place-self-stretch {
  place-self: stretch;
}

.grid-flow-row {
  grid-auto-flow: row;
}

.grid-flow-col {
  grid-auto-flow: column;
}

.grid-flow-dense {
  grid-auto-flow: dense;
}

.grid-flow-row-dense {
  grid-auto-flow: row dense;
}

.grid-flow-col-dense {
  grid-auto-flow: column dense;
}

.grid-sidebar-left {
  display: grid;
  grid-template-columns: 250px 1fr;
  gap: 2rem;
}
@media (max-width: 768px) {
  .grid-sidebar-left {
    grid-template-columns: 1fr;
  }
}

.grid-sidebar-right {
  display: grid;
  grid-template-columns: 1fr 250px;
  gap: 2rem;
}
@media (max-width: 768px) {
  .grid-sidebar-right {
    grid-template-columns: 1fr;
  }
}

.grid-holy-grail {
  display: grid;
  grid-template-columns: 200px 1fr 200px;
  grid-template-rows: auto 1fr auto;
  gap: 1rem;
  min-height: 100vh;
}
@media (max-width: 768px) {
  .grid-holy-grail {
    grid-template-columns: 1fr;
  }
}

:root {
  --spacing-0: 0;
  --spacing-1: 0.25rem;
  --spacing-2: 0.5rem;
  --spacing-3: 0.75rem;
  --spacing-4: 1rem;
  --spacing-5: 1.25rem;
  --spacing-6: 1.5rem;
  --spacing-8: 2rem;
  --spacing-10: 2.5rem;
  --spacing-12: 3rem;
  --spacing-16: 4rem;
  --spacing-20: 5rem;
}

.m-0 {
  margin: 0;
}

.mt-0 {
  margin-top: 0;
}

.mr-0 {
  margin-right: 0;
}

.mb-0 {
  margin-bottom: 0;
}

.ml-0 {
  margin-left: 0;
}

.mx-0 {
  margin-left: 0;
  margin-right: 0;
}

.my-0 {
  margin-top: 0;
  margin-bottom: 0;
}

.m-1 {
  margin: 0.25rem;
}

.mt-1 {
  margin-top: 0.25rem;
}

.mr-1 {
  margin-right: 0.25rem;
}

.mb-1 {
  margin-bottom: 0.25rem;
}

.ml-1 {
  margin-left: 0.25rem;
}

.mx-1 {
  margin-left: 0.25rem;
  margin-right: 0.25rem;
}

.my-1 {
  margin-top: 0.25rem;
  margin-bottom: 0.25rem;
}

.m-2 {
  margin: 0.5rem;
}

.mt-2 {
  margin-top: 0.5rem;
}

.mr-2 {
  margin-right: 0.5rem;
}

.mb-2 {
  margin-bottom: 0.5rem;
}

.ml-2 {
  margin-left: 0.5rem;
}

.mx-2 {
  margin-left: 0.5rem;
  margin-right: 0.5rem;
}

.my-2 {
  margin-top: 0.5rem;
  margin-bottom: 0.5rem;
}

.m-3 {
  margin: 0.75rem;
}

.mt-3 {
  margin-top: 0.75rem;
}

.mr-3 {
  margin-right: 0.75rem;
}

.mb-3 {
  margin-bottom: 0.75rem;
}

.ml-3 {
  margin-left: 0.75rem;
}

.mx-3 {
  margin-left: 0.75rem;
  margin-right: 0.75rem;
}

.my-3 {
  margin-top: 0.75rem;
  margin-bottom: 0.75rem;
}

.m-4 {
  margin: 1rem;
}

.mt-4 {
  margin-top: 1rem;
}

.mr-4 {
  margin-right: 1rem;
}

.mb-4 {
  margin-bottom: 1rem;
}

.ml-4 {
  margin-left: 1rem;
}

.mx-4 {
  margin-left: 1rem;
  margin-right: 1rem;
}

.my-4 {
  margin-top: 1rem;
  margin-bottom: 1rem;
}

.m-5 {
  margin: 1.25rem;
}

.mt-5 {
  margin-top: 1.25rem;
}

.mr-5 {
  margin-right: 1.25rem;
}

.mb-5 {
  margin-bottom: 1.25rem;
}

.ml-5 {
  margin-left: 1.25rem;
}

.mx-5 {
  margin-left: 1.25rem;
  margin-right: 1.25rem;
}

.my-5 {
  margin-top: 1.25rem;
  margin-bottom: 1.25rem;
}

.m-6 {
  margin: 1.5rem;
}

.mt-6 {
  margin-top: 1.5rem;
}

.mr-6 {
  margin-right: 1.5rem;
}

.mb-6 {
  margin-bottom: 1.5rem;
}

.ml-6 {
  margin-left: 1.5rem;
}

.mx-6 {
  margin-left: 1.5rem;
  margin-right: 1.5rem;
}

.my-6 {
  margin-top: 1.5rem;
  margin-bottom: 1.5rem;
}

.m-7 {
  margin: 1.75rem;
}

.mt-7 {
  margin-top: 1.75rem;
}

.mr-7 {
  margin-right: 1.75rem;
}

.mb-7 {
  margin-bottom: 1.75rem;
}

.ml-7 {
  margin-left: 1.75rem;
}

.mx-7 {
  margin-left: 1.75rem;
  margin-right: 1.75rem;
}

.my-7 {
  margin-top: 1.75rem;
  margin-bottom: 1.75rem;
}

.m-8 {
  margin: 2rem;
}

.mt-8 {
  margin-top: 2rem;
}

.mr-8 {
  margin-right: 2rem;
}

.mb-8 {
  margin-bottom: 2rem;
}

.ml-8 {
  margin-left: 2rem;
}

.mx-8 {
  margin-left: 2rem;
  margin-right: 2rem;
}

.my-8 {
  margin-top: 2rem;
  margin-bottom: 2rem;
}

.m-9 {
  margin: 2.25rem;
}

.mt-9 {
  margin-top: 2.25rem;
}

.mr-9 {
  margin-right: 2.25rem;
}

.mb-9 {
  margin-bottom: 2.25rem;
}

.ml-9 {
  margin-left: 2.25rem;
}

.mx-9 {
  margin-left: 2.25rem;
  margin-right: 2.25rem;
}

.my-9 {
  margin-top: 2.25rem;
  margin-bottom: 2.25rem;
}

.m-10 {
  margin: 2.5rem;
}

.mt-10 {
  margin-top: 2.5rem;
}

.mr-10 {
  margin-right: 2.5rem;
}

.mb-10 {
  margin-bottom: 2.5rem;
}

.ml-10 {
  margin-left: 2.5rem;
}

.mx-10 {
  margin-left: 2.5rem;
  margin-right: 2.5rem;
}

.my-10 {
  margin-top: 2.5rem;
  margin-bottom: 2.5rem;
}

.m-12 {
  margin: 3rem;
}

.mt-12 {
  margin-top: 3rem;
}

.mr-12 {
  margin-right: 3rem;
}

.mb-12 {
  margin-bottom: 3rem;
}

.ml-12 {
  margin-left: 3rem;
}

.mx-12 {
  margin-left: 3rem;
  margin-right: 3rem;
}

.my-12 {
  margin-top: 3rem;
  margin-bottom: 3rem;
}

.m-16 {
  margin: 4rem;
}

.mt-16 {
  margin-top: 4rem;
}

.mr-16 {
  margin-right: 4rem;
}

.mb-16 {
  margin-bottom: 4rem;
}

.ml-16 {
  margin-left: 4rem;
}

.mx-16 {
  margin-left: 4rem;
  margin-right: 4rem;
}

.my-16 {
  margin-top: 4rem;
  margin-bottom: 4rem;
}

.m-20 {
  margin: 5rem;
}

.mt-20 {
  margin-top: 5rem;
}

.mr-20 {
  margin-right: 5rem;
}

.mb-20 {
  margin-bottom: 5rem;
}

.ml-20 {
  margin-left: 5rem;
}

.mx-20 {
  margin-left: 5rem;
  margin-right: 5rem;
}

.my-20 {
  margin-top: 5rem;
  margin-bottom: 5rem;
}

.m-24 {
  margin: 6rem;
}

.mt-24 {
  margin-top: 6rem;
}

.mr-24 {
  margin-right: 6rem;
}

.mb-24 {
  margin-bottom: 6rem;
}

.ml-24 {
  margin-left: 6rem;
}

.mx-24 {
  margin-left: 6rem;
  margin-right: 6rem;
}

.my-24 {
  margin-top: 6rem;
  margin-bottom: 6rem;
}

.p-0 {
  padding: 0;
}

.pt-0 {
  padding-top: 0;
}

.pr-0 {
  padding-right: 0;
}

.pb-0 {
  padding-bottom: 0;
}

.pl-0 {
  padding-left: 0;
}

.px-0 {
  padding-left: 0;
  padding-right: 0;
}

.py-0 {
  padding-top: 0;
  padding-bottom: 0;
}

.p-1 {
  padding: 0.25rem;
}

.pt-1 {
  padding-top: 0.25rem;
}

.pr-1 {
  padding-right: 0.25rem;
}

.pb-1 {
  padding-bottom: 0.25rem;
}

.pl-1 {
  padding-left: 0.25rem;
}

.px-1 {
  padding-left: 0.25rem;
  padding-right: 0.25rem;
}

.py-1 {
  padding-top: 0.25rem;
  padding-bottom: 0.25rem;
}

.p-2 {
  padding: 0.5rem;
}

.pt-2 {
  padding-top: 0.5rem;
}

.pr-2 {
  padding-right: 0.5rem;
}

.pb-2 {
  padding-bottom: 0.5rem;
}

.pl-2 {
  padding-left: 0.5rem;
}

.px-2 {
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}

.py-2 {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}

.p-3 {
  padding: 0.75rem;
}

.pt-3 {
  padding-top: 0.75rem;
}

.pr-3 {
  padding-right: 0.75rem;
}

.pb-3 {
  padding-bottom: 0.75rem;
}

.pl-3 {
  padding-left: 0.75rem;
}

.px-3 {
  padding-left: 0.75rem;
  padding-right: 0.75rem;
}

.py-3 {
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
}

.p-4 {
  padding: 1rem;
}

.pt-4 {
  padding-top: 1rem;
}

.pr-4 {
  padding-right: 1rem;
}

.pb-4 {
  padding-bottom: 1rem;
}

.pl-4 {
  padding-left: 1rem;
}

.px-4 {
  padding-left: 1rem;
  padding-right: 1rem;
}

.py-4 {
  padding-top: 1rem;
  padding-bottom: 1rem;
}

.p-5 {
  padding: 1.25rem;
}

.pt-5 {
  padding-top: 1.25rem;
}

.pr-5 {
  padding-right: 1.25rem;
}

.pb-5 {
  padding-bottom: 1.25rem;
}

.pl-5 {
  padding-left: 1.25rem;
}

.px-5 {
  padding-left: 1.25rem;
  padding-right: 1.25rem;
}

.py-5 {
  padding-top: 1.25rem;
  padding-bottom: 1.25rem;
}

.p-6 {
  padding: 1.5rem;
}

.pt-6 {
  padding-top: 1.5rem;
}

.pr-6 {
  padding-right: 1.5rem;
}

.pb-6 {
  padding-bottom: 1.5rem;
}

.pl-6 {
  padding-left: 1.5rem;
}

.px-6 {
  padding-left: 1.5rem;
  padding-right: 1.5rem;
}

.py-6 {
  padding-top: 1.5rem;
  padding-bottom: 1.5rem;
}

.p-7 {
  padding: 1.75rem;
}

.pt-7 {
  padding-top: 1.75rem;
}

.pr-7 {
  padding-right: 1.75rem;
}

.pb-7 {
  padding-bottom: 1.75rem;
}

.pl-7 {
  padding-left: 1.75rem;
}

.px-7 {
  padding-left: 1.75rem;
  padding-right: 1.75rem;
}

.py-7 {
  padding-top: 1.75rem;
  padding-bottom: 1.75rem;
}

.p-8 {
  padding: 2rem;
}

.pt-8 {
  padding-top: 2rem;
}

.pr-8 {
  padding-right: 2rem;
}

.pb-8 {
  padding-bottom: 2rem;
}

.pl-8 {
  padding-left: 2rem;
}

.px-8 {
  padding-left: 2rem;
  padding-right: 2rem;
}

.py-8 {
  padding-top: 2rem;
  padding-bottom: 2rem;
}

.p-9 {
  padding: 2.25rem;
}

.pt-9 {
  padding-top: 2.25rem;
}

.pr-9 {
  padding-right: 2.25rem;
}

.pb-9 {
  padding-bottom: 2.25rem;
}

.pl-9 {
  padding-left: 2.25rem;
}

.px-9 {
  padding-left: 2.25rem;
  padding-right: 2.25rem;
}

.py-9 {
  padding-top: 2.25rem;
  padding-bottom: 2.25rem;
}

.p-10 {
  padding: 2.5rem;
}

.pt-10 {
  padding-top: 2.5rem;
}

.pr-10 {
  padding-right: 2.5rem;
}

.pb-10 {
  padding-bottom: 2.5rem;
}

.pl-10 {
  padding-left: 2.5rem;
}

.px-10 {
  padding-left: 2.5rem;
  padding-right: 2.5rem;
}

.py-10 {
  padding-top: 2.5rem;
  padding-bottom: 2.5rem;
}

.p-12 {
  padding: 3rem;
}

.pt-12 {
  padding-top: 3rem;
}

.pr-12 {
  padding-right: 3rem;
}

.pb-12 {
  padding-bottom: 3rem;
}

.pl-12 {
  padding-left: 3rem;
}

.px-12 {
  padding-left: 3rem;
  padding-right: 3rem;
}

.py-12 {
  padding-top: 3rem;
  padding-bottom: 3rem;
}

.p-16 {
  padding: 4rem;
}

.pt-16 {
  padding-top: 4rem;
}

.pr-16 {
  padding-right: 4rem;
}

.pb-16 {
  padding-bottom: 4rem;
}

.pl-16 {
  padding-left: 4rem;
}

.px-16 {
  padding-left: 4rem;
  padding-right: 4rem;
}

.py-16 {
  padding-top: 4rem;
  padding-bottom: 4rem;
}

.p-20 {
  padding: 5rem;
}

.pt-20 {
  padding-top: 5rem;
}

.pr-20 {
  padding-right: 5rem;
}

.pb-20 {
  padding-bottom: 5rem;
}

.pl-20 {
  padding-left: 5rem;
}

.px-20 {
  padding-left: 5rem;
  padding-right: 5rem;
}

.py-20 {
  padding-top: 5rem;
  padding-bottom: 5rem;
}

.p-24 {
  padding: 6rem;
}

.pt-24 {
  padding-top: 6rem;
}

.pr-24 {
  padding-right: 6rem;
}

.pb-24 {
  padding-bottom: 6rem;
}

.pl-24 {
  padding-left: 6rem;
}

.px-24 {
  padding-left: 6rem;
  padding-right: 6rem;
}

.py-24 {
  padding-top: 6rem;
  padding-bottom: 6rem;
}

.m-auto {
  margin: auto;
}

.mx-auto {
  margin-left: auto;
  margin-right: auto;
}

.my-auto {
  margin-top: auto;
  margin-bottom: auto;
}

.mt-auto {
  margin-top: auto;
}

.mr-auto {
  margin-right: auto;
}

.mb-auto {
  margin-bottom: auto;
}

.ml-auto {
  margin-left: auto;
}

.-m-1 {
  margin: -0.25rem;
}

.-mt-1 {
  margin-top: -0.25rem;
}

.-mr-1 {
  margin-right: -0.25rem;
}

.-mb-1 {
  margin-bottom: -0.25rem;
}

.-ml-1 {
  margin-left: -0.25rem;
}

.-mx-1 {
  margin-left: -0.25rem;
  margin-right: -0.25rem;
}

.-my-1 {
  margin-top: -0.25rem;
  margin-bottom: -0.25rem;
}

.-m-2 {
  margin: -0.5rem;
}

.-mt-2 {
  margin-top: -0.5rem;
}

.-mr-2 {
  margin-right: -0.5rem;
}

.-mb-2 {
  margin-bottom: -0.5rem;
}

.-ml-2 {
  margin-left: -0.5rem;
}

.-mx-2 {
  margin-left: -0.5rem;
  margin-right: -0.5rem;
}

.-my-2 {
  margin-top: -0.5rem;
  margin-bottom: -0.5rem;
}

.-m-3 {
  margin: -0.75rem;
}

.-mt-3 {
  margin-top: -0.75rem;
}

.-mr-3 {
  margin-right: -0.75rem;
}

.-mb-3 {
  margin-bottom: -0.75rem;
}

.-ml-3 {
  margin-left: -0.75rem;
}

.-mx-3 {
  margin-left: -0.75rem;
  margin-right: -0.75rem;
}

.-my-3 {
  margin-top: -0.75rem;
  margin-bottom: -0.75rem;
}

.-m-4 {
  margin: -1rem;
}

.-mt-4 {
  margin-top: -1rem;
}

.-mr-4 {
  margin-right: -1rem;
}

.-mb-4 {
  margin-bottom: -1rem;
}

.-ml-4 {
  margin-left: -1rem;
}

.-mx-4 {
  margin-left: -1rem;
  margin-right: -1rem;
}

.-my-4 {
  margin-top: -1rem;
  margin-bottom: -1rem;
}

.-m-5 {
  margin: -1.25rem;
}

.-mt-5 {
  margin-top: -1.25rem;
}

.-mr-5 {
  margin-right: -1.25rem;
}

.-mb-5 {
  margin-bottom: -1.25rem;
}

.-ml-5 {
  margin-left: -1.25rem;
}

.-mx-5 {
  margin-left: -1.25rem;
  margin-right: -1.25rem;
}

.-my-5 {
  margin-top: -1.25rem;
  margin-bottom: -1.25rem;
}

.-m-6 {
  margin: -1.5rem;
}

.-mt-6 {
  margin-top: -1.5rem;
}

.-mr-6 {
  margin-right: -1.5rem;
}

.-mb-6 {
  margin-bottom: -1.5rem;
}

.-ml-6 {
  margin-left: -1.5rem;
}

.-mx-6 {
  margin-left: -1.5rem;
  margin-right: -1.5rem;
}

.-my-6 {
  margin-top: -1.5rem;
  margin-bottom: -1.5rem;
}

.-m-7 {
  margin: -1.75rem;
}

.-mt-7 {
  margin-top: -1.75rem;
}

.-mr-7 {
  margin-right: -1.75rem;
}

.-mb-7 {
  margin-bottom: -1.75rem;
}

.-ml-7 {
  margin-left: -1.75rem;
}

.-mx-7 {
  margin-left: -1.75rem;
  margin-right: -1.75rem;
}

.-my-7 {
  margin-top: -1.75rem;
  margin-bottom: -1.75rem;
}

.-m-8 {
  margin: -2rem;
}

.-mt-8 {
  margin-top: -2rem;
}

.-mr-8 {
  margin-right: -2rem;
}

.-mb-8 {
  margin-bottom: -2rem;
}

.-ml-8 {
  margin-left: -2rem;
}

.-mx-8 {
  margin-left: -2rem;
  margin-right: -2rem;
}

.-my-8 {
  margin-top: -2rem;
  margin-bottom: -2rem;
}

.-m-9 {
  margin: -2.25rem;
}

.-mt-9 {
  margin-top: -2.25rem;
}

.-mr-9 {
  margin-right: -2.25rem;
}

.-mb-9 {
  margin-bottom: -2.25rem;
}

.-ml-9 {
  margin-left: -2.25rem;
}

.-mx-9 {
  margin-left: -2.25rem;
  margin-right: -2.25rem;
}

.-my-9 {
  margin-top: -2.25rem;
  margin-bottom: -2.25rem;
}

.-m-10 {
  margin: -2.5rem;
}

.-mt-10 {
  margin-top: -2.5rem;
}

.-mr-10 {
  margin-right: -2.5rem;
}

.-mb-10 {
  margin-bottom: -2.5rem;
}

.-ml-10 {
  margin-left: -2.5rem;
}

.-mx-10 {
  margin-left: -2.5rem;
  margin-right: -2.5rem;
}

.-my-10 {
  margin-top: -2.5rem;
  margin-bottom: -2.5rem;
}

.-m-12 {
  margin: -3rem;
}

.-mt-12 {
  margin-top: -3rem;
}

.-mr-12 {
  margin-right: -3rem;
}

.-mb-12 {
  margin-bottom: -3rem;
}

.-ml-12 {
  margin-left: -3rem;
}

.-mx-12 {
  margin-left: -3rem;
  margin-right: -3rem;
}

.-my-12 {
  margin-top: -3rem;
  margin-bottom: -3rem;
}

.-m-16 {
  margin: -4rem;
}

.-mt-16 {
  margin-top: -4rem;
}

.-mr-16 {
  margin-right: -4rem;
}

.-mb-16 {
  margin-bottom: -4rem;
}

.-ml-16 {
  margin-left: -4rem;
}

.-mx-16 {
  margin-left: -4rem;
  margin-right: -4rem;
}

.-my-16 {
  margin-top: -4rem;
  margin-bottom: -4rem;
}

.-m-20 {
  margin: -5rem;
}

.-mt-20 {
  margin-top: -5rem;
}

.-mr-20 {
  margin-right: -5rem;
}

.-mb-20 {
  margin-bottom: -5rem;
}

.-ml-20 {
  margin-left: -5rem;
}

.-mx-20 {
  margin-left: -5rem;
  margin-right: -5rem;
}

.-my-20 {
  margin-top: -5rem;
  margin-bottom: -5rem;
}

.-m-24 {
  margin: -6rem;
}

.-mt-24 {
  margin-top: -6rem;
}

.-mr-24 {
  margin-right: -6rem;
}

.-mb-24 {
  margin-bottom: -6rem;
}

.-ml-24 {
  margin-left: -6rem;
}

.-mx-24 {
  margin-left: -6rem;
  margin-right: -6rem;
}

.-my-24 {
  margin-top: -6rem;
  margin-bottom: -6rem;
}

.d-block {
  display: block;
}

.d-inline {
  display: inline;
}

.d-inline-block {
  display: inline-block;
}

.d-flex {
  display: flex;
}

.d-inline-flex {
  display: inline-flex;
}

.d-grid {
  display: grid;
}

.d-inline-grid {
  display: inline-grid;
}

.d-none {
  display: none;
}

.visible {
  visibility: visible;
}

.invisible {
  visibility: hidden;
}

.overflow-auto {
  overflow: auto;
}

.overflow-hidden {
  overflow: hidden;
}

.overflow-visible {
  overflow: visible;
}

.overflow-scroll {
  overflow: scroll;
}

.overflow-x-auto {
  overflow-x: auto;
}

.overflow-x-hidden {
  overflow-x: hidden;
}

.overflow-x-scroll {
  overflow-x: scroll;
}

.overflow-y-auto {
  overflow-y: auto;
}

.overflow-y-hidden {
  overflow-y: hidden;
}

.overflow-y-scroll {
  overflow-y: scroll;
}

.position-static {
  position: static;
}

.position-relative {
  position: relative;
}

.position-absolute {
  position: absolute;
}

.position-fixed {
  position: fixed;
}

.position-sticky {
  position: sticky;
}

.top-0 {
  top: 0;
}

.right-0 {
  right: 0;
}

.bottom-0 {
  bottom: 0;
}

.left-0 {
  left: 0;
}

.inset-0 {
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
}

.z-0 {
  z-index: 0;
}

.z-10 {
  z-index: 10;
}

.z-20 {
  z-index: 20;
}

.z-30 {
  z-index: 30;
}

.z-40 {
  z-index: 40;
}

.z-50 {
  z-index: 50;
}

.z-auto {
  z-index: auto;
}

.float-left {
  float: left;
}

.float-right {
  float: right;
}

.float-none {
  float: none;
}

.clearfix::after {
  content: "";
  display: table;
  clear: both;
}

.clear-left {
  clear: left;
}

.clear-right {
  clear: right;
}

.clear-both {
  clear: both;
}

.clear-none {
  clear: none;
}

.object-contain {
  object-fit: contain;
}

.object-cover {
  object-fit: cover;
}

.object-fill {
  object-fit: fill;
}

.object-none {
  object-fit: none;
}

.object-scale-down {
  object-fit: scale-down;
}

.object-center {
  object-position: center;
}

.object-top {
  object-position: top;
}

.object-right {
  object-position: right;
}

.object-bottom {
  object-position: bottom;
}

.object-left {
  object-position: left;
}

.opacity-0 {
  opacity: 0;
}

.opacity-25 {
  opacity: 0.25;
}

.opacity-50 {
  opacity: 0.5;
}

.opacity-75 {
  opacity: 0.75;
}

.opacity-100 {
  opacity: 1;
}

.pointer-events-none {
  pointer-events: none;
}

.pointer-events-auto {
  pointer-events: auto;
}

.cursor-auto {
  cursor: auto;
}

.cursor-pointer {
  cursor: pointer;
}

.cursor-not-allowed {
  cursor: not-allowed;
}

.cursor-wait {
  cursor: wait;
}

.cursor-text {
  cursor: text;
}

.cursor-move {
  cursor: move;
}

.cursor-help {
  cursor: help;
}

.select-none {
  -webkit-user-select: none;
  -moz-user-select: none;
  user-select: none;
}

.select-text {
  -webkit-user-select: text;
  -moz-user-select: text;
  user-select: text;
}

.select-all {
  -webkit-user-select: all;
  -moz-user-select: all;
  user-select: all;
}

.select-auto {
  -webkit-user-select: auto;
  -moz-user-select: auto;
  user-select: auto;
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

.not-sr-only {
  position: static;
  width: auto;
  height: auto;
  padding: 0;
  margin: 0;
  overflow: visible;
  clip: auto;
  white-space: normal;
}

.aspect-square {
  aspect-ratio: 1/1;
}

.aspect-video {
  aspect-ratio: 16/9;
}

.aspect-4-3 {
  aspect-ratio: 4/3;
}

.aspect-21-9 {
  aspect-ratio: 21/9;
}

.aspect-auto {
  aspect-ratio: auto;
}

.wrap {
  padding: 4vh 2vw;
}
