@font-face { font-family: Manrope; font-style: normal; font-weight: 700; font-display: swap; src: url("/assets/fonts/manrope-700.ttf") format("truetype"); }
@font-face { font-family: Manrope; font-style: normal; font-weight: 800; font-display: swap; src: url("/assets/fonts/manrope-800.ttf") format("truetype"); }
@font-face { font-family: "Source Sans 3"; font-style: normal; font-weight: 400; font-display: swap; src: url("/assets/fonts/source-sans-400.ttf") format("truetype"); }
@font-face { font-family: "Source Sans 3"; font-style: normal; font-weight: 500; font-display: swap; src: url("/assets/fonts/source-sans-500.ttf") format("truetype"); }
@font-face { font-family: "Source Sans 3"; font-style: normal; font-weight: 600; font-display: swap; src: url("/assets/fonts/source-sans-600.ttf") format("truetype"); }
@font-face { font-family: "Source Sans 3"; font-style: normal; font-weight: 700; font-display: swap; src: url("/assets/fonts/source-sans-700.ttf") format("truetype"); }
@font-face { font-family: "JetBrains Mono"; font-style: normal; font-weight: 400; font-display: swap; src: url("/assets/fonts/jetbrains-400.ttf") format("truetype"); }
@font-face { font-family: "JetBrains Mono"; font-style: normal; font-weight: 500; font-display: swap; src: url("/assets/fonts/jetbrains-500.ttf") format("truetype"); }


/* Déclinaison commune de la référence Stitch. Chargée après les styles métier. */
body.vm-platform {
  --color-night: #142238; --color-night-soft: #233144;
  --color-primary: #2457e7; --color-primary-hover: #1c47c4;
  --color-white: #fff; --color-light: #eff4ff; --color-border: #d8e1ed;
  --color-text: #334155; --color-muted: #526176;
  --focus-ink: #142238; --focus-blue: #2457e7; --focus-blue-dark: #003ec2;
  --focus-teal: #087f75; --focus-paper: #f8f9ff; --focus-line: #d8e1ed;
  --auth-primary: #2457e7; --auth-primary-hover: #1c47c4; --auth-night: #142238;
  --auth-text: #334155; --auth-muted: #526176; --auth-border: #d8e1ed;
  --font-main: "Source Sans 3", "Segoe UI", sans-serif;
  --container-width: 1152px; --radius: 12px;
  --shadow-card: 0 2px 3px #14223820; --shadow-soft: 0 2px 6px #14223812;
  background: #fff; color: #334155; font: 400 16px/1.7 var(--font-main);
}
.vm-platform *, .vm-platform *::before, .vm-platform *::after { box-sizing: border-box; }
.vm-platform [hidden] { display: none !important; }
.vm-platform :is(h1,h2,h3,h4) { font-family: Manrope,"Segoe UI",sans-serif; letter-spacing: -.025em; line-height: 1.25; }
.vm-platform h1 { font-size: clamp(34px,4vw,52px); }
.vm-platform h2,.vm-platform .section-title { font-size: clamp(26px,2.5vw,30px); }
.vm-platform h3 { font-size: 20px; }
.vm-platform :is(button,input,select,textarea) { font-family: var(--font-main); }
.vm-platform :is(pre,code,kbd,samp,.mission-console-input) { font-family: "JetBrains Mono",Consolas,monospace; }
.vm-platform .container { width: min(1152px,calc(100% - 48px)); max-width: 1152px; margin-inline: auto; padding-inline: 0; }
.vm-platform :focus-visible { outline: 3px solid #2457e7; outline-offset: 4px; }
.vm-platform .site-header { background: #fff; color: #142238; border-bottom: 1px solid #d8e1ed; box-shadow: 0 1px 2px #14223818; backdrop-filter: none; position: sticky; top: 0; z-index: 100; }
.vm-platform .navbar { min-height: 80px; display: flex; align-items: center; justify-content: space-between; gap: 28px; flex-wrap: nowrap; padding-block: 0; }
.vm-platform .logo { display: flex; flex-direction: column; align-items: flex-start; gap: 0; flex-shrink: 0; color: #142238; font: 700 20px/1.4 Manrope,sans-serif; text-decoration: none; letter-spacing: -.03em; }
.vm-platform .logo::before { display: none; }
.vm-platform .logo::after { content: "INFORMATIQUE, SYSTÈMES & RÉSEAUX"; color: #526176; font: 400 10px/1.6 "JetBrains Mono",monospace; letter-spacing: .06em; }
.vm-platform .menu { list-style: none; display: flex; gap: 26px; align-items: center; margin: 0; padding: 0; flex-wrap: nowrap; }
.vm-platform .menu>li { margin: 0; }
.vm-platform .menu a { display: inline-flex; gap: 6px; align-items: center; min-height: 48px; padding: 0; font: 500 14px/1.4 var(--font-main); white-space: nowrap; color: #142238; text-decoration: none; }
.vm-platform .menu a::after { display: none; }
.vm-platform .menu a:hover,.vm-platform .menu a[aria-current=page] { color: #2457e7; text-decoration: underline; text-underline-offset: 6px; }
.vm-platform .nav-tag { background: #e6eeff; color: #003ec2; padding: 2px 5px; border-radius: 3px; font: 400 10px/1.6 "JetBrains Mono",monospace; }
.vm-platform .menu a[href*="/acces/"] { padding: 8px 16px; min-height: 40px; border: 1px solid #d8e1ed; border-radius: 8px; box-shadow: 0 1px 3px #14223815; background: #fff; }
.vm-platform .session-logout-button { background: #fff; color: #142238; border: 1px solid #d8e1ed; border-radius: 8px; padding: 10px; font-size: 14px; }
.vm-platform .platform-menu-toggle { display: none; min-height: 48px; border: 1px solid #d8e1ed; border-radius: 8px; background: #fff; color: #142238; padding: 8px 12px; }
.vm-platform :is(.section,.section-light) { padding-block: 72px; }
.vm-platform :is(.section-light,.catalogue-section,.infra-method) { background: #eff4ff; }
.vm-platform :is(.page-hero,.course-hero,.hero,.product-hero) { background: #f8f9ff; color: #334155; }
.vm-platform :is(.page-hero,.course-hero,.hero)::before { display: none; }
.vm-platform :is(.page-hero-layout,.course-hero-layout) { min-height: 0; padding-block: 72px; gap: 48px; }
.vm-platform :is(.page-hero,.course-hero,.hero) h1 { color: #142238; font-size: clamp(34px,4vw,52px); line-height: 1.12; }
.vm-platform :is(.page-hero,.course-hero,.hero) p:not(.hero-kicker) { color: #526176; font-size: 18px; line-height: 1.7; }
.vm-platform :is(.hero-kicker,.section-kicker,.course-level,.auth-kicker) { color: #003ec2; font: 400 12px/1.6 "JetBrains Mono",monospace; letter-spacing: .06em; }
.vm-platform .hero-kicker { display: table; background: #e6eeff; padding: 3px 10px; border-radius: 4px; }
body.vm-platform :is(.page-hero,.course-hero,.product-hero,.catalogue-hero,.about-focus-hero) { padding-block: 0; }
body.vm-platform .page-hero .page-hero-layout { max-width: 1152px; }
body.vm-platform :is(.product-trust-list,.product-trust-list li) { color: #526176; }
body.vm-platform .product-trust-list li::before { color: #087f75; }
body.vm-platform .product-summary-label { color: #003ec2; background: #e6eeff; border-radius: 4px; }
body.vm-platform .product-stats div { background: #eff4ff; border: 1px solid #d8e1ed; border-radius: 10px; }
body.vm-platform .nova-daily-policy { background: #142238; }
.vm-platform :is(.breadcrumb,.breadcrumb a) { color: #526176; }
.vm-platform :is(.course-summary,.hero-card,.product-summary) { background: #fff; color: #334155; border: 1px solid #d8e1ed; border-radius: 12px; padding: 24px; box-shadow: 0 2px 3px #14223820; }
.vm-platform :is(.course-summary,.hero-card,.product-summary) :is(h2,h3,strong,dt) { color: #142238; }
.vm-platform :is(.course-summary,.hero-card,.product-summary) :is(p,li,dd,small) { color: #526176; }
.vm-platform :is(.btn,.auth-submit) { min-height: 48px; border-radius: 10px; font: 600 16px/1.4 var(--font-main); padding: 12px 24px; box-shadow: none; transform: none; }
.vm-platform :is(.btn-primary,.auth-submit) { background: #2457e7; border-color: #2457e7; color: #fff; }
.vm-platform :is(.btn-primary,.auth-submit):hover { background: #1c47c4; border-color: #1c47c4; }
.vm-platform :is(.btn-secondary,.btn-outline) { background: #fff; border: 1px solid #d8e1ed; color: #142238; }
.vm-platform :is(.btn-secondary,.btn-outline):hover { background: #eff4ff; color: #003ec2; }
.vm-platform :is(.card,.course-card,.learning-card,.infra-roadmap-card,.infra-concept-card,.access-choice-card,.pack-catalogue-card,.glossary-card,.notion-card) {
  background: #fff; border: 1px solid #d8e1ed; border-radius: 12px; box-shadow: 0 2px 3px #14223815; padding: 24px;
}
.vm-platform :is(.card,.course-card,.learning-card):hover { transform: none; box-shadow: 0 2px 6px #14223818; }
.vm-platform :is(.card,.course-card,.learning-card) h3 { color: #142238; font-size: 20px; }
.vm-platform :is(.card-icon,.infra-roadmap-number) { background: #eff4ff; color: #2457e7; border-radius: 10px; }
.vm-platform :is(.access-choice-featured,.pack-feature-panel,.network-feature-panel) { background: #eff4ff; color: #334155; border: 1px solid #d8e1ed; }
.vm-platform .access-choice-featured :is(h3,p,li) { color: #334155; }
.vm-platform :is(.principle-grid article,.learning-model-grid li,.infra-method-grid article) { background: #eff4ff; border: 1px solid #dbe5ff; border-radius: 12px; }
.vm-platform :is(.course-callout,.infra-chapter-error,.course-error,.course-takeaway) { border-radius: 10px; box-shadow: none; border: 1px solid #d8e1ed; border-left-width: 4px; }
.vm-platform .course-callout.is-blue,.vm-platform .course-takeaway { background: #eff5ff; border-left-color: #2457e7; color: #334155; }
.vm-platform .course-callout.is-green { background: #f0faf9; border-left-color: #087f75; color: #334155; }
.vm-platform :is(.course-callout.is-amber,.infra-chapter-error,.course-error) { background: #fffbeb; border-left-color: #a15c07; color: #334155; }
.vm-platform :is(.course-callout.is-rose) { background: #fef2f2; border-left-color: #b42318; color: #334155; }
.vm-platform :is(.course-content,.infra-full-chapter,.course-section) p { font-size: 18px; line-height: 1.7; }
.vm-platform .infra-full-chapter { border-radius: 12px; }
.vm-platform :is(.quiz-container,.quiz-card,.infra-checkpoint,.course-checkpoint) { border: 1px solid #d8e1ed; border-radius: 12px; box-shadow: 0 2px 3px #14223812; background: #fff; }
.vm-platform :is(.quiz-option,.quiz-answer,.infra-checkpoint-option) { border-radius: 10px; min-height: 48px; font-family: var(--font-main); }
.vm-platform :is(.cta-section,.focus-cta) { background: #eff4ff; color: #334155; }
.vm-platform :is(.cta-section,.focus-cta) :is(h2,p,a:not(.btn)) { color: #142238; }
.vm-platform>footer { background: #142238; color: #d8e1ed; border: 0; padding-block: 40px; }
.vm-platform>footer a { color: #fff; }
.vm-platform .footer-layout { gap: 24px; flex-wrap: wrap; }
.vm-platform .footer-links { display: flex; flex-wrap: wrap; gap: 12px 24px; }
.vm-platform .footer-links a { font-size: 14px; }
.vm-platform .nova-topbar { background: #142238; }
.vm-platform :is(.nova-sidebar,.mission-terminal,.mission-console,.mission-brief-status) { background: #142238; border-radius: 12px; }
.vm-platform :is(.nova-dashboard,.mission-intro,.mission-control,.mission-workspace) { background-color: #f8f9ff; }
.vm-platform :is(.nova-ticket-card,.nova-date-card,.nova-metrics article,.nova-learning-panel,.nova-briefing-card,.mission-ticket,.mission-result,.mission-report) { border-color: #d8e1ed; border-radius: 12px; box-shadow: 0 2px 3px #1422380a; }
.vm-platform :is(.nova-ticket-card,.nova-metrics article,.mission-ticket) { background: #fff; }
.vm-platform .nova-ticket-card.is-active { background: #eff4ff; border-color: #2457e7; }
.vm-platform :is(.nova-content,.mission-workspace-layout>*,.infra-full-chapter) { min-width: 0; }
.vm-platform :is(.mission-console-output,.mission-console-output pre) { font-family: "JetBrains Mono",monospace; }
.vm-platform :is(.mission-command-form input,.mission-report textarea) { border-radius: 10px; }
.vm-platform.vm-account { background: #f8f9ff; }
.vm-platform .auth-shell { min-height: calc(100vh - 80px); padding: 48px 20px; grid-template-columns: minmax(0,1fr); }
.vm-platform .auth-shell>* { min-width: 0; max-width: 100%; }
.vm-platform .auth-card { border: 1px solid #d8e1ed; border-radius: 12px; box-shadow: 0 2px 6px #14223815; }
.vm-platform .auth-logo { color: #142238; font-family: Manrope,sans-serif; }
.vm-platform .auth-intro { font-size: 18px; line-height: 1.7; }
.vm-platform :is(.auth-form input,.auth-form select,.contact-form input,.contact-form select,.contact-form textarea) { border-color: #d8e1ed; border-radius: 10px; }
.vm-platform :is(.auth-form input,.auth-form select) { min-height: 48px; }
.vm-platform input[type=checkbox],.vm-platform input[type=radio] { min-height: initial; accent-color: #2457e7; }
.vm-platform :is(.learner-quick-card,.learner-stat-card,.learner-path-card,.review-mastery-card,.admin-quick-nav a,.learner-review-card,.learner-resume-card) { border: 1px solid #d8e1ed; border-radius: 12px; box-shadow: 0 2px 3px #1422380a; }
.vm-platform :is(.learner-dashboard-header,.review-page-header) h1 { color: #142238; }
.vm-platform :is(.learner-quick-card.is-primary,.learner-review-card) { background: #eff4ff; color: #142238; }
.vm-platform .learner-quick-card.is-primary :is(strong,span,p) { color: #142238; }
.vm-platform :is(.admin-table-wrap,.auth-table-wrap) { overflow-x: auto; }
@media(max-width:1150px) {
  .vm-platform .navbar { flex-wrap: wrap; padding-block: 16px; gap: 12px; }
  .vm-platform .menu { gap: 20px; flex-wrap: wrap; }
}
@media(max-width:760px) {
  .vm-platform .container { width: calc(100% - 40px); }
  .vm-platform .navbar { justify-content: space-between; }
  .vm-platform .logo { font-size: 18px; }
  .vm-platform .logo::after { font-size: 9px; }
  .vm-platform .platform-menu-toggle:not([hidden]) { display: inline-flex; align-items: center; }
  .vm-platform .menu { flex-basis: 100%; flex-direction: column; gap: 0; align-items: stretch; }
  .vm-platform .menu a { display: flex; white-space: normal; padding: 12px; }
  .vm-platform.platform-menu-ready .menu:not(.is-open) { display: none; }
  .vm-platform .session-logout-button { width: 100%; min-height: 48px; text-align: left; }
  .vm-platform :is(.page-hero-layout,.course-hero-layout) { grid-template-columns: minmax(0,1fr); padding-block: 40px; gap: 24px; }
  .vm-platform :is(.section,.section-light) { padding-block: 48px; }
  .vm-platform :is(.hero-buttons,.cta-actions) { flex-wrap: wrap; }
  .vm-platform .hero-buttons .btn { width: 100%; }
  .vm-platform :is(.auth-card,.auth-card-wide) { padding: 24px 20px; }
  .vm-platform .auth-shell { padding: 24px 16px; }
  .vm-platform h1,.vm-platform :is(.page-hero,.course-hero) h1 { font-size: 34px; overflow-wrap: anywhere; }
  .vm-platform :is(.course-summary,.hero-card,.product-summary) { padding: 20px; }
  .vm-platform .footer-layout { display: block; }
  .vm-platform .footer-links { margin-top: 20px; }
}
@media(prefers-reduced-motion:reduce) {
  .vm-platform *, .vm-platform *::before,.vm-platform *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}
