/*
 * Palette de marque du Stade Montois — voir docs/charte-graphique.md
 * pour les règles d'usage (contraste, zones d'application, logo).
 * Ne jamais coder une couleur en dur ailleurs : passer par ces tokens.
 */
:root {
    --smo-yellow: #FFD203;
    --smo-yellow-dark: #E0B400; /* hover/active sur fond jaune */
    --smo-black: #231F20;
    --smo-gray: #818284;
    --smo-gray-light: #F2F2F2;
    --smo-white: #FFFFFF;

    --smo-bg: var(--smo-white);
    --smo-text: var(--smo-black);
    --smo-border: #E4E4E4;

    /*
     * Arrondis et ombres, configurables depuis /admin/apparence/templates
     * (App\Models\Template — clés rayon_cartes/ombre_cartes/rayon_boutons/
     * ombre_boutons). Valeurs par défaut = apparence actuelle du site, donc
     * aucun changement tant qu'aucun template n'est actif.
     */
    --smo-radius-card: 8px;
    --smo-shadow-card: 0 4px 14px rgba(0, 0, 0, 0.08);
    --smo-radius-btn: 4px;
    --smo-shadow-btn: none;

    /*
     * Fond de la classe .container, configurable depuis /admin/parametres
     * (§ "Apparence du site" — App\Models\Parametre, clé
     * apparence_couleur_fond_container). Transparent tant qu'aucune
     * valeur n'est enregistrée ; surchargée en inline dans <head> par
     * app/Views/layouts/main.php quand un administrateur en définit une.
     */
    --smo-container-bg: transparent;

    /*
     * Largeur des boutons image du menu (App\Models\MenuItem), configurable
     * depuis /admin/parametres (§ "Apparence du site" — clés
     * menu_image_largeur_desktop / menu_image_largeur_mobile). Valeurs de
     * secours ci-dessous ; toujours surchargées en inline dans <head> par
     * app/Views/layouts/main.php avec la valeur réellement enregistrée.
     */
    --smo-menu-img-width-desktop: 2.5rem;
    --smo-menu-img-width-mobile: 2.75rem;
}

* { box-sizing: border-box; }

/*
 * Accessibilité (RGAA) — utilitaires partagés site public + back-office
 * (admin.css réutilise ces mêmes classes, app.css étant toujours chargé en
 * premier dans les deux gabarits).
 */
.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.skip-link {
    position: absolute;
    top: -3rem;
    left: 0.5rem;
    z-index: 1000;
    padding: 0.6rem 1rem;
    background: var(--smo-black);
    color: var(--smo-white);
    border-radius: 0 0 6px 6px;
    text-decoration: none;
    transition: top 0.15s ease;
}

.skip-link:focus {
    top: 0;
}

body {
    margin: 0;
    font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
    background: var(--smo-bg);
    color: var(--smo-text);
    line-height: 1.5;
}

.container {
    max-width: 1080px;
    margin: 0 auto;
    padding: 0 1.25rem;
    background: var(--smo-container-bg);
}

/*
 * Le logo officiel (public/assets/img/logo-sm.png) a une encre NOIRE :
 * il ne doit jamais être posé directement sur un fond noir/foncé (voir
 * docs/charte-graphique.md). Le header public reste donc sur fond clair ;
 * un liseré jaune en pied de header apporte la touche de dynamisme.
 */
.site-header {
    background: var(--smo-white);
    color: var(--smo-black);
    border-bottom: 3px solid var(--smo-yellow);
}

.site-header .container {
    display: flex;
    align-items: center;
    justify-content: space-between;
    /* nowrap : le logo reste sur la même ligne que le menu (le menu, lui,
       peut passer à la ligne en interne s'il manque de place — voir
       nav ci-dessous — plutôt que de faire descendre tout le bloc menu
       sous le logo). */
    flex-wrap: nowrap;
    gap: 0.75rem;
    padding-top: 0.75rem;
    padding-bottom: 0.75rem;
}

.site-header .logo {
    display: flex;
    align-items: center;
    flex-shrink: 0; /* jamais compressé par le menu */
}

.site-header nav {
    /* Prend le reste de la largeur et laisse ses liens revenir à la
       ligne en interne (comme du texte) plutôt que de forcer tout le
       bloc menu sous le logo. */
    flex: 1 1 auto;
    min-width: 0;
    text-align: right;
}

/* Logo "SM" — cf. docs/charte-graphique.md pour les règles d'usage. */
.logo-sm {
    display: block;
    height: 2.5rem;
    width: auto;
}

/* Variante réduite (espaces contraints, ex. sidebar admin). */
.logo-sm--sm { height: 2rem; }

/*
 * Logo du header public : même largeur que les boutons image du menu
 * (--smo-menu-img-width-*, réglable depuis /admin/parametres), hauteur
 * automatique — proportions du logo (656×731) proches de celles des
 * boutons, il s'aligne donc visuellement sur eux.
 */
.site-header .logo-sm {
    width: var(--smo-menu-img-width-desktop);
    height: auto;
}

/*
 * Pastille claire pour poser le logo sur un fond noir/foncé (sidebar admin)
 * sans perdre son encre noire.
 */
.logo-chip {
    display: inline-flex;
    align-items: center;
    background: var(--smo-white);
    padding: 0.3rem 0.5rem;
    border-radius: 6px;
    line-height: 0;
}

.site-header nav a {
    color: var(--smo-black);
    text-decoration: none;
    margin-left: 1.25rem;
    font-weight: 500;
    border-bottom: 2px solid transparent;
    padding-bottom: 0.15rem;
}

.site-header nav a:hover,
.site-header nav a:focus-visible {
    border-bottom-color: var(--smo-yellow);
}

.site-header nav a[href^="/admin"] { margin-left: 1.75rem; opacity: 0.75; }

/* --- Sous-menu déroulant (menu principal administrable) ------------------ */
.nav-dropdown { position: relative; display: inline-block; }

.nav-dropdown-menu {
    display: none;
    position: absolute;
    top: 100%;
    left: 1.25rem;
    background: var(--smo-white);
    border: 1px solid var(--smo-border);
    border-radius: 6px;
    box-shadow: 0 6px 16px rgba(0, 0, 0, 0.1);
    padding: 0.4rem 0;
    min-width: 180px;
    z-index: 20;
}

.nav-dropdown:hover .nav-dropdown-menu,
.nav-dropdown:focus-within .nav-dropdown-menu {
    display: flex;
    flex-direction: column;
}

.nav-dropdown-menu a { margin: 0; padding: 0.4rem 0.9rem; border-bottom: none; white-space: nowrap; }
.nav-dropdown-menu a:hover { background: var(--smo-gray-light); }

/*
 * Éléments de menu en "bouton image" (App\Models\MenuItem, champ "image" +
 * affichage_desktop/affichage_mobile — voir menu_link() dans
 * app/helpers.php). Le libellé reste l'info-bulle au survol (title) et le
 * texte alternatif (alt) : jamais d'image sans équivalent texte.
 * Les images ne sont pas recadrées : largeur fixée (--smo-menu-img-width-*,
 * réglable depuis /admin/parametres — 40 px sur ordinateur et 44 px sur
 * smartphone par défaut, cible tactile confortable — recommandation
 * WCAG/Apple/Google), hauteur automatique pour conserver leurs proportions
 * d'origine (ex: 288×334).
 */
.menu-link--image {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-bottom: none;
    padding-bottom: 0;
    vertical-align: middle;
}

/*
 * Espacement réduit pour les liens image en version ordinateur (10px au lieu
 * des 20px par défaut de .site-header nav a) — sélecteur préfixé par
 * ".site-header nav a" pour garantir la priorité sur cette règle générale,
 * même raisonnement de spécificité qu'expliqué plus bas pour
 * .menu-link--desktop-only.
 */
.site-header nav a.menu-link--image.menu-link--desktop-only {
    margin-left: 0.625rem; /* 10px */
}

.menu-link-img {
    display: block;
    width: var(--smo-menu-img-width-desktop);
    height: auto;
    border-radius: 4px;
}

/*
 * Affichage réglable indépendamment par support (ordinateur / smartphone) :
 * quand les deux réglages d'un élément diffèrent, menu_link() génère deux
 * liens (un par support) et seul le CSS ci-dessous, selon la largeur
 * d'écran, décide lequel s'affiche — la détection de support n'étant pas
 * possible côté serveur au moment du rendu.
 *
 * Sélecteurs préfixés par "a" (élément + classe, spécificité 0,1,1) pour
 * que ce masquage l'emporte de façon certaine sur .menu-link--image
 * ci-dessus (classe seule, 0,1,0), quel que soit l'ordre des règles dans
 * la feuille de style — plutôt que de dépendre de l'ordre de déclaration
 * entre deux sélecteurs de même spécificité, fragile face à un futur
 * réagencement du fichier.
 */
a.menu-link--desktop-only,
a.menu-link--mobile-only { display: none; }

@media (min-width: 721px) {
    a.menu-link--desktop-only.menu-link--texte { display: inline; }
    a.menu-link--desktop-only.menu-link--image { display: inline-flex; }
}

@media (max-width: 720px) {
    a.menu-link--mobile-only.menu-link--texte { display: inline; }
    a.menu-link--mobile-only.menu-link--image { display: inline-flex; }

    .menu-link-img { width: var(--smo-menu-img-width-mobile); height: auto; }
    .site-header .logo-sm { width: var(--smo-menu-img-width-mobile); }
}

main.container { padding: 2rem 1.25rem; min-height: 50vh; }

.footer-nav { margin-top: 0.5rem; display: flex; gap: 1rem; flex-wrap: wrap; }
.footer-nav a { color: var(--smo-gray); font-size: 0.85rem; }
.footer-nav a:hover { color: var(--smo-white); }
.footer-nav--liens { padding-top: 0.5rem; border-top: 1px solid rgba(255,255,255,0.1); }

.site-footer {
    background: var(--smo-black);
    color: var(--smo-gray-light);
    border-top: none;
    padding: 1.5rem 0;
    font-size: 0.9rem;
}

.site-footer p { color: var(--smo-gray); margin: 0; }

.footer-infos { margin-bottom: 1rem; padding-bottom: 1rem; border-bottom: 1px solid rgba(255,255,255,0.1); }
.footer-infos-nom { color: var(--smo-white); font-weight: 700; margin: 0 0 0.35rem; }
.footer-infos-description { max-width: 640px; margin: 0 0 0.35rem; }
.footer-infos-contact { margin: 0; }
.footer-infos-contact a { color: var(--smo-gray-light); }
.footer-infos-contact a:hover { color: var(--smo-white); }

.alert {
    padding: 0.75rem 1.25rem;
    margin: 1rem auto 0;
    max-width: 1080px;
    border-radius: 4px;
}

.alert-error { background: #fdecea; color: #b3261e; border: 1px solid #f5c6c2; }
.alert-success { background: #eaf7ed; color: #1e7b34; border: 1px solid #c3e6cb; }

.auth-form, .error-page { max-width: 420px; margin: 0 auto; }

.auth-form form { display: flex; flex-direction: column; gap: 0.75rem; }

.auth-form label { font-weight: 600; }

.auth-form input {
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--smo-border);
    border-radius: 4px;
}

/* Bouton primaire (CTA) : fond jaune de marque, texte noir (contraste). */
.auth-form button, .admin-topbar button {
    background: var(--smo-yellow);
    color: var(--smo-black);
    border: none;
    font-weight: 600;
    padding: 0.6rem 1rem;
    border-radius: 4px;
    cursor: pointer;
    transition: background-color 0.15s ease;
}

.auth-form button:hover, .admin-topbar button:hover { background: var(--smo-yellow-dark); }

.checklist ul { padding-left: 1.25rem; }
.checklist code { background: #eee; padding: 0.1rem 0.35rem; border-radius: 3px; }

/* --- En-tête de page générique (annuaires, listes) ----------------------- */
.page-header { margin-bottom: 1.75rem; }
.page-header p { color: var(--smo-gray); }

.breadcrumb { color: var(--smo-gray); font-size: 0.85rem; margin-bottom: 1.25rem; }
.breadcrumb a { color: var(--smo-black); }

/* --- Annuaire des sections (grille de cartes) ---------------------------- */
.sections-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 1.25rem;
}

.section-card {
    display: block;
    background: var(--smo-white);
    border: 1px solid var(--smo-border);
    border-radius: var(--smo-radius-card);
    overflow: hidden;
    text-decoration: none;
    color: inherit;
    transition: box-shadow 0.15s ease, border-color 0.15s ease;
}

.section-card:hover, .section-card:focus-visible {
    border-color: var(--smo-yellow);
    box-shadow: var(--smo-shadow-card);
}

.section-card-img { width: 100%; height: 140px; object-fit: cover; display: block; }

.section-card-img--placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--smo-black);
    color: var(--smo-yellow);
    font-size: 2.5rem;
    font-weight: 700;
}

.section-card-body { padding: 1rem; }
.section-card-body h2 { margin: 0 0 0.4rem; font-size: 1.05rem; }
.section-card-body p { margin: 0; color: var(--smo-gray); font-size: 0.9rem; }

/* --- Fiche section --------------------------------------------------- */
.section-hero { margin-bottom: 1.5rem; }
.section-hero-img { width: 100%; max-height: 320px; object-fit: cover; border-radius: 8px; margin-bottom: 1rem; }

/* Nom de la section et icônes de réseaux sociaux sur la même ligne. */
.section-hero-title {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.75rem;
}
.section-hero-title h1 { margin: 0; }

.section-columns { display: grid; grid-template-columns: 2fr 1fr; gap: 2rem; align-items: start; }

.section-block {
    margin-bottom: 1.75rem;
    padding: 1.25rem 1.5rem;
    background: var(--smo-white);
    border: 1px solid var(--smo-border);
    border-radius: var(--smo-radius-card);
}
.section-block h2 { margin-top: 0; font-size: 1.15rem; border-bottom: 2px solid var(--smo-yellow); display: inline-block; padding-bottom: 0.2rem; }
.section-block > *:last-child { margin-bottom: 0; }

.section-infobox {
    background: var(--smo-gray-light);
    border: 1px solid var(--smo-border);
    border-radius: var(--smo-radius-card);
    padding: 1rem 1.25rem;
    margin-bottom: 1rem;
}

.section-infobox h3 { margin: 0 0 0.5rem; font-size: 0.95rem; }
.section-infobox p { margin: 0 0 0.4rem; font-size: 0.9rem; }

/*
 * Contenu produit par l'éditeur riche (TinyMCE, cf.
 * public/assets/js/richtext-editor.js) et nettoyé par App\Core\HtmlSanitizer
 * (App\helpers::markdown()) : présentation de section, description
 * d'événement/boutique/produit, etc. — jamais un <p> unique en sortie
 * (AutoFormat.AutoParagraph peut produire plusieurs paragraphes, titres,
 * listes ou un tableau), donc toujours affiché dans ce conteneur plutôt que
 * ré-enveloppé dans un <p> par le gabarit (imbrication invalide en HTML).
 */
.richtext > *:first-child { margin-top: 0; }
.richtext > *:last-child { margin-bottom: 0; }
.richtext p, .richtext ul, .richtext ol, .richtext blockquote, .richtext table { margin: 0 0 1rem; }
.richtext h2, .richtext h3, .richtext h4 { text-transform: none; letter-spacing: normal; margin: 1.25rem 0 0.5rem; }
.richtext h2 { font-size: 1.05rem; }
.richtext h3 { font-size: 1rem; }
.richtext h4 { font-size: 0.95rem; }
.richtext ul, .richtext ol { padding-left: 1.25rem; }
.richtext li { margin-bottom: 0.3rem; }
.richtext blockquote {
    margin-left: 0;
    padding: 0.4rem 1rem;
    border-left: 3px solid var(--smo-yellow);
    color: var(--smo-gray);
}

.richtext table {
    display: block;
    overflow-x: auto;
    border-collapse: collapse;
    width: 100%;
    font-size: 0.95rem;
}
.richtext th, .richtext td {
    padding: 0.55rem 0.85rem;
    border: 1px solid var(--smo-border);
    text-align: left;
}
.richtext thead th {
    background: var(--smo-gray-light);
    border-bottom: 2px solid var(--smo-yellow);
    font-weight: 600;
}

.social-links { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 0.5rem; }

.social-link {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: var(--smo-white);
    border: 1px solid var(--smo-gray);
    color: var(--smo-black);
    transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.social-link svg { width: 18px; height: 18px; }
.social-link:hover,
.social-link:focus-visible {
    background: var(--smo-yellow);
    border-color: var(--smo-yellow);
    color: var(--smo-black);
}

/*
 * Couleurs officielles de chaque réseau (logos tiers, hors charte de
 * marque du club) : le pictogramme (blanc, currentColor) se détache sur
 * un fond à la couleur de la plateforme, comme sur les logos originaux.
 * Le survol garde cette couleur et ajoute un liseré jaune (identité du
 * club) plutôt que de la remplacer.
 */
.social-link.social-link--facebook { background: #1877F2; border-color: transparent; color: #fff; }
.social-link.social-link--instagram {
    background: radial-gradient(circle at 30% 107%, #fdf497 0%, #fdf497 5%, #fd5949 45%, #d6249f 60%, #285AEB 90%);
    border-color: transparent;
    color: #fff;
}
.social-link.social-link--tiktok { background: #000000; border-color: transparent; color: #fff; }
.social-link.social-link--youtube { background: #FF0000; border-color: transparent; color: #fff; }
.social-link.social-link--linkedin { background: #0A66C2; border-color: transparent; color: #fff; }
.social-link.social-link--x { background: #000000; border-color: transparent; color: #fff; }
.social-link.social-link--whatsapp { background: #25D366; border-color: transparent; color: #fff; }

.social-link[class*="social-link--"]:hover,
.social-link[class*="social-link--"]:focus-visible {
    color: #fff;
    box-shadow: 0 0 0 3px var(--smo-yellow);
}

/* --- Bouton "Partager" (actualités, événements) -------------------------
 * Réutilise .social-link (badge circulaire) : les réseaux ont leur couleur
 * de marque (voir modificateurs ci-dessus), le lien e-mail et le bouton
 * "copier le lien" restent neutres (pas un réseau social). */
/* flex-wrap: nowrap (+ overflow-x: auto en secours) plutôt que wrap : sur
 * mobile, un retour à la ligne empile les icônes une par une (chaque lien
 * fait à lui seul presque toute la largeur de l'écran une fois le texte du
 * label pris en compte). On préfère garder tous les boutons sur une seule
 * ligne, quitte à scroller horizontalement sur les très petits écrans. */
.share-bar { display: flex; align-items: center; flex-wrap: nowrap; overflow-x: auto; gap: 0.5rem; margin: 1.25rem 0; }
.share-bar-label { flex-shrink: 0; font-weight: 600; font-size: 0.85rem; color: var(--smo-gray); margin-right: 0.25rem; }
.share-bar .social-link { flex-shrink: 0; }

button.social-link {
    font: inherit;
    padding: 0;
    cursor: pointer;
}

.social-link[data-copy-link] { position: relative; }
.social-link[data-copy-link].copied::after {
    content: "Copié !";
    position: absolute;
    bottom: 120%;
    left: 50%;
    transform: translateX(-50%);
    background: var(--smo-black);
    color: var(--smo-white);
    font-size: 0.72rem;
    font-weight: 600;
    padding: 0.2rem 0.55rem;
    border-radius: 4px;
    white-space: nowrap;
}

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

/* --- Réseaux sociaux des sections (page /reseaux-sociaux) --------------- */
/* Un réseau par colonne (grille responsive) plutôt qu'empilés en pleine
   largeur : limite le défilement vertical quand plusieurs réseaux sont
   renseignés. */
.reseaux-groupes {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 1.5rem 2rem;
    align-items: start;
}

.reseaux-groupe h2 { display: flex; align-items: center; gap: 0.5rem; font-size: 1.05rem; margin-bottom: 0.75rem; }
.reseaux-groupe-icon { display: inline-flex; width: 20px; height: 20px; color: var(--smo-black); flex-shrink: 0; }
.reseaux-groupe-icon svg { width: 100%; height: 100%; }

/* Couleur officielle de chaque réseau (même logique que .social-link ci-dessus). */
.reseaux-groupe-icon--facebook { color: #1877F2; }
.reseaux-groupe-icon--instagram { color: #d6249f; }
.reseaux-groupe-icon--tiktok { color: #000000; }
.reseaux-groupe-icon--youtube { color: #FF0000; }
.reseaux-groupe-icon--linkedin { color: #0A66C2; }

/* Boutons noir/blanc identiques aux autres liens externes du site (cf.
   .btn / .btn-secondary), enchaînés à la ligne pour rester compacts. */
.reseaux-groupe-list { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 0.5rem; }
.reseaux-groupe-list .btn { padding: 0.5rem 1rem; font-size: 0.9rem; }

/* --- Réseaux sociaux de l'association (module page d'accueil) ----------- */
.reseaux-association .social-links { margin-top: 0.5rem; }

/* --- Badges (base partagée public + admin) ------------------------------ */
.badge { display: inline-block; padding: 0.2rem 0.55rem; border-radius: 999px; font-size: 0.78rem; font-weight: 600; }
.badge-une { background: var(--smo-yellow); color: var(--smo-black); }
.badge-section { background: var(--smo-black); color: var(--smo-white); text-decoration: none; margin-bottom: 0.5rem; display: inline-block; }

/* Actualité liée à un événement : badge avec le logo de l'événement. */
.badge-evenement {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    background: var(--smo-gray-light);
    color: var(--smo-black);
    text-decoration: none;
    padding: 0.2rem 0.55rem 0.2rem 0.2rem;
    border-radius: 999px;
    font-size: 0.78rem;
    font-weight: 600;
    margin: 0 0 0.5rem 0.5rem;
}
.badge-evenement-logo { width: 1.4rem; height: 1.4rem; border-radius: 50%; object-fit: cover; }

/* --- Actualités : grille de cartes -------------------------------------- */
.news-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 1.25rem;
    margin-bottom: 1rem;
}

.news-grid--compact { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); }

/* Accueil > "Actualités récentes" : 4 cartes par ligne au lieu de 3
   (largeur de carte réduite pour que 4 tiennent dans le conteneur 1080px). */
.news-grid--recentes { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }

.news-card {
    display: block;
    background: var(--smo-white);
    border: 1px solid var(--smo-border);
    border-radius: var(--smo-radius-card);
    overflow: hidden;
    text-decoration: none;
    color: inherit;
    transition: box-shadow 0.15s ease, border-color 0.15s ease;
}

.news-card:hover, .news-card:focus-visible {
    border-color: var(--smo-yellow);
    box-shadow: var(--smo-shadow-card);
}

.news-card-img { width: 100%; height: 140px; object-fit: cover; display: block; }

/* --- Événements : "Ajouter à mon calendrier" (evenements/_ajout_calendrier.php) --- */
.event-card-wrap { display: flex; flex-direction: column; gap: 0.4rem; }
.event-card-wrap > .news-card { flex: 1 1 auto; }

.add-calendar { position: relative; display: inline-block; font-size: 0.88rem; }
.add-calendar > summary {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    list-style: none;
    cursor: pointer;
    padding: 0.4rem 0.8rem;
    border: 1px solid var(--smo-border);
    border-radius: 999px;
    background: var(--smo-white);
    color: var(--smo-black);
    font-weight: 600;
    user-select: none;
}
.add-calendar > summary::-webkit-details-marker { display: none; }
.add-calendar > summary:hover,
.add-calendar > summary:focus-visible,
.add-calendar[open] > summary { border-color: var(--smo-yellow); background: var(--smo-yellow); }

.add-calendar-menu {
    position: absolute;
    z-index: 20;
    top: calc(100% + 0.3rem);
    left: 0;
    min-width: 240px;
    margin: 0;
    padding: 0.35rem 0;
    list-style: none;
    background: var(--smo-white);
    border: 1px solid var(--smo-border);
    border-radius: var(--smo-radius-card);
    box-shadow: var(--smo-shadow-card);
}
.add-calendar-menu a { display: block; padding: 0.5rem 0.9rem; color: var(--smo-black); text-decoration: none; }
.add-calendar-menu a:hover, .add-calendar-menu a:focus-visible { background: var(--smo-yellow); }

.add-calendar--carte { align-self: flex-start; font-size: 0.82rem; }
.section-hero .add-calendar { margin-top: 0.25rem; }
.news-card-body { padding: 1rem; }
.news-card-body time { color: var(--smo-gray); font-size: 0.78rem; }
.news-card-body h2, .news-card-body h3 { margin: 0.35rem 0 0.4rem; font-size: 1.05rem; }
.news-card-body p { margin: 0; color: var(--smo-gray); font-size: 0.9rem; }

.news-card--featured {
    display: flex;
    align-items: stretch;
}
.news-card--featured .news-card-img {
    width: 280px;
    height: 180px;
    flex-shrink: 0;
}
.news-card--featured .news-card-body {
    padding: 1.25rem 1.5rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
}
.news-card--featured .news-card-body h3 { font-size: 1.25rem; margin-top: 0; }
.news-card--featured .news-card-body p { font-size: 0.95rem; }

@media (max-width: 560px) {
    .news-card--featured { flex-direction: column; }
    .news-card--featured .news-card-img { width: 100%; height: 180px; }
}

.pagination { display: flex; justify-content: space-between; margin-top: 1.5rem; }
.pagination a { color: var(--smo-black); font-weight: 600; text-decoration: none; }
.pagination a:hover { text-decoration: underline; }

/* --- Fiche actualité --------------------------------------------------- */
.news-hero { margin-bottom: 1.25rem; }
.news-hero time { display: block; color: var(--smo-gray); font-size: 0.85rem; margin-bottom: 0.75rem; }
.news-hero-img { width: 100%; max-height: 380px; object-fit: cover; border-radius: 8px; }

.news-resume { font-size: 1.1rem; color: var(--smo-gray); margin-bottom: 1.5rem; }
.news-content { line-height: 1.7; }

.tag-list { list-style: none; display: flex; flex-wrap: wrap; gap: 0.4rem; padding: 0; margin: 1.5rem 0 0; }
.tag { background: var(--smo-gray-light); color: var(--smo-black); padding: 0.2rem 0.6rem; border-radius: 999px; font-size: 0.78rem; }

/* --- Événements --------------------------------------------------------- */
.event-card .badge-section { margin: 0 0 0.35rem; }
.event-dates { color: var(--smo-gray); font-weight: 600; margin: 0.5rem 0 1.25rem; }

/* Logo de l'événement à côté du titre sur sa fiche publique. */
.event-hero-title { display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap; }
.event-hero-title h1 { margin: 0; }
.event-hero-logo { width: 3rem; height: 3rem; border-radius: 50%; object-fit: cover; flex-shrink: 0; }

.event-cta-bar {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-bottom: 1.75rem;
}

.btn {
    display: inline-block;
    background: var(--smo-black);
    color: var(--smo-white);
    padding: 0.65rem 1.4rem;
    border-radius: var(--smo-radius-btn);
    box-shadow: var(--smo-shadow-btn);
    font-weight: 600;
    text-decoration: none;
    border: 2px solid var(--smo-black);
    transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.btn:hover, .btn:focus-visible { background: var(--smo-yellow); border-color: var(--smo-yellow); color: var(--smo-black); }
.btn-primary, .btn-secondary { background: var(--smo-black); color: var(--smo-white); border-color: var(--smo-black); }

/* --- Itinéraire vers un lieu de pratique (Google Maps / Waze) ----------- */
.lieu-directions { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 0.6rem; }
.lieu-directions .btn-directions { padding: 0.5rem 1rem; font-size: 0.9rem; }

/* Une section peut avoir plusieurs lieux de pratique (ex: plusieurs gymnases) : */
.lieu-infobox-item + .lieu-infobox-item { margin-top: 0.8rem; padding-top: 0.8rem; border-top: 1px solid var(--smo-gray); }

/* --- Médiathèque publique ------------------------------------------------ */
.media-public-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 1rem;
}

.media-public-tile {
    position: relative;
    display: block;
    aspect-ratio: 4 / 3;
    border-radius: var(--smo-radius-card);
    overflow: hidden;
    background: var(--smo-black);
}

.media-public-tile img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.2s ease; }
.media-public-tile:hover img { transform: scale(1.05); }

.media-public-tile--video { display: flex; align-items: center; justify-content: center; }

.media-public-play {
    color: var(--smo-yellow);
    font-size: 2rem;
}

.media-public-caption {
    position: absolute;
    left: 0; right: 0; bottom: 0;
    background: linear-gradient(transparent, rgba(0,0,0,0.75));
    color: var(--smo-white);
    font-size: 0.8rem;
    padding: 1.5rem 0.6rem 0.5rem;
}

/* --- Liste de documents (fiches section/événement) --------------------- */
.document-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 0.6rem; }

.document-list a {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--smo-black);
    font-weight: 600;
    text-decoration: none;
}

.document-list a:hover { text-decoration: underline; }

.document-ext {
    background: var(--smo-black);
    color: var(--smo-white);
    font-size: 0.7rem;
    font-weight: 700;
    padding: 0.15rem 0.4rem;
    border-radius: 4px;
}

/* --- Partenaires --------------------------------------------------------- */
.partenaires-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 1rem;
}

.partenaire-tile {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100px;
    padding: 1rem;
    background: var(--smo-white);
    border: 1px solid var(--smo-border);
    border-radius: var(--smo-radius-card);
    text-decoration: none;
    color: var(--smo-black);
    font-weight: 600;
    text-align: center;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.partenaire-tile:hover {
    border-color: var(--smo-yellow);
    box-shadow: var(--smo-shadow-card);
}

.partenaire-tile img { max-width: 100%; max-height: 60px; object-fit: contain; }

.partenaires-grid--compact .partenaire-tile { height: 70px; padding: 0.6rem; }
.partenaires-grid--compact .partenaire-tile img { max-height: 40px; }

/* --- Encadrement de la section (Bureau Général, Comité Directeur, salariés) --- */
.personnel-group-title {
    margin: 1.25rem 0 0.6rem;
    font-size: 1rem;
    color: var(--smo-gray);
}

.personnel-group-title:first-of-type { margin-top: 0.5rem; }

.personnel-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 1rem;
}

.personnel-card {
    display: flex;
    gap: 0.75rem;
    align-items: center;
    padding: 0.75rem;
    background: var(--smo-white);
    border: 1px solid var(--smo-border);
    border-radius: var(--smo-radius-card);
}

.personnel-card-photo {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    object-fit: cover;
    flex-shrink: 0;
}

.personnel-card-photo--placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--smo-gray-light);
    font-size: 1.5rem;
}

.personnel-card-body { min-width: 0; }
.personnel-card-name { margin: 0; font-weight: 700; color: var(--smo-black); }
.personnel-card-fonction { margin: 0.1rem 0; color: var(--smo-gray); font-size: 0.85rem; }
.personnel-card-body p { margin: 0.1rem 0; font-size: 0.85rem; word-break: break-word; }
.personnel-card-body a { color: var(--smo-black); }
.personnel-card-body a:hover { color: var(--smo-yellow-dark); }
.personnel-card-name a { text-decoration: none; }
.personnel-card-name a:hover { text-decoration: underline; }
.personnel-card-commissions { margin-top: 0.3rem; font-size: 0.78rem; font-style: italic; color: var(--smo-gray); }

/* --- Fiche de présentation individuelle (personnel) ---------------------- */
.personnel-fiche-photo { max-width: 220px; }
span.personnel-fiche-photo { width: 220px; height: 220px; font-size: 5rem; }

/* --- Commissions -------------------------------------------------------- */
.commission-block { margin-bottom: 2.5rem; }
.commission-block:last-child { margin-bottom: 0; }
.commission-block h2 { margin-bottom: 0.5rem; }

/* --- Services externes (SIRH, bénévoles...) ---------------------------- */
.services-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 1.25rem;
}

.service-card {
    display: block;
    background: var(--smo-white);
    border: 1px solid var(--smo-border);
    border-radius: var(--smo-radius-card);
    padding: 1.25rem;
    text-decoration: none;
    color: inherit;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.service-card:hover {
    border-color: var(--smo-yellow);
    box-shadow: var(--smo-shadow-card);
}

.service-card h2 { margin: 0 0 0.5rem; font-size: 1.1rem; }
.service-card p { margin: 0 0 0.75rem; color: var(--smo-gray); font-size: 0.9rem; }
.service-card-cta { font-weight: 600; color: var(--smo-black); }

.home-quicklinks {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem 1.5rem;
    margin-bottom: 2rem;
    padding-top: 1rem;
}

.home-quicklinks .services-quicklinks { margin-bottom: 0; padding-top: 0; }
.home-quicklinks .home-quicklinks-social { margin: 0; }

.services-quicklinks {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-bottom: 2rem;
    padding-top: 1rem;
}

.services-quicklinks a {
    background: var(--smo-black);
    color: var(--smo-white);
    text-decoration: none;
    font-weight: 600;
    font-size: 0.85rem;
    padding: 0.5rem 1rem;
    border-radius: 999px;
    transition: background-color 0.15s ease;
}

.services-quicklinks a:hover { background: var(--smo-yellow); color: var(--smo-black); }

/* --- Recherche globale --------------------------------------------------- */
.search-form { display: flex; gap: 0.5rem; margin-top: 1rem; max-width: 480px; }

.search-form input[type="search"] {
    flex: 1;
    padding: 0.55rem 0.85rem;
    border: 1px solid var(--smo-border);
    border-radius: 4px;
    font: inherit;
}

.search-results { list-style: none; padding: 0; margin: 0; }

.search-results li { padding: 0.85rem 0; border-bottom: 1px solid var(--smo-border); }
.search-results li:last-child { border-bottom: none; }
.search-results a { font-weight: 600; color: var(--smo-black); text-decoration: none; font-size: 1.05rem; }
.search-results a:hover { text-decoration: underline; }
.search-results p { margin: 0.3rem 0 0; color: var(--smo-gray); font-size: 0.9rem; }

/* --- Recherche compacte (en-tête) --------------------------------------- */
/*
 * Dernier élément du menu principal (cf. app/Views/layouts/main.php) :
 * inline-flex pour s'aligner sur les liens <a> du <nav> (eux-mêmes en
 * ligne) plutôt que de retomber à la ligne suivante comme un bloc à part.
 */
.header-search {
    display: inline-flex;
    align-items: center;
    vertical-align: middle;
    margin-left: 1.25rem;
}
.header-search input[type="search"] {
    width: 160px;
    padding: 0.35rem 0.6rem;
    border: 1px solid var(--smo-border);
    border-radius: 999px 0 0 999px;
    font-size: 0.85rem;
    font: inherit;
}
.header-search button {
    border: 1px solid var(--smo-border);
    border-left: none;
    background: var(--smo-gray-light);
    border-radius: 0 999px 999px 0;
    padding: 0.35rem 0.7rem;
    cursor: pointer;
    font-size: 0.9rem;
}
.header-search button:hover { background: var(--smo-yellow); }

/* --- Lien direct d'édition pour les admins connectés -------------------- */
/*
 * Sur une page publique (page libre, section, événement, actualité, lieu,
 * service...), un admin de section ou super-admin voit un accès direct vers
 * la fiche d'édition correspondante en back-office (cf. cahier des charges
 * §15). Le contrôleur ne transmet $editLink que si l'utilisateur connecté a
 * réellement le droit de modifier la ressource affichée.
 */
.admin-edit-toolbar {
    position: fixed;
    right: 1.25rem;
    bottom: 1.25rem;
    z-index: 100;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    max-width: calc(100vw - 2.5rem);
    flex-wrap: wrap;
    justify-content: flex-end;
}
.admin-edit-fab {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.65rem 1rem;
    background: var(--smo-yellow);
    color: var(--smo-black);
    font-weight: 600;
    font-size: 0.9rem;
    text-decoration: none;
    border-radius: 999px;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.25);
    transition: background 0.15s ease, transform 0.15s ease;
}
.admin-edit-fab:hover { background: var(--smo-yellow-dark); transform: translateY(-1px); }

/* Boutons "élément précédent/suivant" (super-admin/admin uniquement, cf.
   Auth::isGlobalAdmin) — même forme que le bouton d'édition, en noir pour
   rester secondaires visuellement. */
.admin-nav-fab {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.65rem 0.9rem;
    background: var(--smo-black);
    color: #fff;
    font-weight: 600;
    font-size: 0.9rem;
    text-decoration: none;
    border-radius: 999px;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.25);
    transition: background 0.15s ease, transform 0.15s ease;
}
.admin-nav-fab:hover { background: var(--smo-gray); transform: translateY(-1px); }

/* Sur petit écran, les trois boutons ("Précédent", éditer, "Suivant") ne
   tiennent pas côte à côte avec leur libellé complet : on ne garde que les
   icônes/flèches (le libellé reste accessible via aria-label) pour que la
   barre tienne sur une seule ligne au-dessus du contenu, sans le masquer. */
@media (max-width: 560px) {
    .admin-edit-toolbar {
        left: 0.75rem;
        right: 0.75rem;
        bottom: 0.75rem;
        justify-content: center;
    }
    .admin-nav-fab-label,
    .admin-edit-fab-label {
        display: none;
    }
    .admin-nav-fab,
    .admin-edit-fab {
        padding: 0.6rem 0.75rem;
    }
}

/* Sur la liste des partenaires, le lien se pose en badge sur chaque tuile
   (une page peut afficher plusieurs partenaires gérés par des personnes
   différentes, un bouton flottant unique n'aurait pas de sens). */
.partenaire-tile-wrap { position: relative; }
.partenaire-edit-badge {
    position: absolute;
    top: -8px;
    right: -8px;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    background: var(--smo-yellow);
    color: var(--smo-black);
    border-radius: 50%;
    border: 2px solid var(--smo-white);
    text-decoration: none;
    font-size: 0.85rem;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
}
.partenaire-edit-badge:hover { background: var(--smo-yellow-dark); }

/* ==========================================================================
   Module Boutiques (§6, §8, §9, §21) — catalogue public, panier, commande.
   Réutilise les variables --smo-* du thème ; les classes .form-row/.form-grid/
   .form-actions/.hint/.field-error/.btn-sm/.btn-danger reprennent volontairement
   le même nom et le même rendu que leur équivalent admin.css (back-office),
   admin.css n'étant pas chargé sur le site public.
   ========================================================================== */

/* --- Liste des boutiques et catalogue produits (grilles de cartes) ------ */
.boutiques-grid, .produits-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 1.25rem;
}

.boutique-card, .produit-card {
    display: block;
    background: var(--smo-white);
    border: 1px solid var(--smo-border);
    border-radius: var(--smo-radius-card);
    overflow: hidden;
    text-decoration: none;
    color: inherit;
    transition: box-shadow 0.15s ease, border-color 0.15s ease;
}
.boutique-card:hover, .boutique-card:focus-visible,
.produit-card:hover, .produit-card:focus-visible {
    border-color: var(--smo-yellow);
    box-shadow: var(--smo-shadow-card);
}

.boutique-card-img, .produit-card-img { width: 100%; height: 160px; object-fit: cover; display: block; background: var(--smo-gray-light); }
.boutique-card-img--placeholder, .produit-card-img--placeholder {
    display: flex; align-items: center; justify-content: center;
    background: var(--smo-black); color: var(--smo-yellow); font-size: 2.5rem; font-weight: 700;
}

.boutique-card-body, .produit-card-body { padding: 1rem; }
.boutique-card-body h2, .produit-card-body h2 { margin: 0 0 0.4rem; font-size: 1.05rem; }
.boutique-card-body p, .produit-card-body p { margin: 0 0 0.4rem; color: var(--smo-gray); font-size: 0.9rem; }
.produit-card-prix { font-weight: 700; color: var(--smo-black); font-size: 1rem; }

/* --- Filtre par catégorie (page catalogue d'une boutique) --------------- */
.boutique-categories { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-bottom: 1.5rem; }
.boutique-categories a {
    display: inline-block; padding: 0.4rem 0.9rem; border-radius: 999px;
    border: 1px solid var(--smo-border); color: var(--smo-black); text-decoration: none; font-size: 0.88rem;
}
.boutique-categories a.active, .boutique-categories a:hover { background: var(--smo-yellow); border-color: var(--smo-yellow); }

/* --- Fiche produit ------------------------------------------------------- */
.produit-fiche { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; align-items: start; }
@media (max-width: 720px) { .produit-fiche { grid-template-columns: 1fr; } }

.produit-fiche-image { width: 100%; border-radius: 8px; object-fit: cover; max-height: 420px; background: var(--smo-gray-light); }
.produit-fiche-image--placeholder {
    display: flex; align-items: center; justify-content: center; height: 320px; font-size: 3rem;
    background: var(--smo-black); color: var(--smo-yellow);
}
.produit-fiche-miniatures { display: flex; gap: 0.5rem; margin-top: 0.75rem; flex-wrap: wrap; }
.produit-miniature { padding: 0; border: 2px solid var(--smo-border); border-radius: 6px; background: none; cursor: pointer; overflow: hidden; width: 56px; height: 56px; }
.produit-miniature img { width: 100%; height: 100%; object-fit: cover; display: block; }
.produit-miniature:hover, .produit-miniature:focus-visible { border-color: var(--smo-yellow); }

.produit-fiche-resume { color: var(--smo-gray); }
.produit-fiche-prix { font-size: 1.6rem; font-weight: 700; margin: 0.75rem 0; display: flex; align-items: baseline; gap: 0.6rem; flex-wrap: wrap; }
.produit-fiche-prix-barre { font-size: 1.05rem; font-weight: 400; color: var(--smo-gray); text-decoration: line-through; }
.produit-fiche-form { max-width: 420px; }

/* --- État de stock (badge public, distinct des badges de workflow admin) */
.badge-rupture { background: #fdecea; color: #b3261e; }
.badge-alerte-stock { background: #fff4e0; color: #9a6400; }
.badge-precommande { background: #e8f0fe; color: #1a56c4; }

/* Déclinaison en promotion (prix de la variante inférieur au prix habituel
   du produit, cf. Admin\BoutiqueStockController) : même code couleur que le
   badge "Promo" du back-office. */
.badge-promo { background: #eaf7ed; color: #1e7b34; font-size: 0.9rem; vertical-align: middle; }

/* `.badge` (display: inline-block) a la même spécificité que la règle
   `[hidden] { display: none }` de la feuille de style du navigateur ; à
   spécificité égale, une règle d'auteur l'emporte toujours sur celle du
   navigateur (même bug déjà rencontré sur .modal-backdrop, cf. admin.css) :
   sans cette redéclaration, #produit-prix-promo.hidden reste affiché même
   hors promo, seul son attribut `hidden` change. */
.badge[hidden] { display: none; }

/* --- Panier et commande --------------------------------------------------- */
.table-scroll { overflow-x: auto; }
.panier-table { width: 100%; border-collapse: collapse; background: var(--smo-white); min-width: 560px; }
.panier-table th, .panier-table td { padding: 0.75rem; border-bottom: 1px solid var(--smo-border); text-align: left; vertical-align: middle; }
.panier-table thead th { font-size: 0.82rem; text-transform: uppercase; color: var(--smo-gray); }

/* --- Formulaires publics génériques (checkout, ...) — même rendu que
   l'équivalent back-office (admin.css), non chargé sur le site public. */
.checkout-form, .public-form { max-width: 640px; background: var(--smo-white); border: 1px solid var(--smo-border); border-radius: 6px; padding: 1.5rem; }

.form-row { margin-bottom: 1rem; }
.form-row label { display: block; font-weight: 600; margin-bottom: 0.3rem; font-size: 0.9rem; }

.hint { color: var(--smo-gray); font-size: 0.82rem; }
.form-row .hint { display: block; margin-top: 0.25rem; }

.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 1.25rem; }
@media (max-width: 560px) { .form-grid { grid-template-columns: 1fr; } }

.form-row input[type="text"],
.form-row input[type="email"],
.form-row input[type="tel"],
.form-row input[type="url"],
.form-row input[type="number"],
.form-row select,
.form-row textarea {
    width: 100%;
    padding: 0.5rem 0.65rem;
    border: 1px solid var(--smo-border);
    border-radius: 4px;
    font: inherit;
}
.form-row textarea { resize: vertical; min-height: 5rem; }

.field-error { color: #b3261e; font-size: 0.82rem; margin-top: 0.25rem; }
.form-row.has-error input,
.form-row.has-error select,
.form-row.has-error textarea { border-color: #b3261e; }

.form-actions { display: flex; gap: 0.75rem; margin-top: 1.5rem; flex-wrap: wrap; }

.btn-sm { padding: 0.3rem 0.65rem; font-size: 0.82rem; }
.btn-danger { background: transparent; color: #b3261e; border: 1px solid #f5c6c2; }
.btn-danger:hover { background: #fdecea; color: #b3261e; }

/* --- Lien vers la boutique d'une section (fiche section, barre latérale) */
.section-boutique-link {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    justify-content: center;
    text-align: center;
    width: 100%;
}
.section-boutique-link-logo { width: 1.6rem; height: 1.6rem; object-fit: contain; border-radius: 4px; background: var(--smo-white); flex-shrink: 0; }

/* --- Compteur panier dans le menu principal ------------------------------ */
.nav-panier-compteur {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 1.1rem; height: 1.1rem; padding: 0 0.3rem; margin-left: 0.25rem;
    background: var(--smo-yellow); color: var(--smo-black); border-radius: 999px;
    font-size: 0.72rem; font-weight: 700;
}
