/* ---------- Mobile-first UX & accessibility patch ---------- */
/* Ajoute ces variables utiles et règle la typo responsive */
:root{
  --ui-space: 0.75rem;
  --ui-radius: 0.6rem;
  --tap-min: 44px; /* minimum target height */
  --font-sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial;
  --text-strong: #e9eef2; /* légèrement plus lisible que e5e8ea */
  --card-contrast: #0f1113; /* card bg contrast sur dark bg */
  --brand-accent-contrast: #111; /* couleur texte sur accent (déjà utilisée) */
}

/* Typographie mobile-first */
html { font-size:16px; } /* base */
body {
  font-family: var(--font-sans);
  color: var(--text-strong);
  line-height: 1.45;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  font-size: clamp(0.95rem, 1.6vw, 1.05rem); /* responsive but readable */
}

/* Headings: scale but keep mobile first */
h1 { font-size: clamp(1.25rem, 4.8vw, 1.9rem); line-height:1.12; }
h2 { font-size: clamp(1.05rem, 4.0vw, 1.35rem); line-height:1.18; }

/* Tap targets / boutons */
.btn, .btn-primary, .btn-outline-primary, .btn-icon {
  min-height: var(--tap-min);
  padding: .6rem .9rem;
  border-radius: calc(var(--ui-radius) * 1);
  display:inline-flex; align-items:center; gap:.5rem;
  font-weight:600;
  touch-action:manipulation;
}
a.nav-link { padding: .7rem .9rem; min-height:var(--tap-min); }

/* Header cart link (moved out of sidebar) */
.header-cart-link { position:relative; width:38px; height:38px; border:1px solid var(--brand-border); background:#1a1c1e; border-radius:.65rem; color:var(--brand-accent); text-decoration:none; font-size:1.05rem; transition:background .18s, color .18s, border-color .18s; }
.header-cart-link:hover { background:#222528; color:var(--brand-accent-alt); }
.header-cart-link:focus-visible { outline:2px solid var(--brand-accent); outline-offset:2px; }
.header-cart-link .bi { pointer-events:none; }
.caddie-count-badge { position:absolute; top:-6px; right:-6px; background:var(--brand-accent); color:#111; font-size:.65rem; padding:2px 6px; border-radius:1rem; font-weight:600; line-height:1; opacity:0; transform:scale(.6); transition:opacity .18s, transform .18s; }
.caddie-count-badge.show { opacity:1; transform:scale(1); }
.header-cart-link.has-items { background:var(--brand-accent); color:#111; border-color:var(--brand-accent); }
.header-cart-link.has-items:hover { background:#ffac31; color:#111; }
.header-cart-link .cart-inline-count { font-size:.75rem; font-weight:600; background:rgba(var(--brand-accent-rgb),.18); padding:2px 6px; border-radius:1rem; line-height:1; color:var(--brand-accent); min-width:1.25rem; text-align:center; }
.header-cart-link.has-items .cart-inline-count { background:#111; color:#ffebcc; }

/* Bigger nav tabs on small screens for thumbs */
@media (max-width:800px){
  .app-main-tabs a.nav-link { padding: .85rem 1rem; font-size:.86rem; }
}

/* Cards & contrast */
.card {
  background: linear-gradient(180deg, var(--card-contrast), var(--brand-surface));
  border: 1px solid rgba(255,255,255,0.04);
  color: var(--text-strong);
  border-radius: calc(var(--ui-radius) + .15rem);
  padding: .75rem;
}

/* Improve form fields readability on mobile */
.form-control, .form-select {
  min-height:44px;
  padding: .5rem .6rem;
  font-size: .95rem;
  border-radius: .5rem;
}

/* Focus states: very visible for keyboard users */
:focus {
  outline: none;
}
:focus-visible {
  box-shadow: 0 0 0 3px rgba(var(--brand-accent-rgb),0.22), 0 0 0 6px rgba(255,255,255,0.03);
  border-radius: .35rem;
}

/* Ensure badges and small text meet contrast on accent */
.badge, .count-badge {
  font-weight:600;
  font-size:.75rem;
}
.badge.bg-accent, .cards-tech-view .tech-meta .period-emphasis.active-filter {
  color: var(--brand-accent-contrast); /* texte foncé sur orange */
}

/* Reduce motion for users who prefer it */
@media (prefers-reduced-motion: reduce){
  * { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; scroll-behavior: auto !important; }
}

/* Ensure small fonts are not too tiny on mobile */
@media (max-width:680px){
  .fs-065, .fs-08 { font-size: .75rem !important; }
  .cards-tech-view .tech-card { padding:.6rem; }
  .cards-tech-view .tech-grid { grid-template-columns: 1fr; gap:.5rem; } /* single column mobile */
}

/* Accessibility helpers */
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }

/* Make sure table text size is comfortable on mobile */
@media (max-width:576px){
  table.table, .wod-table, .cart-tech-table { font-size:.92rem; }
}

/* Tiny performance: avoid heavy box-shadows on mobile */
@media (max-width:420px){
  .card, .detail-zone { box-shadow: none; border:1px solid rgba(255,255,255,0.03); }
}

/* Optional sticky bottom nav (uncomment to enable) */
/*
.mobile-sticky-nav {
  position: sticky;
  bottom:0;
  left:0;
  right:0;
  background: linear-gradient(90deg,#0b0d0e, #111213);
  border-top:1px solid rgba(255,255,255,0.03);
  padding: .45rem .6rem;
  display:flex; gap:.4rem; justify-content:space-around;
  z-index:1100;
} */


/* Global theme variables inspired by krav-maga.net palette */
:root {
  --brand-primary:#0b3d77; /* deep blue */
  --brand-primary-rgb:11,61,119;
  --brand-secondary:#133d5b; /* darker accent */
  --brand-accent:#ff9800; /* FEKM orange */
  --brand-accent-rgb:255,152,0;
  --brand-accent-alt:#ffc400; /* yellow accent */
  --brand-bg:#000000; /* dark background */
  --brand-surface:#121212; /* elevated surfaces */
  --brand-border:#2a2f33; /* subtle border */
  --brand-muted:#8b96a3;
  --brand-danger:#ef5350;
  --brand-success:#2e7d32;
  --brand-warning:#ffa000;
  --brand-info:#2196f3;
  --focus-ring:0 0 0 .15rem rgba(var(--brand-accent-rgb),.55);
  --transition-fast:120ms ease;
  /* Shared soft surfaces / shadows (hoisted from seances page for reuse) */
  --shadow-soft: 0 1px 2px rgba(0,0,0,.05);
  --border-soft: #d0d5da;
  --border-soft-alt: #d3d9dd;
  --surface-soft: #f8f9fa;
  --surface-soft-alt: #eef1f4;
}

/* Typography tweaks */
body { background:var(--brand-bg); color:#e5e8ea; }
a { color:var(--brand-accent); }
a:hover { color:var(--brand-accent-alt); }

/* Themed buttons overrides (light touch) */
.btn-primary { background:var(--brand-accent); border-color:var(--brand-accent); color:#111; }
.btn-primary:hover, .btn-primary:focus { background:#ffac31; border-color:#ffac31; color:#111; }
.btn-outline-primary { color:var(--brand-accent); border-color:var(--brand-accent);background: #111; }
.btn-outline-primary:hover { background:var(--brand-accent); color:#111; }
.btn-outline-accent { background:rgba(var(--brand-accent-rgb),.12); border:1px solid rgba(var(--brand-accent-rgb),.45); color:var(--brand-accent); font-weight:600; letter-spacing:.05em; }
.btn-outline-accent:hover, .btn-outline-accent:focus { background:rgba(var(--brand-accent-rgb),.22); border-color:rgba(var(--brand-accent-rgb),.65); color:#111; }
.btn-outline-accent:active { background:linear-gradient(135deg, rgba(var(--brand-accent-rgb),.65), rgba(var(--brand-accent-rgb),.45)); color:#111; border-color:rgba(var(--brand-accent-rgb),.85); }
@media (prefers-color-scheme:dark){
  .btn-outline-accent { background:rgba(var(--brand-accent-rgb),.18); border-color:rgba(var(--brand-accent-rgb),.5); color:#ffddaa; }
  .btn-outline-accent:hover, .btn-outline-accent:focus { background:rgba(var(--brand-accent-rgb),.28); border-color:rgba(var(--brand-accent-rgb),.75); color:#111; }
  .btn-outline-accent:active { background:linear-gradient(135deg, rgba(var(--brand-accent-rgb),.75), rgba(var(--brand-accent-rgb),.5)); }
}
.btn-success { background:var(--brand-success); border-color:var(--brand-success); }
.btn-outline-success { color:var(--brand-success); border-color:var(--brand-success); }
.btn-outline-success:hover { background:var(--brand-success); color:#fff; }

/* Accent badges */
.badge.bg-accent { background:var(--brand-accent); color:#111; }

/* Utility text & background */
.text-brand { color:var(--brand-primary)!important; }
.text-accent { color:var(--brand-accent)!important; }
.bg-brand { background:var(--brand-primary)!important; color:#fff!important; }
.bg-surface { background:var(--brand-surface)!important; }

/* Icon helpers */
.icon-brand { color:var(--brand-primary)!important; }
.icon-accent { color:var(--brand-accent)!important; }
.icon-gear { color:var(--brand-accent); transition:color var(--transition-fast); }
.icon-gear:hover { color:var(--brand-accent-alt); }
.icon-pdf { color:var(--brand-accent); }
.icon-pdf:hover { color:var(--brand-accent-alt); }
/* Generic action icon wrapper to unify color + transition; size via utility (.icon-sm etc) */
.icon-action { color:var(--brand-accent); transition:color var(--transition-fast); cursor:pointer; line-height:1; display:inline-flex; align-items:center; }
.icon-action:hover { color:var(--brand-accent-alt); text-decoration:none; }
/* Consolidated icon link spacing */
.icon-link { display:inline-flex; align-items:center; justify-content:center; text-decoration:none; }
.icon-link:focus-visible { outline:2px solid var(--brand-accent); outline-offset:2px; }
/* Video & missing icons (replacing legacy PNGs) */
.icon-video { color:#ff4d4f; }
.icon-video:hover { color:#ff7b7d; }
.icon-missing { color:#888; opacity:.7; }
.icon-missing:hover { opacity:1; color:#aaa; }
/* Optional subtle pop effect for action icons */
.icon-action:active { transform:scale(.9); }

/* Focus ring */
a:focus, button:focus, .form-select:focus, .form-control:focus { box-shadow:var(--focus-ring); }

/* Tables */
table caption { color:var(--brand-muted); }
/* Orange headers */
thead.table-light, thead.table-info { background:var(--brand-accent); color:#111; }
thead.table-info th { background:transparent; color:#111; }
table thead th { background:var(--brand-accent); color:#111; }
/* ------------------------------------------------------------ */
/* Toolbar / group utilities (shared)                          */
/* ------------------------------------------------------------ */
.toolbar-group { display:inline-flex; align-items:center; background:var(--toolbar-bg, #fff); border:1px solid var(--toolbar-border, var(--border-soft)); border-radius:var(--ui-radius); overflow:hidden; box-shadow:var(--toolbar-shadow, var(--shadow-soft)); }
.toolbar-group > button { background:transparent; border:0; padding:.45rem .75rem; font-size:.65rem; font-weight:600; letter-spacing:.05em; text-transform:uppercase; line-height:1; display:inline-flex; gap:.4rem; align-items:center; color:var(--toolbar-fg,#49525a); cursor:pointer; position:relative; transition:background var(--transition-fast), color var(--transition-fast); }
.toolbar-group > button + button { border-left:1px solid var(--toolbar-divider, var(--border-soft)); }
.toolbar-group > button:hover:not(.active) { background:var(--toolbar-hover,#eef3f9); color:var(--toolbar-hover-fg,#18222b); }
.toolbar-group > button.active { background:var(--toolbar-active-bg,#0d6efd); color:#fff; box-shadow:inset 0 0 0 1px rgba(255,255,255,.15); }
.toolbar-group > button:focus-visible { outline:2px solid var(--brand-accent,#0d6efd); outline-offset:2px; }
.toolbar-group.compact > button { padding:.4rem .6rem; font-size:.62rem; }
/* Floating count badge utility */
.badge-count-float { position:absolute; top:2px; right:3px; font-size:.5rem; padding:.25em .45em; border-radius:.75rem; font-weight:600; box-shadow:0 0 0 1px rgba(0,0,0,.08); line-height:1; }

/* Dark mode adjustments for toolbar */
@media (prefers-color-scheme: dark){
  .toolbar-group { background:#1f2428; border-color:#384047; }
  .toolbar-group > button { color:#9aa3aa; }
  .toolbar-group > button:hover:not(.active){ background:#2a3238; color:#dbe2e6; }
  .toolbar-group > button.active { background:var(--toolbar-active-bg,#0d6efd); color:#fff; }
}
body.dark .toolbar-group { background:#1f2428; border-color:#384047; }
body.dark .toolbar-group > button { color:#9aa3aa; }
body.dark .toolbar-group > button:hover:not(.active){ background:#2a3238; color:#dbe2e6; }
body.dark .toolbar-group > button.active { background:var(--toolbar-active-bg,#0d6efd); color:#fff; }
/* Accessibility: explicit focus ring for toolbars if global ring suppressed */
.toolbar-group > button:focus { outline:none; }

/* NOTE: Both prefers-color-scheme and body.dark overrides are intentionally kept.
   prefers-color-scheme = automatic OS-driven theming; body.dark = manual override.
   If you deprecate manual toggle later, you can remove the body.dark section. */
/* Grouped table enhancements */
.group-header { cursor:pointer; user-select:none; background:linear-gradient(90deg, rgba(var(--brand-accent-rgb),.22), rgba(var(--brand-accent-rgb),.05)); border-top:1px solid rgba(var(--brand-accent-rgb),.4); font-size:.72rem; letter-spacing:.05em; text-transform:uppercase; font-weight:600; }
.group-header:focus { outline:2px solid var(--brand-accent); outline-offset:2px; }
.group-header .sep { opacity:.6; margin:0 .35rem; }
.group-header .count-badge { display:inline-block; background:rgba(var(--brand-accent-rgb),.25); padding:.15rem .4rem; border-radius:1rem; font-size:.6rem; margin-left:.5rem; }
.caret { display:inline-block; width:.75rem; height:.75rem; margin-right:.25rem; transform:rotate(-90deg); transition:transform .18s ease; }
.caret::before { content:''; display:block; width:0; height:0; border-top:.35rem solid transparent; border-bottom:.35rem solid transparent; border-left:.5rem solid var(--brand-accent); }
.caret.open { transform:rotate(0deg); }
/* Card view */
.group-header-sm { font-size:.75rem; text-transform:uppercase; letter-spacing:.04em; }
.group-header-sm .badge { font-weight:500; }
.group-header-sm .caret { width:.65rem; height:.65rem; }
.group-header-sm .caret::before { border-top:.3rem solid transparent; border-bottom:.3rem solid transparent; border-left:.45rem solid var(--brand-accent); }

/* Card harmonisation */
.card { border-color:var(--brand-border); background:var(--brand-surface); }
.card-header { background:#1d1f21; border-bottom-color:var(--brand-border); color:#fafafa; }

/* Filter containers unify look */
.wod-filters, .fekm-filters { background:#1a1c1e; border:1px solid var(--brand-border); }

/* Belt colors via variables (allows future theming) */
:root {
  --belt-yellow:#ffeb3b;
  --belt-orange:#ff9800;
  --belt-green:#2e7d32;
  --belt-blue:#1565c0;
  --belt-brown:#6d4c41;
  --belt-black:#111111;
}
td.Jaune { background:var(--belt-yellow); color:#111; }
td.Orange { background:var(--belt-orange); color:#111; }
td.Verte { background:var(--belt-green); color:#fff; }
td.Bleue { background:var(--belt-blue); color:#fff; }
td.Marron { background:var(--belt-brown); color:#fff; }
td.Noire, td.Black { background:var(--belt-black); color:#fff; }

/* Subtle row highlight for random selection */
.table-warning { animation:pulse-highlight 1.2s ease 1; }
@keyframes pulse-highlight { 0% { box-shadow:0 0 0 0 rgba(var(--brand-accent-rgb),.8); } 100% { box-shadow:0 0 0 .8rem rgba(var(--brand-accent-rgb),0); } }

/* Toast accent adjustments if present */
.app-toast.info { border-left-color:var(--brand-accent); }
.app-toast.success { border-left-color:var(--brand-success); }
.app-toast.error { border-left-color:var(--brand-danger); }

/* Gear / action link accessibility */
a.icon-link { display:inline-flex; align-items:center; justify-content:center; text-decoration:none; }
a.icon-link:focus-visible { outline:2px solid var(--brand-accent); outline-offset:2px; }

/* Scrollbar (WebKit) optional polish */
::-webkit-scrollbar { width:10px; height:10px; }
::-webkit-scrollbar-track { background:var(--brand-surface); }
::-webkit-scrollbar-thumb { background:var(--brand-primary); border:2px solid var(--brand-surface); border-radius:20px; }
::-webkit-scrollbar-thumb:hover { background:#0a366a; }

/* Reduce inline icon style duplication */
i.bi-gear { vertical-align:middle; }

/* Inactive row style refinement */
td.Inactive, tr.Inactive td { text-decoration:line-through; opacity:.55; }

/* Form switches accent */
.form-check-input:checked { background-color:var(--brand-accent); border-color:var(--brand-accent); }

/* Inputs & selects dark adaptation */
.form-control, .form-select { background:#1d1f21; border-color:#33393f; color:#e5e8ea; }
.form-control:focus, .form-select:focus { background:#232629; color:#fff; }
.form-control::placeholder { color:#6c747c; }

/* Tables dark body */
table.table { color:#e3e6e8; }
table.table tbody tr { background:#101214; }
table.table tbody tr:nth-child(even) { background:#141619; }
table.table tbody tr:hover { background:#1c1f23; }

/* Highlight for group search */
mark.match { background:rgba(var(--brand-accent-rgb),.35); color:#fff; padding:0 .15rem; border-radius:.2rem; }

/* Card view styling */
.cards-tech-view .prog-chip { background:linear-gradient(135deg, rgba(var(--brand-accent-rgb),.3), rgba(var(--brand-accent-rgb),.15)); padding:.35rem .7rem; border-radius:1rem; font-size:.75rem; font-weight:600; letter-spacing:.05em; }
.cards-tech-view .prog-chip[class*='belt-'] { color:#111; }
.cards-tech-view .prog-chip.belt-jaune { background:var(--belt-yellow); }
.cards-tech-view .prog-chip.belt-orange { background:var(--belt-orange); }
.cards-tech-view .prog-chip.belt-verte { background:var(--belt-green); color:#fff; }
.cards-tech-view .prog-chip.belt-bleue { background:var(--belt-blue); color:#fff; }
.cards-tech-view .prog-chip.belt-marron { background:var(--belt-brown); color:#fff; }
.cards-tech-view .prog-chip.belt-noire, .cards-tech-view .prog-chip.belt-black { background:var(--belt-black); color:#fff; }
.cards-tech-view .uv-block { background:#151718; border:1px solid #25292d; padding:1rem .9rem .6rem; border-radius:.75rem; }
.cards-tech-view .uv-block.belt-bg-jaune { background:linear-gradient(135deg, rgba(255,235,59,0.16), rgba(255,235,59,0.05)); border-color:rgba(255,235,59,0.35); }
.cards-tech-view .uv-block.belt-bg-orange { background:linear-gradient(135deg, rgba(255,152,0,0.16), rgba(255,152,0,0.05)); border-color:rgba(255,152,0,0.35); }
.cards-tech-view .uv-block.belt-bg-verte { background:linear-gradient(135deg, rgba(46,125,50,0.16), rgba(46,125,50,0.05)); border-color:rgba(46,125,50,0.4); }
.cards-tech-view .uv-block.belt-bg-bleue { background:linear-gradient(135deg, rgba(21,101,192,0.16), rgba(21,101,192,0.05)); border-color:rgba(21,101,192,0.4); }
.cards-tech-view .uv-block.belt-bg-marron { background:linear-gradient(135deg, rgba(109,76,65,0.18), rgba(109,76,65,0.06)); border-color:rgba(109,76,65,0.42); }
.cards-tech-view .uv-block.belt-bg-noire, .cards-tech-view .uv-block.belt-bg-black { background:linear-gradient(135deg, rgba(0,0,0,0.35), rgba(0,0,0,0.15)); border-color:#2a2a2a; }
.cards-tech-view .uv-header { border-bottom:1px solid #24282c; padding-bottom:.3rem; }
.cards-tech-view .cat-block { border-left:2px solid rgba(var(--brand-accent-rgb),.35); padding-left:.5rem; }
.cards-tech-view .cat-title { font-size:.7rem; text-transform:uppercase; letter-spacing:.05em; font-weight:600; color:var(--brand-accent); margin-bottom:.35rem; }
.cards-tech-view .type-block .type-header { font-size:.72rem; cursor:pointer; user-select:none; background:rgba(var(--brand-accent-rgb),.12); padding:.25rem .45rem; border-radius:.4rem; transition:background .18s; }
.cards-tech-view .type-block .type-header:hover { background:rgba(var(--brand-accent-rgb),.22); }
.cards-tech-view .type-block .type-name { font-weight:600; }
.cards-tech-view .type-block .type-count { background:rgba(var(--brand-accent-rgb),.25); padding:.1rem .45rem; border-radius:1rem; font-size:.6rem; font-weight:500; }
.cards-tech-view .tech-grid { display:grid; gap:.6rem; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); }
.cards-tech-view .tech-card { background:#101214; border:1px solid #24282c; padding:.55rem .6rem .6rem; border-radius:.6rem; position:relative; display:flex; flex-direction:column; transition:border-color .18s, background .18s; }
.cards-tech-view .tech-card:hover { border-color:rgba(var(--brand-accent-rgb),.55); background:#131619; }
.cards-tech-view .tech-card.inactive { opacity:.55; }
.cards-tech-view .tech-main { display:flex; gap:.5rem; align-items:flex-start; }
.cards-tech-view .belt-dot { width:12px; height:12px; min-width:12px; min-height:12px; border-radius:50%; box-shadow:0 0 0 2px #000; display:inline-block; flex-shrink:0; position:relative; border:none; cursor:pointer; }
.cards-tech-view .belt-dot.active-filter { box-shadow:0 0 0 2px #000, 0 0 0 4px rgba(var(--brand-accent-rgb), .65); }
.cards-tech-view .tech-main { align-items:center; }
.cards-tech-view .belt-dot.Jaune { background:var(--belt-yellow); }
.cards-tech-view .belt-dot.Orange { background:var(--belt-orange); }
.cards-tech-view .belt-dot.Verte { background:var(--belt-green); }
.cards-tech-view .belt-dot.Bleue { background:var(--belt-blue); }
.cards-tech-view .belt-dot.Marron { background:var(--belt-brown); }
.cards-tech-view .belt-dot.Noire, .cards-tech-view .belt-dot.Black { background:var(--belt-black); }
/* Generic belt-dot for reuse (caddie tables, etc.) */
.belt-dot { width:10px; height:10px; border-radius:50%; display:inline-block; }
.belt-dot.Jaune { background:var(--belt-yellow); }
.belt-dot.Orange { background:var(--belt-orange); }
.belt-dot.Verte { background:var(--belt-green); }
.belt-dot.Bleue { background:var(--belt-blue); }
.belt-dot.Marron { background:var(--belt-brown); }
.belt-dot.Noire, .belt-dot.Black { background:var(--belt-black); }
.cards-tech-view .tech-text { font-size:.75rem; line-height:1.15; }
.cards-tech-view .tech-meta span { display:inline-block; font-size:.55rem; background:#1d2022; padding:.18rem .45rem .2rem; border-radius:.45rem; border:1px solid #2b3136; letter-spacing:.04em; font-weight:500; color:#f5f6f7; }
.cards-tech-view .tech-meta button.as-filter { display:inline-block; font-size:.55rem; background:#1d2022; padding:.18rem .55rem .22rem; border-radius:.55rem; border:1px solid #2b3136; letter-spacing:.04em; font-weight:500; color:#f5f6f7; cursor:pointer; line-height:1; transition:background .18s, border-color .18s, color .18s; }
.cards-tech-view .tech-meta button.as-filter:hover { background:rgba(var(--brand-accent-rgb),.22); border-color:rgba(var(--brand-accent-rgb),.5); color:#fff; }
.cards-tech-view .tech-meta button.as-filter:focus-visible { outline:2px solid var(--brand-accent); outline-offset:2px; }
.cards-tech-view .tech-meta button.as-filter:active { background:rgba(var(--brand-accent-rgb),.35); }
.cards-tech-view .tech-meta button.as-filter.active-filter:not(.period-emphasis){
  background:linear-gradient(135deg, rgba(var(--brand-accent-rgb),.55), rgba(var(--brand-accent-rgb),.35));
  border-color:rgba(var(--brand-accent-rgb),.8);
  color:#111;
  box-shadow:0 0 0 1px rgba(var(--brand-accent-rgb),.6),0 0 6px 1px rgba(var(--brand-accent-rgb),.45);
}
/* Emphasis for progression period badge */
/* Period badge inactive (subtle accent outline) */
.cards-tech-view .tech-meta .period-emphasis {
  background:rgba(var(--brand-accent-rgb),.15);
  color:#ffe8d1;
  font-weight:600;
  border-color:rgba(var(--brand-accent-rgb),.35);
  box-shadow:0 0 0 1px rgba(var(--brand-accent-rgb),.25) inset;
  transition:background .18s,border-color .18s,box-shadow .18s,color .18s;
}
.cards-tech-view .tech-meta .period-emphasis:hover { background:rgba(var(--brand-accent-rgb),.22); }
/* Active state: stronger vibrant background */
.cards-tech-view .tech-meta .period-emphasis.active-filter {
  background:linear-gradient(135deg, rgba(var(--brand-accent-rgb),.75), rgba(var(--brand-accent-rgb),.50));
  color:#111;
  border-color:rgba(var(--brand-accent-rgb),.9);
  box-shadow:0 0 0 2px rgba(var(--brand-accent-rgb),.65),0 0 8px 2px rgba(var(--brand-accent-rgb),.5);
}
.cards-tech-view .tech-meta .period-emphasis.active-filter:hover { background:linear-gradient(135deg, rgba(var(--brand-accent-rgb),.85), rgba(var(--brand-accent-rgb),.55)); }
.cards-tech-view .tech-meta .uv-pill { background:#22252a; border-color:#32383e; }
.cards-tech-view .tech-meta .cat-pill { background:#23272b; }
.cards-tech-view .tech-meta .type-pill { background:#262a2f; }
.cards-tech-view .tech-meta .period-pill { background:rgba(var(--brand-accent-rgb),.18); border-color:rgba(var(--brand-accent-rgb),.35); color:#ffe3c2; font-weight:600; }
.cards-tech-view .tech-meta .period-pill { background:rgba(var(--brand-accent-rgb),.18); border-color:rgba(var(--brand-accent-rgb),.35); }
.cards-tech-view .tech-actions img { filter:brightness(1.05); }
.cards-tech-view .tech-actions .icon-link { background:#1d2022; width:28px; height:28px; display:inline-flex; align-items:center; justify-content:center; border-radius:.45rem; border:1px solid #2a3035; transition:background .18s, border-color .18s; }
.cards-tech-view .tech-actions .icon-link:hover { background:rgba(var(--brand-accent-rgb),.2); border-color:rgba(var(--brand-accent-rgb),.5); }
.cards-tech-view .tech-actions .icon-link i { font-size:.9rem; }
.cards-tech-view .tech-actions { opacity:0; transition:opacity .18s; }
.cards-tech-view .tech-card:hover .tech-actions { opacity:1; }
.cards-tech-view mark.match { background:linear-gradient(90deg, rgba(var(--brand-accent-rgb),.8), rgba(var(--brand-accent-rgb),.35)); color:#111; }
.cards-tech-view .indent-lvl-0 { margin-left:0; }
.cards-tech-view .indent-lvl-1 { margin-left:1.25rem; position:relative; }
.cards-tech-view .indent-lvl-2 { margin-left:2.25rem; position:relative; }
.cards-tech-view .indent-lvl-3 { margin-left:3.25rem; position:relative; }
/* guide lines */
.cards-tech-view .indent-lvl-1::before,
.cards-tech-view .indent-lvl-2::before,
.cards-tech-view .indent-lvl-3::before { content:""; position:absolute; left:-0.75rem; top:0; bottom:0; width:2px; background:rgba(255,255,255,0.07); }

/* distinct group level coloring */
.cards-tech-view .group-programme { border-bottom:2px solid var(--accent-color); padding-bottom:.25rem; }
.cards-tech-view .group-uv .uv-title { color:#ffcc80; }
.cards-tech-view .group-categorie .cat-title { color:#ffe0b2; font-weight:600; }
.cards-tech-view .group-type .type-header { background:rgba(var(--brand-accent-rgb),.07); padding:.25rem .55rem; border-radius:4px; cursor:pointer; }
.cards-tech-view .group-type .type-header:hover { background:rgba(var(--brand-accent-rgb),.14); }

/* technique emphasis */
.cards-tech-view .tech-line { display:flex; align-items:baseline; gap:.5rem; font-size:.85rem; font-weight:600; }
.cards-tech-view .tech-line .tech-puce { font-weight:700; color:var(--accent-color); font-size:.65rem; background:rgba(var(--brand-accent-rgb),.18); padding:2px 6px; border-radius:10px; letter-spacing:.5px; line-height:1; }
.cards-tech-view .tech-line .tech-title { font-weight:600; }
.cards-tech-view .tech-card.inactive .tech-line .tech-title { text-decoration:line-through; opacity:.6; }

/* badge spacing + sizing */
.cards-tech-view .group-programme > .badge,
.cards-tech-view .uv-header > .badge,
.cards-tech-view .cat-title > .badge,
.cards-tech-view .type-header > .badge { font-size:.6rem; padding:4px 8px; }
/* unified count badge (more discreet) */
.cards-tech-view .count-badge { display:inline-block; font-size:.54rem; min-width:1.25rem; text-align:center; padding:1px 6px 2px; border-radius:1rem; font-weight:500; letter-spacing:.02em; background:rgba(255,255,255,0.035); color:#bfc3c6; border:1px solid rgba(255,255,255,.08); }
.cards-tech-view .group-programme .count-badge { background:rgba(var(--brand-accent-rgb),0.09); border-color:rgba(var(--brand-accent-rgb),.25); color:#ececec; }
.cards-tech-view .uv-block .count-badge { background:rgba(255,255,255,0.025); }
/* belt variants with lighter text for yellow & orange */
.cards-tech-view .uv-block.belt-bg-jaune   .count-badge { background:rgba(255,235,59,0.12); border-color:rgba(255,235,59,0.28); color:#fafafa; }
.cards-tech-view .uv-block.belt-bg-orange  .count-badge { background:rgba(255,152,0,0.12); border-color:rgba(255,152,0,0.28); color:#fdfdfd; }
.cards-tech-view .uv-block.belt-bg-verte   .count-badge { background:rgba(46,125,50,0.15); border-color:rgba(46,125,50,0.35); color:#dbe8dc; }
.cards-tech-view .uv-block.belt-bg-bleue   .count-badge { background:rgba(21,101,192,0.15); border-color:rgba(21,101,192,0.35); color:#d6e9fb; }
.cards-tech-view .uv-block.belt-bg-marron  .count-badge { background:rgba(109,76,65,0.18); border-color:rgba(109,76,65,0.4); color:#eee2dd; }
.cards-tech-view .uv-block.belt-bg-noire .count-badge,
.cards-tech-view .uv-block.belt-bg-black .count-badge { background:rgba(0,0,0,0.38); border-color:#2d2d2d; color:#e6e6e6; }

@media (max-width:680px){
  .cards-tech-view .indent-lvl-2 { margin-left:1.6rem; }
  .cards-tech-view .indent-lvl-3 { margin-left:2.2rem; }
}

@media (max-width:680px){
  .cards-tech-view .tech-grid { grid-template-columns:repeat(auto-fill,minmax(170px,1fr)); }
  .cards-tech-view .tech-card { padding:.5rem .5rem .55rem; }
}

/* ========== Shared utilities and moved inline CSS ========== */

/* Width utilities */
.w-30 { width:30px !important; }
.w-40 { width:40px !important; }
.w-60 { width:60px !important; }
.w-70 { width:70px !important; }
.w-80 { width:80px !important; }
.w-90 { width:90px !important; }
.w-100 { width:100px !important; }
.w-110 { width:110px !important; }
.w-160 { width:160px !important; }
.w-120 { width:120px !important; }
.w-200 { width:200px !important; }
.w-220 { width:220px !important; }
.max-w-220 { max-width:220px !important; }
.min-w-78 { min-width:78px !important; }
.min-w-90 { min-width:90px !important; }
.min-w-160 { min-width:160px !important; }
.min-w-200 { min-width:200px !important; }
.min-w-220 { min-width:220px !important; }

/* Heights */
.min-h-260 { min-height:260px !important; }

/* Small font utils */
.fs-08 { font-size:.8rem !important; }
/* Table column width helpers */
th.colw-30, td.colw-30 { width:30px; }
th.colw-40, td.colw-40 { width:40px; }
th.colw-60, td.colw-60 { width:60px; }
th.colw-80, td.colw-80 { width:80px; }
th.colw-90, td.colw-90 { width:90px; }
th.colw-120, td.colw-120 { width:120px; }

/* Font-size tiny util */
.fs-065 { font-size:.65rem !important; }

/* Flex util */
.flex-1 { flex:1 1 auto !important; }

/* Skeleton loader (moved from header) */
.skeleton-row td { padding:.35rem .5rem; }
.skeleton-line { display:block; height:12px; width:100%; background:linear-gradient(90deg,#e0e0e0 25%,#f5f5f5 50%,#e0e0e0 75%); background-size:200% 100%; animation:skeleton-loading 1.2s ease-in-out infinite; border-radius:4px; }
@keyframes skeleton-loading { from {background-position:200% 0;} to {background-position:-200% 0;} }

/* Global toasts (moved from header) */
#app-toasts { position:fixed; top:1rem; right:1rem; z-index:1080; display:flex; flex-direction:column; gap:.5rem; pointer-events:none; }
.app-toast { min-width:260px; color:#000; background:#fff; border:1px solid #ddd; padding:.6rem .75rem; border-radius:.5rem; box-shadow:0 4px 12px rgba(0,0,0,.08); font-size:.85rem; display:flex; gap:.6rem; align-items:flex-start; animation:fadeIn .3s ease; line-height:1.25; pointer-events:auto; }
.app-toast.info { border-left:4px solid #0d6efd; }
.app-toast.success { border-left:4px solid #198754; }
.app-toast.error { border-left:4px solid #dc3545; }
.app-toast .close-btn { background:none; border:none; font-size:1rem; line-height:1; cursor:pointer; opacity:.6; }
.app-toast .close-btn:hover { opacity:1; }
.app-toast .icon { font-size:1.1rem; line-height:1; margin-top:2px; }
.app-toast.success .icon { color:#198754; }
.app-toast.error .icon { color:#dc3545; }
.app-toast.info .icon { color:#0d6efd; }
@keyframes fadeIn { from {opacity:0; transform:translateY(-6px);} to {opacity:1; transform:translateY(0);} }

/* Global spinner overlay (moved from header) */
#global-spinner{position:fixed;inset:0;z-index:1085;display:none;align-items:center;justify-content:center;background:rgba(255,255,255,.55);backdrop-filter:blur(2px);pointer-events:none;}
#global-spinner .spinner-border{width:3rem;height:3rem;}

/* Minor icon helpers */
.icon-24 { width:24px; height:24px; object-fit:contain; }
.Inactive { opacity:.55; }

/* Page layout helpers */
.no-left-margin, .no-left-margin .card { margin-left:0 !important; padding-left:0 !important; }
body .no-left-margin { width:100%; }

/* WOD table mobile adjustments (moved from header) */
@media (max-width:576px){
  .wod-table{ table-layout:auto; }
  .wod-table th:nth-child(1), .wod-table td:nth-child(1){ display:none; }
  .wod-table td.exercice-cell{ white-space:normal; overflow:visible; text-overflow:clip; cursor:pointer; font-size:.78rem; line-height:1.1; }
  .wod-table td.exercice-cell:active{ background:#f1f3f5; }
  .wod-table th:nth-child(3), .wod-table td:nth-child(3),
  .wod-table th:nth-child(4), .wod-table td:nth-child(4),
  .wod-table th:nth-child(5), .wod-table td:nth-child(5){ width:52px; max-width:52px; padding:.25rem .2rem !important; text-align:center; }
  .wod-table td:nth-child(3) input,
  .wod-table td:nth-child(4) input,
  .wod-table td:nth-child(5) input{ width:100%; padding:.15rem .2rem; font-size:.65rem; }
  .wod-table th:nth-child(8), .wod-table td:nth-child(8),
  .wod-table th:nth-child(9), .wod-table td:nth-child(9){ padding:.25rem .25rem; width:34px; text-align:center; }
  .wod-table td img{ max-width:18px; height:auto; }
  .wod-table td, .wod-table th{ vertical-align:middle; }
}

/* WOD manager small helpers (from inline) */
.row-dragging { opacity:0.5; }
.row-drag-over { outline:2px dashed #0d6efd; }
.invalid-field { border-color:#dc3545 !important; box-shadow:0 0 0 0.1rem rgba(220,53,69,.25); }
.wod-link { cursor:pointer; text-decoration:underline; }
.wod-link:focus { outline:2px solid #0d6efd; outline-offset:2px; }

/* WOD filters block */
.wod-filters { background:#f8f9fa; border:1px solid #e2e6eb; border-radius:.65rem; padding:.6rem .75rem; display:flex; flex-wrap:wrap; gap:.6rem; align-items:flex-end; position:relative; }
.wod-filters .filter-group { display:flex; flex-direction:column; gap:.25rem; min-width:140px; }
.wod-filters label { font-size:.65rem; text-transform:uppercase; letter-spacing:.06em; font-weight:600; color:#495057; margin:0; }
.wod-filters select,.wod-filters input { font-size:.75rem; }
.wod-filters .actions { margin-left:auto; display:flex; gap:.4rem; }
.wod-filters .search-wrapper { position:relative; min-width:200px; }
.wod-filters .search-wrapper .bi-search { position:absolute; top:50%; left:.45rem; transform:translateY(-50%); font-size:.8rem; color:#6c757d; }
.wod-filters .search-wrapper input { padding-left:1.4rem; }
.wod-filters .clear-btn { position:absolute; right:.3rem; top:50%; transform:translateY(-50%); border:none; background:transparent; font-size:.85rem; line-height:1; color:#888; padding:.1rem .25rem; cursor:pointer; }
.wod-filters .clear-btn:hover { color:#dc3545; }
.filters-status { font-size:.65rem; margin-top:.35rem; color:#666; display:flex; gap:.75rem; flex-wrap:wrap; }
@media (max-width:768px){ .wod-filters { padding:.55rem .6rem; } }

/* Main nav tabs (from templates/nav.htm) */
.main-nav-container { padding:0; position:sticky; top:0; z-index:1050; backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); }
/* Fallback fixed positioning class (optional) */
.main-nav-sticky-fixed { position:fixed; top:0; left:0; right:0; z-index:1050; }
body.has-fixed-main-nav { padding-top:70px; }

/* Modern nav (nouvelle structure) */
.modern-nav { background:linear-gradient(90deg,#14181c,#192026); border-bottom:1px solid #1f262d; padding:.55rem .9rem; }
.modern-nav .app-nav-inner { width:100%; display:flex; align-items:center; gap:.75rem; }
.modern-nav .brand { font-size:1rem; font-weight:600; color:#fff; }
.modern-nav .brand:hover { text-decoration:none; color:#fff; }
.modern-nav .brand-logo { font-size:1.2rem; filter:drop-shadow(0 0 4px rgba(255,255,255,.15)); }
.modern-nav .nav-left { flex:0 0 auto; }
.modern-nav .nav-actions { flex:1 1 auto; justify-content:flex-end; }
.modern-nav .theme-toggle { background:rgba(255,255,255,.07); color:#e6ebef; border:1px solid rgba(255,255,255,.15); padding:.4rem .6rem; line-height:1; border-radius:.55rem; font-size:.8rem; cursor:pointer; transition:.2s background,.2s border-color,.2s color; }
.modern-nav .theme-toggle:hover { background:rgba(255,255,255,.15); }
.modern-nav .user-dropdown .user-btn { background:rgba(255,255,255,.07); border:1px solid rgba(255,255,255,.15); }
.modern-nav .user-dropdown .user-btn:hover { background:rgba(255,255,255,.12); }

/* Burger */
.nav-burger { position:relative; width:42px; height:38px; display:flex; flex-direction:column; justify-content:center; gap:7px; background:rgba(255,255,255,.07); border:1px solid rgba(255,255,255,.18); border-radius:.7rem; padding:0 10px; cursor:pointer; transition:.25s background,.25s border-color; }
.nav-burger span { display:block; height:2px; width:100%; background:#fff; border-radius:2px; transition:transform .35s ease, opacity .25s ease; }
.nav-burger:hover { background:rgba(255,255,255,.15); }
.nav-burger[aria-expanded="true"] span:nth-child(1) { transform:translateY(9px) rotate(45deg); }
.nav-burger[aria-expanded="true"] span:nth-child(2) { opacity:0; }
.nav-burger[aria-expanded="true"] span:nth-child(3) { transform:translateY(-9px) rotate(-45deg); }

/* Collapse container */
.nav-collapse { width:100%; flex:1 1 100%; animation:navSlide .35s ease; }
.nav-collapse[data-state='closed'] { display:none; }
.nav-collapse[data-state='open'] { display:block; }
@keyframes navSlide { from { opacity:0; transform:translateY(-6px); } to { opacity:1; transform:translateY(0); } }

/* Desktop override */
@media (min-width:992px){
  .nav-burger { display:none; }
  .nav-collapse { display:flex!important; flex:1 1 auto; width:auto; animation:none; }
}

/* Integrate legacy tabs into modern layout */
.modern-nav .app-main-tabs { background:transparent; border:0; padding:0; box-shadow:none; }
.modern-nav .app-main-tabs a.nav-link { background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.15); font-size:.62rem; }
.modern-nav .app-main-tabs a.nav-link:hover { background:rgba(255,255,255,.18); }
.modern-nav .app-main-tabs a.nav-link.active { background:var(--brand-accent,#ff9800); border-color:var(--brand-accent,#ff9800); color:#111; }
.modern-nav .app-main-tabs a.nav-link.active::after { display:none; }
@media (max-width:640px){ .modern-nav .app-main-tabs a.nav-link { font-size:.55rem; padding:.38rem .55rem .42rem; } }

/* Avatar inline + top-right layout */
.modern-nav .avatar-inline { width:26px; height:26px; object-fit:cover; border-radius:50%; box-shadow:0 0 0 2px rgba(255,255,255,.15); }
.modern-nav .user-dropdown .user-btn { display:inline-flex; align-items:center; gap:.4rem; }
.modern-nav .nav-actions { flex-wrap:nowrap; }
.modern-nav .user-dropdown .badge { font-size:.55rem; }
.modern-nav .user-dropdown .dropdown-toggle::after { margin-left:.4rem; }
.modern-nav .user-dropdown .user-btn img.avatar-inline { flex-shrink:0; }

@media (max-width:520px){
  .modern-nav .user-display { display:none; }
  .modern-nav .user-dropdown .badge { display:none; }
}

/* User dropdown menu custom */
.user-menu { backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px); background:rgba(30,36,42,.92); border:1px solid #2a3239; }
.user-menu .dropdown-item { font-size:.75rem; }
.user-menu .dropdown-header { font-size:.65rem; letter-spacing:.06em; text-transform:uppercase; font-weight:600; color:#ffcc80; }
.user-menu .dropdown-item i { font-size:.9rem; opacity:.9; }

/* High-contrast cart indicator inside modern nav */
.modern-nav .app-main-tabs a#nav-cart-tab .caddie-count { background:rgba(255,255,255,.15); }
.modern-nav .app-main-tabs a#nav-cart-tab.has-items .caddie-count { background:var(--brand-accent,#ff9800); color:#111; }

/* Reduce horizontal scroll flicker */
.modern-nav .app-main-tabs::-webkit-scrollbar { height:4px; }
.modern-nav .app-main-tabs::-webkit-scrollbar-thumb { background:rgba(255,255,255,.25); }

/* Layout tightening on very small devices */
@media (max-width:420px){
  .modern-nav { padding:.5rem .55rem; }
  .modern-nav .theme-toggle { padding:.35rem .5rem; }
  .nav-burger { width:38px; height:34px; gap:6px; padding:0 8px; }
  .nav-burger[aria-expanded="true"] span:nth-child(1){ transform:translateY(8px) rotate(45deg); }
  .nav-burger[aria-expanded="true"] span:nth-child(3){ transform:translateY(-8px) rotate(-45deg); }
}

/* Burger expanded: autoriser retour à la ligne (meilleure lisibilité) */
@media (max-width:992px){
  .modern-nav .nav-collapse[data-state='open'] .app-main-tabs { flex-wrap:wrap; overflow-x:visible; row-gap:.4rem; }
  .modern-nav .nav-collapse[data-state='open'] .app-main-tabs a.nav-link { white-space:normal; }
}

/* Renfort sticky explicite */
.modern-nav.main-nav-container { position:sticky; top:0; z-index:1050; }

/* === New Header + Sidebar Layout === */
.app-header { position:sticky; top:0; z-index:1060; background:linear-gradient(90deg,#14181c,#182026); border-bottom:1px solid #222b31; padding:.45rem .85rem; backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); }
.app-header .nav-burger { position:relative; width:40px; height:36px; display:flex; flex-direction:column; justify-content:center; gap:6px; background:rgba(255,255,255,.07); border:1px solid rgba(255,255,255,.15); border-radius:.65rem; padding:0 9px; cursor:pointer; transition:.25s background,.25s border-color; }
.app-header .nav-burger span { display:block; height:2px; width:100%; background:#fff; border-radius:2px; transition:transform .35s ease, opacity .25s ease; }
.app-header .nav-burger[aria-expanded="true"] span:nth-child(1){ transform:translateY(8px) rotate(45deg); }
.app-header .nav-burger[aria-expanded="true"] span:nth-child(2){ opacity:0; }
.app-header .nav-burger[aria-expanded="true"] span:nth-child(3){ transform:translateY(-8px) rotate(-45deg); }
.app-header .brand { color:#fff; font-size:1rem; font-weight:600; }
.app-header .brand:hover { color:#fff; text-decoration:none; }

/* Logos uniformes dans le header */
.header-logo,
.app-header .brand .club-logo,
.app-header .brand .brand-logo img {
  width: 24px;
  height: 24px;
  object-fit: contain;
  border-radius: 6px;
  filter: drop-shadow(0 1px 2px rgba(0,0,0,.2));
}

/* Arrondi spécifique plus prononcé pour le logo FEKM */
.app-header .brand .brand-logo img,
.header-logo {
  border-radius: 8px;
}

/* Alignement du contenu du titre */
.app-header .brand {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  line-height: 1;
}

/* S'assurer que le texte du titre est aligné */
.app-header .brand-name {
  display: inline-flex;
  align-items: baseline;
  gap: 0.25rem;
  line-height: 1;
  font-size: 1rem;
}

/* Alignement vertical parfait pour le contenu du span responsive */
.app-header .brand-name span {
  display: inline;
  line-height: inherit;
  vertical-align: baseline;
}

/* Logo du club aligné avec le texte */
.app-header .brand .club-logo {
  margin-left: 0.2rem;
  vertical-align: middle;
}

/* Centrage spécifique du titre uniquement */
.app-header .header-brand-centered {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  z-index: 1;
}

/* Gestion responsive pour éviter le chevauchement */
@media (max-width: 768px) {
  .app-header .header-brand-centered {
    position: static;
    transform: none;
    flex: 1;
    justify-content: center;
    margin: 0 1rem;
  }

  /* Affichage des deux logos côte à côte en mobile */
  .app-header .brand {
    align-items: center;
  }

  /* Logo du club visible en mobile avec espacement */
  .app-header .club-logo-mobile {
    margin-left: 0.5rem;
    display: inline-block;
  }

  /* Masquer le nom du club en mobile pour faire de la place aux logos */
  .app-header .brand-name span {
    display: none !important;
  }
}/* Logo FEKM par défaut et fallback */
.app-header .brand .brand-logo {
  font-size: 1.2rem;
  filter: drop-shadow(0 0 4px rgba(255,255,255,.15));
}

/* Espacement pour le nom et logo du club */
.app-header .brand .brand-club {
  display: inline-flex;
  align-items: center;
}
.app-header .theme-toggle { background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.15); padding:.4rem .55rem; line-height:1; border-radius:.55rem; font-size:.8rem; }
.app-header .theme-toggle:hover { background:rgba(255,255,255,.15); }
.app-header .avatar-inline { width:28px; height:28px; object-fit:cover; border-radius:50%; box-shadow:0 0 0 2px rgba(255,255,255,.15); }

.app-sidebar { position:fixed; top:0; left:0; bottom:0; width:250px; background:#121518; border-right:1px solid #1f262d; padding:4.5rem .85rem 1rem; transform:translateX(-100%); transition:transform .32s ease; z-index:1055; display:flex; flex-direction:column; gap:.65rem; overflow-y:auto; -webkit-overflow-scrolling:touch; }
.app-sidebar[data-state='open'] { transform:translateX(0); }
.sidebar-backdrop { position:fixed; inset:0; background:rgba(0,0,0,.5); backdrop-filter:blur(2px); -webkit-backdrop-filter:blur(2px); z-index:1045; opacity:0; transition:opacity .25s ease; }
.sidebar-backdrop.visible { opacity:1; }
html.sidebar-open { overflow:hidden; }

.app-sidebar .sidebar-nav { display:flex; flex-direction:column; gap:.4rem; }
.app-sidebar .sidebar-nav a.nav-link { background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.12); color:#cfd7dd; font-size:.72rem; font-weight:600; letter-spacing:.05em; text-transform:uppercase; padding:.55rem .75rem .55rem; border-radius:.55rem; display:flex; align-items:center; gap:.55rem; transition:.18s background,.18s color,.18s border-color; line-height:1.05; }
.app-sidebar .sidebar-nav a.nav-link:hover { background:rgba(255,255,255,.12); color:#fff; text-decoration:none; }
.app-sidebar .sidebar-nav a.nav-link.active { background:var(--brand-accent,#ff9800); border-color:var(--brand-accent,#ff9800); color:#111; box-shadow:0 0 0 2px rgba(255,152,0,.35); }
.app-sidebar .nav-cart-link .caddie-count { font-size:.65rem; font-weight:700; background:rgba(255,255,255,.15); padding:2px 6px; border-radius:1rem; }
.app-sidebar .nav-cart-link.has-items .caddie-count { background:var(--brand-accent,#ff9800); color:#111; }

@media (min-width:1100px){
  .app-sidebar { width:270px; }
}
@media (max-width:560px){
  .app-header { padding:.4rem .55rem; }
  .app-header .brand-name { display:none !important; }
  .app-sidebar { width:230px; }
}

/* Content shift optional (if we add a class later) */
html.sidebar-open .app-header { box-shadow:0 2px 6px rgba(0,0,0,.4); }

.app-main-tabs { position:relative; display:flex; gap:.35rem; padding:.55rem .75rem .4rem; background:linear-gradient(90deg,#1f2429,#232a31); border:1px solid #2f3942; border-radius:.75rem; overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:thin; }
.app-main-tabs::-webkit-scrollbar { height:6px; }
.app-main-tabs::-webkit-scrollbar-track { background:transparent; }
.app-main-tabs::-webkit-scrollbar-thumb { background:rgba(255,255,255,.15); border-radius:3px; }
.app-main-tabs a.nav-link { position:relative; background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.12); color:#cfd7dd; font-size:.7rem; font-weight:600; letter-spacing:.05em; text-transform:uppercase; padding:.45rem .9rem .5rem; border-radius:.55rem; display:inline-flex; align-items:center; gap:.4rem; transition:.18s background,.18s color,.18s border-color; line-height:1; }
.app-main-tabs a.nav-link:hover { background:rgba(255,255,255,.12); color:#fff; text-decoration:none; }
.app-main-tabs a.nav-link.active { background:var(--brand-accent,#ff9800); color:#fff; border-color:var(--brand-accent,#ff9800); box-shadow:0 0 0 2px rgba(255,152,0,.35); }
.app-main-tabs a.nav-link.active::after { content:''; position:absolute; left:10%; right:10%; bottom:2px; height:3px; background:rgba(255,255,255,.9); border-radius:2px; opacity:.9; }
.app-main-tabs a.nav-link:focus-visible { outline:2px solid var(--brand-accent,#ff9800); outline-offset:2px; }
.app-main-tabs a#nav-cart-tab { padding:.25rem .65rem; }
.app-main-tabs a#nav-cart-tab img { width:24px; height:24px; display:block; }
.app-main-tabs a#nav-cart-tab .caddie-count { font-size:.65rem; font-weight:700; background:rgba(255,255,255,.15); padding:2px 5px; border-radius:1rem; transition:.25s background,.25s color,.25s box-shadow; }
.app-main-tabs a#nav-cart-tab .caddie-inline { background:transparent; padding:.1rem .4rem; }
.app-main-tabs a#nav-cart-tab.has-items .caddie-count { background:var(--brand-accent,#ff9800); color:#fff; box-shadow:0 0 0 2px rgba(255,152,0,.35); }
@media (max-width:800px){ .app-main-tabs a.nav-link { font-size:.6rem; padding:.4rem .7rem .45rem; } }
@media (max-width:580px){ .app-main-tabs { border-radius:.65rem; } .app-main-tabs a.nav-link { font-size:.55rem; padding:.38rem .55rem .42rem; } }

/* Seances manager (moved from views/seances/manager_seances.php) */
.seances-manager .filters{background:#f8f9fa;border:1px solid #e2e6eb;border-radius:.65rem;padding:.55rem .65rem .6rem;display:grid;gap:.55rem .6rem;grid-template-columns:repeat(auto-fill,minmax(135px,1fr));align-items:end}
.seances-manager .filters .fg{display:flex;flex-direction:column;gap:.25rem;min-width:0}
.seances-manager label{font-size:.6rem;text-transform:uppercase;letter-spacing:.07em;font-weight:700;color:#495057;margin:0}
.seances-manager select.form-select,.seances-manager input.form-control{font-size:.7rem;padding:.25rem .4rem;line-height:1.1;height:auto}
.seances-manager .status{grid-column:1/-1;font-size:.6rem;margin-top:.15rem;color:#666;display:flex;gap:.9rem;flex-wrap:wrap}
.seances-manager table{width:100%;border-collapse:separate;border-spacing:0}
.seances-manager thead th{position:sticky;top:0;background:#e0f3ff;font-size:.6rem;text-transform:uppercase;letter-spacing:.05em;padding:.4rem .55rem}
.seances-manager td{padding:.35rem .55rem;font-size:.7rem;vertical-align:middle}
.seances-manager tbody tr:hover{background:rgba(0,0,0,.04);cursor:pointer}
.seances-manager .group-period th{background:#d0e8f9!important;font-size:.65rem}
.seances-manager .group-date th{background:#e8f4fc!important;font-size:.65rem}
.seances-manager .group-saison th{background:#cfe9dc!important;font-size:.68rem;position:sticky;top:0;z-index:3}
.seances-manager .group-saison .toggle-btn{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:.4rem;font-weight:600;font-size:.7rem}
.seances-manager .group-saison .count{font-weight:500;color:#285238;font-size:.65rem;margin-left:.4rem}
.seances-manager .actions-col{width:46px;text-align:center}
.seances-manager .icon-btn-del{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:.5rem;background:rgba(0,0,0,.05)}
.seances-manager .icon-btn-del:hover{background:rgba(0,0,0,.18)}
.seances-manager .flash-new{animation:flashNew 1s ease-in-out 0s 3 alternate}
@keyframes flashNew{0%{background:#fff3cd}100%{background:#ffe8a1}}
@media(max-width:760px){.seances-manager thead th:nth-child(4),.seances-manager tbody td:nth-child(4){display:none}}
.seances-manager .saison-block{background:#fff;border:1px solid #e1e5ea;box-shadow:0 2px 3px rgba(0,0,0,.03)}
.seances-manager .saison-header{background:linear-gradient(90deg, #ff9800, #ffc400);cursor:pointer;border-bottom:1px solid #d0e6db;font-size:.7rem}
.seances-manager .saison-header:hover{background:linear-gradient(90deg, #def1e7, #c6e7d8); color:#000000;}
.seances-manager .saison-header .badge{font-size:.55rem;font-weight:600}
.seances-manager .saison-block table thead th{background:#f5f9fb;top:auto}
.seances-manager .saison-block table tbody tr.table-active{background:#ffe7c2 !important; --bs-table-accent-bg:#ffe7c2; color:#212529; font-weight:600; box-shadow:inset 0 0 0 1px #ff9800;}
.seances-manager .btn.btn-xs{--bs-btn-padding-y:.15rem;--bs-btn-padding-x:.35rem;--bs-btn-font-size:.55rem;line-height:1}
.seances-manager .detail-zone{background:#101214;border:1px solid #23272c;border-radius:.65rem;padding:.75rem .85rem;box-shadow:0 3px 8px rgba(0,0,0,.3);color:#e6e9ed;position:relative;overflow:hidden;font-size:.7rem;line-height:1.25}
.seances-manager .detail-zone:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(140deg,rgba(255,255,255,.05),transparent 55%),radial-gradient(circle at 18% 12%,rgba(255,210,122,.18),transparent 60%)}
.seances-manager .detail-zone h5{font-size:.8rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;display:flex;align-items:center;gap:.45rem;margin:0;color:#ffd27a}
.seances-manager .detail-zone h5 small{font-size:.6rem;font-weight:600;color:#ffb547}
.seances-manager .detail-zone .btn-group .btn{--bs-btn-font-size:.55rem}
.seances-manager .detail-zone .btn-outline-secondary{--bs-btn-color:#cfd5db;--bs-btn-border-color:#40454b;--bs-btn-hover-bg:#23272c;--bs-btn-hover-border-color:#4d5359;--bs-btn-active-bg:#2a2f34}
.seances-manager .detail-zone .btn-outline-primary{--bs-btn-color:#ffd27a;--bs-btn-border-color:#5a4630;--bs-btn-hover-bg:#ffb547;--bs-btn-hover-color:#111;--bs-btn-hover-border-color:#ffb547;--bs-btn-active-bg:#ffd27a;--bs-btn-active-border-color:#ffd27a}
.seances-manager .detail-zone .accordion-body{background:#171a1d;border:1px solid #262b30;border-radius:.55rem;padding:.6rem .65rem}
.seances-manager .detail-zone table{color:#dfe3e7;font-size:.68rem}
.seances-manager .detail-zone table thead th{background:#1b1f23;color:#aab2b9;border-bottom:1px solid #30363d;font-weight:600;padding:.35rem .5rem;font-size:.58rem;letter-spacing:.05em;text-transform:uppercase}
.seances-manager .detail-zone table tbody tr{transition:background-color .18s ease}
.seances-manager .detail-zone table tbody tr:hover{background:#1d2226}
.seances-manager .detail-zone .icon-btn-del{background:rgba(255,255,255,.08);color:#ffd27a}
.seances-manager .detail-zone .icon-btn-del:hover{background:rgba(255,255,255,.15)}
.seances-manager .detail-zone strong{color:#ffd27a;font-weight:600}
.seances-manager .detail-zone .fst-italic{color:#9aa2a9}
.seances-manager .table-active-pulse{animation:rowPulse 1s ease-in-out 0s 2 alternate}
@keyframes rowPulse{0%{box-shadow:0 0 0 0 rgba(255,152,0,.8)}100%{box-shadow:0 0 0 6px rgba(255,152,0,0)}}

/* Generator filters (moved from views/generator/form_generator.php) */
.gen-filters { background:#f8f9fa; border:1px solid #e2e6eb; border-radius:.65rem; padding:.75rem .85rem; display:flex; flex-direction:column; gap:.65rem; }
.gen-row { display:flex; flex-wrap:wrap; gap:.8rem; align-items:flex-end; }
.gen-row .group { min-width:200px; }
.gen-row label { font-size:.7rem; text-transform:uppercase; letter-spacing:.06em; font-weight:600; color:#495057; margin:0 0 .15rem; }
.belt-badge { border:1px solid #e2e6eb; border-radius:999px; padding:.15rem .55rem; font-size:.75rem; background:#fff; }
.belt-badge .form-check-input { margin-right:.25rem; }
.belt-pills { display:flex; flex-wrap:wrap; gap:.35rem; }
.status-line { font-size:.8rem; color:#6c757d; }
.hint { font-size:.75rem; color:#6c757d; }
.programme-pill .dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:6px;border:1px solid rgba(0,0,0,.2)}
@media (max-width:768px){ .gen-row .group{ min-width:160px; } }
/* Generic dot helpers */
.dot { display:inline-block; border-radius:50%; }
.dot-10 { width:10px; height:10px; }
.dot-ring { border:1px solid rgba(0,0,0,.2); }

/* Cart filters (from views/cart/form_caddie.php) */
.cart-filters-wrapper { margin-top:.5rem; }
.cart-filters { background:#f8f9fa; border:1px solid #e2e6eb; border-radius:.65rem; padding:.55rem .7rem .6rem; display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:.65rem .75rem; align-items:start; position:relative; }
.cart-filters.compact { grid-auto-rows:1fr; }
.cart-filters .fg { display:flex; flex-direction:column; gap:.25rem; min-width:0; }
.cart-filters label { font-size:.58rem; text-transform:uppercase; letter-spacing:.08em; font-weight:700; color:#495057; margin:0; line-height:1; }
.cart-filters input[type=date], .cart-filters select { font-size:.7rem; padding:.25rem .4rem; line-height:1.1; height:30px; }
.cart-filters textarea { font-size:.7rem; padding:.35rem .45rem; line-height:1.1; resize:vertical; min-height:30px; }
.cart-filters .comment-wrapper { grid-column:span 2; }
.cart-filters .actions { display:flex; gap:.35rem; align-items:stretch; flex-wrap:wrap; grid-column:1 / -1; margin-top:.2rem; }
.cart-filters .actions button { padding:.35rem .55rem; font-size:.65rem; line-height:1; display:inline-flex; align-items:center; gap:.35rem; }
.cart-filters .actions i { line-height:1; }
/* White calendar icon utility (apply class .date-white on <input type=date>) */
input[type=date].date-white { color:#fff; }
input[type=date].date-white::-webkit-calendar-picker-indicator { filter:invert(1) brightness(1.15); opacity:0.9; cursor:pointer; }
input[type=date].date-white::-webkit-calendar-picker-indicator:hover { opacity:1; }
@media (min-width:840px){ .cart-filters { grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); } .cart-filters .comment-wrapper { grid-column:span 3; } }
@media (max-width:640px){ .cart-filters { grid-template-columns:repeat(auto-fill,minmax(140px,1fr)); } .cart-filters .comment-wrapper { grid-column:1/-1; } .cart-filters .actions { order:60; } }
@media (max-width:480px){ .cart-filters { padding:.55rem .55rem .6rem; } }

/* Cart tech tables (from views/cart/vue_caddie.php) */
.cart-tech-table.compact th, .cart-tech-table.compact td { padding:.3rem .45rem; font-size:.63rem; vertical-align:middle; }
.cart-tech-table.compact th { white-space:nowrap; }
.cart-tech-table.compact .affect-cell select { font-size:.6rem; padding:.15rem .3rem; line-height:1.05; }
.cart-tech-table.compact select { height:auto; }
.cart-tech-table.compact .affect-cell > div { margin-bottom:.25rem; }
.cart-tech-table.compact .affect-cell > div:last-child { margin-bottom:0; }
.cart-tech-table.compact .badge { font-size:.55rem !important; }
.cart-tech-table.compact .text-muted { font-size:.5rem; }
.cart-tech-table.compact .fw-semibold { font-weight:600; }
.cart-tech-table.compact .tech-desc { white-space:normal; line-height:1.05; }
@media (max-width: 820px){
  /* Optional responsive tweaks for column 3 can be added here */
}
.cart-tech-table.table-compact-special .affect-cell { width:110px; }
.cart-tech-table.table-compact-special .affect-cell select { font-size:.5rem; padding:.1rem .25rem; }
.cart-tech-table.table-compact-special .affect-cell div { margin-bottom:.15rem; }
.cart-tech-table.table-compact-special .affect-cell div:last-child { margin-bottom:0; }
.cart-tech-table.table-compact-special td.tech-desc { font-size:.70rem; }
.cart-tech-table .affect-cell.belt-black-bg { background:#000; color:#fff; }
.cart-tech-table .affect-cell .belt-dot { width:10px; height:10px; border-radius:999px; display:inline-block; border:1px solid rgba(255,255,255,.35); vertical-align:middle; }
.cart-tech-table thead th,
.cart-tech-table thead,
.wod-table thead th,
.wod-table thead,
.table-fekm thead th,
.table-fekm thead { background:#e0f3ff !important; }

/* Tiny badge helper */
.badge-xs { font-size:.65rem !important; }

/* FEKM toolbar (moved from inline styles in criteres_fekm.php) */
.tech-toolbar { display:flex; flex-wrap:nowrap; gap:.5rem; align-items:center; background:transparent; padding:.55rem .75rem; border:0; border-radius:.5rem; position:relative; width:100%; box-sizing:border-box; overflow-x:auto; overflow-y:hidden; scrollbar-width:thin; -webkit-overflow-scrolling:touch; justify-content:center; }
.tech-toolbar::-webkit-scrollbar { height:6px; }
.tech-toolbar::-webkit-scrollbar-track { background:transparent; }
.tech-toolbar::-webkit-scrollbar-thumb { background:rgba(255,255,255,.18); border-radius:3px; }
.tech-toolbar .title { display:none; }
.tech-toolbar .actions { display:flex; align-items:center; gap:.4rem; flex-wrap:wrap; }
.tech-toolbar .btn-icon { --btn-bg:rgba(255,255,255,.06); --btn-bd:rgba(255,255,255,.12); background:var(--btn-bg); border:1px solid var(--btn-bd); color:#e2e7ea; padding:.35rem .55rem; font-size:.7rem; line-height:1; border-radius:.5rem; display:inline-flex; align-items:center; gap:.35rem; font-weight:500; cursor:pointer; }
.tech-toolbar .btn-icon i { font-size:.9rem; }
.tech-toolbar .btn-icon:hover { background:rgba(255,255,255,.15); border-color:rgba(255,255,255,.35); color:#fff; text-decoration:none; }
.tech-toolbar .btn-icon.primary { background:var(--brand-accent,#ff9800); border-color:var(--brand-accent,#ff9800); color:#fff; }
.tech-toolbar .btn-icon.primary:hover { filter:brightness(1.1); }
.tech-toolbar .view-toggle-group { display:flex; border:1px solid rgba(255,255,255,.12); border-radius:.5rem; overflow:hidden; }
.tech-toolbar .view-toggle-group button { background:transparent; border:0; padding:.35rem .6rem; color:#9aa3aa; font-size:.75rem; display:flex; align-items:center; gap:.35rem; cursor:pointer; }
.tech-toolbar .view-toggle-group button.active { background:var(--brand-accent,#ff9800); color:#fff; }
.tech-toolbar .view-toggle-group button:not(.active):hover { background:rgba(255,255,255,.12); color:#dfe6ea; }
.tech-toolbar .group-search { position:relative; }
.tech-toolbar .group-search input { background:#1a2025; border:1px solid #2e383f; color:#e2e7ea; font-size:.7rem; padding:.35rem .55rem .35rem 1.4rem; border-radius:.5rem; width:180px; }
.tech-toolbar .group-search i { position:absolute; left:.45rem; top:50%; transform:translateY(-50%); font-size:.8rem; color:#7d8a93; }
.tech-toolbar .group-search button.clear { position:absolute; right:.25rem; top:50%; transform:translateY(-50%); background:none; border:0; color:#88949b; font-size:.8rem; padding:0 .15rem; }
.tech-toolbar .group-search button.clear:hover { color:#fff; }
.tech-toolbar .divider { width:1px; align-self:stretch; background:linear-gradient(#2c353c,#222a30); margin:0 .25rem; }
@media (max-width:900px){ .tech-toolbar { gap:.6rem; } .tech-toolbar .group-search input { width:140px; } }
@media (max-width:600px){ .tech-toolbar { flex-wrap:nowrap; } .tech-toolbar .actions { flex:0 0 auto; } .tech-toolbar .group-search { flex:0 0 auto; } .tech-toolbar .group-search input { width:140px; } .tech-toolbar .view-toggle-group { flex:0 0 auto; } .tech-toolbar .divider { display:none; } }
@media (max-width:420px){ .tech-toolbar .btn-icon span, .tech-toolbar .view-toggle-group button span { display:none !important; } }

/* FEKM techniques table (moved from inline) */
.table-fekm { border-collapse:separate; border-spacing:0; }
.table-fekm thead th { position:sticky; top:0; z-index:5; box-shadow:0 1px 0 rgba(0,0,0,.05); }
.table-fekm .th-cat-type { font-size:.63rem; letter-spacing:.03em; }
.table-fekm td.col-cat-type.stacked { font-size:.63rem; line-height:1.05; padding-top:.35rem; padding-bottom:.35rem; max-width:var(--catTypeMaxPx,165px); }
.table-fekm td.col-cat-type.stacked .cat-full { font-weight:600; color:#dfe4e7; white-space:normal; }
.table-fekm td.col-cat-type.stacked .type-full { color:var(--brand-accent); font-size:.6rem; white-space:normal; }
.table-fekm td.col-cat-type.stacked .cat-full, .table-fekm td.col-cat-type.stacked .type-full { overflow:hidden; text-overflow:ellipsis; display:-webkit-box; -webkit-line-clamp:2; line-clamp:2; -webkit-box-orient:vertical; }
@media (max-width:1200px){ .table-fekm td.col-cat-type.stacked { max-width:150px; } }
@media (max-width:992px){ .table-fekm td.col-cat-type.stacked { max-width:140px; } }
@media (max-width:900px){ .table-fekm td.col-cat-type.stacked { font-size:.6rem; } }
.table-fekm td .tbl-filter-btn { display:block; width:100%; text-align:left; font-size:.6rem; line-height:1.05; font-weight:600; padding:2px 4px; border-radius:4px; border:1px solid rgba(255,255,255,.08); background:rgba(255,255,255,.04); color:#e2e7ea; cursor:pointer; transition:background .18s, border-color .18s, box-shadow .18s, color .18s; position:relative; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.table-fekm td .tbl-filter-btn:hover { background:rgba(255,255,255,.12); border-color:rgba(255,255,255,.25); }
.table-fekm td .tbl-filter-btn.active-filter { background:var(--brand-accent,#ff9800); color:#fff; border-color:var(--brand-accent,#ff9800); box-shadow:0 0 0 2px rgba(255,152,0,.35); }
.table-fekm td.Jaune .tbl-filter-btn.uv-filter:not(.active-filter) { color:#1d1f22; background:rgba(255,255,255,.65); border-color:rgba(0,0,0,.15); }
.table-fekm td.Jaune .tbl-filter-btn.uv-filter:not(.active-filter):hover { background:rgba(255,255,255,.85); }
.table-fekm td .tbl-filter-btn.uv-filter { font-size:.62rem; font-weight:700; letter-spacing:.5px; }
.table-fekm td .tbl-filter-btn.cat-filter { background:rgba(90,120,160,.18); }
.table-fekm td .tbl-filter-btn.type-filter { background:rgba(180,120,40,.15); font-weight:500; }
.table-fekm td .tbl-filter-btn.period-filter { background:rgba(100,170,120,.18); font-weight:600; }
.table-fekm td .tbl-filter-btn.cat-filter:hover { background:rgba(90,120,160,.32); }
.table-fekm td .tbl-filter-btn.type-filter:hover { background:rgba(200,140,50,.32); }
.table-fekm td .tbl-filter-btn.period-filter:hover { background:rgba(100,170,120,.32); }
.table-fekm td .tbl-filter-btn.active-filter.cat-filter,
.table-fekm td .tbl-filter-btn.active-filter.type-filter,
.table-fekm td .tbl-filter-btn.active-filter.period-filter,
.table-fekm td .tbl-filter-btn.active-filter.uv-filter { background:var(--brand-accent,#ff9800); color:#fff; }
.table-fekm td.uv-cell { background:#000 !important; position:relative; color:#fff; }
.table-fekm td.uv-cell.Jaune { color:#111; }
.table-fekm td.uv-cell .uv-stack { display:flex; flex-direction:column; align-items:center; gap:.25rem; }
.table-fekm td.uv-cell .uv-stack .tbl-filter-btn { background:rgba(255,255,255,.12); border-color:rgba(255,255,255,.35); width:100%; }
.table-fekm td.uv-cell .uv-stack .tbl-filter-btn:hover { background:rgba(255,255,255,.22); }
.table-fekm td.uv-cell .belt-dot { width:14px; height:14px; border-radius:50%; box-shadow:0 0 0 2px #111; display:inline-block; border:0; padding:0; cursor:pointer; }
.table-fekm td.uv-cell .belt-dot.Jaune { background:var(--belt-yellow); }
.table-fekm td.uv-cell .belt-dot.Orange { background:var(--belt-orange); }
.table-fekm td.uv-cell .belt-dot.Verte { background:var(--belt-green); }
.table-fekm td.uv-cell .belt-dot.Bleue { background:var(--belt-blue); }
.table-fekm td.uv-cell .belt-dot.Marron { background:var(--belt-brown); }
.table-fekm td.uv-cell .belt-dot.Noire, .table-fekm td.uv-cell .belt-dot.Black { background:var(--belt-black); }
.table-fekm td.col-cat-type.stacked .tbl-filter-btn { white-space:normal; text-overflow:unset; }
.table-fekm td.col-cat-type.stacked .type-full .tbl-filter-btn { font-size:.55rem; }
@media (max-width:1100px){ .table-fekm td .tbl-filter-btn { font-size:.55rem; } }
.table-fekm th .tech-count-badge { background:var(--brand-accent,#ff9800); color:#fff; font-size:.55rem; padding:3px 7px; line-height:1; border-radius:1rem; font-weight:600; display:inline-block; min-width:30px; }
.tech-cell-actions { display:flex; flex-direction:row; gap:.35rem; flex-wrap:nowrap; justify-content:center; align-items:center; }
.tech-cell-actions a, .tech-cell-actions span { line-height:1; }
@media (max-width:680px){ .tech-cell-actions { flex-direction:column; gap:.25rem; } .tech-cell-actions a, .tech-cell-actions span { padding:4px 6px; border-radius:.5rem; background:rgba(255,255,255,.05); } .tech-cell-actions a:hover { background:rgba(255,255,255,.15); } }
