/* Optimisations mobiles pour les pages de formation
 * Ce fichier ne modifie pas le rendu desktop et n'agit qu'en dessous de 1024px.
 */

img,
svg,
canvas,
video {
  max-width: 100%;
  height: auto;
}

@media (max-width: 1024px) {
  .container {
    width: min(var(--content-max, 1200px), 94vw);
  }
  .surface {
    padding: clamp(18px, 2.6vw, 28px);
  }
  .section {
    margin: clamp(32px, 6vw, 56px) 0;
  }
}

@media (max-width: 900px) {
  .link-grid,
  .sub-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .two-columns,
  .three-columns,
  .four-columns {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 768px) {
  body {
    font-size: 0.98rem;
  }
  main.wrapper,
  main.section,
  .wrapper.section {
    padding-bottom: 40px;
  }
  .container {
    width: min(var(--content-max, 1200px), 95vw);
  }
  .hero .inner {
    grid-template-columns: 1fr !important;
    padding: clamp(22px, 6vw, 34px);
    gap: clamp(18px, 5vw, 32px);
    text-align: left;
  }
  .hero-visual {
    order: 2;
    margin: 0 auto;
    width: 100%;
    max-width: 440px;
  }
  .hero .cta {
    width: 100%;
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
  }
  .btn {
    width: 100%;
    justify-content: center;
  }
  .link-grid,
  .sub-grid {
    grid-template-columns: 1fr;
    gap: clamp(16px, 6vw, 24px);
  }
  .card {
    padding: clamp(16px, 5vw, 24px);
  }
  .card h4 {
    font-size: clamp(1.05rem, 4vw, 1.25rem);
  }
  .card p {
    font-size: 0.95rem;
  }
  .premium-banner {
    padding: clamp(18px, 6vw, 30px);
  }
  .premium-links {
    width: 100%;
    gap: 8px;
  }
  .premium-pill {
    font-size: 0.8rem;
    padding: 6px 12px;
  }
  .premium-list > li {
    padding: clamp(12px, 5vw, 22px);
  }
  .premium-list-item {
    align-items: flex-start;
    gap: 12px;
  }
  .premium-sublist {
    margin-left: 0;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 12px;
  }
  .page-nav {
    position: static !important;
    margin-bottom: 24px;
  }
  .nav-links {
    flex-wrap: nowrap;
    overflow-x: auto;
    gap: 8px;
    padding-bottom: 6px;
  }
  .nav-link {
    white-space: nowrap;
    padding: 8px 14px;
    font-size: 0.86rem;
  }
  .score-container {
    position: static !important;
    margin: 12px auto 24px;
    width: min(100%, 360px);
  }
  table {
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  .diagram-container,
  .code-block,
  pre {
    font-size: 0.95rem;
  }
  .diagram-container pre,
  pre {
    white-space: pre-wrap;
    word-break: break-word;
  }
  .quiz-container,
  .highlight-box,
  .warning-box,
  .info-box,
  .collapsible,
  .diagram-container {
    padding: clamp(16px, 5vw, 26px);
  }
  .collapsible-content {
    padding: 0 18px;
  }
  .collapsible.active .collapsible-content {
    padding: 18px;
  }
  .quiz-options {
    gap: 12px;
  }
  .terminal {
    max-height: 320px;
  }
  input[type="text"],
  input[type="number"],
  textarea,
  select {
    width: 100% !important;
  }
}

@media (max-width: 640px) {
  h1 {
    font-size: clamp(1.6rem, 7vw, 2.3rem);
  }
  h2 {
    font-size: clamp(1.3rem, 5.5vw, 1.6rem);
  }
  h3 {
    font-size: clamp(1.1rem, 5vw, 1.4rem);
  }
  .surface {
    padding: clamp(16px, 6vw, 24px);
  }
  .section-title {
    gap: 8px;
  }
  .hero p {
    font-size: 1rem;
  }
  .premium-links {
    flex-direction: column;
    align-items: stretch;
  }
  .premium-pill {
    justify-content: center;
  }
  .diagram-container pre,
  pre {
    font-size: 0.9rem;
  }
  .link-grid .card .cover,
  .sub-grid .sub-card .icon {
    margin-bottom: 12px;
  }
}

@media (max-width: 480px) {
  body {
    font-size: 0.94rem;
  }
  .container {
    width: 94vw;
  }
  .btn {
    padding: 12px 16px;
    font-size: 0.95rem;
  }
  .card {
    padding: clamp(14px, 7vw, 22px);
  }
  .premium-list-item .emoji {
    font-size: 1.2rem;
  }
  .nav-link {
    padding: 8px 12px;
  }
  .score-container {
    width: 100%;
  }
  table {
    font-size: 0.9rem;
  }
  .quiz-container,
  .highlight-box,
  .warning-box,
  .info-box,
  .diagram-container {
    padding: clamp(14px, 7vw, 22px);
  }
}
