/* Generated by python3 build-styles.py; edit the source CSS files. */
/* Source: fonts.css */
/* Self-hosted Google Fonts. Licenses: font-license-*.txt. */
/* latin-ext */
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(font-barlow-condensed-normal-600-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(font-barlow-condensed-normal-600-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url(font-barlow-condensed-normal-800-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url(font-barlow-condensed-normal-800-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Figtree';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(font-figtree-normal-400-600-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Figtree';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(font-figtree-normal-400-600-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Instrument Serif';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(font-instrument-serif-italic-400-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Instrument Serif';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(font-instrument-serif-italic-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Instrument Serif';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(font-instrument-serif-normal-400-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Instrument Serif';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(font-instrument-serif-normal-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 600 800;
  font-display: swap;
  src: url(font-montserrat-normal-600-800-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 600 800;
  font-display: swap;
  src: url(font-montserrat-normal-600-800-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 600 900;
  font-display: swap;
  src: url(font-nunito-normal-600-900-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 600 900;
  font-display: swap;
  src: url(font-nunito-normal-600-900-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500 800;
  font-display: swap;
  src: url(font-plus-jakarta-sans-normal-500-800-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500 800;
  font-display: swap;
  src: url(font-plus-jakarta-sans-normal-500-800-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Source: css/style.css */
/* =========================================================
   CHARTE FRENCH WEB SOLUTION — modifier ici
   ========================================================= */
:root{
  --navy:#16295A;        /* bleu marine du logo */
  --navy-soft:#2C4478;
  --red:#D8283E;         /* rouge tricolore */
  --cyan:#4BB4DA;        /* bleu clair des connexions */
  --bg:#F5F7FB;
  --surface:#FFFFFF;
  --ink:#16295A;
  --text:#3A4666;
  --muted:#6B7592;
  --line:#DCE2EE;
  --font-display:"Montserrat", "Helvetica Neue", Arial, sans-serif;
  --font-body:"Figtree", "Segoe UI", Roboto, Arial, sans-serif;
  --wrap:1180px;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0C1430; --surface:#121D40; --ink:#EEF2FA; --text:#C3CBE0;
    --muted:#8A94B2; --line:#243259; --navy-soft:#8FA6DA;
  }
}
:root[data-theme="dark"]{
  --bg:#0C1430; --surface:#121D40; --ink:#EEF2FA; --text:#C3CBE0;
  --muted:#8A94B2; --line:#243259; --navy-soft:#8FA6DA;
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:1.0625rem;line-height:1.6;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit}
:focus-visible{outline:3px solid var(--cyan);outline-offset:3px;border-radius:4px}
.wrap{width:min(var(--wrap),100% - 3rem);margin-inline:auto}
h1,h2,h3{font-family:var(--font-display);color:var(--ink);line-height:1.1;margin:0;letter-spacing:-.01em}

/* Liseré tricolore */
.tricolore{height:4px;background:linear-gradient(90deg,var(--navy) 0 33.3%,#fff 33.3% 66.6%,var(--red) 66.6%)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .tricolore{background:linear-gradient(90deg,#3B5BB0 0 33.3%,#EEF2FA 33.3% 66.6%,var(--red) 66.6%)}}

/* ---------- En-tête ---------- */
.site-header{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.site-header .wrap{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;height:76px}
/* Emplacement du logo : remplacer le contenu de .logo-slot par <img src="logo.svg" alt="French Web Solution"> */
.logo-slot{display:flex;align-items:center;justify-content:center;width:180px;height:48px;border:1.5px dashed var(--line);border-radius:8px;color:var(--muted);font-size:.8rem;text-decoration:none;flex-shrink:0}
.logo-slot img{max-height:100%;width:auto}
.nav{display:flex;align-items:center;gap:2rem}
.nav a{text-decoration:none;font-weight:500;color:var(--text);font-size:.95rem}
.nav a:hover{color:var(--red)}
.btn{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--font-display);font-weight:700;font-size:.95rem;text-decoration:none;padding:.85rem 1.4rem;border-radius:999px;border:2px solid transparent;cursor:pointer;transition:background .2s,color .2s,border-color .2s}
.btn-primary{background:var(--navy);color:#fff}
.btn-primary:hover{background:var(--red)}
.btn-ghost{border-color:var(--line);color:var(--ink);background:transparent}
.btn-ghost:hover{border-color:var(--ink)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .btn-primary{background:#EEF2FA;color:#16295A}:root:not([data-theme="light"]) .btn-primary:hover{background:var(--red);color:#fff}}
.menu-toggle{display:none;background:none;border:1px solid var(--line);border-radius:8px;padding:.5rem .7rem;color:var(--ink);font:inherit;cursor:pointer}
@media (max-width:860px){
  .menu-toggle{display:block}
  .nav{position:absolute;top:76px;left:0;right:0;flex-direction:column;align-items:flex-start;gap:1.1rem;padding:1.5rem;background:var(--bg);border-bottom:1px solid var(--line);display:none}
  .nav.open{display:flex}
}

/* ---------- Hero ---------- */
.hero{padding:clamp(4rem,10vw,8rem) 0 clamp(3rem,7vw,5.5rem)}
.hero-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:4rem;align-items:end}
.hero h1{font-size:clamp(2.4rem,5.6vw,4.4rem);font-weight:800;max-width:14ch}
.hero .lead{font-size:1.2rem;max-width:36rem;margin:1.75rem 0 2.25rem}
.hero-actions{display:flex;flex-wrap:wrap;gap:.75rem}
.hero-aside{border-left:3px solid var(--red);padding-left:1.5rem}
.hero-aside p{margin:0 0 1rem;color:var(--muted);font-size:.95rem}
.hero-aside ul{list-style:none;margin:0;padding:0}
.hero-aside li{border-bottom:1px solid var(--line)}
.hero-aside li a{display:flex;justify-content:space-between;align-items:center;padding:.8rem 0;text-decoration:none;font-family:var(--font-display);font-weight:700;color:var(--ink)}
.hero-aside li a span{font-family:var(--font-body);font-weight:400;font-size:.85rem;color:var(--muted)}
.hero-aside li a:hover{color:var(--red)}
@media (max-width:860px){.hero-grid{grid-template-columns:1fr;gap:3rem}}

/* ---------- Sections ---------- */
section{scroll-margin-top:90px}
.section{padding:clamp(4rem,9vw,7rem) 0}
.section-head{display:grid;grid-template-columns:1fr 1fr;gap:2rem;align-items:end;margin-bottom:3.5rem}
.section-head h2{font-size:clamp(1.9rem,3.6vw,2.8rem);font-weight:800}
.section-head p{margin:0;max-width:34rem;color:var(--muted)}
@media (max-width:860px){.section-head{grid-template-columns:1fr}}

/* =========================================================
   RÉALISATIONS — chaque app garde sa propre charte
   (couleurs ajustables dans chaque bloc .app--xxx)
   ========================================================= */
.apps{display:flex;flex-direction:column;gap:1.5rem}
.app{--a-bg:#fff;--a-ink:#111;--a-text:#444;--a-accent:#000;--a-line:#ddd;
  display:grid;grid-template-columns:1fr 1fr;gap:3rem;align-items:center;
  padding:clamp(2rem,5vw,3.5rem);border-radius:24px;background:var(--a-bg);color:var(--a-text);overflow:hidden;position:relative}
.app h3{color:var(--a-ink);font-size:clamp(1.8rem,3.2vw,2.5rem);margin-bottom:.4rem}
.app .kind{font-size:.9rem;opacity:.8;margin:0 0 1.25rem}
.app .pitch{margin:0 0 1.5rem;max-width:30rem}
.app ul.feats{margin:0 0 2rem;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:.5rem}
.app ul.feats li{font-size:.85rem;padding:.35rem .8rem;border:1px solid var(--a-line);border-radius:999px}
.app .visit{display:inline-flex;align-items:center;gap:.5rem;font-weight:700;text-decoration:none;padding:.8rem 1.3rem;border-radius:999px;background:var(--a-accent);color:var(--a-on-accent,#fff)}
.app .visit:hover{filter:brightness(1.08)}
.app .meta{font-size:.85rem;margin-top:1rem;opacity:.75}
.app:nth-child(even) .app-copy{order:2}
@media (max-width:900px){.app{grid-template-columns:1fr}.app:nth-child(even) .app-copy{order:0}}
.mock{border-radius:16px;padding:1.5rem;font-size:.9rem}

/* --- OptiControl IA : clair, clinique, précis --- */
.app--opti{--a-bg:#EEF6F6;--a-ink:#0E3440;--a-text:#35535B;--a-accent:#0F7C80;--a-line:#BFD9DA}
.app--opti h3{font-family:"Instrument Serif",Georgia,serif;font-weight:400;font-size:clamp(2.2rem,4vw,3.1rem);letter-spacing:0}
.app--opti .mock{background:#fff;border:1px solid var(--a-line);color:#0E3440;box-shadow:0 20px 40px -24px rgba(14,52,64,.35)}
.opti-top{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid #E1ECEC;padding-bottom:.8rem;margin-bottom:1rem}
.opti-top strong{font-family:"Instrument Serif",serif;font-weight:400;font-size:1.3rem}
.opti-top span{font-size:.8rem;color:#5E7B82}
.opti-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem;margin-bottom:1rem}
.opti-kpis div{background:#F4F9F9;border-radius:10px;padding:.8rem}
.opti-kpis b{display:block;font-family:"Instrument Serif",serif;font-weight:400;font-size:2rem;line-height:1}
.opti-kpis small{color:#5E7B82}
.opti-kpis .warn b{color:#C2410C}
.opti-bar{height:8px;border-radius:99px;background:#F6D9C9;overflow:hidden}
.opti-bar i{display:block;height:100%;width:93.6%;background:#0F7C80}
.opti-note{margin:.8rem 0 0;font-size:.82rem;color:#35535B}

/* --- StudyPlus : lumineux, étudiant, énergique --- */
.app--studyplus{--a-bg:#F1EFFF;--a-ink:#1E1757;--a-text:#4A4476;--a-accent:#5B45F0;--a-line:#D3CCFB;font-family:"Plus Jakarta Sans",sans-serif}
.app--studyplus h3{font-family:"Plus Jakarta Sans",sans-serif;font-weight:800}
.sp-badge{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:12px;background:#5B45F0;color:#fff;font-weight:800;margin-bottom:1rem}
.app--studyplus .mock{background:#fff;color:#1E1757;box-shadow:0 24px 48px -28px rgba(91,69,240,.55);position:relative}
.sp-card{border:1px solid #E6E2FD;border-radius:14px;padding:1.2rem;margin-bottom:.9rem}
.sp-card small{color:#7C74B3;font-weight:700}
.sp-card p{margin:.4rem 0 0;font-weight:700;font-size:1.05rem}
.sp-row{display:flex;gap:.5rem}
.sp-row span{flex:1;text-align:center;padding:.55rem;border-radius:10px;font-weight:700;font-size:.8rem}
.sp-row .r1{background:#FFE4E6;color:#BE123C}.sp-row .r2{background:#FEF3C7;color:#A16207}.sp-row .r3{background:#DCFCE7;color:#15803D}

/* --- RaceManager : sombre, stand, télémétrie --- */
.app--race{--a-bg:#0E1114;--a-ink:#F4F4F2;--a-text:#A9AEB5;--a-accent:#F5B400;--a-on-accent:#0E1114;--a-line:#2A2F36;font-family:"Figtree",sans-serif}
.app--race h3{font-family:"Barlow Condensed",sans-serif;font-weight:800;font-size:clamp(2.4rem,4.4vw,3.4rem);text-transform:uppercase;letter-spacing:.01em}
.app--race .mock{background:#161A1F;border:1px solid #2A2F36;color:#F4F4F2;font-family:"Barlow Condensed",sans-serif}
.rm-flag{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}
.rm-flag b{background:#16A34A;color:#fff;padding:.2rem .7rem;border-radius:4px;font-size:.95rem;letter-spacing:.04em}
.rm-flag span{font-size:1.6rem;font-weight:800;letter-spacing:.03em}
.rm-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem}
.rm-grid div{background:#0E1114;border:1px solid #2A2F36;border-radius:8px;padding:.7rem}
.rm-grid small{display:block;color:#8A9098;font-size:.85rem;font-weight:600}
.rm-grid b{font-size:1.7rem;font-weight:800;line-height:1.1}
.rm-grid .hot b{color:#F5B400}
.rm-fuel{margin-top:.8rem;height:10px;background:#2A2F36;border-radius:3px;overflow:hidden}
.rm-fuel i{display:block;width:62%;height:100%;background:linear-gradient(90deg,#F5B400,#F97316)}

/* --- Studymath : collège-lycée, ludique, formules --- */
.app--math{--a-bg:#E9F8F0;--a-ink:#0B3B2A;--a-text:#3C6354;--a-accent:#12A150;--a-line:#BBE5CE;font-family:"Nunito",sans-serif}
.app--math h3{font-family:"Nunito",sans-serif;font-weight:900;letter-spacing:-.02em}
.app--math .pitch,.app--math .kind{font-weight:600}
.sm-logo{font-family:"Nunito",sans-serif;font-weight:900;font-size:1.1rem;color:#0B3B2A;margin-bottom:.8rem;display:flex;align-items:center;gap:.45rem}
.sm-logo i{font-style:normal;display:inline-grid;place-items:center;width:34px;height:34px;border-radius:10px;background:#12A150;color:#fff}
.app--math .mock{background:#fff;color:#0B3B2A;border:2px solid #BBE5CE;font-family:"Nunito",sans-serif}
.sm-head{display:flex;justify-content:space-between;font-weight:800;margin-bottom:1rem;font-size:.9rem}
.sm-head span:last-child{color:#EA580C}
.sm-q{font-weight:800;font-size:1.05rem;margin-bottom:.9rem}
.sm-q code{font-family:"Nunito",sans-serif;background:#E9F8F0;padding:.1rem .4rem;border-radius:6px}
.sm-opts{display:grid;grid-template-columns:1fr 1fr;gap:.55rem}
.sm-opts span{border:2px solid #D8EEE2;border-radius:12px;padding:.6rem .8rem;font-weight:800}
.sm-opts .ok{border-color:#12A150;background:#E9F8F0}

/* ---------- Services ---------- */
.services{display:grid;grid-template-columns:repeat(2,1fr);gap:0 4rem}
.service{padding:2rem 0;border-top:1px solid var(--line)}
.service h3{font-size:1.3rem;font-weight:700;margin-bottom:.6rem;display:flex;align-items:center;gap:.75rem}
.service h3 svg{flex-shrink:0;color:var(--red)}
.service p{margin:0;max-width:32rem}
@media (max-width:760px){.services{grid-template-columns:1fr}}

/* ---------- Qui sommes-nous ---------- */
.about{background:var(--surface);border-block:1px solid var(--line)}
.story{display:grid;grid-template-columns:.8fr 1.2fr;gap:4rem;align-items:start}
.story h2{font-size:clamp(1.9rem,3.6vw,2.8rem);font-weight:800;position:sticky;top:110px}
.story-body p{margin:0 0 1.25rem;max-width:38rem;font-size:1.1rem}
.story-body p.first{font-size:1.35rem;color:var(--ink);font-weight:500;line-height:1.5}
.origins{list-style:none;margin:2.5rem 0 0;padding:0;display:grid;gap:0}
.origins li{display:grid;grid-template-columns:10rem 1fr;gap:1.5rem;padding:1.1rem 0;border-top:1px solid var(--line)}
.origins li:last-child{border-bottom:1px solid var(--line)}
.origins strong{font-family:var(--font-display);color:var(--ink)}
.origins span{color:var(--text)}
@media (max-width:860px){.story{grid-template-columns:1fr;gap:1.5rem}.story h2{position:static}.origins li{grid-template-columns:1fr;gap:.25rem}}

.facts{display:flex;flex-wrap:wrap;gap:1rem 3rem;margin-top:3.5rem;padding-top:2rem;border-top:3px solid var(--navy)}
.facts div{font-size:.95rem;color:var(--muted)}
.facts b{display:block;font-family:var(--font-display);font-size:1.15rem;color:var(--ink)}

/* Équipe — remplacer .photo-slot par <img src="..." alt="Prénom Nom"> */
.team-head{margin:5rem 0 2.5rem;display:grid;grid-template-columns:1fr 1fr;gap:2rem;align-items:end}
.team-head h3{font-size:clamp(1.6rem,3vw,2.2rem);font-weight:800}
.team-head p{margin:0;color:var(--muted);max-width:32rem}
.team{display:grid;grid-template-columns:repeat(3,1fr);gap:2.5rem}
.member .photo-slot{aspect-ratio:4/5;border-radius:18px;border:1.5px dashed var(--line);background:var(--bg);display:grid;place-items:center;color:var(--muted);font-size:.85rem;margin-bottom:1.2rem;overflow:hidden}
.member .photo-slot img{width:100%;height:100%;object-fit:cover}
.member h4{font-family:var(--font-display);color:var(--ink);font-size:1.2rem;margin:0}
.member .role{color:var(--red);font-weight:600;font-size:.92rem;margin:.2rem 0 .7rem}
.member p{margin:0;font-size:.97rem}
.member .links{margin-top:.8rem;display:flex;gap:1rem;font-size:.9rem}
.member .links a{color:var(--navy-soft);font-weight:600;text-decoration:none}
.member .links a:hover{color:var(--red)}
@media (max-width:860px){.team-head{grid-template-columns:1fr}.team{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.team{grid-template-columns:1fr}}

/* Engagements */
.values{display:grid;grid-template-columns:repeat(4,1fr);gap:2rem;margin-top:5rem}
.value h4{font-family:var(--font-display);color:var(--ink);font-size:1.05rem;margin:0 0 .5rem;padding-top:1rem;border-top:3px solid var(--cyan)}
.value:nth-child(2) h4{border-color:var(--navy)}
.value:nth-child(3) h4{border-color:var(--red)}
.value:nth-child(4) h4{border-color:var(--navy-soft)}
.value p{margin:0;font-size:.95rem}
@media (max-width:900px){.values{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.values{grid-template-columns:1fr}}

/* Témoignage */
.quote{margin:0;padding:clamp(2rem,5vw,3.5rem) 0;display:grid;grid-template-columns:auto 1fr;gap:2rem;align-items:start}
.quote::before{content:"“";font-family:Georgia,serif;font-size:6rem;line-height:.8;color:var(--red)}
.quote p{font-size:clamp(1.3rem,2.4vw,1.7rem);color:var(--ink);font-weight:500;line-height:1.45;margin:0 0 1.25rem;max-width:40rem}
.quote cite{font-style:normal;color:var(--muted)}
.quote cite b{color:var(--ink);font-family:var(--font-display)}

/* ---------- Méthode ---------- */
.method-band{background:var(--navy);color:#C9D3EC}
.method-band h2{color:#fff}
.method-band .section-head p{color:#AEBBDD}
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:2rem;counter-reset:step;list-style:none;padding:0;margin:0}
.steps li{position:relative;padding-top:2.75rem}
.steps li::before{counter-increment:step;content:counter(step);position:absolute;top:0;left:0;width:2rem;height:2rem;border-radius:50%;border:2px solid var(--cyan);color:#fff;display:grid;place-items:center;font-family:var(--font-display);font-weight:700;font-size:.9rem}
.steps li::after{content:"";position:absolute;top:1rem;left:2.5rem;right:-1.5rem;height:2px;background:#2F4680}
.steps li:last-child::after{display:none}
.steps h3{color:#fff;font-size:1.15rem;margin-bottom:.5rem}
.steps p{margin:0;font-size:.97rem}
@media (max-width:900px){.steps{grid-template-columns:1fr 1fr}.steps li::after{display:none}}
@media (max-width:560px){.steps{grid-template-columns:1fr}}

/* ---------- Contact ---------- */
.contact-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:4rem;align-items:start}
.contact-grid h2{font-size:clamp(1.9rem,3.6vw,2.8rem);font-weight:800;margin-bottom:1rem}
.contact-grid .direct{margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--line)}
.contact-grid .direct a{font-family:var(--font-display);font-weight:700;color:var(--ink);text-decoration:none;font-size:1.1rem}
.contact-grid .direct a:hover{color:var(--red)}
form{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:clamp(1.5rem,4vw,2.5rem);display:grid;gap:1.1rem}
.row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
label{display:block;font-weight:600;font-size:.9rem;color:var(--ink);margin-bottom:.35rem}
input,select,textarea{width:100%;font:inherit;font-size:1rem;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:.75rem .9rem}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--cyan);box-shadow:0 0 0 3px color-mix(in srgb,var(--cyan) 30%,transparent)}
textarea{min-height:130px;resize:vertical}
.form-note{font-size:.85rem;color:var(--muted);margin:0}
@media (max-width:860px){.contact-grid{grid-template-columns:1fr;gap:2.5rem}.row{grid-template-columns:1fr}}

/* ---------- Pied de page ---------- */
footer{border-top:1px solid var(--line);padding:3rem 0 2rem;font-size:.9rem;color:var(--muted)}
.foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:2rem;align-items:flex-start}
.foot nav{display:flex;flex-wrap:wrap;gap:1.5rem}
.foot nav a{text-decoration:none}
.foot nav a:hover{color:var(--red)}
.foot .copy{width:100%;margin:1rem 0 0}

/* =========================================================
   MULTI-PAGES & TRANSITIONS
   ========================================================= */
.page{display:none}
.page.active{display:block}

/* Lien actif dans le menu */
.nav a.current:not(.btn){color:var(--red)}
.nav a.current:not(.btn)::after{content:"";display:block;height:2px;background:var(--red);margin-top:2px}

/* Rideau de transition */
.curtain{position:fixed;inset:0;z-index:100;background:var(--navy);display:grid;place-items:center;
  clip-path:inset(100% 0 0 0);pointer-events:none}
.curtain.in{animation:curtainIn .42s cubic-bezier(.7,0,.3,1) forwards;pointer-events:all}
.curtain.out{animation:curtainOut .5s cubic-bezier(.7,0,.3,1) forwards}
.curtain.boot{clip-path:inset(0 0 0 0);pointer-events:all}
@keyframes curtainIn{from{clip-path:inset(100% 0 0 0)}to{clip-path:inset(0 0 0 0)}}
@keyframes curtainOut{from{clip-path:inset(0 0 0 0)}to{clip-path:inset(0 0 100% 0)}}
.curtain-inner{display:flex;flex-direction:column;align-items:center;gap:1.4rem}
/* ▼ EMPLACEMENT LOGO (écran de chargement) : mettre une version blanche du logo */
.curtain .logo-slot{border-color:rgba(255,255,255,.35);color:rgba(255,255,255,.7);width:200px;height:56px}
.curtain-bar{width:200px;height:4px;border-radius:2px;overflow:hidden;background:rgba(255,255,255,.15)}
.curtain-bar i{display:block;height:100%;width:100%;transform-origin:left;transform:scaleX(0);
  background:linear-gradient(90deg,#3B5BB0 0 33.3%,#fff 33.3% 66.6%,var(--red) 66.6%)}
.curtain.in .curtain-bar i,.curtain.boot .curtain-bar i{animation:bar .7s ease forwards}
@keyframes bar{to{transform:scaleX(1)}}
.curtain-label{color:#AEBBDD;font-family:var(--font-display);font-weight:600;font-size:.9rem;min-height:1.2em}

/* Apparition du contenu de la page (une séquence orchestrée par changement de page) */
.page.active .rv{opacity:0;transform:translateY(18px);animation:rise .7s cubic-bezier(.2,.7,.2,1) forwards;animation-delay:calc(var(--i,0) * 90ms + 120ms)}
@keyframes rise{to{opacity:1;transform:none}}
@media (prefers-reduced-motion: reduce){
  .curtain{display:none!important}
  .page.active .rv{opacity:1;transform:none;animation:none}
}

/* En-tête des pages intérieures */
.page-hero{padding:clamp(3.5rem,8vw,6rem) 0 clamp(2.5rem,5vw,3.5rem);border-bottom:1px solid var(--line);margin-bottom:clamp(3rem,6vw,4.5rem)}
.crumb{font-size:.9rem;color:var(--muted);margin:0 0 1.2rem}
.crumb a{text-decoration:none}
.crumb a:hover{color:var(--red)}
.page-hero h1{font-size:clamp(2.2rem,5vw,3.8rem);font-weight:800;max-width:18ch}
.page-hero p.lead{font-size:1.15rem;max-width:40rem;margin:1.25rem 0 0}

/* Accueil : aperçu des applis */
.teasers{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}
.teaser{display:flex;flex-direction:column;justify-content:space-between;min-height:220px;padding:1.5rem;border-radius:18px;text-decoration:none;transition:transform .25s ease}
.teaser:hover{transform:translateY(-4px)}
.teaser b{font-size:1.45rem;line-height:1.1}
.teaser span{font-size:.9rem;opacity:.85;margin-top:.5rem;display:block}
.teaser em{font-style:normal;font-weight:700;font-size:.9rem}
.teaser.t-opti{background:#EEF6F6;color:#0E3440}.teaser.t-opti b{font-family:"Instrument Serif",serif;font-weight:400;font-size:1.9rem}.teaser.t-opti em{color:#0F7C80}
.teaser.t-sp{background:#F1EFFF;color:#1E1757;font-family:"Plus Jakarta Sans",sans-serif}.teaser.t-sp b{font-weight:800}.teaser.t-sp em{color:#5B45F0}
.teaser.t-race{background:#0E1114;color:#F4F4F2}.teaser.t-race b{font-family:"Barlow Condensed",sans-serif;font-weight:800;text-transform:uppercase;font-size:1.9rem}.teaser.t-race em{color:#F5B400}
.teaser.t-math{background:#E9F8F0;color:#0B3B2A;font-family:"Nunito",sans-serif}.teaser.t-math b{font-weight:900}.teaser.t-math em{color:#12A150}
@media (max-width:980px){.teasers{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.teasers{grid-template-columns:1fr}}

.more{display:inline-block;margin-top:2rem;font-family:var(--font-display);font-weight:700;color:var(--ink);text-decoration:none;border-bottom:2px solid var(--red);padding-bottom:2px}
.more:hover{color:var(--red)}

/* Bandeau d'appel à l'action */
.cta-band{margin-top:clamp(4rem,8vw,6rem);background:var(--navy);color:#C9D3EC;border-radius:28px;padding:clamp(2.5rem,6vw,4rem);display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:2rem}
.cta-band h2{color:#fff;font-size:clamp(1.6rem,3vw,2.3rem);font-weight:800;max-width:22ch}
.cta-band p{margin:.6rem 0 0}
.cta-band .btn-primary{background:#fff;color:var(--navy)}
.cta-band .btn-primary:hover{background:var(--red);color:#fff}
.page-bottom{padding-bottom:clamp(4rem,8vw,6rem)}

/* Mentions légales */
.legal h2{font-size:1.3rem;font-weight:700;margin:2.5rem 0 .75rem}
.legal p{max-width:44rem;margin:0 0 .6rem}
.legal .todo{background:color-mix(in srgb,var(--red) 10%,transparent);padding:0 .3rem;border-radius:4px}

/* Méthode : dans la page Services */
.method-band{border-radius:28px;padding:clamp(2.5rem,6vw,4rem)}

#main{outline:none}

/* =========================================================
   PAGES PROJET (zoom + fiche détaillée)
   ========================================================= */
.zoomer{position:fixed;z-index:99;pointer-events:none;
  transition:left .55s cubic-bezier(.7,0,.3,1),top .55s cubic-bezier(.7,0,.3,1),width .55s cubic-bezier(.7,0,.3,1),height .55s cubic-bezier(.7,0,.3,1),border-radius .55s cubic-bezier(.7,0,.3,1),opacity .35s ease}
.zoomer span{position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);text-align:center;
  font-family:var(--font-display);font-weight:800;font-size:clamp(1.5rem,4vw,3rem);opacity:0;transition:opacity .4s ease .2s}
.zoomer.full span{opacity:1}

.detail{--a-bg:#fff;--a-ink:#111;--a-text:#444;--a-accent:#000;--a-line:#ddd;--a-on-accent:#fff}
.dhero{background:var(--a-bg);color:var(--a-text);padding:clamp(3rem,7vw,5rem) 0 clamp(2.5rem,5vw,3.5rem);margin-bottom:clamp(3rem,6vw,4.5rem)}
.dhero .crumb,.dhero .crumb a{color:var(--a-text);opacity:.8}
.dhero h1{color:var(--a-ink);font-size:clamp(2.2rem,5.2vw,3.8rem);max-width:16ch}
.dhero .tag{display:inline-block;font-size:.8rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  padding:.35rem .8rem;border-radius:999px;border:1px solid var(--a-line);margin-bottom:1.2rem}
.dhero .lead{font-size:1.2rem;max-width:42rem;margin:1.25rem 0 2rem}
.dhero .actions{display:flex;flex-wrap:wrap;gap:.75rem}
.dhero .actions .visit{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--font-display);font-weight:700;text-decoration:none;padding:.85rem 1.4rem;border-radius:999px;background:var(--a-accent);color:var(--a-on-accent)}
.dhero .actions .ghost{display:inline-flex;align-items:center;font-family:var(--font-display);font-weight:700;text-decoration:none;padding:.85rem 1.4rem;border-radius:999px;border:2px solid var(--a-line);color:var(--a-ink)}
.dstats{display:flex;flex-wrap:wrap;gap:2.5rem;margin-top:2.5rem;padding-top:2rem;border-top:1px solid var(--a-line)}
.dstats div{font-size:.9rem}
.dstats b{display:block;font-family:var(--font-display);font-size:clamp(1.6rem,3vw,2.2rem);color:var(--a-ink);line-height:1.1}

.dsplit{display:grid;grid-template-columns:1fr 1fr;gap:3rem;margin-bottom:clamp(3rem,6vw,4.5rem)}
.dsplit h2{font-size:1.5rem;margin-bottom:1rem}
.dsplit .prob{border-left:3px solid var(--red);padding-left:1.5rem}
.dsplit .sol{border-left:3px solid var(--cyan);padding-left:1.5rem}
.dsplit p{margin:0 0 .8rem}
@media (max-width:820px){.dsplit{grid-template-columns:1fr;gap:2rem}}

.dfeats{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem 2.5rem;margin-bottom:clamp(3rem,6vw,4.5rem)}
.dfeat h3{font-size:1.1rem;margin:0 0 .5rem;padding-top:1rem;border-top:2px solid var(--line)}
.dfeat p{margin:0;font-size:.97rem}
.dfeat .lvl{display:inline-block;font-size:.72rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:.15rem .5rem;border-radius:4px;background:var(--line);color:var(--ink);margin-left:.5rem;vertical-align:2px}
@media (max-width:900px){.dfeats{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.dfeats{grid-template-columns:1fr}}

.duses{display:grid;grid-template-columns:.6fr 1.4fr;gap:3rem;margin-bottom:clamp(3rem,6vw,4.5rem)}
.duses h2{font-size:clamp(1.6rem,3vw,2.1rem)}
.duses ol{list-style:none;counter-reset:u;margin:0;padding:0}
.duses li{counter-increment:u;border-top:1px solid var(--line);padding:1.1rem 0 1.1rem 3rem;position:relative}
.duses li:last-child{border-bottom:1px solid var(--line)}
.duses li::before{content:counter(u,decimal-leading-zero);position:absolute;left:0;top:1.15rem;font-family:var(--font-display);font-weight:700;color:var(--red);font-size:.9rem}
.duses strong{display:block;font-family:var(--font-display);color:var(--ink)}
@media (max-width:820px){.duses{grid-template-columns:1fr;gap:1.5rem}}

.dplans{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;margin-bottom:clamp(3rem,6vw,4.5rem)}
.dplan{border:1px solid var(--line);border-radius:18px;padding:1.75rem;background:var(--surface)}
.dplan.best{border-color:var(--a-accent);border-width:2px}
.dplan h3{font-size:1.1rem;margin-bottom:.3rem}
.dplan .price{font-family:var(--font-display);font-weight:800;color:var(--ink);font-size:2rem;line-height:1;margin:.6rem 0 1rem}
.dplan .price small{font-size:.85rem;font-weight:500;color:var(--muted)}
.dplan ul{list-style:none;margin:0;padding:0;font-size:.95rem}
.dplan li{padding:.35rem 0;border-top:1px solid var(--line)}
@media (max-width:820px){.dplans{grid-template-columns:1fr}}

.dnav{display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;align-items:center;
  border-top:1px solid var(--line);padding-top:2rem;margin-top:clamp(3rem,6vw,4.5rem)}
.dnav a{font-family:var(--font-display);font-weight:700;text-decoration:none;color:var(--ink)}
.dnav a:hover{color:var(--red)}

/* =========================================================
   PAGES PROJET — la page entière prend la charte du produit
   (fond, texte, titres, cartes, typographie, accents)
   ========================================================= */
.detail{
  /* les jetons globaux sont redéfinis localement : tout le contenu suit */
  --bg:var(--a-page);
  --surface:var(--a-surface);
  --ink:var(--a-ink);
  --text:var(--a-text);
  --muted:var(--a-muted);
  --line:var(--a-line);
  --navy:var(--a-accent);
  --cyan:var(--a-accent);
  --red:var(--a-accent2);
  --font-display:var(--a-display);
  background:var(--a-page);
  color:var(--a-text);
  font-family:var(--a-body);
  min-height:100vh;
}
.detail h1,.detail h2,.detail h3,.detail h4{font-family:var(--a-display);color:var(--a-ink)}
.detail .dhero{background:var(--a-bg)}
.detail .dfeat h3{border-top-color:var(--a-accent)}
.detail .dplan{background:var(--a-surface);border-color:var(--a-line)}
.detail .dplan li{border-top-color:var(--a-line)}
.detail .duses li{border-color:var(--a-line)}
.detail .duses li::before{color:var(--a-accent)}
.detail .dfeat .lvl{background:var(--a-accent);color:var(--a-on-accent)}
.detail .dsplit .prob{border-left-color:var(--a-accent2)}
.detail .dsplit .sol{border-left-color:var(--a-accent)}
.detail .dnav{border-top-color:var(--a-line)}
.detail .dnav a{color:var(--a-ink)}
.detail .dnav a:hover{color:var(--a-accent)}
.detail .form-note{color:var(--a-muted)}
.detail .cta-band{background:var(--a-accent);color:var(--a-on-accent)}
.detail .cta-band h2,.detail .cta-band p{color:var(--a-on-accent)}
.detail .cta-band .btn-primary{background:var(--a-on-accent);color:var(--a-accent)}
.detail .cta-band .btn-primary:hover{background:var(--a-ink);color:var(--a-bg)}

/* Palettes complètes par produit */
.d-opti{
  --a-bg:#E4F0F0;--a-page:#F4FAFA;--a-surface:#FFFFFF;
  --a-ink:#0E3440;--a-text:#35535B;--a-muted:#6E8B92;--a-line:#CFE3E3;
  --a-accent:#0F7C80;--a-accent2:#C2410C;--a-on-accent:#FFFFFF;
  --a-display:"Instrument Serif",Georgia,serif;--a-body:"Figtree",system-ui,sans-serif}
.d-opti h1,.d-opti h2{font-weight:400;letter-spacing:0}
.d-opti h3,.d-opti h4,.d-opti .tag,.d-opti .dstats b{font-family:"Figtree",system-ui,sans-serif;font-weight:700}

.d-sp{
  --a-bg:#EBE7FF;--a-page:#F8F7FF;--a-surface:#FFFFFF;
  --a-ink:#1E1757;--a-text:#4A4476;--a-muted:#7C74B3;--a-line:#E0DAFB;
  --a-accent:#5B45F0;--a-accent2:#E11D63;--a-on-accent:#FFFFFF;
  --a-display:"Plus Jakarta Sans",system-ui,sans-serif;--a-body:"Plus Jakarta Sans",system-ui,sans-serif}
.d-sp h1,.d-sp h2,.d-sp h3{font-weight:800}

.d-race{
  --a-bg:#07090B;--a-page:#0E1114;--a-surface:#161A1F;
  --a-ink:#F4F4F2;--a-text:#A9AEB5;--a-muted:#7C838C;--a-line:#2A2F36;
  --a-accent:#F5B400;--a-accent2:#16A34A;--a-on-accent:#0E1114;
  --a-display:"Barlow Condensed",system-ui,sans-serif;--a-body:"Figtree",system-ui,sans-serif}
.d-race h1,.d-race h2{text-transform:uppercase;font-weight:800;letter-spacing:.01em}
.d-race h2{font-size:clamp(1.8rem,3.4vw,2.4rem)}
.d-race h3,.d-race h4{font-weight:600;letter-spacing:.02em;font-size:1.25rem}
.d-race .dstats b,.d-race .dplan .price{letter-spacing:.01em}
.d-race .tag{font-family:"Barlow Condensed",sans-serif;letter-spacing:.12em}

.d-math{
  --a-bg:#DDF4E8;--a-page:#F3FBF7;--a-surface:#FFFFFF;
  --a-ink:#0B3B2A;--a-text:#3C6354;--a-muted:#6E9384;--a-line:#C8E8D8;
  --a-accent:#12A150;--a-accent2:#EA580C;--a-on-accent:#FFFFFF;
  --a-display:"Nunito",system-ui,sans-serif;--a-body:"Nunito",system-ui,sans-serif}
.d-math h1,.d-math h2,.d-math h3{font-weight:900;letter-spacing:-.02em}
.d-math .dplan,.d-math .dfeat h3{border-width:2px}
.d-math .duses li,.d-math .dplan li{border-top-width:2px}

.app{scroll-margin-top:100px}
.nav a.btn-primary{color:#fff}
.nav a.btn-primary:hover{color:#fff}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .nav a.btn-primary{color:#16295A}}

/* Source: brand.css */
/* The approved logo remains intact; the compact lockup shows its symbol
   beside live text so the company name stays legible in the navigation. */
.brand{display:inline-flex;align-items:center;gap:12px;flex-shrink:0;text-decoration:none;color:var(--ink)}
.brand-mark{position:relative;display:block;flex:none;width:48px;height:64px;overflow:hidden;background:transparent}
.brand-mark img{position:absolute;width:96px;max-width:none;height:96px;left:-24px;top:-6px}
.brand-mark .brand-dark{display:none}
@media(prefers-color-scheme:dark){
  :root:not([data-theme="light"]) .brand-light{display:none}
  :root:not([data-theme="light"]) .brand-dark{display:block}
}
:root[data-theme="dark"] .brand-light{display:none}
:root[data-theme="dark"] .brand-dark{display:block}
.brand-name{display:flex;flex-direction:column;gap:5px;font-family:var(--font-display);font-size:20px;font-weight:700;line-height:1.1;letter-spacing:-.025em;white-space:nowrap}
.brand-name>span{font-size:10px;font-weight:600;letter-spacing:.34em;text-transform:uppercase}
.brand-loading{display:flex;flex-direction:column;align-items:center;gap:20px;color:#EEF2FA}
.brand-loading .brand-mark{width:144px;height:192px}
.brand-loading .brand-mark img{width:288px;height:288px;left:-72px;top:-18px}
.brand-loading .brand-name{align-items:center;font-size:27px;gap:10px}
.brand-loading .brand-name>span{font-size:12px}
@media(max-width:400px){
  .brand{gap:9px}
  .brand-name{font-size:18px}
  .brand-name>span{font-size:9px}
}

/* Source: content.css */
/* Content pages share the site's existing navy, red and adaptive theme. */
[hidden]{display:none!important}
.nav a.current:not(.btn){color:#B51E34}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .nav a.current:not(.btn){color:#FF8A98}}
:root[data-theme="dark"] .nav a.current:not(.btn){color:#FF8A98}
.skip-link{position:fixed;top:8px;left:12px;z-index:120;padding:.8rem 1.1rem;background:var(--surface);color:var(--ink);border:2px solid var(--ink);border-radius:8px;transform:translateY(-160%)}
.skip-link:focus{transform:translateY(0)}
.founder-card{display:grid;grid-template-columns:auto 1fr;gap:2rem;padding:clamp(1.5rem,4vw,3rem);margin:3rem 0;border:1px solid var(--line);border-radius:20px;background:var(--surface)}
.founder-initials{display:grid;place-items:center;width:88px;height:88px;border-radius:50%;background:var(--navy);color:#fff;font-family:var(--font-display);font-size:1.8rem;font-weight:700}
.founder-card h2{font-size:clamp(1.6rem,3vw,2.2rem)}
.founder-card p{max-width:48rem}
.pricing-source{font-size:.9rem;margin:1.25rem 0;color:var(--a-text,var(--text))}
.availability{font-size:.85rem;font-weight:600;color:var(--a-text,var(--text))}
.message-preview{min-width:0;margin:0;border-top:1px solid var(--line);padding-top:1.5rem}
.message-preview h2{font-size:1.3rem;margin:0}
.message-preview p{font-size:.95rem;overflow-wrap:anywhere}
.message-preview textarea{min-height:220px;line-height:1.5}
.message-actions{display:flex;gap:.7rem;flex-wrap:wrap;margin:1rem 0}
.message-actions .btn{font-size:.85rem;padding:.7rem 1rem}
input[aria-invalid="true"],textarea[aria-invalid="true"]{border-color:var(--red)}
.contact-grid>*{min-width:0}
.contact-grid .direct a{overflow-wrap:anywhere}
.page.active .rv{animation-delay:calc(min(var(--i,0),3) * 40ms);animation-duration:.4s}
@media(max-width:560px){.founder-card{grid-template-columns:1fr;gap:1rem}.hero-aside li a{gap:1rem}.hero-aside li a span{flex-shrink:0}.dnav{gap:1rem;flex-wrap:wrap}.dhero .actions{gap:.75rem}}
.eyebrow{font-family:var(--font-display);font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--navy-soft);margin:0 0 1.2rem}
.content-section{margin:0 0 clamp(3rem,7vw,6rem)}
.content-section .section-head{align-items:start}
.content-section h2{font-size:clamp(1.7rem,3vw,2.6rem)}
.rse-hero{display:grid;grid-template-columns:1.35fr 1fr;gap:clamp(2rem,5vw,5rem);align-items:center}
.rse-hero h1{font-size:clamp(2.4rem,4.5vw,4rem);max-width:16ch}
.rse-hero .lead{max-width:37rem}
.rse-compass{border:1px solid var(--line);border-top:3px solid var(--red);padding:clamp(1.5rem,3vw,2.5rem);background:var(--surface);border-radius:0 0 16px 16px}
.rse-compass ol{list-style:none;padding:0;margin:0}
.rse-compass li{display:flex;gap:1rem;padding:1rem 0;border-bottom:1px solid var(--line);font-family:var(--font-display);font-weight:600;font-size:.98rem;color:var(--ink)}
.rse-compass li span{font-size:.8rem;color:var(--navy-soft);padding-top:.15rem}
.rse-compass>p:last-child{font-size:.9rem;margin:1.25rem 0 0;color:var(--muted)}
.principles-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem}
.principle{border-top:1px solid var(--line);padding-top:1.5rem}
.step-number{display:block;font-family:var(--font-display);font-size:.8rem;color:var(--navy-soft);margin-bottom:1.2rem}
.principle h3,.responsibility-grid h3,.providers h3,.progress-list h3{font-size:1.2rem;line-height:1.35}
.principle p{font-size:1rem;margin:.8rem 0 0}
.context-note{padding-left:1.25rem;border-left:2px solid var(--line);font-size:.9rem;color:var(--muted);margin:2rem 0 0;max-width:64rem}
.context-note a,.content-callout a,.faq a{color:var(--navy-soft);text-underline-offset:3px}
.responsibility-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem}
.responsibility-grid article{border:1px solid var(--line);border-radius:16px;background:var(--surface);padding:clamp(1.5rem,3vw,2.25rem)}
.responsibility-grid article p{font-size:1rem}
.responsibility-grid .status-label{font-size:.7rem;font-family:var(--font-display);font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--navy-soft);margin:0 0 1rem}
.responsibility-grid .detail-line{font-size:.87rem;border-top:1px solid var(--line);padding-top:1rem;margin-bottom:0;color:var(--muted)}
.providers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}
.providers article{display:flex;flex-direction:column;padding:1.5rem;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.providers h3{font-size:1.4rem;margin:0 0 .4rem}
.providers article>span{font-size:.75rem;color:var(--muted)}
.providers p{font-size:.95rem;margin:1.1rem 0 1.5rem}
.providers a{font-size:.85rem;font-weight:600;color:var(--navy-soft);margin-top:auto;text-underline-offset:4px}
.content-callout{border-left:3px solid var(--red);background:var(--surface);padding:1.6rem 2rem;margin-top:2rem}
.content-callout h3{font-size:1.2rem}
.content-callout p{margin:.7rem 0 0;max-width:65rem}
.progress-list{list-style:none;padding:0;margin:0}
.progress-list li{display:grid;grid-template-columns:1fr 1.5fr auto;gap:2rem;align-items:start;border-top:1px solid var(--line);padding:1.5rem 0}
.progress-list li:last-child{border-bottom:1px solid var(--line)}
.progress-list p{margin:0;font-size:1rem;max-width:36rem}
.progress-list span{font-size:.75rem;padding:.35rem .7rem;border:1px solid var(--line);border-radius:999px;color:var(--muted)}
.page-date{font-size:.8rem;color:var(--muted);margin:2rem 0 0}
.legal h2[id]{scroll-margin-top:100px}
.tool-strip{display:flex;flex-wrap:wrap;gap:.8rem;margin:1.5rem 0}
.tool-strip span{border:1px solid var(--line);padding:.7rem 1rem;border-radius:8px;font-family:var(--font-display);color:var(--ink);font-size:.92rem;font-weight:600}
.faq{margin-top:4rem}
.faq h2{margin-bottom:1.5rem;font-size:clamp(1.6rem,3vw,2.3rem)}
.faq details{border-top:1px solid var(--line);padding:1.2rem 0}
.faq details:last-child{border-bottom:1px solid var(--line)}
.faq summary{cursor:pointer;color:var(--ink);font-family:var(--font-display);font-size:1rem;font-weight:600}
.faq details p{max-width:52rem;margin:1rem 0 .2rem;font-size:1rem}
.service-deliverables{margin-top:4rem}
.content-section .section-head>div{max-width:40rem}
.content-section .section-head>div .eyebrow{margin-bottom:.9rem}
.service-deliverables .method-band{padding:clamp(1.5rem,4vw,3rem);border-radius:16px}
/* The extra RSE link moves the navigation breakpoint before it can collide with the logo. */
@media(min-width:1041px){.site-header .nav{gap:1.4rem}}
@media(max-width:1040px){
  .menu-toggle{display:block}
  .site-header .nav{position:absolute;top:76px;left:0;right:0;flex-direction:column;align-items:flex-start;gap:1.1rem;padding:1.5rem;background:var(--bg);border-bottom:1px solid var(--line);display:none}
  .site-header .nav.open{display:flex}
}
@media(max-width:860px){
  .rse-hero{grid-template-columns:1fr}
  .providers{grid-template-columns:repeat(2,minmax(0,1fr))}
  .principles-grid{grid-template-columns:1fr;gap:1.5rem}
  .progress-list li{grid-template-columns:1fr;gap:.8rem}
  .progress-list span{justify-self:start}
}
@media(max-width:560px){
  .responsibility-grid,.providers{grid-template-columns:1fr}
  .rse-compass{padding:1.5rem}
  .content-callout{padding:1.4rem}
  .content-section .section-head{display:block}
  .content-section .section-head>p{margin-top:1rem}
}

/* Keep the same palette while meeting AA contrast on the light background. */
:root{--muted:#626D88}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]){--muted:#8A94B2}}
:root[data-theme="dark"]{--muted:#8A94B2}
.teaser.t-math em{color:#087A39}

/* Source: responsive.css */
/* Layout follows available space, not a device name or a fixed aspect ratio. */
:root{
  --page-gutter:clamp(1rem,4vw,1.5rem);
  --safe-left:env(safe-area-inset-left,0px);
  --safe-right:env(safe-area-inset-right,0px);
  --safe-top:env(safe-area-inset-top,0px);
  --safe-bottom:env(safe-area-inset-bottom,0px);
  --header-height:76px;
}
html{scroll-padding-top:calc(var(--header-height) + var(--safe-top) + 1rem)}
.wrap{
  width:min(var(--wrap),calc(100% - var(--page-gutter)*2 - var(--safe-left) - var(--safe-right)));
  margin-left:max(calc(var(--page-gutter) + var(--safe-left)),calc((100% - var(--wrap))/2));
  margin-right:auto;
}
main,footer{overflow-wrap:anywhere}
:is(.hero-grid,.section-head,.app,.services,.story,.team,.values,.steps,.contact-grid,.row,.dsplit,.dfeats,.duses,.dplans,.rse-hero,.principles-grid,.responsibility-grid,.providers,.progress-list li,.founder-card,.teasers)>*{min-width:0}
:is(.btn,.visit,.ghost){max-width:100%;text-align:center;justify-content:center;min-height:44px}
:is(input,select,textarea){min-width:0;max-width:100%;scroll-margin-block:calc(var(--header-height) + var(--safe-top) + 1rem)}
.detail{min-height:100svh}
.site-header{padding-top:var(--safe-top)}
.site-header .wrap{height:var(--header-height)}
.menu-toggle{min-width:58px;min-height:44px;flex-shrink:0}
footer{padding-bottom:calc(2rem + var(--safe-bottom))}

/* Previews must reflow inside their card, including on narrow cover screens. */
.opti-top,.rm-flag,.sm-head{flex-wrap:wrap;gap:.5rem}
.opti-kpis{grid-template-columns:repeat(auto-fit,minmax(min(100%,5.5rem),1fr))}
.rm-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,6rem),1fr))}
.sp-row{flex-wrap:wrap}
.sp-row span{flex:1 1 4rem}
.sm-logo i{flex-shrink:0}
.dplans{grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr))}

/* An open menu remains scrollable above the browser bars or on a short screen. */
@media(max-width:1180px), (horizontal-viewport-segments:2){
  .menu-toggle{display:block}
  .site-header .nav{
    position:absolute;top:100%;left:0;right:0;display:none;
    flex-direction:column;align-items:stretch;gap:.25rem;
    padding:1rem calc(var(--page-gutter) + var(--safe-right)) calc(1rem + var(--safe-bottom)) calc(var(--page-gutter) + var(--safe-left));
    max-height:calc(100vh - var(--header-height) - var(--safe-top) - 4px);
    max-height:calc(100dvh - var(--header-height) - var(--safe-top) - 4px);
    overflow-y:auto;overscroll-behavior:contain;
    background:var(--bg);border-bottom:1px solid var(--line);
  }
  .site-header .nav.open{display:flex}
  .site-header .nav a{min-height:44px;padding:.65rem .75rem}
  .site-header .nav .btn{align-self:flex-start}
  .site-header .nav a.current:not(.btn)::after{max-width:3rem}
}

/* A book-size unfolded display can place the copy beside its preview. */
@media(min-width:720px) and (max-width:900px){
  .app{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:1.5rem;padding:1.5rem}
  .app .mock{padding:1rem}
}
@media(min-width:561px) and (max-width:1100px){
  .steps{grid-template-columns:repeat(2,minmax(0,1fr))}
  .steps li::after{display:none}
}
@media(max-width:600px){
  .site-header .wrap{gap:.5rem}
  .hero{padding:clamp(2.5rem,8vw,4rem) 0 3rem}
  .hero h1,.rse-hero h1{font-size:clamp(2rem,8.5vw,2.8rem)}
  .page-hero{padding-top:2.5rem;margin-bottom:2rem}
  .app{padding:clamp(1rem,4vw,1.5rem);gap:1.5rem}
  .mock{padding:clamp(.75rem,3vw,1.25rem)}
  .sp-card{padding:.9rem}
  .cta-band,.method-band{padding:clamp(1.25rem,5vw,2rem);border-radius:20px}
  .hero-aside{padding-left:1rem}
  .hero-aside li a{flex-wrap:wrap;gap:.25rem .75rem}
  .hero-actions .btn,.cta-band>.btn{width:100%}
  .dhero .actions>*{flex:1 1 100%}
  .dstats{gap:1.5rem}
  .dplan{padding:1.25rem}
  .foot nav{width:100%;gap:.25rem .75rem}
  .foot nav a{display:inline-flex;align-items:center;min-height:44px}
  .service h3{align-items:flex-start}
  .service h3 svg{margin-top:.1em}
  .faq summary{min-height:44px}
  form{padding:clamp(1rem,4vw,1.5rem)}
  .message-actions>*{width:100%}
}
@media(max-width:360px){
  .brand{gap:6px}
  .brand-name{font-size:15px}
  .brand-name>span{font-size:8px}
  .brand-mark{width:36px;height:48px}
  .brand-mark img{width:72px;height:72px;left:-18px;top:-4.5px}
  .menu-toggle{padding:.4rem .55rem;font-size:.9rem}
  .page-hero h1,.dhero h1{font-size:2rem}
}
@media(max-height:500px) and (orientation:landscape){
  :root{--header-height:68px}
  .hero,.page-hero,.dhero{padding-top:1.75rem}
  .hero{padding-bottom:2rem}
  .site-header .nav{padding-top:.5rem}
}
@media(pointer:coarse){
  .dnav a,.providers a{display:inline-flex;align-items:center;min-height:44px}
  .faq summary{min-height:44px}
}

/* Progressive enhancement for an actual two-screen hinge. Keep the reading
   column and controls on one physical panel, rather than behind the hinge.
   Continuous Fold displays use the fluid layouts above across their full width. */
@media(horizontal-viewport-segments:2){
  body{width:env(viewport-segment-width 0 0,100%);margin-left:env(viewport-segment-left 0 0,0px)}
  .site-header .wrap{gap:.5rem}
  .brand-name{font-size:16px}
  .brand{gap:6px}
  :is(.hero-grid,.section-head,.app,.services,.story,.team,.values,.steps,.contact-grid,.row,.dsplit,.dfeats,.duses,.dplans,.rse-hero,.principles-grid,.responsibility-grid,.providers,.progress-list li,.founder-card,.teasers){grid-template-columns:minmax(0,1fr);gap:1.5rem}
  .app:nth-child(even) .app-copy{order:0}
  .story h2{position:static}
  .hero,.page-hero,.dhero{padding-top:2.5rem}
  .hero h1,.page-hero h1,.dhero h1,.rse-hero h1{font-size:2.2rem}
  .app,.cta-band,.method-band,form{padding:1.25rem}
  .mock{padding:.75rem}
  .hero-aside li a{flex-wrap:wrap;gap:.5rem}
  .hero-actions .btn,.dhero .actions>*,.cta-band>.btn{width:100%}
  .foot nav a{display:inline-flex;align-items:center;min-height:44px}
  .steps li::after{display:none}
  .origins li{grid-template-columns:1fr;gap:.25rem}
}

/* Language names remain in their own language for easy discovery. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.language-picker{display:flex;align-items:center;gap:.5rem;flex-shrink:0}
.language-label{font-size:.8rem}
.language-switch{position:relative;isolation:isolate;display:grid;grid-template-columns:repeat(2,1fr);width:144px;padding:3px;border:1px solid var(--line);border-radius:999px;background:#e5e7ed;box-shadow:inset 0 1px 3px #10254a12}
.language-switch::before{content:"";position:absolute;z-index:-1;top:3px;bottom:3px;left:3px;width:calc((100% - 6px)/2);border-radius:999px;background:#fff;box-shadow:0 1px 4px #10254a26;transition:transform .22s cubic-bezier(.2,.8,.2,1)}
.language-switch[data-language="en"]::before{transform:translateX(100%)}
.language-choice{position:relative;margin:0;cursor:pointer}
.language-option{display:flex;align-items:center;justify-content:center;gap:5px;min-height:44px;border-radius:999px;color:#51596b;font-size:.75rem;font-weight:700;letter-spacing:.02em;transition:color .22s}
.language-flag{font-size:1.25rem;line-height:1;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif}
.language-choice input:checked+.language-option{color:#112449}
.language-choice input:focus-visible+.language-option{outline:3px solid #0071e3;outline-offset:2px}
.language-switch[aria-busy="true"]{opacity:.65}
@media(prefers-color-scheme:dark){.language-switch{background:#22273c}.language-switch::before{background:#4a526f;box-shadow:0 1px 4px #0005}.language-option{color:#c3c8dc}.language-choice input:checked+.language-option{color:#fff}}
@media(prefers-reduced-motion:reduce){.language-switch::before,.language-option{transition:none}}
@media(min-width:1181px){.site-header .nav{gap:1rem}.language-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}}
@media(max-width:1180px){.language-picker{padding:.65rem .75rem;border-top:1px solid var(--line);margin-top:.25rem;justify-content:space-between}.language-label{font-size:.95rem}}
