@import url(https://fonts.googleapis.com/css2?family=Pretendard:wght@300;400;500;600;700&family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap);
/* Local Font Fallbacks */
@font-face {
  font-family: 'Pretendard-Fallback';
  src: local('Noto Sans KR'), local('Malgun Gothic'), local('Apple SD Gothic Neo');
  font-weight: 300 700;
  font-display: swap;
}

@font-face {
  font-family: 'Inter-Fallback';
  src: local('Segoe UI'), local('system-ui'), local('-apple-system');
  font-weight: 300 700;
  font-display: swap;
}

@font-face {
  font-family: 'JetBrains-Mono-Fallback';
  src: local('Consolas'), local('Monaco'), local('Courier New');
  font-weight: 400 500;
  font-display: swap;
}

/* Update CSS variables to use fallback fonts when needed */
body {
  font-family: 'Pretendard', 'Pretendard-Fallback', 'Noto Sans KR', 'Malgun Gothic', sans-serif;
}

code, pre, .monospace {
  font-family: 'JetBrains Mono', 'JetBrains-Mono-Fallback', 'Consolas', 'Monaco', monospace;
}

.english-text {
  font-family: 'Inter', 'Inter-Fallback', 'Segoe UI', system-ui, sans-serif;
}
/* Import Google Fonts with fallback */

:root {
  /* Toss-inspired Primary Colors */
  --primary-50: #f0f4ff;
  --primary-100: #e0ecff;
  --primary-200: #c7dfff;
  --primary-300: #a5ccff;
  --primary-400: #7baeff;
  --primary-500: #528bff;
  --primary-600: #3182f6;
  --primary-700: #2172e5;
  --primary-800: #1b64da;
  --primary-900: #1957c2;

  /* Toss-inspired Gray Colors */
  --gray-50: #fafbfc;
  --gray-100: #f2f4f6;
  --gray-200: #e5e8eb;
  --gray-300: #d1d6db;
  --gray-400: #b0b8c1;
  --gray-500: #8b95a1;
  --gray-600: #6b7684;
  --gray-700: #4e5968;
  --gray-800: #333d4b;
  --gray-900: #191f28;

  /* Success Colors */
  --green-50: #ecfdf5;
  --green-100: #d1fae5;
  --green-500: #10b981;
  --green-600: #059669;
  --green-700: #047857;
  --green-800: #065f46;

  /* Error Colors */
  --red-50: #fef2f2;
  --red-100: #fee2e2;
  --red-500: #ef4444;
  --red-600: #dc2626;
  --red-700: #b91c1c;
  --red-800: #991b1b;

  /* Warning Colors */
  --yellow-50: #fffbeb;
  --yellow-100: #fef3c7;
  --yellow-500: #f59e0b;
  --yellow-600: #d97706;

  /* Spacing */
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.25rem;
  --space-6: 1.5rem;
  --space-8: 2rem;
  --space-10: 2.5rem;
  --space-12: 3rem;
  --space-16: 4rem;
  --space-20: 5rem;

  /* Toss-inspired Border Radius */
  --radius-sm: 0.5rem;
  --radius: 0.75rem;
  --radius-md: 1rem;
  --radius-lg: 1.25rem;
  --radius-xl: 1.5rem;
  --radius-2xl: 2rem;

  /* Shadows */
  --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
  --shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
  --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
  --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
  --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);

  /* Transitions */
  --transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  --transition-fast: all 0.15s cubic-bezier(0.4, 0, 0.2, 1);

  /* ========================================
     한국식 증권 UI 색상 (Jakob's Law)
     빨강 = 상승, 파랑 = 하락
     ======================================== */

  /* 상승(양봉) - 빨간색 계열 */
  --color-positive: #F04452;
  --color-positive-light: #ffebee;
  --color-positive-dark: #d73527;
  --color-positive-bg: #ffebee;
  --color-positive-hover: #d62c1a;

  /* 하락(음봉) - 파란색 계열 */
  --color-negative: #1273E4;
  --color-negative-light: #e3f2fd;
  --color-negative-dark: #0d5bb5;
  --color-negative-bg: #e3f2fd;
  --color-negative-hover: #0a4a91;

  /* 중립 - 회색 */
  --color-neutral: var(--gray-600);
  --color-neutral-bg: var(--gray-100);

  /* ========================================
     타이포그래피 계층 구조 (Miller's Law)
     ======================================== */

  /* 헤딩 크기 */
  --font-size-h1: 2.5rem;
  /* 40px */
  --font-size-h2: 2rem;
  /* 32px */
  --font-size-h3: 1.5rem;
  /* 24px */
  --font-size-h4: 1.25rem;
  /* 20px */
  --font-size-h5: 1.125rem;
  /* 18px */

  /* 본문 크기 */
  --font-size-base: 1rem;
  /* 16px */
  --font-size-sm: 0.875rem;
  /* 14px */
  --font-size-xs: 0.75rem;
  /* 12px */
  --font-size-lg: 1.125rem;
  /* 18px */

  /* 폰트 굵기 */
  --font-weight-light: 300;
  --font-weight-normal: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;

  /* 줄 간격 */
  --line-height-tight: 1.25;
  --line-height-normal: 1.5;
  --line-height-relaxed: 1.75;

  /* ========================================
     8px 그리드 여백 시스템
     ======================================== */

  --spacing-xs: 4px;
  /* 0.25rem */
  --spacing-sm: 8px;
  /* 0.5rem */
  --spacing-md: 16px;
  /* 1rem */
  --spacing-lg: 24px;
  /* 1.5rem */
  --spacing-xl: 32px;
  /* 2rem */
  --spacing-2xl: 48px;
  /* 3rem */
  --spacing-3xl: 64px;
  /* 4rem */

  /* ========================================
     Fitts's Law - 최소 터치 영역
     ======================================== */

  --min-touch-size: 44px;
  --button-height-sm: 36px;
  --button-height-md: 44px;
  --button-height-lg: 52px;

  /* ========================================
     아이콘 크기
     ======================================== */

  --icon-size-xs: 10px;
  --icon-size-sm: 12px;
  --icon-size-md: 16px;
  --icon-size-lg: 20px;
  --icon-size-xl: 24px;
  --icon-size-2xl: 32px;
}

/* Custom scrollbar */
::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

::-webkit-scrollbar-track {
  background: #f2f4f6;
  background: var(--gray-100);
  border-radius: 0.75rem;
  border-radius: var(--radius);
}

::-webkit-scrollbar-thumb {
  background: #d1d6db;
  background: var(--gray-300);
  border-radius: 0.75rem;
  border-radius: var(--radius);
  -webkit-transition: all 0.15s cubic-bezier(0.4, 0, 0.2, 1);
  transition: all 0.15s cubic-bezier(0.4, 0, 0.2, 1);
  -webkit-transition: var(--transition-fast);
  transition: var(--transition-fast);
}

::-webkit-scrollbar-thumb:hover {
  background: #b0b8c1;
  background: var(--gray-400);
}

/* ========================================
   글로벌 타이포그래피 스타일
   ======================================== */

h1,
h2,
h3,
h4,
h5,
h6 {
  margin: 0;
  font-weight: 600;
  font-weight: var(--font-weight-semibold);
  line-height: 1.25;
  line-height: var(--line-height-tight);
  color: #191f28;
  color: var(--gray-900);
}

h1 {
  font-size: 2.5rem;
  font-size: var(--font-size-h1);
  font-weight: 700;
  font-weight: var(--font-weight-bold);
}

h2 {
  font-size: 2rem;
  font-size: var(--font-size-h2);
}

h3 {
  font-size: 1.5rem;
  font-size: var(--font-size-h3);
}

h4 {
  font-size: 1.25rem;
  font-size: var(--font-size-h4);
}

h5 {
  font-size: 1.125rem;
  font-size: var(--font-size-h5);
}

p {
  margin: 0;
  line-height: 1.5;
  line-height: var(--line-height-normal);
}

/* ========================================
   한국식 증권 UI - 색상 유틸리티 클래스
   ======================================== */

.text-positive {
  color: #F04452 !important;
  color: var(--color-positive) !important;
}

.text-negative {
  color: #1273E4 !important;
  color: var(--color-negative) !important;
}

.text-neutral {
  color: #6b7684 !important;
  color: var(--color-neutral) !important;
}

.bg-positive {
  background-color: #ffebee !important;
  background-color: var(--color-positive-bg) !important;
}

.bg-negative {
  background-color: #e3f2fd !important;
  background-color: var(--color-negative-bg) !important;
}

/* ========================================
   아이콘 크기 유틸리티 클래스
   ======================================== */

.icon-xs {
  width: 10px;
  width: var(--icon-size-xs);
  height: 10px;
  height: var(--icon-size-xs);
  font-size: 10px;
  font-size: var(--icon-size-xs);
}

.icon-sm {
  width: 12px;
  width: var(--icon-size-sm);
  height: 12px;
  height: var(--icon-size-sm);
  font-size: 12px;
  font-size: var(--icon-size-sm);
}

.icon-md {
  width: 16px;
  width: var(--icon-size-md);
  height: 16px;
  height: var(--icon-size-md);
  font-size: 16px;
  font-size: var(--icon-size-md);
}

.icon-lg {
  width: 20px;
  width: var(--icon-size-lg);
  height: 20px;
  height: var(--icon-size-lg);
  font-size: 20px;
  font-size: var(--icon-size-lg);
}

.icon-xl {
  width: 24px;
  width: var(--icon-size-xl);
  height: 24px;
  height: var(--icon-size-xl);
  font-size: 24px;
  font-size: var(--icon-size-xl);
}

.icon-2xl {
  width: 32px;
  width: var(--icon-size-2xl);
  height: 32px;
  height: var(--icon-size-2xl);
  font-size: 32px;
  font-size: var(--icon-size-2xl);
}

.icon-3xl {
  width: var(--icon-size-3xl);
  height: var(--icon-size-3xl);
  font-size: var(--icon-size-3xl);
}

/* 아이콘 여백 */
.icon-mr-1 {
  margin-right: 4px;
  margin-right: var(--spacing-xs);
}

.icon-mr-2 {
  margin-right: 8px;
  margin-right: var(--spacing-sm);
}

.icon-ml-1 {
  margin-left: 4px;
  margin-left: var(--spacing-xs);
}

.icon-ml-2 {
  margin-left: 8px;
  margin-left: var(--spacing-sm);
}

/* ========================================
   버튼 기본 스타일 (Fitts's Law)
   ======================================== */

button {
  min-height: 44px;
  min-height: var(--button-height-md);
  padding: 8px 16px;
  padding: var(--spacing-sm) var(--spacing-md);
  font-size: 1rem;
  font-size: var(--font-size-base);
  font-weight: 500;
  font-weight: var(--font-weight-medium);
  border-radius: 0.75rem;
  border-radius: var(--radius);
  border: none;
  cursor: pointer;
  transition: all 0.15s cubic-bezier(0.4, 0, 0.2, 1);
  transition: var(--transition-fast);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  gap: var(--spacing-xs);
}

button:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}

/* ========================================
   카드 기본 스타일
   ======================================== */

.card {
  background: var(--change-card-bg);
  border-radius: 1.25rem;
  border-radius: var(--radius-lg);
  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
  box-shadow: var(--shadow-md);
  padding: 24px;
  padding: var(--spacing-lg);
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  transition: var(--transition);
}

.card:hover {
  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
  box-shadow: var(--shadow-lg);
  transform: translateY(-2px);
}

/* ========================================
   반응형 유틸리티
   ======================================== */

@media (max-width: 768px) {
  :root {
    --font-size-h1: 2rem;
    /* 32px */
    --font-size-h2: 1.75rem;
    /* 28px */
    --font-size-h3: 1.5rem;
    /* 24px */
  }

  button {
    min-height: 52px;
    min-height: var(--button-height-lg);
    padding: 16px 24px;
    padding: var(--spacing-md) var(--spacing-lg);
  }
}

/* ========================================
   글로벌 body 스타일 - 다크모드 배경 적용
   ======================================== */
body {
  background-color: #fafbfc;
  background-color: var(--gray-50);
  background-size: cover;
  background-position: center;
  background-attachment: fixed;
  color: #191f28;
  color: var(--gray-900);
  margin: 0;
  padding: 0;
  min-height: 100vh;
  transition: background-color 0.3s ease, color 0.3s ease;
  font-family: 'Pretendard', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}

[data-theme="dark"] {
  /* 다크모드 상승/하락 색상 (밝게 조정) */
  --color-positive: #FF6B6B;
  --color-positive-light: rgba(255, 107, 107, 0.15);
  --color-positive-dark: #FF8A8A;
  --color-positive-bg: rgba(255, 107, 107, 0.15);
  --color-positive-hover: #FF5252;
  --color-negative: #4A9DFF;
  --color-negative-light: rgba(74, 157, 255, 0.15);
  --color-negative-dark: #6BB3FF;
  --color-negative-bg: rgba(74, 157, 255, 0.15);
  --color-negative-hover: #3388EE;
}

[data-theme="dark"] body {
  /* 글로벌 배경 이미지는 일절 금지! 로그인에만 개별 적용 */
  background-image: none !important;
}
@charset "UTF-8";/*!
 * Bootstrap  v5.3.8 (https://getbootstrap.com/)
 * Copyright 2011-2025 The Bootstrap Authors
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33, 37, 41, 0.5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-color:#212529;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg:0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width:0.25rem;--bs-focus-ring-opacity:0.25;--bs-focus-ring-color:rgba(13, 110, 253, 0.25);--bs-form-valid-color:#198754;--bs-form-valid-border-color:#198754;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color:#dee2e6;--bs-body-color-rgb:222,226,230;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#fff;--bs-emphasis-color-rgb:255,255,255;--bs-secondary-color:rgba(222, 226, 230, 0.75);--bs-secondary-color-rgb:222,226,230;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(222, 226, 230, 0.5);--bs-tertiary-color-rgb:222,226,230;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-primary-text-emphasis:#6ea8fe;--bs-secondary-text-emphasis:#a7acb1;--bs-success-text-emphasis:#75b798;--bs-info-text-emphasis:#6edff6;--bs-warning-text-emphasis:#ffda6a;--bs-danger-text-emphasis:#ea868f;--bs-light-text-emphasis:#f8f9fa;--bs-dark-text-emphasis:#dee2e6;--bs-primary-bg-subtle:#031633;--bs-secondary-bg-subtle:#161719;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#084298;--bs-secondary-border-subtle:#41464b;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#087990;--bs-warning-border-subtle:#997404;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:inherit;--bs-link-color:#6ea8fe;--bs-link-hover-color:#8bb9fe;--bs-link-color-rgb:110,168,254;--bs-link-hover-color-rgb:139,185,254;--bs-code-color:#e685b5;--bs-highlight-color:#dee2e6;--bs-highlight-bg:#664d03;--bs-border-color:#495057;--bs-border-color-translucent:rgba(255, 255, 255, 0.15);--bs-form-valid-color:#75b798;--bs-form-valid-border-color:#75b798;--bs-form-invalid-color:#ea868f;--bs-form-invalid-border-color:#ea868f}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-family:var(--bs-body-font-family);font-size:1rem;font-size:var(--bs-body-font-size);font-weight:400;font-weight:var(--bs-body-font-weight);line-height:1.5;line-height:var(--bs-body-line-height);color:#212529;color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:#fff;background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;border-top:var(--bs-border-width) solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:inherit;color:var(--bs-heading-color)}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.1875em;color:#212529;color:var(--bs-highlight-color);background-color:#fff3cd;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(13,110,253,1);color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:#fff;color:var(--bs-body-bg);background-color:#212529;background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:rgba(33, 37, 41, 0.75);color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;line-height:inherit;font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button{cursor:pointer;filter:grayscale(1)}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-weight:300;line-height:1.2;font-size:calc(1.625rem + 4.5vw)}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-weight:300;line-height:1.2;font-size:calc(1.575rem + 3.9vw)}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-weight:300;line-height:1.2;font-size:calc(1.525rem + 3.3vw)}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-weight:300;line-height:1.2;font-size:calc(1.475rem + 2.7vw)}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-weight:300;line-height:1.2;font-size:calc(1.425rem + 2.1vw)}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-weight:300;line-height:1.2;font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;background-color:var(--bs-body-bg);border:1px solid #dee2e6;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:0.375rem;border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:rgba(33, 37, 41, 0.75);color:var(--bs-secondary-color)}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:var(--bs-emphasis-color);--bs-table-bg:var(--bs-body-bg);--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-emphasis-color);--bs-table-striped-bg:rgba(var(--bs-emphasis-color-rgb), 0.05);--bs-table-active-color:var(--bs-emphasis-color);--bs-table-active-bg:rgba(var(--bs-emphasis-color-rgb), 0.1);--bs-table-hover-color:var(--bs-emphasis-color);--bs-table-hover-bg:rgba(var(--bs-emphasis-color-rgb), 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color);color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:1px;border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(1px * 2) solid currentcolor;border-top:calc(var(--bs-border-width) * 2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0;border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 1px;border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-active{--bs-table-color-state:var(--bs-table-active-color);--bs-table-bg-state:var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state:var(--bs-table-hover-color);--bs-table-bg-state:var(--bs-table-hover-bg)}.table-primary{--bs-table-color:#000;--bs-table-bg:#cfe2ff;--bs-table-border-color:#a6b5cc;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#e2e3e5;--bs-table-border-color:#b5b6b7;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color:#000;--bs-table-bg:#d1e7dd;--bs-table-border-color:#a7b9b1;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color:#000;--bs-table-bg:#cff4fc;--bs-table-border-color:#a6c3ca;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color:#000;--bs-table-bg:#fff3cd;--bs-table-border-color:#ccc2a4;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#f8d7da;--bs-table-border-color:#c6acae;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color:#000;--bs-table-bg:#f8f9fa;--bs-table-border-color:#c6c7c8;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#212529;--bs-table-border-color:#4d5154;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + 1px);padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + 1px);padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + 1px);padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:rgba(33, 37, 41, 0.75);color:var(--bs-secondary-color)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;color:var(--bs-body-color);-webkit-appearance:none;appearance:none;background-color:#fff;background-color:var(--bs-body-bg);background-clip:padding-box;border:1px solid #dee2e6;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:0.375rem;border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;color:var(--bs-body-color);background-color:#fff;background-color:var(--bs-body-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:rgba(33, 37, 41, 0.75);color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:#e9ecef;background-color:var(--bs-secondary-bg);opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;color:var(--bs-body-color);background-color:#f8f9fa;background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-inline-end-width:var(--bs-border-width);border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;color:var(--bs-body-color);background-color:#f8f9fa;background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#e9ecef;background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#e9ecef;background-color:var(--bs-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;color:var(--bs-body-color);background-color:transparent;border:solid transparent;border-width:1px 0;border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + calc(1px * 2));min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:.875rem;border-radius:0.25rem;border-radius:var(--bs-border-radius-sm)}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(1px * 2));min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:0.5rem;border-radius:var(--bs-border-radius-lg)}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + calc(1px * 2));min-height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.5em + .5rem + calc(1px * 2));min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(1px * 2));min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.5em + .75rem + calc(1px * 2));height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:0.375rem;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:0.375rem;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + calc(1px * 2));height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(1px * 2));height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27%3e%3cpath fill=%27none%27 stroke=%27%23343a40%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%272%27 d=%27m2 5 6 6 6-6%27/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;color:var(--bs-body-color);-webkit-appearance:none;appearance:none;background-color:#fff;background-color:var(--bs-body-bg);background-image:var(--bs-form-select-bg-img),none;background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon,none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #dee2e6;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:0.375rem;border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef;background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529;text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:0.25rem;border-radius:var(--bs-border-radius-sm)}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:0.5rem;border-radius:var(--bs-border-radius-lg)}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27%3e%3cpath fill=%27none%27 stroke=%27%23dee2e6%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%272%27 d=%27m2 5 6 6 6-6%27/%3e%3c/svg%3e")}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{--bs-form-check-bg:var(--bs-body-bg);flex-shrink:0;width:1em;height:1em;margin-top:.25em;vertical-align:top;-webkit-appearance:none;appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid #dee2e6;border:var(--bs-border-width) solid var(--bs-border-color);-webkit-print-color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 20%27%3e%3cpath fill=%27none%27 stroke=%27%23fff%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%273%27 d=%27m6 10 3 3 6-6%27/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%272%27 fill=%27%23fff%27/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 20%27%3e%3cpath fill=%27none%27 stroke=%27%23fff%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%273%27 d=%27M6 10h8%27/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27rgba%280, 0, 0, 0.25%29%27/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27%2386b7fe%27/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27%23fff%27/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27rgba%28255, 255, 255, 0.25%29%27/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;-webkit-appearance:none;appearance:none;background-color:transparent}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;-webkit-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#e9ecef;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#e9ecef;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:rgba(33, 37, 41, 0.75);background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:rgba(33, 37, 41, 0.75);background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(1px * 2));height:calc(3.5rem + calc(var(--bs-border-width) * 2));min-height:calc(3.5rem + calc(1px * 2));min-height:calc(3.5rem + calc(var(--bs-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;max-width:100%;height:100%;padding:1rem .75rem;overflow:hidden;color:rgba(33,37,41,.65);color:rgba(var(--bs-body-color-rgb),.65);text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:1px solid transparent;border:var(--bs-border-width) solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem;padding-left:.75rem}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>textarea:focus~label::after,.form-floating>textarea:not(:placeholder-shown)~label::after{position:absolute;inset:1rem 0.375rem;z-index:-1;height:1.5em;content:"";background-color:#fff;background-color:var(--bs-body-bg);border-radius:0.375rem;border-radius:var(--bs-border-radius)}.form-floating>textarea:disabled~label::after{background-color:#e9ecef;background-color:var(--bs-secondary-bg)}.form-floating>.form-control-plaintext~label{border-width:1px 0;border-width:var(--bs-border-width) 0}.form-floating>.form-control:disabled~label,.form-floating>:disabled~label{color:#6c757d}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:#f8f9fa;background-color:var(--bs-tertiary-bg);border:1px solid #dee2e6;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:0.375rem;border-radius:var(--bs-border-radius)}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:0.5rem;border-radius:var(--bs-border-radius-lg)}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:0.25rem;border-radius:var(--bs-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(-1 * 1px);margin-left:calc(-1 * var(--bs-border-width));border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754;color:var(--bs-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#198754;background-color:var(--bs-success);border-radius:0.375rem;border-radius:var(--bs-border-radius)}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;border-color:var(--bs-form-valid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 8 8%27%3e%3cpath fill=%27%23198754%27 d=%27M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1%27/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(25,135,84,.25);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754;border-color:var(--bs-form-valid-border-color)}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 8 8%27%3e%3cpath fill=%27%23198754%27 d=%27M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1%27/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(25,135,84,.25);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754;border-color:var(--bs-form-valid-border-color)}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754;background-color:var(--bs-form-valid-color)}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754;color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545;color:var(--bs-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#dc3545;background-color:var(--bs-danger);border-radius:0.375rem;border-radius:var(--bs-border-radius)}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 12 12%27 width=%2712%27 height=%2712%27 fill=%27none%27 stroke=%27%23dc3545%27%3e%3ccircle cx=%276%27 cy=%276%27 r=%274.5%27/%3e%3cpath stroke-linejoin=%27round%27 d=%27M5.8 3.6h.4L6 6.5z%27/%3e%3ccircle cx=%276%27 cy=%278.2%27 r=%27.6%27 fill=%27%23dc3545%27 stroke=%27none%27/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(220,53,69,.25);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545;border-color:var(--bs-form-invalid-border-color)}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 12 12%27 width=%2712%27 height=%2712%27 fill=%27none%27 stroke=%27%23dc3545%27%3e%3ccircle cx=%276%27 cy=%276%27 r=%274.5%27/%3e%3cpath stroke-linejoin=%27round%27 d=%27M5.8 3.6h.4L6 6.5z%27/%3e%3ccircle cx=%276%27 cy=%278.2%27 r=%27.6%27 fill=%27%23dc3545%27 stroke=%27none%27/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(220,53,69,.25);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545;border-color:var(--bs-form-invalid-border-color)}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545;background-color:var(--bs-form-invalid-color)}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.25);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545;color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.15),0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked:focus-visible+.btn{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-secondary{--bs-btn-color:#fff;--bs-btn-bg:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5c636a;--bs-btn-hover-border-color:#565e64;--bs-btn-focus-shadow-rgb:130,138,145;--bs-btn-active-color:#fff;--bs-btn-active-bg:#565e64;--bs-btn-active-border-color:#51585e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d}.btn-success{--bs-btn-color:#fff;--bs-btn-bg:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#157347;--bs-btn-hover-border-color:#146c43;--bs-btn-focus-shadow-rgb:60,153,110;--bs-btn-active-color:#fff;--bs-btn-active-bg:#146c43;--bs-btn-active-border-color:#13653f;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#198754;--bs-btn-disabled-border-color:#198754}.btn-info{--bs-btn-color:#000;--bs-btn-bg:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#31d2f2;--bs-btn-hover-border-color:#25cff2;--bs-btn-focus-shadow-rgb:11,172,204;--bs-btn-active-color:#000;--bs-btn-active-bg:#3dd5f3;--bs-btn-active-border-color:#25cff2;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#0dcaf0;--bs-btn-disabled-border-color:#0dcaf0}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffca2c;--bs-btn-hover-border-color:#ffc720;--bs-btn-focus-shadow-rgb:217,164,6;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffcd39;--bs-btn-active-border-color:#ffc720;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#ffc107;--bs-btn-disabled-border-color:#ffc107}.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#bb2d3b;--bs-btn-hover-border-color:#b02a37;--bs-btn-focus-shadow-rgb:225,83,97;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b02a37;--bs-btn-active-border-color:#a52834;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#dc3545;--bs-btn-disabled-border-color:#dc3545}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d3d4d5;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#424649;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#198754;--bs-btn-hover-border-color:#198754;--bs-btn-focus-shadow-rgb:25,135,84;--bs-btn-active-color:#fff;--bs-btn-active-bg:#198754;--bs-btn-active-border-color:#198754;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#198754;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#198754;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#0dcaf0;--bs-btn-hover-border-color:#0dcaf0;--bs-btn-focus-shadow-rgb:13,202,240;--bs-btn-active-color:#000;--bs-btn-active-bg:#0dcaf0;--bs-btn-active-border-color:#0dcaf0;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0dcaf0;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0dcaf0;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffc107;--bs-btn-hover-border-color:#ffc107;--bs-btn-focus-shadow-rgb:255,193,7;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffc107;--bs-btn-active-border-color:#ffc107;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#ffc107;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#ffc107;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#dc3545;--bs-btn-hover-border-color:#dc3545;--bs-btn-focus-shadow-rgb:220,53,69;--bs-btn-active-color:#fff;--bs-btn-active-bg:#dc3545;--bs-btn-active-border-color:#dc3545;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#dc3545;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#dc3545;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:0 0 0 #000;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:var(--bs-border-radius-lg)}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:var(--bs-border-radius-sm)}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:var(--bs-body-color);--bs-dropdown-bg:var(--bs-body-bg);--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:var(--bs-border-radius);--bs-dropdown-border-width:var(--bs-border-width);--bs-dropdown-inner-border-radius:calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:var(--bs-box-shadow);--bs-dropdown-link-color:var(--bs-body-color);--bs-dropdown-link-hover-color:var(--bs-body-color);--bs-dropdown-link-hover-bg:var(--bs-tertiary-bg);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:var(--bs-tertiary-color);--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0;border-radius:0;border-radius:var(--bs-dropdown-item-border-radius,0)}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:0.375rem;border-radius:var(--bs-border-radius)}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:calc(-1 * 1px);margin-left:calc(-1 * var(--bs-border-width))}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:calc(-1 * 1px);margin-top:calc(-1 * var(--bs-border-width))}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:nth-child(n+3),.btn-group-vertical>:not(.btn-check)+.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:var(--bs-border-width);--bs-nav-tabs-border-color:var(--bs-border-color);--bs-nav-tabs-border-radius:var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color:var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color:var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg:var(--bs-body-bg);--bs-nav-tabs-link-active-border-color:var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius:var(--bs-border-radius);--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#0d6efd}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap:1rem;--bs-nav-underline-border-width:0.125rem;--bs-nav-underline-link-active-color:var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent}.nav-underline .nav-link:focus,.nav-underline .nav-link:hover{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-grow:1;flex-basis:0;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(var(--bs-emphasis-color-rgb), 0.65);--bs-navbar-hover-color:rgba(var(--bs-emphasis-color-rgb), 0.8);--bs-navbar-disabled-color:rgba(var(--bs-emphasis-color-rgb), 0.3);--bs-navbar-active-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y:0.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 30 30%27%3e%3cpath stroke=%27rgba%2833, 37, 41, 0.75%29%27 stroke-linecap=%27round%27 stroke-miterlimit=%2710%27 stroke-width=%272%27 d=%27M4 7h22M4 15h22M4 23h22%27/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(var(--bs-emphasis-color-rgb), 0.15);--bs-navbar-toggler-border-radius:var(--bs-border-radius);--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-grow:1;flex-basis:100%;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:1px solid var(--bs-navbar-toggler-border-color);border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:75vh;max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color:rgba(255, 255, 255, 0.55);--bs-navbar-hover-color:rgba(255, 255, 255, 0.75);--bs-navbar-disabled-color:rgba(255, 255, 255, 0.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:rgba(255, 255, 255, 0.1);--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 30 30%27%3e%3cpath stroke=%27rgba%28255, 255, 255, 0.55%29%27 stroke-linecap=%27round%27 stroke-miterlimit=%2710%27 stroke-width=%272%27 d=%27M4 7h22M4 15h22M4 23h22%27/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 30 30%27%3e%3cpath stroke=%27rgba%28255, 255, 255, 0.55%29%27 stroke-linecap=%27round%27 stroke-miterlimit=%2710%27 stroke-width=%272%27 d=%27M4 7h22M4 15h22M4 23h22%27/%3e%3c/svg%3e")}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb), 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:var(--bs-body-bg);--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:0.75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:#212529;color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child)>.card-header,.card-group>.card:not(:last-child)>.card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child)>.card-footer,.card-group>.card:not(:last-child)>.card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child)>.card-header,.card-group>.card:not(:first-child)>.card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child)>.card-footer,.card-group>.card:not(:first-child)>.card-img-bottom{border-bottom-left-radius:0}}.accordion{--bs-accordion-color:var(--bs-body-color);--bs-accordion-bg:var(--bs-body-bg);--bs-accordion-transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,border-radius 0.15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:var(--bs-border-width);--bs-accordion-border-radius:var(--bs-border-radius);--bs-accordion-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:var(--bs-body-color);--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27none%27 stroke=%27%23212529%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3e%3cpath d=%27m2 5 6 6 6-6%27/%3e%3c/svg%3e");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform 0.2s ease-in-out;--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27none%27 stroke=%27%23052c65%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3e%3cpath d=%27m2 5 6 6 6-6%27/%3e%3c/svg%3e");--bs-accordion-btn-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:var(--bs-primary-text-emphasis);--bs-accordion-active-bg:var(--bs-primary-bg-subtle)}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type>.accordion-header .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type>.accordion-header .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type>.accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush>.accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush>.accordion-item:first-child{border-top:0}.accordion-flush>.accordion-item:last-child{border-bottom:0}.accordion-flush>.accordion-item>.accordion-collapse,.accordion-flush>.accordion-item>.accordion-header .accordion-button,.accordion-flush>.accordion-item>.accordion-header .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%236ea8fe%27%3e%3cpath fill-rule=%27evenodd%27 d=%27M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708%27/%3e%3c/svg%3e");--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%236ea8fe%27%3e%3cpath fill-rule=%27evenodd%27 d=%27M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708%27/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color:var(--bs-secondary-color);--bs-breadcrumb-item-padding-x:0.5rem;--bs-breadcrumb-item-active-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:"/";content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(-1 * 1px);margin-left:calc(-1 * var(--bs-border-width))}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x:1.5rem;--bs-pagination-padding-y:0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x:0.5rem;--bs-pagination-padding-y:0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius:var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x:0.65em;--bs-badge-padding-y:0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:var(--bs-border-radius);display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);--bs-alert-link-color:inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color:var(--bs-primary-text-emphasis);--bs-alert-bg:var(--bs-primary-bg-subtle);--bs-alert-border-color:var(--bs-primary-border-subtle);--bs-alert-link-color:var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color:var(--bs-secondary-text-emphasis);--bs-alert-bg:var(--bs-secondary-bg-subtle);--bs-alert-border-color:var(--bs-secondary-border-subtle);--bs-alert-link-color:var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color:var(--bs-success-text-emphasis);--bs-alert-bg:var(--bs-success-bg-subtle);--bs-alert-border-color:var(--bs-success-border-subtle);--bs-alert-link-color:var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color:var(--bs-info-text-emphasis);--bs-alert-bg:var(--bs-info-bg-subtle);--bs-alert-border-color:var(--bs-info-border-subtle);--bs-alert-link-color:var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color:var(--bs-warning-text-emphasis);--bs-alert-bg:var(--bs-warning-bg-subtle);--bs-alert-border-color:var(--bs-warning-border-subtle);--bs-alert-link-color:var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color:var(--bs-danger-text-emphasis);--bs-alert-bg:var(--bs-danger-bg-subtle);--bs-alert-border-color:var(--bs-danger-border-subtle);--bs-alert-link-color:var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color:var(--bs-light-text-emphasis);--bs-alert-bg:var(--bs-light-bg-subtle);--bs-alert-border-color:var(--bs-light-border-subtle);--bs-alert-link-color:var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color:var(--bs-dark-text-emphasis);--bs-alert-bg:var(--bs-dark-bg-subtle);--bs-alert-border-color:var(--bs-dark-border-subtle);--bs-alert-link-color:var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:var(--bs-progress-height)}}.progress,.progress-stacked{--bs-progress-height:1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg:var(--bs-secondary-bg);--bs-progress-border-radius:var(--bs-border-radius);--bs-progress-box-shadow:var(--bs-box-shadow-inset);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#0d6efd;--bs-progress-bar-transition:width 0.6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-action-color:var(--bs-secondary-color);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-tertiary-bg);--bs-list-group-action-active-color:var(--bs-body-color);--bs-list-group-action-active-bg:var(--bs-secondary-bg);--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:not(.active):focus,.list-group-item-action:not(.active):hover{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:not(.active):active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color:var(--bs-primary-text-emphasis);--bs-list-group-bg:var(--bs-primary-bg-subtle);--bs-list-group-border-color:var(--bs-primary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-primary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-primary-border-subtle);--bs-list-group-active-color:var(--bs-primary-bg-subtle);--bs-list-group-active-bg:var(--bs-primary-text-emphasis);--bs-list-group-active-border-color:var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color:var(--bs-secondary-text-emphasis);--bs-list-group-bg:var(--bs-secondary-bg-subtle);--bs-list-group-border-color:var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-secondary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-secondary-border-subtle);--bs-list-group-active-color:var(--bs-secondary-bg-subtle);--bs-list-group-active-bg:var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color:var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color:var(--bs-success-text-emphasis);--bs-list-group-bg:var(--bs-success-bg-subtle);--bs-list-group-border-color:var(--bs-success-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-success-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-success-border-subtle);--bs-list-group-active-color:var(--bs-success-bg-subtle);--bs-list-group-active-bg:var(--bs-success-text-emphasis);--bs-list-group-active-border-color:var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color:var(--bs-info-text-emphasis);--bs-list-group-bg:var(--bs-info-bg-subtle);--bs-list-group-border-color:var(--bs-info-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-info-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-info-border-subtle);--bs-list-group-active-color:var(--bs-info-bg-subtle);--bs-list-group-active-bg:var(--bs-info-text-emphasis);--bs-list-group-active-border-color:var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color:var(--bs-warning-text-emphasis);--bs-list-group-bg:var(--bs-warning-bg-subtle);--bs-list-group-border-color:var(--bs-warning-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-warning-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-warning-border-subtle);--bs-list-group-active-color:var(--bs-warning-bg-subtle);--bs-list-group-active-bg:var(--bs-warning-text-emphasis);--bs-list-group-active-border-color:var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color:var(--bs-danger-text-emphasis);--bs-list-group-bg:var(--bs-danger-bg-subtle);--bs-list-group-border-color:var(--bs-danger-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-danger-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-danger-border-subtle);--bs-list-group-active-color:var(--bs-danger-bg-subtle);--bs-list-group-active-bg:var(--bs-danger-text-emphasis);--bs-list-group-active-border-color:var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color:var(--bs-light-text-emphasis);--bs-list-group-bg:var(--bs-light-bg-subtle);--bs-list-group-border-color:var(--bs-light-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-light-border-subtle);--bs-list-group-active-color:var(--bs-light-bg-subtle);--bs-list-group-active-bg:var(--bs-light-text-emphasis);--bs-list-group-active-border-color:var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color:var(--bs-dark-text-emphasis);--bs-list-group-bg:var(--bs-dark-bg-subtle);--bs-list-group-border-color:var(--bs-dark-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-dark-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-dark-border-subtle);--bs-list-group-active-color:var(--bs-dark-bg-subtle);--bs-list-group-active-bg:var(--bs-dark-text-emphasis);--bs-list-group-active-border-color:var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg:url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23000%27%3e%3cpath d=%27M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414%27/%3e%3c/svg%3e");--bs-btn-close-opacity:0.5;--bs-btn-close-hover-opacity:0.75;--bs-btn-close-focus-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:0.25;box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;filter: ;filter:var(--bs-btn-close-filter);border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{--bs-btn-close-filter:invert(1) grayscale(100%) brightness(200%)}:root,[data-bs-theme=light]{--bs-btn-close-filter: }[data-bs-theme=dark]{--bs-btn-close-filter:invert(1) grayscale(100%) brightness(200%)}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-secondary-color);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-header-border-color:var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex:1090;position:absolute;z-index:var(--bs-toast-zindex);width:-webkit-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:0.5rem;--bs-modal-color:var(--bs-body-color);--bs-modal-bg:var(--bs-body-bg);--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:var(--bs-border-width);--bs-modal-border-radius:var(--bs-border-radius-lg);--bs-modal-box-shadow:var(--bs-box-shadow-sm);--bs-modal-inner-border-radius:calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:var(--bs-border-width);--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:var(--bs-border-width);position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transform:translate(0,-50px);transition:transform .3s ease-out}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex:1050;--bs-backdrop-bg:#000;--bs-backdrop-opacity:0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin-top:calc(-.5 * var(--bs-modal-header-padding-y));margin-right:calc(-.5 * var(--bs-modal-header-padding-x));margin-bottom:calc(-.5 * var(--bs-modal-header-padding-y));margin-left:auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:var(--bs-box-shadow)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{--bs-modal-width:800px}}@media (min-width:1200px){.modal-xl{--bs-modal-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:0.5rem;--bs-tooltip-padding-y:0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color:var(--bs-body-bg);--bs-tooltip-bg:var(--bs-emphasis-color);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:0.9;--bs-tooltip-arrow-width:0.8rem;--bs-tooltip-arrow-height:0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:276px;--bs-popover-font-size:0.875rem;--bs-popover-bg:var(--bs-body-bg);--bs-popover-border-width:var(--bs-border-width);--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:var(--bs-border-radius-lg);--bs-popover-inner-border-radius:calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow:var(--bs-box-shadow);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color:inherit;--bs-popover-header-bg:var(--bs-secondary-bg);--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:var(--bs-body-color);--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:0.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-top>.popover-arrow::before{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-end>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::before{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-start>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;filter: ;filter:var(--bs-carousel-control-icon-filter);border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23fff%27%3e%3cpath d=%27M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0%27/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23fff%27%3e%3cpath d=%27M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708%27/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-color:var(--bs-carousel-indicator-active-bg);background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;color:var(--bs-carousel-caption-color);text-align:center}.carousel-dark{--bs-carousel-indicator-active-bg:#000;--bs-carousel-caption-color:#000;--bs-carousel-control-icon-filter:invert(1) grayscale(100)}:root,[data-bs-theme=light]{--bs-carousel-indicator-active-bg:#fff;--bs-carousel-caption-color:#fff;--bs-carousel-control-icon-filter: }[data-bs-theme=dark]{--bs-carousel-indicator-active-bg:#000;--bs-carousel-caption-color:#000;--bs-carousel-control-icon-filter:invert(1) grayscale(100)}.spinner-border,.spinner-grow{display:inline-block;flex-shrink:0;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-border-width:0.25em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed:1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-zindex:1045;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color:var(--bs-body-color);--bs-offcanvas-bg:var(--bs-body-bg);--bs-offcanvas-border-width:var(--bs-border-width);--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:var(--bs-box-shadow-sm);--bs-offcanvas-transition:transform 0.3s ease-in-out;--bs-offcanvas-title-line-height:1.5}@media (max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin-top:calc(-.5 * var(--bs-offcanvas-padding-y));margin-right:calc(-.5 * var(--bs-offcanvas-padding-x));margin-bottom:calc(-.5 * var(--bs-offcanvas-padding-y));margin-left:auto}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(13,110,253,1)!important;background-color:RGBA(var(--bs-primary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(108,117,125,1)!important;background-color:RGBA(var(--bs-secondary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(25,135,84,1)!important;background-color:RGBA(var(--bs-success-rgb),var(--bs-bg-opacity,1))!important}.text-bg-info{color:#000!important;background-color:RGBA(13,202,240,1)!important;background-color:RGBA(var(--bs-info-rgb),var(--bs-bg-opacity,1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(255,193,7,1)!important;background-color:RGBA(var(--bs-warning-rgb),var(--bs-bg-opacity,1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(220,53,69,1)!important;background-color:RGBA(var(--bs-danger-rgb),var(--bs-bg-opacity,1))!important}.text-bg-light{color:#000!important;background-color:RGBA(248,249,250,1)!important;background-color:RGBA(var(--bs-light-rgb),var(--bs-bg-opacity,1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(33,37,41,1)!important;background-color:RGBA(var(--bs-dark-rgb),var(--bs-bg-opacity,1))!important}.link-primary{color:RGBA(13,110,253,1)!important;color:RGBA(var(--bs-primary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(13,110,253,1)!important;-webkit-text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(13,110,253,1)!important;text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important}.link-primary:focus,.link-primary:hover{color:RGBA(10,88,202,1)!important;color:RGBA(10,88,202,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(10,88,202,1)!important;-webkit-text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(10,88,202,1)!important;text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important}.link-secondary{color:RGBA(108,117,125,1)!important;color:RGBA(var(--bs-secondary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(108,117,125,1)!important;-webkit-text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(108,117,125,1)!important;text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important}.link-secondary:focus,.link-secondary:hover{color:RGBA(86,94,100,1)!important;color:RGBA(86,94,100,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(86,94,100,1)!important;-webkit-text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(86,94,100,1)!important;text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important}.link-success{color:RGBA(25,135,84,1)!important;color:RGBA(var(--bs-success-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(25,135,84,1)!important;-webkit-text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(25,135,84,1)!important;text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important}.link-success:focus,.link-success:hover{color:RGBA(20,108,67,1)!important;color:RGBA(20,108,67,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(20,108,67,1)!important;-webkit-text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(20,108,67,1)!important;text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important}.link-info{color:RGBA(13,202,240,1)!important;color:RGBA(var(--bs-info-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(13,202,240,1)!important;-webkit-text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(13,202,240,1)!important;text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important}.link-info:focus,.link-info:hover{color:RGBA(61,213,243,1)!important;color:RGBA(61,213,243,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(61,213,243,1)!important;-webkit-text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(61,213,243,1)!important;text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important}.link-warning{color:RGBA(255,193,7,1)!important;color:RGBA(var(--bs-warning-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(255,193,7,1)!important;-webkit-text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(255,193,7,1)!important;text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important}.link-warning:focus,.link-warning:hover{color:RGBA(255,205,57,1)!important;color:RGBA(255,205,57,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(255,205,57,1)!important;-webkit-text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(255,205,57,1)!important;text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important}.link-danger{color:RGBA(220,53,69,1)!important;color:RGBA(var(--bs-danger-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(220,53,69,1)!important;-webkit-text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(220,53,69,1)!important;text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important}.link-danger:focus,.link-danger:hover{color:RGBA(176,42,55,1)!important;color:RGBA(176,42,55,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(176,42,55,1)!important;-webkit-text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(176,42,55,1)!important;text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important}.link-light{color:RGBA(248,249,250,1)!important;color:RGBA(var(--bs-light-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(248,249,250,1)!important;-webkit-text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(248,249,250,1)!important;text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important}.link-light:focus,.link-light:hover{color:RGBA(249,250,251,1)!important;color:RGBA(249,250,251,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(249,250,251,1)!important;-webkit-text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(249,250,251,1)!important;text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important}.link-dark{color:RGBA(33,37,41,1)!important;color:RGBA(var(--bs-dark-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(33,37,41,1)!important;-webkit-text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(33,37,41,1)!important;text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important}.link-dark:focus,.link-dark:hover{color:RGBA(26,30,33,1)!important;color:RGBA(26,30,33,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(26,30,33,1)!important;-webkit-text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(26,30,33,1)!important;text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important}.link-body-emphasis{color:RGBA(0,0,0,1)!important;color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(0,0,0,1)!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(0,0,0,1)!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-body-emphasis:focus,.link-body-emphasis:hover{color:RGBA(0,0,0,.75)!important;color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,.75))!important;-webkit-text-decoration-color:RGBA(0,0,0,0.75)!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,0.75))!important;text-decoration-color:RGBA(0,0,0,0.75)!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,0.75))!important}.focus-ring:focus{outline:0;box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);box-shadow:var(--bs-focus-ring-x,0) var(--bs-focus-ring-y,0) var(--bs-focus-ring-blur,0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-text-decoration-color:rgba(13,110,253,0.5);-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,0.5));text-decoration-color:rgba(13,110,253,0.5);text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,0.5));text-underline-offset:0.25em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media (prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:focus-visible>.bi,.icon-link-hover:hover>.bi{transform:translate3d(.25em,0,0);transform:var(--bs-icon-link-transform,translate3d(.25em,0,0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption),.visually-hidden:not(caption){position:absolute!important}.visually-hidden *,.visually-hidden-focusable:not(:focus):not(:focus-within) *{overflow:hidden!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;width:var(--bs-border-width);min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{object-fit:contain!important}.object-fit-cover{object-fit:cover!important}.object-fit-fill{object-fit:fill!important}.object-fit-scale{object-fit:scale-down!important}.object-fit-none{object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15)!important;box-shadow:var(--bs-box-shadow)!important}.shadow-sm{box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075)!important;box-shadow:var(--bs-box-shadow-sm)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0, 0, 0, 0.175)!important;box-shadow:var(--bs-box-shadow-lg)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--bs-focus-ring-color:rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color:rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color:rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color:rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color:rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color:rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color:rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color:rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important;border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important;border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid #dee2e6!important;border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important;border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid #dee2e6!important;border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity:1;border-color:rgba(13,110,253,var(--bs-border-opacity))!important;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(108,117,125,var(--bs-border-opacity))!important;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity:1;border-color:rgba(25,135,84,var(--bs-border-opacity))!important;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity:1;border-color:rgba(13,202,240,var(--bs-border-opacity))!important;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity:1;border-color:rgba(255,193,7,var(--bs-border-opacity))!important;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity:1;border-color:rgba(220,53,69,var(--bs-border-opacity))!important;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity:1;border-color:rgba(248,249,250,var(--bs-border-opacity))!important;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity:1;border-color:rgba(33,37,41,var(--bs-border-opacity))!important;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-black{--bs-border-opacity:1;border-color:rgba(0,0,0,var(--bs-border-opacity))!important;border-color:rgba(var(--bs-black-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity:1;border-color:rgba(255,255,255,var(--bs-border-opacity))!important;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-primary-subtle{border-color:#9ec5fe!important;border-color:var(--bs-primary-border-subtle)!important}.border-secondary-subtle{border-color:#c4c8cb!important;border-color:var(--bs-secondary-border-subtle)!important}.border-success-subtle{border-color:#a3cfbb!important;border-color:var(--bs-success-border-subtle)!important}.border-info-subtle{border-color:#9eeaf9!important;border-color:var(--bs-info-border-subtle)!important}.border-warning-subtle{border-color:#ffe69c!important;border-color:var(--bs-warning-border-subtle)!important}.border-danger-subtle{border-color:#f1aeb5!important;border-color:var(--bs-danger-border-subtle)!important}.border-light-subtle{border-color:#e9ecef!important;border-color:var(--bs-light-border-subtle)!important}.border-dark-subtle{border-color:#adb5bd!important;border-color:var(--bs-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--bs-border-opacity:0.1}.border-opacity-25{--bs-border-opacity:0.25}.border-opacity-50{--bs-border-opacity:0.5}.border-opacity-75{--bs-border-opacity:0.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.column-gap-0{column-gap:0!important}.column-gap-1{column-gap:.25rem!important}.column-gap-2{column-gap:.5rem!important}.column-gap-3{column-gap:1rem!important}.column-gap-4{column-gap:1.5rem!important}.column-gap-5{column-gap:3rem!important}.font-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important;font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(13,110,253,var(--bs-text-opacity))!important;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(108,117,125,var(--bs-text-opacity))!important;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(25,135,84,var(--bs-text-opacity))!important;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(13,202,240,var(--bs-text-opacity))!important;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(255,193,7,var(--bs-text-opacity))!important;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(220,53,69,var(--bs-text-opacity))!important;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(248,249,250,var(--bs-text-opacity))!important;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(33,37,41,var(--bs-text-opacity))!important;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(0,0,0,var(--bs-text-opacity))!important;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(255,255,255,var(--bs-text-opacity))!important;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(33,37,41,var(--bs-text-opacity))!important;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:rgba(33, 37, 41, 0.75)!important;color:var(--bs-secondary-color)!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-body-secondary{--bs-text-opacity:1;color:rgba(33, 37, 41, 0.75)!important;color:var(--bs-secondary-color)!important}.text-body-tertiary{--bs-text-opacity:1;color:rgba(33, 37, 41, 0.5)!important;color:var(--bs-tertiary-color)!important}.text-body-emphasis{--bs-text-opacity:1;color:#000!important;color:var(--bs-emphasis-color)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.text-primary-emphasis{color:#052c65!important;color:var(--bs-primary-text-emphasis)!important}.text-secondary-emphasis{color:#2b2f32!important;color:var(--bs-secondary-text-emphasis)!important}.text-success-emphasis{color:#0a3622!important;color:var(--bs-success-text-emphasis)!important}.text-info-emphasis{color:#055160!important;color:var(--bs-info-text-emphasis)!important}.text-warning-emphasis{color:#664d03!important;color:var(--bs-warning-text-emphasis)!important}.text-danger-emphasis{color:#58151c!important;color:var(--bs-danger-text-emphasis)!important}.text-light-emphasis{color:#495057!important;color:var(--bs-light-text-emphasis)!important}.text-dark-emphasis{color:#495057!important;color:var(--bs-dark-text-emphasis)!important}.link-opacity-10{--bs-link-opacity:0.1}.link-opacity-10-hover:hover{--bs-link-opacity:0.1}.link-opacity-25{--bs-link-opacity:0.25}.link-opacity-25-hover:hover{--bs-link-opacity:0.25}.link-opacity-50{--bs-link-opacity:0.5}.link-opacity-50-hover:hover{--bs-link-opacity:0.5}.link-opacity-75{--bs-link-opacity:0.75}.link-opacity-75-hover:hover{--bs-link-opacity:0.75}.link-opacity-100{--bs-link-opacity:1}.link-opacity-100-hover:hover{--bs-link-opacity:1}.link-offset-1{text-underline-offset:0.125em!important}.link-offset-1-hover:hover{text-underline-offset:0.125em!important}.link-offset-2{text-underline-offset:0.25em!important}.link-offset-2-hover:hover{text-underline-offset:0.25em!important}.link-offset-3{text-underline-offset:0.375em!important}.link-offset-3-hover:hover{text-underline-offset:0.375em!important}.link-underline-primary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(13,110,253,var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(13,110,253,var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-secondary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(108,117,125,var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(108,117,125,var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-success{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(25,135,84,var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(25,135,84,var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important}.link-underline-info{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(13,202,240,var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(13,202,240,var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important}.link-underline-warning{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(255,193,7,var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(255,193,7,var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important}.link-underline-danger{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(220,53,69,var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(220,53,69,var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important}.link-underline-light{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(248,249,250,var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(248,249,250,var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important}.link-underline-dark{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(33,37,41,var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(33,37,41,var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important}.link-underline{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(13,110,253,1)!important;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:rgba(13,110,253,1)!important;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-underline-opacity-0{--bs-link-underline-opacity:0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity:0}.link-underline-opacity-10{--bs-link-underline-opacity:0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity:0.1}.link-underline-opacity-25{--bs-link-underline-opacity:0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity:0.25}.link-underline-opacity-50{--bs-link-underline-opacity:0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity:0.5}.link-underline-opacity-75{--bs-link-underline-opacity:0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity:0.75}.link-underline-opacity-100{--bs-link-underline-opacity:1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(13,110,253,var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(108,117,125,var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(25,135,84,var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(13,202,240,var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(255,193,7,var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(220,53,69,var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(248,249,250,var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(33,37,41,var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(0,0,0,var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(255,255,255,var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(255,255,255,var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-body-secondary{--bs-bg-opacity:1;background-color:rgba(233,236,239,var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-tertiary{--bs-bg-opacity:1;background-color:rgba(248,249,250,var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-primary-subtle{background-color:#cfe2ff!important;background-color:var(--bs-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:#e2e3e5!important;background-color:var(--bs-secondary-bg-subtle)!important}.bg-success-subtle{background-color:#d1e7dd!important;background-color:var(--bs-success-bg-subtle)!important}.bg-info-subtle{background-color:#cff4fc!important;background-color:var(--bs-info-bg-subtle)!important}.bg-warning-subtle{background-color:#fff3cd!important;background-color:var(--bs-warning-bg-subtle)!important}.bg-danger-subtle{background-color:#f8d7da!important;background-color:var(--bs-danger-bg-subtle)!important}.bg-light-subtle{background-color:#fcfcfd!important;background-color:var(--bs-light-bg-subtle)!important}.bg-dark-subtle{background-color:#ced4da!important;background-color:var(--bs-dark-bg-subtle)!important}.bg-gradient{background-image:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0))!important;background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:0.375rem!important;border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:0.25rem!important;border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:0.375rem!important;border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:0.5rem!important;border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:1rem!important;border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:2rem!important;border-radius:var(--bs-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important;border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:0.375rem!important;border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:0.375rem!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:0.25rem!important;border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:0.25rem!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:0.375rem!important;border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:0.375rem!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-3{border-top-left-radius:0.5rem!important;border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:0.5rem!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:1rem!important;border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:1rem!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:2rem!important;border-top-left-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:2rem!important;border-top-right-radius:var(--bs-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:50rem!important;border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:50rem!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-end{border-top-right-radius:0.375rem!important;border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:0.375rem!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-end-1{border-top-right-radius:0.25rem!important;border-top-right-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:0.25rem!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:0.375rem!important;border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:0.375rem!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-3{border-top-right-radius:0.5rem!important;border-top-right-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:0.5rem!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:1rem!important;border-top-right-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:1rem!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:2rem!important;border-top-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-right-radius:2rem!important;border-bottom-right-radius:var(--bs-border-radius-xxl)!important}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-end-pill{border-top-right-radius:50rem!important;border-top-right-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:50rem!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:0.375rem!important;border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:0.375rem!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.rounded-bottom-1{border-bottom-right-radius:0.25rem!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-bottom-left-radius:0.25rem!important;border-bottom-left-radius:var(--bs-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:0.375rem!important;border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:0.375rem!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:0.5rem!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-bottom-left-radius:0.5rem!important;border-bottom-left-radius:var(--bs-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:1rem!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-bottom-left-radius:1rem!important;border-bottom-left-radius:var(--bs-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:2rem!important;border-bottom-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-left-radius:2rem!important;border-bottom-left-radius:var(--bs-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-bottom-pill{border-bottom-right-radius:50rem!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-bottom-left-radius:50rem!important;border-bottom-left-radius:var(--bs-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:0.375rem!important;border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:0.375rem!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:0.25rem!important;border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:0.25rem!important;border-top-left-radius:var(--bs-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:0.375rem!important;border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:0.375rem!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-3{border-bottom-left-radius:0.5rem!important;border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:0.5rem!important;border-top-left-radius:var(--bs-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:1rem!important;border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:1rem!important;border-top-left-radius:var(--bs-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:2rem!important;border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-top-left-radius:2rem!important;border-top-left-radius:var(--bs-border-radius-xxl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:50rem!important;border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:50rem!important;border-top-left-radius:var(--bs-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{object-fit:contain!important}.object-fit-sm-cover{object-fit:cover!important}.object-fit-sm-fill{object-fit:fill!important}.object-fit-sm-scale{object-fit:scale-down!important}.object-fit-sm-none{object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:3rem!important}.column-gap-sm-0{column-gap:0!important}.column-gap-sm-1{column-gap:.25rem!important}.column-gap-sm-2{column-gap:.5rem!important}.column-gap-sm-3{column-gap:1rem!important}.column-gap-sm-4{column-gap:1.5rem!important}.column-gap-sm-5{column-gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{object-fit:contain!important}.object-fit-md-cover{object-fit:cover!important}.object-fit-md-fill{object-fit:fill!important}.object-fit-md-scale{object-fit:scale-down!important}.object-fit-md-none{object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:3rem!important}.column-gap-md-0{column-gap:0!important}.column-gap-md-1{column-gap:.25rem!important}.column-gap-md-2{column-gap:.5rem!important}.column-gap-md-3{column-gap:1rem!important}.column-gap-md-4{column-gap:1.5rem!important}.column-gap-md-5{column-gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{object-fit:contain!important}.object-fit-lg-cover{object-fit:cover!important}.object-fit-lg-fill{object-fit:fill!important}.object-fit-lg-scale{object-fit:scale-down!important}.object-fit-lg-none{object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:3rem!important}.column-gap-lg-0{column-gap:0!important}.column-gap-lg-1{column-gap:.25rem!important}.column-gap-lg-2{column-gap:.5rem!important}.column-gap-lg-3{column-gap:1rem!important}.column-gap-lg-4{column-gap:1.5rem!important}.column-gap-lg-5{column-gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{object-fit:contain!important}.object-fit-xl-cover{object-fit:cover!important}.object-fit-xl-fill{object-fit:fill!important}.object-fit-xl-scale{object-fit:scale-down!important}.object-fit-xl-none{object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:3rem!important}.column-gap-xl-0{column-gap:0!important}.column-gap-xl-1{column-gap:.25rem!important}.column-gap-xl-2{column-gap:.5rem!important}.column-gap-xl-3{column-gap:1rem!important}.column-gap-xl-4{column-gap:1.5rem!important}.column-gap-xl-5{column-gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{object-fit:contain!important}.object-fit-xxl-cover{object-fit:cover!important}.object-fit-xxl-fill{object-fit:fill!important}.object-fit-xxl-scale{object-fit:scale-down!important}.object-fit-xxl-none{object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:3rem!important}.column-gap-xxl-0{column-gap:0!important}.column-gap-xxl-1{column-gap:.25rem!important}.column-gap-xxl-2{column-gap:.5rem!important}.column-gap-xxl-3{column-gap:1rem!important}.column-gap-xxl-4{column-gap:1.5rem!important}.column-gap-xxl-5{column-gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}
/* UIFeedback.css - 토스트 & 확인 모달 스타일 (테슬러의 법칙) */

/* ===== Toast Container ===== */
.toast-container {
  position: fixed;
  top: 20px;
  right: 20px;
  z-index: 10000;
  display: flex;
  flex-direction: column;
  gap: 10px;
  pointer-events: none;
  max-width: 400px;
}

.toast-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 18px;
  border-radius: 12px;
  background: #fff;
  background: var(--change-bg, #fff);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0,0,0,0.06);
  pointer-events: auto;
  cursor: pointer;
  animation: toastSlideIn 0.3s ease-out;
  font-size: 14px;
  font-weight: 500;
  color: #333;
  color: var(--change-text, #333);
  border-left: 4px solid transparent;
  -webkit-backdrop-filter: blur(10px);
          backdrop-filter: blur(10px);
  transition: opacity 0.2s ease, transform 0.2s ease;
}

.toast-item:hover {
  transform: translateX(-4px);
}

/* 토스트 유형별 색상 */
.toast-success {
  border-left-color: #22c55e;
}
.toast-success .toast-icon {
  color: #22c55e;
}

.toast-error {
  border-left-color: #ef4444;
}
.toast-error .toast-icon {
  color: #ef4444;
}

.toast-warning {
  border-left-color: #f59e0b;
}
.toast-warning .toast-icon {
  color: #f59e0b;
}

.toast-info {
  border-left-color: #3182F6;
}
.toast-info .toast-icon {
  color: #3182F6;
}

.toast-icon {
  font-size: 18px;
  font-weight: bold;
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.toast-message {
  flex: 1 1;
  line-height: 1.4;
  word-break: keep-all;
}

.toast-close {
  background: none;
  border: none;
  color: #999;
  color: var(--change-gray-600, #999);
  font-size: 18px;
  cursor: pointer;
  padding: 0;
  line-height: 1;
  flex-shrink: 0;
  opacity: 0.5;
  transition: opacity 0.2s;
}

.toast-close:hover {
  opacity: 1;
}

@keyframes toastSlideIn {
  from {
    opacity: 0;
    transform: translateX(100px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

/* ===== Confirm Modal ===== */
.confirm-overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.45);
  -webkit-backdrop-filter: blur(4px);
          backdrop-filter: blur(4px);
  z-index: 10001;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  animation: confirmFadeIn 0.2s ease;
}

.confirm-modal {
  background: #fff;
  background: var(--change-bg, #fff);
  border-radius: 16px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2);
  max-width: 400px;
  width: 100%;
  overflow: hidden;
  animation: confirmScaleIn 0.25s ease;
}

.confirm-accent-bar {
  height: 4px;
  width: 100%;
}

.confirm-body {
  padding: 28px 24px 24px;
}

.confirm-message {
  font-size: 15px;
  line-height: 1.6;
  color: #333;
  color: var(--change-text, #333);
  margin: 0 0 24px 0;
  word-break: keep-all;
  white-space: pre-line;
}

.confirm-actions {
  display: flex;
  gap: 10px;
  justify-content: flex-end;
}

.confirm-btn {
  padding: 10px 24px;
  border-radius: 10px;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s ease;
  border: none;
  font-family: inherit;
}

.confirm-btn-cancel {
  background: #f1f3f5;
  background: var(--change-gray-100, #f1f3f5);
  color: #333;
  color: var(--change-text, #333);
}

.confirm-btn-cancel:hover {
  background: #e5e8eb;
  background: var(--change-gray-200, #e5e8eb);
}

.confirm-btn-ok {
  background: #3182F6;
  background: var(--change-primary, #3182F6);
  color: #fff;
}

.confirm-btn-ok:hover {
  filter: brightness(1.05);
  transform: translateY(-1px);
}

@keyframes confirmFadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes confirmScaleIn {
  from {
    opacity: 0;
    transform: scale(0.9);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

/* ===== 다크 모드 ===== */
[data-theme="dark"] .toast-item {
  background: #252B35;
  background: var(--change-card-bg, #252B35);
  color: #F2F4F6;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
}

[data-theme="dark"] .confirm-modal {
  background: #252B35;
  background: var(--change-card-bg, #252B35);
}

[data-theme="dark"] .confirm-message {
  color: #F2F4F6;
}

[data-theme="dark"] .confirm-btn-cancel {
  background: #333D4B;
  background: var(--change-gray-100, #333D4B);
  color: #F2F4F6;
}

[data-theme="dark"] .confirm-btn-cancel:hover {
  background: #4E5968;
  background: var(--change-gray-200, #4E5968);
}

/* ===== 모바일 반응형 ===== */
@media (max-width: 480px) {
  .toast-container {
    top: 12px;
    right: 12px;
    left: 12px;
    max-width: none;
  }

  .confirm-modal {
    max-width: calc(100vw - 40px);
  }

  .confirm-actions {
    flex-direction: column-reverse;
  }

  .confirm-btn {
    width: 100%;
    text-align: center;
  }
}

/* ── CelebrationOverlay ── */

.celebration-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  z-index: 10000;
  pointer-events: none;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 16px;
  opacity: 0;
  transition: opacity 0.4s ease;
}

.celebration-overlay.visible {
  opacity: 1;
}

.celebration-overlay.fade-out {
  opacity: 0;
}

/* Screen shake for jackpot */
@keyframes screenShake {
  0%, 100% { transform: translate(0, 0); }
  10% { transform: translate(-4px, -2px); }
  20% { transform: translate(4px, 2px); }
  30% { transform: translate(-3px, 3px); }
  40% { transform: translate(3px, -3px); }
  50% { transform: translate(-2px, 2px); }
  60% { transform: translate(2px, -1px); }
  70% { transform: translate(-1px, 1px); }
  80% { transform: translate(1px, -1px); }
  90% { transform: translate(0, 1px); }
}

.celebration-shake {
  animation: screenShake 0.5s ease-in-out;
}

/* ── Floating profit text ── */
@keyframes floatUp {
  0% {
    opacity: 0;
    transform: translateY(30px) scale(0.8);
  }
  20% {
    opacity: 1;
    transform: translateY(0) scale(1.05);
  }
  30% {
    transform: translateY(-5px) scale(1);
  }
  100% {
    opacity: 1;
    transform: translateY(-5px) scale(1);
  }
}

.celebration-profit-text {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  animation: floatUp 0.6s ease-out forwards;
  text-shadow: 0 2px 8px rgba(0, 0, 0, 0.5);
  pointer-events: none;
}

.celebration-stock-name {
  font-size: 1.1rem;
  font-weight: 600;
  color: #e0e0e0;
}

.celebration-pct {
  font-size: 2.8rem;
  font-weight: 800;
  letter-spacing: -1px;
}

.profit-positive .celebration-pct {
  color: #ff4444;
  text-shadow: 0 0 20px rgba(255, 68, 68, 0.6);
}

.profit-negative .celebration-pct {
  color: #4488ff;
  text-shadow: 0 0 20px rgba(68, 136, 255, 0.6);
}

.celebration-amount {
  font-size: 1.2rem;
  font-weight: 600;
  color: #ccc;
}

.profit-positive .celebration-amount {
  color: #ff6666;
}

.profit-negative .celebration-amount {
  color: #6699ff;
}

/* ── Meme card ── */
@keyframes popIn {
  0% {
    opacity: 0;
    transform: scale(0.3) rotate(-10deg);
  }
  50% {
    opacity: 1;
    transform: scale(1.1) rotate(2deg);
  }
  100% {
    transform: scale(1) rotate(0);
  }
}

.celebration-meme-card {
  pointer-events: auto;
  cursor: pointer;
  animation: popIn 0.5s ease-out 0.3s both;
  padding: 24px 40px;
  border-radius: 16px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  -webkit-backdrop-filter: blur(12px);
          backdrop-filter: blur(12px);
  border: 2px solid rgba(255, 255, 255, 0.15);
  min-width: 200px;
  transition: transform 0.2s;
}

.celebration-meme-card:hover {
  transform: scale(1.05);
}

.meme-profit {
  background: linear-gradient(135deg, rgba(255, 68, 68, 0.85), rgba(255, 120, 50, 0.85));
  box-shadow: 0 8px 32px rgba(255, 68, 68, 0.4);
}

.meme-loss {
  background: linear-gradient(135deg, rgba(68, 100, 200, 0.85), rgba(80, 80, 160, 0.85));
  box-shadow: 0 8px 32px rgba(68, 100, 200, 0.3);
}

.meme-big-loss {
  background: linear-gradient(135deg, rgba(30, 30, 80, 0.9), rgba(60, 30, 100, 0.9));
  box-shadow: 0 8px 32px rgba(60, 30, 100, 0.4);
}

.meme-emoji {
  font-size: 3.5rem;
  line-height: 1;
}

.meme-text {
  font-size: 1.3rem;
  font-weight: 700;
  color: #fff;
  text-align: center;
  white-space: nowrap;
}

/* ── Streak badge ── */
@keyframes slideInBounce {
  0% {
    opacity: 0;
    transform: translateY(40px);
  }
  60% {
    opacity: 1;
    transform: translateY(-8px);
  }
  100% {
    transform: translateY(0);
  }
}

.celebration-streak-badge {
  animation: slideInBounce 0.5s ease-out 0.7s both;
  background: linear-gradient(135deg, #ff8800, #ff4400);
  padding: 10px 24px;
  border-radius: 24px;
  display: flex;
  align-items: center;
  gap: 8px;
  box-shadow: 0 4px 16px rgba(255, 136, 0, 0.5);
  pointer-events: none;
}

.streak-emoji {
  font-size: 1.6rem;
}

.streak-text {
  font-size: 1.1rem;
  font-weight: 700;
  color: #fff;
}

/* ── Legendary tier ── */
@keyframes legendaryGlow {
  0%, 100% { filter: brightness(1); }
  50% { filter: brightness(1.3); }
}

.celebration-legendary {
  animation: screenShake 0.5s ease-in-out, legendaryGlow 1.5s ease-in-out infinite;
}

.profit-legendary .celebration-pct {
  background: linear-gradient(90deg, #ff4444, #ff8800, #ffff00, #ff4444);
  background-size: 200% 100%;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  animation: shimmerText 2s linear infinite;
  text-shadow: none;
}

@keyframes shimmerText {
  0% { background-position: 0% 50%; }
  100% { background-position: 200% 50%; }
}

.meme-legendary {
  background: linear-gradient(135deg, rgba(255, 215, 0, 0.9), rgba(255, 100, 0, 0.9), rgba(255, 50, 50, 0.9));
  box-shadow: 0 8px 40px rgba(255, 215, 0, 0.5), 0 0 60px rgba(255, 100, 0, 0.3);
  animation: popIn 0.5s ease-out 0.3s both, legendaryPulse 1.5s ease-in-out infinite;
}

@keyframes legendaryPulse {
  0%, 100% { box-shadow: 0 8px 40px rgba(255, 215, 0, 0.5), 0 0 60px rgba(255, 100, 0, 0.3); }
  50% { box-shadow: 0 8px 50px rgba(255, 215, 0, 0.7), 0 0 80px rgba(255, 100, 0, 0.5); }
}

/* ── Responsive ── */
@media (max-width: 600px) {
  .celebration-pct {
    font-size: 2rem;
  }
  .meme-emoji {
    font-size: 2.5rem;
  }
  .meme-text {
    font-size: 1rem;
  }
  .celebration-meme-card {
    padding: 16px 24px;
  }
}

/* SignalAlerts uses existing UIFeedback toast system.
   Extra styles for signal-specific toast variants can go here. */

/* Volume surge toast highlight */
.toast-warning {
  border-left: 4px solid #ff8800 !important;
}

/* VI trigger toast - red flash */
.toast-error {
  border-left: 4px solid #ff2222 !important;
}

/* App.css */
.app-container {
  display: flex;
  flex-direction: column;
  height: 100vh;
  /* background-color removed to allow theme inheritance */
}

/* Version Display - 우측 하단 고정 */
.app-version {
  position: fixed;
  bottom: 10px;
  right: 10px;
  background: rgba(0, 0, 0, 0.7);
  color: white;
  padding: var(--spacing-xs) 8px;
  border-radius: var(--spacing-xs);
  font-size: 11px;
  font-family: 'Monaco', 'Consolas', monospace;
  z-index: 9999;
  display: flex;
  gap: var(--spacing-sm);
  opacity: 0.5;
  transition: opacity 0.2s;
  cursor: default;
}

.app-version:hover {
  opacity: 1;
  background: rgba(0, 0, 0, 0.85);
}

.app-version .build-info {
  color: #00ff00;
  font-size: 10px;
}

.main-content {
  flex-grow: 1;
  overflow-y: auto;
}

/* ============================================================
   사이드바 레이아웃 (AppSidebar 도입 후)
   ============================================================ */
.main-layout-sidebar {
  display: flex;
  height: 100%; /* 부모 .main-content 높이에 맞춤 (확장 방지) */
}

/* 콘텐츠 영역: 사이드바 너비만큼 왼쪽 여백 */
.main-layout-content {
  flex: 1 1;
  margin-left: 256px;
  margin-left: var(--appsidebar-width, 256px);
  min-width: 0;
  transition: margin-left 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  overflow-y: auto; /* 내부 콘텐츠 스크롤 */
  overflow-x: clip;
}

/* 모바일: 사이드바 없음, 하단 네비 높이만큼 padding-bottom */
@media (max-width: 768px) {
  .main-layout-content {
    margin-left: 0;
    padding-bottom: calc(64px + env(safe-area-inset-bottom, 0px));
  }
}

.page-content {
  padding: var(--space-8);
  max-width: 1200px;
  /* 화면 너비에 따라 1200px 컨테이너로 고정 */
  margin: 0 auto;
  width: 100%;
  box-sizing: border-box;
  transition: padding-right 0.3s ease;
}

/* JARVIS 패널 열려있을 때 우측 콘텐츠 겹침 방지 */
body.jarvis-open .page-content {
  padding-right: 440px;
}

/* Toss-inspired page container style */
.page-container {
  background-color: var(--change-card-bg);
  padding: var(--space-8);
  border-radius: var(--radius-2xl);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08);
  border: 1px solid var(--gray-200);
  position: relative;
  overflow: hidden;
}

/* Common message styles */
.message {
  padding: var(--space-4);
  margin-bottom: var(--space-4);
  border-radius: var(--radius-md);
  font-weight: 500;
  border: 1px solid;
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.message.success {
  background-color: var(--green-50);
  color: var(--green-800);
  border-color: var(--green-200);
}

.message.error {
  background-color: var(--red-50);
  color: var(--red-800);
  border-color: var(--red-200);
}

.message.info {
  background-color: var(--primary-50);
  color: var(--primary-800);
  border-color: var(--primary-200);
}

.message.refresh-message {
  background-color: var(--primary-50);
  color: var(--primary-800);
  border-color: var(--primary-200);
  text-align: center;
  font-weight: 500;
}

/* Toss-inspired button styles */
button,
.btn {
  padding: var(--space-4) var(--space-6);
  border-radius: var(--radius-lg);
  border: 2px solid transparent;
  cursor: pointer;
  font-size: 0.9rem;
  font-weight: 600;
  font-family: inherit;
  transition: var(--transition);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  min-height: 3rem;
  text-decoration: none;
  position: relative;
  overflow: hidden;
}

button:disabled,
.btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  pointer-events: none;
}

/* Toss-inspired Primary Button */
button.btn-primary,
.btn-primary {
  background: linear-gradient(135deg, var(--primary-600) 0%, var(--primary-700) 100%);
  color: white;
  border-color: var(--primary-600);
  box-shadow: 0 4px 12px rgba(49, 130, 246, 0.3);
}

button.btn-primary:hover,
.btn-primary:hover {
  background: linear-gradient(135deg, var(--primary-700) 0%, var(--primary-800) 100%);
  border-color: var(--primary-700);
  box-shadow: 0 6px 16px rgba(49, 130, 246, 0.4);
  transform: translateY(-2px);
}

button.btn-primary:active,
.btn-primary:active {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(49, 130, 246, 0.3);
}

/* Secondary Button */
button.btn-secondary,
.btn-secondary {
  background-color: var(--change-card-bg);
  color: var(--gray-700);
  border-color: var(--gray-300);
  box-shadow: var(--shadow-sm);
}

button.btn-secondary:hover,
.btn-secondary:hover {
  background-color: var(--gray-50);
  border-color: var(--gray-400);
  box-shadow: var(--shadow);
}

/* Danger Button */
button.btn-danger,
.btn-danger {
  background-color: var(--red-600);
  color: white;
  border-color: var(--red-600);
  box-shadow: var(--shadow-sm);
}

button.btn-danger:hover,
.btn-danger:hover {
  background-color: var(--red-700);
  border-color: var(--red-700);
  box-shadow: var(--shadow-md);
  transform: translateY(-1px);
}

/* Success Button */
button.btn-success,
.btn-success {
  background-color: var(--green-600);
  color: white;
  border-color: var(--green-600);
  box-shadow: var(--shadow-sm);
}

button.btn-success:hover,
.btn-success:hover {
  background-color: var(--green-700);
  border-color: var(--green-700);
  box-shadow: var(--shadow-md);
  transform: translateY(-1px);
}

.refresh-button {
  background: none;
  border: none;
  cursor: pointer;
  font-size: 1.25rem;
  color: var(--gray-500);
  padding: var(--space-2);
  border-radius: var(--radius);
  transition: var(--transition-fast);
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.refresh-button:hover {
  color: var(--gray-700);
  background-color: var(--gray-100);
  transform: rotate(90deg);
}

/* Toss-inspired Table styles */
table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  margin-top: var(--space-4);
  background-color: var(--change-card-bg);
  border-radius: var(--radius-2xl);
  overflow: hidden;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08);
  border: 1px solid var(--gray-200);
}

th,
td {
  padding: var(--space-5) var(--space-6);
  text-align: left;
  border-bottom: 1px solid var(--gray-100);
  vertical-align: middle;
  position: relative;
}

thead th {
  background: linear-gradient(135deg, var(--gray-50) 0%, var(--gray-100) 100%);
  font-weight: 700;
  color: var(--gray-800);
  font-size: 0.85rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  border-bottom: 2px solid var(--gray-200);
  position: -webkit-sticky;
  position: sticky;
  top: 0;
  z-index: 10;
}

tbody tr {
  transition: var(--transition);
  cursor: pointer;
}

tbody tr:hover {
  background: linear-gradient(135deg, var(--gray-50) 0%, var(--primary-50) 100%);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
}

tbody tr:last-child td {
  border-bottom: none;
}

/* Toss-inspired Auth pages (Login/Register) styles */
.auth-container {
  max-width: 440px;
  margin: var(--space-16) auto;
  padding: var(--space-10);
  background: var(--change-card-bg);
  border-radius: var(--radius-2xl);
  box-shadow: 0 20px 64px rgba(0, 0, 0, 0.12);
  border: 1px solid var(--gray-200);
  text-align: center;
  position: relative;
  overflow: hidden;
}

.auth-container h2 {
  margin-bottom: var(--space-6);
  color: var(--gray-900);
  font-weight: 600;
  font-size: var(--font-size-h3);
}

.auth-container form div {
  margin-bottom: var(--space-4);
  text-align: left;
}

.auth-container label {
  display: block;
  margin-bottom: var(--space-2);
  font-weight: 500;
  color: var(--gray-700);
  font-size: var(--font-size-sm);
}

.auth-container input {
  width: 100%;
  padding: var(--space-3);
  border: 1px solid var(--gray-300);
  border-radius: var(--radius);
  font-size: var(--font-size-sm);
  transition: var(--transition-fast);
}

.auth-container input:focus {
  outline: none;
  border-color: var(--primary-500);
  box-shadow: 0 0 0 3px var(--primary-100);
}

.auth-container button {
  width: 100%;
  padding: var(--space-4);
  background-color: var(--primary-600);
  color: white;
  border: none;
  border-radius: var(--radius);
  font-size: var(--font-size-sm);
  font-weight: 500;
  cursor: pointer;
  transition: var(--transition);
  box-shadow: var(--shadow-sm);
}

.auth-container button:hover {
  background-color: var(--primary-700);
  box-shadow: var(--shadow-md);
  transform: translateY(-1px);
}

.auth-container button:active {
  transform: translateY(0);
}

.auth-container p {
  margin-top: var(--space-6);
  color: var(--gray-600);
  font-size: var(--font-size-sm);
}

.auth-container a {
  color: var(--primary-600);
  font-weight: 500;
}

.auth-container a:hover {
  color: var(--primary-700);
  text-decoration: none;
}

/* Toss-inspired Settings Page Styles */
.settings-actions-top {
  display: flex;
  justify-content: flex-end;
  gap: var(--space-4);
  margin-bottom: var(--space-8);
  padding: var(--space-6);
  background: linear-gradient(135deg, var(--gray-50) 0%, var(--change-card-bg) 100%);
  border-radius: var(--radius-2xl);
  border: 1px solid var(--gray-200);
  box-shadow: var(--shadow-sm);
}

.settings-form {
  display: grid;
  grid-gap: var(--space-8);
  gap: var(--space-8);
}

.form-section {
  background-color: var(--change-card-bg);
  padding: var(--space-8);
  border-radius: var(--radius-2xl);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.06);
  border: 1px solid var(--gray-200);
  position: relative;
  overflow: hidden;
}

.form-section h3 {
  margin-top: 0;
  margin-bottom: var(--space-6);
  padding: var(--space-4) var(--space-6);
  background: linear-gradient(135deg, var(--primary-50) 0%, var(--primary-100) 100%);
  border-radius: var(--radius-lg);
  color: var(--primary-800);
  font-weight: 700;
  font-size: 1.1rem;
  border: 1px solid var(--primary-200);
  text-align: center;
}

.form-group {
  margin-bottom: var(--space-6);
}

.form-group:last-child {
  margin-bottom: 0;
}

.form-group label {
  display: block;
  font-weight: 500;
  margin-bottom: var(--space-2);
  color: var(--gray-700);
  font-size: var(--font-size-sm);
}

.form-group input,
.form-group textarea,
.form-group select {
  width: 100%;
  padding: var(--space-4) var(--space-5);
  border: 2px solid var(--gray-200);
  border-radius: var(--radius-lg);
  font-size: 0.9rem;
  color: var(--gray-900);
  background-color: var(--change-card-bg);
  transition: var(--transition);
  font-weight: 500;
  min-height: var(--min-touch-size);
}

.form-group input:focus,
.form-group textarea:focus,
.form-group select:focus {
  outline: none;
  border-color: var(--primary-400);
  box-shadow: 0 0 0 4px var(--primary-100);
  background-color: var(--primary-50);
  transform: translateY(-1px);
}

.form-group textarea {
  resize: vertical;
  min-height: 80px;
  font-family: inherit;
  line-height: 1.5;
}

.form-group small {
  display: block;
  margin-top: var(--space-2);
  color: var(--gray-500);
  font-size: 0.75rem;
  line-height: 1.4;
}

.form-group small.error-message {
  color: var(--red-600);
}

.form-section .btn {
  width: auto;
  padding: var(--space-3) var(--space-6);
}

/* Text Alignment & Color Utilities */
.text-right {
  text-align: right;
}

.text-center {
  text-align: center;
}

.text-left {
  text-align: left;
}

/* Status Colors - Korean stock market convention */
.text-red,
.text-profit {
  color: var(--color-positive);
  /* 한국 주식 상승(빨간색) */
  font-weight: 600;
}

.text-blue,
.text-loss {
  color: var(--color-negative);
  /* 한국 주식 하락(파란색) */
  font-weight: 600;
}

.text-green,
.text-success {
  color: var(--green-600);
  font-weight: 500;
}

.text-gray,
.text-muted {
  color: var(--gray-500);
}

.text-yellow,
.text-warning {
  color: var(--yellow-600);
  font-weight: 500;
}

/* Table container for horizontal scrolling */
.table-container {
  width: 100%;
  overflow-x: auto;
  margin-top: var(--space-4);
  border-radius: var(--radius-lg);
  border: 1px solid var(--gray-200);
  box-shadow: var(--shadow-sm);
}

/* Button sizes */
.btn-sm {
  padding: var(--space-2) var(--space-3);
  font-size: 0.75rem;
  min-height: 2rem;
}

.btn-lg {
  padding: var(--space-4) var(--space-6);
  font-size: var(--font-size-base);
  min-height: 3rem;
}

.btn-xs {
  padding: var(--space-1) var(--space-2);
  font-size: 0.625rem;
  min-height: 1.5rem;
}

/* Page Header Styles */
.page-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--space-6);
  padding-bottom: var(--space-4);
  border-bottom: 1px solid var(--gray-200);
}

.page-header h1,
.page-header h2,
.page-header h3 {
  margin: 0;
  color: var(--gray-900);
  font-weight: 600;
}

.page-header h1 {
  font-size: 1.875rem;
}

.page-header h2 {
  font-size: var(--font-size-h3);
}

.page-header h3 {
  font-size: 1.25rem;
}

.header-actions {
  display: flex;
  gap: var(--space-3);
  align-items: center;
}

.period-select,
select {
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius);
  border: 1px solid var(--gray-300);
  background-color: var(--change-card-bg);
  font-size: var(--font-size-sm);
  color: var(--gray-700);
  transition: var(--transition-fast);
}

.period-select:focus,
select:focus {
  outline: none;
  border-color: var(--primary-500);
  box-shadow: 0 0 0 3px var(--primary-100);
}

/* Loading States */
.loading-spinner {
  display: inline-block;
  width: 1.5rem;
  height: 1.5rem;
  border: 2px solid var(--gray-300);
  border-radius: 50%;
  border-top-color: var(--primary-600);
  animation: spin 1s ease-in-out infinite;
}

.loading-spinner-small {
  width: 1rem;
  height: 1rem;
  border-width: 1px;
}

.loading-fullscreen {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100vh;
  font-size: 1.125rem;
  color: var(--gray-600);
  background-color: var(--gray-50);
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

/* Form Styles */
input,
textarea {
  width: 100%;
  padding: var(--space-3);
  border: 1px solid var(--gray-300);
  border-radius: var(--radius);
  font-size: var(--font-size-sm);
  color: var(--gray-900);
  background-color: var(--change-card-bg);
  transition: var(--transition-fast);
}

input:focus,
textarea:focus {
  outline: none;
  border-color: var(--primary-500);
  box-shadow: 0 0 0 3px var(--primary-100);
}

input:disabled,
textarea:disabled {
  background-color: var(--gray-100);
  color: var(--gray-500);
  cursor: not-allowed;
}

label {
  display: block;
  font-weight: 500;
  color: var(--gray-700);
  margin-bottom: var(--space-2);
  font-size: var(--font-size-sm);
}

/* Mobile UI Fix for Auth Pages */
.auth-page-fix .main-layout,
.auth-page-fix .tabs-container {
  display: none !important;
}

/* Responsive Design */
@media (max-width: 768px) {
  .page-content {
    padding: var(--space-4);
  }

  body.jarvis-open .page-content {
    padding-right: var(--space-4);  /* 모바일에서는 JARVIS 오버레이 무관 */
  }

  .page-container {
    padding: var(--space-4);
    margin: var(--space-2);
    border-radius: var(--radius-lg);
  }

  .page-header {
    flex-direction: column;
    gap: var(--space-4);
    align-items: stretch;
    text-align: center;
  }

  .header-actions {
    justify-content: center;
  }

  th,
  td {
    padding: var(--space-3) var(--space-2);
  }
}

/* ===== 특정 해상도 대응 ===== */

/* 2184 x 1968 (세로형 고해상도 - 태블릿/모니터) */
@media screen and (min-width: 2100px) and (max-width: 2300px) and (min-height: 1900px) {
  .page-content {
    max-width: 1400px;
    padding: var(--space-12) var(--space-8);
  }

  .page-container {
    padding: var(--space-12);
  }

  /* 폰트 크기 조정 */
  body {
    font-size: 1.1rem;
  }

  .dashboard-title,
  h1 {
    font-size: 3rem;
  }

  h2 {
    font-size: 2.2rem;
  }

  h3 {
    font-size: 1.8rem;
  }

  /* 버튼 크기 조정 */
  button,
  .btn {
    min-height: 3.5rem;
    padding: var(--space-5) var(--space-8);
    font-size: var(--font-size-base);
  }

  /* 테이블 셀 크기 조정 */
  th,
  td {
    padding: var(--space-4) var(--space-3);
    font-size: var(--font-size-base);
  }

  /* 카드 간격 조정 */
  .summary-card,
  .card {
    padding: var(--space-8);
    margin-bottom: var(--space-6);
  }

  /* 입력 필드 크기 조정 */
  input,
  select,
  textarea {
    min-height: 3.5rem;
    font-size: var(--font-size-base);
    padding: var(--space-4);
  }
}

/* 2520 x 1080 (울트라와이드 모니터) */
@media screen and (min-width: 2400px) and (max-width: 2600px) and (min-height: 1000px) and (max-height: 1200px) {
  .page-content {
    max-width: 1400px;
    padding: var(--space-6) var(--space-8);
  }

  .page-container {
    padding: var(--space-8) var(--space-10);
  }

  /* 넓은 화면을 활용한 그리드 레이아웃 */
  .dashboard-content,
  .portfolio-summary {
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: var(--space-6);
  }

  /* 테이블 최대 너비 확장 */
  .table-container {
    width: 100%;
    max-width: none;
  }

  .stocks-table {
    min-width: 100%;
  }

  /* 와이드 레이아웃을 위한 플렉스 조정 */
  .header-content {
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
  }

  .filter-section {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    grid-gap: var(--space-4);
    gap: var(--space-4);
    align-items: end;
  }

  /* main-layout은 앱 래퍼로 사용 - 세로 스택 유지 */

  /* 멀티 컬럼 카드 레이아웃 */
  .card-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
    grid-gap: var(--space-4);
    gap: var(--space-4);
  }
}

/* 매우 넓은 화면 (2600px 이상) */
@media screen and (min-width: 2600px) {
  .page-content {
    max-width: 2800px;
    padding: var(--space-8) var(--space-12);
  }

  body {
    font-size: 1.1rem;
  }

  .dashboard-title,
  h1 {
    font-size: 3.5rem;
  }

  /* 3컬럼 이상 레이아웃 */
  .portfolio-summary {
    grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
  }

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

/* 세로형 고해상도 화면 일반 대응 */
@media screen and (min-height: 1600px) and (orientation: portrait) {
  .app-container {
    min-height: 100vh;
  }

  .main-content {
    padding-bottom: var(--space-12);
  }

  /* 세로 공간 활용 */
  .page-content {
    padding-top: var(--space-12);
    padding-bottom: var(--space-12);
  }

  /* 카드 높이 조정 */
  .summary-card {
    min-height: 150px;
    display: flex;
    flex-direction: column;
    justify-content: center;
  }
}

/* 가로형 고해상도 화면 일반 대응 */
@media screen and (min-width: 2000px) and (orientation: landscape) {
  .page-content {
    padding-left: var(--space-12);
    padding-right: var(--space-12);
  }

  /* 넓은 화면에서 테이블 최적화 */
  .stocks-table th,
  .stocks-table td {
    min-width: 100px;
    white-space: nowrap;
  }

  /* 필터 섹션 한 줄 배치 */
  .filter-section {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-4);
    align-items: end;
  }

  .filter-group {
    flex: 0 1 auto;
    min-width: 150px;
  }
}

/* AI Chat FAB (Floating Action Button) */
.ai-chat-fab {
  position: fixed;
  bottom: 24px;
  right: 24px;
  width: 56px;
  height: 56px;
  background: #3182F6;
  background: var(--change-primary, #3182F6);
  color: white;
  border: none;
  border-radius: 50%;
  font-size: 24px;
  cursor: pointer;
  box-shadow: 0 4px 16px rgba(49, 130, 246, 0.3), 0 2px 4px rgba(0,0,0,0.1);
  z-index: 9998;
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  display: flex;
  align-items: center;
  justify-content: center;
  animation: fabPulse 3s ease-in-out infinite;
}

.ai-chat-fab:hover {
  transform: scale(1.1);
  box-shadow: 0 8px 24px rgba(49, 130, 246, 0.4);
}

.ai-chat-fab:active {
  transform: scale(0.95);
}

[data-theme="dark"] .ai-chat-fab {
  border: 1px solid rgba(255, 255, 255, 0.15);
}

/* 모바일: 하단 네비(~60px) 위로 FAB 이동 */
@media (max-width: 768px) {
  .ai-chat-fab {
    bottom: calc(80px + env(safe-area-inset-bottom, 0px));
    right: 16px;
    width: 48px;
    height: 48px;
    font-size: 20px;
  }
}

@keyframes fabPulse {
  0%, 100% { box-shadow: 0 4px 16px rgba(49, 130, 246, 0.3); }
  50% { box-shadow: 0 4px 20px rgba(49, 130, 246, 0.45); }
}
/* Universal Blue Theme CSS - 통일된 블루 테마 */

:root {
  /* Primary Blue Palette */
  --primary-blue: #007bff;
  --primary-blue-dark: #0056b3;
  --primary-blue-light: #6cb2eb;
  --primary-blue-lighter: #b8d4f1;
  --primary-blue-lightest: #e3f2fd;
  
  /* Secondary Blue Palette */
  --secondary-blue: #0d6efd;
  --secondary-blue-dark: #0b5ed7;
  --secondary-blue-light: #6ea8fe;
  
  /* Accent Colors */
  --accent-cyan: #17a2b8;
  --accent-teal: #20c997;
  --accent-indigo: #6610f2;
  
  /* Neutral Colors */
  --neutral-white: #ffffff;
  --neutral-light: #f8f9fa;
  --neutral-lighter: #e9ecef;
  --neutral-medium: #6c757d;
  --neutral-dark: #495057;
  --neutral-darker: #343a40;
  --neutral-darkest: #212529;
  
  /* Status Colors with Blue Undertones */
  --success-blue: #0f5132;
  --warning-blue: #055160;
  --error-blue: #842029;
  --info-blue: #055160;
}

/* Global Blue Theme Application - 비활성화됨 */
.blue-theme-disabled {
  --primary-color: var(--primary-blue);
  --primary-color-dark: var(--primary-blue-dark);
  --primary-color-light: var(--primary-blue-light);
  --background-color: var(--neutral-white);
  --surface-color: var(--neutral-light);
  --text-color: var(--neutral-darkest);
  --text-color-secondary: var(--neutral-medium);
}

/* Primary Components */
.btn-primary-blue {
  background-color: #007bff;
  background-color: var(--primary-blue);
  border-color: #007bff;
  border-color: var(--primary-blue);
  color: #ffffff;
  color: var(--neutral-white);
  transition: all 0.3s ease;
}

.btn-primary-blue:hover {
  background-color: #0056b3;
  background-color: var(--primary-blue-dark);
  border-color: #0056b3;
  border-color: var(--primary-blue-dark);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0, 123, 255, 0.3);
}

.btn-secondary-blue {
  background-color: transparent;
  border: 2px solid #007bff;
  border: 2px solid var(--primary-blue);
  color: #007bff;
  color: var(--primary-blue);
  transition: all 0.3s ease;
}

.btn-secondary-blue:hover {
  background-color: #007bff;
  background-color: var(--primary-blue);
  color: #ffffff;
  color: var(--neutral-white);
}

/* Cards and Surfaces */
.card-blue {
  background-color: #ffffff;
  background-color: var(--neutral-white);
  border: 1px solid #b8d4f1;
  border: 1px solid var(--primary-blue-lighter);
  border-radius: var(--radius);
  box-shadow: 0 2px 8px rgba(0, 123, 255, 0.1);
  transition: all 0.3s ease;
}

.card-blue:hover {
  border-color: #6cb2eb;
  border-color: var(--primary-blue-light);
  box-shadow: 0 4px 16px rgba(0, 123, 255, 0.15);
}

.card-blue-header {
  background: linear-gradient(135deg, #007bff 0%, #6cb2eb 100%);
  background: linear-gradient(135deg, var(--primary-blue) 0%, var(--primary-blue-light) 100%);
  color: #ffffff;
  color: var(--neutral-white);
  padding: var(--spacing-md) 24px;
  border-radius: var(--radius) 12px 0 0;
  font-weight: 600;
}

/* Navigation */
.navbar-blue {
  background: linear-gradient(135deg, #007bff 0%, #0056b3 100%);
  background: linear-gradient(135deg, var(--primary-blue) 0%, var(--primary-blue-dark) 100%);
  border-bottom: 3px solid #6cb2eb;
  border-bottom: 3px solid var(--primary-blue-light);
}

.navbar-blue .nav-link {
  color: #ffffff !important;
  color: var(--neutral-white) !important;
  transition: all 0.3s ease;
}

.navbar-blue .nav-link:hover {
  color: #b8d4f1 !important;
  color: var(--primary-blue-lighter) !important;
  transform: translateY(-1px);
}

.navbar-blue .nav-link.active {
  color: #e3f2fd !important;
  color: var(--primary-blue-lightest) !important;
  background-color: rgba(255, 255, 255, 0.1);
  border-radius: 6px;
}

/* Tables */
.table-blue {
  background-color: #ffffff;
  background-color: var(--neutral-white);
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: 0 2px 8px rgba(0, 123, 255, 0.1);
}

.table-blue th {
  background: linear-gradient(135deg, #e3f2fd 0%, #b8d4f1 100%);
  background: linear-gradient(135deg, var(--primary-blue-lightest) 0%, var(--primary-blue-lighter) 100%);
  color: #0056b3;
  color: var(--primary-blue-dark);
  font-weight: 600;
  border-bottom: 2px solid #6cb2eb;
  border-bottom: 2px solid var(--primary-blue-light);
}

.table-blue tr:nth-child(even) {
  background-color: #e3f2fd;
  background-color: var(--primary-blue-lightest);
}

.table-blue tr:hover {
  background-color: #b8d4f1;
  background-color: var(--primary-blue-lighter);
}

/* Forms */
.form-control-blue {
  border: 2px solid #b8d4f1;
  border: 2px solid var(--primary-blue-lighter);
  border-radius: var(--spacing-sm);
  transition: all 0.3s ease;
}

.form-control-blue:focus {
  border-color: #007bff;
  border-color: var(--primary-blue);
  box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.1);
  outline: none;
}

.form-label-blue {
  color: #0056b3;
  color: var(--primary-blue-dark);
  font-weight: 600;
  margin-bottom: 8px;
}

/* Alerts and Status */
.alert-blue {
  background: linear-gradient(135deg, #e3f2fd 0%, #b8d4f1 100%);
  background: linear-gradient(135deg, var(--primary-blue-lightest) 0%, var(--primary-blue-lighter) 100%);
  border: 1px solid #6cb2eb;
  border: 1px solid var(--primary-blue-light);
  color: #0056b3;
  color: var(--primary-blue-dark);
  border-radius: var(--spacing-sm);
  padding: var(--spacing-md);
}

.alert-success-blue {
  background: linear-gradient(135deg, #d1e7dd 0%, #a3cfbb 100%);
  border: 1px solid #20c997;
  border: 1px solid var(--accent-teal);
  color: #0f5132;
  color: var(--success-blue);
}

.alert-warning-blue {
  background: linear-gradient(135deg, #fff3cd 0%, #ffeaa7 100%);
  border: 1px solid #ffcd39;
  color: #055160;
  color: var(--warning-blue);
}

.alert-error-blue {
  background: linear-gradient(135deg, #f8d7da 0%, #f1aeb5 100%);
  border: 1px solid #f5c2c7;
  color: #842029;
  color: var(--error-blue);
}

/* Progress and Loading */
.progress-blue {
  background-color: #b8d4f1;
  background-color: var(--primary-blue-lighter);
  border-radius: 10px;
  height: 8px;
  overflow: hidden;
}

.progress-blue-bar {
  background: linear-gradient(90deg, #007bff 0%, #6cb2eb 100%);
  background: linear-gradient(90deg, var(--primary-blue) 0%, var(--primary-blue-light) 100%);
  height: 100%;
  transition: width 0.6s ease;
}

.loading-blue {
  border: 3px solid #b8d4f1;
  border: 3px solid var(--primary-blue-lighter);
  border-top: 3px solid #007bff;
  border-top: 3px solid var(--primary-blue);
  border-radius: 50%;
  width: 40px;
  height: 40px;
  animation: spin 1s linear infinite;
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

/* Badges and Tags */
.badge-blue {
  background-color: #007bff;
  background-color: var(--primary-blue);
  color: #ffffff;
  color: var(--neutral-white);
  padding: 6px 12px;
  border-radius: 20px;
  font-size: 12px;
  font-weight: 600;
}

.badge-blue-light {
  background-color: #b8d4f1;
  background-color: var(--primary-blue-lighter);
  color: #0056b3;
  color: var(--primary-blue-dark);
  border: 1px solid #6cb2eb;
  border: 1px solid var(--primary-blue-light);
}

/* Modal and Overlay */
.modal-blue .modal-header {
  background: linear-gradient(135deg, #007bff 0%, #6cb2eb 100%);
  background: linear-gradient(135deg, var(--primary-blue) 0%, var(--primary-blue-light) 100%);
  color: #ffffff;
  color: var(--neutral-white);
  border-bottom: none;
}

.modal-blue .modal-footer {
  border-top: 1px solid #b8d4f1;
  border-top: 1px solid var(--primary-blue-lighter);
}

.overlay-blue {
  background-color: rgba(0, 123, 255, 0.1);
  -webkit-backdrop-filter: blur(5px);
          backdrop-filter: blur(5px);
}

/* Sidebar */
.sidebar-blue {
  background: linear-gradient(180deg, #007bff 0%, #0056b3 100%);
  background: linear-gradient(180deg, var(--primary-blue) 0%, var(--primary-blue-dark) 100%);
  color: #ffffff;
  color: var(--neutral-white);
}

.sidebar-blue .nav-item {
  padding: var(--spacing-sm) 16px;
  margin: var(--spacing-xs) 8px;
  border-radius: var(--spacing-sm);
  transition: all 0.3s ease;
}

.sidebar-blue .nav-item:hover {
  background-color: rgba(255, 255, 255, 0.1);
}

.sidebar-blue .nav-item.active {
  background-color: #ffffff;
  background-color: var(--neutral-white);
  color: #007bff;
  color: var(--primary-blue);
}

/* Common stock color utilities (KR market convention) */
.text-red { color: var(--color-positive) !important; font-weight: 600; }
.text-blue { color: var(--color-negative) !important; font-weight: 600; }
.text-gray { color: #8b95a1 !important; font-weight: 600; }
.profit { color: var(--color-positive) !important; font-weight: 600; }
.loss { color: var(--color-negative) !important; font-weight: 600; }
.neutral { color: #8b95a1 !important; font-weight: 600; }

/* Responsive Design */
@media (max-width: 768px) {
  .card-blue {
    margin: var(--spacing-sm);
    border-radius: var(--spacing-sm);
  }
  
  .btn-primary-blue,
  .btn-secondary-blue {
    padding: 12px 16px;
    font-size: 14px;
  }
}
/* Login.css - Stitch AI "Neo Finance Seoul" Design */

/* ============================================
   Base & Layout
   ============================================ */
.login-page {
  display: flex;
  min-height: 100vh;
  width: 100%;
  background: #ffffff;
  font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, Roboto, sans-serif;
  overflow: hidden;
}

/* ============================================
   LEFT: Hero Section (Dark Navy)
   ============================================ */
.login-hero {
  display: none;
  width: 50%;
  background: #0b1120;
  position: relative;
  flex-direction: column;
  justify-content: space-between;
  padding: 64px;
  overflow: hidden;
}

@media (min-width: 1024px) {
  .login-hero {
    display: flex;
  }
}

/* Glow Effects */
.hero-glow {
  position: absolute;
  border-radius: 50%;
  filter: blur(120px);
  pointer-events: none;
}

.hero-glow-primary {
  top: -10%;
  right: -10%;
  width: 500px;
  height: 500px;
  background: rgba(0, 89, 185, 0.20);
}

.hero-glow-accent {
  bottom: -5%;
  left: -5%;
  width: 400px;
  height: 400px;
  background: rgba(59, 130, 246, 0.10);
}

/* Hero Header */
.hero-header {
  position: relative;
  z-index: 10;
}

.hero-brand {
  font-size: 2.25rem;
  font-weight: 800;
  color: #ffffff;
  letter-spacing: -0.02em;
  font-family: 'Inter', 'Pretendard', sans-serif;
  margin: 0;
}

/* Candlestick Chart Card */
.hero-chart-container {
  position: relative;
  z-index: 10;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.hero-chart-card {
  width: 100%;
  max-width: 28rem;
  background: rgba(255, 255, 255, 0.05);
  -webkit-backdrop-filter: blur(24px);
          backdrop-filter: blur(24px);
  border-radius: 1.5rem;
  padding: 2rem;
  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
  border: 1px solid rgba(255, 255, 255, 0.10);
}

.candlestick-row {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 12px;
  height: 192px;
}

.candle {
  display: flex;
  flex-direction: column;
  align-items: center;
  flex: 1 1;
}

.wick {
  width: 2px;
  border-radius: 9999px;
  opacity: 0.5;
}

.wick-bull {
  background: #ef4444;
}

.wick-bear {
  background: #3b82f6;
}

.body {
  width: 100%;
  border-radius: 2px;
}

.body-bull {
  background: #ef4444;
  box-shadow: 0 0 15px rgba(239, 68, 68, 0.5);
}

.body-bear {
  background: #3b82f6;
  box-shadow: 0 0 15px rgba(59, 130, 246, 0.5);
}

.chart-footer {
  margin-top: 2rem;
  padding-top: 1.5rem;
  border-top: 1px solid rgba(255, 255, 255, 0.05);
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.chart-status {
  display: flex;
  align-items: center;
  gap: 8px;
}

.status-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #ef4444;
  animation: pulse 2s infinite;
}

@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.4; }
}

.chart-status span {
  color: rgba(255, 255, 255, 0.60);
  font-size: 0.75rem;
  font-weight: 500;
}

.chart-index {
  color: rgba(255, 255, 255, 0.40);
  font-size: 0.75rem;
}

/* Hero Slogan */
.hero-slogan {
  position: relative;
  z-index: 10;
}

.slogan-main {
  color: #ffffff;
  font-size: 1.875rem;
  font-weight: 700;
  line-height: 1.3;
  margin: 0 0 8px;
}

.slogan-sub {
  color: rgba(255, 255, 255, 0.50);
  font-size: 0.875rem;
  font-weight: 500;
  margin: 0;
}

/* ============================================
   RIGHT: Login Form Section
   ============================================ */
.login-form-section {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2rem;
  background: #ffffff;
}

@media (min-width: 1024px) {
  .login-form-section {
    width: 50%;
  }
}

.login-form-container {
  width: 100%;
  max-width: 440px;
}

/* Mobile Logo (hidden on desktop) */
.mobile-logo {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 2.5rem;
}

.mobile-brand {
  font-size: 1.5rem;
  font-weight: 800;
  color: #0059b9;
  letter-spacing: -0.02em;
  font-family: 'Inter', 'Pretendard', sans-serif;
  margin: 0;
}

@media (min-width: 1024px) {
  .mobile-logo {
    display: none;
  }
}

/* Form Header */
.form-header {
  margin-bottom: 2.5rem;
  text-align: center;
}

@media (min-width: 1024px) {
  .form-header {
    text-align: left;
  }
}

.form-header h2 {
  font-size: 1.5rem;
  font-weight: 700;
  color: #111827;
  letter-spacing: -0.02em;
  margin: 0 0 8px;
}

.form-header p {
  color: #414754;
  font-size: 0.875rem;
  margin: 0;
}

/* Form */
.login-form {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

/* Input Group */
.input-group {
  position: relative;
}

.input-icon {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  padding-left: 16px;
  display: flex;
  align-items: center;
  pointer-events: none;
  color: #727785;
}

.input-group input {
  width: 100%;
  height: 56px;
  padding: 0 16px 0 48px;
  background: #f2f4f6;
  border: none;
  border-radius: 1rem;
  color: #111827;
  font-size: 0.9375rem;
  font-family: inherit;
  transition: all 0.2s ease;
  outline: none;
  box-sizing: border-box;
}

.input-group input:focus {
  box-shadow: 0 0 0 2px rgba(0, 89, 185, 0.20);
  background: #eceef0;
}

.input-group input::placeholder {
  color: #727785;
}

.input-group input[type="password"] {
  padding-right: 48px;
}

/* Chrome Autofill Fix */
.input-group input:-webkit-autofill,
.input-group input:-webkit-autofill:hover,
.input-group input:-webkit-autofill:focus,
.input-group input:-webkit-autofill:active {
  -webkit-box-shadow: 0 0 0 30px #f2f4f6 inset !important;
  -webkit-text-fill-color: #111827 !important;
  -webkit-transition: background-color 5000s ease-in-out 0s;
  transition: background-color 5000s ease-in-out 0s;
  caret-color: #111827;
  border-radius: 1rem;
}

/* Password Toggle */
.password-toggle {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  padding-right: 16px;
  display: flex;
  align-items: center;
  background: none;
  border: none;
  color: #727785;
  cursor: pointer;
  transition: color 0.2s;
}

.password-toggle:hover {
  color: #0059b9;
}

/* Error Message */
.error-message {
  background: rgba(239, 68, 68, 0.08);
  color: #b61722;
  padding: 12px 16px;
  border-radius: 12px;
  font-size: 0.8125rem;
  text-align: center;
  font-weight: 500;
}

/* Login Button */
.login-button {
  width: 100%;
  height: 56px;
  background: #0059b9;
  color: #ffffff;
  font-weight: 700;
  font-size: 1rem;
  font-family: inherit;
  border: none;
  border-radius: 1rem;
  cursor: pointer;
  box-shadow: 0 10px 15px -3px rgba(0, 89, 185, 0.20);
  transition: all 0.2s ease;
  margin-top: 8px;
  letter-spacing: 0.02em;
}

.login-button:hover:not(:disabled) {
  box-shadow: 0 20px 25px -5px rgba(0, 89, 185, 0.25);
  transform: translateY(-1px);
}

.login-button:active:not(:disabled) {
  transform: scale(0.98);
}

.login-button:disabled {
  opacity: 0.6;
  cursor: not-allowed;
  transform: none;
}

/* Footer */
.login-footer {
  margin-top: 2.5rem;
  text-align: center;
}

.login-footer p {
  font-size: 0.875rem;
  color: #414754;
  margin: 0;
}

.login-footer a {
  color: #0059b9;
  font-weight: 700;
  text-decoration: none;
  margin-left: 8px;
}

.login-footer a:hover {
  text-decoration: underline;
}

/* ============================================
   Register Page (auth-container compat)
   ============================================ */
.auth-container {
  max-width: 440px;
  margin: 80px auto;
  padding: 40px;
  background: #ffffff;
  border-radius: 1.5rem;
  box-shadow: 0 12px 32px -4px rgba(0, 0, 0, 0.04), 0 4px 12px -2px rgba(0, 0, 0, 0.02);
}

.auth-container h2 {
  font-size: 1.5rem;
  font-weight: 700;
  color: #111827;
  margin: 0 0 24px;
  text-align: center;
}

.auth-container form {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.auth-container label {
  font-size: 0.875rem;
  font-weight: 600;
  color: #414754;
  margin-bottom: 4px;
  display: block;
}

.auth-container input {
  width: 100%;
  height: 48px;
  padding: 0 16px;
  background: #f2f4f6;
  border: none;
  border-radius: 12px;
  color: #111827;
  font-size: 0.9375rem;
  outline: none;
  box-sizing: border-box;
}

.auth-container input:focus {
  box-shadow: 0 0 0 2px rgba(0, 89, 185, 0.20);
}

.auth-container button[type="submit"] {
  width: 100%;
  height: 48px;
  background: #0059b9;
  color: #ffffff;
  font-weight: 700;
  border: none;
  border-radius: 12px;
  cursor: pointer;
  font-size: 1rem;
  margin-top: 8px;
}

.auth-container button[type="submit"]:hover {
  opacity: 0.9;
}

.auth-container p {
  text-align: center;
  color: #414754;
  font-size: 0.875rem;
  margin-top: 16px;
}

.auth-container a {
  color: #0059b9;
  font-weight: 600;
  text-decoration: none;
}

.auth-container a:hover {
  text-decoration: underline;
}

.auth-container .message {
  text-align: center;
  color: #b61722;
  font-size: 0.875rem;
  margin-top: 12px;
}

/* ============================================
   Social Login Buttons
   ============================================ */
.social-divider {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 20px 0;
}

.social-divider::before,
.social-divider::after {
  content: '';
  flex: 1 1;
  height: 1px;
  background: rgba(255, 255, 255, 0.08);
}

.social-divider span {
  font-size: 13px;
  color: #64748b;
  white-space: nowrap;
}

.social-login-buttons {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.social-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 12px 16px;
  border-radius: 10px;
  font-size: 14px;
  font-weight: 600;
  text-decoration: none;
  transition: all 0.2s;
  cursor: pointer;
  border: none;
}

.social-btn-google {
  background: #fff;
  color: #374151;
}

.social-btn-google:hover {
  background: #f3f4f6;
}

.social-btn-naver {
  background: #03C75A;
  color: #fff;
}

.social-btn-naver:hover {
  background: #02b351;
}

/* ============================================
   Mobile Optimized (Stitch AI Mobile Design)
   ============================================ */
@media (max-width: 768px) {
  .login-page {
    position: relative;
  }

  /* Subtle background glow for mobile */
  .login-page::before {
    content: '';
    position: fixed;
    top: -10%;
    right: -10%;
    width: 256px;
    height: 256px;
    background: rgba(0, 89, 185, 0.05);
    border-radius: 50%;
    filter: blur(100px);
    z-index: -1;
    pointer-events: none;
  }

  .login-page::after {
    content: '';
    position: fixed;
    bottom: -5%;
    left: -10%;
    width: 320px;
    height: 320px;
    background: rgba(239, 68, 68, 0.03);
    border-radius: 50%;
    filter: blur(120px);
    z-index: -1;
    pointer-events: none;
  }

  .login-form-section {
    padding: 0;
    min-height: 100vh;
    display: flex;
    align-items: stretch;
  }

  .login-form-container {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    padding: 24px 32px 48px;
  }

  .mobile-logo {
    display: flex;
    padding-top: 24px;
    margin-bottom: 3rem;
  }

  .form-header {
    margin-bottom: 2rem;
    text-align: left;
  }

  .form-header h2 {
    font-size: 2rem;
    line-height: 1.2;
  }

  .form-header p {
    font-size: 1rem;
    opacity: 0.7;
    font-weight: 500;
  }

  .login-form {
    flex-grow: 1;
  }

  .input-group input {
    height: 64px;
    font-size: 1rem;
  }

  .login-button {
    height: 64px;
    font-size: 1.125rem;
    margin-top: 16px;
  }

  .login-footer {
    margin-top: auto;
    padding-top: 2rem;
  }
}

@media (max-width: 390px) {
  .login-form-container {
    padding: 20px 24px 40px;
  }

  .form-header h2 {
    font-size: 1.75rem;
  }
}

.navbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0 var(--spacing-lg);
  background: #fff !important;
  background: var(--bg-card, #fff) !important;
  border-bottom: 1px solid var(--toss-grey-200) !important;
  height: 64px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04) !important;
  position: -webkit-sticky;
  position: sticky;
  top: 0;
  z-index: 1100;
  -webkit-backdrop-filter: blur(12px);
          backdrop-filter: blur(12px);
  transition: background-color 0.3s ease, border-color 0.3s ease;
}

[data-theme='dark'] .navbar {
  background: rgba(23, 23, 28, 0.8) !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1) !important;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2) !important;
}

.navbar-left {
  display: flex;
  align-items: center;
  gap: var(--spacing-md);
}

.navbar-brand {
  font-size: 20px;
  font-weight: 800;
  color: var(--toss-grey-900);
  text-decoration: none;
  transition: opacity 0.2s;
  display: flex;
  align-items: center;
  gap: var(--spacing-xs);
  letter-spacing: -0.01em;
}

.navbar-brand:hover {
  opacity: 0.7;
  text-decoration: none;
  color: var(--toss-grey-900);
}

.nav-link {
  color: var(--toss-grey-600);
  text-decoration: none;
  font-size: 15px;
  font-weight: 600;
  padding: var(--spacing-sm) var(--spacing-md);
  border-radius: var(--radius-sm);
  transition: all 0.2s;
  position: relative;
}

.nav-link:hover {
  background-color: var(--toss-grey-100);
  color: var(--toss-grey-800);
  text-decoration: none;
}

.nav-link.active {
  color: var(--toss-blue);
  background-color: var(--toss-blue-light);
  font-weight: 700;
}

.navbar-user {
  font-size: 14px;
  color: var(--toss-grey-700);
  font-weight: 500;
  display: flex;
  align-items: center;
  gap: var(--spacing-xs);
  padding: 6px 12px;
  background-color: var(--toss-grey-100);
  border-radius: var(--radius-full);
}

.navbar-user::before {
  content: '👤';
  font-size: 14px;
}

.nav-button {
  background: var(--toss-white);
  border: 1px solid var(--toss-grey-300);
  padding: 8px 16px;
  border-radius: var(--radius-sm);
  cursor: pointer;
  border-color: var(--toss-blue-light);
  background-color: var(--toss-blue-light);
}

.theme-toggle-btn:hover {
  background-color: var(--toss-blue);
  color: white;
  border-color: var(--toss-blue);
}

/* --- Mobile Menu Styles --- */
.navbar-mobile {
  display: none;
  position: relative;
  align-items: center;
  gap: 8px;
}

/* 모바일 다크모드 버튼 - 항상 표시 */
.mobile-darkmode-btn {
  background: none;
  border: none;
  font-size: 20px;
  cursor: pointer;
  color: var(--toss-grey-700);
  padding: 8px;
  border-radius: var(--radius-sm);
  transition: background-color 0.2s, color 0.2s;
  min-width: 40px;
  min-height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  -webkit-tap-highlight-color: transparent;
}

.mobile-darkmode-btn:hover {
  background-color: var(--toss-grey-100);
}

.mobile-darkmode-btn:active {
  background-color: var(--toss-grey-200);
}

.hamburger-btn {
  background: none;
  border: none;
  font-size: 24px;
  cursor: pointer;
  color: var(--toss-grey-800);
  padding: var(--spacing-sm);
  border-radius: var(--radius-sm);
  transition: background-color 0.2s;
  min-width: 44px;
  min-height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  -webkit-tap-highlight-color: transparent;
}

.hamburger-btn:hover {
  background-color: var(--toss-grey-100);
}

.mobile-menu {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  min-width: 220px;
  background-color: #1a1a2e;
  background-color: var(--bg-card, #1a1a2e);
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border: 1px solid var(--border-color, rgba(255, 255, 255, 0.1));
  border-radius: var(--radius-md);
  z-index: 9999;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  animation: slideDown 0.2s ease-out;
  padding: var(--spacing-xs);
  /* 모바일 터치 영역 개선 */
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  user-select: none;
}

/* 다크모드 모바일 메뉴 */
[data-theme='dark'] .mobile-menu {
  background-color: #1a1a2e;
  border-color: rgba(255, 255, 255, 0.1);
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4);
}

@keyframes slideDown {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.mobile-nav-link,
.mobile-nav-button {
  padding: 12px 16px;
  text-align: left;
  text-decoration: none;
  color: var(--toss-grey-700);
  width: 100%;
  font-size: 15px;
  font-weight: 500;
  transition: all 0.2s;
  border-radius: var(--radius-sm);
  display: flex;
  align-items: center;
  box-sizing: border-box;
  background: none;
  border: none;
  cursor: pointer;
  /* 터치 영역 최적화 */
  min-height: var(--button-height-md);
  -webkit-tap-highlight-color: transparent;
}

.mobile-nav-link:hover,
.mobile-nav-button:hover {
  background-color: var(--toss-grey-100);
  color: var(--toss-grey-900);
}

/* 다크모드 모바일 메뉴 항목 */
[data-theme='dark'] .mobile-nav-link,
[data-theme='dark'] .mobile-nav-button {
  color: #f2f4f6;
  color: var(--text-primary, #f2f4f6);
}

[data-theme='dark'] .mobile-nav-link:hover,
[data-theme='dark'] .mobile-nav-button:hover {
  background-color: rgba(255, 255, 255, 0.1);
  color: #fff;
}

.mobile-nav-link.active {
  background-color: var(--toss-blue-light);
  color: var(--toss-blue);
  font-weight: 600;
}

/* Mobile user info */
.mobile-user-info {
  padding: 12px 16px;
  border-bottom: 1px solid var(--toss-grey-200);
  margin-bottom: 8px;
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--toss-grey-700);
  font-weight: 500;
  font-size: 14px;
}

/* 다크모드 모바일 유저 정보 */
[data-theme='dark'] .mobile-user-info {
  color: #f2f4f6;
  color: var(--text-primary, #f2f4f6);
  border-bottom-color: rgba(255, 255, 255, 0.1);
}

/* Mobile menu divider */
.mobile-divider {
  height: 1px;
  background-color: var(--toss-grey-200);
  margin: 8px 0;
}

/* =============================================== */
/* PC용 오른쪽 영역 (admin/로그아웃) - 다크모드 적용 */
/* =============================================== */
.navbar-right-desktop {
  display: flex;
  align-items: center;
  gap: 8px;
  background-color: #1a1a2e;
  background-color: var(--bg-card, #1a1a2e);
  padding: 6px 10px;
  border-radius: var(--radius-md);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border: 1px solid var(--border-color, rgba(255, 255, 255, 0.1));
  white-space: nowrap;
  flex-shrink: 0;
}

[data-theme='dark'] .navbar-right-desktop {
  background-color: rgba(26, 26, 46, 0.9);
  border-color: rgba(255, 255, 255, 0.1);
}

.navbar-right-desktop .navbar-user-badge {
  font-size: 13px;
  font-weight: 500;
  white-space: nowrap;
}

.navbar-right-desktop .nav-button {
  background-color: transparent;
  border: 1px solid rgba(255, 255, 255, 0.2);
  color: #f2f4f6;
  color: var(--text-primary, #f2f4f6);
  padding: 4px 10px;
  font-size: 13px;
  font-weight: 500;
  border-radius: var(--radius-sm);
  padding: 0 8px;
}

/* =============================================== */
/* Killswitch Button                               */
/* =============================================== */
.killswitch-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 12px;
  font-size: 12px;
  font-weight: 700;
  border: none;
  border-radius: var(--radius-sm);
  cursor: pointer;
  transition: all 0.2s;
  white-space: nowrap;
  line-height: 1.4;
}

.killswitch-btn:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}

.killswitch-off {
  background-color: rgba(0, 200, 83, 0.15);
  color: #00c853;
  border: 1px solid rgba(0, 200, 83, 0.3);
}

.killswitch-off:hover:not(:disabled) {
  background-color: rgba(0, 200, 83, 0.25);
}

.killswitch-on {
  background-color: rgba(255, 23, 68, 0.15);
  color: #ff1744;
  border: 1px solid rgba(255, 23, 68, 0.3);
  animation: killswitch-pulse 2s infinite;
}

.killswitch-on:hover:not(:disabled) {
  background-color: rgba(255, 23, 68, 0.25);
}

@keyframes killswitch-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.7; }
}

/* 모바일 킬스위치 */
.mobile-nav-button.killswitch-btn {
  justify-content: center;
  padding: 10px 16px;
  font-size: 13px;
  margin-bottom: 4px;
}


/* =============================================== */
/* Mobile Responsive Layout                        */
/* =============================================== */
@media (max-width: 768px) {
  /* 모바일에서 navbar 레이아웃 조정 */
  .navbar {
    padding: 0 12px;
    height: 56px;
  }

  .navbar-left {
    flex: 1 1;
    min-width: 0;
    overflow: hidden;
  }

  .navbar-brand {
    font-size: 16px;
  }

  /* 데스크톱 메뉴 숨김 */
  .navbar-right-desktop {
    display: none !important;
  }

  /* 모바일 메뉴 표시 */
  .navbar-mobile {
    display: flex !important;
    flex-shrink: 0;
  }

  .mobile-menu {
    min-width: 160px;
    padding: 8px;
  }

  .mobile-user-info {
    padding: 8px 12px;
    font-size: 13px;
    margin-bottom: 4px;
    white-space: nowrap;
  }

  .mobile-nav-button {
    padding: 8px 12px;
    font-size: 13px;
    white-space: nowrap;
  }

  .mobile-nav-button svg,
  .mobile-user-info svg {
    width: 14px;
    height: 14px;
  }

  /* MarketTicker 모바일에서 숨김 */
  .market-ticker {
    display: none !important;
  }
}
:root {
  /* -- Toss Style Color System (Default/Light) -- */
  /* Primary */
  --toss-blue: #3182F6;
  --toss-blue-light: #E8F3FF;
  --toss-blue-dark: #1B64DA;

  /* Stock Colors (Korea Standard) */
  --stock-red: #F04452;
  /* Rise/Profit */
  --stock-red-bg: #FDF4F5;
  --stock-blue: #3182F6;
  /* Fall/Loss */
  --stock-blue-bg: #E8F3FF;

  /* Grayscale */
  --toss-grey-900: #191F28;
  /* Main Text */
  --toss-grey-800: #333D4B;
  --toss-grey-700: #4E5968;
  --toss-grey-600: #6B7684;
  /* Sub Text */
  --toss-grey-500: #8B95A1;
  --toss-grey-400: #B0B8C1;
  --toss-grey-300: #D1D6DB;
  /* Border */
  --toss-grey-200: #E5E8EB;
  --toss-grey-100: #F2F4F6;
  /* Divider */
  --toss-grey-50: #F9FAFB;
  /* Background */
  --toss-white: #FFFFFF;

  /* Spacing */
  --spacing-xs: 4px;
  --spacing-sm: 8px;
  --spacing-md: 16px;
  --spacing-lg: 24px;
  --spacing-xl: 32px;

  /* Radius */
  --radius-sm: 8px;
  --radius-md: 16px;
  --radius-lg: 24px;
  --radius-full: 9999px;

  /* Semantic Colors (Light Mode Defaults) */
  --bg-primary: #F9FAFB;
  --bg-secondary: #F2F4F6;
  --bg-card: #FFFFFF;
  --bg-hover: #E5E8EB;
  --text-primary: #191F28;
  --text-secondary: #4E5968;
  --text-muted: #8B95A1;
  --border-color: #E5E8EB;
  --divider-color: #F2F4F6;
}

/* ==============================================
   MIDNIGHT PRO THEME (Dark Mode)
   ============================================== */
.dark-mode,
[data-theme="dark"] {
  /* Midnight Pro Palette */
  --bg-primary: #191F28;
  /* Deep Charcoal */
  --bg-secondary: #1B1F27;
  /* Slightly darker for contrast */
  --bg-card: #252B35;
  /* Lighter Charcoal for cards */
  --bg-hover: #333D4B;
  /* Hover state */

  --text-primary: #F2F4F6;
  /* High contrast white */
  --text-secondary: #B0B8C1;
  /* Soft grey */
  --text-muted: #6B7684;
  /* Muted grey */

  --border-color: #333D4B;
  /* Subtle border */
  --divider-color: #252B35;

  /* Adjusted Primary Colors for Dark Mode */
  --toss-blue: #4A9DFF;
  --toss-blue-light: rgba(74, 157, 255, 0.15);
  --toss-blue-dark: #6BB3FF;

  --stock-red: #FF6B6B;
  --stock-red-bg: rgba(255, 107, 107, 0.15);
  --stock-blue: #4A9DFF;
  --stock-blue-bg: rgba(74, 157, 255, 0.15);

  /* Grayscale Overrides for Compatibility */
  --toss-grey-900: #F2F4F6;
  --toss-grey-800: #E5E8EB;
  --toss-grey-700: #D1D6DB;
  --toss-grey-600: #B0B8C1;
  --toss-grey-500: #8B95A1;
  --toss-grey-400: #6B7684;
  --toss-grey-300: #4E5968;
  --toss-grey-200: #333D4B;
  --toss-grey-100: #252B35;
  --toss-grey-50: #191F28;
  --toss-white: #252B35;
}

/* -- Typography -- */
body {
  font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, Roboto, 'Helvetica Neue', 'Segoe UI', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', sans-serif;
  background-color: #F9FAFB;
  background-color: var(--bg-primary);
  color: #191F28;
  color: var(--text-primary);
  transition: background-color 0.3s ease, color 0.3s ease;
}

.toss-font-title {
  font-size: 24px;
  font-weight: 700;
  color: #191F28;
  color: var(--text-primary);
  line-height: 1.4;
  letter-spacing: -0.02em;
}

.toss-font-subtitle {
  font-size: 18px;
  font-weight: 600;
  color: #191F28;
  color: var(--text-primary);
  letter-spacing: -0.01em;
}

.toss-font-body {
  font-size: 16px;
  font-weight: 400;
  color: #4E5968;
  color: var(--text-secondary);
  line-height: 1.5;
}

.toss-font-caption {
  font-size: 14px;
  font-weight: 400;
  color: #8B95A1;
  color: var(--text-muted);
}

/* -- Components -- */

/* Card */
.toss-card {
  background-color: #FFFFFF;
  background-color: var(--bg-card);
  border-radius: 16px;
  border-radius: var(--radius-md);
  padding: 24px;
  padding: var(--spacing-lg);
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.05);
  margin-bottom: 16px;
  margin-bottom: var(--spacing-md);
  border: 1px solid #E5E8EB;
  border: 1px solid var(--border-color);
  /* Subtle border for definition */
  transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.3s ease, background-color 0.3s ease;
}

.toss-card:hover {
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);
  border-color: #B0B8C1;
  border-color: var(--toss-grey-400);
}

/* Buttons */
.toss-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 14px 20px;
  border-radius: 16px;
  border-radius: var(--radius-md);
  font-size: 16px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s;
  border: none;
  width: 100%;
  gap: 8px;
  /* Space between icon and text */
}

.toss-btn-primary {
  background-color: #3182F6;
  background-color: var(--toss-blue);
  color: #FFFFFF;
  /* Always white for primary btn */
}

.toss-btn-primary:hover {
  background-color: #1B64DA;
  background-color: var(--toss-blue-dark);
  transform: translateY(-1px);
}

.toss-btn-primary:active {
  transform: translateY(0);
}

.toss-btn-secondary {
  background-color: #E5E8EB;
  background-color: var(--bg-hover);
  color: #191F28;
  color: var(--text-primary);
  border: 1px solid #E5E8EB;
  border: 1px solid var(--border-color);
}

.toss-btn-secondary:hover {
  background-color: #E5E8EB;
  background-color: var(--toss-grey-200);
}

/* Tabs */
.toss-tabs {
  display: flex;
  gap: 24px;
  gap: var(--spacing-lg);
  border-bottom: 1px solid #E5E8EB;
  border-bottom: 1px solid var(--border-color);
  margin-bottom: 24px;
  margin-bottom: var(--spacing-lg);
  overflow-x: auto;
  padding-bottom: 2px;
}

.toss-tab-item {
  padding: 8px 0;
  padding: var(--spacing-sm) 0;
  font-size: 17px;
  font-weight: 600;
  color: #8B95A1;
  color: var(--text-muted);
  cursor: pointer;
  position: relative;
  white-space: nowrap;
  background: none;
  border: none;
  transition: color 0.2s;
}

.toss-tab-item:hover {
  color: #4E5968;
  color: var(--text-secondary);
}

.toss-tab-item.active {
  color: #191F28;
  color: var(--text-primary);
}

.toss-tab-item.active::after {
  content: '';
  position: absolute;
  bottom: -3px;
  /* Overlap border */
  left: 0;
  width: 100%;
  height: 2px;
  background-color: #191F28;
  background-color: var(--text-primary);
}

/* Badge/Tag */
.toss-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 4px 8px;
  border-radius: 8px;
  border-radius: var(--radius-sm);
  font-size: 12px;
  font-weight: 600;
  line-height: 1;
}

.toss-badge-red {
  background-color: #FDF4F5;
  background-color: var(--stock-red-bg);
  color: #F04452;
  color: var(--stock-red);
}

.toss-badge-blue {
  background-color: #E8F3FF;
  background-color: var(--stock-blue-bg);
  color: #3182F6;
  color: var(--stock-blue);
}

.toss-badge-grey {
  background-color: #E5E8EB;
  background-color: var(--bg-hover);
  color: #8B95A1;
  color: var(--text-muted);
}

/* Layout Helpers */
.toss-container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 16px;
  padding: var(--spacing-md);
}

.toss-mobile-container {
  max-width: 100%;
  padding: 16px;
  padding: var(--spacing-md);
  background-color: #F9FAFB;
  background-color: var(--bg-primary);
  min-height: 100vh;
}

.toss-flex-between {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.toss-flex-col {
  display: flex;
  flex-direction: column;
  gap: 4px;
  gap: var(--spacing-xs);
}

.toss-flex-row {
  display: flex;
  align-items: center;
  gap: 8px;
  gap: var(--spacing-sm);
}

.toss-grid-2 {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
  grid-gap: 16px;
  grid-gap: var(--spacing-md);
  gap: var(--spacing-md);
}

.toss-grid-3 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  grid-gap: 16px;
  grid-gap: var(--spacing-md);
  gap: var(--spacing-md);
}

.toss-grid-4 {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
  grid-gap: 16px;
  grid-gap: var(--spacing-md);
  gap: var(--spacing-md);
}

.toss-text-center {
  text-align: center;
}

.toss-text-right {
  text-align: right;
}

.toss-text-left {
  text-align: left;
}

.toss-text-red {
  color: #F04452;
  color: var(--stock-red);
}

.toss-text-blue {
  color: #3182F6;
  color: var(--stock-blue);
}

.toss-text-grey {
  color: #8B95A1;
  color: var(--text-muted);
}

/* Input Styles */
.toss-input {
  width: 100%;
  padding: 12px 16px;
  border-radius: 8px;
  border-radius: var(--radius-sm);
  border: 1px solid #E5E8EB;
  border: 1px solid var(--border-color);
  background-color: #F2F4F6;
  background-color: var(--bg-secondary);
  color: #191F28;
  color: var(--text-primary);
  font-size: 16px;
  transition: border-color 0.2s;
}

.toss-input:focus {
  outline: none;
  border-color: #3182F6;
  border-color: var(--toss-blue);
}

/* Responsive */
@media (max-width: 768px) {

  .toss-grid-2,
  .toss-grid-3,
  .toss-grid-4 {
    grid-template-columns: 1fr;
  }

  .toss-container {
    padding: 8px;
    padding: var(--spacing-sm);
  }

  .toss-card {
    padding: 16px;
    padding: var(--spacing-md);
  }
}

/* Scrollbar Customization */
::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

::-webkit-scrollbar-track {
  background: #F9FAFB;
  background: var(--bg-primary);
}

::-webkit-scrollbar-thumb {
  background: #D1D6DB;
  background: var(--toss-grey-300);
  border-radius: 4px;
}

::-webkit-scrollbar-thumb:hover {
  background: #B0B8C1;
  background: var(--toss-grey-400);
}
.market-ticker-container {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-left: 16px;
    padding: 4px 12px;
    background-color: var(--toss-grey-50);
    border-radius: 8px;
    transition: opacity 0.5s ease-in-out;
    height: 32px;
}

.market-ticker-container.fade-in {
    opacity: 1;
}

.market-ticker-container.fade-out {
    opacity: 0;
}

.ticker-item {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    font-weight: 500;
    white-space: nowrap;
}

.ticker-name {
    color: var(--toss-grey-700);
    font-weight: 600;
}

.ticker-value {
    font-weight: 600;
}

.ticker-rate {
    font-size: 12px;
}

.ticker-divider {
    width: 1px;
    height: 12px;
    background-color: var(--toss-grey-300);
    margin-left: 6px;
}


@media (max-width: 1024px) and (min-width: 769px) {
    .market-ticker-container {
        font-size: 11px;
        gap: 8px;
    }

    .ticker-item {
        font-size: 11px;
    }
}

/* Loading state */
.ticker-loading {
    color: var(--toss-grey-500);
    font-size: 12px;
    font-weight: 500;
}

/* Error indicator */
.ticker-error-indicator {
    color: var(--toss-orange);
    font-size: 10px;
    font-weight: bold;
    margin-left: 4px;
    cursor: help;
}
/* =============================================== */
/* Mobile Responsiveness - Market Ticker          */
/* =============================================== */
@media (max-width: 768px) {
  .market-ticker-container {
    display: flex !important;
    margin-left: 8px;
    padding: 4px 10px;
    gap: 6px;
    font-size: 12px;
    height: auto;
    min-height: 28px;
    max-width: none;
    flex: 1 1;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  
  .market-ticker-container::-webkit-scrollbar {
    display: none;
  }
  
  .ticker-item {
    font-size: 12px;
    gap: 4px;
    flex-shrink: 0;
  }
  
  .ticker-name {
    font-size: 11px;
    font-weight: 700;
  }

  /* 모바일에서도 지수 값 표시 */
  .ticker-value {
    font-size: 11px;
    font-weight: 600;
  }

  .ticker-rate {
    font-size: 11px;
    font-weight: 600;
  }

  /* 모바일에서 KR/US 아이콘 숨김 */
  .ticker-region {
    display: none;
  }
  
  .ticker-divider {
    margin-left: 4px;
    margin-right: 2px;
    height: 10px;
  }
}

/* 태블릿 (768px ~ 1024px) */
@media (max-width: 1024px) and (min-width: 769px) {
  .market-ticker-container {
    font-size: 12px;
    gap: 10px;
  }
  
  .ticker-item {
    font-size: 12px;
  }
}

/* 아주 작은 화면 (< 480px) */
@media (max-width: 480px) {
  .market-ticker-container {
    margin-left: 6px;
    padding: 3px 8px;
    gap: 4px;
  }
  
  .ticker-name {
    font-size: 10px;
  }
  
  .ticker-rate {
    font-size: 11px;
  }
}

/* Region badge style */
.ticker-region {
  font-size: 10px;
  font-weight: 700;
  color: #fff;
  background-color: var(--toss-blue);
  padding: 2px 6px;
  border-radius: 4px;
  margin-right: 4px;
}

/* Fade animation */
.market-ticker-container.fade-in {
  opacity: 1;
  transition: opacity 0.3s ease-in;
}

.market-ticker-container.fade-out {
  opacity: 0;
  transition: opacity 0.3s ease-out;
}

/**
 * 공통 아이콘 스타일
 * Font Awesome 기반 아이콘 시스템
 */

/* ============================================
   기본 아이콘 스타일
   ============================================ */
.icon-base {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
}

/* ============================================
   아이콘 크기
   ============================================ */
.icon-xs {
  font-size: 10px;
  width: 10px;
  height: 10px;
}

.icon-sm {
  font-size: 12px;
  width: 12px;
  height: 12px;
}

.icon-md {
  font-size: 16px;
  width: 16px;
  height: 16px;
}

.icon-lg {
  font-size: 20px;
  width: 20px;
  height: 20px;
}

.icon-xl {
  font-size: 24px;
  width: 24px;
  height: 24px;
}

.icon-2xl {
  font-size: 32px;
  width: 32px;
  height: 32px;
}

.icon-3xl {
  font-size: 48px;
  width: 48px;
  height: 48px;
}

/* ============================================
   한국식 증권 UI 색상 (빨강=상승, 파랑=하락)
   ============================================ */
.icon-positive,
.icon-up,
.icon-profit {
  color: var(--color-positive); /* 빨강 - 상승/수익 */
}

.icon-negative,
.icon-down,
.icon-loss {
  color: var(--color-negative); /* 파랑 - 하락/손실 */
}

.icon-neutral,
.icon-default {
  color: #95a5a6; /* 회색 - 중립 */
}

.icon-warning,
.icon-caution {
  color: var(--warning); /* 주황 - 경고 */
}

.icon-info,
.icon-primary {
  color: var(--color-negative); /* 파랑 - 정보 */
}

.icon-success {
  color: #27ae60; /* 초록 - 성공 */
}

.icon-danger,
.icon-error {
  color: #c0392b; /* 진한 빨강 - 위험 */
}

.icon-muted {
  color: #bdc3c7; /* 연한 회색 - 비활성 */
}

.icon-dark {
  color: #2c3e50; /* 어두운 회색 */
}

.icon-light {
  color: #ecf0f1; /* 밝은 회색 */
}

.icon-white {
  color: #ffffff; /* 흰색 */
}

/* ============================================
   아이콘 배경 스타일
   ============================================ */
.icon-bg-positive {
  background-color: rgba(231, 76, 60, 0.1);
  border-radius: var(--spacing-xs);
  padding: var(--spacing-xs);
}

.icon-bg-negative {
  background-color: rgba(52, 152, 219, 0.1);
  border-radius: var(--spacing-xs);
  padding: var(--spacing-xs);
}

.icon-bg-warning {
  background-color: rgba(243, 156, 18, 0.1);
  border-radius: var(--spacing-xs);
  padding: var(--spacing-xs);
}

.icon-bg-success {
  background-color: rgba(39, 174, 96, 0.1);
  border-radius: var(--spacing-xs);
  padding: var(--spacing-xs);
}

/* ============================================
   아이콘 애니메이션
   ============================================ */
.icon-spin {
  animation: icon-spin 1s linear infinite;
}

.icon-pulse {
  animation: icon-pulse 2s ease-in-out infinite;
}

.icon-bounce {
  animation: icon-bounce 1s ease infinite;
}

@keyframes icon-spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

@keyframes icon-pulse {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0.5;
  }
}

@keyframes icon-bounce {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-5px);
  }
}

/* ============================================
   호버 효과
   ============================================ */
.icon-hover:hover {
  opacity: 0.7;
  cursor: pointer;
  transform: scale(1.1);
}

.icon-clickable {
  cursor: pointer;
  transition: all 0.2s ease;
}

.icon-clickable:hover {
  transform: scale(1.15);
  opacity: 0.8;
}

.icon-clickable:active {
  transform: scale(0.95);
}

/* ============================================
   아이콘 간격
   ============================================ */
.icon-mr-1 {
  margin-right: 4px;
}

.icon-mr-2 {
  margin-right: 8px;
}

.icon-mr-3 {
  margin-right: 12px;
}

.icon-ml-1 {
  margin-left: 4px;
}

.icon-ml-2 {
  margin-left: 8px;
}

.icon-ml-3 {
  margin-left: 12px;
}

/* ============================================
   아이콘 배지 (숫자 표시)
   ============================================ */
.icon-badge {
  position: relative;
}

.icon-badge::after {
  content: attr(data-badge);
  position: absolute;
  top: -8px;
  right: -8px;
  background-color: var(--color-positive);
  color: white;
  font-size: 10px;
  font-weight: bold;
  border-radius: 50%;
  width: 16px;
  height: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
}

/* ============================================
   반응형 디자인
   ============================================ */
@media (max-width: 768px) {
  .icon-lg {
    font-size: 18px;
  }

  .icon-xl {
    font-size: 22px;
  }

  .icon-2xl {
    font-size: 28px;
  }
}

@media (max-width: 480px) {
  .icon-md {
    font-size: 14px;
  }

  .icon-lg {
    font-size: 16px;
  }

  .icon-xl {
    font-size: 20px;
  }
}
/* AppSidebar.css
 * No-Line Rule: border: none on interactive elements
 * Design tokens: --change-* prefix
 * Dark mode: [data-theme='dark'] selector
 */

/* ============================================================
   Material Symbols 아이콘 스타일
   ============================================================ */
.material-symbols-outlined {
  font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
  font-size: 24px;
}

/* ============================================================
   CSS 변수 기본값 (로컬 스코프)
   ============================================================ */
:root {
  --appsidebar-width: 256px;
  --appsidebar-collapsed-width: 64px;
  --appsidebar-transition: 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  --appsidebar-bg: #f8f9fb;
  --appsidebar-brand-color: #0059b9;
  --appsidebar-active-bg: #ffffff;
  --appsidebar-active-color: var(--change-primary, #3182F6);
  --appsidebar-hover-bg: rgba(49, 130, 246, 0.06);
  --appsidebar-text: var(--change-text-secondary, #4E5968);
  --appsidebar-text-active: var(--change-text-primary, #191F28);
  --appsidebar-icon-color: var(--change-gray-600, #6B7684);
  --appsidebar-shadow: 1px 0 0 rgba(0, 0, 0, 0.04);
  --appsidebar-mobile-bg: rgba(255, 255, 255, 0.97);
  --appsidebar-mobile-shadow: 0 -4px 20px rgba(0, 0, 0, 0.06);
}

[data-theme='dark'] {
  --appsidebar-bg: var(--change-bg, #202632);
  --appsidebar-active-bg: var(--change-card-bg, #2C3542);
  --appsidebar-hover-bg: rgba(49, 130, 246, 0.12);
  --appsidebar-text: var(--change-text-secondary, #B0B8C1);
  --appsidebar-text-active: var(--change-text-primary, #F2F4F6);
  --appsidebar-icon-color: var(--change-gray-600, #B0B8C1);
  --appsidebar-shadow: 1px 0 0 rgba(255, 255, 255, 0.04);
  --appsidebar-mobile-bg: rgba(32, 38, 50, 0.97);
  --appsidebar-mobile-shadow: 0 -4px 20px rgba(0, 0, 0, 0.3);
}

/* ============================================================
   사이드바 루트 (데스크톱)
   ============================================================ */
.appsidebar {
  position: fixed;
  left: 0;
  top: 0;
  bottom: 0;
  width: 256px;
  width: var(--appsidebar-width);
  background-color: #f8f9fb;
  background-color: var(--appsidebar-bg);
  display: flex;
  flex-direction: column;
  z-index: 200;
  box-shadow: 1px 0 0 rgba(0, 0, 0, 0.04);
  box-shadow: var(--appsidebar-shadow);
  transition: width 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  transition: width var(--appsidebar-transition);
  overflow: hidden;
  /* 모바일에서 숨김 */
}

.appsidebar.collapsed {
  width: 64px;
  width: var(--appsidebar-collapsed-width);
}

/* ============================================================
   브랜드 헤더
   ============================================================ */
.appsidebar-brand {
  height: 64px;
  display: flex;
  align-items: center;
  padding: 0 20px;
  flex-shrink: 0;
}

.appsidebar-brand-icon {
  font-size: 22px;
  color: #0059b9;
  color: var(--appsidebar-brand-color);
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
}

.appsidebar-brand-text {
  display: flex;
  flex-direction: column;
  gap: 1px;
}

.appsidebar-brand-name {
  font-size: 18px;
  font-weight: 800;
  color: #0059b9;
  color: var(--appsidebar-brand-color);
  letter-spacing: -0.02em;
  white-space: nowrap;
}

.appsidebar-brand-sub {
  font-size: 11px;
  font-weight: 500;
  color: #4E5968;
  color: var(--appsidebar-text);
  letter-spacing: 0.02em;
  white-space: nowrap;
}

/* ============================================================
   마켓 토글 섹션
   ============================================================ */
.appsidebar-section {
  padding: 8px 12px;
  flex-shrink: 0;
}

.appsidebar-section-market {
  padding: 6px 12px 10px;
}

.appsidebar-market-toggle {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  background: rgba(49, 130, 246, 0.06);
  background: var(--appsidebar-hover-bg);
  border: none;
  border-radius: 10px;
  cursor: pointer;
  transition: background-color 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  transition: background-color var(--appsidebar-transition);
  text-align: left;
  font-family: inherit;
  overflow: hidden;
}

.appsidebar-market-toggle:hover {
  background: rgba(49, 130, 246, 0.12);
}

.appsidebar-market-toggle.collapsed {
  justify-content: center;
  padding: 8px;
}

.appsidebar-market-flag {
  font-size: 18px;
  flex-shrink: 0;
  line-height: 1;
}

.appsidebar-market-name {
  font-size: 13px;
  font-weight: 600;
  color: #191F28;
  color: var(--appsidebar-text-active);
  flex: 1 1;
  white-space: nowrap;
  overflow: hidden;
}

.appsidebar-market-switch-hint {
  font-size: 11px;
  color: #4E5968;
  color: var(--appsidebar-text);
  white-space: nowrap;
  flex-shrink: 0;
}

/* ============================================================
   구분선
   ============================================================ */
.appsidebar-divider {
  height: 1px;
  margin: 0 16px 8px;
  background-color: rgba(0, 0, 0, 0.05);
  flex-shrink: 0;
}

[data-theme='dark'] .appsidebar-divider {
  background-color: rgba(255, 255, 255, 0.06);
}

/* ============================================================
   메뉴 목록
   ============================================================ */
.appsidebar-menu {
  list-style: none;
  padding: 0 8px;
  margin: 0;
  flex: 1 1;
  overflow-y: auto;
  overflow-x: hidden;
  display: flex;
  flex-direction: column;
  gap: 2px;
  /* 스크롤바 스타일 */
  scrollbar-width: thin;
  scrollbar-color: transparent transparent;
}

.appsidebar-menu:hover {
  scrollbar-color: #E5E8EB transparent;
  scrollbar-color: var(--change-gray-200, #E5E8EB) transparent;
}

.appsidebar-menu::-webkit-scrollbar {
  width: 4px;
}

.appsidebar-menu::-webkit-scrollbar-thumb {
  background-color: transparent;
  border-radius: 4px;
}

.appsidebar-menu:hover::-webkit-scrollbar-thumb {
  background-color: #E5E8EB;
  background-color: var(--change-gray-200, #E5E8EB);
}

.appsidebar-menu-item {
  list-style: none;
}

/* ============================================================
   네비게이션 버튼 (단일 + 아코디언 헤더 공통)
   ============================================================ */
.appsidebar-nav-btn {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border: none;
  border-radius: 10px;
  background: transparent;
  color: #4E5968;
  color: var(--appsidebar-text);
  font-size: 14px;
  font-weight: 500;
  font-family: inherit;
  cursor: pointer;
  text-decoration: none;
  transition:
    background-color 0.25s cubic-bezier(0.4, 0, 0.2, 1),
    color 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  transition:
    background-color var(--appsidebar-transition),
    color var(--appsidebar-transition);
  white-space: nowrap;
  overflow: hidden;
  position: relative;
}

.appsidebar-nav-btn:hover {
  background-color: rgba(49, 130, 246, 0.06);
  background-color: var(--appsidebar-hover-bg);
  color: #191F28;
  color: var(--appsidebar-text-active);
}

/* 접힌 상태 */
.appsidebar-nav-btn.collapsed {
  justify-content: center;
  padding: 10px 0;
}

/* 활성 상태: bg-white + rounded-xl + shadow-sm, NO border */
.appsidebar-nav-btn.active {
  background-color: #ffffff;
  background-color: var(--appsidebar-active-bg);
  color: #3182F6;
  color: var(--appsidebar-active-color);
  font-weight: 600;
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.08);
}

[data-theme='dark'] .appsidebar-nav-btn.active {
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.25);
}

.appsidebar-icon-wrap {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 20px;
  color: #6B7684;
  color: var(--appsidebar-icon-color);
  transition: color 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  transition: color var(--appsidebar-transition);
}

.appsidebar-nav-btn:hover .appsidebar-icon-wrap,
.appsidebar-nav-btn.active .appsidebar-icon-wrap {
  color: #3182F6;
  color: var(--appsidebar-active-color);
}

.appsidebar-icon {
  font-size: 20px;
}

.appsidebar-label {
  flex: 1 1;
  text-align: left;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* 아코디언 화살표 */
.appsidebar-chevron {
  display: flex;
  align-items: center;
  font-size: 11px;
  color: #6B7684;
  color: var(--appsidebar-icon-color);
  flex-shrink: 0;
  transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  transition: transform var(--appsidebar-transition);
}

/* ============================================================
   아코디언 서브메뉴
   ============================================================ */
.appsidebar-submenu {
  list-style: none;
  padding: 2px 0 4px 32px;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 1px;
  animation: sidebar-submenu-in 0.18s ease-out;
}

@keyframes sidebar-submenu-in {
  from {
    opacity: 0;
    transform: translateY(-6px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.appsidebar-submenu-item {
  list-style: none;
}

.appsidebar-submenu-btn {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 7px 12px;
  border: none;
  border-radius: 8px;
  background: transparent;
  color: #4E5968;
  color: var(--appsidebar-text);
  font-size: 13px;
  font-weight: 400;
  font-family: inherit;
  cursor: pointer;
  transition:
    background-color 0.25s cubic-bezier(0.4, 0, 0.2, 1),
    color 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  transition:
    background-color var(--appsidebar-transition),
    color var(--appsidebar-transition);
  text-align: left;
  white-space: nowrap;
  overflow: hidden;
}

.appsidebar-submenu-btn:hover {
  background-color: rgba(49, 130, 246, 0.06);
  background-color: var(--appsidebar-hover-bg);
  color: #191F28;
  color: var(--appsidebar-text-active);
}

.appsidebar-submenu-btn.active {
  background-color: #ffffff;
  background-color: var(--appsidebar-active-bg);
  color: #3182F6;
  color: var(--appsidebar-active-color);
  font-weight: 600;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);
}

[data-theme='dark'] .appsidebar-submenu-btn.active {
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
}

.appsidebar-submenu-dot {
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background-color: #E5E8EB;
  background-color: var(--change-gray-200, #E5E8EB);
  flex-shrink: 0;
  transition: background-color 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  transition: background-color var(--appsidebar-transition);
}

.appsidebar-submenu-btn.active .appsidebar-submenu-dot,
.appsidebar-submenu-btn:hover .appsidebar-submenu-dot {
  background-color: #3182F6;
  background-color: var(--appsidebar-active-color);
}

.appsidebar-submenu-label {
  flex: 1 1;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ============================================================
   하단 푸터 (다크모드 + 토글)
   ============================================================ */
.appsidebar-footer {
  flex-shrink: 0;
  padding: 8px 8px 16px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

/* 다크모드 토글 버튼 */
.appsidebar-theme-btn {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border: none;
  border-radius: 10px;
  background: transparent;
  color: #4E5968;
  color: var(--appsidebar-text);
  font-size: 14px;
  font-weight: 500;
  font-family: inherit;
  cursor: pointer;
  transition: background-color 0.25s cubic-bezier(0.4, 0, 0.2, 1), color 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  transition: background-color var(--appsidebar-transition), color var(--appsidebar-transition);
  white-space: nowrap;
  overflow: hidden;
}

.appsidebar-theme-btn:hover {
  background-color: rgba(49, 130, 246, 0.06);
  background-color: var(--appsidebar-hover-bg);
  color: #191F28;
  color: var(--appsidebar-text-active);
}

.appsidebar-theme-btn.collapsed {
  justify-content: center;
  padding: 10px 0;
}

/* 접힘/펼침 토글 버튼 */
.appsidebar-collapse-btn {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 9px 12px;
  border: none;
  border-radius: 10px;
  background: transparent;
  color: #4E5968;
  color: var(--appsidebar-text);
  font-size: 13px;
  font-weight: 500;
  font-family: inherit;
  cursor: pointer;
  transition: background-color 0.25s cubic-bezier(0.4, 0, 0.2, 1), color 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  transition: background-color var(--appsidebar-transition), color var(--appsidebar-transition);
  white-space: nowrap;
}

.appsidebar-collapse-btn:hover {
  background-color: rgba(49, 130, 246, 0.06);
  background-color: var(--appsidebar-hover-bg);
  color: #191F28;
  color: var(--appsidebar-text-active);
}

.appsidebar-collapse-icon {
  font-size: 12px;
  flex-shrink: 0;
}

.appsidebar-collapse-label {
  font-size: 13px;
}

/* ============================================================
   모바일: 사이드바 완전 숨김, 하단 네비 표시
   ============================================================ */
@media (max-width: 768px) {
  .appsidebar {
    display: none;
  }
}

/* ============================================================
   모바일 하단 네비게이션 바
   ============================================================ */
.appsidebar-mobile-bottom {
  display: none;
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 300;
  background: rgba(255, 255, 255, 0.97);
  background: var(--appsidebar-mobile-bg);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.06);
  box-shadow: var(--appsidebar-mobile-shadow);
  padding: 6px 4px;
  padding-bottom: calc(6px + env(safe-area-inset-bottom, 0px));
  justify-content: space-around;
  align-items: stretch;
  /* border는 No-Line Rule로 제거 */
}

@media (max-width: 768px) {
  .appsidebar-mobile-bottom {
    display: flex;
  }
}

.appsidebar-mobile-item {
  flex: 1 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3px;
  padding: 6px 4px;
  min-width: 44px;
  min-height: 52px;
  border: none;
  background: transparent;
  cursor: pointer;
  border-radius: 10px;
  color: #4E5968;
  color: var(--appsidebar-text);
  font-family: inherit;
  transition: color 0.25s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  transition: color var(--appsidebar-transition), background-color var(--appsidebar-transition);
  -webkit-tap-highlight-color: transparent;
}

.appsidebar-mobile-item:active {
  background-color: rgba(49, 130, 246, 0.06);
  background-color: var(--appsidebar-hover-bg);
}

.appsidebar-mobile-item.active {
  color: #3182F6;
  color: var(--appsidebar-active-color);
}

.appsidebar-mobile-icon {
  font-size: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 22px;
}

.appsidebar-mobile-label {
  font-size: 10px;
  font-weight: 500;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 60px;
}

/* ============================================================
   모바일 더보기 드로어
   ============================================================ */
.appsidebar-mobile-overlay {
  position: fixed;
  inset: 0;
  z-index: 400;
  background: rgba(0, 0, 0, 0.35);
  animation: sidebar-fade-in 0.2s ease;
}

@keyframes sidebar-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

.appsidebar-mobile-drawer {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 401;
  background: rgba(255, 255, 255, 0.97);
  background: var(--appsidebar-mobile-bg);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-radius: 20px 20px 0 0;
  max-height: 75vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  animation: sidebar-drawer-up 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  padding-bottom: env(safe-area-inset-bottom, 0px);
}

@keyframes sidebar-drawer-up {
  from {
    transform: translateY(100%);
    opacity: 0;
  }
  to {
    transform: translateY(0);
    opacity: 1;
  }
}

.appsidebar-mobile-drawer-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 20px 12px;
  flex-shrink: 0;
}

.appsidebar-mobile-drawer-title {
  font-size: 16px;
  font-weight: 700;
  color: #191F28;
  color: var(--appsidebar-text-active);
}

.appsidebar-mobile-drawer-close {
  width: 32px;
  height: 32px;
  border: none;
  background: rgba(49, 130, 246, 0.06);
  background: var(--appsidebar-hover-bg);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: #4E5968;
  color: var(--appsidebar-text);
  font-size: 14px;
  transition: background-color 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  transition: background-color var(--appsidebar-transition);
  -webkit-tap-highlight-color: transparent;
}

.appsidebar-mobile-drawer-close:hover {
  background: #E5E8EB;
  background: var(--change-gray-200, #E5E8EB);
}

.appsidebar-mobile-drawer-list {
  list-style: none;
  padding: 0 12px 20px;
  margin: 0;
  overflow-y: auto;
  flex: 1 1;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.appsidebar-mobile-drawer-item {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 12px;
  border: none;
  background: transparent;
  border-radius: 10px;
  color: #4E5968;
  color: var(--appsidebar-text);
  font-size: 15px;
  font-weight: 500;
  font-family: inherit;
  cursor: pointer;
  text-align: left;
  transition: background-color 0.25s cubic-bezier(0.4, 0, 0.2, 1), color 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  transition: background-color var(--appsidebar-transition), color var(--appsidebar-transition);
  -webkit-tap-highlight-color: transparent;
  min-height: 48px;
}

.appsidebar-mobile-drawer-item:hover,
.appsidebar-mobile-drawer-item:active {
  background-color: rgba(49, 130, 246, 0.06);
  background-color: var(--appsidebar-hover-bg);
  color: #191F28;
  color: var(--appsidebar-text-active);
}

.appsidebar-mobile-drawer-item.active {
  background-color: #ffffff;
  background-color: var(--appsidebar-active-bg);
  color: #3182F6;
  color: var(--appsidebar-active-color);
  font-weight: 600;
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.06);
}

.appsidebar-mobile-drawer-item.sub {
  padding-left: 28px;
  font-size: 14px;
  min-height: 44px;
}

.appsidebar-mobile-drawer-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  font-size: 15px;
  flex-shrink: 0;
  color: #6B7684;
  color: var(--appsidebar-icon-color);
}

.appsidebar-mobile-drawer-item.active .appsidebar-mobile-drawer-icon {
  color: #3182F6;
  color: var(--appsidebar-active-color);
}

.appsidebar-mobile-drawer-dot {
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background-color: #E5E8EB;
  background-color: var(--change-gray-200, #E5E8EB);
  flex-shrink: 0;
  margin-left: 2px;
}

.appsidebar-mobile-drawer-item.active .appsidebar-mobile-drawer-dot {
  background-color: #3182F6;
  background-color: var(--appsidebar-active-color);
}

/* 드로어 그룹 라벨 */
.appsidebar-mobile-drawer-group {
  list-style: none;
}

.appsidebar-mobile-drawer-group-label {
  display: block;
  padding: 12px 12px 4px;
  font-size: 11px;
  font-weight: 600;
  color: #4E5968;
  color: var(--appsidebar-text);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.appsidebar-mobile-drawer-group ul {
  list-style: none;
  padding: 0;
  margin: 0;
}

/* ============================================================
   데스크톱 @media: 사이드바 항상 표시
   ============================================================ */
@media (min-width: 769px) {
  .appsidebar-mobile-bottom {
    display: none !important;
  }
}

/* ConfirmTrade.css */
.confirm-container {
  max-width: 600px;
  margin: 4rem auto;
  padding: 2rem;
  background-color: var(--change-bg-elevated);
  border-radius: var(--spacing-sm);
  box-shadow: 0 4px 12px rgba(0,0,0,0.1);
  text-align: center;
}

.confirm-container h2 {
  margin-bottom: 1.5rem;
}

.trade-details {
  text-align: left;
  margin-bottom: 2rem;
  padding: 1.5rem;
  background-color: var(--change-gray-50);
  border-radius: 6px;
}

.trade-details p {
  margin: 0.5rem 0;
  font-size: 1.1rem;
}

.trade-details .notice {
  margin-top: 1.5rem;
  font-weight: bold;
  color: #dc3545;
  text-align: center;
}

.btn-confirm {
  width: 100%;
  padding: 1rem;
  font-size: 1.2rem;
  font-weight: bold;
  background-color: #28a745;
  color: white;
  border: none;
  border-radius: 6px;
  cursor: pointer;
  transition: background-color 0.2s;
}

.btn-confirm:hover {
  background-color: #218838;
}

.btn-confirm:disabled {
  background-color: #6c757d;
  cursor: not-allowed;
}

.message {
  margin-top: 1.5rem;
  padding: 1rem;
  border-radius: 6px;
  color: #fff;
}

.message.success {
  background-color: #28a745;
}

.message.error {
  background-color: #dc3545;
}

/* ===================================
   모던 UI 공통 디자인 시스템
   =================================== */

:root {
  /* 기본 색상 */
  --change-primary: #3182F6;
  --change-primary-dark: #1B64DA;
  --change-bg: #FFFFFF;
  --change-card-bg: #FFFFFF;
  --change-text: #191F28;
  --change-text-primary: #191F28;
  --change-text-secondary: #4E5968;
  --change-gray-50: #F9FAFB;
  --change-gray-100: #F2F4F6;
  --change-gray-200: #E5E8EB;
  --change-gray-600: #6B7684;
  --change-gray-700: #4E5968;
  --change-gray-900: #191F28;
  --change-shadow-sm: 0 1px 4px rgba(0, 0, 0, 0.04);
  
  /* 추가된 커스텀 배경 변수 (스크립트 치환용) */
  --change-bg-elevated: #FFFFFF;
  --change-bg-warning: #FFFBEB;
  --change-background: #FFFFFF;
  --change-surface: #F9FAFB;
  --change-surface-hover: #F2F4F6;

  /* 그레이스케일 확장 */
  --change-gray-300: #D1D6DB;
  --change-gray-400: #B0B8C1;
  --change-gray-500: #8B95A1;
  --change-gray-800: #333D4B;

  /* 테두리 */
  --change-border: #E5E8EB;
  --change-border-hover: #D1D6DB;

  /* 텍스트 확장 */
  --change-text-dark: #191F28;
  --change-text-muted: #8B95A1;
  --change-text-tertiary: #6B7684;

  /* 색상 확장 */
  --change-primary-light: rgba(49, 130, 246, 0.08);
  --change-up: var(--change-bull);
  --change-down: var(--change-bear);
  --change-success: #10B981;
  --change-success-dark: #059669;

  /* 모서리 확장 */
  --change-radius-md: 12px;
  --change-radius-lg: 20px;

  /* 그림자 확장 */
  --change-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.06);
  --change-shadow-xl: 0 8px 24px rgba(0, 0, 0, 0.1);

  /* 트랜지션 */
  --change-transition: all 0.2s ease;

  /* 간격 확장 */
  --change-spacing-xxl: 64px;

  /* 폰트 패밀리 */
  --change-font-primary: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;

  /* 증권 색상 (한국식) */
  --change-bull: #ef4444;
  --change-bear: #3b82f6;
  --change-positive: var(--change-bull);
  /* 빨강 - 상승 */
  --change-negative: var(--change-bear);
  /* 파랑 - 하락 */

  /* 간격 (넉넉하게) */
  --change-spacing-xs: 8px;
  --change-spacing-sm: 16px;
  --change-spacing-md: 24px;
  --change-spacing-lg: 32px;
  --change-spacing-xl: 48px;

  /* 타이포그래피 */
  --change-font-display: 32px;
  /* 숫자 */
  --change-font-title: 20px;
  /* 제목 */
  --change-font-body: 16px;
  /* 본문 */
  --change-font-caption: 14px;
  /* 부가 정보 */

  /* 모서리 */
  --change-radius: 16px;
  --change-radius-sm: 12px;

  /* 그림자 */
  --change-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
  --change-shadow-hover: 0 4px 16px rgba(0, 0, 0, 0.08);

  /* Stitch Surface Hierarchy - Material Design 3 */
  --change-surface-lowest: #ffffff;
  --change-surface-low: #f2f4f6;
  --change-surface-container: #eceef0;
  --change-surface-high: #e6e8ea;
  --change-surface-highest: #e0e3e5;

  /* Stitch Text Colors */
  --change-on-surface: #191c1e;
  --change-on-surface-variant: #414754;
  --change-outline: #727785;
  --change-outline-variant: #c1c6d6;

  /* Stitch Primary (통일) */
  --change-primary-container: #1071e5;

  /* Stitch Glassmorphism Header */
  --change-header-bg: rgba(248, 249, 251, 0.7);
  --change-header-blur: blur(20px);
}

/* 다크 모드 변수 재정의 - 전역 적용 */
[data-theme="dark"] {
  /* 배경색 */
  --change-bg: transparent; /* 배경을 투명하게 하여 body의 인터스텔라 배경이 보이도록 함 */
  --change-card-bg: rgba(30, 35, 45, 0.7); /* 글래스모피즘 효과 (인터스텔라 배경 투과) */
  --change-text: #F2F4F6;
  --change-text-primary: #F2F4F6;
  --change-text-secondary: #B0B8C1;

  /* 그레이스케일 */
  --change-gray-50: #232936;
  --change-gray-100: #333D4B;
  --change-gray-200: #4E5968;
  --change-gray-600: #B0B8C1;
  --change-gray-700: #D1D6DB;
  --change-gray-900: #F2F4F6;

  /* 그림자 (다크모드용) */
  --change-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
  --change-shadow-hover: 0 8px 24px rgba(0, 0, 0, 0.5);
  --change-shadow-sm: 0 2px 6px rgba(0, 0, 0, 0.3);

  /* 추가된 커스텀 배경 변수 */
  --change-bg-elevated: #1E232D;
  --change-bg-warning: #3E3319;
  --change-background: #17191C;
  --change-surface: rgba(35, 41, 54, 0.8);
  --change-surface-hover: rgba(50, 56, 68, 0.8);

  /* 그레이스케일 확장 (다크) */
  --change-gray-300: #4E5968;
  --change-gray-400: #6B7684;
  --change-gray-500: #8B95A1;
  --change-gray-800: #D1D6DB;

  /* 테두리 (다크) */
  --change-border: #333D4B;
  --change-border-hover: #4E5968;

  /* 텍스트 확장 (다크) */
  --change-text-dark: #F2F4F6;
  --change-text-muted: #6B7684;
  --change-text-tertiary: #8B95A1;

  /* 색상 확장 (다크) */
  --change-primary-light: rgba(49, 130, 246, 0.15);
  --change-bull: #FF6E6E;
  --change-bear: #60A5FA;
  --change-up: var(--change-bull);
  --change-down: var(--change-bear);
  --change-success: #34D399;
  --change-success-dark: #10B981;

  /* 모서리 확장 */
  --change-radius-md: 12px;
  --change-radius-lg: 20px;

  /* 그림자 확장 (다크) */
  --change-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.5);
  --change-shadow-xl: 0 8px 24px rgba(0, 0, 0, 0.6);

  /* 트랜지션 */
  --change-transition: all 0.2s ease;

  /* 간격 확장 */
  --change-spacing-xxl: 64px;

  /* 폰트 패밀리 */
  --change-font-primary: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;

  /* Stitch Surface Hierarchy - Material Design 3 (Dark) */
  --change-surface-lowest: #111315;
  --change-surface-low: #1e2022;
  --change-surface-container: #252729;
  --change-surface-high: #2c2e30;
  --change-surface-highest: #333537;

  /* Stitch Text Colors (Dark) */
  --change-on-surface: #e2e2e6;
  --change-on-surface-variant: #c4c6d0;
  --change-outline: #8e9099;
  --change-outline-variant: #44474f;

  /* Stitch Glassmorphism Header (Dark) */
  --change-header-bg: rgba(26, 28, 30, 0.7);
}

/* 카드 스타일 */
.card-change {
  background: #FFFFFF;
  background: var(--change-bg);
  border-radius: 16px;
  border-radius: var(--change-radius);
  padding: 24px;
  padding: var(--change-spacing-md);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
  box-shadow: var(--change-shadow);
  border: none;
  transition: all 0.2s ease;
}

.card-change:hover {
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
  box-shadow: var(--change-shadow-hover);
  transform: translateY(-2px);
}

/* 버튼 스타일 */
.btn-change-primary {
  background: #3182F6;
  background: var(--change-primary);
  color: white;
  border: none;
  border-radius: 12px;
  border-radius: var(--change-radius-sm);
  padding: 16px 24px;
  font-size: 16px;
  font-size: var(--change-font-body);
  font-weight: 700;
  min-height: 56px;
  cursor: pointer;
  transition: all 0.2s ease;
  width: 100%;
  box-shadow: 0 2px 8px rgba(49, 130, 246, 0.2);
}

.btn-change-primary:hover {
  background: #1B64DA;
  background: var(--change-primary-dark);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(49, 130, 246, 0.3);
}

.btn-change-primary:disabled {
  background: #E5E8EB;
  background: var(--change-gray-200);
  color: #6B7684;
  color: var(--change-gray-600);
  cursor: not-allowed;
  transform: none;
}

.btn-change-secondary {
  background: #F2F4F6;
  background: var(--change-gray-100);
  color: #191F28;
  color: var(--change-text);
  border: none;
  border-radius: 12px;
  border-radius: var(--change-radius-sm);
  padding: 16px 24px;
  font-size: 16px;
  font-size: var(--change-font-body);
  font-weight: 500;
  min-height: 56px;
  cursor: pointer;
  transition: all 0.2s ease;
}

.btn-change-secondary:hover {
  background: #E5E8EB;
  background: var(--change-gray-200);
}

/* 프리셋 버튼 - Font Awesome 아이콘 */
.preset-buttons-change {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  grid-gap: 24px;
  grid-gap: var(--change-spacing-md);
  gap: var(--change-spacing-md);
  margin-bottom: 32px;
  margin-bottom: var(--change-spacing-lg);
}

.preset-btn-change {
  background: #FFFFFF;
  background: var(--change-bg);
  box-shadow: 0 0 0 2px #E5E8EB;
  box-shadow: 0 0 0 2px var(--change-gray-200);
  border: none;
  border-radius: 16px;
  border-radius: var(--change-radius);
  padding: 24px;
  padding: var(--change-spacing-md);
  min-height: 110px;
  cursor: pointer;
  transition: all 0.2s ease;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  gap: var(--change-spacing-xs);
}

.preset-btn-change:hover {
  box-shadow: 0 0 0 2px #3182F6, 0 4px 16px rgba(0, 0, 0, 0.08);
  box-shadow: 0 0 0 2px var(--change-primary), var(--change-shadow-hover);
  transform: translateY(-2px);
}

.preset-btn-change.active {
  box-shadow: 0 0 0 2px #3182F6;
  box-shadow: 0 0 0 2px var(--change-primary);
  background: rgba(49, 130, 246, 0.05);
}

.preset-btn-change .preset-icon {
  font-size: 32px;
  color: #3182F6;
  color: var(--change-primary);
}

.preset-btn-change.conservative .preset-icon {
  color: #10B981;
  /* 녹색 - 보수적 */
}

.preset-btn-change.balanced .preset-icon {
  color: #3182F6;
  color: var(--change-primary);
  /* 파랑 - 균형 */
}

.preset-btn-change.aggressive .preset-icon {
  color: #F59E0B;
  /* 주황 - 공격적 */
}

.preset-title {
  font-size: 16px;
  font-size: var(--change-font-body);
  font-weight: 700;
  color: #191F28;
  color: var(--change-text);
}

.preset-desc {
  font-size: 14px;
  font-size: var(--change-font-caption);
  color: #6B7684;
  color: var(--change-gray-600);
  text-align: center;
  line-height: 1.4;
}

/* 아코디언 - 고급 설정 */
.accordion-change {
  background: #F9FAFB;
  background: var(--change-gray-50);
  border-radius: 16px;
  border-radius: var(--change-radius);
  margin-top: 24px;
  margin-top: var(--change-spacing-md);
  overflow: hidden;
}

.accordion-change summary {
  padding: 24px;
  padding: var(--change-spacing-md);
  cursor: pointer;
  font-weight: 600;
  color: #191F28;
  color: var(--change-text);
  list-style: none;
  display: flex;
  align-items: center;
  gap: 16px;
  gap: var(--change-spacing-sm);
  -webkit-user-select: none;
          user-select: none;
}

.accordion-change summary::-webkit-details-marker {
  display: none;
}

.accordion-change[open] summary {
  box-shadow: inset 0 -1px 0 0 #E5E8EB;
  box-shadow: inset 0 -1px 0 0 var(--change-gray-200);
}

.accordion-content {
  padding: 24px;
  padding: var(--change-spacing-md);
}

/* 입력 필드 스타일 */
.input-change {
  width: 100%;
  padding: 16px;
  border: 2px solid #E5E8EB;
  border: 2px solid var(--change-gray-200);
  border-radius: 12px;
  border-radius: var(--change-radius-sm);
  font-size: 16px;
  font-size: var(--change-font-body);
  color: #191F28;
  color: var(--change-text);
  transition: all 0.2s ease;
}

.input-change:focus {
  outline: none;
  border-color: #3182F6;
  border-color: var(--change-primary);
  box-shadow: 0 0 0 3px rgba(49, 130, 246, 0.1);
}

.input-change::placeholder {
  color: #6B7684;
  color: var(--change-gray-600);
}

/* 레이블 */
.label-change {
  display: block;
  font-size: 14px;
  font-size: var(--change-font-caption);
  font-weight: 600;
  color: #191F28;
  color: var(--change-text);
  margin-bottom: 8px;
  margin-bottom: var(--change-spacing-xs);
}

/* 그리드 레이아웃 */
.grid-change {
  display: grid;
  gap: 24px;
  grid-gap: 24px;
  grid-gap: var(--change-spacing-md);
  gap: var(--change-spacing-md);
}

.grid-change-2 {
  grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
}

.grid-change-3 {
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}

/* 섹션 */
.section-change {
  margin-bottom: 32px;
  margin-bottom: var(--change-spacing-lg);
}

.section-title-change {
  font-size: 20px;
  font-size: var(--change-font-title);
  font-weight: 700;
  color: #191F28;
  color: var(--change-text);
  margin-bottom: 24px;
  margin-bottom: var(--change-spacing-md);
}

/* 뱃지 */
.badge-change {
  display: inline-flex;
  align-items: center;
  padding: 4px 12px;
  border-radius: 12px;
  font-size: 14px;
  font-size: var(--change-font-caption);
  font-weight: 600;
}

.badge-change.positive {
  background: rgba(239, 68, 68, 0.1);
  color: #ef4444;
  color: var(--change-bull);
}

.badge-change.negative {
  background: rgba(59, 130, 246, 0.1);
  color: #3b82f6;
  color: var(--change-bear);
}

.badge-change.neutral {
  background: #F2F4F6;
  background: var(--change-gray-100);
  color: #6B7684;
  color: var(--change-gray-600);
}

/* 모바일 반응형 */
@media (max-width: 768px) {
  :root {
    --change-font-display: 28px;
    --change-font-title: 18px;
    --change-font-body: 15px;
    --change-font-caption: 13px;
  }

  .preset-buttons-change {
    grid-template-columns: 1fr;
  }

  .grid-change-2,
  .grid-change-3 {
    grid-template-columns: 1fr;
  }

  .card-change {
    padding: 16px;
    padding: var(--change-spacing-sm);
  }

  .btn-change-primary,
  .btn-change-secondary {
    min-height: 48px;
    padding: 12px 20px;
  }
}

/* 애니메이션 */
@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(10px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.fade-in {
  animation: fadeIn 0.3s ease;
}

/* Text Colors */
.text-up,
.color-up {
  color: #ef4444 !important;
  color: var(--change-bull) !important;
}

.text-down,
.color-down {
  color: #3b82f6 !important;
  color: var(--change-bear) !important;
}

.text-neutral {
  color: #6B7684 !important;
  color: var(--change-gray-600) !important;
}

/* 로딩 스켈레톤 */
.skeleton-change {
  background: linear-gradient(90deg,
      #F2F4F6 25%,
      #E5E8EB 50%,
      #F2F4F6 75%);
  background: linear-gradient(90deg,
      var(--change-gray-100) 25%,
      var(--change-gray-200) 50%,
      var(--change-gray-100) 75%);
  background-size: 200% 100%;
  animation: skeleton-loading 1.5s ease-in-out infinite;
  border-radius: 12px;
  border-radius: var(--change-radius-sm);
  min-height: 20px;
}

@keyframes skeleton-loading {
  0% {
    background-position: 200% 0;
  }

  100% {
    background-position: -200% 0;
  }
}

/* Skeleton Styles */
.skeleton-change {
  background: linear-gradient(90deg,
      #F2F4F6 25%,
      #E5E8EB 50%,
      #F2F4F6 75%);
  background: linear-gradient(90deg,
      var(--change-gray-100) 25%,
      var(--change-gray-200) 50%,
      var(--change-gray-100) 75%);
  background-size: 200% 100%;
  animation: skeleton-loading 1.5s ease-in-out infinite;
  border-radius: 4px;
}

.skeleton-change.circle {
  border-radius: 50%;
}

.skeleton-change.text {
  border-radius: 4px;
}

/* Animations */
@keyframes slideUp {
  from {
    opacity: 0;
    transform: translateY(20px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.animate-slide-up {
  animation: slideUp 0.5s ease-out forwards;
}

.animate-delay-1 {
  animation-delay: 0.1s;
}

.animate-delay-2 {
  animation-delay: 0.2s;
}

.animate-delay-3 {
  animation-delay: 0.3s;
}

/* Global Loading State */
.loading-fullscreen {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background-color: #FFFFFF;
  background-color: var(--change-bg);
  z-index: 9999;
  gap: 16px;
}

.loading-spinner {
  width: 40px;
  height: 40px;
  border: 4px solid #E5E8EB;
  border: 4px solid var(--change-gray-200);
  border-top-color: #3182F6;
  border-top-color: var(--change-primary);
  border-radius: 50%;
  animation: spin 1s linear infinite;
}

.loading-text {
  font-size: 16px;
  color: #4E5968;
  color: var(--change-text-secondary);
  font-weight: 500;
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

/* ===================================
   Stitch Design System Components
   =================================== */

/* Stitch 스타일 카드 */
.stitch-card {
  background: #ffffff;
  background: var(--change-surface-lowest);
  padding: 32px;
  padding: var(--change-spacing-lg);
  border-radius: 1.5rem;
  border: none;
}

/* Stitch 글래스모피즘 헤더 */
.stitch-header {
  position: -webkit-sticky;
  position: sticky;
  top: 0;
  z-index: 40;
  background: rgba(248, 249, 251, 0.7);
  background: var(--change-header-bg);
  backdrop-filter: blur(20px);
  backdrop-filter: var(--change-header-blur);
  -webkit-backdrop-filter: blur(20px);
  -webkit-backdrop-filter: var(--change-header-blur);
}

/* Stitch 스타일 데이터 테이블 */
.stitch-table thead tr {
  font-size: 11px;
  color: #727785;
  color: var(--change-outline);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.stitch-table tbody tr {
  transition: background-color 0.2s;
}

.stitch-table tbody tr:hover {
  background: #f2f4f6;
  background: var(--change-surface-low);
}

/* Stitch 스타일 배지 */
.stitch-badge {
  font-size: 10px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 9999px;
  border: none;
}

.stitch-badge.bull {
  background: rgba(239, 68, 68, 0.1);
  color: #ef4444;
  color: var(--change-bull);
}

.stitch-badge.bear {
  background: rgba(59, 130, 246, 0.1);
  color: #3b82f6;
  color: var(--change-bear);
}

/* Stitch 스타일 검색 입력 */
.stitch-search {
  width: 100%;
  height: 56px;
  padding-left: 48px;
  padding-right: 16px;
  background: #f2f4f6;
  background: var(--change-surface-low);
  border: none;
  border-radius: 1.5rem;
  color: #191c1e;
  color: var(--change-on-surface);
  font-weight: 500;
}

.stitch-search:focus {
  outline: none;
  box-shadow: 0 0 0 2px rgba(0, 89, 185, 0.2);
}
/* 다건 자동매매 모달 */
.bulk-modal-overlay {
  z-index: 10000;
}

.bulk-modal-change {
  width: 98vw;
  height: 98vh;
  display: flex;
  flex-direction: column;
}

.bulk-modal-body {
  flex: 1 1;
  overflow-y: auto;
  padding: 24px;
  display: flex;
  flex-direction: column;
  gap: 32px;
}

/* 선택된 종목 배지 */
.selected-count-badge-change {
  display: inline-flex;
  align-items: center;
  padding: 6px 12px;
  background: #EBF5FF;
  background: var(--change-primary-light, #EBF5FF);
  color: #2563eb;
  color: var(--change-primary, #2563eb);
  border-radius: 20px;
  font-size: 13px;
  font-weight: 600;
  margin-left: 12px;
}

/* 프리셋 섹션 */
.preset-section-bulk-change {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.section-title-change {
  font-size: 16px;
  font-weight: 700;
  color: #1f2937;
  color: var(--change-text, #1f2937);
  margin: 0;
  display: flex;
  align-items: center;
}

.preset-cards-change {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  grid-gap: 12px;
  gap: 12px;
}

.preset-card-change {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 20px;
  background: white;
  background: var(--change-card-bg, white);
  box-shadow: 0 0 0 2px #e5e7eb;
  box-shadow: 0 0 0 2px var(--change-border, #e5e7eb);
  border: none;
  border-radius: 16px;
  cursor: pointer;
  transition: all 0.2s ease;
  text-align: left;
}

.preset-card-change:hover {
  box-shadow: 0 0 0 2px #3182F6, 0 4px 12px rgba(0, 0, 0, 0.08);
  box-shadow: 0 0 0 2px var(--preset-color, #3182F6), 0 4px 12px rgba(0, 0, 0, 0.08);
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}

.preset-card-change.active {
  background: linear-gradient(135deg, rgba(49, 130, 246, 0.05) 0%, rgba(49, 130, 246, 0.02) 100%);
  box-shadow: 0 0 0 2px #3182F6, 0 4px 12px rgba(49, 130, 246, 0.15);
  box-shadow: 0 0 0 2px var(--preset-color, #3182F6), 0 4px 12px rgba(49, 130, 246, 0.15);
}

.preset-icon-change {
  width: 48px;
  height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #3182F6;
  background: var(--preset-color, #3182F6);
  border-radius: 12px;
  color: white;
  font-size: 24px;
}

.preset-card-change.active .preset-icon-change {
  animation: preset-pulse 1.5s ease-in-out infinite;
}

@keyframes preset-pulse {
  0%, 100% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.05);
  }
}

.preset-info-change {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.preset-info-change strong {
  font-size: 16px;
  color: #1f2937;
  color: var(--change-text, #1f2937);
}

.preset-info-change span {
  font-size: 13px;
  color: #6b7280;
  color: var(--change-text-secondary, #6b7280);
}

.preset-risk-change {
  display: flex;
  gap: 8px;
  padding-top: 8px;
  box-shadow: inset 0 1px 0 0 #e5e7eb;
  box-shadow: inset 0 1px 0 0 var(--change-border, #e5e7eb);
}

.preset-risk-change small {
  padding: 4px 8px;
  background: #f9fafb;
  background: var(--change-bg-secondary, #f9fafb);
  border-radius: 6px;
  font-size: 11px;
  color: #6b7280;
  color: var(--change-text-secondary, #6b7280);
  font-weight: 600;
}

/* 설정 섹션 */
.settings-section-bulk-change {
  display: flex;
  flex-direction: column;
  gap: 20px;
  padding: 24px;
  background: #f9fafb;
  background: var(--change-bg-secondary, #f9fafb);
  border-radius: 16px;
}

.setting-group-change {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.setting-label-change {
  font-size: 14px;
  font-weight: 600;
  color: #1f2937;
  color: var(--change-text, #1f2937);
}

.button-group-change {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-gap: 8px;
  gap: 8px;
}

.option-btn-change {
  padding: 12px;
  background: white;
  background: var(--change-card-bg, white);
  box-shadow: 0 0 0 2px #e5e7eb;
  box-shadow: 0 0 0 2px var(--change-border, #e5e7eb);
  border: none;
  border-radius: 10px;
  font-size: 14px;
  font-weight: 600;
  color: #6b7280;
  color: var(--change-text-secondary, #6b7280);
  cursor: pointer;
  transition: all 0.2s ease;
}

.option-btn-change:hover {
  box-shadow: 0 0 0 2px #2563eb;
  box-shadow: 0 0 0 2px var(--change-primary, #2563eb);
  color: #2563eb;
  color: var(--change-primary, #2563eb);
}

.option-btn-change.active {
  background: #2563eb;
  background: var(--change-primary, #2563eb);
  box-shadow: 0 0 0 2px #2563eb;
  box-shadow: 0 0 0 2px var(--change-primary, #2563eb);
  color: white;
}

.input-with-suffix-change {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 12px 16px;
  background: white;
  background: var(--change-card-bg, white);
  border: 2px solid #e5e7eb;
  border: 2px solid var(--change-border, #e5e7eb);
  border-radius: 10px;
  transition: border-color 0.2s ease;
}

.input-with-suffix-change:focus-within {
  border-color: #2563eb;
  border-color: var(--change-primary, #2563eb);
}

.input-with-suffix-change input {
  flex: 1 1;
  border: none;
  background: transparent;
  font-size: 15px;
  font-weight: 600;
  color: #1f2937;
  color: var(--change-text, #1f2937);
  outline: none;
}

.input-suffix-change {
  font-size: 14px;
  font-weight: 600;
  color: #6b7280;
  color: var(--change-text-secondary, #6b7280);
  white-space: nowrap;
}

.select-change {
  padding: 12px 16px;
  background: white;
  background: var(--change-card-bg, white);
  border: 2px solid #e5e7eb;
  border: 2px solid var(--change-border, #e5e7eb);
  border-radius: 10px;
  font-size: 14px;
  font-weight: 600;
  color: #1f2937;
  color: var(--change-text, #1f2937);
  cursor: pointer;
  transition: border-color 0.2s ease;
}

.select-change:focus {
  outline: none;
  border-color: #2563eb;
  border-color: var(--change-primary, #2563eb);
}

.checkbox-label-change {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 14px;
  font-weight: 600;
  color: #1f2937;
  color: var(--change-text, #1f2937);
  cursor: pointer;
  padding: 12px;
  background: white;
  background: var(--change-card-bg, white);
  border-radius: 10px;
  transition: background 0.2s ease;
}

.checkbox-label-change:hover {
  background: #f9fafb;
  background: var(--change-bg-secondary, #f9fafb);
}

.checkbox-label-change input[type="checkbox"] {
  width: 20px;
  height: 20px;
  cursor: pointer;
  accent-color: #2563eb;
  accent-color: var(--change-primary, #2563eb);
}

.duration-inputs-change {
  display: grid;
  grid-template-columns: 2fr 1fr;
  grid-gap: 8px;
  gap: 8px;
}

/* 상세 설정 */
.advanced-section-change {
  box-shadow: inset 0 1px 0 0 #e5e7eb;
  box-shadow: inset 0 1px 0 0 var(--change-border, #e5e7eb);
  padding-top: 24px;
}

.advanced-toggle-change {
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 16px;
  background: #f9fafb;
  background: var(--change-bg-secondary, #f9fafb);
  border: none;
  border-radius: 10px;
  font-size: 14px;
  font-weight: 600;
  color: #1f2937;
  color: var(--change-text, #1f2937);
  cursor: pointer;
  transition: all 0.2s ease;
}

.advanced-toggle-change:hover {
  background: #e5e7eb;
  background: var(--change-border, #e5e7eb);
}

.advanced-content-change {
  margin-top: 16px;
  padding: 20px;
  background: #f9fafb;
  background: var(--change-bg-secondary, #f9fafb);
  border-radius: 12px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

/* 미리보기 섹션 */
.preview-section-bulk-change {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.summary-cards-change {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  grid-gap: 12px;
  gap: 12px;
}

.summary-card-change {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 16px;
  background: white;
  background: var(--change-card-bg, white);
  box-shadow: 0 0 0 2px #e5e7eb;
  box-shadow: 0 0 0 2px var(--change-border, #e5e7eb);
  border: none;
  border-radius: 12px;
  text-align: center;
}

.summary-card-change.accent {
  background: linear-gradient(135deg, #2563eb 0%, #3b82f6 100%);
  border-color: #2563eb;
}

.summary-label-change {
  font-size: 12px;
  font-weight: 600;
  color: #6b7280;
  color: var(--change-text-secondary, #6b7280);
}

.summary-card-change.accent .summary-label-change {
  color: rgba(255, 255, 255, 0.9);
}

.summary-value-change {
  font-size: 20px;
  font-weight: 700;
  color: #1f2937;
  color: var(--change-text, #1f2937);
}

.summary-card-change.accent .summary-value-change {
  color: white;
}

/* 미리보기 테이블 */
.preview-table-change {
  background: white;
  background: var(--change-card-bg, white);
  box-shadow: 0 0 0 2px #e5e7eb;
  box-shadow: 0 0 0 2px var(--change-border, #e5e7eb);
  border: none;
  border-radius: 12px;
  overflow: hidden;
}

.preview-header-change {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr 1.5fr;
  grid-gap: 12px;
  gap: 12px;
  padding: 16px;
  background: #f9fafb;
  background: var(--change-bg-secondary, #f9fafb);
  font-size: 13px;
  font-weight: 700;
  color: #6b7280;
  color: var(--change-text-secondary, #6b7280);
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.preview-body-change {
  max-height: 300px;
  overflow-y: auto;
}

.preview-row-change {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr 1.5fr;
  grid-gap: 12px;
  gap: 12px;
  padding: 16px;
  box-shadow: inset 0 1px 0 0 #e5e7eb;
  box-shadow: inset 0 1px 0 0 var(--change-border, #e5e7eb);
  font-size: 14px;
  color: #1f2937;
  color: var(--change-text, #1f2937);
  transition: background 0.2s ease;
}

.preview-row-change:hover {
  background: #f9fafb;
  background: var(--change-bg-secondary, #f9fafb);
}

.preview-stock-change {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.preview-stock-change strong {
  font-weight: 600;
}

.preview-stock-change small {
  font-size: 12px;
  color: #6b7280;
  color: var(--change-text-secondary, #6b7280);
}

.preview-row-change .highlight {
  color: #2563eb;
  color: var(--change-primary, #2563eb);
  font-weight: 600;
}

.preview-row-change .accent {
  color: #10b981;
  color: var(--change-success, #10b981);
  font-weight: 700;
}

/* 반응형 */
@media (max-width: 768px) {
  .bulk-modal-change {
    width: 98vw;
    height: 98vh;
  }

  .preset-cards-change {
    grid-template-columns: 1fr;
  }

  .button-group-change {
    grid-template-columns: 1fr;
  }

  .summary-cards-change {
    grid-template-columns: 1fr;
  }

  .preview-header-change,
  .preview-row-change {
    grid-template-columns: 1fr;
    gap: 8px;
  }

  .preview-header-change {
    display: none;
  }

  .preview-row-change > span {
    display: flex;
    justify-content: space-between;
  }

  .preview-row-change > span::before {
    content: attr(data-label);
    font-weight: 600;
    color: #6b7280;
    color: var(--change-text-secondary, #6b7280);
  }

  .preview-stock-change::before {
    content: '종목명';
  }
}

/* 스크롤바 스타일 */
.preview-body-change::-webkit-scrollbar {
  width: 8px;
}

.preview-body-change::-webkit-scrollbar-track {
  background: #f9fafb;
  background: var(--change-bg-secondary, #f9fafb);
}

.preview-body-change::-webkit-scrollbar-thumb {
  background: #e5e7eb;
  background: var(--change-border, #e5e7eb);
  border-radius: 4px;
}

.preview-body-change::-webkit-scrollbar-thumb:hover {
  background: #6b7280;
  background: var(--change-text-secondary, #6b7280);
}

/* ===================================
   실행 시점 선택 스타일 (다건 모달용)
   =================================== */
.time-condition-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-gap: 8px;
  gap: 8px;
  margin-top: 8px;
}

.time-condition-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 10px 8px;
  background: #f9fafb;
  background: var(--change-bg-secondary, #f9fafb);
  box-shadow: 0 0 0 2px #e5e7eb;
  box-shadow: 0 0 0 2px var(--change-border, #e5e7eb);
  border: none;
  border-radius: 8px;
  cursor: pointer;
  transition: all 0.2s ease;
  min-height: 60px;
}

.time-condition-btn:hover {
  background: #f3f4f6;
  background: var(--change-bg-tertiary, #f3f4f6);
  box-shadow: 0 0 0 2px #d1d5db;
  box-shadow: 0 0 0 2px var(--change-border-hover, #d1d5db);
}

.time-condition-btn.active {
  background: #EBF5FF;
  background: var(--change-primary-light, #EBF5FF);
  box-shadow: 0 0 0 2px #2563eb;
  box-shadow: 0 0 0 2px var(--change-primary, #2563eb);
}

.time-condition-label {
  font-size: 13px;
  font-weight: 600;
  color: #1f2937;
  color: var(--change-text, #1f2937);
  margin-bottom: 2px;
  text-align: center;
}

.time-condition-btn.active .time-condition-label {
  color: #2563eb;
  color: var(--change-primary, #2563eb);
}

.time-condition-desc {
  font-size: 10px;
  color: #9ca3af;
  color: var(--change-text-tertiary, #9ca3af);
  text-align: center;
  line-height: 1.2;
}

/* 태블릿 (768px 이하) */
@media (max-width: 768px) {
  .time-condition-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 6px;
  }

  .time-condition-btn {
    min-height: 55px;
    padding: 8px 6px;
  }

  .time-condition-label {
    font-size: 12px;
  }

  .time-condition-desc {
    font-size: 9px;
  }
}

/* 모바일 (480px 이하) */
@media (max-width: 480px) {
  .time-condition-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 4px;
  }

  .time-condition-btn {
    min-height: 50px;
    padding: 6px 4px;
  }

  .time-condition-label {
    font-size: 11px;
  }

  .time-condition-desc {
    font-size: 8px;
  }
}

/* StockChart.css */

/* 새로운 차트 모달 스타일 */
.chart-modal-backdrop {
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  background: rgba(0, 0, 0, 0.7) !important;
  display: flex !important;
  justify-content: center !important;
  align-items: center !important;
  z-index: 9999 !important;
  padding: 20px;
}

.chart-modal-container {
  background: var(--change-bg-elevated);
  border-radius: var(--radius);
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
  width: 90%;
  max-width: 1000px;
  max-height: 85vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  position: relative;
}

.chart-header-bar {
  position: relative;
  height: 40px;
  background: var(--change-gray-50);
  border-bottom: 1px solid #e0e0e0;
}

.chart-close-btn {
  position: absolute;
  top: 8px;
  right: 12px;
  width: 24px;
  height: 24px;
  border: none;
  background: var(--change-bg-elevated);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  font-size: 16px;
  font-weight: bold;
  color: var(--change-text-secondary);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
  transition: all 0.2s;
}

.chart-close-btn:hover {
  background: var(--change-gray-50);
  color: var(--change-text);
  transform: scale(1.1);
}

.chart-content-area {
  padding: 20px;
  flex: 1 1;
  display: flex;
  flex-direction: column;
}

.chart-container {
  position: relative;
  flex: 1 1;
  background: #fafafa;
  border-radius: var(--spacing-sm);
  overflow: hidden;
  margin-bottom: 20px;
}

.chart-canvas {
  width: 100% !important;
  height: 100% !important;
  display: block;
  cursor: grab;
}

.chart-canvas:active {
  cursor: grabbing;
}

.chart-overlay {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 10;
}

.stock-title {
  background: rgba(255, 255, 255, 0.9);
  padding: var(--spacing-sm) 12px;
  border-radius: 6px;
  font-size: 14px;
  font-weight: 600;
  color: var(--change-text);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.zoom-hint {
  position: absolute;
  bottom: 10px;
  right: 10px;
  z-index: 10;
}

.zoom-hint span {
  background: rgba(0, 0, 0, 0.7);
  color: white;
  padding: var(--spacing-xs) 8px;
  border-radius: var(--spacing-xs);
  font-size: 11px;
  opacity: 0.8;
}

.period-buttons {
  display: flex;
  gap: var(--spacing-sm);
  justify-content: center;
}

.period-btn {
  padding: var(--spacing-sm) 16px;
  border: 1px solid #ddd;
  background: var(--change-bg-elevated);
  border-radius: 6px;
  font-size: 14px;
  cursor: pointer;
  transition: all 0.2s;
}

.period-btn:hover {
  background: var(--change-gray-50);
}

.period-btn.active {
  background: var(--color-negative);
  color: white;
  border-color: var(--color-negative);
}

.stock-chart-modal {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.8);
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 1000;
  padding: 20px;
}

.stock-chart-content {
  background: var(--change-bg-elevated);
  border-radius: var(--radius);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
  width: 90vw;
  max-width: 1400px;
  max-height: 95vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.chart-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 20px;
  border-bottom: 1px solid #e0e0e0;
  background: var(--change-gray-50);
}

.chart-header h3 {
  margin: 0;
  color: #2c3e50;
  font-size: 18px;
  font-weight: 600;
}

.chart-controls {
  display: flex;
  align-items: center;
  gap: 15px;
}

.period-select {
  padding: var(--spacing-sm) 12px;
  border: 1px solid #ddd;
  border-radius: 6px;
  background: var(--change-bg-elevated);
  font-size: 14px;
  color: var(--change-text);
  cursor: pointer;
  transition: border-color 0.2s;
}

.period-select:hover {
  border-color: var(--color-negative);
}

.period-select:focus {
  outline: none;
  border-color: var(--color-negative);
  box-shadow: 0 0 0 2px rgba(52, 152, 219, 0.2);
}

.close-btn {
  background: var(--color-positive);
  color: white;
  border: none;
  border-radius: 50%;
  width: 35px;
  height: 35px;
  font-size: 18px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s;
}

.close-btn:hover {
  background: #c0392b;
  transform: scale(1.05);
}

.chart-container {
  padding: 20px;
  flex: 1 1;
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 600px;
  background: #fafafa;
}

.stock-chart-canvas {
  border: 1px solid #e0e0e0;
  border-radius: var(--spacing-sm);
  background: var(--change-bg-elevated);
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
  max-width: 100%;
  height: auto;
}

.chart-loading,
.chart-error {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 60px;
  color: var(--change-text-secondary);
}

.loading-spinner {
  width: 50px;
  height: 50px;
  border: 4px solid #f3f3f3;
  border-top: 4px solid var(--color-negative);
  border-radius: 50%;
  animation: spin 1s linear infinite;
  margin-bottom: 20px;
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

.chart-error button {
  background: var(--color-negative);
  color: white;
  border: none;
  padding: 10px 20px;
  border-radius: 6px;
  cursor: pointer;
  margin-top: 15px;
  transition: background 0.2s;
}

.chart-error button:hover {
  background: #2980b9;
}

.chart-info {
  padding: 20px;
  border-top: 1px solid #e0e0e0;
  background: var(--change-gray-50);
}

.chart-stats {
  display: grid;
  grid-template-columns: repeat(4, 25%);
  grid-gap: 0;
  gap: 0;
}

.stat-item {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: flex-start;
  padding: 8px 12px !important;
  background: var(--change-bg-elevated);
  border-radius: var(--spacing-sm);
  border: 1px solid #e0e0e0;
  transition: transform 0.2s, box-shadow 0.2s;
  min-height: 50px;
}

.stat-item:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

.stat-label {
  font-weight: 600;
  color: #555;
  font-size: 70%;
  text-align: left;
  white-space: nowrap;
  flex: 0 0 50%;
}

.stat-value {
  font-weight: 700;
  color: #2c3e50;
  font-size: 90%;
  text-align: right;
  flex: 0 0 50%;
}

.resistance-lines,
.pattern-info {
  background: var(--change-bg-elevated);
  border-radius: var(--spacing-sm);
  padding: 15px;
  border: 1px solid #e0e0e0;
}

.resistance-lines h4,
.pattern-info h4 {
  margin: 0 0 15px 0;
  color: #2c3e50;
  font-size: 16px;
  font-weight: 600;
  border-bottom: 2px solid var(--color-negative);
  padding-bottom: 8px;
}

.resistance-item,
.pattern-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px 0;
  border-bottom: 1px solid #f0f0f0;
}

.resistance-item:last-child,
.pattern-item:last-child {
  border-bottom: none;
}

.resistance-type,
.pattern-type {
  font-weight: 600;
  color: var(--color-positive);
  font-size: 14px;
}

.resistance-price,
.pattern-depth {
  font-weight: 700;
  color: #2c3e50;
  font-size: 14px;
}

.resistance-date {
  color: #777;
  font-size: 12px;
}

.pattern-status {
  padding: var(--spacing-xs) 8px;
  border-radius: var(--radius);
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
}

.pattern-status.forming {
  background: #d4edda;
  color: #155724;
}

.pattern-status.invalid {
  background: #f8d7da;
  color: #721c24;
}

/* 모바일 반응형 */
@media (max-width: 768px) {
  .stock-chart-modal {
    padding: 10px;
  }
  
  .stock-chart-content {
    max-width: 100vw;
    max-height: 100vh;
  }
  
  .chart-header {
    flex-direction: column;
    gap: 15px;
    text-align: center;
  }
  
  .chart-controls {
    justify-content: center;
  }
  
  .chart-container {
    padding: 10px;
    min-height: 400px;
  }
  
  .stock-chart-canvas {
    max-width: 100%;
    width: auto;
    height: auto;
  }
  
  .chart-info {
    padding: 15px;
  }

  .resistance-item,
  .pattern-item {
    flex-direction: column;
    align-items: flex-start;
    gap: 5px;
  }
}

/* 모바일 (작은 화면) */
@media (max-width: 480px) {
  .chart-stats {
    grid-template-columns: 1fr;
  }
}

/* 작은 화면에서 캔버스 크기 조정 */
@media (max-width: 1200px) {
  .stock-chart-canvas {
    width: 900px;
    height: 540px;
  }
}

@media (max-width: 1000px) {
  .stock-chart-canvas {
    width: 800px;
    height: 480px;
  }
}

@media (max-width: 900px) {
  .stock-chart-canvas {
    width: 100%;
    height: 400px;
  }
}
/* ===== Boss Raid Overlay ===== */
.boss-raid-overlay {
  position: relative;
  background: #16213e;
  background: var(--bg-secondary, #16213e);
  border: 1px solid #333;
  border-radius: 12px;
  padding: 12px 16px;
  margin-top: 8px;
  overflow: hidden;
}

.boss-glow {
  border-color: #ff0040;
  box-shadow: 0 0 20px rgba(255, 0, 64, 0.3);
  animation: bossGlowPulse 1.5s ease-in-out infinite alternate;
}

@keyframes bossGlowPulse {
  from { box-shadow: 0 0 10px rgba(255, 0, 64, 0.2); }
  to { box-shadow: 0 0 30px rgba(255, 0, 64, 0.5); }
}

.boss-defeated-state {
  border-color: #22c55e;
  box-shadow: 0 0 15px rgba(34, 197, 94, 0.3);
}

/* Info Row */
.boss-info-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
  font-size: 0.8rem;
}

.boss-level-badge {
  padding: 2px 8px;
  border-radius: 4px;
  font-weight: 800;
  font-size: 0.7rem;
  color: #fff;
  text-shadow: 0 1px 2px rgba(0,0,0,0.5);
}

.boss-resistance {
  color: #888;
  color: var(--text-secondary, #888);
}

.boss-distance {
  margin-left: auto;
  font-weight: 600;
  color: #ff8800;
}

/* HP Bar */
.boss-hp-bar-container {
  position: relative;
  margin-bottom: 6px;
}

.boss-hp-bar-bg {
  height: 18px;
  background: #1a0a0a;
  border-radius: 9px;
  overflow: hidden;
  border: 1px solid #333;
}

.boss-hp-bar-fill {
  height: 100%;
  background: linear-gradient(90deg, #22c55e, #84cc16);
  border-radius: 9px;
  transition: width 0.5s ease;
}

.boss-hp-bar-fill.hp-warning {
  background: linear-gradient(90deg, #eab308, #f97316);
}

.boss-hp-bar-fill.hp-critical {
  background: linear-gradient(90deg, #ef4444, #ff0040);
  animation: hpCriticalPulse 0.5s ease-in-out infinite alternate;
}

@keyframes hpCriticalPulse {
  from { opacity: 0.8; }
  to { opacity: 1; }
}

.boss-hp-text {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 0.7rem;
  font-weight: 800;
  color: #fff;
  text-shadow: 0 1px 3px rgba(0,0,0,0.8);
}

/* Attack Bar */
.boss-attack-row {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.75rem;
}

.boss-attack-label {
  color: #888;
  color: var(--text-secondary, #888);
  min-width: 40px;
}

.boss-attack-bar-bg {
  flex: 1 1;
  height: 6px;
  background: #1a1a2e;
  border-radius: 3px;
  overflow: hidden;
}

.boss-attack-bar-fill {
  height: 100%;
  background: linear-gradient(90deg, #3b82f6, #8b5cf6);
  border-radius: 3px;
  transition: width 0.5s;
}

.boss-attack-value {
  font-weight: 700;
  color: #8b5cf6;
  min-width: 35px;
  text-align: right;
}

/* Damage Float */
.damage-float {
  position: absolute;
  top: 20%;
  right: 15%;
  font-size: 1.2rem;
  font-weight: 900;
  color: #ff4444;
  text-shadow: 0 0 8px rgba(255, 68, 68, 0.6);
  animation: damageFloatUp 1s ease-out forwards;
  pointer-events: none;
}

@keyframes damageFloatUp {
  0% {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
  100% {
    opacity: 0;
    transform: translateY(-60px) scale(1.3);
  }
}

/* Defeat Animation */
.boss-defeat-animation {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.7);
  z-index: 5;
  border-radius: 12px;
}

.boss-defeat-glitch {
  font-size: 1.8rem;
  font-weight: 900;
  color: #ff0040;
  animation: bossGlitch 0.4s ease-in-out 3;
  text-shadow: 0 0 20px rgba(255, 0, 64, 0.8);
}

@keyframes bossGlitch {
  0% { transform: skewX(0) translate(0); filter: hue-rotate(0deg); }
  25% { transform: skewX(-10deg) translate(-3px, 2px); filter: hue-rotate(90deg); }
  50% { transform: skewX(8deg) translate(3px, -2px); filter: hue-rotate(180deg); }
  75% { transform: skewX(-5deg) translate(-1px, 1px); filter: hue-rotate(270deg); }
  100% { transform: skewX(0) translate(0); filter: hue-rotate(360deg); }
}

.boss-defeat-name {
  font-size: 0.9rem;
  color: #22c55e;
  margin-top: 8px;
  font-weight: 600;
}

/* ===== Mobile ===== */
@media (max-width: 640px) {
  .boss-defeat-glitch {
    font-size: 1.2rem;
  }
}

/* BreakoutMonitoring_Change - Toss Style JDL Breakout Monitoring */

/* 메인 컨테이너 */
.breakout-monitoring-change {
  width: 100%;
  min-height: 100vh;
  background: var(--change-background);
  padding: var(--change-spacing-xl) var(--change-spacing-lg);
}

/* 헤더 영역 */
.breakout-header-change {
  margin-bottom: var(--change-spacing-xl);
}

.breakout-title-change {
  font-size: 28px;
  font-weight: 700;
  color: var(--change-text-primary);
  margin-bottom: var(--change-spacing-sm);
}

.breakout-subtitle-change {
  font-size: 15px;
  color: var(--change-text-secondary);
  line-height: 1.6;
}

/* 프리셋 버튼 영역 */
.preset-buttons-change {
  display: flex;
  gap: var(--change-spacing-md);
  margin-bottom: var(--change-spacing-xl);
  flex-wrap: wrap;
}

.preset-btn-change {
  flex: 1 1;
  min-width: 200px;
  padding: var(--change-spacing-lg) var(--change-spacing-xl);
  box-shadow: 0 0 0 2px var(--change-border);
  border: none;
  background: var(--change-surface);
  border-radius: var(--change-radius-lg);
  cursor: pointer;
  transition: all var(--change-transition);
  text-align: left;
}

.preset-btn-change:hover {
  box-shadow: 0 0 0 2px var(--change-primary);
  background: var(--change-surface-hover);
  transform: translateY(-2px);
  box-shadow: var(--change-shadow-md);
}

.preset-btn-change.active {
  background: linear-gradient(135deg, rgba(0, 122, 255, 0.08), rgba(0, 122, 255, 0.04));
  box-shadow: 0 0 0 2px var(--change-primary), 0 0 0 6px rgba(0, 122, 255, 0.12);
}

.preset-label-change {
  font-size: 16px;
  font-weight: 600;
  color: var(--change-text-primary);
  margin-bottom: var(--change-spacing-xs);
  display: block;
}

.preset-description-change {
  font-size: 13px;
  color: var(--change-text-secondary);
  margin: 0;
}

/* 필터 영역 */
.filters-section-change {
  background: var(--change-surface);
  box-shadow: 0 0 0 1px var(--change-border);
  border: none;
  border-radius: var(--change-radius-lg);
  padding: var(--change-spacing-lg);
  margin-bottom: var(--change-spacing-xl);
}

.filters-grid-change,
.filter-grid-change {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  grid-gap: var(--change-spacing-lg);
  gap: var(--change-spacing-lg);
}

.filter-group-change {
  display: flex;
  flex-direction: column;
  gap: var(--change-spacing-xs);
}

.filter-label-change {
  font-size: 13px;
  font-weight: 500;
  color: var(--change-text-secondary);
}

.filter-input-change {
  width: 100%;
  padding: var(--change-spacing-md);
  border: 1px solid var(--change-border);
  border-radius: var(--change-radius-md);
  font-size: 15px;
  font-family: var(--change-font-primary);
  transition: all var(--change-transition);
}

.filter-input-change:focus {
  outline: none;
  border-color: var(--change-primary);
  box-shadow: 0 0 0 3px rgba(0, 122, 255, 0.1);
}

/* 액션 버튼 영역 */
.actions-section-change,
.action-section-change {
  display: flex;
  gap: var(--change-spacing-md);
  margin-bottom: var(--change-spacing-xl);
  flex-wrap: wrap;
}

.action-btn-change {
  padding: var(--change-spacing-md) var(--change-spacing-xl);
  border: none;
  border-radius: var(--change-radius-md);
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  transition: all var(--change-transition);
  display: flex;
  align-items: center;
  gap: var(--change-spacing-sm);
}

.action-btn-primary-change {
  background: var(--change-primary);
  color: white;
}

.action-btn-primary-change:hover {
  background: #0051d5;
  transform: translateY(-1px);
  box-shadow: var(--change-shadow-md);
}

.action-btn-primary-change:disabled {
  background: var(--change-border);
  cursor: not-allowed;
  transform: none;
}

.action-btn-secondary-change {
  background: var(--change-surface);
  color: var(--change-text-primary);
  box-shadow: 0 0 0 1px var(--change-border);
  border: none;
}

.action-btn-secondary-change:hover {
  background: var(--change-surface-hover);
  box-shadow: 0 0 0 1px var(--change-primary);
}

/* 종목 테이블 영역 */
.stocks-section-change {
  background: var(--change-surface);
  box-shadow: 0 0 0 1px var(--change-border);
  border: none;
  border-radius: var(--change-radius-lg);
  overflow: hidden;
}

.stocks-table-change {
  width: 100%;
  border-collapse: collapse;
}

.stocks-table-change thead {
  background: var(--change-background);
  box-shadow: inset 0 -2px 0 0 var(--change-border);
}

.stocks-table-change th {
  padding: var(--change-spacing-md) var(--change-spacing-lg);
  text-align: left;
  font-size: 13px;
  font-weight: 600;
  color: var(--change-text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.stocks-table-change td {
  padding: var(--change-spacing-md) var(--change-spacing-lg);
  box-shadow: inset 0 -1px 0 0 var(--change-border);
  font-size: 14px;
  color: var(--change-text-primary);
}

.stocks-table-change tbody tr {
  transition: background var(--change-transition);
}

.stocks-table-change tbody tr:hover {
  background: var(--change-surface-hover);
}

.stocks-table-change tbody tr:last-child td {
  border-bottom: none;
}

/* 테이블 셀 정렬 */
.text-center {
  text-align: center;
}

.text-right {
  text-align: right;
}

/* RS 점수 스타일 */
.rs-score-change {
  display: inline-block;
  padding: 4px 10px;
  border-radius: var(--change-radius-sm);
  font-weight: 600;
  font-size: 13px;
}

.rs-score-change.high {
  background: rgba(239, 68, 68, 0.1);
  color: var(--change-bull);
}

.rs-score-change.medium {
  background: rgba(255, 159, 64, 0.1);
  color: #ff9f40;
}

.rs-score-change.low {
  background: rgba(59, 130, 246, 0.1);
  color: var(--change-bear);
}

/* 거리 표시 스타일 */
.distance-change {
  font-weight: 600;
}

.distance-change.close {
  color: var(--change-bull);
}

.distance-change.far {
  color: var(--change-text-secondary);
}

/* 차트 버튼 */
.chart-btn-change {
  padding: 6px 12px;
  background: var(--change-primary);
  color: white;
  border: none;
  border-radius: var(--change-radius-sm);
  cursor: pointer;
  font-size: 13px;
  font-weight: 500;
  transition: all var(--change-transition);
}

.chart-btn-change:hover {
  background: #0051d5;
  transform: scale(1.05);
}

/* 체크박스 스타일 */
.stocks-table-change input[type="checkbox"] {
  width: 18px;
  height: 18px;
  cursor: pointer;
  accent-color: var(--change-primary);
}

/* 빈 상태 */
.empty-state-change {
  padding: var(--change-spacing-xxl) var(--change-spacing-lg);
  text-align: center;
  color: var(--change-text-secondary);
}

.empty-state-change p {
  font-size: 15px;
  margin: 0;
}

/* 로딩 상태 */
.loading-state-change {
  padding: var(--change-spacing-xxl) var(--change-spacing-lg);
  text-align: center;
  color: var(--change-text-secondary);
}

.loading-spinner-change {
  display: inline-block;
  width: 32px;
  height: 32px;
  border: 3px solid var(--change-border);
  border-top-color: var(--change-primary);
  border-radius: 50%;
  animation: spin-change 0.8s linear infinite;
}

@keyframes spin-change {
  to {
    transform: rotate(360deg);
  }
}

/* 백테스트 모달 */
.backtest-modal-overlay-change {
  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;
  animation: fadeIn-change 0.2s ease;
}

@keyframes fadeIn-change {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.backtest-modal-content-change {
  background: var(--change-surface);
  border-radius: var(--change-radius-lg);
  padding: var(--change-spacing-xl);
  max-width: 600px;
  width: 90%;
  max-height: 80vh;
  overflow-y: auto;
  box-shadow: var(--change-shadow-xl);
  animation: slideUp-change 0.3s ease;
}

@keyframes slideUp-change {
  from {
    transform: translateY(20px);
    opacity: 0;
  }
  to {
    transform: translateY(0);
    opacity: 1;
  }
}

.backtest-modal-header-change {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--change-spacing-xl);
  padding-bottom: var(--change-spacing-lg);
  box-shadow: inset 0 -1px 0 0 var(--change-border);
}

.backtest-modal-title-change {
  font-size: 20px;
  font-weight: 700;
  color: var(--change-text-primary);
  margin: 0;
}

.backtest-close-btn-change {
  width: 32px;
  height: 32px;
  border: none;
  background: none;
  font-size: 24px;
  color: var(--change-text-secondary);
  cursor: pointer;
  border-radius: 50%;
  transition: all var(--change-transition);
  display: flex;
  align-items: center;
  justify-content: center;
}

.backtest-close-btn-change:hover {
  background: var(--change-surface-hover);
  color: var(--change-text-primary);
}

/* 백테스트 파라미터 */
.backtest-params-change {
  display: flex;
  flex-direction: column;
  gap: var(--change-spacing-lg);
  margin-bottom: var(--change-spacing-xl);
}

.backtest-param-group-change {
  display: flex;
  flex-direction: column;
  gap: var(--change-spacing-xs);
}

.backtest-param-label-change {
  font-size: 13px;
  font-weight: 500;
  color: var(--change-text-secondary);
}

.backtest-param-input-change {
  width: 100%;
  padding: var(--change-spacing-md);
  border: 1px solid var(--change-border);
  border-radius: var(--change-radius-md);
  font-size: 15px;
  font-family: var(--change-font-primary);
}

.backtest-param-input-change:focus {
  outline: none;
  border-color: var(--change-primary);
  box-shadow: 0 0 0 3px rgba(0, 122, 255, 0.1);
}

/* 백테스트 결과 */
.backtest-results-change {
  background: var(--change-background);
  box-shadow: 0 0 0 1px var(--change-border);
  border: none;
  border-radius: var(--change-radius-md);
  padding: var(--change-spacing-lg);
  margin-top: var(--change-spacing-xl);
}

.backtest-results-change h4 {
  font-size: 16px;
  font-weight: 600;
  color: var(--change-text-primary);
  margin-bottom: var(--change-spacing-md);
}

.backtest-metric-change {
  display: flex;
  justify-content: space-between;
  padding: var(--change-spacing-sm) 0;
  box-shadow: inset 0 -1px 0 0 var(--change-border);
}

.backtest-metric-change:last-child {
  border-bottom: none;
}

.backtest-metric-label-change {
  font-size: 14px;
  color: var(--change-text-secondary);
}

.backtest-metric-value-change {
  font-size: 14px;
  font-weight: 600;
  color: var(--change-text-primary);
}

.backtest-metric-value-change.positive {
  color: var(--change-bull);
}

.backtest-metric-value-change.negative {
  color: var(--change-bear);
}

/* 차트 모달 */
.chart-modal-overlay-change {
  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;
  animation: fadeIn-change 0.2s ease;
}

.chart-modal-wrapper-change {
  width: 90%;
  max-width: 1200px;
  max-height: 90vh;
  background: var(--change-surface);
  border-radius: var(--change-radius-lg);
  overflow: hidden;
  box-shadow: var(--change-shadow-xl);
  animation: slideUp-change 0.3s ease;
}

/* 모바일 반응형 */
@media (max-width: 768px) {
  .breakout-monitoring-change {
    padding: var(--change-spacing-lg) var(--change-spacing-md);
  }

  .breakout-title-change {
    font-size: 24px;
  }

  .preset-buttons-change {
    flex-direction: column;
  }

  .preset-btn-change {
    min-width: 100%;
  }

  .filters-grid-change {
    grid-template-columns: 1fr;
  }

  .actions-section-change {
    flex-direction: column;
  }

  .action-btn-change {
    width: 100%;
    justify-content: center;
  }

  .stocks-table-change {
    font-size: 13px;
  }

  .stocks-table-change th,
  .stocks-table-change td {
    padding: var(--change-spacing-sm) var(--change-spacing-md);
  }

  .backtest-modal-content-change {
    width: 95%;
    padding: var(--change-spacing-lg);
  }

  .chart-modal-wrapper-change {
    width: 95%;
    max-height: 80vh;
  }
}

/* 테이블 수평 스크롤 (작은 화면) */
@media (max-width: 640px) {
  .stocks-section-change {
    overflow-x: auto;
  }

  .stocks-table-change {
    min-width: 800px;
  }
}

/* ===================================
   Enhanced Responsive Design System
   PC (>1024px) → Tablet (768-1024px) → Mobile (<768px) → Small (<480px)
   =================================== */

/* 태블릿 (768px - 1024px) */
@media (max-width: 1024px) and (min-width: 769px) {
  .breakout-monitoring-change {
    padding: var(--change-spacing-lg);
  }

  .breakout-title-change {
    font-size: 24px;
  }

  .breakout-subtitle-change {
    font-size: 14px;
  }

  .preset-buttons-change {
    gap: var(--change-spacing-sm);
  }

  .preset-btn-change {
    min-width: 180px;
    padding: var(--change-spacing-md);
  }

  .preset-label-change {
    font-size: 14px;
  }

  .preset-description-change {
    font-size: 12px;
  }

  .filters-section-change {
    padding: var(--change-spacing-md);
  }

  .filters-grid-change,
  .filter-grid-change {
    grid-template-columns: repeat(2, 1fr);
    gap: var(--change-spacing-md);
  }

  .actions-section-change,
  .action-section-change {
    gap: var(--change-spacing-sm);
  }

  .action-btn-change {
    padding: var(--change-spacing-sm) var(--change-spacing-lg);
    font-size: 14px;
  }

  .stocks-table-change th,
  .stocks-table-change td {
    padding: var(--change-spacing-sm) var(--change-spacing-md);
    font-size: 13px;
  }

  .backtest-modal-content-change {
    max-width: 550px;
  }

  .chart-modal-wrapper-change {
    max-width: 95%;
  }
}

/* 모바일 (<768px) - 기존 스타일 보강 */
@media (max-width: 768px) {
  .breakout-monitoring-change {
    padding: 12px;
    min-height: auto;
  }

  .breakout-header-change {
    margin-bottom: var(--change-spacing-lg);
  }

  .breakout-title-change {
    font-size: 20px;
    margin-bottom: 6px;
  }

  .breakout-subtitle-change {
    font-size: 13px;
    line-height: 1.5;
  }

  .preset-buttons-change {
    flex-direction: column;
    gap: 10px;
    margin-bottom: var(--change-spacing-lg);
  }

  .preset-btn-change {
    min-width: 100%;
    padding: 14px;
  }

  .preset-label-change {
    font-size: 14px;
  }

  .preset-description-change {
    font-size: 12px;
  }

  .filters-section-change {
    padding: 14px;
    margin-bottom: var(--change-spacing-lg);
  }

  .filters-grid-change,
  .filter-grid-change {
    grid-template-columns: 1fr;
    gap: 12px;
  }

  .filter-label-change {
    font-size: 12px;
  }

  .filter-input-change {
    padding: 12px;
    font-size: 14px;
  }

  .actions-section-change,
  .action-section-change {
    flex-direction: column;
    gap: 8px;
    margin-bottom: var(--change-spacing-lg);
  }

  .action-btn-change {
    width: 100%;
    justify-content: center;
    padding: 12px;
    font-size: 14px;
  }

  /* 테이블 가로 스크롤 */
  .stocks-section-change {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  .stocks-table-change {
    min-width: 700px;
    font-size: 12px;
  }

  .stocks-table-change th {
    padding: 10px 8px;
    font-size: 11px;
  }

  .stocks-table-change td {
    padding: 10px 8px;
    font-size: 12px;
  }

  .rs-score-change {
    padding: 3px 8px;
    font-size: 11px;
  }

  .chart-btn-change {
    padding: 5px 10px;
    font-size: 11px;
  }

  .stocks-table-change input[type="checkbox"] {
    width: 16px;
    height: 16px;
  }

  /* 모달 */
  .backtest-modal-content-change {
    width: 95%;
    padding: 16px;
    max-height: 85vh;
  }

  .backtest-modal-header-change {
    margin-bottom: var(--change-spacing-lg);
    padding-bottom: var(--change-spacing-md);
  }

  .backtest-modal-title-change {
    font-size: 18px;
  }

  .backtest-params-change {
    gap: 14px;
  }

  .backtest-param-label-change {
    font-size: 12px;
  }

  .backtest-param-input-change {
    padding: 12px;
    font-size: 14px;
  }

  .chart-modal-wrapper-change {
    width: 95%;
    max-height: 75vh;
  }
}

/* 소형 모바일 (<480px) */
@media (max-width: 480px) {
  .breakout-monitoring-change {
    padding: 8px;
  }

  .breakout-header-change {
    margin-bottom: 14px;
  }

  .breakout-title-change {
    font-size: 18px;
  }

  .breakout-subtitle-change {
    font-size: 12px;
  }

  .preset-buttons-change {
    gap: 8px;
    margin-bottom: 14px;
  }

  .preset-btn-change {
    padding: 12px;
  }

  .preset-label-change {
    font-size: 13px;
    margin-bottom: 2px;
  }

  .preset-description-change {
    font-size: 11px;
  }

  .filters-section-change {
    padding: 12px;
    margin-bottom: 14px;
  }

  .filters-grid-change,
  .filter-grid-change {
    gap: 10px;
  }

  .filter-label-change {
    font-size: 11px;
  }

  .filter-input-change {
    padding: 10px;
    font-size: 13px;
  }

  .actions-section-change,
  .action-section-change {
    gap: 6px;
    margin-bottom: 14px;
  }

  .action-btn-change {
    padding: 10px;
    font-size: 13px;
    gap: 6px;
  }

  /* 테이블 */
  .stocks-table-change {
    min-width: 650px;
  }

  .stocks-table-change th {
    padding: 8px 6px;
    font-size: 10px;
    letter-spacing: 0.3px;
  }

  .stocks-table-change td {
    padding: 8px 6px;
    font-size: 11px;
  }

  .rs-score-change {
    padding: 2px 6px;
    font-size: 10px;
  }

  .chart-btn-change {
    padding: 4px 8px;
    font-size: 10px;
  }

  .stocks-table-change input[type="checkbox"] {
    width: 14px;
    height: 14px;
  }

  /* 빈 상태 */
  .empty-state-change {
    padding: var(--change-spacing-lg);
  }

  .empty-state-change p {
    font-size: 13px;
  }

  /* 로딩 상태 */
  .loading-state-change {
    padding: var(--change-spacing-lg);
  }

  .loading-spinner-change {
    width: 28px;
    height: 28px;
  }

  /* 모달 */
  .backtest-modal-overlay-change {
    align-items: flex-end;
  }

  .backtest-modal-content-change {
    width: 100%;
    max-height: 90vh;
    border-radius: var(--change-radius-lg) var(--change-radius-lg) 0 0;
    padding: 14px;
  }

  .backtest-modal-title-change {
    font-size: 16px;
  }

  .backtest-close-btn-change {
    width: 28px;
    height: 28px;
    font-size: 20px;
  }

  .backtest-param-input-change {
    padding: 10px;
    font-size: 13px;
  }

  .backtest-results-change {
    padding: 12px;
  }

  .backtest-results-change h4 {
    font-size: 14px;
  }

  .backtest-metric-label-change,
  .backtest-metric-value-change {
    font-size: 12px;
  }

  .chart-modal-wrapper-change {
    width: 100%;
    max-height: 70vh;
    border-radius: var(--change-radius-lg) var(--change-radius-lg) 0 0;
  }
}

/* ThemeStrengthAnalysis.css - Toss Style */

/* Grid Layout for Theme Cards */
.theme-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  grid-gap: 16px;
  gap: 16px;
  margin-top: 16px;
}

/* Theme Card Specific Styles */
.theme-card {
  position: relative;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.theme-card:active {
  transform: scale(0.98);
}

.theme-card .card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 16px;
}

.theme-card .rank-badge {
  background-color: var(--toss-blue);
  color: white;
  font-size: 12px;
  font-weight: 700;
  padding: 4px 8px;
  border-radius: 12px;
}

.theme-card .theme-name {
  font-size: 18px;
  font-weight: 700;
  color: var(--toss-grey-900);
  margin: 0;
  flex: 1 1;
  margin-left: 12px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.theme-card .grade-badge {
  font-size: 12px;
  font-weight: 600;
  padding: 4px 8px;
  border-radius: 6px;
}

.theme-card .grade-badge.very_strong {
  background-color: rgba(231, 76, 60, 0.1);
  color: #e74c3c;
}

.theme-card .grade-badge.strong {
  background-color: rgba(243, 156, 18, 0.1);
  color: #f39c12;
}

.theme-card .grade-badge.moderate {
  background-color: rgba(241, 196, 15, 0.1);
  color: #f1c40f;
}

.theme-card .grade-badge.weak {
  background-color: rgba(46, 204, 113, 0.1);
  color: #2ecc71;
}

.theme-card .grade-badge.very_weak {
  background-color: rgba(149, 165, 166, 0.1);
  color: #95a5a6;
}

/* Strength Progress Bar */
.strength-progress {
  margin-bottom: 20px;
}

.strength-progress .progress-label {
  display: flex;
  justify-content: space-between;
  margin-bottom: 6px;
  font-size: 13px;
  color: var(--toss-grey-600);
}

.strength-progress .progress-bar-bg {
  height: 8px;
  background-color: var(--toss-grey-100);
  border-radius: 4px;
  overflow: hidden;
}

.strength-progress .progress-bar-fill {
  height: 100%;
  border-radius: 4px;
  transition: width 0.5s ease-out;
}

/* Metrics Grid */
.metrics-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-gap: 8px;
  gap: 8px;
  border-top: 1px solid var(--toss-grey-100);
  padding-top: 16px;
}

.metrics-grid .metric-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}

.metrics-grid .label {
  font-size: 12px;
  color: var(--toss-grey-500);
  margin-bottom: 4px;
}

.metrics-grid .value {
  font-size: 14px;
  font-weight: 600;
  color: var(--toss-grey-800);
}

.metrics-grid .value.positive {
  color: var(--toss-red);
}

.metrics-grid .value.negative {
  color: var(--toss-blue);
}

.metrics-grid .trend-value {
  display: flex;
  align-items: center;
  gap: 4px;
}

/* Table Styles Override for Theme History */
.toss-table th {
  white-space: nowrap;
}

.grade-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  margin-right: 6px;
}

.grade-dot.very_strong {
  background-color: #e74c3c;
}

.grade-dot.strong {
  background-color: #f39c12;
}

.grade-dot.moderate {
  background-color: #f1c40f;
}

.grade-dot.weak {
  background-color: #2ecc71;
}

.grade-dot.very_weak {
  background-color: #95a5a6;
}

/* Mobile Optimizations */
@media (max-width: 768px) {
  .theme-card-grid {
    grid-template-columns: 1fr;
  }

  .theme-card .theme-name {
    font-size: 16px;
  }
}
/**
 * ThemeSectorTreemap.css
 * 테마/섹터 분석 Treemap 스타일
 */

.theme-sector-treemap {
    background: var(--change-bg-elevated);
    border-radius: 16px;
    padding: 24px;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.05);
    margin-bottom: 24px;
}

/* 헤더 */
.treemap-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: 20px;
    gap: 16px;
    flex-wrap: wrap;
}

.header-title {
    display: flex;
    align-items: flex-start;
    gap: 12px;
}

.header-icon {
    width: 24px;
    height: 24px;
    color: #0052cc;
    flex-shrink: 0;
    margin-top: 2px;
}

.treemap-header h3 {
    margin: 0 0 4px 0;
    font-size: 18px;
    font-weight: 700;
    color: #1a1a1a;
}

.sub-description {
    margin: 0;
    font-size: 14px;
    color: var(--change-text-secondary);
    line-height: 1.5;
}

.header-actions {
    display: flex;
    gap: 8px;
}

.refresh-btn {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 8px 16px;
    border: 1px solid #e0e0e0;
    border-radius: 8px;
    background: var(--change-bg-elevated);
    color: var(--change-text);
    font-size: 14px;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.2s ease;
}

.refresh-btn:hover:not(:disabled) {
    background: var(--change-gray-50);
    border-color: #ccc;
}

.refresh-btn:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

.refresh-btn svg {
    width: 16px;
    height: 16px;
}

.refresh-btn .spin {
    animation: spin 1s linear infinite;
}

@keyframes spin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

/* 에러 메시지 */
.treemap-error {
    padding: 12px 16px;
    background: var(--change-bg-warning);
    border: 1px solid #ffc107;
    border-radius: 8px;
    color: #856404;
    font-size: 14px;
    margin-bottom: 16px;
}

/* 컨텐츠 영역 */
.treemap-content {
    margin-bottom: 16px;
}

.treemap-label {
    font-size: 13px;
    font-weight: 600;
    color: var(--change-text-secondary);
    margin-bottom: 12px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.treemap-chart-container {
    width: 100%;
    height: 450px;
    border-radius: 12px;
    overflow: hidden;
    background: #fafafa;
    transition: opacity 0.3s ease;
}

/* 푸터 */
.treemap-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: 16px;
    border-top: 1px solid #f0f0f0;
    gap: 16px;
    flex-wrap: wrap;
}

.treemap-footer p {
    margin: 0;
    font-size: 13px;
    color: #888;
}

.last-update {
    font-size: 12px;
    color: var(--change-gray-500);
}

/* 범례 */
.treemap-legend {
    display: flex;
    gap: 16px;
    margin-top: 16px;
    padding-top: 16px;
    border-top: 1px solid #f0f0f0;
    flex-wrap: wrap;
}

.legend-item {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    color: var(--change-text-secondary);
}

.legend-color {
    width: 16px;
    height: 16px;
    border-radius: 4px;
    flex-shrink: 0;
}

/* 반응형 */
@media (max-width: 768px) {
    .theme-sector-treemap {
        padding: 16px;
    }

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

    .treemap-header h3 {
        font-size: 16px;
    }

    .treemap-chart-container {
        height: 350px;
    }

    .treemap-footer {
        flex-direction: column;
        align-items: flex-start;
    }

    .treemap-legend {
        gap: 12px;
    }
}

/* 다크모드 지원 */
@media (prefers-color-scheme: dark) {
    .theme-sector-treemap {
        background: #1a1a1a;
    }

    .treemap-header h3 {
        color: #fff;
    }

    .sub-description {
        color: #aaa;
    }

    .refresh-btn {
        background: #2a2a2a;
        border-color: #444;
        color: #fff;
    }

    .refresh-btn:hover:not(:disabled) {
        background: #333;
    }

    .treemap-chart-container {
        background: #2a2a2a;
    }

    .treemap-footer {
        border-color: var(--change-text);
    }

    .treemap-footer p,
    .last-update {
        color: #888;
    }

    .treemap-legend {
        border-color: var(--change-text);
    }

    .legend-item {
        color: #aaa;
    }
}

/* MomentumStrategy.css - Toss Style Adapted */

.momentum-strategy {
  padding-bottom: 40px;
}

/* Strategy Header - Legacy support, but prefer toss-header-card */
.strategy-header {
  text-align: center;
  margin-bottom: var(--spacing-lg);
}

.strategy-header h1 {
  color: var(--toss-grey-900);
  margin-bottom: var(--spacing-sm);
}

.strategy-header p {
  color: var(--toss-grey-600);
  font-size: 16px;
}

/* Market Phase Card */
.market-phase-card {
  border-left: 4px solid var(--toss-blue);
}

.market-phase-content {
  background: var(--toss-grey-50);
  padding: var(--spacing-md);
  border-radius: var(--radius-sm);
}

.phase-indicator {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--spacing-md);
}

.phase-name {
  font-size: 24px;
  font-weight: 700;
  color: var(--stock-red);
  background: var(--stock-red-bg);
  padding: 8px 16px;
  border-radius: 20px;
}

.confidence {
  font-size: 14px;
  color: var(--toss-grey-600);
  background: var(--toss-white);
  padding: 4px 12px;
  border-radius: var(--radius-sm);
  border: 1px solid var(--toss-grey-200);
}

.phase-description {
  font-size: 16px;
  color: var(--toss-grey-800);
  line-height: 1.6;
  margin: 0;
}

/* Market Stats Grid */
.market-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  grid-gap: 12px;
  gap: 12px;
  margin-top: 20px;
  padding-top: 20px;
  border-top: 1px solid var(--toss-grey-200);
}

.stat-box {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 16px;
  background: var(--toss-white);
  border-radius: var(--radius-sm);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.03);
  border: 1px solid var(--toss-grey-100);
}

.stat-box .label {
  font-size: 13px;
  color: var(--toss-grey-600);
  margin-bottom: 8px;
}

.stat-box .value {
  font-size: 20px;
  font-weight: 700;
  color: var(--toss-grey-900);
}

/* Sector Momentum List */
.sector-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.sector-item {
  display: flex;
  align-items: center;
  padding: 16px;
  margin-bottom: 0;
  /* Override default card margin */
  border: 1px solid var(--toss-grey-100);
  box-shadow: none;
}

.sector-item:hover {
  background-color: var(--toss-grey-50);
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
}

.sector-rank {
  font-size: 18px;
  font-weight: 700;
  color: var(--toss-blue);
  width: 40px;
}

.sector-info {
  flex: 1 1;
}

.sector-name {
  font-size: 16px;
  font-weight: 600;
  color: var(--toss-grey-900);
  margin-bottom: 4px;
}

.sector-meta {
  display: flex;
  gap: 12px;
  font-size: 13px;
}

.volume-ratio {
  color: var(--toss-grey-500);
}

.momentum-score {
  font-size: 16px;
  font-weight: 700;
  padding: 6px 12px;
  border-radius: 8px;
  background: var(--toss-grey-100);
}

.momentum-score.text-red {
  color: var(--stock-red);
  background: var(--stock-red-bg);
}

.momentum-score.text-blue {
  color: var(--stock-blue);
  background: var(--stock-blue-bg);
}

/* Stock List Card */
.stock-list-card {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.stock-item-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px;
  margin-bottom: 0;
  border: 1px solid var(--toss-grey-100);
  box-shadow: none;
}

.stock-main {
  flex: 1 1;
}

.stock-header {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin-bottom: 4px;
}

.stock-name {
  font-size: 16px;
  font-weight: 600;
  color: var(--toss-grey-900);
}

.stock-code {
  font-size: 12px;
  color: var(--toss-grey-500);
}

.sector-badge-small {
  font-size: 11px;
  color: var(--toss-grey-600);
  background: var(--toss-grey-100);
  padding: 2px 6px;
  border-radius: 4px;
}

.stock-metrics-row {
  display: flex;
  gap: 24px;
  margin-right: 24px;
}

.metric-col {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
}

.metric-col .label {
  font-size: 11px;
  color: var(--toss-grey-500);
  margin-bottom: 2px;
}

.metric-col .value {
  font-size: 15px;
  font-weight: 600;
  color: var(--toss-grey-900);
}

/* Helper Classes */
.text-red {
  color: var(--stock-red) !important;
}

.text-blue {
  color: var(--stock-blue) !important;
}

.text-grey {
  color: var(--toss-grey-500) !important;
}

.text-orange {
  color: #FF9F0A !important;
}

/* Rules Scroll Container */
.rules-scroll-container {
  display: flex;
  overflow-x: auto;
  gap: 12px;
  padding-bottom: 8px;
}

.rule-card-mini {
  min-width: 200px;
  padding: 16px;
  margin-bottom: 0;
  border: 1px solid var(--toss-grey-200);
}

.rule-header {
  display: flex;
  justify-content: space-between;
  margin-bottom: 8px;
}

.status-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--toss-grey-300);
}

.status-dot.active {
  background: var(--stock-red);
  box-shadow: 0 0 0 2px var(--stock-red-bg);
}

.rule-desc {
  font-size: 13px;
  color: var(--toss-grey-700);
}

/* Mobile Optimizations */
@media (max-width: 768px) {
  .momentum-strategy {
    padding: 16px;
  }

  .phase-indicator {
    flex-direction: column;
    gap: 12px;
    align-items: flex-start;
  }

  .stock-item-row {
    flex-direction: column;
    align-items: flex-start;
    gap: 16px;
  }

  .stock-metrics-row {
    width: 100%;
    justify-content: space-between;
    margin-right: 0;
    padding-top: 12px;
    border-top: 1px solid var(--toss-grey-50);
  }

  .stock-action {
    width: 100%;
    text-align: right;
  }
}
/* PremiumLoading.css */
:root {
  --loader-bg-primary: #F2F4F6;
  --loader-text-primary: #191F28;
  --loader-text-secondary: #4E5968;
  --loader-toss-blue: #3182F6;
}

[data-theme="dark"] {
  --loader-bg-primary: #202632;
  --loader-text-primary: #F2F4F6;
  --loader-text-secondary: #B0B8C1;
}

/* 프리미엄 로딩 UI */
.loading-overlay-premium {
  position: absolute; /* Changed from fixed to absolute to fit container if needed, but usually fixed is used for full screen. Let's support both via props or context. Defaults to absolute for component level? No, usually overlays are fixed or absolute covering parent. */
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: #F2F4F6;
  background: var(--loader-bg-primary);
  opacity: 0.95;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1000; /* High z-index */
  -webkit-backdrop-filter: blur(5px);
          backdrop-filter: blur(5px);
  transition: all 0.3s ease;
}

.loading-overlay-premium.fixed {
    position: fixed;
    z-index: 9999;
}

.loading-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  animation: slideUpFade 0.5s ease-out;
}

.loading-logo-pulse {
  position: relative;
  width: 60px;
  height: 60px;
  margin-bottom: 24px;
}

.logo-circle {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: #3182F6;
  background: var(--loader-toss-blue);
  border-radius: 50%;
  opacity: 0.2;
  animation: pulse-ring 2s cubic-bezier(0.215, 0.61, 0.355, 1) infinite;
}

.logo-circle-inner {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 24px;
  height: 24px;
  background: #3182F6;
  background: var(--loader-toss-blue);
  border-radius: 50%;
  box-shadow: 0 0 20px rgba(49, 130, 246, 0.5);
  animation: pulse-dot 2s cubic-bezier(0.455, 0.03, 0.515, 0.955) infinite;
}

.loading-title {
  font-size: 20px;
  font-weight: 700;
  color: #191F28;
  color: var(--loader-text-primary);
  margin: 0 0 8px 0;
}

.loading-desc {
  font-size: 14px;
  color: #4E5968;
  color: var(--loader-text-secondary);
  margin: 0;
}

@keyframes pulse-ring {
  0% {
    transform: scale(0.8);
    opacity: 0.5;
  }

  100% {
    transform: scale(2.5);
    opacity: 0;
  }
}

@keyframes pulse-dot {
  0% {
    transform: translate(-50%, -50%) scale(1);
  }

  50% {
    transform: translate(-50%, -50%) scale(1.2);
  }

  100% {
    transform: translate(-50%, -50%) scale(1);
  }
}

@keyframes slideUpFade {
  from {
    opacity: 0;
    transform: translateY(20px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* =============================================================================
   MarketAnalysis_Change.css — Stitch Design System
   Uses --change-* design tokens from ChangeStyleCommon.css.
   No-Line Rule: borders replaced with box-shadow.
   ============================================================================= */

/* ---------------------------------------------------------------------------
   Root container
   --------------------------------------------------------------------------- */
.ma-stitch-root {
  max-width: 1400px;
  margin: 0 auto;
  color: var(--change-text-primary);
}

/* ---------------------------------------------------------------------------
   Header — Segmented Tab Bar (Stitch style)
   --------------------------------------------------------------------------- */
.ma-stitch-header {
  margin-bottom: 32px;
}

.ma-stitch-tab-bar {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: #f2f4f6;
  background: var(--change-surface-low, #f2f4f6);
  padding: 6px;
  border-radius: 16px;
  overflow-x: auto;
  -ms-overflow-style: none;
  scrollbar-width: none;
}

.ma-stitch-tab-bar::-webkit-scrollbar {
  display: none;
}

.ma-stitch-tab {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 20px;
  border-radius: 12px;
  border: none;
  background: transparent;
  color: #8B95A1;
  color: var(--change-gray-500, #8B95A1);
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
  white-space: nowrap;
}

.ma-stitch-tab:hover {
  background: rgba(255, 255, 255, 0.6);
  color: var(--change-text-primary);
}

.ma-stitch-tab:focus-visible {
  outline: 2px solid var(--change-primary);
  outline-offset: 2px;
}

.ma-stitch-tab.active {
  background: #ffffff;
  background: var(--change-surface-lowest, #ffffff);
  color: var(--change-primary);
  font-weight: 700;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}

.ma-stitch-tab-icon {
  font-size: 20px;
  line-height: 1;
}

.ma-stitch-tab.active .ma-stitch-tab-icon {
  font-variation-settings: 'FILL' 1;
}

/* ---------------------------------------------------------------------------
   Content Area
   --------------------------------------------------------------------------- */
.ma-stitch-content {
  animation: maStitchFadeIn 0.3s ease both;
  min-height: 300px;
}

@keyframes maStitchFadeIn {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ---------------------------------------------------------------------------
   Responsive
   --------------------------------------------------------------------------- */
@media (max-width: 768px) {
  .ma-stitch-root {
    padding: 0;
  }

  .ma-stitch-header {
    margin-bottom: 20px;
  }

  .ma-stitch-tab-bar {
    padding: 4px;
    border-radius: 12px;
  }

  .ma-stitch-tab {
    padding: 8px 14px;
    font-size: 13px;
    gap: 6px;
  }

  .ma-stitch-tab-icon {
    font-size: 18px;
  }
}

@media (max-width: 480px) {
  .ma-stitch-tab-bar {
    gap: 2px;
    padding: 3px;
  }

  .ma-stitch-tab {
    padding: 7px 10px;
    font-size: 12px;
    gap: 4px;
  }

  .ma-stitch-tab-icon {
    font-size: 16px;
  }
}

/* ---------------------------------------------------------------------------
   Dark mode overrides
   --------------------------------------------------------------------------- */
[data-theme="dark"] .ma-stitch-root {
  color: var(--change-text-primary);
}

[data-theme="dark"] .ma-stitch-tab-bar {
  background: #333D4B;
  background: var(--change-gray-100, #333D4B);
}

[data-theme="dark"] .ma-stitch-tab {
  color: var(--change-gray-500);
}

[data-theme="dark"] .ma-stitch-tab:hover {
  background: rgba(255, 255, 255, 0.05);
  color: var(--change-text-primary);
}

[data-theme="dark"] .ma-stitch-tab.active {
  background: #4E5968;
  background: var(--change-gray-200, #4E5968);
  color: var(--change-primary);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
}

.leading-pullback-stocks {
  padding: 20px;
  max-width: 1400px;
  margin: 0 auto;
}

.header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 25px;
  padding-bottom: 15px;
  border-bottom: 2px solid #e9ecef;
}

.header h2 {
  color: var(--change-text);
  margin: 0;
}

.stats {
  display: flex;
  align-items: center;
  gap: 15px;
}

.action-buttons {
  display: flex;
  gap: 10px;
}

.total-count {
  font-weight: 500;
  color: #495057;
  background-color: var(--change-gray-50);
  padding: var(--spacing-sm) 12px;
  border-radius: var(--spacing-xs);
}

.btn-refresh,
.btn-filter {
  padding: var(--spacing-sm) 16px;
  background-color: #007bff;
  color: white;
  border: none;
  border-radius: var(--spacing-xs);
  cursor: pointer;
  font-size: 14px;
  transition: background-color 0.2s;
}

.btn-refresh:hover,
.btn-filter:hover {
  background-color: #0056b3;
}

.btn-filter {
  background-color: #28a745;
}

.btn-filter:hover {
  background-color: #1e7e34;
}

/* 필터 패널 */
.filter-panel {
  background-color: var(--change-bg-warning);
  border-radius: var(--spacing-sm);
  padding: 20px;
  margin-bottom: 25px;
  border-left: 4px solid #ffc107;
  border: 1px solid #ffeaa7;
}

.filter-panel h3 {
  color: #856404;
  margin: 0 0 15px 0;
  font-size: 16px;
}

.filter-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  grid-gap: 15px;
  gap: 15px;
  margin-bottom: 15px;
}

.filter-item {
  display: flex;
  align-items: center;
  gap: 10px;
}

.filter-item label {
  font-weight: 500;
  color: #495057;
  min-width: 100px;
}

.filter-item input {
  padding: 6px 10px;
  border: 1px solid #ced4da;
  border-radius: var(--spacing-xs);
  width: 80px;
  font-size: 14px;
}

.filter-item .unit {
  color: #6c757d;
  font-size: 12px;
}

.filter-actions {
  text-align: center;
}

.btn-run-screening {
  padding: 10px 20px;
  background-color: #dc3545;
  color: white;
  border: none;
  border-radius: var(--spacing-xs);
  cursor: pointer;
  font-size: 14px;
  font-weight: 500;
  transition: background-color 0.2s;
}

.btn-run-screening:hover:not(:disabled) {
  background-color: #c82333;
}

.btn-run-screening:disabled {
  background-color: #6c757d;
  cursor: not-allowed;
}

/* 정보 패널 */
.info-panel {
  background-color: var(--change-gray-50);
  border-radius: var(--spacing-sm);
  padding: 20px;
  margin-bottom: 25px;
  border-left: 4px solid #007bff;
}

.info-panel h3 {
  color: var(--change-text);
  margin: 0 0 15px 0;
  font-size: 16px;
}

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

.criterion {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--spacing-sm) 0;
}

.criterion-label {
  font-weight: 500;
  color: #555;
}

.criterion-value {
  font-weight: 600;
  color: #007bff;
  font-size: 14px;
}

/* 테이블 스타일 */
.stocks-table-container {
  overflow-x: auto;
  background: var(--change-bg-elevated);
  border-radius: var(--spacing-sm);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.stocks-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}

.stocks-table th,
.stocks-table td {
  padding: 12px 8px;
  text-align: left;
  border-bottom: 1px solid #dee2e6;
  vertical-align: middle;
}

.stocks-table th {
  background-color: var(--change-gray-50);
  font-weight: 600;
  color: #495057;
  font-size: 13px;
  position: -webkit-sticky;
  position: sticky;
  top: 0;
  z-index: 10;
  cursor: pointer;
  transition: background-color 0.2s;
}

.stocks-table th:hover {
  background-color: #e9ecef;
}

.stocks-table tr:hover {
  background-color: var(--change-gray-50);
}

/* 특정 컬럼 스타일 */
.stock-code {
  font-family: monospace;
  font-weight: 500;
  color: #007bff;
}

.stock-name {
  font-weight: 500;
  color: var(--change-text);
  max-width: 120px;
  word-break: break-word;
}

.price {
  text-align: right;
  font-weight: 500;
  color: var(--change-text);
  font-family: monospace;
}

.pullback-ratio {
  text-align: right;
  font-weight: 600;
  font-family: monospace;
}

/* 조정 단계 스타일 */
.pullback-stage {
  padding: var(--spacing-xs) 8px;
  border-radius: var(--spacing-xs);
  font-size: 12px;
  font-weight: 500;
  text-align: center;
  white-space: nowrap;
}

.stage-early {
  background-color: #d4edda;
  color: #155724;
}

.stage-mid {
  background-color: var(--change-bg-warning);
  color: #856404;
}

.stage-deep {
  background-color: #f8d7da;
  color: #721c24;
}

.stage-unknown {
  background-color: #e2e3e5;
  color: #383d41;
}

/* 지지선 정보 */
.support-info {
  text-align: center;
  font-size: 12px;
}

.support-type {
  font-weight: 600;
  color: #007bff;
  display: block;
  margin-bottom: 2px;
}

.support-level {
  color: var(--change-text-secondary);
  font-family: monospace;
}

/* RS 점수 */
.rs-score {
  text-align: center;
  font-weight: 600;
  font-family: monospace;
  color: var(--change-text);
}

/* 종합 점수 스타일 */
.total-score {
  text-align: center;
  font-weight: 700;
  font-size: 16px;
}

.score-excellent {
  color: #28a745;
}

.score-good {
  color: #17a2b8;
}

.score-fair {
  color: #ffc107;
}

.score-poor {
  color: #dc3545;
}

/* 경과일 */
.days-from-high {
  text-align: center;
  font-weight: 500;
  color: var(--change-text-secondary);
}

/* 거래량 급감 상태 */
.volume-drying {
  text-align: center;
  font-size: 16px;
}

.status-yes {
  color: #28a745;
  font-weight: bold;
}

.status-no {
  color: #dc3545;
  font-weight: bold;
}

/* 상태 메시지 */
.error,
.no-data {
  text-align: center;
  padding: 40px;
  color: #6c757d;
  font-size: 16px;
}

.error {
  color: #dc3545;
  background-color: #f8d7da;
  border: 1px solid #f5c6cb;
  border-radius: 6px;
}

.no-data {
  background-color: var(--change-gray-50);
  border: 1px solid #dee2e6;
  border-radius: 6px;
}

/* 반응형 디자인 */
@media (max-width: 768px) {
  .leading-pullback-stocks {
    padding: 15px;
  }

  .header {
    flex-direction: column;
    gap: 15px;
  }

  .stats {
    justify-content: center;
  }

  .criteria-grid {
    grid-template-columns: 1fr;
  }

  .stocks-table {
    font-size: 12px;
  }

  .stocks-table th,
  .stocks-table td {
    padding: var(--spacing-sm) 4px;
  }

  .pullback-stage {
    font-size: 10px;
    padding: 2px 4px;
  }

  .total-score {
    font-size: 14px;
  }
}
/* 테마 로테이션 분석 컴포넌트 스타일 */

.theme-rotation-analysis {
  max-width: 1200px;
  margin: 0 auto;
  padding: 20px;
  font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, Roboto, sans-serif;
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  min-height: 100vh;
}

/* 헤더 섹션 */
.rotation-header {
  background: rgba(255, 255, 255, 0.95);
  -webkit-backdrop-filter: blur(10px);
          backdrop-filter: blur(10px);
  border-radius: 20px;
  padding: 25px;
  margin-bottom: 20px;
  box-shadow: 0 8px 32px rgba(31, 38, 135, 0.37);
  border: 1px solid rgba(255, 255, 255, 0.18);
}

.header-content h2 {
  color: #2d3748;
  margin: 0 0 10px 0;
  font-size: 28px;
  font-weight: 700;
  display: flex;
  align-items: center;
  gap: 10px;
}

.header-content p {
  color: #718096;
  margin: 0 0 20px 0;
  font-size: 16px;
  line-height: 1.6;
}

.controls {
  display: flex;
  gap: 20px;
  align-items: center;
  flex-wrap: wrap;
}

.period-selector {
  display: flex;
  align-items: center;
  gap: 10px;
}

.period-selector label {
  font-weight: 600;
  color: #4a5568;
}

.period-selector select {
  padding: var(--spacing-sm) 12px;
  border: 2px solid #e2e8f0;
  border-radius: var(--spacing-sm);
  font-size: 14px;
  background: var(--change-bg-elevated);
  transition: border-color 0.2s;
}

.period-selector select:focus {
  outline: none;
  border-color: #667eea;
}

.analyze-button {
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  color: white;
  border: none;
  padding: 10px 20px;
  border-radius: var(--spacing-sm);
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.3s ease;
  display: flex;
  align-items: center;
  gap: var(--spacing-sm);
}

.analyze-button:hover:not(:disabled) {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);
}

.analyze-button:disabled {
  opacity: 0.7;
  cursor: not-allowed;
  transform: none;
}

/* 메시지 */
.message {
  padding: 15px 20px;
  border-radius: 10px;
  margin-bottom: 20px;
  font-weight: 500;
  display: flex;
  align-items: center;
  gap: 10px;
}

.message.success {
  background: rgba(72, 187, 120, 0.1);
  border: 1px solid #48bb78;
  color: #38a169;
}

.message.error {
  background: rgba(245, 101, 101, 0.1);
  border: 1px solid #f56565;
  color: #e53e3e;
}



/* 로테이션 요약 섹션 */
.rotation-summary-section {
  background: rgba(255, 255, 255, 0.95);
  -webkit-backdrop-filter: blur(10px);
          backdrop-filter: blur(10px);
  border-radius: 20px;
  padding: 25px;
  margin-bottom: 20px;
  box-shadow: 0 8px 32px rgba(31, 38, 135, 0.37);
  border: 1px solid rgba(255, 255, 255, 0.18);
}

.rotation-summary-section h3 {
  color: #2d3748;
  margin: 0 0 20px 0;
  font-size: 20px;
  font-weight: 600;
}

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

.summary-card {
  background: rgba(255, 255, 255, 0.8);
  border-radius: var(--radius);
  padding: 20px;
  display: flex;
  align-items: center;
  gap: 15px;
  transition: transform 0.2s;
  border: 1px solid rgba(255, 255, 255, 0.3);
}

.summary-card:hover {
  transform: translateY(-2px);
}

.summary-icon {
  font-size: 32px;
  width: 50px;
  height: 50px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(102, 126, 234, 0.1);
  border-radius: 10px;
  flex-shrink: 0;
}

.summary-info h4 {
  margin: 0 0 10px 0;
  color: #2d3748;
  font-size: 16px;
  font-weight: 600;
}

.summary-stats {
  display: flex;
  flex-direction: column;
  gap: 5px;
}

.stat {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 14px;
}

.stat-label {
  color: #718096;
}

.stat-value {
  font-weight: 600;
  color: #2d3748;
}

/* 로테이션 패턴 섹션 */
.rotation-patterns-section {
  background: rgba(255, 255, 255, 0.95);
  -webkit-backdrop-filter: blur(10px);
          backdrop-filter: blur(10px);
  border-radius: 20px;
  padding: 25px;
  margin-bottom: 20px;
  box-shadow: 0 8px 32px rgba(31, 38, 135, 0.37);
  border: 1px solid rgba(255, 255, 255, 0.18);
}

.rotation-patterns-section h3 {
  color: #2d3748;
  margin: 0 0 20px 0;
  font-size: 20px;
  font-weight: 600;
}

.patterns-list {
  display: flex;
  flex-direction: column;
  gap: 15px;
}

.pattern-card {
  background: rgba(255, 255, 255, 0.9);
  border-radius: 15px;
  overflow: hidden;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
  transition: all 0.3s ease;
  border: 1px solid rgba(255, 255, 255, 0.3);
}

.pattern-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
}

.pattern-header {
  background: linear-gradient(135deg, #f7fafc 0%, #edf2f7 100%);
  padding: 15px 20px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
}

.pattern-type {
  display: flex;
  align-items: center;
  gap: var(--spacing-sm);
}

.type-icon {
  font-size: 20px;
}

.type-text {
  font-weight: 600;
  color: #2d3748;
  font-size: 16px;
}

.pattern-date {
  color: #718096;
  font-size: 14px;
  font-weight: 500;
}

.confidence-badge {
  color: white;
  padding: 6px 12px;
  border-radius: 20px;
  font-size: 13px;
  font-weight: 700;
  min-width: 50px;
  text-align: center;
}

/* 패턴 내용 */
.pattern-content {
  padding: 20px;
}

.rotation-flow {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 15px;
  flex-wrap: wrap;
}

.from-theme,
.to-theme,
.from-sector,
.to-sector {
  flex: 1 1;
  min-width: 150px;
  text-align: center;
}

.theme-name,
.sector-name {
  font-size: 16px;
  font-weight: 700;
  color: #2d3748;
  margin-bottom: 8px;
  padding: var(--spacing-sm);
  border-radius: var(--spacing-sm);
  background: rgba(102, 126, 234, 0.1);
}

.change-indicator {
  font-size: 14px;
  font-weight: 600;
  padding: var(--spacing-xs) 8px;
  border-radius: 6px;
  margin-bottom: 6px;
  display: inline-block;
}

.change-indicator.positive {
  background: rgba(72, 187, 120, 0.2);
  color: #38a169;
}

.change-indicator.negative {
  background: rgba(245, 101, 101, 0.2);
  color: #e53e3e;
}

.flow-type,
.theme-count {
  font-size: 12px;
  color: #718096;
  font-weight: 500;
}

.flow-arrow {
  font-size: 24px;
  color: #667eea;
  font-weight: bold;
  flex-shrink: 0;
  margin: 0 10px;
}

/* 시장 모드 */
.market-mode {
  text-align: center;
}

.mode-info {
  margin-bottom: 20px;
}

.mode-label {
  color: #718096;
  font-size: 14px;
  margin-bottom: 8px;
}

.mode-value {
  font-size: 20px;
  font-weight: 700;
  padding: 10px 20px;
  border-radius: 25px;
  display: inline-block;
}

.mode-value.risk_on {
  background: rgba(245, 101, 101, 0.2);
  color: #e53e3e;
}

.mode-value.risk_off {
  background: rgba(72, 187, 120, 0.2);
  color: #38a169;
}

.mode-stats {
  display: flex;
  justify-content: center;
  gap: 30px;
  flex-wrap: wrap;
}

.mode-stats .stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 5px;
}

.mode-stats .stat span:first-child {
  font-size: 12px;
  color: #718096;
}

.mode-stats .stat span:last-child {
  font-size: 16px;
  font-weight: 600;
}

.mode-stats .stat .positive {
  color: #38a169;
}

.mode-stats .stat .negative {
  color: #e53e3e;
}

/* 패턴 없음 상태 */
.no-patterns {
  text-align: center;
  padding: 60px 20px;
  background: rgba(255, 255, 255, 0.9);
  border-radius: 20px;
  margin: 20px 0;
}

.no-patterns-icon {
  font-size: 64px;
  margin-bottom: 20px;
  opacity: 0.5;
}

.no-patterns h3 {
  color: #4a5568;
  font-size: 20px;
  margin-bottom: 10px;
}

.no-patterns p {
  color: #718096;
  font-size: 16px;
  line-height: 1.6;
}

/* 분석 정보 */
.analysis-info {
  background: rgba(255, 255, 255, 0.95);
  -webkit-backdrop-filter: blur(10px);
          backdrop-filter: blur(10px);
  border-radius: 20px;
  padding: 25px;
  box-shadow: 0 8px 32px rgba(31, 38, 135, 0.37);
  border: 1px solid rgba(255, 255, 255, 0.18);
}

.info-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  grid-gap: 15px;
  gap: 15px;
  margin-bottom: 25px;
}

.info-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 15px;
  background: rgba(102, 126, 234, 0.05);
  border-radius: var(--spacing-sm);
  font-size: 14px;
}

.info-label {
  color: #718096;
}

.info-value {
  font-weight: 600;
  color: #2d3748;
}

.rotation-guide h4 {
  color: #2d3748;
  margin: 0 0 15px 0;
  font-size: 16px;
  font-weight: 600;
}

.rotation-guide ul {
  list-style: none;
  padding: 0;
  margin: 0;
}

.rotation-guide li {
  padding: var(--spacing-sm) 0;
  font-size: 14px;
  line-height: 1.6;
  color: #4a5568;
  border-bottom: 1px solid rgba(226, 232, 240, 0.5);
}

.rotation-guide li:last-child {
  border-bottom: none;
}

.rotation-guide li strong {
  color: #2d3748;
  font-weight: 600;
}

/* 반응형 디자인 */
@media (max-width: 768px) {
  .theme-rotation-analysis {
    padding: 15px;
  }

  .rotation-header {
    padding: 20px;
  }

  .header-content h2 {
    font-size: 24px;
  }

  .controls {
    flex-direction: column;
    align-items: stretch;
    gap: 15px;
  }

  .period-selector {
    justify-content: space-between;
  }

  .summary-grid {
    grid-template-columns: 1fr;
  }

  .summary-card {
    flex-direction: column;
    text-align: center;
    gap: 10px;
  }

  .rotation-flow {
    flex-direction: column;
    gap: 10px;
  }

  .flow-arrow {
    transform: rotate(90deg);
    margin: 10px 0;
  }

  .pattern-header {
    flex-direction: column;
    align-items: stretch;
    gap: 15px;
  }

  .pattern-type {
    justify-content: center;
  }

  .info-grid {
    grid-template-columns: 1fr;
  }

  .mode-stats {
    gap: 20px;
  }
}

@media (max-width: 480px) {
  .theme-rotation-analysis {
    padding: 10px;
  }

  .rotation-header,
  .rotation-summary-section,
  .rotation-patterns-section,
  .analysis-info {
    padding: 15px;
  }

  .header-content h2 {
    font-size: 20px;
  }

  .summary-card {
    padding: 15px;
  }

  .pattern-content {
    padding: 15px;
  }
}
/* IntegratedMarketAnalysis.css - 토스 스타일 적용 */

:root {
  /* 토스 색상 시스템 */
  --toss-blue: #3182f6;
  --profit-red: #F04452;
  --loss-blue: #1273E4;
  --neutral-gray: #8b95a1;
  
  --bg-white: #ffffff;
  --bg-gray-50: #f8f9fa;
  --bg-gray-100: #f1f3f5;
  
  --text-primary: #191f28;
  --text-secondary: #6b7684;
  --text-tertiary: #8b95a1;
  
  --border-gray: #e5e8eb;
  --border-light: #f1f3f4;
  
  --shadow-card: 0 1px 3px rgba(0, 0, 0, 0.1);
  --shadow-hover: 0 4px 12px rgba(0, 0, 0, 0.15);
  
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 16px;
  --radius-xl: 20px;
  
  --space-xs: 4px;
  --space-sm: 8px;
  --space-md: 12px;
  --space-lg: 16px;
  --space-xl: 20px;
  --space-2xl: 24px;
  --space-3xl: 32px;
}

.integrated-market-analysis {
  padding: 20px;
  padding: var(--space-xl);
  max-width: 1400px;
  margin: 0 auto;
  background: #f8f9fa;
  background: var(--bg-gray-50);
  min-height: 100vh;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}

/* 토스 스타일 헤더 */
.analysis-header {
  margin-bottom: 32px;
  margin-bottom: var(--space-3xl);
}

.header-content {
  background: #ffffff;
  background: var(--bg-white);
  padding: 32px 24px;
  padding: var(--space-3xl) var(--space-2xl);
  border-radius: 16px;
  border-radius: var(--radius-lg);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
  box-shadow: var(--shadow-card);
  border: 1px solid #e5e8eb;
  border: 1px solid var(--border-gray);
}

.analysis-title {
  font-size: var(--font-size-h1);
  font-weight: 800;
  color: #191f28;
  color: var(--text-primary);
  margin-bottom: 8px;
  margin-bottom: var(--space-sm);
  letter-spacing: -0.5px;
  text-align: center;
}

.analysis-subtitle {
  color: #6b7684;
  color: var(--text-secondary);
  font-size: 1.1rem;
  font-weight: 500;
  text-align: center;
  margin-bottom: 24px;
  margin-bottom: var(--space-2xl);
}

/* 현재 탭 정보 카드 */
.current-tab-info {
  display: flex;
  align-items: center;
  gap: 16px;
  gap: var(--space-lg);
  padding: 20px;
  padding: var(--space-xl);
  background: linear-gradient(135deg, #f8f9fa 0%, #f1f3f5 100%);
  background: linear-gradient(135deg, var(--bg-gray-50) 0%, var(--bg-gray-100) 100%);
  border-radius: 12px;
  border-radius: var(--radius-md);
  border: 1px solid #f1f3f4;
  border: 1px solid var(--border-light);
}

.current-tab-info .tab-icon {
  font-size: var(--font-size-h2);
  padding: 12px;
  padding: var(--space-md);
  background: #ffffff;
  background: var(--bg-white);
  border-radius: 12px;
  border-radius: var(--radius-md);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
  box-shadow: var(--shadow-card);
  min-width: 60px;
  text-align: center;
}

.tab-details h2 {
  font-size: 1.4rem;
  font-weight: 700;
  color: #191f28;
  color: var(--text-primary);
  margin: 0 0 4px 0;
  margin: 0 0 var(--space-xs) 0;
  letter-spacing: -0.3px;
}

.tab-details p {
  font-size: 0.95rem;
  color: #6b7684;
  color: var(--text-secondary);
  margin: 0;
  line-height: 1.5;
}

/* 토스 스타일 탭 네비게이션 */
.analysis-tabs {
  background: #ffffff;
  background: var(--bg-white);
  border-radius: 16px;
  border-radius: var(--radius-lg);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
  box-shadow: var(--shadow-card);
  border: 1px solid #e5e8eb;
  border: 1px solid var(--border-gray);
  overflow: hidden;
}

.tab-navigation {
  position: relative;
  background: #f8f9fa;
  background: var(--bg-gray-50);
  border-bottom: 1px solid #f1f3f4;
  border-bottom: 1px solid var(--border-light);
  padding: 8px;
  padding: var(--space-sm);
}

.tab-buttons-container {
  display: flex;
  gap: 4px;
  gap: var(--space-xs);
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
  -ms-overflow-style: none;
  padding: 4px;
  padding: var(--space-xs);
  flex-wrap: nowrap;
  -webkit-overflow-scrolling: touch; /* 부드러운 스크롤 (iOS) */
}

.tab-buttons-container::-webkit-scrollbar {
  display: none;
}

.tab-button {
  position: relative;
  background: transparent;
  border: none;
  padding: 12px 16px;
  padding: var(--space-md) var(--space-lg);
  border-radius: 12px;
  border-radius: var(--radius-md);
  cursor: pointer;
  transition: all 0.2s ease;
  white-space: nowrap;
  min-width: 140px;
  color: #6b7684;
  color: var(--text-secondary);
}

.tab-button:hover {
  background: #ffffff;
  background: var(--bg-white);
  color: #191f28;
  color: var(--text-primary);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
  box-shadow: var(--shadow-card);
  transform: translateY(-1px);
}

.tab-button.active {
  background: #3182f6;
  background: var(--toss-blue);
  color: white;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
  box-shadow: var(--shadow-hover);
  transform: translateY(-2px);
}

.tab-button-content {
  display: flex;
  align-items: center;
  gap: 8px;
  gap: var(--space-sm);
}

.tab-button .tab-icon {
  font-size: 1.2rem;
}

.tab-button .tab-label {
  font-weight: 600;
  font-size: 0.9rem;
}

.tab-indicator {
  position: absolute;
  bottom: -2px;
  left: 50%;
  transform: translateX(-50%);
  width: 20px;
  height: 3px;
  background: var(--change-bg-elevated);
  border-radius: 2px;
}

/* 컨텐츠 영역 */
.tab-content {
  min-height: 600px;
  background: #ffffff;
  background: var(--bg-white);
}

.content-wrapper {
  padding: 24px;
  padding: var(--space-2xl);
}

/* 내부 컴포넌트 스타일 조정 */
.content-wrapper > * {
  border-radius: 0;
  box-shadow: none;
  margin: 0;
  background: transparent;
}

/* 반응형 디자인 */

/* 태블릿 (768px 이하) */
@media (max-width: 768px) {
  .integrated-market-analysis {
    padding: 16px;
    padding: var(--space-lg);
  }
  
  .header-content {
    padding: 24px 16px;
    padding: var(--space-2xl) var(--space-lg);
  }
  
  .analysis-title {
    font-size: var(--font-size-h2);
  }
  
  .analysis-subtitle {
    font-size: var(--font-size-base);
  }
  
  .current-tab-info {
    flex-direction: column;
    text-align: center;
    gap: 12px;
    gap: var(--space-md);
  }
  
  .tab-buttons-container {
    gap: 4px;
    gap: var(--space-xs);
  }
  
  .tab-button {
    min-width: 110px;
    padding: 8px 12px;
    padding: var(--space-sm) var(--space-md);
    flex-shrink: 0; /* 탭이 축소되지 않도록 */
  }

  .tab-button .tab-label {
    font-size: 0.85rem;
  }
  
  .content-wrapper {
    padding: 16px;
    padding: var(--space-lg);
  }
  
  .tab-content {
    min-height: 500px;
  }
}

/* 모바일 (480px 이하) */
@media (max-width: 480px) {
  .integrated-market-analysis {
    padding: 12px;
    padding: var(--space-md);
  }
  
  .analysis-title {
    font-size: 1.8rem;
  }
  
  .analysis-subtitle {
    font-size: 0.9rem;
  }
  
  .header-content {
    padding: 20px 12px;
    padding: var(--space-xl) var(--space-md);
  }
  
  .current-tab-info .tab-icon {
    font-size: var(--font-size-h3);
    min-width: 50px;
    padding: 8px;
    padding: var(--space-sm);
  }
  
  .tab-details h2 {
    font-size: 1.2rem;
  }
  
  .tab-details p {
    font-size: 0.85rem;
  }
  
  .tab-button {
    min-width: 85px;
    padding: 8px 10px;
    padding: var(--space-sm) 10px;
    flex-shrink: 0; /* 탭이 축소되지 않도록 */
  }

  .tab-button .tab-icon {
    font-size: 1rem;
  }

  .tab-button .tab-label {
    font-size: 0.75rem;
  }

  /* 모바일에서 스크롤 힌트 표시 */
  .tab-navigation::after {
    content: '→';
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: #8b95a1;
    color: var(--text-tertiary);
    font-size: 1.2rem;
    pointer-events: none;
    opacity: 0.5;
  }
  
  .content-wrapper {
    padding: 12px;
    padding: var(--space-md);
  }
  
  .tab-content {
    min-height: 400px;
  }
}

/* 접근성 개선 */
@media (prefers-reduced-motion: reduce) {
  .tab-button {
    transition: none;
  }
  
  .tab-button:hover,
  .tab-button.active {
    transform: none;
  }
}

/* 다크 모드 준비 */
@media (prefers-color-scheme: dark) {
  :root {
    --bg-white: #1a1a1a;
    --bg-gray-50: #2a2a2a;
    --bg-gray-100: #3a3a3a;
    --text-primary: #ffffff;
    --text-secondary: #b0b0b0;
    --text-tertiary: #808080;
    --border-gray: #404040;
    --border-light: #353535;
    --shadow-card: 0 1px 3px rgba(255, 255, 255, 0.1);
    --shadow-hover: 0 4px 12px rgba(255, 255, 255, 0.15);
  }
}
/* MassBacktester.css */
.mass-backtester {
  max-width: 1200px;
  margin: 0 auto;
  padding: var(--space-6);
  background: var(--change-bg-elevated);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-lg);
  border: 1px solid var(--gray-200);
}

.mass-backtester-header {
  text-align: center;
  margin-bottom: var(--space-8);
  padding-bottom: var(--space-6);
  border-bottom: 2px solid var(--gray-200);
}

.mass-backtester-header h2 {
  margin: 0 0 var(--space-3) 0;
  color: var(--gray-900);
  font-size: 1.875rem;
  font-weight: 700;
  background: linear-gradient(135deg, var(--primary-600), var(--secondary-600));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

.mass-backtester-header p {
  margin: 0;
  color: var(--gray-600);
  font-size: var(--font-size-base);
}

.mass-backtester-content {
  display: flex;
  flex-direction: column;
  gap: var(--space-8);
}

/* Parameters Section */
.parameters-section {
  background: var(--gray-50);
  padding: var(--space-6);
  border-radius: var(--radius-lg);
  border: 1px solid var(--gray-200);
}

.parameters-section h3 {
  margin: 0 0 var(--space-6) 0;
  color: var(--gray-900);
  font-size: 1.25rem;
  font-weight: 600;
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.form-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  grid-gap: var(--space-4);
  gap: var(--space-4);
  margin-bottom: var(--space-6);
}

.form-group {
  display: flex;
  flex-direction: column;
}

.form-group label {
  margin-bottom: var(--space-2);
  font-weight: 600;
  color: var(--gray-700);
  font-size: var(--font-size-sm);
}

.form-group input,
.form-group select {
  padding: var(--space-3);
  border: 1px solid var(--gray-300);
  border-radius: var(--radius);
  font-size: var(--font-size-sm);
  color: var(--gray-900);
  background-color: var(--change-bg-elevated);
  transition: var(--transition-fast);
}

.form-group input:focus,
.form-group select:focus {
  outline: none;
  border-color: var(--primary-500);
  box-shadow: 0 0 0 3px var(--primary-100);
}

.action-buttons {
  display: flex;
  gap: var(--space-4);
  justify-content: center;
  margin-top: var(--space-6);
}

.action-buttons .btn {
  min-width: 200px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  font-weight: 600;
}

/* Results Section */
.results-section {
  background: linear-gradient(135deg, var(--primary-50), var(--secondary-50));
  padding: var(--space-6);
  border-radius: var(--radius-lg);
  border: 1px solid var(--primary-200);
  max-height: 80vh;
  overflow-y: auto;
}

.results-section h3 {
  margin: 0 0 var(--space-6) 0;
  color: var(--primary-900);
  font-size: 1.25rem;
  font-weight: 600;
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.results-summary {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  grid-gap: var(--space-4);
  gap: var(--space-4);
  margin-bottom: var(--space-6);
}

.stat-card {
  background: var(--change-bg-elevated);
  padding: var(--space-4);
  border-radius: var(--radius-lg);
  text-align: center;
  box-shadow: var(--shadow);
  border: 1px solid var(--gray-200);
  transition: var(--transition);
}

.stat-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-lg);
}

.stat-value {
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--primary-600);
  margin-bottom: var(--space-1);
}

.stat-label {
  font-size: var(--font-size-sm);
  color: var(--gray-600);
  font-weight: 500;
}

.detailed-stats {
  background: var(--change-bg-elevated);
  padding: var(--space-4);
  border-radius: var(--radius-lg);
  border: 1px solid var(--gray-200);
  margin-bottom: var(--space-6);
}

.stat-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--space-2) 0;
  border-bottom: 1px solid var(--gray-100);
  font-size: var(--font-size-sm);
}

.stat-row:last-child {
  border-bottom: none;
}

.stat-row span:first-child {
  color: var(--gray-700);
  font-weight: 500;
}

.stat-row span:last-child {
  color: var(--gray-900);
  font-weight: 600;
}

/* 한국 주식 시장 규칙: 빨강 = 상승, 파랑 = 하락 */
.mass-backtester .positive {
  color: var(--color-positive);
}

.mass-backtester .negative {
  color: var(--color-negative);
}

/* Recommendations */
.recommendations {
  background: var(--change-bg-elevated);
  padding: var(--space-4);
  border-radius: var(--radius-lg);
  border: 1px solid var(--gray-200);
  margin-bottom: var(--space-6);
}

.recommendations h4 {
  margin: 0 0 var(--space-3) 0;
  color: var(--primary-700);
  font-size: var(--font-size-base);
  font-weight: 600;
}

.recommendations ul {
  margin: 0;
  padding-left: var(--space-5);
  list-style: none;
}

.recommendations li {
  margin-bottom: var(--space-2);
  font-size: var(--font-size-sm);
  color: var(--gray-700);
  position: relative;
}

.recommendations li::before {
  content: '•';
  color: var(--primary-500);
  font-weight: bold;
  position: absolute;
  left: -var(--space-4);
}

/* Top Performers */
.top-performers {
  background: var(--change-bg-elevated);
  padding: var(--space-4);
  border-radius: var(--radius-lg);
  border: 1px solid var(--gray-200);
  max-height: 400px;
  overflow-y: auto;
}

.top-performers h4 {
  margin: 0 0 var(--space-4) 0;
  color: var(--primary-700);
  font-size: var(--font-size-base);
  font-weight: 600;
}

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

.performers-table table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--font-size-sm);
}

.performers-table th,
.performers-table td {
  padding: var(--space-3);
  text-align: left;
  border-bottom: 1px solid var(--gray-200);
}

.performers-table th {
  background: var(--gray-50);
  font-weight: 600;
  color: var(--gray-700);
}

.performers-table td {
  color: var(--gray-900);
}

/* Optimization Section */
.optimization-section {
  background: linear-gradient(135deg, var(--secondary-50), var(--primary-50));
  padding: var(--space-6);
  border-radius: var(--radius-lg);
  border: 1px solid var(--secondary-200);
  max-height: 80vh;
  overflow-y: auto;
}

.optimization-section h3 {
  margin: 0 0 var(--space-6) 0;
  color: var(--secondary-900);
  font-size: 1.25rem;
  font-weight: 600;
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.optimization-summary {
  display: flex;
  justify-content: center;
  margin-bottom: var(--space-6);
}

.optimization-summary .stat-card {
  background: linear-gradient(135deg, var(--secondary-600), var(--primary-600));
  color: white;
}

.optimization-summary .stat-value {
  color: white;
}

.optimization-summary .stat-label {
  color: rgba(255, 255, 255, 0.9);
}

.best-params {
  background: var(--change-bg-elevated);
  padding: var(--space-4);
  border-radius: var(--radius-lg);
  border: 1px solid var(--gray-200);
}

.best-params h4 {
  margin: 0 0 var(--space-4) 0;
  color: var(--secondary-700);
  font-size: var(--font-size-base);
  font-weight: 600;
}

.params-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  grid-gap: var(--space-3);
  gap: var(--space-3);
}

.param-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--space-2) var(--space-3);
  background: var(--gray-50);
  border-radius: var(--radius);
  border: 1px solid var(--gray-200);
  font-size: var(--font-size-sm);
}

.param-name {
  color: var(--gray-700);
  font-weight: 500;
  text-transform: capitalize;
}

.param-value {
  color: var(--gray-900);
  font-weight: 600;
}

/* Loading spinner small */
.loading-spinner-small {
  width: 1rem;
  height: 1rem;
  border: 2px solid var(--gray-300);
  border-radius: 50%;
  border-top-color: var(--primary-600);
  animation: spin 1s linear infinite;
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

/* --- Responsive Styles --- */
@media (max-width: 768px) {
  .mass-backtester {
    padding: var(--space-4);
    margin: var(--space-2);
  }

  .mass-backtester-header h2 {
    font-size: var(--font-size-h3);
  }

  .form-grid {
    grid-template-columns: 1fr;
    gap: var(--space-3);
  }

  .action-buttons {
    flex-direction: column;
    gap: var(--space-3);
  }

  .action-buttons .btn {
    min-width: 100%;
  }

  .results-summary {
    grid-template-columns: repeat(2, 1fr);
    gap: var(--space-3);
  }

  .stat-card {
    padding: var(--space-3);
  }

  .stat-value {
    font-size: 1.25rem;
  }

  .params-grid {
    grid-template-columns: 1fr;
  }

  .performers-table {
    font-size: 0.75rem;
  }

  .performers-table th,
  .performers-table td {
    padding: var(--space-2);
  }
}

@media (max-width: 480px) {
  .results-summary {
    grid-template-columns: 1fr;
  }

  .mass-backtester-header h2 {
    font-size: 1.25rem;
  }

  .mass-backtester-header p {
    font-size: var(--font-size-sm);
  }
}
/* 모니터링 & 분석 컴포넌트 스타일 */

.monitoring-analysis {
  padding: 1rem;
  max-width: 1400px;
  margin: 0 auto;
}

.admin-header {
  margin-bottom: 2rem;
  text-align: center;
}

.admin-header h2 {
  margin: 0 0 0.5rem 0;
  color: var(--text-color);
  font-size: 1.75rem;
  font-weight: 700;
}

.admin-header p {
  margin: 0;
  color: var(--text-muted);
  font-size: var(--font-size-base);
}

/* 탭 네비게이션 */
.monitoring-tabs {
  display: flex;
  gap: 0.25rem;
  margin-bottom: 1.5rem;
  border-bottom: 2px solid var(--border-color);
  padding-bottom: 0.5rem;
}

.tab-btn {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.75rem 1rem;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 6px;
  color: var(--text-muted);
  font-size: var(--font-size-sm);
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
  white-space: nowrap;
}

.tab-btn:hover {
  background: var(--bg-secondary);
  color: var(--text-color);
  border-color: var(--border-hover);
}

.tab-btn.active {
  background: linear-gradient(135deg, var(--primary-500) 0%, var(--primary-600) 100%);
  color: white;
  border-color: var(--primary-500);
  box-shadow: 0 2px 4px rgba(var(--primary-500-rgb), 0.3);
}

/* 날짜 선택 */
.date-selector {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 1rem;
  background: var(--bg-secondary);
  border-radius: var(--spacing-sm);
  border: 1px solid var(--border-color);
  margin-bottom: 1.5rem;
}

.date-selector label {
  font-weight: 500;
  color: var(--text-color);
  white-space: nowrap;
}

.date-selector input[type="date"] {
  padding: 0.5rem;
  border: 1px solid var(--border-color);
  border-radius: var(--spacing-xs);
  font-size: var(--font-size-sm);
}

.date-selector .search-btn {
  padding: 0.5rem 1rem;
  background: linear-gradient(135deg, #2196f3 0%, #1976d2 100%);
  color: white;
  border: 2px solid rgba(255, 255, 255, 0.6);
  border-radius: var(--spacing-xs);
  font-size: var(--font-size-sm);
  font-weight: 500;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
  transition: background 0.2s ease;
}

.date-selector .search-btn:hover:not(:disabled) {
  background: var(--primary-hover);
}

.date-selector .search-btn:disabled {
  background: var(--border-color);
  cursor: not-allowed;
  opacity: 0.6;
}

.date-selector .search-btn i {
  font-size: 0.9em;
}

/* 섹션 스타일 */
.admin-section {
  margin-bottom: 2.5rem;
}

.section-title {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 1.5rem;
  color: var(--text-color);
  font-size: 1.25rem;
  font-weight: 600;
  padding-bottom: 0.5rem;
  border-bottom: 2px solid var(--border-color);
}

/* 배치 상태 그리드 */
.batch-status-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  grid-gap: 1.5rem;
  gap: 1.5rem;
  margin-bottom: 2rem;
}

.batch-card {
  background: var(--card-bg-color);
  border: 1px solid var(--border-color);
  border-radius: var(--radius);
  overflow: hidden;
  transition: all 0.2s ease;
}

.batch-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}

.batch-card.success {
  border-left: 4px solid var(--green-500);
}

.batch-card.running {
  border-left: 4px solid var(--primary-600);
}

.batch-card.error {
  border-left: 4px solid var(--red-500);
}

.batch-card.pending {
  border-left: 4px solid var(--yellow-500);
}

.batch-header {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 1rem;
  background: var(--bg-secondary);
  border-bottom: 1px solid var(--border-color);
}

.batch-icon {
  font-size: var(--font-size-h3);
}

.batch-header h4 {
  flex: 1 1;
  margin: 0;
  color: var(--text-color);
  font-size: var(--font-size-base);
  font-weight: 600;
}

.batch-status {
  padding: 0.25rem 0.5rem;
  border-radius: var(--spacing-xs);
  font-size: 0.75rem;
  font-weight: 500;
  text-transform: uppercase;
  background: var(--bg-secondary);
  color: var(--text-muted);
}

.batch-details {
  padding: 1rem;
}

.detail-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.5rem 0;
  border-bottom: 1px solid var(--border-color);
}

.detail-row:last-child {
  border-bottom: none;
}

.detail-row .label {
  color: var(--text-secondary);
  font-size: var(--font-size-sm);
}

.detail-row .value {
  color: var(--text-color);
  font-weight: 500;
}

.error-details {
  margin-top: 0.5rem;
  padding: 0.5rem;
  background: #fee2e2;
  border: 1px solid #fecaca;
  border-radius: var(--spacing-xs);
  font-size: var(--font-size-sm);
  color: var(--red-600);
}

/* 통계 섹션 */
.stats-section {
  margin-top: 2rem;
}

.stats-section h4 {
  margin-bottom: 1rem;
  color: var(--text-color);
  font-size: 1.1rem;
  font-weight: 600;
}

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

.stat-card {
  background: var(--card-bg-color);
  border: 1px solid var(--border-color);
  border-radius: var(--spacing-sm);
  padding: 1rem;
}

.stat-card h5 {
  margin: 0 0 0.5rem 0;
  color: var(--text-color);
  font-size: 0.9rem;
  font-weight: 600;
}

.stat-details {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

.stat-details div {
  font-size: var(--font-size-sm);
  color: var(--text-secondary);
}

/* RS 검증 스타일 */
.filter-options {
  display: flex;
  gap: 1rem;
  margin-bottom: 1.5rem;
  padding: 1rem;
  background: var(--bg-secondary);
  border-radius: var(--spacing-sm);
  border: 1px solid var(--border-color);
}

.filter-group {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.filter-group label {
  font-weight: 500;
  color: var(--text-color);
  white-space: nowrap;
}

.filter-group select {
  padding: 0.5rem;
  border: 1px solid var(--border-color);
  border-radius: var(--spacing-xs);
  font-size: var(--font-size-sm);
}

.validation-summary {
  margin-bottom: 2rem;
}

.summary-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  grid-gap: 1rem;
  gap: 1rem;
}

.summary-card {
  background: var(--card-bg-color);
  border: 1px solid var(--border-color);
  border-radius: var(--spacing-sm);
  padding: 1rem;
  text-align: center;
}

.summary-card h4 {
  margin: 0 0 0.5rem 0;
  color: var(--text-color);
  font-size: 0.9rem;
  font-weight: 600;
}

.summary-value {
  font-size: var(--font-size-h3);
  font-weight: 700;
  color: var(--primary-color);
}

/* 테이블 스타일 */
.stocks-table-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  margin-top: 1rem;
}

.stocks-table,
.history-table {
  border: 1px solid var(--border-color);
  border-radius: var(--spacing-sm);
  overflow: hidden;
  min-width: 700px;
}

.table-header,
.history-header {
  display: grid;
  grid-template-columns: 2fr 1.2fr 0.8fr 1fr 1fr 1fr 1fr;
  padding: 0.75rem;
  background: var(--bg-secondary);
  font-weight: 600;
  font-size: 0.8rem;
  color: var(--text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.table-header.with-streak,
.table-row.with-streak {
  grid-template-columns: 2fr 1.2fr 0.8fr 1fr 1fr 0.8fr 0.8fr 1fr 1fr;
}

.table-row,
.history-row {
  display: grid;
  grid-template-columns: 2fr 1.2fr 0.8fr 1fr 1fr 1fr 1fr;
  padding: 0.75rem;
  border-top: 1px solid var(--border-color);
  align-items: center;
  transition: background-color 0.2s ease;
}

/* 시장 필터 & 정렬 셀렉트 */
.market-filter-select,
.sort-mode-select {
  padding: 0.5rem;
  border: 1px solid var(--border-color);
  border-radius: var(--spacing-xs);
  font-size: var(--font-size-sm);
  background: var(--card-bg-color);
  color: var(--text-color);
  cursor: pointer;
}

/* 시장 뱃지 */
.market-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.5px;
}

.market-badge.kospi {
  background: rgba(59, 130, 246, 0.1);
  color: #2563eb;
}

.market-badge.kosdaq {
  background: rgba(168, 85, 247, 0.1);
  color: #7c3aed;
}

/* Streak 뱃지 */
.streak-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 6px;
  font-size: 12px;
  font-weight: 700;
  color: var(--text-secondary);
  background: var(--bg-secondary);
}

.streak-badge.warm {
  color: #f59e0b;
  background: rgba(245, 158, 11, 0.1);
}

.streak-badge.hot {
  color: #ef4444;
  background: rgba(239, 68, 68, 0.08);
}

.table-row:hover,
.history-row:hover {
  background-color: var(--bg-hover);
}

.table-row.clickable {
  cursor: pointer;
}

.table-row.clickable:hover {
  background-color: #e0f2fe;
  box-shadow: 0 2px 8px rgba(59, 130, 246, 0.1);
}

.stock-name,
.deploy-time {
  font-weight: 500;
  color: var(--text-color);
}

.stock-code,
.version {
  font-family: monospace;
  color: var(--text-secondary);
}

.rs-score {
  font-weight: 700;
  text-align: center;
}

.market,
.industry,
.notes {
  color: var(--text-secondary);
  font-size: var(--font-size-sm);
}

.status {
  display: flex;
  align-items: center;
  gap: 0.25rem;
  font-weight: 500;
}

.status.status-success {
  color: var(--green-500);
}

.status.status-error {
  color: var(--red-500);
}

.status.status-running {
  color: var(--primary-600);
}

.status.status-pending {
  color: var(--yellow-500);
}

.load-more {
  text-align: center;
  padding: 1rem;
}

/* 배포 상태 스타일 */
.deployment-status {
  margin-bottom: 2rem;
}

.status-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  grid-gap: 1rem;
  gap: 1rem;
}

.status-card {
  background: var(--card-bg-color);
  border: 1px solid var(--border-color);
  border-radius: var(--spacing-sm);
  padding: 1rem;
  text-align: center;
}

.status-card h4 {
  margin: 0 0 0.5rem 0;
  color: var(--text-color);
  font-size: 0.9rem;
  font-weight: 600;
}

.status-value {
  font-size: 1.2rem;
  font-weight: 600;
  color: var(--text-color);
}

.deployment-history {
  margin-top: 2rem;
}

.deployment-history h4 {
  margin-bottom: 1rem;
  color: var(--text-color);
  font-size: 1.1rem;
  font-weight: 600;
}

/* 공통 스타일 */


.no-data {
  text-align: center;
  padding: 3rem 2rem;
  color: var(--text-secondary);
  font-size: var(--font-size-base);
  background: var(--bg-secondary);
  border-radius: var(--spacing-sm);
  margin: 1rem 0;
}

.no-data i {
  font-size: 2rem;
  display: block;
  margin-bottom: 1rem;
  color: var(--primary-400);
}

.admin-message {
  padding: 1rem;
  margin-bottom: 1.5rem;
  border-radius: var(--spacing-sm);
  font-weight: 500;
  border-left: 4px solid;
}

.admin-message.error {
  background-color: #fee2e2;
  color: var(--red-600);
  border-left-color: var(--red-500);
}

.admin-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.5rem 1rem;
  border: none;
  border-radius: 6px;
  font-size: var(--font-size-sm);
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
  text-decoration: none;
  gap: 0.5rem;
}

.admin-button:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}

.admin-button.primary {
  background-color: var(--primary-color);
  color: white;
}

.admin-button.primary:hover:not(:disabled) {
  background-color: var(--primary-hover);
}

/* RS 검증 서브탭 스타일 */
.rs-validation-subtabs {
  display: flex;
  gap: 0.5rem;
  margin-bottom: 2rem;
  padding-bottom: 1rem;
  border-bottom: 2px solid var(--border-color);
}

.subtab-btn {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.75rem 1.5rem;
  background: linear-gradient(135deg, var(--bg-secondary) 0%, #f3f4f6 100%);
  border: 2px solid var(--border-color);
  border-radius: 8px;
  color: var(--text-secondary);
  font-size: var(--font-size-sm);
  font-weight: 600;
  cursor: pointer;
  transition: all 0.3s ease;
  position: relative;
  overflow: hidden;
}

.subtab-btn::before {
  content: '';
  position: absolute;
  top: 0;
  left: -100%;
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(59, 130, 246, 0.1), transparent);
  transition: left 0.5s ease;
}

.subtab-btn:hover::before {
  left: 100%;
}

.subtab-btn:hover {
  background: linear-gradient(135deg, #e0f2fe 0%, #bfdbfe 100%);
  color: var(--primary-600);
  border-color: var(--primary-400);
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(59, 130, 246, 0.2);
}

.subtab-btn.active {
  background: linear-gradient(135deg, var(--primary-500) 0%, var(--primary-600) 100%);
  color: white;
  border-color: var(--primary-600);
  box-shadow: 0 4px 16px rgba(59, 130, 246, 0.4);
}

.subtab-btn.active:hover {
  background: linear-gradient(135deg, var(--primary-600) 0%, var(--primary-700) 100%);
  transform: translateY(-2px);
}

.subtab-btn i {
  font-size: 1.1rem;
  transition: transform 0.3s ease;
}

.subtab-btn.active i {
  transform: scale(1.1);
}

/* 백테스팅 패널 스타일 */
.backtesting-panel {
  padding: 1.5rem 0;
}

.panel-description {
  margin-bottom: 1.5rem;
  padding: 1rem;
  background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%);
  border-left: 4px solid var(--primary-500);
  border-radius: 6px;
}

.validation-table-section {
  margin-top: 2rem;
}

.validation-table-section h4 {
  margin-bottom: 1rem;
  color: var(--text-color);
  font-size: 1.1rem;
  font-weight: 600;
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.validation-table-section h4 i {
  color: var(--primary-500);
}

/* Font Awesome 아이콘 스타일링 */
.fas,
.far,
.fab {
  margin-right: 0.25rem;
}

.summary-card h4 i {
  color: var(--primary-500);
  margin-right: 0.5rem;
}

.section-title i {
  color: var(--primary-600);
  margin-right: 0.5rem;
}

.fa-spinner {
  animation: spin 1s linear infinite;
}

@keyframes spin {
  from {
    transform: rotate(0deg);
  }

  to {
    transform: rotate(360deg);
  }
}

/* 종목 자동완성 */
.stock-autocomplete {
  position: relative;
  display: inline-block;
}

.stock-autocomplete input {
  padding: 0.5rem;
  padding-right: 1.8rem;
  border: 1px solid var(--border-color);
  border-radius: var(--spacing-xs);
  font-size: var(--font-size-sm);
}

.autocomplete-clear {
  position: absolute;
  right: 4px;
  top: 50%;
  transform: translateY(-50%);
  background: none;
  border: none;
  font-size: 1.1rem;
  color: var(--text-muted);
  cursor: pointer;
  padding: 0 4px;
  line-height: 1;
}

.autocomplete-clear:hover {
  color: var(--text-color);
}

.autocomplete-dropdown {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 100;
  background: #fff;
  background: var(--bg-primary, #fff);
  border: 1px solid var(--border-color);
  border-radius: 0 0 6px 6px;
  max-height: 240px;
  overflow-y: auto;
  list-style: none;
  margin: 0;
  padding: 0;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

.autocomplete-dropdown li {
  display: flex;
  justify-content: space-between;
  padding: 0.5rem 0.75rem;
  cursor: pointer;
  font-size: var(--font-size-sm);
}

.autocomplete-dropdown li:hover {
  background: #f5f5f5;
  background: var(--bg-secondary, #f5f5f5);
}

.suggest-name {
  font-weight: 500;
}

.suggest-code {
  color: var(--text-muted);
  font-size: 0.85em;
}

/* 반응형 디자인 */
@media (max-width: 768px) {

  .batch-status-grid,
  .stats-grid,
  .summary-cards,
  .status-cards {
    grid-template-columns: 1fr;
  }

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

  .tab-btn {
    width: 100%;
    justify-content: center;
  }

  .table-header,
  .table-row,
  .history-header,
  .history-row {
    grid-template-columns: 1fr;
    gap: 0.5rem;
  }

  .table-header,
  .history-header {
    display: none;
  }

  .table-row,
  .history-row {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    text-align: left;
    padding: 1rem;
  }

  .date-selector,
  .filter-options {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.5rem;
  }
}

@media (max-width: 480px) {
  .admin-header h2 {
    font-size: var(--font-size-h3);
  }

  .tab-btn {
    font-size: 0.8rem;
    padding: 0.6rem 0.8rem;
  }

  .section-title {
    font-size: 1.125rem;
  }
}
/* RS Detail Modal Overlay */
.rs-detail-modal-overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.7);
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 1000;
  padding: 20px;
  overflow-y: auto;
}

/* RS Detail Modal Container */
.rs-detail-modal {
  background: linear-gradient(135deg, var(--change-card-bg) 0%, #f8f9fa 100%);
  border-radius: 16px;
  max-width: 900px;
  width: 100%;
  max-height: 90vh;
  overflow-y: auto;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
  animation: modalSlideIn 0.3s ease-out;
}

@keyframes modalSlideIn {
  from {
    opacity: 0;
    transform: translateY(-20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Modal Header */
.rs-modal-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  padding: 24px 28px;
  border-bottom: 2px solid #e9ecef;
  background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
  color: white;
  border-radius: 16px 16px 0 0;
}

.rs-modal-title {
  font-size: 24px;
  font-weight: 700;
  margin: 0;
  color: white;
}

.rs-modal-subtitle {
  font-size: 14px;
  color: rgba(255, 255, 255, 0.9);
  margin: 4px 0 0 0;
}

/* Header Actions */
.rs-header-actions {
  display: flex;
  gap: 12px;
  align-items: center;
}

.rs-btn-chart-header {
  background: rgba(255, 255, 255, 0.15);
  border: none;
  color: white;
  width: 36px;
  height: 36px;
  border-radius: 8px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s;
  font-size: 18px;
}

.rs-btn-chart-header:hover {
  background: rgba(255, 255, 255, 0.25);
  transform: translateY(-2px);
}

.rs-modal-close {
  background: rgba(255, 255, 255, 0.2);
  border: none;
  color: white;
  width: 36px;
  height: 36px;
  border-radius: 8px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s;
  font-size: 20px;
}

.rs-modal-close:hover {
  background: rgba(255, 255, 255, 0.3);
  transform: scale(1.1);
}

/* Modal Body */
.rs-modal-body {
  padding: 24px 28px;
}

/* Summary Section */
.rs-summary-section {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  grid-gap: 16px;
  gap: 16px;
  margin-bottom: 28px;
}

.rs-summary-card {
  background: var(--change-bg-elevated);
  border: 2px solid #e9ecef;
  border-radius: 12px;
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  transition: all 0.2s;
}

.rs-summary-card:hover {
  border-color: #3b82f6;
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(59, 130, 246, 0.15);
}

.rs-summary-card.primary {
  background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
  border-color: #2563eb;
  color: white;
}

.rs-summary-label {
  font-size: 13px;
  color: #6b7280;
  font-weight: 500;
}

.rs-summary-card.primary .rs-summary-label {
  color: rgba(255, 255, 255, 0.9);
}

.rs-summary-value {
  font-size: 20px;
  font-weight: 700;
  color: #1f2937;
}

.rs-summary-card.primary .rs-summary-value {
  color: white;
}

/* Calculation Section */
.rs-calculation-section {
  margin-bottom: 28px;
}

.rs-section-title {
  font-size: 18px;
  font-weight: 700;
  color: #1f2937;
  margin: 0 0 12px 0;
  padding-bottom: 8px;
  border-bottom: 2px solid #e9ecef;
}

.rs-formula-desc {
  font-size: 14px;
  color: #6b7280;
  background: #f3f4f6;
  padding: 12px 16px;
  border-radius: 8px;
  margin: 12px 0;
  font-family: 'Courier New', monospace;
  border-left: 4px solid #3b82f6;
}

/* Period Calculations */
.rs-period-calculations {
  display: grid;
  grid-gap: 16px;
  gap: 16px;
  margin-top: 16px;
}

.rs-period-card {
  background: var(--change-bg-elevated);
  border: 2px solid #e9ecef;
  border-radius: 12px;
  padding: 16px;
  transition: all 0.2s;
}

.rs-period-card:hover {
  border-color: #3b82f6;
  box-shadow: 0 4px 12px rgba(59, 130, 246, 0.1);
}

.rs-period-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 12px;
  padding-bottom: 12px;
  border-bottom: 1px solid #e9ecef;
}

.rs-period-badge {
  background: linear-gradient(135deg, #10b981 0%, #059669 100%);
  color: white;
  padding: 6px 14px;
  border-radius: 20px;
  font-size: 13px;
  font-weight: 600;
}

.rs-period-result {
  font-size: 24px;
  font-weight: 700;
  color: #3b82f6;
}

/* Formula Detail */
.rs-formula-detail {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.rs-formula-line {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 8px 12px;
  background: var(--change-gray-50);
  border-radius: 6px;
  font-size: 14px;
}

.rs-formula-line.calculation {
  background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);
  border-left: 4px solid #3b82f6;
  font-weight: 600;
  margin-top: 4px;
}

.rs-label {
  color: #6b7280;
  font-weight: 500;
}

.rs-value {
  font-family: 'Courier New', monospace;
  font-weight: 600;
  color: #1f2937;
}

.rs-value.stock {
  color: #10b981;
}

.rs-value.market {
  color: #f59e0b;
}

/* Final Section */
.rs-final-section {
  background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%);
  border: 2px solid #3b82f6;
  border-radius: 12px;
  padding: 20px;
  margin-bottom: 28px;
}

.rs-weighted-calculation {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-top: 16px;
}

.rs-weighted-step {
  background: var(--change-bg-elevated);
  padding: 12px 16px;
  border-radius: 8px;
  border-left: 4px solid #3b82f6;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.rs-weighted-step.final {
  background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
  color: white;
  border-left: 4px solid #1e40af;
}

.rs-step-label {
  font-size: 13px;
  font-weight: 600;
  color: #6b7280;
}

.rs-weighted-step.final .rs-step-label {
  color: rgba(255, 255, 255, 0.9);
}

.rs-step-value {
  font-family: 'Courier New', monospace;
  font-size: 13px;
  color: #1f2937;
  line-height: 1.6;
}

.rs-weighted-step.final .rs-step-value {
  color: white;
  font-size: 14px;
}

.rs-step-value.highlight {
  font-size: 16px;
  font-weight: 700;
}

/* Help Section */
.rs-help-section {
  background: var(--change-bg-warning);
  border: 2px solid #fbbf24;
  border-radius: 12px;
  padding: 20px;
}

.rs-help-list {
  margin: 12px 0 0 0;
  padding-left: 20px;
  list-style: none;
}

.rs-help-list li {
  padding: 8px 0;
  color: #92400e;
  position: relative;
}

.rs-help-list li::before {
  content: "▸";
  position: absolute;
  left: -20px;
  color: #f59e0b;
  font-weight: bold;
}

/* Modal Footer */
.rs-modal-footer {
  padding: 20px 28px;
  border-top: 2px solid #e9ecef;
  display: flex;
  justify-content: flex-end;
  background: var(--change-gray-50);
  border-radius: 0 0 16px 16px;
}

.rs-btn-close {
  background: linear-gradient(135deg, #6b7280 0%, #4b5563 100%);
  color: white;
  border: none;
  padding: 12px 28px;
  border-radius: 8px;
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s;
}

.rs-btn-close:hover {
  background: linear-gradient(135deg, #4b5563 0%, #374151 100%);
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

/* Responsive Design */
@media (max-width: 768px) {
  .rs-detail-modal {
    max-width: 100%;
    margin: 10px;
    max-height: 95vh;
  }

  .rs-modal-header {
    padding: 20px;
  }

  .rs-modal-body {
    padding: 20px;
  }

  .rs-modal-title {
    font-size: 20px;
  }

  .rs-summary-section {
    grid-template-columns: 1fr;
  }

  .rs-period-header {
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
  }

  .rs-formula-line {
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
  }

  .rs-weighted-step {
    padding: 12px;
  }

  .rs-step-value {
    font-size: 12px;
  }
}

/* Scrollbar Styling */
.rs-detail-modal::-webkit-scrollbar {
  width: 8px;
}

.rs-detail-modal::-webkit-scrollbar-track {
  background: #f1f1f1;
  border-radius: 10px;
}

.rs-detail-modal::-webkit-scrollbar-thumb {
  background: #3b82f6;
  border-radius: 10px;
}

.rs-detail-modal::-webkit-scrollbar-thumb:hover {
  background: #2563eb;
}

.statistics-container {
  padding: 20px;
  max-width: 1400px;
  margin: 0 auto;
  background: #f8fafc;
  min-height: 100vh;
}

.statistics-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 30px;
  padding: 20px;
  background: var(--change-bg-elevated);
  border-radius: var(--radius);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.statistics-header h2 {
  color: #1e293b;
  margin: 0;
  font-size: 28px;
  font-weight: 700;
}

.time-range-selector {
  display: flex;
  gap: var(--spacing-sm);
}

.time-btn {
  padding: var(--spacing-sm) 16px;
  border: 2px solid #e2e8f0;
  background: var(--change-bg-elevated);
  border-radius: var(--spacing-sm);
  cursor: pointer;
  font-weight: 600;
  transition: all 0.2s ease;
  color: #64748b;
}

.time-btn:hover {
  border-color: var(--primary-600);
  color: var(--primary-600);
}

.time-btn.active {
  background: var(--primary-600);
  border-color: var(--primary-600);
  color: white;
}

/* 통계 그리드 */
.stats-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  grid-gap: 20px;
  gap: 20px;
  margin-bottom: 30px;
}

.stat-card {
  background: var(--change-bg-elevated);
  padding: var(--spacing-lg);
  border-radius: var(--radius);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  transition: transform 0.2s ease;
}

.stat-card:hover {
  transform: translateY(-2px);
}

.stat-card h3 {
  color: #64748b;
  font-size: 14px;
  font-weight: 600;
  margin: 0 0 12px 0;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.stat-value {
  font-size: 32px;
  font-weight: 700;
  color: #1e293b;
  margin-bottom: 8px;
}

/* 한국 주식 시장 규칙: 빨강 = 상승, 파랑 = 하락 */
.stat-value.positive {
  color: var(--color-positive); /* 빨강 - 상승 */
}

.stat-value.negative {
  color: var(--color-negative); /* 파랑 - 하락 */
}

.stat-detail {
  color: #64748b;
  font-size: 14px;
}

/* 차트 및 테이블 섹션 */
.chart-section,
.stocks-section,
.positions-section,
.monthly-section {
  background: var(--change-bg-elevated);
  padding: var(--spacing-lg);
  border-radius: var(--radius);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  margin-bottom: 20px;
}

.chart-section h3,
.stocks-section h3,
.positions-section h3,
.monthly-section h3 {
  color: #1e293b;
  font-size: 20px;
  font-weight: 700;
  margin: 0 0 20px 0;
}

/* 일별 통계 */
.daily-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  max-height: 300px;
  overflow-y: auto;
}

.daily-stat-item {
  display: flex;
  flex-direction: column;
  padding: 12px;
  background: #f8fafc;
  border-radius: var(--spacing-sm);
  min-width: 120px;
  text-align: center;
}

.daily-stat-item .date {
  font-size: 12px;
  color: #64748b;
  margin-bottom: 4px;
}

.daily-stat-item .trades {
  font-weight: 600;
  color: #1e293b;
  margin-bottom: 4px;
}

.daily-stat-item .profit {
  font-weight: 700;
  font-size: 14px;
}

/* 테이블 스타일 */
.stocks-table,
.positions-table {
  width: 100%;
}

.table-header,
.table-row {
  display: grid;
  grid-template-columns: 80px 120px 80px 120px 80px;
  grid-gap: var(--spacing-md);
  gap: var(--spacing-md);
  padding: 12px 0;
  align-items: center;
}

.positions-table .table-header,
.positions-table .table-row {
  grid-template-columns: 80px 120px 60px 80px 80px 60px 80px 80px;
}

.table-header {
  font-weight: 700;
  color: #374151;
  border-bottom: 2px solid #e5e7eb;
  background: var(--change-gray-50);
  padding: var(--spacing-md) 0;
}

.table-row {
  border-bottom: 1px solid #e5e7eb;
  transition: background-color 0.2s ease;
}

.table-row:hover {
  background: #f8fafc;
}

.table-row span {
  font-size: 14px;
  color: #374151;
}

/* 월별 통계 */
.monthly-stats {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  grid-gap: var(--spacing-md);
  gap: var(--spacing-md);
}

.monthly-stat-item {
  background: #f8fafc;
  padding: var(--spacing-md);
  border-radius: var(--spacing-sm);
  text-align: center;
}

.monthly-stat-item .month {
  font-weight: 700;
  color: #1e293b;
  margin-bottom: 8px;
  font-size: 16px;
}

.monthly-stat-item .trades {
  color: #64748b;
  font-size: 14px;
  margin-bottom: 4px;
}

.monthly-stat-item .profit {
  font-weight: 700;
  font-size: 18px;
  margin-bottom: 4px;
}

.monthly-stat-item .profit-rate {
  font-size: 14px;
  font-weight: 600;
}

/* 한국 주식 시장 규칙: 빨강 = 상승, 파랑 = 하락 */
.toss-mobile-container .positive {
  color: var(--color-positive);
}

.toss-mobile-container .negative {
  color: var(--color-negative);
}

/* 로딩 및 에러 상태 */
.loading-message,
.error-message {
  text-align: center;
  padding: 40px;
  color: #64748b;
  font-size: 16px;
}

.error-message {
  color: var(--red-500);
  background: #fef2f2;
  border: 1px solid #fecaca;
  border-radius: var(--spacing-sm);
}

/* 반응형 디자인 */
@media (max-width: 768px) {
  .statistics-container {
    padding: 10px;
  }
  
  .statistics-header {
    flex-direction: column;
    gap: var(--spacing-md);
  }
  
  .stats-grid {
    grid-template-columns: 1fr;
  }
  
  .table-header,
  .table-row {
    grid-template-columns: repeat(5, 1fr);
    gap: var(--spacing-sm);
    font-size: 12px;
  }
  
  .positions-table .table-header,
  .positions-table .table-row {
    grid-template-columns: repeat(4, 1fr);
  }
  
  .daily-stats {
    justify-content: center;
  }
  
  .monthly-stats {
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  }
}

@media (max-width: 480px) {
  .time-range-selector {
    flex-wrap: wrap;
  }
  
  .stat-value {
    font-size: 24px;
  }
  
  .table-header,
  .table-row {
    grid-template-columns: repeat(3, 1fr);
  }
  
  .positions-table .table-header,
  .positions-table .table-row {
    grid-template-columns: repeat(3, 1fr);
  }
}
/* SystemSettingsTab.css - Clean & Simple */

.system-settings-tab {
    width: 100%;
}

.tab-title {
    font-size: 24px;
    font-weight: 700;
    color: #111827;
    margin-bottom: 24px;
    letter-spacing: -0.02em;
}

.settings-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
    grid-gap: 24px;
    gap: 24px;
}

.setting-card {
    background: var(--change-bg-elevated);
    border-radius: 16px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
    border: 1px solid rgba(0, 0, 0, 0.02);
    padding: 24px;
    display: flex;
    flex-direction: column;
    height: 100%;
}

.setting-card.full-width {
    grid-column: 1 / -1;
}

.card-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
    padding-bottom: 16px;
    border-bottom: 1px solid #f3f4f6;
}

.card-header h3 {
    font-size: 16px;
    font-weight: 600;
    color: #111827;
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0;
}

.card-header .icon {
    color: #9ca3af;
    width: 20px;
    height: 20px;
}

.card-body {
    flex: 1 1;
}

.card-body.p-0 {
    padding: 0;
}

/* Status Row Style */
.status-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 16px;
    padding: 16px;
    background-color: var(--change-gray-50);
    border-radius: 12px;
}

.status-row .label {
    font-weight: 500;
    color: #4b5563;
}

/* Data Info Row */
.data-status-info {
    margin-top: 16px;
    background-color: var(--change-bg-elevated);
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    padding: 16px;
}

.info-row {
    display: flex;
    justify-content: space-between;
    padding: 8px 0;
    font-size: 14px;
}

.info-row span {
    color: #6b7280;
}

.info-row strong {
    color: #111827;
    font-weight: 600;
}

/* Buttons - Clean Style */
.action-btn {
    padding: 8px 16px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
    border: none;
    transition: all 0.2s;
}

.action-btn.primary {
    background-color: #4f46e5;
    color: white;
}

.action-btn.primary:hover {
    background-color: #4338ca;
    transform: translateY(-1px);
}

.action-btn.secondary {
    background-color: var(--change-bg-elevated);
    color: #4b5563;
    border: 1px solid #e5e7eb;
}

.action-btn.secondary:hover {
    background-color: var(--change-gray-50);
    border-color: #d1d5db;
}

.delete-btn {
    padding: 6px 12px;
    border-radius: 6px;
    border: 1px solid #fee2e2;
    background-color: #fef2f2;
    color: #ef4444;
    font-size: 12px;
    font-weight: 500;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 4px;
    transition: all 0.2s;
}

.delete-btn:hover {
    background-color: #fee2e2;
}

/* Badges - Pill Style */
.status-badge {
    padding: 4px 12px;
    border-radius: 9999px;
    font-size: 12px;
    font-weight: 600;
}

.status-badge.running {
    background-color: #dcfce7;
    color: #166534;
}

.status-badge.stopped {
    background-color: #f3f4f6;
    color: #4b5563;
}

.role-badge {
    padding: 2px 10px;
    border-radius: 9999px;
    font-size: 11px;
    font-weight: 600;
}

.role-badge.admin {
    background-color: #e0e7ff;
    color: #4338ca;
}

.role-badge.user {
    background-color: #f3f4f6;
    color: #4b5563;
}

/* Toggle Switch - iOS Style */
.toggle-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 16px 0;
    border-bottom: 1px solid #f3f4f6;
}

.toggle-row:last-child {
    border-bottom: none;
}

.toggle-info h4 {
    font-size: 14px;
    font-weight: 600;
    margin: 0 0 4px 0;
    color: #374151;
}

.toggle-info p {
    font-size: 12px;
    color: #9ca3af;
    margin: 0;
}

.toggle-switch {
    position: relative;
    display: inline-block;
    width: 44px;
    height: 24px;
}

.toggle-switch input {
    opacity: 0;
    width: 0;
    height: 0;
}

.slider {
    position: absolute;
    cursor: pointer;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: #e5e7eb;
    transition: .3s;
    border-radius: 24px;
}

.slider:before {
    position: absolute;
    content: "";
    height: 20px;
    width: 20px;
    left: 2px;
    bottom: 2px;
    background-color: var(--change-bg-elevated);
    transition: .3s;
    border-radius: 50%;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
}

input:checked+.slider {
    background-color: #4f46e5;
}

input:checked+.slider:before {
    transform: translateX(20px);
}

/* Users Table */
.users-table-container {
    overflow-x: auto;
}

.users-table {
    width: 100%;
    border-collapse: collapse;
}

.users-table th {
    text-align: left;
    padding: 16px;
    font-size: 12px;
    font-weight: 600;
    color: #6b7280;
    text-transform: uppercase;
    background-color: var(--change-gray-50);
    border-bottom: 1px solid #e5e7eb;
}

.users-table td {
    padding: 16px;
    font-size: 14px;
    color: #374151;
    border-bottom: 1px solid #f3f4f6;
}

.users-table tr:last-child td {
    border-bottom: none;
}

/* Toast */
.toast-message {
    position: fixed;
    bottom: 24px;
    right: 24px;
    padding: 12px 20px;
    border-radius: 12px;
    background: var(--change-bg-elevated);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 14px;
    font-weight: 500;
    z-index: 1000;
    animation: slideIn 0.3s ease;
}

.toast-message.success {
    border-left: 4px solid #10b981;
    color: #065f46;
}

.toast-message.error {
    border-left: 4px solid #ef4444;
    color: #991b1b;
}

@keyframes slideIn {
    from {
        transform: translateY(20px);
        opacity: 0;
    }

    to {
        transform: translateY(0);
        opacity: 1;
    }
}
/* ManualOperationsTab.css - Clean & Simple */

.manual-operations-tab {
    width: 100%;
}

.batch-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    grid-gap: 16px;
    gap: 16px;
}

.batch-item {
    background: var(--change-bg-elevated);
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    padding: 20px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    transition: all 0.2s;
}

.batch-item:hover {
    border-color: #4f46e5;
    box-shadow: 0 4px 12px rgba(79, 70, 229, 0.05);
    transform: translateY(-2px);
}

.batch-info h4 {
    font-size: 15px;
    font-weight: 600;
    color: #111827;
    margin: 0 0 6px 0;
}

.batch-info p {
    font-size: 13px;
    color: #6b7280;
    margin: 0 0 20px 0;
    line-height: 1.4;
}

/* Execute Button */
.execute-btn {
    width: 100%;
    padding: 10px;
    border-radius: 8px;
    border: none;
    background-color: #f3f4f6;
    color: #374151;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    transition: all 0.2s;
}

.execute-btn:hover:not(:disabled) {
    background-color: #4f46e5;
    color: white;
}

.execute-btn:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

.execute-btn.loading {
    background-color: #e0e7ff;
    color: #4f46e5;
}

/* Spinner */
.spinner {
    width: 16px;
    height: 16px;
    border: 2px solid #4f46e5;
    border-top-color: transparent;
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
}

@keyframes spin {
    to {
        transform: rotate(360deg);
    }
}

/* Date Input Card */
.date-card .card-body {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
}

.date-label {
    display: flex;
    align-items: center;
    gap: 8px;
    font-weight: 600;
    color: #374151;
}

.date-label .icon {
    color: #6366f1;
}

.date-input {
    padding: 10px 16px;
    border: 1px solid #d1d5db;
    /* Gray 300 */
    border-radius: 8px;
    font-family: inherit;
    font-size: 14px;
    color: #111827;
    outline: none;
    transition: border-color 0.2s;
}

.date-input:focus {
    border-color: #4f46e5;
    box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1);
}

.date-desc {
    font-size: 13px;
    color: #9ca3af;
    margin: 0;
}

/* Users Table Repurposed for History */
.users-table .status-dot {
    display: inline-block;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    margin-right: 6px;
    vertical-align: middle;
}

.status-dot.completed {
    background-color: #10b981;
}

.status-dot.failed {
    background-color: #ef4444;
}

.status-dot.running {
    background-color: #3b82f6;
}

@media (max-width: 640px) {
    .date-card .card-body {
        flex-direction: column;
        align-items: flex-start;
    }
}
/* MonitoringAnalysisTab.css - Clean & Simple */

.monitoring-header-actions {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 16px;
    margin-bottom: 24px;
}

.auto-refresh-toggle {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: #6b7280;
    cursor: pointer;
}

.btn-refresh {
    display: flex;
    align-items: center;
    padding: 8px 12px;
    background: var(--change-bg-elevated);
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    color: #374151;
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.2s;
}

.btn-refresh:hover {
    background: var(--change-gray-50);
    border-color: #d1d5db;
}

.last-update {
    font-size: 12px;
    color: #9ca3af;
}

/* Batch Pipeline */
.batch-pipeline {
    background: var(--change-bg-elevated);
    border-radius: 16px;
    padding: 24px;
    margin-bottom: 24px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
    border: 1px solid rgba(0, 0, 0, 0.02);
}

.batch-pipeline h3 {
    font-size: 16px;
    font-weight: 600;
    color: #111827;
    margin-bottom: 24px;
    display: flex;
    align-items: center;
}

/* Pipeline Flow */
.pipeline-flow {
    display: flex;
    align-items: center;
    justify-content: space-between;
    /* Spread out */
    gap: 8px;
    overflow-x: auto;
    padding-bottom: 16px;
}

.pipeline-node {
    flex: 1 1;
    min-width: 140px;
    background: var(--change-gray-50);
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 12px;
    transition: all 0.2s ease;
    position: relative;
}

.pipeline-node:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
}

.pipeline-node.success {
    border-color: #86efac;
    background-color: #f0fdf4;
}

.pipeline-node.running {
    border-color: #93c5fd;
    background-color: #eff6ff;
}

.pipeline-node.failed {
    border-color: #fca5a5;
    background-color: #fef2f2;
}

.node-icon {
    width: 36px;
    height: 36px;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: white;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.node-label {
    font-weight: 600;
    font-size: 14px;
    color: #1f2937;
}

.node-status {
    font-size: 12px;
    color: #4b5563;
    display: flex;
    align-items: center;
    gap: 4px;
}

.node-time,
.node-count {
    font-size: 11px;
    color: #6b7280;
    background: rgba(255, 255, 255, 0.6);
    padding: 2px 6px;
    border-radius: 4px;
    width: -webkit-fit-content;
    width: fit-content;
}

.pipeline-arrow {
    color: #d1d5db;
    font-size: 20px;
}

/* Performance Stats */
.performance-stats {
    background: var(--change-bg-elevated);
    border-radius: 16px;
    padding: 24px;
    margin-bottom: 24px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
    border: 1px solid rgba(0, 0, 0, 0.02);
}

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

.stat-card {
    background: var(--change-bg-elevated);
    border-radius: 12px;
    padding: 20px;
    border: 1px solid #f3f4f6;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.03);
}

.stat-header {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 16px;
    font-weight: 600;
    color: #374151;
    font-size: 14px;
}

.stat-metrics .metric {
    display: flex;
    justify-content: space-between;
    margin-bottom: 8px;
    font-size: 13px;
}

.metric-label {
    color: #6b7280;
}

.metric-value {
    font-weight: 600;
    color: #111827;
}

.metric-value.success {
    color: #10b981;
}

.monitoring-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    grid-gap: 24px;
    gap: 24px;
    margin-top: 24px;
}

@media (max-width: 1024px) {
    .pipeline-flow {
        flex-wrap: nowrap;
        /* Keep horizontal scroll on tablet */
    }

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

@media (max-width: 768px) {
    .pipeline-flow {
        flex-wrap: wrap;
        /* Stack on mobile */
        justify-content: center;
        gap: 16px;
    }

    .pipeline-arrow {
        display: none;
    }

    .monitoring-grid {
        grid-template-columns: 1fr;
    }
}

/* Recent Failures Table */
.recent-failures {
    background: var(--change-bg-elevated);
    border-radius: 16px;
    padding: 24px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
    margin-bottom: 24px;
}

.failures-table {
    width: 100%;
    border-collapse: collapse;
    margin-top: 16px;
}

.failures-table th {
    text-align: left;
    padding: 12px;
    font-size: 12px;
    color: #6b7280;
    border-bottom: 1px solid #e5e7eb;
}

.failures-table td {
    padding: 14px 12px;
    font-size: 14px;
    color: #374151;
    border-bottom: 1px solid #f9fafb;
}

.error-message {
    color: #ef4444;
    font-family: monospace;
    font-size: 12px;
}
/* ConfirmModal - window.confirm 대체 모달 */
.confirm-modal-overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.5);
  -webkit-backdrop-filter: blur(4px);
          backdrop-filter: blur(4px);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 2100;
  animation: confirmFadeIn 0.2s ease-out;
}

.confirm-modal-content {
  background: #fff;
  background: var(--bg-card, #fff);
  border-radius: 16px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.25);
  width: 90%;
  max-width: 400px;
  padding: 32px 28px 24px;
  text-align: center;
  animation: confirmScaleUp 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

.confirm-modal-icon {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 16px;
  font-size: 24px;
}

.confirm-modal-icon.danger {
  background-color: rgba(239, 68, 68, 0.1);
  color: #ef4444;
}

.confirm-modal-icon.warning {
  background-color: rgba(245, 158, 11, 0.1);
  color: #f59e0b;
}

.confirm-modal-icon.info {
  background-color: rgba(49, 130, 246, 0.1);
  color: #3182f6;
}

.confirm-modal-title {
  font-size: 18px;
  font-weight: 700;
  color: #191f28;
  color: var(--text-primary, #191f28);
  margin: 0 0 8px;
}

.confirm-modal-message {
  font-size: 14px;
  color: #6b7684;
  color: var(--text-secondary, #6b7684);
  margin: 0 0 24px;
  line-height: 1.5;
}

.confirm-modal-actions {
  display: flex;
  gap: 10px;
}

.confirm-modal-btn {
  flex: 1 1;
  padding: 12px 20px;
  border-radius: 10px;
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s;
  border: none;
}

.confirm-modal-btn.cancel {
  background-color: #f2f4f6;
  background-color: var(--bg-secondary, #f2f4f6);
  color: #6b7684;
  color: var(--text-secondary, #6b7684);
}

.confirm-modal-btn.cancel:hover {
  background-color: #e5e8eb;
  background-color: var(--border-color, #e5e8eb);
}

.confirm-modal-btn.confirm {
  color: #fff;
}

.confirm-modal-btn.confirm.danger {
  background-color: #ef4444;
}

.confirm-modal-btn.confirm.danger:hover {
  background-color: #dc2626;
}

.confirm-modal-btn.confirm.warning {
  background-color: #f59e0b;
}

.confirm-modal-btn.confirm.warning:hover {
  background-color: #d97706;
}

.confirm-modal-btn.confirm.info {
  background-color: #3182f6;
}

.confirm-modal-btn.confirm.info:hover {
  background-color: #2272eb;
}

@keyframes confirmFadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes confirmScaleUp {
  from { transform: scale(0.9); opacity: 0; }
  to { transform: scale(1); opacity: 1; }
}

/* Dark mode */
[data-theme='dark'] .confirm-modal-content {
  background: #1f2937;
}

[data-theme='dark'] .confirm-modal-title {
  color: #f9fafb;
}

[data-theme='dark'] .confirm-modal-message {
  color: #d1d5db;
}

[data-theme='dark'] .confirm-modal-btn.cancel {
  background-color: #374151;
  color: #d1d5db;
}

[data-theme='dark'] .confirm-modal-btn.cancel:hover {
  background-color: #4b5563;
}

.improvement-pipeline-tab {
  padding: 0;
}

.improvement-pipeline-tab .section-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 16px;
}

.improvement-pipeline-tab .section-header h3 {
  margin: 0;
  font-size: 16px;
  color: #e2e8f0;
}

.improvement-pipeline-tab .header-actions {
  display: flex;
  gap: 8px;
}

.improvement-pipeline-tab .filter-bar {
  display: flex;
  gap: 8px;
  margin-bottom: 16px;
  flex-wrap: wrap;
}

.improvement-pipeline-tab .filter-btn {
  padding: 6px 14px;
  border-radius: 8px;
  border: 1px solid #334155;
  background: transparent;
  color: #94a3b8;
  font-size: 12px;
  cursor: pointer;
  transition: all 0.2s;
}

.improvement-pipeline-tab .filter-btn:hover {
  border-color: #3b82f6;
  color: #3b82f6;
}

.improvement-pipeline-tab .filter-btn.active {
  background: #3b82f6;
  border-color: #3b82f6;
  color: #fff;
}

.improvement-pipeline-tab .improvements-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}

.improvement-pipeline-tab .improvements-table th {
  text-align: left;
  padding: 10px 12px;
  color: #94a3b8;
  font-weight: 600;
  border-bottom: 1px solid #334155;
  font-size: 12px;
  white-space: nowrap;
}

.improvement-pipeline-tab .improvements-table td {
  padding: 10px 12px;
  border-bottom: 1px solid #1e293b;
  color: #cbd5e1;
  vertical-align: middle;
}

.improvement-pipeline-tab .improvements-table tr:hover td {
  background: rgba(59, 130, 246, 0.05);
}

.improvement-pipeline-tab .imp-title {
  font-weight: 500;
  color: #e2e8f0;
  max-width: 300px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.improvement-pipeline-tab .category-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 10px;
  border-radius: 10px;
  font-size: 11px;
  font-weight: 600;
}

.improvement-pipeline-tab .priority-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  margin-right: 4px;
}

.improvement-pipeline-tab .priority-dot.critical { background: #ef4444; }
.improvement-pipeline-tab .priority-dot.high { background: #f97316; }
.improvement-pipeline-tab .priority-dot.medium { background: #eab308; }
.improvement-pipeline-tab .priority-dot.low { background: #94a3b8; }

.improvement-pipeline-tab .action-btns {
  display: flex;
  gap: 6px;
}

.improvement-pipeline-tab .action-btns button {
  padding: 4px 10px;
  border-radius: 6px;
  border: none;
  font-size: 11px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s;
}

.improvement-pipeline-tab .btn-approve {
  background: #10b98120;
  color: #10b981;
}

.improvement-pipeline-tab .btn-approve:hover {
  background: #10b98140;
}

.improvement-pipeline-tab .btn-approve:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

.improvement-pipeline-tab .btn-reject {
  background: #ef444420;
  color: #ef4444;
}

.improvement-pipeline-tab .btn-reject:hover {
  background: #ef444440;
}

.improvement-pipeline-tab .btn-extract {
  background: #8b5cf620;
  color: #8b5cf6;
  padding: 6px 14px;
  border-radius: 8px;
  border: none;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
}

.improvement-pipeline-tab .btn-extract:hover {
  background: #8b5cf640;
}

.improvement-pipeline-tab .btn-create {
  background: #3b82f620;
  color: #3b82f6;
  padding: 6px 14px;
  border-radius: 8px;
  border: none;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
}

.improvement-pipeline-tab .btn-create:hover {
  background: #3b82f640;
}

.improvement-pipeline-tab .empty-state {
  text-align: center;
  padding: 40px 20px;
  color: #64748b;
}

.improvement-pipeline-tab .empty-state i {
  font-size: 36px;
  margin-bottom: 12px;
  display: block;
}

/* Detail Modal */
.improvement-pipeline-tab .detail-overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0,0,0,0.6);
  z-index: 1000;
  display: flex;
  justify-content: center;
  align-items: center;
}

.improvement-pipeline-tab .detail-modal {
  background: #1e293b;
  border-radius: 12px;
  width: 90%;
  max-width: 700px;
  max-height: 80vh;
  overflow-y: auto;
  padding: 24px;
  border: 1px solid #334155;
}

.improvement-pipeline-tab .detail-modal h3 {
  margin: 0 0 16px;
  color: #e2e8f0;
}

.improvement-pipeline-tab .detail-modal .field {
  margin-bottom: 12px;
}

.improvement-pipeline-tab .detail-modal .field label {
  display: block;
  font-size: 12px;
  color: #64748b;
  margin-bottom: 4px;
}

.improvement-pipeline-tab .detail-modal .field-value {
  color: #cbd5e1;
  font-size: 13px;
  line-height: 1.5;
}

.improvement-pipeline-tab .detail-modal pre {
  background: #0f172a;
  padding: 12px;
  border-radius: 8px;
  overflow-x: auto;
  font-size: 12px;
  color: #94a3b8;
  white-space: pre-wrap;
  word-break: break-word;
  max-height: 300px;
  overflow-y: auto;
}

.improvement-pipeline-tab .detail-modal .modal-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 16px;
}

/* Create form */
.improvement-pipeline-tab .create-form {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.improvement-pipeline-tab .create-form input,
.improvement-pipeline-tab .create-form textarea,
.improvement-pipeline-tab .create-form select {
  background: #0f172a;
  border: 1px solid #334155;
  border-radius: 8px;
  padding: 8px 12px;
  color: #e2e8f0;
  font-size: 13px;
}

.improvement-pipeline-tab .create-form textarea {
  min-height: 100px;
  resize: vertical;
}

.improvement-pipeline-tab .create-form label {
  font-size: 12px;
  color: #94a3b8;
  margin-bottom: 2px;
}

.improvement-pipeline-tab .form-row {
  display: flex;
  gap: 12px;
}

.improvement-pipeline-tab .form-row > div {
  flex: 1 1;
}

.improvement-pipeline-tab .auto-refresh-indicator {
  font-size: 11px;
  color: #64748b;
  display: flex;
  align-items: center;
  gap: 4px;
}

.improvement-pipeline-tab .auto-refresh-indicator .dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #10b981;
  animation: pulse 2s infinite;
}

@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.3; }
}

/* IntegratedAdminDashboard.css - Clean & Simple Layout */

.admin-layout {
  display: flex;
  min-height: 100vh;
  background-color: #f3f4f6;
  /* Light Gray Background */
  font-family: 'Inter', system-ui, -apple-system, sans-serif;
}

.admin-main-content {
  flex: 1 1;
  margin-left: 260px;
  /* Sidebar width */
  padding: 40px;
  /* More spacious padding */
  transition: all 0.3s ease;
  width: calc(100% - 260px);
}

.admin-main-content.mobile {
  margin-left: 0;
  width: 100%;
  padding: 80px 20px 100px 20px;
  /* Header + Content + Bottom Nav */
}

.admin-container {
  max-width: 1600px;
  /* Wider container for dashboard view */
  margin: 0 auto;
}

/* Global Card Styles for Reusability */
.admin-card {
  background: var(--change-bg-elevated);
  border-radius: 16px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  /* Very subtle shadow */
  padding: 24px;
  margin-bottom: 24px;
  border: 1px solid rgba(0, 0, 0, 0.02);
  /* Almost invisible border for definition */
}

/* Global Typography Overrides */
h1,
h2,
h3,
h4,
h5,
h6 {
  color: #111827;
  /* Dark Gray for headings */
  font-weight: 600;
  letter-spacing: -0.025em;
}

p,
span,
div {
  color: #6b7280;
  /* Soft Gray for body */
}

/* Animations */
.fade-in {
  animation: fadeIn 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}

@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(10px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ===================================
   Enhanced Responsive Design System
   PC (>1024px) → Tablet (768-1024px) → Mobile (<768px) → Small (<480px)
   =================================== */

/* 태블릿 (768px - 1024px) */
@media (max-width: 1024px) and (min-width: 769px) {
  .admin-main-content {
    margin-left: 220px;
    padding: 30px;
    width: calc(100% - 220px);
  }

  .admin-container {
    max-width: 100%;
  }

  .admin-card {
    padding: 20px;
    margin-bottom: 20px;
    border-radius: 14px;
  }

  h1, h2 {
    font-size: 1.5rem;
  }

  h3, h4 {
    font-size: 1.125rem;
  }
}

/* 모바일 (<768px) */
@media (max-width: 768px) {
  .admin-layout {
    flex-direction: column;
  }

  .admin-main-content {
    margin-left: 0;
    width: 100%;
    padding: 70px 16px 90px 16px;
  }

  .admin-main-content.mobile {
    padding: 70px 16px 90px 16px;
  }

  .admin-container {
    max-width: 100%;
  }

  .admin-card {
    padding: 16px;
    margin-bottom: 16px;
    border-radius: 12px;
  }

  h1 {
    font-size: 1.375rem;
  }

  h2 {
    font-size: 1.25rem;
  }

  h3 {
    font-size: 1.125rem;
  }

  h4, h5, h6 {
    font-size: 1rem;
  }

  p, span, div {
    font-size: 0.9375rem;
  }
}

/* 소형 모바일 (<480px) */
@media (max-width: 480px) {
  .admin-main-content {
    padding: 60px 12px 80px 12px;
  }

  .admin-main-content.mobile {
    padding: 60px 12px 80px 12px;
  }

  .admin-card {
    padding: 14px;
    margin-bottom: 14px;
    border-radius: 10px;
  }

  h1 {
    font-size: 1.25rem;
  }

  h2 {
    font-size: 1.125rem;
  }

  h3, h4 {
    font-size: 1rem;
  }

  h5, h6 {
    font-size: 0.9375rem;
  }

  p, span, div {
    font-size: 0.875rem;
  }
}
/* ===================================
   DeploymentDashboard - Stitch Design
   dd-* prefix, --change-* tokens
   No-Line Rule: box-shadow instead of border
   =================================== */

/* ---- Root Container ---- */
.dd-root {
  max-width: 1280px;
  margin: 0 auto;
  padding: var(--change-spacing-md) var(--change-spacing-sm);
  font-family: var(--change-font-primary);
  min-height: 100vh;
}

/* ---- Glassmorphism Sticky Header ---- */
.dd-header {
  position: -webkit-sticky;
  position: sticky;
  top: 0;
  z-index: 40;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--change-spacing-sm) var(--change-spacing-md);
  margin-bottom: var(--change-spacing-md);
  background: var(--change-header-bg);
  backdrop-filter: var(--change-header-blur);
  -webkit-backdrop-filter: var(--change-header-blur);
  border-radius: 1rem;
  box-shadow: var(--change-shadow-sm);
}

.dd-header-left {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.dd-header-title {
  margin: 0;
  font-size: 1.375rem;
  font-weight: 700;
  color: var(--change-on-surface);
  letter-spacing: -0.01em;
}

.dd-header-subtitle {
  margin: 0;
  font-size: var(--change-font-caption);
  color: var(--change-on-surface-variant);
  font-weight: 400;
}

.dd-header-right {
  display: flex;
  align-items: center;
  gap: 12px;
}

/* Auto-refresh toggle (pill style) */
.dd-auto-toggle {
  display: flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  -webkit-user-select: none;
          user-select: none;
  font-size: 13px;
  font-weight: 500;
  color: var(--change-on-surface-variant);
  background: var(--change-surface-low);
  padding: 6px 14px;
  border-radius: 9999px;
  transition: var(--change-transition);
}

.dd-auto-toggle:hover {
  background: var(--change-surface-container);
}

.dd-auto-toggle input[type="checkbox"] {
  display: none;
}

.dd-toggle-track {
  position: relative;
  width: 36px;
  height: 20px;
  background: var(--change-gray-300);
  border-radius: 9999px;
  transition: background 0.2s ease;
  flex-shrink: 0;
}

.dd-toggle-track::after {
  content: '';
  position: absolute;
  top: 2px;
  left: 2px;
  width: 16px;
  height: 16px;
  background: #fff;
  border-radius: 50%;
  transition: transform 0.2s ease;
  box-shadow: 0 1px 3px rgba(0,0,0,0.15);
}

.dd-auto-toggle input:checked + .dd-toggle-track {
  background: var(--change-primary);
}

.dd-auto-toggle input:checked + .dd-toggle-track::after {
  transform: translateX(16px);
}

/* Refresh button */
.dd-refresh-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  background: var(--change-surface-low);
  border-radius: 12px;
  cursor: pointer;
  transition: var(--change-transition);
  color: var(--change-on-surface-variant);
  box-shadow: none;
}

.dd-refresh-btn:hover {
  background: var(--change-surface-container);
  box-shadow: var(--change-shadow-sm);
}

.dd-refresh-btn .material-symbols-outlined {
  font-size: 20px;
}

/* ---- Error Banner ---- */
.dd-error-banner {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px var(--change-spacing-sm);
  margin-bottom: var(--change-spacing-md);
  background: rgba(239, 68, 68, 0.08);
  border-radius: 1rem;
  color: #dc2626;
  font-weight: 500;
  font-size: var(--change-font-caption);
  box-shadow: var(--change-shadow-sm);
}

[data-theme="dark"] .dd-error-banner {
  background: rgba(239, 68, 68, 0.12);
  color: #fca5a5;
}

.dd-error-banner .material-symbols-outlined {
  font-size: 20px;
}

/* ---- Status Strip (Horizontal Scroll Chips) ---- */
.dd-status-strip {
  display: flex;
  gap: 10px;
  overflow-x: auto;
  padding: 4px 0;
  margin-bottom: var(--change-spacing-md);
  scrollbar-width: none;
  -ms-overflow-style: none;
}

.dd-status-strip::-webkit-scrollbar {
  display: none;
}

.dd-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  background: var(--change-header-bg);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-radius: 9999px;
  font-size: 13px;
  font-weight: 500;
  color: var(--change-on-surface);
  white-space: nowrap;
  flex-shrink: 0;
  box-shadow: var(--change-shadow-sm);
  transition: var(--change-transition);
}

.dd-chip:hover {
  box-shadow: var(--change-shadow);
}

.dd-chip .material-symbols-outlined {
  font-size: 16px;
  color: var(--change-on-surface-variant);
}

.dd-chip-value {
  font-weight: 600;
  color: var(--change-primary);
}

/* ---- Action Buttons ---- */
.dd-actions {
  display: flex;
  gap: 12px;
  margin-bottom: var(--change-spacing-md);
  flex-wrap: wrap;
}

.dd-action-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 12px 24px;
  border-radius: 1rem;
  font-weight: 600;
  font-size: var(--change-font-caption);
  cursor: pointer;
  transition: all 0.2s ease;
  box-shadow: var(--change-shadow-sm);
  white-space: nowrap;
}

.dd-action-btn .material-symbols-outlined {
  font-size: 18px;
}

.dd-action-btn:hover:not(:disabled) {
  transform: translateY(-2px);
  box-shadow: var(--change-shadow-md);
}

.dd-action-btn:active:not(:disabled) {
  transform: translateY(0);
}

.dd-action-btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
  transform: none;
}

/* Deploy (blue) */
.dd-action-btn--deploy {
  background: var(--change-primary);
  color: #fff;
}

.dd-action-btn--deploy:hover:not(:disabled) {
  background: var(--change-primary-dark);
}

/* Force deploy (orange) */
.dd-action-btn--force {
  background: #f59e0b;
  color: #fff;
}

.dd-action-btn--force:hover:not(:disabled) {
  background: #d97706;
}

/* Rollback (red) */
.dd-action-btn--rollback {
  background: #ef4444;
  color: #fff;
}

.dd-action-btn--rollback:hover:not(:disabled) {
  background: #dc2626;
}

/* ---- Section Title ---- */
.dd-section-title {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: var(--change-spacing-sm);
  font-size: var(--change-font-title);
  font-weight: 700;
  color: var(--change-on-surface);
}

.dd-section-title .material-symbols-outlined {
  font-size: 22px;
  color: var(--change-primary);
}

/* ---- System Status Grid ---- */
.dd-status-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-gap: var(--change-spacing-sm);
  gap: var(--change-spacing-sm);
  margin-bottom: var(--change-spacing-lg);
}

.dd-status-card {
  background: var(--change-surface-lowest);
  border-radius: 1rem;
  padding: var(--change-spacing-md);
  box-shadow: var(--change-shadow-sm);
  transition: var(--change-transition);
}

.dd-status-card:hover {
  box-shadow: var(--change-shadow);
  transform: translateY(-2px);
}

.dd-status-card-header {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: var(--change-spacing-sm);
}

.dd-status-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: 12px;
  flex-shrink: 0;
}

.dd-status-icon--git {
  background: rgba(239, 68, 68, 0.08);
  color: #ef4444;
}

.dd-status-icon--docker {
  background: rgba(59, 130, 246, 0.08);
  color: #3b82f6;
}

.dd-status-icon--db {
  background: rgba(16, 185, 129, 0.08);
  color: #10b981;
}

.dd-status-icon .material-symbols-outlined {
  font-size: 22px;
}

.dd-status-card-title {
  font-size: var(--change-font-body);
  font-weight: 600;
  color: var(--change-on-surface);
}

.dd-status-indicator {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}

.dd-indicator-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}

.dd-indicator-dot--ok {
  background: #10b981;
  box-shadow: 0 0 6px rgba(16, 185, 129, 0.4);
}

.dd-indicator-dot--error {
  background: #ef4444;
  box-shadow: 0 0 6px rgba(239, 68, 68, 0.4);
}

.dd-indicator-dot--warn {
  background: #f59e0b;
  box-shadow: 0 0 6px rgba(245, 158, 11, 0.4);
}

.dd-indicator-text {
  font-size: 13px;
  font-weight: 500;
  color: var(--change-on-surface-variant);
}

.dd-status-detail {
  font-size: 12px;
  color: var(--change-outline);
  margin: 4px 0 0 0;
  line-height: 1.5;
}

.dd-status-detail strong {
  color: var(--change-on-surface-variant);
  font-weight: 600;
}

.dd-status-detail-list {
  list-style: none;
  margin: 6px 0 0 0;
  padding: 0;
}

.dd-status-detail-list li {
  font-size: 12px;
  color: var(--change-outline);
  padding: 3px 0;
  display: flex;
  align-items: center;
  gap: 6px;
}

.dd-last-check {
  font-size: 11px;
  color: var(--change-outline);
  margin-top: 12px;
  display: flex;
  align-items: center;
  gap: 4px;
}

.dd-last-check .material-symbols-outlined {
  font-size: 14px;
}

/* ---- Current Deployment Card (Active) ---- */
.dd-current-deploy {
  background: var(--change-surface-lowest);
  border-radius: 1rem;
  padding: var(--change-spacing-md);
  margin-bottom: var(--change-spacing-md);
  box-shadow: 0 0 0 2px rgba(245, 158, 11, 0.3), var(--change-shadow-sm);
  animation: dd-pulse-border 2s ease-in-out infinite;
}

@keyframes dd-pulse-border {
  0%, 100% { box-shadow: 0 0 0 2px rgba(245, 158, 11, 0.3), var(--change-shadow-sm); }
  50% { box-shadow: 0 0 0 2px rgba(245, 158, 11, 0.6), var(--change-shadow-md); }
}

.dd-current-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 12px;
}

.dd-current-id {
  font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace;
  font-weight: 600;
  font-size: var(--change-font-body);
  color: var(--change-on-surface);
}

.dd-current-info {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  margin-bottom: 12px;
}

.dd-current-info-item {
  font-size: 13px;
  color: var(--change-on-surface-variant);
}

.dd-current-info-item strong {
  color: var(--change-on-surface);
  font-weight: 600;
}

/* Mini log inside current deployment */
.dd-current-logs-label {
  font-size: 13px;
  font-weight: 600;
  color: var(--change-on-surface);
  margin-bottom: 8px;
  display: flex;
  align-items: center;
  gap: 6px;
}

.dd-current-logs-label .material-symbols-outlined {
  font-size: 16px;
  color: var(--change-primary);
}

/* ---- Timeline ---- */
.dd-timeline {
  position: relative;
  padding-left: 28px;
  margin-bottom: var(--change-spacing-lg);
}

/* Vertical center line */
.dd-timeline::before {
  content: '';
  position: absolute;
  left: 11px;
  top: 0;
  bottom: 0;
  width: 2px;
  background: var(--change-outline-variant);
  border-radius: 1px;
}

.dd-timeline-item {
  position: relative;
  margin-bottom: var(--change-spacing-sm);
  animation: dd-fadeIn 0.35s ease-out;
}

/* Timeline dot */
.dd-timeline-dot {
  position: absolute;
  left: -22px;
  top: 18px;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  box-shadow: 0 0 0 3px var(--change-surface-lowest);
}

.dd-timeline-dot--completed {
  background: #10b981;
}

.dd-timeline-dot--failed {
  background: #ef4444;
}

.dd-timeline-dot--running {
  background: #f59e0b;
  animation: dd-pulse-dot 1.5s ease-in-out infinite;
}

.dd-timeline-dot--timeout {
  background: #f97316;
}

.dd-timeline-dot--default {
  background: var(--change-outline);
}

@keyframes dd-pulse-dot {
  0%, 100% { box-shadow: 0 0 0 3px var(--change-surface-lowest); }
  50% { box-shadow: 0 0 0 3px var(--change-surface-lowest), 0 0 0 6px rgba(245, 158, 11, 0.25); }
}

.dd-timeline-card {
  background: var(--change-surface-lowest);
  border-radius: 1rem;
  padding: var(--change-spacing-sm);
  box-shadow: var(--change-shadow-sm);
  cursor: pointer;
  transition: var(--change-transition);
}

.dd-timeline-card:hover {
  box-shadow: var(--change-shadow);
  transform: translateY(-1px);
}

.dd-timeline-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 8px;
}

.dd-timeline-version {
  font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace;
  font-weight: 600;
  font-size: var(--change-font-caption);
  color: var(--change-on-surface);
}

/* Status badges */
.dd-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 10px;
  border-radius: 9999px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.03em;
  text-transform: uppercase;
}

.dd-badge--completed {
  background: rgba(16, 185, 129, 0.1);
  color: #10b981;
}

.dd-badge--failed {
  background: rgba(239, 68, 68, 0.1);
  color: #ef4444;
}

.dd-badge--running {
  background: rgba(245, 158, 11, 0.1);
  color: #f59e0b;
  animation: dd-badge-pulse 1.5s ease-in-out infinite;
}

.dd-badge--timeout {
  background: rgba(249, 115, 22, 0.1);
  color: #f97316;
}

.dd-badge--default {
  background: var(--change-surface-low);
  color: var(--change-outline);
}

@keyframes dd-badge-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.6; }
}

.dd-timeline-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  font-size: 12px;
  color: var(--change-outline);
  margin-bottom: 6px;
}

.dd-timeline-meta-item {
  display: flex;
  align-items: center;
  gap: 4px;
}

.dd-timeline-meta-item .material-symbols-outlined {
  font-size: 14px;
}

.dd-timeline-commit {
  font-size: 13px;
  color: var(--change-on-surface-variant);
  line-height: 1.4;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.dd-timeline-commit code {
  font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace;
  font-size: 12px;
  background: var(--change-surface-low);
  padding: 1px 6px;
  border-radius: 4px;
  color: var(--change-primary);
  font-weight: 500;
}

.dd-timeline-action {
  display: flex;
  justify-content: flex-end;
  margin-top: 8px;
}

.dd-view-logs-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 6px 12px;
  background: var(--change-surface-low);
  border-radius: 8px;
  font-size: 12px;
  font-weight: 500;
  color: var(--change-on-surface-variant);
  cursor: pointer;
  transition: var(--change-transition);
}

.dd-view-logs-btn:hover {
  background: var(--change-surface-container);
  color: var(--change-primary);
}

.dd-view-logs-btn .material-symbols-outlined {
  font-size: 16px;
}

/* ---- Log Modal ---- */
.dd-modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1000;
  animation: dd-fadeIn 0.2s ease;
}

.dd-modal {
  background: var(--change-surface-lowest);
  border-radius: 1.25rem;
  box-shadow: var(--change-shadow-xl);
  width: 90%;
  max-width: 860px;
  max-height: 85vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  animation: dd-scaleIn 0.25s ease;
}

@keyframes dd-scaleIn {
  from { opacity: 0; transform: scale(0.95); }
  to { opacity: 1; transform: scale(1); }
}

.dd-modal-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--change-spacing-sm) var(--change-spacing-md);
  box-shadow: inset 0 -1px 0 0 var(--change-outline-variant);
}

.dd-modal-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: var(--change-font-body);
  font-weight: 700;
  color: var(--change-on-surface);
}

.dd-modal-title .material-symbols-outlined {
  font-size: 20px;
  color: var(--change-primary);
}

.dd-modal-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}

.dd-modal-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: var(--change-surface-low);
  border-radius: 10px;
  cursor: pointer;
  transition: var(--change-transition);
  color: var(--change-on-surface-variant);
}

.dd-modal-btn:hover {
  background: var(--change-surface-container);
  color: var(--change-on-surface);
}

.dd-modal-btn .material-symbols-outlined {
  font-size: 18px;
}

/* Terminal-style log body */
.dd-log-body {
  flex: 1 1;
  overflow-y: auto;
  background: #1a1b23;
  padding: var(--change-spacing-sm);
  font-family: 'SF Mono', 'Fira Code', 'Consolas', 'Courier New', monospace;
  font-size: 13px;
  line-height: 1.6;
}

.dd-log-entry {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 3px 0;
}

.dd-log-time {
  color: #6b7280;
  font-size: 11px;
  min-width: 85px;
  flex-shrink: 0;
}

.dd-log-level {
  font-weight: 700;
  font-size: 11px;
  min-width: 55px;
  flex-shrink: 0;
  text-align: center;
  padding: 1px 6px;
  border-radius: 3px;
}

.dd-log-level--ERROR {
  color: #f87171;
  background: rgba(248, 113, 113, 0.1);
}

.dd-log-level--WARN {
  color: #fbbf24;
  background: rgba(251, 191, 36, 0.1);
}

.dd-log-level--INFO {
  color: #67e8f9;
  background: rgba(103, 232, 249, 0.1);
}

.dd-log-level--SUCCESS {
  color: #34d399;
  background: rgba(52, 211, 153, 0.1);
}

.dd-log-level--default {
  color: #9ca3af;
}

.dd-log-message {
  flex: 1 1;
  color: #e5e7eb;
  word-break: break-word;
}

.dd-log-empty {
  color: #6b7280;
  text-align: center;
  padding: var(--change-spacing-lg) 0;
  font-size: var(--change-font-caption);
}

/* Log body scrollbar */
.dd-log-body::-webkit-scrollbar {
  width: 6px;
}

.dd-log-body::-webkit-scrollbar-track {
  background: #111217;
  border-radius: 3px;
}

.dd-log-body::-webkit-scrollbar-thumb {
  background: #3f3f46;
  border-radius: 3px;
}

.dd-log-body::-webkit-scrollbar-thumb:hover {
  background: #52525b;
}

/* ---- Mini log (inside current deployment) ---- */
.dd-mini-log {
  background: #1a1b23;
  border-radius: 10px;
  padding: 12px;
  max-height: 200px;
  overflow-y: auto;
  font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace;
  font-size: 12px;
  line-height: 1.5;
}

.dd-mini-log::-webkit-scrollbar {
  width: 4px;
}

.dd-mini-log::-webkit-scrollbar-track {
  background: #111217;
}

.dd-mini-log::-webkit-scrollbar-thumb {
  background: #3f3f46;
  border-radius: 2px;
}

/* ---- Empty State ---- */
.dd-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--change-spacing-xl) 0;
  color: var(--change-outline);
}

.dd-empty .material-symbols-outlined {
  font-size: 48px;
  margin-bottom: 12px;
  opacity: 0.5;
}

.dd-empty-text {
  font-size: var(--change-font-caption);
  font-weight: 500;
}

/* ---- Animations ---- */
@keyframes dd-fadeIn {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

/* ---- Responsive: 1024px ---- */
@media (max-width: 1024px) {
  .dd-status-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* ---- Responsive: 768px ---- */
@media (max-width: 768px) {
  .dd-root {
    padding: var(--change-spacing-sm) 12px;
  }

  .dd-header {
    flex-direction: column;
    gap: 12px;
    align-items: flex-start;
  }

  .dd-header-right {
    width: 100%;
    justify-content: flex-end;
  }

  .dd-header-title {
    font-size: 1.15rem;
  }

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

  .dd-action-btn {
    justify-content: center;
    width: 100%;
  }

  .dd-status-grid {
    grid-template-columns: 1fr;
  }

  .dd-timeline {
    padding-left: 24px;
  }

  .dd-timeline::before {
    left: 9px;
  }

  .dd-timeline-dot {
    left: -19px;
    width: 10px;
    height: 10px;
  }

  .dd-modal {
    width: 95%;
    max-height: 90vh;
    border-radius: 1rem;
  }

  .dd-log-body {
    font-size: 11px;
  }

  .dd-log-entry {
    flex-direction: column;
    gap: 2px;
  }

  .dd-log-time,
  .dd-log-level {
    min-width: auto;
  }

  .dd-current-info {
    flex-direction: column;
    gap: 6px;
  }
}

/* ---- Responsive: 480px ---- */
@media (max-width: 480px) {
  .dd-header {
    padding: 12px;
  }

  .dd-chip {
    padding: 6px 12px;
    font-size: 12px;
  }

  .dd-action-btn {
    padding: 10px 16px;
    font-size: 13px;
  }

  .dd-timeline-card {
    padding: 12px;
  }
}

/* ===================================
   WhatsNew.css
   "wn-*" prefix
   No-Line Rule: border 금지, box-shadow 사용
   Design tokens: --change-* (ChangeStyleCommon.css)
   Dark mode: [data-theme="dark"]
   Responsive: 768px, 480px
   =================================== */

/* ============================================================
   Hero Header
   ============================================================ */
.wn-hero {
  position: relative;
  background: linear-gradient(135deg, #3182F6 0%, #7C3AED 100%);
  padding: 48px 32px 64px;
  color: #fff;
  overflow: hidden;
}

.wn-hero-content {
  position: relative;
  z-index: 2;
  max-width: 720px;
  margin: 0 auto;
  text-align: center;
}

.wn-hero-title {
  font-size: 36px;
  font-weight: 800;
  letter-spacing: -0.02em;
  margin: 0 0 8px;
  color: #fff;
}

.wn-hero-subtitle {
  font-size: 16px;
  font-weight: 400;
  opacity: 0.85;
  margin: 0 0 20px;
  color: rgba(255, 255, 255, 0.9);
}

.wn-hero-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 16px;
  border-radius: 9999px;
  background: rgba(255, 255, 255, 0.18);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  font-size: 14px;
  font-weight: 700;
  color: #fff;
  letter-spacing: 0.02em;
}

/* Wave SVG divider */
.wn-hero-wave {
  position: absolute;
  bottom: -1px;
  left: 0;
  width: 100%;
  z-index: 1;
  line-height: 0;
}

.wn-hero-wave svg {
  display: block;
  width: 100%;
  height: 48px;
}

.wn-hero-wave svg path {
  fill: #ffffff;
  fill: var(--change-bg, #ffffff);
}

[data-theme="dark"] .wn-hero-wave svg path {
  fill: #17191C;
  fill: var(--change-background, #17191C);
}

/* ============================================================
   Container
   ============================================================ */
.wn-container {
  max-width: 800px;
  margin: 0 auto;
  padding: 0 24px 64px;
}

/* ============================================================
   Category Filter Tabs
   ============================================================ */
.wn-filter-bar {
  display: flex;
  gap: 8px;
  padding: 24px 0 32px;
  overflow-x: auto;
  scrollbar-width: none;
  -ms-overflow-style: none;
}

.wn-filter-bar::-webkit-scrollbar {
  display: none;
}

.wn-filter-pill {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 8px 18px;
  border-radius: 9999px;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
  transition: all 0.2s ease;
  background: #f2f4f6;
  background: var(--change-surface-low, #f2f4f6);
  color: #414754;
  color: var(--change-on-surface-variant, #414754);
  box-shadow: none;
  border: none;
  font-family: inherit;
}

.wn-filter-pill:hover {
  background: #eceef0;
  background: var(--change-surface-container, #eceef0);
}

.wn-filter-pill.active {
  background: #3182F6;
  background: var(--change-primary, #3182F6);
  color: #fff;
  box-shadow: 0 2px 8px rgba(49, 130, 246, 0.25);
}

[data-theme="dark"] .wn-filter-pill {
  background: #1e2022;
  background: var(--change-surface-low, #1e2022);
  color: #c4c6d0;
  color: var(--change-on-surface-variant, #c4c6d0);
}

[data-theme="dark"] .wn-filter-pill:hover {
  background: #252729;
  background: var(--change-surface-container, #252729);
}

[data-theme="dark"] .wn-filter-pill.active {
  background: #3182F6;
  background: var(--change-primary, #3182F6);
  color: #fff;
  box-shadow: 0 2px 8px rgba(49, 130, 246, 0.35);
}

/* ============================================================
   Timeline
   ============================================================ */
.wn-timeline {
  display: flex;
  flex-direction: column;
  gap: 24px;
}

/* ============================================================
   Version Card
   ============================================================ */
.wn-card {
  background: #ffffff;
  background: var(--change-card-bg, #ffffff);
  border-radius: 1.5rem;
  padding: 28px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
  transition: box-shadow 0.2s ease, transform 0.2s ease;
  border: none;
  animation: wn-fadeUp 0.4s ease forwards;
  opacity: 0;
}

.wn-card:hover {
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
  transform: translateY(-2px);
}

[data-theme="dark"] .wn-card {
  background: rgba(30, 35, 45, 0.7);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}

[data-theme="dark"] .wn-card:hover {
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4);
}

@keyframes wn-fadeUp {
  from {
    opacity: 0;
    transform: translateY(16px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.wn-card:nth-child(1) { animation-delay: 0.05s; }
.wn-card:nth-child(2) { animation-delay: 0.1s; }
.wn-card:nth-child(3) { animation-delay: 0.15s; }
.wn-card:nth-child(4) { animation-delay: 0.2s; }
.wn-card:nth-child(5) { animation-delay: 0.25s; }

/* Card Header */
.wn-card-header {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 16px;
  flex-wrap: wrap;
}

.wn-version-badge {
  display: inline-flex;
  align-items: center;
  padding: 4px 12px;
  border-radius: 9999px;
  font-size: 13px;
  font-weight: 700;
  background: linear-gradient(135deg, #3182F6, #7C3AED);
  color: #fff;
  letter-spacing: 0.02em;
}

.wn-card-date {
  font-size: 13px;
  font-weight: 500;
  color: #8B95A1;
  color: var(--change-text-muted, #8B95A1);
}

.wn-card-title {
  font-size: 18px;
  font-weight: 700;
  color: #191F28;
  color: var(--change-text, #191F28);
  margin: 0 0 20px;
  line-height: 1.4;
}

[data-theme="dark"] .wn-card-title {
  color: #F2F4F6;
  color: var(--change-text, #F2F4F6);
}

/* ============================================================
   Change Groups
   ============================================================ */
.wn-change-groups {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.wn-change-group {
  padding-left: 14px;
  position: relative;
}

/* Accent bar on the left */
.wn-change-group::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 3px;
  border-radius: 3px;
}

.wn-change-group[data-type="new"]::before {
  background: #10B981;
}

.wn-change-group[data-type="fix"]::before {
  background: #F59E0B;
}

.wn-change-group[data-type="improve"]::before {
  background: #3182F6;
}

.wn-change-group[data-type="design"]::before {
  background: #EC4899;
}

.wn-group-label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  font-weight: 700;
  margin-bottom: 8px;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.wn-group-label[data-type="new"] {
  color: #10B981;
}

.wn-group-label[data-type="fix"] {
  color: #F59E0B;
}

.wn-group-label[data-type="improve"] {
  color: #3182F6;
}

.wn-group-label[data-type="design"] {
  color: #EC4899;
}

[data-theme="dark"] .wn-group-label[data-type="new"] {
  color: #34D399;
}

[data-theme="dark"] .wn-group-label[data-type="fix"] {
  color: #FBBF24;
}

[data-theme="dark"] .wn-group-label[data-type="improve"] {
  color: #60A5FA;
}

[data-theme="dark"] .wn-group-label[data-type="design"] {
  color: #F472B6;
}

/* Bullet list inside each group */
.wn-change-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.wn-change-item {
  position: relative;
  padding-left: 18px;
  font-size: 14px;
  font-weight: 400;
  color: #4E5968;
  color: var(--change-text-secondary, #4E5968);
  line-height: 1.6;
}

[data-theme="dark"] .wn-change-item {
  color: #B0B8C1;
  color: var(--change-text-secondary, #B0B8C1);
}

.wn-change-item::before {
  content: '';
  position: absolute;
  left: 0;
  top: 9px;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: #D1D6DB;
  background: var(--change-gray-300, #D1D6DB);
}

[data-theme="dark"] .wn-change-item::before {
  background: #8B95A1;
  background: var(--change-gray-500, #8B95A1);
}

/* ============================================================
   Accordion / Detail Toggle
   ============================================================ */
.wn-detail-toggle {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-top: 12px;
  padding: 6px 14px;
  border-radius: 9999px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  background: #f2f4f6;
  background: var(--change-surface-low, #f2f4f6);
  color: #4E5968;
  color: var(--change-text-secondary, #4E5968);
  transition: all 0.2s ease;
  border: none;
  font-family: inherit;
}

.wn-detail-toggle:hover {
  background: #eceef0;
  background: var(--change-surface-container, #eceef0);
  color: #3182F6;
  color: var(--change-primary, #3182F6);
}

[data-theme="dark"] .wn-detail-toggle {
  background: #1e2022;
  background: var(--change-surface-low, #1e2022);
  color: #B0B8C1;
  color: var(--change-text-secondary, #B0B8C1);
}

[data-theme="dark"] .wn-detail-toggle:hover {
  background: #252729;
  background: var(--change-surface-container, #252729);
  color: #3182F6;
  color: var(--change-primary, #3182F6);
}

.wn-detail-toggle .material-symbols-outlined {
  font-size: 16px;
  transition: transform 0.2s ease;
}

.wn-detail-toggle.expanded .material-symbols-outlined {
  transform: rotate(180deg);
}

/* ============================================================
   Empty State
   ============================================================ */
.wn-empty {
  text-align: center;
  padding: 64px 24px;
  color: #8B95A1;
  color: var(--change-text-muted, #8B95A1);
}

.wn-empty-icon {
  font-size: 48px;
  margin-bottom: 16px;
  opacity: 0.5;
}

.wn-empty-text {
  font-size: 16px;
  font-weight: 500;
}

/* ============================================================
   Responsive: 768px
   ============================================================ */
@media (max-width: 768px) {
  .wn-hero {
    padding: 36px 20px 52px;
  }

  .wn-hero-title {
    font-size: 28px;
  }

  .wn-hero-subtitle {
    font-size: 14px;
  }

  .wn-container {
    padding: 0 16px 48px;
  }

  .wn-card {
    padding: 20px;
    border-radius: 1.25rem;
  }

  .wn-card-title {
    font-size: 16px;
  }

  .wn-filter-bar {
    padding: 16px 0 24px;
  }

  .wn-filter-pill {
    padding: 6px 14px;
    font-size: 13px;
  }
}

/* ============================================================
   Responsive: 480px
   ============================================================ */
@media (max-width: 480px) {
  .wn-hero {
    padding: 28px 16px 44px;
  }

  .wn-hero-title {
    font-size: 24px;
  }

  .wn-hero-badge {
    font-size: 12px;
    padding: 4px 12px;
  }

  .wn-container {
    padding: 0 12px 40px;
  }

  .wn-card {
    padding: 16px;
  }

  .wn-card-header {
    gap: 8px;
  }

  .wn-version-badge {
    font-size: 12px;
    padding: 3px 10px;
  }

  .wn-card-title {
    font-size: 15px;
    margin-bottom: 14px;
  }

  .wn-change-item {
    font-size: 13px;
  }
}

/**
 * Copyright (c) 2014 The xterm.js authors. All rights reserved.
 * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
 * https://github.com/chjj/term.js
 * @license MIT
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 *
 * Originally forked from (with the author's permission):
 *   Fabrice Bellard's javascript vt100 for jslinux:
 *   http://bellard.org/jslinux/
 *   Copyright (c) 2011 Fabrice Bellard
 *   The original design remains. The terminal itself
 *   has been extended to include xterm CSI codes, among
 *   other features.
 */

/**
 *  Default styles for xterm.js
 */

.xterm {
    cursor: text;
    position: relative;
    user-select: none;
    -ms-user-select: none;
    -webkit-user-select: none;
}

.xterm.focus,
.xterm:focus {
    outline: none;
}

.xterm .xterm-helpers {
    position: absolute;
    top: 0;
    /**
     * The z-index of the helpers must be higher than the canvases in order for
     * IMEs to appear on top.
     */
    z-index: 5;
}

.xterm .xterm-helper-textarea {
    padding: 0;
    border: 0;
    margin: 0;
    /* Move textarea out of the screen to the far left, so that the cursor is not visible */
    position: absolute;
    opacity: 0;
    left: -9999em;
    top: 0;
    width: 0;
    height: 0;
    z-index: -5;
    /** Prevent wrapping so the IME appears against the textarea at the correct position */
    white-space: nowrap;
    overflow: hidden;
    resize: none;
}

.xterm .composition-view {
    /* TODO: Composition position got messed up somewhere */
    background: #000;
    color: #FFF;
    display: none;
    position: absolute;
    white-space: nowrap;
    z-index: 1;
}

.xterm .composition-view.active {
    display: block;
}

.xterm .xterm-viewport {
    /* On OS X this is required in order for the scroll bar to appear fully opaque */
    background-color: #000;
    overflow-y: scroll;
    cursor: default;
    position: absolute;
    right: 0;
    left: 0;
    top: 0;
    bottom: 0;
}

.xterm .xterm-screen {
    position: relative;
}

.xterm .xterm-screen canvas {
    position: absolute;
    left: 0;
    top: 0;
}

.xterm .xterm-scroll-area {
    visibility: hidden;
}

.xterm-char-measure-element {
    display: inline-block;
    visibility: hidden;
    position: absolute;
    top: 0;
    left: -9999em;
    line-height: normal;
}

.xterm.enable-mouse-events {
    /* When mouse events are enabled (eg. tmux), revert to the standard pointer cursor */
    cursor: default;
}

.xterm.xterm-cursor-pointer,
.xterm .xterm-cursor-pointer {
    cursor: pointer;
}

.xterm.column-select.focus {
    /* Column selection mode */
    cursor: crosshair;
}

.xterm .xterm-accessibility,
.xterm .xterm-message {
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    right: 0;
    z-index: 10;
    color: transparent;
    pointer-events: none;
}

.xterm .live-region {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

.xterm-dim {
    /* Dim should not apply to background, so the opacity of the foreground color is applied
     * explicitly in the generated class and reset to 1 here */
    opacity: 1 !important;
}

.xterm-underline-1 { text-decoration: underline; }
.xterm-underline-2 { -webkit-text-decoration: double underline; text-decoration: double underline; }
.xterm-underline-3 { -webkit-text-decoration: wavy underline; text-decoration: wavy underline; }
.xterm-underline-4 { -webkit-text-decoration: dotted underline; text-decoration: dotted underline; }
.xterm-underline-5 { -webkit-text-decoration: dashed underline; text-decoration: dashed underline; }

.xterm-overline {
    text-decoration: overline;
}

.xterm-overline.xterm-underline-1 { text-decoration: overline underline; }
.xterm-overline.xterm-underline-2 { -webkit-text-decoration: overline double underline; text-decoration: overline double underline; }
.xterm-overline.xterm-underline-3 { -webkit-text-decoration: overline wavy underline; text-decoration: overline wavy underline; }
.xterm-overline.xterm-underline-4 { -webkit-text-decoration: overline dotted underline; text-decoration: overline dotted underline; }
.xterm-overline.xterm-underline-5 { -webkit-text-decoration: overline dashed underline; text-decoration: overline dashed underline; }

.xterm-strikethrough {
    text-decoration: line-through;
}

.xterm-screen .xterm-decoration-container .xterm-decoration {
	z-index: 6;
	position: absolute;
}

.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer {
	z-index: 7;
}

.xterm-decoration-overview-ruler {
    z-index: 8;
    position: absolute;
    top: 0;
    right: 0;
    pointer-events: none;
}

.xterm-decoration-top {
    z-index: 2;
    position: relative;
}

.web-terminal-container {
  display: flex;
  flex-direction: column;
  height: calc(100vh - 120px);
  background: #1e1e1e;
  border-radius: 8px;
  overflow: hidden;
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
  margin: 20px;
}

.terminal-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 20px;
  background: linear-gradient(135deg, #2d2d2d 0%, #1a1a1a 100%);
  border-bottom: 1px solid #3e3e3e;
  min-height: 50px;
}

.terminal-title {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 16px;
  font-weight: 600;
  color: #d4d4d4;
  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}

.terminal-icon {
  font-size: 20px;
}

.connection-status {
  margin-left: 15px;
  padding: 4px 12px;
  border-radius: 12px;
  font-size: 13px;
  font-weight: 500;
  transition: all 0.3s ease;
}

.connection-status.connected {
  background: rgba(35, 209, 139, 0.15);
  color: #23d18b;
  border: 1px solid rgba(35, 209, 139, 0.3);
}

.connection-status.disconnected {
  background: rgba(241, 76, 76, 0.15);
  color: #f14c4c;
  border: 1px solid rgba(241, 76, 76, 0.3);
}

.terminal-actions {
  display: flex;
  gap: 10px;
}

.btn-clear {
  padding: 6px 16px;
  background: rgba(59, 142, 234, 0.2);
  color: #3b8eea;
  border: 1px solid rgba(59, 142, 234, 0.3);
  border-radius: 4px;
  cursor: pointer;
  font-size: 13px;
  font-weight: 500;
  transition: all 0.2s ease;
  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}

.btn-clear:hover {
  background: rgba(59, 142, 234, 0.3);
  border-color: rgba(59, 142, 234, 0.5);
}

.btn-clear:active {
  transform: scale(0.98);
}

.terminal-body {
  flex: 1 1;
  overflow: hidden;
  background: #1e1e1e;
  padding: 10px;
}

.terminal-content {
  width: 100%;
  height: 100%;
}

/* xterm.js 오버라이드 스타일 */
.terminal-content .xterm {
  height: 100%;
  padding: 5px;
}

.terminal-content .xterm-viewport {
  background-color: #1e1e1e !important;
}

.terminal-content .xterm-screen {
  background-color: #1e1e1e !important;
}

.terminal-footer {
  padding: 12px 20px;
  background: linear-gradient(135deg, #1a1a1a 0%, #2d2d2d 100%);
  border-top: 1px solid #3e3e3e;
  min-height: 60px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.quick-commands {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

.quick-label {
  color: #888;
  font-size: 13px;
  font-weight: 500;
  margin-right: 5px;
  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}

.quick-commands button {
  padding: 8px 16px;
  background: rgba(59, 142, 234, 0.15);
  color: #3b8eea;
  border: 1px solid rgba(59, 142, 234, 0.25);
  border-radius: 4px;
  cursor: pointer;
  font-size: 13px;
  font-weight: 500;
  transition: all 0.2s ease;
  font-family: 'Consolas', 'Courier New', monospace;
  white-space: nowrap;
}

.quick-commands button:hover {
  background: rgba(59, 142, 234, 0.25);
  border-color: rgba(59, 142, 234, 0.4);
  transform: translateY(-1px);
}

.quick-commands button:active {
  transform: translateY(0);
}

/* 모바일 최적화 */
@media (max-width: 768px) {
  .web-terminal-container {
    margin: 10px;
    height: calc(100vh - 100px);
  }

  .terminal-header {
    padding: 10px 15px;
    flex-wrap: wrap;
    gap: 10px;
  }

  .terminal-title {
    font-size: 14px;
  }

  .terminal-icon {
    font-size: 18px;
  }

  .connection-status {
    margin-left: 10px;
    padding: 3px 10px;
    font-size: 12px;
  }

  .btn-clear {
    padding: 5px 12px;
    font-size: 12px;
  }

  .terminal-footer {
    padding: 10px 15px;
  }

  .quick-commands {
    gap: 8px;
  }

  .quick-label {
    font-size: 12px;
    width: 100%;
    margin-bottom: 5px;
  }

  .quick-commands button {
    padding: 10px 14px;
    font-size: 12px;
    flex: 1 1;
    min-width: calc(50% - 4px);
    max-width: calc(50% - 4px);
  }

  /* 스마트폰에서 터치 영역 확대 */
  .quick-commands button,
  .btn-clear {
    min-height: 44px;
    touch-action: manipulation;
  }
}

/* 작은 스마트폰 (iPhone SE 등) */
@media (max-width: 375px) {
  .terminal-title {
    font-size: 13px;
  }

  .quick-commands button {
    font-size: 11px;
    padding: 8px 10px;
  }

  .web-terminal-container {
    margin: 5px;
  }
}

/* ===================================
   Enhanced Responsive Design System
   PC (>1024px) → Tablet (768-1024px) → Mobile (<768px) → Small (<480px)
   =================================== */

/* 태블릿 (768px - 1024px) */
@media (max-width: 1024px) and (min-width: 769px) {
  .web-terminal-container {
    margin: 16px;
    height: calc(100vh - 110px);
  }

  .terminal-header {
    padding: 10px 16px;
    min-height: 48px;
  }

  .terminal-title {
    font-size: 15px;
    gap: 8px;
  }

  .terminal-icon {
    font-size: 18px;
  }

  .connection-status {
    margin-left: 12px;
    padding: 3px 10px;
    font-size: 12px;
    border-radius: 10px;
  }

  .btn-clear {
    padding: 5px 14px;
    font-size: 12px;
    border-radius: 4px;
  }

  .terminal-body {
    padding: 8px;
  }

  .terminal-footer {
    padding: 10px 16px;
    min-height: 55px;
    gap: 10px;
  }

  .quick-commands {
    gap: 8px;
  }

  .quick-label {
    font-size: 12px;
  }

  .quick-commands button {
    padding: 7px 14px;
    font-size: 12px;
    min-width: auto;
    max-width: none;
  }

  .terminal-controls {
    margin-bottom: 6px;
  }

  .claude-mode-toggle {
    gap: 12px;
  }

  .toggle-label input[type="checkbox"] {
    width: 44px;
    height: 22px;
  }

  .toggle-label input[type="checkbox"]::before {
    width: 16px;
    height: 16px;
  }

  .toggle-label input[type="checkbox"]:checked::before {
    transform: translateX(22px);
  }

  .toggle-text {
    font-size: 13px;
  }

  .processing-indicator {
    padding: 3px 10px;
    font-size: 12px;
  }
}

/* 다크모드 강조 (이미 다크모드이지만 추가 스타일) */
.web-terminal-container * {
  scrollbar-width: thin;
  scrollbar-color: #3e3e3e #1e1e1e;
}

.web-terminal-container *::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}

.web-terminal-container *::-webkit-scrollbar-track {
  background: #1e1e1e;
}

.web-terminal-container *::-webkit-scrollbar-thumb {
  background: #3e3e3e;
  border-radius: 5px;
}

.web-terminal-container *::-webkit-scrollbar-thumb:hover {
  background: #4e4e4e;
}

/* 애니메이션 */
@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.web-terminal-container {
  animation: fadeIn 0.3s ease-out;
}

/* 커서 블링크 강조 */
.terminal-content .xterm-cursor-layer .xterm-cursor-block {
  animation: blink 1s step-end infinite;
}

@keyframes blink {
  0%, 50% {
    opacity: 1;
  }
  51%, 100% {
    opacity: 0;
  }
}

/* Claude 모드 토글 스타일 */
.terminal-controls {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 8px;
}

.claude-mode-toggle {
  display: flex;
  align-items: center;
  gap: 15px;
}

.toggle-label {
  display: flex;
  align-items: center;
  cursor: pointer;
  -webkit-user-select: none;
          user-select: none;
}

.toggle-label input[type="checkbox"] {
  position: relative;
  width: 48px;
  height: 24px;
  -webkit-appearance: none;
  appearance: none;
  background: rgba(100, 100, 100, 0.3);
  border: 1px solid rgba(100, 100, 100, 0.5);
  border-radius: 24px;
  transition: all 0.3s ease;
  cursor: pointer;
  margin-right: 10px;
}

.toggle-label input[type="checkbox"]:checked {
  background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);
  border-color: rgba(139, 92, 246, 0.5);
}

.toggle-label input[type="checkbox"]::before {
  content: '';
  position: absolute;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  top: 2px;
  left: 2px;
  background: #d4d4d4;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
  transition: all 0.3s ease;
}

.toggle-label input[type="checkbox"]:checked::before {
  transform: translateX(24px);
  background: var(--change-bg-elevated);
}

.toggle-text {
  color: #d4d4d4;
  font-size: 14px;
  font-weight: 500;
  display: flex;
  align-items: center;
  gap: 6px;
}

.processing-indicator {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 12px;
  background: rgba(245, 158, 11, 0.15);
  color: #f59e0b;
  border: 1px solid rgba(245, 158, 11, 0.3);
  border-radius: 12px;
  font-size: 13px;
  animation: pulse 2s ease-in-out infinite;
}

@keyframes pulse {
  0%, 100% {
    opacity: 0.7;
  }
  50% {
    opacity: 1;
  }
}

/* Claude 모드 빠른 명령 스타일 */
.quick-commands button[title] {
  position: relative;
}

.quick-commands button[title]:hover::after {
  content: attr(title);
  position: absolute;
  bottom: 100%;
  left: 50%;
  transform: translateX(-50%);
  padding: 4px 8px;
  background: rgba(0, 0, 0, 0.9);
  color: white;
  font-size: 11px;
  white-space: nowrap;
  border-radius: 3px;
  pointer-events: none;
  z-index: 1000;
  margin-bottom: 4px;
}

/* 모바일 반응형 추가 */
@media (max-width: 768px) {
  .terminal-controls {
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
  }

  .claude-mode-toggle {
    width: 100%;
    justify-content: space-between;
  }

  .processing-indicator {
    font-size: 12px;
    padding: 3px 10px;
  }
}

/* ===================================
   토스 스타일 자동매매 모달
   =================================== */

/* 모달 오버레이 */
.modal-overlay-change {
  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: 10000;
  padding: var(--change-spacing-md);
}

/* 모달 컨텐츠 */
.modal-content-change {
  background: var(--change-bg);
  border-radius: var(--change-radius);
  width: 100%;
  max-width: 800px !important;
  max-height: 90vh;
  display: flex;
  flex-direction: column;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
  animation: modalSlideUp 0.3s ease;
}

@keyframes modalSlideUp {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* 헤더 */
.modal-header-change {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--change-spacing-md);
  box-shadow: inset 0 -1px 0 0 var(--change-gray-200);
}

.modal-title-change {
  font-size: var(--change-font-title);
  font-weight: 700;
  color: var(--change-text);
  margin: 0;
}

.modal-close-change {
  background: none;
  border: none;
  font-size: 24px;
  color: var(--change-gray-600);
  cursor: pointer;
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  transition: all 0.2s ease;
}

.modal-close-change:hover {
  background: var(--change-gray-100);
  color: var(--change-text);
}

/* 바디 */
.modal-body-change {
  flex: 1 1;
  overflow-y: auto;
  padding: var(--change-spacing-md);
}

/* 푸터 */
.modal-footer-change {
  display: flex;
  gap: var(--change-spacing-sm);
  padding: var(--change-spacing-md);
  box-shadow: inset 0 1px 0 0 var(--change-gray-200);
}

.modal-footer-change button {
  flex: 1 1;
}

/* 입력 그룹 */
.input-group-change {
  display: flex;
  flex-direction: column;
  gap: var(--change-spacing-xs);
}

.input-hint-change {
  font-size: var(--change-font-caption);
  color: var(--change-gray-600);
}

/* 주문 요약 */
.order-summary-change {
  margin-top: 8px;
  padding: 10px 12px;
  background: #F9FAFB;
  background: var(--change-gray-50, #F9FAFB);
  border-radius: 8px;
  border-radius: var(--change-radius-sm, 8px);
  box-shadow: 0 0 0 1px #F2F4F6;
  box-shadow: 0 0 0 1px var(--change-gray-100, #F2F4F6);
  border: none;
}

.order-summary-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 3px 0;
}

.order-summary-label {
  font-size: 13px;
  color: #8B95A1;
  color: var(--change-gray-600, #8B95A1);
}

.order-summary-value {
  font-size: 14px;
  font-weight: 600;
  color: #191F28;
  color: var(--change-text, #191F28);
}

.order-summary-warning {
  margin-top: 6px;
  padding: 6px 8px;
  background: var(--change-bg-warning);
  color: #E65100;
  font-size: 12px;
  border-radius: 6px;
  font-weight: 500;
}

/* 다크모드 */
[data-theme="dark"] .order-summary-change {
  background: #333D4B;
  background: var(--change-gray-800, #333D4B);
  border-color: #4E5968;
  border-color: var(--change-gray-700, #4E5968);
}

[data-theme="dark"] .order-summary-value {
  color: #F9FAFB;
  color: var(--change-text-dark, #F9FAFB);
}

[data-theme="dark"] .order-summary-warning {
  background: #3E2723;
  color: #FFB74D;
}

/* 프리셋 요약 */
.preset-summary-change {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-gap: var(--change-spacing-md);
  gap: var(--change-spacing-md);
  padding: var(--change-spacing-md);
  background: var(--change-gray-50);
  border-radius: var(--change-radius);
}

.preset-summary-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--change-spacing-xs);
}

.preset-summary-label {
  font-size: var(--change-font-caption);
  color: var(--change-gray-600);
  font-weight: 600;
}

.preset-summary-value {
  font-size: var(--change-font-body);
  font-weight: 700;
  color: var(--change-text);
}

.preset-summary-value.positive {
  color: var(--change-bull);
}

.preset-summary-value.negative {
  color: var(--change-bear);
}

/* 체크박스 그룹 */
.checkbox-group-change {
  display: flex;
  flex-direction: column;
  gap: var(--change-spacing-sm);
  margin-top: var(--change-spacing-md);
}

.checkbox-label-change {
  display: flex;
  align-items: center;
  gap: var(--change-spacing-xs);
  font-size: var(--change-font-body);
  color: var(--change-text);
  cursor: pointer;
}

.checkbox-label-change input[type="checkbox"] {
  width: 20px;
  height: 20px;
  cursor: pointer;
}

/* ===================================
   Enhanced Responsive Design System
   PC (>1024px) → Tablet (768-1024px) → Mobile (<768px) → Small (<480px)
   =================================== */

/* 태블릿 (768px - 1024px) */
@media (max-width: 1024px) and (min-width: 769px) {
  .modal-overlay-change {
    padding: var(--change-spacing-sm);
  }

  .modal-content-change {
    max-width: 720px !important;
    max-height: 88vh;
  }

  .modal-header-change {
    padding: 14px 16px;
  }

  .modal-title-change {
    font-size: 20px;
  }

  .modal-body-change {
    padding: 14px 16px;
  }

  .preset-summary-change {
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
    padding: 14px;
  }

  .preset-summary-label {
    font-size: 11px;
  }

  .preset-summary-value {
    font-size: 14px;
  }

  .stock-info-grid {
    grid-template-columns: repeat(4, 1fr);
    gap: var(--change-spacing-xs);
  }

  .stock-info-label {
    font-size: 11px;
  }

  .stock-info-value {
    font-size: 14px;
  }

  .preset-buttons-compact {
    grid-template-columns: repeat(3, 1fr);
    gap: var(--change-spacing-xs);
  }

  .preset-btn-compact {
    padding: 10px 12px;
  }

  .time-condition-grid {
    grid-template-columns: repeat(4, 1fr);
    gap: var(--change-spacing-xs);
  }

  .time-condition-btn {
    min-height: 65px;
    padding: var(--change-spacing-xs);
  }

  .time-condition-label {
    font-size: 13px;
  }

  .time-condition-desc {
    font-size: 10px;
  }
}

/* 모바일 반응형 (<768px) */
@media (max-width: 768px) {
  .modal-overlay-change {
    padding: 0;
  }

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

  .preset-summary-change {
    grid-template-columns: 1fr;
  }

  .modal-footer-change {
    flex-direction: column;
  }

  .modal-footer-change button {
    width: 100%;
  }
}

/* 차트 버튼 */
.btn-chart-change {
  margin-top: 8px;
  padding: 8px 16px;
  background: var(--change-primary);
  color: white;
  border: none;
  border-radius: var(--change-radius-sm);
  cursor: pointer;
  font-size: var(--change-font-caption);
  font-weight: 600;
  transition: all 0.2s ease;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

.btn-chart-change:hover {
  background: var(--change-primary-dark);
  transform: translateY(-1px);
}

/* 주문유형 버튼 그룹 */
.button-group-change {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-gap: 8px;
  gap: 8px;
}

.btn-preset-change {
  padding: 14px 20px;
  background: var(--change-bg);
  box-shadow: 0 0 0 2px var(--change-gray-200);
  border: none;
  border-radius: var(--change-radius-sm);
  font-size: var(--change-font-body);
  font-weight: 600;
  color: var(--change-gray-600);
  cursor: pointer;
  transition: all 0.2s ease;
}

.btn-preset-change:hover {
  box-shadow: 0 0 0 2px var(--change-primary);
  color: var(--change-primary);
  transform: translateY(-1px);
}

.btn-preset-change.active {
  background: var(--change-primary);
  box-shadow: 0 0 0 2px var(--change-primary), 0 2px 8px rgba(49, 130, 246, 0.3);
  color: white;
}

/* 매수 버튼 활성화 상태 */
.btn-preset-change.active[onclick*="buy"] {
  background: var(--change-bull);
  box-shadow: 0 0 0 2px var(--change-bull);
}

/* 매도 버튼 활성화 상태 */
.btn-preset-change.active[onclick*="sell"] {
  background: var(--change-bear);
  box-shadow: 0 0 0 2px var(--change-bear);
}

/* 보유수량 표시 */
.holding-quantity-hint {
  font-size: 12px;
  color: var(--change-gray-600);
  margin-top: 4px;
  font-weight: 500;
}

/* 20일선 정보 */
.ma-info-inline {
  color: var(--change-text-secondary);
  font-size: 13px;
  margin-left: 8px;
}
/* 종목 정보 섹션 - 상단 */
.stock-info-section-change {
  margin-bottom: var(--change-spacing-md);
  padding: var(--change-spacing-md);
  background: var(--change-gray-50);
  border-radius: var(--change-radius);
}

.stock-info-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--change-spacing-md);
}

.stock-info-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  grid-gap: var(--change-spacing-sm);
  gap: var(--change-spacing-sm);
  flex: 1 1;
}

.btn-chart-floating {
  padding: 10px 20px;
  background: var(--change-primary);
  color: white;
  border: none;
  border-radius: var(--change-radius-sm);
  cursor: pointer;
  font-size: 14px;
  font-weight: 600;
  transition: all 0.2s ease;
  display: flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
  box-shadow: var(--change-shadow);
}

.btn-chart-floating:hover {
  background: var(--change-primary-dark);
  transform: translateY(-1px);
  box-shadow: var(--change-shadow-hover);
}

.btn-chart-floating i {
  font-size: 16px;
}

.stock-info-item {
  display: flex;
  flex-direction: column;
  gap: 4px;
  text-align: center;
  transition: background 0.2s ease;
}

.stock-info-item.clickable {
  cursor: pointer;
  border-radius: 8px;
  padding: 4px;
  margin: -4px;
}

.stock-info-item.clickable:hover {
  background: var(--change-gray-100);
}

.stock-info-label {
  font-size: 12px;
  color: var(--change-gray-600);
  font-weight: 500;
}

.stock-info-value {
  font-size: 16px;
  font-weight: 700;
  color: var(--change-text);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 2px;
}

.stock-info-value.positive {
  color: var(--change-bull);
}

.stock-info-value.negative {
  color: var(--change-bear);
}

/* 오른쪽 정렬 입력 필드 */
.input-change.text-right {
  text-align: right;
}

/* 프리셋 버튼 - 축소 버전 */
.preset-buttons-compact {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-gap: var(--change-spacing-sm);
  gap: var(--change-spacing-sm);
}

.preset-btn-compact {
  padding: 12px 16px;
  box-shadow: 0 0 0 2px var(--change-gray-200);
  border: none;
  border-radius: var(--change-radius-sm);
  background: var(--change-bg);
  cursor: pointer;
  transition: all 0.2s ease;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

.preset-btn-compact:hover {
  box-shadow: 0 0 0 2px var(--change-primary), var(--change-shadow);
  transform: translateY(-1px);
}

.preset-btn-compact.active {
  box-shadow: 0 0 0 2px var(--change-primary);
  background: var(--change-primary);
  color: white;
}

.preset-icon-small {
  font-size: 18px;
}

.preset-title-small {
  font-size: 14px;
  font-weight: 600;
}

/* 모바일 반응형 */
@media (max-width: 768px) {
  .stock-info-header {
    flex-direction: column;
    align-items: stretch;
  }

  .stock-info-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: var(--change-spacing-xs);
  }

  .btn-chart-floating {
    width: 100%;
    justify-content: center;
  }

  .preset-buttons-compact {
    grid-template-columns: 1fr;
  }
}

/* 차트 모달 */
.chart-modal-overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.7);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 10001; /* TradingRuleModal보다 위에 표시 */
  padding: var(--change-spacing-md);
}

.chart-modal-content {
  background: var(--change-bg);
  border-radius: var(--change-radius);
  max-width: 90%;
  width: 100%;
  max-height: 90vh;
  overflow: hidden;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
}

.chart-modal-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--change-spacing-lg);
  box-shadow: inset 0 -1px 0 0 var(--change-gray-200);
}

.chart-modal-header h3 {
  margin: 0;
  font-size: var(--change-font-title);
  font-weight: 700;
  color: var(--change-text);
}

.close-btn {
  width: 40px;
  height: 40px;
  border: none;
  background: var(--change-gray-100);
  border-radius: 50%;
  font-size: 24px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--change-gray-700);
  transition: all 0.2s ease;
}

.close-btn:hover {
  background: var(--change-gray-200);
  transform: scale(1.1);
}

.chart-modal-body {
  padding: 0;
  height: 600px;
  overflow: hidden;
}

.tradingview-widget-container {
  height: 100%;
  width: 100%;
}

.tradingview-widget-copyright {
  padding: 8px;
  text-align: center;
  background: var(--change-gray-50);
}

@media (max-width: 768px) {
  .chart-modal-content {
    max-width: 100%;
    max-height: 100vh;
  }

  .chart-modal-body {
    height: 500px;
  }
}

/* ===================================
   실행 시점 선택 스타일
   =================================== */
.time-condition-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-gap: var(--change-spacing-sm);
  gap: var(--change-spacing-sm);
}

.time-condition-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--change-spacing-sm);
  background: var(--change-gray-50);
  box-shadow: 0 0 0 2px var(--change-gray-200);
  border: none;
  border-radius: var(--change-radius);
  cursor: pointer;
  transition: all 0.2s ease;
  min-height: 70px;
}

.time-condition-btn:hover {
  background: var(--change-gray-100);
  box-shadow: 0 0 0 2px var(--change-gray-300);
}

.time-condition-btn.active {
  background: rgba(49, 130, 246, 0.1);
  box-shadow: 0 0 0 2px var(--change-primary);
}

.time-condition-label {
  font-size: 14px;
  font-weight: 600;
  color: var(--change-text);
  margin-bottom: 2px;
}

.time-condition-btn.active .time-condition-label {
  color: var(--change-primary);
}

.time-condition-desc {
  font-size: 11px;
  color: var(--change-gray-500);
  text-align: center;
}

/* 태블릿 (768px 이하) */
@media (max-width: 768px) {
  .time-condition-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 6px;
  }

  .time-condition-btn {
    min-height: 60px;
    padding: 10px 8px;
  }

  .time-condition-label {
    font-size: 13px;
  }

  .time-condition-desc {
    font-size: 10px;
  }
}

/* 모바일 (480px 이하) */
@media (max-width: 480px) {
  .time-condition-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 4px;
  }

  .time-condition-btn {
    min-height: 50px;
    padding: 8px 6px;
  }

  .time-condition-label {
    font-size: 11px;
  }

  .time-condition-desc {
    font-size: 9px;
  }
}

.popup-overlay {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: rgba(0, 0, 0, 0.6);
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 1000;
    -webkit-backdrop-filter: blur(4px);
            backdrop-filter: blur(4px);
    animation: overlay-fade-in 0.2s ease-out;
  }

  @keyframes overlay-fade-in {
    from {
      opacity: 0;
    }
    to {
      opacity: 1;
    }
  }
  
  .popup-content {
    background-color: var(--change-bg-elevated);
    padding: var(--space-8);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-xl);
    width: 90%;
    max-width: 400px;
    position: relative;
    animation: popup-fade-in 0.3s ease-out;
    border: 1px solid var(--gray-200);
  }
  
  @keyframes popup-fade-in {
    from {
      opacity: 0;
      transform: scale(0.9);
    }
    to {
      opacity: 1;
      transform: scale(1);
    }
  }
  
  .popup-close-btn {
    position: absolute;
    top: var(--space-3);
    right: var(--space-4);
    background: none;
    border: none;
    font-size: var(--font-size-h3);
    cursor: pointer;
    color: var(--gray-400);
    line-height: 1;
    width: 32px;
    height: 32px;
    border-radius: var(--radius);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: var(--transition-fast);
  }
  
  .popup-close-btn:hover {
    color: var(--gray-700);
    background-color: var(--gray-100);
  }
  
  .popup-content h3 {
    margin-top: 0;
    margin-bottom: var(--space-5);
    color: var(--gray-900);
    border-bottom: 1px solid var(--gray-200);
    padding-bottom: var(--space-3);
    font-size: 1.25rem;
    font-weight: 600;
  }
  
  .details-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    grid-gap: var(--space-4);
    gap: var(--space-4);
    margin-bottom: var(--space-5);
  }
  
  .detail-item {
    display: flex;
    flex-direction: column;
    padding: var(--space-3);
    background-color: var(--gray-50);
    border-radius: var(--radius);
    border: 1px solid var(--gray-100);
    transition: var(--transition-fast);
  }
  
  .detail-item:hover {
    background-color: var(--gray-100);
  }
  
  .detail-item .label {
    font-size: var(--font-size-sm);
    color: var(--gray-600);
    margin-bottom: var(--space-1);
    font-weight: 500;
  }
  
  .detail-item .value {
    font-size: 1.125rem;
    font-weight: 600;
    color: var(--gray-900);
  }
  
  .popup-actions {
    text-align: center;
    margin-top: var(--space-5);
  }
  
  .popup-actions button {
    width: 100%;
    padding: var(--space-3) var(--space-4);
    font-size: var(--font-size-base);
    font-weight: 500;
    border: none;
    border-radius: var(--radius);
    background-color: var(--primary-600);
    color: white;
    cursor: pointer;
    transition: var(--transition);
  }
  
  .popup-actions button:hover {
    background-color: var(--primary-700);
    transform: translateY(-1px);
    box-shadow: var(--shadow-md);
  }

  /* Metrics chips */
  .metrics-chips {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
    margin-top: var(--space-4);
  }

  .metrics-chips .chip {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    background-color: var(--gray-50);
    border: 1px solid var(--gray-200);
    color: var(--gray-700);
    border-radius: 999px;
    padding: 6px 10px;
    font-size: 0.8rem;
    font-weight: 500;
  }

  .metrics-chips .chip .chip-label {
    color: var(--gray-600);
  }

  .metrics-chips .chip .chip-value {
    color: var(--gray-900);
  }
  
  .text-red {
    color: var(--color-positive); /* 한국 주식 상승(빨간색) */
    font-weight: 600;
  }

  .text-blue {
    color: var(--color-negative); /* 한국 주식 하락(파란색) */
    font-weight: 600;
  }

  /* ===================================
     Enhanced Responsive Design System
     PC (>1024px) → Tablet (768-1024px) → Mobile (<768px) → Small (<480px)
     =================================== */

  /* 태블릿 (768px - 1024px) */
  @media (max-width: 1024px) and (min-width: 769px) {
    .popup-content {
      width: 85%;
      max-width: 380px;
      padding: var(--space-6);
    }

    .popup-close-btn {
      width: 30px;
      height: 30px;
      font-size: 1.3rem;
    }

    .popup-content h3 {
      font-size: 1.15rem;
      margin-bottom: var(--space-4);
    }

    .details-grid {
      grid-template-columns: repeat(2, 1fr);
      gap: var(--space-3);
    }

    .detail-item {
      padding: var(--space-3);
    }

    .detail-item .label {
      font-size: 0.8rem;
    }

    .detail-item .value {
      font-size: 1rem;
    }

    .metrics-chips .chip {
      padding: 5px 9px;
      font-size: 0.75rem;
    }

    .popup-actions button {
      padding: var(--space-3);
    }
  }

  /* 모바일 반응형 개선 */
  @media (max-width: 768px) {
    .popup-content {
      width: 95%;
      max-width: none;
      margin: var(--space-4);
      padding: var(--space-6);
    }
    
    .details-grid {
      grid-template-columns: 1fr;
      gap: var(--space-3);
    }
    
    .popup-content h3 {
      font-size: 1.125rem;
      margin-bottom: var(--space-4);
    }
    
    .detail-item .value {
      font-size: var(--font-size-base);
    }
    
    .popup-close-btn {
      top: var(--space-2);
      right: var(--space-3);
      width: 28px;
      height: 28px;
      font-size: 1.25rem;
    }
  }
  
  .error-message {
    color: var(--red-600);
    text-align: center;
  }

/* 모바일 반응형 추가 */
@media (max-width: 768px) {
  .popup-overlay {
    padding: 10px;
    align-items: flex-start;
    padding-top: 20px;
  }

  .popup-content {
    width: 95%;
    max-width: none;
    max-height: 90vh;
    overflow-y: auto;
    padding: 20px;
    margin-top: 0;
  }

  .popup-close-btn {
    top: 8px;
    right: 12px;
    font-size: 1.8rem;
    padding: var(--spacing-xs);
    border-radius: 50%;
    background: rgba(0, 0, 0, 0.1);
  }

  .popup-content h3 {
    font-size: 1.2rem;
    margin-bottom: 16px;
    padding-right: 30px; /* 닫기 버튼 공간 확보 */
  }

  .details-grid {
    grid-template-columns: 1fr;
    gap: 12px;
    margin-bottom: 16px;
  }

  .detail-item {
    padding: 12px;
    border-radius: var(--spacing-sm);
  }

  .detail-item .label {
    font-size: 0.85rem;
    margin-bottom: 6px;
  }

  .detail-item .value {
    font-size: 1.1rem;
  }

  .popup-actions button {
    padding: 14px;
    font-size: var(--font-size-base);
    min-height: var(--button-height-md); /* 터치 친화적 크기 */
  }
}

@media (max-width: 480px) {
  .popup-overlay {
    padding: 5px;
    padding-top: 10px;
  }

  .popup-content {
    width: 100%;
    border-radius: var(--radius) 12px 0 0;
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    max-height: 85vh;
    margin-top: auto;
  }

  .popup-content h3 {
    font-size: 1.1rem;
    border-bottom: 2px solid #eee;
    padding-bottom: 12px;
  }

  .detail-item {
    padding: 10px 12px;
    background-color: #f9f9f9;
    border: 1px solid #e9ecef;
  }

  .detail-item .label {
    font-size: 0.8rem;
  }

  .detail-item .value {
    font-size: var(--font-size-base);
  }

  .popup-actions {
    margin-top: 16px;
    padding-top: 16px;
    border-top: 1px solid #e9ecef;
  }

  .popup-actions button {
    padding: var(--spacing-md);
    font-size: var(--font-size-base);
    border-radius: var(--spacing-sm);
    font-weight: 600;
  }
}

/* 차트 섹션 */
.chart-section {
  margin-top: var(--space-6);
  padding-top: var(--space-4);
  border-top: 1px solid var(--gray-200);
}

.chart-section h4 {
  margin: 0 0 var(--space-3) 0;
  font-size: 1rem;
  font-weight: 600;
  color: var(--gray-900);
}

/* 팝업 크기 조정 (차트를 위해) */
.popup-content {
  max-width: 800px !important;
  max-height: 90vh;
  overflow-y: auto;
}

@media (max-width: 768px) {
  .chart-section {
    margin-top: var(--space-4);
    padding-top: var(--space-3);
  }
}

/* ===================================
   토스 스타일 대시보드 (Refactored)
   =================================== */

:root {
  /* Light Mode Variables (Default) */
  --bg-primary: #F2F4F6;
  --bg-secondary: #FFFFFF;
  --bg-card: #FFFFFF;
  --bg-hover: #F9FAFB;

  --text-primary: #191F28;
  --text-secondary: #4E5968;
  --text-muted: #8B95A1;

  --border-color: #E5E8EB;

  --toss-blue: #3182F6;
  --toss-blue-dark: #1B64DA;

  /* Change Prefix Variables (Light Mode) */
  --change-bg: #F2F4F6;
  --change-card-bg: #FFFFFF;
  --change-gray-50: #F9FAFB;
  --change-gray-100: #F2F4F6;
  --change-gray-200: #E5E8EB;
  --change-gray-600: #6B7684;
  --change-gray-700: #4E5968;
  --change-text: #191F28;
  --change-text-primary: #191F28;
  --change-text-secondary: #4E5968;
  --change-primary: #3182F6;
  --change-primary-dark: #1B64DA;
  --change-bull: #ef4444;
  --change-bear: #3b82f6;
  --change-positive: var(--change-bull);
  --change-negative: var(--change-bear);
  --change-up: var(--change-bull);
  --change-down: var(--change-bear);

  --change-radius: 16px;
  --change-radius-sm: 8px;
  --change-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
  --change-shadow-sm: 0 1px 4px rgba(0, 0, 0, 0.05);

  --change-spacing-xs: 4px;
  --change-spacing-sm: 8px;
  --change-spacing-md: 16px;
  --change-spacing-lg: 24px;
  --change-spacing-xl: 32px;

  --change-font-caption: 12px;
  --change-font-body: 14px;
}

.dashboard-change {
  padding: var(--spacing-md);
  background-color: #F2F4F6;
  background-color: var(--bg-primary);
  min-height: 100vh;
  transition: background-color 0.3s ease, color 0.3s ease;
  color: #191F28;
  color: var(--change-text-primary);
}

[data-theme="dark"] {
  /* Dark Mode Variables */
  --bg-primary: #202632;
  --bg-secondary: #2C3542;
  --bg-card: #2C3542;
  --bg-hover: #364050;

  --text-primary: #F2F4F6;
  --text-secondary: #B0B8C1;
  --text-muted: #6B7684;

  --border-color: #4E5968;

  /* Change Prefix Variables (Dark Mode) */
  --change-bg: #202632;
  --change-card-bg: #2C3542;
  --change-gray-50: #333D4B;
  --change-gray-100: #4E5968;
  --change-gray-200: #4E5968;
  --change-gray-600: #B0B8C1;
  --change-gray-700: #D1D6DB;
  --change-text: #F2F4F6;
  --change-text-primary: #F2F4F6;
  --change-text-secondary: #B0B8C1;
  --change-primary: #3182F6;
  --change-primary-dark: #1B64DA;
  --change-bull: #FF6E6E;
  --change-bear: #60A5FA;
  --change-positive: var(--change-bull);
  --change-negative: var(--change-bear);
  --change-up: var(--change-bull);
  --change-down: var(--change-bear);

  --change-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
  --change-shadow-sm: 0 1px 4px rgba(0, 0, 0, 0.2);
}

/* 헤더 */
.dashboard-header-change {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--spacing-lg);
}

.dashboard-title-change {
  font-size: 28px;
  font-weight: 700;
  color: #191F28;
  color: var(--change-text-primary);
  margin: 0;
}

.refresh-btn-change {
  background: #F9FAFB;
  background: var(--change-gray-50);
  border: none;
  border-radius: 50%;
  width: 44px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all 0.2s ease;
  color: #4E5968;
  color: var(--change-text-secondary);
}

.refresh-btn-change:hover {
  background: #F2F4F6;
  background: var(--change-gray-100);
  color: #191F28;
  color: var(--change-text-primary);
}

/* 프리미엄 로딩 UI */
.loading-overlay-premium {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: #F2F4F6;
  background: var(--bg-primary);
  opacity: 0.95;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 9999;
  -webkit-backdrop-filter: blur(5px);
          backdrop-filter: blur(5px);
  transition: all 0.3s ease;
}

.loading-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  animation: slideUpFade 0.5s ease-out;
}

.loading-logo-pulse {
  position: relative;
  width: 60px;
  height: 60px;
  margin-bottom: 24px;
}

.logo-circle {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: #3182F6;
  background: var(--toss-blue);
  border-radius: 50%;
  opacity: 0.2;
  animation: pulse-ring 2s cubic-bezier(0.215, 0.61, 0.355, 1) infinite;
}

.logo-circle-inner {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 24px;
  height: 24px;
  background: #3182F6;
  background: var(--toss-blue);
  border-radius: 50%;
  box-shadow: 0 0 20px rgba(49, 130, 246, 0.5);
  animation: pulse-dot 2s cubic-bezier(0.455, 0.03, 0.515, 0.955) infinite;
}

.loading-title {
  font-size: 20px;
  font-weight: 700;
  color: #191F28;
  color: var(--change-text-primary);
  margin: 0 0 8px 0;
}

.loading-desc {
  font-size: 14px;
  color: #4E5968;
  color: var(--change-text-secondary);
  margin: 0;
}

@keyframes pulse-ring {
  0% {
    transform: scale(0.8);
    opacity: 0.5;
  }

  100% {
    transform: scale(2.5);
    opacity: 0;
  }
}

@keyframes pulse-dot {
  0% {
    transform: translate(-50%, -50%) scale(1);
  }

  50% {
    transform: translate(-50%, -50%) scale(1.2);
  }

  100% {
    transform: translate(-50%, -50%) scale(1);
  }
}

@keyframes slideUpFade {
  from {
    opacity: 0;
    transform: translateY(20px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* 메트릭 그리드 */
.metrics-grid-change {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-gap: var(--spacing-md);
  gap: var(--spacing-md);
}

.metric-card-change {
  background: #FFFFFF;
  background: var(--change-card-bg);
  border-radius: var(--radius-md);
  padding: var(--spacing-lg);
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05), 0 0 0 1px #E5E8EB;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05), 0 0 0 1px var(--change-gray-200);
  transition: all 0.2s ease;
  border: none;
}

.metric-card-change:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

.metric-label {
  font-size: 14px;
  color: #4E5968;
  color: var(--change-text-secondary);
  font-weight: 600;
  margin-bottom: var(--spacing-xs);
}

.metric-value {
  font-size: 28px;
  font-weight: 700;
  color: #191F28;
  color: var(--change-text-primary);
  display: flex;
  align-items: baseline;
  gap: 4px;
}

.metric-value.positive {
  color: var(--stock-red) !important;
}

.metric-value.negative {
  color: var(--stock-blue) !important;
}

.metric-unit {
  font-size: 16px;
  font-weight: 500;
  color: #4E5968;
  color: var(--change-text-secondary);
}

.metric-subtext {
  font-size: 14px;
  font-weight: 600;
  margin-top: var(--spacing-xs);
  color: #4E5968;
  color: var(--change-text-secondary);
}

.metric-subtext.positive {
  color: var(--stock-red) !important;
}

.metric-subtext.negative {
  color: var(--stock-blue) !important;
}

/* 리밸런싱 아이콘 버튼 */
.section-title-change .rebalancing-icon-btn {
  background: none;
  border: none;
  padding: 4px 8px;
  margin-left: 8px;
  cursor: pointer;
  color: #4E5968;
  color: var(--change-text-secondary);
  font-size: 18px;
  transition: all 0.2s;
  border-radius: 4px;
  display: inline-flex;
  align-items: center;
  vertical-align: middle;
}

.section-title-change .rebalancing-icon-btn:hover {
  background: #F2F4F6;
  background: var(--change-gray-100);
  color: #191F28;
  color: var(--change-text-primary);
}

/* 리밸런싱 인라인 섹션 */
.rebalancing-inline {
  margin-top: 24px;
  padding: 20px;
  background: #F9FAFB;
  background: var(--change-gray-50);
  border-radius: 12px;
  border: 1px solid #E5E8EB;
  border: 1px solid var(--change-gray-200);
}

.rebalancing-title {
  font-size: 16px;
  font-weight: 600;
  margin-bottom: 16px;
  color: #191F28;
  color: var(--change-text-primary);
}

.rebalancing-inline h4 {
  font-size: 14px;
  font-weight: 600;
  margin: 16px 0 12px 0;
  color: #4E5968;
  color: var(--change-text-secondary);
}

.rebalancing-info-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-gap: 12px;
  gap: 12px;
}

.rebalancing-info-item {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.info-label {
  font-size: 12px;
  color: #4E5968;
  color: var(--change-text-secondary);
}

.info-value {
  font-size: 15px;
  font-weight: 600;
  color: #191F28;
  color: var(--change-text-primary);
}

.positions-list-compact {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.position-item-compact {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 8px 12px;
  background: #FFFFFF;
  background: var(--change-card-bg);
  border-radius: 8px;
  border: 1px solid #E5E8EB;
  border: 1px solid var(--change-gray-200);
}

.position-stock {
  font-weight: 600;
  color: #191F28;
  color: var(--change-text-primary);
}

.position-quantity {
  color: #4E5968;
  color: var(--change-text-secondary);
  font-size: 13px;
}

.position-risk {
  color: #4E5968;
  color: var(--change-text-secondary);
  font-size: 13px;
}

.position-more {
  text-align: center;
  padding: 8px;
  color: #4E5968;
  color: var(--change-text-secondary);
  font-size: 13px;
}

/* 보유 종목 그리드 */
.holdings-grid-change {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  grid-gap: var(--spacing-md);
  gap: var(--spacing-md);
}

/* 테이블 스타일 (Toss Style) */
.table-container-change {
  overflow-x: auto;
  background: #FFFFFF;
  background: var(--change-card-bg);
  border-radius: var(--radius-md);
  border: 1px solid #E5E8EB;
  border: 1px solid var(--change-gray-200);
}

.holdings-table-change {
  width: 100%;
  border-collapse: collapse;
  min-width: 800px;
  /* 모바일에서 스크롤 발생 */
}

.holdings-table-change th {
  padding: 12px 16px;
  text-align: left;
  font-size: 13px;
  font-weight: 600;
  color: #4E5968;
  color: var(--change-text-secondary);
  background: #F9FAFB;
  background: var(--change-gray-50);
  border-bottom: 1px solid #E5E8EB;
  border-bottom: 1px solid var(--change-gray-200);
  white-space: nowrap;
}

.holdings-table-change td {
  padding: 16px 12px;
  font-size: 15px;
  color: #191F28;
  color: var(--change-text-primary);
  border-bottom: 1px solid #E5E8EB;
  border-bottom: 1px solid var(--change-gray-200);
}

.holdings-table-change tr:last-child td {
  border-bottom: none;
}

.holdings-table-change tr:hover {
  background-color: #F2F4F6;
  background-color: var(--change-gray-100);
}

.text-right {
  text-align: right;
}

.text-center {
  text-align: center;
}

.stock-name-cell {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.stock-name {
  font-weight: 600;
  color: #191F28;
  color: var(--change-text-primary);
}

.stock-code {
  font-size: 12px;
  color: #4E5968;
  color: var(--change-text-secondary);
}

/* 액션 버튼 */
.btn-action-change {
  background: #F9FAFB;
  background: var(--change-gray-50);
  color: #191F28;
  color: var(--change-text-primary);
  border: 1px solid #E5E8EB;
  border: 1px solid var(--change-gray-200);
  border-radius: 6px;
  padding: 6px 12px;
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

.btn-action-change:hover {
  background: #F2F4F6;
  background: var(--change-gray-100);
  transform: translateY(-1px);
}

/* 자동매매 규칙 */
.section-header-with-action {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--spacing-md);
}

.rule-count-badge {
  background: #3182F6;
  background: var(--toss-blue);
  color: white;
  padding: 4px 8px;
  border-radius: 12px;
  font-size: 12px;
  font-weight: 600;
  margin-left: 8px;
}

.rules-list-change {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-sm);
}

.rules-list-scrollable {
  max-height: 500px;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding-right: 4px;
}

/* 종목별 규칙 그룹 (아코디언) */
.rule-group-change {
  background: #FFFFFF;
  background: var(--change-card-bg);
  border-radius: var(--radius-md);
  border: 1px solid #E5E8EB;
  border: 1px solid var(--change-gray-200);
  margin-bottom: 8px;
}

.rule-group-header {
  padding: 14px 16px;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 8px;
  font-weight: 600;
  -webkit-user-select: none;
          user-select: none;
  list-style: none;
}

.rule-group-header::-webkit-details-marker { display: none; }

.rule-group-header::before {
  content: '\25B8';
  transition: transform 0.2s;
  font-size: 12px;
  color: #8B95A1;
}

.rule-group-change[open] .rule-group-header::before {
  transform: rotate(90deg);
}

.rule-group-body {
  padding: 0 8px 8px;
}

.rule-group-body .rule-card-change {
  border: none;
  border-top: 1px solid #E5E8EB;
  border-top: 1px solid var(--change-gray-200);
  border-radius: 0;
  margin-bottom: 0;
}

.rule-group-body .rule-card-change:first-child {
  border-top: 1px solid #E5E8EB;
  border-top: 1px solid var(--change-gray-200);
}

[data-theme="dark"] .rule-group-change {
  background: #FFFFFF;
  background: var(--change-card-bg);
  border-color: #E5E8EB;
  border-color: var(--change-gray-200);
}

.rule-card-change {
  background: #FFFFFF;
  background: var(--change-card-bg);
  border: 1px solid #E5E8EB;
  border: 1px solid var(--change-gray-200);
  border-radius: var(--radius-md);
  padding: 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  transition: all 0.2s;
}

.rule-card-change:hover {
  border-color: #3182F6;
  border-color: var(--toss-blue);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
}

.rule-info {
  flex: 1 1;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.rule-stock {
  display: flex;
  align-items: center;
  gap: 8px;
}

.rule-stock-name {
  font-weight: 600;
  color: #191F28;
  color: var(--change-text-primary);
  font-size: 16px;
}

.rule-stock-code {
  font-size: 13px;
  color: #4E5968;
  color: var(--change-text-secondary);
}

.rule-condition {
  font-size: 14px;
  color: #4E5968;
  color: var(--change-text-secondary);
}

.rule-price-info {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 4px;
}

.rule-target-price {
  font-weight: 600;
  color: #191F28;
  color: var(--change-text-primary);
}

.rule-current-price {
  font-size: 13px;
  color: #4E5968;
  color: var(--change-text-secondary);
}

.price-change.positive {
  color: var(--stock-red);
}

.price-change.negative {
  color: var(--stock-blue);
}

.condition-status {
  font-size: 12px;
  font-weight: 600;
  color: #3182F6;
  color: var(--toss-blue);
  background: #F9FAFB;
  background: var(--change-gray-50);
  padding: 2px 6px;
  border-radius: 4px;
  margin-left: 8px;
}

.rule-actions {
  display: flex;
  gap: 8px;
}

.btn-icon-change {
  width: 36px;
  height: 36px;
  border-radius: 8px;
  border: 1px solid #E5E8EB;
  border: 1px solid var(--change-gray-200);
  background: #FFFFFF;
  background: var(--change-card-bg);
  color: #4E5968;
  color: var(--change-text-secondary);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all 0.2s;
}

.btn-icon-change:hover {
  background: #F2F4F6;
  background: var(--change-gray-100);
  color: #191F28;
  color: var(--change-text-primary);
  border-color: #4E5968;
  border-color: var(--change-text-secondary);
}

/* 빈 상태 */
.empty-state-change {
  text-align: center;
  padding: 40px;
  color: #4E5968;
  color: var(--change-text-secondary);
  background: #FFFFFF;
  background: var(--change-card-bg);
  border-radius: var(--radius-md);
  border: 1px dashed #E5E8EB;
  border: 1px dashed var(--change-gray-200);
}

.empty-state-change p {
  margin: 8px 0;
}

.empty-state-hint {
  font-size: 13px;
  color: #4E5968;
  color: var(--change-text-secondary);
}

/* 종목 검색 섹션 */
.search-section-change {
  margin-top: var(--spacing-xl);
  background: #FFFFFF;
  background: var(--change-card-bg);
  border-radius: var(--radius-lg);
  padding: var(--spacing-lg);
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.05);
  border: 1px solid #E5E8EB;
  border: 1px solid var(--change-gray-200);
}

.section-title-change {
  font-size: 20px;
  font-weight: 700;
  color: #191F28;
  color: var(--change-text-primary);
  margin-bottom: 16px;
  display: flex;
  align-items: center;
}

.search-input-wrapper-change {
  position: relative;
  margin-bottom: 16px;
}

.search-input-change {
  width: 100%;
  padding: 16px 48px 16px 24px;
  font-size: 16px;
  background: #F9FAFB;
  background: var(--change-gray-50);
  border: 2px solid transparent;
  border-radius: 50px;
  color: #191F28;
  color: var(--change-text-primary);
  transition: all 0.2s ease;
}

.search-input-change:focus {
  outline: none;
  background: #FFFFFF;
  background: var(--change-card-bg);
  border-color: #3182F6;
  border-color: var(--toss-blue);
  box-shadow: 0 0 0 4px rgba(49, 130, 246, 0.1);
}

.search-loading-change {
  position: absolute;
  right: 16px;
  top: 50%;
  transform: translateY(-50%);
}

.spinner-small {
  width: 20px;
  height: 20px;
  border: 2px solid #E5E8EB;
  border: 2px solid var(--change-gray-200);
  border-top-color: #3182F6;
  border-top-color: var(--toss-blue);
  border-radius: 50%;
  animation: spin 0.6s linear infinite;
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

.search-results-change {
  border: 1px solid #E5E8EB;
  border: 1px solid var(--change-gray-200);
  border-radius: var(--radius-md);
  overflow: hidden;
  max-height: 400px;
  overflow-y: auto;
  background: #FFFFFF;
  background: var(--change-card-bg);
}

.search-result-item-change {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px;
  border-bottom: 1px solid #E5E8EB;
  border-bottom: 1px solid var(--change-gray-200);
  transition: background 0.2s ease;
}

.search-result-item-change:last-child {
  border-bottom: none;
}

.search-result-item-change:hover {
  background: #F2F4F6;
  background: var(--change-gray-100);
}

.result-info-change {
  display: flex;
  align-items: center;
  gap: 12px;
  flex: 1 1;
}

.result-name-change {
  font-size: 16px;
  font-weight: 600;
  color: #191F28;
  color: var(--change-text-primary);
}

.result-code-change {
  font-size: 14px;
  color: #4E5968;
  color: var(--change-text-secondary);
}

.result-price-change {
  font-size: 15px;
  font-weight: 600;
  color: #191F28;
  color: var(--change-text-primary);
  margin-left: auto;
}

.btn-sm-change {
  padding: 6px 12px;
  font-size: 13px;
  border-radius: 6px;
  background: #3182F6;
  background: var(--toss-blue);
  color: white;
  border: none;
  cursor: pointer;
  transition: background 0.2s;
}

.btn-sm-change:hover {
  background: #1B64DA;
  background: var(--toss-blue-dark);
}

/* 기능 메뉴 컴팩트 그리드 */
.features-grid-compact {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-gap: var(--spacing-sm);
  gap: var(--spacing-sm);
}

.feature-btn-compact {
  background: #FFFFFF;
  background: var(--change-card-bg);
  border: 1px solid #E5E8EB;
  border: 1px solid var(--change-gray-200);
  border-radius: var(--radius-md);
  padding: 16px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  transition: all 0.2s ease;
}

.feature-btn-compact:hover {
  border-color: #3182F6;
  border-color: var(--toss-blue);
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
}

.feature-btn-compact i {
  font-size: 24px;
  color: #3182F6;
  color: var(--toss-blue);
  margin-bottom: 4px;
}

.feature-btn-compact span {
  font-size: 14px;
  font-weight: 600;
  color: #191F28;
  color: var(--change-text-primary);
}



@keyframes slideDown {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.accordion-icon {
  font-size: 12px;
  color: #4E5968;
  color: var(--change-text-secondary);
  transition: transform 0.3s ease;
}

.accordion-icon.expanded {
  transform: rotate(180deg);
}

/* 모바일 반응형 (768px 이하) */
@media (max-width: 768px) {
  .dashboard-change {
    padding: var(--spacing-sm);
  }

  .metrics-grid-change {
    grid-template-columns: 1fr;
    gap: 12px;
  }

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

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

  .dashboard-title-change {
    font-size: 22px;
  }
}

.accordion-icon {
  font-size: 14px;
  color: #6B7684;
  color: var(--change-gray-600);
  transition: transform 0.3s ease;
}

.accordion-icon.expanded {
  transform: rotate(180deg);
}

.accordion-content {
  padding: 16px;
  padding: var(--change-spacing-md);
  animation: slideDown 0.3s ease;
}

@keyframes slideDown {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* 리밸런싱 섹션 스타일 */
.rebalancing-summary {
  background: #F2F4F6;
  background: var(--change-bg);
  border-radius: 16px;
  border-radius: var(--change-radius);
  padding: 16px;
  padding: var(--change-spacing-md);
}

.rebalancing-info-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 16px;
  grid-gap: 16px;
  grid-gap: var(--change-spacing-md);
  gap: var(--change-spacing-md);
  margin-bottom: 16px;
  margin-bottom: var(--change-spacing-md);
}

.rebalancing-info-item {
  display: flex;
  flex-direction: column;
  gap: 4px;
  gap: var(--change-spacing-xs);
  padding: 8px;
  padding: var(--change-spacing-sm);
  background: #F9FAFB;
  background: var(--change-gray-50);
  border-radius: 8px;
  border-radius: var(--change-radius-sm);
}

.rebalancing-info-label {
  font-size: 12px;
  font-size: var(--change-font-caption);
  color: #6B7684;
  color: var(--change-gray-600);
  font-weight: 500;
}

.rebalancing-info-value {
  font-size: 14px;
  font-size: var(--change-font-body);
  font-weight: 600;
  color: #191F28;
  color: var(--change-text);
}

.positions-preview {
  margin-top: 16px;
  margin-top: var(--change-spacing-md);
  padding-top: 16px;
  padding-top: var(--change-spacing-md);
  border-top: 1px solid #E5E8EB;
  border-top: 1px solid var(--change-gray-200);
}

.positions-preview h4 {
  font-size: 14px;
  font-size: var(--change-font-body);
  font-weight: 600;
  color: #191F28;
  color: var(--change-text);
  margin-bottom: 8px;
  margin-bottom: var(--change-spacing-sm);
}

.position-preview-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 8px;
  padding: var(--change-spacing-sm);
  background: #F9FAFB;
  background: var(--change-gray-50);
  border-radius: 8px;
  border-radius: var(--change-radius-sm);
  margin-bottom: 4px;
  margin-bottom: var(--change-spacing-xs);
}

.position-preview-name {
  font-size: 12px;
  font-size: var(--change-font-caption);
  font-weight: 500;
  color: #191F28;
  color: var(--change-text);
}

.position-preview-info {
  font-size: 12px;
  font-size: var(--change-font-caption);
  color: #6B7684;
  color: var(--change-gray-600);
}

.view-all-link {
  display: inline-block;
  margin-top: 8px;
  margin-top: var(--change-spacing-sm);
  color: #3182F6;
  color: var(--change-primary);
  font-size: 12px;
  font-size: var(--change-font-caption);
  font-weight: 600;
  text-decoration: none;
  transition: color 0.2s ease;
}

.view-all-link:hover {
  color: #1B64DA;
  color: var(--change-primary-dark);
}

/* 모바일 반응형 아코디언 */
@media (max-width: 768px) {
  .accordion-header {
    padding: 8px;
    padding: var(--change-spacing-sm);
  }

  .accordion-content {
    padding: 8px;
    padding: var(--change-spacing-sm);
  }

  .rebalancing-info-grid {
    grid-template-columns: 1fr;
  }
}

/* ===================================
   보유종목 테이블 스타일
   =================================== */

.table-container-change {
  width: 100%;
  overflow-x: auto;
  background: #F2F4F6;
  background: var(--change-bg);
  border-radius: 16px;
  border-radius: var(--change-radius);
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
  box-shadow: var(--change-shadow);
}

.holdings-table-change {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}

.holdings-table-change thead {
  background: #F9FAFB;
  background: var(--change-gray-50);
  box-shadow: inset 0 -2px 0 0 #E5E8EB;
  box-shadow: inset 0 -2px 0 0 var(--change-gray-200);
}

.holdings-table-change th {
  padding: 16px 12px;
  font-weight: 600;
  color: #4E5968;
  color: var(--change-gray-700);
  text-align: left;
  white-space: nowrap;
}

.holdings-table-change tbody tr {
  box-shadow: inset 0 -1px 0 0 #F2F4F6;
  box-shadow: inset 0 -1px 0 0 var(--change-gray-100);
  transition: background 0.2s ease;
}

.holdings-table-change tbody tr:hover {
  background: #F9FAFB;
  background: var(--change-gray-50);
}

.holdings-table-change tbody tr:last-child {
  border-bottom: none;
}

.holdings-table-change td {
  padding: 16px 12px;
  color: #191F28;
  color: var(--change-text);
}

/* 종목명 셀 */
.stock-name-cell {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.stock-name-cell .stock-name {
  font-weight: 600;
  color: #191F28;
  color: var(--change-text);
  font-size: 14px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 150px;
}

.stock-name-cell .stock-code {
  font-size: 12px;
  color: #6B7684;
  color: var(--change-gray-600);
}

/* 정렬 */
.text-right {
  text-align: right !important;
}

.text-center {
  text-align: center !important;
}

/* 한국식 색상 - 테이블용 */
.holdings-table-change .positive {
  color: #ef4444;
  color: var(--change-bull);
  font-weight: 600;
}

.holdings-table-change .negative {
  color: #3b82f6;
  color: var(--change-bear);
  font-weight: 600;
}

/* 작은 버튼 */
.btn-action-change.btn-sm {
  padding: 8px 12px;
  font-size: 14px;
  min-width: auto;
}

.btn-action-change.btn-sm svg {
  width: 16px;
  height: 16px;
}

/* 모바일 반응형 */
@media (max-width: 768px) {
  .table-container-change {
    font-size: 12px;
  }

  .holdings-table-change th,
  .holdings-table-change td {
    padding: 12px 8px;
  }

  .holdings-table-change th {
    font-size: 12px;
  }

  .stock-name-cell .stock-name {
    font-size: 13px;
  }

  .stock-name-cell .stock-code {
    font-size: 11px;
  }

  /* 모바일에서 수익/손실 색상 강제 적용 */
  .holdings-table-change .positive,
  .holdings-table-change td.positive {
    color: #ef4444 !important;
    color: var(--change-bull) !important;
  }

  .holdings-table-change .negative,
  .holdings-table-change td.negative {
    color: #3b82f6 !important;
    color: var(--change-bear) !important;
  }
}

/* 지수 롤링 배너 스타일 */
.index-rolling-banner {
  background-color: #FFFFFF;
  background-color: var(--change-card-bg);
  border-radius: 16px;
  padding: 12px 16px;
  margin-bottom: 16px;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05);
  box-shadow: var(--change-shadow-sm);
  cursor: pointer;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
  overflow: hidden;
  position: relative;
}

.index-rolling-banner:active {
  transform: scale(0.98);
}

.index-rolling-content {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.country-flag {
  font-size: 20px;
  margin-right: 4px;
}

.index-item {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  flex: 1 1;
}

.index-name {
  font-size: 12px;
  color: #4E5968;
  color: var(--change-text-secondary);
  font-weight: 500;
}

.index-value {
  font-size: 14px;
  font-weight: 700;
  color: #191F28;
  color: var(--change-text-primary);
}

.index-change {
  font-size: 11px;
  font-weight: 600;
}

.index-change.positive {
  color: #ef4444;
  color: var(--change-up);
}

.index-change.negative {
  color: #3b82f6;
  color: var(--change-down);
}

/* 애니메이션 */
@keyframes fadeInSlide {
  from {
    opacity: 0;
    transform: translateY(10px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.fade-in-slide {
  animation: fadeInSlide 0.5s ease-out forwards;
}

/* 갤럭시 폴드 7 등 폴더블 대응 */

/* Cover Display (외부 화면) */
@media (max-width: 350px) {
  .index-rolling-content {
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
  }

  .index-item {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    width: 100%;
  }

  .index-name {
    font-size: 11px;
  }

  .index-value {
    font-size: 13px;
  }
}

/* Main Display (펼친 화면, 태블릿 이상) */
@media (min-width: 600px) {
  .index-rolling-banner {
    padding: 16px 24px;
  }

  .index-rolling-content {
    justify-content: center;
    gap: 32px;
  }

  .index-item {
    align-items: center;
  }

  .index-name {
    font-size: 14px;
  }

  .index-value {
    font-size: 18px;
  }

  .index-change {
    font-size: 13px;
  }
}

/* ===================================
   라이트 모드 테이블 스타일 (기본)
   =================================== */
.table-container-change {
  width: 100%;
  overflow-x: auto;
  background: #F2F4F6;
  background: var(--change-bg);
  border-radius: 16px;
  border-radius: var(--change-radius);
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
  box-shadow: var(--change-shadow);
}

.holdings-table-change {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}

.holdings-table-change thead {
  background: #F9FAFB;
  background: var(--change-gray-50);
  box-shadow: inset 0 -2px 0 0 #E5E8EB;
  box-shadow: inset 0 -2px 0 0 var(--change-gray-200);
}

.holdings-table-change th {
  padding: 16px 12px;
  font-weight: 600;
  color: #4E5968;
  color: var(--change-gray-700);
  text-align: left;
  white-space: nowrap;
}

.holdings-table-change tbody tr {
  box-shadow: inset 0 -1px 0 0 #F2F4F6;
  box-shadow: inset 0 -1px 0 0 var(--change-gray-100);
  transition: background 0.2s ease;
}

.holdings-table-change tbody tr:hover {
  background: #F9FAFB;
  background: var(--change-gray-50);
}

.holdings-table-change tbody tr:last-child {
  border-bottom: none;
}

.holdings-table-change td {
  padding: 16px 12px;
  color: #191F28;
  color: var(--change-text);
}

/* 종목명 셀 */
.stock-name-cell {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.stock-name-cell .stock-name {
  font-weight: 600;
  color: #191F28;
  color: var(--change-text);
  font-size: 14px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 150px;
}

.stock-name-cell .stock-code {
  font-size: 12px;
  color: #6B7684;
  color: var(--change-gray-600);
}

/* 정렬 */
.text-right {
  text-align: right !important;
}

.text-center {
  text-align: center !important;
}

/* 한국식 색상 - 테이블용 */
.holdings-table-change .positive {
  color: #ef4444;
  color: var(--change-bull);
  font-weight: 600;
}

.holdings-table-change .negative {
  color: #3b82f6;
  color: var(--change-bear);
  font-weight: 600;
}

/* 작은 버튼 */
.btn-action-change.btn-sm {
  padding: 8px 12px;
  font-size: 14px;
  min-width: auto;
}

.btn-action-change.btn-sm svg {
  width: 16px;
  height: 16px;
}

/* 모바일 반응형 */
@media (max-width: 768px) {
  .table-container-change {
    font-size: 12px;
  }

  .holdings-table-change th,
  .holdings-table-change td {
    padding: 12px 8px;
  }

  .holdings-table-change th {
    font-size: 12px;
  }

  .stock-name-cell .stock-name {
    font-size: 13px;
  }

  .stock-name-cell .stock-code {
    font-size: 11px;
  }

  /* 모바일에서 수익/손실 색상 강제 적용 */
  .holdings-table-change .positive,
  .holdings-table-change td.positive {
    color: #ef4444 !important;
    color: var(--change-bull) !important;
  }

  .holdings-table-change .negative,
  .holdings-table-change td.negative {
    color: #3b82f6 !important;
    color: var(--change-bear) !important;
  }
}

/* ===================================
   다크모드 테이블 스타일 (PC 전용 및 공통)
   =================================== */
[data-theme="dark"] .table-container-change {
  background: #2C3542 !important;
  border: 1px solid #4E5968;
}

[data-theme="dark"] .holdings-table-change thead {
  background: #333D4B !important;
  border-bottom: 2px solid #4E5968;
}

[data-theme="dark"] .holdings-table-change th {
  color: #D1D6DB !important;
  background: #333D4B !important;
  border-bottom: 1px solid #4E5968;
}

[data-theme="dark"] .holdings-table-change tbody tr {
  border-bottom: 1px solid #333D4B;
  background-color: #2C3542 !important;
}

/* Zebra Striping 제거 및 배경색 강제 통일 */
[data-theme="dark"] .holdings-table-change tbody tr:nth-child(even) {
  background-color: #2C3542 !important;
}

[data-theme="dark"] .holdings-table-change tbody tr:hover {
  background-color: #4E5968 !important;
}

[data-theme="dark"] .holdings-table-change td {
  color: #F2F4F6;
  border-bottom: 1px solid #333D4B;
  background-color: #2C3542 !important;
}

[data-theme="dark"] .holdings-table-change td.positive {
  color: #ef4444;
  color: var(--change-bull);
}

[data-theme="dark"] .holdings-table-change td.negative {
  color: #3b82f6;
  color: var(--change-bear);
}

[data-theme="dark"] .stock-name-cell .stock-name {
  color: #F2F4F6 !important;
}

[data-theme="dark"] .stock-name-cell .stock-code {
  color: #B0B8C1 !important;
}

/* 다크모드 액션 버튼 */
[data-theme="dark"] .btn-action-change {
  background: #333D4B !important;
  color: #F2F4F6 !important;
  border: 1px solid #4E5968;
}

[data-theme="dark"] .btn-action-change:hover {
  background: #232936 !important;
}

/* 다크모드 빈 상태 안내문 */
[data-theme="dark"] .empty-state-change {
  color: #B0B8C1 !important;
  background: #2C3542 !important;
  border: 1px dashed #4E5968;
}

[data-theme="dark"] .empty-state-change p {
  color: #B0B8C1 !important;
}

[data-theme="dark"] .empty-state-hint {
  color: #8B95A1 !important;
}

/* 다크모드 검색 섹션 */
[data-theme="dark"] .search-section-change {
  background: #2C3542 !important;
  border: 1px solid #4E5968;
}

[data-theme="dark"] .search-input-change {
  background: #232936 !important;
  color: #F2F4F6 !important;
  border-color: #4E5968;
}

[data-theme="dark"] .search-input-change::placeholder {
  color: #B0B8C1 !important;
}

[data-theme="dark"] .search-input-change:focus {
  background: #333D4B !important;
  border-color: #3182F6;
}

[data-theme="dark"] .search-results-change {
  background: #2C3542 !important;
  border-color: #4E5968;
}

[data-theme="dark"] .search-result-item-change {
  border-bottom-color: #333D4B;
}

[data-theme="dark"] .search-result-item-change:hover {
  background: #232936 !important;
}

[data-theme="dark"] .result-name-change {
  color: #F2F4F6 !important;
}

[data-theme="dark"] .result-code-change {
  color: #B0B8C1 !important;
}

[data-theme="dark"] .result-price-change {
  color: #F2F4F6 !important;
}

/* ===================================
   자동매매 규칙 전체삭제 버튼
   =================================== */
.btn-delete-all-rules-change {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 8px 14px;
  background: #fee2e2;
  color: #dc2626;
  border: 1px solid #fecaca;
  border-radius: 8px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s ease;
  white-space: nowrap;
}

.btn-delete-all-rules-change:hover {
  background: #fecaca;
  border-color: #f87171;
  transform: translateY(-1px);
}

.btn-delete-all-rules-change:active {
  transform: translateY(0);
}

[data-theme="dark"] .btn-delete-all-rules-change {
  background: rgba(220, 38, 38, 0.15);
  color: #f87171;
  border-color: rgba(220, 38, 38, 0.3);
}

[data-theme="dark"] .btn-delete-all-rules-change:hover {
  background: rgba(220, 38, 38, 0.25);
  border-color: rgba(248, 113, 113, 0.5);
}

/* ===================================
   자동매매 규칙 모바일 반응형
   =================================== */
@media (max-width: 768px) {
  .rule-card-change {
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
    padding: 14px;
  }

  .rule-info {
    width: 100%;
  }

  .rule-price-info {
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
  }

  .rule-actions {
    width: 100%;
    justify-content: flex-end;
  }

  .btn-delete-all-rules-change {
    padding: 6px 10px;
    font-size: 12px;
  }

  .rules-list-scrollable {
    max-height: 400px;
  }
}

@media (max-width: 480px) {
  .rule-card-change {
    padding: 12px;
  }

  .rule-stock-name {
    font-size: 14px;
  }

  .rule-condition {
    font-size: 13px;
  }

  .rule-condition-text {
    font-size: 12px;
  }

  .rules-list-scrollable {
    max-height: 350px;
  }
}

/* ===================================
   Enhanced Responsive Design System
   PC (>1024px) → Tablet (768-1024px) → Mobile (<768px) → Small (<480px)
   =================================== */

/* 태블릿 (768px - 1024px) */
@media (max-width: 1024px) and (min-width: 769px) {
  .dashboard-change {
    padding: var(--spacing-md);
  }

  .dashboard-title-change {
    font-size: 24px;
  }

  /* 메트릭 그리드: 3열 → 2열 */
  .metrics-grid-change {
    grid-template-columns: repeat(2, 1fr);
    gap: 14px;
  }

  /* 기능 그리드: 4열 → 3열 */
  .features-grid-compact {
    grid-template-columns: repeat(3, 1fr);
  }

  /* 리밸런싱 그리드: 4열 → 2열 */
  .rebalancing-info-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  /* 보유종목 그리드 */
  .holdings-grid-change {
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  }

  /* 메트릭 카드 패딩 조정 */
  .metric-card-change {
    padding: var(--spacing-md);
  }

  .metric-value {
    font-size: 24px;
  }

  /* 검색 섹션 */
  .search-section-change {
    padding: var(--spacing-md);
  }

  .search-input-change {
    padding: 14px 44px 14px 20px;
  }

  /* 규칙 카드 */
  .rule-card-change {
    padding: 14px;
  }

  /* 섹션 타이틀 */
  .section-title-change {
    font-size: 18px;
  }

  /* 테이블 가로 스크롤 보장 */
  .table-container-change {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}

/* 모바일 (<768px) - 기존 스타일 보강 */
@media (max-width: 768px) {
  .dashboard-change {
    padding: 12px;
  }

  .dashboard-header-change {
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: var(--spacing-md);
  }

  .dashboard-title-change {
    font-size: 20px;
  }

  /* 메트릭 그리드: 1열 */
  .metrics-grid-change {
    grid-template-columns: 1fr;
    gap: 10px;
  }

  /* 기능 그리드: 2열 */
  .features-grid-compact {
    grid-template-columns: repeat(2, 1fr);
    gap: 8px;
  }

  .feature-btn-compact {
    padding: 12px;
  }

  .feature-btn-compact i {
    font-size: 20px;
  }

  .feature-btn-compact span {
    font-size: 12px;
  }

  /* 리밸런싱 그리드: 2열 */
  .rebalancing-info-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 8px;
  }

  /* 보유종목 그리드: 1열 */
  .holdings-grid-change {
    grid-template-columns: 1fr;
  }

  /* 메트릭 카드 */
  .metric-card-change {
    padding: var(--spacing-md);
  }

  .metric-value {
    font-size: 22px;
  }

  .metric-label {
    font-size: 13px;
  }

  /* 검색 섹션 */
  .search-section-change {
    padding: var(--spacing-md);
    margin-top: var(--spacing-lg);
  }

  .search-input-change {
    padding: 12px 40px 12px 16px;
    font-size: 14px;
  }

  /* 규칙 카드 - 세로 배치 */
  .rule-card-change {
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
    padding: 12px;
  }

  .rule-info {
    width: 100%;
  }

  .rule-actions {
    width: 100%;
    justify-content: flex-end;
    padding-top: 8px;
    border-top: 1px solid #E5E8EB;
    border-top: 1px solid var(--change-gray-200);
  }

  /* 섹션 헤더 */
  .section-header-with-action {
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
  }

  .section-title-change {
    font-size: 17px;
  }

  /* 지수 배너 */
  .index-rolling-banner {
    padding: 10px 12px;
  }

  .index-rolling-content {
    gap: 8px;
  }

  .index-item {
    flex: 1 1;
    min-width: 0;
  }

  .index-name {
    font-size: 11px;
  }

  .index-value {
    font-size: 13px;
  }

  .index-change {
    font-size: 10px;
  }

  /* 빈 상태 */
  .empty-state-change {
    padding: 24px;
  }
}

/* 소형 모바일 (<480px) - 기존 스타일 보강 */
@media (max-width: 480px) {
  .dashboard-change {
    padding: 8px;
  }

  .dashboard-title-change {
    font-size: 18px;
  }

  /* 메트릭 그리드 */
  .metrics-grid-change {
    gap: 8px;
  }

  .metric-card-change {
    padding: 12px;
  }

  .metric-value {
    font-size: 20px;
  }

  .metric-label {
    font-size: 12px;
  }

  .metric-unit {
    font-size: 14px;
  }

  /* 기능 그리드: 2열 유지, 압축 */
  .features-grid-compact {
    gap: 6px;
  }

  .feature-btn-compact {
    padding: 10px 8px;
    gap: 4px;
  }

  .feature-btn-compact i {
    font-size: 18px;
    margin-bottom: 2px;
  }

  .feature-btn-compact span {
    font-size: 11px;
  }

  /* 리밸런싱 그리드: 1열 */
  .rebalancing-info-grid {
    grid-template-columns: 1fr;
  }

  .rebalancing-info-item {
    padding: 4px;
    padding: var(--change-spacing-xs);
  }

  /* 검색 섹션 */
  .search-section-change {
    padding: 12px;
  }

  .search-input-change {
    padding: 10px 36px 10px 12px;
    font-size: 13px;
  }

  /* 규칙 카드 */
  .rule-stock-name {
    font-size: 14px;
  }

  .rule-stock-code {
    font-size: 11px;
  }

  .rule-condition {
    font-size: 12px;
  }

  .rule-target-price {
    font-size: 14px;
  }

  .rule-current-price {
    font-size: 12px;
  }

  .btn-icon-change {
    width: 32px;
    height: 32px;
  }

  /* 버튼들 */
  .btn-action-change {
    padding: 5px 10px;
    font-size: 12px;
  }

  .btn-sm-change {
    padding: 5px 10px;
    font-size: 12px;
  }

  .refresh-btn-change {
    width: 38px;
    height: 38px;
  }

  /* 지수 배너 - 2열로 변경 */
  .index-rolling-content {
    flex-wrap: wrap;
  }

  .index-item {
    flex-grow: 1;
    flex-shrink: 1;
    flex-basis: calc(50% - 8px);
    min-width: calc(50% - 8px);
  }

  /* 빈 상태 */
  .empty-state-change {
    padding: 16px;
  }

  .empty-state-change p {
    font-size: 13px;
  }

  .empty-state-hint {
    font-size: 12px;
  }
}

/* ===================================
   Dashboard Grid 모바일 반응형 강화
   보유종목 테이블 컬럼 숨김 및 최적화
   =================================== */

/* 모바일 (<768px): 보유종목 카드형 레이아웃 */
@media (max-width: 768px) {
  .holdings-table-change { min-width: auto !important; }
  .holdings-table-change thead { display: none; }

  .holdings-table-change tbody tr {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr 1fr;
    grid-gap: 2px 8px;
    gap: 2px 8px;
    padding: 12px;
    border-bottom: 1px solid #F2F4F6;
    border-bottom: 1px solid var(--change-gray-100, #F2F4F6);
    align-items: end;
  }

  .holdings-table-change td {
    text-align: left;
    padding: 2px 0;
    font-size: 13px;
  }

  /* data-label ::before 표시 */
  .holdings-table-change td::before {
    content: attr(data-label);
    display: block;
    font-size: 11px;
    color: #8B95A1;
    margin-bottom: 1px;
  }

  /* 1행: 종목명 (1~3열) */
  .holdings-table-change td:nth-child(1) {
    grid-column: 1 / 4;
    font-weight: 600;
  }
  .holdings-table-change td:nth-child(1)::before { display: none; }

  /* 1행: 액션 버튼 (4열) */
  .holdings-table-change td:nth-child(8) {
    grid-column: 4;
    grid-row: 1;
    text-align: right;
  }
  .holdings-table-change td:nth-child(8)::before { display: none; }

  /* 2행: 수량(2), 평균단가(3), 현재가(4), 평가금액(5) — 자동 배치 */

  /* 3행: 수익금(6) 왼쪽 절반, 수익률(7) 오른쪽 절반 */
  .holdings-table-change td:nth-child(6) { grid-column: 1 / 3; }
  .holdings-table-change td:nth-child(7) { grid-column: 3 / 5; }

  /* 메트릭 카드 터치 최적화 */
  .metric-card-change {
    min-height: 80px;
    touch-action: manipulation;
  }
}

/* 소형 모바일 (<480px): 폰트 축소만, 컬럼 숨김 없음 */
@media (max-width: 480px) {
  .holdings-table-change td {
    font-size: 12px;
  }
  .holdings-table-change td::before {
    font-size: 10px;
  }

  .holdings-table-change .btn-action-change.btn-sm {
    padding: 6px 8px;
    min-width: 32px;
  }

  .holdings-table-change .btn-action-change.btn-sm svg {
    width: 14px;
    height: 14px;
  }
}

/* 초소형 모바일 (<400px): 기능 메뉴 3열 변환 */
@media (max-width: 400px) {
  .features-grid-compact {
    grid-template-columns: repeat(3, 1fr);
    gap: 4px;
  }

  .feature-btn-compact {
    padding: 8px 4px;
    gap: 4px;
  }

  .feature-btn-compact i,
  .feature-btn-compact svg {
    font-size: 16px;
    width: 16px;
    height: 16px;
  }

  .feature-btn-compact span {
    font-size: 10px;
    line-height: 1.2;
  }

  /* 대시보드 헤더 추가 압축 */
  .dashboard-title-change {
    font-size: 16px;
  }

  .refresh-btn-change {
    width: 34px;
    height: 34px;
  }
}

/* 초소형 모바일 (<350px): 지수 배너 세로 배치 */
@media (max-width: 350px) {
  .index-rolling-content {
    flex-direction: column;
    gap: 6px;
  }

  .index-item {
    width: 100%;
    flex-direction: row;
    justify-content: space-between;
    padding: 4px 0;
    border-bottom: 1px solid #E5E8EB;
    border-bottom: 1px solid var(--change-gray-200);
  }

  .index-item:last-child {
    border-bottom: none;
  }

  .country-flag {
    font-size: 16px;
  }

  .index-name {
    font-size: 10px;
  }

  .index-value {
    font-size: 12px;
  }

  .index-change {
    font-size: 9px;
  }

  /* 리밸런싱 그리드 1열 */
  .rebalancing-info-grid {
    grid-template-columns: 1fr;
  }

  /* 규칙 카드 추가 압축 */
  .rule-card-change {
    padding: 10px;
  }

  .rule-stock-name {
    font-size: 13px;
  }

  .rule-stock-code {
    font-size: 10px;
  }

  /* 검색 입력 압축 */
  .search-input-change {
    padding: 8px 32px 8px 10px;
    font-size: 12px;
  }

  /* 섹션 타이틀 압축 */
  .section-title-change {
    font-size: 15px;
  }
}
/* ===================================
   Holdings_Change.css - Stitch Design System
   No-Line Rule: border 사용 금지
   Surface Hierarchy + Glassmorphism
   --change-* 디자인 토큰 사용
   =================================== */

/* ---- 페이지 레이아웃 ---- */
.hc-page {
  padding: var(--change-spacing-lg) var(--change-spacing-lg) var(--change-spacing-xl);
  max-width: 1280px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: var(--change-spacing-lg);
}

/* ---- 스켈레톤 로딩 ---- */
.hc-skeleton {
  background: linear-gradient(90deg,
      var(--change-surface-low) 25%,
      var(--change-surface-container) 50%,
      var(--change-surface-low) 75%);
  background-size: 200% 100%;
  animation: hc-skeleton-pulse 1.5s ease-in-out infinite;
  border-radius: 8px;
}

@keyframes hc-skeleton-pulse {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* ---- 빈 상태 / 에러 상태 ---- */
.hc-empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--change-spacing-xxl) var(--change-spacing-lg);
  text-align: center;
  background: var(--change-surface-lowest);
  border-radius: 1.5rem;
  box-shadow: var(--change-shadow-sm);
}

.hc-empty-icon {
  font-size: 56px;
  margin-bottom: var(--change-spacing-md);
  line-height: 1;
}

.hc-empty-title {
  font-size: 20px;
  font-weight: 700;
  color: var(--change-on-surface);
  margin: 0 0 8px 0;
}

.hc-empty-desc {
  font-size: 14px;
  color: var(--change-outline);
  margin: 0 0 24px 0;
}

.hc-btn-primary {
  background: var(--change-primary);
  color: #fff;
  border: none;
  border-radius: 12px;
  padding: 12px 28px;
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  transition: opacity 0.2s;
}

.hc-btn-primary:hover {
  opacity: 0.9;
}

/* ===================================
   1. 포트폴리오 서머리 카드
   Stitch: bg-surface-container-lowest, rounded-3xl, premium-shadow
   =================================== */
.hc-summary-card {
  background: var(--change-surface-lowest);
  border-radius: 1.5rem;
  padding: var(--change-spacing-lg);
  box-shadow: 0 12px 32px -4px rgba(0, 0, 0, 0.04), 0 4px 12px -2px rgba(0, 0, 0, 0.02);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--change-spacing-lg);
  border: none;
}

.hc-summary-main {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.hc-summary-label {
  font-size: 14px;
  font-weight: 500;
  color: var(--change-on-surface-variant);
}

.hc-summary-amount {
  font-size: 36px;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--change-on-surface);
  margin: 0;
}

/* 수직 구분선 (No-Line Rule 예외: 장식적 구분선은 div로) */
.hc-summary-divider {
  width: 1px;
  height: 48px;
  background: var(--change-surface-container);
  display: none;
}

@media (min-width: 1024px) {
  .hc-summary-divider {
    display: block;
  }
}

.hc-summary-metrics {
  display: flex;
  align-items: center;
  gap: var(--change-spacing-xl);
  flex-wrap: wrap;
}

.hc-metric {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.hc-metric-label {
  font-size: 11px;
  font-weight: 700;
  color: var(--change-outline);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.hc-metric-row {
  display: flex;
  align-items: baseline;
  gap: 8px;
}

.hc-metric-value {
  font-size: 18px;
  font-weight: 700;
  color: var(--change-on-surface);
}

.hc-metric-badge {
  font-size: 13px;
  font-weight: 700;
  padding: 2px 10px;
  border-radius: 9999px;
}

/* 상승 / 하락 색상 */
.hc-bull {
  color: var(--change-bull);
}

.hc-bear {
  color: var(--change-bear);
}

.hc-bull-bg {
  background: rgba(239, 68, 68, 0.1);
  color: var(--change-bull);
}

.hc-bear-bg {
  background: rgba(59, 130, 246, 0.1);
  color: var(--change-bear);
}

/* 새로고침 버튼 */
.hc-metric-refresh {
  display: flex;
  align-items: center;
}

.hc-refresh-btn {
  width: 40px;
  height: 40px;
  border: none;
  border-radius: 9999px;
  background: var(--change-surface-low);
  color: var(--change-on-surface-variant);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.2s, color 0.2s;
}

.hc-refresh-btn:hover {
  background: var(--change-surface-container);
  color: var(--change-on-surface);
}

.hc-refresh-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.hc-refresh-btn .spinning {
  animation: hc-spin 1s linear infinite;
}

@keyframes hc-spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

/* ===================================
   2. 보유 자산 테이블 섹션
   Stitch: bg-surface-container-lowest, rounded-3xl, premium-shadow, overflow-hidden
   =================================== */
.hc-table-section {
  background: var(--change-surface-lowest);
  border-radius: 1.5rem;
  box-shadow: 0 12px 32px -4px rgba(0, 0, 0, 0.04), 0 4px 12px -2px rgba(0, 0, 0, 0.02);
  overflow: hidden;
  border: none;
}

/* 테이블 상단 헤더 바 */
.hc-table-header {
  padding: 24px 32px 20px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.hc-table-title {
  font-size: 20px;
  font-weight: 700;
  color: var(--change-on-surface);
  margin: 0;
}

.hc-table-count {
  font-size: 14px;
  font-weight: 500;
  color: var(--change-primary);
  margin-left: 8px;
}

/* 정렬 버튼 그룹 */
.hc-sort-group {
  display: flex;
  align-items: center;
  gap: 4px;
}

.hc-sort-btn {
  padding: 8px 16px;
  font-size: 13px;
  font-weight: 500;
  color: var(--change-on-surface-variant);
  background: none;
  border: none;
  border-radius: 12px;
  cursor: pointer;
  transition: background 0.2s, color 0.2s;
}

.hc-sort-btn:hover {
  background: var(--change-surface-low);
}

.hc-sort-btn--active {
  background: var(--change-surface-low);
  color: var(--change-primary);
  font-weight: 700;
}

/* 테이블 래퍼 (수평 스크롤 지원) */
.hc-table-wrap {
  overflow-x: auto;
}

/* 테이블 본체 */
.hc-table {
  width: 100%;
  text-align: left;
  border-collapse: collapse;
}

/* 테이블 헤더 셀 - Stitch 스타일 */
.hc-th {
  padding: 14px 16px;
  font-size: 11px;
  font-weight: 700;
  color: var(--change-outline);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  background: rgba(242, 244, 246, 0.5);
  white-space: nowrap;
}

[data-theme="dark"] .hc-th {
  background: rgba(30, 32, 34, 0.5);
}

.hc-th--name {
  padding-left: 32px;
}

.hc-th--right {
  text-align: right;
}

.hc-th--center {
  text-align: center;
  padding-right: 32px;
}

/* 테이블 데이터 행 */
.hc-row {
  transition: background 0.2s;
  cursor: pointer;
}

.hc-row:hover {
  background: rgba(242, 244, 246, 0.3);
}

[data-theme="dark"] .hc-row:hover {
  background: rgba(255, 255, 255, 0.03);
}

.hc-row--expanded {
  background: rgba(49, 130, 246, 0.02);
}

/* 테이블 데이터 셀 */
.hc-td {
  padding: 20px 16px;
  vertical-align: middle;
}

.hc-td--name {
  padding-left: 32px;
}

.hc-td--right {
  text-align: right;
}

.hc-td--center {
  padding-right: 32px;
  text-align: center;
}

/* tbody 행 구분선 - surface 색상 사용 (No-Line Rule 준수: box-shadow로) */
.hc-table tbody .hc-row {
  box-shadow: inset 0 -1px 0 0 var(--change-surface-low);
}

.hc-table tbody .hc-row:last-child {
  box-shadow: none;
}

/* 종목명 셀 */
.hc-stock-cell {
  display: flex;
  align-items: center;
  gap: 12px;
}

.hc-stock-avatar {
  width: 40px;
  height: 40px;
  border-radius: 9999px;
  background: var(--change-surface-low);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 13px;
  color: var(--change-on-surface-variant);
  flex-shrink: 0;
  overflow: hidden;
}

.hc-stock-name {
  font-weight: 700;
  font-size: 14px;
  color: var(--change-on-surface);
  margin: 0;
  display: flex;
  align-items: center;
  gap: 6px;
}

.hc-stock-code {
  font-size: 10px;
  color: var(--change-outline);
  font-weight: 500;
  letter-spacing: -0.02em;
  margin: 2px 0 0 0;
}

/* 종목 태그 (자동/파일럿/수동) */
.hc-tag {
  font-size: 10px;
  font-weight: 700;
  padding: 2px 6px;
  border-radius: 6px;
  white-space: nowrap;
}

.hc-tag--auto {
  background: rgba(49, 130, 246, 0.1);
  color: var(--change-primary);
}

.hc-tag--pilot {
  background: rgba(245, 158, 11, 0.1);
  color: #f59e0b;
}

.hc-tag--manual {
  background: var(--change-surface-low);
  color: var(--change-outline);
}

/* 가격/수량 텍스트 */
.hc-price-current {
  font-weight: 600;
  font-size: 14px;
  color: var(--change-on-surface);
}

.hc-price-avg {
  font-size: 13px;
  color: var(--change-on-surface-variant);
}

.hc-qty {
  font-size: 14px;
  font-weight: 500;
  color: var(--change-on-surface-variant);
}

.hc-eval-amount {
  font-weight: 700;
  font-size: 14px;
  color: var(--change-on-surface);
}

/* 수익률 */
.hc-rate {
  font-weight: 700;
  font-size: 14px;
}

.hc-rate-sub {
  font-size: 12px;
  font-weight: 500;
  margin-top: 2px;
}

/* 비중 바 */
.hc-weight {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
}

.hc-weight-pct {
  font-size: 12px;
  font-weight: 700;
  color: var(--change-on-surface-variant);
}

.hc-weight-bar {
  width: 64px;
  height: 6px;
  background: var(--change-surface-low);
  border-radius: 9999px;
  overflow: hidden;
}

.hc-weight-fill {
  height: 100%;
  background: var(--change-primary);
  border-radius: 9999px;
  transition: width 0.4s ease;
}

/* 액션 버튼 (hover 시 나타남) */
.hc-actions {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  opacity: 0;
  transition: opacity 0.2s;
}

.hc-row:hover .hc-actions {
  opacity: 1;
}

.hc-action-btn {
  padding: 6px 12px;
  border-radius: 8px;
  background: var(--change-surface-low);
  font-size: 12px;
  font-weight: 700;
  color: var(--change-on-surface);
  border: none;
  cursor: pointer;
  transition: background 0.2s;
}

.hc-action-btn:hover {
  background: var(--change-surface-container);
}

.hc-action-btn--sell {
  background: rgba(239, 68, 68, 0.1);
  color: var(--change-bull);
}

.hc-action-btn--sell:hover {
  background: rgba(239, 68, 68, 0.2);
}

/* ===================================
   3. 확장 상세 행
   =================================== */
.hc-row-detail {
  animation: hc-slide-down 0.25s ease;
}

@keyframes hc-slide-down {
  from { opacity: 0; transform: translateY(-4px); }
  to { opacity: 1; transform: translateY(0); }
}

.hc-td-detail {
  padding: 0 32px 24px;
  background: rgba(49, 130, 246, 0.02);
}

[data-theme="dark"] .hc-td-detail {
  background: rgba(49, 130, 246, 0.04);
}

.hc-detail-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-gap: 16px;
  gap: 16px;
  padding: 20px 0;
}

.hc-detail-item {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.hc-detail-label {
  font-size: 11px;
  font-weight: 700;
  color: var(--change-outline);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.hc-detail-value {
  font-size: 14px;
  font-weight: 600;
  color: var(--change-on-surface);
}

.hc-detail-sub {
  font-weight: 400;
  font-size: 12px;
  color: inherit;
  opacity: 0.8;
}

.hc-detail-actions {
  display: flex;
  gap: 8px;
  padding-top: 12px;
}

.hc-detail-btn {
  display: inline-flex;
  align-items: center;
  padding: 8px 16px;
  border-radius: 10px;
  background: var(--change-surface-low);
  font-size: 13px;
  font-weight: 600;
  color: var(--change-on-surface);
  border: none;
  cursor: pointer;
  transition: background 0.2s;
}

.hc-detail-btn:hover {
  background: var(--change-surface-container);
}

/* ===================================
   4. 차트 모달
   =================================== */
.chart-modal-overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.7);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1000;
  padding: var(--change-spacing-md);
}

.chart-modal-content {
  background: var(--change-surface-lowest);
  border-radius: 1.5rem;
  max-width: 900px;
  width: 100%;
  max-height: 90vh;
  overflow: hidden;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
}

.chart-modal-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--change-spacing-lg);
  box-shadow: inset 0 -1px 0 0 var(--change-surface-low);
}

.chart-modal-header h3 {
  margin: 0;
  font-size: var(--change-font-title);
  font-weight: 700;
  color: var(--change-on-surface);
}

.close-btn {
  width: 40px;
  height: 40px;
  border: none;
  background: var(--change-surface-low);
  border-radius: 50%;
  font-size: 24px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--change-on-surface-variant);
  transition: background 0.2s;
}

.close-btn:hover {
  background: var(--change-surface-container);
}

.chart-modal-body {
  padding: 0;
  height: 600px;
  overflow: hidden;
}

/* ===================================
   5. 다크 모드 보정
   =================================== */
[data-theme="dark"] .hc-summary-card {
  box-shadow: 0 12px 32px -4px rgba(0, 0, 0, 0.2), 0 4px 12px -2px rgba(0, 0, 0, 0.1);
}

[data-theme="dark"] .hc-table-section {
  box-shadow: 0 12px 32px -4px rgba(0, 0, 0, 0.2), 0 4px 12px -2px rgba(0, 0, 0, 0.1);
}

[data-theme="dark"] .hc-empty-state {
  box-shadow: var(--change-shadow);
}

/* ===================================
   6. 반응형 디자인
   =================================== */

/* 태블릿 (768px - 1024px) */
@media (max-width: 1024px) and (min-width: 769px) {
  .hc-page {
    padding: var(--change-spacing-md);
  }

  .hc-summary-card {
    padding: 24px;
    gap: 20px;
  }

  .hc-summary-amount {
    font-size: 30px;
  }

  .hc-summary-metrics {
    gap: 24px;
  }

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

/* 모바일 (<768px) */
@media (max-width: 768px) {
  .hc-page {
    padding: 16px;
    gap: 16px;
  }

  /* 서머리 카드: 세로 스택 */
  .hc-summary-card {
    flex-direction: column;
    align-items: flex-start;
    padding: 20px;
    gap: 16px;
    border-radius: 1rem;
  }

  .hc-summary-divider {
    display: none;
  }

  .hc-summary-amount {
    font-size: 28px;
  }

  .hc-summary-metrics {
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
    width: 100%;
  }

  .hc-metric {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    width: 100%;
  }

  .hc-metric-row {
    flex-direction: row-reverse;
  }

  /* 테이블 섹션 */
  .hc-table-section {
    border-radius: 1rem;
  }

  .hc-table-header {
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
    padding: 16px 20px;
  }

  .hc-sort-group {
    flex-wrap: wrap;
  }

  /* 테이블 헤더 숨기기 (모바일 카드 뷰) */
  .hc-table thead {
    display: none;
  }

  .hc-table tbody,
  .hc-table tbody .hc-row {
    display: block;
  }

  .hc-table tbody .hc-row {
    padding: 16px 20px;
    box-shadow: inset 0 -1px 0 0 var(--change-surface-low);
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
  }

  .hc-table tbody .hc-row:last-child {
    box-shadow: none;
  }

  .hc-td {
    display: none;
    padding: 0;
  }

  /* 모바일에서 보이는 셀 */
  .hc-td--name {
    display: flex;
    flex: 1 1 auto;
    min-width: 0;
    padding: 0;
  }

  .hc-td--right:nth-child(5) {
    /* 평가금액 */
    display: block;
    text-align: right;
    flex: 0 0 auto;
    padding: 0;
  }

  .hc-td--right:nth-child(6) {
    /* 수익률 */
    display: block;
    text-align: right;
    flex: 0 0 auto;
    margin-left: auto;
    padding: 0;
  }

  /* 모바일 카드: 종목명 + 수익률만 표시 */
  .hc-stock-cell {
    gap: 10px;
  }

  .hc-stock-avatar {
    width: 36px;
    height: 36px;
    font-size: 12px;
  }

  /* 액션 버튼 항상 표시 */
  .hc-actions {
    opacity: 1;
  }

  /* 확장 상세 */
  .hc-row-detail {
    display: block;
  }

  .hc-row-detail .hc-td-detail {
    display: block;
    padding: 0 20px 16px;
  }

  .hc-detail-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
    padding: 16px 0;
  }

  .hc-detail-actions {
    flex-direction: column;
  }

  .hc-detail-btn {
    width: 100%;
    justify-content: center;
    padding: 12px 16px;
  }

  /* 차트 모달 전체화면 */
  .chart-modal-overlay {
    padding: 0;
  }

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

  .chart-modal-body {
    height: calc(100vh - 120px);
  }
}

/* 소형 모바일 (<480px) */
@media (max-width: 480px) {
  .hc-page {
    padding: 12px;
    gap: 12px;
  }

  .hc-summary-card {
    padding: 16px;
    border-radius: 0.75rem;
  }

  .hc-summary-amount {
    font-size: 24px;
  }

  .hc-metric-value {
    font-size: 16px;
  }

  .hc-table-section {
    border-radius: 0.75rem;
  }

  .hc-table-header {
    padding: 12px 16px;
  }

  .hc-table-title {
    font-size: 18px;
  }

  .hc-table tbody .hc-row {
    padding: 12px 16px;
  }

  .hc-detail-grid {
    grid-template-columns: 1fr 1fr;
    gap: 10px;
  }
}

/* ===================================
   TradeHistory_Change.css
   Stitch Design System - Trade History
   =================================== */

/* Page container */
.th-page {
  padding: var(--change-spacing-sm) var(--change-spacing-md);
  min-height: 100vh;
  animation: fadeIn 0.4s ease;
}

/* ── Glassmorphism Sticky Header ── */
.th-page-header {
  position: -webkit-sticky;
  position: sticky;
  top: 0;
  z-index: 30;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--change-spacing-sm) 0;
  margin-bottom: var(--change-spacing-md);
  background: var(--change-header-bg);
  backdrop-filter: var(--change-header-blur);
  -webkit-backdrop-filter: var(--change-header-blur);
}

.th-page-title {
  font-size: 1.5rem;
  font-weight: 800;
  color: var(--change-on-surface);
  margin: 0;
  letter-spacing: -0.02em;
}

.th-header-actions {
  display: flex;
  align-items: center;
  gap: 12px;
}

.th-last-updated {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  font-weight: 600;
  color: var(--change-on-surface-variant);
}

.th-last-updated svg {
  width: 14px;
  height: 14px;
  opacity: 0.6;
}

.th-refresh-btn {
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: none;
  border-radius: 50%;
  background: var(--change-surface-low);
  color: var(--change-on-surface-variant);
  cursor: pointer;
  transition: all 0.2s ease;
}

.th-refresh-btn:hover {
  background: var(--change-surface-high);
  color: var(--change-primary);
}

.th-refresh-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.th-spin {
  animation: spin 1s linear infinite;
}

/* ── Filter Bar Card ── */
.th-filter-card {
  background: var(--change-surface-lowest);
  padding: var(--change-spacing-md);
  border-radius: 1rem;
  box-shadow: var(--change-shadow-sm);
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 16px;
  margin-bottom: var(--change-spacing-md);
}

.th-filter-group {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 160px;
}

.th-filter-group.th-filter-grow {
  flex: 1 1;
  min-width: 200px;
}

.th-filter-label {
  font-size: 11px;
  font-weight: 700;
  color: var(--change-on-surface-variant);
  padding-left: 4px;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

/* Select wrapper */
.th-select-wrapper {
  position: relative;
  display: flex;
  align-items: center;
}

.th-select-icon {
  position: absolute;
  left: 14px;
  display: flex;
  align-items: center;
  color: var(--change-on-surface-variant);
  opacity: 0.5;
  pointer-events: none;
}

.th-select {
  width: 100%;
  -webkit-appearance: none;
          appearance: none;
  background: var(--change-surface-low);
  border: none;
  border-radius: 0.75rem;
  padding: 10px 16px 10px 36px;
  font-size: 14px;
  font-weight: 500;
  color: var(--change-on-surface);
  cursor: pointer;
  transition: all 0.2s ease;
}

.th-select:focus {
  outline: none;
  box-shadow: 0 0 0 2px rgba(49, 130, 246, 0.2);
}

/* Search wrapper */
.th-search-wrapper {
  position: relative;
  display: flex;
  align-items: center;
}

.th-search-icon {
  position: absolute;
  left: 14px;
  display: flex;
  align-items: center;
  color: var(--change-on-surface-variant);
  opacity: 0.5;
  pointer-events: none;
}

.th-search-input {
  width: 100%;
  background: var(--change-surface-low);
  border: none;
  border-radius: 0.75rem;
  padding: 10px 16px 10px 36px;
  font-size: 14px;
  color: var(--change-on-surface);
  transition: all 0.2s ease;
}

.th-search-input:focus {
  outline: none;
  box-shadow: 0 0 0 2px rgba(49, 130, 246, 0.2);
}

.th-search-input::placeholder {
  color: var(--change-on-surface-variant);
  opacity: 0.5;
}

/* Type toggle (buy/sell/all) */
.th-type-toggle {
  display: flex;
  background: var(--change-surface-low);
  border-radius: 0.75rem;
  padding: 3px;
}

.th-type-btn {
  padding: 7px 16px;
  border-radius: 0.5rem;
  border: none;
  background: transparent;
  font-size: 14px;
  font-weight: 500;
  color: var(--change-on-surface-variant);
  cursor: pointer;
  transition: all 0.2s ease;
}

.th-type-btn:hover {
  color: var(--change-primary);
}

.th-type-btn.active {
  background: var(--change-surface-lowest);
  color: var(--change-primary);
  font-weight: 700;
  box-shadow: var(--change-shadow-sm);
}

/* Primary action button in filter */
.th-btn-primary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  background: var(--change-primary);
  color: #fff;
  font-weight: 700;
  font-size: 14px;
  border: none;
  border-radius: 0.75rem;
  padding: 10px 20px;
  height: 42px;
  cursor: pointer;
  transition: all 0.2s ease;
  white-space: nowrap;
}

.th-btn-primary:hover {
  box-shadow: 0 4px 16px rgba(49, 130, 246, 0.25);
}

.th-btn-primary:active {
  transform: scale(0.97);
}

.th-filter-apply {
  align-self: flex-end;
}

/* ── Summary Cards Grid ── */
.th-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-gap: 16px;
  gap: 16px;
  margin-bottom: var(--change-spacing-md);
}

.th-summary-card {
  background: var(--change-surface-lowest);
  padding: var(--change-spacing-md);
  border-radius: 1rem;
  box-shadow: var(--change-shadow-sm);
  transition: all 0.2s ease;
}

.th-summary-card:hover {
  box-shadow: var(--change-shadow-hover);
  transform: translateY(-2px);
}

.th-summary-card--profit.bull {
  box-shadow: inset 4px 0 0 var(--change-bull), var(--change-shadow-sm);
}

.th-summary-card--profit.bear {
  box-shadow: inset 4px 0 0 var(--change-bear), var(--change-shadow-sm);
}

.th-summary-top {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 16px;
}

.th-summary-icon {
  width: 40px;
  height: 40px;
  border-radius: 0.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
}

.th-summary-icon svg {
  width: 20px;
  height: 20px;
}

.th-icon-neutral {
  background: var(--change-surface-low);
  color: var(--change-on-surface-variant);
}

.th-icon-bull {
  background: rgba(239, 68, 68, 0.08);
  color: var(--change-bull);
}

.th-icon-bear {
  background: rgba(59, 130, 246, 0.08);
  color: var(--change-bear);
}

.th-icon-primary {
  background: rgba(49, 130, 246, 0.08);
  color: var(--change-primary);
}

.th-icon-amber {
  background: rgba(245, 158, 11, 0.08);
  color: #f59e0b;
}

.th-summary-badge {
  font-size: 10px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 9999px;
}

.th-badge-bull {
  background: rgba(239, 68, 68, 0.08);
  color: var(--change-bull);
}

.th-summary-label {
  font-size: 11px;
  font-weight: 700;
  color: var(--change-on-surface-variant);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: 4px;
}

.th-summary-value {
  font-size: 1.5rem;
  font-weight: 900;
  color: var(--change-on-surface);
  letter-spacing: -0.02em;
}

.th-summary-value.bull {
  color: var(--change-bull);
}

.th-summary-value.bear {
  color: var(--change-bear);
}

.th-summary-unit {
  font-size: 14px;
  font-weight: 500;
  margin-left: 2px;
}

/* ── Table Card ── */
.th-table-card {
  background: var(--change-surface-lowest);
  border-radius: 1rem;
  box-shadow: var(--change-shadow-sm);
  overflow: hidden;
  margin-bottom: var(--change-spacing-md);
}

.th-table-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--change-spacing-md) var(--change-spacing-md) 16px;
}

.th-table-title {
  font-size: 1.125rem;
  font-weight: 800;
  color: var(--change-on-surface);
  margin: 0;
}

.th-table-count {
  font-size: 13px;
  font-weight: 600;
  color: var(--change-primary);
}

.th-table-scroll {
  overflow-x: auto;
  scrollbar-width: none;
}

.th-table-scroll::-webkit-scrollbar {
  display: none;
}

/* Table */
.th-table {
  width: 100%;
  text-align: left;
  border-collapse: collapse;
}

.th-thead {
  background: rgba(242, 244, 246, 0.4);
}

[data-theme="dark"] .th-thead {
  background: rgba(37, 39, 41, 0.4);
}

.th-th {
  padding: 14px 16px;
  font-size: 11px;
  font-weight: 700;
  color: var(--change-on-surface-variant);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  white-space: nowrap;
}

.th-th-date {
  padding-left: var(--change-spacing-md);
}

.th-th-right {
  text-align: right;
}

.th-th-center {
  text-align: center;
}

.th-th-source {
  padding-right: var(--change-spacing-md);
}

/* Table rows */
.th-tr {
  transition: background-color 0.15s ease;
}

.th-tr:hover {
  background: var(--change-surface-low);
}

.th-tr-alt {
  background: rgba(59, 130, 246, 0.02);
}

[data-theme="dark"] .th-tr-alt {
  background: rgba(59, 130, 246, 0.04);
}

.th-tr-clickable {
  cursor: pointer;
}

.th-td {
  padding: 16px;
  font-size: 14px;
  font-weight: 600;
  color: var(--change-on-surface);
  white-space: nowrap;
}

.th-td-date {
  padding-left: var(--change-spacing-md);
  color: var(--change-on-surface-variant);
  font-weight: 500;
}

.th-td-time {
  font-size: 10px;
  color: var(--change-outline);
  margin-top: 2px;
}

.th-td-right {
  text-align: right;
}

.th-td-center {
  text-align: center;
}

.th-td-amount {
  font-weight: 600;
}

.th-td-pnl {
  font-weight: 700;
}

.th-td-pnl.bull {
  color: var(--change-bull);
}

.th-td-pnl.bear {
  color: var(--change-bear);
}

/* Stock name & code in table */
.th-stock-name {
  font-size: 14px;
  font-weight: 700;
  color: var(--change-on-surface);
}

.th-stock-code {
  font-size: 10px;
  color: var(--change-on-surface-variant);
  letter-spacing: -0.02em;
  margin-top: 2px;
}

/* Type badge (buy/sell) */
.th-type-badge {
  display: inline-block;
  padding: 3px 8px;
  border-radius: 6px;
  font-size: 11px;
  font-weight: 700;
}

.th-type-badge.buy {
  background: rgba(239, 68, 68, 0.08);
  color: var(--change-bull);
}

.th-type-badge.sell {
  background: rgba(59, 130, 246, 0.08);
  color: var(--change-bear);
}

/* Rate badge (profit %) */
.th-rate-badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 9999px;
  font-size: 12px;
  font-weight: 700;
}

.th-rate-badge.bull {
  background: rgba(239, 68, 68, 0.08);
  color: var(--change-bull);
}

.th-rate-badge.bear {
  background: rgba(59, 130, 246, 0.08);
  color: var(--change-bear);
}

.th-rate-dash {
  font-size: 12px;
  font-weight: 700;
  color: var(--change-on-surface-variant);
}

/* Source badge */
.th-source-badge {
  font-size: 12px;
  font-weight: 500;
  padding: 3px 8px;
  border-radius: 6px;
  background: var(--change-surface-low);
  color: var(--change-on-surface-variant);
}

.th-source-badge.realtime {
  background: rgba(16, 185, 129, 0.08);
  color: #10b981;
}

.th-source-badge.database {
  background: rgba(99, 102, 241, 0.08);
  color: #6366f1;
}

/* ── Pagination ── */
.th-pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 16px;
  background: rgba(242, 244, 246, 0.3);
}

[data-theme="dark"] .th-pagination {
  background: rgba(37, 39, 41, 0.3);
}

.th-page-btn {
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: none;
  border-radius: 0.5rem;
  background: transparent;
  font-size: 14px;
  font-weight: 500;
  color: var(--change-on-surface);
  cursor: pointer;
  transition: all 0.15s ease;
}

.th-page-btn:hover:not(:disabled) {
  background: var(--change-surface-lowest);
}

.th-page-btn.active {
  background: var(--change-primary);
  color: #fff;
  font-weight: 700;
}

.th-page-btn:disabled {
  opacity: 0.3;
  cursor: not-allowed;
}

.th-page-btn svg {
  width: 14px;
  height: 14px;
}

/* ── Empty State ── */
.th-empty {
  text-align: center;
  padding: var(--change-spacing-xl) var(--change-spacing-md);
}

.th-empty-icon {
  margin-bottom: 16px;
  color: var(--change-outline);
  opacity: 0.4;
}

.th-empty-icon svg {
  width: 48px;
  height: 48px;
}

.th-empty h3 {
  font-size: var(--change-font-title);
  font-weight: 700;
  color: var(--change-on-surface);
  margin: 0 0 8px;
}

.th-empty p {
  font-size: 14px;
  color: var(--change-on-surface-variant);
  margin: 0 0 20px;
}

/* ── Monthly P&L Chart ── */
.th-chart-card {
  background: var(--change-surface-lowest);
  padding: var(--change-spacing-md);
  border-radius: 1rem;
  box-shadow: var(--change-shadow-sm);
}

.th-chart-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: var(--change-spacing-md);
}

.th-chart-title {
  font-size: 1.125rem;
  font-weight: 800;
  color: var(--change-on-surface);
  margin: 0;
}

.th-chart-sub {
  font-size: 14px;
  color: var(--change-on-surface-variant);
  margin: 4px 0 0;
}

.th-chart-legend {
  display: flex;
  align-items: center;
  gap: 16px;
}

.th-legend-item {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 700;
  color: var(--change-on-surface-variant);
}

.th-legend-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
}

.th-legend-buy {
  background: rgba(49, 130, 246, 0.15);
}

.th-legend-pnl {
  background: var(--change-bull);
}

/* Bar chart */
.th-chart-bars {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  height: 200px;
  gap: 16px;
  padding: 0 16px 0;
  box-shadow: inset 0 -1px 0 0 var(--change-surface-high);
}

.th-chart-col {
  flex: 1 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  height: 100%;
}

.th-chart-bars-inner {
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: flex-end;
  gap: 3px;
  flex: 1 1;
}

.th-bar {
  width: 10px;
  border-radius: 3px 3px 0 0;
  transition: height 0.4s ease;
  cursor: help;
}

.th-bar-buy {
  background: rgba(49, 130, 246, 0.1);
}

.th-bar-pnl {
  background: var(--change-bull);
}

.th-bar-pnl-neg {
  background: var(--change-bear);
}

.th-chart-label {
  font-size: 11px;
  font-weight: 700;
  color: var(--change-on-surface-variant);
}

/* ── Skeleton Loading ── */
.th-skeleton {
  background: linear-gradient(90deg,
    var(--change-gray-100) 25%,
    var(--change-gray-200) 50%,
    var(--change-gray-100) 75%);
  background-size: 200% 100%;
  animation: skeleton-loading 1.5s ease-in-out infinite;
  border-radius: 1rem;
}

/* ── Error Box ── */
.th-error-box {
  text-align: center;
  padding: var(--change-spacing-xl);
  background: var(--change-surface-lowest);
  border-radius: 1rem;
  box-shadow: var(--change-shadow-sm);
}

.th-error-box p {
  font-size: 14px;
  color: var(--change-on-surface-variant);
  margin: 0 0 20px;
}

/* ── Responsive ── */

/* Tablet */
@media (max-width: 1024px) {
  .th-summary-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* Mobile */
@media (max-width: 768px) {
  .th-page {
    padding: 12px;
  }

  .th-page-title {
    font-size: 1.25rem;
  }

  .th-filter-card {
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
    padding: 16px;
  }

  .th-filter-group {
    min-width: 100%;
  }

  .th-filter-group.th-filter-grow {
    min-width: 100%;
  }

  .th-filter-apply {
    align-self: stretch;
  }

  .th-summary-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 10px;
  }

  .th-summary-card {
    padding: 16px;
  }

  .th-summary-value {
    font-size: 1.25rem;
  }

  .th-th {
    padding: 10px 12px;
    font-size: 10px;
  }

  .th-td {
    padding: 12px;
    font-size: 13px;
  }

  .th-chart-header {
    flex-direction: column;
    gap: 12px;
  }

  .th-chart-bars {
    height: 160px;
    gap: 8px;
    padding: 0 8px;
  }
}

/* Small mobile */
@media (max-width: 480px) {
  .th-page {
    padding: 8px;
  }

  .th-summary-grid {
    grid-template-columns: 1fr;
  }

  .th-summary-card {
    padding: 14px;
  }

  .th-summary-value {
    font-size: 1.125rem;
  }

  .th-table-header {
    padding: 16px;
  }

  .th-chart-bars {
    height: 140px;
  }
}

/* ===================================
   Settings.css
   Stitch Design System - Settings Page
   =================================== */

/* Page container */
.st-page {
  padding: var(--change-spacing-sm) var(--change-spacing-md);
  max-width: 960px;
  min-height: 100vh;
  animation: fadeIn 0.4s ease;
}

/* ── Glassmorphism Sticky Header ── */
.st-page-header {
  position: -webkit-sticky;
  position: sticky;
  top: 0;
  z-index: 30;
  background: var(--change-header-bg);
  backdrop-filter: var(--change-header-blur);
  -webkit-backdrop-filter: var(--change-header-blur);
  padding: var(--change-spacing-sm) 0;
  margin-bottom: var(--change-spacing-lg);
}

.st-page-title {
  font-size: 2rem;
  font-weight: 800;
  color: var(--change-on-surface);
  letter-spacing: -0.02em;
  margin: 0 0 4px;
}

.st-page-subtitle {
  font-size: 14px;
  color: var(--change-outline);
  margin: 0;
}

/* ── Feedback Toast ── */
.st-toast {
  position: fixed;
  top: 20px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 1000;
  padding: 12px 24px;
  border-radius: 1.5rem;
  color: #fff;
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  font-weight: 600;
  animation: fadeIn 0.3s ease;
}

.st-toast.success {
  background: var(--change-primary);
  box-shadow: 0 4px 16px rgba(49, 130, 246, 0.3);
}

.st-toast.error {
  background: var(--change-bull);
  box-shadow: 0 4px 16px rgba(239, 68, 68, 0.3);
}

/* ── Sections container ── */
.st-sections {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

/* ── Accordion Section Card ── */
.st-section {
  background: var(--change-surface-lowest);
  border-radius: 1.5rem;
  box-shadow: var(--change-shadow-sm);
  overflow: hidden;
  transition: box-shadow 0.2s ease;
}

.st-section:hover {
  box-shadow: var(--change-shadow);
}

/* Section header (clickable accordion toggle) */
.st-section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px var(--change-spacing-md);
  cursor: pointer;
  transition: background-color 0.15s ease;
  -webkit-user-select: none;
          user-select: none;
}

.st-section-header:hover {
  background: var(--change-surface-low);
}

.st-section-header-left {
  display: flex;
  align-items: center;
  gap: 16px;
}

.st-section-icon {
  width: 44px;
  height: 44px;
  border-radius: 0.75rem;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
  flex-shrink: 0;
}

.st-section-icon.blue {
  background: rgba(49, 130, 246, 0.08);
  color: var(--change-primary);
}

.st-section-icon.green {
  background: rgba(16, 185, 129, 0.08);
  color: #10b981;
}

.st-section-icon.telegram {
  background: rgba(0, 136, 204, 0.08);
  color: #0088cc;
}

.st-section-icon.amber {
  background: rgba(245, 158, 11, 0.08);
  color: #f59e0b;
}

.st-section-icon.red {
  background: rgba(239, 68, 68, 0.08);
  color: var(--change-bull);
}

.st-section-icon.purple {
  background: rgba(139, 92, 246, 0.08);
  color: #8b5cf6;
}

.st-section-title-group {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.st-section-title {
  font-size: 16px;
  font-weight: 700;
  color: var(--change-on-surface);
  margin: 0;
}

.st-section-subtitle {
  font-size: 12px;
  color: var(--change-outline);
  margin: 0;
}

.st-section-right {
  display: flex;
  align-items: center;
  gap: 12px;
}

.st-status-badge {
  font-size: 11px;
  font-weight: 700;
  padding: 3px 10px;
  border-radius: 9999px;
  display: flex;
  align-items: center;
  gap: 4px;
}

.st-status-badge.connected {
  background: rgba(16, 185, 129, 0.08);
  color: #10b981;
}

.st-status-badge.disconnected {
  background: var(--change-surface-low);
  color: var(--change-outline);
}

.st-status-badge.active {
  background: rgba(49, 130, 246, 0.08);
  color: var(--change-primary);
}

.st-status-badge.inactive {
  background: var(--change-surface-low);
  color: var(--change-outline);
}

.st-chevron {
  color: var(--change-outline);
  transition: transform 0.25s ease;
}

.st-chevron.expanded {
  transform: rotate(180deg);
}

/* Section content (accordion body) */
.st-section-content {
  padding: 0 var(--change-spacing-md) var(--change-spacing-md);
}

/* ── Alert / Info box ── */
.st-info-box {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 14px 16px;
  background: rgba(49, 130, 246, 0.05);
  border-radius: 0.75rem;
  margin-bottom: 20px;
  font-size: 13px;
  color: var(--change-on-surface-variant);
  line-height: 1.5;
}

.st-info-box svg {
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  margin-top: 1px;
  color: var(--change-primary);
}

/* ── Form fields ── */
.st-form-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  grid-gap: 16px;
  gap: 16px;
  margin-bottom: 20px;
}

.st-form-grid.cols-1 {
  grid-template-columns: 1fr;
}

.st-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.st-field-full {
  grid-column: 1 / -1;
}

.st-label {
  font-size: 12px;
  font-weight: 700;
  color: var(--change-on-surface-variant);
  padding-left: 4px;
  letter-spacing: 0.02em;
}

.st-input {
  width: 100%;
  padding: 12px 16px;
  background: var(--change-surface-low);
  border: none;
  border-radius: 0.75rem;
  font-size: 14px;
  font-weight: 500;
  color: var(--change-on-surface);
  transition: all 0.2s ease;
  box-sizing: border-box;
}

.st-input:focus {
  outline: none;
  box-shadow: 0 0 0 2px rgba(49, 130, 246, 0.2);
}

.st-input::placeholder {
  color: var(--change-on-surface-variant);
  opacity: 0.5;
}

.st-input-password {
  position: relative;
}

.st-input-password .st-input {
  padding-right: 44px;
}

.st-input-password .st-eye-btn {
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
  background: none;
  border: none;
  color: var(--change-outline);
  cursor: pointer;
  padding: 4px;
  display: flex;
  align-items: center;
}

.st-input-password .st-eye-btn:hover {
  color: var(--change-primary);
}

.st-select {
  width: 100%;
  -webkit-appearance: none;
          appearance: none;
  padding: 12px 16px;
  background: var(--change-surface-low);
  border: none;
  border-radius: 0.75rem;
  font-size: 14px;
  font-weight: 500;
  color: var(--change-on-surface);
  cursor: pointer;
  transition: all 0.2s ease;
}

.st-select:focus {
  outline: none;
  box-shadow: 0 0 0 2px rgba(49, 130, 246, 0.2);
}

.st-hint {
  font-size: 11px;
  color: var(--change-outline);
  padding-left: 4px;
  line-height: 1.4;
}

/* Environment toggle (virtual/real) */
.st-env-toggle {
  display: flex;
  padding: 3px;
  background: var(--change-surface-low);
  border-radius: 0.75rem;
}

.st-env-btn {
  flex: 1 1;
  padding: 10px;
  border: none;
  border-radius: 0.5rem;
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
  background: transparent;
  color: var(--change-outline);
}

.st-env-btn.active {
  background: var(--change-surface-lowest);
  color: var(--change-primary);
  font-weight: 700;
  box-shadow: var(--change-shadow-sm);
}

/* Auto-trading switch */
.st-switch-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 16px;
  background: var(--change-surface-low);
  border-radius: 0.75rem;
  margin-bottom: 20px;
  cursor: pointer;
}

.st-switch-row input[type="checkbox"] {
  width: 44px;
  height: 24px;
  appearance: none;
  -webkit-appearance: none;
  background: var(--change-surface-high);
  border-radius: 12px;
  position: relative;
  cursor: pointer;
  transition: background 0.2s ease;
  flex-shrink: 0;
}

.st-switch-row input[type="checkbox"]::after {
  content: '';
  position: absolute;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: #fff;
  top: 2px;
  left: 2px;
  transition: transform 0.2s ease;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
}

.st-switch-row input[type="checkbox"]:checked {
  background: var(--change-primary);
}

.st-switch-row input[type="checkbox"]:checked::after {
  transform: translateX(20px);
}

.st-switch-label {
  font-size: 15px;
  font-weight: 600;
  color: var(--change-on-surface);
}

/* Token expiry card */
.st-token-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px;
  background: rgba(49, 130, 246, 0.04);
  border-radius: 1rem;
  margin-bottom: 20px;
}

.st-token-info {
  display: flex;
  align-items: center;
  gap: 12px;
}

.st-token-icon {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: rgba(49, 130, 246, 0.08);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--change-primary);
}

.st-token-label {
  font-size: 10px;
  font-weight: 700;
  color: var(--change-outline);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.st-token-value {
  font-size: 14px;
  font-weight: 600;
  color: var(--change-on-surface);
}

/* ── Buttons ── */
.st-btn-row {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

.st-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 10px 20px;
  border: none;
  border-radius: 0.75rem;
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  transition: all 0.2s ease;
  white-space: nowrap;
  flex: 1 1;
  min-width: 0;
}

.st-btn:active {
  transform: scale(0.97);
}

.st-btn.primary {
  background: var(--change-primary);
  color: #fff;
  box-shadow: 0 2px 8px rgba(49, 130, 246, 0.2);
}

.st-btn.primary:hover {
  box-shadow: 0 4px 16px rgba(49, 130, 246, 0.3);
}

.st-btn.secondary {
  background: var(--change-surface-low);
  color: var(--change-on-surface);
}

.st-btn.secondary:hover {
  background: var(--change-surface-high);
}

.st-btn.full {
  width: 100%;
  flex: initial;
}

.st-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  transform: none;
}

.st-btn svg {
  width: 16px;
  height: 16px;
}

/* Test result message */
.st-test-result {
  margin-top: 12px;
  padding: 10px 14px;
  border-radius: 0.75rem;
  font-size: 13px;
  font-weight: 500;
  display: flex;
  align-items: center;
  gap: 6px;
}

.st-test-result.success {
  background: rgba(16, 185, 129, 0.06);
  color: #10b981;
}

.st-test-result.error {
  background: rgba(239, 68, 68, 0.06);
  color: var(--change-bull);
}

/* Admin grid */
.st-admin-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-gap: 10px;
  gap: 10px;
}

.st-admin-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 20px 12px;
  background: var(--change-surface-low);
  border: none;
  border-radius: 1rem;
  cursor: pointer;
  transition: all 0.2s ease;
  color: var(--change-on-surface);
  font-size: 13px;
  font-weight: 600;
}

.st-admin-btn:hover {
  background: var(--change-surface-high);
  transform: translateY(-2px);
  box-shadow: var(--change-shadow);
}

.st-admin-btn svg {
  width: 24px;
  height: 24px;
  color: var(--change-primary);
}

/* ── Loading state ── */
.st-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--change-spacing-xxl) 0;
  gap: 16px;
}

.st-loading-spinner {
  width: 36px;
  height: 36px;
  border: 3px solid var(--change-surface-high);
  border-top-color: var(--change-primary);
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
}

.st-loading-text {
  font-size: 14px;
  color: var(--change-outline);
  font-weight: 500;
}

/* ── Textarea ── */
.st-textarea {
  width: 100%;
  padding: 12px 16px;
  background: var(--change-surface-low);
  border: none;
  border-radius: 0.75rem;
  font-size: 14px;
  color: var(--change-on-surface);
  resize: vertical;
  min-height: 72px;
  font-family: inherit;
  box-sizing: border-box;
  transition: all 0.2s ease;
}

.st-textarea:focus {
  outline: none;
  box-shadow: 0 0 0 2px rgba(49, 130, 246, 0.2);
}

/* ── Responsive ── */

@media (max-width: 768px) {
  .st-page {
    padding: 12px;
  }

  .st-page-title {
    font-size: 1.5rem;
  }

  .st-form-grid {
    grid-template-columns: 1fr;
  }

  .st-btn-row {
    flex-direction: column;
  }

  .st-btn {
    flex: initial;
    width: 100%;
  }

  .st-admin-grid {
    grid-template-columns: 1fr;
  }

  .st-section-header {
    padding: 16px;
  }

  .st-section-content {
    padding: 0 16px 16px;
  }

  .st-switch-row {
    padding: 14px;
  }

  .st-token-row {
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
  }
}

@media (max-width: 480px) {
  .st-page {
    padding: 8px;
  }

  .st-page-title {
    font-size: 1.25rem;
  }

  .st-section-icon {
    width: 36px;
    height: 36px;
    font-size: 18px;
  }

  .st-section-title {
    font-size: 14px;
  }

  .st-input,
  .st-select,
  .st-textarea {
    font-size: 16px; /* iOS zoom prevention */
    padding: 14px 16px;
  }
}

/* Spinning animation for loading icons */
.st-spin {
  animation: spin 1s linear infinite;
}

/* ===================================
   Backtester - Stitch Design System
   --change-* tokens, no-border rule
   =================================== */

.backtester-change {
  max-width: 1400px;
  margin: 0 auto;
  padding: var(--change-spacing-lg);
}

/* ---- Page Header ---- */
.backtester-header-change {
  margin-bottom: var(--change-spacing-xs);
}

.backtester-title-change {
  font-size: 24px;
  font-weight: 800;
  color: var(--change-on-surface);
  margin: 0 0 4px 0;
  letter-spacing: -0.02em;
}

.backtester-subtitle-change {
  font-size: 14px;
  color: var(--change-outline);
  margin: 0;
  font-weight: 500;
}

/* ---- Strategy Tab Switcher ---- */
.backtester-tabs {
  display: inline-flex;
  background: var(--change-surface-low);
  padding: 6px;
  border-radius: 1rem;
  gap: 0;
  margin-bottom: var(--change-spacing-lg);
}

.backtester-tab {
  padding: 10px 20px;
  font-size: 14px;
  font-weight: 500;
  color: var(--change-outline);
  background: transparent;
  border: none;
  border-radius: 12px;
  cursor: pointer;
  transition: all 0.2s ease;
  white-space: nowrap;
}

.backtester-tab:hover {
  color: var(--change-on-surface);
}

.backtester-tab.active {
  background: var(--change-surface-lowest);
  color: var(--change-primary);
  font-weight: 700;
  box-shadow: var(--change-shadow-sm);
}

/* ---- Main Grid Layout ---- */
.backtester-grid {
  display: grid;
  grid-template-columns: 1fr 2fr;
  grid-gap: var(--change-spacing-lg);
  gap: var(--change-spacing-lg);
  align-items: start;
}

/* ---- Config Panel (Left) ---- */
.backtest-form-change {
  background: var(--change-surface-lowest);
  border-radius: 2rem;
  padding: var(--change-spacing-lg);
  box-shadow: var(--change-shadow-sm);
}

.section-title-change {
  font-size: 11px;
  font-weight: 700;
  color: var(--change-outline);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin: 0 0 var(--change-spacing-md) 0;
}

.form-grid-change {
  display: flex;
  flex-direction: column;
  gap: var(--change-spacing-sm);
  margin-bottom: var(--change-spacing-md);
}

.form-field-change {
  display: flex;
  flex-direction: column;
}

.form-field-change .label-change {
  font-size: 12px;
  font-weight: 600;
  color: var(--change-on-surface-variant);
  margin-bottom: 8px;
}

.form-field-change .input-change {
  width: 100%;
  padding: 12px 14px;
  background: var(--change-surface-low);
  border: none;
  border-radius: 12px;
  font-size: 14px;
  font-weight: 500;
  color: var(--change-on-surface);
  transition: box-shadow 0.2s ease;
  box-sizing: border-box;
}

.form-field-change .input-change:focus {
  outline: none;
  box-shadow: 0 0 0 2px rgba(0, 89, 185, 0.2);
}

.form-field-change .input-change::placeholder {
  color: var(--change-outline);
}

.form-hint-change {
  color: var(--change-outline);
  font-size: 11px;
  margin-top: 4px;
  font-weight: 500;
}

/* ---- Form Buttons ---- */
.backtester-actions {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.backtester-actions .btn-change-primary {
  width: 100%;
  padding: 16px;
  background: var(--change-primary);
  color: #fff;
  border: none;
  border-radius: 1rem;
  font-weight: 700;
  font-size: 15px;
  cursor: pointer;
  box-shadow: 0 8px 24px rgba(0, 89, 185, 0.3);
  transition: all 0.15s ease;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

.backtester-actions .btn-change-primary:hover {
  opacity: 0.9;
  transform: translateY(-1px);
}

.backtester-actions .btn-change-primary:active {
  transform: scale(0.98);
}

.backtester-actions .btn-change-primary:disabled {
  background: var(--change-surface-high);
  color: var(--change-outline);
  cursor: not-allowed;
  box-shadow: none;
  transform: none;
}

.backtester-actions .btn-change-secondary {
  width: 100%;
  padding: 14px;
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  color: #fff;
  border: none;
  border-radius: 1rem;
  font-weight: 700;
  font-size: 14px;
  cursor: pointer;
  transition: all 0.15s ease;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

.backtester-actions .btn-change-secondary:hover {
  opacity: 0.9;
}

.backtester-actions .btn-change-secondary:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* ---- Advanced Settings Accordion ---- */
.accordion-change {
  background: var(--change-surface-low);
  border-radius: 1rem;
  margin-top: var(--change-spacing-sm);
  overflow: hidden;
}

.accordion-change summary {
  padding: var(--change-spacing-sm) var(--change-spacing-md);
  cursor: pointer;
  font-weight: 600;
  font-size: 14px;
  color: var(--change-on-surface);
  list-style: none;
  display: flex;
  align-items: center;
  gap: 8px;
  -webkit-user-select: none;
          user-select: none;
}

.accordion-change summary::-webkit-details-marker {
  display: none;
}

.accordion-change[open] summary {
  box-shadow: inset 0 -1px 0 0 var(--change-outline-variant);
}

.accordion-content {
  padding: var(--change-spacing-md);
}

.accordion-desc {
  font-size: 12px;
  color: var(--change-outline);
  margin: 0 0 var(--change-spacing-sm) 0;
}

.accordion-content .form-grid-change {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-gap: var(--change-spacing-sm);
  gap: var(--change-spacing-sm);
}

/* ---- Error Alert ---- */
.error-alert-change {
  background: rgba(239, 68, 68, 0.08);
  box-shadow: 0 0 0 2px var(--change-bull);
  border: none;
  border-radius: 1rem;
  padding: var(--change-spacing-sm) var(--change-spacing-md);
  display: flex;
  align-items: center;
  gap: 10px;
  color: var(--change-bull);
  font-size: 14px;
  font-weight: 600;
  margin-bottom: var(--change-spacing-md);
}

.error-icon {
  font-size: 20px;
}

/* ---- Results Section ---- */
.results-section-change {
  margin-top: var(--change-spacing-lg);
}

/* ---- Metrics Bento Grid ---- */
.results-grid-change {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  grid-gap: var(--change-spacing-sm);
  gap: var(--change-spacing-sm);
  margin-bottom: var(--change-spacing-lg);
}

@media (min-width: 769px) {
  .results-grid-change {
    grid-template-columns: repeat(4, 1fr);
  }
}

.result-card-change {
  background: var(--change-surface-lowest);
  border-radius: 1.5rem;
  padding: var(--change-spacing-md);
  box-shadow: var(--change-shadow-sm);
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.result-card-change.primary {
  background: rgba(0, 89, 185, 0.06);
  box-shadow: 0 0 0 2px var(--change-primary);
}

.result-label-change {
  font-size: 12px;
  color: var(--change-outline);
  font-weight: 500;
}

.result-value-change {
  font-size: 24px;
  font-weight: 800;
  color: var(--change-on-surface);
  letter-spacing: -0.02em;
}

.result-card-change.primary .result-value-change {
  color: var(--change-primary);
}

/* ---- Optimization Results Card ---- */
.optimization-hero {
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  padding: var(--change-spacing-md);
  border-radius: 1.5rem;
  color: #fff;
  margin-bottom: var(--change-spacing-md);
}

.optimization-hero h3 {
  margin: 0 0 var(--change-spacing-sm) 0;
  font-size: 16px;
  font-weight: 700;
}

.optimization-params {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  grid-gap: 12px;
  gap: 12px;
}

.optimization-params .param-label {
  opacity: 0.8;
  font-size: 12px;
  font-weight: 500;
}

.optimization-params .param-value {
  font-size: 18px;
  font-weight: 800;
}

.optimization-divider {
  margin-top: var(--change-spacing-sm);
  padding-top: var(--change-spacing-sm);
  border-top: 1px solid rgba(255, 255, 255, 0.2);
}

.optimization-metrics {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-gap: 12px;
  gap: 12px;
}

.optimization-metrics .param-value {
  font-size: 22px;
}

/* ---- Trade Table ---- */
.backtest-table-wrap {
  background: var(--change-surface-lowest);
  border-radius: 2rem;
  box-shadow: var(--change-shadow-sm);
  overflow: hidden;
  margin-top: var(--change-spacing-lg);
}

.backtest-table-header {
  padding: var(--change-spacing-md) var(--change-spacing-lg);
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.backtest-table-header h3 {
  font-size: 18px;
  font-weight: 700;
  color: var(--change-on-surface);
  margin: 0;
}

.backtest-table-header .table-actions {
  display: flex;
  gap: 8px;
}

.backtest-table-header .table-actions button {
  padding: 8px;
  background: none;
  border: none;
  color: var(--change-outline);
  cursor: pointer;
  border-radius: 8px;
  transition: color 0.2s;
}

.backtest-table-header .table-actions button:hover {
  color: var(--change-primary);
}

.backtest-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}

.backtest-table th {
  padding: 14px 24px;
  text-align: left;
  font-size: 11px;
  font-weight: 700;
  color: var(--change-outline);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  background: var(--change-surface-low);
  border: none;
}

.backtest-table td {
  padding: 16px 24px;
  text-align: left;
  color: var(--change-on-surface);
  border: none;
}

.backtest-table tbody tr {
  transition: background-color 0.2s;
}

.backtest-table tbody tr:hover {
  background: var(--change-surface-low);
}

/* Stock name cell with icon */
.stock-cell {
  display: flex;
  align-items: center;
  gap: 12px;
}

.stock-icon {
  width: 32px;
  height: 32px;
  border-radius: 8px;
  background: var(--change-surface-container);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 11px;
  color: var(--change-primary);
  flex-shrink: 0;
}

.stock-name {
  font-size: 14px;
  font-weight: 700;
  color: var(--change-on-surface);
}

/* ---- Debug Info Panel ---- */
.debug-info {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  grid-gap: var(--change-spacing-sm);
  gap: var(--change-spacing-sm);
  padding: var(--change-spacing-md);
  background: var(--change-surface-low);
  border-radius: 1rem;
  margin-top: var(--change-spacing-md);
}

.debug-item {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.debug-label {
  font-size: 11px;
  font-weight: 600;
  color: var(--change-outline);
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.debug-value {
  font-size: 15px;
  font-weight: 700;
  color: var(--change-on-surface);
}

/* ---- Top10 Table ---- */
.optimization-table-wrap {
  margin-top: var(--change-spacing-md);
}

.optimization-table-wrap h3 {
  font-size: 14px;
  font-weight: 700;
  color: var(--change-on-surface);
  margin: 0 0 12px 0;
}

.optimization-table-wrap .backtest-table th {
  background: var(--change-surface-low);
}

.optimization-message {
  margin-top: 12px;
  padding: 10px 14px;
  background: var(--change-surface-low);
  border-radius: 8px;
  font-size: 12px;
  color: var(--change-outline);
}

/* ===================================
   Responsive
   =================================== */

@media (max-width: 1024px) {
  .backtester-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 768px) {
  .backtester-change {
    padding: var(--change-spacing-sm);
  }

  .backtester-title-change {
    font-size: 20px;
  }

  .backtester-tabs {
    overflow-x: auto;
    width: 100%;
  }

  .backtester-tab {
    padding: 8px 14px;
    font-size: 13px;
  }

  .backtest-form-change {
    padding: var(--change-spacing-md);
    border-radius: 1.5rem;
  }

  .results-grid-change {
    grid-template-columns: 1fr;
  }

  .result-card-change {
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    padding: var(--change-spacing-sm);
  }

  .result-value-change {
    font-size: 20px;
  }

  .backtest-table th,
  .backtest-table td {
    padding: 10px 12px;
  }

  .backtest-table-wrap {
    border-radius: 1.5rem;
  }

  .accordion-content .form-grid-change {
    grid-template-columns: 1fr;
  }

  .optimization-metrics {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 480px) {
  .backtester-change {
    padding: 8px;
  }

  .backtester-title-change {
    font-size: 18px;
  }

  .result-value-change {
    font-size: 18px;
  }

  .backtest-table {
    font-size: 12px;
  }

  .backtest-table th,
  .backtest-table td {
    padding: 8px;
  }
}

/* ===================================
   Dark Mode
   =================================== */
[data-theme="dark"] .backtest-form-change {
  background: var(--change-surface-lowest);
}

[data-theme="dark"] .result-card-change {
  background: var(--change-surface-lowest);
}

[data-theme="dark"] .result-card-change.primary {
  background: rgba(49, 130, 246, 0.1);
}

[data-theme="dark"] .backtest-table-wrap {
  background: var(--change-surface-lowest);
}

[data-theme="dark"] .backtest-table th {
  background: var(--change-surface-low);
  color: var(--change-outline);
}

[data-theme="dark"] .backtest-table td {
  color: var(--change-on-surface);
}

[data-theme="dark"] .backtest-table tbody tr:hover {
  background: var(--change-surface-low);
}

[data-theme="dark"] .debug-info {
  background: var(--change-surface-low);
}

[data-theme="dark"] .optimization-message {
  background: var(--change-surface-low);
}

/* AccountManagement_Change.css - 위저드 스타일 */

.account-management-change {
  max-width: 800px;
  margin: 0 auto;
  padding: var(--change-spacing-md);
}

/* 헤더 */
.account-header-change {
  margin-bottom: var(--change-spacing-lg);
}

.account-title-change {
  font-size: var(--change-font-title);
  font-weight: 700;
  color: var(--change-text);
  margin: 0 0 var(--change-spacing-xs) 0;
}

.account-subtitle-change {
  font-size: var(--change-font-body);
  color: var(--change-gray-600);
  margin: 0;
}

/* 위저드 */
.wizard-change {
  background: var(--change-bg);
  border-radius: var(--change-radius);
  padding: var(--change-spacing-lg);
  box-shadow: var(--change-shadow);
}

/* 위저드 단계 */
.wizard-steps-change {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--change-spacing-xl);
  position: relative;
}

.wizard-step-change {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--change-spacing-xs);
  flex: 1 1;
  position: relative;
  z-index: 2;
}

.step-circle-change {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: var(--change-gray-200);
  color: var(--change-gray-600);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: var(--change-font-body);
  font-weight: 700;
  transition: all 0.3s ease;
}

.wizard-step-change.active .step-circle-change {
  background: var(--change-primary);
  color: white;
  box-shadow: 0 4px 12px rgba(49, 130, 246, 0.3);
}

.wizard-step-change.completed .step-circle-change {
  background: #10B981;
  color: white;
  font-size: 24px;
}

.step-label-change {
  font-size: var(--change-font-caption);
  color: var(--change-gray-600);
  font-weight: 600;
  text-align: center;
}

.wizard-step-change.active .step-label-change {
  color: var(--change-primary);
}

.wizard-step-change.completed .step-label-change {
  color: #10B981;
}

/* 단계 연결선 */
.step-connector-change {
  height: 2px;
  background: var(--change-gray-200);
  flex: 1 1;
  margin: 0 -8px;
  margin-bottom: 24px;
  position: relative;
  z-index: 1;
}

/* 위저드 컨텐츠 */
.wizard-content-change {
  min-height: 400px;
  margin-bottom: var(--change-spacing-lg);
}

/* 폼 */
.wizard-form-change {
  animation: fadeIn 0.3s ease;
}

.form-header-change {
  text-align: center;
  margin-bottom: var(--change-spacing-lg);
}

.form-header-icon {
  font-size: 64px;
  color: var(--change-primary);
  margin-bottom: var(--change-spacing-sm);
}

.form-header-icon.success {
  color: #10B981;
}

.form-title-change {
  font-size: var(--change-font-title);
  font-weight: 700;
  color: var(--change-text);
  margin: 0 0 var(--change-spacing-xs) 0;
}

.form-desc-change {
  font-size: var(--change-font-body);
  color: var(--change-gray-600);
  margin: 0;
}

/* 폼 필드 */
.form-fields-change {
  display: flex;
  flex-direction: column;
  gap: var(--change-spacing-md);
  margin-bottom: var(--change-spacing-lg);
}

.form-field-change {
  display: flex;
  flex-direction: column;
  gap: var(--change-spacing-xs);
}

.input-change.error {
  border-color: #EF4444;
}

.error-text-change {
  font-size: var(--change-font-caption);
  color: #EF4444;
  font-weight: 500;
}

/* 정보 박스 */
.info-box-change {
  background: rgba(49, 130, 246, 0.05);
  box-shadow: 0 0 0 2px rgba(49, 130, 246, 0.2);
  border: none;
  border-radius: var(--change-radius-sm);
  padding: var(--change-spacing-md);
  display: flex;
  gap: var(--change-spacing-sm);
}

.info-icon {
  font-size: 24px;
  flex-shrink: 0;
}

.info-text {
  flex: 1 1;
}

.info-text strong {
  display: block;
  font-size: var(--change-font-caption);
  font-weight: 700;
  color: var(--change-text);
  margin-bottom: 4px;
}

.info-text p {
  font-size: var(--change-font-caption);
  color: var(--change-gray-600);
  margin: 0;
}

/* 요약 박스 */
.summary-box-change {
  background: var(--change-gray-50);
  border-radius: var(--change-radius);
  padding: var(--change-spacing-md);
  display: flex;
  flex-direction: column;
  gap: var(--change-spacing-sm);
  margin-bottom: var(--change-spacing-lg);
}

.summary-item-change {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 0;
  box-shadow: inset 0 -1px 0 0 var(--change-gray-200);
}

.summary-item-change:last-child {
  border-bottom: none;
}

.summary-label-change {
  font-size: var(--change-font-caption);
  color: var(--change-gray-600);
  font-weight: 500;
}

.summary-value-change {
  font-size: var(--change-font-body);
  color: var(--change-text);
  font-weight: 600;
}

/* 성공 메시지 */
.success-message-change {
  text-align: center;
  padding: var(--change-spacing-xl);
  background: rgba(16, 185, 129, 0.05);
  border-radius: var(--change-radius);
}

.success-icon {
  font-size: 64px;
  color: #10B981;
  margin-bottom: var(--change-spacing-md);
}

.success-message-change h3 {
  font-size: var(--change-font-title);
  font-weight: 700;
  color: var(--change-text);
  margin: 0 0 var(--change-spacing-xs) 0;
}

.success-message-change p {
  font-size: var(--change-font-body);
  color: var(--change-gray-600);
  margin: 0;
}

/* 위저드 액션 */
.wizard-actions-change {
  display: flex;
  gap: var(--change-spacing-md);
}

.wizard-actions-change .btn-change-primary,
.wizard-actions-change .btn-change-secondary {
  flex: 1 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

/* ===================================
   Enhanced Responsive Design System
   PC (>1024px) → Tablet (768-1024px) → Mobile (<768px) → Small (<480px)
   =================================== */

/* 태블릿 (768px - 1024px) */
@media (max-width: 1024px) and (min-width: 769px) {
  .account-management-change {
    max-width: 100%;
    padding: var(--change-spacing-md);
  }

  .account-title-change {
    font-size: 22px;
  }

  .wizard-change {
    padding: var(--change-spacing-md);
  }

  .step-circle-change {
    width: 50px;
    height: 50px;
  }

  .wizard-content-change {
    min-height: 350px;
  }

  .form-header-icon {
    font-size: 56px;
  }

  .form-title-change {
    font-size: 20px;
  }
}

/* 모바일 (<768px) */
@media (max-width: 768px) {
  .account-management-change {
    padding: 12px;
  }

  .account-header-change {
    margin-bottom: var(--change-spacing-md);
  }

  .account-title-change {
    font-size: 20px;
  }

  .account-subtitle-change {
    font-size: 13px;
  }

  .wizard-change {
    padding: 16px;
  }

  .wizard-steps-change {
    flex-direction: column;
    margin-bottom: var(--change-spacing-lg);
  }

  .step-connector-change {
    display: none;
  }

  .wizard-step-change {
    width: 100%;
    flex-direction: row;
    justify-content: flex-start;
    margin-bottom: var(--change-spacing-md);
    gap: var(--change-spacing-md);
  }

  .step-circle-change {
    width: 44px;
    height: 44px;
    font-size: 16px;
  }

  .wizard-step-change.completed .step-circle-change {
    font-size: 20px;
  }

  .step-label-change {
    text-align: left;
    font-size: 13px;
  }

  .wizard-content-change {
    min-height: 300px;
    margin-bottom: var(--change-spacing-md);
  }

  .form-header-change {
    margin-bottom: var(--change-spacing-md);
  }

  .form-header-icon {
    font-size: 48px;
  }

  .form-title-change {
    font-size: 18px;
  }

  .form-desc-change {
    font-size: 13px;
  }

  .form-fields-change {
    gap: 14px;
    margin-bottom: var(--change-spacing-md);
  }

  .info-box-change {
    padding: 14px;
    gap: 10px;
  }

  .info-icon {
    font-size: 20px;
  }

  .info-text strong {
    font-size: 13px;
  }

  .info-text p {
    font-size: 12px;
  }

  .summary-box-change {
    padding: 14px;
    margin-bottom: var(--change-spacing-md);
  }

  .summary-item-change {
    padding: 10px 0;
  }

  .summary-label-change {
    font-size: 12px;
  }

  .summary-value-change {
    font-size: 14px;
  }

  .success-message-change {
    padding: var(--change-spacing-lg);
  }

  .success-icon {
    font-size: 48px;
  }

  .success-message-change h3 {
    font-size: 18px;
  }

  .success-message-change p {
    font-size: 13px;
  }

  .wizard-actions-change {
    flex-direction: column;
    gap: 10px;
  }

  .wizard-actions-change .btn-change-primary,
  .wizard-actions-change .btn-change-secondary {
    width: 100%;
  }
}

/* 소형 모바일 (<480px) */
@media (max-width: 480px) {
  .account-management-change {
    padding: 8px;
  }

  .account-title-change {
    font-size: 18px;
  }

  .account-subtitle-change {
    font-size: 12px;
  }

  .wizard-change {
    padding: 12px;
  }

  .wizard-steps-change {
    margin-bottom: var(--change-spacing-md);
  }

  .wizard-step-change {
    margin-bottom: 12px;
    gap: 12px;
  }

  .step-circle-change {
    width: 38px;
    height: 38px;
    font-size: 14px;
  }

  .wizard-step-change.completed .step-circle-change {
    font-size: 18px;
  }

  .step-label-change {
    font-size: 12px;
  }

  .wizard-content-change {
    min-height: 260px;
  }

  .form-header-icon {
    font-size: 40px;
    margin-bottom: 8px;
  }

  .form-title-change {
    font-size: 16px;
  }

  .form-desc-change {
    font-size: 12px;
  }

  .form-fields-change {
    gap: 12px;
  }

  .info-box-change {
    padding: 12px;
    gap: 8px;
    flex-direction: column;
    text-align: center;
  }

  .info-icon {
    font-size: 24px;
  }

  .summary-box-change {
    padding: 12px;
  }

  .summary-item-change {
    padding: 8px 0;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
  }

  .summary-label-change {
    font-size: 11px;
  }

  .summary-value-change {
    font-size: 13px;
  }

  .success-message-change {
    padding: var(--change-spacing-md);
  }

  .success-icon {
    font-size: 40px;
    margin-bottom: 12px;
  }

  .success-message-change h3 {
    font-size: 16px;
  }

  .success-message-change p {
    font-size: 12px;
  }

  .wizard-actions-change {
    gap: 8px;
  }
}
/* ============================================
   리밸런싱 — Stitch Design B (화이트 카드)
   CSS 변수 기반 → 다크/라이트 자동 전환
   ============================================ */

/* ── 페이지 컨테이너 ── */
.rebalancing-change {
  padding: var(--change-spacing-lg);
  max-width: 1280px;
  margin: 0 auto;
}

/* ── 페이지 헤더 ── */
.rb-page-header {
  margin-bottom: var(--change-spacing-md);
}

.rb-page-title {
  font-size: 1.75rem;
  font-weight: 800;
  color: var(--change-text-primary);
  margin: 0 0 6px;
  letter-spacing: -0.02em;
}

.rb-page-desc {
  font-size: 0.875rem;
  color: var(--change-text-muted);
  margin: 0;
}

/* ── 요약 카드 그리드 ── */
.rb-summary-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  grid-gap: 16px;
  gap: 16px;
  margin-bottom: var(--change-spacing-lg);
}

.rb-summary-card {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 20px;
  background: var(--change-card-bg);
  border-radius: 1rem;
  box-shadow: var(--change-shadow-sm);
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.rb-summary-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--change-shadow-md);
}

.rb-summary-icon {
  width: 44px;
  height: 44px;
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  background: var(--change-gray-100);
  color: var(--change-text-secondary);
}

.rb-summary-icon .material-symbols-outlined {
  font-size: 22px;
}

.rb-icon-blue { background: rgba(0, 89, 185, 0.08); color: #0059b9; }
.rb-icon-red { background: rgba(239, 68, 68, 0.08); color: var(--change-bull); }
.rb-icon-bearblue { background: rgba(59, 130, 246, 0.08); color: var(--change-bear); }
.rb-icon-green { background: rgba(16, 185, 129, 0.08); color: #10b981; }

.rb-summary-body {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.rb-summary-label {
  font-size: 11px;
  font-weight: 600;
  color: var(--change-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.rb-summary-value {
  font-size: 1.125rem;
  font-weight: 800;
  color: var(--change-text-primary);
  font-family: 'Inter', var(--change-font-primary);
  font-feature-settings: "tnum";
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.rb-profit-positive { color: var(--change-bull); }
.rb-profit-negative { color: var(--change-bear); }

.rb-rate {
  font-size: 0.75rem;
  font-weight: 600;
  opacity: 0.8;
}

/* ── 섹션 카드 (공통) ── */
.section-change {
  background: var(--change-card-bg);
  border-radius: 1rem;
  box-shadow: var(--change-shadow-sm);
  padding: var(--change-spacing-md);
  margin-bottom: var(--change-spacing-md);
}

.section-title-change {
  font-size: 1rem;
  font-weight: 700;
  color: var(--change-text-primary);
  margin: 0 0 var(--change-spacing-sm);
  display: flex;
  align-items: center;
  gap: 8px;
}

.section-title-change i,
.section-title-change .material-symbols-outlined {
  font-size: 18px;
  color: var(--change-primary);
}

.section-header-change {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--change-spacing-sm);
  gap: 12px;
}

/* ── 보유종목 테이블 ── */
.table-container-change {
  overflow-x: auto;
}

.holdings-table-change {
  width: 100%;
  border-collapse: collapse;
}

.holdings-table-change thead {
  background: var(--change-surface);
}

.holdings-table-change th {
  padding: 10px 14px;
  text-align: left;
  font-size: 11px;
  font-weight: 700;
  color: var(--change-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  white-space: nowrap;
}

.holdings-table-change td {
  padding: 14px;
  font-size: 0.8125rem;
  color: var(--change-text-primary);
  border-bottom: 1px solid var(--change-border);
  font-family: 'Inter', var(--change-font-primary);
  font-feature-settings: "tnum";
  font-variant-numeric: tabular-nums;
}

.holdings-table-change tbody tr {
  transition: background 0.12s ease;
  cursor: pointer;
}

.holdings-table-change tbody tr:hover {
  background: var(--change-surface-hover);
}

.holdings-table-change tbody tr:last-child td {
  border-bottom: none;
}

.holdings-table-change tbody tr.row-selected {
  background: var(--change-primary-light);
}

/* 종목명 셀 */
.stock-name-cell {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.stock-name {
  font-weight: 700;
  color: var(--change-text-primary);
  font-size: 0.875rem;
}

.stock-code {
  font-size: 11px;
  color: var(--change-text-muted);
}

/* 텍스트 정렬 */
.text-right { text-align: right; }
.text-center { text-align: center; }

/* 수익 컬러 */
.positive { color: var(--change-bull) !important; font-weight: 700; }
.negative { color: var(--change-bear) !important; font-weight: 700; }

/* 뱃지 */
.badge-success {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 10px;
  border-radius: 9999px;
  font-size: 11px;
  font-weight: 700;
  background: rgba(16, 185, 129, 0.1);
  color: #10b981;
}

.badge-secondary {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 9999px;
  font-size: 11px;
  font-weight: 600;
  background: var(--change-gray-100);
  color: var(--change-text-muted);
}

/* 체크박스 라벨 */
.checkbox-label-change {
  display: flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  -webkit-user-select: none;
          user-select: none;
  font-size: 0.8125rem;
  color: var(--change-text-secondary);
  font-weight: 500;
}

.checkbox-label-change input[type="checkbox"] {
  width: 18px;
  height: 18px;
  cursor: pointer;
  accent-color: var(--change-primary);
}

/* ── 전략 선택 2×2 그리드 ── */
.strategy-selector-change {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  grid-gap: 16px;
  gap: 16px;
  margin-top: var(--change-spacing-sm);
}

.strategy-option-wrapper {
  width: 100%;
}

.strategy-option {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 20px;
  background: var(--change-card-bg);
  border-radius: 1rem;
  border: 2px solid var(--change-border);
  cursor: pointer;
  transition: all 0.2s ease;
}

.strategy-option:hover {
  border-color: rgba(0, 89, 185, 0.3);
  box-shadow: var(--change-shadow-md);
}

.strategy-option input[type="radio"] {
  margin-top: 2px;
  width: 18px;
  height: 18px;
  cursor: pointer;
  accent-color: var(--change-primary);
  flex-shrink: 0;
}

.strategy-option:has(input[type="radio"]:checked) {
  border-color: var(--change-primary);
  background: var(--change-primary-light);
}

.strategy-content {
  flex: 1 1;
  min-width: 0;
}

.strategy-title {
  font-size: 0.875rem;
  font-weight: 700;
  color: var(--change-text-primary);
  margin-bottom: 4px;
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.strategy-description {
  font-size: 0.75rem;
  color: var(--change-text-muted);
  line-height: 1.5;
}

.strategy-accordion-btn {
  background: transparent;
  border: none;
  border-radius: 6px;
  padding: 4px 10px;
  font-size: 0.75rem;
  color: var(--change-primary);
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 4px;
  transition: background 0.15s ease;
  margin-left: auto;
  font-weight: 600;
}

.strategy-accordion-btn:hover {
  background: var(--change-primary-light);
}

.strategy-details-accordion {
  border-top: 1px solid var(--change-border);
  padding-top: 14px;
  margin-top: 12px;
  animation: slideDown 0.2s ease-out;
}

@keyframes slideDown {
  from { opacity: 0; transform: translateY(-6px); }
  to { opacity: 1; transform: translateY(0); }
}

.form-group-change { margin-bottom: 12px; }
.form-group-change:last-child { margin-bottom: 0; }

.form-label-change {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 0.8125rem;
  font-weight: 600;
  color: var(--change-text-secondary);
}

.form-input-change {
  width: 100%;
  height: 40px;
  padding: 0 12px;
  border: none;
  border-radius: 8px;
  font-size: 0.875rem;
  color: var(--change-text-primary);
  background: var(--change-gray-100);
  transition: all 0.15s ease;
  box-sizing: border-box;
}

.form-input-change:focus {
  outline: none;
  background: var(--change-card-bg);
  box-shadow: 0 0 0 2px var(--change-primary);
}

.help-text-change {
  display: block;
  margin-top: 4px;
  font-size: 0.6875rem;
  color: var(--change-text-muted);
  line-height: 1.5;
}

/* ── 일괄 적용 (블루 액센트 카드 — Stitch Design B) ── */
.batch-actions-container {
  padding: var(--change-spacing-md);
  background: var(--change-primary);
  border-radius: 1rem;
  color: #ffffff;
  position: relative;
  overflow: hidden;
}

.batch-actions-container::before {
  content: '';
  position: absolute;
  bottom: -30px;
  right: -30px;
  width: 120px;
  height: 120px;
  background: rgba(255, 255, 255, 0.08);
  border-radius: 50%;
  filter: blur(40px);
  pointer-events: none;
}

.batch-summary {
  display: flex;
  gap: var(--change-spacing-md);
  margin-bottom: var(--change-spacing-md);
  padding-bottom: var(--change-spacing-sm);
  border-bottom: 1px solid rgba(255, 255, 255, 0.15);
}

.batch-summary-item {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.batch-label {
  font-size: 11px;
  color: rgba(255, 255, 255, 0.65);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.batch-value {
  font-size: 1.125rem;
  font-weight: 800;
  color: #ffffff;
  font-family: 'Inter', var(--change-font-primary);
  font-feature-settings: "tnum";
  font-variant-numeric: tabular-nums;
}

.batch-actions {
  display: flex;
  gap: 12px;
}

.btn-full { width: 100%; }

.btn-primary-change.btn-full {
  background: #ffffff;
  color: var(--change-primary);
  border: none;
  border-radius: 12px;
  padding: 14px 24px;
  font-size: 0.9375rem;
  font-weight: 800;
  cursor: pointer;
  transition: all 0.2s ease;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

.btn-primary-change.btn-full:hover:not(:disabled) {
  background: rgba(255, 255, 255, 0.9);
  transform: scale(0.98);
}

.btn-primary-change.btn-full:disabled {
  background: rgba(255, 255, 255, 0.3);
  color: rgba(255, 255, 255, 0.6);
  cursor: not-allowed;
}

.btn-secondary-change.btn-full {
  background: rgba(255, 255, 255, 0.15);
  color: rgba(255, 255, 255, 0.8);
  border: none;
  border-radius: 12px;
  padding: 14px 24px;
  font-size: 0.875rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s ease;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

.btn-secondary-change.btn-full:hover:not(:disabled) {
  background: rgba(255, 255, 255, 0.25);
}

.btn-secondary-change.btn-full:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

/* 새로고침 / 위험 버튼 */
.btn-secondary-change {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  background: var(--change-gray-100);
  color: var(--change-text-secondary);
  border: none;
  border-radius: 10px;
  font-size: 0.8125rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s ease;
}

.btn-secondary-change:hover {
  background: var(--change-gray-200);
  color: var(--change-primary);
}

.btn-danger-change {
  background: rgba(239, 68, 68, 0.08);
  color: #ef4444;
  border: none;
  border-radius: 8px;
  cursor: pointer;
  transition: all 0.15s ease;
}

.btn-danger-change.btn-sm { padding: 6px 10px; font-size: 12px; }
.btn-danger-change:hover { background: rgba(239, 68, 68, 0.15); }

/* ── 확인 모달 ── */
.modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.4);
  -webkit-backdrop-filter: blur(4px);
          backdrop-filter: blur(4px);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1000;
}

.modal-content-change {
  background: var(--change-card-bg);
  border-radius: 1.5rem;
  width: 90%;
  max-width: 480px;
  max-height: 90vh;
  overflow-y: auto;
  box-shadow: 0 24px 64px rgba(0, 0, 0, 0.15);
}

.modal-header-change {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 20px 24px;
  border-bottom: 1px solid var(--change-border);
}

.modal-header-change h3 {
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--change-text-primary);
  margin: 0;
  display: flex;
  align-items: center;
  gap: 8px;
}

.btn-icon-change {
  background: transparent;
  border: none;
  cursor: pointer;
  color: var(--change-text-muted);
  font-size: 18px;
  padding: 4px;
  border-radius: 8px;
  transition: background 0.15s;
}

.btn-icon-change:hover { background: var(--change-gray-100); }

.modal-body-change { padding: 20px 24px; }
.modal-body-change p { font-size: 0.875rem; color: var(--change-text-primary); line-height: 1.6; margin: 0 0 20px; }

.confirm-details { display: flex; flex-direction: column; gap: 10px; }
.confirm-item { padding: 12px 16px; background: var(--change-surface); border-radius: 10px; font-size: 0.8125rem; color: var(--change-text-primary); display: flex; align-items: center; gap: 10px; }
.confirm-item.warning { background: rgba(245, 158, 11, 0.08); color: #b45309; }

.modal-footer-change { display: flex; gap: 10px; padding: 16px 24px; border-top: 1px solid var(--change-border); justify-content: flex-end; }
.modal-footer-change .btn-primary-change { background: var(--change-primary); color: #fff; border: none; border-radius: 10px; padding: 10px 20px; font-weight: 700; font-size: 0.875rem; cursor: pointer; }
.modal-footer-change .btn-secondary-change { background: var(--change-gray-100); color: var(--change-text-secondary); }

/* ── 빈 상태 / 스켈레톤 ── */
.empty-state-change { text-align: center; padding: 48px 20px; color: var(--change-text-muted); }
.skeleton-change { background: var(--change-gray-100); border-radius: 1rem; animation: shimmer 1.5s infinite; }
@keyframes shimmer { 0% { opacity: 0.6; } 50% { opacity: 1; } 100% { opacity: 0.6; } }
.fade-in { animation: fadeIn 0.3s ease; }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }

/* ============================================
   반응형 (모바일)
   ============================================ */
@media (max-width: 768px) {
  .rebalancing-change { padding: 16px; }
  .rb-summary-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; }
  .rb-summary-card { padding: 14px; gap: 10px; }
  .rb-summary-icon { width: 36px; height: 36px; border-radius: 10px; }
  .rb-summary-icon .material-symbols-outlined { font-size: 18px; }
  .rb-summary-value { font-size: 0.9375rem; }
  .rb-page-title { font-size: 1.375rem; }
  .strategy-selector-change { grid-template-columns: 1fr; }
  .batch-summary { flex-direction: column; gap: 10px; }
  .batch-actions { flex-direction: column; }
  .section-header-change { flex-direction: column; align-items: flex-start; }
}

@media (max-width: 480px) {
  .rebalancing-change { padding: 12px; }
  .rb-summary-grid { grid-template-columns: 1fr 1fr; gap: 8px; }
  .rb-summary-card { padding: 12px; flex-direction: column; align-items: flex-start; gap: 8px; }
  .rb-page-title { font-size: 1.25rem; }
  .modal-content-change { width: 95%; border-radius: 1rem; }
}

/* ===================================
   IntegratedDashboard_Change.css
   Stitch Design System - Trading Journal (매매일지)
   --change-* 디자인 토큰 기반
   =================================== */

/* Page container */
.tj-page {
  padding: var(--change-spacing-sm) var(--change-spacing-md);
  min-height: 100vh;
  animation: fadeIn 0.4s ease;
}

/* ── Glassmorphism Sticky Header ── */
.tj-page-header {
  position: -webkit-sticky;
  position: sticky;
  top: 0;
  z-index: 30;
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  padding: var(--change-spacing-md) 0;
  margin-bottom: var(--change-spacing-lg);
  background: var(--change-header-bg);
  backdrop-filter: var(--change-header-blur);
  -webkit-backdrop-filter: var(--change-header-blur);
}

.tj-page-header-left {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.tj-page-subtitle {
  font-size: 11px;
  font-weight: 700;
  color: var(--change-primary);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  margin: 0;
}

.tj-page-title {
  font-size: 2rem;
  font-weight: 800;
  color: var(--change-on-surface);
  margin: 0;
  letter-spacing: -0.02em;
}

.tj-header-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}

.tj-header-btn {
  background: var(--change-surface-low);
  color: var(--change-on-surface-variant);
  border: none;
  border-radius: 0.75rem;
  padding: 8px 16px;
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
  display: flex;
  align-items: center;
  gap: 6px;
}

.tj-header-btn:hover {
  background: var(--change-surface-high);
  color: var(--change-on-surface);
}

/* ── Tab Navigation ── */
.tj-tab-bar {
  display: flex;
  gap: 4px;
  background: var(--change-surface-low);
  border-radius: 0.75rem;
  padding: 3px;
  margin-bottom: var(--change-spacing-lg);
}

.tj-tab-btn {
  flex: 1 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 10px 16px;
  border: none;
  border-radius: 0.625rem;
  background: transparent;
  color: var(--change-on-surface-variant);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s ease;
  white-space: nowrap;
}

.tj-tab-btn:hover {
  color: var(--change-on-surface);
}

.tj-tab-btn.active {
  background: var(--change-surface-lowest);
  color: var(--change-on-surface);
  box-shadow: var(--change-shadow-sm);
}

.tj-tab-btn .material-symbols-outlined {
  font-size: 18px;
}

/* ── Top Grid: Calendar + Summary ── */
.tj-top-grid {
  display: grid;
  grid-template-columns: 7fr 5fr;
  grid-gap: var(--change-spacing-lg);
  gap: var(--change-spacing-lg);
  margin-bottom: var(--change-spacing-lg);
}

/* ── Calendar Card ── */
.tj-calendar-card {
  background: var(--change-surface-lowest);
  border-radius: 1.5rem;
  padding: var(--change-spacing-lg);
  box-shadow: var(--change-shadow-sm);
}

.tj-calendar-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--change-spacing-lg);
}

.tj-calendar-title {
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--change-on-surface);
  margin: 0;
}

.tj-calendar-nav {
  display: flex;
  gap: 12px;
}

.tj-calendar-nav-btn {
  background: none;
  border: none;
  padding: 4px;
  cursor: pointer;
  color: var(--change-outline);
  transition: color 0.2s ease;
  display: flex;
  align-items: center;
}

.tj-calendar-nav-btn:hover {
  color: var(--change-primary);
}

.tj-calendar-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  grid-gap: 0;
  gap: 0;
  text-align: center;
}

.tj-calendar-dow {
  font-size: 11px;
  font-weight: 600;
  color: var(--change-outline);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding-bottom: var(--change-spacing-sm);
}

.tj-calendar-day {
  padding: 10px 0;
  font-size: 14px;
  font-weight: 500;
  color: var(--change-on-surface);
  cursor: pointer;
  position: relative;
  border-radius: 0.75rem;
  transition: all 0.15s ease;
}

.tj-calendar-day:hover {
  background: var(--change-surface-low);
}

.tj-calendar-day.other-month {
  color: var(--change-outline-variant);
}

.tj-calendar-day.selected {
  background: var(--change-primary);
  color: #ffffff;
  font-weight: 700;
  box-shadow: 0 4px 12px rgba(49, 130, 246, 0.2);
}

.tj-calendar-day.today {
  font-weight: 700;
  color: var(--change-primary);
}

.tj-calendar-day.selected.today {
  color: #ffffff;
}

.tj-calendar-dots {
  display: flex;
  justify-content: center;
  gap: 2px;
  position: absolute;
  bottom: 4px;
  left: 50%;
  transform: translateX(-50%);
}

.tj-calendar-dot {
  width: 4px;
  height: 4px;
  border-radius: 50%;
}

.tj-calendar-dot.bull {
  background: var(--change-bull);
}

.tj-calendar-dot.bear {
  background: var(--change-bear);
}

.tj-calendar-dot.neutral {
  background: var(--change-outline-variant);
}

/* Selected day dots show white */
.tj-calendar-day.selected .tj-calendar-dot {
  background: rgba(255, 255, 255, 0.8);
}

/* ── Daily Summary Panel ── */
.tj-summary-card {
  background: var(--change-surface-lowest);
  border-radius: 1.5rem;
  padding: var(--change-spacing-lg);
  box-shadow: var(--change-shadow-sm);
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

.tj-summary-bg-icon {
  position: absolute;
  top: 0;
  right: 0;
  padding: var(--change-spacing-lg);
  opacity: 0.06;
}

.tj-summary-bg-icon .material-symbols-outlined {
  font-size: 96px;
}

.tj-summary-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: var(--change-spacing-md);
}

.tj-summary-header-bar {
  width: 3px;
  height: 24px;
  background: var(--change-primary);
  border-radius: 4px;
}

.tj-summary-header-title {
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--change-on-surface);
  margin: 0;
}

.tj-summary-body {
  flex: 1 1;
  display: flex;
  flex-direction: column;
  gap: var(--change-spacing-md);
}

.tj-summary-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.tj-summary-label {
  font-size: 14px;
  font-weight: 500;
  color: var(--change-on-surface-variant);
}

.tj-summary-value {
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--change-on-surface);
}

.tj-summary-value.big {
  font-size: 1.75rem;
  font-weight: 900;
  letter-spacing: -0.02em;
}

.tj-summary-value.bull {
  color: var(--change-bull);
}

.tj-summary-value.bear {
  color: var(--change-bear);
}

.tj-summary-badges {
  display: flex;
  align-items: center;
  gap: 8px;
}

.tj-wl-badge {
  font-size: 11px;
  font-weight: 700;
  padding: 4px 10px;
  border-radius: 9999px;
}

.tj-wl-badge.win {
  background: rgba(239, 68, 68, 0.1);
  color: var(--change-bull);
}

.tj-wl-badge.lose {
  background: rgba(59, 130, 246, 0.1);
  color: var(--change-bear);
}

/* Best/Worst trade sub-cards */
.tj-summary-trades {
  display: flex;
  flex-direction: column;
  gap: var(--change-spacing-sm);
  padding-top: var(--change-spacing-md);
  margin-top: auto;
}

.tj-best-worst-card {
  background: var(--change-surface-low);
  padding: var(--change-spacing-sm);
  border-radius: 1rem;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.tj-best-worst-left {
  display: flex;
  align-items: center;
  gap: 12px;
}

.tj-best-worst-icon {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
}

.tj-best-worst-icon.bull-bg {
  background: rgba(239, 68, 68, 0.15);
  color: var(--change-bull);
}

.tj-best-worst-icon.bear-bg {
  background: rgba(59, 130, 246, 0.15);
  color: var(--change-bear);
}

.tj-best-worst-icon .material-symbols-outlined {
  font-size: 18px;
  font-variation-settings: 'FILL' 1;
}

.tj-best-worst-info {
  display: flex;
  flex-direction: column;
}

.tj-best-worst-label {
  font-size: 10px;
  font-weight: 700;
  color: var(--change-on-surface-variant);
  text-transform: uppercase;
  letter-spacing: 0.02em;
}

.tj-best-worst-name {
  font-size: 14px;
  font-weight: 700;
  color: var(--change-on-surface);
}

.tj-best-worst-amount {
  font-size: 14px;
  font-weight: 700;
}

.tj-best-worst-amount.bull {
  color: var(--change-bull);
}

.tj-best-worst-amount.bear {
  color: var(--change-bear);
}

/* ── Section Header ── */
.tj-section-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--change-spacing-md);
}

.tj-section-title {
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--change-on-surface);
  margin: 0;
  letter-spacing: -0.01em;
}

.tj-section-actions {
  display: flex;
  gap: 4px;
}

.tj-icon-btn {
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: none;
  border-radius: 0.5rem;
  background: transparent;
  color: var(--change-on-surface-variant);
  cursor: pointer;
  transition: all 0.15s ease;
}

.tj-icon-btn:hover {
  background: var(--change-surface-container);
  color: var(--change-on-surface);
}

/* ── Trade Entry Card (Stitch Journal Entry) ── */
.tj-entries {
  display: flex;
  flex-direction: column;
  gap: var(--change-spacing-md);
  margin-bottom: var(--change-spacing-xl);
}

.tj-entry-card {
  background: var(--change-surface-lowest);
  border-radius: 1.5rem;
  padding: var(--change-spacing-lg);
  box-shadow: var(--change-shadow-sm);
  transition: box-shadow 0.2s ease;
}

.tj-entry-card:hover {
  box-shadow: var(--change-shadow-md);
}

.tj-entry-layout {
  display: flex;
  gap: var(--change-spacing-lg);
}

/* Left column: stock info + tags */
.tj-entry-left {
  flex: 0 0 25%;
  min-width: 0;
}

.tj-entry-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}

.tj-entry-type-badge {
  font-size: 10px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 9999px;
  text-transform: uppercase;
  color: #ffffff;
}

.tj-entry-type-badge.buy {
  background: var(--change-primary);
}

.tj-entry-type-badge.sell {
  background: var(--change-bear);
}

.tj-entry-type-badge.day-trade {
  background: var(--change-primary);
}

.tj-entry-type-badge.scalping {
  background: var(--change-bear);
}

.tj-entry-time {
  font-size: 12px;
  color: var(--change-on-surface-variant);
}

.tj-entry-stock-name {
  font-size: 1.5rem;
  font-weight: 900;
  color: var(--change-on-surface);
  margin: 0 0 4px 0;
  letter-spacing: -0.02em;
}

.tj-entry-stock-code {
  font-size: 13px;
  font-weight: 500;
  color: var(--change-on-surface-variant);
  margin: 0 0 var(--change-spacing-sm) 0;
}

.tj-entry-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.tj-entry-tag {
  background: var(--change-surface-low);
  padding: 4px 10px;
  border-radius: 9999px;
  font-size: 12px;
  font-weight: 500;
  color: var(--change-on-surface-variant);
}

.tj-entry-tag.primary {
  color: var(--change-primary);
}

/* Right column: execution data + review */
.tj-entry-right {
  flex: 1 1;
  display: grid;
  grid-template-columns: 1fr 1fr 2fr;
  grid-gap: var(--change-spacing-md);
  gap: var(--change-spacing-md);
  align-items: start;
}

.tj-entry-data-block {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.tj-entry-data-label {
  font-size: 10px;
  font-weight: 700;
  color: var(--change-outline);
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.tj-entry-data-value {
  font-size: 14px;
  font-weight: 600;
  color: var(--change-on-surface);
}

.tj-entry-data-value .arrow {
  margin: 0 4px;
  color: var(--change-outline);
}

.tj-entry-pnl {
  font-size: 1.125rem;
  font-weight: 900;
}

.tj-entry-pnl.bull {
  color: var(--change-bull);
}

.tj-entry-pnl.bear {
  color: var(--change-bear);
}

.tj-entry-pnl-rate {
  font-size: 12px;
  font-weight: 700;
}

.tj-entry-pnl-rate.bull {
  color: var(--change-bull);
}

.tj-entry-pnl-rate.bear {
  color: var(--change-bear);
}

/* Review block */
.tj-entry-review {
  background: var(--change-surface-low);
  border-radius: 1rem;
  padding: var(--change-spacing-sm);
  grid-column: span 1;
}

.tj-entry-review-label {
  font-size: 10px;
  font-weight: 700;
  color: var(--change-outline);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  margin-bottom: 8px;
}

.tj-entry-review-text {
  font-size: 13px;
  color: var(--change-on-surface-variant);
  line-height: 1.6;
  margin: 0;
}

.tj-entry-review-text strong {
  color: var(--change-on-surface);
  display: block;
  margin-bottom: 2px;
}

.tj-entry-review-text strong + span {
  margin-top: 8px;
}

/* ── Journal Cards (journal tab) ── */
.tj-journal-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(380px, 1fr));
  grid-gap: var(--change-spacing-md);
  gap: var(--change-spacing-md);
}

.tj-journal-card {
  background: var(--change-surface-lowest);
  border-radius: 1.5rem;
  padding: var(--change-spacing-md);
  box-shadow: var(--change-shadow-sm);
  transition: box-shadow 0.2s ease, transform 0.15s ease;
}

.tj-journal-card:hover {
  box-shadow: var(--change-shadow-md);
  transform: translateY(-2px);
}

.tj-journal-card-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: var(--change-spacing-sm);
  padding-bottom: var(--change-spacing-sm);
  box-shadow: inset 0 -1px 0 0 var(--change-surface-container);
}

.tj-journal-stock-info {
  display: flex;
  align-items: center;
  gap: 8px;
}

.tj-journal-stock-info h3 {
  margin: 0;
  font-size: 16px;
  font-weight: 700;
  color: var(--change-on-surface);
}

.tj-journal-date {
  font-size: 13px;
  color: var(--change-on-surface-variant);
}

.tj-journal-body {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: var(--change-spacing-sm);
}

.tj-journal-field {
  font-size: 13px;
}

.tj-journal-field strong {
  display: block;
  margin-bottom: 2px;
  font-size: 11px;
  font-weight: 700;
  color: var(--change-on-surface-variant);
  text-transform: uppercase;
  letter-spacing: 0.02em;
}

.tj-journal-field p {
  margin: 0;
  color: var(--change-on-surface);
  line-height: 1.5;
  white-space: pre-wrap;
  max-height: 60px;
  overflow: hidden;
  text-overflow: ellipsis;
}

.tj-journal-footer {
  padding-top: var(--change-spacing-sm);
  box-shadow: inset 0 1px 0 0 var(--change-surface-container);
}

.tj-journal-trade-meta {
  font-size: 12px;
  color: var(--change-on-surface-variant);
}

/* ── Trades Table (month view) ── */
.tj-table-container {
  overflow-x: auto;
  border-radius: 1rem;
  box-shadow: var(--change-shadow-sm);
  background: var(--change-surface-lowest);
}

.tj-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}

.tj-table thead tr {
  background: var(--change-surface-low);
}

.tj-table th {
  padding: 12px 16px;
  text-align: left;
  font-size: 11px;
  font-weight: 700;
  color: var(--change-outline);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  white-space: nowrap;
}

.tj-table tbody tr {
  transition: background 0.15s ease;
}

.tj-table tbody tr:hover {
  background: var(--change-surface-low);
}

.tj-table td {
  padding: 12px 16px;
  color: var(--change-on-surface);
  vertical-align: middle;
}

.tj-table-date {
  font-size: 13px;
  color: var(--change-on-surface-variant);
}

.tj-table-stock {
  font-weight: 600;
  color: var(--change-on-surface);
}

.tj-table-badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 9999px;
  font-size: 11px;
  font-weight: 700;
  white-space: nowrap;
}

.tj-table-badge.buy {
  background: rgba(239, 68, 68, 0.1);
  color: var(--change-bull);
}

.tj-table-badge.sell {
  background: rgba(59, 130, 246, 0.1);
  color: var(--change-bear);
}

.tj-table-num {
  text-align: right;
  font-feature-settings: "tnum";
  font-variant-numeric: tabular-nums;
  font-family: 'Inter', -apple-system, sans-serif;
}

.tj-table-journal-btn {
  width: 32px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: none;
  border-radius: 8px;
  cursor: pointer;
  transition: all 0.15s ease;
}

.tj-table-journal-btn.no-journal {
  background: var(--change-primary);
  color: #ffffff;
}

.tj-table-journal-btn.no-journal:hover {
  background: var(--change-primary-dark);
  box-shadow: 0 2px 8px rgba(49, 130, 246, 0.3);
}

.tj-table-journal-btn.has-journal {
  background: #10b981;
  background: var(--change-success, #10b981);
  color: #ffffff;
  position: relative;
}

.tj-table-journal-btn.has-journal:hover {
  background: #059669;
  background: var(--change-success-dark, #059669);
}

.tj-table-journal-btn .material-symbols-outlined {
  font-size: 16px;
}

/* ── Trade Cards (today / recent) ── */
.tj-trade-cards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  grid-gap: var(--change-spacing-md);
  gap: var(--change-spacing-md);
}

.tj-trade-card {
  background: var(--change-surface-lowest);
  border-radius: 1.25rem;
  padding: var(--change-spacing-md);
  box-shadow: var(--change-shadow-sm);
  transition: box-shadow 0.2s, transform 0.15s;
}

.tj-trade-card:hover {
  box-shadow: var(--change-shadow-md);
  transform: translateY(-2px);
}

.tj-trade-card-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: var(--change-spacing-sm);
  padding-bottom: var(--change-spacing-sm);
  box-shadow: inset 0 -1px 0 0 var(--change-surface-container);
}

.tj-trade-card-header h3 {
  margin: 0;
  font-size: 15px;
  font-weight: 700;
  color: var(--change-on-surface);
}

.tj-trade-card-rows {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.tj-trade-card-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 13px;
}

.tj-trade-card-row span {
  color: var(--change-on-surface-variant);
}

.tj-trade-card-row strong {
  color: var(--change-on-surface);
  font-weight: 600;
}

.tj-trade-card-row strong.bull {
  color: var(--change-bull);
}

.tj-trade-card-row strong.bear {
  color: var(--change-bear);
}

.tj-trade-card-time {
  margin-top: var(--change-spacing-sm);
  padding-top: var(--change-spacing-sm);
  box-shadow: inset 0 1px 0 0 var(--change-surface-container);
  font-size: 12px;
  color: var(--change-on-surface-variant);
  text-align: right;
}

/* ── Empty State ── */
.tj-empty {
  text-align: center;
  padding: var(--change-spacing-xl) var(--change-spacing-md);
  color: var(--change-on-surface-variant);
}

.tj-empty-icon .material-symbols-outlined {
  font-size: 48px;
  color: var(--change-outline-variant);
  margin-bottom: var(--change-spacing-sm);
}

.tj-empty p {
  margin: 4px 0;
  font-size: 14px;
}

.tj-empty p:first-of-type {
  font-weight: 600;
  color: var(--change-on-surface);
}

/* ── Journal Modal (Stitch Glassmorphism) ── */
.tj-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: 9999;
  padding: 20px;
  animation: fadeIn 0.2s ease;
}

.tj-modal {
  background: var(--change-surface-lowest);
  border-radius: 1.5rem;
  max-width: 600px;
  width: 100%;
  max-height: 90vh;
  overflow-y: auto;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.25);
}

.tj-modal-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 20px 24px;
  box-shadow: inset 0 -1px 0 0 var(--change-surface-container);
}

.tj-modal-header h2 {
  margin: 0;
  font-size: 18px;
  font-weight: 700;
  color: var(--change-on-surface);
  display: flex;
  align-items: center;
  gap: 8px;
}

.tj-modal-header h2 .material-symbols-outlined {
  font-size: 22px;
  color: var(--change-primary);
}

.tj-modal-close {
  background: none;
  border: none;
  font-size: 20px;
  color: var(--change-on-surface-variant);
  cursor: pointer;
  padding: 4px 8px;
  border-radius: 8px;
  transition: all 0.15s ease;
  display: flex;
  align-items: center;
}

.tj-modal-close:hover {
  background: var(--change-surface-low);
  color: var(--change-on-surface);
}

.tj-modal-trade-info {
  padding: 16px 24px;
  background: var(--change-surface-low);
  box-shadow: inset 0 -1px 0 0 var(--change-surface-container);
}

.tj-modal-info-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 6px 0;
  font-size: 13px;
}

.tj-modal-info-label {
  color: var(--change-on-surface-variant);
  font-weight: 500;
}

.tj-modal-info-value {
  color: var(--change-on-surface);
  font-weight: 600;
}

.tj-modal-form {
  padding: 24px;
}

.tj-modal-field {
  margin-bottom: 16px;
}

.tj-modal-field:last-of-type {
  margin-bottom: 0;
}

.tj-modal-field label {
  display: block;
  margin-bottom: 6px;
  font-size: 12px;
  font-weight: 700;
  color: var(--change-on-surface);
  text-transform: uppercase;
  letter-spacing: 0.02em;
}

.tj-modal-field input,
.tj-modal-field textarea {
  width: 100%;
  padding: 10px 14px;
  background: var(--change-surface-low);
  border: none;
  border-radius: 0.75rem;
  font-size: 14px;
  font-family: inherit;
  color: var(--change-on-surface);
  transition: all 0.2s ease;
}

.tj-modal-field input:focus,
.tj-modal-field textarea:focus {
  outline: none;
  box-shadow: 0 0 0 2px rgba(49, 130, 246, 0.2);
  background: var(--change-surface-lowest);
}

.tj-modal-field input::placeholder,
.tj-modal-field textarea::placeholder {
  color: var(--change-on-surface-variant);
  opacity: 0.5;
}

.tj-modal-field textarea {
  resize: vertical;
  min-height: 60px;
}

/* Emotion chips in modal */
.tj-emotion-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 6px;
}

.tj-emotion-chip {
  padding: 6px 12px;
  border-radius: 9999px;
  background: var(--change-surface-low);
  border: none;
  font-size: 13px;
  cursor: pointer;
  transition: all 0.15s ease;
  color: var(--change-on-surface-variant);
}

.tj-emotion-chip:hover {
  background: var(--change-surface-high);
}

.tj-emotion-chip.selected {
  background: var(--change-primary);
  color: #ffffff;
}

.tj-modal-footer {
  display: flex;
  gap: 12px;
  justify-content: flex-end;
  padding: 16px 24px;
  box-shadow: inset 0 1px 0 0 var(--change-surface-container);
}

.tj-modal-cancel-btn {
  padding: 10px 20px;
  border-radius: 0.75rem;
  background: var(--change-surface-low);
  border: none;
  color: var(--change-on-surface);
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s ease;
}

.tj-modal-cancel-btn:hover {
  background: var(--change-surface-high);
}

.tj-modal-save-btn {
  padding: 10px 24px;
  border-radius: 0.75rem;
  background: var(--change-primary);
  border: none;
  color: #ffffff;
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  transition: all 0.15s ease;
  box-shadow: 0 2px 8px rgba(49, 130, 246, 0.2);
}

.tj-modal-save-btn:hover {
  background: var(--change-primary-dark);
  box-shadow: 0 4px 12px rgba(49, 130, 246, 0.3);
}

/* ── Heatmap Section ── */
.tj-heatmap-card {
  background: var(--change-surface-lowest);
  border-radius: 1.5rem;
  padding: var(--change-spacing-lg);
  box-shadow: var(--change-shadow-sm);
  margin-top: var(--change-spacing-lg);
}

.tj-heatmap-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: var(--change-spacing-lg);
}

.tj-heatmap-title {
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--change-on-surface);
  margin: 0 0 4px 0;
}

.tj-heatmap-desc {
  font-size: 13px;
  color: var(--change-on-surface-variant);
  margin: 0;
}

.tj-heatmap-legend {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  font-weight: 500;
  color: var(--change-on-surface-variant);
}

.tj-heatmap-legend-cells {
  display: flex;
  gap: 3px;
}

.tj-heatmap-legend-cell {
  width: 12px;
  height: 12px;
  border-radius: 2px;
}

.tj-heatmap-grid {
  overflow-x: auto;
}

.tj-heatmap-row {
  display: flex;
  gap: 3px;
  margin-bottom: 3px;
  align-items: center;
}

.tj-heatmap-day-label {
  width: 24px;
  font-size: 10px;
  font-weight: 500;
  color: var(--change-outline);
  flex-shrink: 0;
}

.tj-heatmap-cells {
  display: flex;
  gap: 3px;
}

.tj-heatmap-cell {
  width: 12px;
  height: 12px;
  border-radius: 2px;
}

/* Loading state */
.tj-loading {
  min-height: 400px;
  position: relative;
}

/* ── Responsive ── */
@media (max-width: 1024px) {
  .tj-top-grid {
    grid-template-columns: 1fr;
  }

  .tj-entry-layout {
    flex-direction: column;
  }

  .tj-entry-left {
    flex: none;
  }

  .tj-entry-right {
    grid-template-columns: 1fr 1fr;
  }

  .tj-entry-review {
    grid-column: span 2;
  }

  .tj-journal-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 768px) {
  .tj-page {
    padding: 12px;
  }

  .tj-page-header {
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
  }

  .tj-page-title {
    font-size: 1.5rem;
  }

  .tj-tab-bar {
    overflow-x: auto;
  }

  .tj-tab-btn {
    padding: 8px 12px;
    font-size: 12px;
  }

  .tj-entry-right {
    grid-template-columns: 1fr;
  }

  .tj-entry-review {
    grid-column: span 1;
  }

  .tj-entry-stock-name {
    font-size: 1.25rem;
  }

  .tj-trade-cards {
    grid-template-columns: 1fr;
  }

  .tj-modal {
    max-width: 100%;
    border-radius: 1rem;
  }

  .tj-modal-header,
  .tj-modal-form,
  .tj-modal-footer,
  .tj-modal-trade-info {
    padding: 16px;
  }

  .tj-calendar-card,
  .tj-summary-card {
    padding: var(--change-spacing-md);
    border-radius: 1rem;
  }
}

@media (max-width: 480px) {
  .tj-page {
    padding: 8px;
  }

  .tj-page-title {
    font-size: 1.25rem;
  }

  .tj-tab-btn {
    padding: 8px 10px;
    font-size: 11px;
    gap: 4px;
  }

  .tj-tab-btn .material-symbols-outlined {
    font-size: 16px;
  }

  .tj-header-btn {
    padding: 6px 12px;
    font-size: 12px;
  }

  .tj-entry-card {
    padding: var(--change-spacing-md);
    border-radius: 1rem;
  }

  .tj-table th,
  .tj-table td {
    padding: 8px 10px;
    font-size: 12px;
  }

  .tj-modal {
    border-radius: 0;
    max-height: 100vh;
  }
}

/* =============================================================================
   IntegratedStrategyDashboard — Stitch Design System
   Uses --change-* design tokens from ChangeStyleCommon.css.
   No-Line Rule: borders replaced with box-shadow.
   ============================================================================= */

/* ---------------------------------------------------------------------------
   Root container
   --------------------------------------------------------------------------- */
.isd-stitch-root {
  max-width: 1400px;
  margin: 0 auto;
  color: var(--change-text-primary);
  min-height: 100vh;
}

/* ---------------------------------------------------------------------------
   Header — glassmorphic style
   --------------------------------------------------------------------------- */
.isd-stitch-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 16px;
  margin-bottom: 32px;
  padding: 0 4px;
}

.isd-stitch-header-left {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}

.isd-stitch-header-right {
  display: flex;
  align-items: center;
  gap: 10px;
}

.isd-stitch-title {
  font-size: 22px;
  font-weight: 800;
  color: var(--change-text-primary);
  margin: 0;
  line-height: 1.3;
  letter-spacing: -0.02em;
}

/* Active preset badge */
.isd-stitch-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 14px;
  border-radius: 9999px;
  font-size: 12px;
  font-weight: 600;
  white-space: nowrap;
  background: var(--change-surface-low);
  color: var(--change-gray-600);
  color: var(--change-text-secondary, var(--change-gray-600));
  box-shadow: 0 1px 3px rgba(0,0,0,0.06);
}

.isd-stitch-badge.preset-badge--stable {
  background: rgba(49, 130, 246, 0.08);
  color: var(--change-primary);
}

.isd-stitch-badge.preset-badge--balanced {
  background: rgba(16, 185, 129, 0.08);
  color: #047857;
}

.isd-stitch-badge.preset-badge--aggressive {
  background: rgba(245, 158, 11, 0.08);
  color: #c2510a;
}

.isd-stitch-badge.preset-badge--scalper {
  background: rgba(239, 68, 68, 0.08);
  color: #c62828;
}

/* One-click preset button */
.isd-stitch-btn-preset {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 20px;
  border: none;
  border-radius: 16px;
  background: var(--change-primary);
  color: #fff;
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  white-space: nowrap;
  transition: transform 0.15s ease, box-shadow 0.2s ease;
  box-shadow: 0 4px 14px rgba(49, 130, 246, 0.25);
}

.isd-stitch-btn-preset:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 20px rgba(49, 130, 246, 0.35);
}

.isd-stitch-btn-preset:active {
  transform: scale(0.97);
  box-shadow: 0 2px 8px rgba(49, 130, 246, 0.2);
}

/* ---------------------------------------------------------------------------
   Pill Tab Navigation (Stitch style — horizontal scroll, rounded-full pills)
   --------------------------------------------------------------------------- */
.isd-stitch-tabs {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  margin-bottom: 32px;
  padding-bottom: 4px;
  -ms-overflow-style: none;
  scrollbar-width: none;
}

.isd-stitch-tabs::-webkit-scrollbar {
  display: none;
}

.isd-stitch-tab {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 10px 22px;
  border-radius: 9999px;
  border: none;
  background: #ffffff;
  background: var(--change-surface-lowest, #ffffff);
  color: #8B95A1;
  color: var(--change-gray-500, #8B95A1);
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
  white-space: nowrap;
  box-shadow: 0 1px 3px rgba(0,0,0,0.04);
}

.isd-stitch-tab:hover {
  background: #f2f4f6;
  background: var(--change-surface-low, #f2f4f6);
  color: var(--change-text-primary);
}

.isd-stitch-tab:focus-visible {
  outline: 2px solid var(--change-primary);
  outline-offset: 2px;
}

.isd-stitch-tab.active {
  background: var(--change-primary);
  color: #ffffff;
  font-weight: 700;
  box-shadow: 0 4px 14px rgba(49, 130, 246, 0.25);
}

.isd-stitch-tab-emoji {
  font-size: 14px;
  line-height: 1;
}

/* ---------------------------------------------------------------------------
   Tab content area
   --------------------------------------------------------------------------- */
.isd-stitch-content {
  min-height: 400px;
}

.isd-stitch-panel {
  animation: isdStitchFadeIn 0.3s ease both;
}

@keyframes isdStitchFadeIn {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ---------------------------------------------------------------------------
   Loading spinner (Suspense fallback)
   --------------------------------------------------------------------------- */
.isd-stitch-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 16px;
  padding: 80px 24px;
  color: var(--change-gray-500);
}

.isd-stitch-spinner {
  width: 36px;
  height: 36px;
  border: 3px solid var(--change-gray-200);
  border-top-color: var(--change-primary);
  border-radius: 50%;
  animation: isdStitchSpin 0.7s linear infinite;
}

@keyframes isdStitchSpin {
  to {
    transform: rotate(360deg);
  }
}

.isd-stitch-spinner-text {
  font-size: 14px;
  font-weight: 500;
  color: var(--change-gray-500);
}

/* ---------------------------------------------------------------------------
   Modal overlay (Preset selector)
   --------------------------------------------------------------------------- */
.isd-stitch-modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.45);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1100;
  padding: 16px;
  animation: isdStitchOverlayIn 0.2s ease both;
}

@keyframes isdStitchOverlayIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

.isd-stitch-modal-container {
  background: #ffffff;
  background: var(--change-surface-lowest, #ffffff);
  border-radius: 24px;
  box-shadow: 0 24px 64px rgba(0, 0, 0, 0.18);
  width: 100%;
  max-width: 640px;
  max-height: 85vh;
  overflow-y: auto;
  animation: isdStitchModalIn 0.25s cubic-bezier(0.34, 1.56, 0.64, 1) both;
}

@keyframes isdStitchModalIn {
  from {
    opacity: 0;
    transform: scale(0.94) translateY(12px);
  }
  to {
    opacity: 1;
    transform: scale(1) translateY(0);
  }
}

/* ---------------------------------------------------------------------------
   Responsive
   --------------------------------------------------------------------------- */
@media (max-width: 768px) {
  .isd-stitch-root {
    padding: 0;
  }

  .isd-stitch-header {
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 20px;
  }

  .isd-stitch-title {
    font-size: 20px;
  }

  .isd-stitch-tabs {
    gap: 6px;
    margin-bottom: 20px;
  }

  .isd-stitch-tab {
    padding: 8px 16px;
    font-size: 13px;
  }
}

@media (max-width: 480px) {
  .isd-stitch-title {
    font-size: 18px;
  }

  .isd-stitch-btn-preset {
    padding: 8px 14px;
    font-size: 12px;
  }

  .isd-stitch-tab {
    padding: 7px 12px;
    font-size: 12px;
  }
}

/* ---------------------------------------------------------------------------
   Dark mode overrides
   --------------------------------------------------------------------------- */
[data-theme="dark"] .isd-stitch-root {
  color: var(--change-text-primary);
}

[data-theme="dark"] .isd-stitch-title {
  color: var(--change-text-primary);
}

[data-theme="dark"] .isd-stitch-tab {
  background: var(--change-gray-100);
  color: var(--change-gray-500);
  box-shadow: none;
}

[data-theme="dark"] .isd-stitch-tab:hover {
  background: var(--change-gray-200);
  color: var(--change-text-primary);
}

[data-theme="dark"] .isd-stitch-tab.active {
  background: var(--change-primary);
  color: #ffffff;
  box-shadow: 0 4px 14px rgba(49, 130, 246, 0.3);
}

[data-theme="dark"] .isd-stitch-badge {
  background: var(--change-gray-100);
  color: var(--change-gray-500);
}

[data-theme="dark"] .isd-stitch-badge.preset-badge--stable {
  background: rgba(49, 130, 246, 0.15);
  color: #7baeff;
}

[data-theme="dark"] .isd-stitch-badge.preset-badge--balanced {
  background: rgba(16, 185, 129, 0.15);
  color: #6ee7b7;
}

[data-theme="dark"] .isd-stitch-badge.preset-badge--aggressive {
  background: rgba(245, 158, 11, 0.15);
  color: #fcd34d;
}

[data-theme="dark"] .isd-stitch-badge.preset-badge--scalper {
  background: rgba(239, 68, 68, 0.15);
  color: #fca5a5;
}

[data-theme="dark"] .isd-stitch-spinner {
  border-color: var(--change-gray-200);
  border-top-color: var(--change-primary);
}

[data-theme="dark"] .isd-stitch-modal-overlay {
  background: rgba(0, 0, 0, 0.65);
}

[data-theme="dark"] .isd-stitch-modal-container {
  background: #333D4B;
  background: var(--change-gray-100, #333D4B);
  box-shadow: 0 24px 64px rgba(0, 0, 0, 0.5);
}

/* ===================================
   공통 UX 컴포넌트 스타일
   =================================== */

/* 기본 변수 정의 */
:root {
  --ux-primary-color: var(--primary-600);
  --ux-secondary-color: var(--green-500);
  --ux-danger-color: var(--red-500);
  --ux-warning-color: #f59e0b;
  --ux-success-color: var(--green-500);
  --ux-info-color: var(--primary-600);
  
  --ux-gray-50: #f9fafb;
  --ux-gray-100: #f3f4f6;
  --ux-gray-200: #e5e7eb;
  --ux-gray-300: #d1d5db;
  --ux-gray-400: #9ca3af;
  --ux-gray-500: #6b7280;
  --ux-gray-600: #4b5563;
  --ux-gray-700: #374151;
  --ux-gray-800: #1f2937;
  --ux-gray-900: #111827;
  
  --ux-border-radius: var(--spacing-sm);
  --ux-border-radius-lg: 12px;
  --ux-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
  --ux-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
  --ux-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
  
  --ux-transition: all 0.2s ease;
  --ux-transition-slow: all 0.3s ease;
}

/* ===================================
   피드백 토스트 - 폰 레스토프 효과
   =================================== */
.ux-feedback-toast {
  position: fixed;
  top: 20px;
  right: 20px;
  z-index: 1000;
  min-width: 300px;
  max-width: 500px;
  border-radius: var(--spacing-sm);
  border-radius: var(--ux-border-radius);
  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
  box-shadow: var(--ux-shadow-lg);
  animation: slideInRight 0.3s ease-out;
}

.ux-feedback-success {
  background: linear-gradient(135deg, var(--green-500), #059669);
  background: linear-gradient(135deg, var(--ux-success-color), #059669);
  color: white;
}

.ux-feedback-error {
  background: linear-gradient(135deg, var(--red-500), #dc2626);
  background: linear-gradient(135deg, var(--ux-danger-color), #dc2626);
  color: white;
}

.ux-feedback-info {
  background: linear-gradient(135deg, var(--primary-600), #2563eb);
  background: linear-gradient(135deg, var(--ux-info-color), #2563eb);
  color: white;
}

.ux-feedback-warning {
  background: linear-gradient(135deg, #f59e0b, #d97706);
  background: linear-gradient(135deg, var(--ux-warning-color), #d97706);
  color: white;
}

.ux-feedback-content {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--spacing-md) 20px;
}

.ux-feedback-message {
  font-weight: 500;
  flex: 1 1;
}

.ux-feedback-close {
  background: none;
  border: none;
  color: inherit;
  font-size: 20px;
  cursor: pointer;
  padding: 0;
  margin-left: 12px;
  opacity: 0.8;
  transition: all 0.2s ease;
  transition: var(--ux-transition);
  min-width: 24px;
  min-height: 24px;
}

.ux-feedback-close:hover {
  opacity: 1;
}

@keyframes slideInRight {
  from {
    transform: translateX(100%);
    opacity: 0;
  }
  to {
    transform: translateX(0);
    opacity: 1;
  }
}

/* ===================================
   아코디언 컴포넌트 - 테슬러의 법칙
   =================================== */
.ux-accordion {
  border: 1px solid #e5e7eb;
  border: 1px solid var(--ux-gray-200);
  border-radius: var(--spacing-sm);
  border-radius: var(--ux-border-radius);
  margin-bottom: 8px;
  background: var(--change-bg-elevated);
  overflow: hidden;
}

.ux-accordion-default {
  border-color: #e5e7eb;
  border-color: var(--ux-gray-200);
}

.ux-accordion-primary {
  border-color: var(--primary-600);
  border-color: var(--ux-primary-color);
}

.ux-accordion-filter {
  border-color: #d1d5db;
  border-color: var(--ux-gray-300);
  background: #f9fafb;
  background: var(--ux-gray-50);
}

.ux-accordion-trigger {
  width: 100%;
  padding: var(--spacing-md) 20px;
  background: none;
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  transition: all 0.2s ease;
  transition: var(--ux-transition);
  text-align: left;
  /* 피츠의 법칙: 충분한 터치 영역 */
  min-height: 56px;
}

.ux-accordion-trigger:hover {
  background: #f9fafb;
  background: var(--ux-gray-50);
}

.ux-accordion-header {
  display: flex;
  align-items: center;
  gap: 12px;
  flex: 1 1;
}

.ux-accordion-icon {
  color: #6b7280;
  color: var(--ux-gray-500);
  font-size: 1.1rem;
}

.ux-accordion-title {
  font-weight: 600;
  color: #1f2937;
  color: var(--ux-gray-800);
  font-size: var(--font-size-base);
}

.ux-accordion-badge {
  background: var(--primary-600);
  background: var(--ux-primary-color);
  color: white;
  padding: 2px 8px;
  border-radius: var(--radius);
  font-size: 0.75rem;
  font-weight: 500;
  min-width: 20px;
  text-align: center;
}

.ux-accordion-arrow {
  color: #9ca3af;
  color: var(--ux-gray-400);
  transition: all 0.2s ease;
  transition: var(--ux-transition);
  font-size: 0.9rem;
}

.ux-accordion-arrow.expanded {
  transform: rotate(180deg);
}

.ux-accordion-content {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.3s ease;
}

.ux-accordion-content.expanded {
  max-height: 2000px; /* 충분히 큰 값 */
}

.ux-accordion-body {
  padding: 0 20px 20px 20px;
  border-top: 1px solid #f3f4f6;
  border-top: 1px solid var(--ux-gray-100);
}

/* ===================================
   점진적 공개 컴포넌트
   =================================== */
.ux-progressive-disclosure {
  margin-bottom: 24px;
}

.ux-disclosure-trigger {
  width: 100%;
  padding: 12px 16px;
  background: #f9fafb;
  background: var(--ux-gray-50);
  border: 1px solid #e5e7eb;
  border: 1px solid var(--ux-gray-200);
  border-radius: var(--spacing-sm);
  border-radius: var(--ux-border-radius);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 0.95rem;
  font-weight: 500;
  color: #374151;
  color: var(--ux-gray-700);
  transition: all 0.2s ease;
  transition: var(--ux-transition);
  min-height: var(--button-height-md);
}

.ux-disclosure-trigger:hover {
  background: #f3f4f6;
  background: var(--ux-gray-100);
  border-color: #d1d5db;
  border-color: var(--ux-gray-300);
}

.ux-disclosure-text {
  color: var(--primary-600);
  color: var(--ux-primary-color);
  font-size: 0.9rem;
}

.ux-disclosure-arrow {
  transition: all 0.2s ease;
  transition: var(--ux-transition);
  color: #9ca3af;
  color: var(--ux-gray-400);
}

.ux-disclosure-arrow.expanded {
  transform: rotate(180deg);
}

.ux-disclosure-content {
  padding: var(--spacing-md);
  border: 1px solid #e5e7eb;
  border: 1px solid var(--ux-gray-200);
  border-top: none;
  border-radius: 0 0 var(--spacing-sm) var(--spacing-sm);
  border-radius: 0 0 var(--ux-border-radius) var(--ux-border-radius);
  background: var(--change-bg-elevated);
}

/* ===================================
   액션 카드 - 파레토 원칙 + 피츠의 법칙
   =================================== */
.ux-action-card {
  padding: 20px;
  background: var(--change-bg-elevated);
  border: 2px solid #e5e7eb;
  border: 2px solid var(--ux-gray-200);
  border-radius: 12px;
  border-radius: var(--ux-border-radius-lg);
  cursor: pointer;
  transition: all 0.3s ease;
  transition: var(--ux-transition-slow);
  display: flex;
  align-items: center;
  gap: var(--spacing-md);
  text-align: left;
  width: 100%;
  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
  box-shadow: var(--ux-shadow-sm);
  /* 피츠의 법칙: 충분한 클릭 영역 */
  min-height: 80px;
}

.ux-action-card:hover:not(.disabled) {
  transform: translateY(-2px);
  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
  box-shadow: var(--ux-shadow-lg);
}

.ux-action-card.disabled {
  opacity: 0.6;
  cursor: not-allowed;
}

/* 액션 카드 변형 - 폰 레스토프 효과 */
.ux-action-primary {
  border-color: var(--primary-600);
  border-color: var(--ux-primary-color);
  background: linear-gradient(135deg, #dbeafe, #bfdbfe);
}

.ux-action-primary:hover:not(.disabled) {
  border-color: #2563eb;
  background: linear-gradient(135deg, #bfdbfe, #93c5fd);
  box-shadow: 0 8px 25px rgba(59, 130, 246, 0.15);
}

.ux-action-secondary {
  border-color: var(--green-500);
  border-color: var(--ux-secondary-color);
  background: linear-gradient(135deg, #d1fae5, #a7f3d0);
}

.ux-action-secondary:hover:not(.disabled) {
  border-color: #059669;
  background: linear-gradient(135deg, #a7f3d0, #6ee7b7);
  box-shadow: 0 8px 25px rgba(16, 185, 129, 0.15);
}

.ux-action-tertiary:hover:not(.disabled) {
  border-color: #d1d5db;
  border-color: var(--ux-gray-300);
  background: #f9fafb;
  background: var(--ux-gray-50);
}

.ux-action-danger {
  border-color: var(--red-500);
  border-color: var(--ux-danger-color);
  background: linear-gradient(135deg, #fee2e2, #fecaca);
}

.ux-action-danger:hover:not(.disabled) {
  border-color: #dc2626;
  background: linear-gradient(135deg, #fecaca, #fca5a5);
  box-shadow: 0 8px 25px rgba(239, 68, 68, 0.15);
}

/* 액션 카드 크기 */
.ux-action-small {
  min-height: 60px;
  padding: 12px 16px;
}

.ux-action-medium {
  min-height: 80px;
  padding: var(--spacing-md) 20px;
}

.ux-action-large {
  min-height: 100px;
  padding: var(--spacing-lg);
}

.ux-action-icon {
  font-size: var(--font-size-h3);
  color: #6b7280;
  color: var(--ux-gray-500);
  min-width: 32px;
  text-align: center;
}

.ux-action-primary .ux-action-icon {
  color: var(--primary-600);
  color: var(--ux-primary-color);
}

.ux-action-secondary .ux-action-icon {
  color: var(--green-500);
  color: var(--ux-secondary-color);
}

.ux-action-danger .ux-action-icon {
  color: var(--red-500);
  color: var(--ux-danger-color);
}

.ux-action-content {
  flex: 1 1;
}

.ux-action-title {
  font-size: 1.1rem;
  font-weight: 600;
  color: #1f2937;
  color: var(--ux-gray-800);
  margin: 0 0 4px 0;
}

.ux-action-description {
  font-size: 0.9rem;
  color: #4b5563;
  color: var(--ux-gray-600);
  margin: 0;
  line-height: 1.4;
}

.ux-action-arrow {
  color: #9ca3af;
  color: var(--ux-gray-400);
  transition: all 0.2s ease;
  transition: var(--ux-transition);
  font-size: 1.2rem;
}

.ux-action-card:hover:not(.disabled) .ux-action-arrow {
  transform: translateX(4px);
  color: #4b5563;
  color: var(--ux-gray-600);
}

/* ===================================
   정보 청킹 - 밀러의 법칙
   =================================== */
.ux-info-chunk {
  background: var(--change-bg-elevated);
  border: 1px solid #e5e7eb;
  border: 1px solid var(--ux-gray-200);
  border-radius: var(--spacing-sm);
  border-radius: var(--ux-border-radius);
  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
  box-shadow: var(--ux-shadow-sm);
  margin-bottom: 16px;
}

.ux-info-chunk:not(.ux-collapsible) {
  padding: 20px;
}

.ux-priority-high {
  border-left: 4px solid var(--primary-600);
  border-left: 4px solid var(--ux-primary-color);
}

.ux-priority-medium {
  border-left: 4px solid #f59e0b;
  border-left: 4px solid var(--ux-warning-color);
}

.ux-priority-low {
  border-left: 4px solid #d1d5db;
  border-left: 4px solid var(--ux-gray-300);
}

.ux-chunk-header {
  display: flex;
  align-items: center;
  gap: var(--spacing-sm);
  margin-bottom: 12px;
}

.ux-collapsible .ux-chunk-header {
  width: 100%;
  padding: var(--spacing-md) 20px;
  background: none;
  border: none;
  cursor: pointer;
  margin-bottom: 0;
  transition: all 0.2s ease;
  transition: var(--ux-transition);
  min-height: 56px;
}

.ux-collapsible .ux-chunk-header:hover {
  background: #f9fafb;
  background: var(--ux-gray-50);
}

.ux-chunk-icon {
  color: #6b7280;
  color: var(--ux-gray-500);
  font-size: 1.1rem;
}

.ux-chunk-title {
  font-size: var(--font-size-base);
  font-weight: 600;
  color: #1f2937;
  color: var(--ux-gray-800);
  margin: 0;
  flex: 1 1;
}

.ux-chunk-toggle {
  color: #9ca3af;
  color: var(--ux-gray-400);
  transition: all 0.2s ease;
  transition: var(--ux-transition);
}

.ux-chunk-toggle.collapsed {
  transform: rotate(-90deg);
}

.ux-chunk-content {
  color: #374151;
  color: var(--ux-gray-700);
  line-height: 1.6;
}

.ux-collapsible .ux-chunk-content {
  padding: 0 20px 20px 20px;
  border-top: 1px solid #f3f4f6;
  border-top: 1px solid var(--ux-gray-100);
}

/* ===================================
   데이터 테이블 - 밀러의 법칙
   =================================== */
/* Cell alignment helpers */
.ux-cell-left { text-align: left !important; }
.ux-cell-right { text-align: right !important; }
/* Backward compat for existing usage */
.text-right { text-align: right !important; }

/* Stock name cell with truncation and tooltip support */
.ux-col-stock-name { width: 28%; max-width: 0; }
.ux-stock-name-cell { display: flex; align-items: center; gap: 6px; min-width: 0; }
.ux-stock-name-text { flex: 1 1 auto; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ux-stock-code { color: #6b7280; color: var(--ux-gray-500); font-size: 0.85em; flex: 0 0 auto; }
.ux-data-table {
  background: var(--change-bg-elevated);
  border: 1px solid #e5e7eb;
  border: 1px solid var(--ux-gray-200);
  border-radius: var(--spacing-sm);
  border-radius: var(--ux-border-radius);
  overflow: hidden;
  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
  box-shadow: var(--ux-shadow-sm);
}

.ux-table-container {
  overflow-x: auto;
}

.ux-table {
  width: 100%;
  border-collapse: collapse;
}

.ux-table th {
  background: #f9fafb;
  background: var(--ux-gray-50);
  padding: 12px 16px;
  text-align: left;
  font-weight: 600;
  color: #374151;
  color: var(--ux-gray-700);
  border-bottom: 1px solid #e5e7eb;
  border-bottom: 1px solid var(--ux-gray-200);
  font-size: 0.9rem;
}

.ux-table td {
  padding: 12px 16px;
  border-bottom: 1px solid #f3f4f6;
  border-bottom: 1px solid var(--ux-gray-100);
  color: #374151;
  color: var(--ux-gray-700);
}

.ux-table-row:hover {
  background: #f9fafb;
  background: var(--ux-gray-50);
}

.ux-expand-col {
  width: 40px;
  text-align: center;
}

.ux-expand-btn {
  background: none;
  border: none;
  cursor: pointer;
  padding: var(--spacing-xs);
  color: #9ca3af;
  color: var(--ux-gray-400);
  transition: all 0.2s ease;
  transition: var(--ux-transition);
  min-width: 24px;
  min-height: 24px;
}

.ux-expand-btn:hover {
  color: #4b5563;
  color: var(--ux-gray-600);
  background: #f3f4f6;
  background: var(--ux-gray-100);
  border-radius: var(--spacing-xs);
}

.ux-expanded-row {
  background: #f9fafb;
  background: var(--ux-gray-50);
}

.ux-expanded-content {
  padding: var(--spacing-md);
  border-top: 1px solid #e5e7eb;
  border-top: 1px solid var(--ux-gray-200);
}

.ux-table-footer {
  padding: 12px 16px;
  background: #f9fafb;
  background: var(--ux-gray-50);
  border-top: 1px solid #e5e7eb;
  border-top: 1px solid var(--ux-gray-200);
  text-align: center;
}

.ux-show-more-btn,
.ux-show-less-btn {
  background: none;
  border: 1px solid var(--primary-600);
  border: 1px solid var(--ux-primary-color);
  color: var(--primary-600);
  color: var(--ux-primary-color);
  padding: var(--spacing-sm) 16px;
  border-radius: var(--spacing-sm);
  border-radius: var(--ux-border-radius);
  cursor: pointer;
  font-weight: 500;
  transition: all 0.2s ease;
  transition: var(--ux-transition);
  min-height: 36px;
}

.ux-show-more-btn:hover,
.ux-show-less-btn:hover {
  background: var(--primary-600);
  background: var(--ux-primary-color);
  color: white;
}

/* ===================================
   상태 컴포넌트들
   =================================== */
.ux-loading-container,
.ux-error-container,
.ux-empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 200px;
  text-align: center;
  padding: 40px 20px;
}

.ux-loading-spinner {
  width: 40px;
  height: 40px;
  border: 4px solid #e5e7eb;
  border: 4px solid var(--ux-gray-200);
  border-top: 4px solid var(--primary-600);
  border-top: 4px solid var(--ux-primary-color);
  border-radius: 50%;
  animation: spin 1s linear infinite;
  margin-bottom: 16px;
}

.ux-loading-message {
  color: #4b5563;
  color: var(--ux-gray-600);
  font-size: 0.95rem;
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

.ux-error-icon,
.ux-empty-icon {
  font-size: 3rem;
  margin-bottom: 16px;
  color: #9ca3af;
  color: var(--ux-gray-400);
}

.ux-error-icon {
  color: var(--red-500);
  color: var(--ux-danger-color);
}

.ux-error-title,
.ux-empty-title {
  font-size: 1.25rem;
  font-weight: 600;
  color: #1f2937;
  color: var(--ux-gray-800);
  margin: 0 0 8px 0;
}

.ux-error-message,
.ux-empty-message {
  color: #4b5563;
  color: var(--ux-gray-600);
  margin: 0 0 20px 0;
  line-height: 1.5;
}

.ux-retry-button,
.ux-empty-action {
  background: var(--primary-600);
  background: var(--ux-primary-color);
  color: white;
  border: none;
  padding: 12px 24px;
  border-radius: var(--spacing-sm);
  border-radius: var(--ux-border-radius);
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
  transition: var(--ux-transition);
  display: flex;
  align-items: center;
  gap: var(--spacing-sm);
  min-height: var(--button-height-md);
}

.ux-retry-button:hover,
.ux-empty-action:hover {
  background: #2563eb;
  transform: translateY(-1px);
}

/* ===================================
   필터 패널 - 힉의 법칙
   =================================== */
.ux-filter-panel {
  background: var(--change-bg-elevated);
  border: 1px solid #e5e7eb;
  border: 1px solid var(--ux-gray-200);
  border-radius: var(--spacing-sm);
  border-radius: var(--ux-border-radius);
  padding: 20px;
  margin-bottom: 20px;
}

.ux-filter-title {
  display: flex;
  align-items: center;
  gap: var(--spacing-sm);
  margin: 0 0 16px 0;
  font-size: var(--font-size-base);
  font-weight: 600;
  color: #1f2937;
  color: var(--ux-gray-800);
}

.ux-filter-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  grid-gap: var(--spacing-md);
  gap: var(--spacing-md);
}

.ux-filter-item {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.ux-filter-label {
  font-size: 0.9rem;
  font-weight: 500;
  color: #374151;
  color: var(--ux-gray-700);
}

.ux-filter-select,
.ux-filter-input {
  padding: var(--spacing-sm) 12px;
  border: 1px solid #d1d5db;
  border: 1px solid var(--ux-gray-300);
  border-radius: var(--spacing-sm);
  border-radius: var(--ux-border-radius);
  font-size: 0.9rem;
  transition: all 0.2s ease;
  transition: var(--ux-transition);
  min-height: 40px;
}

.ux-filter-select:focus,
.ux-filter-input:focus {
  outline: none;
  border-color: var(--primary-600);
  border-color: var(--ux-primary-color);
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
}

/* ===================================
   반응형 디자인 - 모바일 최적화
   =================================== */
@media (max-width: 768px) {
  .ux-feedback-toast {
    left: 16px;
    right: 16px;
    min-width: auto;
  }
  
  .ux-accordion-trigger,
  .ux-disclosure-trigger {
    padding: 12px 16px;
  }
  
  .ux-accordion-body,
  .ux-disclosure-content {
    padding: var(--spacing-md);
  }
  
  .ux-action-card {
    padding: var(--spacing-md);
    min-height: 70px;
  }
  
  .ux-action-small {
    min-height: 50px;
    padding: 10px 12px;
  }
  
  .ux-filter-grid {
    grid-template-columns: 1fr;
  }
  
  .ux-table-container {
    font-size: 0.9rem;
  }
  
  .ux-table th,
  .ux-table td {
    padding: var(--spacing-sm) 12px;
  }
}

@media (max-width: 480px) {
  .ux-action-card {
    flex-direction: column;
    text-align: center;
    gap: 12px;
  }
  
  .ux-action-arrow {
    transform: rotate(90deg);
  }
  
  .ux-action-card:hover:not(.disabled) .ux-action-arrow {
    transform: rotate(90deg) translateX(4px);
  }
}
/*
 * 전략 백테스트 컴포넌트 스타일
 * 한국식 증권 UI 스타일 적용
 */

.strategy-backtest-container {
  padding: 20px;
  max-width: 1400px;
  margin: 0 auto;
}

/* Page Header */
.page-header {
  margin-bottom: 30px;
}

.page-header h1 {
  font-size: 28px;
  font-weight: 700;
  color: var(--text-primary);
  margin-bottom: 8px;
}

.page-description {
  color: var(--text-secondary);
  font-size: 14px;
}

/* Tabs Header */
.tabs-header {
  display: flex;
  gap: 10px;
  margin-bottom: 20px;
  border-bottom: 2px solid var(--border-color);
}

.tab-button {
  padding: 12px 24px;
  background: transparent;
  border: none;
  border-bottom: 3px solid transparent;
  cursor: pointer;
  font-size: 15px;
  font-weight: 500;
  color: var(--text-secondary);
  transition: all 0.2s;
  display: flex;
  align-items: center;
  gap: 8px;
}

.tab-button:hover {
  color: var(--text-primary);
  background: var(--hover-bg);
}

.tab-button.active {
  color: var(--primary-color);
  border-bottom-color: var(--primary-color);
}

.tab-button i,
.tab-button svg {
  font-size: 14px;
}

/* Tabs Body */
.tabs-body {
  background: var(--card-bg);
  border-radius: 8px;
  padding: 30px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

/* Configure Tab */
.configure-tab .backtest-form-container {
  max-width: 900px;
  margin: 0 auto;
}

.backtest-form {
  display: flex;
  flex-direction: column;
  gap: 30px;
}

.form-section {
  border: 1px solid var(--border-color);
  border-radius: 8px;
  padding: 20px;
  background: var(--section-bg);
}

.form-section h3 {
  font-size: 18px;
  font-weight: 600;
  color: var(--text-primary);
  margin-bottom: 20px;
  display: flex;
  align-items: center;
  gap: 8px;
}

.form-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  grid-gap: 20px;
  gap: 20px;
}

.form-group {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.form-group label {
  font-size: 14px;
  font-weight: 500;
  color: var(--text-primary);
}

.form-group input {
  padding: 10px 14px;
  border: 1px solid var(--border-color);
  border-radius: 6px;
  font-size: 14px;
  background: var(--input-bg);
  color: var(--text-primary);
  transition: border-color 0.2s;
}

.form-group input:focus {
  outline: none;
  border-color: var(--primary-color);
}

.form-actions {
  display: flex;
  justify-content: center;
  padding-top: 10px;
}

.btn-run-backtest {
  padding: 14px 40px;
  font-size: 16px;
  font-weight: 600;
  display: flex;
  align-items: center;
  gap: 10px;
}

.btn-run-backtest:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}

.error-message {
  padding: 12px 16px;
  background: #fee;
  border: 1px solid #fcc;
  border-radius: 6px;
  color: #c33;
  font-size: 14px;
  display: flex;
  align-items: center;
  gap: 8px;
}

/* Results Tab */
.results-tab .results-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 30px;
}

.results-header h2 {
  font-size: 24px;
  font-weight: 700;
  color: var(--text-primary);
}

.btn-create-strategy {
  padding: 10px 20px;
  display: flex;
  align-items: center;
  gap: 8px;
}

.results-summary {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  grid-gap: 20px;
  gap: 20px;
  margin-bottom: 30px;
}

.summary-card {
  background: var(--section-bg);
  border: 1px solid var(--border-color);
  border-radius: 8px;
  padding: 20px;
  text-align: center;
}

.card-label {
  font-size: 13px;
  color: var(--text-secondary);
  margin-bottom: 10px;
  font-weight: 500;
}

.card-value {
  font-size: 28px;
  font-weight: 700;
  color: var(--text-primary);
}

.card-value.profit-positive {
  color: #F04452;
  color: var(--change-positive, #F04452);
}

.card-value.profit-negative {
  color: #1273E4;
  color: var(--change-negative, #1273E4);
}

.results-details {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.detail-section {
  background: var(--section-bg);
  border: 1px solid var(--border-color);
  border-radius: 8px;
  padding: 20px;
}

.detail-section h3 {
  font-size: 18px;
  font-weight: 600;
  color: var(--text-primary);
  margin-bottom: 20px;
}

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

.detail-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px;
  background: var(--hover-bg);
  border-radius: 6px;
}

.detail-label {
  font-size: 14px;
  color: var(--text-secondary);
}

.detail-value {
  font-size: 16px;
  font-weight: 600;
  color: var(--text-primary);
}

.detail-value.profit-positive {
  color: #F04452;
  color: var(--change-positive, #F04452);
}

.detail-value.profit-negative {
  color: #1273E4;
  color: var(--change-negative, #1273E4);
}

/* History Tab */
.history-tab .history-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 20px;
}

.history-header h2 {
  font-size: 24px;
  font-weight: 700;
  color: var(--text-primary);
}

.history-stats {
  font-size: 14px;
  color: var(--text-secondary);
}

.history-table {
  overflow-x: auto;
  border: 1px solid var(--border-color);
  border-radius: 8px;
}

.history-table table {
  width: 100%;
  border-collapse: collapse;
}

.history-table thead {
  background: var(--section-bg);
}

.history-table th {
  padding: 12px;
  text-align: left;
  font-size: 13px;
  font-weight: 600;
  color: var(--text-secondary);
  border-bottom: 2px solid var(--border-color);
}

.history-table td {
  padding: 12px;
  font-size: 14px;
  color: var(--text-primary);
  border-bottom: 1px solid var(--border-color);
}

.history-table tbody tr:hover {
  background: var(--hover-bg);
}

.action-buttons {
  display: flex;
  gap: 8px;
  justify-content: center;
}

.btn-icon {
  padding: 6px 10px;
  background: transparent;
  border: 1px solid var(--border-color);
  border-radius: 4px;
  cursor: pointer;
  color: var(--text-secondary);
  transition: all 0.2s;
}

.btn-icon:hover {
  background: var(--hover-bg);
  color: var(--text-primary);
}

.btn-view:hover {
  border-color: var(--primary-color);
  color: var(--primary-color);
}

.btn-delete:hover {
  border-color: #f44336;
  color: #f44336;
}

.pagination {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 20px;
  margin-top: 20px;
}

.btn-page {
  padding: 8px 16px;
  background: var(--button-bg);
  border: 1px solid var(--border-color);
  border-radius: 6px;
  cursor: pointer;
  font-size: 14px;
  color: var(--text-primary);
  transition: all 0.2s;
}

.btn-page:hover:not(:disabled) {
  background: var(--hover-bg);
  border-color: var(--primary-color);
}

.btn-page:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

.page-info {
  font-size: 14px;
  color: var(--text-secondary);
  font-weight: 500;
}

/* Empty & Loading States */
.empty-state,
.loading-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 80px 20px;
  color: var(--text-secondary);
}

.empty-icon {
  font-size: 64px;
  color: var(--text-disabled);
  margin-bottom: 20px;
}

.empty-state p,
.loading-state {
  font-size: 16px;
  color: var(--text-secondary);
}

/* Responsive */
@media (max-width: 768px) {
  .strategy-backtest-container {
    padding: 15px;
  }

  .tabs-header {
    overflow-x: auto;
    flex-wrap: nowrap;
  }

  .tab-button {
    white-space: nowrap;
    padding: 10px 16px;
    font-size: 14px;
  }

  .tabs-body {
    padding: 20px;
  }

  .form-row {
    grid-template-columns: 1fr;
  }

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

  .detail-grid {
    grid-template-columns: 1fr;
  }

  .history-table {
    font-size: 12px;
  }

  .history-table th,
  .history-table td {
    padding: 8px;
  }

  .results-header {
    flex-direction: column;
    gap: 15px;
    align-items: flex-start;
  }
}

@media (max-width: 480px) {
  .page-header h1 {
    font-size: 22px;
  }

  .results-summary {
    grid-template-columns: 1fr;
  }

  .card-value {
    font-size: 24px;
  }
}

/* 주봉 시뮬레이션 페이지 */
.weekly-sim-container {
  padding: 20px;
  max-width: 1200px;
  margin: 0 auto;
}

.weekly-sim-container h2 {
  color: #e8eaed;
  color: var(--text-primary, #e8eaed);
  margin-bottom: 20px;
}

/* 탭 */
.weekly-sim-tabs {
  display: flex;
  gap: 4px;
  margin-bottom: 20px;
  border-bottom: 2px solid #2a2d35;
  border-bottom: 2px solid var(--border-color, #2a2d35);
}

.weekly-sim-tab {
  padding: 10px 20px;
  border: none;
  background: transparent;
  color: #9aa0a6;
  color: var(--text-secondary, #9aa0a6);
  cursor: pointer;
  font-size: 14px;
  font-weight: 500;
  border-bottom: 2px solid transparent;
  transition: all 0.2s;
}

.weekly-sim-tab:hover {
  color: #e8eaed;
  color: var(--text-primary, #e8eaed);
  background: #1f2228;
  background: var(--bg-secondary, #1f2228);
}

.weekly-sim-tab.active {
  color: #4dabf7;
  color: var(--accent-blue, #4dabf7);
  border-bottom-color: #4dabf7;
  border-bottom-color: var(--accent-blue, #4dabf7);
}

/* 설정 패널 */
.sim-config-panel {
  background: #1f2228;
  background: var(--bg-secondary, #1f2228);
  border-radius: 8px;
  padding: 20px;
  margin-bottom: 20px;
  border: 1px solid #2a2d35;
  border: 1px solid var(--border-color, #2a2d35);
}

.sim-config-panel h3 {
  color: #e8eaed;
  color: var(--text-primary, #e8eaed);
  margin-bottom: 15px;
  font-size: 16px;
}

.config-row {
  display: flex;
  gap: 16px;
  margin-bottom: 12px;
  flex-wrap: wrap;
  align-items: center;
}

.config-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 140px;
}

.config-field label {
  font-size: 12px;
  color: #9aa0a6;
  color: var(--text-secondary, #9aa0a6);
}

.config-field input,
.config-field select {
  padding: 8px 10px;
  background: #1a1d23;
  background: var(--bg-primary, #1a1d23);
  border: 1px solid #2a2d35;
  border: 1px solid var(--border-color, #2a2d35);
  border-radius: 4px;
  color: #e8eaed;
  color: var(--text-primary, #e8eaed);
  font-size: 13px;
}

.config-field input:focus,
.config-field select:focus {
  border-color: #4dabf7;
  border-color: var(--accent-blue, #4dabf7);
  outline: none;
}

/* 파라미터 그리드 태그 */
.param-grid-section {
  margin-top: 12px;
}

.param-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 6px;
}

.param-tag {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  background: #1a1d23;
  background: var(--bg-primary, #1a1d23);
  border: 1px solid #2a2d35;
  border: 1px solid var(--border-color, #2a2d35);
  border-radius: 12px;
  font-size: 12px;
  color: #e8eaed;
  color: var(--text-primary, #e8eaed);
  cursor: pointer;
}

.param-tag.selected {
  background: #4dabf7;
  background: var(--accent-blue, #4dabf7);
  color: #fff;
  border-color: #4dabf7;
  border-color: var(--accent-blue, #4dabf7);
}

/* 실행 버튼 */
.sim-actions {
  display: flex;
  gap: 10px;
  margin-top: 16px;
}

.btn-primary {
  padding: 10px 24px;
  background: #4dabf7;
  background: var(--accent-blue, #4dabf7);
  color: #fff;
  border: none;
  border-radius: 6px;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: opacity 0.2s;
}

.btn-primary:hover { opacity: 0.85; }
.btn-primary:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.btn-secondary {
  padding: 10px 24px;
  background: transparent;
  color: #9aa0a6;
  color: var(--text-secondary, #9aa0a6);
  border: 1px solid #2a2d35;
  border: 1px solid var(--border-color, #2a2d35);
  border-radius: 6px;
  font-size: 14px;
  cursor: pointer;
}

.btn-secondary:hover {
  border-color: #9aa0a6;
  border-color: var(--text-secondary, #9aa0a6);
}

/* 진행률 바 */
.progress-section {
  background: #1f2228;
  background: var(--bg-secondary, #1f2228);
  border-radius: 8px;
  padding: 16px;
  margin-bottom: 16px;
  border: 1px solid #2a2d35;
  border: 1px solid var(--border-color, #2a2d35);
}

.progress-bar-container {
  width: 100%;
  height: 20px;
  background: #1a1d23;
  background: var(--bg-primary, #1a1d23);
  border-radius: 10px;
  overflow: hidden;
  margin: 8px 0;
}

.progress-bar-fill {
  height: 100%;
  background: linear-gradient(90deg, #4dabf7, #74c0fc);
  background: linear-gradient(90deg, var(--accent-blue, #4dabf7), #74c0fc);
  border-radius: 10px;
  transition: width 0.3s ease;
}

.progress-info {
  display: flex;
  justify-content: space-between;
  font-size: 12px;
  color: #9aa0a6;
  color: var(--text-secondary, #9aa0a6);
}

/* 결과 테이블 */
.results-table-container {
  overflow-x: auto;
}

.results-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}

.results-table th {
  text-align: left;
  padding: 10px 12px;
  background: #1a1d23;
  background: var(--bg-primary, #1a1d23);
  color: #9aa0a6;
  color: var(--text-secondary, #9aa0a6);
  border-bottom: 1px solid #2a2d35;
  border-bottom: 1px solid var(--border-color, #2a2d35);
  font-weight: 600;
  white-space: nowrap;
}

.results-table td {
  padding: 8px 12px;
  border-bottom: 1px solid #2a2d35;
  border-bottom: 1px solid var(--border-color, #2a2d35);
  color: #e8eaed;
  color: var(--text-primary, #e8eaed);
}

.results-table tr:hover {
  background: #1f2228;
  background: var(--bg-secondary, #1f2228);
}

.results-table .positive { color: #e15241; color: var(--change-positive, #e15241); }
.results-table .negative { color: #2962ff; color: var(--change-negative, #2962ff); }

/* 히트맵 섹션 */
.heatmap-section {
  background: #1f2228;
  background: var(--bg-secondary, #1f2228);
  border-radius: 8px;
  padding: 16px;
  margin-bottom: 16px;
  border: 1px solid #2a2d35;
  border: 1px solid var(--border-color, #2a2d35);
}

.heatmap-controls {
  display: flex;
  gap: 12px;
  margin-bottom: 12px;
  align-items: center;
}

.heatmap-controls label {
  font-size: 12px;
  color: #9aa0a6;
  color: var(--text-secondary, #9aa0a6);
}

.heatmap-controls select {
  padding: 6px 8px;
  background: #1a1d23;
  background: var(--bg-primary, #1a1d23);
  border: 1px solid #2a2d35;
  border: 1px solid var(--border-color, #2a2d35);
  border-radius: 4px;
  color: #e8eaed;
  color: var(--text-primary, #e8eaed);
  font-size: 12px;
}

/* 태스크 목록 */
.task-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.task-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 16px;
  background: #1f2228;
  background: var(--bg-secondary, #1f2228);
  border-radius: 6px;
  border: 1px solid #2a2d35;
  border: 1px solid var(--border-color, #2a2d35);
}

.task-item .task-info {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.task-item .task-strategy {
  font-weight: 600;
  color: #e8eaed;
  color: var(--text-primary, #e8eaed);
}

.task-item .task-meta {
  font-size: 12px;
  color: #9aa0a6;
  color: var(--text-secondary, #9aa0a6);
}

.task-status {
  padding: 4px 10px;
  border-radius: 12px;
  font-size: 12px;
  font-weight: 500;
}

.task-status.running {
  background: rgba(77, 171, 247, 0.15);
  color: #4dabf7;
  color: var(--accent-blue, #4dabf7);
}

.task-status.completed {
  background: rgba(81, 207, 102, 0.15);
  color: #51cf66;
}

.task-status.failed {
  background: rgba(255, 107, 107, 0.15);
  color: #ff6b6b;
}

.task-status.cancelled {
  background: rgba(154, 160, 166, 0.15);
  color: #9aa0a6;
  color: var(--text-secondary, #9aa0a6);
}

/* 상세 결과 모달 */
.detail-popup {
  background: #1f2228;
  background: var(--bg-secondary, #1f2228);
  border: 1px solid #4dabf7;
  border: 1px solid var(--accent-blue, #4dabf7);
  border-radius: 8px;
  padding: 16px;
  margin-top: 12px;
}

.detail-popup h4 {
  color: #4dabf7;
  color: var(--accent-blue, #4dabf7);
  margin-bottom: 8px;
}

.detail-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  grid-gap: 8px;
  gap: 8px;
}

.detail-item {
  display: flex;
  flex-direction: column;
}

.detail-item .label {
  font-size: 11px;
  color: #9aa0a6;
  color: var(--text-secondary, #9aa0a6);
}

.detail-item .value {
  font-size: 15px;
  font-weight: 600;
  color: #e8eaed;
  color: var(--text-primary, #e8eaed);
}

/* 빈 상태 */
.empty-state {
  text-align: center;
  padding: 40px;
  color: #9aa0a6;
  color: var(--text-secondary, #9aa0a6);
}

.empty-state p {
  margin: 4px 0;
}

/* 에러 메시지 */
.error-message {
  background: rgba(255, 107, 107, 0.1);
  border: 1px solid rgba(255, 107, 107, 0.3);
  border-radius: 6px;
  padding: 12px;
  color: #ff6b6b;
  margin-bottom: 16px;
}

/* ===================================
   InformationPage - Stitch Design System (Gemini 3.1 Pro Redesign)
   All styles use --change-* tokens from ChangeStyleCommon.css
   No-Line Rule: no borders, use box-shadow instead
   =================================== */

/* ---- Page Root ---- */
.ip-page {
  min-height: 100vh;
  background: var(--change-surface);
  color: var(--change-on-surface);
  font-family: 'Inter', 'Pretendard', -apple-system, BlinkMacSystemFont, sans-serif;
  -webkit-font-smoothing: antialiased;
}

/* ---- Main Content Area ---- */
.ip-main {
  padding: 48px 32px 80px;
  display: flex;
  flex-direction: column;
  gap: 32px;
}

/* ---- Section 1: Hero Header ---- */
.ip-hero {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

@media (min-width: 768px) {
  .ip-hero {
    flex-direction: row;
    align-items: flex-end;
    justify-content: space-between;
  }
}

.ip-hero-text {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.ip-hero-greeting {
  font-size: 30px;
  font-weight: 800;
  letter-spacing: -0.025em;
  color: var(--change-on-surface);
  margin: 0;
  line-height: 1.2;
}

.ip-hero-subtitle {
  font-size: 14px;
  font-weight: 400;
  color: var(--change-on-surface-variant);
  margin: 4px 0 0;
}

.ip-hero-badge {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 10px 20px;
  background: rgba(255, 255, 255, 0.7);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border-radius: 9999px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
  width: -webkit-fit-content;
  width: fit-content;
}

[data-theme="dark"] .ip-hero-badge {
  background: rgba(30, 32, 34, 0.7);
}

.ip-hero-emoji {
  font-size: 18px;
}

.ip-hero-badge-text {
  font-size: 14px;
  font-weight: 600;
  color: var(--change-primary);
}

/* ---- Section 2: Portfolio Overview 3-column Grid ---- */
.ip-summary-grid {
  display: grid;
  grid-template-columns: 1fr;
  grid-gap: 24px;
  gap: 24px;
}

@media (min-width: 768px) {
  .ip-summary-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

.ip-summary-card {
  background: var(--change-surface-lowest);
  padding: 24px;
  border-radius: 1.5rem;
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.04);
  display: flex;
  flex-direction: column;
  gap: 8px;
  transition: transform 0.2s ease;
}

.ip-summary-card:hover {
  transform: scale(1.01);
}

.ip-summary-label {
  font-size: 14px;
  font-weight: 500;
  color: var(--change-on-surface-variant);
  margin: 0 0 8px;
}

.ip-summary-value-row {
  display: flex;
  align-items: baseline;
  gap: 4px;
}

.ip-summary-value {
  font-size: 30px;
  font-weight: 700;
  letter-spacing: -0.025em;
  color: var(--change-on-surface);
}

.ip-summary-unit {
  font-size: 18px;
  font-weight: 700;
  color: var(--change-on-surface-variant);
}

.ip-summary-profit-row {
  display: flex;
  align-items: center;
  gap: 12px;
}

.ip-summary-rate {
  font-size: 18px;
  font-weight: 700;
}

/* Rate badge (pill) */
.ip-summary-rate-badge {
  display: inline-flex;
  align-items: center;
  padding: 4px 8px;
  border-radius: 0.5rem;
  font-size: 14px;
  font-weight: 700;
}

.ip-rate-badge--bull {
  background: rgba(239, 68, 68, 0.08);
  color: var(--change-bull);
}

.ip-rate-badge--bear {
  background: rgba(59, 130, 246, 0.08);
  color: var(--change-bear);
}

/* Bull / Bear color utilities */
.ip-bull {
  color: var(--change-bull) !important;
}

.ip-bear {
  color: var(--change-bear) !important;
}

/* ---- Section 3: Market Indices Strip ---- */
.ip-indices-strip {
  overflow-x: auto;
  padding-bottom: 8px;
  -ms-overflow-style: none;
  scrollbar-width: none;
}

.ip-indices-strip::-webkit-scrollbar {
  display: none;
}

.ip-indices-scroll {
  display: flex;
  gap: 16px;
  min-width: -webkit-max-content;
  min-width: max-content;
}

.ip-index-chip {
  display: flex;
  align-items: center;
  gap: 16px;
  background: rgba(255, 255, 255, 0.7);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  padding: 12px 20px;
  border-radius: 1rem;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
  flex-shrink: 0;
}

[data-theme="dark"] .ip-index-chip {
  background: rgba(30, 32, 34, 0.5);
}

.ip-index-label {
  font-size: 14px;
  font-weight: 700;
  color: var(--change-on-surface);
}

.ip-index-value {
  font-size: 14px;
  font-weight: 600;
}

.ip-index-change {
  font-size: 12px;
  font-weight: 700;
}

/* ---- Section 4: Bento Grid ---- */
.ip-bento-grid {
  display: grid;
  grid-template-columns: 1fr;
  grid-gap: 24px;
  gap: 24px;
}

@media (min-width: 1024px) {
  .ip-bento-grid {
    grid-template-columns: 5fr 7fr;
  }
}

.ip-bento-left,
.ip-bento-right {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 24px;
}

.ip-bento-title {
  font-size: 18px;
  font-weight: 700;
  letter-spacing: -0.01em;
  margin: 0;
  padding: 0 4px;
  color: var(--change-on-surface);
}

.ip-bento-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

/* ---- Quick Actions 3x2 Grid ---- */
.ip-quick-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-gap: 16px;
  gap: 16px;
}

.ip-quick-btn {
  aspect-ratio: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  background: var(--change-surface-lowest);
  border-radius: 1.5rem;
  border: none;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.02);
  cursor: pointer;
  transition: all 0.2s ease;
}

.ip-quick-btn:hover {
  background: var(--change-primary-container);
  transform: scale(1.02);
}

.ip-quick-btn:hover .ip-quick-icon {
  color: #fff;
}

.ip-quick-btn:hover .ip-quick-label {
  color: #fff;
}

.ip-quick-btn:active {
  transform: scale(0.97);
}

.ip-quick-btn .ip-quick-icon {
  font-size: 30px;
  color: var(--change-primary);
  transition: color 0.2s ease;
}

.ip-quick-btn .ip-quick-label {
  font-size: 14px;
  font-weight: 600;
  color: var(--change-on-surface);
  transition: color 0.2s ease;
}

/* ---- Trading Rules - Rules Grid (2col sub-grid) ---- */
.ip-rules-all-btn {
  font-size: 14px;
  font-weight: 600;
  color: var(--change-primary);
  background: none;
  border: none;
  cursor: pointer;
  transition: opacity 0.2s;
  padding: 0 4px;
}

.ip-rules-all-btn:hover {
  text-decoration: underline;
}

.ip-rules-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 48px 16px;
  color: var(--change-outline);
  font-size: 14px;
  gap: 12px;
}

.ip-rules-add-btn {
  font-size: 13px;
  font-weight: 600;
  color: var(--change-primary);
  background: rgba(49, 130, 246, 0.08);
  border: none;
  border-radius: 0.75rem;
  padding: 8px 20px;
  cursor: pointer;
  transition: background 0.2s;
}

.ip-rules-add-btn:hover {
  background: rgba(49, 130, 246, 0.15);
}

/* Rules grid layout: hero spans 2 cols, 2 sub cards below */
.ip-rules-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-gap: 16px;
  gap: 16px;
  flex: 1 1;
}

/* ---- Rule Card: Hero (gradient, spans 2 cols) ---- */
.ip-rule-card--hero {
  grid-column: 1 / -1;
  position: relative;
  overflow: hidden;
  border-radius: 1.5rem;
  padding: 32px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  color: #fff;
  min-height: 200px;
  cursor: pointer;
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12);
}

.ip-rule-hero-bg {
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, var(--change-bull) 0%, var(--change-bear) 100%);
  opacity: 0.9;
  transition: transform 0.5s ease;
  z-index: 0;
}

.ip-rule-card--hero:hover .ip-rule-hero-bg {
  transform: scale(1.1);
}

.ip-rule-hero-content {
  position: relative;
  z-index: 1;
}

.ip-rule-hero-badge {
  display: inline-block;
  background: rgba(255, 255, 255, 0.2);
  -webkit-backdrop-filter: blur(12px);
          backdrop-filter: blur(12px);
  padding: 4px 12px;
  border-radius: 9999px;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

.ip-rule-hero-title {
  font-size: 24px;
  font-weight: 800;
  margin: 16px 0 0;
  line-height: 1.3;
}

.ip-rule-hero-desc {
  font-size: 14px;
  color: rgba(255, 255, 255, 0.8);
  margin: 8px 0 0;
  max-width: 320px;
  line-height: 1.4;
}

.ip-rule-hero-footer {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 32px;
}

.ip-rule-hero-stats {
  display: flex;
  gap: 24px;
}

.ip-rule-hero-stat-label {
  font-size: 10px;
  color: rgba(255, 255, 255, 0.6);
  text-transform: uppercase;
  margin: 0;
}

.ip-rule-hero-stat-value {
  font-size: 20px;
  font-weight: 700;
  margin: 4px 0 0;
}

.ip-rule-hero-action {
  background: #fff;
  color: var(--change-on-surface);
  padding: 10px 24px;
  border-radius: 1rem;
  border: none;
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  transition: background 0.2s;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.ip-rule-hero-action:hover {
  background: var(--change-surface-low);
}

/* ---- Rule Card: Sub (small cards) ---- */
.ip-rule-card--sub {
  background: var(--change-surface-lowest);
  padding: 24px;
  border-radius: 1.5rem;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.02);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  cursor: pointer;
  transition: all 0.2s ease;
}

.ip-rule-card--sub:hover {
  box-shadow: 0 4px 20px rgba(49, 130, 246, 0.1);
}

.ip-rule-sub-top {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.ip-rule-sub-name {
  font-size: 16px;
  font-weight: 700;
  color: var(--change-on-surface);
  margin: 0;
}

.ip-rule-sub-desc {
  font-size: 12px;
  color: var(--change-on-surface-variant);
  margin: 0;
}

.ip-rule-sub-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 16px;
}

.ip-rule-sub-price {
  font-size: 18px;
  font-weight: 700;
}

.ip-rule-sub-arrow {
  color: var(--change-outline-variant);
  font-size: 20px;
}

/* ---- Section 5: Recent Transactions (table) ---- */
.ip-transactions-section {
  display: flex;
  flex-direction: column;
  gap: 24px;
}

.ip-transactions-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.ip-transactions-card {
  background: var(--change-surface-lowest);
  border-radius: 1.5rem;
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.02);
  overflow: hidden;
}

/* Native table styling */
.ip-tx-table {
  width: 100%;
  text-align: left;
  border-collapse: collapse;
}

.ip-tx-thead-row {
  background: var(--change-surface-low);
}

.ip-tx-th {
  padding: 16px 24px;
  font-size: 10px;
  font-weight: 700;
  color: var(--change-outline);
  text-transform: uppercase;
  letter-spacing: 0.1em;
}

.ip-tx-th--left {
  text-align: left;
  padding-left: 32px;
}

.ip-tx-th--center {
  text-align: center;
}

.ip-tx-th--right {
  text-align: right;
  padding-right: 32px;
}

.ip-tx-tbody-row {
  transition: background-color 0.2s;
}

.ip-tx-tbody-row:hover {
  background: rgba(0, 0, 0, 0.015);
}

[data-theme="dark"] .ip-tx-tbody-row:hover {
  background: rgba(255, 255, 255, 0.03);
}

.ip-tx-td {
  padding: 20px 24px;
}

.ip-tx-td--name {
  padding-left: 32px;
}

.ip-tx-td--center {
  text-align: center;
}

.ip-tx-td--right {
  text-align: right;
  padding-right: 32px;
}

.ip-tx-name-cell {
  display: flex;
  align-items: center;
  gap: 12px;
}

/* Avatar */
.ip-tx-avatar {
  width: 32px;
  height: 32px;
  border-radius: 0.5rem;
  background: var(--change-surface-high);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 12px;
  color: var(--change-on-surface-variant);
  flex-shrink: 0;
}

.ip-tx-info {
  display: flex;
  flex-direction: column;
}

.ip-tx-stock-name {
  font-size: 14px;
  font-weight: 700;
  color: var(--change-on-surface);
  margin: 0;
}

.ip-tx-stock-code {
  font-size: 10px;
  color: var(--change-outline);
  margin: 2px 0 0;
}

/* Type Badge */
.ip-tx-type-badge {
  display: inline-block;
  padding: 4px 12px;
  border-radius: 9999px;
  font-size: 10px;
  font-weight: 900;
  text-transform: uppercase;
}

.ip-tx-type-badge--buy {
  background: rgba(239, 68, 68, 0.08);
  color: var(--change-bull);
}

.ip-tx-type-badge--sell {
  background: rgba(59, 130, 246, 0.08);
  color: var(--change-bear);
}

/* Values */
.ip-tx-value {
  font-size: 14px;
  font-weight: 600;
  color: var(--change-on-surface);
}

.ip-tx-value--bold {
  font-weight: 700;
}

/* ---- Table Skeleton ---- */
.ip-table-skeleton {
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding: 24px;
}

.ip-skeleton-row {
  display: flex;
  align-items: center;
  gap: 16px;
}

.ip-skeleton-info {
  display: flex;
  flex-direction: column;
  gap: 4px;
  flex: 1 1;
}

/* Empty state */
.ip-holdings-empty {
  text-align: center;
  padding: 48px 16px;
  color: var(--change-outline);
  font-size: 14px;
}

/* View all button */
.ip-view-all-btn {
  width: 100%;
  padding: 16px;
  background: none;
  border: none;
  font-size: 12px;
  font-weight: 700;
  color: var(--change-outline);
  cursor: pointer;
  transition: color 0.2s;
}

.ip-view-all-btn:hover {
  color: var(--change-on-surface);
}

/* ---- TX Filters (legacy compat) ---- */
.ip-tx-filters {
  display: flex;
  gap: 16px;
}

.ip-tx-filter-btn {
  padding: 8px 16px;
  background: var(--change-surface-lowest);
  border: none;
  border-radius: 0.75rem;
  font-size: 12px;
  font-weight: 700;
  color: var(--change-on-surface-variant);
  cursor: pointer;
  transition: all 0.2s;
}

.ip-tx-filter-btn:hover {
  background: var(--change-surface-high);
}

.ip-tx-filter-btn--active {
  background: var(--change-surface-container);
  color: var(--change-on-surface);
}

/* ---- Footer ---- */
.ip-footer {
  width: 100%;
  padding: 32px 0 0;
}

.ip-footer-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
}

@media (min-width: 768px) {
  .ip-footer-inner {
    flex-direction: row;
    justify-content: space-between;
  }
}

.ip-footer-brand {
  font-weight: 700;
  font-size: 14px;
  color: var(--change-on-surface-variant);
}

.ip-footer-copy {
  font-size: 12px;
  color: var(--change-outline);
  margin: 0;
}

/* ---- Responsive ---- */
@media (max-width: 768px) {
  .ip-main {
    padding: 24px 16px 80px;
    gap: 24px;
  }

  .ip-hero {
    flex-direction: column;
    align-items: flex-start;
  }

  .ip-hero-greeting {
    font-size: 24px;
  }

  .ip-summary-value {
    font-size: 24px;
  }

  .ip-summary-card {
    padding: 20px;
  }

  .ip-bento-grid {
    gap: 24px;
  }

  .ip-quick-grid {
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
  }

  .ip-rules-grid {
    grid-template-columns: 1fr;
  }

  .ip-rule-card--hero {
    min-height: 180px;
    padding: 24px;
  }

  .ip-rule-hero-title {
    font-size: 20px;
  }

  .ip-rule-hero-footer {
    flex-direction: column;
    align-items: flex-start;
    gap: 16px;
  }

  /* Table: hide type column on mobile */
  .ip-tx-th:nth-child(2),
  .ip-tx-td:nth-child(2) {
    display: none;
  }

  .ip-tx-th,
  .ip-tx-td {
    padding: 12px 16px;
  }

  .ip-tx-th--left,
  .ip-tx-td--name {
    padding-left: 16px;
  }

  .ip-tx-th--right,
  .ip-tx-td--right {
    padding-right: 16px;
  }

  .ip-transactions-header {
    flex-wrap: wrap;
    gap: 12px;
  }

  .ip-footer-inner {
    flex-direction: column;
    align-items: center;
  }
}

@media (max-width: 480px) {
  .ip-hero-greeting {
    font-size: 22px;
  }

  .ip-summary-value {
    font-size: 20px;
  }

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

  .ip-quick-btn .ip-quick-label {
    font-size: 12px;
  }
}

/* ProjectIntroduction.css */

.intro-container {
    width: 100%;
    min-height: 100vh;
    background: #f8fafc;
    /* Light background */
    color: #1e293b;
    /* Dark text */
    overflow-x: hidden;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
    padding-bottom: 80px;
}

/* Navbar Placeholder Space if needed, otherwise padding */
.intro-content {
    max-width: 1200px;
    margin: 0 auto;
    padding: 20px;
}

/* Hero Section */
.hero-section {
    text-align: center;
    padding: 120px 20px 80px;
    animation: fadeInDown 1s ease-out;
}

.hero-title {
    font-size: 3.5rem;
    font-weight: 800;
    margin-bottom: 20px;
    background: linear-gradient(to right, #2563eb, #7c3aed, #db2777);
    /* Darker gradient for light mode */
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    letter-spacing: -0.02em;
}

.hero-subtitle {
    font-size: 1.5rem;
    color: #64748b;
    /* Lighter text for subtitle */
    max-width: 600px;
    margin: 0 auto 40px;
    line-height: 1.6;
}

.hero-cta {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background: #2563eb;
    color: white;
    padding: 16px 32px;
    border-radius: 50px;
    font-size: 1.1rem;
    font-weight: 600;
    text-decoration: none;
    transition: all 0.3s ease;
    box-shadow: 0 4px 6px -1px rgba(37, 99, 235, 0.3);
}

.hero-cta:hover {
    background: #1d4ed8;
    transform: translateY(-2px);
    box-shadow: 0 10px 15px -3px rgba(37, 99, 235, 0.4);
}

/* Feature Sections */
.feature-section {
    display: flex;
    align-items: center;
    gap: 60px;
    margin: 100px 0;
    opacity: 0;
    transform: translateY(30px);
    transition: all 0.8s ease-out;
}

.feature-section.visible {
    opacity: 1;
    transform: translateY(0);
}

.feature-section.reverse {
    flex-direction: row-reverse;
}

.feature-content {
    flex: 1 1;
}

.feature-image-wrapper {
    flex: 1.5 1;
    /* Increased size for screenshots */
    position: relative;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
    border: 1px solid #e2e8f0;
    /* Light border */
    background: var(--change-bg-elevated);
}

.feature-image {
    width: 100%;
    height: auto;
    display: block;
    transition: transform 0.5s ease;
}

.feature-image-wrapper:hover .feature-image {
    transform: scale(1.02);
}

.feature-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 60px;
    height: 60px;
    background: #eff6ff;
    /* Light blue bg */
    border-radius: 16px;
    color: #2563eb;
    /* Blue icon */
    margin-bottom: 24px;
    font-size: 1.8rem;
}

.feature-title {
    font-size: 2.5rem;
    font-weight: 700;
    margin-bottom: 16px;
    color: #1e293b;
}

.feature-description {
    font-size: 1.125rem;
    color: #475569;
    line-height: 1.7;
    margin-bottom: 24px;
}

.feature-list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.feature-list li {
    display: flex;
    align-items: center;
    gap: 12px;
    color: #334155;
    margin-bottom: 12px;
    font-size: 1rem;
}

.feature-list li svg {
    color: #10b981;
    /* Green check */
}

/* Mobile Responsiveness */
@media (max-width: 960px) {
    .feature-section {
        flex-direction: column;
        gap: 40px;
        margin: 60px 0;
        text-align: center;
    }

    .feature-section.reverse {
        flex-direction: column;
    }

    .feature-list li {
        justify-content: center;
    }

    .feature-icon {
        margin: 0 auto 24px;
    }

    .hero-title {
        font-size: 2.5rem;
    }
}

/* Animations */
@keyframes fadeInDown {
    from {
        opacity: 0;
        transform: translateY(-30px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}
/* =============================================
   StockScore Landing Page - Neo Finance Seoul
   ============================================= */

.landing-page {
  min-height: 100vh;
  background: #0b1120;
  color: #e2e8f0;
  font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, Roboto, sans-serif;
  overflow-x: hidden;
}

/* --- Navigation --- */
.landing-nav {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  background: rgba(11, 17, 32, 0.85);
  -webkit-backdrop-filter: blur(12px);
          backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}

.landing-nav-inner {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 24px;
  height: 64px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.landing-brand {
  display: flex;
  align-items: center;
  gap: 10px;
}

.brand-icon {
  width: 32px;
  height: 32px;
  background: linear-gradient(135deg, #2563eb, #7c3aed);
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 800;
  font-size: 18px;
  color: #fff;
}

.brand-text {
  font-size: 20px;
  font-weight: 700;
  color: #fff;
}

.landing-nav-links {
  display: flex;
  align-items: center;
  gap: 8px;
}

.nav-link {
  background: none;
  border: none;
  color: #94a3b8;
  font-size: 14px;
  padding: 8px 14px;
  cursor: pointer;
  transition: color 0.2s;
}

.nav-link:hover {
  color: #fff;
}

.nav-btn-outline {
  background: none;
  border: 1px solid rgba(255, 255, 255, 0.15);
  color: #e2e8f0;
  font-size: 14px;
  padding: 8px 18px;
  border-radius: 8px;
  cursor: pointer;
  transition: all 0.2s;
}

.nav-btn-outline:hover {
  border-color: #2563eb;
  color: #fff;
}

.nav-btn-primary {
  background: #2563eb;
  border: none;
  color: #fff;
  font-size: 14px;
  font-weight: 600;
  padding: 8px 20px;
  border-radius: 8px;
  cursor: pointer;
  transition: background 0.2s;
}

.nav-btn-primary:hover {
  background: #1d4ed8;
}

/* --- Hero Section --- */
.landing-hero {
  position: relative;
  padding: 140px 24px 80px;
  text-align: center;
  overflow: hidden;
}

.hero-glow-1 {
  position: absolute;
  top: -100px;
  left: 50%;
  transform: translateX(-70%);
  width: 600px;
  height: 600px;
  background: radial-gradient(circle, rgba(37, 99, 235, 0.15) 0%, transparent 70%);
  pointer-events: none;
}

.hero-glow-2 {
  position: absolute;
  top: 0;
  right: -100px;
  width: 500px;
  height: 500px;
  background: radial-gradient(circle, rgba(124, 58, 237, 0.1) 0%, transparent 70%);
  pointer-events: none;
}

.hero-content {
  position: relative;
  max-width: 720px;
  margin: 0 auto;
}

.hero-badge {
  display: inline-block;
  padding: 6px 16px;
  background: rgba(37, 99, 235, 0.12);
  border: 1px solid rgba(37, 99, 235, 0.2);
  border-radius: 24px;
  font-size: 13px;
  font-weight: 500;
  color: #60a5fa;
  margin-bottom: 24px;
}

.hero-title {
  font-size: 48px;
  font-weight: 800;
  line-height: 1.2;
  color: #fff;
  margin: 0 0 20px;
}

.hero-gradient {
  background: linear-gradient(135deg, #60a5fa, #a78bfa);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

.hero-subtitle {
  font-size: 17px;
  color: #94a3b8;
  line-height: 1.7;
  margin: 0 0 36px;
}

.hero-cta {
  display: flex;
  gap: 14px;
  justify-content: center;
  flex-wrap: wrap;
}

.hero-cta .cta-primary,
.hero-cta .cta-secondary {
  flex: 0 0 auto;
}

.cta-primary {
  background: #2563eb;
  border: none;
  color: #fff;
  font-size: 16px;
  font-weight: 600;
  padding: 14px 32px;
  border-radius: 10px;
  cursor: pointer;
  transition: all 0.2s;
}

.cta-primary:hover {
  background: #1d4ed8;
  transform: translateY(-1px);
  box-shadow: 0 8px 25px rgba(37, 99, 235, 0.3);
}

.cta-primary.large {
  padding: 16px 40px;
  font-size: 17px;
}

.cta-secondary {
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.1);
  color: #e2e8f0;
  font-size: 16px;
  font-weight: 500;
  padding: 14px 32px;
  border-radius: 10px;
  cursor: pointer;
  transition: all 0.2s;
}

.cta-secondary:hover {
  background: rgba(255, 255, 255, 0.1);
  border-color: rgba(255, 255, 255, 0.2);
}

.cta-secondary.large {
  padding: 16px 40px;
  font-size: 17px;
}

/* --- Hero Stats --- */
.hero-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-gap: 20px;
  gap: 20px;
  max-width: 800px;
  margin: 60px auto 0;
}

.stat-card {
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 14px;
  padding: 24px 16px;
  text-align: center;
}

.stat-number {
  font-size: 28px;
  font-weight: 800;
  color: #fff;
  margin-bottom: 4px;
}

.stat-label {
  font-size: 13px;
  color: #64748b;
}

/* --- Features Section --- */
.landing-features {
  padding: 100px 24px;
  max-width: 1200px;
  margin: 0 auto;
}

.section-title {
  text-align: center;
  font-size: 34px;
  font-weight: 800;
  color: #fff;
  margin: 0 0 12px;
}

.section-subtitle {
  text-align: center;
  font-size: 16px;
  color: #64748b;
  margin: 0 0 48px;
}

.features-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  grid-gap: 24px;
  gap: 24px;
}

.feature-card {
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 16px;
  padding: 32px;
  transition: all 0.3s;
}

.feature-card:hover {
  background: rgba(255, 255, 255, 0.05);
  border-color: rgba(37, 99, 235, 0.2);
  transform: translateY(-2px);
}

.feature-icon {
  width: 48px;
  height: 48px;
  background: rgba(37, 99, 235, 0.12);
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #60a5fa;
  margin-bottom: 18px;
}

.feature-icon-purple {
  background: rgba(124, 58, 237, 0.12);
  color: #a78bfa;
}

.feature-icon-green {
  background: rgba(16, 185, 129, 0.12);
  color: #34d399;
}

.feature-icon-orange {
  background: rgba(245, 158, 11, 0.12);
  color: #fbbf24;
}

.feature-card h3 {
  font-size: 18px;
  font-weight: 700;
  color: #fff;
  margin: 0 0 10px;
}

.feature-card p {
  font-size: 14px;
  color: #94a3b8;
  line-height: 1.7;
  margin: 0;
}

/* --- Market Section --- */
.landing-market {
  padding: 80px 24px 100px;
  max-width: 1200px;
  margin: 0 auto;
}

.market-cards {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  grid-gap: 24px;
  gap: 24px;
  max-width: 640px;
  margin: 0 auto 48px;
}

.market-card {
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 16px;
  padding: 28px;
  text-align: center;
}

.market-card.market-up {
  border-color: rgba(239, 68, 68, 0.2);
}

.market-card.market-down {
  border-color: rgba(59, 130, 246, 0.2);
}

.market-name {
  font-size: 14px;
  font-weight: 600;
  color: #64748b;
  margin-bottom: 8px;
  text-transform: uppercase;
  letter-spacing: 1px;
}

.market-price {
  font-size: 32px;
  font-weight: 800;
  color: #fff;
  margin-bottom: 6px;
}

.market-change {
  font-size: 15px;
  font-weight: 600;
}

.change-up {
  color: #ef4444;
}

.change-down {
  color: #3b82f6;
}

.market-date {
  font-size: 12px;
  color: #475569;
  margin-top: 8px;
}

/* --- Preview Section --- */
.preview-section {
  max-width: 480px;
  margin: 0 auto;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 16px;
  padding: 28px;
}

.preview-title {
  font-size: 16px;
  font-weight: 700;
  color: #fff;
  margin: 0 0 16px;
  text-align: center;
}

.preview-stocks {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.preview-stock {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 14px;
  background: rgba(255, 255, 255, 0.02);
  border-radius: 10px;
}

.preview-rank {
  font-size: 13px;
  font-weight: 700;
  color: #60a5fa;
  min-width: 28px;
}

.preview-name {
  flex: 1 1;
  font-size: 14px;
  color: #e2e8f0;
}

.preview-score-blur {
  font-size: 13px;
  color: #475569;
  filter: blur(4px);
  -webkit-user-select: none;
          user-select: none;
}

.preview-cta {
  text-align: center;
  margin-top: 18px;
}

.preview-cta button {
  background: none;
  border: 1px solid rgba(37, 99, 235, 0.3);
  color: #60a5fa;
  font-size: 14px;
  font-weight: 600;
  padding: 10px 24px;
  border-radius: 8px;
  cursor: pointer;
  transition: all 0.2s;
}

.preview-cta button:hover {
  background: rgba(37, 99, 235, 0.1);
  border-color: #2563eb;
}

/* --- CTA Section --- */
.landing-cta-section {
  padding: 100px 24px;
  text-align: center;
  background: linear-gradient(180deg, transparent 0%, rgba(37, 99, 235, 0.05) 100%);
}

.landing-cta-section h2 {
  font-size: 34px;
  font-weight: 800;
  color: #fff;
  margin: 0 0 12px;
}

.landing-cta-section p {
  font-size: 16px;
  color: #94a3b8;
  margin: 0 0 36px;
}

.cta-buttons {
  display: flex;
  gap: 14px;
  justify-content: center;
}

/* --- Footer --- */
.landing-footer {
  border-top: 1px solid rgba(255, 255, 255, 0.06);
  padding: 40px 24px;
}

.footer-inner {
  max-width: 1200px;
  margin: 0 auto;
  text-align: center;
}

.footer-brand {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 16px;
  font-weight: 700;
  color: #94a3b8;
  margin-bottom: 12px;
}

.footer-brand .brand-icon {
  width: 24px;
  height: 24px;
  font-size: 13px;
}

.footer-links {
  display: flex;
  gap: 16px;
  justify-content: center;
  font-size: 13px;
  color: #475569;
  margin-bottom: 12px;
}

.footer-disclaimer {
  font-size: 12px;
  color: #334155;
  line-height: 1.6;
}

/* --- Responsive --- */
@media (max-width: 768px) {
  .landing-nav-links .nav-link {
    display: none;
  }

  .hero-title {
    font-size: 32px;
  }

  .hero-subtitle {
    font-size: 15px;
  }

  .hero-stats {
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
  }

  .stat-number {
    font-size: 22px;
  }

  .features-grid {
    grid-template-columns: 1fr;
  }

  .market-cards {
    grid-template-columns: 1fr;
  }

  .hero-cta {
    flex-direction: column;
    align-items: center;
  }

  .cta-buttons {
    flex-direction: column;
    align-items: center;
  }

  .landing-features {
    padding: 60px 16px;
  }

  .landing-market {
    padding: 60px 16px;
  }

  .section-title {
    font-size: 26px;
  }

  .footer-links {
    flex-direction: column;
    gap: 6px;
  }
}

.ai-chat-overlay {
    position: fixed;
    bottom: 20px;
    right: 20px;
    width: 400px;
    height: 600px;
    max-height: calc(100vh - 40px);
    background: var(--change-bg-elevated);
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15);
    border-radius: 16px;
    z-index: 9999;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border: 1px solid rgba(0, 0, 0, 0.08);
    transition: all 0.3s ease;
}

.ai-chat-container {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f8fafc;
}

/* 모바일 전체화면 */
@media (max-width: 600px) {
    .ai-chat-overlay {
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        width: 100%;
        height: 100%;
        max-height: 100dvh;
        border-radius: 0;
        margin: 0;
    }
}

/* 태블릿 */
@media (min-width: 601px) and (max-width: 1024px) {
    .ai-chat-overlay {
        width: 380px;
        height: 550px;
    }
}

/* 헤더 */
.ai-chat-header {
    padding: 16px 20px;
    background: linear-gradient(135deg, #1e3a5f 0%, #2c5282 100%);
    color: white;
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-shrink: 0;
}

.ai-chat-header h3 {
    margin: 0;
    font-size: 15px;
    font-weight: 600;
    display: flex;
    align-items: center;
    gap: 8px;
}

.close-btn {
    background: rgba(255, 255, 255, 0.1);
    border: none;
    color: white;
    font-size: 24px;
    cursor: pointer;
    border-radius: 50%;
    width: 36px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.2s;
}

.close-btn:hover {
    background: rgba(255, 255, 255, 0.2);
    transform: scale(1.1);
}

/* 메시지 영역 - 핵심 스크롤 개선 */
.ai-chat-messages {
    flex: 1 1;
    overflow-y: auto;
    overflow-x: hidden;
    padding: 16px;
    background: #f8fafc;
    display: flex;
    flex-direction: column;
    gap: 12px;
    scroll-behavior: smooth;
    -webkit-overflow-scrolling: touch; /* iOS 모멘텀 스크롤 */
    overscroll-behavior: contain; /* 스크롤 체이닝 방지 */
}

/* 스크롤바 스타일링 */
.ai-chat-messages::-webkit-scrollbar {
    width: 6px;
}

.ai-chat-messages::-webkit-scrollbar-track {
    background: transparent;
}

.ai-chat-messages::-webkit-scrollbar-thumb {
    background: rgba(0, 0, 0, 0.15);
    border-radius: 10px;
}

.ai-chat-messages::-webkit-scrollbar-thumb:hover {
    background: rgba(0, 0, 0, 0.25);
}

/* Firefox 스크롤바 */
.ai-chat-messages {
    scrollbar-width: thin;
    scrollbar-color: rgba(0, 0, 0, 0.15) transparent;
}

/* 메시지 버블 */
.message {
    max-width: 85%;
    padding: 12px 16px;
    border-radius: 18px;
    font-size: 14px;
    line-height: 1.6;
    word-break: break-word;
    animation: messageSlide 0.3s ease-out;
}

@keyframes messageSlide {
    from {
        opacity: 0;
        transform: translateY(10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.message.user {
    align-self: flex-end;
    background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
    color: white;
    border-bottom-right-radius: 4px;
    box-shadow: 0 2px 8px rgba(59, 130, 246, 0.25);
}

.message.assistant {
    align-self: flex-start;
    background: var(--change-bg-elevated);
    color: #334155;
    border: 1px solid #e2e8f0;
    border-bottom-left-radius: 4px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
}

.message-content {
    white-space: pre-wrap;
}

/* 액션 제안 카드 */
.action-proposal-card {
    margin-top: 12px;
    background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);
    border: 1px solid #93c5fd;
    border-radius: 12px;
    padding: 14px;
    color: #1e40af;
}

.action-header {
    font-weight: 700;
    color: #1d4ed8;
    margin-bottom: 10px;
    font-size: 14px;
    border-bottom: 1px solid #93c5fd;
    padding-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.action-details {
    display: flex;
    flex-direction: column;
    gap: 6px;
    font-size: 13px;
    margin-bottom: 12px;
}

.detail-row {
    display: flex;
    justify-content: space-between;
    padding: 4px 0;
}

.detail-row span {
    color: #64748b;
}

.detail-row strong {
    color: #1e293b;
}

.detail-row.highlight {
    background: rgba(255, 255, 255, 0.7);
    padding: 10px 12px;
    margin: 6px -12px;
    border-radius: 8px;
    font-weight: 600;
}

.buy-text {
    color: #dc2626 !important;
    font-weight: 700;
}

.sell-text {
    color: #2563eb !important;
    font-weight: 700;
}

/* 확인 버튼 */
.confirm-btn {
    width: 100%;
    padding: 12px;
    background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%);
    color: white;
    border: none;
    border-radius: 10px;
    cursor: pointer;
    font-weight: 600;
    font-size: 14px;
    transition: all 0.2s;
    box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3);
}

.confirm-btn:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 16px rgba(59, 130, 246, 0.4);
}

.confirm-btn:active {
    transform: translateY(0);
}

.status-msg {
    margin-top: 8px;
    font-size: 13px;
    text-align: center;
    font-weight: 600;
    padding: 8px;
    border-radius: 6px;
}

.status-msg.success {
    color: #059669;
    background: #ecfdf5;
}

.status-msg.error {
    color: #dc2626;
    background: #fef2f2;
}

/* 입력 영역 - 모바일 키보드 대응 */
.ai-chat-input {
    padding: 12px 16px;
    padding-bottom: max(12px, env(safe-area-inset-bottom));
    background: var(--change-bg-elevated);
    border-top: 1px solid #e2e8f0;
    display: flex;
    gap: 10px;
    align-items: center;
    flex-shrink: 0;
}

.ai-chat-input input {
    flex: 1 1;
    padding: 12px 18px;
    border: 2px solid #e2e8f0;
    border-radius: 24px;
    outline: none;
    font-size: 14px;
    transition: all 0.2s;
    background: #f8fafc;
}

.ai-chat-input input:focus {
    border-color: #3b82f6;
    background: var(--change-bg-elevated);
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
}

.ai-chat-input input::placeholder {
    color: #94a3b8;
}

.ai-chat-input button {
    padding: 12px 20px;
    background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
    color: white;
    border: none;
    border-radius: 24px;
    cursor: pointer;
    font-weight: 600;
    font-size: 14px;
    transition: all 0.2s;
    white-space: nowrap;
    box-shadow: 0 2px 8px rgba(59, 130, 246, 0.3);
}

.ai-chat-input button:hover:not(:disabled) {
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(59, 130, 246, 0.4);
}

.ai-chat-input button:disabled {
    background: #cbd5e1;
    cursor: not-allowed;
    box-shadow: none;
}

/* FAB 버튼 */
.ai-chat-minimized {
    position: fixed;
    bottom: 20px;
    right: 20px;
    padding: 14px 24px;
    background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%);
    color: white;
    border: none;
    border-radius: 30px;
    cursor: pointer;
    box-shadow: 0 6px 20px rgba(59, 130, 246, 0.4);
    z-index: 10000;
    font-weight: 600;
    font-size: 15px;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 10px;
    animation: fabPop 0.4s ease-out;
}

@keyframes fabPop {
    from {
        transform: scale(0.8);
        opacity: 0;
    }
    to {
        transform: scale(1);
        opacity: 1;
    }
}

.ai-chat-minimized:hover {
    transform: translateY(-3px) scale(1.02);
    box-shadow: 0 8px 25px rgba(59, 130, 246, 0.5);
}

@media (max-width: 768px) {
    .ai-chat-minimized {
        bottom: calc(80px + env(safe-area-inset-bottom, 0px));
        right: 16px;
        padding: 10px 18px;
        font-size: 13px;
    }
    .ai-chat-container {
        bottom: calc(80px + env(safe-area-inset-bottom, 0px));
        right: 8px;
        left: 8px;
        width: auto;
        max-height: calc(100vh - 160px);
    }
}

@media (max-width: 480px) {
    .ai-chat-minimized {
        bottom: calc(80px + env(safe-area-inset-bottom, 0px));
        right: 12px;
        padding: 8px 14px;
        font-size: 12px;
    }
}

/* 후보 리스트 */
.candidate-list {
    margin-top: 12px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.candidate-btn {
    width: 100%;
    padding: 14px 16px;
    background: var(--change-bg-elevated);
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
    transition: all 0.2s;
    text-align: left;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);
}

.candidate-btn:hover {
    background: #eff6ff;
    border-color: #3b82f6;
    transform: translateX(4px);
    box-shadow: 0 4px 8px rgba(59, 130, 246, 0.15);
}

.candidate-name {
    font-weight: 600;
    color: #1e293b;
    margin-right: 8px;
}

.candidate-market {
    font-size: 11px;
    color: #64748b;
    background: #f1f5f9;
    padding: 3px 8px;
    border-radius: 4px;
    margin-left: 6px;
}

.candidate-code {
    font-size: 12px;
    color: #94a3b8;
    font-family: 'SF Mono', 'Monaco', 'Consolas', monospace;
}

/* 수량 입력 필드 */
.quantity-input,
.amount-input {
    width: 100%;
    padding: 12px 16px;
    border: 2px solid #e2e8f0;
    border-radius: 10px;
    font-size: 14px;
    transition: all 0.2s;
}

.quantity-input:focus,
.amount-input:focus {
    border-color: #3b82f6;
    outline: none;
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
}

/* 로딩 애니메이션 */
.loading-dots {
    display: inline-flex;
    gap: 4px;
}

.loading-dots span {
    width: 6px;
    height: 6px;
    background: #94a3b8;
    border-radius: 50%;
    animation: dotPulse 1.4s infinite ease-in-out;
}

.loading-dots span:nth-child(1) { animation-delay: 0s; }
.loading-dots span:nth-child(2) { animation-delay: 0.2s; }
.loading-dots span:nth-child(3) { animation-delay: 0.4s; }

@keyframes dotPulse {
    0%, 80%, 100% { transform: scale(0.6); opacity: 0.5; }
    40% { transform: scale(1); opacity: 1; }
}

/* 다크 모드 대응 */
@media (prefers-color-scheme: dark) {
    .ai-chat-overlay {
        background: #1e293b;
        border-color: #334155;
    }
    
    .ai-chat-container {
        background: #0f172a;
    }
    
    .ai-chat-messages {
        background: #0f172a;
    }
    
    .message.assistant {
        background: #1e293b;
        color: #e2e8f0;
        border-color: #334155;
    }
    
    .ai-chat-input {
        background: #1e293b;
        border-color: #334155;
    }
    
    .ai-chat-input input {
        background: #0f172a;
        border-color: #334155;
        color: #e2e8f0;
    }
}
/* ===================================
   Reports Pages - Stitch Design System
   --change-* tokens, no-border rule
   Shared by DailyReportPage & StockReportsPage
   =================================== */

.reports-change {
  max-width: 1400px;
  margin: 0 auto;
  padding: var(--change-spacing-lg);
  min-height: 80vh;
}

/* ---- Page Header ---- */
.reports-page-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--change-spacing-lg);
}

.reports-page-title {
  font-size: 24px;
  font-weight: 800;
  color: var(--change-on-surface);
  margin: 0;
  letter-spacing: -0.02em;
}

.reports-page-subtitle {
  font-size: 14px;
  color: var(--change-outline);
  margin: 4px 0 0 0;
  font-weight: 500;
}

/* ---- Report Type Tabs ---- */
.reports-tabs {
  display: inline-flex;
  background: var(--change-surface-low);
  padding: 6px;
  border-radius: 12px;
  gap: 0;
  margin-bottom: var(--change-spacing-lg);
}

.reports-tab {
  padding: 8px 20px;
  font-size: 14px;
  font-weight: 500;
  color: var(--change-outline);
  background: transparent;
  border: none;
  border-radius: 8px;
  cursor: pointer;
  transition: all 0.2s ease;
  white-space: nowrap;
}

.reports-tab:hover {
  color: var(--change-on-surface);
}

.reports-tab.active {
  background: var(--change-surface-lowest);
  color: var(--change-primary);
  font-weight: 700;
  box-shadow: var(--change-shadow-sm);
}

/* ---- 12-Column Grid Layout ---- */
.reports-grid {
  display: grid;
  grid-template-columns: 1fr;
  grid-gap: var(--change-spacing-lg);
  gap: var(--change-spacing-lg);
}

@media (min-width: 1024px) {
  .reports-grid {
    grid-template-columns: 2fr 1fr;
  }
}

/* ---- Hero Card (Daily Report Detail) ---- */
.report-hero-card {
  background: var(--change-surface-lowest);
  border-radius: 1.5rem;
  padding: var(--change-spacing-lg);
  box-shadow: var(--change-shadow-sm);
}

.report-hero-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: var(--change-spacing-lg);
}

.report-hero-title {
  font-size: 24px;
  font-weight: 800;
  color: var(--change-on-surface);
  margin: 0 0 6px 0;
  letter-spacing: -0.02em;
}

.report-hero-desc {
  font-size: 14px;
  color: var(--change-outline);
  margin: 0;
  font-weight: 500;
}

.report-verified-badge {
  background: rgba(0, 89, 185, 0.1);
  color: var(--change-primary);
  font-size: 11px;
  font-weight: 700;
  padding: 4px 12px;
  border-radius: 9999px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  white-space: nowrap;
}

/* ---- Summary Metric Cards ---- */
.report-metrics {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  grid-gap: var(--change-spacing-sm);
  gap: var(--change-spacing-sm);
  margin-bottom: var(--change-spacing-lg);
}

.report-metric-card {
  padding: var(--change-spacing-md);
  background: var(--change-surface-low);
  border-radius: 1rem;
}

.report-metric-label {
  font-size: 11px;
  font-weight: 700;
  color: var(--change-outline);
  margin-bottom: 8px;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.report-metric-value {
  font-size: 18px;
  font-weight: 800;
  color: var(--change-on-surface);
  letter-spacing: -0.02em;
}

.report-metric-sub {
  font-size: 13px;
  font-weight: 600;
  margin-top: 2px;
}

/* ---- Events Section ---- */
.report-events {
  margin-top: var(--change-spacing-md);
}

.report-events-title {
  font-size: 14px;
  font-weight: 700;
  color: var(--change-on-surface);
  margin-bottom: var(--change-spacing-sm);
  display: flex;
  align-items: center;
  gap: 6px;
}

.report-event-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.report-event-chip {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  background: var(--change-surface-lowest);
  border-radius: 12px;
  box-shadow: var(--change-shadow-sm);
}

.report-event-num {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--change-surface-low);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  font-weight: 700;
  color: var(--change-outline);
}

.report-event-text {
  font-size: 13px;
  font-weight: 600;
  color: var(--change-on-surface);
}

/* ---- Accordion Sections ---- */
.report-accordion {
  background: var(--change-surface-lowest);
  border-radius: 1.5rem;
  box-shadow: var(--change-shadow-sm);
  overflow: hidden;
  margin-bottom: var(--change-spacing-md);
}

.report-accordion-trigger {
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 16px 24px;
  background: transparent;
  border: none;
  cursor: pointer;
  font-size: 15px;
  font-weight: 700;
  color: var(--change-on-surface);
  font-family: inherit;
  transition: background 0.2s;
}

.report-accordion-trigger:hover {
  background: var(--change-surface-low);
}

.report-accordion-trigger .material-symbols-outlined {
  font-size: 20px;
  color: var(--change-outline);
  transition: transform 0.2s;
}

.report-accordion-trigger.open .material-symbols-outlined {
  transform: rotate(180deg);
}

.report-accordion-body {
  padding: 0 24px 24px 24px;
}

/* ---- Report Content (Markdown rendered) ---- */
.report-markdown-body {
  background: var(--change-surface-low);
  padding: var(--change-spacing-md);
  border-radius: 1rem;
  line-height: 1.8;
  font-size: 14px;
  color: var(--change-on-surface);
}

/* ---- Chart Images in Report ---- */
.report-chart-item {
  margin-bottom: var(--change-spacing-md);
  padding: var(--change-spacing-md);
  background: var(--change-surface-lowest);
  border-radius: 1rem;
  box-shadow: var(--change-shadow-sm);
}

.report-chart-title {
  margin: 0 0 12px 0;
  font-size: 15px;
  font-weight: 700;
  color: var(--change-on-surface);
}

.report-chart-title .stock-code-sub {
  color: var(--change-outline);
  font-weight: 400;
  font-size: 13px;
  margin-left: 6px;
}

.report-chart-item img {
  max-width: 100%;
  border-radius: 8px;
  display: block;
  margin-bottom: 8px;
}

/* ---- Holdings Table ---- */
.report-holdings-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}

.report-holdings-table th {
  padding: 12px 16px;
  text-align: left;
  font-size: 11px;
  font-weight: 700;
  color: var(--change-outline);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  background: var(--change-surface-low);
}

.report-holdings-table th.right {
  text-align: right;
}

.report-holdings-table td {
  padding: 12px 16px;
  color: var(--change-on-surface);
}

.report-holdings-table td.right {
  text-align: right;
}

.report-holdings-table tbody tr {
  transition: background 0.15s;
}

.report-holdings-table tbody tr:hover {
  background: var(--change-surface-low);
}

.report-holdings-table .total-row {
  background: var(--change-surface-low);
  font-weight: 700;
}

/* ---- AI Analysis Panel (Dark Card) ---- */
.report-ai-panel {
  background: var(--change-on-surface);
  color: #fff;
  border-radius: 1.5rem;
  padding: var(--change-spacing-md);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
  position: relative;
  overflow: hidden;
}

.report-ai-panel::before {
  content: '';
  position: absolute;
  top: 0;
  right: 0;
  width: 128px;
  height: 128px;
  background: rgba(0, 89, 185, 0.2);
  filter: blur(60px);
  border-radius: 50%;
}

.report-ai-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: var(--change-spacing-md);
  position: relative;
  z-index: 1;
}

.report-ai-header .material-symbols-outlined {
  color: var(--change-primary);
}

.report-ai-header h2 {
  font-size: 18px;
  font-weight: 800;
  margin: 0;
}

.report-ai-section-label {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  margin-bottom: 8px;
}

.report-ai-section-label.primary { color: rgba(172, 199, 255, 1); }
.report-ai-section-label.warning { color: rgba(255, 179, 173, 1); }
.report-ai-section-label.success { color: #4ade80; }

.report-ai-box {
  padding: 14px;
  background: rgba(255, 255, 255, 0.05);
  border-radius: 1rem;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.1);
  margin-bottom: var(--change-spacing-sm);
  position: relative;
  z-index: 1;
}

.report-ai-box p {
  font-size: 14px;
  font-weight: 500;
  color: rgba(255, 255, 255, 0.85);
  margin: 0;
  line-height: 1.6;
}

.report-ai-cta {
  width: 100%;
  margin-top: var(--change-spacing-md);
  padding: 12px;
  background: var(--change-primary);
  color: #fff;
  border: none;
  border-radius: 12px;
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  transition: all 0.2s;
  position: relative;
  z-index: 1;
}

.report-ai-cta:hover {
  opacity: 0.9;
}

.report-ai-cta:active {
  transform: scale(0.98);
}

/* ---- Performance Card ---- */
.report-perf-card {
  background: var(--change-surface-lowest);
  border-radius: 1.5rem;
  padding: var(--change-spacing-md);
  box-shadow: var(--change-shadow-sm);
}

.report-perf-card h3 {
  font-size: 14px;
  font-weight: 700;
  color: var(--change-on-surface);
  margin: 0 0 var(--change-spacing-sm) 0;
}

.report-perf-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 0;
}

.report-perf-item .stock-icon-sm {
  width: 32px;
  height: 32px;
  border-radius: 8px;
  background: var(--change-surface-low);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 10px;
  font-weight: 700;
  color: var(--change-on-surface);
}

.report-perf-item .stock-info {
  display: flex;
  align-items: center;
  gap: 10px;
}

.report-perf-item .stock-info span {
  font-size: 14px;
  font-weight: 500;
  color: var(--change-on-surface-variant);
}

.report-perf-item .perf-value {
  font-size: 14px;
  font-weight: 700;
}

/* ---- Report List Cards ---- */
.report-list-card {
  background: var(--change-surface-lowest);
  border-radius: 1.5rem;
  padding: var(--change-spacing-md);
  box-shadow: var(--change-shadow-sm);
  cursor: pointer;
  transition: all 0.2s;
  margin-bottom: var(--change-spacing-sm);
}

.report-list-card:hover {
  box-shadow: var(--change-shadow-hover);
  transform: translateY(-2px);
}

.report-list-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.report-list-title {
  font-size: 16px;
  font-weight: 700;
  color: var(--change-on-surface);
  margin: 0;
}

.report-list-meta {
  font-size: 12px;
  color: var(--change-outline);
  margin-top: 4px;
  font-weight: 500;
}

.report-list-summary {
  margin: 8px 0 0 0;
  font-size: 14px;
  color: var(--change-on-surface-variant);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ---- Status/Type Badges ---- */
.report-badge {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  border-radius: 9999px;
  font-size: 11px;
  font-weight: 700;
  border: none;
}

.report-badge.completed {
  background: rgba(16, 185, 129, 0.1);
  color: #10B981;
}

.report-badge.failed {
  background: rgba(239, 68, 68, 0.1);
  color: var(--change-bull);
}

.report-badge.pending {
  background: rgba(245, 158, 11, 0.1);
  color: #F59E0B;
}

.report-badge.type {
  background: var(--change-surface-low);
  color: var(--change-on-surface-variant);
}

.report-badge.regime-bull {
  background: rgba(239, 68, 68, 0.1);
  color: var(--change-bull);
}

.report-badge.regime-bear {
  background: rgba(59, 130, 246, 0.1);
  color: var(--change-bear);
}

.report-badge.regime-neutral {
  background: rgba(245, 158, 11, 0.1);
  color: #F59E0B;
}

/* ---- Archive Table (Grid-based) ---- */
.report-archive {
  background: var(--change-surface-lowest);
  border-radius: 1.5rem;
  padding: var(--change-spacing-lg);
  box-shadow: var(--change-shadow-sm);
}

.report-archive h2 {
  font-size: 18px;
  font-weight: 700;
  color: var(--change-on-surface);
  margin: 0 0 var(--change-spacing-md) 0;
}

.report-archive-header {
  display: grid;
  grid-template-columns: 2fr 5fr 1fr;
  padding: 8px 16px;
  font-size: 11px;
  font-weight: 700;
  color: var(--change-outline);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.report-archive-row {
  display: grid;
  grid-template-columns: 2fr 5fr 1fr;
  padding: 14px 16px;
  align-items: center;
  border-radius: 1rem;
  transition: background 0.2s;
  cursor: pointer;
}

.report-archive-row:hover {
  background: var(--change-surface-low);
}

.report-archive-row .date {
  font-size: 14px;
  font-weight: 500;
  color: var(--change-on-surface-variant);
}

.report-archive-row .title {
  font-size: 14px;
  font-weight: 700;
  color: var(--change-on-surface);
}

.report-archive-row .actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}

.report-archive-row .actions button {
  background: none;
  border: none;
  color: var(--change-outline);
  cursor: pointer;
  padding: 4px;
  border-radius: 4px;
  transition: color 0.2s;
}

.report-archive-row .actions button:hover {
  color: var(--change-primary);
}

/* ---- Pagination ---- */
.reports-pagination {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 8px;
  margin-top: var(--change-spacing-md);
}

.reports-pagination button {
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  border: none;
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  transition: all 0.2s;
  background: var(--change-surface-low);
  color: var(--change-on-surface-variant);
}

.reports-pagination button:hover:not(:disabled) {
  background: var(--change-primary);
  color: #fff;
}

.reports-pagination button:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

.reports-pagination button.active {
  background: var(--change-primary);
  color: #fff;
}

.reports-pagination .page-info {
  font-size: 13px;
  font-weight: 600;
  color: var(--change-outline);
  padding: 0 8px;
}

/* ---- Back Button ---- */
.report-back-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  background: var(--change-surface-low);
  color: var(--change-primary);
  border: none;
  border-radius: 12px;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s;
  margin-bottom: var(--change-spacing-md);
}

.report-back-btn:hover {
  background: var(--change-surface-container);
}

/* ---- PDF Button ---- */
.report-pdf-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  background: var(--change-primary);
  color: #fff;
  border: none;
  border-radius: 12px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s;
}

.report-pdf-btn:hover {
  opacity: 0.9;
}

.report-pdf-btn:active {
  transform: scale(0.97);
}

/* ---- Notion Link ---- */
.report-notion-link {
  display: inline-flex;
  align-items: center;
  padding: 4px 10px;
  background: var(--change-on-surface);
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  border-radius: 8px;
  text-decoration: none;
  transition: opacity 0.2s;
}

.report-notion-link:hover {
  opacity: 0.8;
}

/* ---- Empty State ---- */
.reports-empty {
  text-align: center;
  padding: 60px 20px;
  background: var(--change-surface-lowest);
  border-radius: 1.5rem;
  box-shadow: var(--change-shadow-sm);
}

.reports-empty .material-symbols-outlined {
  font-size: 48px;
  color: var(--change-outline-variant);
  margin-bottom: 12px;
}

.reports-empty p {
  margin: 0;
}

.reports-empty .empty-title {
  font-size: 16px;
  font-weight: 600;
  color: var(--change-on-surface);
  margin-bottom: 4px;
}

.reports-empty .empty-desc {
  font-size: 14px;
  color: var(--change-outline);
}

/* ---- Loading State ---- */
.reports-loading {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 200px;
  color: var(--change-outline);
  font-size: 14px;
  font-weight: 500;
}

/* ---- Total Count ---- */
.reports-total {
  font-size: 13px;
  color: var(--change-outline);
  font-weight: 600;
  margin-bottom: var(--change-spacing-sm);
}

/* ===================================
   Print Styles
   =================================== */
@media print {
  nav, .sidebar, .no-print, button, .nav-container, [class*="sidebar"],
  [class*="Tabs"], [class*="header"], footer { display: none !important; }
  .reports-change { width: 100% !important; max-width: none !important; padding: 0 !important; margin: 0 !important; }
  .report-hero-card, .report-accordion, .report-perf-card, .report-ai-panel {
    box-shadow: none !important;
    page-break-inside: avoid;
    break-inside: avoid;
  }
  img { page-break-inside: avoid; max-width: 100% !important; }
  table { page-break-inside: avoid; }
  @page { margin: 15mm; }
  h2, h3 { page-break-after: avoid; }
}

/* ===================================
   Responsive
   =================================== */
@media (max-width: 768px) {
  .reports-change {
    padding: var(--change-spacing-sm);
  }

  .reports-page-title {
    font-size: 20px;
  }

  .reports-tabs {
    overflow-x: auto;
    width: 100%;
  }

  .reports-tab {
    padding: 6px 14px;
    font-size: 13px;
  }

  .report-hero-header {
    flex-direction: column;
    gap: 8px;
  }

  .report-hero-title {
    font-size: 20px;
  }

  .report-metrics {
    grid-template-columns: 1fr 1fr;
  }

  .report-metric-value {
    font-size: 16px;
  }

  .report-archive-header,
  .report-archive-row {
    grid-template-columns: 1fr 2fr 1fr;
  }
}

@media (max-width: 480px) {
  .reports-change {
    padding: 8px;
  }

  .report-metrics {
    grid-template-columns: 1fr;
  }
}

/* ===================================
   Dark Mode
   =================================== */
[data-theme="dark"] .report-hero-card,
[data-theme="dark"] .report-accordion,
[data-theme="dark"] .report-perf-card,
[data-theme="dark"] .report-archive,
[data-theme="dark"] .report-list-card,
[data-theme="dark"] .reports-empty {
  background: var(--change-surface-lowest);
}

[data-theme="dark"] .report-metric-card {
  background: var(--change-surface-low);
}

[data-theme="dark"] .report-markdown-body {
  background: var(--change-surface-low);
}

[data-theme="dark"] .report-chart-item {
  background: var(--change-surface-lowest);
}

[data-theme="dark"] .report-holdings-table th {
  background: var(--change-surface-low);
}

[data-theme="dark"] .report-holdings-table tbody tr:hover {
  background: var(--change-surface-low);
}

[data-theme="dark"] .report-ai-panel {
  background: var(--change-surface-lowest);
}

.verification-dashboard {
  padding: 20px;
  max-width: 1400px;
  margin: 0 auto;
}

.verification-dashboard h2 {
  font-size: 1.5rem;
  margin-bottom: 20px;
  color: #191F28;
  color: var(--text-primary, #191F28);
}

/* Summary Cards */
.verification-summary {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  grid-gap: 16px;
  gap: 16px;
  margin-bottom: 24px;
}

.summary-card {
  background: #FFFFFF;
  background: var(--bg-card, #FFFFFF);
  border-radius: 12px;
  padding: 20px;
  text-align: center;
  border: 1px solid #E5E8EB;
  border: 1px solid var(--border-color, #E5E8EB);
}

.summary-card .label {
  font-size: 0.8rem;
  color: #4E5968;
  color: var(--text-secondary, #4E5968);
  margin-bottom: 6px;
}

.summary-card .value {
  font-size: 1.8rem;
  font-weight: 700;
  color: #191F28;
  color: var(--text-primary, #191F28);
}

.summary-card .value.positive { color: #ef5350; }
.summary-card .value.negative { color: #42a5f5; }
.summary-card .value.accent { color: #66bb6a; }

/* Tab Navigation */
.verification-tabs {
  display: flex;
  gap: 8px;
  margin-bottom: 20px;
  border-bottom: 2px solid #E5E8EB;
  border-bottom: 2px solid var(--border-color, #E5E8EB);
  padding-bottom: 0;
}

.verification-tabs button {
  padding: 10px 20px;
  background: none;
  border: none;
  color: #4E5968;
  color: var(--text-secondary, #4E5968);
  cursor: pointer;
  font-size: 0.9rem;
  border-bottom: 3px solid transparent;
  transition: all 0.2s;
}

.verification-tabs button:hover {
  color: #191F28;
  color: var(--text-primary, #191F28);
}

.verification-tabs button.active {
  color: #42a5f5;
  border-bottom-color: #42a5f5;
}

/* Results Table */
.verification-table {
  width: 100%;
  border-collapse: collapse;
  background: #FFFFFF;
  background: var(--bg-card, #FFFFFF);
  border-radius: 12px;
  overflow: hidden;
}

.verification-table th {
  background: #F2F4F6;
  background: var(--bg-secondary, #F2F4F6);
  color: #4E5968;
  color: var(--text-secondary, #4E5968);
  font-weight: 600;
  font-size: 0.8rem;
  text-transform: uppercase;
  padding: 12px 16px;
  text-align: left;
  white-space: nowrap;
}

.verification-table td {
  padding: 12px 16px;
  border-bottom: 1px solid #E5E8EB;
  border-bottom: 1px solid var(--border-color, #E5E8EB);
  font-size: 0.85rem;
  color: #191F28;
  color: var(--text-primary, #191F28);
}

.verification-table tr:hover {
  background: rgba(66, 165, 245, 0.05);
}

/* Verdict Badge */
.verdict-badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 12px;
  font-size: 0.75rem;
  font-weight: 600;
}

.verdict-badge.correct {
  background: rgba(102, 187, 106, 0.15);
  color: #66bb6a;
}

.verdict-badge.wrong {
  background: rgba(239, 83, 80, 0.15);
  color: #ef5350;
}

.verdict-badge.neutral {
  background: rgba(255, 183, 77, 0.15);
  color: #ffb74d;
}

/* Change Percentage */
.change-pct {
  font-weight: 600;
  font-feature-settings: "tnum";
  font-variant-numeric: tabular-nums;
}

.change-pct.positive { color: #ef5350; }
.change-pct.negative { color: #42a5f5; }

/* Proposal Card */
.proposal-card {
  background: #FFFFFF;
  background: var(--bg-card, #FFFFFF);
  border-radius: 12px;
  padding: 20px;
  margin-bottom: 16px;
  border: 1px solid #E5E8EB;
  border: 1px solid var(--border-color, #E5E8EB);
}

.proposal-card .proposal-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 12px;
}

.proposal-card .proposal-title {
  font-weight: 600;
  font-size: 1rem;
  color: #191F28;
  color: var(--text-primary, #191F28);
}

.proposal-type-badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 12px;
  font-size: 0.7rem;
  font-weight: 600;
  margin-right: 8px;
}

.proposal-type-badge.prompt {
  background: rgba(66, 165, 245, 0.15);
  color: #42a5f5;
}

.proposal-type-badge.logic {
  background: rgba(171, 71, 188, 0.15);
  color: #ab47bc;
}

.proposal-type-badge.parameter {
  background: rgba(255, 183, 77, 0.15);
  color: #ffb74d;
}

.proposal-card .proposal-body {
  color: #4E5968;
  color: var(--text-secondary, #4E5968);
  font-size: 0.85rem;
  line-height: 1.5;
  margin-bottom: 12px;
}

.proposal-card .proposal-evidence {
  font-size: 0.8rem;
  color: #8B95A1;
  color: var(--text-muted, #8B95A1);
  background: #F2F4F6;
  background: var(--bg-secondary, #F2F4F6);
  padding: 8px 12px;
  border-radius: 6px;
  margin-bottom: 12px;
}

.proposal-card .proposal-content {
  background: #F2F4F6;
  background: var(--bg-secondary, #F2F4F6);
  padding: 12px;
  border-radius: 6px;
  font-family: monospace;
  font-size: 0.8rem;
  color: #66bb6a;
  margin-bottom: 16px;
  white-space: pre-wrap;
  max-height: 200px;
  overflow-y: auto;
}

.proposal-card .proposal-actions {
  display: flex;
  gap: 10px;
}

.proposal-card .btn-approve {
  padding: 8px 20px;
  background: #66bb6a;
  color: #fff;
  border: none;
  border-radius: 8px;
  cursor: pointer;
  font-weight: 600;
  font-size: 0.85rem;
  transition: background 0.2s;
}

.proposal-card .btn-approve:hover { background: #57a75b; }

.proposal-card .btn-reject {
  padding: 8px 20px;
  background: transparent;
  color: #ef5350;
  border: 1px solid #ef5350;
  border-radius: 8px;
  cursor: pointer;
  font-weight: 600;
  font-size: 0.85rem;
  transition: all 0.2s;
}

.proposal-card .btn-reject:hover {
  background: rgba(239, 83, 80, 0.1);
}

/* Trend Chart Placeholder */
.trend-chart-container {
  background: #FFFFFF;
  background: var(--bg-card, #FFFFFF);
  border-radius: 12px;
  padding: 20px;
  min-height: 300px;
  border: 1px solid #E5E8EB;
  border: 1px solid var(--border-color, #E5E8EB);
}

/* Opinion Stats Grid */
.opinion-stats-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  grid-gap: 12px;
  gap: 12px;
  margin-bottom: 20px;
}

.opinion-stat-card {
  background: #FFFFFF;
  background: var(--bg-card, #FFFFFF);
  border-radius: 10px;
  padding: 16px;
  border: 1px solid #E5E8EB;
  border: 1px solid var(--border-color, #E5E8EB);
}

.opinion-stat-card .opinion-name {
  font-weight: 600;
  font-size: 0.9rem;
  margin-bottom: 8px;
  color: #191F28;
  color: var(--text-primary, #191F28);
}

.opinion-stat-card .opinion-bar {
  display: flex;
  height: 8px;
  border-radius: 4px;
  overflow: hidden;
  background: #F2F4F6;
  background: var(--bg-secondary, #F2F4F6);
  margin-bottom: 6px;
}

.opinion-stat-card .bar-correct { background: #66bb6a; }
.opinion-stat-card .bar-wrong { background: #ef5350; }
.opinion-stat-card .bar-neutral { background: #ffb74d; }

.opinion-stat-card .opinion-detail {
  font-size: 0.75rem;
  color: #4E5968;
  color: var(--text-secondary, #4E5968);
}

/* Analysis Detail Row */
.analysis-detail-row td {
  padding: 12px 20px !important;
  background: #F2F4F6;
  background: var(--bg-secondary, #F2F4F6);
  border-bottom: 2px solid #E5E8EB;
  border-bottom: 2px solid var(--border-color, #E5E8EB);
}

.failure-analysis {
  font-size: 0.85rem;
  color: #ef5350;
  margin-bottom: 8px;
  line-height: 1.5;
}

.improvement-suggestion {
  font-size: 0.85rem;
  color: #42a5f5;
  line-height: 1.5;
}

.verification-table tbody tr.clickable {
  cursor: pointer;
}

.verification-table tbody tr.clickable:hover {
  background: #F8F9FA;
  background: var(--bg-hover, #F8F9FA);
}

.verdict-badge.has-analysis::after {
  content: ' \25BC';
  font-size: 0.6rem;
}

/* Loading / Empty */
.verification-loading,
.verification-empty {
  text-align: center;
  padding: 60px 20px;
  color: #4E5968;
  color: var(--text-secondary, #4E5968);
}

/* Filter */
.filter-row {
  display: flex;
  gap: 10px;
  margin-bottom: 16px;
  align-items: center;
}

.filter-row select {
  padding: 8px 12px;
  background: #FFFFFF;
  background: var(--bg-card, #FFFFFF);
  color: #191F28;
  color: var(--text-primary, #191F28);
  border: 1px solid #E5E8EB;
  border: 1px solid var(--border-color, #E5E8EB);
  border-radius: 8px;
  font-size: 0.85rem;
}

/* Status Badge */
.status-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 10px;
  font-size: 0.7rem;
  font-weight: 600;
}

.status-badge.pending { background: rgba(255, 183, 77, 0.15); color: #ffb74d; }
.status-badge.approved { background: rgba(102, 187, 106, 0.15); color: #66bb6a; }
.status-badge.rejected { background: rgba(239, 83, 80, 0.15); color: #ef5350; }
.status-badge.applied { background: rgba(66, 165, 245, 0.15); color: #42a5f5; }

/* ConsensusPage - 컨센서스 요약 페이지 */

.consensus-page {
  padding: 24px;
  max-width: 1400px;
  margin: 0 auto;
}

.consensus-header {
  margin-bottom: 24px;
}

.consensus-header h2 {
  font-size: 22px;
  font-weight: 700;
  color: var(--change-text-primary);
  margin: 0 0 8px 0;
}

.consensus-meta {
  font-size: 13px;
  color: var(--change-gray-600);
}

.consensus-meta span {
  margin-right: 16px;
}

/* Controls */
.consensus-controls {
  display: flex;
  gap: 12px;
  margin-bottom: 20px;
  flex-wrap: wrap;
  align-items: center;
}

.consensus-search {
  flex: 1 1;
  min-width: 200px;
  max-width: 320px;
  padding: 10px 14px;
  border: 1px solid var(--change-gray-200);
  border-radius: 10px;
  font-size: 14px;
  background: var(--change-card-bg);
  color: var(--change-text);
  outline: none;
  transition: border-color 0.2s;
}

.consensus-search:focus {
  border-color: var(--change-primary);
}

.consensus-sort-select {
  padding: 10px 14px;
  border: 1px solid var(--change-gray-200);
  border-radius: 10px;
  font-size: 14px;
  background: var(--change-card-bg);
  color: var(--change-text);
  cursor: pointer;
  outline: none;
}

/* Autocomplete */
.consensus-autocomplete {
  position: relative;
  flex: 1 1;
  min-width: 200px;
  max-width: 320px;
}

.consensus-autocomplete .consensus-search {
  width: 100%;
  max-width: none;
}

.consensus-autocomplete-dropdown {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 100;
  background: #fff;
  background: var(--change-card-bg, #fff);
  border: 1px solid var(--change-gray-200);
  border-radius: 0 0 10px 10px;
  max-height: 240px;
  overflow-y: auto;
  list-style: none;
  margin: 0;
  padding: 0;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

.consensus-autocomplete-dropdown li {
  display: flex;
  justify-content: space-between;
  padding: 10px 14px;
  cursor: pointer;
  font-size: 14px;
}

.consensus-autocomplete-dropdown li:hover {
  background: #f5f5f5;
  background: var(--change-gray-50, #f5f5f5);
}

.consensus-autocomplete-dropdown .suggest-name {
  font-weight: 500;
}

.consensus-autocomplete-dropdown .suggest-code {
  color: var(--change-gray-600);
  font-size: 12px;
}

/* Accordion List */
.consensus-list-wrap {
  background: var(--change-card-bg);
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 4px 12px rgba(0,0,0,0.03);
}

.toss-list-item.expanded {
  background-color: var(--toss-grey-50);
}

.consensus-accordion-detail {
  box-shadow: inset 0 2px 4px rgba(0,0,0,0.02);
}

@keyframes slideDown {
  from { opacity: 0; transform: translateY(-4px); }
  to { opacity: 1; transform: translateY(0); }
}

/* Growth badge */
.growth-positive {
  color: var(--change-positive);
  font-weight: 700;
}

.growth-negative {
  color: var(--change-negative);
  font-weight: 700;
}

.growth-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 6px;
  font-size: 12px;
  font-weight: 700;
}

.growth-badge.positive {
  background: rgba(240, 68, 82, 0.08);
  color: var(--change-positive);
}

.growth-badge.negative {
  background: rgba(18, 115, 228, 0.08);
  color: var(--change-negative);
}



.consensus-detail-card {
  padding: 20px 24px;
  background: var(--change-gray-50);
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

[data-theme="dark"] .consensus-detail-card {
  background: #1e2530;
}

.detail-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 14px;
  flex-wrap: wrap;
  gap: 8px;
}

.consensus-detail-card h4 {
  margin: 0;
  font-size: 15px;
  font-weight: 700;
  color: var(--change-text-primary);
}

.detail-tabs {
  display: flex;
  gap: 4px;
  background: var(--change-gray-100);
  border-radius: 8px;
  padding: 3px;
}

[data-theme="dark"] .detail-tabs {
  background: #2a3040;
}

.detail-tab {
  padding: 5px 16px;
  border: none;
  border-radius: 6px;
  background: transparent;
  color: var(--change-text-secondary);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s;
}

.detail-tab:hover {
  color: var(--change-text-primary);
}

.detail-tab.active {
  background: var(--change-card-bg);
  color: var(--change-primary);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}

[data-theme="dark"] .detail-tab.active {
  background: #1e2530;
}

.detail-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}

.detail-table th {
  background: var(--change-gray-100);
  color: var(--change-text-secondary);
  padding: 8px 12px;
  text-align: right;
  font-weight: 600;
  font-size: 12px;
  white-space: nowrap;
}

[data-theme="dark"] .detail-table th {
  background: #252b35;
}

.detail-table th:first-child {
  text-align: left;
  border-radius: 6px 0 0 6px;
}

.detail-table th:last-child {
  border-radius: 0 6px 6px 0;
}

.detail-table td {
  padding: 8px 12px;
  text-align: right;
  border-bottom: 1px solid var(--change-gray-100);
  color: var(--change-text);
}

.detail-table td:first-child {
  text-align: left;
  font-weight: 600;
}

.detail-table tr.estimate-row {
  background: rgba(255, 193, 7, 0.06);
}

[data-theme="dark"] .detail-table tr.estimate-row {
  background: rgba(255, 193, 7, 0.08);
}

.estimate-tag {
  display: inline-block;
  font-size: 10px;
  font-weight: 700;
  color: #f59e0b;
  background: rgba(245, 158, 11, 0.12);
  padding: 1px 5px;
  border-radius: 3px;
  margin-left: 4px;
  vertical-align: middle;
}

/* Pagination */
.consensus-pagination {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 12px;
  margin-top: 20px;
  font-size: 14px;
  color: var(--change-text-secondary);
}

.consensus-pagination button {
  padding: 8px 18px;
  border: 1px solid var(--change-gray-200);
  border-radius: 8px;
  background: var(--change-card-bg);
  color: var(--change-text);
  cursor: pointer;
  font-size: 13px;
  transition: all 0.15s;
}

.consensus-pagination button:hover:not(:disabled) {
  border-color: var(--change-primary);
  color: var(--change-primary);
}

.consensus-pagination button:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

/* Loading / Empty */
.consensus-loading,
.consensus-empty {
  text-align: center;
  padding: 60px 20px;
  color: var(--change-gray-600);
  font-size: 15px;
}

.consensus-loading .spinner {
  display: inline-block;
  width: 28px;
  height: 28px;
  border: 3px solid var(--change-gray-200);
  border-top-color: var(--change-primary);
  border-radius: 50%;
  animation: spin 0.7s linear infinite;
  margin-bottom: 12px;
}

@keyframes spin {
  to { transform: rotate(360deg); }
}

/* Error */
.consensus-error {
  text-align: center;
  padding: 40px 20px;
  color: var(--change-positive);
}

.consensus-error button {
  margin-top: 12px;
  padding: 8px 20px;
  border: 1px solid var(--change-positive);
  border-radius: 8px;
  background: transparent;
  color: var(--change-positive);
  cursor: pointer;
}

/* Streak badge */
.streak-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 6px;
  font-size: 12px;
  font-weight: 700;
  color: var(--change-gray-600);
  background: var(--change-gray-100);
}

.streak-badge.warm {
  color: #f59e0b;
  background: rgba(245, 158, 11, 0.1);
}

.streak-badge.hot {
  color: var(--change-positive);
  background: rgba(240, 68, 82, 0.08);
}

/* Detail table scroll hint */
.detail-table {
  min-width: 600px;
}

/* Mobile responsive */
@media (max-width: 768px) {
  .consensus-page {
    padding: 12px;
  }

  .consensus-header h2 {
    font-size: 18px;
  }

  .consensus-controls {
    gap: 8px;
  }

  .consensus-search {
    min-width: 0;
    max-width: none;
    flex: 1 1 100%;
  }

  .consensus-detail-card h4 {
    font-size: 13px;
  }

  .detail-table {
    font-size: 12px;
  }

  .detail-table th,
  .detail-table td {
    padding: 6px 8px;
  }
}

@media (max-width: 480px) {
  .consensus-page {
    padding: 8px;
  }

  .consensus-header h2 {
    font-size: 16px;
  }
}

/* ── OrderbookPanel ── */

.orderbook-panel {
  display: flex;
  flex-direction: column;
  height: 100%;
  font-size: 0.82rem;
  font-family: 'Consolas', 'Monaco', monospace;
}

.orderbook-header {
  display: flex;
  justify-content: space-between;
  padding: 6px 8px;
  font-weight: 600;
  color: #8b949e;
  color: var(--text-secondary, #8b949e);
  border-bottom: 1px solid #30363d;
  border-bottom: 1px solid var(--border-color, #30363d);
  font-size: 0.75rem;
}

.orderbook-body {
  flex: 1 1;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
}

.orderbook-empty {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
  color: #8b949e;
  color: var(--text-secondary, #8b949e);
}

/* ── Row ── */
.orderbook-row {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  padding: 2px 4px;
  min-height: 24px;
}

.ob-price {
  padding: 0 8px;
  font-weight: 600;
  text-align: center;
  white-space: nowrap;
  font-size: 0.8rem;
}

.ask-price {
  color: #4488ff;
}

.bid-price {
  color: #ff4444;
}

/* ── Volume bars ── */
.ob-vol-bar-container {
  position: relative;
  height: 20px;
  overflow: hidden;
}

.ask-row .ob-vol-bar-container:first-child {
  direction: rtl;
}

.ob-vol-bar {
  position: absolute;
  top: 0;
  height: 100%;
  border-radius: 2px;
  transition: width 0.3s ease;
}

.ask-bar {
  background: rgba(68, 136, 255, 0.2);
  box-shadow: inset 0 0 8px rgba(68, 136, 255, 0.15);
  right: 0;
}

.bid-bar {
  background: rgba(255, 68, 68, 0.2);
  box-shadow: inset 0 0 8px rgba(255, 68, 68, 0.15);
  left: 0;
}

/* Volume spike flash */
@keyframes neon-bar-flash {
  0% { opacity: 1; }
  50% { opacity: 0.6; }
  100% { opacity: 1; }
}

.ask-bar.vol-spike,
.bid-bar.vol-spike {
  animation: neon-bar-flash 0.4s ease-in-out 2;
}

.ob-vol-text {
  position: relative;
  z-index: 1;
  font-size: 0.75rem;
  color: #8b949e;
  color: var(--text-secondary, #8b949e);
  padding: 0 4px;
  line-height: 20px;
}

.ask-row .ob-vol-text {
  text-align: right;
}

/* ── Divider ── */
.orderbook-divider {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 4px 0;
  border-top: 1px solid #30363d;
  border-top: 1px solid var(--border-color, #30363d);
  border-bottom: 1px solid #30363d;
  border-bottom: 1px solid var(--border-color, #30363d);
  background: rgba(255, 255, 255, 0.03);
}

.ob-current-price {
  font-size: 1rem;
  font-weight: 800;
  color: #e6edf3;
  color: var(--text-primary, #e6edf3);
}

/* ── Summary ── */
.orderbook-summary {
  display: flex;
  justify-content: space-between;
  padding: 6px 8px;
  border-top: 1px solid #30363d;
  border-top: 1px solid var(--border-color, #30363d);
  font-size: 0.75rem;
}

.ask-total {
  color: #4488ff;
}

.bid-total {
  color: #ff4444;
}

/* ── Mobile ── */
@media (max-width: 768px) {
  .orderbook-panel {
    font-size: 0.78rem;
  }

  .orderbook-row {
    min-height: 22px;
    padding: 1px 4px;
  }

  .ob-price {
    font-size: 0.75rem;
    padding: 0 4px;
  }

  .ob-vol-text {
    font-size: 0.7rem;
  }
}

/* ── TickChart ── */

.tick-chart-container {
  position: relative;
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
}

.tick-chart-label {
  position: absolute;
  top: 8px;
  left: 12px;
  z-index: 2;
  font-size: 0.8rem;
  color: #8b949e;
  color: var(--text-secondary, #8b949e);
  pointer-events: none;
}

.tick-chart-canvas {
  flex: 1 1;
  width: 100%;
  min-height: 200px;
}

.tick-chart-empty {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  color: #8b949e;
  color: var(--text-secondary, #8b949e);
  font-size: 0.9rem;
}

/* ── Mobile ── */
@media (max-width: 768px) {
  .tick-chart-canvas {
    min-height: 160px;
  }

  .tick-chart-label {
    font-size: 0.75rem;
  }
}

/* ===== Rhythm Order Flow ===== */
.rhythm-container {
  position: relative;
  width: 100%;
  height: 100%;
  min-height: 300px;
  border-radius: 12px;
  overflow: hidden;
  background: #0a0a1a;
}

.rhythm-canvas {
  width: 100%;
  height: 100%;
  display: block;
}

/* Neon Pulse (매수 우세) */
.neon-pulse {
  animation: neonGlow 1s ease-in-out infinite alternate;
}

@keyframes neonGlow {
  from {
    box-shadow: inset 0 0 20px rgba(102, 126, 234, 0.1);
  }
  to {
    box-shadow: inset 0 0 40px rgba(102, 126, 234, 0.3),
                0 0 20px rgba(102, 126, 234, 0.2);
  }
}

/* Grade Popup */
.grade-popup {
  position: absolute;
  top: 40%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 2rem;
  font-weight: 900;
  pointer-events: none;
  animation: gradePopup 0.6s ease-out forwards;
  text-shadow: 0 0 20px currentColor;
}

@keyframes gradePopup {
  0% {
    opacity: 1;
    transform: translate(-50%, -50%) scale(0.5);
  }
  30% {
    transform: translate(-50%, -50%) scale(1.3);
  }
  100% {
    opacity: 0;
    transform: translate(-50%, -70%) scale(1);
  }
}

.grade-perfect { color: #ffd700; }
.grade-great { color: #22c55e; }
.grade-good { color: #3b82f6; }
.grade-miss { color: #ef4444; }

.grade-combo {
  font-size: 1rem;
  margin-left: 8px;
  color: #f97316;
}

/* Hint */
.rhythm-hint {
  position: absolute;
  bottom: 8px;
  left: 50%;
  transform: translateX(-50%);
  font-size: 0.7rem;
  color: rgba(255, 255, 255, 0.3);
  white-space: nowrap;
}

/* ── Arcade Dashboard — Stitch Design System ── */

/* ══════════════════════════════════════════════════
   Landing / Search Page (Stitch Arcade)
   ══════════════════════════════════════════════════ */

.arcade-landing {
  padding: var(--change-spacing-xl) var(--change-spacing-lg) var(--change-spacing-lg);
  max-width: 1280px;
  margin: 0 auto;
}

/* Hero Banner */
.arcade-hero {
  background: linear-gradient(135deg, var(--change-primary) 0%, #8b5cf6 100%);
  border-radius: 1.5rem;
  padding: var(--change-spacing-xl) var(--change-spacing-lg);
  margin-bottom: var(--change-spacing-lg);
  position: relative;
  overflow: hidden;
  box-shadow: 0 8px 32px rgba(49, 130, 246, 0.2);
}

.arcade-hero-content {
  position: relative;
  z-index: 10;
}

.arcade-hero-title {
  font-size: 2.25rem;
  font-weight: 900;
  color: #fff;
  margin: 0 0 8px;
  display: flex;
  align-items: center;
  gap: 12px;
}

.arcade-hero-icon {
  font-size: 2.25rem;
}

.arcade-hero-desc {
  color: rgba(255, 255, 255, 0.8);
  font-size: 1.1rem;
  font-weight: 500;
  margin: 0 0 var(--change-spacing-md);
}

.arcade-hero-search {
  position: relative;
  max-width: 420px;
}

.arcade-hero-search .arcade-search-icon {
  position: absolute;
  left: 16px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--change-outline);
  font-size: 1.2rem;
  pointer-events: none;
}

.arcade-hero-search .arcade-search-input {
  width: 100%;
  padding-left: 48px;
  background: rgba(255, 255, 255, 0.95);
  color: var(--change-on-surface);
  border-radius: 1rem;
  border: none;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
  max-width: 100%;
}

.arcade-hero-search .arcade-search-input:focus {
  box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.4), 0 4px 16px rgba(0, 0, 0, 0.15);
}

.arcade-hero .arcade-search-results {
  max-width: 420px;
  margin-top: 8px;
}

.arcade-hero .arcade-search-item {
  background: rgba(255, 255, 255, 0.95);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.arcade-hero .arcade-search-item:hover {
  background: #fff;
}

/* Floating badge */
.arcade-hero-badge {
  position: absolute;
  top: var(--change-spacing-lg);
  right: var(--change-spacing-lg);
  background: rgba(255, 255, 255, 0.85);
  -webkit-backdrop-filter: blur(16px);
          backdrop-filter: blur(16px);
  padding: 14px 18px;
  border-radius: 1rem;
  display: flex;
  align-items: center;
  gap: 12px;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
  z-index: 10;
}

.arcade-badge-icon {
  font-size: 1.5rem;
  color: #eab308;
}

.arcade-badge-label {
  font-size: 10px;
  font-weight: 700;
  color: var(--change-outline);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin: 0;
}

.arcade-badge-rank {
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--change-on-surface);
  margin: 2px 0 0;
}

.arcade-hero-deco-1 {
  position: absolute;
  bottom: -40px;
  right: -40px;
  width: 200px;
  height: 200px;
  background: rgba(255, 255, 255, 0.1);
  border-radius: 50%;
  filter: blur(40px);
}

.arcade-hero-deco-2 {
  position: absolute;
  top: -20px;
  left: 50%;
  width: 150px;
  height: 150px;
  background: rgba(168, 85, 247, 0.2);
  border-radius: 50%;
  filter: blur(40px);
}

/* Content Grid */
.arcade-content-grid {
  display: flex;
  gap: var(--change-spacing-lg);
}

.arcade-games-section {
  flex: 1 1;
  min-width: 0;
}

.arcade-section-title {
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--change-on-surface);
  margin: 0 0 var(--change-spacing-md);
}

.arcade-games-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  grid-gap: var(--change-spacing-md);
  gap: var(--change-spacing-md);
}

/* Game Cards */
.arcade-game-card {
  background: var(--change-surface-lowest);
  padding: var(--change-spacing-md);
  border-radius: 1.5rem;
  transition: all 0.3s ease;
  box-shadow: var(--change-shadow-sm);
}

.arcade-game-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--change-shadow-xl);
}

.arcade-game-icon {
  width: 48px;
  height: 48px;
  border-radius: 1rem;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: var(--change-spacing-sm);
  transition: transform 0.3s ease;
}

.arcade-game-card:hover .arcade-game-icon {
  transform: scale(1.1);
}

.arcade-game-icon .material-symbols-outlined {
  font-size: 1.5rem;
}

.arcade-game-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 8px;
}

.arcade-game-title {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--change-on-surface);
  margin: 0;
}

.arcade-game-badge {
  font-size: 10px;
  font-weight: 700;
  background: var(--change-surface-container);
  color: var(--change-outline);
  padding: 3px 10px;
  border-radius: 9999px;
  white-space: nowrap;
}

.arcade-game-badge--active {
  background: rgba(34, 197, 94, 0.9);
  color: #fff;
}

.arcade-game-badge--new {
  background: var(--change-primary);
  color: #fff;
}

.arcade-game-desc {
  font-size: 0.85rem;
  color: var(--change-on-surface-variant);
  line-height: 1.6;
  margin: 0 0 var(--change-spacing-md);
}

.arcade-game-btn {
  width: 100%;
  padding: 12px;
  background: var(--change-primary);
  color: #fff;
  border: none;
  border-radius: 12px;
  font-weight: 700;
  font-size: 0.9rem;
  cursor: pointer;
  transition: all 0.2s ease;
}

.arcade-game-btn:hover {
  opacity: 0.9;
}

.arcade-game-btn:active {
  transform: scale(0.97);
}

.arcade-game-btn--outline {
  background: transparent;
  color: var(--change-primary);
  box-shadow: inset 0 0 0 2px var(--change-primary);
}

.arcade-game-btn--outline:hover {
  background: rgba(49, 130, 246, 0.05);
  opacity: 1;
}

/* Side Panel */
.arcade-side-panel {
  width: 320px;
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  gap: var(--change-spacing-md);
}

.arcade-mission-card {
  background: var(--change-surface-lowest);
  padding: var(--change-spacing-md);
  border-radius: 1.5rem;
  box-shadow: var(--change-shadow-sm);
}

.arcade-mission-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--change-spacing-md);
}

.arcade-mission-title {
  font-weight: 700;
  color: var(--change-on-surface);
  margin: 0;
  font-size: 1rem;
}

.arcade-mission-body {
  margin-bottom: var(--change-spacing-sm);
}

.arcade-mission-name {
  font-size: 0.9rem;
  font-weight: 700;
  color: var(--change-on-surface);
  margin: 0 0 8px;
}

.arcade-mission-progress-info {
  display: flex;
  justify-content: space-between;
  font-size: 0.75rem;
  font-weight: 700;
  margin-bottom: 8px;
}

.arcade-mission-progress-bar {
  height: 8px;
  background: var(--change-surface-container);
  border-radius: 9999px;
  overflow: hidden;
}

.arcade-mission-progress-fill {
  height: 100%;
  background: linear-gradient(135deg, var(--change-primary) 0%, #8b5cf6 100%);
  border-radius: 9999px;
  transition: width 0.5s ease;
}

.arcade-mission-reward {
  display: flex;
  gap: 12px;
  align-items: center;
  padding: 12px;
  background: rgba(234, 179, 8, 0.08);
  border-radius: 1rem;
  margin-top: var(--change-spacing-sm);
}

.arcade-reward-label {
  font-size: 10px;
  font-weight: 700;
  color: #a16207;
  text-transform: uppercase;
  margin: 0;
}

.arcade-reward-text {
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--change-on-surface);
  margin: 2px 0 0;
}

.arcade-tip-card {
  background: rgba(49, 130, 246, 0.05);
  padding: var(--change-spacing-md);
  border-radius: 1.5rem;
  box-shadow: inset 0 0 0 1px rgba(49, 130, 246, 0.1);
}

.arcade-tip-title {
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--change-primary);
  margin: 0 0 8px;
}

.arcade-tip-text {
  font-size: 0.8rem;
  color: var(--change-on-surface-variant);
  line-height: 1.6;
  font-style: italic;
  margin: 0;
}

.arcade-shortcuts-card {
  background: var(--change-surface-lowest);
  padding: var(--change-spacing-sm);
  border-radius: 1rem;
  box-shadow: var(--change-shadow-sm);
}

.arcade-shortcuts-title {
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--change-on-surface);
  margin: 0 0 8px;
}

.arcade-shortcuts-list {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  font-size: 0.75rem;
  color: var(--change-on-surface-variant);
}

.arcade-shortcuts-list kbd {
  display: inline-block;
  padding: 2px 8px;
  background: var(--change-surface-container);
  border-radius: 6px;
  font-size: 0.7rem;
  font-weight: 600;
  margin-right: 2px;
  color: var(--change-on-surface);
}

/* Responsive landing */
@media (max-width: 1024px) {
  .arcade-content-grid {
    flex-direction: column;
  }

  .arcade-side-panel {
    width: 100%;
    flex-direction: row;
    flex-wrap: wrap;
  }

  .arcade-mission-card,
  .arcade-tip-card,
  .arcade-shortcuts-card {
    flex: 1 1;
    min-width: 250px;
  }

  .arcade-hero-badge {
    display: none;
  }
}

@media (max-width: 768px) {
  .arcade-landing {
    padding: var(--change-spacing-md) var(--change-spacing-sm);
  }

  .arcade-hero {
    padding: var(--change-spacing-lg) var(--change-spacing-md);
  }

  .arcade-hero-title {
    font-size: 1.5rem;
  }

  .arcade-games-grid {
    grid-template-columns: 1fr;
  }

  .arcade-side-panel {
    flex-direction: column;
  }

  .arcade-mission-card,
  .arcade-tip-card,
  .arcade-shortcuts-card {
    min-width: auto;
  }
}

/* ══════════════════════════════════════════════════
   Trading View (active stock selected)
   ══════════════════════════════════════════════════ */

.arcade-container {
  display: flex;
  flex-direction: column;
  height: calc(100vh - 120px);
  background: var(--change-surface-lowest);
  color: var(--change-on-surface);
  overflow: hidden;
  position: relative;
}

/* ── Mode Toggle ── */
.arcade-mode-toggle {
  display: flex;
  gap: 4px;
  padding: 4px;
  background: var(--change-surface-low);
  border-radius: 12px;
  margin: 8px 16px;
  width: -webkit-fit-content;
  width: fit-content;
  z-index: 2;
}

.mode-btn {
  padding: 6px 20px;
  border: none;
  border-radius: 8px;
  background: transparent;
  color: var(--change-on-surface-variant);
  font-size: 0.8rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s ease;
}

.mode-btn.active {
  background: var(--change-primary);
  color: #fff;
  box-shadow: var(--change-shadow-sm);
}

.mode-btn:hover:not(.active) {
  background: var(--change-surface-container);
}

/* ── Search Panel ── */
.arcade-search-panel {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  height: 100%;
  gap: 16px;
  padding: var(--change-spacing-lg);
}

.arcade-title {
  font-size: 2.5rem;
  font-weight: 900;
  background: linear-gradient(135deg, var(--change-primary) 0%, #8b5cf6 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  margin: 0;
}

.arcade-subtitle {
  color: var(--change-on-surface-variant);
  font-size: 1rem;
  margin: 0;
  font-weight: 500;
}

.arcade-search-input {
  width: 100%;
  max-width: 420px;
  padding: 14px 20px;
  border-radius: 1rem;
  border: none;
  background: var(--change-surface-low);
  color: var(--change-on-surface);
  font-size: 1rem;
  outline: none;
  transition: box-shadow 0.2s ease;
  box-shadow: var(--change-shadow-sm);
}

.arcade-search-input:focus {
  box-shadow: 0 0 0 2px var(--change-primary), var(--change-shadow-md);
}

.arcade-search-results {
  width: 100%;
  max-width: 420px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  max-height: 300px;
  overflow-y: auto;
}

.arcade-search-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  border-radius: 12px;
  border: none;
  background: var(--change-surface-lowest);
  color: var(--change-on-surface);
  cursor: pointer;
  text-align: left;
  transition: background 0.15s ease;
  box-shadow: var(--change-shadow-sm);
}

.arcade-search-item:hover {
  background: var(--change-surface-low);
  box-shadow: var(--change-shadow-md);
}

.search-item-name {
  flex: 1 1;
  font-weight: 600;
  color: var(--change-on-surface);
}

.search-item-code {
  color: var(--change-on-surface-variant);
  font-size: 0.85rem;
  font-family: monospace;
}

.search-item-market {
  font-size: 0.75rem;
  padding: 2px 8px;
  border-radius: 9999px;
  background: var(--change-surface-container);
  color: var(--change-on-surface-variant);
  font-weight: 600;
}

.arcade-shortcuts-info {
  margin-top: var(--change-spacing-sm);
  color: var(--change-on-surface-variant);
  font-size: 0.85rem;
}

.arcade-shortcuts-info kbd {
  display: inline-block;
  padding: 2px 8px;
  background: var(--change-surface-container);
  border-radius: 6px;
  font-size: 0.8rem;
  margin: 0 2px;
  font-weight: 600;
  color: var(--change-on-surface);
}

/* ── Header (Glassmorphism) ── */
.arcade-header {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 10px 20px;
  background: var(--change-header-bg);
  backdrop-filter: var(--change-header-blur);
  -webkit-backdrop-filter: var(--change-header-blur);
  box-shadow: var(--change-shadow-sm);
  flex-shrink: 0;
  flex-wrap: wrap;
  position: -webkit-sticky;
  position: sticky;
  top: 0;
  z-index: 40;
}

.arcade-back-btn {
  padding: 6px 14px;
  border-radius: 10px;
  border: none;
  background: var(--change-surface-low);
  color: var(--change-on-surface-variant);
  cursor: pointer;
  font-size: 0.85rem;
  white-space: nowrap;
  font-weight: 500;
  transition: all 0.2s ease;
}

.arcade-back-btn:hover {
  background: var(--change-surface-container);
  color: var(--change-primary);
}

.arcade-stock-info {
  display: flex;
  align-items: baseline;
  gap: 8px;
}

.arcade-stock-name {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--change-on-surface);
}

.arcade-stock-code {
  font-size: 0.85rem;
  color: var(--change-on-surface-variant);
  font-family: monospace;
}

.arcade-price {
  margin-left: auto;
  display: flex;
  align-items: baseline;
  gap: 8px;
}

.arcade-current-price {
  font-size: 1.3rem;
  font-weight: 800;
  font-feature-settings: "tnum";
  font-variant-numeric: tabular-nums;
}

.arcade-price-change {
  font-size: 0.9rem;
  font-weight: 600;
  font-feature-settings: "tnum";
  font-variant-numeric: tabular-nums;
}

.price-up .arcade-current-price,
.price-up .arcade-price-change {
  color: var(--change-bull);
}

.price-down .arcade-current-price,
.price-down .arcade-price-change {
  color: var(--change-bear);
}

/* ── Main layout ── */
.arcade-main {
  flex: 1 1;
  display: flex;
  gap: 0;
  overflow: hidden;
  min-height: 0;
}

.arcade-chart-section {
  flex: 1 1;
  min-width: 0;
  box-shadow: inset -1px 0 0 0 var(--change-outline-variant);
}

.arcade-orderbook-section {
  width: 280px;
  flex-shrink: 0;
  overflow-y: auto;
  background: var(--change-surface-lowest);
}

/* ── Order panel ── */
.arcade-order-panel {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 12px 20px;
  background: var(--change-surface-lowest);
  box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.04);
  flex-shrink: 0;
  flex-wrap: wrap;
  position: relative;
  z-index: 2;
}

/* Shortcut hint bar */
.arcade-shortcut-bar {
  width: 100%;
  display: flex;
  justify-content: center;
  gap: 16px;
  padding: 6px 0 0;
  font-size: 0.75rem;
  color: var(--change-outline);
}

.arcade-shortcut-bar kbd {
  display: inline-block;
  padding: 1px 6px;
  border-radius: 4px;
  background: var(--change-surface-container);
  font-size: 0.7rem;
  margin: 0 2px;
  font-weight: 600;
}

.arcade-position-info {
  font-size: 0.85rem;
  color: var(--change-on-surface-variant);
  min-width: 120px;
  font-weight: 500;
}

.arcade-quantity-control {
  display: flex;
  align-items: center;
  gap: 0;
  border-radius: 12px;
  overflow: hidden;
  box-shadow: var(--change-shadow-sm);
}

.arcade-quantity-control button {
  width: 36px;
  height: 36px;
  border: none;
  background: var(--change-surface-container);
  color: var(--change-on-surface);
  cursor: pointer;
  font-size: 1.1rem;
  font-weight: 700;
  transition: background 0.15s ease;
}

.arcade-quantity-control button:hover {
  background: var(--change-surface-high);
}

.arcade-quantity-control input {
  width: 60px;
  height: 36px;
  border: none;
  box-shadow: inset 1px 0 0 0 var(--change-outline-variant), inset -1px 0 0 0 var(--change-outline-variant);
  background: var(--change-surface-lowest);
  color: var(--change-on-surface);
  text-align: center;
  font-size: 1rem;
  font-weight: 600;
}

.arcade-order-buttons {
  display: flex;
  gap: 8px;
  margin-left: auto;
}

.arcade-buy-btn,
.arcade-sell-btn {
  padding: 10px 28px;
  border: none;
  border-radius: 12px;
  font-size: 1rem;
  font-weight: 700;
  cursor: pointer;
  min-width: 110px;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
  position: relative;
}

.arcade-buy-btn {
  background: var(--change-bull);
  color: #fff;
  box-shadow: 0 4px 12px rgba(239, 68, 68, 0.25);
}

.arcade-sell-btn {
  background: var(--change-bear);
  color: #fff;
  box-shadow: 0 4px 12px rgba(59, 130, 246, 0.25);
}

.arcade-buy-btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(239, 68, 68, 0.35);
}

.arcade-sell-btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(59, 130, 246, 0.35);
}

.arcade-buy-btn:active {
  transform: translateY(1px);
  box-shadow: 0 2px 4px rgba(239, 68, 68, 0.2);
}

.arcade-sell-btn:active {
  transform: translateY(1px);
  box-shadow: 0 2px 4px rgba(59, 130, 246, 0.2);
}

.arcade-buy-btn:disabled,
.arcade-sell-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  transform: none;
  box-shadow: none;
}

/* Sound toggle */
.arcade-sound-toggle {
  background: none;
  border: none;
  cursor: pointer;
  font-size: 1rem;
  padding: 0 4px;
  opacity: 0.6;
  transition: opacity 0.15s;
}

.arcade-sound-toggle:hover {
  opacity: 1;
}

/* ── Confirmation modal ── */
.arcade-confirm-overlay {
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: rgba(0, 0, 0, 0.4);
  -webkit-backdrop-filter: blur(4px);
          backdrop-filter: blur(4px);
  display: flex;
  align-items: center;
  justify-content: center;
}

.arcade-confirm-modal {
  background: var(--change-surface-lowest);
  box-shadow: var(--change-shadow-xl);
  border-radius: 1.5rem;
  padding: var(--change-spacing-md);
  text-align: center;
  min-width: 300px;
}

.arcade-confirm-text {
  font-size: 1.1rem;
  font-weight: 600;
  margin: 0 0 var(--change-spacing-sm);
  color: var(--change-on-surface);
}

.arcade-confirm-buttons {
  display: flex;
  gap: 8px;
}

.arcade-confirm-yes {
  flex: 1 1;
  padding: 12px;
  border: none;
  border-radius: 12px;
  background: var(--change-bull);
  color: #fff;
  font-weight: 700;
  cursor: pointer;
  font-size: 0.95rem;
  transition: opacity 0.15s;
}

.arcade-confirm-no {
  flex: 1 1;
  padding: 12px;
  border: none;
  border-radius: 12px;
  background: var(--change-surface-container);
  color: var(--change-on-surface-variant);
  cursor: pointer;
  font-size: 0.95rem;
  font-weight: 600;
  transition: background 0.15s;
}

.arcade-confirm-yes:hover { opacity: 0.9; }
.arcade-confirm-no:hover { background: var(--change-surface-high); }

/* ── Mobile responsive ── */
@media (max-width: 768px) {
  .arcade-container {
    height: calc(100vh - 80px);
  }

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

  .arcade-orderbook-section {
    width: 100%;
    max-height: 200px;
    box-shadow: inset 0 1px 0 0 var(--change-outline-variant);
  }

  .arcade-chart-section {
    box-shadow: none;
    min-height: 200px;
  }

  .arcade-header {
    padding: 8px 12px;
    gap: 8px;
  }

  .arcade-stock-name {
    font-size: 0.95rem;
  }

  .arcade-current-price {
    font-size: 1.1rem;
  }

  .arcade-order-panel {
    padding: 8px 12px;
    gap: 8px;
  }

  .arcade-order-buttons {
    width: 100%;
    margin-left: 0;
  }

  .arcade-buy-btn,
  .arcade-sell-btn {
    flex: 1 1;
    padding: 12px;
  }

  .arcade-position-info {
    width: 100%;
    text-align: center;
  }

  .arcade-quantity-control {
    flex: 1 1;
  }

  .arcade-quantity-control input {
    flex: 1 1;
    width: auto;
  }

  .arcade-title {
    font-size: 1.8rem;
  }

  .arcade-search-input {
    max-width: 100%;
  }

  .arcade-search-results {
    max-width: 100%;
  }
}

@media (max-width: 480px) {
  .arcade-header {
    flex-direction: column;
    align-items: stretch;
    gap: 4px;
  }

  .arcade-price {
    margin-left: 0;
    justify-content: center;
  }

  .arcade-back-btn {
    align-self: flex-start;
  }
}

/* ══════════════════════════════════════════════════
   Dopamine: Execution Impact Effects
   ══════════════════════════════════════════════════ */

/* ── Screen Shake on Order Execution ── */
.arcade-container.execution-shake {
  animation: arcade-executionShake 0.3s ease-in-out;
}

@keyframes arcade-executionShake {
  0%, 100% { transform: translate(0, 0); }
  10% { transform: translate(-3px, -1px); }
  20% { transform: translate(3px, 2px); }
  30% { transform: translate(-2px, -2px); }
  40% { transform: translate(2px, 1px); }
  50% { transform: translate(-2px, 2px); }
  60% { transform: translate(3px, -1px); }
  70% { transform: translate(-1px, 1px); }
  80% { transform: translate(1px, -1px); }
  90% { transform: translate(-1px, 0); }
}

/* ── Border Flash on Buy/Sell ── */
.arcade-container.flash-buy {
  animation: arcade-borderFlashBuy 0.4s ease-out, arcade-executionShake 0.3s ease-in-out;
}

.arcade-container.flash-sell {
  animation: arcade-borderFlashSell 0.4s ease-out, arcade-executionShake 0.3s ease-in-out;
}

@keyframes arcade-borderFlashBuy {
  0% { box-shadow: inset 0 0 0 0 transparent; }
  25% { box-shadow: inset 0 0 40px rgba(239, 68, 68, 0.25), 0 0 20px rgba(239, 68, 68, 0.1); }
  100% { box-shadow: inset 0 0 0 0 transparent; }
}

@keyframes arcade-borderFlashSell {
  0% { box-shadow: inset 0 0 0 0 transparent; }
  25% { box-shadow: inset 0 0 40px rgba(59, 130, 246, 0.25), 0 0 20px rgba(59, 130, 246, 0.1); }
  100% { box-shadow: inset 0 0 0 0 transparent; }
}

/* ── Combo Floating Text ── */
.arcade-combo-float {
  position: absolute;
  top: 40%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 100;
  font-size: 2rem;
  font-weight: 900;
  pointer-events: none;
  text-shadow: 0 0 20px currentColor, 0 2px 8px rgba(0, 0, 0, 0.3);
  animation: arcade-comboFloat 1.5s ease-out forwards;
  white-space: nowrap;
}

@keyframes arcade-comboFloat {
  0% { opacity: 1; transform: translate(-50%, -50%) scale(0.5); }
  15% { opacity: 1; transform: translate(-50%, -60%) scale(1.3); }
  30% { transform: translate(-50%, -70%) scale(1); }
  100% { opacity: 0; transform: translate(-50%, -150%) scale(0.8); }
}

.arcade-combo-float.combo-x2 {
  color: #ff8800;
}

.arcade-combo-float.combo-x3 {
  color: var(--change-bull);
  font-size: 2.2rem;
}

.arcade-combo-float.combo-x5 {
  color: #FFD700;
  font-size: 2.5rem;
  text-shadow: 0 0 30px #FFD700, 0 0 60px #ff8800, 0 2px 8px rgba(0, 0, 0, 0.3);
}

.arcade-combo-float.combo-x10 {
  color: #FFD700;
  font-size: 3rem;
  text-shadow: 0 0 40px #FFD700, 0 0 80px var(--change-bull), 0 2px 8px rgba(0, 0, 0, 0.3);
}

/* ── PnL Pulse Animation ── */
.arcade-pnl-animated {
  display: inline-block;
  font-feature-settings: "tnum";
  font-variant-numeric: tabular-nums;
}

.arcade-pnl-animated.pulse {
  animation: arcade-pnlPulse 0.4s ease-out;
}

@keyframes arcade-pnlPulse {
  0% { transform: scale(1); filter: brightness(1); }
  40% { transform: scale(1.2); filter: brightness(1.3); }
  100% { transform: scale(1); filter: brightness(1); }
}

/* ── WebSocket Reconnection Banner ── */
.arcade-reconnecting {
  text-align: center;
  padding: 6px 8px;
  background: rgba(245, 158, 11, 0.1);
  color: #f59e0b;
  font-size: 0.75rem;
  font-weight: 600;
  animation: arcade-reconnectPulse 1.5s ease-in-out infinite;
  z-index: 2;
  border-radius: 0;
}

@keyframes arcade-reconnectPulse {
  0%, 100% { opacity: 0.6; }
  50% { opacity: 1; }
}

/* ── LeaderboardWidget ── */

.leaderboard-widget {
  background: #161b22;
  background: var(--bg-secondary, #161b22);
  border-radius: 12px;
  border: 1px solid #30363d;
  border: 1px solid var(--border-color, #30363d);
  overflow: hidden;
}

.lb-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  border-bottom: 1px solid #30363d;
  border-bottom: 1px solid var(--border-color, #30363d);
}

.lb-title {
  margin: 0;
  font-size: 1rem;
  font-weight: 700;
}

.lb-period-toggle {
  display: flex;
  gap: 0;
  border-radius: 6px;
  overflow: hidden;
  border: 1px solid #30363d;
  border: 1px solid var(--border-color, #30363d);
}

.lb-period-toggle button {
  padding: 4px 12px;
  border: none;
  background: transparent;
  color: #8b949e;
  color: var(--text-secondary, #8b949e);
  font-size: 0.8rem;
  cursor: pointer;
  transition: all 0.15s;
}

.lb-period-toggle button.active {
  background: #ff4444;
  background: var(--accent-color, #ff4444);
  color: #fff;
}

.lb-tabs {
  display: flex;
  border-bottom: 1px solid #30363d;
  border-bottom: 1px solid var(--border-color, #30363d);
}

.lb-tabs button {
  flex: 1 1;
  padding: 8px;
  border: none;
  background: transparent;
  color: #8b949e;
  color: var(--text-secondary, #8b949e);
  font-size: 0.85rem;
  cursor: pointer;
  border-bottom: 2px solid transparent;
  transition: all 0.15s;
}

.lb-tabs button.active {
  color: #e6edf3;
  color: var(--text-primary, #e6edf3);
  border-bottom-color: #ff4444;
  border-bottom-color: var(--accent-color, #ff4444);
}

.lb-body {
  max-height: 400px;
  overflow-y: auto;
}

.lb-loading,
.lb-empty {
  padding: 24px;
  text-align: center;
  color: #8b949e;
  color: var(--text-secondary, #8b949e);
  font-size: 0.9rem;
}

.lb-list {
  display: flex;
  flex-direction: column;
}

.lb-row {
  display: grid;
  grid-template-columns: 32px 1fr auto auto;
  align-items: center;
  grid-gap: 8px;
  gap: 8px;
  padding: 8px 16px;
  border-bottom: 1px solid rgba(48, 54, 61, 0.5);
  transition: background 0.15s;
}

.lb-row:hover {
  background: rgba(255, 255, 255, 0.03);
}

.lb-top3 {
  background: rgba(255, 68, 68, 0.03);
}

.lb-rank {
  font-size: 1.1rem;
  text-align: center;
  font-weight: 700;
}

.lb-username {
  font-weight: 600;
  font-size: 0.9rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.lb-pnl {
  font-weight: 700;
  font-size: 0.9rem;
  font-family: monospace;
  white-space: nowrap;
}

.lb-pnl.positive {
  color: #ff4444;
}

.lb-pnl.negative {
  color: #4488ff;
}

.lb-meta {
  font-size: 0.75rem;
  color: #8b949e;
  color: var(--text-secondary, #8b949e);
  white-space: nowrap;
}

/* ── Mobile ── */
@media (max-width: 600px) {
  .lb-row {
    grid-template-columns: 28px 1fr auto;
    padding: 6px 12px;
  }

  .lb-meta {
    display: none;
  }

  .lb-pnl {
    font-size: 0.82rem;
  }
}

/* ── BlindTestGame ── */

.blind-test-container {
  max-width: 700px;
  margin: 0 auto;
  padding: 16px;
}

.bt-tabs {
  display: flex;
  gap: 0;
  border-radius: 10px;
  overflow: hidden;
  border: 1px solid #30363d;
  border: 1px solid var(--border-color, #30363d);
  margin-bottom: 16px;
}

.bt-tabs button {
  flex: 1 1;
  padding: 10px;
  border: none;
  background: #161b22;
  background: var(--bg-secondary, #161b22);
  color: #8b949e;
  color: var(--text-secondary, #8b949e);
  font-size: 0.9rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s;
}

.bt-tabs button.active {
  background: linear-gradient(135deg, #ff4444, #ff6644);
  color: #fff;
}

.bt-content {
  min-height: 300px;
}

/* ── Section ── */
.bt-section-title {
  font-size: 1.1rem;
  font-weight: 700;
  margin: 0 0 8px 0;
}

.bt-description {
  color: #8b949e;
  color: var(--text-secondary, #8b949e);
  font-size: 0.9rem;
  margin: 0 0 16px 0;
}

.bt-empty {
  text-align: center;
  padding: 32px;
  color: #8b949e;
  color: var(--text-secondary, #8b949e);
}

/* ── Mystery Box Cards ── */
.bt-mystery-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-gap: 12px;
  gap: 12px;
  margin-bottom: 16px;
}

.bt-mystery-card-wrapper {
  perspective: 1000px;
}

.bt-mystery-card {
  position: relative;
  width: 100%;
  aspect-ratio: 3 / 4;
  cursor: pointer;
  transform-style: preserve-3d;
  transition: transform 0.6s ease;
}

.bt-mystery-card.flipped {
  transform: rotateY(180deg);
}

.bt-card-face {
  position: absolute;
  inset: 0;
  border-radius: 12px;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 12px;
}

/* Front face — mystery */
.bt-card-front {
  background: linear-gradient(135deg, #1a1a3e, #2a1a4e);
  border: 2px solid rgba(130, 80, 255, 0.4);
  box-shadow: 0 0 20px rgba(130, 80, 255, 0.2), inset 0 0 30px rgba(130, 80, 255, 0.05);
  animation: bt-cardGlow 2s ease-in-out infinite;
}

@keyframes bt-cardGlow {
  0%, 100% { box-shadow: 0 0 20px rgba(130, 80, 255, 0.2), inset 0 0 30px rgba(130, 80, 255, 0.05); }
  50% { box-shadow: 0 0 30px rgba(130, 80, 255, 0.4), inset 0 0 40px rgba(130, 80, 255, 0.1); }
}

.bt-mystery-card:not(.flipped):hover .bt-card-front {
  animation: bt-mysteryHoverShake 0.6s ease-in-out infinite;
  border-color: rgba(255, 136, 0, 0.6);
  box-shadow: 0 0 30px rgba(255, 136, 0, 0.3);
}

/* ── Dopamine: Enhanced hover shake (stronger wobble + scale) ── */
@keyframes bt-mysteryHoverShake {
  0%, 100% { transform: translateX(0) scale(1); }
  10% { transform: translateX(-5px) rotate(-2deg) scale(1.02); }
  20% { transform: translateX(5px) rotate(2deg) scale(1.03); }
  30% { transform: translateX(-4px) rotate(-1.5deg) scale(1.02); }
  40% { transform: translateX(4px) rotate(1.5deg) scale(1.03); }
  50% { transform: translateX(-3px) rotate(-1deg) scale(1.02); }
  60% { transform: translateX(3px) rotate(1deg) scale(1.01); }
  70% { transform: translateX(-2px) rotate(-0.5deg); }
  80% { transform: translateX(2px) rotate(0.5deg); }
  90% { transform: translateX(-1px); }
}

/* ── Dopamine: Click burst glow (radial box-shadow explosion) ── */
.bt-mystery-card.burst .bt-card-front {
  animation: bt-glowBurst 0.5s ease-out forwards;
}

@keyframes bt-glowBurst {
  0% {
    box-shadow: 0 0 20px rgba(255, 136, 0, 0.3);
    border-color: rgba(255, 136, 0, 0.6);
  }
  30% {
    box-shadow: 0 0 60px rgba(255, 136, 0, 0.6), 0 0 120px rgba(130, 80, 255, 0.3), inset 0 0 40px rgba(255, 136, 0, 0.15);
    border-color: rgba(255, 200, 0, 0.9);
  }
  100% {
    box-shadow: 0 0 20px rgba(130, 80, 255, 0.2);
    border-color: rgba(130, 80, 255, 0.4);
  }
}

/* ── Dopamine: Particle burst on card flip ── */
.bt-mystery-card.flipped::after {
  content: '';
  position: absolute;
  inset: -30px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255, 136, 0, 0.4) 0%, rgba(130, 80, 255, 0.2) 30%, transparent 70%);
  animation: bt-particleBurst 0.7s ease-out forwards;
  pointer-events: none;
  z-index: 10;
}

@keyframes bt-particleBurst {
  0% { transform: scale(0.3); opacity: 1; }
  40% { transform: scale(1.2); opacity: 0.8; }
  100% { transform: scale(2); opacity: 0; }
}

/* ── Dopamine: Slot-machine rolling effect ── */
.bt-slot-roller {
  overflow: hidden;
  height: 3.5rem;
  position: relative;
  width: 100%;
}

.bt-slot-roller-inner {
  animation: bt-slotRoll 1.2s cubic-bezier(0.1, 0.8, 0.2, 1) forwards;
}

@keyframes bt-slotRoll {
  0% { transform: translateY(0); }
  100% { transform: translateY(-90%); transform: translateY(var(--slot-end-y, -90%)); }
}

.bt-slot-item {
  height: 3.5rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 0.9rem;
  color: rgba(130, 80, 255, 0.8);
  text-shadow: 0 0 10px rgba(130, 80, 255, 0.3);
}

.bt-slot-item-name {
  font-size: 0.85rem;
}

.bt-slot-item-code {
  font-size: 0.7rem;
  color: rgba(130, 80, 255, 0.5);
  font-family: monospace;
}

/* ── Dopamine: Skeleton loading cards ── */
.bt-skeleton-card {
  aspect-ratio: 3 / 4;
  border-radius: 12px;
  background: linear-gradient(135deg, #1a1a3e, #2a1a4e);
  border: 2px solid rgba(130, 80, 255, 0.2);
  animation: bt-skeletonPulse 1.5s ease-in-out infinite;
}

@keyframes bt-skeletonPulse {
  0%, 100% { opacity: 0.4; }
  50% { opacity: 0.7; }
}

@keyframes bt-cardShake {
  0%, 100% { transform: translateX(0); }
  15% { transform: translateX(-3px) rotate(-1deg); }
  30% { transform: translateX(3px) rotate(1deg); }
  45% { transform: translateX(-2px) rotate(-0.5deg); }
  60% { transform: translateX(2px) rotate(0.5deg); }
  75% { transform: translateX(-1px); }
}

.bt-card-question {
  font-size: 3rem;
  font-weight: 800;
  color: rgba(130, 80, 255, 0.8);
  text-shadow: 0 0 20px rgba(130, 80, 255, 0.5);
}

.bt-card-label {
  font-size: 0.85rem;
  color: rgba(130, 80, 255, 0.5);
  font-weight: 600;
}

/* Back face — revealed stock */
.bt-card-back {
  background: #161b22;
  background: var(--bg-secondary, #161b22);
  border: 2px solid #30363d;
  border: 2px solid var(--border-color, #30363d);
  transform: rotateY(180deg);
  position: relative;
}

.bt-card-change {
  position: absolute;
  top: 8px;
  right: 8px;
  padding: 2px 8px;
  border-radius: 4px;
  border: 1px solid #30363d;
  border: 1px solid var(--border-color, #30363d);
  background: transparent;
  color: #8b949e;
  color: var(--text-secondary, #8b949e);
  font-size: 0.7rem;
  cursor: pointer;
}

.bt-card-change:hover {
  background: #21262d;
  background: var(--bg-tertiary, #21262d);
}

.bt-card-stock-name {
  font-size: 1rem;
  font-weight: 700;
  color: #e6edf3;
  color: var(--text-primary, #e6edf3);
  text-align: center;
  word-break: keep-all;
}

.bt-card-stock-code {
  font-size: 0.8rem;
  color: #8b949e;
  color: var(--text-secondary, #8b949e);
  font-family: monospace;
}

.bt-card-dir {
  padding: 6px 14px;
  border-radius: 6px;
  border: none;
  font-weight: 700;
  font-size: 0.85rem;
  cursor: pointer;
  transition: all 0.15s;
  margin-top: 4px;
}

.bt-card-dir.up {
  background: rgba(255, 68, 68, 0.15);
  color: #ff4444;
  border: 1px solid rgba(255, 68, 68, 0.3);
}

.bt-card-dir.down {
  background: rgba(68, 136, 255, 0.15);
  color: #4488ff;
  border: 1px solid rgba(68, 136, 255, 0.3);
}

.bt-card-dir:hover {
  opacity: 0.8;
}

/* Legacy picks (keep for reference / fallback) */
.bt-picks-form {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 16px;
}

.bt-pick-input {
  display: flex;
  align-items: center;
  gap: 8px;
}

.bt-pick-num {
  width: 28px;
  height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: #21262d;
  background: var(--bg-tertiary, #21262d);
  font-weight: 700;
  font-size: 0.85rem;
  flex-shrink: 0;
}

.bt-pick-selected,
.bt-pick-empty {
  flex: 1 1;
  padding: 10px 14px;
  border-radius: 8px;
  border: 1px solid #30363d;
  border: 1px solid var(--border-color, #30363d);
  background: #161b22;
  background: var(--bg-secondary, #161b22);
  color: #e6edf3;
  color: var(--text-primary, #e6edf3);
  cursor: pointer;
  text-align: left;
  display: flex;
  align-items: center;
  gap: 8px;
  transition: border-color 0.15s;
}

.bt-pick-selected:hover,
.bt-pick-empty:hover {
  border-color: #ff4444;
}

.bt-pick-empty {
  color: #8b949e;
  color: var(--text-secondary, #8b949e);
}

.bt-pick-name {
  font-weight: 600;
}

.bt-pick-code {
  font-size: 0.8rem;
  color: #8b949e;
  color: var(--text-secondary, #8b949e);
  font-family: monospace;
}

.bt-dir-btn {
  padding: 8px 16px;
  border-radius: 8px;
  border: none;
  font-weight: 700;
  font-size: 0.85rem;
  cursor: pointer;
  min-width: 80px;
  transition: all 0.15s;
}

.bt-dir-btn.up {
  background: rgba(255, 68, 68, 0.15);
  color: #ff4444;
  border: 1px solid rgba(255, 68, 68, 0.3);
}

.bt-dir-btn.down {
  background: rgba(68, 136, 255, 0.15);
  color: #4488ff;
  border: 1px solid rgba(68, 136, 255, 0.3);
}

.bt-dir-btn:hover {
  opacity: 0.8;
}

/* ── Submit ── */
.bt-submit-btn {
  width: 100%;
  padding: 14px;
  border: none;
  border-radius: 10px;
  background: linear-gradient(135deg, #ff4444, #ff6644);
  color: #fff;
  font-size: 1rem;
  font-weight: 700;
  cursor: pointer;
  transition: opacity 0.15s;
}

.bt-submit-btn:hover {
  opacity: 0.9;
}

.bt-submit-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* ── Search modal ── */
.bt-search-modal {
  position: fixed;
  inset: 0;
  z-index: 9000;
  background: rgba(0, 0, 0, 0.6);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
}

.bt-search-panel {
  background: #0d1117;
  background: var(--bg-primary, #0d1117);
  border-radius: 12px;
  border: 1px solid #30363d;
  border: 1px solid var(--border-color, #30363d);
  padding: 16px;
  width: 100%;
  max-width: 400px;
  max-height: 400px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.bt-search-input {
  width: 100%;
  padding: 10px 14px;
  border-radius: 8px;
  border: 1px solid #30363d;
  border: 1px solid var(--border-color, #30363d);
  background: #161b22;
  background: var(--bg-secondary, #161b22);
  color: #e6edf3;
  color: var(--text-primary, #e6edf3);
  font-size: 1rem;
  outline: none;
}

.bt-search-input:focus {
  border-color: #ff4444;
}

.bt-search-results {
  display: flex;
  flex-direction: column;
  gap: 2px;
  overflow-y: auto;
  max-height: 280px;
}

.bt-search-item {
  display: flex;
  justify-content: space-between;
  padding: 8px 12px;
  border-radius: 6px;
  border: none;
  background: transparent;
  color: #e6edf3;
  color: var(--text-primary, #e6edf3);
  cursor: pointer;
  text-align: left;
}

.bt-search-item:hover {
  background: #21262d;
  background: var(--bg-tertiary, #21262d);
}

.bt-search-code {
  color: #8b949e;
  color: var(--text-secondary, #8b949e);
  font-size: 0.8rem;
  font-family: monospace;
}

/* ── Today result ── */
.bt-today-result {
  padding: 8px 0;
}

.bt-picks-display {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: 12px 0;
}

.bt-pick-card {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  border-radius: 10px;
  background: #161b22;
  background: var(--bg-secondary, #161b22);
  border: 1px solid #30363d;
  border: 1px solid var(--border-color, #30363d);
}

.bt-pick-card.correct {
  border-color: rgba(34, 197, 94, 0.4);
  background: rgba(34, 197, 94, 0.05);
}

.bt-pick-card.wrong {
  border-color: rgba(239, 68, 68, 0.4);
  background: rgba(239, 68, 68, 0.05);
}

.bt-pick-dir {
  font-weight: 600;
  font-size: 0.85rem;
}

.bt-pick-dir.up {
  color: #ff4444;
}

.bt-pick-dir.down {
  color: #4488ff;
}

.bt-pick-result {
  margin-left: auto;
  font-size: 0.85rem;
}

.bt-pick-score {
  margin-left: 4px;
  color: #8b949e;
  color: var(--text-secondary, #8b949e);
}

.bt-total-score {
  text-align: center;
  font-size: 1.3rem;
  font-weight: 800;
  padding: 12px;
  border-radius: 10px;
  background: #161b22;
  background: var(--bg-secondary, #161b22);
}

.bt-total-score.positive {
  color: #ff4444;
}

.bt-total-score.negative {
  color: #4488ff;
}

/* ── History ── */
.bt-history-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.bt-history-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 12px;
  border-radius: 8px;
  background: #161b22;
  background: var(--bg-secondary, #161b22);
  border: 1px solid #30363d;
  border: 1px solid var(--border-color, #30363d);
}

.bt-history-date {
  font-size: 0.85rem;
  font-weight: 600;
  min-width: 80px;
}

.bt-history-picks {
  flex: 1 1;
  font-size: 0.8rem;
  color: #8b949e;
  color: var(--text-secondary, #8b949e);
  font-family: monospace;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.bt-history-score {
  font-weight: 700;
  font-size: 0.9rem;
  white-space: nowrap;
}

.bt-history-score.positive {
  color: #ff4444;
}

.bt-history-score.negative {
  color: #4488ff;
}

/* ── Result meme ── */
@keyframes bt-memePopIn {
  0% { opacity: 0; transform: scale(0.3) rotate(-8deg); }
  60% { opacity: 1; transform: scale(1.1) rotate(2deg); }
  100% { transform: scale(1) rotate(0); }
}

.bt-result-meme {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 20px;
  margin: 12px 0;
  border-radius: 16px;
  background: linear-gradient(135deg, rgba(255, 68, 68, 0.15), rgba(255, 136, 0, 0.15));
  border: 2px solid rgba(255, 136, 0, 0.3);
  cursor: pointer;
  animation: bt-memePopIn 0.5s ease-out;
}

.bt-result-meme-emoji {
  font-size: 3rem;
  line-height: 1;
}

.bt-result-meme-text {
  font-size: 1.2rem;
  font-weight: 700;
  color: #e6edf3;
  color: var(--text-primary, #e6edf3);
}

.bt-perfect {
  display: inline-block;
  margin-left: 8px;
  background: linear-gradient(90deg, #FFD700, #FF8800);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  font-weight: 800;
  animation: bt-shimmer 1.5s linear infinite;
}

@keyframes bt-shimmer {
  0% { filter: brightness(1); }
  50% { filter: brightness(1.3); }
  100% { filter: brightness(1); }
}

.bt-show-meme-btn {
  width: 100%;
  padding: 10px;
  margin-top: 8px;
  border: 1px solid #30363d;
  border: 1px solid var(--border-color, #30363d);
  border-radius: 8px;
  background: transparent;
  color: #8b949e;
  color: var(--text-secondary, #8b949e);
  font-size: 0.85rem;
  cursor: pointer;
  transition: all 0.15s;
}

.bt-show-meme-btn:hover {
  background: #21262d;
  background: var(--bg-tertiary, #21262d);
  color: #e6edf3;
  color: var(--text-primary, #e6edf3);
}

/* ── Mobile ── */
@media (max-width: 600px) {
  .blind-test-container {
    padding: 8px;
  }

  .bt-mystery-grid {
    gap: 8px;
  }

  .bt-card-question {
    font-size: 2rem;
  }

  .bt-card-stock-name {
    font-size: 0.85rem;
  }

  .bt-card-dir {
    padding: 4px 10px;
    font-size: 0.75rem;
  }

  .bt-result-meme-emoji {
    font-size: 2.5rem;
  }

  .bt-result-meme-text {
    font-size: 1rem;
  }

  .bt-pick-input {
    flex-wrap: wrap;
  }

  .bt-pick-selected,
  .bt-pick-empty {
    min-width: 0;
  }

  .bt-dir-btn {
    min-width: 70px;
    padding: 8px 12px;
    font-size: 0.8rem;
  }

  .bt-history-item {
    flex-wrap: wrap;
    gap: 4px;
  }

  .bt-history-picks {
    width: 100%;
    order: 3;
  }
}

