:root {
  --steel-blue: #3B699A;
  --steel-blue-dark: #2C4F78;
  --marigold: #F9C067;
  --marigold-dark: #E8A83F;
  --warm-cream: #FBF3E6;
  --warm-cream-alt: #F5E9D6;
  --ink: #2B2620;
  --ink-soft: #5A5148;
  --white: #FFFFFF;
  --radius: 16px;
  --shadow: 0 8px 30px rgba(59, 105, 154, 0.12);
}

* { box-sizing: border-box; }

body {
  margin: 0;
  font-family: 'Sarabun', sans-serif;
  background: var(--warm-cream);
  color: var(--ink);
  line-height: 1.6;
  min-height: 100vh;
}

/* ===== TOP BAR ===== */
.topbar {
  background: var(--warm-cream);
  padding: 14px 24px;
  border-bottom: 1px solid rgba(43, 38, 32, 0.08);
}

.topbar-inner {
  max-width: 1120px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  gap: 16px;
}

.topbar-logo {
  height: 40px;
  width: auto;
}

.topbar-title {
  font-family: 'Kanit', sans-serif;
  font-weight: 600;
  color: var(--steel-blue-dark);
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 1.05rem;
}

.topbar-glasses {
  font-size: 1.3rem;
}

/* ===== LAYOUT ===== */
.player-shell {
  max-width: 1120px;
  margin: 0 auto;
  padding: 24px;
  display: grid;
  grid-template-columns: 320px 1fr;
  gap: 24px;
  align-items: start;
}

@media (max-width: 860px) {
  .player-shell {
    grid-template-columns: 1fr;
  }
}

/* ===== CHAPTER NAV ===== */
.chapter-nav {
  background: var(--white);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  overflow: hidden;
  max-height: 75vh;
  display: flex;
  flex-direction: column;
}

.chapter-nav-header {
  font-family: 'Kanit', sans-serif;
  font-weight: 600;
  color: var(--steel-blue-dark);
  padding: 18px 20px;
  border-bottom: 1px solid var(--warm-cream-alt);
}

.chapter-list {
  overflow-y: auto;
  padding: 8px;
}

.loading {
  padding: 24px;
  text-align: center;
  color: var(--ink-soft);
}

.chapter-group {
  margin-bottom: 4px;
}

.chapter-heading {
  font-family: 'Kanit', sans-serif;
  font-weight: 600;
  font-size: 0.95rem;
  color: var(--steel-blue-dark);
  padding: 10px 12px;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 8px;
  border-radius: 10px;
}

.chapter-heading:hover {
  background: var(--warm-cream-alt);
}

.chapter-heading .arrow {
  margin-left: auto;
  transition: transform 0.2s ease;
  color: var(--ink-soft);
  font-size: 0.8rem;
}

.chapter-group.collapsed .arrow {
  transform: rotate(-90deg);
}

.chapter-group.collapsed .core-list {
  display: none;
}

.core-list {
  padding-left: 10px;
}

.core-group {
  margin-bottom: 2px;
}

.core-heading {
  font-family: 'Kanit', sans-serif;
  font-weight: 500;
  font-size: 0.85rem;
  color: var(--ink-soft);
  padding: 7px 12px 7px 22px;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 8px;
  border-radius: 8px;
}

.core-heading:hover {
  background: var(--warm-cream-alt);
}

.core-heading .arrow {
  margin-left: auto;
  transition: transform 0.2s ease;
  font-size: 0.75rem;
}

.core-group.collapsed .arrow {
  transform: rotate(-90deg);
}

.core-group.collapsed .track-list {
  display: none;
}

.track-list {
  list-style: none;
  margin: 0;
  padding: 0 0 6px;
}

.track-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px 8px 46px;
  border-radius: 10px;
  cursor: pointer;
  font-size: 0.9rem;
  color: var(--ink);
}

.track-item:hover {
  background: var(--warm-cream-alt);
}

.track-item.active {
  background: var(--steel-blue);
  color: var(--white);
}

.track-item .track-icon {
  font-size: 0.85rem;
  flex-shrink: 0;
}

/* ===== PLAYER MAIN ===== */
.player-main {
  background: var(--white);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 28px;
}

.now-playing-card {
  display: flex;
  align-items: center;
  gap: 18px;
  padding-bottom: 20px;
  border-bottom: 1px solid var(--warm-cream-alt);
  margin-bottom: 24px;
}

.now-playing-icon {
  font-size: 2.4rem;
  background: linear-gradient(160deg, var(--steel-blue) 0%, var(--steel-blue-dark) 100%);
  width: 64px;
  height: 64px;
  border-radius: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.now-playing-chapter {
  font-size: 0.85rem;
  color: var(--ink-soft);
  margin-bottom: 4px;
}

.now-playing-title {
  font-family: 'Kanit', sans-serif;
  font-weight: 600;
  font-size: 1.3rem;
  color: var(--steel-blue-dark);
}

.controls {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 16px;
}

.ctrl-btn {
  border: none;
  background: var(--warm-cream-alt);
  color: var(--steel-blue-dark);
  width: 46px;
  height: 46px;
  border-radius: 50%;
  font-size: 1.1rem;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.2s ease;
}

.ctrl-btn:hover {
  background: var(--marigold);
}

.ctrl-btn-main {
  width: 58px;
  height: 58px;
  background: var(--steel-blue);
  color: var(--white);
  font-size: 1.4rem;
}

.ctrl-btn-main:hover {
  background: var(--steel-blue-dark);
}

.seek-row {
  flex: 1 1 220px;
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 220px;
}

.seek-row input[type="range"] {
  flex: 1;
  accent-color: var(--steel-blue);
}

#time-current, #time-duration {
  font-size: 0.82rem;
  color: var(--ink-soft);
  min-width: 38px;
}

.speed-row {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.85rem;
  color: var(--ink-soft);
}

.speed-row select {
  font-family: 'Sarabun', sans-serif;
  border: 1px solid var(--warm-cream-alt);
  border-radius: 8px;
  padding: 4px 8px;
  background: var(--white);
  color: var(--ink);
}

.repeat-row {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.85rem;
  color: var(--ink-soft);
}

.repeat-row select {
  font-family: 'Sarabun', sans-serif;
  border: 1px solid var(--warm-cream-alt);
  border-radius: 8px;
  padding: 4px 8px;
  background: var(--white);
  color: var(--ink);
}

.repeat-count {
  font-size: 0.8rem;
  color: var(--marigold-dark);
  font-weight: 600;
}

/* ===== invalid link page ===== */
.invalid-shell {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 24px;
}

.invalid-card {
  background: var(--white);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 48px 32px;
  max-width: 420px;
}

.invalid-icon {
  font-size: 3rem;
  margin-bottom: 16px;
}

.invalid-card h1 {
  font-family: 'Kanit', sans-serif;
  color: var(--steel-blue-dark);
  font-size: 1.4rem;
  margin: 0 0 12px;
}

.invalid-card p {
  color: var(--ink-soft);
  margin: 0;
}

/* ===== auth forms (login / activate / forgot / reset) ===== */
.form-shell {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
}

.form-card {
  background: var(--white);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 40px 32px;
  max-width: 380px;
  width: 100%;
}

.form-card .form-icon {
  font-size: 2.4rem;
  text-align: center;
  margin-bottom: 12px;
}

.form-card h1 {
  font-family: 'Kanit', sans-serif;
  color: var(--steel-blue-dark);
  font-size: 1.3rem;
  margin: 0 0 20px;
  text-align: center;
}

.form-card label {
  display: block;
  font-size: 0.85rem;
  color: var(--ink-soft);
  margin: 14px 0 6px;
}

.form-card input {
  width: 100%;
  font-family: 'Sarabun', sans-serif;
  font-size: 0.95rem;
  padding: 10px 12px;
  border: 1px solid var(--warm-cream-alt);
  border-radius: 8px;
  background: var(--warm-cream);
  color: var(--ink);
}

.form-card button {
  width: 100%;
  margin-top: 20px;
  padding: 12px;
  border: none;
  border-radius: 10px;
  background: var(--steel-blue);
  color: var(--white);
  font-family: 'Kanit', sans-serif;
  font-weight: 600;
  font-size: 0.95rem;
  cursor: pointer;
  transition: background 0.2s ease;
}

.form-card button:hover {
  background: var(--steel-blue-dark);
}

.form-links {
  margin-top: 16px;
  text-align: center;
  font-size: 0.85rem;
}

.form-links a {
  color: var(--steel-blue);
  text-decoration: none;
}

.form-msg {
  margin-top: 14px;
  font-size: 0.85rem;
  text-align: center;
  min-height: 1.2em;
}

.form-msg.error { color: #C0392B; }
.form-msg.success { color: #2E7D32; }

/* ===== dashboard ===== */
.dashboard-shell {
  max-width: 900px;
  margin: 0 auto;
  padding: 24px;
}

.dashboard-heading {
  font-family: 'Kanit', sans-serif;
  font-weight: 600;
  font-size: 1.3rem;
  color: var(--steel-blue-dark);
  margin-bottom: 20px;
}

.course-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 16px;
}

.course-card {
  background: var(--white);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 22px;
  text-decoration: none;
  color: var(--ink);
  display: block;
  transition: transform 0.15s ease;
}

.course-card:hover {
  transform: translateY(-2px);
}

.course-card .course-icon {
  font-size: 1.8rem;
  margin-bottom: 10px;
}

.course-card .course-name {
  font-family: 'Kanit', sans-serif;
  font-weight: 600;
  color: var(--steel-blue-dark);
  margin-bottom: 4px;
}

.course-card .course-via {
  font-size: 0.8rem;
  color: var(--ink-soft);
}

.org-links {
  margin-top: 28px;
}

.org-links a {
  display: inline-block;
  margin-right: 12px;
  color: var(--steel-blue);
  font-size: 0.9rem;
}

/* ===== org / executive dashboard ===== */
.org-table {
  width: 100%;
  border-collapse: collapse;
  background: var(--white);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  overflow: hidden;
}

.org-table th, .org-table td {
  text-align: left;
  padding: 10px 14px;
  border-bottom: 1px solid var(--warm-cream-alt);
  font-size: 0.9rem;
}

.org-table th {
  font-family: 'Kanit', sans-serif;
  color: var(--steel-blue-dark);
  background: var(--warm-cream-alt);
}

.invite-box {
  margin-top: 24px;
  background: var(--white);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 20px;
}

.invite-box textarea {
  width: 100%;
  min-height: 80px;
  font-family: 'Sarabun', sans-serif;
  padding: 10px;
  border: 1px solid var(--warm-cream-alt);
  border-radius: 8px;
  background: var(--warm-cream);
  color: var(--ink);
}

.invite-box button {
  margin-top: 10px;
  padding: 10px 20px;
  border: none;
  border-radius: 8px;
  background: var(--steel-blue);
  color: var(--white);
  font-family: 'Kanit', sans-serif;
  font-weight: 600;
  cursor: pointer;
}

.topbar-actions {
  margin-left: auto;
  display: flex;
  gap: 14px;
  align-items: center;
}

.topbar-actions a {
  color: var(--steel-blue);
  text-decoration: none;
  font-size: 0.9rem;
}
