/* APGP — theme on top of Bootstrap 5
   Palette from the logo: navy #00102a · royal blue #0050d8 → #0a2a8c · sky #00a3f0
   Shape language: the rounded "pixel" squares of the logo mark. */

@font-face { font-family: "Manrope"; font-style: normal; font-display: swap; font-weight: 200 800;
  src: url("../fonts/manrope-latin-wght-normal.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; }
@font-face { font-family: "Manrope"; font-style: normal; font-display: swap; font-weight: 200 800;
  src: url("../fonts/manrope-latin-ext-wght-normal.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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Sora"; font-style: normal; font-display: swap; font-weight: 100 800;
  src: url("../fonts/sora-latin-wght-normal.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; }
@font-face { font-family: "Sora"; font-style: normal; font-display: swap; font-weight: 100 800;
  src: url("../fonts/sora-latin-ext-wght-normal.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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }

:root {
  --fm-background: #f5f8fd;
  --fm-foreground: #0a1630;
  --fm-card: #ffffff;
  --fm-primary: #0050d8;
  --fm-primary-dark: #003bb0;
  --fm-primary-soft: #e4edff;
  --fm-sky: #00a3f0;
  --fm-sky-light: #4cc3ff;           /* sky for text on navy */
  --fm-ink: #00102a;                 /* logo navy */
  --fm-ink-2: #071d47;
  --fm-ink-foreground: #eef3fc;
  --fm-secondary: #ebf1fa;
  --fm-muted: #eef3fa;
  --fm-muted-foreground: #56637e;
  --fm-accent: #e4edff;
  --fm-accent-foreground: #0a2a8c;
  --fm-success: #15905a;
  --fm-destructive: #d62839;
  --fm-border: #dde5f1;
  --fm-input: #ccd7e8;
  --fm-technical: #0070b8;           /* sky, darkened for text on light backgrounds */
  --fm-technical-soft: #e6f5fe;
  --fm-map-france: url(#map-grad-fr);
  --fm-map-belgium: #00a3f0;
  --fm-map-switzerland: #5b8cff;
  --fm-gradient: linear-gradient(120deg, #0868e6 0%, #0050d8 50%, #0a2a8c 100%);
  --fm-gradient-sky: linear-gradient(120deg, #00a3f0 0%, #0050d8 100%);
  --fm-shadow-brand: 0 18px 36px -16px rgba(0, 80, 216, .55);
  --fm-shadow-card: 0 1px 2px rgba(10, 22, 48, .04), 0 12px 32px -18px rgba(10, 22, 48, .18);
  --fm-radius: .75rem;
  --fm-font-display: "Sora", ui-sans-serif, system-ui, sans-serif;
  --fm-font-sans: "Manrope", ui-sans-serif, system-ui, sans-serif;

  /* Bootstrap mapping */
  --bs-body-bg: var(--fm-background);
  --bs-body-color: var(--fm-foreground);
  --bs-body-font-family: var(--fm-font-sans);
  --bs-font-sans-serif: var(--fm-font-sans);
  --bs-primary: #0050d8;
  --bs-primary-rgb: 0, 80, 216;
  --bs-success: #15905a;
  --bs-success-rgb: 21, 144, 90;
  --bs-danger: #d62839;
  --bs-danger-rgb: 214, 40, 57;
  --bs-warning-rgb: 245, 166, 35;
  --bs-secondary-color: var(--fm-muted-foreground);
  --bs-secondary-bg: var(--fm-secondary);
  --bs-tertiary-bg: var(--fm-muted);
  --bs-border-color: var(--fm-border);
  --bs-border-radius: var(--fm-radius);
  --bs-border-radius-sm: calc(var(--fm-radius) - 4px);
  --bs-border-radius-lg: calc(var(--fm-radius) + 4px);
  --bs-link-color: var(--fm-primary);
  --bs-link-color-rgb: 0, 80, 216;
  --bs-link-hover-color: var(--fm-primary-dark);
  --bs-link-hover-color-rgb: 0, 59, 176;
  --bs-focus-ring-color: rgba(0, 163, 240, .3);
  --bs-emphasis-color: var(--fm-foreground);
  --bs-heading-color: var(--fm-foreground);
}

body { font-family: var(--fm-font-sans); background: var(--fm-background); color: var(--fm-foreground); -webkit-font-smoothing: antialiased; }
h1, h2, h3, h4, .font-display { font-family: var(--fm-font-display); letter-spacing: -.02em; }
.page-home h2, .page-home h3 { letter-spacing: -.01em; }
a { text-underline-offset: 3px; }
::selection { background: #cfe7ff; }
:focus-visible { outline: 2px solid var(--fm-sky); outline-offset: 2px; }

/* Layout */
.container-fm { width: 100%; max-width: 74rem; margin-inline: auto; padding-inline: 1.25rem; }
.container-narrow { max-width: 48rem; }
.section { padding-block: 4.5rem; }
@media (min-width: 768px) { .section { padding-block: 6rem; } }
.border-fm { border-color: var(--fm-border) !important; }

/* Colour helpers */
.text-primary { color: var(--fm-primary) !important; }
.text-technical { color: var(--fm-technical) !important; }
.text-technical-40 { color: rgba(0, 112, 184, .35) !important; }
.text-muted-fm { color: var(--fm-muted-foreground) !important; }
.text-ink-70 { color: rgba(238, 243, 252, .74) !important; }
.text-ink-60 { color: rgba(238, 243, 252, .6) !important; }
.text-gradient { background: var(--fm-gradient-sky); -webkit-background-clip: text; background-clip: text; color: transparent; }
.bg-technical-soft { background-color: var(--fm-technical-soft) !important; }
.bg-ink { background-color: var(--fm-ink) !important; color: var(--fm-ink-foreground); }
.bg-warm { background-image: var(--fm-gradient); color: #fff; }
.bg-secondary-fm { background-color: var(--fm-secondary) !important; }
.bg-primary-soft { background-color: var(--fm-primary-soft) !important; }
.bg-card { background-color: var(--fm-card) !important; }
.shadow-warm { box-shadow: var(--fm-shadow-brand); }
/* Royal blue is too dark on navy: switch accents to sky inside dark surfaces */
.bg-ink .text-primary, .entry-card.dark .text-primary, .fm-hero .text-primary, .cta-band .text-primary { color: var(--fm-sky-light) !important; }

.eyebrow { font-size: .75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .12em; margin-bottom: 0; }
/* Small logo "pixel" in front of eyebrows */
.eyebrow-line { display: inline-block; width: .55rem; height: .55rem; border-radius: 2px; background: var(--fm-sky); box-shadow: .8rem 0 0 var(--fm-primary); margin-right: 1.35rem; flex-shrink: 0; }
.lead-fm { font-size: 1.0625rem; line-height: 1.65; color: var(--fm-muted-foreground); }
.small-relaxed { font-size: .875rem; line-height: 1.65; }

/* Typography scale (mobile → md) */
.title-hero { font-size: 2.5rem; font-weight: 800; line-height: 1.05; letter-spacing: -.03em; }
.subtitle-hero { font-size: 1.5rem; font-weight: 600; line-height: 1.25; }
.title-section { font-size: 1.875rem; font-weight: 700; line-height: 1.2; }
.title-page { font-size: 2.25rem; font-weight: 800; line-height: 1.1; }
@media (min-width: 768px) {
  .title-hero { font-size: 4rem; }
  .subtitle-hero { font-size: 2.125rem; }
  .title-section { font-size: 2.375rem; }
  .title-page { font-size: 3rem; }
}

/* Header */
.site-header { position: sticky; top: 0; z-index: 1030; background: rgba(255, 255, 255, .86); border-bottom: 1px solid rgba(221, 229, 241, .8);
  -webkit-backdrop-filter: saturate(1.4) blur(10px); backdrop-filter: saturate(1.4) blur(10px); }
.site-header .inner { height: 4.25rem; }
.brand { display: inline-flex; align-items: center; text-decoration: none; flex-shrink: 0; }
.brand img { display: block; height: 2.25rem; width: auto; }
@media (min-width: 768px) { .brand img { height: 2.5rem; } }
.nav-fm a { position: relative; color: var(--fm-muted-foreground); text-decoration: none; font-size: .9rem; font-weight: 600; padding-block: .4rem; }
.nav-fm a::after { content: ""; position: absolute; left: 0; right: 0; bottom: -.15rem; height: 2px; border-radius: 2px; background: var(--fm-gradient-sky);
  transform: scaleX(0); transform-origin: left; transition: transform .2s; }
.nav-fm a:hover, .nav-fm a.active { color: var(--fm-foreground); }
.nav-fm a:hover::after, .nav-fm a.active::after { transform: scaleX(1); }
.lang-switch { display: inline-flex; border: 1px solid var(--fm-border); border-radius: .6rem; padding: 2px; background: var(--fm-card); }
.lang-switch a { font-size: .72rem; font-weight: 700; padding: .25rem .55rem; border-radius: .45rem; color: var(--fm-muted-foreground); text-decoration: none; line-height: 1.2; letter-spacing: .04em; }
.lang-switch a:hover { color: var(--fm-foreground); }
.lang-switch a.active { background: var(--fm-ink); color: var(--fm-ink-foreground); }
.mobile-menu { border-top: 1px solid var(--fm-border); background: var(--fm-card); }
.mobile-menu a.mobile-link { display: flex; align-items: center; justify-content: space-between; padding: .85rem 0; color: var(--fm-foreground); text-decoration: none; font-weight: 600; border-bottom: 1px solid var(--fm-border); }
.mobile-menu a.mobile-link::after { content: "\F285"; font-family: "bootstrap-icons"; font-size: .8rem; color: var(--fm-muted-foreground); }

/* Buttons */
.btn { --bs-btn-font-weight: 600; display: inline-flex; align-items: center; justify-content: center; gap: .5rem; white-space: nowrap; }
.btn-hero { --bs-btn-color: #fff; --bs-btn-hover-color: #fff; --bs-btn-active-color: #fff; --bs-btn-border-width: 0; --bs-btn-disabled-color: #fff;
  background-image: var(--fm-gradient); background-size: 140% 100%; background-position: 0 0; box-shadow: var(--fm-shadow-brand);
  border-radius: .7rem; padding: .55rem 1.1rem; transition: background-position .3s, box-shadow .2s, transform .15s; }
.btn-hero:hover, .btn-hero:focus-visible { background-position: 100% 0; box-shadow: 0 22px 40px -16px rgba(0, 80, 216, .7); }
.btn-hero:active { transform: translateY(1px); }
.btn-hero:disabled { opacity: .6; }
.btn-xl { height: 3.125rem; padding-inline: 1.6rem; font-size: 1rem; }
.btn-ink { --bs-btn-bg: var(--fm-ink); --bs-btn-color: var(--fm-ink-foreground); --bs-btn-hover-bg: var(--fm-ink-2); --bs-btn-hover-color: #fff;
  --bs-btn-active-bg: var(--fm-ink-2); --bs-btn-active-color: #fff; --bs-btn-border-width: 0; }
.btn-ink.btn-sm { height: 2.25rem; font-size: .8rem; padding-inline: 1rem; border-radius: .6rem; }
.btn-soft { --bs-btn-bg: var(--fm-card); --bs-btn-color: var(--fm-foreground); --bs-btn-border-color: var(--fm-input);
  --bs-btn-hover-bg: var(--fm-accent); --bs-btn-hover-color: var(--fm-accent-foreground); --bs-btn-hover-border-color: #b9cbec;
  --bs-btn-active-bg: var(--fm-accent); --bs-btn-active-border-color: #b9cbec; box-shadow: 0 1px 2px rgba(10, 22, 48, .05); }
.btn-soft.btn-xl, .btn-glass.btn-xl { border-radius: .7rem !important; }
.btn-glass { --bs-btn-color: #fff; --bs-btn-hover-color: #fff; --bs-btn-active-color: #fff; --bs-btn-bg: rgba(255, 255, 255, .06);
  --bs-btn-hover-bg: rgba(255, 255, 255, .12); --bs-btn-active-bg: rgba(255, 255, 255, .16);
  --bs-btn-border-color: rgba(255, 255, 255, .22); --bs-btn-hover-border-color: rgba(255, 255, 255, .4); --bs-btn-active-border-color: rgba(255, 255, 255, .4);
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.btn-ghost { --bs-btn-color: var(--fm-foreground); --bs-btn-hover-bg: var(--fm-accent); --bs-btn-hover-color: var(--fm-accent-foreground); --bs-btn-border-width: 0; }
.btn-primary { --bs-btn-bg: var(--fm-primary); --bs-btn-border-color: var(--fm-primary); --bs-btn-hover-bg: var(--fm-primary-dark);
  --bs-btn-hover-border-color: var(--fm-primary-dark); --bs-btn-active-bg: var(--fm-primary-dark); --bs-btn-active-border-color: var(--fm-primary-dark);
  --bs-btn-disabled-bg: var(--fm-primary); --bs-btn-disabled-border-color: var(--fm-primary); }
.btn-outline-primary { --bs-btn-color: var(--fm-primary); --bs-btn-border-color: var(--fm-primary); --bs-btn-hover-bg: var(--fm-primary); --bs-btn-hover-border-color: var(--fm-primary); --bs-btn-active-bg: var(--fm-primary-dark); }
.btn .bi-arrow-right { transition: transform .15s; }
.btn:hover .bi-arrow-right, .entry-card:hover .bi-arrow-right { transform: translateX(3px); }

/* Decorative logo pixels */
.px-deco { position: absolute; border-radius: 22%; pointer-events: none; }

/* Hero (dark navy) */
.fm-hero { position: relative; overflow: hidden; color: var(--fm-ink-foreground); isolation: isolate;
  background:
    radial-gradient(60rem 30rem at 85% -10%, rgba(0, 80, 216, .55), transparent 60%),
    radial-gradient(40rem 26rem at -10% 110%, rgba(0, 163, 240, .22), transparent 60%),
    var(--fm-ink); }
.fm-hero::before { content: ""; position: absolute; inset: 0; z-index: -1;
  background-image: linear-gradient(rgba(255, 255, 255, .045) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, .045) 1px, transparent 1px);
  background-size: 44px 44px; -webkit-mask-image: radial-gradient(ellipse at 70% 40%, #000 20%, transparent 75%); mask-image: radial-gradient(ellipse at 70% 40%, #000 20%, transparent 75%); }
.fm-hero h1, .fm-hero h2 { color: #fff; }
.fm-hero .hero-inner { position: relative; padding-block: 3rem 2.5rem; }
.fm-hero .hero-copy { position: relative; z-index: 2; max-width: 36rem; }
.fm-hero .eyebrow { color: var(--fm-sky-light); }
.fm-hero .hero-accent { background: linear-gradient(90deg, #6fd1ff, #4c8dff); -webkit-background-clip: text; background-clip: text; color: transparent; }
.fm-hero .lead-fm { color: rgba(238, 243, 252, .74); }
.fm-hero .hero-sectors { color: rgba(238, 243, 252, .7); }
.fm-hero .hero-sectors .bi { color: var(--fm-sky-light); }
.fm-hero .hero-map { height: 240px; margin-top: 1.5rem;
  --fm-card: var(--fm-ink); --fm-foreground: #ffffff; --fm-primary: var(--fm-sky); }
.fm-hero .hero-map-caption { margin-top: .75rem; text-align: center; font-size: .8rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: rgba(238, 243, 252, .7); }
.fm-hero .hero-map-caption .sep { display: inline-block; width: .4rem; height: .4rem; border-radius: 2px; background: var(--fm-sky); margin: 0 .7rem; vertical-align: middle; }
@media (min-width: 768px) {
  .fm-hero .hero-inner { padding-block: 6rem 5.5rem; }
  .fm-hero .hero-map { position: absolute; top: 2rem; bottom: 5rem; right: 0; width: 46%; height: auto; margin: 0; }
  .fm-hero .hero-map-caption { position: absolute; bottom: 3.25rem; right: 0; width: 46%; margin: 0; }
}
.territory-map { width: 100%; height: 100%; filter: drop-shadow(0 24px 40px rgba(0, 80, 216, .35)); }
.territory-map .map-marker { filter: drop-shadow(0 0 6px rgba(0, 163, 240, .9)); }
/* Navy halo keeps the country labels readable on the light-blue countries */
.fm-hero .territory-map text { paint-order: stroke; stroke: var(--fm-ink); stroke-width: 5px; stroke-linejoin: round; }

/* Trust strip under the hero */
.hero-strip { position: relative; z-index: 3; margin-top: -2.25rem; }
.hero-strip .strip-card { background: var(--fm-card); border: 1px solid var(--fm-border); border-radius: 1rem; box-shadow: var(--fm-shadow-card); padding: 1.25rem 1.5rem; }

/* Entry cards */
.entry-card { position: relative; overflow: hidden; display: flex; flex-direction: column; justify-content: space-between; height: 100%; border-radius: 1.25rem; padding: 1.75rem;
  text-decoration: none; transition: transform .2s, box-shadow .2s, border-color .2s; color: inherit; isolation: isolate; }
.entry-card:hover { transform: translateY(-4px); color: inherit; }
.entry-card.dark { background: radial-gradient(28rem 16rem at 110% -20%, rgba(0, 80, 216, .6), transparent 60%), var(--fm-ink); color: var(--fm-ink-foreground); }
.entry-card.dark:hover { box-shadow: 0 30px 50px -28px rgba(0, 16, 42, .8); }
.entry-card.dark h2, .bg-ink h2, .bg-ink h3.text-white { color: var(--fm-ink-foreground); }
.entry-card.light { background: var(--fm-card); border: 1px solid var(--fm-border); box-shadow: var(--fm-shadow-card); }
.entry-card.light:hover { border-color: #b9cbec; box-shadow: 0 30px 50px -30px rgba(0, 80, 216, .45); }
.entry-card::after { content: ""; position: absolute; z-index: -1; right: 1.5rem; top: 1.5rem; width: .7rem; height: .7rem; border-radius: 3px; background: var(--fm-sky);
  box-shadow: -1.1rem 1.1rem 0 -.1rem rgba(0, 163, 240, .35), 0 1.4rem 0 .25rem rgba(0, 80, 216, .25); opacity: .9; }
.entry-card .icon-box { display: grid; place-items: center; width: 3rem; height: 3rem; border-radius: .8rem; background-image: var(--fm-gradient); color: #fff; font-size: 1.25rem; box-shadow: var(--fm-shadow-brand); }
.entry-card .cta { margin-top: 2rem; display: inline-flex; align-items: center; gap: .5rem; font-weight: 700; color: var(--fm-primary); }
.entry-card.dark .cta { color: var(--fm-sky-light); }
@media (min-width: 768px) { .entry-card { padding: 2.25rem; } }

/* Feature columns */
.feature-col { height: 100%; background: var(--fm-card); border: 1px solid var(--fm-border); border-radius: 1rem; padding: 1.5rem; position: relative; overflow: hidden; transition: border-color .2s, transform .2s; }
.feature-col::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 3px; background: var(--fm-gradient-sky); opacity: 0; transition: opacity .2s; }
.feature-col:hover { border-color: #b9cbec; transform: translateY(-2px); }
.feature-col:hover::before { opacity: 1; }
.feature-col .bi { display: inline-grid; place-items: center; width: 2.75rem; height: 2.75rem; border-radius: .7rem; font-size: 1.3rem; color: var(--fm-primary); background: var(--fm-primary-soft); }
.trade { display: inline-flex; align-items: center; gap: .5rem; font-size: .875rem; font-weight: 600; color: var(--fm-foreground);
  background: var(--fm-card); border: 1px solid var(--fm-border); border-radius: 999px; padding: .45rem .9rem .45rem .5rem; }
.trade .bi { display: inline-grid; place-items: center; width: 1.6rem; height: 1.6rem; border-radius: 999px; background: var(--fm-technical-soft); color: var(--fm-technical); font-size: .85rem; }

/* Preventive / curative */
.approach { position: relative; height: 100%; background: var(--fm-card); border: 1px solid var(--fm-border); border-radius: 1.25rem; padding: 1.75rem; overflow: hidden; }
.approach::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: var(--fm-sky); }
.approach.curative::before { background: var(--fm-primary); }
@media (min-width: 768px) { .approach { padding: 2.25rem; } }
.approach .approach-icon { display: inline-grid; place-items: center; width: 3rem; height: 3rem; border-radius: .8rem; font-size: 1.4rem; background: var(--fm-technical-soft); }
.approach.curative .approach-icon { background: var(--fm-primary-soft); }
.check-list { list-style: none; padding: 0; margin: 1.5rem 0 0; display: grid; gap: .75rem; }
.check-list li { display: flex; align-items: flex-start; gap: .75rem; font-size: .9rem; }
.check-list li .bi { margin-top: .1rem; flex-shrink: 0; }

/* CRM section (dark) */
.bg-ink.section-glow { background:
    radial-gradient(40rem 24rem at 100% 0%, rgba(0, 80, 216, .45), transparent 60%),
    radial-gradient(30rem 20rem at 0% 100%, rgba(0, 163, 240, .16), transparent 60%),
    var(--fm-ink) !important; }
.crm-card { overflow: hidden; border-radius: 1.25rem; border: 1px solid rgba(255, 255, 255, .12); background: var(--fm-card); color: var(--fm-foreground);
  box-shadow: 0 40px 80px -30px rgba(0, 0, 0, .6), 0 0 0 6px rgba(255, 255, 255, .04); }
.crm-card .crm-head { display: flex; align-items: center; justify-content: space-between; gap: .75rem; border-bottom: 1px solid var(--fm-border); padding: .9rem 1.25rem; background: #f8fafe; }
.crm-card .crm-head img { height: 1.1rem; width: auto; display: block; }
.crm-card .crm-dots { display: inline-flex; gap: .35rem; margin-right: .5rem; }
.crm-card .crm-dots span { width: .55rem; height: .55rem; border-radius: 2px; background: var(--fm-border); }
.crm-card .crm-dots span:first-child { background: var(--fm-sky); }
.crm-card .crm-dots span:nth-child(2) { background: var(--fm-primary); }
.crm-card .crm-body { padding: 1.25rem; }
@media (min-width: 576px) { .crm-card .crm-body { padding: 1.5rem; } }
.crm-tags { display: flex; flex-wrap: wrap; gap: 1rem; border-block: 1px solid var(--fm-border); padding-block: .75rem; font-size: .75rem; margin-top: 1rem; }
.ai-suggestion { border-radius: .75rem; background: var(--fm-technical-soft); border: 1px solid #c8e7fb; padding: .9rem 1rem; margin-top: 1.25rem; }

/* Steps */
.step-card { position: relative; height: 100%; padding-top: 1.25rem; border-top: 1px solid var(--fm-border); }
.step-card::before { content: ""; position: absolute; top: -1px; left: 0; width: 3rem; height: 3px; border-radius: 3px; background: var(--fm-gradient-sky); }
.step-num { font-family: var(--fm-font-display); font-size: 2.25rem; font-weight: 800; line-height: 1; background: var(--fm-gradient-sky);
  -webkit-background-clip: text; background-clip: text; color: transparent; }

/* Trust */
.trust-item .trust-icon { display: inline-grid; place-items: center; width: 2.5rem; height: 2.5rem; border-radius: .7rem; background: var(--fm-card); border: 1px solid var(--fm-border); color: var(--fm-primary); font-size: 1.1rem; }

/* Final call to action */
.cta-band { position: relative; overflow: hidden; isolation: isolate; border-radius: 1.5rem; padding: 2rem; color: #fff;
  background: radial-gradient(30rem 18rem at 100% 0%, rgba(0, 163, 240, .55), transparent 60%), linear-gradient(120deg, #0a2a8c, #00102a); }
.cta-band h2 { color: #fff; }
.cta-band .px-a { width: 1.1rem; height: 1.1rem; background: var(--fm-sky); right: 1.25rem; top: 1.25rem; opacity: .85; }
.cta-band .px-b { width: .6rem; height: .6rem; background: #4c8dff; right: 2.75rem; top: 2.75rem; opacity: .75; }
.cta-band .btn-hero { background-image: none; background-color: #fff; --bs-btn-color: var(--fm-ink); --bs-btn-hover-color: var(--fm-ink); --bs-btn-active-color: var(--fm-ink);
  box-shadow: 0 16px 30px -14px rgba(0, 0, 0, .5); }
.cta-band .btn-hero:hover { background-color: #e9f3ff; }
@media (min-width: 768px) { .cta-band { padding: 3rem 3.5rem; } }

/* Cards, forms */
.card-fm { background: var(--fm-card); border: 1px solid var(--fm-border); border-radius: 1.25rem; box-shadow: var(--fm-shadow-card); }
.card-fm.shadow-sm { box-shadow: var(--fm-shadow-card) !important; }
.card-fm.pad { padding: 1.5rem; }
@media (min-width: 768px) { .card-fm.pad { padding: 2.25rem; } }
.card-flat { background: var(--fm-card); border: 1px solid var(--fm-border); border-radius: var(--fm-radius); }
.page-intro { position: relative; }
.page-intro::before { content: ""; position: absolute; left: 0; top: 0; width: 2.5rem; height: 3px; border-radius: 3px; background: var(--fm-gradient-sky); }

.form-label { font-size: .875rem; font-weight: 600; margin-bottom: .375rem; }
.form-control, .form-select { border-color: var(--fm-input); border-radius: .6rem; background-color: #fbfcff; box-shadow: none; min-height: 2.75rem; }
.form-control:hover, .form-select:hover { border-color: #b4c3dc; }
.form-control:focus, .form-select:focus { border-color: var(--fm-primary); box-shadow: 0 0 0 .22rem rgba(0, 163, 240, .2); background-color: #fff; }
.form-control-sm, .form-select-sm { min-height: 2.15rem; }
textarea.form-control { min-height: 6rem; }
.form-check-input { border-color: #b4c3dc; }
.form-check-input:checked { background-color: var(--fm-primary); border-color: var(--fm-primary); }
.form-check-input:focus { box-shadow: 0 0 0 .2rem rgba(0, 163, 240, .2); border-color: var(--fm-primary); }
/* Validation: red border only, message in a reserved slot under the field (no layout jump) */
.form-field, .form-check { position: relative; }
.form-field .invalid-feedback, .form-check .invalid-feedback {
  position: absolute; left: 0; top: 100%; margin-top: .25rem; max-width: 100%;
  font-size: .75rem; line-height: 1.2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  color: var(--fm-destructive); animation: field-msg-in .15s ease-out; }
.form-check .invalid-feedback { left: 1.5rem; max-width: calc(100% - 1.5rem); }
.invalid-feedback:empty { display: none !important; }
.form-control.is-invalid, .form-select.is-invalid, .was-validated .form-control:invalid {
  border-color: var(--fm-destructive); background-image: none; padding-right: .75rem; }
.form-control.is-invalid:focus, .form-select.is-invalid:focus { border-color: var(--fm-destructive); box-shadow: 0 0 0 .2rem rgba(214, 40, 57, .12); }
.form-control.is-valid, .was-validated .form-control:valid { border-color: var(--fm-input); background-image: none; padding-right: .75rem; }
.form-check-input.is-invalid { border-color: var(--fm-destructive); }
.form-check-input.is-invalid ~ .form-check-label { color: var(--fm-muted-foreground); }
.form-text.field-msg { font-size: .75rem; margin-top: .25rem; min-height: 1.2em; transition: color .15s; }
.form-text.field-msg.is-error { color: var(--fm-destructive); }
@keyframes field-msg-in { from { opacity: 0; transform: translateY(-2px); } to { opacity: 1; transform: none; } }
.divider-or { display: flex; align-items: center; gap: .75rem; font-size: .75rem; color: var(--fm-muted-foreground); margin-block: 1.25rem; }
.divider-or::before, .divider-or::after { content: ""; height: 1px; flex: 1; background: var(--fm-border); }
.hp-field { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.progress { background: var(--fm-muted); border-radius: 999px; }

/* Auth pages: logo mark on top of the card */
.auth-mark { display: block; width: 2.75rem; height: auto; margin-bottom: 1.25rem; }

/* Tabs (segmented) */
.fm-tabs { display: inline-flex; gap: .25rem; padding: .3rem; border-radius: .8rem; background: var(--fm-card); border: 1px solid var(--fm-border); flex-wrap: wrap; }
.fm-tabs a { padding: .45rem .95rem; border-radius: .55rem; font-size: .875rem; font-weight: 600; color: var(--fm-muted-foreground); text-decoration: none; display: inline-flex; align-items: center; gap: .4rem; }
.fm-tabs a:hover { color: var(--fm-foreground); background: var(--fm-muted); }
.fm-tabs a.active { background: var(--fm-ink); color: var(--fm-ink-foreground); box-shadow: 0 6px 14px -8px rgba(0, 16, 42, .6); }
.fm-tabs .count { font-size: .7rem; background: var(--fm-sky); color: var(--fm-ink); font-weight: 700; border-radius: 999px; padding: 0 .4rem; line-height: 1.3rem; min-width: 1.3rem; text-align: center; }

/* Badges */
.badge { font-weight: 700; border-radius: .45rem; padding: .4em .7em; letter-spacing: .01em; }
.badge-soft { background: var(--fm-secondary); color: var(--fm-foreground); }
.badge-technical { background: var(--fm-technical-soft); color: var(--fm-technical); }
.badge-primary-soft { background: var(--fm-primary-soft); color: var(--fm-accent-foreground); }

/* Account: documents */
.doc-tile { border: 1px solid var(--fm-border); border-radius: var(--fm-radius); padding: 1rem; background: var(--fm-card); height: 100%; display: flex; flex-direction: column; }
.doc-tile.done { border-color: rgba(21, 144, 90, .45); background: rgba(21, 144, 90, .05); }
.doc-file { display: flex; align-items: center; gap: .5rem; font-size: .75rem; padding: .35rem .5rem; border-radius: calc(var(--fm-radius) - 4px); background: var(--fm-muted); margin-bottom: .35rem; }
.doc-file .name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.doc-file button, .doc-file a { border: 0; background: none; padding: 0 .15rem; color: var(--fm-muted-foreground); }
.doc-file button:hover, .doc-file a:hover { color: var(--fm-foreground); }
.upload-label { margin-top: auto; display: inline-flex; align-items: center; gap: .4rem; font-size: .8rem; font-weight: 700; color: var(--fm-primary); cursor: pointer; padding-top: .5rem; }
.upload-label:hover { color: var(--fm-primary-dark); }
.upload-label input { display: none; }
.company-result { width: 100%; text-align: left; display: flex; align-items: center; gap: .75rem; padding: .75rem; border: 1px solid var(--fm-border); border-radius: var(--fm-radius); background: var(--fm-card); }
.company-result:hover { border-color: var(--fm-primary); background: var(--fm-primary-soft); }
.company-verified { display: flex; gap: .75rem; padding: 1rem; border-radius: var(--fm-radius); background: rgba(21, 144, 90, .07); border: 1px solid rgba(21, 144, 90, .35); }
.intervention-col { background: var(--fm-muted); border-radius: var(--fm-radius); padding: 1rem; height: 100%; }
.intervention-item { background: var(--fm-card); border: 1px solid var(--fm-border); border-radius: calc(var(--fm-radius) - 2px); padding: .85rem; margin-top: .75rem; font-size: .875rem; }

/* Admin */
.admin-row { background: var(--fm-card); border: 1px solid var(--fm-border); border-radius: var(--fm-radius); padding: 1rem 1.25rem; transition: border-color .15s; }
.admin-row:hover { border-color: #c4d3ec; }
.admin-row.handled { opacity: .65; }
.admin-row + .admin-row { margin-top: .75rem; }
.table-fm { --bs-table-bg: transparent; font-size: .875rem; }
.reply-item { margin-top: .6rem; font-size: .8rem; }
.reply-item summary { cursor: pointer; color: var(--fm-foreground); list-style: none; }
.reply-item summary::-webkit-details-marker { display: none; }
.reply-item .reply-body { white-space: pre-line; margin-top: .4rem; padding: .6rem .8rem; border-radius: calc(var(--fm-radius) - 4px); background: var(--fm-muted); }
.reply-quote { border-left: 3px solid var(--fm-border); padding: .25rem 0 .25rem .9rem; color: var(--fm-muted-foreground); }
.reply-quote [data-reply-original] { white-space: pre-line; }

/* Modal */
.modal-content { border: 1px solid var(--fm-border); border-radius: 1.25rem; background: var(--fm-card); box-shadow: 0 30px 60px -20px rgba(0, 16, 42, .35); }
.modal-header, .modal-footer { border-color: var(--fm-border); padding-inline: 1.5rem; }
.modal-body { padding: 1.5rem; }
.modal-backdrop { --bs-backdrop-bg: #00102a; }
.modal-backdrop.show { opacity: .45; }

/* Legal pages */
.prose-fm { max-width: 48rem; }
.prose-fm h2 { font-size: 1.25rem; font-weight: 700; margin-top: 2.5rem; margin-bottom: .75rem; padding-top: 1.5rem; border-top: 1px solid var(--fm-border); }
.prose-fm h3 { font-size: 1rem; font-weight: 700; margin-top: 1.5rem; }
.prose-fm p, .prose-fm li { color: #2c3a57; line-height: 1.75; font-size: .95rem; }
.prose-fm dl { display: grid; grid-template-columns: minmax(9rem, max-content) 1fr; gap: .5rem 1.25rem; font-size: .95rem;
  background: var(--fm-card); border: 1px solid var(--fm-border); border-radius: var(--fm-radius); padding: 1.1rem 1.25rem; }
.prose-fm dt { font-weight: 600; }
.prose-fm dd { margin: 0; color: #2c3a57; }
@media (max-width: 575px) { .prose-fm dl { grid-template-columns: 1fr; } .prose-fm dd { margin-bottom: .5rem; } }

/* Footer (dark) */
.site-footer { position: relative; background: var(--fm-ink); color: rgba(238, 243, 252, .66); font-size: .875rem; overflow: hidden; }
.site-footer::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 3px; background: linear-gradient(90deg, #00a3f0, #0050d8 50%, #0a2a8c); }
.site-footer .footer-logo { height: 2.25rem; width: auto; display: block; }
.site-footer .footer-title { color: #fff; font-family: var(--fm-font-display); font-size: .8rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; margin-bottom: .9rem; }
.site-footer a { color: rgba(238, 243, 252, .72); text-decoration: none; }
.site-footer a:hover { color: #fff; }
.site-footer .footer-links { list-style: none; padding: 0; margin: 0; display: grid; gap: .55rem; }
.site-footer .footer-bottom { border-top: 1px solid rgba(255, 255, 255, .1); }

/* Toasts */
.toast-stack { position: fixed; bottom: 1rem; right: 1rem; z-index: 1090; display: grid; gap: .5rem; max-width: min(24rem, calc(100vw - 2rem)); }
.toast-fm { display: flex; gap: .65rem; align-items: flex-start; background: var(--fm-card); border: 1px solid var(--fm-border); border-radius: .85rem;
  padding: .85rem 1rem; box-shadow: 0 16px 36px -14px rgba(0, 16, 42, .35); font-size: .875rem; animation: toast-in .2s ease-out; }
.toast-fm .bi { font-size: 1.05rem; margin-top: .05rem; }
.toast-fm.success .bi { color: var(--fm-success); }
.toast-fm.danger .bi { color: var(--fm-destructive); }
.toast-fm.warning .bi { color: #c77700; }
.toast-fm.info .bi { color: var(--fm-technical); }
.toast-fm .btn-close { margin-left: auto; font-size: .65rem; }
@keyframes toast-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }

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