:root {
  --petrol: #265656;
  --petrol-deep: #1f4747;
  --ink: #182728;
  --mint: #81b29f;
  --mint-light: #e3f0eb;
  --cloud: #f6fcfc;
  --white: #ffffff;
  --line: #d8e6e1;
  --shadow: 0 24px 70px rgba(19, 46, 47, 0.13);
  --container: min(1120px, calc(100% - 40px));
}

/* Code couleur historique des six univers de formation */
.universe-qualiopi, #qualiopi {
  --universe-color: #275657;
  --universe-soft: #80b29f;
}
.universe-communication, #communication {
  --universe-color: #b88917;
  --universe-soft: #ffd230;
}
.universe-sst, #sst {
  --universe-color: #c22908;
  --universe-soft: #ff9f8a;
}
.universe-developpement, #developpement {
  --universe-color: #7a3189;
  --universe-soft: #d198dd;
}
.universe-pedagogie, #pedagogie {
  --universe-color: #004aad;
  --universe-soft: #65adef;
}
.universe-management, #management {
  --universe-color: #db6505;
  --universe-soft: #efab65;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--white); font-family: "Open Sans", sans-serif; font-size: 16px; line-height: 1.7; }
img { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button, input, textarea { font: inherit; }
h1, h2, h3, p { margin-top: 0; }
h1, h2, h3 { font-family: "Montserrat", sans-serif; line-height: 1.12; }
h2 { margin-bottom: 20px; font-size: clamp(2rem, 4vw, 3.45rem); letter-spacing: -0.04em; }
.container { width: var(--container); margin-inline: auto; }
.section { padding: 110px 0; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip-link { position: fixed; z-index: 1000; top: 12px; left: 12px; padding: 10px 16px; background: var(--white); color: var(--ink); transform: translateY(-150%); }
.skip-link:focus { transform: translateY(0); }

.topbar { background: var(--petrol); color: var(--white); font-size: 0.91rem; }
.topbar-inner { min-height: 42px; display: flex; align-items: center; justify-content: space-between; }
.topbar p { margin: 0; }
.topbar p a { margin-left: 7px; font-weight: 700; color: var(--mint-light); }
.socials { display: flex; gap: 7px; }
.socials a { width: 23px; height: 23px; border-radius: 50%; display: grid; place-items: center; background: rgba(255,255,255,.85); color: var(--petrol); font: 700 0.75rem/1 Montserrat, sans-serif; }

.site-header { position: relative; z-index: 20; background: var(--white); box-shadow: 0 1px 0 rgba(29, 56, 57, .08); }
.header-inner { height: 92px; display: flex; align-items: center; justify-content: space-between; }
.brand img { width: 154px; height: 58px; object-fit: contain; }
.main-nav { display: flex; align-items: center; gap: clamp(18px, 2.4vw, 34px); font-family: Montserrat, sans-serif; font-size: 0.94rem; font-weight: 500; }
.main-nav a { position: relative; padding: 34px 0; }
.main-nav a::after { content: ""; position: absolute; left: 0; right: 100%; bottom: 24px; height: 2px; background: var(--mint); transition: right .25s ease; }
.main-nav a:hover::after, .main-nav a.active::after { right: 0; }
.main-nav a.active { color: var(--petrol); }
.menu-toggle { display: none; border: 0; padding: 10px; background: transparent; }
.menu-toggle span:not(.sr-only) { width: 27px; height: 2px; display: block; margin: 5px 0; background: var(--petrol); }

.hero { min-height: 620px; display: grid; align-items: center; color: var(--white); background: linear-gradient(90deg, rgba(18,35,36,.76) 0%, rgba(18,35,36,.45) 51%, rgba(18,35,36,.14) 100%), url("assets/hero.jpg") center 52% / cover no-repeat; }
.hero-content { padding-block: 86px; }
.eyebrow, .kicker { margin-bottom: 13px; color: var(--petrol); font: 700 0.76rem/1.3 Montserrat, sans-serif; letter-spacing: .15em; text-transform: uppercase; }
.hero .eyebrow { color: var(--mint-light); }
.hero h1 { max-width: 860px; margin-bottom: 22px; font-size: clamp(3rem, 6.4vw, 5.2rem); letter-spacing: -0.055em; }
.hero p:not(.eyebrow) { max-width: 760px; margin-bottom: 32px; font-size: clamp(1.05rem, 2vw, 1.4rem); line-height: 1.32; }
.button { min-height: 48px; display: inline-flex; align-items: center; justify-content: center; padding: 13px 27px; border: 1px solid transparent; border-radius: 999px; font: 700 0.76rem/1 Montserrat, sans-serif; letter-spacing: .11em; text-transform: uppercase; transition: transform .2s ease, box-shadow .2s ease, background .2s ease; }
.button:hover { transform: translateY(-2px); box-shadow: 0 12px 24px rgba(21, 48, 48, .18); }
.button-mint { color: var(--petrol-deep); background: var(--mint); }
.button-dark { color: var(--white); background: var(--petrol); }
.button-outline { color: var(--white); border-color: rgba(255,255,255,.75); }
.button-outline:hover { color: var(--petrol); background: var(--white); }

.split { display: grid; grid-template-columns: 1fr 1.05fr; gap: clamp(50px, 7vw, 90px); align-items: center; }
.about-image { position: relative; }
.about-image img { width: 100%; min-height: 520px; border-radius: 4px 100px 4px 4px; object-fit: cover; box-shadow: var(--shadow); }
.image-mark { position: absolute; right: -28px; bottom: -25px; width: 102px; height: 102px; display: grid; place-items: center; border: 10px solid var(--white); border-radius: 50%; color: var(--white); background: var(--petrol); font: 600 3.4rem/1 Montserrat, sans-serif; }
.lead { font-size: 1.14rem; color: #2d4444; }
.stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin-top: 38px; padding-top: 30px; border-top: 1px solid var(--line); }
.stat strong { display: block; color: var(--petrol); font: 700 clamp(2.1rem, 4vw, 3.2rem)/1 Montserrat, sans-serif; }
.stat span { display: block; margin-top: 9px; color: #5f6f6f; font: 600 0.68rem/1.45 Montserrat, sans-serif; letter-spacing: .1em; text-transform: uppercase; }

.training { background: var(--cloud); }
.section-heading { display: grid; grid-template-columns: 1fr 1fr; gap: 50px; align-items: end; }
.section-heading p:last-child { margin-bottom: 22px; color: #647373; }
.section-heading > div:last-child > p:first-child { margin-bottom: 16px; }
.update-stamp { width: max-content; max-width: 100%; display: flex; align-items: center; gap: 9px; padding: 9px 14px; border: 1px solid #b8d6cb; border-radius: 999px; color: var(--petrol) !important; background: rgba(255,255,255,.8); font: 700 .7rem/1.35 Montserrat, sans-serif; letter-spacing: .06em; text-transform: uppercase; }
.update-stamp span { width: 19px; height: 19px; flex: 0 0 auto; display: grid; place-items: center; border-radius: 50%; color: var(--white); background: var(--petrol); font-size: .65rem; }
.section-actions { margin: 12px 0 48px; display: flex; align-items: center; gap: 28px; }
.text-link { display: inline-flex; gap: 10px; align-items: center; color: var(--petrol); font: 700 0.78rem/1.4 Montserrat, sans-serif; letter-spacing: .09em; text-transform: uppercase; border-bottom: 1px solid var(--mint); padding-bottom: 4px; }
.cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.training-card { position: relative; min-height: 360px; overflow: hidden; border-bottom: 11px solid var(--universe-color, var(--petrol)); border-radius: 3px; color: var(--white); background: linear-gradient(180deg, rgba(17,38,39,.02), rgba(17,38,39,.86)), var(--image) center / cover no-repeat; isolation: isolate; }
.training-card::before { content: ""; position: absolute; inset: 0; z-index: -1; background: var(--image) center / cover no-repeat; transition: transform .5s ease; }
.training-card::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(17,38,39,0) 18%, color-mix(in srgb, var(--universe-color, var(--petrol)) 78%, #142526)); }
.training-card:hover::before { transform: scale(1.055); }
.training-card > div { position: absolute; inset: auto 26px 25px; }
.training-card span { width: max-content; display: inline-flex; padding: 6px 9px; border-radius: 999px; color: var(--white); background: var(--universe-color, var(--petrol)); font: 700 0.68rem/1 Montserrat, sans-serif; letter-spacing: .14em; }
.training-card h3 { min-height: 60px; margin: 10px 0 13px; font-size: 1.35rem; }
.training-card a { font: 700 0.71rem/1 Montserrat, sans-serif; letter-spacing: .08em; text-transform: uppercase; }
.training-card a::after { content: " →"; color: var(--universe-soft, var(--mint)); }

.accessibility { padding: 110px 0; color: var(--white); background: linear-gradient(rgba(26,55,56,.78), rgba(26,55,56,.78)), url("assets/accessible.jpg") center / cover fixed; }
.accessibility-content { max-width: 880px; text-align: center; }
.kicker-light { color: var(--mint); }
.accessibility h2 { font-size: clamp(2rem, 4.8vw, 4rem); }
.accessibility p:not(.kicker) { max-width: 730px; margin: 0 auto 30px; font-size: 1.08rem; }

.center-heading { max-width: 780px; margin: 0 auto 55px; text-align: center; }
.team-grid { max-width: 780px; margin: auto; display: grid; grid-template-columns: repeat(2, 1fr); gap: 50px; }
.person { text-align: center; }
.portrait { max-width: 310px; aspect-ratio: 1 / 1.08; margin: 0 auto 25px; overflow: hidden; border-radius: 150px 150px 8px 8px; background: var(--mint-light); }
.portrait img { width: 100%; height: 100%; object-fit: cover; object-position: center top; filter: saturate(.9); transition: transform .4s ease; }
.person:hover img { transform: scale(1.035); }
.person h3 { margin-bottom: 5px; font-size: 1.3rem; }
.person p { color: #6b7978; font-size: .9rem; text-transform: uppercase; letter-spacing: .09em; }

.practical { background: var(--petrol-deep); color: var(--white); }
.practical-grid { display: grid; grid-template-columns: .8fr 1.2fr; gap: 90px; }
.practical-intro > p:not(.kicker) { color: rgba(255,255,255,.75); }
.practical .text-link { color: var(--mint); border-color: var(--mint); }
.steps { margin: 0; padding: 0; list-style: none; counter-reset: steps; }
.steps li { display: grid; grid-template-columns: 54px 1fr; gap: 22px; padding: 26px 0; border-top: 1px solid rgba(255,255,255,.17); }
.steps li:last-child { border-bottom: 1px solid rgba(255,255,255,.17); }
.steps span { color: var(--mint); font: 600 .75rem Montserrat, sans-serif; }
.steps h3 { margin-bottom: 7px; font-size: 1.18rem; }
.steps p { margin: 0; color: rgba(255,255,255,.7); font-size: .95rem; }

.faq { background: var(--cloud); }
.faq-grid { display: grid; grid-template-columns: .75fr 1.25fr; gap: 80px; }
.faq-intro { position: sticky; top: 30px; align-self: start; }
.accordion details { border-top: 1px solid #bac9c5; }
.accordion details:last-child { border-bottom: 1px solid #bac9c5; }
.accordion summary { position: relative; cursor: pointer; list-style: none; padding: 24px 50px 24px 0; font: 600 1.02rem/1.5 Montserrat, sans-serif; }
.accordion summary::-webkit-details-marker { display: none; }
.accordion summary::after { content: "+"; position: absolute; right: 5px; top: 22px; width: 28px; height: 28px; display: grid; place-items: center; border: 1px solid #91a9a3; border-radius: 50%; color: var(--petrol); font-size: 1.2rem; }
.accordion details[open] summary::after { content: "−"; }
.accordion details p { max-width: 720px; padding: 0 45px 24px 0; color: #5d6c6b; }

.catalogue-grid { display: grid; grid-template-columns: .68fr 1.32fr; gap: 80px; align-items: center; }
.catalogue-cover { max-width: 330px; margin: auto; padding: 18px; background: var(--white); box-shadow: var(--shadow); transform: rotate(-2deg); }
.catalogue-copy p:not(.kicker) { max-width: 650px; }
.catalogue-copy .catalogue-date { width: max-content; max-width: 100%; margin: 26px 0 28px; padding: 10px 15px; border-left: 3px solid var(--mint); color: var(--petrol); background: var(--mint-light); font: 700 .78rem/1.45 Montserrat, sans-serif; letter-spacing: .04em; }
.catalogue-copy small { display: block; margin-top: 19px; color: #6d7a78; }
.catalogue-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 22px; }

.certification { padding: 75px 0; background: var(--mint-light); }
.certification-inner { display: grid; grid-template-columns: 1.15fr .55fr 1fr; align-items: center; gap: 60px; }
.certification h2 { margin: 0; font-size: clamp(1.8rem, 3.2vw, 2.8rem); }
.certification img { max-height: 108px; margin: auto; object-fit: contain; }
.certification p:last-child { margin: 0; }

.footer { padding: 85px 0 26px; color: rgba(255,255,255,.8); background: var(--petrol); }
.footer-main { display: grid; grid-template-columns: 1.15fr 1.25fr .65fr; gap: 75px; }
.footer-brand img { width: 195px; height: 74px; margin-bottom: 25px; object-fit: contain; filter: brightness(0) invert(1); }
.footer h2 { margin-bottom: 23px; color: var(--white); font-size: 1.35rem; letter-spacing: -.02em; }
.contact-line { display: block; width: max-content; color: var(--white); font: 600 1.12rem/1.8 Montserrat, sans-serif; }
.footer .button { margin-top: 18px; }
.footer-nav { display: flex; flex-direction: column; align-items: flex-start; }
.footer-nav a { padding: 3px 0; }
.footer-nav a:hover { color: var(--mint); }
.footer-bottom { margin-top: 60px; padding-top: 23px; border-top: 1px solid rgba(255,255,255,.14); display: flex; justify-content: space-between; gap: 30px; font-size: .78rem; }
.footer-bottom p { margin: 0; }

.reveal { opacity: 0; transform: translateY(18px); transition: opacity .7s ease, transform .7s ease; }
.reveal.visible { opacity: 1; transform: translateY(0); }

@media (max-width: 900px) {
  :root { --container: min(100% - 32px, 720px); }
  .section { padding: 82px 0; }
  .header-inner { height: 76px; }
  .menu-toggle { display: block; }
  .main-nav { position: absolute; top: 76px; left: 0; right: 0; display: none; flex-direction: column; align-items: stretch; gap: 0; padding: 15px 25px 25px; background: var(--white); box-shadow: 0 20px 30px rgba(18,45,46,.12); }
  .main-nav.open { display: flex; }
  .main-nav a { padding: 12px 0; }
  .main-nav a::after { bottom: 7px; }
  .split, .section-heading, .practical-grid, .faq-grid, .catalogue-grid { grid-template-columns: 1fr; }
  .about-image { max-width: 620px; }
  .about-image img { min-height: 420px; }
  .cards { grid-template-columns: repeat(2, 1fr); }
  .practical-grid, .faq-grid, .catalogue-grid { gap: 45px; }
  .faq-intro { position: static; }
  .catalogue-cover { max-width: 280px; }
  .certification-inner { grid-template-columns: 1fr .55fr; }
  .certification-inner p:last-child { grid-column: 1 / -1; }
  .footer-main { grid-template-columns: 1fr 1fr; }
  .footer-nav { grid-column: 1 / -1; flex-direction: row; flex-wrap: wrap; gap: 8px 24px; }
  .footer-nav h2 { width: 100%; }
}

@media (max-width: 620px) {
  .topbar-inner { justify-content: center; }
  .socials { display: none; }
  .topbar p { font-size: .78rem; }
  .brand img { width: 128px; }
  .hero { min-height: 580px; background-position: 58% center; }
  .hero-content { padding-block: 72px; }
  .hero h1 { font-size: clamp(2.55rem, 12vw, 4rem); }
  .desktop-only { display: none; }
  .about-image img { min-height: 340px; border-radius: 3px 62px 3px 3px; }
  .image-mark { right: -5px; bottom: -25px; width: 78px; height: 78px; border-width: 7px; font-size: 2.7rem; }
  .stats { gap: 8px; }
  .stat strong { font-size: 2rem; }
  .stat span { font-size: .57rem; }
  .section-heading { gap: 0; }
  .section-actions { align-items: flex-start; flex-direction: column; }
  .cards { grid-template-columns: 1fr; }
  .training-card { min-height: 330px; }
  .accessibility { background-attachment: scroll; }
  .team-grid { grid-template-columns: 1fr; gap: 30px; }
  .portrait { max-width: 275px; }
  .certification-inner { grid-template-columns: 1fr; gap: 30px; text-align: center; }
  .certification-inner p:last-child { grid-column: auto; }
  .footer-main { grid-template-columns: 1fr; gap: 45px; }
  .footer-nav { grid-column: auto; }
  .footer-bottom { flex-direction: column; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; }
  .reveal { opacity: 1; transform: none; }
}

/* Catalogue and programme detail pages */
.catalogue-hero {
  padding: 95px 0;
  color: var(--white);
  background:
    linear-gradient(105deg, rgba(20, 46, 47, .96), rgba(36, 72, 74, .84)),
    url("assets/catalogue.jpg") center 36% / cover;
}
.catalogue-hero-inner { display: grid; grid-template-columns: 1.35fr .65fr; gap: 90px; align-items: center; }
.catalogue-hero .eyebrow { color: var(--mint); }
.catalogue-hero h1 { margin-bottom: 22px; font-size: clamp(3rem, 6vw, 5rem); letter-spacing: -.055em; }
.catalogue-hero-inner > div:first-child > p:last-child { max-width: 720px; margin: 0; color: rgba(255,255,255,.78); font-size: 1.12rem; }
.catalogue-hero-note { padding: 28px 30px; border: 1px solid rgba(255,255,255,.22); border-radius: 4px 36px 4px 4px; background: rgba(255,255,255,.08); backdrop-filter: blur(6px); }
.catalogue-hero-note strong, .catalogue-hero-note span, .catalogue-hero-note time { display: block; }
.catalogue-hero-note strong { margin-bottom: 16px; color: var(--mint); font: 700 .73rem/1.3 Montserrat, sans-serif; letter-spacing: .12em; text-transform: uppercase; }
.catalogue-hero-note span { color: rgba(255,255,255,.7); font-size: .84rem; }
.catalogue-hero-note time { margin: 2px 0 24px; color: var(--white); font: 700 1.38rem/1.25 Montserrat, sans-serif; }
.catalogue-hero-note .text-link { color: var(--mint); border-color: var(--mint); }

.catalogue-family { position: relative; scroll-margin-top: 25px; }
.catalogue-family::before { content: ""; position: absolute; inset: 0 0 auto; height: 11px; background: linear-gradient(90deg, var(--universe-color, var(--petrol)) 0 72%, var(--universe-soft, var(--mint)) 72%); }
.catalogue-family:nth-of-type(even) { background: var(--cloud); }
.family-heading { min-height: 210px; display: grid; grid-template-columns: 70px 1fr 285px; gap: 35px; align-items: center; margin-bottom: 48px; padding: 30px 32px; border-left: 9px solid var(--universe-color, var(--petrol)); border-radius: 3px; background: linear-gradient(105deg, color-mix(in srgb, var(--universe-soft, var(--mint)) 22%, white), white 58%); }
.family-number { align-self: start; padding-top: 8px; color: var(--universe-color, var(--mint)); font: 700 .78rem/1 Montserrat, sans-serif; letter-spacing: .14em; }
.family-heading .kicker, .family-heading h2 { color: var(--universe-color, var(--petrol)); }
.family-heading h2 { margin-bottom: 13px; font-size: clamp(2rem, 3.4vw, 3.1rem); }
.family-heading > div:nth-child(2) > p:last-child { max-width: 700px; margin: 0; color: #667675; }
.family-heading img { width: 285px; height: 190px; border-bottom: 7px solid var(--universe-color, var(--petrol)); border-radius: 3px 48px 3px 3px; object-fit: cover; box-shadow: var(--shadow); }
.program-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.program-card { position: relative; min-height: 295px; display: flex; flex-direction: column; padding: 32px; border: 1px solid var(--line); border-top: 5px solid var(--universe-color, var(--petrol)); border-radius: 4px; background: var(--white); transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease; }
.program-card:hover { transform: translateY(-4px); border-color: var(--universe-soft, #b8d6cb); border-top-color: var(--universe-color, var(--petrol)); box-shadow: 0 18px 44px rgba(19,46,47,.1); }
.program-card-category { margin-bottom: 15px; color: var(--universe-color, var(--petrol)); font: 700 .66rem/1.35 Montserrat, sans-serif; letter-spacing: .1em; text-transform: uppercase; }
.program-card h3 { margin-bottom: 15px; font-size: 1.35rem; }
.program-card h3 a::after { content: ""; position: absolute; inset: 0; }
.program-card > p:not(.program-card-category) { color: #647373; font-size: .93rem; }
.program-card-footer { position: relative; margin-top: auto; padding-top: 20px; border-top: 1px solid var(--line); display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; }
.program-card-footer > span { max-width: 55%; color: #71807f; font-size: .76rem; line-height: 1.45; }
.program-card-footer a { color: var(--universe-color, var(--petrol)); font: 700 .7rem/1.35 Montserrat, sans-serif; letter-spacing: .07em; text-transform: uppercase; white-space: nowrap; }
.program-card-footer a span { color: var(--universe-color, var(--mint)); }

.program-hero {
  min-height: 455px;
  display: grid;
  align-items: end;
  color: var(--white);
  background:
    linear-gradient(90deg, color-mix(in srgb, var(--universe-color, var(--petrol)) 72%, #142526) 0%, color-mix(in srgb, var(--universe-color, var(--petrol)) 55%, #142526) 56%, rgba(20, 37, 38, .28) 100%),
    var(--program-image) center 45% / cover no-repeat;
  box-shadow: inset 0 -12px 0 var(--universe-color, var(--petrol));
}
.program-hero-inner { padding-block: 54px 62px; }
.breadcrumbs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 58px; color: rgba(255,255,255,.68); font-size: .78rem; }
.breadcrumbs a:hover { color: var(--mint); }
.breadcrumbs span[aria-current] { max-width: 55ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.program-hero .eyebrow { width: max-content; max-width: 100%; display: block; padding: 8px 12px; border-radius: 2px; color: var(--white); background: var(--universe-color, var(--petrol)); }
.program-hero h1 { max-width: 980px; margin-bottom: 22px; font-size: clamp(2.65rem, 5.3vw, 4.75rem); letter-spacing: -.05em; }
.program-validity { width: max-content; max-width: 100%; margin: 0; padding: 10px 15px; border-left: 7px solid var(--universe-soft, var(--mint)); background: color-mix(in srgb, var(--universe-color, var(--petrol)) 78%, #142526); font: 600 .75rem/1.4 Montserrat, sans-serif; letter-spacing: .035em; }

.program-content { background: var(--cloud); }
.program-layout { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(300px, .65fr); gap: 70px; align-items: start; }
.program-copy { min-width: 0; }
.program-intro { margin-bottom: 34px; padding: 34px 36px; border-left: 8px solid var(--universe-color, var(--mint)); background: linear-gradient(100deg, color-mix(in srgb, var(--universe-soft, var(--mint)) 20%, white), white 45%); box-shadow: 0 15px 42px rgba(19,46,47,.07); }
.program-intro p { color: #506261; }
.program-intro p:last-child { margin-bottom: 0; }
.program-intro .result-line { margin-top: 22px; color: var(--universe-color, var(--petrol)); font-weight: 700; }
.program-intro .intro-bullet { margin: -8px 0 11px 17px; font-size: .92rem; }
.program-section { margin-top: 18px; padding: 34px 36px; border: 1px solid var(--line); border-top: 6px solid var(--universe-color, var(--petrol)); border-radius: 4px; background: var(--white); }
.program-section h2 { margin-bottom: 25px; color: var(--universe-color, var(--petrol-deep)); font-size: clamp(1.55rem, 2.5vw, 2.15rem); letter-spacing: -.03em; }
.program-section h3 { margin-bottom: 20px; color: var(--universe-color, var(--petrol-deep)); font-size: 1.23rem; }
.check-list { margin: 0; padding: 0; list-style: none; }
.check-list li { position: relative; padding: 10px 0 10px 34px; border-top: 1px solid #e4ebe8; color: #425554; }
.check-list li:first-child { border-top: 0; }
.check-list li::before { content: "✓"; position: absolute; left: 0; top: 10px; width: 21px; height: 21px; display: grid; place-items: center; border-radius: 50%; color: var(--white); background: var(--universe-color, var(--petrol)); font: 700 .67rem/1 Montserrat, sans-serif; }
.program-sidebar { position: sticky; top: 24px; }
.program-facts { padding: 32px; border-top: 10px solid var(--universe-color, var(--petrol)); border-radius: 4px 44px 4px 4px; background: linear-gradient(180deg, color-mix(in srgb, var(--universe-soft, var(--mint)) 25%, white) 0 118px, white 118px); box-shadow: var(--shadow); }
.program-facts h2 { margin-bottom: 27px; font-size: 1.65rem; }
.program-facts-list { margin: 0 0 28px; }
.program-facts-list > div { padding: 15px 0; border-top: 1px solid var(--line); }
.program-facts-list > div:last-child { border-bottom: 1px solid var(--line); }
.program-facts .kicker, .program-facts-list dt { color: var(--universe-color, var(--petrol)); }
.program-facts-list dt { margin-bottom: 4px; font: 700 .68rem/1.35 Montserrat, sans-serif; letter-spacing: .09em; text-transform: uppercase; }
.program-facts-list dd { margin: 0; color: #425554; font-size: .9rem; line-height: 1.55; }
.program-facts .button { width: 100%; padding-inline: 18px; background: var(--universe-color, var(--petrol)); text-align: center; }
.sidebar-contact { display: block; margin-top: 15px; color: var(--petrol); font-size: .82rem; font-weight: 700; text-align: center; }
.program-module { margin-top: 24px; padding: 38px; border: 1px solid var(--line); border-top: 8px solid var(--universe-color, var(--petrol)); border-radius: 4px; background: var(--white); }
.program-module > h2 { margin-bottom: 26px; font-size: clamp(1.7rem, 3vw, 2.45rem); }
.module-label { margin-bottom: 8px; color: var(--universe-color, var(--petrol)); font: 700 .68rem/1.35 Montserrat, sans-serif; letter-spacing: .11em; text-transform: uppercase; }
.program-facts-list.compact { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 25px; margin-bottom: 25px; }
.module-sections .program-section { padding: 25px 0 0; border: 0; border-top: 1px solid color-mix(in srgb, var(--universe-color, var(--petrol)) 35%, white); border-radius: 0; box-shadow: none; }

.program-cta { padding: 76px 0; color: var(--white); background: color-mix(in srgb, var(--universe-color, var(--petrol)) 70%, #142526); }
.program-cta-inner { display: grid; grid-template-columns: 1.3fr .7fr; gap: 70px; align-items: center; }
.program-cta h2 { margin-bottom: 12px; font-size: clamp(2rem, 4vw, 3.2rem); }
.program-cta p:last-child { max-width: 740px; margin: 0; color: rgba(255,255,255,.73); }
.cta-actions { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 12px; }

@media (max-width: 900px) {
  .catalogue-hero-inner, .program-layout, .program-cta-inner { grid-template-columns: 1fr; }
  .catalogue-hero-inner { gap: 40px; }
  .catalogue-hero-note { max-width: 430px; }
  .family-heading { grid-template-columns: 48px 1fr; }
  .family-heading img { display: none; }
  .program-layout { gap: 45px; }
  .program-sidebar { position: static; }
  .program-facts { border-radius: 4px 44px 4px 4px; }
  .cta-actions { justify-content: flex-start; }
}

@media (max-width: 620px) {
  .catalogue-hero { padding: 72px 0; }
  .catalogue-hero h1 { font-size: 2.8rem; }
  .family-heading { min-height: 0; grid-template-columns: 1fr; gap: 10px; margin-bottom: 32px; }
  .family-number { padding: 0; }
  .program-grid { grid-template-columns: 1fr; }
  .program-card { min-height: 0; padding: 26px; }
  .program-card-footer { align-items: flex-start; flex-direction: column; }
  .program-card-footer > span { max-width: 100%; }
  .program-hero { min-height: 420px; }
  .program-hero-inner { padding-block: 38px 46px; }
  .breadcrumbs { margin-bottom: 42px; }
  .breadcrumbs span[aria-current] { display: none; }
  .program-hero h1 { font-size: clamp(2.35rem, 11vw, 3.35rem); }
  .program-intro, .program-section, .program-module, .program-facts { padding: 25px; }
  .program-facts-list.compact { grid-template-columns: 1fr; }
  .program-cta { padding: 62px 0; }
}
