:root {
    --cream:       #F4EFE4;
    --cream-dark:  #EAE2D0;
    --forest:      #1E3A2F;
    --forest-mid:  #2D5240;
    --forest-light:#4A7C5F;
    --sage:        #8FAF8A;
    --sage-light:  #C2D9BB;
    --sand:        #DDD3BC;
    --sand-light:  #EDE7D8;
    --text:        #1A2820;
    --muted:       #7A8C82;
    --muted-light: #A8B5AE;
    --accent:      #C8A96E;
    --accent-dark: #9E7E48;
    --white:       #FFFFFF;
  
    /* level colours */
    --beg:   #5C8B5A;
    --beg-bg:#EBF3EA;
    --int:   #8B7A3A;
    --int-bg:#F3EEE0;
    --adv:   #8B4A4A;
    --adv-bg:#F3E8E8;
  }
  
  *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
  
  html { scroll-behavior: smooth; }
  
  body {
    font-family: 'Nunito', sans-serif;
    background: var(--cream);
    color: var(--text);
    min-height: 100vh;
    /* subtle grain texture */
    background-image:
      url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E");
  }
  
  /* ══════════════════════════════════════
     HEADER
  ══════════════════════════════════════ */
  .header {
    position: sticky;
    top: 0;
    z-index: 50;
    background: rgba(244,239,228,.92);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border-bottom: 1px solid var(--sand);
  }
  
  .header-inner {
    max-width: 900px;
    margin: 0 auto;
    padding: 0 24px;
    height: 64px;
    display: flex;
    align-items: center;
    gap: 16px;
  }
  
  .back-btn {
    width: 38px; height: 38px;
    border-radius: 50%;
    background: var(--white);
    border: 1.5px solid var(--sand);
    cursor: pointer;
    display: flex; align-items: center; justify-content: center;
    color: var(--forest);
    font-size: 20px;
    line-height: 1;
    flex-shrink: 0;
    text-decoration: none;
    transition: border-color .2s, box-shadow .2s;
  }
  .back-btn:hover {
    border-color: var(--sage);
    box-shadow: 0 2px 12px rgba(30,58,47,.08);
  }
  
  .logo {
    font-family: 'Fraunces', serif;
    font-size: 20px;
    font-weight: 300;
    color: var(--forest);
    flex-shrink: 0;
    text-decoration: none;
  }
  .logo em { font-style: italic; color: var(--accent-dark); }
  
  .header-sep { flex: 1; }

  .hero-text {}
.hero-eyebrow {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 8px;
}
.hero-title {
  font-family: 'Fraunces', serif;
  font-size: clamp(28px, 5vw, 42px);
  font-weight: 300;
  line-height: 1.1;
  color: var(--forest);
}
.hero-title em {
  font-style: italic;
  color: var(--accent-dark);
}

/* ══════════════════════════════════════
   EMPTY / LOADING STATES
══════════════════════════════════════ */
.skeleton-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
    gap: 16px;
  }
  .skeleton-card {
    background: var(--white);
    border: 1.5px solid var(--sand);
    border-radius: 20px;
    padding: 22px;
    height: 168px;
    overflow: hidden;
    position: relative;
  }
  .skeleton-card::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg,
      transparent 0%,
      rgba(255,255,255,.6) 50%,
      transparent 100%);
    background-size: 200% 100%;
    animation: shimmer 1.4s infinite;
  }
  @keyframes shimmer {
    from { background-position: 200% 0; }
    to   { background-position: -200% 0; }
  }
  .skel-line {
    background: var(--cream-dark);
    border-radius: 6px;
    margin-bottom: 10px;
  }
  
  .empty-state {
    text-align: center;
    padding: 64px 24px;
    color: var(--muted);
    grid-column: 1/-1;
  }
  .empty-icon { font-size: 48px; margin-bottom: 14px; }
  .empty-title {
    font-family: 'Fraunces', serif;
    font-size: 20px;
    font-weight: 300;
    color: var(--forest);
    margin-bottom: 6px;
  }
  .empty-sub { font-size: 14px; }
  
  /* ══════════════════════════════════════
     ANIMATIONS
  ══════════════════════════════════════ */
  @keyframes cardIn {
    from { opacity: 0; transform: translateY(16px); }
    to   { opacity: 1; transform: translateY(0); }
  }

  @media (max-width: 400px) {
    .header-inner {
      padding-left: 12px;
      padding-right: 12px;
      gap: 8px;
    }
  }
  