/* =============================================================
   eemagine — Design System  (eem-design-system.css)
   -------------------------------------------------------------
   ODOO MIGRATION: this single file is what your developer installs
   ONCE into the web.assets_frontend bundle. Every page/section then
   references these tokens and shared component classes.

   AESTHETIC: "Apple-grade" — near-monochrome base (white + signature
   light grey + near-black ink), generous space, confident Geist type,
   soft depth. The ONE accent is the eemagine brand blue, taken from
   the logo; the light EEG-wave blue and wordmark grey come from it too.
   ============================================================= */

/* ---- Monochrome base + brand tokens ------------------------ */
:root {
  --eem-bg:        #ffffff;
  --eem-surface:   #f5f5f7;   /* Apple signature grey */
  --eem-surface-2: #ebebf0;
  --eem-ink:       #1d1d1f;   /* near-black headings */
  --eem-body:      #494a4e;   /* body text */
  --eem-muted:     #737578;   /* captions / kickers — eemagine wordmark grey */
  --eem-line:      #d6d8db;   /* hairline */

  /* brand accent, from the logo */
  --eem-accent:       #0096d5;   /* eemagine brand blue (bright) */
  --eem-accent-dark:  #007cb3;
  --eem-accent-soft:  rgba(0,150,213,.10);
  --eem-accent-light: #73c1e8;   /* EEG-wave / light "e" blue */
  /* ============================================================
     BUTTON STYLE — pick ONE option below: uncomment its line and
     comment out the others, then SAVE and REFRESH the browser.
     Controls every "Schedule a call" / CTA button + the nav button.
     ============================================================ */

  /* Option 1 · Deep brand blue, white text — readable + on-brand   [ACTIVE]
  --eem-cta-bg:#04618f; --eem-cta-bg-hover:#034d72; --eem-cta-fg:#ffffff; --eem-cta-border:transparent; */

  /* Option 2 · Ink / charcoal, white text — maximum contrast, Apple-like 
  --eem-cta-bg:#1d1d1f; --eem-cta-bg-hover:#000000; --eem-cta-fg:#ffffff; --eem-cta-border:transparent;*/

  /* Option 3 · Bright logo blue, white text — the original (lighter) 
  --eem-cta-bg:#0096d5; --eem-cta-bg-hover:#007cb3; --eem-cta-fg:#ffffff; --eem-cta-border:transparent; */

  /* Option 4 · White / outline, blue text + blue border — light & minimal*/
  --eem-cta-bg:#ffffff; --eem-cta-bg-hover:#eaf4fb; --eem-cta-fg:#04618f; --eem-cta-border:#04618f; 
        
  /* ============================================================
     FONT STYLE — pick ONE pair below: uncomment its two lines and
     comment out the others, then SAVE and REFRESH the browser.
     All candidate fonts are preloaded in each page's <head>, so this
     is the only place you change. (For production, trim each page's
     Google Fonts <link> down to just the family you keep, for speed.)
     ============================================================ */

  /* Option 1 · Geist (headings + body) — clean, modern Apple/Vercel feel   [ACTIVE] */
  --eem-font-head: "Geist", "Inter", -apple-system, "Segoe UI", system-ui, sans-serif;
  --eem-font-body: "Geist", "Inter", -apple-system, "Segoe UI", system-ui, sans-serif;

  /* Option 2 · Montserrat headings + Open Sans body (Aptos fallback) — geometric + friendly
  --eem-font-head: "Montserrat", "Aptos", -apple-system, "Segoe UI", system-ui, sans-serif;
  --eem-font-body: "Open Sans", "Aptos", -apple-system, "Segoe UI", system-ui, sans-serif; */

  /* Option 3 · Inter (headings + body) — neutral, highly legible, single family
  --eem-font-head: "Inter", -apple-system, "Segoe UI", system-ui, sans-serif;
  --eem-font-body: "Inter", -apple-system, "Segoe UI", system-ui, sans-serif; */


  --eem-max: 1120px;
  --eem-radius:    22px;
  --eem-radius-sm: 14px;
  --eem-radius-pill: 980px;

  --eem-shadow:    0 30px 60px rgba(0,0,0,.08);
  --eem-shadow-sm: 0 10px 30px rgba(0,0,0,.06);

  --eem-space-section: clamp(72px, 9vw, 132px);

  /* ============================================================
     TYPE SCALE — single source of truth for font sizes.
     Use these tokens instead of hand-writing clamp() per page,
     so the same role renders identically everywhere.
     ============================================================ */
  --eem-fs-display:  clamp(40px, 5.6vw, 68px);  /* h1 (matches .eem h1) */
  --eem-fs-h2:       clamp(30px, 3.8vw, 46px);  /* section titles (matches .eem h2) */
  --eem-fs-h3:       clamp(18px, 1.5vw, 21px);  /* small headings (matches .eem h3) */
  --eem-fs-title:    clamp(22px, 2.3vw, 30px);  /* card & sub-section titles */
  --eem-fs-stat:     clamp(34px, 4.2vw, 52px);  /* large metric numbers */
  --eem-fs-quote:    clamp(24px, 3vw, 34px);    /* large display pull-quote */
  --eem-fs-quote-sm: clamp(18px, 1.7vw, 22px);  /* testimonial quotes */
  --eem-fs-lead:     clamp(17px, 1.4vw, 20px);  /* lead paragraphs (matches .eem-lead) */
  --eem-fs-body:     clamp(16px, 0.45vw + 14.7px, 18.5px);   /* base body — now fluid */
  --eem-fs-sm:       clamp(14px, 0.32vw + 13px, 16px);        /* secondary copy / links */
  --eem-fs-caption:  clamp(13.5px, 0.30vw + 12.6px, 15.5px);  /* meta, captions, small body */
  --eem-fs-micro:    clamp(12px, 0.20vw + 11.4px, 13.5px);    /* eyebrows, chips, tags */
}

/* optional alternate brand-blue shade */
[data-accent="deep"] { --eem-accent:#0085c7; --eem-accent-dark:#006ba3; --eem-accent-soft:rgba(0,133,199,.10); }

/* ---- Scoped reset + base ----------------------------------- */
.eem, .eem *, .eem *::before, .eem *::after { box-sizing: border-box; }

.eem {
  margin: 0;                 /* kill the default 8px body margin so full-width sections reach the screen edges */
  overflow-x: hidden;        /* belt-and-braces: never show a sideways gap/scroll from rounding */
  font-family: var(--eem-font-body);
  color: var(--eem-body);
  line-height: 1.6;
  font-size: var(--eem-fs-body);   /* fluid base — scales with screen */
  letter-spacing: -0.003em;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
.eem h1, .eem h2, .eem h3 {
  font-family: var(--eem-font-head);
  color: var(--eem-ink);
  margin: 0 0 .5em;
  font-weight: 600;
  line-height: 1.07;
  letter-spacing: -0.022em;
  text-wrap: balance;          /* even line lengths, no single-word orphan line */
}
.eem h1 { font-size: var(--eem-fs-display); }
.eem h2 { font-size: var(--eem-fs-h2); }
.eem h3 { font-size: var(--eem-fs-h3); letter-spacing:-0.015em; }
.eem p  { margin: 0 0 1rem; text-wrap: pretty; }   /* avoids orphans / awkward last-line breaks */
.eem a  { color: var(--eem-accent); }

.eem-container { width:100%; max-width:var(--eem-max); margin:0 auto; padding:0 28px; }
.eem-section { padding: var(--eem-space-section) 0; }
.eem-section--surface { background: var(--eem-surface); }

.eem-eyebrow { font-size:var(--eem-fs-micro); font-weight:600; letter-spacing:.02em; color:var(--eem-muted); margin:0 0 14px; }
.eem-lead { font-size:var(--eem-fs-lead); color:var(--eem-body); line-height:1.55; letter-spacing:-0.01em; text-wrap:balance; }
.eem-accent { color: var(--eem-accent); }

/* ---- Buttons + links --------------------------------------- */
.eem-btn {
  display:inline-flex; align-items:center; gap:8px;
  font: 500 var(--eem-fs-body)/1 var(--eem-font-body);
  padding:14px 26px; border-radius:var(--eem-radius-pill);
  border:1px solid transparent; cursor:pointer; text-decoration:none;
  transition: background .2s ease, transform .2s ease, box-shadow .2s ease, opacity .2s;
}
.eem-btn--primary { background:var(--eem-cta-bg); color:var(--eem-cta-fg); font-weight:600;
  border:1px solid var(--eem-cta-border); box-shadow:0 8px 20px rgba(0,0,0,.14); }
.eem-btn--primary:hover { background:var(--eem-cta-bg-hover); transform:translateY(-1px);
  box-shadow:0 10px 26px rgba(0,0,0,.18); }
.eem-btn--ghost { background:transparent; color:var(--eem-accent); border-color:var(--eem-line); }
.eem-btn--ghost:hover { background:var(--eem-accent-soft); border-color:transparent; }
/* Buttons scale down a touch on phones so long labels don't dominate the screen */
@media(max-width:640px){
  .eem-btn{padding:12px 20px;font-size:var(--eem-fs-sm)}
}
.eem-link { color:var(--eem-accent); text-decoration:none; font-weight:500; }
.eem-link:hover { text-decoration:underline; }
/* Cookie-consent banner (shown only when analytics is configured) */
.eem-consent{position:fixed;left:16px;right:16px;bottom:16px;z-index:60;max-width:720px;margin:0 auto;
  background:#fff;border:1px solid var(--eem-line);border-radius:16px;box-shadow:var(--eem-shadow-sm);
  padding:16px 20px;display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.eem-consent[hidden]{display:none}
.eem-consent__text{margin:0;font-size:var(--eem-fs-sm);color:var(--eem-body);max-width:46ch;flex:1 1 260px}
.eem-consent__text a{color:var(--eem-accent);font-weight:600}
.eem-consent__actions{display:flex;gap:10px;margin-left:auto}
.eem-consent .eem-btn{padding:10px 20px;font-size:var(--eem-fs-sm)}
@media(max-width:520px){.eem-consent__actions{width:100%}.eem-consent__actions .eem-btn{flex:1}}


/* =============================================================
   SHARED COMPONENTS  (used across every page)
   ============================================================= */

/* ---- Header / nav ------------------------------------------ */
.eem-header{position:sticky;top:0;z-index:20;background:rgba(255,255,255,.96);
  backdrop-filter:saturate(180%) blur(18px);-webkit-backdrop-filter:saturate(180%) blur(18px);
  border-bottom:1px solid var(--eem-line)}
.eem-header__wrap{max-width:var(--eem-max);margin:0 auto;padding:16px 28px;
  display:flex;align-items:center;justify-content:space-between;gap:24px}
.eem-header__brand img{height:52px;display:block}
.eem-nav{display:flex;align-items:center;gap:30px}
.eem-nav a{color:var(--eem-ink);text-decoration:none;font-size:var(--eem-fs-sm);font-weight:500;
  opacity:.85;transition:opacity .15s,color .15s}
.eem-nav a:hover{opacity:1;color:var(--eem-accent)}
.eem-nav a.active{color:var(--eem-accent);opacity:1}
.eem-nav__cta{background:var(--eem-cta-bg);color:var(--eem-cta-fg)!important;padding:9px 17px;
  border:1px solid var(--eem-cta-border);border-radius:980px;opacity:1!important;font-weight:600}
.eem-nav__cta:hover{background:var(--eem-cta-bg-hover)}
/* CSS-only mobile menu (no JS — survives Odoo) */
.eem-navtoggle{display:none}
.eem-burger{display:none;flex-direction:column;gap:5px;cursor:pointer;background:none;border:0;padding:8px}
.eem-burger span{display:block;width:22px;height:2px;border-radius:2px;background:var(--eem-ink)}
@media(max-width:880px){
  .eem-burger{display:flex}
  .eem-nav{position:absolute;top:100%;left:0;right:0;display:none;flex-direction:column;
    align-items:stretch;gap:0;background:#fff;padding:6px 0;border-bottom:1px solid var(--eem-line);
    box-shadow:var(--eem-shadow-sm)}
  .eem-nav a{padding:13px 28px;font-size:var(--eem-fs-body);opacity:1}
  /* CTA becomes a compact, centered pill (not a full-width bar) */
  .eem-nav a.eem-nav__cta{display:inline-flex;align-self:center;width:auto;
    margin:14px 0 8px;padding:11px 26px;font-size:var(--eem-fs-sm)}
  .eem-navtoggle:checked ~ .eem-nav{display:flex}
}

/* ---- Credibility strip (light) ----------------------------- */
.eem-strip{background:var(--eem-bg);border-top:1px solid var(--eem-line);border-bottom:1px solid var(--eem-line)}
.eem-strip__wrap{max-width:var(--eem-max);margin:0 auto;padding:22px 28px;
  display:flex;flex-wrap:wrap;justify-content:center;gap:12px 26px;
  font-size:var(--eem-fs-caption);color:var(--eem-muted);text-align:center}
.eem-strip__wrap span{position:relative;font-weight:500;white-space:nowrap}
.eem-strip__wrap span:not(:last-child)::after{content:"";position:absolute;right:-14px;top:50%;
  width:3px;height:3px;border-radius:50%;background:var(--eem-line);transform:translateY(-50%)}

/* ---- Interior page hero (full background image) ------------ */
.eem-page-hero{position:relative;overflow:hidden;background-color:var(--eem-surface);
  background-position:center;display:flex;align-items:center;min-height:clamp(440px,48vw,620px)}
/* image layer: rests in the homepage greyscale hue; reveals true colour when the banner
   scrolls into view. On its own layer so ONLY the photo grades — the text stays full colour. */
.eem-page-hero::before{content:"";position:absolute;inset:0;z-index:0;
  background-image:var(--eem-hero-img, none);background-size:cover;background-position:inherit;background-repeat:no-repeat;
  filter:grayscale(1);
  transition:filter 1.1s ease}
.eem-page-hero.is-color::before{filter:grayscale(0)}
/* text-side scrim with a faint brand-blue cast (matches the homepage tone) */
.eem-page-hero::after{content:"";position:absolute;inset:0;z-index:1;background:
  linear-gradient(90deg, rgba(255,255,255,.90) 0%, rgba(255,255,255,.64) 32%, rgba(255,255,255,.30) 58%, rgba(115,193,232,.12) 100%)}
/* --scrim variant: stronger white wash on the title side for extra headline contrast (no blur) */
.eem-page-hero--scrim::after{background:
  linear-gradient(90deg, rgba(255,255,255,.98) 0%, rgba(255,255,255,.86) 34%, rgba(255,255,255,.48) 62%, rgba(115,193,232,.12) 100%)}
.eem-page-hero__wrap{position:relative;z-index:2;width:100%;max-width:var(--eem-max);margin:0 auto;padding:clamp(40px,6vw,72px) 28px}
.eem-page-hero h1{margin:0 0 20px}
.eem-page-hero .eem-lead{max-width:46ch}
/* Small AI-visual disclaimer chip, bottom-right of any banner. Unobtrusive, non-interactive. */
.eem-hero-note{position:absolute;right:14px;bottom:12px;z-index:3;max-width:62%;margin:0;
  font-size:11px;line-height:1.3;letter-spacing:.01em;color:#fff;background:rgba(17,24,33,.42);
  padding:4px 9px;border-radius:7px;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);
  pointer-events:none}
.eem-hero-note--faint{opacity:.62}
@media (max-width:640px){ .eem-hero-note{right:10px;bottom:10px;font-size:10px;max-width:70%} }
/* centered, image-free variant (e.g. the schedule form page) */
.eem-page-hero--center{background:linear-gradient(180deg,#fff 0%,var(--eem-surface) 100%);min-height:auto}
.eem-page-hero--center::before,.eem-page-hero--center::after{display:none}
.eem-page-hero--center .eem-page-hero__wrap{max-width:820px;text-align:center;padding:clamp(56px,8vw,110px) 28px}
@media(max-width:640px){
  .eem-page-hero{min-height:auto}
  .eem-page-hero::after{background:linear-gradient(180deg, rgba(255,255,255,.86) 0%, rgba(255,255,255,.58) 100%)}
}

/* ---- Section head ------------------------------------------ */
.eem-shead{max-width:64ch;margin:0 auto 48px;text-align:center}
.eem-shead--center{text-align:center;margin-left:auto;margin-right:auto}
.eem-shead h2{margin-bottom:16px}
.eem-shead .eem-lead{margin-left:auto;margin-right:auto}

/* ---- Feature / benefit card grid --------------------------- */
.eem-features{display:grid;grid-template-columns:repeat(auto-fit,minmax(232px,1fr));gap:20px}
.eem-feature{padding:32px 30px;background:var(--eem-bg);border:1px solid var(--eem-line);
  border-radius:var(--eem-radius);transition:transform .22s ease,box-shadow .22s ease}
.eem-feature:hover{transform:translateY(-4px);box-shadow:var(--eem-shadow-sm)}
.eem-feature__icon{width:30px;height:30px;margin-bottom:20px;color:var(--eem-accent)}
.eem-feature h3{margin-bottom:9px}
.eem-feature p{font-size:var(--eem-fs-sm);margin:0;color:var(--eem-body);line-height:1.55}

/* ---- Animated step flow (reveals on load; CSS-only) -------- */
.eem-flow{display:grid;gap:20px;margin-top:8px}
.eem-flow--3{grid-template-columns:repeat(3,1fr)}
.eem-flow__step{position:relative;padding:32px 30px 34px;background:var(--eem-bg);
  border:1px solid var(--eem-line);border-radius:var(--eem-radius);
  opacity:0;transform:translateY(16px) scale(.99);
  animation:eemReveal .7s cubic-bezier(.2,.7,.2,1) forwards}
.eem-flow__step:nth-child(1){animation-delay:.05s}
.eem-flow__step:nth-child(2){animation-delay:.20s}
.eem-flow__step:nth-child(3){animation-delay:.35s}
.eem-flow__step:nth-child(4){animation-delay:.50s}
.eem-flow__step:nth-child(5){animation-delay:.65s}
.eem-flow__step:nth-child(6){animation-delay:.80s}
.eem-flow__step:nth-child(7){animation-delay:.95s}
.eem-flow__icon{display:inline-flex;align-items:center;justify-content:center;
  width:46px;height:46px;border-radius:13px;background:var(--eem-accent-soft);
  color:var(--eem-accent);margin-bottom:20px}
.eem-flow__icon svg{width:24px;height:24px}
.eem-flow__num{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;
  border-radius:50%;background:var(--eem-accent-soft);color:var(--eem-accent);
  font:600 var(--eem-fs-body)/1 var(--eem-font-head);margin-bottom:20px}
.eem-flow__step h3{margin-bottom:9px}
.eem-flow__step p{font-size:var(--eem-fs-sm);margin:0;color:var(--eem-body);line-height:1.55}
@keyframes eemReveal{to{opacity:1;transform:translateY(0) scale(1)}}
@media(max-width:760px){.eem-flow--3{grid-template-columns:1fr}}

/* ---- Trusted / logo row ------------------------------------ */
.eem-trusted{text-align:center}
.eem-trusted p{color:var(--eem-muted);font-size:var(--eem-fs-body);font-weight:500;margin:0 0 30px}
.eem-trusted__row{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:32px 54px}
.eem-trusted__row img{height:140px;width:auto;max-width:155px;object-fit:contain;opacity:.55;filter:grayscale(1);mix-blend-mode:multiply;transition:opacity .2s,filter .2s}
.eem-trusted__row img:hover{opacity:1;filter:grayscale(0)}

/* ---- Final CTA --------------------------------------------- */
.eem-cta{background:
  radial-gradient(120% 120% at 50% 0%, var(--eem-accent-soft), transparent 50%),
  linear-gradient(180deg,var(--eem-surface) 0%,#fff 100%)}
/* horizontal banner: heading + subtext on the left, action on the right */
.eem-cta__wrap{max-width:var(--eem-max);margin:0 auto;padding:0 28px;text-align:left;
  display:grid;grid-template-columns:1fr auto;column-gap:clamp(32px,5vw,72px);align-items:center}
.eem-cta__wrap h2{grid-column:1;grid-row:1;margin:0 0 10px}
.eem-cta__wrap p{grid-column:1;grid-row:2;margin:0;max-width:58ch}
.eem-cta__wrap .eem-btn{grid-column:2;grid-row:1 / span 2;align-self:center;white-space:nowrap}
@media(max-width:760px){
  .eem-cta__wrap{grid-template-columns:1fr;row-gap:24px}
  .eem-cta__wrap .eem-btn{grid-column:1;grid-row:auto;justify-self:start}
}

/* ---- Footer (light) ---------------------------------------- */
.eem-footer{background:var(--eem-surface);border-top:1px solid var(--eem-line);color:var(--eem-muted)}
.eem-footer__wrap{max-width:var(--eem-max);margin:0 auto;padding:56px 28px 28px;
  display:grid;grid-template-columns:1.3fr 1fr 1.3fr;gap:32px 48px}
.eem-footer img{height:64px;margin-bottom:18px;opacity:.95}
.eem-footer h4{color:var(--eem-ink);font:600 var(--eem-fs-micro)/1 var(--eem-font-head);margin:0 0 14px}
.eem-footer a{color:var(--eem-body);text-decoration:none;display:block;margin-bottom:9px;font-size:var(--eem-fs-sm)}
.eem-footer a:hover{color:var(--eem-accent)}
.eem-footer__note{font-size:var(--eem-fs-caption);color:var(--eem-muted)}
.eem-footer__name{color:var(--eem-ink);font-weight:600;font-size:var(--eem-fs-sm);line-height:1.4;margin:0 0 12px}
.eem-footer__addr{font-style:normal;line-height:1.55;margin:0}
.eem-footer__wrap > div > h4:not(:first-child){margin-top:26px}
.eem-footer__bottom{border-top:1px solid var(--eem-line);margin:30px auto 0;max-width:var(--eem-max);
  padding:18px 28px;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;
  font-size:var(--eem-fs-micro);color:var(--eem-muted)}
.eem-footer .eem-footer__legal{max-width:var(--eem-max);margin:0 auto;padding:0 28px 22px;
  font-size:var(--eem-fs-micro);color:var(--eem-muted);line-height:1.5;text-align:left;opacity:.85}
.eem-book__consent{margin-top:14px;font-size:var(--eem-fs-caption);color:var(--eem-muted)}
@media(max-width:860px){.eem-footer__wrap{grid-template-columns:1fr 1fr;gap:30px 32px}}
@media(max-width:520px){.eem-footer__wrap{grid-template-columns:1fr}}

/* ===================== LEGAL (legal.html) ===================== */
.eem-legal .eem-container{max-width:840px}
.eem-legal h1{font-size:var(--eem-fs-h2);margin:0 0 6px}
.eem-legal__updated{color:var(--eem-muted);font-size:var(--eem-fs-sm);margin:0 0 30px}
.eem-legal h2{font-size:var(--eem-fs-title);margin:44px 0 14px}
.eem-legal h3{font-size:var(--eem-fs-h3);margin:30px 0 10px}
.eem-legal h4{font-size:var(--eem-fs-body);color:var(--eem-ink);font-weight:600;margin:20px 0 8px}
.eem-legal p{color:var(--eem-body);line-height:1.65;margin:0 0 14px}
.eem-legal ul{color:var(--eem-body);line-height:1.65;margin:0 0 14px;padding-left:22px}
.eem-legal li{margin:0 0 6px}
.eem-legal a{color:var(--eem-accent);word-break:break-word}
.eem-legal__org{border-left:3px solid var(--eem-accent);padding-left:20px;margin:0 0 8px}

/* ---- Generic two-column ------------------------------------ */
.eem-two{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,5vw,64px);align-items:center}
@media(max-width:780px){.eem-two{grid-template-columns:1fr;gap:32px}}

@media (prefers-reduced-motion: reduce){
  .eem *, .eem *::before, .eem *::after{animation:none!important;transition:none!important}
}

/* ============================================================
   PAGE-SPECIFIC BLOCKS  (migrated from each page's <head><style>)
   Every section is now copy-paste-only HTML into an Odoo Embed
   Code block — paste the matching <section> and it styles itself
   from this bundle. Add any NEW section CSS here too (not in the
   page <head>) so copy-paste transferability is preserved.
   ============================================================ */

/* ---- Stats banner (shared: technologies + partnerships) ---- */
.eem-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:24px;text-align:center}
@media(max-width:680px){
  .eem-stats{grid-template-columns:repeat(2,1fr)}
  .eem-stats .eem-stat:last-child:nth-child(odd){grid-column:1 / -1}
}
.eem-stat strong{display:block;font:600 var(--eem-fs-stat)/1 var(--eem-font-head);color:var(--eem-accent)}
.eem-stat span{display:block;margin-top:10px;font-size:var(--eem-fs-caption);color:var(--eem-body)}

/* ===================== HOME (index.html) ===================== */
/* BLOCK: eem-hero (home-specific split hero) */
.eem-hero{position:relative;min-height:clamp(460px,72vh,720px);display:flex;align-items:center;overflow:hidden;
  background:var(--eem-surface)}
/* video → black & white, then graded toward the brand blue */
.eem-hero__video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;filter:grayscale(1);
  /* scale() = zoom (1 = none). translateX nudges the subject right. To avoid a bare
     strip on the left, keep the shift <= (scale-1)/(2*scale) of the width
     (~8.3% at scale 1.2). transform:none = no zoom, no shift. */
  --eem-hero-shift: 7%;
  transform: scale(1.2) translateX(var(--eem-hero-shift));
  transform-origin: center}
.eem-hero::before{content:"";position:absolute;inset:0;z-index:1;background:var(--eem-accent);
  mix-blend-mode:multiply;opacity:.20;pointer-events:none}
.eem-hero__scrim{position:absolute;inset:0;z-index:1;background:
  linear-gradient(90deg, rgba(255,255,255,.96) 0%, rgba(255,255,255,.9) 42%, rgba(255,255,255,.55) 70%, rgba(255,255,255,.08) 100%)}
.eem-hero__inner{position:relative;z-index:2;width:100%;max-width:var(--eem-max);margin:0 auto;
  padding:clamp(52px,8vh,96px) clamp(28px,4.5vw,56px)}
.eem-hero__copy{max-width:46ch}
.eem-hero__eyebrow{font-size:var(--eem-fs-sm);font-weight:600;color:var(--eem-accent);margin:0 0 22px}
.eem-hero h1{margin:0 0 24px}
.eem-hero__sub{font-size:var(--eem-fs-lead);color:var(--eem-body);max-width:42ch;
  margin:0 0 34px;line-height:1.45;letter-spacing:-0.012em}
@media(max-width:640px){
  .eem-hero{min-height:78vh}
  .eem-hero__scrim{background:linear-gradient(180deg,rgba(255,255,255,.88) 0%,rgba(255,255,255,.62) 100%)}
}

/* BLOCK: eem-rail (engagement journey: pre-market → post-market with contract milestones) */
.eem-rail{display:flex;align-items:stretch;margin-top:46px}
.eem-rail__phase{flex:1 1 0;min-width:0;background:var(--eem-bg);border:1px solid var(--eem-line);
  border-radius:var(--eem-radius);padding:28px 26px;display:flex;flex-direction:column;gap:12px;outline:none;
  transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}
.eem-rail__phase:hover,.eem-rail__phase:focus-within{transform:translateY(-5px);border-color:var(--eem-accent);
  box-shadow:0 16px 34px var(--eem-accent-soft)}
.eem-rail__icon{width:46px;height:46px;border-radius:13px;background:var(--eem-accent-soft);color:var(--eem-accent);
  display:flex;align-items:center;justify-content:center}
.eem-rail__icon svg{width:25px;height:25px}
.eem-rail__stage{margin:0;font-size:var(--eem-fs-micro);font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--eem-accent)}
.eem-rail__phase h3{margin:0 0 2px}
.eem-rail__conn{flex:0 0 auto;align-self:flex-start;margin-top:30px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:0 12px}
.eem-rail__chip{font-size:var(--eem-fs-micro);font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--eem-accent);
  background:var(--eem-accent-soft);padding:6px 12px;border-radius:980px;white-space:nowrap}
.eem-rail__arrow{width:26px;height:26px;color:var(--eem-accent);flex-shrink:0}
@media(max-width:880px){
  .eem-rail{flex-direction:column;align-items:stretch}
  .eem-rail__conn{flex-direction:row;padding:14px 0;margin-top:0;align-self:center}
  .eem-rail__arrow{transform:rotate(90deg)}
}

/* BLOCK: eem-proof (numbers band, with CSS reveal + underline draw) */
.eem-proof{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;text-align:center}
.eem-proof__stat{opacity:0;transform:translateY(16px);animation:eemReveal .6s cubic-bezier(.2,.7,.2,1) forwards}
.eem-proof__stat:nth-child(1){animation-delay:.05s}.eem-proof__stat:nth-child(2){animation-delay:.16s}
.eem-proof__stat:nth-child(3){animation-delay:.27s}.eem-proof__stat:nth-child(4){animation-delay:.38s}
.eem-proof__stat strong{display:block;position:relative;padding-bottom:15px;
  font:600 var(--eem-fs-stat)/1 var(--eem-font-head);color:var(--eem-accent);letter-spacing:-0.02em}
.eem-proof__stat strong::after{content:"";position:absolute;left:50%;bottom:0;width:0;height:3px;border-radius:99px;
  background:var(--eem-accent);transform:translateX(-50%);animation:eemUnderline .7s ease forwards}
.eem-proof__stat:nth-child(1) strong::after{animation-delay:.40s}.eem-proof__stat:nth-child(2) strong::after{animation-delay:.50s}
.eem-proof__stat:nth-child(3) strong::after{animation-delay:.60s}.eem-proof__stat:nth-child(4) strong::after{animation-delay:.70s}
@keyframes eemUnderline{to{width:44px}}
.eem-proof__stat span{display:block;margin-top:14px;font-size:var(--eem-fs-caption);color:var(--eem-body);line-height:1.4}
@media(max-width:680px){
  .eem-proof{grid-template-columns:repeat(2,1fr);gap:34px 20px}
  /* a lone last number (odd count) spans both columns so it sits centered, not to one side */
  .eem-proof__stat:last-child:nth-child(odd){grid-column:1 / -1}
}

/* BLOCK: eem-pairs (differentiator + partner proof, alternating rows) */
.eem-pairs{display:flex;flex-direction:column;gap:clamp(20px,3vw,32px);margin-top:46px}
.eem-pair{display:grid;grid-template-columns:1fr 1fr;gap:clamp(26px,4.5vw,60px);align-items:center}
.eem-pair__point{padding:0 clamp(4px,1.2vw,16px)}
.eem-pair__point .eem-feature__icon{width:34px;height:34px;margin-bottom:18px;color:var(--eem-accent)}
.eem-pair__point h3{margin:0 0 12px;font-size:var(--eem-fs-title);letter-spacing:-0.02em}
.eem-pair__point p{margin:0;color:var(--eem-ink);font-size:clamp(16px,1.45vw,19px);line-height:1.62}
.eem-pair__quote{position:relative;background:var(--eem-bg);border:1px solid var(--eem-line);
  border-radius:var(--eem-radius);padding:clamp(26px,3vw,36px);box-shadow:var(--eem-shadow-sm)}
.eem-pair__quote::before{content:"";display:block;width:60px;height:3px;margin-bottom:22px;
  border-radius:99px;background:var(--eem-accent)}
.eem-pair__quote blockquote{margin:0 0 22px;color:var(--eem-body);
  font:400 clamp(15px,1.35vw,17.5px)/1.6 var(--eem-font-head);letter-spacing:-0.01em}
.eem-pair__who{display:flex;align-items:center;gap:14px;padding-top:18px;border-top:1px solid var(--eem-line)}
.eem-pair__avatar{flex:0 0 auto;width:54px;height:54px;border-radius:50%;overflow:hidden;
  background:var(--eem-surface-2);color:var(--eem-muted);display:flex;align-items:center;justify-content:center}
.eem-pair__avatar img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}
.eem-pair__avatar svg{width:26px;height:26px;opacity:.5}
.eem-pair__id b{display:block;color:var(--eem-ink);font-size:var(--eem-fs-sm);line-height:1.3}
.eem-pair__id small{display:block;margin-top:3px;color:var(--eem-muted);font-size:var(--eem-fs-caption);line-height:1.35}
.eem-pair__id small a{color:var(--eem-accent);font-weight:600;text-decoration:none}
.eem-pair__id small a:hover{text-decoration:underline}
/* flip every second row so the quote alternates sides */
.eem-pair:nth-child(even) .eem-pair__point{order:2}
@media(max-width:820px){
  .eem-pair{grid-template-columns:1fr;gap:20px}
  .eem-pair:nth-child(even) .eem-pair__point{order:0}
}

/* ============== EXPERTISE (technologies.html) ============== */
/* media placeholder */
.eem-ph{aspect-ratio:1742/903;border-radius:var(--eem-radius);overflow:hidden;background:linear-gradient(155deg,#e9eaee,#f6f6f8);
  box-shadow:var(--eem-shadow);display:flex;align-items:center;justify-content:center;text-align:center}
.eem-ph img{width:100%;height:100%;object-fit:cover;display:block}
.eem-ph span{font:500 var(--eem-fs-micro)/1.6 var(--eem-font-body);color:var(--eem-muted);padding:12px 18px;
  border:1px dashed var(--eem-line);border-radius:12px;max-width:74%;background:rgba(255,255,255,.6)}

/* ================== QUALITY (quality.html) ================== */
/* BLOCK: eem-certs */
.eem-badges{display:flex;gap:24px;align-items:center;margin-top:26px}
.eem-badges img{height:84px;width:auto;opacity:.85}
.eem-cert-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px;margin-top:46px}
.eem-cert{background:var(--eem-bg);border:1px solid var(--eem-line);border-radius:var(--eem-radius);
  overflow:hidden;display:flex;flex-direction:column;transition:transform .2s,box-shadow .2s}
.eem-cert:hover{transform:translateY(-4px);box-shadow:var(--eem-shadow-sm)}
.eem-cert__cover{aspect-ratio:4/5;overflow:hidden;background:#fff;border-bottom:1px solid var(--eem-line)}
.eem-cert__cover img{width:100%;height:100%;object-fit:cover;object-position:center top;display:block}
.eem-cert__body .eem-link{margin-top:auto;padding-top:14px;font-size:var(--eem-fs-sm);font-weight:600}
.eem-cert__body{padding:22px 22px 24px;display:flex;flex-direction:column;gap:6px;flex:1}
.eem-cert__body h3{margin:0}
.eem-cert__meta{font-size:var(--eem-fs-caption);color:var(--eem-muted);margin:0}
.eem-cert__body .eem-link{margin-top:auto;padding-top:14px;font-size:var(--eem-fs-sm)}

/* ================= SERVICES (services.html) ================= */
/* BLOCK: life-cycle intro pills */
.eem-pill-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px}
.eem-pill{font-size:var(--eem-fs-sm);font-weight:500;color:var(--eem-accent);background:var(--eem-accent-soft);
  padding:8px 16px;border-radius:980px}

/* BLOCK: eem-j2 — product journey as an EEG signal path (CSS-first, Odoo-safe) */
.eem-j2__media{border-radius:var(--eem-radius);overflow:hidden;box-shadow:var(--eem-shadow);margin-bottom:46px}
.eem-j2__media img{width:100%;height:clamp(190px,25vw,340px);object-fit:cover;object-position: 50% 35%;display:block}
.eem-j2__track{position:relative}
.eem-j2__line{position:absolute;top:0;left:0;width:100%;height:56px;overflow:visible;z-index:0}
/* Services — technology-stack cards (integration capability) */
.eem-stack{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:8px}
.eem-stackcard{display:flex;flex-direction:column;background:var(--eem-bg);border:1px solid var(--eem-line);
  border-radius:var(--eem-radius);overflow:hidden;transition:transform .25s ease,box-shadow .25s ease}
.eem-stackcard:hover{transform:translateY(-5px);box-shadow:var(--eem-shadow)}
.eem-stackcard__media{aspect-ratio:16/10;overflow:hidden;background:var(--eem-surface-2)}
.eem-stackcard__media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .45s ease}
.eem-stackcard:hover .eem-stackcard__media img{transform:scale(1.05)}
.eem-stackcard__body{padding:24px 26px 26px;display:flex;flex-direction:column;gap:8px}
.eem-stackcard__body h3{margin:0}
.eem-stackcard__body p{margin:0;font-size:var(--eem-fs-caption);color:var(--eem-body);line-height:1.55}
@media(max-width:820px){.eem-stack{grid-template-columns:1fr}}

.eem-j2__line .base{fill:none;stroke:var(--eem-line);stroke-width:1.4}
/* arrowhead at the right end of the connector — appears as the line finishes drawing */
.eem-j2__arrow{position:absolute;right:-2px;top:28px;z-index:2;width:0;height:0;
  border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:11px solid var(--eem-accent);
  transform:translateY(-50%) translateX(8px) scale(.7);transform-origin:right center;
  opacity:0;transition:opacity .3s ease,transform .35s cubic-bezier(.2,.7,.2,1)}
.eem-j2--arrived .eem-j2__arrow{opacity:1;transform:translateY(-50%) translateX(0) scale(1)}
.eem-j2__line .draw{fill:none;stroke:var(--eem-accent);stroke-width:1.6;stroke-linecap:round;
  stroke-linejoin:round;stroke-dasharray:2000;stroke-dashoffset:2000;
  animation:eemDraw 2.6s cubic-bezier(.22,.61,.36,1) .2s forwards}
.eem-j2 .eem-j2__stepper {
  position: relative;
  }

  .eem-j2 .eem-j2__control {
    position: absolute;
    opacity: 0;
    pointer-events: none;
  }

  .eem-j2 .eem-j2__track--interactive {
    position: relative;
  }

  .eem-j2 .eem-j2__pulse {
    position: absolute;
    z-index: 2;
    top: 32px;
    left: calc((100% / 7) * .5);
    width: 13px;
    height: 13px;
    border: 2px solid var(--eem-accent);
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 0 0 6px var(--eem-accent-soft);
    transform: translate(-50%, -50%);
    transition: left .55s cubic-bezier(.2,.7,.2,1), box-shadow .25s ease;
  }

  .eem-j2 .eem-j2__stage {
    cursor: pointer;
  }

  .eem-j2 .eem-j2__stage .eem-j2__desc {
    opacity: 0;
  }

  .eem-j2 #eem-j2-stage-1:checked ~ .eem-j2__track .eem-j2__pulse { left: calc((100% / 7) * .5); }
  .eem-j2 #eem-j2-stage-2:checked ~ .eem-j2__track .eem-j2__pulse { left: calc((100% / 7) * 1.5); }
  .eem-j2 #eem-j2-stage-3:checked ~ .eem-j2__track .eem-j2__pulse { left: calc((100% / 7) * 2.5); }
  .eem-j2 #eem-j2-stage-4:checked ~ .eem-j2__track .eem-j2__pulse { left: calc((100% / 7) * 3.5); }
  .eem-j2 #eem-j2-stage-5:checked ~ .eem-j2__track .eem-j2__pulse { left: calc((100% / 7) * 4.5); }
  .eem-j2 #eem-j2-stage-6:checked ~ .eem-j2__track .eem-j2__pulse { left: calc((100% / 7) * 5.5); }
  .eem-j2 #eem-j2-stage-7:checked ~ .eem-j2__track .eem-j2__pulse { left: calc((100% / 7) * 6.5); }

  .eem-j2 #eem-j2-stage-1:checked ~ .eem-j2__track .eem-j2__stage:nth-child(1) .eem-j2__node,
  .eem-j2 #eem-j2-stage-2:checked ~ .eem-j2__track .eem-j2__stage:nth-child(2) .eem-j2__node,
  .eem-j2 #eem-j2-stage-3:checked ~ .eem-j2__track .eem-j2__stage:nth-child(3) .eem-j2__node,
  .eem-j2 #eem-j2-stage-4:checked ~ .eem-j2__track .eem-j2__stage:nth-child(4) .eem-j2__node,
  .eem-j2 #eem-j2-stage-5:checked ~ .eem-j2__track .eem-j2__stage:nth-child(5) .eem-j2__node,
  .eem-j2 #eem-j2-stage-6:checked ~ .eem-j2__track .eem-j2__stage:nth-child(6) .eem-j2__node,
  .eem-j2 #eem-j2-stage-7:checked ~ .eem-j2__track .eem-j2__stage:nth-child(7) .eem-j2__node {
      color: var(--eem-accent);
      border-color: var(--eem-accent);   /* selected = blue border only, no rings/elevation */
  }

  .eem-j2 #eem-j2-stage-1:checked ~ .eem-j2__track .eem-j2__stage:nth-child(1) .eem-j2__desc,
  .eem-j2 #eem-j2-stage-2:checked ~ .eem-j2__track .eem-j2__stage:nth-child(2) .eem-j2__desc,
  .eem-j2 #eem-j2-stage-3:checked ~ .eem-j2__track .eem-j2__stage:nth-child(3) .eem-j2__desc,
  .eem-j2 #eem-j2-stage-4:checked ~ .eem-j2__track .eem-j2__stage:nth-child(4) .eem-j2__desc,
  .eem-j2 #eem-j2-stage-5:checked ~ .eem-j2__track .eem-j2__stage:nth-child(5) .eem-j2__desc,
  .eem-j2 #eem-j2-stage-6:checked ~ .eem-j2__track .eem-j2__stage:nth-child(6) .eem-j2__desc,
  .eem-j2 #eem-j2-stage-7:checked ~ .eem-j2__track .eem-j2__stage:nth-child(7) .eem-j2__desc {
    opacity: 1;
  }
.eem-j2__line .pulse {fill: #fff;stroke: var(--eem-accent);stroke-width: 2;}
@keyframes eemDraw{to{stroke-dashoffset:0}}
.eem-j2__stages {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 10px;
  align-items: start;
}

.eem-j2__stage {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  outline: none;
  min-height: 190px;
}

.eem-j2__node {
  width: 72px;
  height: 72px;
  flex: 0 0 72px;
  border-radius: 16px;
  overflow: hidden;
  background: #fff;
  border: 1px solid var(--eem-line);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--eem-accent);
  box-shadow: var(--eem-shadow-sm);
  transition: transform .25s ease, border-color .25s ease, box-shadow .25s ease;
}
.eem-j2__node img { width: 100%; height: 100%; object-fit: cover; display: block; }

.eem-j2__node svg {
  width: 26px;
  height: 26px;
}

.eem-j2__stage b {
  display: flex;
  align-items: flex-start;
  justify-content: center;
  min-height: 42px;
  margin-top: 16px;
  font-size:var(--eem-fs-sm);
  color: var(--eem-ink);
  font-weight: 600;
  line-height: 1.2;
}

.eem-j2__desc {
  display: block;
  height: auto;
  margin-top: 8px;
  font-size:var(--eem-fs-micro);
  color: var(--eem-body);
  line-height: 1.45;
  opacity: 0;
  overflow: visible;
  transition: opacity .3s ease;
}

.eem-j2__stage:hover .eem-j2__node,
.eem-j2__stage:focus-within .eem-j2__node {
  border-color: var(--eem-accent);   /* ONLY the border colour changes — box never grows, lifts, or moves */
}

.eem-j2__stage:hover .eem-j2__desc,
.eem-j2__stage:focus-within .eem-j2__desc {
  opacity: 1;
}

  @media (max-width: 1000px) {
    /* Mobile rendering: a single horizontal EEG line can't cross a stacked
       layout, so we re-render the journey as a VERTICAL EEG timeline — the
       same signal motif rotated 90°, running down through the stacked stages.
       The moving pulse is desktop-only; tap-to-highlight still works. */
    .eem-j2__line { display: none; }
    .eem-j2 .eem-j2__pulse { display: none; }

    .eem-j2__stages {
      grid-template-columns: 1fr;
      gap: clamp(24px, 3.4vw, 34px);
      max-width: 600px;          /* keep the timeline a tidy, readable column */
      margin-left: auto;
      margin-right: auto;
    }

    /* node pinned top-left; name + description flow tightly beside it, all left-aligned */
    .eem-j2__stage {
      display: block;
      position: relative;
      padding-left: 90px;        /* 72px node + 18px gap */
      min-height: 72px;
      text-align: left;
    }

    /* straight connector line running down through the nodes — mirrors the desktop straight line */
    .eem-j2__stage:not(:last-child)::before {
      content: "";
      position: absolute;
      left: 36px;
      transform: translateX(-50%);
      top: 76px;                /* start just below the node */
      bottom: -30px;            /* reach across the row gap to the next node */
      width: 2px;
      background: var(--eem-accent);
      opacity: .45;
      z-index: 0;
    }

    /* the desktop horizontal arrowhead doesn't belong in the stacked layout */
    .eem-j2 .eem-j2__arrow { display: none; }

    /* cap the timeline with a downward arrowhead after the last node — the same
       'forward' cue as desktop, rotated 90° for the vertical layout */
    .eem-j2__stage:last-child::after {
      content: "";
      position: absolute;
      left: 36px;
      top: 80px;
      transform: translateX(-50%);
      width: 0; height: 0;
      border-left: 7px solid transparent;
      border-right: 7px solid transparent;
      border-top: 12px solid var(--eem-accent);
      z-index: 1;
    }

    /* node pinned top-left; never zooms — only the border highlights blue on hover/tap */
    .eem-j2__node {
      position: absolute;
      left: 0;
      top: 0;
      z-index: 1;
      transform: none !important;
    }

    .eem-j2__stage b {
      display: block;
      min-height: auto;
      margin: 0;
    }

    /* description always visible beneath the title in the stacked layout
       (selector matches the interactive hidden rule's specificity so opacity:1 wins) */
    .eem-j2 .eem-j2__stage .eem-j2__desc {
      display: block;
      max-width: 46ch;           /* comfortable line length, no horizontal sprawl */
      height: auto;
      opacity: 1;
      margin-top: 6px;
    }
  }

/* Static journey message below the stage flow */
.eem-j2 .eem-journey-static-copy {
  max-width: 880px;
  margin: 34px auto 0;
  text-align: center;
}

.eem-j2 .eem-journey-note {
  margin: 0 auto 18px;
  max-width: 720px;
  font-size:var(--eem-fs-caption);
  color: var(--eem-muted);
  text-align: center;
}

.eem-j2 .eem-journey-continuity {
  max-width: 780px;
  margin: 0 auto;
  padding: clamp(28px, 3.5vw, 42px);
  border: 1px solid var(--eem-line);
  border-radius: var(--eem-radius);
  background: #fff;
  box-shadow: var(--eem-shadow-sm);
  text-align: center;
}

.eem-j2 .eem-journey-continuity p {
  margin: 0 auto;
  max-width: 62ch;
  color: var(--eem-ink);
  font-family: var(--eem-font-head);
  font-size: var(--eem-fs-lead);
  line-height: 1.55;
  letter-spacing: -0.01em;
}

.eem-j2 .eem-journey-continuity p + p {
  margin-top: 18px;
}

/* ============= PARTNERSHIPS (partnerships.html) ============= */
/* BLOCK: project cards (image-top, partner logos overlaid, whole card links out) */
.eem-projects{display:grid;grid-template-columns:repeat(2,1fr);gap:24px}
/* project showcase — editorial alternating rows (image + copy, sides flip) */
.eem-pstack{display:flex;flex-direction:column;gap:clamp(36px,6vw,72px);margin-top:8px}
.eem-prow{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,4.5vw,60px);align-items:center}
.eem-prow__media{border-radius:var(--eem-radius);overflow:hidden;box-shadow:var(--eem-shadow-sm);
  aspect-ratio:16/11;background:var(--eem-surface-2);display:grid;place-items:center}
.eem-prow__placeholder{color:var(--eem-muted);font-size:var(--eem-fs-sm);font-weight:500;letter-spacing:.04em;
  text-transform:uppercase}
.eem-prow__fig{margin:0;min-width:0}
.eem-prow__imgnote{margin-top:10px;text-align:center;font-size:var(--eem-fs-micro);color:var(--eem-muted);line-height:1.4}
.eem-prow__media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease}
.eem-prow:hover .eem-prow__media img{transform:scale(1.04)}
.eem-prow__logo{height:26px;width:auto;display:block;margin-bottom:14px;opacity:.9}
.eem-prow__body .eem-tags{margin-bottom:14px}
.eem-prow__body h3{font-size:var(--eem-fs-title);margin:0 0 10px}
.eem-prow__body p{color:var(--eem-body);margin:0 0 16px}
.eem-prow__partners{font-size:var(--eem-fs-micro);line-height:1.5;color:var(--eem-muted);margin:0 0 16px !important}
.eem-prow__partners strong{color:var(--eem-body);font-weight:600}
.eem-prow:nth-child(even) .eem-prow__fig{order:2}
@media(max-width:760px){
  .eem-prow{grid-template-columns:1fr;gap:22px}
  .eem-prow:nth-child(even) .eem-prow__fig{order:0}
}
.eem-pcard{display:flex;flex-direction:column;background:var(--eem-bg);border:1px solid var(--eem-line);
  border-radius:var(--eem-radius);overflow:hidden;text-decoration:none;color:inherit;
  transition:transform .25s ease,box-shadow .25s ease}
.eem-pcard:hover{transform:translateY(-5px);box-shadow:var(--eem-shadow)}
.eem-pcard__media{position:relative;aspect-ratio:16/10;overflow:hidden;background:var(--eem-surface-2)}
.eem-pcard__media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .45s ease}
.eem-pcard:hover .eem-pcard__media img{transform:scale(1.05)}
.eem-pcard__media::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 48%,rgba(0,0,0,.5))}
.eem-pcard__logos{position:absolute;left:14px;bottom:14px;z-index:1;display:flex;gap:8px;flex-wrap:wrap}
.eem-pcard__logo{height:36px;display:inline-flex;align-items:center;gap:6px;background:#fff;border-radius:8px;
  padding:6px 11px;box-shadow:0 4px 14px rgba(0,0,0,.18)}
.eem-pcard__logo img{height:100%;width:auto;display:block}
.eem-pcard__logo span{font:600 var(--eem-fs-micro)/1 var(--eem-font-body);color:var(--eem-ink);white-space:nowrap}
.eem-pcard__body{padding:24px 26px 26px;display:flex;flex-direction:column;gap:12px;flex:1}
.eem-pcard__body h3{margin:0}
.eem-pcard__body p{margin:0;font-size:var(--eem-fs-caption);color:var(--eem-body);line-height:1.55}
.eem-tags{display:flex;flex-wrap:wrap;gap:7px}
.eem-tag{font-size:var(--eem-fs-micro);font-weight:600;color:var(--eem-accent);background:var(--eem-accent-soft);padding:5px 11px;border-radius:980px}
.eem-pcard__more{margin-top:auto;color:var(--eem-accent);font-weight:600;font-size:var(--eem-fs-sm);display:inline-flex;align-items:center;gap:6px;transition:gap .2s ease}
.eem-pcard:hover .eem-pcard__more{gap:11px}
@media(max-width:760px){.eem-projects{grid-template-columns:1fr}}
/* BLOCK: sponsor banner */
.eem-sponsors{text-align:center}
.eem-sponsors__row{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:26px 46px;margin-top:clamp(40px,5vw,64px)}
.eem-sponsors__slot{height:54px;min-width:120px;border:1px dashed var(--eem-line);border-radius:10px;
  display:flex;align-items:center;justify-content:center;padding:0 16px;font:500 var(--eem-fs-micro)/1.4 var(--eem-font-body);
  color:var(--eem-muted);background:var(--eem-bg)}
.eem-sponsors__logo{height:50px;width:auto;max-width:230px;object-fit:contain;display:block;
  opacity:.82;transition:opacity .25s ease,transform .25s ease}
.eem-sponsors__logo:hover{opacity:1;transform:translateY(-3px) scale(1.04)}
@media(max-width:600px){.eem-sponsors__logo{height:52px;max-width:165px}}
/* BLOCK: testimonials */
.eem-quotes{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:22px}
.eem-tq{background:var(--eem-bg);border:1px solid var(--eem-line);border-radius:var(--eem-radius);padding:30px 30px 28px;
  display:flex;flex-direction:column}
.eem-tq blockquote{margin:0 0 22px;font:400 var(--eem-fs-quote-sm)/1.55 var(--eem-font-head);color:var(--eem-ink);letter-spacing:-0.01em}
.eem-tq__who{display:flex;align-items:center;gap:18px;margin-top:auto}
.eem-tq__avatar{width:80px;height:80px;border-radius:50%;overflow:hidden;background:var(--eem-surface-2);flex-shrink:0;
  display:flex;align-items:center;justify-content:center;font:600 var(--eem-fs-sm)/1 var(--eem-font-body);color:var(--eem-muted)}
.eem-tq__avatar img{width:100%;height:100%;object-fit:cover;display:block}
.eem-tq__who b{display:block;color:var(--eem-ink);font-weight:600;font-size:var(--eem-fs-sm)}
.eem-tq__who span{font-size:var(--eem-fs-micro);color:var(--eem-muted)}

/* BLOCK: project showcase carousel (CSS-only, click to advance — Odoo-safe, no JS).
   Add a slide: duplicate a .eem-carousel__slide, add a matching radio (#eem-proj-N)
   + dot + a translateX rule below. */
.eem-carousel{position:relative}
.eem-carousel__ctrl{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.eem-carousel__viewport{overflow:hidden}
.eem-carousel__track{display:flex;transition:transform .55s cubic-bezier(.2,.7,.2,1)}
.eem-carousel__slide{flex:0 0 100%;min-width:0}
#eem-proj-1:checked ~ .eem-carousel__viewport .eem-carousel__track{transform:translateX(0)}
#eem-proj-2:checked ~ .eem-carousel__viewport .eem-carousel__track{transform:translateX(-100%)}
/* click-to-advance arrows */
.eem-carousel__nav{position:absolute;inset:0;display:flex;align-items:center;justify-content:space-between;
  pointer-events:none;z-index:2}
.eem-carousel__arrow{pointer-events:auto;cursor:pointer;width:48px;height:48px;border-radius:50%;background:#fff;
  border:1px solid var(--eem-line);box-shadow:var(--eem-shadow-sm);display:flex;align-items:center;justify-content:center;
  color:var(--eem-accent);transition:opacity .2s ease,transform .2s ease;margin:0 -6px}
.eem-carousel__arrow:hover{transform:scale(1.07)}
.eem-carousel__arrow svg{width:22px;height:22px}
#eem-proj-1:checked ~ .eem-carousel__nav .eem-carousel__arrow--prev{opacity:0;pointer-events:none}
#eem-proj-2:checked ~ .eem-carousel__nav .eem-carousel__arrow--next{opacity:0;pointer-events:none}
/* dots */
.eem-carousel__dots{display:flex;justify-content:center;gap:10px;margin-top:30px}
.eem-carousel__dot{width:9px;height:9px;border-radius:50%;background:var(--eem-line);cursor:pointer;
  transition:background .2s ease,transform .2s ease}
.eem-carousel__dot:hover{background:var(--eem-muted)}
#eem-proj-1:checked ~ .eem-carousel__dots .eem-carousel__dot:nth-child(1),
#eem-proj-2:checked ~ .eem-carousel__dots .eem-carousel__dot:nth-child(2){background:var(--eem-accent);transform:scale(1.3)}
/* mobile: unwrap into a simple stacked list — horizontal sliding is awkward on phones */
@media(max-width:760px){
  .eem-carousel__track{display:block;transform:none!important}
  .eem-carousel__slide + .eem-carousel__slide{margin-top:24px}
  .eem-carousel__nav,.eem-carousel__dots{display:none}
}

/* ==================== ABOUT (about.html) ==================== */
/* BLOCK: about quote */
.eem-quote {
  max-width: 880px;
  margin: 0 auto;
  text-align: center;
}

.eem-quote blockquote {
  position: relative;
  font: 600 var(--eem-fs-quote)/1.3 var(--eem-font-head);
  color: var(--eem-ink);
  letter-spacing: -0.02em;
  margin: 0 auto 22px;
}
/* brand-accent quotation marks — opening sits high, closing sits low */
.eem-quote blockquote::before,
.eem-quote blockquote::after {
  color: var(--eem-accent);
  font-family: var(--eem-font-head);
  font-weight: 700;
  font-size: 1.5em;
  line-height: 0;
}
.eem-quote blockquote::before { content: "\201C"; vertical-align: -0.30em; margin-right: 0.05em; }
.eem-quote blockquote::after  { content: "\201D"; vertical-align: -0.62em; margin-left: 0.03em; }

.eem-quote p {
  max-width: 720px;
  margin: 0 auto;
}
/* BLOCK: snapshot */
.eem-snapshot{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:20px;margin-top:8px}
.eem-snapshot div{padding:26px 24px;background:var(--eem-bg);border:1px solid var(--eem-line);border-radius:var(--eem-radius);transition:transform .22s ease,box-shadow .22s ease}
.eem-snapshot div:hover{transform:translateY(-4px);box-shadow:var(--eem-shadow-sm)}
.eem-snapshot strong{display:block;color:var(--eem-ink);font-weight:600;margin-bottom:8px}
.eem-snapshot p{margin:0;font-size:var(--eem-fs-caption);color:var(--eem-body)}
/* BLOCK: founder note */
.eem-founder {
  display: grid;
  grid-template-columns: 360px minmax(0, 1fr);
  gap: clamp(34px, 5vw, 68px);
  align-items: center;
}

.eem-founder__photo img {
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  object-position: 40% center;
  border-radius: var(--eem-radius);
  box-shadow: var(--eem-shadow-sm);
  display: block;
}

.eem-founder__note {
  padding: clamp(30px, 4vw, 46px);
  background: var(--eem-bg);
  border: 1px solid var(--eem-line);
  border-radius: var(--eem-radius);
  box-shadow: var(--eem-shadow-sm);
}

.eem-founder__note h2 {
  margin: 0 0 24px;
  font-size: var(--eem-fs-title);
}

.eem-founder__quote {
  border-left: 3px solid var(--eem-accent);
  padding-left: clamp(20px, 2.5vw, 30px);
}

.eem-founder blockquote {
  font: 400 clamp(15.5px, 1.4vw, 18px)/1.65 var(--eem-font-head);
  color: var(--eem-body);
  letter-spacing: -0.008em;
  margin: 0 0 24px;
}

.eem-founder cite {
  display: block;
  padding-top: 18px;
  border-top: 1px solid var(--eem-line);
  font-style: normal;
  color: var(--eem-body);
  font-size:var(--eem-fs-sm);
  line-height: 1.5;
}

.eem-founder cite strong {
  color: var(--eem-ink);
  font-weight: 600;
}

@media (max-width: 720px) {
  .eem-founder {
    grid-template-columns: 1fr;
  }

  .eem-founder__photo {
    max-width: 340px;
    margin: 0 auto;
  }

  .eem-founder__quote {
    padding-left: 18px;
  }
}
/* BLOCK: team photo */
.eem-team {
  position: relative;
  max-width: min(1320px, calc(100% - 56px));
  min-height: clamp(380px, 48vw, 620px);
  margin: 0 auto;
  border-radius: var(--eem-radius);
  overflow: hidden;
  box-shadow: var(--eem-shadow);
}

.eem-team img {
  width: 100%;
  height: 100%;
  min-height: clamp(380px, 48vw, 620px);
  object-fit: cover;
  object-position: center;
  display: block;
  /* rests in greyscale, then reveals colour when scrolled into view —
     slower than the page-hero banners (1.1s) for a softer entrance */
  filter: grayscale(1);
  transition: filter 1.8s ease;
}
.eem-team.is-color img { filter: grayscale(0); }

.eem-team__cap {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 40px 36px 30px;
  color: #fff;
  background: linear-gradient(180deg, transparent, rgba(0, 0, 0, .55));
}

.eem-team__cap h2 {
  color: #fff;
  margin: 0;
}
/* BLOCK: LinkedIn follow card */
.eem-follow{max-width:680px;margin:0 auto;text-align:center;background:var(--eem-bg);
  border:1px solid var(--eem-line);border-radius:var(--eem-radius);padding:clamp(34px,4vw,50px);
  box-shadow:var(--eem-shadow-sm);display:flex;flex-direction:column;align-items:center}
.eem-follow__icon{width:48px;height:48px;border-radius:13px;background:var(--eem-accent-soft);
  color:var(--eem-accent);display:flex;align-items:center;justify-content:center;margin-bottom:18px}
.eem-follow__icon svg{width:25px;height:25px}
.eem-follow h3{margin:0 0 8px}
.eem-follow p{margin:0 0 22px;color:var(--eem-body);max-width:46ch}
.eem-follow .eem-btn svg{width:18px;height:18px}

/* ================= SCHEDULE (schedule.html) ================= */
/* BLOCK: schedule hero process */
.eem-schedule-hero .eem-page-hero__wrap {
  max-width: 920px;
  text-align: center;
  justify-items: center;
}

.eem-schedule-hero__lead {
  display: block;
  margin: 0 auto;
  max-width: 680px;
  text-align: center;
}

.eem-schedule-steps {
  position: relative;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 18px;
  width: 100%;
  margin-top: 38px;
}

.eem-schedule-steps::before {
  content: "";
  position: absolute;
  top: 23px;
  left: calc(12.5% + 24px);
  right: calc(12.5% + 24px);
  height: 2px;
  border-radius: 2px;
  background: linear-gradient(
    90deg,
    rgba(0, 150, 213, .35),
    rgba(0, 150, 213, .9),
    rgba(0, 150, 213, .35)
  );
}

.eem-schedule-step {
  position: relative;
  z-index: 1;
  text-align: center;
}

.eem-schedule-step span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  margin-bottom: 14px;
  border-radius: 50%;
  border: 1px solid rgba(0, 150, 213, .32);
  background: rgba(255, 255, 255, .86);
  color: var(--eem-accent);
  font: 600 clamp(15px, 1vw + 12px, 18px)/1 var(--eem-font-head);
  box-shadow:
    0 0 0 7px rgba(0, 150, 213, .07),
    0 14px 28px rgba(0, 0, 0, .06);
}

.eem-schedule-step strong {
  display: block;
  max-width: 170px;
  margin: 0 auto;
  color: var(--eem-ink);
  font-size: var(--eem-fs-sm);
  line-height: 1.35;
  font-weight: 600;
}

@media (max-width: 760px) {
  .eem-schedule-steps {
    grid-template-columns: 1fr;
    gap: 24px;
    max-width: 360px;
    margin-left: auto;
    margin-right: auto;
  }

  .eem-schedule-steps::before {
    top: 24px;
    bottom: 24px;
    left: 50%;
    right: auto;
    width: 2px;
    height: auto;
    transform: translateX(-50%);
  }

  .eem-schedule-step strong {
    max-width: 240px;
  }
}
/* BLOCK: booking layout */
.eem-book{max-width:var(--eem-max);margin:0 auto;display:grid;
  grid-template-columns:minmax(280px,.85fr) minmax(0,1.15fr);
  border:1px solid var(--eem-line);border-radius:var(--eem-radius);overflow:hidden;
  box-shadow:var(--eem-shadow-sm);background:var(--eem-bg)}
/* left: LIGHT context panel (no black box) */
.eem-book__ctx{padding:clamp(32px,4vw,46px);background:var(--eem-surface);
  border-right:1px solid var(--eem-line);display:flex;flex-direction:column;gap:22px}
.eem-book__ctx h2{margin:0}
.eem-book__ctx p{margin:0;color:var(--eem-body);font-size:var(--eem-fs-body)}
.eem-meta{display:flex;flex-direction:column;gap:12px;margin-top:4px;padding-top:22px;border-top:1px solid var(--eem-line)}
.eem-meta-item{display:flex;align-items:flex-start;gap:11px;font-size:var(--eem-fs-sm);color:var(--eem-body)}
.eem-meta-item svg{flex-shrink:0;margin-top:1px;color:var(--eem-accent);width:18px;height:18px}
/* right: form */
.eem-book__form{padding:clamp(32px,4vw,46px)}
.eem-book__form h3{margin:0 0 16px}
/* Calendly embed placeholder */
.eem-cal{border:1px dashed var(--eem-line);border-radius:var(--eem-radius-sm);background:var(--eem-surface);
  min-height:170px;display:flex;align-items:center;justify-content:center;text-align:center;
  padding:24px;margin-bottom:30px}
.eem-cal span{font:500 var(--eem-fs-micro)/1.6 var(--eem-font-body);color:var(--eem-muted);max-width:80%}
.eem-form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}
.eem-field{display:flex;flex-direction:column;gap:7px}
.eem-field.full{grid-column:1/-1}
.eem-field label{color:var(--eem-ink);font-size:var(--eem-fs-caption);font-weight:600}
.eem-field input,.eem-field select,.eem-field textarea{width:100%;border:1px solid var(--eem-line);
  background:var(--eem-bg);color:var(--eem-ink);font:inherit;font-size:var(--eem-fs-sm);padding:12px 14px;
  border-radius:var(--eem-radius-sm);transition:border-color .15s}
.eem-field input:focus,.eem-field select:focus,.eem-field textarea:focus{outline:none;border-color:var(--eem-accent)}
.eem-field textarea{min-height:108px;resize:vertical}
.eem-check{display:flex;align-items:flex-start;gap:11px;margin-top:20px;font-size:var(--eem-fs-sm);color:var(--eem-body)}
.eem-check input{width:18px;height:18px;margin-top:2px;flex-shrink:0;accent-color:var(--eem-accent)}
.eem-form-foot{margin-top:24px;display:flex;flex-direction:column;gap:16px}
.eem-note{font-size:var(--eem-fs-sm);color:var(--eem-body);line-height:1.6;padding:14px 16px;
  border-left:2px solid var(--eem-accent);background:var(--eem-accent-soft);border-radius:0 8px 8px 0}
.eem p.eem-emailfb{text-align:center;margin:clamp(60px,8vw,96px) 0 0;font-size:var(--eem-fs-sm);color:var(--eem-muted)}
@media(max-width:860px){.eem-book{grid-template-columns:1fr}.eem-book__ctx{border-right:none;border-bottom:1px solid var(--eem-line)}.eem-form-grid{grid-template-columns:1fr}}

/* ============================================================
   MOTION — subtle scroll-reveal, activated by assets/eem-motion.js.
   The hiding class is added by JS, so with JS off (or reduced
   motion) everything stays visible. Kept gentle on purpose.
   ============================================================ */
.eem-reveal{opacity:0;transform:translateY(18px);
  transition:opacity .7s cubic-bezier(.2,.7,.2,1), transform .7s cubic-bezier(.2,.7,.2,1)}
.eem-reveal.eem-reveal--in{opacity:1;transform:none}

/* Services product journey — animated EEG signal (driven by eem-motion.js) */
.eem-j2__pulse{display:none}   /* retire the static position dot; the lit node shows the active stage */
.eem-j2__stage--lit .eem-j2__node{color:var(--eem-accent);border-color:var(--eem-accent);
  transition:color .3s ease, border-color .3s ease}

/* Homepage hero: print-only still image (a <video> can't render in a PDF) */
.eem-hero__print{display:none;position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}

/* =============================================================
   PRINT — neat page PDFs (for approval / archiving)
   ============================================================= */
@page { margin: 10mm; }
@media print {
  *{ -webkit-print-color-adjust:exact !important; print-color-adjust:exact !important; }
  .eem-reveal{ opacity:1 !important; transform:none !important; }   /* reveal scroll-animated content */
  .eem-page-hero::before{ filter:none !important; }                 /* interior hero image in full colour */
  .eem-hero__video{ display:none !important; }                      /* hide the video... */
  .eem-hero__print{ display:block !important; }                     /* ...show its poster still instead */
  .eem-hero, .eem-page-hero{ min-height:360px; }
  #eem-consent, .eem-burger{ display:none !important; }             /* drop overlays / mobile burger */
  .eem-header{ position:static !important; }
  .eem-feature, .eem-pair, .eem-stackcard, .eem-prow, .eem-cert,
  .eem-founder, .eem-proof__stat, .eem-stat, .eem-j2__stage, figure{ break-inside:avoid; }
  /* stop anything from overflowing the page edge (the cause of clipped right sides) */
  html, body{ overflow:visible !important; }
  img, svg{ max-width:100% !important; }
  .eem-container, .eem-hero__inner, .eem-page-hero__wrap, .eem-cta__wrap,
  .eem-book, .eem-footer__wrap, .eem-strip__wrap, .eem-footer__bottom{ padding-left:12px !important; padding-right:12px !important; }
  .eem-j2__stepper, .eem-j2__track, .eem-j2__track--interactive{ overflow:visible !important; min-width:0 !important; }
}
