/* Styles for Classroom component */
@layer components {
  /* ─────────────────────────────────────────────
     LAYOUT SHELL
  ───────────────────────────────────────────── */
  .classroom {
    display: flex;
    flex-direction: column;
    min-height: 100vh;

    /* ─── HERO ─── */
    & .classroom__hero {
      position: relative;
      min-height: 65vh;
      display: flex;
      align-items: center;
      justify-content: center;
      text-align: center;
      overflow: hidden;
      background: radial-gradient(ellipse at 50% 25%, #1d2235 0%, #0b0d17 70%);
      color: #ffffff;
      padding: var(--space-2xl) var(--space-m);

      &[data-variant="dark"] {
        background: radial-gradient(ellipse at 50% 25%, #151823 0%, #07080f 70%);
      }
    }

    & .classroom__hero-decoration {
      position: absolute;
      inset: 0;
      display: flex;
      align-items: center;
      justify-content: center;
      pointer-events: none;
      z-index: 0;
    }

    & .classroom__strings-svg {
      width: 100%;
      height: 100%;
      max-width: 900px;
      opacity: 0.6;
    }

    & .classroom__hero-content {
      position: relative;
      z-index: 1;
      max-width: 680px;
      margin-inline: auto;
      animation: classroomFadeUp 0.8s ease-out both;
    }

    & .classroom__hero-overline {
      font-family: var(--font-serif);
      font-size: var(--size-step-0);
      color: var(--color-primary);
      text-transform: uppercase;
      letter-spacing: 0.2em;
      margin-bottom: var(--space-s);
      opacity: 0.85;
    }

    & .classroom__hero-title {
      font-family: var(--font-serif);
      font-size: clamp(2.5rem, 6vw, 4rem);
      line-height: 1.1;
      color: var(--color-primary);
      text-shadow: 0 2px 20px rgba(0, 0, 0, 0.6);
      margin-bottom: var(--space-m);
    }

    & .classroom__hero-subtitle {
      font-size: var(--size-step-1);
      color: #d0d0d0;
      max-width: 55ch;
      margin-inline: auto;
      margin-bottom: var(--space-xl);
      line-height: 1.6;
    }

    & .classroom__hero-stats {
      display: flex;
      justify-content: center;
      gap: var(--space-xl);
      flex-wrap: wrap;
    }

    & .hero-stat {
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: var(--space-2xs);
      padding: var(--space-s) var(--space-m);
      border: 1px solid color-mix(in oklab, var(--color-primary) 25%, transparent);
      border-radius: var(--radius-m);
      background: color-mix(in oklab, var(--color-primary) 6%, transparent);
      backdrop-filter: blur(4px);
      min-width: 80px;
    }

    & .hero-stat__number {
      font-family: var(--font-serif);
      font-size: var(--size-step-3);
      font-weight: bold;
      color: var(--color-primary);
      line-height: 1;
    }

    & .hero-stat__label {
      font-size: 0.75rem;
      text-transform: uppercase;
      letter-spacing: 0.08em;
      opacity: 0.7;
      color: #c0c0c0;
    }

    /* ─── SHARED SECTION HEADER ─── */
    & .classroom__section-header {
      text-align: center;
      margin-bottom: var(--space-2xl);
    }

    & .classroom__section-overline {
      font-family: var(--font-serif);
      font-size: var(--size-step-0);
      color: var(--color-primary);
      text-transform: uppercase;
      letter-spacing: 0.18em;
      margin-bottom: var(--space-xs);
      opacity: 0.85;
    }

    & .classroom__section-title {
      font-family: var(--font-serif);
      font-size: clamp(1.6rem, 4vw, 2.8rem);
      color: var(--color-text);
      margin-bottom: var(--space-s);
      line-height: 1.2;
    }

    & .classroom__section-subtitle {
      font-size: var(--size-step-0);
      color: var(--color-text);
      opacity: 0.7;
      max-width: 60ch;
      margin-inline: auto;
      line-height: 1.6;
    }

    /* ─── PATHS SECTION ─── */
    & .classroom__paths {
      padding-block: var(--space-2xl);
      background: var(--color-surface);
      position: relative;
      overflow: hidden;

      &::before {
        content: "";
        position: absolute;
        inset: 0;
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='40' viewBox='0 0 80 40' fill='none' stroke='%23C2A66B' stroke-width='1' opacity='0.15'%3E%3Cpath d='M0 20h10v-10h20v20h-15v-5h10v-5h-15v15h25v-25h15v10h20v20h-15v-5h10v-5h-15v15h25v-25h10'/%3E%3C/svg%3E");
        background-repeat: repeat;
        opacity: 0.05;
        pointer-events: none;
      }

      &[data-variant="dark"] {
        background: var(--color-surface-variant);
      }
    }

    & .paths-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
      gap: var(--space-xl);
      margin-bottom: var(--space-xl);
    }

    & .path-card {
      display: flex;
      flex-direction: column;
      background: var(--color-surface-variant);
      border: 1px solid color-mix(in oklab, var(--color-primary) 15%, transparent);
      border-radius: var(--radius-m);
      overflow: hidden;
      transition: transform 0.4s ease, box-shadow 0.4s ease, border-color 0.3s ease;
      box-shadow: var(--shadow-m);

      &:hover {
        transform: translateY(-8px);
        box-shadow: 0 24px 40px -8px rgba(0, 0, 0, 0.4),
                    0 0 0 1px color-mix(in oklab, var(--color-primary) 40%, transparent);
        border-color: color-mix(in oklab, var(--color-primary) 40%, transparent);
      }

      &[data-variant="dark"] {
        background: color-mix(in oklab, var(--color-surface) 80%, black);
      }
    }

    & .path-card__visual {
      position: relative;
      height: 200px;
      overflow: hidden;
      isolation: isolate;
    }

    & .path-card__img {
      width: 100%;
      height: 100%;
      object-fit: cover;
      display: block;
      transform: scale(1);
      transition: transform 0.6s ease;
      will-change: transform;
      backface-visibility: hidden;

      .path-card:hover & {
        transform: scale(1.05);
      }
    }

    & .path-card__overlay {
      position: absolute;
      inset: -1px;
      pointer-events: none;
      background: linear-gradient(
        to bottom,
        color-mix(in oklab, black 10%, transparent) 0%,
        color-mix(in oklab, black 50%, transparent) 100%
      );

      .path-card[data-path="game"] & {
        background: linear-gradient(
          to bottom,
          color-mix(in oklab, #1a3320 20%, transparent) 0%,
          color-mix(in oklab, #0d1f15 70%, transparent) 100%
        );
      }

      .path-card[data-path="academy"] & {
        background: linear-gradient(
          to bottom,
          color-mix(in oklab, #2a1f0a 20%, transparent) 0%,
          color-mix(in oklab, #1a1206 70%, transparent) 100%
        );
      }
    }

    & .path-card__badge-top {
      position: absolute;
      top: var(--space-m);
      right: var(--space-m);
      padding: var(--space-2xs) var(--space-s);
      background: color-mix(in oklab, var(--color-primary) 90%, transparent);
      color: #0b0d17;
      font-size: 0.75rem;
      font-family: var(--font-serif);
      font-weight: bold;
      text-transform: uppercase;
      letter-spacing: 0.08em;
      border-radius: var(--radius-s);
    }

    & .path-card__body {
      padding: var(--space-l);
      flex: 1;
      display: flex;
      flex-direction: column;
      gap: var(--space-s);
    }

    & .path-card__emoji {
      font-size: 2rem;
      line-height: 1;
    }

    & .path-card__title {
      font-family: var(--font-serif);
      font-size: var(--size-step-2);
      color: var(--color-primary);
      margin: 0;
    }

    & .path-card__subtitle {
      font-size: var(--size-step-0);
      color: var(--color-text);
      opacity: 0.8;
      font-style: italic;
      line-height: 1.5;
    }

    & .path-card__features {
      list-style: none;
      padding: 0;
      margin: var(--space-s) 0 0;
      display: flex;
      flex-direction: column;
      gap: var(--space-xs);
    }

    & .path-card__features li {
      display: flex;
      align-items: center;
      gap: var(--space-s);
      font-size: var(--size-step-0);
      color: var(--color-text);

      & svg {
        width: 14px;
        height: 14px;
        flex-shrink: 0;
        color: var(--color-primary);
      }
    }

    & .paths-note {
      display: flex;
      align-items: flex-start;
      gap: var(--space-s);
      max-width: 66ch;
      margin-inline: auto;
      margin-top: var(--space-l);
      padding: var(--space-m) var(--space-l);
      background: color-mix(in oklab, var(--color-primary) 5%, transparent);
      border: 1px solid color-mix(in oklab, var(--color-primary) 15%, transparent);
      border-radius: var(--radius-s);
    }

    & .paths-note__icon {
      color: var(--color-primary);
      font-size: 1.1em;
      flex-shrink: 0;
      margin-top: 2px;
    }

    & .paths-note__text {
      font-size: var(--size-step-0);
      color: var(--color-text);
      opacity: 0.75;
      line-height: 1.65;
      margin: 0;

      & strong {
        color: var(--color-primary);
        opacity: 1;
        font-weight: 600;
      }
    }

    /* ─── CURRICULUM ─── */
    & .classroom__curriculum {
      padding-block: var(--space-2xl);
      background: var(--color-surface-variant);

      &[data-variant="dark"] {
        background: color-mix(in oklab, var(--color-surface) 60%, black);
      }
    }

    & .curriculum-timeline {
      display: flex;
      flex-direction: column;
      gap: var(--space-xl);
    }

    & .grade-block {
      background: var(--color-surface);
      border: 1px solid color-mix(in oklab, var(--color-primary) 12%, transparent);
      border-radius: var(--radius-m);
      overflow: hidden;
      transition: border-color 0.3s ease;

      &[data-available="true"] {
        border-color: color-mix(in oklab, var(--color-primary) 25%, transparent);
        box-shadow: var(--shadow-m);
      }

      &[data-available="false"] {
        opacity: 0.65;
        filter: saturate(0.6);
      }

      &[data-variant="dark"] {
        background: var(--color-surface-variant);
      }
    }

    & .grade-block__header {
      display: grid;
      grid-template-columns: auto 1fr auto;
      align-items: center;
      gap: var(--space-m);
      padding: var(--space-l);
      background: linear-gradient(
        135deg,
        color-mix(in oklab, var(--color-primary) 6%, transparent),
        transparent
      );
      border-bottom: 1px solid color-mix(in oklab, var(--color-primary) 12%, transparent);

      @media (max-width: 600px) {
        grid-template-columns: auto 1fr;

        & .grade-block__aside {
          grid-column: 1 / -1;
        }
      }
    }

    & .grade-block__badge {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      width: 56px;
      height: 56px;
      background: color-mix(in oklab, var(--color-primary) 10%, transparent);
      border: 1px solid color-mix(in oklab, var(--color-primary) 30%, transparent);
      border-radius: 50%;
      flex-shrink: 0;
    }

    & .grade-block__icon {
      font-size: 1.2rem;
      line-height: 1;
    }

    & .grade-block__numeral {
      font-family: var(--font-serif);
      font-size: 0.65rem;
      color: var(--color-primary);
      font-weight: bold;
      letter-spacing: 0.05em;
    }

    & .grade-block__meta {
      min-width: 0;
    }

    & .grade-block__label {
      font-family: var(--font-sans);
      font-size: 0.75rem;
      text-transform: uppercase;
      letter-spacing: 0.12em;
      color: var(--color-primary);
      opacity: 0.8;
      margin-bottom: var(--space-2xs);
    }

    & .grade-block__title {
      font-family: var(--font-serif);
      font-size: var(--size-step-1);
      color: var(--color-text);
      margin: 0 0 var(--space-2xs);
      line-height: 1.2;
    }

    & .grade-block__goal {
      font-size: 0.875rem;
      color: var(--color-text);
      opacity: 0.65;
      line-height: 1.5;
      margin: 0;
    }

    & .grade-block__aside {
      display: flex;
      flex-direction: column;
      align-items: flex-end;
      gap: var(--space-xs);
      flex-shrink: 0;
    }

    & .grade-block__count {
      font-family: var(--font-serif);
      font-size: var(--size-step-0);
      color: var(--color-primary);
      white-space: nowrap;
    }

    & .coming-soon-badge {
      display: flex;
      align-items: center;
      gap: var(--space-xs);
      padding: var(--space-xs) var(--space-s);
      border: 1px solid color-mix(in oklab, var(--color-text) 20%, transparent);
      border-radius: var(--radius-s);
      font-size: 0.8rem;
      color: var(--color-text);
      opacity: 0.6;
      white-space: nowrap;

      & svg {
        width: 14px;
        height: 14px;
        flex-shrink: 0;
      }
    }

    /* ─── LESSON CARDS (available grade) ─── */
    & .grade-block__lessons {
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
      gap: var(--space-m);
      padding: var(--space-l);
    }

    & .lesson-card {
      display: flex;
      gap: var(--space-m);
      padding: var(--space-m);
      background: var(--color-surface-variant);
      border: 1px solid color-mix(in oklab, var(--color-text) 8%, transparent);
      border-radius: var(--radius-s);
      text-decoration: none;
      color: var(--color-text);
      transition: all 0.25s ease;
      position: relative;
      overflow: hidden;

      &::before {
        content: "";
        position: absolute;
        left: 0;
        top: 0;
        bottom: 0;
        width: 3px;
        background: var(--color-primary);
        opacity: 0;
        transition: opacity 0.25s ease;
      }

      &:hover {
        background: color-mix(in oklab, var(--color-primary) 5%, var(--color-surface-variant));
        border-color: color-mix(in oklab, var(--color-primary) 35%, transparent);
        transform: translateX(4px);
        box-shadow: var(--shadow-s);

        &::before {
          opacity: 1;
        }
      }

      &[data-variant="dark"] {
        background: var(--color-surface);
      }
    }

    & .lesson-card__number {
      flex-shrink: 0;
      width: 32px;
      height: 32px;
      border-radius: 50%;
      background: color-mix(in oklab, var(--color-primary) 15%, transparent);
      border: 1px solid color-mix(in oklab, var(--color-primary) 30%, transparent);
      color: var(--color-primary);
      font-family: var(--font-serif);
      font-weight: bold;
      font-size: 0.9rem;
      display: flex;
      align-items: center;
      justify-content: center;
      margin-top: 2px;
    }

    & .lesson-card__body {
      flex: 1;
      min-width: 0;
      display: flex;
      flex-direction: column;
      gap: var(--space-xs);
    }

    & .lesson-card__top {
      display: flex;
      align-items: flex-start;
      gap: var(--space-xs);
    }

    & .lesson-card__icon {
      font-size: 1rem;
      flex-shrink: 0;
      margin-top: 2px;
    }

    & .lesson-card__title {
      font-family: var(--font-serif);
      font-size: var(--size-step-0);
      color: var(--color-text);
      margin: 0;
      line-height: 1.3;
      transition: color 0.2s ease;

      .lesson-card:hover & {
        color: var(--color-primary);
      }
    }

    & .lesson-card__description {
      font-size: 0.8rem;
      color: var(--color-text);
      opacity: 0.65;
      line-height: 1.5;
      margin: 0;
      display: -webkit-box;
      -webkit-line-clamp: 2;
      -webkit-box-orient: vertical;
      overflow: hidden;
    }

    & .lesson-card__tags {
      display: flex;
      flex-wrap: wrap;
      gap: var(--space-2xs);
    }

    & .lesson-card__tag {
      display: inline-flex;
      padding: 2px var(--space-xs);
      background: color-mix(in oklab, var(--color-primary) 8%, transparent);
      border: 1px solid color-mix(in oklab, var(--color-primary) 15%, transparent);
      border-radius: 100px;
      font-size: 0.7rem;
      color: var(--color-primary);
      white-space: nowrap;
    }

    & .lesson-card__footer {
      display: flex;
      align-items: center;
      justify-content: space-between;
      margin-top: auto;
      padding-top: var(--space-2xs);
    }

    & .lesson-card__duration {
      font-size: 0.75rem;
      color: var(--color-text);
      opacity: 0.5;
    }

    & .lesson-card__cta {
      font-size: 0.75rem;
      font-family: var(--font-serif);
      color: var(--color-primary);
      opacity: 0;
      transition: opacity 0.2s ease;

      .lesson-card:hover & {
        opacity: 1;
      }
    }

    /* ─── PREVIEW PILLS (coming-soon grades) ─── */
    & .grade-block__preview {
      padding: var(--space-m) var(--space-l);
      display: flex;
      flex-wrap: wrap;
      gap: var(--space-s);
    }

    & .preview-pill {
      display: flex;
      align-items: center;
      gap: var(--space-xs);
      padding: var(--space-xs) var(--space-m);
      background: color-mix(in oklab, var(--color-text) 5%, transparent);
      border: 1px solid color-mix(in oklab, var(--color-text) 10%, transparent);
      border-radius: 100px;
      font-size: 0.85rem;
      color: var(--color-text);
      opacity: 0.6;
    }

    /* ─── CLOSING CTA ─── */
    & .classroom__cta {
      position: relative;
      padding-block: var(--space-2xl);
      text-align: center;
      overflow: hidden;
      background: radial-gradient(ellipse at 50% 60%, #1d2235 0%, #0b0d17 70%);
      color: white;

      &[data-variant="dark"] {
        background: radial-gradient(ellipse at 50% 60%, #141823 0%, #07080f 70%);
      }
    }

    & .classroom__cta-bg {
      position: absolute;
      inset: 0;
      background-image: radial-gradient(
        circle at 50% 0%,
        color-mix(in oklab, var(--color-primary) 8%, transparent),
        transparent 60%
      );
      pointer-events: none;
    }

    & .classroom__cta-content {
      position: relative;
      z-index: 1;
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: var(--space-m);
    }

    & .classroom__cta-overline {
      font-family: var(--font-serif);
      font-size: var(--size-step-0);
      color: var(--color-primary);
      text-transform: uppercase;
      letter-spacing: 0.18em;
      opacity: 0.85;
    }

    & .classroom__cta-title {
      font-family: var(--font-serif);
      font-size: clamp(2rem, 5vw, 3.5rem);
      color: var(--color-primary);
      margin: 0;
      line-height: 1.1;
      text-shadow: 0 2px 20px rgba(0, 0, 0, 0.5);
    }

    & .classroom__cta-subtitle {
      font-size: var(--size-step-0);
      color: #c0c0c0;
      max-width: 45ch;
      line-height: 1.6;
      margin: 0;
    }

    & .classroom__cta-actions {
      display: flex;
      flex-wrap: wrap;
      justify-content: center;
      gap: var(--space-m);
      margin-top: var(--space-s);
    }

    & .classroom__empty {
      text-align: center;
      padding: var(--space-2xl);
      border: 2px dashed color-mix(in oklab, var(--color-primary) 25%, transparent);
      border-radius: var(--radius-m);
      color: var(--color-text);
      opacity: 0.65;
    }
  }
}

@keyframes classroomFadeUp {
  from {
    opacity: 0;
    transform: translateY(24px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
