@import url("https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&display=swap");
/* ============================================================================
   glass-site.css — UI Kit « Liquid Glass » appliqué à TOUT le wiki TKD.
   ----------------------------------------------------------------------------
   Réplique fidèlement le UI Kit (palette cyan/violet, fond verre sombre,
   GT Sectra Display pour les titres, Inter pour le corps), injecté avant
   </head> sur toutes les pages + une scène de blobs (.gk-scene) après <body>.
   Cosmétique uniquement (fond / flou / bordures / ombres / couleurs / typo) :
   aucune règle de layout structurel. Réversible : retirer le <link> + la scène.
   Charte « hextech » (reprise du backoffice 17/07) : nuit #050A14/#0B1322 ·
   accent blanc rgba(255,255,255,.92) · ruby #E24A66 (rare) · cyan #5ee7df ·
   angles vifs (radius 0), GT Sectra Bold Italic, grain + 2 halos dérivants.
   ========================================================================== */

@font-face {
  font-family: "GT Sectra Display";
  src: url("/fonts/GT-Sectra-Display-Regular.otf") format("opentype");
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "GT Sectra Display";
  src: url("/fonts/GT-Sectra-Display-Regular-Italic.otf") format("opentype");
  font-weight: 400; font-style: italic; font-display: swap;
}
@font-face {
  font-family: "GT Sectra Display";
  src: url("/fonts/GT-Sectra-Display-Medium.otf") format("opentype");
  font-weight: 500; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "GT Sectra Display";
  src: url("/fonts/GT-Sectra-Display-Medium-Italic.otf") format("opentype");
  font-weight: 500; font-style: italic; font-display: swap;
}
@font-face {
  font-family: "GT Sectra Display";
  src: url("/fonts/GTSectraDisplay-BoldItalic.ttf") format("truetype");
  font-weight: 700; font-style: italic; font-display: swap;
}

:root {
  --gk-bg: #050A14;
  --gk-aqua: #5ee7df;
  --gk-violet: rgba(255,255,255,.92);
  --gk-rose: #E24A66;
  --gk-gold: #E8B62A;  /* or app (repos, récompenses) — l'« amber » du kit est devenu aqua */
  --gk-amber: #5ee7df;
  /* ── Tokens alignés sur le UI Kit (valeurs exactes de ui-kit.html :root) ── */
  --gk-text: #ffffff;                          /* kit --color-text (lisibilité max) */
  --gk-muted: rgba(255, 255, 255, .62);        /* kit --color-text-muted .55 remonté à .62 */
  --gk-glass: rgba(255, 255, 255, .12);        /* kit --glass-white */
  --gk-glass-strong: rgba(255, 255, 255, .20); /* = --glass-white-md */
  --gk-glass-md: rgba(255, 255, 255, .20);     /* kit --glass-white-md */
  --gk-glass-lg: rgba(255, 255, 255, .30);     /* kit --glass-white-lg */
  --gk-border: rgba(255, 255, 255, .25);       /* kit --glass-border */
  --gk-border-subtle: rgba(255, 255, 255, .12);/* kit --glass-border-subtle */
  --gk-border-bright: rgba(255, 255, 255, .5);  /* kit --glass-border-bright */
  --gk-radius: 0;                           /* kit --radius-md */
  --gk-radius-sm: 0;                         /* kit --radius-sm */
  --gk-radius-md: 0;                         /* kit --radius-md */
  --gk-radius-lg: 0;                         /* kit --radius-xl */
  --gk-radius-full: 0;
  --gk-shadow: 0 8px 32px rgba(0, 0, 0, .28), inset 0 1px 0 rgba(255, 255, 255, .3); /* kit --shadow-glass */
  --gk-shadow-float: 0 20px 56px rgba(0, 0, 0, .46), 0 0 0 1px rgba(255, 255, 255, .05);
  --gk-glow: 0 0 40px rgba(94, 231, 223, .30);
  --gk-blur: blur(18px) saturate(150%);        /* kit --blur-md (+ saturate gardé) */
  --gk-blur-lg: blur(30px) saturate(155%);
  --gk-reflection: linear-gradient(135deg, rgba(255, 255, 255, .4) 0%, rgba(255, 255, 255, 0) 50%); /* kit --reflection-top */
}

/* ----------------------------------------------------------------------------
   1. Fond global « hextech » : dégradé nuit + 2 halos dérivants + grain
      (repris du backoffice, index.html charte 17/07)
   -------------------------------------------------------------------------- */
html { background-color: var(--gk-bg) !important; }
body {
  background: linear-gradient(180deg, #0B1322, #050A14) fixed !important;
  color: var(--gk-text) !important;
}

/* ancien halo body::before désactivé (était en z-index négatif → piégé). */
body::before { content: none !important; }

/* Grain plein écran (feTurbulence), au-dessus de tout, non interactif. */
body::after {
  content: '';
  position: fixed; inset: 0; pointer-events: none; z-index: 60;
  opacity: .17; mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");
}

/* ⚠️ le calque décor reste en z-index 0 (un z négatif serait piégé derrière le
   fond) et le contenu en z-index 1. .gk-scene est déjà injecté sur les pages :
   il porte désormais les 2 halos hextech (ruby + bleu nuit). */
.gk-scene {
  position: fixed; inset: 0; z-index: 0; overflow: hidden; pointer-events: none;
}
.gk-scene::before {
  content: ''; position: absolute; width: 640px; height: 640px; border-radius: 50%;
  left: 8%; top: -220px;
  background: radial-gradient(circle, rgba(194,24,63,.13), transparent 65%);
  animation: gkDrift1 23s ease-in-out infinite alternate;
}
.gk-scene::after {
  content: ''; position: absolute; width: 760px; height: 760px; border-radius: 50%;
  right: -160px; bottom: -320px;
  background: radial-gradient(circle, rgba(76,98,180,.16), transparent 65%);
  animation: gkDrift2 29s ease-in-out infinite alternate-reverse;
}
/* le contenu passe AU-DESSUS du calque couleur */
.body-container, .body-inside-container { position: relative !important; z-index: 1 !important; }
/* anciens blobs cyan/violet/rose : retirés de la charte (le markup injecté reste inoffensif) */
.gk-scene .gk-blob { display: none !important; }
@keyframes gkDrift1 { to { transform: translate(90px, 36px); } }
@keyframes gkDrift2 { to { transform: translate(90px, 36px); } }
@media (prefers-reduced-motion: reduce) {
  .gk-scene::before, .gk-scene::after { animation: none; }
}

/* overlay app-push masqué partout (comme responsive-mobile.css) */
.device-blocker { display: none !important; }

/* Fond = image de couverture du poomsae, floutée (injecté par glass-site.js sur
   les fiches /poomsae/…, façon app mobile). Derrière le contenu, au-dessus du
   fond sombre ; les blobs gardent leur lueur par-dessus. */
.gk-poomsae-bg {
  position: fixed;
  inset: 0;
  z-index: 0;                  /* même calque que .gk-scene (qui est masqué sur les poomsae) ; négatif = piégé */
  pointer-events: none;
  background-size: cover;
  background-position: center;
  filter: blur(30px) saturate(1.45) brightness(1.28);
  transform: scale(1.14);
  opacity: .8;
}
/* voile très léger juste pour unifier (le texte reste sur des cartes glass) */
.gk-poomsae-bg::after {
  content: "";
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(5,10,20,0) 0%, rgba(5,10,20,.14) 60%, rgba(5,10,20,.30) 100%);
}
/* Fiches poomsae : colonnes de contenu en verre dépoli sombre → le texte reste
   lisible quelle que soit la couverture floutée derrière (claire OU sombre). */
.left_introduction,
.right_introduction {
  background-color: rgba(5,10,20,.5) !important;
  -webkit-backdrop-filter: blur(16px) saturate(140%);
  backdrop-filter: blur(16px) saturate(140%);
}

/* ----------------------------------------------------------------------------
   2. Typographie : corps Inter, titres GT Sectra (gros titres en dégradé)
   -------------------------------------------------------------------------- */
body, p, li, a, span, div, td, th, input, textarea, select, button {
  font-family: "Inter", sans-serif;
}
h1, h2, h3, h4, h5, h6,
.heading_1, .heading_2, .heading_3,
.techniques_heading, .display-1, .display-2 {
  font-family: "GT Sectra Display", "Inter", sans-serif !important;
  color: #fff;
}
/* gros titres de section → couleur unie (pas de dégradé) */
.heading_1,
.heading_2,
.techniques_heading {
  color: var(--gk-text);
}
/* Signature hextech : les titres de premier niveau en GT Sectra BOLD ITALIC
   (même voix que le H1 de l'accueil backoffice). */
h1, .heading_1, .display-1 {
  font-weight: 700 !important;
  font-style: italic !important;
}
/* liens neutres par défaut (couleur réservée aux liens de prose .w-richtext a) */
a { color: inherit; }

/* ----------------------------------------------------------------------------
   3. Surface de verre générique (mixin appliqué aux conteneurs ci-dessous)
   -------------------------------------------------------------------------- */
.home_container,
.top_nav,
.navbar,
.dropdown-list,
.overview_card,
.card_keup,
.list_keup_img,
.video_button_container,
.w-richtext blockquote,
.shortcut,
.navbar__shortcut {
  -webkit-backdrop-filter: var(--gk-blur);
  backdrop-filter: var(--gk-blur);
}

.home_container,
.overview_card,
.card_keup {
  background-color: var(--gk-glass) !important;
  border: 1px solid var(--gk-border) !important;
  border-radius: var(--gk-radius-lg) !important;
  box-shadow: var(--gk-shadow) !important;
}

/* ----------------------------------------------------------------------------
   4. Nav (sidebar) + breadcrumb → verre
   -------------------------------------------------------------------------- */
.navbar {
  background-image: linear-gradient(rgba(255, 255, 255, .07), rgba(255, 255, 255, .03)) !important;
  border: 1px solid var(--gk-border) !important;
  box-shadow: var(--gk-shadow) !important;
}
/* ── Breadcrumb : COPIE EXACTE du composant .glass-breadcrumb du UI Kit ──
   .top_nav redevient un simple wrapper transparent (plus de barre pleine
   largeur) ; c'est .breadcrumb qui est le conteneur pill compact, et chaque
   .top-nav-link est un « crumb » pill, l'actif étant un pill rempli. */
.top_nav {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  border-radius: 0 !important;
  padding: 0 !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
  align-items: center !important;
}
/* .breadcrumb = .glass-breadcrumb (conteneur pill compact, hug content) */
.breadcrumb {
  display: inline-flex !important;
  align-items: center;
  padding: 6px 8px;
  border-radius: 0;
  flex-wrap: nowrap;
  width: auto;
  background: var(--gk-glass);
  border: 1px solid var(--gk-border);
  box-shadow: var(--gk-shadow);
  -webkit-backdrop-filter: var(--gk-blur);
  backdrop-filter: var(--gk-blur);
  font-family: "Inter", sans-serif;
}
/* chaque lien = .glass-breadcrumb__crumb (pill cliquable) */
.breadcrumb .top-nav-link {
  display: inline-flex !important;
  align-items: center;
  gap: 6px;
  padding: 6px 14px !important;
  border-radius: 0 !important;
  font-size: .82rem;
  white-space: nowrap;
  color: var(--gk-text) !important;
  text-decoration: none;
  transition: background .18s ease, color .18s ease, transform .18s cubic-bezier(.34,1.56,.64,1);
}
.breadcrumb .top-nav-link:hover {
  background: rgba(255, 255, 255, .12);
  transform: translateY(-1px);
  color: #fff !important;
}
/* crumb courant = .glass-breadcrumb__crumb--active : pill BLANC frosté, NEUTRE (kit) */
.breadcrumb .top-nav-link.w--current {
  background: rgba(255, 255, 255, .20) !important;
  border: 1px solid var(--gk-border);
  box-shadow: 0 2px 12px rgba(0, 0, 0, .2);
  color: #fff !important;
  cursor: default;
}
.breadcrumb .top-nav-link.w--current:hover { transform: none; }
/* séparateur « / » = .glass-breadcrumb__sep (discret) */
.breadcrumb .separator-text {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  flex-shrink: 0;
  opacity: .25;
  font-size: .65rem;
  pointer-events: none;
  user-select: none;
}
.breadcrumb .separator-text.hidden,
.breadcrumb .top-nav-link.hidden { display: none !important; }

/* Onglets de page (Webflow Tabs) → pill du kit + onglet actif cyan/violet lisible */
.tabs-menu.w-tab-menu {
  background: var(--gk-glass) !important;
  border: 1px solid var(--gk-border) !important;
  border-radius: 0 !important;
  padding: 5px !important;
  gap: 2px;
  -webkit-backdrop-filter: var(--gk-blur);
  backdrop-filter: var(--gk-blur);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .14);
}
.tabs-menu .tab,
.tab.w-tab-link {
  background: transparent !important;
  color: var(--gk-muted) !important;
  border: none !important;          /* tue le border-right séparateur Webflow (sinon arrondi en arc) */
  border-radius: 0 !important;
  font-family: "Inter", sans-serif;
  font-weight: 500;
  transition: background .2s ease, color .2s ease;
}
.tabs-menu .tab:hover { background: rgba(255, 255, 255, .08) !important; color: #fff !important; }
.tab.w--current {
  background: rgba(255, 255, 255, .20) !important;
  border: 1px solid var(--gk-border) !important;
  color: #fff !important;
  box-shadow: 0 2px 12px rgba(0, 0, 0, .2);
}

/* (side nav + dropdowns + raccourcis : voir le BLOC UNIQUE consolidé plus bas) */

/* ----------------------------------------------------------------------------
   5. Cartes de la grille d'accueil (home) → verre + survol
   -------------------------------------------------------------------------- */
.home_grid_item {
  position: relative;
  border-radius: 0;
  overflow: hidden;
  transition: transform .38s cubic-bezier(.2,.7,.2,1), box-shadow .38s cubic-bezier(.2,.7,.2,1);
}
.home_grid_img { border-radius: inherit !important; transition: transform .55s cubic-bezier(.2,.7,.2,1); }
.home_grid_item:hover { transform: translateY(-6px); box-shadow: 0 20px 44px rgba(0, 0, 0, .55), 0 0 0 1px rgba(255, 255, 255, .16); }
.home_grid_item:hover .home_grid_img { transform: scale(1.06); }

/* liserés de label → neutre (blanc discret), pas de couleur */
.label_stroke { background: rgba(255, 255, 255, .4) !important; }

/* ----------------------------------------------------------------------------
   6. Cartes de contenu (pages détail poomsae / keup) → verre + survol
   -------------------------------------------------------------------------- */
.overview_card, .card_keup {
  transition: transform .3s cubic-bezier(.2,.7,.2,1), box-shadow .3s ease, border-color .3s ease;
}
.overview_card:hover, .card_keup:hover {
  transform: translateY(-4px);
  border-color: rgba(255, 255, 255, .24) !important;
  box-shadow: 0 18px 44px rgba(0, 0, 0, .55), 0 0 0 1px rgba(255, 255, 255, .14) !important;
}
.overview_image, .main-img, .reverse-img, .list_keup_img { border-radius: 0; }

/* ----------------------------------------------------------------------------
   7. Boutons / liens d'action → verre type « glass-btn » du kit
   -------------------------------------------------------------------------- */
.container_link_store,
.video_button_container,
.btn,
.button,
.w-button {
  background-color: var(--gk-glass) !important;
  border: 1px solid var(--gk-border) !important;
  border-radius: 0;
  -webkit-backdrop-filter: blur(10px) saturate(140%);
  backdrop-filter: blur(10px) saturate(140%);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .18);
  transition: background-color .25s ease, border-color .25s ease, transform .25s ease, box-shadow .25s ease;
}
.container_link_store:hover,
.video_button_container:hover,
.btn:hover,
.button:hover,
.w-button:hover {
  background: rgba(255, 255, 255, .14) !important;
  border-color: rgba(255, 255, 255, .28) !important;
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(0, 0, 0, .3), inset 0 1px 0 rgba(255, 255, 255, .22);
}
.video_button_play { filter: drop-shadow(0 4px 10px rgba(0, 0, 0, .4)); }

/* ----------------------------------------------------------------------------
   8. Pages richtext (privacy-policy…) : encart verre + texte lisible
   -------------------------------------------------------------------------- */
.w-richtext { color: var(--gk-text); }
.w-richtext a { color: var(--gk-aqua); }
.w-richtext blockquote {
  background-color: var(--gk-glass) !important;
  border-left: 3px solid var(--gk-aqua) !important;
  border-radius: 0 12px 12px 0;
}

/* ----------------------------------------------------------------------------
   9. Scrollbar fine teintée + accessibilité (réduction du mouvement)
   -------------------------------------------------------------------------- */
.content { scrollbar-width: thin; scrollbar-color: rgba(255, 255, 255, .25) transparent; }
.content::-webkit-scrollbar { width: 10px; }
.content::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, .22); border: 3px solid transparent; border-radius: 0; background-clip: padding-box; }

/* ============================================================================
   10. RESHAPE vers le kit — formes des composants (passe « tout d'un coup »)
   ========================================================================== */

/* (side nav réglée dans le BLOC UNIQUE plus bas — juste un petit espacement) */
.navbar__link, .dropdown-toggle { margin-bottom: 2px; }

/* --- Cartes : rayons du kit (radius-lg / xl) --- */
.home_container { border-radius: 0 !important; }
.home_grid_item,
.overview_card,
.card_keup { border-radius: 0 !important; }
.overview_image, .main-img, .reverse-img, .list_keup_img, .home_grid_img { border-radius: 0 !important; }

/* --- Boutons : pills type glass-btn ; survol = gradient aqua→bleu du kit --- */
.btn, .button, .w-button, .video_button_container {
  border-radius: 0 !important;
}
.btn:hover, .button:hover, .w-button:hover, .container_link_store:hover, .video_button_container:hover {
  background: rgba(255, 255, 255, .14) !important;
  border-color: rgba(255, 255, 255, .28) !important;
}
.container_link_store { border-radius: 0 !important; }

/* --- Bouton « play » vidéo : pastille ronde de verre lumineuse --- */
.video_button_play {
  border-radius: 0 !important;
  background: rgba(255, 255, 255, .14) !important;
  border: 1px solid rgba(255, 255, 255, .28) !important;
}

/* --- Champs de formulaire → glass-input du kit (si présents) --- */
input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
textarea, select, .w-input, .w-select {
  background: var(--gk-glass) !important;
  border: 1px solid var(--gk-border) !important;
  border-radius: 0 !important;
  color: var(--gk-text) !important;
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
}
input::placeholder, textarea::placeholder { color: var(--gk-muted); }
select option { background: #11162a; color: #fff; }

/* --- Badges / labels secondaires → mini-pills du kit --- */
.overview_label,
.label_home_text,
.label_text {
  letter-spacing: .04em;
  text-transform: uppercase;
  font-size: .68rem;
  color: var(--gk-muted) !important;
}

/* ----------------------------------------------------------------------------
   11. Sidebar collée à gauche (plus flottante) + raccourcis sans cadre
   -------------------------------------------------------------------------- */
/* DESKTOP uniquement (>991px) : sur mobile la navbar est en off-canvas et le
   conteneur garde son padding-top pour le hamburger — on n'y touche pas. */
@media (min-width: 992px) {
  .body-inside-container {
    padding-left: 0 !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }
  .navbar {
    height: 100vh !important;             /* Webflow met 98% (gap en bas) → pleine hauteur viewport */
    border-radius: 0 !important;          /* collée : coins droits */
    box-shadow: none !important;          /* plus de flottement */
    border-top: none !important;
    border-bottom: none !important;
    border-left: none !important;
  }
  .content { padding-top: 24px !important; }
}

/* ============================================================================
   SIDE NAV + DROPDOWNS = copie fidèle du UI Kit (.glass-nav__item / .glass-dropdown).
   BLOC UNIQUE — remplace les anciens jeux de règles en conflit.
   ========================================================================== */
/* Liens de nav = .glass-nav__item : pas de fond, inactif lisible (.78), lift au
   survol, item courant = pill verre dépoli (.20) + bordure + ombre. */
.navbar__link,
.dropdown-toggle {
  border-radius: var(--gk-radius-full) !important;
  background-color: transparent !important;
  box-shadow: none !important;
  opacity: .78;
  transition: opacity .18s ease, background-color .18s ease,
              transform .18s cubic-bezier(.34, 1.56, .64, 1) !important;
}
.navbar__link:hover,
.dropdown-toggle:hover {
  opacity: 1;
  background-color: transparent !important;
  box-shadow: none !important;
  transform: translateY(-1px);
}
.navbar__link.w--current {
  opacity: 1;
  background-color: var(--gk-glass-md) !important;
  border: 1px solid var(--gk-border) !important;
  box-shadow: 0 2px 12px rgba(0, 0, 0, .2) !important;
}
.navbar__link.w--current:hover { transform: none; }
/* icône des liens : jamais de carré (repos + survol) */
.square.is--link,
.navbar__link .square.is--link,
.navbar__link:hover .square.is--link,
.dropdown-toggle .square.is--link,
.dropdown-toggle:hover .square.is--link {
  background-color: transparent !important;
  box-shadow: none !important;
  border-radius: var(--gk-radius-sm) !important;
}
/* Raccourcis : aucun cadre, léger lift */
.navbar__shortcut,
.navbar__shortcut:hover {
  border-radius: var(--gk-radius) !important;
  background: transparent !important;
  border-color: transparent !important;
  box-shadow: none !important;
}
.navbar__shortcut { transition: transform .2s ease, opacity .2s ease; }
.navbar__shortcut:hover { transform: translateY(-2px); }
.navbar__shortcut .square.is--link,
.navbar__shortcut .icon-navigation,
.navbar__shortcut:hover .square.is--link,
.navbar__shortcut:hover .icon-navigation { background: transparent !important; box-shadow: none !important; }

/* Dropdowns sidebar = .glass-dropdown-menu, mais LISTE REPLIÉE dans la barre
   (Webflow force .dropdown-list.w--open{position:static} → inline indenté). */
.dropdown-list.w--open {
  background-color: var(--gk-glass) !important;
  border: 1px solid var(--gk-border-subtle) !important;
  border-radius: var(--gk-radius-lg) !important;
  box-shadow: var(--gk-shadow) !important;
  padding: 4px !important;
  padding-left: 36px !important;
  margin-top: 4px !important;
  -webkit-backdrop-filter: var(--gk-blur);
  backdrop-filter: var(--gk-blur);
}
.dropdown-list .link-block,
.dropdown-link {
  border-radius: var(--gk-radius-sm) !important;
  color: #fff;
  transition: background-color .18s ease, color .18s ease;
}
.dropdown-list .link-block:hover,
.dropdown-link:hover {
  background-color: var(--gk-glass-md) !important;
  color: #fff !important;
}
.dropdown-list .link-block.w--current,
.dropdown-list .link-block.w--current .dropdown-link {
  background-color: rgba(94, 231, 223, .18) !important;
  color: var(--gk-aqua) !important;
}
/* chevron (CaretUpDown.svg = double ↕) : éclairé à l'ouverture (rotation = no-op) */
.icon-navigation_dropdown { opacity: .55; transition: opacity .18s ease, transform .18s ease; }
.w--open .icon-navigation_dropdown { opacity: 1; transform: scale(1.05); }

/* ── Reflet « verre » du kit (--reflection-top) posé en FOND (derrière le contenu,
   jamais en ::before qui recouvrirait le texte) sur les surfaces dépolies. ── */
.home_container, .overview_card, .card_keup,
.breadcrumb, .tabs-menu.w-tab-menu, .dropdown-list.w--open,
.btn, .button, .w-button, .video_button_container {
  background-image: var(--gk-reflection) !important;
}

/* ── Lisibilité des gros titres en dégradé clippé : drop-shadow survit au clip
   (contrairement à text-shadow) → titre net même sur un blob de couleur. ── */
.heading_1, .heading_2, .techniques_heading {
  filter: drop-shadow(0 1px 8px rgba(0, 0, 0, .35));
}

/* ── Vidéos par mouvement (fiche poomsae, onglet « Vue détaillée ») : se lancent
   au SURVOL, comme l'app mobile. Injectées par glass-site.js dans .details_video. */
.details_video.gk-movvid {
  position: relative;
  overflow: hidden;
  cursor: pointer;
  border-radius: var(--gk-radius);
  background: #000;
  aspect-ratio: 1 / 1;            /* clips carrés (1360×1360) */
}
.details_video.gk-movvid video {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover; display: block;
}
.details_video.gk-movvid .gk-movvid-overlay {
  position: absolute; inset: 0; z-index: 2;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
  pointer-events: none; color: #fff;
  background: rgba(0, 0, 0, .22);
  transition: opacity .25s ease;
}
.details_video.gk-movvid:hover .gk-movvid-overlay { opacity: 0; }
.details_video.gk-movvid .gk-movvid-play { font-size: 1.5rem; filter: drop-shadow(0 1px 4px rgba(0, 0, 0, .55)); }
.details_video.gk-movvid .gk-movvid-hint { font-size: .6rem; letter-spacing: .04em; text-transform: uppercase; opacity: .82; }

/* ----------------------------------------------------------------------------
   12. Skeleton Loader (style UI Kit) sur les images pendant le chargement
   -------------------------------------------------------------------------- */
img.gk-img-loading {
  background-color: var(--gk-glass);
  background-image: linear-gradient(90deg,
    rgba(255, 255, 255, 0) 0%,
    rgba(255, 255, 255, .16) 40%,
    rgba(255, 255, 255, .26) 50%,
    rgba(255, 255, 255, .16) 60%,
    rgba(255, 255, 255, 0) 100%);
  background-size: 200% 100%;
  background-repeat: no-repeat;
  animation: gkSkeletonShimmer 1.6s linear infinite;
  color: transparent;                 /* masque l'alt-text pendant le chargement */
}
img.gk-img-loaded { animation: none !important; background-image: none !important; background-color: transparent !important; color: inherit; }
@keyframes gkSkeletonShimmer { from { background-position: -150% 0; } to { background-position: 150% 0; } }

@media (prefers-reduced-motion: reduce) {
  .gk-scene .gk-blob { animation: none !important; }
  img.gk-img-loading { animation: none !important; }
  .home_grid_item, .home_grid_img, .overview_card, .card_keup,
  .container_link_store, .video_button_container, .navbar__shortcut,
  .navbar__link, .dropdown-toggle, .dropdown-link, .top-nav-link { transition: none !important; }
}

/* ============================================================================
   13. Compte (connexion / inscription) + Favoris — « iso » app mobile
   ----------------------------------------------------------------------------
   Injecté par js/tkd-account.js. Style kit : verre dépoli, aqua/violet.
   ========================================================================== */
body.gk-modal-open { overflow: hidden; }

/* —— Bouton compte dans la navbar (.nav_bottom) —— */
.gk-acct-wrap { position: relative; width: 100%; box-sizing: border-box; margin: 0 0 10px; }
.gk-acct-btn {
  display: flex; align-items: center; gap: 10px; width: 100%;
  padding: 8px 12px; cursor: pointer;
  font: 600 14px/1.2 "Inter", sans-serif; color: var(--gk-text);
  background-color: var(--gk-glass); border: 1px solid var(--gk-border);
  border-radius: var(--gk-radius-full);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25);
  -webkit-backdrop-filter: var(--gk-blur); backdrop-filter: var(--gk-blur);
  transition: background-color .18s ease, transform .18s cubic-bezier(.34, 1.56, .64, 1);
}
.gk-acct-btn:hover { background-color: var(--gk-glass-md); transform: translateY(-1px); }
.gk-acct-ic { display: grid; place-items: center; width: 24px; height: 24px; flex: 0 0 auto; }
.gk-acct-ic svg { display: block; }
.gk-acct-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gk-acct-avatar {
  flex: 0 0 auto; display: grid; place-items: center;
  width: 28px; height: 28px; border-radius: 50%;
  font: 700 12px/1 "Inter", sans-serif; color: #050A14;
  background: linear-gradient(135deg, var(--gk-aqua), var(--gk-violet));
}
/* IMPORTANT : .gk-acct-menu et .gk-field ont display:flex → l'attribut [hidden]
   (UA display:none) est écrasé. On force le masquage explicitement. */
.gk-acct-menu[hidden], .gk-field[hidden] { display: none !important; }
/* menu (popover au-dessus du bouton, ancré en bas de la sidebar ; peut déborder
   à droite sur le contenu pour éviter que le texte se coupe) */
.gk-acct-menu {
  position: absolute; left: 0; right: auto; bottom: calc(100% + 10px); z-index: 1500;
  min-width: 212px; max-width: 280px;
  display: flex; flex-direction: column; gap: 2px; padding: 6px;
  background-color: rgba(13, 16, 26, .80); border: 1px solid var(--gk-border-bright);
  border-radius: var(--gk-radius); box-shadow: var(--gk-shadow-float);
  -webkit-backdrop-filter: var(--gk-blur-lg); backdrop-filter: var(--gk-blur-lg);
}
.gk-acct-mi {
  display: flex; align-items: center; gap: 10px; width: 100%;
  padding: 9px 10px; cursor: pointer; text-align: left; white-space: nowrap;
  font: 500 13.5px/1.2 "Inter", sans-serif; color: var(--gk-text);
  background: transparent; border: 0; border-radius: var(--gk-radius-sm);
  transition: background-color .15s ease;
}
.gk-acct-mi svg { flex: 0 0 auto; opacity: .85; }
.gk-acct-mi:hover { background-color: var(--gk-glass-md); }
.gk-acct-mi:hover svg { opacity: 1; }
.gk-acct-mi.is--danger { color: #ffb4b4; }
.gk-acct-count {
  margin-left: auto; padding: 1px 8px; border-radius: var(--gk-radius-full);
  font-size: 12px; font-weight: 700; color: #050A14; background: var(--gk-aqua);
}

/* —— Modale d'auth —— */
.gk-modal { position: fixed; inset: 0; z-index: 9999; display: grid; place-items: center; }
.gk-modal[hidden], .gk-drawer[hidden] { display: none; }
.gk-modal-backdrop, .gk-drawer-backdrop {
  position: absolute; inset: 0; background: rgba(6, 8, 16, .62);
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
}
.gk-modal-card {
  position: relative; z-index: 1; width: min(92vw, 420px);
  max-height: 92vh; overflow: auto; padding: 26px 24px 22px;
  background-color: rgba(20, 24, 40, .72); border: 1px solid var(--gk-border);
  border-radius: var(--gk-radius-lg); box-shadow: var(--gk-shadow-float);
  -webkit-backdrop-filter: var(--gk-blur-lg); backdrop-filter: var(--gk-blur-lg);
}
.gk-modal-card.is--busy { opacity: .6; pointer-events: none; }
.gk-modal-x {
  position: absolute; top: 12px; right: 12px; width: 32px; height: 32px;
  display: grid; place-items: center; cursor: pointer; color: var(--gk-muted);
  background: var(--gk-glass); border: 1px solid var(--gk-border-subtle);
  border-radius: 50%; font-size: 14px; transition: color .15s, background-color .15s;
}
.gk-modal-x:hover { color: var(--gk-text); background: var(--gk-glass-md); }
.gk-modal-title { margin: 2px 0 16px; padding-right: 28px;
  font-family: "GT Sectra Display", serif; font-weight: 500; font-size: 24px;
  line-height: 1.15; color: var(--gk-text); }
.gk-modal-tabs { display: flex; gap: 6px; margin: 0 0 18px; padding: 4px;
  background: var(--gk-glass); border-radius: var(--gk-radius-full); }
.gk-modal-tab {
  flex: 1; padding: 9px 12px; cursor: pointer;
  font: 600 14px/1 "Inter", sans-serif; color: var(--gk-muted);
  background: transparent; border: 0; border-radius: var(--gk-radius-full);
  transition: background-color .18s, color .18s;
}
.gk-modal-tab.is--active { color: var(--gk-text); background-color: var(--gk-glass-md);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25); }
.gk-modal-form { display: flex; flex-direction: column; gap: 13px; }
.gk-field { display: flex; flex-direction: column; gap: 5px; }
.gk-field > span { font: 500 12.5px/1 "Inter", sans-serif; color: var(--gk-muted); }
.gk-field input {
  width: 100%; padding: 11px 13px; box-sizing: border-box;
  font: 400 15px/1.3 "Inter", sans-serif; color: var(--gk-text);
  background-color: var(--gk-glass); border: 1px solid var(--gk-border);
  border-radius: var(--gk-radius-md); outline: none;
  transition: border-color .15s, box-shadow .15s;
}
.gk-field input::placeholder { color: var(--gk-muted); }
.gk-field input:focus { border-color: var(--gk-aqua); box-shadow: 0 0 0 3px rgba(94, 231, 223, .22); }
.gk-modal-forgot {
  align-self: flex-end; margin-top: -4px; padding: 2px 0; cursor: pointer;
  font: 500 12.5px/1 "Inter", sans-serif; color: var(--gk-aqua);
  background: none; border: 0;
}
.gk-modal-forgot:hover { text-decoration: underline; }
.gk-modal-error {
  padding: 9px 12px; border-radius: var(--gk-radius-sm);
  font: 500 13px/1.35 "Inter", sans-serif; color: #ffd0d0;
  background: rgba(248, 113, 113, .14); border: 1px solid rgba(248, 113, 113, .32);
}
.gk-modal-error.is--ok { color: #c8ffe2; background: rgba(94, 231, 223, .14); border-color: rgba(94, 231, 223, .34); }
.gk-modal-submit {
  margin-top: 4px; padding: 12px 16px; cursor: pointer;
  font: 700 15px/1 "Inter", sans-serif; color: #050A14;
  background: linear-gradient(135deg, var(--gk-aqua), var(--gk-violet));
  border: 0; border-radius: var(--gk-radius-full);
  box-shadow: 0 6px 20px rgba(94, 231, 223, .28); transition: transform .15s, filter .15s;
}
.gk-modal-submit:not([disabled]):hover { transform: translateY(-1px); filter: brightness(1.05); }
.gk-modal-submit[disabled] { opacity: .55; cursor: default; }
.gk-modal-or { display: flex; align-items: center; gap: 12px; margin: 16px 0; color: var(--gk-muted);
  font: 500 12px/1 "Inter", sans-serif; }
.gk-modal-or::before, .gk-modal-or::after { content: ""; flex: 1; height: 1px; background: var(--gk-border-subtle); }
.gk-modal-providers { display: flex; flex-direction: column; gap: 9px; }
.gk-prov {
  display: flex; align-items: center; justify-content: center; gap: 9px;
  padding: 11px 14px; cursor: pointer;
  font: 600 14px/1 "Inter", sans-serif; color: var(--gk-text);
  background-color: var(--gk-glass); border: 1px solid var(--gk-border);
  border-radius: var(--gk-radius-full); transition: background-color .15s, transform .15s;
}
.gk-prov:hover { background-color: var(--gk-glass-md); transform: translateY(-1px); }
.gk-prov-ic { display: grid; place-items: center; width: 18px; height: 18px; flex: 0 0 auto; }
.gk-prov-ic svg { display: block; }

/* —— Cœur favori (fiches poomsae, dans .top_nav) —— */
.top_nav:has(.gk-fav-heart) { display: flex; align-items: center; gap: 12px; }
/* cœur À CÔTÉ de la barre d'onglets : enfant de .tabs-menu posé en absolu juste à droite
   de la pilule (sans wrapper → onglets Webflow intacts) */
.tabs-menu.w-tab-menu:has(.gk-fav-heart) { position: relative; overflow: visible; }
.tabs-menu.w-tab-menu .gk-fav-heart { position: absolute; left: calc(100% + 8px); top: 50%; margin-top: -18px; }
.gk-fav-heart {
  flex: 0 0 auto; display: grid; place-items: center;
  width: 36px; height: 36px; cursor: pointer; color: var(--gk-muted);
  background-color: var(--gk-glass); border: 1px solid var(--gk-border);
  border-radius: 50%; box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25);
  -webkit-backdrop-filter: var(--gk-blur); backdrop-filter: var(--gk-blur);
  transition: transform .18s cubic-bezier(.34, 1.56, .64, 1), background-color .15s, color .15s;
}
.gk-fav-heart:hover { color: var(--gk-text); background-color: var(--gk-glass-md); transform: translateY(-1px); }
.gk-fav-heart.is--on { border-color: rgba(248, 113, 113, .5); background-color: rgba(248, 113, 113, .14); }
.gk-fav-heart svg { display: block; }

/* —— Tiroir « Mes favoris » —— */
.gk-drawer { position: fixed; inset: 0; z-index: 9998; }
.gk-drawer-panel {
  position: absolute; top: 0; right: 0; height: 100%; width: min(92vw, 360px);
  display: flex; flex-direction: column; padding: 20px 18px;
  background-color: rgba(20, 24, 40, .82); border-left: 1px solid var(--gk-border);
  box-shadow: var(--gk-shadow-float);
  -webkit-backdrop-filter: var(--gk-blur-lg); backdrop-filter: var(--gk-blur-lg);
}
.gk-drawer-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }
.gk-drawer-head h3 { margin: 0; font-family: "GT Sectra Display", serif; font-weight: 500;
  font-size: 22px; color: var(--gk-text); }
.gk-drawer-x {
  width: 32px; height: 32px; display: grid; place-items: center; cursor: pointer;
  color: var(--gk-muted); background: var(--gk-glass); border: 1px solid var(--gk-border-subtle);
  border-radius: 50%; transition: color .15s, background-color .15s;
}
.gk-drawer-x:hover { color: var(--gk-text); background: var(--gk-glass-md); }
.gk-drawer-list { display: flex; flex-direction: column; gap: 9px; overflow: auto; }
.gk-drawer-empty { margin: 24px 4px; color: var(--gk-muted); font: 400 14px/1.5 "Inter", sans-serif; text-align: center; }
.gk-fav-item {
  display: flex; align-items: center; gap: 12px; padding: 10px 12px;
  text-decoration: none; color: var(--gk-text);
  background-color: var(--gk-glass); border: 1px solid var(--gk-border-subtle);
  border-radius: var(--gk-radius); transition: background-color .15s, transform .15s;
}
.gk-fav-item:hover { background-color: var(--gk-glass-md); transform: translateX(-2px); }
.gk-fav-ko { flex: 0 0 auto; width: 40px; text-align: center;
  font-family: "GT Sectra Display", serif; font-size: 22px; color: var(--gk-aqua); }
.gk-fav-name { flex: 1; font: 600 14.5px/1.2 "Inter", sans-serif; }
.gk-fav-rm {
  flex: 0 0 auto; width: 26px; height: 26px; display: grid; place-items: center;
  cursor: pointer; color: var(--gk-muted); background: transparent;
  border: 1px solid transparent; border-radius: 50%; font-size: 12px;
  transition: color .15s, background-color .15s, border-color .15s;
}
.gk-fav-rm:hover { color: #ffb4b4; background: rgba(248, 113, 113, .14); border-color: rgba(248, 113, 113, .32); }

@media (prefers-reduced-motion: reduce) {
  .gk-acct-btn, .gk-prov, .gk-fav-heart, .gk-fav-item, .gk-modal-submit { transition: none !important; }
}

/* ============================================================================
   14. Nav sans dropdowns (liens directs) + section Favoris + pages hub
   ========================================================================== */
/* le caret des dropdowns est masqué (les dropdowns deviennent des liens via JS) */
.navbar__link_dropdown .icon-navigation_dropdown { display: none !important; }

/* —— Section « Favoris » de la sidebar (remplace « Raccourcis ») —— */
.gk-favnav-empty {
  grid-column: 1 / -1; padding: 6px 4px; text-align: center;
  font: 400 11.5px/1.5 "Inter", sans-serif; color: var(--gk-muted);
}
/* —— Boutons stores (App Store + Google Play) sur UNE ligne, pleine largeur —— */
.nav_bottom .flex_store { display: flex; flex-direction: row; gap: 8px; width: 100%; box-sizing: border-box; }
.gk-store-btn {
  flex: 1 1 0; min-width: 0; box-sizing: border-box;
  display: flex; flex-direction: row; align-items: center; justify-content: center; gap: 7px;
  padding: 11px 8px; text-decoration: none; cursor: pointer; white-space: nowrap;
  font: 600 10px/1.1 "Inter", sans-serif; letter-spacing: .01em; color: var(--gk-text);
  background-color: var(--gk-glass); border: 1px solid var(--gk-border);
  border-radius: var(--gk-radius); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .22);
  -webkit-backdrop-filter: var(--gk-blur); backdrop-filter: var(--gk-blur);
  transition: background-color .15s ease, transform .15s ease;
}
.gk-store-btn:hover { background-color: var(--gk-glass-md); transform: translateY(-1px); }
.gk-store-btn svg { display: block; flex: 0 0 auto; }

/* —— Placeholder « pas de vidéo » (mouvement sans clip) —— */
.details_video.gk-movvid-none {
  display: grid; place-items: center; background: var(--gk-glass);
  border: 1px dashed var(--gk-border-bright);
}
.gk-movvid-none-in { display: flex; flex-direction: column; align-items: center; gap: 7px; color: var(--gk-muted); }
.gk-movvid-none-in span { font: 500 12px/1.2 "Inter", sans-serif; }

/* —— Fil d'Ariane = composant kit .glass-breadcrumb (exact) —— */
.glass-breadcrumb {
  display: inline-flex; align-items: center; padding: 6px 8px; flex-wrap: nowrap; max-width: 100%;
  border-radius: var(--gk-radius-full);
  background-color: var(--gk-glass); border: 1px solid var(--gk-border); box-shadow: var(--gk-shadow);
  -webkit-backdrop-filter: var(--gk-blur); backdrop-filter: var(--gk-blur);
}
.glass-breadcrumb__crumb {
  display: inline-flex; align-items: center; gap: 6px; padding: 6px 14px;
  border-radius: var(--gk-radius-full); font: 500 14px/1 "Inter", sans-serif;
  color: var(--gk-text); text-decoration: none; white-space: nowrap; cursor: pointer;
  transition: background-color .18s ease, color .18s ease, transform .18s cubic-bezier(.34, 1.56, .64, 1);
}
.glass-breadcrumb__crumb:hover { background-color: rgba(255, 255, 255, .12); transform: translateY(-1px); }
.glass-breadcrumb__crumb--active {
  background-color: var(--gk-glass-md); border: 1px solid var(--gk-border);
  box-shadow: 0 2px 12px rgba(0, 0, 0, .2); cursor: default; pointer-events: none;
}
.glass-breadcrumb__crumb--active:hover { transform: none; }
.glass-breadcrumb__crumb-icon { font-size: .85em; opacity: .7; }
.glass-breadcrumb__sep {
  display: inline-flex; align-items: center; justify-content: center; width: 16px; flex-shrink: 0;
  opacity: .25; font-size: .8em; pointer-events: none; user-select: none;
}

/* ============================================================================
   15. Mode clair AUTO — appliqué par JS (.gk-light) quand le fond est trop clair.
   Redéfinit les tokens --gk-* (mirror du kit [data-theme="light"]) → tout
   composant verre devient lisible (texte sombre, verre blanc opaque).
   ========================================================================== */
.gk-light {
  --gk-text: #0f172a;
  --gk-muted: rgba(15, 23, 42, .62);
  --gk-glass: rgba(255, 255, 255, .62);
  --gk-glass-md: rgba(255, 255, 255, .80);
  --gk-glass-strong: rgba(255, 255, 255, .90);
  --gk-glass-lg: rgba(255, 255, 255, .92);
  --gk-border: rgba(15, 23, 42, .20);
  --gk-border-subtle: rgba(15, 23, 42, .10);
  --gk-border-bright: rgba(15, 23, 42, .30);
  --gk-aqua: #0891b2;
  --gk-violet: #6d28d9;
  --gk-shadow: 0 8px 32px rgba(0, 0, 0, .10), inset 0 1px 0 rgba(255, 255, 255, .9);
  --gk-amber: #0891b2; --gk-rose: #be1b3e; --gk-gold: #8a6d1c;
}
/* overrides là où une couleur claire est codée en dur (onglets, hover breadcrumb) */
.gk-light.tabs-menu .tab.w-tab-link,
.gk-light .tab.w-tab-link { color: var(--gk-text) !important; }
.gk-light.tabs-menu .tab:hover,
.gk-light .tabs-menu .tab:hover { background: rgba(15, 23, 42, .06) !important; color: #0f172a !important; }
.gk-light.tabs-menu .tab.w--current,
.gk-light .tab.w--current { background: rgba(255, 255, 255, .85) !important; color: #0f172a !important; border-color: rgba(15, 23, 42, .20) !important; }
.gk-light.glass-breadcrumb .glass-breadcrumb__crumb:hover { background-color: rgba(15, 23, 42, .07); }
.gk-light.glass-breadcrumb .glass-breadcrumb__sep { opacity: .4; }

/* —— Pages hub (poomsae.html, ressources.html) —— */
.gk-hub-wrap { width: 100%; max-width: 920px; box-sizing: border-box; margin: 8px auto 0; padding: 0 4px; }
.gk-hub-title {
  margin: 0 0 4px; font-family: "GT Sectra Display", serif; font-weight: 500;
  font-size: 34px; line-height: 1.1; color: var(--gk-text);
}
.gk-hub-intro { margin: 0 0 22px; font: 400 15px/1.5 "Inter", sans-serif; color: var(--gk-muted); }
.gk-hub-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 16px; }
.gk-hub-card {
  position: relative; display: flex; flex-direction: column; gap: 5px;
  padding: 22px 20px 20px; text-decoration: none; overflow: hidden;
  background-color: var(--gk-glass); border: 1px solid var(--gk-border);
  border-radius: var(--gk-radius-lg); box-shadow: var(--gk-shadow);
  -webkit-backdrop-filter: var(--gk-blur); backdrop-filter: var(--gk-blur);
  transition: transform .18s cubic-bezier(.34, 1.56, .64, 1), background-color .18s, box-shadow .18s;
}
.gk-hub-card::before {
  content: ""; position: absolute; inset: 0; border-radius: inherit;
  background: var(--gk-reflection); pointer-events: none;
}
a.gk-hub-card:hover { transform: translateY(-3px); background-color: var(--gk-glass-md); box-shadow: var(--gk-shadow-float); }
.gk-hub-ko {
  font-family: "GT Sectra Display", serif; font-size: 40px; line-height: 1;
  color: var(--gk-aqua); margin-bottom: 4px;
}
.gk-hub-name { font: 700 19px/1.2 "Inter", sans-serif; color: var(--gk-text); }
.gk-hub-sub { font: 400 13.5px/1.45 "Inter", sans-serif; color: var(--gk-muted); }
.gk-hub-card.is--soon { opacity: .55; cursor: default; }
.gk-hub-soon-badge {
  position: absolute; top: 12px; right: 12px; z-index: 1;
  padding: 2px 9px; border-radius: var(--gk-radius-full);
  font: 600 10.5px/1.4 "Inter", sans-serif; letter-spacing: .04em; text-transform: uppercase;
  color: var(--gk-text); background: var(--gk-glass-md); border: 1px solid var(--gk-border-subtle);
}

/* ===================== §16 — Mode debug (provenance) =====================
   Activé par `body.gk-debug-on` (gk-debug.js). Surligne tout `[data-gk-src]`,
   couleur selon la source (en phase avec l'objet SRC de gk-debug.js). */
body.gk-debug-on [data-gk-src] { --gk-c: #9fb0c8; cursor: help; }
body.gk-debug-on [data-gk-src="airtable"]  { --gk-c: var(--gk-aqua); }
body.gk-debug-on [data-gk-src="video"]     { --gk-c: var(--gk-amber); }
body.gk-debug-on [data-gk-src="favorites"] { --gk-c: var(--gk-violet); }
body.gk-debug-on [data-gk-src="theme"]     { --gk-c: var(--gk-rose); }
body.gk-debug-on [data-gk-src="breadcrumb"]{ --gk-c: #9fb0c8; }

/* Voile noir & blanc : toute la page passe en gris (backdrop-filter sur un voile
   plein écran). SAUF ce qui est AU-DESSUS du voile = les éléments dynamiques
   (z-index relevé), le tooltip et la légende → les couleurs du debug ressortent. */
body.gk-debug-on::before {
  content: ""; position: fixed; inset: 0; z-index: 9000; pointer-events: none;
  -webkit-backdrop-filter: grayscale(1); backdrop-filter: grayscale(1);
}

/* Marqueur universel : contour pointillé + AU-DESSUS du voile (garde la couleur) */
body.gk-debug-on [data-gk-src] {
  position: relative; z-index: 9001;
  outline: 1px dashed var(--gk-c); outline-offset: 2px; border-radius: 0;
}
/* Texte : soulignement ondulé coloré + ⚡ en exposant */
body.gk-debug-on [data-gk-src]:not(img):not(.details_video) {
  text-decoration: underline wavy var(--gk-c);
  text-underline-offset: 3px; -webkit-text-decoration-color: var(--gk-c);
}
body.gk-debug-on [data-gk-src]:not(img):not(.details_video)::after {
  content: "⚡"; font-size: .78em; margin-left: 3px; vertical-align: super; line-height: 0;
  color: var(--gk-c); -webkit-text-fill-color: var(--gk-c); text-decoration: none;
}
/* Images & emplacements vidéo : contour fort + halo (::after ne rend pas sur <img>) */
body.gk-debug-on img[data-gk-src],
body.gk-debug-on .details_video[data-gk-src] {
  outline: 2px dashed var(--gk-c); outline-offset: 2px;
  box-shadow: 0 0 0 1px rgba(0,0,0,.25), 0 0 14px var(--gk-c);
}
/* État « fallback » (devrait être live mais proxy KO) : pointillés + atténué */
body.gk-debug-on [data-gk-src="airtable"][data-gk-state="fallback"] {
  text-decoration-style: dotted; opacity: .82;
}

/* —— Tooltip de provenance —— */
.gk-dbg-tip {
  position: fixed; z-index: 100000; max-width: 360px; pointer-events: none;
  padding: 11px 13px; border-radius: var(--gk-radius);
  color: var(--gk-text); font: 400 12.5px/1.5 "Inter", sans-serif;
  background: rgba(12,16,28,.88); border: 1px solid var(--gk-border);
  -webkit-backdrop-filter: var(--gk-blur); backdrop-filter: var(--gk-blur);
  box-shadow: var(--gk-shadow);
}
.gk-dbg-tip-h { font: 700 13.5px/1.2 "Inter", sans-serif; margin-bottom: 2px; }
.gk-dbg-tip-note { color: var(--gk-muted); font-style: italic; margin-bottom: 7px; }
.gk-dbg-tip-r { margin-top: 4px; word-break: break-word; }
.gk-dbg-tip-r b { display: inline-block; min-width: 78px; color: var(--gk-muted); font-weight: 600; margin-right: 6px; }

/* —— Panneau légende (coin bas-droite) —— */
.gk-dbg-legend {
  position: fixed; right: 16px; bottom: 16px; z-index: 99999; width: 236px;
  padding: 13px 14px; border-radius: var(--gk-radius-lg);
  color: var(--gk-text); font: 400 12.5px/1.4 "Inter", sans-serif;
  background: rgba(12,16,28,.84); border: 1px solid var(--gk-border);
  -webkit-backdrop-filter: var(--gk-blur); backdrop-filter: var(--gk-blur);
  box-shadow: var(--gk-shadow-float, var(--gk-shadow));
}
.gk-dbg-leg-h { font: 700 14px/1.2 "Inter", sans-serif; margin-bottom: 9px; }
.gk-dbg-leg-sub { display: block; font: 400 11px/1.3 "Inter", sans-serif; color: var(--gk-muted); margin-top: 2px; }
.gk-dbg-leg-row { display: flex; align-items: center; gap: 8px; padding: 3px 0; }
.gk-dbg-leg-row.is--empty { opacity: .4; }
.gk-dbg-leg-dot { width: 11px; height: 11px; border-radius: 50%; flex: 0 0 auto; box-shadow: 0 0 7px currentColor; }
.gk-dbg-leg-lbl { flex: 1 1 auto; }
.gk-dbg-leg-n { font-weight: 700; font-variant-numeric: tabular-nums; }
.gk-dbg-leg-off {
  margin-top: 11px; width: 100%; padding: 7px 0; cursor: pointer;
  font: 600 12.5px/1 "Inter", sans-serif; color: var(--gk-text);
  background: var(--gk-glass-md); border: 1px solid var(--gk-border); border-radius: var(--gk-radius);
}
.gk-dbg-leg-off:hover { background: var(--gk-glass-lg); }

/* —— Item « Mode debug » du menu compte —— */
.gk-acct-mi--debug.is--on { color: var(--gk-aqua); }
.gk-acct-mi--debug .gk-dbg-state { background: var(--gk-glass-md); color: var(--gk-text); }
.gk-acct-mi--debug.is--on .gk-dbg-state { background: var(--gk-aqua); color: #050A14; }

/* ===================== §17 — Ressources : CARTES « BLUEPRINT » (repliées) ====================
   Langage planche technique : papier millimétré sombre, repères d'angle, plaque FIG, photo en
   planche, schéma de pieds (seogi) posé sur fond sombre (PNG transparents → pieds visibles, AUCUN
   fond blanc), nom gravé. Cyan = accent léger. Scopé `.gk-res-detail` (n'affecte pas les poomsae).
   Décorations FIG/repères/APPUIS + ouverture en place = js/ressources-blueprint.js. */
.gk-res-detail .w-dyn-list { width: 100%; }
.gk-res-detail .w-dyn-items {
  display: grid !important;
  grid-template-columns: repeat(auto-fill, minmax(252px, 1fr));
  gap: 20px; align-items: stretch;
}
.gk-res-detail .collection-item {
  position: relative; cursor: pointer; display: flex; flex-direction: column;
  border-radius: 8px; overflow: hidden;
  background-color: #0c1322;
  background-image:
    linear-gradient(rgba(150,175,195,.045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(150,175,195,.045) 1px, transparent 1px),
    linear-gradient(rgba(150,175,195,.075) 1px, transparent 1px),
    linear-gradient(90deg, rgba(150,175,195,.075) 1px, transparent 1px);
  background-size: 13px 13px, 13px 13px, 65px 65px, 65px 65px;
  background-position: center;
  border: 1px solid rgba(255,255,255,.13);
  box-shadow: 0 8px 26px rgba(0,0,0,.32);
  transition: transform .25s, border-color .25s, box-shadow .25s;
}
.gk-res-detail .collection-item:hover {
  transform: translateY(-4px); border-color: rgba(94,231,223,.4);
  box-shadow: 0 18px 40px rgba(0,0,0,.45), 0 0 22px rgba(94,231,223,.10);
}
.gk-res-detail .details_container { display: flex !important; flex-direction: column; gap: 0; padding: 0 !important; height: 100%; }
/* en-tête FIG (injecté) */
.gk-res-detail .bp-top {
  order: -3; display: flex; align-items: center; justify-content: space-between;
  padding: 11px 15px; font-family: ui-monospace, Menlo, monospace; font-size: 10px;
  letter-spacing: .16em; text-transform: uppercase; color: rgba(255,255,255,.55);
  border-bottom: 1px dashed rgba(255,255,255,.14);
}
.gk-res-detail .bp-top .bp-fig { color: rgba(120,205,200,.85); }
.gk-res-detail .bp-top .bp-ref { color: rgba(255,255,255,.4); }
/* plate photo = ENTIÈRE (contain), aucun crop */
.gk-res-detail .details_card {
  order: -2; position: relative; margin: 14px 14px 0; height: 150px;
  display: flex; align-items: center; justify-content: center; overflow: hidden;
  background: rgba(255,255,255,.025); border: 1px dashed rgba(255,255,255,.14); border-radius: 8px; padding: 12px;
}
.gk-res-detail .main-img {
  max-width: 100% !important; max-height: 100% !important; width: auto !important; height: auto !important;
  object-fit: contain !important; aspect-ratio: auto !important; display: block; border-radius: 8px !important;
}
/* bande APPUIS (seogi) : pieds sur fond SOMBRE, jamais de fond blanc */
.gk-res-detail .details_foot {
  order: -1; position: relative; margin: 11px 14px 0; height: 120px;
  display: flex; align-items: center; justify-content: center; overflow: hidden;
  padding: 18px 10px 10px; background: rgba(255,255,255,.02); border: 1px dashed rgba(255,255,255,.14); border-radius: 8px;
}
.gk-res-detail .details_foot .bp-footlab {
  position: absolute; top: 6px; left: 9px; font-family: ui-monospace, Menlo, monospace;
  font-size: 8px; letter-spacing: .14em; color: rgba(190,205,210,.6);
}
.gk-res-detail .details_foot_image {
  max-width: 100% !important; max-height: 100% !important; width: auto !important; height: auto !important;
  object-fit: contain !important; aspect-ratio: auto !important; border-radius: 8px !important;
  transform: scale(1.42); filter: brightness(1.08) contrast(1.04);
}
/* nom gravé + traduction (mono) */
.gk-res-detail .detais_text { order: 0; flex: 1 1 auto; padding: 12px 16px 16px; text-align: left; }
.gk-res-detail .techniques_heading {
  margin: 0 0 3px; font-family: "GT Sectra Display", Georgia, serif; font-weight: 500; font-size: 17px; letter-spacing: .02em;
}
.gk-res-detail .techniques_heading::after {
  content: ""; display: block; width: 26px; height: 2px; margin-top: 7px;
  background: linear-gradient(90deg, rgba(94,231,223,.55), transparent);
}
.gk-res-detail .desc {
  margin: 8px 0 0 !important; font-family: ui-monospace, Menlo, monospace; font-size: 11px;
  letter-spacing: .05em; text-transform: uppercase; color: var(--gk-muted); text-align: left !important;
}
.gk-res-detail .container-bottom { display: none; }
/* repères d'angle + indice (injectés) */
.gk-res-detail .reg { position: absolute; width: 9px; height: 9px; z-index: 5; opacity: .5; pointer-events: none; }
.gk-res-detail .reg::before, .gk-res-detail .reg::after { content: ""; position: absolute; background: rgba(255,255,255,.42); }
.gk-res-detail .reg::before { width: 9px; height: 1px; top: 4px; }
.gk-res-detail .reg::after { width: 1px; height: 9px; left: 4px; }
.gk-res-detail .reg-tl { top: 6px; left: 6px; } .gk-res-detail .reg-tr { top: 6px; right: 6px; }
.gk-res-detail .reg-bl { bottom: 6px; left: 6px; } .gk-res-detail .reg-br { bottom: 6px; right: 6px; }
/* indice « voir la planche » : DANS le flux, sous la description (jamais de chevauchement) */
.gk-res-detail .bp-open {
  display: block; margin-top: 10px; text-align: right;
  font-family: ui-monospace, Menlo, monospace; font-size: 10px; letter-spacing: .14em;
  color: rgba(94,231,223,.72); opacity: 0; transition: opacity .2s;
}
.gk-res-detail .collection-item:hover .bp-open { opacity: 1; }

/* ===================== §18 — Ressources : PLANCHE ouverte EN PLACE (blueprint) ====================
   Au clic, la carte prend toute la largeur et la planche s'affiche DEDANS (js/ressources-blueprint.js).
   Données réelles uniquement (photo, schéma de pieds seogi, traduction, autres positions de la page). */
.gk-res-detail .collection-item.is-open { grid-column: 1 / -1; cursor: default; }
.gk-res-detail .collection-item.is-open .details_container,
.gk-res-detail .collection-item.is-open > .reg,
.gk-res-detail .collection-item.is-open > .bp-open { display: none !important; }
.gk-res-detail .bp-planche { position: relative; padding: 30px 30px 36px; animation: bpPlOpen .4s cubic-bezier(.2,.85,.25,1) both; }
@keyframes bpPlOpen { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.gk-res-detail .bp-close {
  position: absolute; top: 18px; right: 18px; width: 42px; height: 42px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center; cursor: pointer; font-size: 17px; color: #fff;
  background: rgba(5,10,20,.6); border: 1px solid var(--gk-border-bright); transition: transform .25s, background .25s; z-index: 10;
}
.gk-res-detail .bp-close:hover { transform: rotate(90deg) scale(1.06); background: rgba(247,168,196,.3); }
.gk-res-detail .bp-pl-head {
  display: flex; justify-content: space-between; align-items: flex-start; gap: 20px; padding-right: 54px;
  border-bottom: 1px dashed rgba(255,255,255,.16); padding-bottom: 18px; margin-bottom: 22px;
}
.gk-res-detail .bp-pl-kicker { font-family: ui-monospace, Menlo, monospace; font-size: 10px; letter-spacing: .22em; text-transform: uppercase; color: rgba(120,205,200,.85); }
.gk-res-detail .bp-pl-title { font-family: "GT Sectra Display", Georgia, serif; font-weight: 500; font-size: 34px; margin: 8px 0 0; letter-spacing: .01em; line-height: 1.05; }
.gk-res-detail .bp-pl-sub { font-style: italic; color: var(--gk-muted); margin: 6px 0 0; font-size: 15px; }
.gk-res-detail .bp-pl-fig { font-family: ui-monospace, Menlo, monospace; font-size: 11px; letter-spacing: .16em; color: rgba(255,255,255,.5); border: 1px solid rgba(255,255,255,.18); border-radius: 8px; padding: 6px 10px; white-space: nowrap; }
.gk-res-detail .bp-pl-lab { display: block; font-family: ui-monospace, Menlo, monospace; font-size: 9.5px; letter-spacing: .18em; text-transform: uppercase; color: rgba(190,205,210,.65); margin-bottom: 8px; }
.gk-res-detail .bp-pl-media { display: grid; gap: 18px; margin-bottom: 22px; }
.gk-res-detail .bp-pl-media.two { grid-template-columns: 1.1fr .9fr; }
.gk-res-detail .bp-pl-media.one { grid-template-columns: minmax(0, 560px); justify-content: center; }
.gk-res-detail .bp-pl-schema, .gk-res-detail .bp-pl-photo {
  position: relative; padding: 30px 16px 16px; border-radius: 8px;
  background-color: rgba(255,255,255,.025); border: 1px dashed rgba(255,255,255,.16);
  background-image: linear-gradient(rgba(150,175,195,.05) 1px, transparent 1px), linear-gradient(90deg, rgba(150,175,195,.05) 1px, transparent 1px);
  background-size: 22px 22px; display: flex; align-items: center; justify-content: center; min-height: 240px;
}
.gk-res-detail .bp-pl-schema .bp-pl-lab, .gk-res-detail .bp-pl-photo .bp-pl-lab { position: absolute; top: 12px; left: 14px; margin: 0; }
.gk-res-detail .bp-pl-schema img { max-width: 100%; max-height: 330px; object-fit: contain; transform: scale(1.05); filter: brightness(1.06); }
.gk-res-detail .bp-pl-photo img { max-width: 100%; max-height: 360px; object-fit: contain; border-radius: 8px; }
.gk-res-detail .bp-pl-notes { margin-bottom: 22px; padding: 16px 18px; border-left: 2px solid rgba(94,231,223,.5); background: rgba(255,255,255,.03); border-radius: 0 6px 6px 0; }
.gk-res-detail .bp-pl-notes p { margin: 0; color: rgba(255,255,255,.82); font-size: 15px; line-height: 1.6; }
.gk-res-detail .bp-pl-also .bp-pl-thumbs { display: flex; flex-wrap: wrap; gap: 12px; }
.gk-res-detail .bp-pl-thumb { margin: 0; width: 130px; }
.gk-res-detail .bp-pl-thumb img { width: 100%; height: 96px; object-fit: contain; background: rgba(255,255,255,.03); border: 1px dashed rgba(255,255,255,.14); border-radius: 8px; padding: 6px; }
.gk-res-detail .bp-pl-thumb figcaption { margin-top: 6px; font-size: 11px; color: var(--gk-muted); text-align: center; }
@media (max-width: 760px) { .gk-res-detail .bp-pl-media.two { grid-template-columns: 1fr; } }

/* ===================== §19 — Sidebar repliée : rail d'icônes propre + tooltips =====================
   Classe .gk-nav-collapsed posée par glass-site.js quand le rail est étroit (< 170px).
   - chaque icône a son nom en TOOLTIP au survol (élément flottant .gk-nav-tip créé en JS, sur le côté) ;
   - le bas : bouton Compte = AVATAR ROND net (JG), centré ; Store / bêta / titre Favoris retirés (réapparaissent dépliés). */
.navbar.gk-nav-collapsed .nav_bottom { padding-bottom: 14px; align-items: center; gap: 4px; }
.navbar.gk-nav-collapsed .nav_bottom .overview_label.navigation,
.navbar.gk-nav-collapsed .title-shortcut,
.navbar.gk-nav-collapsed .gk-favnav-empty { display: none !important; }
/* replié : boutons store (iOS + Android) → RONDS, même taille que le bouton compte (44px), empilés */
.navbar.gk-nav-collapsed .nav_bottom .flex_store {
  display: flex !important; flex-direction: column; align-items: center; justify-content: center; gap: 8px; width: 100%; padding: 2px 0 0;
}
.navbar.gk-nav-collapsed .nav_bottom .flex_store .gk-store-btn {
  flex: 0 0 auto; width: 44px; height: 44px; padding: 0; gap: 0; border-radius: 50%;
}
.navbar.gk-nav-collapsed .nav_bottom .flex_store .gk-store-btn span { display: none; }
/* replié : la sidebar prend son propre contexte d'empilement AU-DESSUS du contenu
   (sinon le menu compte qui déborde passe derrière des cartes en position:relative z-index) */
.navbar.gk-nav-collapsed { position: relative; z-index: 50; }
.navbar.gk-nav-collapsed .nav_bottom .gk-acct-name { display: none !important; }
.navbar.gk-nav-collapsed .nav_bottom .gk-acct-wrap { width: auto; margin: 0; display: flex; justify-content: center; }
.navbar.gk-nav-collapsed .nav_bottom .gk-acct-btn {
  width: 44px; height: 44px; min-width: 0; padding: 0; gap: 0; justify-content: center; border-radius: 50%;
}
.navbar.gk-nav-collapsed .nav_bottom .gk-acct-avatar { width: 30px; height: 30px; font-size: 13px; }
.navbar.gk-nav-collapsed .gk-acct-btn { cursor: pointer; }
/* replié : laisser le menu compte SORTIR du rail (sinon coupé) et le faire flotter à droite de l'avatar */
.navbar.gk-nav-collapsed { overflow: visible; }
.navbar.gk-nav-collapsed .gk-acct-menu {
  left: calc(100% + 12px); right: auto; bottom: 0; top: auto; min-width: 220px;
}
/* replié : sélecteur de langue → bouton rond globe-only, centré, homogène avec compte/store ;
   menu déroulant qui SORT à droite du rail (comme le menu compte). */
.navbar.gk-nav-collapsed .gk-lang { margin: 6px 0 4px; display: flex; justify-content: center; }
.navbar.gk-nav-collapsed .gk-lang-btn { width: 44px; height: 44px; min-width: 0; padding: 0; gap: 0; justify-content: center; border-radius: 50%; }
.navbar.gk-nav-collapsed .gk-lang-cur { display: none; }
.navbar.gk-nav-collapsed .gk-lang-globe { font-size: 17px; }
.navbar.gk-nav-collapsed .gk-lang-menu { left: calc(100% + 12px); right: auto; bottom: 0; min-width: 180px; }

/* tooltip flottant du rail (créé/positionné en JS → échappe au overflow:hidden de la sidebar) */
.gk-nav-tip {
  position: fixed; z-index: 9999; pointer-events: none; opacity: 0; transform: translateX(-4px);
  transition: opacity .14s ease, transform .14s ease;
  padding: 8px 13px; border-radius: 0; font: 600 12.5px/1 "Inter", system-ui, sans-serif; white-space: nowrap;
  color: var(--gk-text); background: var(--gk-glass-lg); border: 1px solid var(--gk-border-bright);
  box-shadow: var(--gk-shadow-float), inset 0 1px 0 rgba(255,255,255,.40);
  -webkit-backdrop-filter: var(--gk-blur-lg); backdrop-filter: var(--gk-blur-lg);
}
.gk-nav-tip.show { opacity: 1; transform: none; }
/* flèche = carré tourné, mais on NE garde que sa moitié EXTÉRIEURE (clip-path) → un seul
   triangle. Sinon, le corps étant translucide, la moitié intérieure du carré reste visible
   et on voit le losange entier (= 2 triangles dos à dos). */
.gk-nav-tip::before {
  content: ""; position: absolute; left: -4px; top: 50%; transform: translateY(-50%) rotate(45deg);
  width: 9px; height: 9px; background: var(--gk-glass-lg);
  border-left: 1px solid var(--gk-border-bright); border-bottom: 1px solid var(--gk-border-bright);
  clip-path: polygon(0 0, 0 100%, 100% 100%);
}


/* ===================== §20 — Logo animé nav (Circuit qui s'allume) ===================== */
.gk-logoanim{position:relative;display:inline-block;overflow:hidden;line-height:0;border-radius: 0}
.gk-logoanim svg{display:block;width:100%;height:100%}
.gk-logoanim use{fill:#fff}
.logo-navigation.gk-logoanim{padding:0;background:none;flex:0 0 32px;width:32px;min-width:32px;height:32px}
.eff-circuit{position:relative}
.eff-circuit .lg,.eff-circuit{overflow:hidden}

.eff-circuit .circuit-grid,
.eff-circuit .circuit-vig{position:absolute;inset:0;pointer-events:none;border-radius: 0}
.eff-circuit .circuit-grid{
  background-image:linear-gradient(rgba(94,231,223,.10) 1px,transparent 1px),linear-gradient(90deg,rgba(94,231,223,.10) 1px,transparent 1px);
  background-size:13px 13px;mix-blend-mode:screen;
  animation:circuit-gridpan 6s linear infinite;opacity:.5}
.eff-circuit .circuit-vig{
  background:radial-gradient(circle at 50% 50%,transparent 45%,rgba(4,8,12,.72) 100%);
  box-shadow:inset 0 0 0 1px rgba(94,231,223,.25)}
@keyframes circuit-gridpan{from{background-position:0 0,0 0}to{background-position:13px 13px,13px 13px}}

.eff-circuit .circuit-emblem{
  transform-box:fill-box;transform-origin:center;
  animation:circuit-emblem 4.4s ease-in-out infinite}
@keyframes circuit-emblem{
  0%{filter:drop-shadow(0 0 3px rgba(94,231,223,.55));opacity:.86}
  42%{filter:drop-shadow(0 0 11px rgba(94,231,223,.95)) drop-shadow(0 0 22px rgba(123,208,236,.55));opacity:1}
  70%{filter:drop-shadow(0 0 14px rgba(94,231,223,.9)) drop-shadow(0 0 26px rgba(94,231,223,.5));opacity:1}
  100%{filter:drop-shadow(0 0 3px rgba(94,231,223,.55));opacity:.86}}

.eff-circuit .circuit-halo{
  transform-box:fill-box;transform-origin:center;
  animation:circuit-halo 4.4s ease-in-out infinite}
@keyframes circuit-halo{
  0%,100%{transform:scale(.78);opacity:.35}
  50%{transform:scale(1.04);opacity:.75}}

.eff-circuit .circuit-tr{
  stroke-dasharray:300;stroke-dashoffset:300;
  animation:circuit-draw 4.4s ease-in-out infinite}
@keyframes circuit-draw{
  0%{stroke-dashoffset:300;opacity:.15}
  10%{opacity:.4}
  40%{stroke-dashoffset:0;opacity:1}
  78%{stroke-dashoffset:0;opacity:1}
  92%{stroke-dashoffset:-300;opacity:.2}
  100%{stroke-dashoffset:-300;opacity:.15}}
.eff-circuit .circuit-tr1{animation-delay:0s}
.eff-circuit .circuit-tr5{animation-delay:.12s}
.eff-circuit .circuit-tr7{animation-delay:.24s}
.eff-circuit .circuit-tr3{animation-delay:.36s}
.eff-circuit .circuit-tr2{animation-delay:.2s}
.eff-circuit .circuit-tr8{animation-delay:.32s}
.eff-circuit .circuit-tr4{animation-delay:.44s}
.eff-circuit .circuit-tr6{animation-delay:.56s}

.eff-circuit .circuit-nd{
  transform-box:fill-box;transform-origin:center;
  animation:circuit-pulse 4.4s ease-in-out infinite}
@keyframes circuit-pulse{
  0%{transform:scale(.3);opacity:0;fill:#5ee7df}
  35%{transform:scale(.3);opacity:0}
  46%{transform:scale(1.5);opacity:1;fill:#cdeffb}
  60%{transform:scale(1);opacity:.95;fill:#5ee7df}
  80%{transform:scale(1.15);opacity:1;fill:#5ee7df}
  100%{transform:scale(.3);opacity:0;fill:#5ee7df}}
.eff-circuit .circuit-n1{animation-delay:.3s}
.eff-circuit .circuit-n6{animation-delay:.42s}
.eff-circuit .circuit-n2{animation-delay:.5s}
.eff-circuit .circuit-n8{animation-delay:.54s}
.eff-circuit .circuit-n4{animation-delay:.6s}
.eff-circuit .circuit-n3{animation-delay:.52s}
.eff-circuit .circuit-n9{animation-delay:.62s}
.eff-circuit .circuit-n7{animation-delay:.74s}
.eff-circuit .circuit-n5{animation-delay:.78s}

.eff-circuit .circuit-scanline{
  animation:circuit-scan 4.4s linear infinite;mix-blend-mode:screen}
@keyframes circuit-scan{
  0%{transform:translateY(-20px);opacity:0}
  8%{opacity:.55}
  46%{transform:translateY(570px);opacity:.55}
  54%{opacity:0}
  100%{transform:translateY(570px);opacity:0}}

/* ===================== §21 — Page profil (/profile.html) ===================== */
.gk-prof-wrap { max-width: 760px; margin: 0 auto; padding: 30px 22px 64px; }
.gk-prof-title { font: 500 30px/1.1 "GT Sectra Display", Georgia, serif; margin: 0 0 18px; }
.gk-prof-card { background: var(--gk-glass); border: 1px solid var(--gk-border); border-radius: var(--gk-radius-lg); padding: 24px; -webkit-backdrop-filter: var(--gk-blur); backdrop-filter: var(--gk-blur); box-shadow: var(--gk-shadow); }
.gk-prof-head { display: flex; align-items: center; gap: 16px; }
.gk-prof-avatar { width: 64px; height: 64px; border-radius: 50%; display: grid; place-items: center; font-weight: 700; font-size: 24px; color: #06121e; background: linear-gradient(135deg, var(--gk-aqua), var(--gk-violet)); flex: 0 0 auto; }
.gk-prof-avatar--ghost { background: var(--gk-glass-md); color: var(--gk-muted); }
.gk-prof-id { flex: 1; min-width: 0; }
.gk-prof-name { font: 600 20px/1.2 "GT Sectra Display", Georgia, serif; }
.gk-prof-mail { color: var(--gk-muted); font-size: 13.5px; margin-top: 2px; }
.gk-prof-stat { text-align: center; flex: 0 0 auto; }
.gk-prof-stat b { display: block; font-size: 24px; font-weight: 700; color: var(--gk-aqua); }
.gk-prof-stat span { font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--gk-muted); }
.gk-prof-h { margin: 26px 0 12px; font: 600 12.5px/1 "Inter", sans-serif; letter-spacing: .14em; text-transform: uppercase; color: var(--gk-muted); }
.gk-prof-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 12px; }
.gk-prof-fav { display: flex; align-items: center; gap: 10px; padding: 8px; border-radius: var(--gk-radius); background: var(--gk-glass); border: 1px solid var(--gk-border-subtle); text-decoration: none; color: var(--gk-text); transition: background-color .18s, transform .18s; }
.gk-prof-fav:hover { background: var(--gk-glass-md); transform: translateY(-1px); }
.gk-prof-fav-img { width: 42px; height: 42px; border-radius: 0; background-size: cover; background-position: center; flex: 0 0 auto; }
.gk-prof-fav-tx b { display: block; font-size: 13.5px; font-weight: 600; }
.gk-prof-fav-tx small { color: var(--gk-muted); font-size: 12px; }
.gk-prof-empty { color: var(--gk-muted); font-size: 13.5px; padding: 14px 2px; }
.gk-prof-actions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 22px; }
.gk-prof-btn { appearance: none; border: 1px solid var(--gk-border); background: var(--gk-glass); color: var(--gk-text); font: inherit; font-size: 13.5px; font-weight: 600; padding: 10px 18px; border-radius: var(--gk-radius-full); cursor: pointer; -webkit-backdrop-filter: var(--gk-blur); backdrop-filter: var(--gk-blur); transition: background-color .15s; }
.gk-prof-btn:hover { background: var(--gk-glass-md); }
.gk-prof-btn.is--primary { border-color: transparent; background: linear-gradient(90deg, var(--gk-aqua), var(--gk-violet)); color: #06121e; }
.gk-prof-btn.is--danger { color: #ffb4b4; border-color: rgba(255,120,120,.4); }
.gk-prof-signin { text-align: center; display: flex; flex-direction: column; align-items: center; gap: 6px; }
.gk-prof-signin .gk-prof-mail { max-width: 42ch; }
.gk-prof-signin .gk-prof-actions { justify-content: center; }
/* lien "Mon profil" dans le menu compte (c'est un <a>, pas un <button>) */
.gk-acct-link { text-decoration: none; }

/* ===================== §22 — Découverte : feed vertical (YouTube) ===================== */
.gk-disco { position: relative; }
.gk-disco-loading { display: flex; align-items: center; justify-content: center; gap: 12px; height: 60vh; color: var(--gk-muted); font-size: 14px; }
.gk-disco-spin { width: 22px; height: 22px; border-radius: 50%; border: 2px solid rgba(94,231,223,.25); border-top-color: var(--gk-aqua); animation: gkSkeletonShimmer 0s, spin 0.8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.gk-disco-bar { position: sticky; top: 0; z-index: 4; display: flex; gap: 8px; flex-wrap: wrap; padding: 12px 4px; margin-bottom: 6px;
  background: linear-gradient(180deg, var(--gk-bg) 70%, transparent); backdrop-filter: blur(6px); }
.gk-disco-chip { appearance: none; border: 1px solid var(--gk-border); background: var(--gk-glass); color: var(--gk-text); font: 600 13px/1 "Inter", sans-serif;
  padding: 9px 15px; border-radius: var(--gk-radius-full); cursor: pointer; -webkit-backdrop-filter: var(--gk-blur); backdrop-filter: var(--gk-blur); transition: background-color .15s, transform .15s; }
.gk-disco-chip:hover { background: var(--gk-glass-md); transform: translateY(-1px); }
.gk-disco-chip.is-on { border-color: transparent; background: linear-gradient(90deg, var(--gk-aqua), var(--gk-violet)); color: #06121e; }
.gk-disco-feed { height: calc(100vh - 96px); overflow-y: auto; scroll-snap-type: y mandatory; scrollbar-width: thin; scroll-behavior: smooth;
  display: flex; flex-direction: column; align-items: center; gap: 0; }
.gk-disco-feed::-webkit-scrollbar { width: 8px; } .gk-disco-feed::-webkit-scrollbar-thumb { background: rgba(255,255,255,.18); border-radius: 0; }
.gk-disco-item { scroll-snap-align: center; min-height: calc(100vh - 96px); width: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px; padding: 16px 0; }
.gk-disco-frame { position: relative; width: min(420px, 92%); aspect-ratio: 16 / 9; border-radius: var(--gk-radius-lg); overflow: hidden; background: #0e1426;
  border: 1px solid var(--gk-border); box-shadow: var(--gk-shadow-float); }
.gk-disco-item.is-short .gk-disco-frame { width: min(340px, 80%); aspect-ratio: 9 / 16; }
.gk-disco-frame iframe, .gk-disco-thumb { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; display: block; }
.gk-disco-thumb { object-fit: cover; }
.gk-disco-play { position: absolute; inset: 0; margin: auto; width: 62px; height: 62px; border-radius: 50%; border: 1px solid rgba(94,231,223,.6);
  background: rgba(5,10,20,.5); color: #eafffd; font-size: 22px; cursor: pointer; display: flex; align-items: center; justify-content: center; -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); transition: transform .2s, background-color .2s; }
.gk-disco-play:hover { transform: scale(1.08); background: rgba(94,231,223,.25); }
.gk-disco-frame:has(iframe) .gk-disco-thumb, .gk-disco-frame:has(iframe) .gk-disco-play { display: none; }
.gk-disco-meta { width: min(420px, 92%); text-align: center; }
.gk-disco-cat { display: inline-block; font: 600 10px/1 "Inter", sans-serif; letter-spacing: .18em; text-transform: uppercase; color: var(--gk-aqua);
  border: 1px solid var(--gk-border-subtle); border-radius: var(--gk-radius-full); padding: 4px 10px; margin-bottom: 8px; }
.gk-disco-title { font: 500 16px/1.35 "Inter", sans-serif; margin: 0; color: rgba(255,255,255,.92); }
.gk-disco-move { display: inline-block; margin-top: 8px; font-size: 13px; font-weight: 600; color: var(--gk-violet); text-decoration: none; }
.gk-disco-move:hover { text-decoration: underline; }

/* ===================== §23 — Ressources : Freestyle ===================== */
.gk-free-wrap { max-width: 900px; margin: 0 auto; padding: 30px 22px 64px; }
.gk-free-title { font: 500 32px/1.05 "GT Sectra Display", Georgia, serif; margin: 0 0 6px; }
.gk-free-lead { color: var(--gk-muted); margin: 0 0 8px; }
.gk-free-h { font: 600 12.5px/1 "Inter", sans-serif; letter-spacing: .16em; text-transform: uppercase; color: var(--gk-aqua); margin: 28px 0 12px; }
.gk-free-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 12px; }
.gk-free-card { border: 1px solid var(--gk-border); background: var(--gk-glass); border-radius: var(--gk-radius); padding: 16px; -webkit-backdrop-filter: var(--gk-blur); backdrop-filter: var(--gk-blur); transition: background-color .18s, transform .18s; }
.gk-free-card:hover { background: var(--gk-glass-md); transform: translateY(-2px); }
.gk-free-ko { font-family: "GT Sectra Display", Georgia, serif; font-size: 21px; color: var(--gk-amber); }
.gk-free-nm { font-weight: 600; margin-top: 6px; font-size: 14.5px; }

/* ===================== §24 — Onboarding (carrousel 1re visite) ===================== */
.gk-onb { position: fixed; inset: 0; z-index: 100000; display: grid; place-items: center; padding: 20px; background: rgba(8,11,20,.72); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); opacity: 0; transition: opacity .3s ease; }
.gk-onb.is-in { opacity: 1; } .gk-onb.is-out { opacity: 0; }
.gk-onb-card { position: relative; width: min(440px, 92vw); text-align: center; padding: 34px 28px 22px;
  background: linear-gradient(180deg, rgba(255,255,255,.13), rgba(255,255,255,.05)); border: 1px solid var(--gk-border-bright);
  border-radius: var(--gk-radius-lg); box-shadow: var(--gk-shadow-float); -webkit-backdrop-filter: var(--gk-blur-lg); backdrop-filter: var(--gk-blur-lg);
  transform: scale(.96); transition: transform .3s cubic-bezier(.2,.9,.25,1); }
.gk-onb.is-in .gk-onb-card { transform: none; }
.gk-onb-skip { position: absolute; top: 14px; right: 16px; border: 0; background: none; color: var(--gk-muted); font: 600 13px "Inter", sans-serif; cursor: pointer; }
.gk-onb-track { min-height: 196px; display: flex; align-items: center; justify-content: center; }
.gk-onb-slide { display: none; } .gk-onb-slide.is-on { display: block; animation: gkSlideIn .35s ease; }
@keyframes gkSlideIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.gk-onb-ko { font-family: "GT Sectra Display", Georgia, serif; font-size: 46px; color: var(--gk-aqua); margin-bottom: 10px; }
.gk-onb-t { font: 500 24px/1.1 "GT Sectra Display", Georgia, serif; margin: 0 0 10px; }
.gk-onb-d { color: var(--gk-muted); font-size: 14.5px; line-height: 1.55; margin: 0 auto; max-width: 34ch; }
.gk-onb-foot { display: flex; align-items: center; justify-content: space-between; margin-top: 22px; }
.gk-onb-dots { display: flex; gap: 7px; }
.gk-onb-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--gk-border); transition: .25s; }
.gk-onb-dot.is-on { background: var(--gk-aqua); width: 20px; border-radius: 0; }
.gk-onb-next { border: 0; border-radius: var(--gk-radius-full); padding: 11px 22px; font: 600 14px "Inter", sans-serif; cursor: pointer; background: linear-gradient(90deg, var(--gk-aqua), var(--gk-violet)); color: #06121e; }

/* ===================== §25 — Poomsae : section Vidéos (YouTube) ===================== */
.gk-pvids { max-width: 1080px; margin: 38px auto 8px; padding: 0 16px; }
.gk-pv-title { font: 500 26px/1.1 "GT Sectra Display", Georgia, serif; margin: 0 0 2px; }
.gk-pv-h { font: 600 12px/1 "Inter", sans-serif; letter-spacing: .16em; text-transform: uppercase; color: var(--gk-aqua); margin: 22px 0 12px; }
.gk-pv-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 14px; }
.gk-pv-card { display: flex; flex-direction: column; gap: 8px; padding: 0; border: 0; background: none; text-align: left; cursor: pointer; color: inherit; font: inherit; }
.gk-pv-thumb { position: relative; display: block; aspect-ratio: 16/9; border-radius: var(--gk-radius); overflow: hidden; background: #0e1426 center/cover no-repeat; border: 1px solid var(--gk-border); }
.gk-pv-thumb iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.gk-pv-play { position: absolute; inset: 0; margin: auto; width: 48px; height: 48px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: rgba(5,10,20,.55); border: 1px solid rgba(94,231,223,.6); color: #eafffd; -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); transition: transform .2s, background-color .2s; }
.gk-pv-card:hover .gk-pv-play { transform: scale(1.1); background: rgba(94,231,223,.25); }
.gk-pv-thumb.is-playing .gk-pv-play { display: none; }
.gk-pv-meta { display: flex; flex-direction: column; gap: 2px; }
.gk-pv-t { font-size: 13.5px; font-weight: 600; line-height: 1.3; }
.gk-pv-cr { font-size: 12px; color: var(--gk-muted); }

/* ===================== §26 — Mes vidéos (profil) + bouton enregistrer (Découverte) ===================== */
.gk-disco-save { position: absolute; top: 10px; right: 10px; width: 38px; height: 38px; border-radius: 50%; border: 1px solid rgba(255,255,255,.3); background: rgba(5,10,20,.5); color: rgba(255,255,255,.85); font-size: 17px; cursor: pointer; display: flex; align-items: center; justify-content: center; -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); transition: transform .2s, background-color .2s, color .2s; z-index: 2; }
.gk-disco-save:hover { transform: scale(1.08); background: rgba(94,231,223,.22); }
.gk-disco-save.is-on { color: #ff6b9d; border-color: rgba(255,107,157,.6); background: rgba(255,107,157,.18); }
.gk-saved-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 12px; }
.gk-saved-card { display: flex; flex-direction: column; gap: 8px; text-decoration: none; color: inherit; }
.gk-saved-thumb { aspect-ratio: 16/9; border-radius: var(--gk-radius); background: #0e1426 center/cover no-repeat; border: 1px solid var(--gk-border-subtle); transition: border-color .18s; }
.gk-saved-card:hover .gk-saved-thumb { border-color: var(--gk-aqua); }
.gk-saved-t { font-size: 13px; line-height: 1.3; color: rgba(255,255,255,.85); }

/* ===================== §27 — Grade : détail par thème ===================== */
.gk-keup-themes { max-width: 1080px; margin: 38px auto 8px; padding: 0 16px; }
.gk-keup-th-title { font: 500 26px/1.1 "GT Sectra Display", Georgia, serif; margin: 0 0 16px; }
.gk-keup-th-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap: 14px; align-items: start; }
.gk-keup-th-card { border: 1px solid var(--gk-border); background: var(--gk-glass); border-radius: var(--gk-radius-lg); padding: 18px 20px; -webkit-backdrop-filter: var(--gk-blur); backdrop-filter: var(--gk-blur); }
.gk-keup-th-head { display: flex; align-items: baseline; gap: 10px; margin-bottom: 4px; padding-bottom: 10px; border-bottom: 1px dashed var(--gk-border-subtle); }
.gk-keup-th-ko { font-family: "GT Sectra Display", Georgia, serif; font-size: 22px; color: var(--gk-aqua); }
.gk-keup-th-nm { font-weight: 600; font-size: 16px; }
.gk-keup-th-lab { font: 600 10.5px/1 "Inter", sans-serif; letter-spacing: .16em; text-transform: uppercase; color: var(--gk-muted); margin: 14px 0 8px; }
.gk-keup-th-lab.is-nota { color: var(--gk-violet); }
.gk-keup-th-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.gk-keup-th-list li { position: relative; padding-left: 16px; font-size: 13.5px; line-height: 1.45; color: rgba(255,255,255,.85); }
.gk-keup-th-list li::before { content: ""; position: absolute; left: 0; top: 8px; width: 6px; height: 6px; border-radius: 50%; background: var(--gk-aqua); }

/* ===================== §28 — Lexique ===================== */
.gk-lex { max-width: 1000px; margin: 0 auto; padding: 30px 22px 64px; }
.gk-lex-title { font: 500 32px/1.05 "GT Sectra Display", Georgia, serif; margin: 0 0 4px; }
.gk-lex-lead { color: var(--gk-muted); margin: 0 0 16px; }
.gk-lex-bar { position: sticky; top: 0; z-index: 4; display: flex; gap: 8px; flex-wrap: wrap; padding: 10px 0; background: linear-gradient(180deg, var(--gk-bg) 70%, transparent); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.gk-lex-chip { appearance: none; border: 1px solid var(--gk-border); background: var(--gk-glass); color: var(--gk-text); font: 600 13px "Inter", sans-serif; padding: 9px 15px; border-radius: var(--gk-radius-full); cursor: pointer; -webkit-backdrop-filter: var(--gk-blur); backdrop-filter: var(--gk-blur); transition: background-color .15s; }
.gk-lex-chip:hover { background: var(--gk-glass-md); }
.gk-lex-chip.is-on { border-color: transparent; background: linear-gradient(90deg, var(--gk-aqua), var(--gk-violet)); color: #06121e; }
.gk-lex-pane { display: none; } .gk-lex-pane.is-on { display: block; }
.gk-lex-sub { font: 600 12px/1 "Inter", sans-serif; letter-spacing: .16em; text-transform: uppercase; color: var(--gk-aqua); margin: 22px 0 12px; }
.gk-lex-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 12px; }
.gk-lex-item { position: relative; border: 1px solid var(--gk-border-subtle); background: var(--gk-glass); border-radius: var(--gk-radius); padding: 14px 16px; -webkit-backdrop-filter: var(--gk-blur); backdrop-filter: var(--gk-blur); }
.gk-lex-audio { position: absolute; top: 10px; right: 10px; width: 30px; height: 30px; border-radius: 50%; border: 1px solid var(--gk-border); background: rgba(5,10,20,.4); color: var(--gk-aqua); cursor: pointer; font-size: 13px; display: flex; align-items: center; justify-content: center; transition: transform .2s, background-color .2s; }
.gk-lex-audio:hover { background: rgba(94,231,223,.2); transform: scale(1.08); }
.gk-lex-audio.is-off { opacity: .22; cursor: default; pointer-events: none; border-style: dashed; }
.gk-lex-audio.is-playing { background: rgba(94,231,223,.35); }
.gk-lex-ko { font-weight: 600; font-size: 16px; padding-right: 34px; }
.gk-lex-hangul { font-family: "GT Sectra Display", Georgia, serif; font-size: 18px; color: var(--gk-amber); margin-top: 3px; }
.gk-lex-tr { color: var(--gk-muted); font-size: 13.5px; margin-top: 4px; }

/* ===================== §29 — Poomsae : schéma 3D pas-à-pas ===================== */
.gk-s3d { max-width: 1080px; margin: 38px auto 8px; padding: 0 16px; }
.gk-s3d-title { font: 500 26px/1.1 "GT Sectra Display", Georgia, serif; margin: 0 0 14px; }
.gk-s3d-stage { position: relative; border: 1px solid var(--gk-border); border-radius: var(--gk-radius-lg); overflow: hidden; background: #0F0D0B; box-shadow: var(--gk-shadow); }
.gk-s3d-frame { display: block; width: 100%; height: 460px; border: 0; background: #0F0D0B; }
.gk-s3d-ctrl { display: flex; align-items: center; gap: 8px; padding: 10px 12px; border-top: 1px solid var(--gk-border-subtle); background: rgba(5,10,20,.6); flex-wrap: wrap; }
.gk-s3d-ctrl button { appearance: none; border: 1px solid var(--gk-border); background: var(--gk-glass); color: var(--gk-text); font: 600 13px "Inter", sans-serif; padding: 8px 13px; border-radius: var(--gk-radius-full); cursor: pointer; transition: background-color .15s; }
.gk-s3d-ctrl button:hover { background: var(--gk-glass-md); }
.gk-s3d-play { border-color: transparent !important; background: linear-gradient(90deg, var(--gk-aqua), var(--gk-violet)) !important; color: #06121e !important; }
.gk-s3d-step { font-size: 13px; color: var(--gk-muted); margin: 0 4px; }
.gk-s3d-ctrl button[data-a="recenter"] { margin-left: auto; }

/* ===================== §30 — Flux news (home) ===================== */
[data-gk-news] { display: block; margin-top: 8px; }
/* UNE seule colonne, cartes compactes (peu hautes) → plus d'actus visibles d'un coup. */
.gk-news-grid { display: flex; flex-direction: column; gap: 9px; }
.gk-news-grid { max-height: 720px; overflow-y: auto; overscroll-behavior: contain; padding: 2px 4px 2px 2px; -webkit-mask-image: linear-gradient(180deg, #000 calc(100% - 22px), transparent); mask-image: linear-gradient(180deg, #000 calc(100% - 22px), transparent); }
.gk-news-grid::-webkit-scrollbar { width: 6px; }
.gk-news-grid::-webkit-scrollbar-thumb { background: var(--gk-border); border-radius: 0; }
.gk-news-grid::-webkit-scrollbar-track { background: transparent; }
.gk-news-card { display: flex; flex-direction: column; gap: 6px; padding: 11px 13px; border: 1px solid var(--gk-border-subtle); background: var(--gk-glass); border-radius: var(--gk-radius-sm); -webkit-backdrop-filter: var(--gk-blur); backdrop-filter: var(--gk-blur); text-decoration: none; color: var(--gk-text); transition: transform .15s, background-color .15s, border-color .15s; }
.gk-news-card:hover { transform: translateY(-2px); background: var(--gk-glass-md); border-color: var(--gk-border); }
.gk-news-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.gk-news-cat { font: 700 9.5px/1 "Inter", sans-serif; letter-spacing: .1em; text-transform: uppercase; padding: 4px 8px; border-radius: var(--gk-radius-full); white-space: nowrap; }
.gk-news-cat.is-res  { background: linear-gradient(90deg, var(--gk-aqua), var(--gk-violet)); color: #06121e; }
.gk-news-cat.is-comp { background: rgba(94,231,223,.16); color: var(--gk-amber); border: 1px solid rgba(94,231,223,.4); }
.gk-news-cat.is-actu { background: var(--gk-glass); color: var(--gk-muted); border: 1px solid var(--gk-border-subtle); }
.gk-news-date { font-size: 11.5px; color: var(--gk-muted); white-space: nowrap; }
.gk-news-title { font: 600 13.5px/1.3 "Inter", sans-serif; color: var(--gk-text); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.gk-news-src { font-size: 11px; color: var(--gk-muted); }
.gk-news-ext { color: var(--gk-aqua); }
.gk-news-foot { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-top: 14px; font-size: 12px; color: var(--gk-muted); }
.gk-news-flag { display: inline-flex; align-items: center; gap: 7px; color: var(--gk-aqua); font-weight: 600; }
.gk-news-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--gk-aqua); box-shadow: 0 0 0 0 rgba(94,231,223,.6); animation: gk-news-pulse 1.8s infinite; }
@keyframes gk-news-pulse { 0% { box-shadow: 0 0 0 0 rgba(94,231,223,.55); } 70% { box-shadow: 0 0 0 8px rgba(94,231,223,0); } 100% { box-shadow: 0 0 0 0 rgba(94,231,223,0); } }
.gk-news-empty { padding: 26px 18px; color: var(--gk-muted); border: 1px dashed var(--gk-border-subtle); border-radius: var(--gk-radius); display: flex; align-items: center; gap: 10px; }
.gk-news-spin { width: 16px; height: 16px; border-radius: 50%; border: 2px solid var(--gk-border); border-top-color: var(--gk-aqua); animation: gk-news-spin 0.8s linear infinite; }
@keyframes gk-news-spin { to { transform: rotate(360deg); } }

/* ===================== §31 — Fiche poomsae : onglets retravaillés ===================== */

/* --- 31.a · Onglet TECHNIQUE : on réutilise la carte EXACTE de ressources (§17/§18).
   poomsae-enhance.js ajoute .gk-res-detail au conteneur + reconstruit chaque carte en
   .collection-item identique, ET la rend CLIQUABLE (planche en place, comme ressources).
   AUCUN style maison : le §17 (carte repliée) + le §18 (planche ouverte) font tout. --- */

/* --- 31.b · VUE D'ENSEMBLE : image CARRÉE (sources 800×800) + retrait du survol ---
   La carte superpose image / .overview_img_overlay (margin-top:-100%) / .overview_card_content
   (margin-top:-72px) : cette géométrie EXIGE une image carrée. Forcer un autre ratio (ex. 4/3)
   désynchronise le dégradé et la légende (légende au milieu de l'image). On garde donc le carré. */
.overview_image {
  width: 100% !important; aspect-ratio: 1 / 1 !important; height: auto !important;
  object-fit: cover !important; object-position: center;
}
/* pas cliquable → on neutralise l'animation de survol (« ça emmène nulle part ») */
.overview_card { transition: none !important; }
.overview_card:hover {
  transform: none !important;
  box-shadow: var(--gk-shadow) !important;
  border-color: var(--gk-border-subtle) !important;
}

/* --- 31.c · VUE DÉTAILLÉE : affordance d'échange d'image au clic --- */
.collection-item .container-bottom-left, .collection-item .container-bottom-right { position: relative; }
.collection-item .gk-swap {
  position: relative; cursor: pointer; border-radius: 0;
  outline: 2px solid transparent; outline-offset: 2px;
  transition: transform .2s ease, box-shadow .2s ease, outline-color .2s ease;
}
.collection-item .gk-swap:hover { transform: scale(1.04); outline-color: rgba(94,231,223,.6); box-shadow: 0 6px 18px rgba(0,0,0,.4); }
.collection-item .gk-swap.is-active { outline-color: var(--gk-aqua); box-shadow: 0 0 0 2px rgba(94,231,223,.5); }
/* picto « échanger » en coin, visible au survol / actif */
.collection-item .container-bottom-left::after,
.collection-item .container-bottom-right::after {
  content: "⇅"; position: absolute; top: 6px; right: 6px; z-index: 4;
  width: 20px; height: 20px; display: none; align-items: center; justify-content: center;
  font-size: 12px; color: #06121e; border-radius: 0;
  background: linear-gradient(90deg, var(--gk-aqua), var(--gk-violet));
  box-shadow: 0 2px 8px rgba(0,0,0,.4);
}
.collection-item .container-bottom-left:has(.gk-swap):hover::after,
.collection-item .container-bottom-right:has(.gk-swap):hover::after,
.collection-item .container-bottom-left:has(.gk-swap.is-active)::after,
.collection-item .container-bottom-right:has(.gk-swap.is-active)::after { display: flex; }

/* --- 31.d · Onglet « Vue 3D » + badge BETA --- */
.tabs-menu .gk-tab-3d { display: inline-flex; align-items: center; gap: 8px; }
/* badge « bêta » = pill sombre + fond animé « Circuit qui s'allume » (grille + traces +
   nodes cyan→violet + scanline) ; SEUL le TEXTE est en style Matrix (Courier vert + glow). */
.gk-beta {
  position: relative; display: inline-flex; align-items: center; align-self: center;
  padding: 3px 9px; border-radius: 0; overflow: hidden; isolation: isolate;
  background: #06121e; border: 1px solid rgba(94,231,223,.55);
  box-shadow: inset 0 0 10px rgba(94,231,223,.20), 0 0 8px rgba(94,231,223,.18);
}
.gk-beta-fx { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
.gk-beta-fx svg { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.gk-beta-fx::before {   /* grille qui défile */
  content: ""; position: absolute; inset: 0; opacity: .5; mix-blend-mode: screen;
  background-image: linear-gradient(rgba(94,231,223,.16) 1px, transparent 1px), linear-gradient(90deg, rgba(94,231,223,.16) 1px, transparent 1px);
  background-size: 8px 8px; animation: gkb-grid 6s linear infinite;
}
.gk-beta-fx::after {    /* scanline qui balaye */
  content: ""; position: absolute; top: 0; bottom: 0; width: 24px; mix-blend-mode: screen;
  background: linear-gradient(90deg, transparent, rgba(205,239,251,.55), transparent);
  animation: gkb-scan 2.8s linear infinite;
}
.gk-beta-fx .gkb-tr path { stroke-dasharray: 130; stroke-dashoffset: 130; animation: gkb-draw 3.4s ease-in-out infinite; filter: drop-shadow(0 0 2px rgba(94,231,223,.65)); }
.gk-beta-fx .gkb-t2 { animation-delay: .28s } .gk-beta-fx .gkb-t3 { animation-delay: .56s } .gk-beta-fx .gkb-t4 { animation-delay: .84s }
.gk-beta-fx .gkb-nd circle { transform-box: fill-box; transform-origin: center; animation: gkb-pulse 3.4s ease-in-out infinite; }
.gk-beta-fx .gkb-n2 { animation-delay: .34s } .gk-beta-fx .gkb-n3 { animation-delay: .5s } .gk-beta-fx .gkb-n4 { animation-delay: .64s } .gk-beta-fx .gkb-n5 { animation-delay: .8s }
/* texte « bêta » Matrix (Courier vert + glow), AU-DESSUS du circuit */
.gk-beta-txt {
  position: relative; z-index: 1;
  font-family: 'Courier New', Courier, 'Matrix Mono', monospace; font-size: 10px; font-weight: 700;
  letter-spacing: .06em; line-height: 1; text-transform: none;
  color: #00ff00; text-shadow: 0px 0px 5px #00ff00, 0px 0px 10px #00ff00;
}
/* badge version « v2.0 » du bas de nav : label SOBRE (verre neutre, texte discret) */
.overview_label.navigation {
  display: inline-flex; align-items: center; justify-content: center; align-self: center;
  width: auto; padding: 2px 9px; border-radius: 0;
  background: var(--gk-glass); border: 1px solid var(--gk-border-subtle);
}
.overview_label.navigation, .overview_label.navigation * {
  font-family: "Inter", system-ui, sans-serif !important;
  font-size: 10px; font-weight: 600; letter-spacing: .04em; text-transform: none !important;
  color: var(--gk-muted) !important; text-shadow: none !important;
}
@keyframes gkb-grid { from { background-position: 0 0, 0 0; } to { background-position: 8px 8px, 8px 8px; } }
@keyframes gkb-scan { 0% { transform: translateX(-30px); opacity: 0; } 14% { opacity: 1; } 60% { transform: translateX(120px); opacity: 1; } 72%, 100% { transform: translateX(120px); opacity: 0; } }
@keyframes gkb-draw { 0% { stroke-dashoffset: 130; opacity: .2; } 12% { opacity: .55; } 45% { stroke-dashoffset: 0; opacity: 1; } 78% { stroke-dashoffset: 0; opacity: 1; } 92% { stroke-dashoffset: -130; opacity: .2; } 100% { stroke-dashoffset: -130; opacity: .15; } }
@keyframes gkb-pulse { 0% { transform: scale(.3); opacity: 0; fill: #5ee7df; } 35% { transform: scale(.3); opacity: 0; } 46% { transform: scale(1.5); opacity: 1; fill: #cdeffb; } 60% { transform: scale(1); opacity: .95; fill: #5ee7df; } 80% { transform: scale(1.15); opacity: 1; fill: #5ee7df; } 100% { transform: scale(.3); opacity: 0; fill: #5ee7df; } }
@media (prefers-reduced-motion: reduce) { .gk-beta-fx::before, .gk-beta-fx::after, .gk-beta-fx .gkb-tr path, .gk-beta-fx .gkb-nd circle { animation: none !important; } }
.gk-pane-3d { padding-top: 6px; }
.gk-pane-3d .gk-3d-host { width: 100%; }
.gk-s3d--big { max-width: none; margin: 8px 0; }   /* pleine largeur dispo */
.gk-s3d--big .gk-s3d-frame { height: min(74vh, 720px); }
/* le 3D vit UNIQUEMENT dans l'onglet « Vue 3D » (plus rien qui traîne dans À Propos) */
.gk-pane-3d .gk-s3d--big { margin-top: 4px; }

/* --- 31.e · SKELETON « reflet exact » : le shimmer prend la forme exacte du slot ---
   Réservé à l'ÉTAT DE CHARGEMENT (img.gk-img-loading) → aucun impact sur la mise en
   page une fois l'image arrivée ; le squelette ne « saute » plus et n'est plus un
   carré générique : il a le ratio + le rayon de l'image qui va le remplacer. */
img.gk-img-loading { border-radius: inherit; background-clip: padding-box; }
img.gk-img-loading.overview_image,
img.gk-img-loading.home_grid_img,
img.gk-img-loading.list_keup_img { aspect-ratio: 4 / 3; width: 100%; height: auto; object-fit: cover; }
img.gk-img-loading.technique_img { aspect-ratio: 1 / 1; width: 100%; height: auto; }
img.gk-img-loading.main-img      { aspect-ratio: 3 / 4; width: 100%; height: auto; }
img.gk-img-loading.details_foot_image,
img.gk-img-loading.badge_image,
img.gk-img-loading.schema_img    { aspect-ratio: 1 / 1; }
/* technique : l'image cadrée reste « cover » même chargée (cadre net, pas d'écrasement) */
.techniques_content .technique_img { object-fit: cover; }

/* ===================== §32 — Sélecteur de langue (multilingue) ===================== */
.gk-lang { position: relative; margin: 10px 12px 4px; }
.gk-lang-btn { display: flex; align-items: center; gap: 8px; width: 100%; justify-content: center; padding: 9px 12px; border: 1px solid var(--gk-border); background: var(--gk-glass); color: var(--gk-text); border-radius: var(--gk-radius-full); font: 600 13px "Inter", sans-serif; cursor: pointer; -webkit-backdrop-filter: var(--gk-blur); backdrop-filter: var(--gk-blur); transition: background-color .15s, border-color .15s; }
.gk-lang-btn:hover { background: var(--gk-glass-md); border-color: var(--gk-border); }
.gk-lang-globe { font-size: 16px; line-height: 1; }
.gk-lang-cur { letter-spacing: .08em; }
.gk-lang-menu { position: absolute; left: 0; right: 0; bottom: calc(100% + 6px); display: none; flex-direction: column; gap: 2px; padding: 6px; border: 1px solid var(--gk-border); border-radius: var(--gk-radius); background: var(--gk-glass-lg); -webkit-backdrop-filter: blur(20px) saturate(160%); backdrop-filter: blur(20px) saturate(160%); box-shadow: var(--gk-shadow); z-index: 1600; }
.gk-lang.is-open .gk-lang-menu { display: flex; }
.gk-lang-opt { text-align: left; padding: 9px 12px; border: 0; background: transparent; color: var(--gk-text); border-radius: 0; font: 500 13.5px "Inter", sans-serif; cursor: pointer; transition: background-color .12s; }
.gk-lang-opt:hover { background: rgba(255,255,255,.12); }
.gk-lang-opt.is-on { background: linear-gradient(90deg, var(--gk-aqua), var(--gk-violet)); color: #06121e; font-weight: 700; }

/* ===================== §33 — Home : mise en avant features (Nouveautés) =====================
   Éditorial : un grand aperçu 3D LIVE (un seul visuel) + texte nu ; une ligne « favoris »
   (vignette poomsae + cœur). Pas de boîte-dans-boîte. */
.gk-feat { display: flex; flex-direction: column; gap: 18px; }
.gk-feat-3d { display: block; text-decoration: none; color: var(--gk-text); }
.gk-feat-3d-stage {
  position: relative; width: 100%; aspect-ratio: 16 / 10; border-radius: 0; overflow: hidden;
  background: radial-gradient(120% 90% at 50% 0%, rgba(94,231,223,.10), transparent 60%), #0b1020;
  border: 1px solid var(--gk-border-subtle);
}
.gk-feat-3d-stage::after { content: ""; position: absolute; inset: 0; pointer-events: none; border-radius: inherit; box-shadow: inset 0 -44px 60px -34px rgba(0,0,0,.55); }
.gk-feat-3d-stage .gk-s3d-frame { width: 100%; height: 100%; border: 0; display: block; pointer-events: none; }
.gk-feat-3d-cap { padding: 14px 2px 0; }
.gk-feat-kicker { font: 600 10.5px/1 "Inter", system-ui, sans-serif; letter-spacing: .22em; text-transform: uppercase; color: var(--gk-aqua); }
.gk-feat-h { font-family: "GT Sectra Display", Georgia, serif; font-weight: 500; line-height: 1.05; color: var(--gk-text); }
.gk-feat-3d-cap .gk-feat-h { font-size: 23px; margin: 8px 0 4px; }
.gk-feat-p { margin: 0; color: var(--gk-muted); font-size: 14px; line-height: 1.5; }
.gk-feat-link { display: inline-flex; align-items: center; gap: 6px; margin-top: 10px; color: var(--gk-aqua); font: 600 13.5px "Inter", system-ui, sans-serif; }
.gk-feat-link i, .gk-feat-arrow { font-size: 15px; transition: transform .2s; }
.gk-feat-3d:hover .gk-feat-link i { transform: translateX(3px); }
.gk-feat-rule { height: 1px; background: linear-gradient(90deg, var(--gk-border), transparent); }
.gk-feat-save { display: flex; align-items: center; gap: 16px; text-decoration: none; color: var(--gk-text); padding: 2px; }
.gk-feat-thumb { position: relative; flex: none; width: 72px; height: 72px; border-radius: 0; overflow: hidden; border: 1px solid var(--gk-border-subtle); transition: border-color .2s; }
.gk-feat-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.gk-feat-thumb-heart { position: absolute; top: 6px; right: 6px; filter: drop-shadow(0 1px 3px rgba(0,0,0,.6)); }
.gk-feat-save-txt { min-width: 0; flex: 1 1 auto; }
.gk-feat-save-txt .gk-feat-h { font-size: 18px; margin: 3px 0 2px; }
.gk-feat-save-txt .gk-feat-p { font-size: 13px; }
.gk-feat-arrow { color: var(--gk-muted); flex: none; }
.gk-feat-save:hover .gk-feat-thumb { border-color: var(--gk-border-bright); }
.gk-feat-save:hover .gk-feat-arrow { transform: translateX(3px); color: var(--gk-aqua); }
@media (max-width: 991px) { .gk-feat-3d-stage { aspect-ratio: 16 / 9; } }

/* ===================== §34 — Poomsae À Propos : Résumé + Description ===================== */
/* Résumé — cascade de hauteur : la colonne stretch (grille 3-col) → grid_introduction → */
/* intro_content_schema → .schema_container_image = 100% de la hauteur de son parent. */
.left_introduction { display: flex; flex-direction: column; }
.left_introduction .grid_introduction { flex: 1 1 auto; min-height: 0; height: 100%; align-content: stretch; }
.left_introduction .intro_content_schema { display: flex; flex-direction: column; height: 100%; min-height: 0; }
.left_introduction .schema_container_image { display: flex; flex-direction: column; flex: 1 1 auto; height: 100%; min-height: 320px; justify-content: center; align-items: center; }
.left_introduction .schema_container_image .schema_img { flex: 1 1 auto; min-height: 0; width: 100%; height: auto; max-height: 100%; object-fit: contain; }
/* Légende : réduite pour que ses points soient à la même échelle que ceux du diagramme */
.left_introduction .schema_container_image .poomsae_legent { flex: 0 0 auto; width: 60%; max-width: 60%; height: auto; align-self: center; margin-top: 12px; }
/* Description — titre + texte = 40px de padding ; image en retrait de 12px (haut/gauche/droite) */
.right_introduction { padding: 40px !important; }
.right_introduction .intro_poomsae_image { width: calc(100% + 56px) !important; max-width: none !important; height: auto !important; margin: -28px -28px 28px !important; border-radius: 0 !important; display: block; object-fit: cover; }

/* ── Hextech : la bannière d'avertissement (programme FFTDA des pages keup)
   repasse en blanc (le jaune venait d'un style injecté au runtime). ── */
.warning_container .body-s,
.warning_container .body-s.white {
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
}
/* Hextech : angles vifs aussi sur le bouton menu mobile (style Webflow inline). */
.w-nav-button, .menu-button, .hamburger, .nav_button { border-radius: 0 !important; }

/* ===================== §35 — Nouveautés live (home + /nouveautes) =====================
   Port du design « Mise à jour » de l'app (accueil + updates-history) : en-tête de
   version (puce ambre + n°), corps indenté sous un trait vertical, lignes icône +
   titre + description. Alimenté par releases-live.js (/api/public/app-releases). */
[data-gk-releases] { display: block; margin-top: 26px; }
.gk-rel-kicker { font: 700 10px/1 "Inter", sans-serif; letter-spacing: .14em; text-transform: uppercase; color: var(--gk-muted); margin-bottom: 8px; }
.gk-rel-head { display: flex; align-items: baseline; gap: 10px; }
.gk-rel-dot { width: 11px; height: 11px; border-radius: 50%; background: var(--gk-amber); align-self: center; flex: none; }
.gk-rel-v { font: 700 17px/1.2 "Inter", sans-serif; color: var(--gk-text); }
.gk-rel-date { font-size: 12px; color: var(--gk-muted); }
.gk-rel-body { border-left: 2px solid rgba(94,231,223,.35); margin-left: 5px; padding: 10px 0 2px 18px; }
.gk-rel-label { font: 700 10.5px/1 "Inter", sans-serif; letter-spacing: .12em; text-transform: uppercase; color: var(--gk-muted); margin: 14px 0 8px; }
.gk-rel-label:first-child { margin-top: 0; }
.gk-rel-card { border: 1px solid var(--gk-border-subtle); background: var(--gk-glass); border-radius: var(--gk-radius-sm); padding: 0 14px; }
.gk-rel-featured { border: 1px solid rgba(94,231,223,.30); background: rgba(94,231,223,.06); border-radius: var(--gk-radius-sm); padding: 1px 14px; margin-bottom: 10px; }
.gk-rel-row { display: flex; gap: 12px; align-items: flex-start; padding: 13px 0; }
.gk-rel-row + .gk-rel-row { border-top: 1px solid var(--gk-border-subtle); }
.gk-rel-ic { width: 34px; height: 34px; border-radius: var(--gk-radius-full); background: rgba(255,255,255,.08); display: flex; align-items: center; justify-content: center; flex: none; margin-top: 1px; }
.gk-rel-ic .ph { font-size: 18px; color: var(--gk-text); }
.gk-rel-tx { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.gk-rel-tx b { font: 600 14.5px/1.3 "Inter", sans-serif; color: var(--gk-text); }
.gk-rel-tx small { font-size: 12.5px; line-height: 1.4; color: var(--gk-muted); }
.gk-rel-minor { margin: 0; padding: 2px 0 2px 18px; color: var(--gk-muted); font-size: 12.5px; line-height: 1.9; }
.gk-rel-more { display: inline-flex; align-items: center; gap: 7px; margin-top: 14px; font: 600 13px/1 "Inter", sans-serif; color: var(--gk-aqua); text-decoration: none; }
.gk-rel-more:hover { text-decoration: underline; }
/* Historique (/nouveautes) : une section par version, accordéon */
.gk-rel--hist { display: block; margin-top: 20px; }
.gk-rel--hist:first-child { margin-top: 0; }
.gk-rel-toggle { display: flex; align-items: center; justify-content: space-between; gap: 10px; width: 100%; background: none; border: 0; padding: 8px 0; cursor: pointer; text-align: left; }
.gk-rel-toggle:hover .gk-rel-caret { color: var(--gk-text); }
.gk-rel-toggle .gk-rel-head { flex: 1; }
.gk-rel-caret { color: var(--gk-muted); font-size: 16px; transition: transform .2s; }
.gk-rel--hist.is--closed .gk-rel-body { display: none; }
.gk-rel--hist.is--closed .gk-rel-caret { transform: rotate(-90deg); }

/* ===================== §36 — Cloche / chat en direct / signaler un bug =====================
   gk-notify.js. Cloche dans .nav_bottom (même look que le bouton compte), panneau =
   réutilise le tiroir .gk-drawer, modale bug = réutilise .gk-modal / .gk-field. */
.gk-ntf-bell {
  position: relative; display: flex; align-items: center; gap: 10px; width: 100%;
  padding: 8px 12px; margin-top: 8px; cursor: pointer;
  font: 600 14px/1.2 "Inter", sans-serif; color: var(--gk-text);
  background-color: var(--gk-glass); border: 1px solid var(--gk-border);
  border-radius: var(--gk-radius-full);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25);
}
.gk-ntf-bell { -webkit-backdrop-filter: var(--gk-blur); backdrop-filter: var(--gk-blur); transition: background-color .18s ease, transform .18s cubic-bezier(.34, 1.56, .64, 1); }
.gk-ntf-bell:hover { background-color: var(--gk-glass-md); transform: translateY(-1px); }
.gk-ntf-bell .ph { font-size: 18px; flex: none; }
.gk-ntf-badge {
  position: absolute; top: -4px; right: -4px; min-width: 18px; height: 18px; padding: 0 5px;
  display: flex; align-items: center; justify-content: center;
  font: 700 10.5px/1 "Inter", sans-serif; color: #fff;
  background: var(--gk-rose); border-radius: var(--gk-radius-full);
  box-shadow: 0 0 0 2px rgba(10, 14, 24, .8);
}
.navbar.gk-nav-collapsed .nav_bottom .gk-ntf-bell-tx { display: none; }
.navbar.gk-nav-collapsed .nav_bottom .gk-ntf-bell { justify-content: center; padding: 8px; }
/* — Panneau — */
.gk-ntf-panel .gk-ntf-title { display: flex; align-items: center; gap: 9px; font-size: 17px; }
.gk-ntf-sub { font: 400 11.5px/1 "Inter", sans-serif; color: var(--gk-muted); }
.gk-ntf-back { background: none; border: 0; color: var(--gk-text); font-size: 18px; cursor: pointer; padding: 8px 10px 8px 0; }
.gk-ntf-body { display: flex; flex-direction: column; gap: 12px; flex: 1; min-height: 0; padding: 4px 2px; }
.gk-ntf-avatar { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; flex: none; }
.gk-ntf-avatar--sm { width: 26px; height: 26px; }
.gk-ntf-chat-row {
  display: flex; align-items: center; gap: 12px; width: 100%; text-align: left; cursor: pointer;
  padding: 12px 14px; border: 1px solid var(--gk-border-subtle); background: var(--gk-glass);
  border-radius: var(--gk-radius-sm); color: var(--gk-text);
}
.gk-ntf-chat-row:hover { background: var(--gk-glass-md); }
.gk-ntf-chat-tx { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
.gk-ntf-chat-tx b { font: 600 14px/1.2 "Inter", sans-serif; }
.gk-ntf-chat-tx small { font-size: 12px; color: var(--gk-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gk-ntf-chat-row .ph-caret-right { color: var(--gk-muted); }
.gk-ntf-dot {
  min-width: 20px; height: 20px; padding: 0 6px; display: flex; align-items: center; justify-content: center;
  font: 700 11px/1 "Inter", sans-serif; color: #fff; background: var(--gk-rose); border-radius: var(--gk-radius-full);
}
.gk-ntf-h { font: 700 10.5px/1 "Inter", sans-serif; letter-spacing: .12em; text-transform: uppercase; color: var(--gk-muted); margin-top: 6px; }
.gk-ntf-reply { border: 1px solid var(--gk-border-subtle); background: var(--gk-glass); border-radius: var(--gk-radius-sm); padding: 10px 13px; }
.gk-ntf-reply.is--new { border-color: rgba(226,74,102,.5); }
.gk-ntf-reply-head { display: flex; align-items: center; gap: 8px; margin-bottom: 5px; }
.gk-ntf-reply-head b { font: 600 13px/1.2 "Inter", sans-serif; color: var(--gk-text); flex: 1; }
.gk-ntf-reply-head .ph { color: var(--gk-muted); }
.gk-ntf-reply p { margin: 0; font-size: 12.5px; line-height: 1.45; color: var(--gk-muted); white-space: pre-wrap; }
.gk-ntf-time { font-size: 11px; color: var(--gk-muted); white-space: nowrap; }
.gk-ntf-bug-btn {
  display: flex; align-items: center; justify-content: center; gap: 8px; margin-top: auto;
  padding: 11px 14px; cursor: pointer; font: 600 13.5px/1 "Inter", sans-serif; color: var(--gk-text);
  background: none; border: 1px dashed var(--gk-border); border-radius: var(--gk-radius-sm);
}
.gk-ntf-bug-btn:hover { background: var(--gk-glass); }
/* — Chat — */
.gk-chat-list { flex: 1; min-height: 0; overflow-y: auto; display: flex; flex-direction: column; gap: 10px; padding: 4px 2px; }
.gk-chat-empty { color: var(--gk-muted); font-size: 13px; padding: 24px 8px; text-align: center; }
.gk-chat-msg { display: flex; flex-direction: column; gap: 3px; max-width: 82%; }
.gk-chat-msg.is--user { align-self: flex-end; align-items: flex-end; }
.gk-chat-msg.is--admin { align-self: flex-start; align-items: flex-start; }
.gk-chat-bubble {
  padding: 9px 13px; font-size: 13.5px; line-height: 1.4; color: var(--gk-text);
  border-radius: var(--gk-radius-sm); white-space: pre-wrap; word-break: break-word;
}
.gk-chat-msg.is--user .gk-chat-bubble { background: linear-gradient(135deg, rgba(94,231,223,.22), rgba(180,144,245,.22)); border: 1px solid var(--gk-border); }
.gk-chat-msg.is--admin .gk-chat-bubble { background: var(--gk-glass-md); border: 1px solid var(--gk-border-subtle); }
.gk-chat-form { display: flex; gap: 8px; margin-top: 10px; }
.gk-chat-input {
  flex: 1; padding: 10px 14px; font: 400 13.5px/1.3 "Inter", sans-serif; color: var(--gk-text);
  background: var(--gk-glass); border: 1px solid var(--gk-border); border-radius: var(--gk-radius-full); outline: none;
}
.gk-chat-input:focus { border-color: var(--gk-aqua); }
.gk-chat-send:hover { filter: brightness(1.08); }
.gk-chat-send {
  width: 40px; height: 40px; flex: none; display: flex; align-items: center; justify-content: center;
  cursor: pointer; color: #06121e; font-size: 17px;
  background: linear-gradient(90deg, var(--gk-aqua), var(--gk-violet)); border: 0; border-radius: var(--gk-radius-full);
}
/* — Bug — */
.gk-bug-sub { margin: -4px 0 12px; font-size: 12.5px; line-height: 1.45; color: var(--gk-muted); }
.gk-bug-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.gk-bug-chip {
  padding: 10px 14px; cursor: pointer; font: 600 12px/1 "Inter", sans-serif; color: var(--gk-muted);
  background: var(--gk-glass); border: 1px solid var(--gk-border-subtle); border-radius: var(--gk-radius-full);
}
.gk-bug-chip:hover { border-color: var(--gk-border); color: var(--gk-text); }
.gk-bug-chip.is--on { color: var(--gk-text); border-color: var(--gk-aqua); background: rgba(94,231,223,.12); }
.gk-field textarea {
  width: 100%; resize: vertical; min-height: 84px; padding: 10px 12px;
  font: 400 13.5px/1.4 "Inter", sans-serif; color: var(--gk-text);
  background: var(--gk-glass); border: 1px solid var(--gk-border); border-radius: var(--gk-radius-sm); outline: none;
}
.gk-field textarea:focus { border-color: var(--gk-aqua); }
.gk-field input[type="file"] { font-size: 12px; color: var(--gk-muted); }
.gk-bug-shot img { max-width: 140px; max-height: 140px; border-radius: var(--gk-radius-sm); border: 1px solid var(--gk-border); margin-bottom: 8px; }

/* ===================== §37 — Flashcards (/flashcards) =====================
   flashcards-live.js : hub decks → deck (statuts) → session QCM/assembler/intro.
   Port du look app (cartes verre, vert/rouge correction, or XP). */
.gk-fl-wrap { max-width: 860px; }
.gk-fl-stats { display: flex; gap: 12px; flex-wrap: wrap; margin: 6px 0 20px; }
.gk-fl-stat { flex: 1; min-width: 140px; display: flex; flex-direction: column; gap: 6px; padding: 14px 16px; border: 1px solid var(--gk-border-subtle); background: var(--gk-glass); border-radius: var(--gk-radius-sm); }
.gk-fl-stat b { font: 700 19px/1 "Inter", sans-serif; color: var(--gk-text); }
.gk-fl-stat small { font-size: 11.5px; color: var(--gk-muted); }
.gk-fl-xpbar { display: block; height: 6px; border-radius: var(--gk-radius-full); background: rgba(255,255,255,.08); overflow: hidden; }
.gk-fl-xpbar i { display: block; height: 100%; background: linear-gradient(90deg, var(--gk-gold), #f5d06e); }
.gk-fl-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; }
.gk-fl-deck { position: relative; display: flex; align-items: center; gap: 12px; padding: 12px 14px; cursor: pointer; text-align: left; border: 1px solid var(--gk-border-subtle); background: var(--gk-glass); border-radius: var(--gk-radius-sm); color: var(--gk-text); transition: transform .15s, border-color .15s; }
.gk-fl-deck:hover { transform: translateY(-2px); border-color: var(--gk-border); }
.gk-fl-deck-img { width: 54px; height: 54px; flex: none; border-radius: var(--gk-radius-sm); background-size: cover; background-position: center; }
.gk-fl-deck-img--ph { display: flex; align-items: center; justify-content: center; background: var(--gk-glass-md); color: var(--gk-muted); font-size: 22px; }
.gk-fl-deck-tx { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.gk-fl-deck-tx b { font: 600 14.5px/1.25 "Inter", sans-serif; }
.gk-fl-deck-tx small { font-size: 12px; color: var(--gk-muted); }
.gk-fl-due { position: absolute; top: 10px; right: 10px; min-width: 22px; height: 22px; padding: 0 6px; display: flex; align-items: center; justify-content: center; font: 700 11.5px/1 "Inter", sans-serif; color: #06121e; background: var(--gk-aqua); border-radius: var(--gk-radius-full); }
.gk-fl-back { display: inline-flex; align-items: center; gap: 6px; margin-bottom: 2px; padding: 10px 12px 10px 0; background: none; border: 0; cursor: pointer; font: 600 13px/1 "Inter", sans-serif; color: var(--gk-muted); }
.gk-fl-back:hover { color: var(--gk-text); }
.gk-fl-h { font: 700 22px/1.2 "Inter", sans-serif; color: var(--gk-text); margin: 0 0 14px; }
.gk-fl-actions { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 18px; }
.gk-fl-go { display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 12px 18px; cursor: pointer; font: 700 14px/1 "Inter", sans-serif; color: #06121e; background: linear-gradient(90deg, var(--gk-aqua), var(--gk-violet)); border: 0; border-radius: var(--gk-radius-full); }
.gk-fl-go[disabled] { opacity: .45; cursor: default; }
.gk-fl-go.is--ghost { background: var(--gk-glass); color: var(--gk-text); border: 1px solid var(--gk-border); }
.gk-fl-go:not([disabled]):hover { filter: brightness(1.08); }
.gk-fl-go.is--ghost:not([disabled]):hover { background: var(--gk-glass-md); filter: none; }
.gk-fl-group { margin-bottom: 16px; }
.gk-fl-cards { display: flex; flex-direction: column; gap: 8px; margin-top: 8px; }
.gk-fl-card { display: flex; align-items: center; gap: 12px; padding: 10px 13px; border: 1px solid var(--gk-border-subtle); border-left-width: 3px; background: var(--gk-glass); border-radius: var(--gk-radius-sm); }
.gk-fl-card.is--new { border-left-color: var(--gk-border); }
.gk-fl-card.is--learning { border-left-color: var(--gk-aqua); }
.gk-fl-card.is--review { border-left-color: var(--gk-rose); }
.gk-fl-card.is--learned { border-left-color: #7fe0a0; }
.gk-fl-card-img { width: 42px; height: 42px; flex: none; border-radius: var(--gk-radius-sm); background-size: cover; background-position: center; }
.gk-fl-card-tx { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.gk-fl-card-tx b { font: 600 13.5px/1.25 "Inter", sans-serif; color: var(--gk-text); }
.gk-fl-card-tx small { font-size: 12px; color: var(--gk-muted); }
.gk-fl-han { font-size: 12px; color: var(--gk-muted); }
.gk-fl-han.is--big { font-size: 20px; }
/* — Session — */
.gk-fl-top { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.gk-fl-quit { background: none; border: 0; cursor: pointer; color: var(--gk-muted); font-size: 18px; padding: 8px; margin: -8px 0 -8px -8px; }
.gk-fl-bar { flex: 1; height: 8px; border-radius: var(--gk-radius-full); background: rgba(255,255,255,.08); overflow: hidden; }
.gk-fl-bar i { display: block; height: 100%; background: linear-gradient(90deg, var(--gk-aqua), var(--gk-violet)); transition: width .3s; }
.gk-fl-count { font: 600 12px/1 "Inter", sans-serif; color: var(--gk-muted); }
.gk-fl-retry { font: 600 12px/1 "Inter", sans-serif; color: var(--gk-gold); margin-bottom: 10px; }
.gk-fl-q, .gk-fl-intro, .gk-fl-end { display: flex; flex-direction: column; gap: 16px; align-items: center; text-align: center; padding: 8px 0 24px; }
.gk-fl-prompt { display: flex; flex-direction: column; align-items: center; gap: 8px; min-height: 60px; justify-content: center; }
.gk-fl-face-tx { font: 600 16px/1.35 "Inter", sans-serif; color: var(--gk-text); display: flex; flex-direction: column; gap: 3px; }
.gk-fl-face-tx.is--big { font-size: 24px; }
.gk-fl-face-img { max-width: min(240px, 100%); max-height: 240px; border-radius: var(--gk-radius-sm); border: 1px solid var(--gk-border-subtle); object-fit: contain; background: #0b0e1a; }
.gk-fl-face-img.is--big { max-width: min(300px, 100%); max-height: 300px; }
.gk-fl-video { width: min(320px, 80vw); aspect-ratio: 9 / 16; max-height: 420px; }
.gk-fl-video iframe { width: 100%; height: 100%; border: 0; border-radius: var(--gk-radius-sm); }
.gk-fl-audio { display: inline-flex; align-items: center; gap: 8px; padding: 10px 16px; cursor: pointer; font: 600 13px/1 "Inter", sans-serif; color: var(--gk-text); background: var(--gk-glass); border: 1px solid var(--gk-border); border-radius: var(--gk-radius-full); }
.gk-fl-choices { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; width: 100%; max-width: 640px; }
.gk-fl-choices.is--imgs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.gk-fl-choice { display: flex; align-items: center; justify-content: center; padding: 14px 12px; cursor: pointer; border: 1px solid var(--gk-border-subtle); background: var(--gk-glass); border-radius: var(--gk-radius-sm); color: var(--gk-text); transition: border-color .15s, background-color .15s; }
.gk-fl-choice:not(.is--right):not(.is--wrongpick):not(.is--off):hover { border-color: var(--gk-border); }
.gk-fl-choice.is--right, .gk-fl-choice.is--wrongpick, .gk-fl-choice.is--off { cursor: default; }
.gk-fl-choice .gk-fl-face-img { max-width: 120px; max-height: 120px; }
.gk-fl-choice.is--right { border-color: #7fe0a0; background: rgba(127,224,160,.12); }
.gk-fl-choice.is--wrongpick { border-color: var(--gk-rose); background: rgba(226,74,102,.12); }
.gk-fl-choice.is--off { opacity: .4; }
.gk-fl-made { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; min-height: 46px; align-items: center; width: 100%; max-width: 640px; padding: 8px; border-bottom: 2px solid var(--gk-border); }
.gk-fl-made.is--ok { border-color: #7fe0a0; }
.gk-fl-made.is--ko { border-color: var(--gk-rose); }
.gk-fl-made-ph { color: var(--gk-muted); font-size: 13px; }
.gk-fl-slot, .gk-fl-word { padding: 9px 14px; font: 600 14px/1 "Inter", sans-serif; color: var(--gk-text); background: var(--gk-glass-md); border: 1px solid var(--gk-border); border-radius: var(--gk-radius-sm); }
.gk-fl-word { cursor: pointer; background: var(--gk-glass); }
.gk-fl-word:not(.is--used):hover { border-color: var(--gk-aqua); }
.gk-fl-word.is--used { opacity: .3; }
.gk-fl-bank { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; max-width: 640px; }
.gk-fl-verdict { display: flex; align-items: center; gap: 8px; font: 600 14px/1 "Inter", sans-serif; }
.gk-fl-verdict.is--ok { color: #7fe0a0; }
.gk-fl-verdict.is--ko { color: var(--gk-rose); }
.gk-fl-meaning { font-size: 15px; line-height: 1.5; color: var(--gk-text); margin: 0; max-width: 480px; }
.gk-fl-end-ic { font-size: 44px; color: var(--gk-gold); }
.gk-fl-score { color: var(--gk-muted); margin: 0; }
.gk-fl-reward { display: flex; gap: 16px; font: 700 15px/1 "Inter", sans-serif; color: var(--gk-gold); }

/* ===================== §38 — Entraînements (/entrainement) =====================
   training-live.js : hub (séance libre, mes séances, mes entraînements, catalogue),
   éditeur (overlay .gk-modal), player plein écran + bulle flottante. Or var(--gk-gold) = repos. */
.gk-tr-wrap { max-width: 860px; }
.gk-tr-free { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; padding: 16px; border: 1px solid var(--gk-border-subtle); background: var(--gk-glass); border-radius: var(--gk-radius-sm); margin-bottom: 8px; }
.gk-tr-free b { display: block; font: 700 16px/1.2 "Inter", sans-serif; color: var(--gk-text); }
.gk-tr-free small { color: var(--gk-muted); font-size: 12.5px; }
.gk-tr-list { display: flex; flex-direction: column; gap: 8px; margin: 8px 0 4px; }
.gk-tr-card { display: flex; align-items: center; gap: 12px; width: 100%; text-align: left; padding: 12px 14px; border: 1px solid var(--gk-border-subtle); background: var(--gk-glass); border-radius: var(--gk-radius-sm); color: var(--gk-text); }
button.gk-tr-card { cursor: pointer; }
button.gk-tr-card:hover { background: var(--gk-glass-md); }
.gk-tr-card-tx { flex: 1; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.gk-tr-card-tx b { font: 600 14.5px/1.25 "Inter", sans-serif; }
.gk-tr-card-tx small { font-size: 12px; color: var(--gk-muted); }
.gk-tr-card-btns { display: flex; gap: 8px; }
.gk-tr-mini { display: inline-flex; align-items: center; justify-content: center; gap: 5px; min-width: 34px; height: 34px; padding: 0 9px; cursor: pointer; font: 600 12px/1 "Inter", sans-serif; color: var(--gk-text); background: var(--gk-glass); border: 1px solid var(--gk-border); border-radius: var(--gk-radius-full); }
.gk-tr-mini:hover { background: var(--gk-glass-md); }
.gk-tr-mini.is--go { color: #06121e; background: linear-gradient(90deg, var(--gk-aqua), var(--gk-violet)); border: 0; }
.gk-tr-mini.is--rm { color: var(--gk-rose); }
.gk-tr-create { margin-top: 14px; }
/* Hub S'entraîner : « Créer un entraînement », le titre « Catalogue d'exercices »
   et « Parcourir les exercices » se touchaient (retour Jason 31/08). Rythme :
   un vrai blanc AVANT chaque titre de section, un petit dessous, et le bouton
   catalogue détaché du titre. Scopé au hub pour ne pas toucher la cloche. */
[data-gk-training] .gk-ntf-h { margin-top: 30px; margin-bottom: 12px; }
[data-gk-training] .gk-ntf-h:first-child { margin-top: 0; }
[data-gk-training] .gk-tr-create { margin: 16px 0 4px; }
[data-gk-training] .gk-ntf-h + .gk-fl-go { margin-top: 2px; }
.gk-tr-meta { color: var(--gk-muted); font-size: 12.5px; margin: -6px 0 14px; }
.gk-tr-step { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 10px 13px; border: 1px solid var(--gk-border-subtle); background: var(--gk-glass); border-radius: var(--gk-radius-sm); margin-bottom: 8px; }
.gk-tr-step-tx { flex: 1; min-width: 160px; display: flex; flex-direction: column; gap: 1px; }
.gk-tr-step-tx b { font: 600 13.5px/1.3 "Inter", sans-serif; color: var(--gk-text); }
.gk-tr-step-tx small { font-size: 12px; color: var(--gk-muted); }
.gk-tr-pills { display: flex; gap: 6px; flex-wrap: wrap; }
.gk-tr-pill { padding: 4px 9px; font: 600 11px/1 "Inter", sans-serif; color: var(--gk-muted); background: rgba(255,255,255,.06); border-radius: var(--gk-radius-full); white-space: nowrap; }
.gk-tr-pill.is--rest { color: var(--gk-gold); background: rgba(232,182,42,.12); }
.gk-tr-exos { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 12px; margin-top: 10px; }
.gk-tr-exo { border: 1px solid var(--gk-border-subtle); background: var(--gk-glass); border-radius: var(--gk-radius-sm); overflow: hidden; }
.gk-tr-exo-vid { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; display: block; background: #0b0e1a; }
.gk-tr-exo-tx { display: flex; flex-direction: column; gap: 5px; padding: 10px 12px; align-items: flex-start; }
.gk-tr-exo-tx b { font: 600 13.5px/1.25 "Inter", sans-serif; color: var(--gk-text); }
.gk-tr-exo-tx small { font-size: 12px; line-height: 1.4; color: var(--gk-muted); }
/* — Éditeur : même langage que le créateur du backoffice (#trainings) —
   table en colonnes (# · Exercice · Consigne · Sér. · Reps · Sec · Kg · Repos),
   inputs nus (bordure au survol, aqua au focus), zone Échauffement séparée,
   circuits encadrés ruby (compteur de tours + dissoudre). Mobile : la table
   défile horizontalement dans .gk-ted-scroll. — */
.gk-ted-name { width: 100%; margin: 2px 0 4px; padding: 7px 9px; font: 800 italic 20px/1.2 "Inter", sans-serif; color: var(--gk-text); background: transparent; border: 1px solid transparent; border-radius: var(--gk-radius-md); }
.gk-ted-name:hover { border-color: var(--gk-border-subtle); }
.gk-ted-name:focus { outline: none; border-color: var(--gk-aqua); background: rgba(255,255,255,.04); }
.gk-ted-zone { margin-top: 16px; padding-top: 12px; border-top: 1px solid var(--gk-border); }
.gk-ted-h { font: 700 10.5px/1 ui-monospace, Menlo, monospace; letter-spacing: .14em; text-transform: uppercase; color: var(--gk-muted); margin-bottom: 8px; }
.gk-ted-scroll { overflow-x: auto; }
.gk-ted-table { min-width: 660px; }
.gk-ted-wtable { min-width: 480px; }
.gk-ted-cols, .gk-ted-row { display: grid; grid-template-columns: 26px minmax(150px, 1fr) minmax(120px, 1.1fr) 46px 50px 50px 46px 52px 24px; gap: 6px; align-items: center; }
.gk-ted-cols { padding: 0 6px 6px; border-bottom: 1px solid var(--gk-border); margin-bottom: 4px; font: 700 10px/1 ui-monospace, Menlo, monospace; letter-spacing: .12em; text-transform: uppercase; color: var(--gk-muted); }
.gk-ted-cols span:nth-child(n+4) { text-align: center; }
.gk-ted-row { padding: 2px 6px; border: 1px solid transparent; }
.gk-ted-row:hover { border-color: var(--gk-border-subtle); }
.gk-ted-row.in-circuit { border-left: 2px solid var(--gk-rose); }
.gk-ted-num { font: 600 11px/1 ui-monospace, Menlo, monospace; color: var(--gk-muted); text-align: right; }
.gk-ted-t, .gk-ted-n { width: 100%; padding: 6px 8px; font: 400 13px/1.2 "Inter", sans-serif; color: var(--gk-text); background: transparent; border: 1px solid transparent; border-radius: var(--gk-radius-md); }
.gk-ted-t:hover, .gk-ted-n:hover, .gk-ted-cname:hover { border-color: var(--gk-border-subtle); }
.gk-ted-t:focus, .gk-ted-n:focus, .gk-ted-cname:focus { outline: none; border-color: var(--gk-aqua); background: rgba(255,255,255,.04); }
.gk-ted-t.is--detail { color: var(--gk-muted); font-size: 12.5px; }
.gk-ted-n { font-family: ui-monospace, Menlo, monospace; font-size: 12px; text-align: center; padding: 6px 2px; -moz-appearance: textfield; appearance: textfield; }
.gk-ted-n::-webkit-outer-spin-button, .gk-ted-n::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.gk-ted-wrow { display: grid; grid-template-columns: minmax(180px, 1fr) 50px 50px 52px 24px; gap: 6px; align-items: center; padding: 2px 6px; border: 1px solid transparent; }
.gk-ted-wrow:hover { border-color: var(--gk-border-subtle); }
.gk-ted-del { display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; background: none; border: 0; color: var(--gk-muted); cursor: pointer; font-size: 13px; padding: 0; }
.gk-ted-del:hover { color: var(--gk-rose); }
.gk-ted-add { background: none; border: 1px dashed var(--gk-border); color: var(--gk-muted); font: 600 12px/1 "Inter", sans-serif; padding: 9px 13px; cursor: pointer; margin-top: 8px; border-radius: var(--gk-radius-sm); }
.gk-ted-add:hover { color: var(--gk-text); border-color: var(--gk-border-bright); }
.gk-ted-adds { display: flex; gap: 8px; }
.gk-ted-circhead { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 10px 0 2px; padding: 5px 8px; border-left: 2px solid var(--gk-rose); background: rgba(226,74,102,.06); }
.gk-ted-circhead .ph-repeat { color: var(--gk-rose); font-size: 14px; }
.gk-ted-cc-label { font: 700 10.5px/1 ui-monospace, Menlo, monospace; letter-spacing: .12em; text-transform: uppercase; color: var(--gk-text); }
.gk-ted-cname { flex: 1; min-width: 90px; padding: 5px 8px; font: 600 12.5px/1.2 "Inter", sans-serif; color: var(--gk-text); background: transparent; border: 1px solid transparent; border-radius: var(--gk-radius-md); }
.gk-ted-rounds { display: inline-flex; align-items: center; gap: 6px; }
.gk-ted-rounds button { width: 22px; height: 22px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--gk-border); background: transparent; color: var(--gk-text); cursor: pointer; font-size: 13px; line-height: 1; }
.gk-ted-rounds button:hover { border-color: var(--gk-aqua); }
.gk-ted-cc-n { font: 700 13px/1 ui-monospace, Menlo, monospace; color: var(--gk-gold); min-width: 16px; text-align: center; }
.gk-ted-cc-t { font: 600 10px/1 "Inter", sans-serif; color: var(--gk-muted); text-transform: uppercase; letter-spacing: .1em; }
.gk-ted-mini { background: none; border: 1px solid var(--gk-border-subtle); color: var(--gk-muted); font: 600 10.5px/1 "Inter", sans-serif; padding: 5px 9px; cursor: pointer; }
.gk-ted-mini:hover { color: var(--gk-text); border-color: var(--gk-border); }
.gk-ted-mini.is--danger:hover { color: var(--gk-rose); border-color: var(--gk-rose); }
/* — cellule nom + loupe (ouvre le catalogue complet) — */
.gk-ted-namecell { display: flex; align-items: center; gap: 2px; min-width: 0; }
.gk-ted-namecell .gk-ted-t { flex: 1; min-width: 0; }
.gk-ted-loupe { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; flex: none; background: none; border: 0; color: var(--gk-muted); cursor: pointer; font-size: 14px; padding: 0; }
.gk-ted-loupe:hover { color: var(--gk-aqua); }
/* — panneau « Tous les exercices » (réutilise le tiroir .gk-drawer du kit) — */
.gk-ted-pk { display: flex; flex-direction: column; gap: 10px; }
.gk-ted-pk-search { flex: none; }
.gk-ted-pk-cats { flex: none; margin-bottom: 0; }
.gk-ted-pk-list { flex: 1; min-height: 0; overflow-y: auto; display: flex; flex-direction: column; gap: 6px; padding-right: 2px; }
.gk-ted-pk-row { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; cursor: pointer; padding: 10px 12px; border: 1px solid var(--gk-border-subtle); background: var(--gk-glass); border-radius: var(--gk-radius-sm); color: var(--gk-text); }
.gk-ted-pk-row:hover { background: var(--gk-glass-md); border-color: var(--gk-border); }
.gk-ted-pk-tx { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.gk-ted-pk-tx b { font: 600 13.5px/1.25 "Inter", sans-serif; }
.gk-ted-pk-tx small { font-size: 11.5px; line-height: 1.35; color: var(--gk-muted); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
/* — autocomplétion du champ Exercice (mêmes exos que la loupe) — */
.gk-ted-t::-webkit-calendar-picker-indicator { display: none !important; }
.gk-ted-ac { position: fixed; z-index: 4500; display: flex; flex-direction: column; min-width: 220px; max-width: 340px; max-height: 264px; overflow-y: auto; background: rgba(10, 14, 24, .97); border: 1px solid var(--gk-border); box-shadow: 0 12px 34px rgba(0, 0, 0, .5); }
.gk-ted-ac-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 12px; background: none; border: 0; cursor: pointer; text-align: left; color: var(--gk-text); }
.gk-ted-ac-row b { font: 600 13px/1.25 "Inter", sans-serif; }
.gk-ted-ac-row span { font: 600 10.5px/1 ui-monospace, Menlo, monospace; color: var(--gk-muted); white-space: nowrap; }
.gk-ted-ac-row:hover, .gk-ted-ac-row.is--on { background: rgba(94,231,223,.12); }
/* — l'éditeur est une PAGE : le pied colle au contenu, pas à une modale — */
[data-gk-training-editor] .gk-tr-ed-foot { max-width: 720px; }
.gk-tr-ed-foot { display: flex; justify-content: space-between; gap: 10px; margin-top: 16px; }
.gk-tr-ed-foot .gk-modal-submit { flex: 1; }
/* — Player — */
.gk-tr-player { position: fixed; inset: 0; z-index: 4000; background: rgba(7, 10, 18, .92); -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px); overflow-y: auto; }
.gk-tr-pl-in { max-width: 560px; margin: 0 auto; padding: 26px 20px 40px; display: flex; flex-direction: column; align-items: center; gap: 14px; min-height: 100%; }
.gk-tr-pl-top { display: flex; align-items: center; gap: 10px; width: 100%; }
.gk-tr-pl-name { flex: 1; font: 700 15px/1.2 "Inter", sans-serif; color: var(--gk-text); text-align: center; }
.gk-tr-pl-total { font: 600 13px/1 "Inter", sans-serif; color: var(--gk-muted); font-variant-numeric: tabular-nums; }
.gk-tr-pl-chrono { font: 200 clamp(48px, 21vw, 76px)/1 "Inter", sans-serif; color: var(--gk-text); font-variant-numeric: tabular-nums; letter-spacing: 2px; margin-top: 14px; }
.gk-tr-pl-chrono.is--rest { color: var(--gk-gold); }
.gk-tr-pl-chrono.is--work { color: var(--gk-aqua); }
.gk-tr-pl-state { font: 700 11px/1 "Inter", sans-serif; letter-spacing: .14em; text-transform: uppercase; color: var(--gk-muted); }
.gk-tr-pl-cur { display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; margin-top: 8px; }
.gk-tr-pl-cur b { font: 700 20px/1.25 "Inter", sans-serif; color: var(--gk-text); }
.gk-tr-pl-cur small { color: var(--gk-muted); font-size: 13px; }
.gk-tr-dots { display: flex; gap: 7px; margin-top: 4px; }
.gk-tr-dot { width: 9px; height: 9px; border-radius: 50%; background: rgba(255,255,255,.15); }
.gk-tr-dot.is--done { background: var(--gk-aqua); opacity: .5; }
.gk-tr-dot.is--cur { background: var(--gk-aqua); }
.gk-tr-pl-next { font-size: 12.5px; color: var(--gk-muted); margin-top: 6px; }
.gk-tr-laps { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; font: 500 12px/1 "Inter", sans-serif; color: var(--gk-muted); font-variant-numeric: tabular-nums; }
.gk-tr-pl-btns { display: flex; align-items: center; gap: 22px; margin-top: 12px; }
.gk-tr-nav { width: 58px; height: 58px; display: flex; align-items: center; justify-content: center; cursor: pointer; font-size: 22px; color: var(--gk-text); background: var(--gk-glass); border: 1px solid var(--gk-border); border-radius: var(--gk-radius-full); }
.gk-tr-nav:not([disabled]):hover { background: var(--gk-glass-md); }
.gk-tr-nav[disabled] { opacity: .35; cursor: default; }
.gk-tr-play:hover { filter: brightness(1.08); }
.gk-tr-play { width: 76px; height: 76px; display: flex; align-items: center; justify-content: center; cursor: pointer; font-size: 30px; color: #06121e; background: linear-gradient(135deg, var(--gk-aqua), var(--gk-violet)); border: 0; border-radius: var(--gk-radius-full); }
.gk-tr-skiprest { background: none; border: 0; cursor: pointer; font: 600 13px/1 "Inter", sans-serif; color: var(--gk-gold); padding: 11px 14px; }
.gk-tr-skiprest:hover { text-decoration: underline; }
.gk-tr-finish { margin-top: 10px; padding: 11px 22px; cursor: pointer; font: 700 13px/1 "Inter", sans-serif; color: #ffb3c1; background: rgba(226,74,102,.12); border: 1px solid rgba(226,74,102,.45); border-radius: var(--gk-radius-full); }
/* — Bulle flottante — */
.gk-tr-bubble { position: fixed; right: 18px; bottom: 18px; z-index: 3500; display: flex; align-items: center; gap: 9px; padding: 11px 16px; cursor: pointer; color: var(--gk-text); background: rgba(10, 14, 24, .85); border: 1px solid var(--gk-border); border-radius: var(--gk-radius-full); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); box-shadow: 0 8px 26px rgba(0,0,0,.45); }
.gk-tr-finish:hover { background: rgba(226,74,102,.2); }
.gk-tr-bubble .ph { color: var(--gk-aqua); font-size: 17px; }
.gk-tr-bubble span { font: 700 15px/1 "Inter", sans-serif; font-variant-numeric: tabular-nums; }
.gk-tr-bubble small { font: 500 11px/1 "Inter", sans-serif; color: var(--gk-muted); max-width: 130px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ===================== §39 — Communauté + profil enrichi =====================
   communaute.js : cartes post (avatar + ceinture + médias + likes/commentaires),
   composer, commentaires, profil public, sélecteur de ceinture, calendrier. */
.gk-com-wrap { max-width: 640px; }
.gk-com-teaser { display: flex; flex-direction: column; align-items: center; gap: 12px; text-align: center; padding: 44px 22px; border: 1px dashed var(--gk-border); border-radius: var(--gk-radius); }
.gk-com-teaser-ic { font-size: 42px; color: var(--gk-aqua); }
.gk-com-teaser h3 { font: 700 20px/1.2 "Inter", sans-serif; color: var(--gk-text); margin: 0; }
.gk-com-teaser p { color: var(--gk-muted); font-size: 13.5px; line-height: 1.5; margin: 0; max-width: 420px; }
.gk-com-composer { display: flex; align-items: center; gap: 10px; margin-bottom: 16px; }
.gk-com-open-composer { flex: 1; text-align: left; padding: 12px 16px; cursor: pointer; font: 400 13.5px/1 "Inter", sans-serif; color: var(--gk-muted); background: var(--gk-glass); border: 1px solid var(--gk-border-subtle); border-radius: var(--gk-radius-full); }
.gk-com-open-composer:hover { background: var(--gk-glass-md); }
.gk-com-cline { display: flex; gap: 10px; }
.gk-com-cline .gk-field { flex: 1; }
.gk-com-vis { display: flex; align-items: center; gap: 8px; font: 500 12.5px/1 "Inter", sans-serif; color: var(--gk-muted); margin: 4px 0 10px; cursor: pointer; }
.gk-com-card { display: flex; flex-direction: column; gap: 9px; padding: 14px 15px; border: 1px solid var(--gk-border-subtle); background: var(--gk-glass); border-radius: var(--gk-radius-sm); margin-bottom: 12px; }
.gk-com-card.is--private { border-style: dashed; }
.gk-com-head { display: flex; align-items: center; gap: 10px; }
.gk-com-author { display: flex; align-items: center; gap: 10px; text-decoration: none; color: var(--gk-text); flex: 1; min-width: 0; }
.gk-com-avatar { border-radius: 50%; background-size: cover; background-position: center; flex: none; }
.gk-com-avatar--ini { display: flex; align-items: center; justify-content: center; font: 700 13px/1 "Inter", sans-serif; color: #06121e; background: linear-gradient(135deg, var(--gk-aqua), var(--gk-violet)); }
.gk-com-who { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.gk-com-who b { font: 600 13.5px/1.2 "Inter", sans-serif; }
.gk-com-who small { display: flex; align-items: center; gap: 6px; font-size: 11.5px; color: var(--gk-muted); }
.gk-belt-dot { position: relative; display: inline-flex; align-items: flex-end; justify-content: center; border-radius: 50%; border: 1px solid var(--gk-border); flex: none; overflow: hidden; }
.gk-belt-stripes { display: flex; gap: 1px; margin-bottom: 1px; }
.gk-belt-stripes i { width: 2px; height: 5px; display: block; }
.gk-com-x { padding: 9px; margin: -9px -9px -9px auto; background: none; border: 0; cursor: pointer; color: var(--gk-muted); font-size: 15px; }
.gk-com-x:hover { color: var(--gk-rose); }
.gk-com-title { font: 700 15.5px/1.3 "Inter", sans-serif; color: var(--gk-text); margin: 0; }
.gk-com-dur { display: inline-flex; align-items: center; gap: 6px; align-self: flex-start; padding: 4px 10px; font: 700 12px/1 "Inter", sans-serif; color: var(--gk-gold); background: rgba(232,182,42,.10); border-radius: var(--gk-radius-full); }
.gk-com-text { font-size: 13.5px; line-height: 1.5; color: var(--gk-text); margin: 0; word-break: break-word; }
.gk-com-mention { color: var(--gk-aqua); font-weight: 600; }
.gk-com-img { width: 100%; max-height: 440px; object-fit: cover; border-radius: var(--gk-radius-sm); display: block; }
.gk-com-video { width: 100%; max-height: 480px; border-radius: var(--gk-radius-sm); display: block; background: #000; }
.gk-com-mosaic { display: flex; flex-direction: column; gap: 6px; }
.gk-com-thumbs { display: flex; gap: 6px; }
.gk-com-thumbs img { flex: 1; min-width: 0; height: 84px; object-fit: cover; border-radius: var(--gk-radius-sm); }
.gk-com-exos { display: flex; flex-wrap: wrap; gap: 6px; }
.gk-com-foot { display: flex; align-items: center; gap: 16px; margin-top: 2px; }
.gk-com-act { display: inline-flex; align-items: center; gap: 6px; background: none; border: 0; cursor: pointer; font: 600 13px/1 "Inter", sans-serif; color: var(--gk-muted); text-decoration: none; padding: 10px 6px; margin: -6px -4px; }
.gk-com-act:hover { color: var(--gk-text); }
.gk-com-act.is--liked { color: #F87171; }
.gk-com-act.is--more { margin-left: auto; }
.gk-com-comment { padding: 10px 13px; border: 1px solid var(--gk-border-subtle); background: var(--gk-glass); border-radius: var(--gk-radius-sm); margin-bottom: 8px; }
.gk-com-comment.is--corr { border-left: 3px solid var(--gk-amber); }
.gk-com-cwho { font: 600 12.5px/1 "Inter", sans-serif; color: var(--gk-text); text-decoration: none; margin-right: 8px; }
.gk-com-corrtag { font: 700 9.5px/1 "Inter", sans-serif; letter-spacing: .08em; text-transform: uppercase; color: var(--gk-amber); margin-right: 8px; }
.gk-com-ctime { font-size: 11px; color: var(--gk-muted); }
.gk-com-comment p { margin: 5px 0 0; font-size: 13px; line-height: 1.45; color: var(--gk-text); }
.gk-com-cform { display: flex; gap: 8px; align-items: center; margin-top: 12px; }
.gk-com-corr { display: inline-flex; align-items: center; gap: 5px; font: 600 11px/1 "Inter", sans-serif; color: var(--gk-muted); cursor: pointer; white-space: nowrap; }
.gk-com-pcard { display: flex; align-items: center; gap: 14px; padding: 16px; border: 1px solid var(--gk-border-subtle); background: var(--gk-glass); border-radius: var(--gk-radius-sm); margin-bottom: 16px; flex-wrap: wrap; }
.gk-com-pid { display: flex; flex-direction: column; gap: 4px; flex: 1; min-width: 0; }
.gk-com-pid b { font: 700 17px/1.2 "Inter", sans-serif; color: var(--gk-text); }
.gk-com-pid small { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--gk-muted); }
/* — Profil enrichi — */
.gk-com-mygrade { display: flex; align-items: center; gap: 8px; color: var(--gk-text); font-size: 13.5px; margin-bottom: 10px; }
.gk-prof-empty-inline { color: var(--gk-muted); font-size: 12.5px; }
.gk-belt-grid { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
.gk-belt-opt { display: inline-flex; align-items: center; gap: 7px; padding: 10px 13px; cursor: pointer; font: 600 12px/1 "Inter", sans-serif; color: var(--gk-muted); background: var(--gk-glass); border: 1px solid var(--gk-border-subtle); border-radius: var(--gk-radius-full); }
.gk-belt-opt:hover { border-color: var(--gk-border); color: var(--gk-text); }
.gk-belt-opt.is--on { border-color: var(--gk-aqua); color: var(--gk-text); background: rgba(94,231,223,.10); }
.gk-com-idform { display: flex; flex-direction: column; gap: 4px; max-width: 380px; margin-bottom: 6px; }
.gk-com-cal { margin-bottom: 6px; }
.gk-cal-head { font-size: 12.5px; color: var(--gk-muted); margin-bottom: 8px; }
.gk-cal-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 34px)); gap: 5px; }
.gk-cal-h { font: 700 11px/1 "Inter", sans-serif; color: var(--gk-muted); text-align: center; }
.gk-cal-day { display: flex; align-items: center; justify-content: center; height: 34px; font: 500 12px/1 "Inter", sans-serif; color: var(--gk-muted); background: rgba(255,255,255,.04); border-radius: var(--gk-radius-sm); }
.gk-cal-day.is--on { color: #06121e; background: var(--gk-aqua); font-weight: 700; }
.gk-cal-day.is--today { outline: 1.5px solid var(--gk-gold); }

/* ===================== §40 — 11 langues =====================
   Menu langue à 11 entrées : hauteur bornée + scroll. Arabe : layout LTR conservé
   (l'algo bidi Unicode rend le texte droite-à-gauche), prose alignée à droite. */
.gk-lang-menu { max-height: 62vh; overflow-y: auto; }
html[lang="ar"] p, html[lang="ar"] .body-s, html[lang="ar"] .gk-com-text,
html[lang="ar"] .gk-rel-tx small, html[lang="ar"] .gk-fl-meaning { direction: rtl; text-align: right; }

/* ===================== §41 — Pages Découvrir le taekwondo ===================== */
/* decouvrir.html, parcours.html, poomsae/comprendre.html — portage des 3 écrans
   « Découvrir » de l'app. Colonne de lecture, texte nu sur fond + tuiles de 1er
   niveau seulement (pas de boîte-dans-boîte), frises et listes variées. */
.gk-dk-wrap { max-width: 780px; margin: 0 auto; padding: 34px 8px 70px; }
.gk-dk-hero { font: 500 clamp(30px, 4.6vw, 42px)/1.12 "GT Sectra Display", Georgia, serif; color: var(--gk-text); margin: 0 0 16px; white-space: pre-line; }
.gk-dk-lead { font: 400 15.5px/1.55 "Inter", sans-serif; color: var(--gk-muted); margin: 0; max-width: 60ch; }
.gk-dk-sec { margin-top: 46px; }
.gk-dk-eyebrow { display: block; font: 600 11px/1 "Inter", sans-serif; letter-spacing: .2em; text-transform: uppercase; color: var(--gk-amber); margin-bottom: 8px; }
.gk-dk-h2 { font: 500 26px/1.2 "GT Sectra Display", Georgia, serif; color: var(--gk-text); margin: 0 0 12px; }
.gk-dk-p { font: 400 15px/1.55 "Inter", sans-serif; color: rgba(255,255,255,.82); margin: 10px 0 0; }
.gk-dk-sub { display: block; font: 700 13px/1.3 "Inter", sans-serif; color: var(--gk-amber); margin: 26px 0 10px; }
.gk-dk-sources { font: 400 12px/1.5 "Inter", sans-serif; font-style: italic; color: var(--gk-muted); margin-top: 40px; }
.gk-dk-finenote { font: 400 12.5px/1.5 "Inter", sans-serif; font-style: italic; color: var(--gk-muted); margin-top: 12px; }

/* Tuiles de 1er niveau (une seule épaisseur de verre, jamais imbriquées) */
.gk-dk-card, .gk-dk-note { border: 1px solid var(--gk-border-subtle); background: rgba(255,255,255,.05); border-radius: var(--gk-radius-sm); padding: 18px; }
.gk-dk-card-ko { display: block; font: 600 11px/1 "Inter", sans-serif; letter-spacing: .12em; text-transform: uppercase; color: var(--gk-amber); margin-bottom: 8px; }
.gk-dk-card-t { display: block; font: 700 16px/1.3 "Inter", sans-serif; color: var(--gk-text); margin-bottom: 6px; }
.gk-dk-card-b { font: 400 14px/1.5 "Inter", sans-serif; color: rgba(255,255,255,.82); margin: 0; }
.gk-dk-card--note { margin-top: 16px; }
.gk-dk-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 14px; }
.gk-dk-arrow { display: block; font: 700 15px/1.3 "Inter", sans-serif; color: var(--gk-amber); margin-bottom: 6px; }

/* Tae · Kwon · Do */
.gk-dk-name-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 4px 0 14px; }
.gk-dk-name-cell { text-align: center; padding: 16px 8px; border: 1px solid var(--gk-border-subtle); background: rgba(255,255,255,.05); border-radius: var(--gk-radius-sm); }
.gk-dk-name-ko { display: block; font-size: 28px; line-height: 1.1; color: var(--gk-text); }
.gk-dk-name-r { display: block; font: 700 15px/1.2 "Inter", sans-serif; color: var(--gk-amber); margin-top: 6px; }
.gk-dk-name-fr { display: block; font: 400 11.5px/1.35 "Inter", sans-serif; color: var(--gk-muted); margin-top: 3px; }

/* Sens des couleurs de ceinture (liste nue) */
.gk-dk-belts { list-style: none; margin: 18px 0 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.gk-dk-belt-row { display: flex; align-items: center; gap: 12px; }
.gk-dk-belt-dot { flex: none; width: 18px; height: 18px; border-radius: 50%; border: 1px solid var(--gk-border); }
.gk-dk-belt-name { flex: none; width: 70px; font: 700 14px/1.3 "Inter", sans-serif; color: var(--gk-text); }
.gk-dk-belt-meaning { font: 400 13px/1.4 "Inter", sans-serif; color: var(--gk-muted); }

/* Kwans */
.gk-dk-kwan-row { display: flex; gap: 14px; align-items: flex-start; margin-bottom: 16px; }
.gk-dk-kwan-seal { flex: none; width: 54px; display: flex; align-items: center; justify-content: center; }
.gk-dk-kwan-seal img { width: 48px; height: 48px; object-fit: contain; }
.gk-dk-kwan-hangul { font-size: 21px; color: var(--gk-text); }
.gk-dk-kwan-tx { min-width: 0; }
.gk-dk-kwan-name { display: block; font: 700 15px/1.3 "Inter", sans-serif; color: var(--gk-text); }
.gk-dk-kwan-founder { display: block; font: 400 12px/1.4 "Inter", sans-serif; color: var(--gk-muted); margin-top: 1px; }
.gk-dk-kwan-note { display: block; font: 400 13px/1.45 "Inter", sans-serif; color: rgba(255,255,255,.7); margin-top: 3px; }

/* Portraits des maîtres */
.gk-dk-founders { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-top: 4px; }
.gk-dk-founder { margin: 0; }
.gk-dk-founder-img { display: block; width: 100%; aspect-ratio: 1; object-fit: cover; object-position: top; border: 1px solid var(--gk-border-subtle); background: rgba(255,255,255,.05); }
.gk-dk-founder figcaption { text-align: center; }
.gk-dk-founder-name { display: block; font: 700 12.5px/1.3 "Inter", sans-serif; color: var(--gk-text); margin-top: 7px; }
.gk-dk-founder-sub { display: block; font: 400 10.5px/1.3 "Inter", sans-serif; color: var(--gk-muted); margin-top: 1px; }

/* Frise chronologique (rail + anneaux) */
.gk-dk-tl { list-style: none; margin: 4px 0 0; padding: 0; }
.gk-dk-tl-item { position: relative; margin-left: 6px; padding: 0 0 22px 24px; border-left: 2px solid rgba(94,231,223,.30); }
.gk-dk-tl-item:last-child { border-left-color: transparent; padding-bottom: 0; }
.gk-dk-tl-item::before { content: ""; position: absolute; left: -8px; top: 2px; width: 13px; height: 13px; border-radius: 50%; background: var(--gk-bg); border: 3px solid var(--gk-amber); box-sizing: border-box; }
.gk-dk-tl-year { display: block; font: 500 18px/1.2 "GT Sectra Display", Georgia, serif; font-style: italic; color: var(--gk-amber); margin-bottom: 4px; }
.gk-dk-tl-text { display: block; font: 400 14px/1.5 "Inter", sans-serif; color: rgba(255,255,255,.82); }

/* Logos fédérations */
.gk-dk-fedlogo { display: block; width: auto; height: 40px; max-width: 130px; object-fit: contain; background: #fff; padding: 5px 8px; box-sizing: content-box; border-radius: var(--gk-radius-sm); margin-bottom: 12px; }

/* Cinq préceptes + serment */
.gk-dk-tenets, .gk-dk-steps { list-style: none; margin: 6px 0 0; padding: 0; }
.gk-dk-tenet, .gk-dk-step { display: flex; gap: 14px; align-items: flex-start; margin-top: 16px; }
.gk-dk-num { flex: none; display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 50%; font: 700 13px/1 "Inter", sans-serif; color: var(--gk-amber); background: rgba(94,231,223,.12); border: 1px solid rgba(94,231,223,.5); }
.gk-dk-tenet-tx, .gk-dk-step-tx { min-width: 0; }
.gk-dk-tenet-t { display: block; font: 700 15px/1.35 "Inter", sans-serif; color: var(--gk-text); }
.gk-dk-tenet-ko { font: 400 12px/1.3 "Inter", sans-serif; color: var(--gk-muted); }
.gk-dk-tenet-b { display: block; font: 400 13px/1.5 "Inter", sans-serif; color: rgba(255,255,255,.82); margin-top: 2px; }
.gk-dk-quote { margin: 24px 0 0; padding: 2px 0 2px 16px; border-left: 3px solid var(--gk-amber); }
.gk-dk-quote-ko { display: block; font: 600 11px/1 "Inter", sans-serif; letter-spacing: .1em; text-transform: uppercase; color: var(--gk-amber); margin-bottom: 8px; }
.gk-dk-quote-txt { display: block; font: 400 17px/1.5 "GT Sectra Display", Georgia, serif; font-style: italic; color: var(--gk-text); }

/* Trigrammes (grille, decouvrir) */
.gk-dk-trigrid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin: 16px 0 4px; }
.gk-dk-tri { text-align: center; padding: 12px 4px; border: 1px solid var(--gk-border-subtle); background: rgba(255,255,255,.05); border-radius: var(--gk-radius-sm); }
.gk-dk-tri-sym { display: block; font-size: 22px; line-height: 1.15; color: var(--gk-amber); }
.gk-dk-tri-ko { display: block; font-size: 15px; color: var(--gk-text); margin-top: 2px; }
.gk-dk-tri-el { display: block; font: 400 11.5px/1.3 "Inter", sans-serif; color: var(--gk-muted); margin-top: 2px; }
.gk-dk-tri-pm { display: block; font: 500 11px/1.3 "Inter", sans-serif; letter-spacing: .04em; color: var(--gk-muted); margin-top: 1px; }

/* Glossaire */
.gk-dk-glo { list-style: none; margin: 6px 0 0; padding: 0; }
.gk-dk-glo-row { display: flex; gap: 14px; align-items: center; padding: 10px 0; border-bottom: 1px solid rgba(255,255,255,.08); }
.gk-dk-glo-row:last-child { border-bottom: 0; }
.gk-dk-glo-ko { flex: none; width: 66px; font-size: 18px; color: var(--gk-text); }
.gk-dk-glo-tx { min-width: 0; }
.gk-dk-glo-r { display: block; font: 700 14px/1.3 "Inter", sans-serif; color: var(--gk-text); }
.gk-dk-glo-hanja { font: 400 12px/1.3 "Inter", sans-serif; color: var(--gk-muted); margin-left: 8px; }
.gk-dk-glo-fr { display: block; font: 400 13px/1.4 "Inter", sans-serif; color: var(--gk-muted); margin-top: 1px; }

/* CTA */
.gk-dk-ctas { display: flex; flex-direction: column; gap: 10px; margin-top: 18px; max-width: 460px; }
.gk-dk-cta, .gk-dk-cta-ghost { display: block; text-align: center; padding: 14px 22px; border-radius: var(--gk-radius-sm); font: 700 15px/1.2 "Inter", sans-serif; text-decoration: none; transition: filter .15s ease, background-color .15s ease; }
.gk-dk-cta { background: var(--gk-amber); color: #06121e; }
.gk-dk-cta:hover { filter: brightness(1.08); }
.gk-dk-cta-ghost { border: 1px solid var(--gk-border); color: var(--gk-text); }
.gk-dk-cta-ghost:hover { background: var(--gk-glass); }

/* Chiffres clés (parcours + comprendre) */
.gk-dk-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(126px, 1fr)); gap: 10px; margin-top: 26px; }
.gk-dk-stat { text-align: center; padding: 14px 8px; border: 1px solid var(--gk-border-subtle); background: rgba(255,255,255,.05); border-radius: var(--gk-radius-sm); }
.gk-dk-stat-n { display: block; font: 500 21px/1.15 "GT Sectra Display", Georgia, serif; color: var(--gk-amber); }
.gk-dk-stat-l { display: block; font: 400 11.5px/1.35 "Inter", sans-serif; color: var(--gk-muted); margin-top: 4px; }

/* Feuille de route : frises de ceintures (bandes de couleur réelles) */
.gk-dk-road { display: grid; grid-template-columns: 1fr 1fr; gap: 26px; margin-top: 10px; }
.gk-dk-road-head { display: block; font: 700 14px/1.3 "Inter", sans-serif; color: var(--gk-amber); margin-bottom: 10px; }
.gk-dk-beltlist { list-style: none; margin: 0; padding: 0; }
.gk-dk-beltrow { display: flex; align-items: center; gap: 12px; padding: 5px 0; }
.gk-dk-beltband { flex: none; width: 46px; height: 13px; border-radius: 3px; border: 1px solid rgba(255,255,255,.28); }
.gk-dk-belt-l { flex: 1; min-width: 0; font: 400 13.5px/1.35 "Inter", sans-serif; color: var(--gk-text); }
.gk-dk-belt-k { flex: none; font: 700 12.5px/1.3 "Inter", sans-serif; font-variant-numeric: tabular-nums; color: var(--gk-muted); }
.gk-dk-road-note { font: 400 12px/1.45 "Inter", sans-serif; font-style: italic; color: var(--gk-muted); margin: 10px 0 0; }

/* Dans / examen / temps (parcours) */
.gk-dk-dan-row, .gk-dk-exam-row { display: flex; gap: 14px; align-items: flex-start; margin-top: 14px; }
.gk-dk-dan-ko { flex: none; width: 46px; font-size: 19px; color: var(--gk-text); }
.gk-dk-dan-t { display: block; font: 700 15px/1.35 "Inter", sans-serif; color: var(--gk-text); }
.gk-dk-dan-b { display: block; font: 400 13px/1.5 "Inter", sans-serif; color: rgba(255,255,255,.82); margin-top: 2px; }
.gk-dk-exam-ko { flex: none; width: 84px; font-size: 16px; color: var(--gk-text); }
.gk-dk-exam-r { display: block; font: 700 14px/1.35 "Inter", sans-serif; color: var(--gk-text); }
.gk-dk-exam-b { display: block; font: 400 13px/1.5 "Inter", sans-serif; color: rgba(255,255,255,.82); margin-top: 1px; }
.gk-dk-time-row { display: flex; gap: 14px; align-items: baseline; margin-top: 12px; }
.gk-dk-time-n { flex: none; width: 100px; font: 500 18px/1.2 "GT Sectra Display", Georgia, serif; color: var(--gk-amber); }
.gk-dk-time-l { font: 400 14px/1.5 "Inter", sans-serif; color: rgba(255,255,255,.82); }

/* Liens vers les fiches keup */
.gk-dk-keuplinks { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 22px; }
.gk-dk-keuplink { font: 600 12.5px/1 "Inter", sans-serif; color: var(--gk-text); text-decoration: none; padding: 9px 13px; border: 1px solid var(--gk-border-subtle); border-radius: var(--gk-radius-sm); transition: background-color .15s ease, border-color .15s ease; }
.gk-dk-keuplink:hover { background: var(--gk-glass); border-color: var(--gk-border); }

/* Comprendre les poomsae : termes, notes, schémas */
.gk-dk-term-row { display: flex; gap: 14px; align-items: flex-start; margin-top: 13px; }
.gk-dk-term-ko { flex: none; width: 70px; font-size: 17px; color: var(--gk-text); }
.gk-dk-term-tx { min-width: 0; }
.gk-dk-term-r { display: block; font: 700 14px/1.35 "Inter", sans-serif; color: var(--gk-text); }
.gk-dk-term-roman { font: 400 12px/1.3 "Inter", sans-serif; color: var(--gk-muted); }
.gk-dk-term-b { display: block; font: 400 13px/1.5 "Inter", sans-serif; color: rgba(255,255,255,.82); margin-top: 1px; }
.gk-dk-note { margin-top: 18px; }
.gk-dk-note-t { display: block; font: 700 13px/1.35 "Inter", sans-serif; color: var(--gk-amber); margin-bottom: 7px; }
.gk-dk-note-b { font: 400 14px/1.5 "Inter", sans-serif; color: rgba(255,255,255,.82); margin: 0; }
.gk-dk-floor { display: block; width: 132px; height: auto; margin: 14px auto 0; }
.gk-dk-svgcap { text-align: center; font: 400 12.5px/1.4 "Inter", sans-serif; font-style: italic; color: var(--gk-muted); margin: 8px 0 0; }
.gk-dk-step-t { display: block; font: 700 15px/1.35 "Inter", sans-serif; color: var(--gk-text); }
.gk-dk-step-b { display: block; font: 400 13px/1.5 "Inter", sans-serif; color: rgba(255,255,255,.82); margin-top: 2px; }
.gk-dk-errs { list-style: none; margin: 0; padding: 0; }
.gk-dk-err { position: relative; padding-left: 16px; font: 400 14px/1.5 "Inter", sans-serif; color: rgba(255,255,255,.82); margin-top: 5px; }
.gk-dk-err::before { content: "·"; position: absolute; left: 2px; font-weight: 700; color: var(--gk-amber); }
.gk-dk-bio { display: flex; gap: 14px; align-items: flex-start; margin-top: 15px; }
.gk-dk-bio-dot { flex: none; width: 8px; height: 8px; margin: 7px 10px 0; background: var(--gk-amber); }
.gk-dk-chain { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; margin-top: 4px; }
.gk-dk-chip { font: 700 12px/1 "Inter", sans-serif; color: #cff6f3; padding: 7px 11px; border: 1px solid rgba(94,231,223,.4); background: rgba(94,231,223,.08); border-radius: var(--gk-radius-sm); }
.gk-dk-chain-arrow { font: 700 14px/1 "Inter", sans-serif; color: var(--gk-amber); }
.gk-dk-wedge { display: block; width: 100%; height: 18px; margin-top: 12px; }
.gk-dk-chain-caps { display: flex; justify-content: space-between; gap: 12px; margin-top: 6px; font: 400 11px/1.4 "Inter", sans-serif; font-style: italic; color: var(--gk-muted); }
.gk-dk-diags { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 16px; }
.gk-dk-diag { text-align: center; }
.gk-dk-diag-svg { display: block; width: 100%; height: 42px; }
.gk-dk-diag-l { display: block; font: 500 10.5px/1.4 "Inter", sans-serif; letter-spacing: .05em; text-transform: uppercase; color: var(--gk-muted); margin-top: 6px; }
.gk-dk-score-row { display: flex; gap: 14px; align-items: flex-start; margin-top: 14px; }
.gk-dk-score-pts { flex: none; min-width: 46px; text-align: center; font: 500 14px/1 "GT Sectra Display", Georgia, serif; color: var(--gk-amber); padding: 7px 8px; border: 1px solid rgba(94,231,223,.5); background: rgba(94,231,223,.12); border-radius: var(--gk-radius-sm); }
.gk-dk-trirow { display: flex; gap: 12px; align-items: center; margin-top: 13px; }
.gk-dk-trirow .gk-dk-tri-sym, .gk-dk-trirow .gk-dk-tri-ko { display: inline-block; flex: none; width: 26px; text-align: center; margin: 0; }

@media (max-width: 720px) {
  .gk-dk-2col, .gk-dk-road, .gk-dk-diags { grid-template-columns: 1fr; }
  .gk-dk-founders { grid-template-columns: repeat(2, 1fr); }
  .gk-dk-trigrid { grid-template-columns: repeat(2, 1fr); }
  .gk-dk-wrap { padding-top: 18px; }
}

/* ===================== §42 — Retouches audit (mobile + clavier) ===================== */
@media (max-width: 479px) {
  .gk-com-cline { flex-direction: column; }
}
/* focus clavier visible sur tous les contrôles gk-* (le kit n'en définissait aucun) */
button[class*="gk-"]:focus-visible, a[class*="gk-"]:focus-visible { outline: 2px solid var(--gk-aqua); outline-offset: 2px; }
