/* ═══════════════════════════════════════════════════════════════
   IDENTITÉ DE MARQUE — CARRÉ ET LOGOTYPE
   Feuille partagée par les SIX portails.
   Extraite de css/nexus-responsive-nav.css le 2026-08-18.

   ── POURQUOI UN FICHIER SÉPARÉ ──────────────────────────────────
   Ces règles vivaient dans css/nexus-responsive-nav.css, chargée par
   cinq portails. nexus-skipper-ai.html ne la charge pas et ne peut
   pas : elle porte tout un chrome — bottom bar, drawer, padding de
   navbar, géométrie de [data-nexus-skipper] — qui entrerait en
   collision avec css/skipper-ai-nav.css.

   Extraire le strict nécessaire coûte un fichier ; charger la feuille
   entière coûterait un portail. L'identité de marque n'a rien à voir
   avec la navigation responsive : la séparation était due.

   ── CE QUI EST ICI, ET RIEN D'AUTRE ─────────────────────────────
   Les tokens d'échelle, et les cinq règles qui les consomment. Toute
   règle qui n'est pas la géométrie du carré ou du logotype appartient
   à une autre feuille. Ne pas laisser ce fichier grossir.

   ── ORDRE DE CHARGEMENT ─────────────────────────────────────────
   Indifférent depuis eecefe2. Les dernières concurrences à
   spécificité égale — le repli 56px de sphere, les `w-10 h-10` de
   myvessel et smart-research, le `w-12 h-12` de skipper-ai — ont été
   supprimées : plus aucune égalité à trancher par l'ordre des <link>.
   Ne pas réintroduire de règle de taille dans une feuille de portail,
   ce serait recréer la dépendance.

   ── UN PORTAIL QUI ADOPTE LE CROCHET DOIT CHARGER CETTE FEUILLE ──
   Les portails ne déclarent plus de taille de repli dans leur markup.
   Sans cette feuille, le carré de marque n'a AUCUNE dimension et
   s'effondre à la taille de son contenu. Assumé, pas oublié : une
   taille de repli serait une deuxième source.

   ── GLISSEMENT DE SENS DE `data-nexus-navbar` ───────────────────
   Le sélecteur public s'appuie sur `data-nexus-navbar`, dont le sens
   d'origine est « conteneur de navbar », pas « portail public ». Le
   recouvrement entre les deux était FORTUIT — les trois portails qui
   portaient ce crochet étaient exactement les trois portails publics.
   skipper-ai l'a rejoint le 2026-08-18, et le recouvrement tient
   toujours.

   Introduire un attribut de famille explicite toucherait le markup
   des cinq autres portails pour un gain de lisibilité seul : écarté
   aujourd'hui. À ROUVRIR si un portail public arrive sans conteneur
   de navbar identifiable, ou si un portail professionnel doit porter
   `data-nexus-navbar` pour une autre raison. Ce jour-là le
   recouvrement cesse, et il faudra un vrai marqueur de famille.
   ═══════════════════════════════════════════════════════════════ */

:root {
    /* ── ÉCHELLE DU CARRÉ DE MARQUE ──────────────────────────────────────
       DEUX FAMILLES, décidées le 2026-08-18 (voir NOTES.md) :

       PUBLIC — sphere, myvessel, smart-research, skipper-ai. L'utilisateur y
       découvre NEXUS, souvent sans le connaître : la marque doit s'imprimer.
       PROFESSIONNEL — PRO, BUSINESS. Outils ouverts dix fois par jour par
       quelqu'un qui connaît déjà NEXUS : la marque s'efface au profit du
       contenu.

       Les deux branches du sélecteur ≥768px recouvrent EXACTEMENT ces deux
       familles, sans crochet supplémentaire — voir le bloc de règles et la
       note sur le glissement de sens, en tête de feuille.

       SOURCE UNIQUE. La géométrie du carré n'est écrite nulle part ailleurs :
       ni en inline depuis la config, ni dans une feuille de portail. Un écart
       qui réapparaît est une surcharge réintroduite, pas une valeur à
       compenser ici.

       32px sous 768px est commun aux deux familles, et ce n'est PAS une
       dérivation des deux valeurs ci-dessus : c'est un PLANCHER. À 393px, ce
       qui borne le carré est la largeur du drawer, pas l'expression de
       marque. Ne pas « rétablir » une proportion ici.

       HORS de cette échelle, volontairement : les #sidebar-logo-container de
       PRO et BUSINESS, à 48px, qui relèvent de l'en-tête de sidebar et non de
       la navbar. */
    --nexus-brand-mark-size-public: 48px;
    --nexus-brand-mark-size-pro: 40px;
    --nexus-brand-mark-size-compact: 32px;

    /* ── LOGOTYPE : LA HAUTEUR EST MAÎTRESSE ─────────────────────────────
       La largeur est une CONSÉQUENCE du ratio du fichier, pas une décision.

       Avant le 2026-08-18 c'était l'inverse : sphere bornait à 200px de large
       et la hauteur en découlait, si bien que le rapport carré / logotype
       valait le quotient d'une borne héritée par le ratio du fichier — 0,675,
       que personne n'avait choisi. Changer de fichier changeait la
       composition sans qu'une ligne de code bouge.

       W / S = R_fichier × ratio. La TAILLE DU CARRÉ NE CHANGE PAS LA
       PROPORTION : seuls le ratio ci-dessous et le fichier la gouvernent.
       Monter le carré agrandit les deux objets ensemble.

       ── INVARIANT ────────────────────────────────────────────────────────
       SI LE GARDE-FOU DE LARGEUR CONTRAINT, LE FICHIER EST HORS
       SPÉCIFICATION. C'est un asset à refaire, PAS une géométrie à compenser
       ici. À 48px et 0,55 il se déclenche pour R > 7,58 ; l'asset en place au
       2026-08-18 est à 7,29 (2203×302) et passe dessous, en 192×26.

       Un asset ramassé à 4,7:1 rendrait 125×26 — même hauteur, largeur
       réduite de 35 %, sans une ligne de code. C'est la propriété qu'on
       achète en rendant la hauteur maîtresse.

       Le ratio 0,55 borne la BOÎTE du fichier, pas ses lettres. Il ne tient
       que si un nouvel asset conserve la même proportion de vide vertical.
       S'il la change, re-dériver : ratio = 0,55 × (f_ancien ÷ f_nouveau), où
       f est la hauteur de capitale divisée par la hauteur de boîte. */
    --nexus-brand-title-ratio: 0.55;
    --nexus-brand-title-max-width: 200px;
}

/* ═══════════════════════════════════════════════════════════════
   PALIER MOBILE — < 768px, COMMUN AUX DEUX FAMILLES
   ═══════════════════════════════════════════════════════════════ */
@media (max-width: 767px) {

    /* Crochet NU, donc il atteint aussi les #sidebar-logo-container de PRO
       et BUSINESS, alors dans le drawer — choix explicite, documenté dans
       les deux fichiers. C'est le seul palier où la sidebar suit la navbar. */
    [data-nexus-brand-mark] {
        width: var(--nexus-brand-mark-size-compact) !important;
        height: var(--nexus-brand-mark-size-compact) !important;
        min-width: var(--nexus-brand-mark-size-compact);
        font-size: 0.875rem !important;
        border-radius: 0.5rem;
        flex-shrink: 0;
    }

    /* Logotype au palier mobile — MÊME RATIO qu'au-dessus de 768px.
       32 × 0,55 = 17,6px de haut, 128px de large avec l'asset à 7,29.

       Ce palier n'avait AUCUN comportement déclaré avant le 2026-08-18 :
       sphere y gardait ses bornes inline 200×60, soit un logotype de 200px
       à côté d'un carré de 32px sur un écran de 393px. Laisser ce palier
       hors doctrine aurait reproduit l'accident qu'on venait de supprimer,
       à l'endroit le plus contraint.

       Crochet NU, comme le carré juste au-dessus : le palier mobile est
       commun à toutes les familles. Aucun portail hors du public ne porte
       de logotype image aujourd'hui ; le jour où l'un en pose un, il sera
       borné ici par défaut, ce qui est le bon sens de lecture. */
    [data-nexus-brand-title] img {
        max-height: calc(var(--nexus-brand-mark-size-compact) * var(--nexus-brand-title-ratio));
        max-width: var(--nexus-brand-title-max-width);
        width: auto;
        height: auto;
        object-fit: contain;
    }
}

/* ═══════════════════════════════════════════════════════════════
   ≥ 768px — VALEURS DE RÉFÉRENCE, DEUX FAMILLES

   Deux branches parce que les portails ne posent pas leur portée de
   navbar de la même façon, et qu'aucun ne peut être aligné sans
   changer un rendu :

     · sphere, myvessel, smart-research et skipper-ai portent
       `data-nexus-navbar` sur le conteneur de navbar, et n'ont qu'UN
       seul carré de marque ;
     · PRO et BUSINESS en ont DEUX — navbar et en-tête de sidebar — et
       ne peuvent pas recevoir `data-nexus-navbar` : il est consommé
       par css/nexus-responsive-nav.css (padding 1.5rem sous 768px) et
       leur `.mobile-header` est à `0 12px`. D'où
       `data-nexus-brand-scope`, posé en a9c1903.

   Les #sidebar-logo-container de PRO et BUSINESS ne sont visés par
   AUCUNE des deux branches. Leurs 48px sont garantis par le sélecteur,
   pas par une contre-règle ni par une vérification.

   Les deux branches sont à (0,2,0), et plus aucun concurrent ne les
   égale depuis eecefe2 — voir la note sur l'ordre de chargement en
   tête de feuille.
   ═══════════════════════════════════════════════════════════════ */
@media (min-width: 768px) {

    /* ── PUBLIC ─────────────────────────────────────────────────── */
    [data-nexus-navbar] [data-nexus-brand-mark] {
        width: var(--nexus-brand-mark-size-public);
        height: var(--nexus-brand-mark-size-public);
        min-width: var(--nexus-brand-mark-size-public);
        flex-shrink: 0;
    }

    /* ── PROFESSIONNEL — valeur inchangée depuis db04256 ─────────── */
    [data-nexus-brand-mark][data-nexus-brand-scope="navbar"] {
        width: var(--nexus-brand-mark-size-pro);
        height: var(--nexus-brand-mark-size-pro);
        min-width: var(--nexus-brand-mark-size-pro);
        flex-shrink: 0;
    }

    /* ── LOGOTYPE, PUBLIC UNIQUEMENT ─────────────────────────────────
       Hauteur dérivée du carré, largeur en garde-fou. PRO et BUSINESS
       n'ont pas de logotype image dans leur navbar : la règle ne les
       vise pas, et ne doit pas être élargie au crochet nu. */
    [data-nexus-navbar] [data-nexus-brand-title] img {
        max-height: calc(var(--nexus-brand-mark-size-public) * var(--nexus-brand-title-ratio));
        max-width: var(--nexus-brand-title-max-width);
        width: auto;
        height: auto;
        object-fit: contain;
    }
}
