/* ==========================================================================
   Tâm An Nhiên AI — Common Design System & Base Utilities
   ========================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Be+Vietnam+Pro:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&family=Playfair+Display:ital,wght@0,400;0,500;0,600;0,700;1,400&family=Noto+Serif:ital,wght@0,400;0,600;0,700;1,400&display=swap');

/* ===== RESET & BASE ===== */
*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

/* ==========================================================================
   THEME: TRANG NHÃ & TÔN NGHIÊM (SERENE & REVERENT)
   ========================================================================== */

:root {
  /* Bảng màu chính */
  --bg-primary: #FBFBF9;
  --bg-surface: #F5F2EB;
  --bg-surface-elevated: #FFFFFF;
  --bg-muted: #EFECE6;

  /* Màu chữ */
  --text-primary: #1E293B;
  --text-secondary: #64748B;
  --text-light: #F8FAFC;

  /* Màu điểm nhấn & Viền */
  --accent-gold: #C5A880;
  --accent-gold-hover: #B5966C;
  --accent-moss: #2E3A2F;
  --border-subtle: #E6E1D8;
  --danger-burgundy: #881337;

  /* Typography — Chuẩn ChatGPT Font Stack (Söhne / Inter) */
  --font-chatgpt: Söhne, "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
  --font-serif: var(--font-chatgpt);
  --font-sans: var(--font-chatgpt);
  --font-display: var(--font-chatgpt);
  --font-body: var(--font-chatgpt);

  /* Màu nút bấm tương phản cao (High-Contrast Buttons) */
  --btn-primary-bg: #1E293B;
  --btn-primary-hover: #0F172A;
  --btn-primary-text: #FFFFFF;
  --btn-gold-bg: #8A6634;
  --btn-gold-hover: #755529;
  --btn-gold-text: #FFFFFF;
  --btn-secondary-bg: #FFFFFF;
  --btn-secondary-text: #1E293B;
  --btn-secondary-border: #CBD5E1;
  --btn-secondary-hover-bg: #F1EFEA;

  /* Hiệu ứng mềm mại */
  --shadow-subtle: 0 4px 20px -2px rgba(30, 41, 59, 0.04);
  --shadow-card: 0 10px 30px -4px rgba(30, 41, 59, 0.06);
  --radius-sm: 8px;
  --radius-md: 16px;
  --radius-lg: 24px;
  --transition-smooth: all 0.35s cubic-bezier(0.4, 0, 0.2, 1);

  /* Legacy & Semantic Mapping */
  --bg-deep: var(--bg-primary);
  --bg-panel: var(--bg-surface);
  --bg-card: var(--bg-surface-elevated);
  --bg-input: var(--bg-surface-elevated);
  --border: var(--border-subtle);
  --border-bright: var(--accent-gold);
  --gold: var(--accent-gold);
  --gold-light: #9B7B50;
  --gold-dim: rgba(197, 168, 128, 0.45);
  --cream: var(--text-primary);
  --text: var(--text-primary);
  --text-muted: var(--text-secondary);
  --text-dim: #94A3B8;
  --red: var(--danger-burgundy);
  --green: #2E7D32;
  --shadow-gold: 0 6px 24px rgba(197, 168, 128, 0.18);
  --radius: var(--radius-md);
  --transition: var(--transition-smooth);
  --font-display: var(--font-serif);
  --font-body: var(--font-sans);
}

/* Reset nền tảng */
body {
  margin: 0;
  padding: 0;
  background-color: var(--bg-primary);
  color: var(--text-primary);
  font-family: var(--font-chatgpt);
  font-size: 15px;
  line-height: 1.6;
  letter-spacing: -0.01em;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  height: 100%;
  overflow: hidden;
}

html {
  height: 100%;
}

/* Typography Hierarchy */
h1, h2, h3, .font-serif {
  font-family: var(--font-chatgpt);
  font-weight: 600;
  color: var(--text-primary);
  letter-spacing: -0.02em;
  margin-top: 0;
}

p {
  color: var(--text-secondary);
  margin-bottom: 1.25rem;
}

/* Thanh thông báo khẩn cấp 24/7 */
.emergency-bar {
  background-color: var(--text-primary);
  color: var(--bg-primary);
  padding: 8px 20px;
  font-size: 13px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  z-index: 100;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
  box-shadow: 0 2px 10px rgba(30, 41, 59, 0.08);
}

.emergency-bar-left {
  display: flex;
  align-items: center;
  gap: 10px;
  font-weight: 500;
  letter-spacing: 0.01em;
}

.emergency-bar-badge {
  background: var(--danger-burgundy);
  color: #FFFFFF;
  padding: 2px 8px;
  border-radius: 9999px;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.06em;
  display: inline-flex;
  align-items: center;
}

.emergency-bar .hotline-btn {
  background-color: var(--danger-burgundy);
  color: #FFFFFF;
  text-decoration: none;
  padding: 5px 16px;
  border-radius: 9999px;
  font-size: 12.5px;
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  transition: var(--transition-smooth);
  box-shadow: 0 2px 8px rgba(136, 19, 55, 0.35);
}

.emergency-bar .hotline-btn:hover {
  filter: brightness(1.15);
  transform: translateY(-1px);
}

/* Bento Card Module (Serene Card) */
.serene-card {
  background-color: var(--bg-surface-elevated);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  padding: 28px;
  box-shadow: var(--shadow-subtle);
  transition: var(--transition-smooth);
}

.serene-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-card);
  border-color: var(--accent-gold);
}

/* Nút bấm trang nhã & Tương phản cao */
.btn-primary {
  background-color: var(--btn-primary-bg, #1E293B);
  color: var(--btn-primary-text, #FFFFFF);
  border: 1px solid var(--btn-primary-bg, #1E293B);
  padding: 11px 24px;
  border-radius: var(--radius-sm);
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 13.5px;
  cursor: pointer;
  box-shadow: 0 4px 14px rgba(30, 41, 59, 0.2);
  transition: var(--transition-smooth);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  text-decoration: none;
}

.btn-primary:hover {
  background-color: var(--btn-primary-hover, #0F172A);
  border-color: var(--btn-primary-hover, #0F172A);
  transform: translateY(-1px);
  box-shadow: 0 6px 18px rgba(30, 41, 59, 0.28);
}

.btn-secondary {
  background-color: var(--btn-secondary-bg, #FFFFFF);
  color: var(--btn-secondary-text, #1E293B);
  border: 1.5px solid var(--btn-secondary-border, #CBD5E1);
  padding: 11px 24px;
  border-radius: var(--radius-sm);
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 13.5px;
  cursor: pointer;
  transition: var(--transition-smooth);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  text-decoration: none;
  box-shadow: var(--shadow-subtle);
}

.btn-secondary:hover {
  background-color: var(--btn-secondary-hover-bg, #F1EFEA);
  border-color: #94A3B8;
  color: #0F172A;
  transform: translateY(-1px);
}

/* Bộ chọn Tab Tôn giáo / Tín ngưỡng (Tương phản cao) */
.tab-container {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  padding-bottom: 6px;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
}

.tab-container::-webkit-scrollbar {
  display: none;
}

.tab-pill {
  padding: 7px 18px;
  border-radius: 9999px;
  border: 1.5px solid #CBD5E1;
  background: #FFFFFF;
  color: var(--text-primary);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: var(--transition-smooth);
  white-space: nowrap;
  box-shadow: 0 2px 6px rgba(30, 41, 59, 0.05);
  user-select: none;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.tab-pill:hover {
  background: #F1EFEA;
  border-color: #94A3B8;
  color: #0F172A;
  transform: translateY(-1px);
}

.tab-pill.active {
  background: var(--text-primary);
  color: #FFFFFF;
  border-color: var(--text-primary);
  box-shadow: 0 4px 14px rgba(30, 41, 59, 0.25);
}

/* Khung Chat Widget Nhúng */
.widget-bubble {
  position: fixed;
  bottom: 24px;
  right: 24px;
  width: 58px;
  height: 58px;
  border-radius: 50%;
  background: var(--text-primary);
  color: #FFFFFF;
  border: 2px solid var(--accent-gold);
  box-shadow: 0 8px 28px rgba(30, 41, 59, 0.28);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: var(--transition-smooth);
  z-index: 9999;
  font-size: 24px;
}

.widget-bubble:hover {
  transform: scale(1.08);
  background: var(--btn-gold-bg, #8A6634);
  border-color: #F1EFEA;
  color: #FFFFFF;
  box-shadow: 0 10px 30px rgba(138, 102, 52, 0.35);
}

/* Login & Auth High-Contrast Buttons */
.auth-tabs {
  display: flex;
  background: var(--bg-surface);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  padding: 4px;
  gap: 4px;
  margin-bottom: 20px;
}

.auth-tab {
  flex: 1;
  padding: 9px 12px;
  border: none;
  background: transparent;
  color: var(--text-secondary);
  font-family: var(--font-sans);
  font-size: 13.5px;
  font-weight: 600;
  border-radius: 6px;
  cursor: pointer;
  transition: var(--transition-smooth);
}

.auth-tab.active {
  background: var(--text-primary);
  color: #FFFFFF;
  box-shadow: 0 2px 8px rgba(30, 41, 59, 0.15);
}

.login-btn {
  width: 100%;
  padding: 13px;
  background: #0F172A;
  color: #FFFFFF;
  border: 1px solid #0F172A;
  border-radius: 12px;
  font-family: var(--font-sans);
  font-size: 14.5px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
  box-shadow: 0 4px 14px rgba(15, 23, 42, 0.18);
  margin-top: 6px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

.login-btn:hover {
  background: #1E293B;
  border-color: #1E293B;
  transform: translateY(-1px);
  box-shadow: 0 6px 20px rgba(15, 23, 42, 0.25);
}

.login-btn:active {
  transform: scale(0.99);
}

/* ===== CRITICAL CHATGPT AUTH STYLES (100% IMMUNE TO BROWSER CACHE) ===== */
    .login-overlay {
      position: fixed;
      inset: 0;
      z-index: 99999;
      background: #FFFFFF !important;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 16px;
      overflow-y: auto;
    }

    .login-overlay.hidden {
      display: none !important;
    }

    .login-card {
      position: relative;
      width: 100%;
      max-width: 420px;
      max-height: calc(100vh - 32px);
      overflow-y: auto;
      background: #FFFFFF !important;
      border: 1.5px solid #E2E8F0 !important;
      border-radius: 20px !important;
      padding: 28px 28px 20px !important;
      box-shadow: 0 16px 45px -10px rgba(0, 0, 0, 0.09), 0 0 1px rgba(0, 0, 0, 0.12) !important;
      display: flex;
      flex-direction: column;
      text-align: center;
      margin: auto;
      box-sizing: border-box;
      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    }

    .login-header {
      display: flex;
      flex-direction: column;
      align-items: center;
      margin-bottom: 14px;
      gap: 4px;
    }

    .login-brand-icon {
      width: 46px;
      height: 46px;
      border-radius: 12px;
      background: linear-gradient(135deg, #FFFBEB 0%, #FEF3C7 100%);
      border: 1.5px solid #FDE68A;
      display: flex;
      align-items: center;
      justify-content: center;
      box-shadow: 0 4px 12px rgba(217, 119, 6, 0.15);
      margin-bottom: 2px;
    }

    .login-title {
      font-size: 23px !important;
      font-weight: 800 !important;
      color: #0F172A !important;
      letter-spacing: -0.02em;
      margin: 4px 0 2px;
    }

    .login-subtitle {
      font-size: 14px !important;
      font-weight: 500 !important;
      color: #1E293B !important;
      line-height: 1.45;
      margin: 0;
    }

    .auth-recent-chip {
      display: none;
      align-items: center;
      justify-content: space-between;
      background: #FFFFFF !important;
      border: 1.5px solid #CBD5E1 !important;
      border-radius: 12px;
      padding: 9px 14px;
      margin-bottom: 10px;
      text-align: left;
      cursor: pointer;
      box-shadow: 0 2px 6px rgba(0, 0, 0, 0.04);
      transition: all 0.2s;
    }

    .auth-recent-chip:hover {
      background: #FFFFFF !important;
      border-color: #94A3B8 !important;
      box-shadow: 0 4px 14px rgba(0, 0, 0, 0.08);
      transform: translateY(-1px);
    }

    .auth-recent-chip.visible {
      display: flex !important;
    }

    .auth-recent-info {
      display: flex;
      align-items: center;
      gap: 10px;
    }

    .auth-recent-avatar {
      width: 32px;
      height: 32px;
      border-radius: 50%;
      background: #0F766E;
      color: #FFFFFF;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 14px;
      font-weight: 700;
    }

    .auth-recent-name {
      font-size: 14px !important;
      font-weight: 700 !important;
      color: #0F172A !important;
    }

    .auth-recent-sub {
      font-size: 12.5px !important;
      font-weight: 500 !important;
      color: #334155 !important;
    }

    .auth-recent-arrow {
      font-size: 14px !important;
      font-weight: 700 !important;
      color: #0F172A !important;
    }

    .auth-one-tap-group {
      display: flex;
      flex-direction: column;
      gap: 10px;
      margin-bottom: 2px;
    }

    .btn-google-sso,
    .btn-apple-sso,
    .btn-account-email {
      position: relative;
      width: 100%;
      padding: 12px 16px;
      background: #FFFFFF !important;
      color: #0F172A !important;
      border: 1.5px solid #CBD5E1 !important;
      border-radius: 12px !important;
      font-size: 14.5px !important;
      font-weight: 600 !important;
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
      transition: all 0.2s;
      box-sizing: border-box;
      box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04) !important;
    }

    .btn-google-sso:hover,
    .btn-apple-sso:hover,
    .btn-account-email:hover {
      background: #FFFFFF !important;
      border-color: #94A3B8 !important;
      box-shadow: 0 4px 14px rgba(0, 0, 0, 0.08) !important;
      transform: translateY(-1px);
    }

    .btn-google-sso:active,
    .btn-apple-sso:active,
    .btn-account-email:active {
      transform: scale(0.985);
    }

    .btn-google-sso svg,
    .btn-apple-sso svg,
    .btn-account-email svg {
      position: absolute;
      left: 18px;
      top: 50%;
      transform: translateY(-50%);
      display: block;
      flex-shrink: 0;
    }

    .auth-back-row {
      display: flex;
      align-items: center;
      margin-bottom: 12px;
    }

    .btn-auth-back {
      background: transparent !important;
      border: none !important;
      color: #0D9488 !important;
      font-size: 13.5px !important;
      font-weight: 600 !important;
      cursor: pointer;
      display: inline-flex;
      align-items: center;
      gap: 6px;
      padding: 4px 0 !important;
      transition: color 0.2s;
    }

    .btn-auth-back:hover {
      color: #0F766E !important;
      text-decoration: underline;
    }

    .chatgpt-divider {
      display: flex;
      align-items: center;
      margin: 12px 0;
      color: #334155 !important;
      font-size: 12px !important;
      font-weight: 700 !important;
      text-transform: uppercase;
      letter-spacing: 0.08em;
    }

    .chatgpt-divider::before,
    .chatgpt-divider::after {
      content: '';
      flex: 1;
      height: 1.5px;
      background: #CBD5E1 !important;
    }

    .chatgpt-divider span {
      padding: 0 12px;
    }

    /* Checkbox Điều khoản Dịch vụ & Chính sách */
    .auth-terms-checkbox-wrap {
      display: flex;
      align-items: center;
      margin: 8px 0 6px 0;
      padding: 4px 2px;
      user-select: none;
      transition: all 0.25s ease;
      border-radius: 8px;
    }

    .auth-terms-label {
      display: inline-flex;
      align-items: center;
      gap: 9px;
      font-size: 13px !important;
      color: #334155 !important;
      cursor: pointer;
      line-height: 1.45;
      font-weight: 500;
    }

    .auth-terms-checkbox {
      width: 17px !important;
      height: 17px !important;
      accent-color: #0D9488 !important;
      cursor: pointer;
      border-radius: 4px;
      flex-shrink: 0;
      margin: 0 !important;
      padding: 0 !important;
    }

    .auth-terms-link {
      color: #0D9488 !important;
      text-decoration: underline;
      font-weight: 600;
      cursor: pointer;
    }

    .auth-terms-link:hover {
      color: #0F766E !important;
    }

    .auth-terms-highlight {
      animation: shakeTerms 0.4s ease-in-out;
      background: rgba(239, 68, 68, 0.08);
      padding: 4px 8px;
    }

    .auth-terms-highlight .auth-terms-label {
      color: #DC2626 !important;
      font-weight: 600;
    }

    @keyframes shakeTerms {
      0%, 100% { transform: translateX(0); }
      20%, 60% { transform: translateX(-6px); }
      40%, 80% { transform: translateX(6px); }
    }

    /* Modal Điều khoản */
    .terms-modal-overlay {
      position: fixed;
      inset: 0;
      background: rgba(15, 23, 42, 0.65);
      backdrop-filter: blur(4px);
      z-index: 99999;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 16px;
      animation: fadeInTerms 0.2s ease-out;
    }

    .terms-modal-card {
      background: #FFFFFF;
      width: 100%;
      max-width: 600px;
      max-height: 86vh;
      border-radius: 18px;
      box-shadow: 0 24px 48px rgba(0, 0, 0, 0.22);
      display: flex;
      flex-direction: column;
      overflow: hidden;
      border: 1px solid #E2E8F0;
    }

    .terms-modal-header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 16px 20px 12px;
      border-bottom: 1px solid #E2E8F0;
      background: #F8FAFC;
    }

    .terms-modal-title {
      font-size: 16px;
      font-weight: 700;
      color: #0F172A;
      margin: 0;
    }

    .terms-modal-close {
      background: transparent;
      border: none;
      font-size: 18px;
      cursor: pointer;
      color: #64748B;
      padding: 4px 8px;
      border-radius: 6px;
      transition: all 0.2s;
    }

    .terms-modal-close:hover {
      background: #E2E8F0;
      color: #0F172A;
    }

    .terms-section-header {
      display: flex;
      align-items: center;
      gap: 8px;
      padding: 10px 14px;
      background: #F1F5F9;
      border: 1px solid #E2E8F0;
      border-radius: 10px;
      margin-bottom: 14px;
    }

    .terms-section-header h3 {
      font-size: 15px;
      font-weight: 700;
      color: #0F172A;
      margin: 0;
    }

    .terms-section-divider {
      margin: 24px 0 20px;
      border: 0;
      border-top: 2px dashed #CBD5E1;
    }

    .terms-modal-body {
      padding: 22px 24px;
      overflow-y: auto;
      font-size: 13.5px;
      line-height: 1.65;
      color: #334155;
    }

    .terms-modal-body h4 {
      margin: 16px 0 6px 0;
      font-size: 14.5px;
      color: #0F172A;
      font-weight: 700;
      display: flex;
      align-items: center;
      gap: 6px;
    }

    .terms-modal-body h4:first-child {
      margin-top: 0;
    }

    .terms-modal-body p {
      margin: 0 0 10px 0;
    }

    .terms-modal-body ul {
      margin: 6px 0 12px;
      padding-left: 20px;
    }

    .terms-modal-body li {
      margin-bottom: 5px;
    }

    .terms-highlight-box {
      background: #F0FDFA;
      border: 1px solid #99F6E4;
      border-radius: 10px;
      padding: 12px 14px;
      margin: 10px 0 14px;
      font-size: 13px;
      color: #115E59;
    }

    .terms-modal-footer {
      padding: 12px 20px;
      border-top: 1px solid #E2E8F0;
      background: #F8FAFC;
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 12px;
    }

    .terms-footer-note {
      font-size: 12px;
      color: #64748B;
    }

    .terms-modal-agree-btn {
      background: #0D9488;
      color: #FFFFFF;
      border: none;
      padding: 10px 20px;
      border-radius: 9px;
      font-size: 13.5px;
      font-weight: 600;
      cursor: pointer;
      transition: all 0.2s;
      white-space: nowrap;
    }

    .terms-modal-agree-btn:hover {
      background: #0F766E;
    }

    @keyframes fadeInTerms {
      from { opacity: 0; }
      to { opacity: 1; }
    }

    .login-form,
    .login-card .login-form {
      display: flex !important;
      flex-direction: column !important;
      width: 100% !important;
      box-sizing: border-box !important;
      gap: 13px !important;
      margin: 0 !important;
    }

    .login-form[style*="display: none"],
    .login-form[style*="display:none"],
    .login-card .login-form[style*="display: none"],
    .login-card .login-form[style*="display:none"] {
      display: none !important;
    }

    .login-card .form-group {
      display: flex;
      flex-direction: column;
      margin-bottom: 2px;
      text-align: left;
      width: 100%;
      box-sizing: border-box;
    }

    .form-label-row {
      display: flex;
      align-items: center;
      justify-content: space-between;
      margin-bottom: 5px;
      width: 100%;
    }

    .login-card .form-label {
      font-size: 13.5px !important;
      font-weight: 600 !important;
      color: #0F172A !important;
      margin-bottom: 0 !important;
    }

    .field-req-badge {
      display: inline-flex;
      align-items: center;
      font-size: 11px !important;
      font-weight: 600 !important;
      color: #0F766E !important;
      background: #CCFBF1 !important;
      border: 1px solid #99F6E4 !important;
      padding: 1.5px 7px;
      border-radius: 6px;
      letter-spacing: 0.01em;
    }

    .auth-input-wrapper {
      position: relative;
      display: flex;
      align-items: center;
      width: 100%;
      box-sizing: border-box;
    }

    .auth-input-prefix-icon {
      position: absolute;
      left: 12px;
      top: 50%;
      transform: translateY(-50%);
      color: #64748B;
      display: flex;
      align-items: center;
      justify-content: center;
      pointer-events: none;
      z-index: 2;
      transition: color 0.2s;
    }

    .auth-input-wrapper:focus-within .auth-input-prefix-icon {
      color: #0D9488;
    }

    .login-card .form-input {
      width: 100%;
      box-sizing: border-box;
      background: #FFFFFF !important;
      border: 1.5px solid #CBD5E1 !important;
      border-radius: 10px !important;
      padding: 10.5px 14px !important;
      font-size: 14px !important;
      font-weight: 500 !important;
      color: #0F172A !important;
      outline: none;
      transition: border-color 0.2s, box-shadow 0.2s;
    }

    .auth-input-wrapper .form-input-with-icon {
      padding-left: 38px !important;
    }

    .auth-input-wrapper.password-input-wrap .form-input-with-icon {
      padding-left: 38px !important;
      padding-right: 42px !important;
    }

    .field-hint-text {
      font-size: 11.5px;
      color: #64748B;
      margin-top: 4px;
      padding-left: 2px;
      text-align: left;
      line-height: 1.35;
    }

    .login-card .form-input::placeholder {
      color: #64748B !important;
      font-weight: 400 !important;
      opacity: 0.95;
    }

    .login-card .form-input:focus {
      border-color: #0D9488 !important;
      box-shadow: 0 0 0 3px rgba(13, 148, 136, 0.16) !important;
    }

    .login-card .password-input-wrap {
      position: relative;
      display: flex;
      align-items: center;
      width: 100%;
    }

    .login-card .password-input-wrap .form-input {
      padding-right: 42px !important;
    }

    .login-card .password-toggle-btn {
      position: absolute;
      right: 8px;
      top: 50%;
      transform: translateY(-50%);
      background: none;
      border: none;
      color: #475569 !important;
      cursor: pointer;
      padding: 6px;
      display: flex;
      align-items: center;
      justify-content: center;
      border-radius: 4px;
      transition: color 0.2s;
    }

    .login-card .password-toggle-btn:hover {
      color: #0F172A !important;
    }

    .login-card .login-btn {
      width: 100%;
      padding: 12px 16px;
      background: #0D9488 !important;
      color: #FFFFFF !important;
      border: none !important;
      border-radius: 11px !important;
      font-size: 14.5px !important;
      font-weight: 700 !important;
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 8px;
      margin-top: 4px;
      box-sizing: border-box;
      transition: all 0.2s;
      box-shadow: 0 4px 14px rgba(13, 148, 136, 0.3) !important;
    }

    .login-card .login-btn:hover {
      background: #0F766E !important;
      transform: translateY(-1px);
      box-shadow: 0 6px 18px rgba(13, 148, 136, 0.4) !important;
    }

    .register-action-btn {
      background: linear-gradient(135deg, #0D9488 0%, #0F766E 100%) !important;
      box-shadow: 0 4px 14px rgba(13, 148, 136, 0.35) !important;
      margin-top: 6px !important;
    }

    .register-action-btn:hover {
      background: linear-gradient(135deg, #0F766E 0%, #115E59 100%) !important;
      box-shadow: 0 6px 18px rgba(13, 148, 136, 0.45) !important;
      transform: translateY(-1px);
    }

    .btn-icon-left {
      margin-right: 4px;
      flex-shrink: 0;
    }

    .btn-arrow-right {
      display: inline-block;
      transition: transform 0.2s ease;
    }

    .login-btn:hover .btn-arrow-right {
      transform: translateX(4px);
    }

    .auth-toggle-prompt {
      font-size: 13.5px !important;
      font-weight: 500 !important;
      color: #1E293B !important;
      margin-top: 14px;
      text-align: center;
    }

    .auth-toggle-link {
      color: #0D9488 !important;
      font-weight: 700 !important;
      text-decoration: underline;
      cursor: pointer;
      margin-left: 4px;
    }

    .auth-toggle-link:hover {
      color: #0F766E !important;
    }

    .auth-terms-disclaimer {
      font-size: 11.5px !important;
      font-weight: 500 !important;
      color: #475569 !important;
      line-height: 1.5;
      margin-top: 14px;
      padding-top: 12px;
      border-top: 1px solid #E2E8F0;
      text-align: center;
    }

    .auth-terms-disclaimer a {
      color: #0F172A !important;
      font-weight: 600 !important;
      text-decoration: underline;
    }

    /* ===== LOGIN ERROR & VALIDATION ALERTS (CHỮ ĐỎ KHI SAI MẬT KHẨU / THIẾU KÝ TỰ) ===== */
    .login-error {
      display: none;
      background: #FEF2F2 !important;
      color: #DC2626 !important;
      border: 1.5px solid #FCA5A5 !important;
      border-radius: 12px !important;
      padding: 10px 14px !important;
      font-size: 13.5px !important;
      font-weight: 600 !important;
      text-align: left !important;
      line-height: 1.45 !important;
      margin-bottom: 14px !important;
      box-shadow: 0 2px 10px rgba(220, 38, 38, 0.1) !important;
      align-items: center;
      gap: 10px;
    }

    .login-error.visible {
      display: flex !important;
      animation: shakeLoginError 0.35s ease-in-out;
    }

    .login-error svg {
      flex-shrink: 0;
      color: #DC2626 !important;
    }

    @keyframes shakeLoginError {
      0%, 100% { transform: translateX(0); }
      20%, 60% { transform: translateX(-5px); }
      40%, 80% { transform: translateX(5px); }
    }

    /* Trường input báo lỗi màu đỏ khi sai mật khẩu hoặc thiếu ký tự */
    .login-card .form-input.input-error {
      border-color: #DC2626 !important;
      background-color: #FFF5F5 !important;
      color: #B91C1C !important;
      box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.18) !important;
    }

    .login-card .form-input.input-error::placeholder {
      color: #F87171 !important;
    }

    .auth-input-wrapper:focus-within .input-error ~ .auth-input-prefix-icon,
    .auth-input-wrapper .form-input.input-error ~ .auth-input-prefix-icon,
    .auth-input-wrapper:has(.input-error) .auth-input-prefix-icon {
      color: #DC2626 !important;
    }

    /* Gợi ý lỗi hiển thị chữ đỏ rõ ràng */
    .field-hint-text.field-hint-error {
      color: #DC2626 !important;
      font-weight: 600 !important;
      display: flex;
      align-items: center;
      gap: 4px;
      animation: fadeInError 0.2s ease-in;
    }

    .field-hint-text.field-hint-success {
      color: #0D9488 !important;
      font-weight: 600 !important;
    }

    .field-req-badge.badge-error {
      color: #DC2626 !important;
      background: #FEE2E2 !important;
      border-color: #FCA5A5 !important;
      font-weight: 700 !important;
    }

    .field-req-badge.badge-success {
      color: #0D9488 !important;
      background: #CCFBF1 !important;
      border-color: #99F6E4 !important;
    }

    @keyframes fadeInError {
      from { opacity: 0; transform: translateY(-2px); }
      to { opacity: 1; transform: translateY(0); }
    }


/* ===== FORM INPUTS & FIELD CONTROLS (TỐI ƯU TRƯỜNG NHẬP LIỆU) ===== */
.form-group {
  display: flex;
  flex-direction: column;
  margin-bottom: 16px;
  text-align: left;
  position: relative;
}

.form-label {
  font-size: 13px;
  font-weight: 600;
  color: var(--text-primary);
  margin-bottom: 6px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  letter-spacing: 0.01em;
}

.form-label .required-star {
  color: var(--danger-burgundy);
  margin-left: 3px;
  font-weight: 700;
}

.form-input {
  width: 100%;
  box-sizing: border-box;
  background: #FFFFFF;
  border: 1.5px solid #E2E8F0;
  border-radius: var(--radius-sm, 8px);
  padding: 11px 14px;
  font-family: var(--font-sans);
  font-size: 14.5px;
  color: var(--text-primary);
  outline: none;
  transition: var(--transition-smooth);
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.02);
}

.form-input::placeholder {
  color: #64748B;
  opacity: 0.85;
  font-size: 13.5px;
}

.form-input:hover {
  border-color: #94A3B8;
  background: #FFFFFF;
}

.form-input:focus {
  background: #FFFFFF;
  border-color: #1E293B;
  box-shadow: 0 0 0 3px rgba(30, 41, 59, 0.08);
}

/* Password Input Wrapper with Show/Hide Eye Toggle */
.password-input-wrap {
  position: relative;
  display: flex;
  align-items: center;
  width: 100%;
}

.password-input-wrap .form-input {
  padding-right: 44px;
}

.password-toggle-btn {
  position: absolute;
  right: 10px;
  top: 50%;
  transform: translateY(-50%);
  background: none;
  border: none;
  color: var(--text-secondary);
  cursor: pointer;
  padding: 6px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  border-radius: 4px;
  transition: all 0.2s;
  user-select: none;
}

.password-toggle-btn:hover {
  color: var(--text-primary);
  background: rgba(30, 41, 59, 0.05);
}

/* Custom Select Dropdowns */
select.form-input {
  appearance: none;
  -webkit-appearance: none;
  cursor: pointer;
  padding-right: 38px;
  color: #000000 !important;
  font-weight: 500;
  background-color: #FFFFFF !important;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23000000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
  background-size: 14px;
}

select.form-input option {
  background: #FFFFFF;
  color: #000000 !important;
  padding: 6px;
}

/* Textarea Fields */
textarea.form-input {
  resize: vertical;
  min-height: 84px;
  line-height: 1.55;
}

/* Global Hidden Utility */
.hidden {
  display: none !important;
}

/* User avatar & badges */
.user-avatar-small {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  flex-shrink: 0;
}

.user-avatar-small.admin {
  background: radial-gradient(circle at 35% 35%, #C5A880, #8A6D44);
  box-shadow: 0 0 10px rgba(197, 168, 128, 0.35);
  color: #FFFFFF;
}

.user-avatar-small.user {
  background: var(--bg-surface);
  border: 1px solid var(--border-subtle);
  color: var(--text-primary);
}

.role-badge {
  display: inline-block;
  padding: 2px 7px;
  border-radius: 9999px;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.role-badge.admin {
  background: rgba(197, 168, 128, 0.18);
  color: #8A6D44;
  border: 1px solid rgba(197, 168, 128, 0.35);
}

.role-badge.user-badge {
  background: rgba(46, 58, 47, 0.08);
  color: var(--accent-moss);
  border: 1px solid rgba(46, 58, 47, 0.2);
}

.logout-btn {
  background: none;
  border: 1px solid rgba(136, 19, 55, 0.25);
  border-radius: 6px;
  color: var(--danger-burgundy);
  cursor: pointer;
  font-size: 11px;
  padding: 4px 8px;
  font-family: var(--font-sans);
  transition: var(--transition-smooth);
  flex-shrink: 0;
}

.logout-btn:hover {
  background: rgba(136, 19, 55, 0.08);
  border-color: var(--danger-burgundy);
}

/* Status indicator */
.status-card {
  background: var(--bg-surface-elevated);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  padding: 12px 14px;
  display: flex;
  align-items: center;
  gap: 10px;
  box-shadow: var(--shadow-subtle);
}

.status-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--text-dim);
  flex-shrink: 0;
  transition: background var(--transition-smooth);
}

.status-dot.ok {
  background: #2E7D32;
  box-shadow: 0 0 6px #2E7D32;
  animation: pulse 2s ease-in-out infinite;
}

.status-dot.degraded {
  background: #E8A94A;
  box-shadow: 0 0 6px #E8A94A;
}

.status-dot.error {
  background: var(--danger-burgundy);
  box-shadow: 0 0 6px var(--danger-burgundy);
}

.status-text {
  font-size: 12px;
  color: var(--text-secondary);
}

.status-text strong {
  display: block;
  color: var(--text-primary);
  font-size: 13px;
}

/* Section labels */
.section-label {
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--text-secondary);
  padding: 0 2px;
}

/* Lightbox Modal */
.image-lightbox {
  position: fixed;
  inset: 0;
  z-index: 2000;
  background: rgba(0, 0, 0, 0.88);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  padding: 24px;
}

.image-lightbox.active {
  opacity: 1;
  pointer-events: auto;
}

.lightbox-content {
  position: relative;
  max-width: 90vw;
  max-height: 85vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}

.lightbox-img {
  max-width: 100%;
  max-height: 72vh;
  object-fit: contain;
  border-radius: 12px;
  box-shadow: 0 10px 40px rgba(0, 0, 0, 0.8), 0 0 30px rgba(147, 112, 194, 0.3);
  border: 1px solid rgba(147, 112, 194, 0.3);
}

.lightbox-caption {
  font-size: 14px;
  color: var(--cream);
  text-align: center;
  display: flex;
  align-items: center;
  gap: 10px;
}

.lightbox-caption .lightbox-price {
  color: #ecc96e;
  font-weight: 700;
}

.lightbox-close-btn {
  position: absolute;
  top: -42px;
  right: 0;
  background: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.2);
  color: #fff;
  border-radius: 50%;
  width: 34px;
  height: 34px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  font-size: 15px;
  transition: all 0.2s;
}

.lightbox-close-btn:hover {
  background: rgba(255, 255, 255, 0.25);
  transform: scale(1.1);
}

/* Toast Notifications */
.toast-container {
  position: fixed;
  top: 20px;
  right: 20px;
  z-index: 3000;
  display: flex;
  flex-direction: column;
  gap: 10px;
  pointer-events: none;
}

.toast {
  padding: 12px 18px;
  border-radius: var(--radius-sm);
  font-size: 13px;
  color: #fff;
  background: rgba(23, 19, 31, 0.95);
  border: 1px solid var(--border-bright);
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.5);
  backdrop-filter: blur(10px);
  pointer-events: auto;
  animation: cardSlideUp 0.3s ease both;
  display: flex;
  align-items: center;
  gap: 8px;
}

.toast.success {
  border-color: var(--green);
  color: #8ce99a;
}

.toast.error {
  border-color: var(--red);
  color: #ffa8a8;
}

/* ===== SACRED ANIMATED CANDLE AVATAR SYSTEM ===== */
.candle-anim {
  display: inline-block;
  vertical-align: middle;
  object-fit: contain;
  pointer-events: none;
}

.candle-anim-sm {
  width: 20px;
  height: 24px;
  display: inline-block;
  vertical-align: middle;
  object-fit: contain;
  filter: drop-shadow(0 1px 4px rgba(255, 174, 25, 0.4));
}

.candle-anim-msg {
  width: 24px;
  height: 28px;
  display: inline-block;
  vertical-align: middle;
  object-fit: contain;
  filter: drop-shadow(0 1px 5px rgba(255, 174, 25, 0.5));
}

.candle-anim-topbar {
  width: 30px;
  height: 36px;
  display: inline-block;
  vertical-align: middle;
  object-fit: contain;
  filter: drop-shadow(0 2px 8px rgba(255, 174, 25, 0.4));
}

.candle-anim-logo {
  width: 36px;
  height: 42px;
  display: inline-block;
  vertical-align: middle;
  object-fit: contain;
  filter: drop-shadow(0 2px 10px rgba(255, 174, 25, 0.45));
}

.candle-anim-lg {
  width: 52px;
  height: 62px;
  display: inline-block;
  vertical-align: middle;
  object-fit: contain;
  filter: drop-shadow(0 4px 16px rgba(255, 174, 25, 0.5));
}

.candle-anim-hero {
  width: 74px;
  height: 86px;
  display: inline-block;
  vertical-align: middle;
  object-fit: contain;
  filter: drop-shadow(0 6px 24px rgba(255, 174, 25, 0.55));
  transition: transform 0.3s ease;
}

.candle-anim-hero:hover {
  transform: scale(1.06);
}
