/* ---------- Parcours façon applications de langues : chemin d'unités, nœuds, bilans ---------- */
.subj-sciences-techno { --accent: #0b7a5e; }
/* texte posé sur la couleur de la matière : blanc en clair, encre foncée en sombre (les couleurs y sont pâles) */
:root { --on-accent: #fff; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) { --on-accent: #14171f; }
  :root:not([data-theme="light"]) .subj-sciences-techno { --accent: #3fc79f; }
}

/* accueil : une carte par matière */
.path-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 16px; }
.path-card { display: grid; gap: 10px; padding: 18px; border-radius: var(--radius-l); background: var(--card); border: 1px solid var(--rule); border-top: 5px solid var(--accent, var(--ink)); box-shadow: var(--shadow-1); }
.path-card-head { display: flex; align-items: center; gap: 14px; color: inherit; text-decoration: none; }
.path-card-head strong { display: block; font-family: var(--font-display); font-size: 1.35rem; }
.path-card-head small { color: var(--ink-2); }
.path-card-ring, .path-top-ring, .continue-ring { position: relative; display: inline-grid; place-items: center; flex: none; }
.path-card-ring > span:last-child, .continue-ring > span:last-child { position: absolute; font-size: 1.3rem; color: var(--accent); font-weight: 700; }
.path-card .goal-ring .ring-fg, .path-top .goal-ring .ring-fg, .continue-ring .goal-ring .ring-fg { stroke: var(--accent, var(--glow)); }

/* sélecteur de matière */
.path-subjects { display: flex; gap: 8px; overflow-x: auto; padding: 2px 2px 10px; margin-bottom: 8px; scrollbar-width: thin; }
.path-subject { flex: none; display: inline-flex; gap: 6px; align-items: center; padding: 7px 14px; border-radius: 999px; border: 1.5px solid var(--rule); background: var(--card); color: var(--ink); text-decoration: none; font-weight: 700; font-size: var(--text-s); }
.path-subject[aria-current="page"] { background: var(--accent); border-color: var(--accent); color: var(--on-accent); }
.path-subject:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }

/* en-tête du chemin */
.path-top { display: flex; align-items: center; gap: 22px; margin-bottom: 18px; background: radial-gradient(circle at 0% 50%, color-mix(in srgb, var(--accent) 12%, transparent), transparent 45%), var(--card); }
.path-top h1 { font-family: var(--font-display); margin: 0; }
.path-top-ring b { position: absolute; font-family: var(--font-display); font-size: 1.15rem; }
.path-top-go { margin-left: auto; display: grid; gap: 8px; justify-items: end; text-align: right; }
.path-done-all { font-weight: 700; color: var(--ok); }

/* révisions dues */
.path-reviews { display: flex; align-items: center; gap: 14px; margin: 0 auto 18px; max-width: 620px; padding: 12px 16px; border-radius: var(--radius); background: var(--frost-bg, #e6f0ff); color: var(--ink); text-decoration: none; border: 1.5px solid color-mix(in srgb, var(--frost, #3b82f6) 40%, transparent); }
.path-reviews-icon { font-size: 1.8rem; }
.path-reviews small { display: block; color: var(--ink-2); }
.path-reviews .btn { margin-left: auto; }

/* le chemin */
.path { max-width: 620px; margin: 0 auto; display: grid; gap: 26px; }
.unit-head { position: relative; padding: 14px 18px; border-radius: var(--radius); background: var(--accent); color: var(--on-accent); box-shadow: 0 4px 0 color-mix(in srgb, var(--accent) 70%, #000); }
.unit-head h2 { margin: 2px 0 0; font-size: var(--text-l); color: var(--on-accent); }
.unit-num { margin: 0; font-size: .78rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.unit-meta { margin: 4px 0 0; font-size: var(--text-s); }
.unit:not(.is-current):not(.is-complete) .unit-head { filter: saturate(.55); }
.path-nodes { list-style: none; margin: 0; padding: 22px 0 6px; display: grid; justify-items: center; gap: 18px; }
.path-node { position: relative; display: grid; justify-items: center; gap: 4px; transform: translateX(var(--x, 0)); width: 150px; }
.node-btn { position: relative; width: 72px; height: 72px; border-radius: 50%; display: grid; place-items: center; font-size: 1.7rem; font-weight: 800; text-decoration: none;
  background: var(--card); color: var(--ink-3); border: 2px solid var(--rule-2); box-shadow: 0 5px 0 var(--rule-2); transition: transform .12s var(--ease), box-shadow .12s; }
.node-btn:hover { transform: translateY(-2px); }
.node-btn:active { transform: translateY(4px); box-shadow: 0 1px 0 var(--rule-2); }
.node-btn:focus-visible { outline: 3px solid var(--focus); outline-offset: 4px; }
.path-node.is-done .node-btn { background: var(--accent); border-color: var(--accent); color: var(--on-accent); box-shadow: 0 5px 0 color-mix(in srgb, var(--accent) 65%, #000); }
.path-node.is-current .node-btn { width: 84px; height: 84px; background: var(--accent); border-color: #fff; color: var(--on-accent); box-shadow: 0 6px 0 color-mix(in srgb, var(--accent) 65%, #000), 0 0 0 6px color-mix(in srgb, var(--accent) 25%, transparent); animation: node-pulse 2s ease-in-out infinite; }
.path-node--bilan .node-btn { width: 80px; height: 80px; border-radius: 22px; font-size: 2rem; background: var(--glow-bg, #fff4d6); border-color: var(--glow, #f59e0b); box-shadow: 0 5px 0 color-mix(in srgb, var(--glow, #f59e0b) 70%, #000); color: inherit; }
.path-node--bilan.is-done .node-btn { background: linear-gradient(160deg, var(--glow-2, #ffcf4d), var(--glow, #f59e0b)); border-color: var(--glow, #f59e0b); }
.node-badge { position: absolute; right: -6px; top: -6px; font-size: 1rem; background: var(--card); border-radius: 50%; width: 26px; height: 26px; display: grid; place-items: center; box-shadow: var(--shadow-1); }
.node-label { font-size: .8rem; font-weight: 700; text-align: center; color: var(--ink-2); line-height: 1.2; display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.path-node.is-current .node-label { color: var(--ink); }
.node-medal { font-size: .8rem; color: var(--glow, #f59e0b); letter-spacing: 1px; }
.path-here { position: absolute; bottom: calc(100% - 4px); left: 50%; transform: translateX(-50%); display: flex; align-items: center; gap: 4px; white-space: nowrap; padding: 4px 12px 4px 4px; border-radius: 999px; background: var(--ink); color: var(--paper); font-weight: 800; font-size: .8rem; box-shadow: var(--shadow-2); animation: float 3s ease-in-out infinite; z-index: 1; }
.path-here::after { content: ''; position: absolute; top: 100%; left: 50%; margin-left: -7px; border: 7px solid transparent; border-top-color: var(--ink); }
.path-node.is-current { margin-top: 34px; }
@keyframes node-pulse { 50% { box-shadow: 0 6px 0 color-mix(in srgb, var(--accent) 65%, #000), 0 0 0 12px color-mix(in srgb, var(--accent) 12%, transparent); } }

/* « Aujourd'hui » : continuer mes parcours */
.continue-strip h2 { font-size: var(--text-l); margin: 0 0 10px; }
.continue-strip:empty { display: none; }
.continue-strip { margin-bottom: 20px; }
.continue-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 10px; }
.continue-card { display: flex; align-items: center; gap: 12px; padding: 10px 14px; border-radius: var(--radius); background: var(--card); border: 1px solid var(--rule); border-left: 5px solid var(--accent, var(--ink)); color: var(--ink); text-decoration: none; box-shadow: var(--shadow-1); transition: transform .15s var(--ease), box-shadow .15s; }
.continue-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-2); }
.continue-card:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }
.continue-text { min-width: 0; display: grid; }
.continue-text small { color: var(--ink-3); font-weight: 700; text-transform: uppercase; letter-spacing: .08em; font-size: .72rem; }
.continue-text strong { font-size: .95rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.continue-go { margin-left: auto; color: var(--accent); font-size: 1.1rem; }

/* bilan d'unité */
.bilan-intro { display: flex; gap: 14px; align-items: center; margin-bottom: 14px; }
.bilan-intro p { margin: 0; }
.bilan-outcome { margin-top: 16px; }
.bilan-win, .bilan-retry { display: flex; gap: 18px; align-items: center; }
.bilan-win { border: 2px solid var(--glow, #f59e0b); background: radial-gradient(circle at 0% 0%, var(--glow-bg, #fff4d6), var(--card) 60%); }
.bilan-win h2, .bilan-retry h2 { margin: 0 0 6px; font-family: var(--font-display); }
.fin-next { display: inline-flex; flex-wrap: wrap; gap: 10px; }

@media (max-width: 640px) {
  .path-top { flex-wrap: wrap; }
  .path-top-go { margin-left: 0; justify-items: start; text-align: left; width: 100%; }
  .path-node { width: 130px; transform: translateX(calc(var(--x, 0) * .6)); }
  .bilan-win, .bilan-retry { flex-direction: column; text-align: center; }
}
@media (prefers-reduced-motion: reduce) { .path-node.is-current .node-btn, .path-here { animation: none; } }
