/* SPACC24 design system — loaded after the legacy theme so it restyles every page */
:root {
  --sp-ink: #111114;
  --sp-ink-2: #3a3a42;
  --sp-muted: #7a7a85;
  --sp-line: #e7e5e0;
  --sp-bg: #f7f6f3;
  --sp-surface: #ffffff;
  --sp-primary: #111114;
  --sp-primary-600: #2a2a30;
  --sp-primary-50: #efeeea;
  --sp-pink: #fe2c55;
  --sp-pink-50: #ffecf0;
  --sp-green: #12b76a;
  --sp-green-50: #e7f8ef;
  --sp-amber: #f79009;
  --sp-red: #f04438;
  --sp-grad: #fe2c55;
  --sp-accent: #fe2c55;
  --sp-accent-600: #e5173f;
  --sp-cyan: #10c7d8;
  --sp-radius: 16px;
  --sp-radius-sm: 10px;
  --sp-shadow: 0 1px 2px rgba(21, 17, 43, .04), 0 8px 24px -12px rgba(21, 17, 43, .12);
  --sp-shadow-lg: 0 10px 30px -14px rgba(17, 17, 20, .28);
  --sp-font: 'Noto Sans Thai', 'IBM Plex Sans Thai', system-ui, sans-serif;
  --sp-head: 'Kanit', 'Noto Sans Thai', sans-serif;

  /* map onto bootstrap / modernize variables */
  --bs-primary: #111114;
  --bs-primary-rgb: 17, 17, 20;
  --bs-link-color: #111114;
  --bs-body-font-family: var(--sp-font);
  --bs-body-color: var(--sp-ink-2);
  --bs-body-bg: var(--sp-bg);
  --bs-border-color: var(--sp-line);
  --bs-border-radius: var(--sp-radius-sm);
}

html { scroll-behavior: smooth; }
body {
  font-family: var(--sp-font) !important;
  background: var(--sp-bg) !important;
  color: var(--sp-ink-2);
  font-size: 15px;
  -webkit-font-smoothing: antialiased;
}
h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
  font-family: var(--sp-head) !important;
  color: var(--sp-ink);
  letter-spacing: -.01em;
}
a { color: var(--sp-primary); }
.text-primary { color: var(--sp-primary) !important; }
.bg-primary { background-color: var(--sp-primary) !important; }
.text-muted { color: var(--sp-muted) !important; }

/* legacy wrapper spacing */
.page-wrapper .body-wrapper { padding-top: 0 !important; background: transparent !important; }
.page-wrapper { background: transparent !important; }
.body-wrapper > .container, .body-wrapper .container-fluid { max-width: 1200px; }

/* ---------- buttons ---------- */
.btn {
  border-radius: 12px !important;
  font-weight: 600;
  padding: .6rem 1.15rem;
  transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
}
.btn:active { transform: translateY(1px); }
.btn-primary {
  background: var(--sp-primary) !important;
  border-color: var(--sp-primary) !important;
  color: #fff !important;
  box-shadow: none;
}
.btn-primary:hover { background: var(--sp-primary-600) !important; }
.btn-light-primary, .btn-outline-primary {
  background: var(--sp-primary-50) !important;
  border-color: transparent !important;
  color: var(--sp-primary) !important;
}
.btn-success { background: var(--sp-green) !important; border-color: var(--sp-green) !important; }
.btn-danger { background: var(--sp-red) !important; border-color: var(--sp-red) !important; }
.btn-dark { background: var(--sp-ink) !important; border-color: var(--sp-ink) !important; }
.btn-accent, .btn-grad {
  background: var(--sp-accent) !important;
  color: #fff !important;
  border: 0 !important;
  box-shadow: var(--sp-shadow-lg);
}

/* ---------- cards ---------- */
.card {
  border: 1px solid var(--sp-line) !important;
  border-radius: var(--sp-radius) !important;
  box-shadow: var(--sp-shadow) !important;
  background: var(--sp-surface);
  overflow: hidden;
}
.card-header { background: transparent !important; border-bottom: 1px solid var(--sp-line) !important; }
.card-title { font-family: var(--sp-head); color: var(--sp-ink); }

/* ---------- forms ---------- */
.form-control, .form-select {
  border-radius: 12px !important;
  border: 1px solid var(--sp-line) !important;
  padding: .65rem .9rem;
  background-color: #fff;
}
.form-control:focus, .form-select:focus {
  border-color: var(--sp-primary) !important;
  box-shadow: 0 0 0 4px rgba(17, 17, 20, .08) !important;
}
.form-label { font-weight: 600; color: var(--sp-ink); }

/* ---------- tables ---------- */
.table { --bs-table-bg: transparent; }
.table > thead th {
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--sp-muted) !important;
  background: #faf9fe !important;
  border-bottom: 1px solid var(--sp-line) !important;
  font-weight: 600;
}
.table > tbody td { border-color: var(--sp-line) !important; vertical-align: middle; }
.dataTables_wrapper .dataTables_filter input, .dataTables_wrapper .dataTables_length select {
  border-radius: 10px; border: 1px solid var(--sp-line); padding: .35rem .6rem;
}
.page-item.active .page-link { background: var(--sp-primary) !important; border-color: var(--sp-primary) !important; }
.page-link { border-radius: 8px !important; margin: 0 2px; }

.badge { border-radius: 999px; font-weight: 600; padding: .35em .7em; }
.alert { border-radius: var(--sp-radius-sm) !important; border: 0 !important; }
.modal-content { border-radius: 20px !important; border: 0 !important; box-shadow: 0 30px 80px -20px rgba(21,17,43,.35) !important; }
.nav-pills .nav-link { border-radius: 999px !important; }
.nav-pills .nav-link.active { background: var(--sp-primary) !important; color: #fff !important; }
.swal2-popup { border-radius: 20px !important; font-family: var(--sp-font) !important; }
.swal2-styled.swal2-confirm { background: var(--sp-primary) !important; border-radius: 12px !important; }

/* ---------- header ---------- */
.sp-header {
  position: sticky; top: 0; z-index: 1030;
  background: rgba(255, 255, 255, .85);
  backdrop-filter: saturate(180%) blur(14px);
  border-bottom: 1px solid var(--sp-line);
}
.sp-header .sp-nav { height: 68px; display: flex; align-items: center; gap: 24px; max-width: 1200px; margin: 0 auto; padding: 0 16px; }
.sp-logo img { height: 34px; width: auto; display: block; }
.sp-menu { display: flex; align-items: center; gap: 4px; margin: 0; padding: 0; list-style: none; }
.sp-menu > li > a, .sp-menu > li > button {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 8px 12px; border-radius: 10px;
  color: var(--sp-ink-2); font-weight: 500; text-decoration: none;
  background: none; border: 0; font-size: 15px;
}
.sp-menu > li > a:hover, .sp-menu > li > button:hover, .sp-menu > li > a.active { background: var(--sp-primary-50); color: var(--sp-primary); }
.sp-mega {
  min-width: 340px; padding: 10px !important; border-radius: 18px !important;
  border: 1px solid var(--sp-line) !important; box-shadow: 0 24px 60px -20px rgba(21,17,43,.25) !important;
}
.sp-mega a { display: flex; gap: 12px; align-items: center; padding: 10px 12px; border-radius: 12px; text-decoration: none; }
.sp-mega a:hover { background: var(--sp-bg); }
.sp-mega .ic { width: 40px; height: 40px; border-radius: 12px; display: grid; place-items: center; background: var(--sp-pink-50); color: var(--sp-accent); font-size: 20px; flex: none; }
.sp-mega .t { font-weight: 600; color: var(--sp-ink); line-height: 1.2; }
.sp-mega .s { font-size: 12.5px; color: var(--sp-muted); }
.sp-right { margin-left: auto; display: flex; align-items: center; gap: 10px; }
.sp-wallet {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 7px 8px 7px 14px; border-radius: 999px;
  background: var(--sp-primary-50); color: var(--sp-primary); font-weight: 700; text-decoration: none;
}
.sp-wallet .plus { width: 26px; height: 26px; border-radius: 50%; background: var(--sp-accent); color: #fff; display: grid; place-items: center; font-size: 14px; }
.sp-avatar { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; border: 2px solid #fff; box-shadow: 0 0 0 2px var(--sp-primary-50); }
.sp-user-menu { width: 300px; padding: 0 !important; border-radius: 18px !important; overflow: hidden; border: 1px solid var(--sp-line) !important; box-shadow: 0 24px 60px -20px rgba(21,17,43,.25) !important; }
.sp-user-head { padding: 18px; background: var(--sp-ink); color: #fff; display: flex; gap: 12px; align-items: center; }
.sp-user-head .n { font-weight: 700; font-size: 16px; }
.sp-user-head .e { font-size: 12.5px; opacity: .85; word-break: break-all; }
.sp-user-head .r { display: inline-block; margin-top: 4px; font-size: 11px; padding: 2px 8px; border-radius: 999px; background: rgba(255,255,255,.22); }
.sp-user-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: var(--sp-line); }
.sp-user-stats div { background: #fff; padding: 12px 16px; }
.sp-user-stats small { display: block; color: var(--sp-muted); font-size: 12px; }
.sp-user-stats b { color: var(--sp-ink); font-size: 16px; }
.sp-user-links { padding: 8px; }
.sp-user-links a { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 10px; color: var(--sp-ink-2); text-decoration: none; font-weight: 500; }
.sp-user-links a:hover { background: var(--sp-bg); color: var(--sp-primary); }
.sp-user-links a.danger { color: var(--sp-red); }
.sp-burger { display: none; border: 0; background: var(--sp-bg); width: 42px; height: 42px; border-radius: 12px; font-size: 20px; color: var(--sp-ink); }
@media (max-width: 991px) {
  .sp-menu { display: none; }
  .sp-burger { display: grid; place-items: center; }
  .sp-header .sp-nav { height: 62px; gap: 12px; }
  .sp-logo img { height: 30px; }
  .sp-hide-sm { display: none !important; }
}

/* mobile drawer + bottom bar */
.sp-drawer { width: 300px !important; border: 0 !important; }
.sp-drawer .offcanvas-body a { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border-radius: 12px; color: var(--sp-ink-2); text-decoration: none; font-weight: 500; }
.sp-drawer .offcanvas-body a:hover { background: var(--sp-bg); }
.sp-drawer .grp { font-size: 12px; color: var(--sp-muted); text-transform: uppercase; letter-spacing: .06em; margin: 14px 14px 4px; }
.sp-tabbar { display: none; }
@media (max-width: 767px) {
  .sp-tabbar {
    display: grid; grid-template-columns: repeat(5, 1fr);
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 1030;
    background: rgba(255,255,255,.95); backdrop-filter: blur(12px);
    border-top: 1px solid var(--sp-line); padding: 6px 4px calc(6px + env(safe-area-inset-bottom));
  }
  .sp-tabbar a { display: flex; flex-direction: column; align-items: center; gap: 2px; font-size: 11px; color: var(--sp-muted); text-decoration: none; padding: 4px 0; }
  .sp-tabbar a i { font-size: 21px; }
  .sp-tabbar a.active { color: var(--sp-primary); }
  .sp-tabbar a.mid i { width: 46px; height: 46px; margin-top: -22px; border-radius: 16px; background: var(--sp-accent); color: #fff; display: grid; place-items: center; box-shadow: var(--sp-shadow-lg); }
  body { padding-bottom: 76px; }
  .sp-line-fab { bottom: 88px !important; right: 16px !important; }
}

/* LINE floating button */
.sp-line-fab { position: fixed; right: 24px; bottom: 24px; z-index: 1029; width: 56px; height: 56px; border-radius: 18px; background: #06c755; display: grid; place-items: center; box-shadow: 0 12px 30px -10px rgba(6,199,85,.8); transition: transform .15s; }
.sp-line-fab:hover { transform: translateY(-2px); }
.sp-line-fab img { width: 34px; height: 34px; filter: brightness(0) invert(1); }

/* ---------- footer ---------- */
.sp-footer { margin-top: 64px; background: var(--sp-ink); color: #c9c6dc; }
.sp-footer .inner { max-width: 1200px; margin: 0 auto; padding: 48px 16px 28px; display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 32px; }
.sp-footer h6 { color: #fff !important; font-size: 14px; margin-bottom: 14px; }
.sp-footer a { color: #c9c6dc; text-decoration: none; display: block; padding: 4px 0; font-size: 14px; }
.sp-footer a:hover { color: #fff; }
.sp-footer .brand img { height: 40px; background: #fff; border-radius: 10px; padding: 6px 10px; }
.sp-footer .brand p { margin-top: 14px; font-size: 14px; line-height: 1.7; }
.sp-footer .pay { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 14px; }
.sp-footer .pay span { font-size: 12px; padding: 4px 10px; border-radius: 999px; background: rgba(255,255,255,.08); color: #e6e4f2; }
.sp-footer .bottom { border-top: 1px solid rgba(255,255,255,.08); }
.sp-footer .bottom .in { max-width: 1200px; margin: 0 auto; padding: 16px; display: flex; flex-wrap: wrap; gap: 8px 16px; justify-content: space-between; font-size: 13px; }
.sp-footer .bottom .links a { display: inline; padding: 0; margin-right: 12px; opacity: .7; font-size: 12.5px; }
@media (max-width: 767px) {
  .sp-footer .inner { grid-template-columns: 1fr 1fr; }
  .sp-footer .brand { grid-column: 1 / -1; }
}

/* ---------- shared page bits ---------- */
.sp-container { max-width: 1200px; margin: 0 auto; padding: 0 16px; }
.sp-section { margin-top: 48px; }
.sp-section-head { display: flex; align-items: end; justify-content: space-between; gap: 12px; margin-bottom: 18px; }
.sp-section-head h2 { font-size: 26px; margin: 0; }
.sp-section-head p { margin: 4px 0 0; color: var(--sp-muted); }
.sp-eyebrow { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; color: var(--sp-accent); background: var(--sp-pink-50); padding: 5px 12px; border-radius: 999px; }
.sp-page-title { padding: 28px 0 8px; }
.sp-page-title h1 { font-size: 30px; margin: 0; }
.sp-page-title p { color: var(--sp-muted); margin: 6px 0 0; }
.body-wrapper > .container:empty { display: none !important; }
/* legacy pages render straight into .body-wrapper: give them the site width */
.body-wrapper > .row, .body-wrapper > .card, .body-wrapper > .container-fluid, .body-wrapper > div[data-aos], .body-wrapper > marquee { max-width: 1200px; margin-left: auto !important; margin-right: auto !important; }
.body-wrapper { padding: 0 16px 0; }
.body-wrapper > .sp-container { padding: 0; }
