/* /Components/Layout/CookieBanner.razor.rz.scp.css */
/* Bandeau de consentement — carte papier à contour encre, ancrée en bas.
   Angle à 2 px et ombre portée nette : même vocabulaire que le reste. */
.gg-cookie[b-z6tqpczh8w] {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 60;
    padding-bottom: 20px;
    /* Le conteneur laisse passer les clics ; seule la carte les capte. */
    pointer-events: none;
}

.gg-cookie-card[b-z6tqpczh8w] {
    display: flex;
    align-items: center;
    gap: 24px;
    flex-wrap: wrap;
    background: var(--gg-paper);
    border: var(--gg-hairline) solid var(--gg-ink);
    border-radius: var(--gg-radius);
    box-shadow: 0 20px 50px rgba(11, 17, 32, 0.18);
    padding: 20px 24px;
    pointer-events: auto;
}

.gg-cookie-card p[b-z6tqpczh8w] {
    flex: 1;
    min-width: 260px;
    margin: 0;
    font-size: 14.5px;
    line-height: 1.6;
    color: var(--gg-ink);
}

.gg-cookie-actions[b-z6tqpczh8w] {
    display: flex;
    gap: 10px;
    flex-shrink: 0;
}

@media (max-width: 900px) {
    /* Pleine largeur au ras du bas : la carte devient une barre. Les
       marges du .gg-container parent sont neutralisées ici, jamais par un
       raccourci `padding` sur la carte elle-même. */
    .gg-cookie[b-z6tqpczh8w] { padding-bottom: 0; }
    .gg-cookie .gg-container[b-z6tqpczh8w] { padding-left: 0; padding-right: 0; }
    .gg-cookie-card[b-z6tqpczh8w] {
        gap: 16px;
        padding: 18px var(--gg-margin-mobile);
        border-left: none;
        border-right: none;
        border-bottom: none;
        box-shadow: none;
        border-radius: 0;
    }
    .gg-cookie-actions[b-z6tqpczh8w] { width: 100%; }
    .gg-cookie-actions .gg-btn[b-z6tqpczh8w] { flex: 1; }
}
/* /Components/Layout/LanguageSelector.razor.rz.scp.css */
/* Bascule de langue — segment FR|EN (maquette écran 01).
   Par défaut sur fond encre (en-tête) ; la variante .on-paper sert aux
   contextes clairs. */
.gg-lang[b-ia24a5zqw0] {
    display: flex;
    font-family: var(--gg-mono);
    font-size: 12px;
    border: var(--gg-hairline) solid var(--gg-on-ink-line-2);
    border-radius: var(--gg-radius);
    overflow: hidden;
    flex-shrink: 0;
}

.gg-lang-seg[b-ia24a5zqw0] {
    padding: 7px 11px;
    color: rgba(246, 245, 242, 0.65);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    /* La cible tactile utile est le segment entier ; 38px de haut plus le
       remplissage de l'en-tête satisfait les 44px du WCAG au pouce. */
    min-height: 38px;
    min-width: 38px;
    transition: background-color .15s ease, color .15s ease;
}

.gg-lang-seg.active[b-ia24a5zqw0] {
    background: var(--gg-paper);
    color: var(--gg-ink);
    font-weight: 600;
}

/* Seul le segment cible est un lien : il est donc le seul à réagir. */
a.gg-lang-seg:hover[b-ia24a5zqw0] {
    background: rgba(246, 245, 242, 0.12);
    color: var(--gg-on-ink);
}

/* Variante pleine largeur du panneau mobile. */
.gg-lang.full[b-ia24a5zqw0] { width: 100%; }
.gg-lang.full .gg-lang-seg[b-ia24a5zqw0] { flex: 1; padding: 13px; font-size: 13px; min-height: var(--gg-hit); }
/* /Components/Layout/MainLayout.razor.rz.scp.css */
/* Pied de page collé en bas sur les pages courtes (légales, 404) :
   colonne flex pleine hauteur, le <main> absorbe l'espace restant. */
.gg-page[b-l05f4y3k7u] {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

main[b-l05f4y3k7u] { flex: 1; }

/* Bandeau d'erreur Blazor — restylé sur les jetons ; son style d'origine
   vivait dans le wwwroot/app.css supprimé par la refonte. */
#blazor-error-ui[b-l05f4y3k7u] {
    color-scheme: light only;
    background: var(--gg-error-bg, #FFF3EF);
    color: var(--gg-ink, #0B1120);
    border-top: 2px solid var(--gg-error, #B4462A);
    bottom: 0;
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: 0.7rem 1.25rem 0.8rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
    font-size: 14px;
}

#blazor-error-ui .dismiss[b-l05f4y3k7u] {
    cursor: pointer;
    position: absolute;
    right: 0.75rem;
    top: 0.5rem;
}
/* /Components/Layout/NavMenu.razor.rz.scp.css */
/* Navigation — en ligne sur bureau, panneau plein écran sous 1080px. */

.gg-nav[b-jbf7pwbeij] {
    display: flex;
    align-items: center;
    margin-left: auto;
}

.gg-nav-list[b-jbf7pwbeij] {
    display: flex;
    align-items: center;
    gap: 30px;
}

.gg-nav-link[b-jbf7pwbeij] {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font-size: 15px;
    color: rgba(246, 245, 242, 0.72);
    background: none;
    border: none;
    padding: 0 0 4px;
    cursor: pointer;
    white-space: nowrap;
    border-bottom: var(--gg-rule) solid transparent;
    transition: color .15s ease, border-color .15s ease;
}
.gg-nav-link:hover[b-jbf7pwbeij] { color: var(--gg-on-ink); }

/* L'entrée active est soulignée d'orange : le signal marque la position,
   pas la simple survolée. */
.gg-nav-link.active[b-jbf7pwbeij] {
    color: var(--gg-white);
    font-weight: 500;
    border-bottom-color: var(--gg-signal);
}

/* L'entrée Solutions porte deux commandes : le lien vers la section et le
   bouton qui déploie le méga-menu. Elles s'alignent comme une seule
   étiquette, mais restent deux cibles distinctes au clavier. */
.gg-nav-entry[b-jbf7pwbeij] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.gg-nav-caret-btn[b-jbf7pwbeij] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: none;
    border: none;
    padding: 0 2px 4px;
    cursor: pointer;
    color: inherit;
    line-height: 1;
}

.gg-caret[b-jbf7pwbeij] {
    font-size: 10px;
    color: var(--gg-signal);
    transition: transform .15s ease;
}
/* Le chevron pivote quand le méga-menu est ouvert : l'état est visible
   sans dépendre uniquement d'aria-expanded. */
.gg-nav-caret-btn[aria-expanded="true"] .gg-caret[b-jbf7pwbeij] { transform: rotate(180deg); }

.gg-nav-dropdown[b-jbf7pwbeij] { position: relative; }

/* ---------- Méga-menu Solutions ---------- */
.gg-mega[b-jbf7pwbeij] {
    position: absolute;
    top: calc(100% + 8px);
    left: 0;
    width: 640px;
    background: var(--gg-ink-2);
    border: var(--gg-hairline) solid rgba(246, 245, 242, 0.14);
    padding: 26px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 4px 32px;
    z-index: 40;
    box-shadow: 0 30px 60px rgba(0, 0, 0, 0.35);
    border-radius: var(--gg-radius);
}

.gg-mega-note[b-jbf7pwbeij] {
    grid-column: 1 / -1;
    font-family: var(--gg-mono);
    font-size: 11px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: #7B8497;
    padding-bottom: 10px;
    margin: 0;
}

.gg-mega-item[b-jbf7pwbeij] {
    display: flex;
    gap: 14px;
    padding: 14px;
    border-radius: var(--gg-radius);
    color: var(--gg-on-ink);
    align-items: flex-start;
}
.gg-mega-item:hover[b-jbf7pwbeij],
.gg-mega-item.active[b-jbf7pwbeij] { background: rgba(19, 96, 239, 0.14); color: var(--gg-on-ink); }

/* La pastille reprend le point du logotype : grise au repos, orange sur
   l'entrée courante. */
.gg-mega-dot[b-jbf7pwbeij] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--gg-on-ink-dim);
    margin-top: 7px;
    flex: none;
}
.gg-mega-item:hover .gg-mega-dot[b-jbf7pwbeij],
.gg-mega-dot.active[b-jbf7pwbeij] { background: var(--gg-signal); }

.gg-mega-name[b-jbf7pwbeij] { font-weight: 600; font-size: 15px; display: block; }
.gg-mega-desc[b-jbf7pwbeij] { font-size: 13px; color: #9BA3B4; margin-top: 4px; display: block; line-height: 1.45; }

.gg-mega-index[b-jbf7pwbeij] {
    grid-column: 1 / -1;
    display: flex;
    align-items: center;
    padding: 14px;
    font-family: var(--gg-mono);
    font-size: 12px;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--gg-signal);
    border-top: var(--gg-hairline) solid rgba(246, 245, 242, 0.14);
    margin-top: 8px;
}
.gg-mega-index:hover[b-jbf7pwbeij] { color: var(--gg-on-ink); }

/* Le CTA n'existe pas dans la barre : il est déjà dans l'en-tête. */
.gg-nav-cta[b-jbf7pwbeij] { display: none; }

/* ---------- Panneau mobile ---------- */
@media (max-width: 1080px) {
    .gg-nav[b-jbf7pwbeij] {
        position: fixed;
        inset: var(--gg-header-h) 0 0 0;
        background: var(--gg-ink-2);
        overflow-y: auto;
        flex-direction: column;
        align-items: stretch;
        padding: 12px var(--gg-margin-mobile) 32px;
        gap: 18px;
        /* Fermé : invisible ET inatteignable au clavier. */
        opacity: 0;
        transform: translateY(-8px);
        pointer-events: none;
        visibility: hidden;
        transition: opacity .18s ease, transform .18s ease, visibility .18s;
        z-index: 45;
    }
    .gg-nav.open[b-jbf7pwbeij] {
        opacity: 1;
        transform: none;
        pointer-events: auto;
        visibility: visible;
    }

    .gg-nav-list[b-jbf7pwbeij] {
        flex-direction: column;
        align-items: stretch;
        gap: 0;
    }

    .gg-nav-link[b-jbf7pwbeij] {
        width: 100%;
        min-height: var(--gg-hit);
        padding: 15px 0;
        font-size: 17px;
        border-bottom: var(--gg-hairline) solid rgba(246, 245, 242, 0.1);
        justify-content: space-between;
    }
    .gg-nav-link.active[b-jbf7pwbeij] { border-bottom-color: var(--gg-signal); }

    /* Solutions : le lien et le chevron partagent une rangée, donc un
       seul filet — porté par l'enveloppe, pas par le lien. */
    .gg-nav-entry[b-jbf7pwbeij] {
        width: 100%;
        border-bottom: var(--gg-hairline) solid rgba(246, 245, 242, 0.1);
    }
    .gg-nav-entry.active[b-jbf7pwbeij] { border-bottom-color: var(--gg-signal); }
    .gg-nav-entry .gg-nav-link[b-jbf7pwbeij] { flex: 1; border-bottom-color: transparent; }
    .gg-nav-caret-btn[b-jbf7pwbeij] {
        min-height: var(--gg-hit);
        padding: 15px 0 15px 16px;
    }

    /* Le déroulant devient une liste en retrait, dans le flux. */
    .gg-mega[b-jbf7pwbeij] {
        position: static;
        width: auto;
        grid-template-columns: 1fr;
        gap: 1px;
        padding: 8px 0 12px;
        border: none;
        box-shadow: none;
        background: transparent;
    }
    .gg-mega-note[b-jbf7pwbeij] { padding-bottom: 6px; }
    .gg-mega-item[b-jbf7pwbeij] { padding: 15px 0; min-height: var(--gg-hit); }
    .gg-mega-desc[b-jbf7pwbeij] { display: none; }
    .gg-mega-index[b-jbf7pwbeij] { padding: 15px 0; }

    .gg-nav-cta[b-jbf7pwbeij] { display: inline-flex; }
}
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
/* Bannière de reconnexion — maquette planche 07 : barre encre ancrée en
   haut, pastille orange, bouton monospace encadré.

   Rendue en <dialog> non modal par le runtime Blazor : elle ne doit donc
   ni voiler la page ni piéger le focus — d'où une barre en tête plutôt
   qu'une boîte centrée. Les sélecteurs components-* sont imposés par
   ReconnectModal.razor.js. */

#components-reconnect-modal[b-ju2ufcit46] {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    width: 100%;
    max-width: 100%;
    margin: 0;
    padding: 0;
    border: none;
    border-bottom: var(--gg-rule) solid var(--gg-signal);
    background: var(--gg-ink);
    color: var(--gg-on-ink);
    z-index: 1000;
    box-shadow: 0 10px 30px rgba(11, 17, 32, 0.35);
}

/* Le runtime bascule l'attribut open ; on ne s'appuie pas sur ::backdrop
   (le dialog est ouvert en mode non modal). */
#components-reconnect-modal[open][b-ju2ufcit46] { display: block; }

.components-reconnect-container[b-ju2ufcit46] {
    max-width: var(--gg-max);
    margin: 0 auto;
    padding: 16px var(--gg-margin);
    display: flex;
    align-items: center;
    gap: 20px;
    flex-wrap: wrap;
}
@media (max-width: 900px) {
    .components-reconnect-container[b-ju2ufcit46] { padding: 14px var(--gg-margin-mobile); gap: 12px; }
}

.components-reconnect-container p[b-ju2ufcit46] {
    margin: 0;
    font-size: 14.5px;
    line-height: 1.5;
    display: flex;
    align-items: center;
    gap: 12px;
    flex: 1;
    min-width: 240px;
}

/* La pastille reprend le point du logotype ; elle pulse pendant la
   tentative, et le battement s'arrête si le visiteur a demandé moins de
   mouvement (la règle globale de app.css neutralise l'animation). */
.gg-reconnect-dot[b-ju2ufcit46] {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--gg-signal);
    flex: none;
    animation: gg-reconnect-pulse-b-ju2ufcit46 1.2s ease-in-out infinite;
}
@keyframes gg-reconnect-pulse-b-ju2ufcit46 {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.3; }
}

#components-reconnect-modal button[b-ju2ufcit46] {
    font-family: var(--gg-mono);
    font-size: 11.5px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    background: transparent;
    color: var(--gg-on-ink);
    border: var(--gg-hairline) solid var(--gg-on-ink-line-2);
    border-radius: var(--gg-radius);
    padding: 10px 14px;
    min-height: 40px;
    cursor: pointer;
    flex: none;
    transition: background-color .15s ease, color .15s ease, border-color .15s ease;
}
#components-reconnect-modal button:hover[b-ju2ufcit46] {
    background: var(--gg-signal);
    border-color: var(--gg-signal);
    color: var(--gg-white);
}

/* Affichage piloté par l'état : le runtime pose une classe d'état sur le
   dialog, chaque message ne se montre que dans le sien. */
.components-reconnect-first-attempt-visible[b-ju2ufcit46],
.components-reconnect-repeated-attempt-visible[b-ju2ufcit46],
.components-reconnect-failed-visible[b-ju2ufcit46],
.components-pause-visible[b-ju2ufcit46],
.components-resume-failed-visible[b-ju2ufcit46] { display: none; }

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-ju2ufcit46],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-ju2ufcit46],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-ju2ufcit46],
#components-reconnect-modal.components-paused .components-pause-visible[b-ju2ufcit46],
#components-reconnect-modal.components-resume-failed .components-resume-failed-visible[b-ju2ufcit46] { display: flex; }

#components-reconnect-modal.components-reconnect-failed button.components-reconnect-failed-visible[b-ju2ufcit46],
#components-reconnect-modal.components-paused button.components-pause-visible[b-ju2ufcit46],
#components-reconnect-modal.components-resume-failed button.components-resume-failed-visible[b-ju2ufcit46] {
    display: inline-flex;
    align-items: center;
}
/* /Components/Layout/SiteFooter.razor.rz.scp.css */
/* Pied de page — bloc identité large + trois colonnes de liens. */
.gg-footer[b-vhtvlxevk1] {
    background: var(--gg-ink);
    color: var(--gg-on-ink-body);
}

/* ⚠ padding-top/bottom séparés : .gg-footer-top porte aussi
   .gg-container, dont les marges horizontales seraient écrasées par un
   raccourci `padding`. */
.gg-footer-top[b-vhtvlxevk1] {
    display: grid;
    grid-template-columns: 1.4fr 1fr 1fr 1fr;
    gap: 40px;
    padding-top: 64px;
    padding-bottom: 40px;
}

/* ---------- Bloc identité ---------- */
.gg-footer-brand .gg-logo[b-vhtvlxevk1] {
    font-family: var(--gg-display);
    font-size: 24px;
    font-weight: 700;
    letter-spacing: -0.02em;
    color: var(--gg-on-ink);
    line-height: 1;
}

.gg-footer-baseline[b-vhtvlxevk1] {
    font-size: 15px;
    line-height: 1.6;
    color: var(--gg-on-ink-body);
    margin: 14px 0 0;
    max-width: 340px;
}

.gg-footer-meta[b-vhtvlxevk1] {
    font-family: var(--gg-mono);
    font-size: 12px;
    line-height: 1.9;
    color: var(--gg-on-ink-mute);
    margin: 18px 0 0;
}

.gg-footer-social[b-vhtvlxevk1] {
    display: flex;
    gap: 10px;
    margin-top: 18px;
}
.gg-footer-social a[b-vhtvlxevk1] {
    font-family: var(--gg-mono);
    font-size: 11.5px;
    letter-spacing: 0.06em;
    padding: 8px 12px;
    border: var(--gg-hairline) solid var(--gg-on-ink-line-2);
    color: var(--gg-on-ink-body);
    border-radius: var(--gg-radius);
    min-height: 36px;
    display: inline-flex;
    align-items: center;
}
.gg-footer-social a:hover[b-vhtvlxevk1] { border-color: var(--gg-signal); color: var(--gg-signal); }

/* ---------- Colonnes ---------- */
.gg-footer-col-title[b-vhtvlxevk1] {
    font-family: var(--gg-mono);
    font-size: 11px;
    font-weight: 400;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--gg-on-ink);
    margin: 0 0 16px;
}

.gg-footer-col ul[b-vhtvlxevk1] {
    display: flex;
    flex-direction: column;
    gap: 11px;
}

.gg-footer-col a[b-vhtvlxevk1] {
    font-size: 14.5px;
    color: var(--gg-on-ink-body);
}
.gg-footer-col a:hover[b-vhtvlxevk1] { color: var(--gg-signal); }

.gg-footer-index[b-vhtvlxevk1] {
    font-family: var(--gg-mono);
    font-size: 12px;
    letter-spacing: 0.06em;
    color: var(--gg-signal) !important;
}
.gg-footer-index:hover[b-vhtvlxevk1] { color: var(--gg-on-ink) !important; }

.gg-footer-copy[b-vhtvlxevk1] {
    font-family: var(--gg-mono);
    font-size: 11px;
    color: var(--gg-on-ink-faint);
    margin: 24px 0 0;
}

@media (max-width: 900px) {
    .gg-footer-top[b-vhtvlxevk1] {
        grid-template-columns: 1fr 1fr;
        gap: 32px;
        padding-top: 48px;
    }
    .gg-footer-brand[b-vhtvlxevk1] { grid-column: 1 / -1; }
}

@media (max-width: 560px) {
    .gg-footer-top[b-vhtvlxevk1] { grid-template-columns: 1fr; }
}
/* /Components/Layout/SiteHeader.razor.rz.scp.css */
/* En-tête — barre encre pleine largeur (maquette écran 01).
   Non collant : la maquette montre un en-tête en tête de flux, et le
   bandeau encre qui le suit prolonge la même surface. */
/* En-tête collant — exigé par le one-pager de l'accueil : la navigation
   n'est plus un simple répertoire de pages, c'est le repère de lecture de
   la page courante. Avec un en-tête en position:relative, elle disparaît
   au premier défilement et la page devient un long ruban sans issue.

   Le fond est opaque (encre pleine) : les sections défilent dessous, un
   fond translucide laisserait le texte transparaître.

   .gg-page est une colonne flex ; un enfant sticky y fonctionne, l'élément
   restant libre de coller dans le bloc conteneur. Aucun ancêtre ne porte
   overflow:hidden — seul .gg-sr-only en a, et il n'en est pas un. */
.gg-header[b-a0zzurnd3x] {
    background: var(--gg-ink);
    color: var(--gg-on-ink);
    border-bottom: var(--gg-hairline) solid rgba(246, 245, 242, 0.12);
    position: sticky;
    top: 0;
    z-index: 50;
}

.gg-header-inner[b-a0zzurnd3x] {
    height: var(--gg-header-h);
    display: flex;
    align-items: center;
    gap: 26px;
}

/* ---------- Logotype ----------
   Space Grotesk 700 : le seul usage du poids 700 du système, réservé à la
   marque. Le point orange est porté par .gg-dot (app.css). */
.gg-logo[b-a0zzurnd3x] {
    font-family: var(--gg-display);
    font-size: 22px;
    font-weight: 700;
    letter-spacing: -0.02em;
    color: var(--gg-on-ink);
    flex-shrink: 0;
    line-height: 1;
}
.gg-logo:hover[b-a0zzurnd3x] { color: var(--gg-on-ink); }

/* ---------- Actions ---------- */
.gg-header-actions[b-a0zzurnd3x] {
    display: flex;
    align-items: center;
    gap: 18px;
    flex-shrink: 0;
    margin-left: auto;
}

.gg-header-cta[b-a0zzurnd3x] { white-space: nowrap; }

/* ---------- Hamburger ----------
   Trois barres dont la dernière, plus courte et orange, reprend le point
   du logotype — le motif signature jusque dans la commande de menu. */
.gg-burger[b-a0zzurnd3x] {
    display: none;
    width: var(--gg-hit);
    height: var(--gg-hit);
    background: none;
    border: none;
    cursor: pointer;
    flex-direction: column;
    justify-content: center;
    align-items: flex-end;
    gap: 5px;
    padding: 0;
    flex-shrink: 0;
}
.gg-burger span[b-a0zzurnd3x] {
    width: 24px;
    height: 2px;
    background: var(--gg-on-ink);
    display: block;
    transition: transform .18s ease, opacity .18s ease, width .18s ease;
}
.gg-burger span.signal[b-a0zzurnd3x] { width: 16px; background: var(--gg-signal); }

.gg-burger[aria-expanded="true"] span:first-child[b-a0zzurnd3x] { transform: translateY(7px) rotate(45deg); }
.gg-burger[aria-expanded="true"] span:nth-child(2)[b-a0zzurnd3x] { opacity: 0; }
.gg-burger[aria-expanded="true"] span.signal[b-a0zzurnd3x] { width: 24px; transform: translateY(-7px) rotate(-45deg); }

/* ---------- Bascule mobile ----------
   1080px : six entrées de navigation plus le segment de langue et le CTA,
   avec un français ~25 % plus long que l'anglais (PRD §7). C'est la
   version française qui fixe le seuil. */
@media (max-width: 1080px) {
    .gg-burger[b-a0zzurnd3x] { display: flex; }
    /* Le CTA bascule dans le panneau ; le segment de langue, lui, RESTE
       dans l'en-tête : les règles responsive de la maquette le veulent
       « toujours visible — argument de vente », et le PRD §7 fait du
       bilinguisme un argument commercial, pas un simple réglage. */
    .gg-header-cta[b-a0zzurnd3x] { display: none; }
    .gg-header-inner[b-a0zzurnd3x] { gap: 16px; }
    .gg-header-actions[b-a0zzurnd3x] { gap: 12px; }
}
/* /Components/Pages/AboutPage.razor.rz.scp.css */
/* Page À propos — maquette écran 05. */

/* ---------- Bandeau : récit à gauche, mission/vision à droite ---------- */
.gg-ab-hero[b-1uwtr5appx] {
    display: grid;
    grid-template-columns: 1.2fr 0.8fr;
    gap: 64px;
    margin-top: 24px;
}

.gg-ab-p[b-1uwtr5appx] {
    font-size: 17.5px;
    line-height: 1.6;
    color: var(--gg-on-ink-body);
    margin: 14px 0 0;
}
.gg-ab-p:first-of-type[b-1uwtr5appx] { margin-top: 22px; }

.gg-ab-mv[b-1uwtr5appx] {
    display: flex;
    flex-direction: column;
    gap: 22px;
    border-left: var(--gg-hairline) solid var(--gg-on-ink-line);
    padding-left: 36px;
}

.gg-ab-mv-text[b-1uwtr5appx] {
    font-size: 16px;
    line-height: 1.55;
    color: #E4E6EB;
    margin: 8px 0 0;
}

/* ---------- Équipe ---------- */
.gg-team[b-1uwtr5appx] { background: var(--gg-paper); }

.gg-team-title[b-1uwtr5appx] { margin-top: 12px; }

.gg-team-note[b-1uwtr5appx] {
    font-family: var(--gg-mono);
    font-size: 12px;
    line-height: 1.6;
    color: var(--gg-muted-2);
    max-width: 380px;
    margin: 0;
}

.gg-team-grid[b-1uwtr5appx] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
    margin-top: 32px;
}

/* Portrait en 4/5 : cadrage de portrait, pas de vignette carrée. */
.gg-team-slot[b-1uwtr5appx] { aspect-ratio: 4 / 5; align-items: flex-end; justify-content: flex-start; padding: 16px; }

.gg-team-role[b-1uwtr5appx] {
    font-family: var(--gg-display);
    font-size: 20px;
    font-weight: 600;
    line-height: 1.2;
    margin-top: 14px;
}

.gg-team-focus[b-1uwtr5appx] {
    font-family: var(--gg-mono);
    font-size: 11.5px;
    letter-spacing: 0.06em;
    color: var(--gg-blue);
    margin: 6px 0 0;
}

/* La note « à fournir » est en tireté visuellement par sa couleur : elle
   ne doit pas se lire comme une biographie. */
.gg-team-todo[b-1uwtr5appx] {
    font-size: 14.5px;
    line-height: 1.55;
    color: var(--gg-placeholder);
    font-style: italic;
    margin: 8px 0 0;
}

.gg-team-careers[b-1uwtr5appx] {
    background: var(--gg-ink);
    color: var(--gg-on-ink);
    border-radius: var(--gg-radius);
    padding: 26px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 16px;
}

.gg-team-careers-text[b-1uwtr5appx] {
    font-family: var(--gg-display);
    font-size: 22px;
    font-weight: 500;
    line-height: 1.25;
    letter-spacing: -0.02em;
    margin: 0;
}

/* ---------- Valeurs ---------- */
.gg-val[b-1uwtr5appx] {
    background: var(--gg-paper-2);
    border-top: var(--gg-hairline) solid var(--gg-line);
}

.gg-val-title[b-1uwtr5appx] { margin: 0 0 28px; }

.gg-val-grid[b-1uwtr5appx] { grid-template-columns: repeat(5, 1fr); }

.gg-val-card[b-1uwtr5appx] {
    background: var(--gg-paper-2);
    padding: 24px;
}
/* La valeur signature est la seule sur papier clair, coiffée d'orange. */
.gg-val-card.signature[b-1uwtr5appx] {
    background: var(--gg-paper);
    border-top: var(--gg-rule) solid var(--gg-signal);
}

.gg-val-dot[b-1uwtr5appx] {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--gg-blue);
    display: block;
}
.gg-val-dot.signature[b-1uwtr5appx] { background: var(--gg-signal); }

.gg-val-name[b-1uwtr5appx] {
    font-family: var(--gg-display);
    font-size: 19px;
    font-weight: 600;
    line-height: 1.2;
    margin-top: 14px;
}

.gg-val-desc[b-1uwtr5appx] {
    font-size: 14.5px;
    line-height: 1.55;
    color: var(--gg-muted);
    margin: 8px 0 0;
}

/* ---------- Bande de clôture ---------- */
.gg-idx-cta[b-1uwtr5appx] {
    background: var(--gg-paper);
    border-top: var(--gg-hairline) solid var(--gg-line);
}
.gg-idx-cta-inner[b-1uwtr5appx] {
    padding-top: 56px;
    padding-bottom: 56px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 32px;
    flex-wrap: wrap;
}
.gg-idx-cta-title[b-1uwtr5appx] { margin: 0; max-width: 640px; }

@media (max-width: 1100px) {
    .gg-team-grid[b-1uwtr5appx] { grid-template-columns: repeat(2, 1fr); }
    .gg-val-grid[b-1uwtr5appx] { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 900px) {
    .gg-ab-hero[b-1uwtr5appx] { grid-template-columns: 1fr; gap: 32px; }
    .gg-ab-mv[b-1uwtr5appx] {
        border-left: none;
        border-top: var(--gg-hairline) solid var(--gg-on-ink-line);
        padding-left: 0;
        padding-top: 24px;
    }
}

@media (max-width: 600px) {
    .gg-team-grid[b-1uwtr5appx] { grid-template-columns: 1fr; }
    .gg-val-grid[b-1uwtr5appx] { grid-template-columns: 1fr; }
}
/* /Components/Pages/CareersPage.razor.rz.scp.css */
/* Page Carrières. Aucun poste n'est ouvert : la liste laisse place à un
   état vide. Les styles de poste plus bas restent en place, prêts pour le
   jour où de vraies offres seront publiées. */
.gg-car[b-fopwp6wvv6] { background: var(--gg-paper); }

/* État vide : neutre, pas alarmant. Un bandeau rouge dirait « quelque
   chose ne va pas » alors que ne pas recruter est une situation
   ordinaire. D'où le contour tireté du vocabulaire « à venir » du
   système, sur le ton papier secondaire. */
.gg-car-empty[b-fopwp6wvv6] {
    margin-top: 28px;
    padding: 32px;
    border: var(--gg-hairline) dashed var(--gg-line-dashed);
    border-radius: var(--gg-radius);
    background: var(--gg-paper-2);
}

.gg-car-empty-title[b-fopwp6wvv6] {
    font-family: var(--gg-display);
    font-size: 20px;
    font-weight: 600;
    line-height: 1.3;
    color: var(--gg-ink);
    margin: 0;
}

.gg-car-empty-note[b-fopwp6wvv6] {
    font-size: 15.5px;
    line-height: 1.6;
    color: var(--gg-muted);
    margin: 10px 0 0;
    max-width: 46em;
}

@media (max-width: 600px) {
    .gg-car-empty[b-fopwp6wvv6] { padding: 24px 20px; }
}

.gg-car-list[b-fopwp6wvv6] {
    display: flex;
    flex-direction: column;
    gap: 16px;
    margin-top: 28px;
}

/* Contour tireté : le vocabulaire « capacité / à fournir » du système,
   distinct du contour plein des contenus réels. */
.gg-car-role[b-fopwp6wvv6] {
    border: var(--gg-hairline) dashed var(--gg-line-dashed);
    border-radius: var(--gg-radius);
    padding: 24px;
    background: var(--gg-paper-2);
}

.gg-car-role-head[b-fopwp6wvv6] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 16px;
    flex-wrap: wrap;
}

.gg-car-role-title[b-fopwp6wvv6] {
    font-family: var(--gg-display);
    font-size: 22px;
    font-weight: 600;
    line-height: 1.2;
}

.gg-car-role-meta[b-fopwp6wvv6] {
    font-family: var(--gg-mono);
    font-size: 11.5px;
    letter-spacing: 0.08em;
    color: var(--gg-muted-2);
    margin: 10px 0 0;
}

.gg-car-role-desc[b-fopwp6wvv6] {
    font-size: 15px;
    line-height: 1.55;
    color: var(--gg-muted);
    margin: 8px 0 0;
}

/* ---------- Candidature spontanée : le seul canal réel de la page ---- */
.gg-car-spontaneous[b-fopwp6wvv6] {
    margin-top: 48px;
    background: var(--gg-ink);
    color: var(--gg-on-ink);
    border-radius: var(--gg-radius);
    padding: 36px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 28px;
    flex-wrap: wrap;
}

.gg-car-spont-title[b-fopwp6wvv6] { margin: 0; color: var(--gg-white); }

.gg-car-spont-text[b-fopwp6wvv6] {
    font-size: 16px;
    line-height: 1.6;
    color: var(--gg-on-ink-body);
    margin: 10px 0 0;
    max-width: 42em;
}

@media (max-width: 700px) {
    .gg-car-spontaneous[b-fopwp6wvv6] { padding: 24px; }
    .gg-car-spontaneous .gg-btn[b-fopwp6wvv6] { width: 100%; }
}
/* /Components/Pages/ContactPage.razor.rz.scp.css */
/* Page Contact — coordonnées sur encre à gauche, formulaire sur papier à
   droite (maquette écran 06). Le formulaire est la seule surface claire
   du bandeau : c'est là que le regard doit tomber. */

.gg-ct-grid[b-733dncyxxp] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 56px;
    padding-top: 24px;
}

/* ---------- Coordonnées ---------- */
.gg-ct-details[b-733dncyxxp] {
    margin: 36px 0 0;
    font-size: 16px;
}
.gg-ct-details > div[b-733dncyxxp] {
    display: flex;
    justify-content: space-between;
    gap: 20px;
    padding: 18px 0;
    border-top: var(--gg-hairline) solid var(--gg-on-ink-line);
}
.gg-ct-details > div:last-child[b-733dncyxxp] {
    border-bottom: var(--gg-hairline) solid var(--gg-on-ink-line);
}
.gg-ct-details dt[b-733dncyxxp] {
    font-family: var(--gg-mono);
    font-size: 12px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--gg-on-ink-mute);
}
.gg-ct-details dd[b-733dncyxxp] { margin: 0; text-align: right; }
.gg-ct-details a[b-733dncyxxp] { color: var(--gg-on-ink); }
.gg-ct-details a:hover[b-733dncyxxp] { color: var(--gg-signal); }

/* ---------- Formulaire ---------- */
.gg-ct-form[b-733dncyxxp] {
    background: var(--gg-paper);
    color: var(--gg-ink);
    padding: 36px;
    border-radius: var(--gg-radius);
    /* Remonte sur le bandeau : la carte déborde vers le bas de section. */
    align-self: start;
}

.gg-ct-state[b-733dncyxxp] { margin: 0 0 22px; }

.gg-ct-fields[b-733dncyxxp] {
    display: flex;
    flex-direction: column;
    gap: 18px;
}

.gg-ct-row[b-733dncyxxp] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
}

/* Pastilles de service — <fieldset> sans son cadre natif. */
.gg-ct-services[b-733dncyxxp] { border: none; padding: 0; margin: 0; }
.gg-ct-services legend[b-733dncyxxp] { padding: 0; margin-bottom: 7px; }

.gg-ct-chips[b-733dncyxxp] { display: flex; flex-wrap: wrap; gap: 8px; }

.gg-ct-chip[b-733dncyxxp] {
    position: relative;
    display: inline-flex;
    align-items: center;
    font-family: var(--gg-mono);
    font-size: 12px;
    padding: 11px 14px;
    min-height: var(--gg-hit);
    border: var(--gg-hairline) solid var(--gg-line-strong);
    border-radius: var(--gg-radius);
    cursor: pointer;
    background: var(--gg-white);
    color: var(--gg-muted-3);
    transition: background-color .15s ease, color .15s ease, border-color .15s ease;
}
.gg-ct-chip:hover[b-733dncyxxp] { border-color: var(--gg-ink); color: var(--gg-ink); }
.gg-ct-chip.active[b-733dncyxxp] {
    background: var(--gg-blue);
    border-color: var(--gg-blue);
    color: var(--gg-white);
}

/* Le bouton radio reste focalisable au clavier : il est rendu invisible,
   jamais display:none (ce qui le retirerait de l'ordre de tabulation). */
.gg-ct-chip input[b-733dncyxxp] {
    position: absolute;
    opacity: 0;
    width: 100%;
    height: 100%;
    left: 0;
    top: 0;
    margin: 0;
    cursor: pointer;
}
.gg-ct-chip:focus-within[b-733dncyxxp] {
    outline: 3px solid var(--gg-blue);
    outline-offset: 3px;
}

.gg-ct-submit[b-733dncyxxp] { margin-top: 4px; }

/* Indicateur d'envoi : une pastille qui bat, plutôt qu'un cercle
   tournant — même vocabulaire géométrique que le reste du système. */
.gg-ct-spinner[b-733dncyxxp] {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--gg-white);
    display: inline-block;
    animation: gg-ct-pulse-b-733dncyxxp 1s ease-in-out infinite;
}
@keyframes gg-ct-pulse-b-733dncyxxp {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.35; }
}

.gg-ct-promise[b-733dncyxxp] {
    font-family: var(--gg-mono);
    font-size: 11.5px;
    line-height: 1.6;
    color: var(--gg-muted-2);
    margin: 0;
}

/* ---------- Confirmation ---------- */
.gg-ct-done[b-733dncyxxp] {
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding: 24px 0;
}
.gg-ct-done p[b-733dncyxxp] {
    font-size: 17px;
    line-height: 1.6;
    margin: 0;
    max-width: 34em;
}

@media (max-width: 1000px) {
    .gg-ct-grid[b-733dncyxxp] { grid-template-columns: 1fr; gap: 36px; }
}

@media (max-width: 600px) {
    .gg-ct-form[b-733dncyxxp] { padding: 24px 20px; }
    .gg-ct-row[b-733dncyxxp] { grid-template-columns: 1fr; }
    .gg-ct-details > div[b-733dncyxxp] { flex-direction: column; gap: 4px; }
    .gg-ct-details dd[b-733dncyxxp] { text-align: left; }
}
/* /Components/Pages/IndustriesPage.razor.rz.scp.css */
/* Page Secteurs — grille à filet, quatre colonnes. Chaque secteur porte
   une phrase : le PRD §6.3 proscrit « les listes d'étiquettes nues sans
   phrase explicative ». */
.gg-ind[b-gkbqyzzn5e] { background: var(--gg-paper); }

.gg-ind-grid[b-gkbqyzzn5e] { grid-template-columns: repeat(4, 1fr); }

.gg-ind-card[b-gkbqyzzn5e] {
    background: var(--gg-paper);
    padding: 24px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

/* Le secteur public est le seul distingué — aplat bleu pâle, la couleur
   d'appui du système. */
.gg-ind-card.public[b-gkbqyzzn5e] { background: var(--gg-blue-pale); }

.gg-ind-name[b-gkbqyzzn5e] {
    font-family: var(--gg-display);
    font-size: 18px;
    font-weight: 600;
    line-height: 1.25;
}

.gg-ind-desc[b-gkbqyzzn5e] {
    font-size: 14px;
    line-height: 1.55;
    color: var(--gg-muted);
    margin: 0;
}

.gg-ind-note[b-gkbqyzzn5e] {
    font-family: var(--gg-mono);
    font-size: 10.5px;
    letter-spacing: 0.06em;
    color: var(--gg-blue-deep);
    margin: 10px 0 0;
}

/* ---------- Bande de clôture (mêmes règles que l'index Solutions ;
   l'isolation CSS étant par composant, elles sont répétées ici). ------- */
.gg-idx-cta[b-gkbqyzzn5e] {
    background: var(--gg-paper-2);
    border-top: var(--gg-hairline) solid var(--gg-line);
}
.gg-idx-cta-inner[b-gkbqyzzn5e] {
    padding-top: 56px;
    padding-bottom: 56px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 32px;
    flex-wrap: wrap;
}
.gg-idx-cta-title[b-gkbqyzzn5e] { margin: 0; max-width: 640px; }

@media (max-width: 1100px) {
    .gg-ind-grid[b-gkbqyzzn5e] { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 600px) {
    .gg-ind-grid[b-gkbqyzzn5e] { grid-template-columns: 1fr; }
}
/* /Components/Pages/NotFound.razor.rz.scp.css */
/* Page 404 — pleine surface encre : elle occupe la hauteur restante
   plutôt que de laisser un bandeau court suivi de vide. */
.gg-nf[b-ksxm0dorca] {
    background: var(--gg-ink);
    color: var(--gg-on-ink);
    display: flex;
    align-items: center;
    min-height: 60vh;
}

.gg-nf-inner[b-ksxm0dorca] {
    padding-top: 72px;
    padding-bottom: 72px;
}

.gg-nf-code[b-ksxm0dorca] {
    font-family: var(--gg-mono);
    font-size: 13px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--gg-signal);
    margin: 0;
}

.gg-nf-title[b-ksxm0dorca] {
    color: var(--gg-white);
    margin: 20px 0 0;
    max-width: 16em;
}

.gg-nf-message[b-ksxm0dorca] {
    font-size: 18px;
    line-height: 1.55;
    color: var(--gg-on-ink-body);
    max-width: 44em;
    margin: 18px 0 0;
}

.gg-nf-actions[b-ksxm0dorca] {
    display: flex;
    gap: 14px;
    margin-top: 32px;
    flex-wrap: wrap;
}

.gg-nf-links[b-ksxm0dorca] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-top: 40px;
    padding-top: 26px;
    border-top: var(--gg-hairline) solid var(--gg-on-ink-line);
}

/* Les pastilles de technologie sont conçues pour le papier : sur encre,
   on inverse contour et texte. */
.gg-nf-links .gg-tag-tech[b-ksxm0dorca] {
    background: transparent;
    border-color: var(--gg-on-ink-line-2);
    color: var(--gg-on-ink-body);
}
.gg-nf-links .gg-tag-tech:hover[b-ksxm0dorca] {
    border-color: var(--gg-signal);
    color: var(--gg-signal);
}

@media (max-width: 600px) {
    .gg-nf-actions .gg-btn[b-ksxm0dorca] { flex: 1 1 100%; }
}
/* /Components/Pages/PrivacyPolicyPage.razor.rz.scp.css */
/* Pages légales — colonne de lecture unique. Une politique se lit en
   continu : largeur de ligne confortable, aucune grille, aucune carte. */
.gg-legal[b-h8j9j4utmc] { background: var(--gg-paper); }

.gg-legal-col[b-h8j9j4utmc] { max-width: 760px; }

.gg-legal-col p[b-h8j9j4utmc] {
    font-size: 16.5px;
    line-height: 1.75;
    color: var(--gg-muted);
    margin: 0 0 28px;
}

/* La date de révision ouvre la page : c'est l'information qu'un lecteur
   vérifie en premier sur un texte légal. */
.gg-legal-updated[b-h8j9j4utmc] {
    font-family: var(--gg-mono);
    font-size: 12px;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--gg-blue) !important;
    margin-bottom: 40px !important;
}

.gg-legal-h2[b-h8j9j4utmc] {
    font-family: var(--gg-display);
    font-size: 24px;
    font-weight: 600;
    letter-spacing: -0.02em;
    line-height: 1.25;
    margin: 48px 0 14px;
}
.gg-legal-col > .gg-legal-h2:first-of-type[b-h8j9j4utmc] { margin-top: 0; }
/* /Components/Pages/ProjectsPage.razor.rz.scp.css */
/* Page Réalisations — barre de filtre puis grille de fiches. */

/* ---------- Barre de filtre ---------- */
.gg-wk-filter[b-8ex86n13au] {
    background: var(--gg-paper-2);
    border-bottom: var(--gg-hairline) solid var(--gg-line);
}

.gg-wk-filter-inner[b-8ex86n13au] {
    padding-top: 36px;
    padding-bottom: 24px;
    display: flex;
    align-items: center;
    gap: 14px;
    flex-wrap: wrap;
}

.gg-wk-filter-label[b-8ex86n13au] {
    font-family: var(--gg-mono);
    font-size: 11.5px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--gg-muted-2);
}

.gg-wk-filter-set[b-8ex86n13au] { display: flex; gap: 10px; flex-wrap: wrap; }

.gg-wk-chip[b-8ex86n13au] {
    font-family: var(--gg-mono);
    font-size: 12.5px;
    padding: 11px 18px;
    min-height: var(--gg-hit);
    display: inline-flex;
    align-items: center;
    cursor: pointer;
    border: var(--gg-hairline) solid var(--gg-line-strong);
    border-radius: var(--gg-radius);
    background: var(--gg-paper);
    color: var(--gg-muted-3);
    transition: background-color .15s ease, color .15s ease, border-color .15s ease;
}
.gg-wk-chip:hover[b-8ex86n13au] { border-color: var(--gg-ink); color: var(--gg-ink); }

/* L'état actif est plein encre : le filtre courant se lit d'un coup
   d'œil, y compris hors couleur (contraste de valeur, pas de teinte). */
.gg-wk-chip.active[b-8ex86n13au] {
    background: var(--gg-ink);
    border-color: var(--gg-ink);
    color: var(--gg-on-ink);
}

.gg-wk-count[b-8ex86n13au] {
    margin-left: auto;
    font-family: var(--gg-mono);
    font-size: 12px;
    color: var(--gg-muted);
}

/* ---------- Grille ---------- */
.gg-wk[b-8ex86n13au] { background: var(--gg-paper); }

.gg-wk-grid[b-8ex86n13au] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
}

.gg-wk-card[b-8ex86n13au] {
    border: var(--gg-hairline) solid var(--gg-line);
    border-radius: var(--gg-radius);
    background: var(--gg-white);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    /* L'ancre ne doit pas se loger sous la barre de filtre. */
    scroll-margin-top: 24px;
    transition: border-color .15s ease, transform .15s ease;
}
.gg-wk-card:hover[b-8ex86n13au] { border-color: var(--gg-ink); transform: translateY(-3px); }

/* ---------- Visuel de la carte ----------
   Ici les cartes sont sur PAPIER, pas sur encre : pas de voile sombre ni
   de désaturation, la photo peut être franche. Seul un filet la sépare du
   corps de la carte. */
.gg-wk-media[b-8ex86n13au] {
    display: block;
    height: 180px;
    overflow: hidden;
    background: var(--gg-paper-2);
    border-bottom: var(--gg-hairline) solid var(--gg-line);
}

.gg-wk-img[b-8ex86n13au] {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .35s ease;
}

.gg-wk-card:hover .gg-wk-img[b-8ex86n13au] { transform: scale(1.04); }

@media (prefers-reduced-motion: reduce) {
    .gg-wk-card:hover .gg-wk-img[b-8ex86n13au] { transform: none; }
}

.gg-wk-body[b-8ex86n13au] {
    padding: 24px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    flex: 1;
}

.gg-wk-tag[b-8ex86n13au] {
    font-family: var(--gg-mono);
    font-size: 11px;
    letter-spacing: 0.1em;
    color: var(--gg-blue);
    margin: 0;
}

.gg-wk-title[b-8ex86n13au] {
    font-family: var(--gg-display);
    font-size: 21px;
    font-weight: 600;
    letter-spacing: -0.02em;
    line-height: 1.2;
}

.gg-wk-desc[b-8ex86n13au] {
    font-size: 15px;
    line-height: 1.55;
    color: var(--gg-muted);
    margin: 0;
}

.gg-wk-foot[b-8ex86n13au] {
    margin-top: auto;
    padding-top: 16px;
    border-top: var(--gg-hairline) solid var(--gg-line);
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 12px;
    flex-wrap: wrap;
}

.gg-wk-metric[b-8ex86n13au] {
    font-family: var(--gg-mono);
    font-size: 12px;
    color: var(--gg-ink);
}

.gg-wk-link[b-8ex86n13au] {
    font-family: var(--gg-mono);
    font-size: 11.5px;
    color: var(--gg-signal);
}

.gg-wk-empty[b-8ex86n13au] {
    font-size: 16px;
    color: var(--gg-muted);
    margin: 0;
}

/* ---------- Bande de clôture ---------- */
.gg-idx-cta[b-8ex86n13au] {
    background: var(--gg-paper-2);
    border-top: var(--gg-hairline) solid var(--gg-line);
}
.gg-idx-cta-inner[b-8ex86n13au] {
    padding-top: 56px;
    padding-bottom: 56px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 32px;
    flex-wrap: wrap;
}
.gg-idx-cta-title[b-8ex86n13au] { margin: 0; max-width: 640px; }

@media (max-width: 1000px) {
    .gg-wk-grid[b-8ex86n13au] { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 680px) {
    .gg-wk-grid[b-8ex86n13au] { grid-template-columns: 1fr; }
    .gg-wk-count[b-8ex86n13au] { margin-left: 0; }
}
/* /Components/Pages/SolutionsPage.razor.rz.scp.css */
/* Index Solutions — même vocabulaire de carte que la grille de services
   de l'accueil, sans la tuile signature (elle appartient à l'accueil). */
.gg-idx[b-xrov8sbdoy] { background: var(--gg-paper); }

.gg-idx-grid[b-xrov8sbdoy] { grid-template-columns: repeat(3, 1fr); }

.gg-idx-card[b-xrov8sbdoy] {
    background: var(--gg-paper);
    padding: 30px;
    color: var(--gg-ink);
    display: flex;
    flex-direction: column;
    gap: 12px;
    min-height: 220px;
    transition: background-color .15s ease;
}
.gg-idx-card:hover[b-xrov8sbdoy] { background: var(--gg-white); color: var(--gg-ink); }

.gg-idx-top[b-xrov8sbdoy] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
}

.gg-idx-num[b-xrov8sbdoy] {
    font-family: var(--gg-mono);
    font-size: 11px;
    letter-spacing: 0.1em;
    color: var(--gg-muted-2);
}

.gg-idx-dot[b-xrov8sbdoy] {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--gg-blue);
    flex: none;
}
.gg-idx-card:hover .gg-idx-dot[b-xrov8sbdoy] { background: var(--gg-signal); }

.gg-idx-name[b-xrov8sbdoy] {
    font-family: var(--gg-display);
    font-size: 25px;
    font-weight: 600;
    letter-spacing: -0.02em;
    line-height: 1.15;
    margin-top: auto;
}

.gg-idx-desc[b-xrov8sbdoy] {
    font-size: 15.5px;
    line-height: 1.55;
    color: var(--gg-muted);
    margin: 0;
}

.gg-idx-more[b-xrov8sbdoy] {
    font-family: var(--gg-mono);
    font-size: 11.5px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--gg-blue);
}
.gg-idx-card:hover .gg-idx-more[b-xrov8sbdoy] { color: var(--gg-signal); }

/* Intertitre des trois pages hors menu. */
.gg-idx-more-title[b-xrov8sbdoy] { margin: 64px 0 24px; }

/* ---------- Bande de clôture ---------- */
.gg-idx-cta[b-xrov8sbdoy] {
    background: var(--gg-paper-2);
    border-top: var(--gg-hairline) solid var(--gg-line);
}

.gg-idx-cta-inner[b-xrov8sbdoy] {
    padding-top: 56px;
    padding-bottom: 56px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 32px;
    flex-wrap: wrap;
}

.gg-idx-cta-title[b-xrov8sbdoy] { margin: 0; max-width: 640px; }

@media (max-width: 1000px) {
    .gg-idx-grid[b-xrov8sbdoy] { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 680px) {
    .gg-idx-grid[b-xrov8sbdoy] { grid-template-columns: 1fr; }
    .gg-idx-card[b-xrov8sbdoy] { min-height: 0; padding: 24px 22px; }
    .gg-idx-name[b-xrov8sbdoy] { margin-top: 0; }
    .gg-idx-more-title[b-xrov8sbdoy] { margin-top: 44px; }
}
/* /Components/Pages/TermsAndConditionsPage.razor.rz.scp.css */
/* Pages légales — colonne de lecture unique. Une politique se lit en
   continu : largeur de ligne confortable, aucune grille, aucune carte. */
.gg-legal[b-3b2h84yhw6] { background: var(--gg-paper); }

.gg-legal-col[b-3b2h84yhw6] { max-width: 760px; }

.gg-legal-col p[b-3b2h84yhw6] {
    font-size: 16.5px;
    line-height: 1.75;
    color: var(--gg-muted);
    margin: 0 0 28px;
}

/* La date de révision ouvre la page : c'est l'information qu'un lecteur
   vérifie en premier sur un texte légal. */
.gg-legal-updated[b-3b2h84yhw6] {
    font-family: var(--gg-mono);
    font-size: 12px;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--gg-blue) !important;
    margin-bottom: 40px !important;
}

.gg-legal-h2[b-3b2h84yhw6] {
    font-family: var(--gg-display);
    font-size: 24px;
    font-weight: 600;
    letter-spacing: -0.02em;
    line-height: 1.25;
    margin: 48px 0 14px;
}
.gg-legal-col > .gg-legal-h2:first-of-type[b-3b2h84yhw6] { margin-top: 0; }
/* /Components/Sections/Home/AboutTeaserSection.razor.rz.scp.css */
/* À propos — retour au papier après la bande encre des réalisations. */
.gg-about-teaser[b-z2uei4cp3i] {
    background: var(--gg-paper);
}

.gg-about-teaser-grid[b-z2uei4cp3i] {
    display: grid;
    grid-template-columns: 1.05fr .95fr;
    gap: 56px;
    align-items: start;
}

.gg-about-teaser-title[b-z2uei4cp3i] {
    margin: 12px 0 0;
    max-width: 12em;
}

.gg-about-teaser-text[b-z2uei4cp3i] {
    font-size: 17px;
    line-height: 1.65;
    color: var(--gg-muted);
    margin: 20px 0 0;
    max-width: 40em;
}

.gg-about-teaser-link[b-z2uei4cp3i] {
    margin-top: 26px;
}

/* Mission et vision : deux panneaux séparés par un filet, pas deux
   cartes. Le filet suffit à les distinguer sans ajouter de boîte. */
.gg-about-teaser-mv[b-z2uei4cp3i] {
    display: flex;
    flex-direction: column;
}

.gg-about-teaser-panel[b-z2uei4cp3i] {
    padding: 26px 0;
    border-top: var(--gg-hairline) solid var(--gg-line);
}

.gg-about-teaser-panel:last-child[b-z2uei4cp3i] {
    border-bottom: var(--gg-hairline) solid var(--gg-line);
}

.gg-about-teaser-panel-text[b-z2uei4cp3i] {
    font-size: 17px;
    line-height: 1.6;
    color: var(--gg-ink);
    margin: 10px 0 0;
}

@media (max-width: 1000px) {
    .gg-about-teaser-grid[b-z2uei4cp3i] { grid-template-columns: 1fr; gap: 34px; }
}

@media (max-width: 600px) {
    .gg-about-teaser-text[b-z2uei4cp3i],
    .gg-about-teaser-panel-text[b-z2uei4cp3i] { font-size: 16px; }
}
/* /Components/Sections/Home/CareersTeaserSection.razor.rz.scp.css */
/* Carrières — dernière section avant l'appel à l'action orange. Papier
   secondaire et hauteur réduite : c'est une étape de passage, pas une
   destination. */
.gg-car-teaser[b-bzpmsm7tju] {
    background: var(--gg-paper-2);
    border-top: var(--gg-hairline) solid var(--gg-line);
}

.gg-car-teaser-grid[b-bzpmsm7tju] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 56px;
    align-items: end;
}

.gg-car-teaser-title[b-bzpmsm7tju] {
    margin: 12px 0 0;
    max-width: 14em;
}

.gg-car-teaser-aside[b-bzpmsm7tju] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 22px;
}

.gg-car-teaser-text[b-bzpmsm7tju] {
    font-size: 17px;
    line-height: 1.65;
    color: var(--gg-muted);
    margin: 0;
    max-width: 40em;
}

@media (max-width: 1000px) {
    .gg-car-teaser-grid[b-bzpmsm7tju] { grid-template-columns: 1fr; gap: 28px; align-items: start; }
}

@media (max-width: 600px) {
    .gg-car-teaser-text[b-bzpmsm7tju] { font-size: 16px; }
}
/* /Components/Sections/Home/FeaturedProjectsSection.razor.rz.scp.css */
/* Réalisations — bloc encre : la seule section sombre du corps de page,
   ce qui la détache comme la preuve par l'exemple. */
.gg-work[b-dfhmf3ns7i] {
    background: var(--gg-ink);
    color: var(--gg-on-ink);
}

/* Sur encre, le filet d'en-tête de section passe en clair. */
.gg-sec-head.on-ink[b-dfhmf3ns7i] {
    border-bottom-color: rgba(246, 245, 242, 0.24);
    background: transparent;
}

.gg-work-grid[b-dfhmf3ns7i] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
    margin-top: 40px;
}

.gg-work-card[b-dfhmf3ns7i] {
    border: var(--gg-hairline) solid var(--gg-on-ink-line);
    border-radius: var(--gg-radius);
    display: flex;
    flex-direction: column;
    color: var(--gg-on-ink);
    overflow: hidden;
    transition: border-color .15s ease, transform .15s ease;
}
.gg-work-card:hover[b-dfhmf3ns7i] {
    border-color: var(--gg-signal);
    transform: translateY(-3px);
    color: var(--gg-on-ink);
}

/* ---------- Visuel de la carte ----------
   Hauteur fixe plutôt qu'aspect-ratio : les trois cartes d'une rangée
   doivent aligner leurs corps de texte, quelle que soit leur largeur. */
.gg-work-media[b-dfhmf3ns7i] {
    display: block;
    position: relative;
    height: 170px;
    overflow: hidden;
    background: var(--gg-ink-2);
}

.gg-work-img[b-dfhmf3ns7i] {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    /* Les photos sont vives et la section est sur fond encre : sans cette
       désaturation légère, elles happent le regard avant les titres,
       qui portent pourtant l'information. */
    filter: saturate(0.82) brightness(0.88);
    transition: transform .35s ease, filter .25s ease;
}

/* Voile encre en dégradé vers le bas : la photo se fond dans le corps de
   la carte au lieu de s'arrêter net sur une arête. */
.gg-work-media[b-dfhmf3ns7i]::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(to bottom,
        rgba(11, 17, 32, 0.18) 0%,
        rgba(11, 17, 32, 0.62) 100%);
    pointer-events: none;
}

/* Au survol, la carte se soulève déjà : la photo s'anime avec elle. */
.gg-work-card:hover .gg-work-img[b-dfhmf3ns7i] {
    transform: scale(1.04);
    filter: saturate(1) brightness(1);
}

@media (prefers-reduced-motion: reduce) {
    .gg-work-card:hover .gg-work-img[b-dfhmf3ns7i] { transform: none; }
}

.gg-work-body[b-dfhmf3ns7i] {
    padding: 22px;
    display: flex;
    flex-direction: column;
    flex: 1;
}

.gg-work-tag[b-dfhmf3ns7i] {
    font-family: var(--gg-mono);
    font-size: 11px;
    letter-spacing: 0.1em;
    color: var(--gg-signal);
    margin: 0;
}

.gg-work-title[b-dfhmf3ns7i] {
    font-family: var(--gg-display);
    font-size: 21px;
    font-weight: 600;
    line-height: 1.2;
    margin: 10px 0 0;
}

.gg-work-desc[b-dfhmf3ns7i] {
    font-size: 14.5px;
    line-height: 1.55;
    color: var(--gg-on-ink-body);
    margin: 8px 0 0;
}

/* La métrique est isolée par un filet : c'est le résultat, pas la
   description. */
.gg-work-metric[b-dfhmf3ns7i] {
    font-family: var(--gg-mono);
    font-size: 12px;
    color: var(--gg-on-ink);
    margin: 16px 0 0;
    padding-top: 14px;
    border-top: var(--gg-hairline) solid var(--gg-on-ink-line);
    /* auto : toutes les métriques s'alignent en bas, quelle que soit la
       longueur de la description au-dessus. */
    margin-top: auto;
}

@media (max-width: 1000px) {
    .gg-work-grid[b-dfhmf3ns7i] { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 680px) {
    .gg-work-grid[b-dfhmf3ns7i] { grid-template-columns: 1fr; margin-top: 28px; }
}
/* /Components/Sections/Home/HeroSection.razor.rz.scp.css */
/* Bandeau d'accueil — maquette écran 01. Prolonge la surface encre de
   l'en-tête : aucune couture entre les deux. */
.gg-hero[b-unx1bo4cf6] {
    background: var(--gg-ink);
    color: var(--gg-on-ink);
}

.gg-hero-inner[b-unx1bo4cf6] {
    display: grid;
    grid-template-columns: 1.05fr 1fr;
    gap: 56px;
    align-items: start;
    padding-top: 72px;
    padding-bottom: 96px;
}

.gg-hero-title[b-unx1bo4cf6] {
    color: var(--gg-white);
    margin: 22px 0 0;
    /* Pas de max-width en em : le titre doit pouvoir occuper sa colonne
       en français comme en anglais, la grille limite déjà sa largeur. */
    text-wrap: pretty;
}

.gg-hero-sub[b-unx1bo4cf6] {
    font-size: 19px;
    line-height: 1.55;
    color: var(--gg-on-ink-body);
    max-width: 560px;
    margin: 26px 0 0;
}

.gg-hero-ctas[b-unx1bo4cf6] {
    display: flex;
    gap: 14px;
    margin-top: 36px;
    flex-wrap: wrap;
}

/* Bandeau de faits : ancrage, langues, délai de première livraison. */
.gg-hero-meta[b-unx1bo4cf6] {
    display: flex;
    gap: 28px;
    flex-wrap: wrap;
    margin-top: 44px;
    padding-top: 26px;
    border-top: var(--gg-hairline) solid rgba(246, 245, 242, 0.14);
    font-family: var(--gg-mono);
    font-size: 12px;
    letter-spacing: 0.05em;
    color: var(--gg-on-ink-mute);
}

/* ================= Élément signature : le flux ================= */
.gg-flow[b-unx1bo4cf6] {
    background: var(--gg-ink-3);
    border: var(--gg-hairline) solid rgba(246, 245, 242, 0.14);
    border-radius: var(--gg-radius);
    padding: 26px;
}

.gg-flow-head[b-unx1bo4cf6],
.gg-flow-stages[b-unx1bo4cf6] {
    display: flex;
    justify-content: space-between;
    font-family: var(--gg-mono);
    font-size: 10.5px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--gg-on-ink-faint);
}

.gg-flow-stages[b-unx1bo4cf6] {
    margin-top: 22px;
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 12px;
    letter-spacing: 0.12em;
    color: var(--gg-on-ink-mute);
}
.gg-flow-stages .signal[b-unx1bo4cf6] { color: var(--gg-signal); }

/* ---------- Le trait et ses points ---------- */
.gg-flow-track[b-unx1bo4cf6] {
    position: relative;
    height: 2px;
    background: var(--gg-ink-line);
    margin: 18px 0;
}

.gg-flow-node[b-unx1bo4cf6] {
    position: absolute;
    border-radius: 50%;
    background: var(--gg-blue);
}
.gg-flow-node.start[b-unx1bo4cf6] { left: 0;   top: -4px; width: 10px; height: 10px; }
.gg-flow-node.mid[b-unx1bo4cf6]   { left: 50%; top: -4px; width: 10px; height: 10px; transform: translateX(-50%); }
/* Le point de sortie est orange et légèrement plus gros : c'est la
   décision, la fin du parcours — et le point du logotype. */
.gg-flow-node.end[b-unx1bo4cf6]   { right: 0;  top: -5px; width: 12px; height: 12px; background: var(--gg-signal); }

/* Les trois particules parcourent le trait en boucle décalée. Animation
   neutralisée par la règle prefers-reduced-motion de app.css. */
.gg-flow-dot[b-unx1bo4cf6] {
    position: absolute;
    top: -3px;
    left: 0;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--gg-signal);
    animation: gg-flow 3.6s linear infinite;
}

/* ---------- Les trois colonnes ---------- */
.gg-flow-cols[b-unx1bo4cf6] {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 12px;
}

.gg-flow-col[b-unx1bo4cf6] {
    border: var(--gg-hairline) solid var(--gg-ink-line);
    border-radius: var(--gg-radius);
    padding: 12px;
    font-family: var(--gg-mono);
    font-size: 11px;
    line-height: 1.7;
    color: var(--gg-on-ink-soft);
    display: flex;
    flex-direction: column;
}
.gg-flow-col.signal[b-unx1bo4cf6] {
    border-color: rgba(255, 91, 38, 0.45);
    background: rgba(255, 91, 38, 0.07);
    color: var(--gg-signal-soft);
}

/* ---------- Les trois mesures ---------- */
.gg-flow-metrics[b-unx1bo4cf6] {
    border-top: var(--gg-hairline) solid var(--gg-ink-line);
    margin-top: 18px;
    padding-top: 14px;
    display: flex;
    flex-direction: column;
    gap: 8px;
    font-family: var(--gg-mono);
    font-size: 11px;
    color: #7F8AA1;
}
.gg-flow-metrics > div[b-unx1bo4cf6] {
    display: flex;
    justify-content: space-between;
    gap: 16px;
}
.gg-flow-metrics .value[b-unx1bo4cf6] { color: var(--gg-on-ink); text-align: right; }
.gg-flow-metrics .value.signal[b-unx1bo4cf6] { color: var(--gg-signal); }

@media (max-width: 1000px) {
    .gg-hero-inner[b-unx1bo4cf6] {
        grid-template-columns: 1fr;
        gap: 40px;
        padding-top: 48px;
        padding-bottom: 56px;
    }
    .gg-hero-sub[b-unx1bo4cf6] { font-size: 17px; }
    .gg-hero-ctas .gg-btn[b-unx1bo4cf6] { flex: 1 1 auto; }
    .gg-hero-meta[b-unx1bo4cf6] { gap: 16px; margin-top: 32px; }
}

@media (max-width: 560px) {
    /* Les colonnes du flux passent en pile : trois colonnes de noms
       d'outils deviennent illisibles sous 560 px. */
    .gg-flow-cols[b-unx1bo4cf6] { grid-template-columns: 1fr; }
    .gg-flow-stages[b-unx1bo4cf6] { grid-template-columns: 1fr; gap: 4px; }
    .gg-hero-ctas .gg-btn[b-unx1bo4cf6] { flex: 1 1 100%; }
}
/* /Components/Sections/Home/HomeCtaSection.razor.rz.scp.css */
/* Bande d'appel à l'action — aplat orange pleine largeur.
   Seul emploi du signal en fond sur tout le site : il clôt la page, et
   n'entre en concurrence avec rien d'autre. */
.gg-home-cta[b-wtnjw5glqq] {
    background: var(--gg-signal);
    color: var(--gg-white);
}

.gg-home-cta-inner[b-wtnjw5glqq] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 40px;
    flex-wrap: wrap;
    padding-top: 80px;
    padding-bottom: 80px;
}

.gg-home-cta-title[b-wtnjw5glqq] {
    color: var(--gg-white);
    margin: 0;
    max-width: 760px;
    line-height: 1.08;
}

.gg-home-cta-note[b-wtnjw5glqq] {
    font-family: var(--gg-mono);
    font-size: 13px;
    letter-spacing: 0.06em;
    margin: 18px 0 0;
    /* Le blanc pur serait aussi appuyé que le titre : on l'atténue sans
       descendre sous le contraste lisible sur l'orange. */
    opacity: 0.9;
}

.gg-home-cta-actions[b-wtnjw5glqq] {
    display: flex;
    flex-direction: column;
    gap: 12px;
    flex: none;
}
.gg-home-cta-actions .gg-btn[b-wtnjw5glqq] { padding: 18px 28px; }

/* Sur orange, le contour clair doit rester blanc au survol : le turquoise
   du variant par défaut n'a pas de contraste ici. */
.gg-home-cta-actions .gg-btn-outline-light[b-wtnjw5glqq] {
    border-color: rgba(255, 255, 255, 0.6);
}
.gg-home-cta-actions .gg-btn-outline-light:hover[b-wtnjw5glqq] {
    background: var(--gg-white);
    border-color: var(--gg-white);
    color: var(--gg-signal);
}

@media (max-width: 900px) {
    .gg-home-cta-inner[b-wtnjw5glqq] {
        padding-top: 52px;
        padding-bottom: 52px;
        gap: 28px;
    }
    .gg-home-cta-actions[b-wtnjw5glqq] { width: 100%; }
    .gg-home-cta-actions .gg-btn[b-wtnjw5glqq] { width: 100%; }
}
/* /Components/Sections/Home/IndustriesTeaserSection.razor.rz.scp.css */
/* Secteurs — bande d'aiguillage. Ton papier secondaire : elle s'intercale
   entre « Notre approche » (papier) et « Réalisations » (encre) sans
   fusionner visuellement avec l'une ni l'autre. */
.gg-ind-teaser[b-10qthzd8r2] {
    background: var(--gg-paper-2);
    border-top: var(--gg-hairline) solid var(--gg-line);
}

.gg-ind-teaser-lead[b-10qthzd8r2] {
    font-size: 18px;
    line-height: 1.6;
    color: var(--gg-muted);
    max-width: 52em;
    margin: 22px 0 0;
}

/* Les huit secteurs se lisent d'un coup d'œil : la liste perd ses puces
   et sa gouttière, seules les étiquettes portent la structure. */
.gg-ind-teaser-list[b-10qthzd8r2] {
    list-style: none;
    padding: 0;
    margin: 30px 0 0;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.gg-ind-teaser-list li[b-10qthzd8r2] {
    display: flex;
}

@media (max-width: 600px) {
    .gg-ind-teaser-lead[b-10qthzd8r2] { font-size: 16px; }
}
/* /Components/Sections/Home/OurApproachSection.razor.rz.scp.css */
/* Notre approche — cinq colonnes, filet et pastille en tête de chacune. */
.gg-approach[b-ipw0kef69m] {
    background: var(--gg-paper);
    border-top: var(--gg-hairline) solid var(--gg-line);
}

.gg-approach-title[b-ipw0kef69m] { margin: 12px 0 40px; }

.gg-approach-grid[b-ipw0kef69m] {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 0;
    list-style: none;
    padding: 0;
    margin: 0;
}

.gg-step[b-ipw0kef69m] {
    position: relative;
    border-top: var(--gg-rule) solid var(--gg-blue);
    padding: 18px 24px 8px 0;
}

/* La pastille chevauche le filet : elle marque le jalon, pas le début du
   texte. */
.gg-step-dot[b-ipw0kef69m] {
    position: absolute;
    top: -6px;
    left: 0;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--gg-blue);
}

.gg-step-num[b-ipw0kef69m] {
    font-family: var(--gg-mono);
    font-size: 13px;
    letter-spacing: 0.1em;
    color: var(--gg-blue);
}

.gg-step-title[b-ipw0kef69m] {
    font-family: var(--gg-display);
    font-size: 20px;
    font-weight: 600;
    line-height: 1.2;
    margin: 8px 0 0;
}

.gg-step-desc[b-ipw0kef69m] {
    font-size: 14.5px;
    line-height: 1.55;
    color: var(--gg-muted);
    margin: 8px 0 0;
}

/* ---------- L'étape signature ----------
   Filet, pastille et numéro passent à l'orange, avec un dégradé très
   ténu pour asseoir la colonne sans l'encadrer. */
.gg-step.signature[b-ipw0kef69m] {
    border-top-color: var(--gg-signal);
    background: linear-gradient(180deg, rgba(255, 91, 38, 0.07), rgba(255, 91, 38, 0));
    padding-left: 16px;
    margin-left: -16px;
}
.gg-step.signature .gg-step-dot[b-ipw0kef69m] {
    background: var(--gg-signal);
    top: -7px;
    left: 16px;
    width: 12px;
    height: 12px;
}
.gg-step.signature .gg-step-num[b-ipw0kef69m] { color: var(--gg-signal); }

@media (max-width: 1000px) {
    .gg-approach-grid[b-ipw0kef69m] { grid-template-columns: repeat(2, 1fr); gap: 28px 24px; }
}

@media (max-width: 600px) {
    .gg-approach-grid[b-ipw0kef69m] { grid-template-columns: 1fr; gap: 24px; }
    .gg-step[b-ipw0kef69m] { padding-right: 0; }
}
/* /Components/Sections/Home/ProofSection.razor.rz.scp.css */
/* Preuve — papier alterné : la section se détache de la grille de
   services qui la précède sans changer de famille de fond. */
.gg-proof[b-b3a753ykfh] {
    background: var(--gg-paper-2);
    border-top: var(--gg-hairline) solid var(--gg-line);
}

.gg-proof-grid[b-b3a753ykfh] {
    display: grid;
    grid-template-columns: 340px 1fr;
    gap: 56px;
}

.gg-proof-title[b-b3a753ykfh] { margin: 12px 0 16px; }

.gg-proof-lead[b-b3a753ykfh] {
    font-size: 16px;
    line-height: 1.6;
    color: var(--gg-muted);
    margin: 0;
}

.gg-proof-body[b-b3a753ykfh] {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

/* ---------- Le noyau ---------- */
.gg-proof-core[b-b3a753ykfh] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
}

/* Contour encre plein : c'est ce qui distingue le noyau des étiquettes
   d'écosystème, à contour clair. */
.gg-core-card[b-b3a753ykfh] {
    background: var(--gg-paper);
    border: var(--gg-hairline) solid var(--gg-ink);
    border-radius: var(--gg-radius);
    padding: 24px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.gg-core-mark[b-b3a753ykfh] {
    width: 34px;
    height: 34px;
    background: var(--gg-blue);
    display: block;
    border-radius: var(--gg-radius);
}

.gg-core-name[b-b3a753ykfh] {
    font-family: var(--gg-display);
    font-size: 21px;
    font-weight: 600;
    letter-spacing: -0.02em;
    line-height: 1.2;
}

.gg-core-desc[b-b3a753ykfh] {
    font-size: 14px;
    color: var(--gg-muted);
    line-height: 1.5;
    margin: 0;
}

.gg-core-label[b-b3a753ykfh] {
    font-family: var(--gg-mono);
    font-size: 11px;
    letter-spacing: 0.08em;
    color: var(--gg-blue);
    margin-top: auto;
}

/* ---------- L'écosystème ---------- */
.gg-proof-eco[b-b3a753ykfh] {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

/* ---------- Les trois preuves chiffrées ---------- */
.gg-proof-stats[b-b3a753ykfh] { grid-template-columns: repeat(3, 1fr); }

.gg-stat[b-b3a753ykfh] {
    background: var(--gg-paper-2);
    padding: 20px;
}

.gg-stat-value[b-b3a753ykfh] {
    font-family: var(--gg-display);
    font-size: 30px;
    font-weight: 600;
    letter-spacing: -0.02em;
    line-height: 1.1;
    margin: 0;
}

.gg-stat-label[b-b3a753ykfh] {
    font-size: 13.5px;
    line-height: 1.45;
    color: var(--gg-muted);
    margin: 6px 0 0;
}

@media (max-width: 1000px) {
    .gg-proof-grid[b-b3a753ykfh] { grid-template-columns: 1fr; gap: 32px; }
}

@media (max-width: 760px) {
    .gg-proof-core[b-b3a753ykfh] { grid-template-columns: 1fr; }
    .gg-proof-stats[b-b3a753ykfh] { grid-template-columns: 1fr; }
}
/* /Components/Sections/Home/ServicesSection.razor.rz.scp.css */
/* Services — grille à filet sur papier. */
.gg-services[b-imonzday39] { background: var(--gg-paper); }

/* En-tête de section : titre à gauche, lien d'index à droite, posés sur
   un filet encre — le motif d'ouverture de section du système. */
.gg-sec-head[b-imonzday39] {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 24px;
    flex-wrap: wrap;
    border-bottom: var(--gg-hairline) solid var(--gg-ink);
    padding-bottom: 20px;
    margin-bottom: 1px;
}

.gg-sec-title[b-imonzday39] { margin-top: 12px; }

.gg-services-grid[b-imonzday39] { grid-template-columns: repeat(3, 1fr); }

/* ---------- Carte de service ---------- */
.gg-service-card[b-imonzday39] {
    background: var(--gg-paper);
    padding: 30px;
    color: var(--gg-ink);
    display: flex;
    flex-direction: column;
    gap: 12px;
    min-height: 230px;
    transition: background-color .15s ease;
}
.gg-service-card:hover[b-imonzday39] { background: var(--gg-white); color: var(--gg-ink); }

.gg-service-top[b-imonzday39] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
}

.gg-service-num[b-imonzday39] {
    font-family: var(--gg-mono);
    font-size: 11px;
    letter-spacing: 0.1em;
    color: var(--gg-muted-2);
}

.gg-service-dot[b-imonzday39] {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--gg-blue);
    flex: none;
}
.gg-service-card:hover .gg-service-dot[b-imonzday39] { background: var(--gg-signal); }

/* margin-top:auto pousse le titre en bas du bloc : les cinq cartes
   alignent leur titre, quelle que soit la longueur de l'accroche. */
.gg-service-name[b-imonzday39] {
    font-family: var(--gg-display);
    font-size: 25px;
    font-weight: 600;
    letter-spacing: -0.02em;
    line-height: 1.15;
    margin-top: auto;
}

.gg-service-desc[b-imonzday39] {
    font-size: 15.5px;
    line-height: 1.55;
    color: var(--gg-muted);
    margin: 0;
}

.gg-service-more[b-imonzday39] {
    font-family: var(--gg-mono);
    font-size: 11.5px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--gg-blue);
}
.gg-service-card:hover .gg-service-more[b-imonzday39] { color: var(--gg-signal); }

/* ---------- Tuile signature ---------- */
.gg-service-signature[b-imonzday39] {
    background: var(--gg-ink);
    color: var(--gg-on-ink);
    padding: 30px;
    display: flex;
    flex-direction: column;
    gap: 14px;
    justify-content: space-between;
    min-height: 230px;
}

.gg-signature-text[b-imonzday39] {
    font-family: var(--gg-display);
    font-size: 23px;
    font-weight: 500;
    letter-spacing: -0.02em;
    line-height: 1.25;
    margin: 0;
}

.gg-signature-step[b-imonzday39] {
    font-family: var(--gg-mono);
    font-size: 11.5px;
    color: var(--gg-on-ink-mute);
    margin: 0;
}

@media (max-width: 1000px) {
    .gg-services-grid[b-imonzday39] { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 680px) {
    .gg-services-grid[b-imonzday39] { grid-template-columns: 1fr; }
    .gg-service-card[b-imonzday39], .gg-service-signature[b-imonzday39] { min-height: 0; padding: 24px 22px; }
    /* Sur une seule colonne, le titre n'a plus de voisin à aligner. */
    .gg-service-name[b-imonzday39] { margin-top: 0; }
}
/* /Components/Sections/SolutionPageView.razor.rz.scp.css */
/* Gabarit des pages de solution — maquette écran 03.
   Le rythme alterne volontairement les fonds et les densités : le PRD
   §5.2 reproche au gabarit d'origine d'« enchaîner 8 sections de grilles
   similaires ». */

/* ---------- 1. Bandeau ---------- */
.gg-sp-hero[b-1kpnqsx5f7] {
    background: var(--gg-ink);
    color: var(--gg-on-ink);
}

.gg-sp-hero-inner[b-1kpnqsx5f7] {
    padding-top: 44px;
    padding-bottom: 80px;
}

.gg-crumb[b-1kpnqsx5f7] {
    font-family: var(--gg-mono);
    font-size: 12px;
    letter-spacing: 0.06em;
    color: var(--gg-on-ink-mute);
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}
.gg-crumb a[b-1kpnqsx5f7] { color: var(--gg-on-ink-mute); }
.gg-crumb a:hover[b-1kpnqsx5f7] { color: var(--gg-signal); }
.gg-crumb span[aria-hidden][b-1kpnqsx5f7] { color: var(--gg-on-ink-dim); }
.gg-crumb .current[b-1kpnqsx5f7] { color: var(--gg-on-ink); }

.gg-sp-hero-grid[b-1kpnqsx5f7] {
    display: grid;
    grid-template-columns: 1.2fr 0.8fr;
    gap: 56px;
    margin-top: 36px;
    align-items: end;
}

.gg-sp-title[b-1kpnqsx5f7] { color: var(--gg-white); margin: 0; }

.gg-sp-lead[b-1kpnqsx5f7] {
    font-size: 19px;
    line-height: 1.55;
    color: var(--gg-on-ink-body);
    max-width: 620px;
    margin: 22px 0 0;
}

.gg-sp-ctas[b-1kpnqsx5f7] { display: flex; gap: 14px; margin-top: 32px; flex-wrap: wrap; }

/* Encart chiffré : filet vertical, comme une marge annotée. */
.gg-sp-stats[b-1kpnqsx5f7] {
    border-left: var(--gg-hairline) solid var(--gg-on-ink-line);
    padding-left: 32px;
    display: flex;
    flex-direction: column;
    gap: 16px;
}
.gg-sp-stat-label[b-1kpnqsx5f7] {
    display: block;
    font-family: var(--gg-mono);
    font-size: 12.5px;
    color: var(--gg-on-ink-mute);
}
.gg-sp-stat-value[b-1kpnqsx5f7] {
    display: block;
    font-family: var(--gg-display);
    font-size: 28px;
    font-weight: 600;
    letter-spacing: -0.02em;
    color: var(--gg-on-ink);
    margin-top: 4px;
}

/* ---------- 2. Défis ⇄ Livrables ----------
   La mise en opposition demandée par le PRD §5.2 : deux moitiés
   contiguës, l'une sur papier, l'autre sur encre. */
.gg-sp-versus[b-1kpnqsx5f7] {
    display: grid;
    grid-template-columns: 1fr 1fr;
}

.gg-sp-problem[b-1kpnqsx5f7] {
    background: var(--gg-paper-2);
    border-right: var(--gg-hairline) solid var(--gg-line-strong);
    display: flex;
    justify-content: flex-end;
}
.gg-sp-answer[b-1kpnqsx5f7] {
    background: var(--gg-ink);
    color: var(--gg-on-ink);
}

/* Chaque moitié aligne son contenu sur la colonne centrale du site :
   la demi-largeur du conteneur, marge comprise. */
.gg-sp-half[b-1kpnqsx5f7] {
    width: 100%;
    max-width: calc(var(--gg-max) / 2);
    padding: 72px var(--gg-margin);
}
.gg-sp-problem .gg-sp-half[b-1kpnqsx5f7] { padding-right: 48px; }
.gg-sp-answer .gg-sp-half[b-1kpnqsx5f7] { padding-left: 48px; }

.gg-sp-half-title[b-1kpnqsx5f7] { margin: 12px 0 28px; }

/* Le surtitre du problème emprunte le rouge d'erreur : c'est le seul
   endroit du site où il sert hors formulaire, et il oppose visuellement
   la colonne au signal orange d'en face. */
.gg-kicker.problem[b-1kpnqsx5f7] { color: var(--gg-error); }

.gg-sp-challenge[b-1kpnqsx5f7] {
    display: flex;
    gap: 16px;
    padding: 20px 0;
    border-top: var(--gg-hairline) solid var(--gg-line-strong);
}
.gg-sp-challenges .gg-sp-challenge:last-child[b-1kpnqsx5f7] {
    border-bottom: var(--gg-hairline) solid var(--gg-line-strong);
}
.gg-sp-challenge-num[b-1kpnqsx5f7] {
    font-family: var(--gg-mono);
    font-size: 11.5px;
    color: var(--gg-error);
    padding-top: 4px;
    flex: none;
}
.gg-sp-challenge-title[b-1kpnqsx5f7] {
    font-family: var(--gg-display);
    font-size: 19px;
    font-weight: 600;
    line-height: 1.25;
}
.gg-sp-challenge p[b-1kpnqsx5f7] {
    font-size: 15px;
    line-height: 1.55;
    color: var(--gg-muted);
    margin: 5px 0 0;
}

.gg-sp-deliverables[b-1kpnqsx5f7] { display: flex; flex-direction: column; gap: 16px; }

.gg-sp-deliverable[b-1kpnqsx5f7] {
    border: var(--gg-hairline) solid rgba(246, 245, 242, 0.18);
    background: var(--gg-ink-3);
    border-radius: var(--gg-radius);
    padding: 24px;
}
.gg-sp-deliverable-head[b-1kpnqsx5f7] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 16px;
}
.gg-sp-deliverable-head h3[b-1kpnqsx5f7] {
    font-family: var(--gg-display);
    font-size: 22px;
    font-weight: 600;
    line-height: 1.2;
}
.gg-sp-deliverable-dot[b-1kpnqsx5f7] {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--gg-signal);
    flex: none;
    margin-top: 8px;
}
.gg-sp-deliverable p[b-1kpnqsx5f7] {
    font-size: 15px;
    line-height: 1.6;
    color: var(--gg-on-ink-body);
    margin: 8px 0 0;
}

/* ---------- 3. Capacités ---------- */
.gg-sp-caps[b-1kpnqsx5f7] { background: var(--gg-paper); }

.gg-sp-caps-count[b-1kpnqsx5f7] {
    font-family: var(--gg-mono);
    font-size: 11.5px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--gg-muted-2);
}

.gg-sp-caps-grid[b-1kpnqsx5f7] { grid-template-columns: repeat(4, 1fr); }

.gg-sp-cap[b-1kpnqsx5f7] { background: var(--gg-paper); padding: 22px; }
.gg-sp-cap-num[b-1kpnqsx5f7] { font-family: var(--gg-mono); font-size: 11px; color: var(--gg-blue); }
.gg-sp-cap-title[b-1kpnqsx5f7] { font-size: 17px; font-weight: 600; line-height: 1.3; margin-top: 8px; }

/* Tuile de clôture, en bleu pâle : elle ferme la grille au lieu de
   laisser une cellule vide en fin de rangée. */
.gg-sp-cap-note[b-1kpnqsx5f7] {
    background: var(--gg-blue-pale);
    padding: 22px;
    display: flex;
    align-items: flex-end;
    font-family: var(--gg-mono);
    font-size: 11.5px;
    line-height: 1.6;
    color: var(--gg-blue-deep);
}

/* ---------- 4. Technologies ---------- */
.gg-sp-tech[b-1kpnqsx5f7] {
    background: var(--gg-paper-2);
    border-top: var(--gg-hairline) solid var(--gg-line);
}
.gg-sp-tech-title[b-1kpnqsx5f7] { margin: 0 0 28px; }

.gg-sp-tech-grid[b-1kpnqsx5f7] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
}

.gg-sp-tech-card[b-1kpnqsx5f7] {
    background: var(--gg-paper);
    border: var(--gg-hairline) solid var(--gg-line-strong);
    border-radius: var(--gg-radius);
    padding: 24px;
}
.gg-sp-tech-card.core[b-1kpnqsx5f7] { border-color: var(--gg-ink); }

.gg-sp-tech-mark[b-1kpnqsx5f7] {
    width: 30px;
    height: 30px;
    background: var(--gg-muted-2);
    display: block;
    border-radius: var(--gg-radius);
}
.gg-sp-tech-mark.core[b-1kpnqsx5f7] { background: var(--gg-blue); }

.gg-sp-tech-name[b-1kpnqsx5f7] {
    font-family: var(--gg-display);
    font-size: 20px;
    font-weight: 600;
    margin-top: 14px;
}
.gg-sp-tech-card p[b-1kpnqsx5f7] {
    font-size: 14.5px;
    line-height: 1.55;
    color: var(--gg-muted);
    margin: 8px 0 0;
}

/* ---------- 5. Bénéfices ---------- */
.gg-sp-benefits[b-1kpnqsx5f7] {
    background: var(--gg-paper);
    border-top: var(--gg-hairline) solid var(--gg-line);
}
.gg-sp-benefits-title[b-1kpnqsx5f7] { margin: 0 0 28px; }

.gg-sp-benefits-grid[b-1kpnqsx5f7] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0 56px;
}

.gg-sp-benefit[b-1kpnqsx5f7] {
    padding: 20px 0;
    border-top: var(--gg-hairline) solid var(--gg-line);
}
.gg-sp-benefit p[b-1kpnqsx5f7] {
    font-size: 16.5px;
    line-height: 1.55;
    color: var(--gg-ink-strong);
    margin: 0;
}

/* ---------- 6. Appel à l'action intermédiaire ---------- */
.gg-sp-cta[b-1kpnqsx5f7] { background: var(--gg-blue); color: var(--gg-white); }

.gg-sp-cta-inner[b-1kpnqsx5f7] {
    padding-top: 56px;
    padding-bottom: 56px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 40px;
    flex-wrap: wrap;
}

.gg-sp-cta-title[b-1kpnqsx5f7] {
    font-family: var(--gg-display);
    font-size: clamp(24px, 2.4vw, 32px);
    font-weight: 600;
    letter-spacing: -0.025em;
    line-height: 1.15;
    max-width: 700px;
    margin: 0;
}

.gg-sp-cta-actions[b-1kpnqsx5f7] { display: flex; gap: 12px; flex: none; flex-wrap: wrap; }
.gg-sp-cta-actions .gg-btn-outline-light[b-1kpnqsx5f7] { border-color: rgba(255, 255, 255, 0.6); }
.gg-sp-cta-actions .gg-btn-outline-light:hover[b-1kpnqsx5f7] {
    background: var(--gg-white);
    border-color: var(--gg-white);
    color: var(--gg-blue);
}

/* ---------- 7. FAQ ---------- */
.gg-sp-faq[b-1kpnqsx5f7] { background: var(--gg-paper); }

.gg-sp-faq-grid[b-1kpnqsx5f7] {
    display: grid;
    grid-template-columns: 340px 1fr;
    gap: 56px;
}
.gg-sp-faq-title[b-1kpnqsx5f7] { margin: 12px 0 0; }

.gg-sp-faq-list[b-1kpnqsx5f7] { border-top: var(--gg-hairline) solid var(--gg-ink); }

.gg-faq[b-1kpnqsx5f7] { border-bottom: var(--gg-hairline) solid var(--gg-line); }

.gg-faq summary[b-1kpnqsx5f7] {
    display: flex;
    justify-content: space-between;
    gap: 24px;
    padding: 22px 0;
    cursor: pointer;
    align-items: baseline;
    font-family: var(--gg-display);
    font-size: 20px;
    font-weight: 500;
    letter-spacing: -0.015em;
    line-height: 1.3;
    /* Le marqueur natif est remplacé par le signe ci-dessous. */
    list-style: none;
}
.gg-faq summary[b-1kpnqsx5f7]::-webkit-details-marker { display: none; }
.gg-faq summary:hover[b-1kpnqsx5f7] { color: var(--gg-blue); }

/* « + » fermé, « − » ouvert, en orange : le signe est produit en CSS,
   il n'y a donc aucun état à synchroniser en JavaScript. */
.gg-faq-sign[b-1kpnqsx5f7] {
    font-family: var(--gg-mono);
    font-size: 18px;
    color: var(--gg-muted-2);
    flex: none;
}
.gg-faq-sign[b-1kpnqsx5f7]::before { content: "+"; }
.gg-faq[open] .gg-faq-sign[b-1kpnqsx5f7] { color: var(--gg-signal); }
.gg-faq[open] .gg-faq-sign[b-1kpnqsx5f7]::before { content: "\2212"; }

.gg-faq p[b-1kpnqsx5f7] {
    margin: 0;
    padding: 0 120px 26px 0;
    font-size: 16.5px;
    line-height: 1.6;
    color: var(--gg-muted);
}

/* ---------- 8. Autres solutions ---------- */
.gg-sp-others[b-1kpnqsx5f7] {
    background: var(--gg-paper);
    border-top: var(--gg-hairline) solid var(--gg-line);
}
.gg-sp-others-inner[b-1kpnqsx5f7] {
    padding-top: 44px;
    padding-bottom: 44px;
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    align-items: center;
}
.gg-sp-others-label[b-1kpnqsx5f7] {
    font-family: var(--gg-mono);
    font-size: 12.5px;
    color: var(--gg-placeholder);
    margin-right: 8px;
}

/* ---------- Adaptations ---------- */
@media (max-width: 1000px) {
    .gg-sp-hero-grid[b-1kpnqsx5f7] { grid-template-columns: 1fr; gap: 32px; }
    .gg-sp-stats[b-1kpnqsx5f7] {
        border-left: none;
        border-top: var(--gg-hairline) solid var(--gg-on-ink-line);
        padding-left: 0;
        padding-top: 24px;
        flex-direction: row;
        flex-wrap: wrap;
        gap: 28px;
    }
    /* Les deux moitiés s'empilent : le vis-à-vis n'a plus de sens sur une
       colonne, mais l'opposition de fonds la porte encore. */
    .gg-sp-versus[b-1kpnqsx5f7] { grid-template-columns: 1fr; }
    .gg-sp-problem[b-1kpnqsx5f7] { border-right: none; justify-content: flex-start; }
    .gg-sp-half[b-1kpnqsx5f7] { max-width: none; padding: 52px var(--gg-margin-mobile); }
    .gg-sp-problem .gg-sp-half[b-1kpnqsx5f7],
    .gg-sp-answer .gg-sp-half[b-1kpnqsx5f7] { padding-left: var(--gg-margin-mobile); padding-right: var(--gg-margin-mobile); }

    .gg-sp-caps-grid[b-1kpnqsx5f7] { grid-template-columns: repeat(2, 1fr); }
    .gg-sp-tech-grid[b-1kpnqsx5f7] { grid-template-columns: repeat(2, 1fr); }
    .gg-sp-benefits-grid[b-1kpnqsx5f7] { grid-template-columns: 1fr; gap: 0; }
    .gg-sp-faq-grid[b-1kpnqsx5f7] { grid-template-columns: 1fr; gap: 28px; }
    .gg-faq p[b-1kpnqsx5f7] { padding-right: 0; }
}

@media (max-width: 620px) {
    .gg-sp-caps-grid[b-1kpnqsx5f7], .gg-sp-tech-grid[b-1kpnqsx5f7] { grid-template-columns: 1fr; }
    .gg-sp-hero-inner[b-1kpnqsx5f7] { padding-bottom: 52px; }
    .gg-faq summary[b-1kpnqsx5f7] { font-size: 18px; }
}
