@import url("https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Outfit:wght@400;500;600;700;800;900&display=swap");

:root {
  --learner-font-family: 'Outfit', 'Manrope', -apple-system, sans-serif;
  --learner-paper: var(--portal-page-bg);
  --learner-surface: var(--portal-surface);
  --learner-sand: var(--portal-surface-soft);
  --learner-ink: var(--vibe-ink);
  --learner-muted: var(--vibe-muted);
  --learner-palm: var(--vibe-palm-600);
  --learner-palm-hover: var(--vibe-palm-700);
  --learner-palm-lite: var(--vibe-palm-100);
  --learner-sun: var(--vibe-sun);
  --learner-coral: var(--vibe-coral);
  --learner-coral-lite: var(--vibe-coral-100);
  --learner-ocean: var(--vibe-ocean);
  --learner-border: rgb(var(--vibe-ink-rgb) / 0.12);
  --learner-radius-xl: 20px;
  --learner-radius-2xl: 28px;
}

/* Page Background & Font */
body, .learner-body-bg {
  font-family: var(--learner-font-family) !important;
  background-color: var(--learner-paper) !important;
  color: var(--learner-ink);
  margin: 0;
  padding: 0;
}

.learner-main-bg {
  background-color: var(--learner-paper) !important;
}

/* Typography Colors */
.learner-text-ink { color: var(--learner-ink) !important; }
.learner-text-muted { color: var(--learner-muted) !important; }
.learner-text-palm { color: var(--learner-palm) !important; }

/* Cards & Surfaces */
.learner-card {
  background-color: var(--learner-surface) !important;
  border: 1px solid var(--learner-border) !important;
  border-radius: var(--learner-radius-2xl) !important;
  box-shadow: 0 10px 30px rgb(var(--vibe-shadow-rgb) / 0.03) !important;
}

.learner-card-sand {
  background-color: var(--learner-sand) !important;
  border: 1px solid var(--learner-border) !important;
  border-radius: var(--learner-radius-xl) !important;
}

/* Buttons */
.learner-btn-primary {
  background: linear-gradient(135deg, var(--learner-palm) 0%, var(--learner-palm-hover) 100%) !important;
  color: var(--color-on-primary) !important;
  font-weight: 900 !important;
  border-radius: 18px !important;
  border: none !important;
  box-shadow: 0 6px 18px rgb(var(--vibe-palm-rgb) / 0.25) !important;
  transition: transform 0.2s ease, background-color 0.2s ease !important;
  padding: 14px 28px !important;
  font-size: 15px !important;
  cursor: pointer !important;
  text-decoration: none !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
}

.learner-btn-primary:hover {
  background: linear-gradient(135deg, var(--learner-palm-hover) 0%, var(--learner-ink) 100%) !important;
  transform: translateY(-1px) !important;
}

.learner-btn-secondary {
  background-color: var(--learner-surface) !important;
  color: var(--learner-palm) !important;
  border: 1px solid var(--learner-border) !important;
  border-radius: 18px !important;
  font-weight: 800 !important;
  box-shadow: 0 2px 8px rgb(var(--vibe-shadow-rgb) / 0.04) !important;
  transition: all 0.2s ease !important;
}

.learner-btn-secondary:hover {
  background-color: var(--learner-sand) !important;
}

/* Progress Bars */
.learner-progress-track {
  background-color: var(--learner-sand) !important;
  border: 1px solid var(--learner-border) !important;
  border-radius: 9999px !important;
  overflow: hidden !important;
  padding: 2px !important;
}

.learner-progress-fill {
  height: 100% !important;
  border-radius: 9999px !important;
  background: linear-gradient(90deg, var(--learner-palm) 0%, var(--learner-ocean) 100%) !important;
  transition: width 0.5s ease !important;
}

/* Header Elements */
.learner-brand-icon {
  width: 38px !important;
  height: 38px !important;
  border-radius: 48% 52% 45% 55% !important;
  background: var(--learner-sun) !important;
  color: var(--learner-ink) !important;
  display: grid !important;
  place-items: center !important;
  font-size: 20px !important;
  font-weight: 900 !important;
}

.learner-logout-btn {
  background-color: var(--learner-palm-lite) !important;
  color: var(--learner-palm) !important;
  border: 1px solid var(--learner-border) !important;
  border-radius: 12px !important;
  transition: all 0.2s ease !important;
}

.learner-logout-btn:hover {
  background-color: var(--learner-palm) !important;
  color: var(--color-on-primary) !important;
}

/* Tabs */
.learner-tabs-bar {
  background-color: var(--learner-sand) !important;
  border: 1px solid var(--learner-border) !important;
  border-radius: 20px !important;
  padding: 8px !important;
}

.learner-tab-active {
  background-color: var(--learner-surface) !important;
  color: var(--learner-palm) !important;
  border: 1px solid var(--learner-border) !important;
  box-shadow: 0 4px 14px rgb(var(--vibe-shadow-rgb) / 0.05) !important;
  font-weight: 900 !important;
}

.learner-tab-inactive {
  color: var(--learner-muted) !important;
  font-weight: 700 !important;
}

/* Layout Shell & Sidebar Structure */
.learner-layout-shell {
  display: flex !important;
  flex-direction: row !important;
  min-height: 100vh !important;
  width: 100% !important;
  background-color: var(--learner-paper) !important;
  position: relative !important;
}

/* Fixed 100vh Sticky Sidebar */
.learner-sidebar {
  position: sticky !important;
  top: 0 !important;
  height: 100vh !important;
  max-height: 100vh !important;
  width: 280px !important;
  min-width: 280px !important;
  max-width: 280px !important;
  background-color: var(--learner-surface) !important;
  border-right: 1px solid var(--learner-border) !important;
  padding: 20px !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: space-between !important;
  box-sizing: border-box !important;
  flex-shrink: 0 !important;
  z-index: 30 !important;
  overflow: hidden !important;
}

.learner-sidebar-top {
  flex-shrink: 0 !important;
}

.learner-sidebar-nav {
  flex: 1 1 auto !important;
  overflow-y: auto !important;
  min-height: 0 !important;
  margin-top: 16px !important;
  margin-bottom: 16px !important;
  padding-right: 2px !important;
}

.learner-sidebar-bottom {
  flex-shrink: 0 !important;
  padding-top: 16px !important;
  border-top: 1px solid var(--learner-border) !important;
}

.learner-main-content {
  flex: 1 1 auto !important;
  min-width: 0 !important;
  width: calc(100% - 280px) !important;
  padding: 32px 28px !important;
  box-sizing: border-box !important;
  background-color: var(--learner-paper) !important;
  min-height: 100vh !important;
}

/* Portal pages own their readable widths. The shared shell remains full-width
   and left-aligned so headings and page cards share the same content edge. */
.portal-shell-content {
  width: 100%;
  min-width: 0;
  margin: 0;
}

.portal-page-header {
  width: 100%;
  text-align: left;
  flex-direction: row !important;
  align-items: center !important;
  justify-content: space-between !important;
}

@media (max-width: 639px) {
  .portal-page-header {
    flex-direction: column !important;
    align-items: flex-start !important;
  }
}

/* Learner Subject Items */
.learner-subject-row {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  padding: 16px 20px !important;
  border-radius: 20px !important;
  border: 1px solid var(--learner-border) !important;
  transition: all 0.2s ease !important;
  margin-bottom: 12px !important;
  width: 100% !important;
  box-sizing: border-box !important;
  background-color: var(--learner-surface);
  overflow: hidden !important;
  gap: 16px !important;
}

.learner-subject-row.is-active {
  background-color: var(--learner-palm-lite) !important;
  border: 1.5px solid var(--learner-palm) !important;
}

.learner-subject-row.is-completed {
  background-color: var(--learner-surface) !important;
  opacity: 0.9 !important;
}

.learner-subject-row.is-pending {
  background-color: var(--learner-paper) !important;
}

/* Mobile Top Header & Responsive Drawer */
.learner-mobile-bar {
  display: none !important;
}

@media (max-width: 767px) {
  .learner-layout-shell {
    flex-direction: column !important;
  }

  .learner-mobile-bar {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    padding: 12px 16px !important;
    background-color: var(--learner-surface) !important;
    border-bottom: 1px solid var(--learner-border) !important;
    position: sticky !important;
    top: 0 !important;
    z-index: 40 !important;
  }

  .learner-mobile-brand {
    min-width: 0;
  }

  .learner-sidebar {
    position: fixed !important;
    top: 0 !important;
    left: -300px !important;
    bottom: 0 !important;
    width: 280px !important;
    height: 100vh !important;
    z-index: 50 !important;
    transition: left 0.25s ease-in-out !important;
    box-shadow: 4px 0 20px rgb(var(--vibe-shadow-rgb) / 0.15) !important;
  }

  .learner-sidebar.is-mobile-open {
    left: 0 !important;
  }

  .learner-main-content {
    width: 100% !important;
    padding: 20px 16px !important;
  }
}

@media (max-width: 400px) {
  .learner-mobile-brand-copy {
    display: none;
  }
}

/* Form Controls */
.form-control {
  width: 100%;
  padding: 10px 14px;
  font-size: 14px;
  font-family: inherit;
  color: var(--learner-ink);
  background-color: var(--learner-surface);
  border: 1px solid var(--learner-border);
  border-radius: 12px;
  box-sizing: border-box;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.form-control:focus {
  outline: none;
  border-color: var(--learner-palm);
  box-shadow: 0 0 0 3px rgb(var(--vibe-palm-rgb) / 0.15);
}

select.form-control {
  appearance: auto;
  cursor: pointer;
}

textarea.form-control {
  resize: vertical;
}

.learner-lesson-nav > * {
  max-width: 100%;
}

.learner-lesson-nav span {
  min-width: 0;
  overflow-wrap: anywhere;
}

@media (max-width: 639px) {
  .learner-lesson-nav {
    align-items: stretch !important;
    flex-direction: column !important;
  }

  .learner-lesson-nav > * {
    width: 100%;
    justify-content: center;
  }
}
