/*! RaceDataLab-TooL — © 2026 Pellizzari EI. Tous droits réservés. Reproduction interdite sans autorisation écrite. */
/* Écrans de connexion, équipe, compte (complète styles.css). */
[hidden] { display: none !important; }
img { max-width: 100%; }
:root { padding-top: env(safe-area-inset-top, 0px); padding-bottom: env(safe-area-inset-bottom, 0px); }
.auth { min-height: 100%; display: grid; place-items: center; padding: 32px 16px; background: var(--rail); }
.auth-card { width: 100%; max-width: 400px; background: var(--surface); border: 1px solid var(--line); border-radius: 12px; padding: 28px 24px; display: flex; flex-direction: column; gap: 14px; }
.auth-brand { font-family: var(--font-display); font-weight: 700; font-size: 28px; letter-spacing: .02em; text-transform: none; line-height: 1; }
.auth-brand small { display: block; font: 500 11px/1.4 var(--font-data); letter-spacing: .08em; color: var(--muted); margin-top: 6px; text-transform: none; }
.auth h1 { font-size: 26px; }
.auth-form { display: flex; flex-direction: column; gap: 12px; }
.auth-form .btn { padding-block: 10px; }
.auth-links { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 8px; }
/* Compte sans équipe : « rejoindre » d'abord, « créer » replié. */
.auth-choice { border: 1px solid var(--line); border-radius: 10px; padding: 14px; background: var(--surface-2); display: flex; flex-direction: column; gap: 10px; }
.auth-choice h2 { font-size: 16px; }
details.auth-choice { display: block; }
details.auth-choice > * + * { margin-top: 10px; }
details.auth-choice > summary { cursor: pointer; list-style: none; display: flex; align-items: center; gap: 8px; min-height: 28px; font-family: var(--font-display); font-weight: 600; font-size: 16px; letter-spacing: .05em; text-transform: uppercase; }
details.auth-choice > summary::-webkit-details-marker { display: none; }
details.auth-choice > summary::before { content: "▸"; color: var(--muted); }
details.auth-choice[open] > summary::before { content: "▾"; }
details.auth-choice > summary:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 4px; }
.auth-msg { margin: 0; padding: 10px 12px; border-radius: 8px; font-size: 13.5px; }
.auth-msg.err { background: color-mix(in oklab, var(--bad) 12%, var(--surface)); border: 1px solid color-mix(in oklab, var(--bad) 40%, transparent); }
.auth-msg.ok { background: color-mix(in oklab, var(--good) 12%, var(--surface)); border: 1px solid color-mix(in oklab, var(--good) 40%, transparent); }
.link { all: unset; cursor: pointer; color: var(--accent); font-size: 13.5px; text-decoration: underline; text-underline-offset: 3px; }
.link:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.btn:disabled { opacity: .55; cursor: wait; }
.team-name { font-family: var(--font-display); font-weight: 600; font-size: 17px; color: var(--rail-active); padding: 0 10px; text-transform: uppercase; letter-spacing: .03em; overflow-wrap: anywhere; }
.team-sel { margin: 0 10px; background: rgba(255,255,255,.06); color: var(--rail-active); border: 1px solid rgba(255,255,255,.15); border-radius: 6px; padding: 6px 8px; font-family: var(--font-display); font-weight: 600; font-size: 15px; text-transform: uppercase; }
.team-sel option { color: #13202c; background: #fff; }
.user-box { margin-top: auto; display: flex; flex-direction: column; gap: 6px; padding: 0 10px; font-size: 12px; color: var(--rail-fg); }
.user-box .user-mail { overflow-wrap: anywhere; }
.user-box .pill { align-self: flex-start; background: transparent; color: var(--rail-fg); border-color: rgba(255,255,255,.2); }
.rail .save-state { margin-top: 0; }
/* Mention de droits (connexion + bas du menu). */
.legal { margin: 0; font: 400 11px/1.4 var(--font-data); color: var(--muted); }
.auth-card .legal { text-align: center; padding-top: 6px; border-top: 1px solid var(--line); }
.rail-legal { padding: 0 10px; color: var(--rail-fg); opacity: .65; }
.legal a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
/* Page Mentions légales (mentions-legales.html). */
.doc-page { max-width: 780px; margin: 0 auto; padding: 28px 16px 64px; display: flex; flex-direction: column; gap: 16px; }
.doc-page .card p { margin: 0; max-width: 72ch; }
.doc-page .card ul { margin: 0; padding-left: 20px; display: flex; flex-direction: column; gap: 4px; }
.doc-page a { color: var(--accent); overflow-wrap: anywhere; }
.doc-back { margin: 0; font-size: 14px; }
.doc-page > .legal { text-align: center; }
/* Message à tous (Accueil) et page Administration du site. */
.site-msg { background: var(--accent-soft); border: 1px solid color-mix(in oklab, var(--accent) 40%, transparent); border-left: 4px solid var(--accent); border-radius: 10px; padding: 12px 16px; display: flex; flex-direction: column; gap: 4px; }
.site-msg p { margin: 0; font-weight: 500; white-space: pre-line; overflow-wrap: anywhere; }
#adUsers td, #adTeams td { vertical-align: top; }
#adUsers td .row { flex-wrap: nowrap; }
#adUsers td.nw, #adTeams td.nw { white-space: nowrap; }
.ad-confirm { display: flex; flex-direction: column; gap: 8px; padding: 4px 0; }
code { font-family: var(--font-data); font-size: .92em; }
/* Carnet : sujets et essais repliables. */
.topic { gap: 0; padding: 0; }
.topic-head { display: flex; align-items: center; gap: 10px; padding: 12px 14px; }
.fold, .note-sum { all: unset; cursor: pointer; display: flex; align-items: center; gap: 10px; min-width: 0; box-sizing: border-box; }
.fold { flex: 1; }
.fold h2 { overflow-wrap: anywhere; }
.fold .count { font: 500 11px/1 var(--font-data); color: var(--muted); text-transform: uppercase; letter-spacing: .06em; white-space: nowrap; }
.fold:focus-visible, .note-sum:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 4px; }
.chev { width: 8px; height: 8px; flex: none; border-right: 2px solid var(--muted); border-bottom: 2px solid var(--muted); transform: rotate(-45deg); margin-inline: 2px 4px; }
.open > .topic-head .chev, .note.open > .note-sum .chev { transform: rotate(45deg); }
.notes { border-top: 1px solid var(--line); }
.note { border-bottom: 1px solid var(--line); }
.note:last-child { border-bottom: 0; }
.note-sum { width: 100%; padding: 10px 14px 10px 30px; }
.note-sum:hover { background: var(--surface-2); }
.note-sum b { white-space: nowrap; font-weight: 600; }
.note-sum .prev { color: var(--muted); font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.note.open > .note-sum { background: var(--surface-2); }
.note-body { display: flex; flex-direction: column; gap: 10px; padding: 4px 14px 14px 30px; background: var(--surface-2); }
.note-cols { display: grid; gap: 10px; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
@media (prefers-reduced-motion: no-preference) { .chev { transition: transform .15s; } }
@media (max-width: 760px) {
  .note-cols { grid-template-columns: minmax(0, 1fr); }
  .note-sum, .note-body { padding-left: 14px; }
  .topic-head { padding: 10px 12px; }
}
/* Cartographie : ajout / suppression de lignes et colonnes. */
.struct { display: flex; flex-direction: column; gap: 8px; padding: 12px; border: 1px dashed var(--line); border-radius: 8px; background: var(--surface-2); }
.struct .sel-lbl { font: 12px var(--font-data); color: var(--fg); }
table.mg .sel-axis, table.mg td.ax.sel-axis { background: color-mix(in oklab, var(--accent) 22%, var(--surface-2)); }
table.mg .sel-axis input { color: var(--fg); font-weight: 600; }
.check { display: inline-flex; align-items: center; gap: 8px; font-size: 13.5px; cursor: pointer; }
.check input { width: 16px; height: 16px; accent-color: var(--accent); }
/* Compte lecteur : champs visibles mais non modifiables. */
.readonly-view input.in[readonly], .readonly-view textarea.in[readonly], .readonly-view table.mg input[readonly] { opacity: .75; cursor: not-allowed; }
.readonly-view .btn:disabled, .readonly-view select:disabled { cursor: not-allowed; }
/* Badge BÊTA orange sur les fonctions en test. */
:root { --beta: #e8590c; --beta-fg: #ffffff; }
.beta { display: inline-flex; align-items: center; margin-left: 8px; padding: 2px 6px; border-radius: 4px; background: var(--beta); color: var(--beta-fg); font: 700 9.5px/1.2 var(--font-data); letter-spacing: .08em; text-transform: uppercase; vertical-align: middle; white-space: nowrap; }
h1 .beta { font-size: 11px; padding: 3px 7px; vertical-align: 6px; }
.nav-btn .beta { margin-left: 6px; font-size: 8.5px; padding: 2px 5px; }
/* Matrice de démultiplications */
.mx-cur { outline: 2px solid var(--accent); outline-offset: -2px; font-weight: 600; }
.mx-fin { display: block; font-size: 10.5px; color: var(--muted); }
/* Check-lists */
.ck-item { display: flex; align-items: center; gap: 12px; padding: 11px 14px 11px 30px; border-bottom: 1px solid var(--line); cursor: pointer; }
.ck-item input { width: 20px; height: 20px; flex: none; accent-color: var(--good); }
.ck-item span { flex: 1; min-width: 0; }
.ck-item.done span { color: var(--muted); text-decoration: line-through; }
.ck-actions { padding: 12px 14px 12px 30px; }
/* Calendrier */
.ev h2 { overflow-wrap: anywhere; }
/* Minuteur */
.timer-card { align-items: stretch; }
.timer-big { font: 700 clamp(72px, 18vw, 160px)/1 var(--font-display); text-align: center; font-variant-numeric: tabular-nums; letter-spacing: .02em; }
.timer-big.warn { color: var(--warn); }
.timer-big.done { color: var(--bad); }
.btn.big { font-size: 17px; padding: 12px 22px; }
td.best { color: var(--good); font-weight: 600; }
/* Minuteur à plusieurs pilotes : une case par pilote, 4 par ligne au plus (2 sur téléphone). */
.fields > .field.tmr-n { grid-column: auto; max-width: none; }
.tmr-grid { display: grid; gap: 10px; grid-template-columns: repeat(auto-fill, minmax(max(150px, calc((100% - 30px) / 4)), 1fr)); margin-top: 8px; }
.tmr-pil { display: flex; flex-direction: column; gap: 8px; padding: 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-2); min-width: 0; }
.tmr-pil select.tmr-who { font: 600 17px/1.2 var(--font-display); letter-spacing: .03em; text-transform: uppercase; background: var(--surface); }
.tmr-pil .btn.big { width: 100%; min-height: 56px; padding-inline: 8px; }
.tmr-pil .btn.small { align-self: flex-start; }
.tmr-last { font: 700 32px/1 var(--font-display); font-variant-numeric: tabular-nums; margin-top: 2px; }
.tmr-nums { display: grid; grid-template-columns: auto auto; justify-content: space-between; gap: 2px 8px; margin: 0; font-size: 13px; }
.tmr-nums dt { color: var(--muted); }
.tmr-nums dd { margin: 0; text-align: right; font-family: var(--font-data); font-variant-numeric: tabular-nums; }
#tmLaps td:first-child { white-space: nowrap; }
/* Accès par fonction (page Équipe) */
.perm-row > td { background: var(--surface-2); }
.perm-editor { display: flex; flex-direction: column; gap: 12px; padding: 6px 0; }
/* Pilotes : comparer deux séances */
.cmp-sec { margin-top: 16px; padding: 2px 0 2px 12px; border-left: 4px solid var(--tc, var(--line)); }
.cmp-sec h3 { margin: 0 0 6px; font-family: var(--font-display); font-weight: 600; font-size: 17px; letter-spacing: .03em; text-transform: uppercase; }
table.cmp-t { width: auto; min-width: 100%; }
table.cmp-t th[scope=row] { font-weight: 400; white-space: normal; text-transform: none; letter-spacing: 0; font-size: 12.5px; }
@media (max-width: 560px) {
  table.cmp-t th, table.cmp-t td { padding-left: 6px; padding-right: 6px; }
  table.cmp-t th[scope=row] { max-width: 7.5em; }
  table.cmp-t td.n { font-size: 13px; }
}
.cmp-gap.slow { color: var(--bad); font-weight: 600; }
.cmp-gap.fast { color: var(--good); font-weight: 600; }
.cmp-turn { margin-top: 12px; }
.cmp-tname { display: flex; align-items: center; gap: 8px; font-weight: 600; }
.cmp-notes { margin-top: 4px; }
.cmp-notes .lbl { display: block; }
.cmp-notes.two { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 16px; }
@media (max-width: 560px) { .cmp-notes.two { grid-template-columns: 1fr; } }
.cmp-dl { margin: 4px 0 0; display: grid; grid-template-columns: max-content 1fr; gap: 2px 10px; font-size: 13px; }
.cmp-dl dt { color: var(--muted); }
.cmp-dl dd { margin: 0; }
.inv-acc { border: 1px solid var(--line); border-radius: 8px; padding: 8px 10px; }
.inv-acc > summary { cursor: pointer; }
.inv-acc[open] > summary { margin-bottom: 10px; }
.perm-grid { display: grid; gap: 8px 12px; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
/* Pilotes */
.turns { display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
.turn { display: flex; flex-direction: column; gap: 8px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-2); }
.turn h3 { margin: 0; font-family: var(--font-display); font-weight: 600; font-size: 17px; letter-spacing: .03em; text-transform: uppercase; }
table.t td.good { color: var(--good); font-weight: 700; }
details.card > summary { cursor: pointer; }
.tchart { touch-action: pan-y; }
.tchart .xh { stroke: var(--muted); stroke-width: 1; }
.tchart .hl { stroke: var(--muted); stroke-width: 1.5; stroke-dasharray: 4 4; }
.chart text.end { fill: var(--fg); font-weight: 600; }
.chart-key { gap: 16px; font-size: 12.5px; margin-bottom: 6px; }
.imp2d { margin-top: 14px; padding: 12px 14px; border: 1px solid var(--accent); border-radius: 8px; background: var(--surface-2); display: flex; flex-direction: column; gap: 8px; }
.imp2d h3 { margin: 0; font-family: var(--font-display); font-weight: 600; font-size: 17px; letter-spacing: .03em; text-transform: uppercase; }
/* Saisie refusée (hors limites ou pas un nombre) : voir LIMITS dans core.js */
.in.bad, table.mg input.bad { border-color: var(--bad); box-shadow: inset 0 0 0 1px var(--bad); }
.bad-msg { display: block; margin-top: 3px; color: var(--bad); font-size: 12px; line-height: 1.3; white-space: normal; max-width: 260px; }
/* Pilotes, Comparer : une ligne de titre par catégorie */
table.t tr.cat-row > th { background: var(--accent-soft); color: var(--fg); font-size: 12px; white-space: normal; }
table.t tr.cat-row > th b { font-family: var(--font-data); }
td.rf-note { min-width: 150px; }
/* Pilotes : import d'un week-end 2D (dossier de l'épreuve) */
.wk-drop { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; padding: 10px 12px; margin-bottom: 12px; border: 1px dashed var(--line); border-radius: 8px; }
.wk-drop .hint { flex: 1 1 320px; }
.wk-drop.over { border-color: var(--accent); background: var(--accent-soft); }
.card.wk { border: 1px solid var(--accent); }
.card.wk h3 { margin: 14px 0 6px; font-family: var(--font-display); font-weight: 600; font-size: 17px; letter-spacing: .03em; text-transform: uppercase; }
.card.wk tr.off > td { opacity: .55; }
.card.wk tr.wk-grp > th { background: var(--accent-soft); color: var(--fg); font-size: 12px; }
.card.wk table.t th, .card.wk table.t td { padding-left: 6px; padding-right: 6px; }
.card.wk td.wk-ses { min-width: 130px; }
.card.wk td.wk-ses .hint { font-size: 12px; }

/* Pilotes : volet « Moto » d'une séance */
tr.se-sub > td { padding-top: 0; }
.se-sum { font-size: 12.5px; color: var(--muted); padding: 2px 0 4px; }
.se-sum:empty { display: none; }
.se-catok { margin: 0; font-size: 13px; }
/* Circuits du site : infos verrouillées (seul l'administrateur du site les modifie). */
.in[readonly][title^="Circuit du site"] { background: transparent; border-style: dashed; cursor: not-allowed; }
/* Check-lists : parties « Mes check-lists », « Check-lists de l'équipe », « Listes des membres ». */
.ck-sec { margin: 10px 0 0; font-family: var(--font-display); font-weight: 600; font-size: 20px; letter-spacing: .03em; text-transform: uppercase; }
.ck-who { margin: 4px 0 0; font-size: 15px; font-weight: 600; }
.ck-vis { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; margin: 0 0 6px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 8px; }
.ck-vis legend { padding: 0 4px; }
.ck-vis-o { display: inline-flex; align-items: center; gap: 6px; min-height: 32px; }
.ck-vis-o input { width: 18px; height: 18px; accent-color: var(--good); }
.se-catok.ok { color: var(--good); }
.se-moto { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); padding: 12px; margin: 4px 0 8px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-2); box-sizing: border-box; position: sticky; left: 0; }
.se-grp { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
table.se-tyres th, table.se-tyres td { padding: 6px 6px; white-space: normal; }
.se-grp h3 { margin: 0; font-family: var(--font-display); font-weight: 600; font-size: 16px; letter-spacing: .03em; text-transform: uppercase; }
.se-grp .chip .link { margin-left: 4px; font-size: 15px; text-decoration: none; }
.used { display: flex; flex-direction: column; gap: 4px; font-size: 13px; }
.used ul { margin: 0; padding-left: 18px; }

/* Plan du circuit, style jeu vidéo : toujours sur fond sombre (« écran »), quel que soit le thème. */
.tm-wrap { position: relative; border-radius: 10px; overflow: hidden; background: #0b1220; border: 1px solid #1d2838; box-shadow: inset 0 0 50px rgba(0,0,0,.65); }
svg.tmap { display: block; width: 100%; height: auto; max-height: 72vh; }
.tm-bg { fill: #0b1220; }
svg.tmap polyline { fill: none; stroke-linejoin: round; stroke-linecap: round; vector-effect: non-scaling-stroke; }
.tm-glow polyline { stroke: #4dabf7; stroke-width: 24; opacity: .28; filter: url(#tmGlow); }
.tm-kerbw polyline { stroke: #f1f3f5; stroke-width: 16; }
.tm-kerbr polyline { stroke: #e03131; stroke-width: 16; stroke-dasharray: 7 7; stroke-linecap: butt; }
.tm-asph polyline { stroke: #2b313b; stroke-width: 10; }
.tm-mid polyline { stroke: rgba(255,255,255,.4); stroke-width: 1; stroke-dasharray: 5 8; }
.tm-turn { cursor: pointer; }
.tm-dot { fill: var(--tc); stroke: #0b1220; }
.tm-num { fill: #fff; font-family: var(--font-display); font-weight: 700; text-anchor: middle; pointer-events: none; }
.tm-turn.unfilled .tm-dot { fill: #0b1220; stroke: var(--tc); }
.tm-turn.unfilled .tm-num { fill: var(--tc); }
.tm-pulse { fill: none; stroke: var(--tc); opacity: 0; transform-box: fill-box; transform-origin: center; }
.tm-turn.sel .tm-dot { stroke: #fff; }
.tm-sec { pointer-events: none; }
.tm-sec.sel rect { stroke: #fff !important; }
.tm-turn.sel .tm-pulse { opacity: 1; animation: tmPulse 1.4s ease-out infinite; }
@keyframes tmPulse { from { transform: scale(.85); opacity: .95; } to { transform: scale(1.8); opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .tm-turn.sel .tm-pulse { animation: none; opacity: 1; } }
svg.tmap.placing { cursor: crosshair; }
.tm-credit { position: absolute; right: 8px; bottom: 5px; font-size: 10px; color: rgba(255,255,255,.55); pointer-events: none; }
.tm-cand .vis { stroke: #5c6675; stroke-width: 3; stroke-dasharray: 4 5; }
.tm-cand.on .vis { stroke: #4dabf7; stroke-width: 6; stroke-dasharray: none; }
.tm-cand .hit { stroke: transparent; stroke-width: 18; cursor: pointer; }
.tm-cand:hover .vis { stroke: #fff; }
.tm-legend { gap: 14px; font-size: 12.5px; }
.tm-sw { display: inline-block; width: 12px; height: 12px; border-radius: 50%; vertical-align: -1px; margin-right: 5px; flex: none; }
.tm-sw.unfilled { background: transparent; border: 2px solid var(--muted); box-sizing: border-box; }
.lib-h { margin: 6px 0 0; font-family: var(--font-display); font-weight: 600; font-size: 16px; letter-spacing: .04em; text-transform: uppercase; }
/* Page Virages */
.vg-layout { display: grid; gap: 20px; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); align-items: start; }
.vg-map { position: sticky; top: 12px; z-index: 2; }
.vg-list { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.vg-turn { border-left: 4px solid var(--tc); scroll-margin: 90px; }
.vg-turn.sel { outline: 2px solid var(--tc); outline-offset: 1px; }
.vg-turn h3 { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.vg-badge { display: inline-grid; place-items: center; min-width: 26px; height: 26px; padding: 0 5px; border-radius: 13px; background: var(--tc); color: #fff; font-size: 14px; box-sizing: border-box; border: 2px solid var(--tc); }
.vg-badge.unfilled { background: transparent; color: var(--tc); }
@media (max-width: 960px) {
  .vg-layout { grid-template-columns: minmax(0, 1fr); }
  .vg-map { padding: 8px; gap: 6px; }
  .vg-map h2, .vg-map .tm-legend { display: none; }
  .vg-map svg.tmap { max-height: 32vh; }
}
/* PDF (impression) */
#printArea { display: none; }
@media print {
  @page { size: A4; margin: 12mm; }
  body.printing { background: #fff !important; }
  body.printing > :not(#printArea) { display: none !important; }
  body.printing #printArea { display: block; }
}
.pdf { color: #111; background: #fff; font: 10.5pt/1.4 var(--font-body, system-ui, sans-serif); -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.pdf h1 { font-size: 20pt; color: #111; margin: 0; }
.pdf h2 { font-size: 11pt; color: #111; margin: 0 0 4px; }
.pdf-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 12px; border-bottom: 3px solid #111; padding-bottom: 6px; margin-bottom: 10px; }
.pdf-who { font-size: 12pt; font-weight: 600; margin-top: 4px; }
.pdf-meta { text-align: right; font-size: 9pt; color: #555; }
.pdf-top { display: grid; grid-template-columns: 1.5fr 1fr; gap: 12px; margin-bottom: 10px; break-inside: avoid; }
.pdf-map .tm-credit { display: none; }
.pdf-map svg.tmap { max-height: 110mm; border: 1px solid #ccc; border-radius: 6px; }
.pdf-side { display: flex; flex-direction: column; gap: 8px; }
.pdf-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.pdf-stat { border: 1px solid #ccc; border-radius: 6px; padding: 5px 7px; display: flex; flex-direction: column; }
.pdf-stat span { font-size: 8pt; text-transform: uppercase; letter-spacing: .06em; color: #555; }
.pdf-stat b { font-size: 13pt; }
.pdf-box { border: 1px solid #ccc; border-radius: 6px; padding: 6px 8px; break-inside: avoid; margin-bottom: 8px; }
.pdf-box p { margin: 0; }
.pdf-turns { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 8px; }
.pdf-turn { border: 1px solid #ccc; border-left: 4px solid #999; border-radius: 6px; padding: 6px 8px; break-inside: avoid; }
.pdf-turn h3 { display: flex; align-items: center; gap: 6px; margin: 0 0 4px; font-size: 11pt; text-transform: uppercase; letter-spacing: .03em; }
.pdf-turn h3 small { font-weight: 400; text-transform: none; color: #555; }
.pdf-turn dl { margin: 0; display: grid; grid-template-columns: auto 1fr; gap: 2px 8px; }
.pdf-turn dt { font-size: 8.5pt; color: #555; }
.pdf-turn dd { margin: 0; }
.pdf-empty { margin: 0; color: #888; font-style: italic; }
.pdf-credit { font-size: 8pt; color: #666; }
/* Numéro des fiches du PDF : petit dessin SVG (rond plein de la couleur du secteur), comme les pastilles du plan. */
.pdf-badge { display: inline-block; flex: none; vertical-align: middle; }
/* Plan en version papier : fond blanc, pas de halo. */
svg.tmap.print .tm-bg { fill: #fff; }
svg.tmap.print .tm-glow { display: none; }
svg.tmap.print .tm-asph polyline { stroke: #3a3f47; }
/* Sur papier, les pastilles portent leurs couleurs en dur (TrackMap.svg, PRINT_SERIES) : pleines, contour foncé, numéro lisible. */

/* Audit L1 : cases d'une même ligne alignées par le bas, même quand une étiquette passe sur 2 lignes. */
.fields { align-items: end; }
/* Audit L3 : les listes déroulantes aux libellés longs prennent deux colonnes (plus de texte coupé). */
.fields > .field:has(> select) { grid-column: 1 / -1; max-width: 420px; }
#gbMeteo { white-space: normal; line-height: 1.2; }
/* Audit L6 : résumé Pilotes, les 6 à 8 chiffres tiennent sur une ligne au lieu d'en laisser un seul en dessous. */
#plSum .stats { grid-template-columns: repeat(auto-fit, minmax(128px, 1fr)); }
#plSum .stat { padding-inline: 12px; }
#plSum .stat .v { font-size: 22px; }
/* Audit L2 : sur téléphone, boutons d'au moins 40 px de haut (cible du doigt). */
@media (max-width: 760px) {
  .btn { min-height: 40px; }
  .btn.small { min-height: 38px; padding: 8px 12px; font-size: 13.5px; }
  .fold, button.link { min-height: 36px; }
  button.link { display: inline-flex; align-items: center; }
}

/* Accueil (tableau de bord) */
.ac-quote { position: relative; padding: 18px 22px 18px 58px; border-left: 4px solid var(--accent); }
.ac-quote p { margin: 0; font-family: var(--font-display); font-weight: 600; font-size: 22px; line-height: 1.25; letter-spacing: .01em; }
.ac-q { position: absolute; left: 16px; top: 6px; font: 700 48px/1 var(--font-display); color: var(--accent); opacity: .7; }
.ac-grid { display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); align-items: start; }
.ac-count { font: 700 56px/1 var(--font-display); letter-spacing: .02em; color: var(--accent); }
.ac-count.live { color: var(--good); }
.ac-wx { display: flex; gap: 8px; flex-wrap: wrap; }
.ac-day { display: flex; flex-direction: column; gap: 2px; padding: 6px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-2); font-size: 13px; min-width: 92px; }
.ac-champ { display: flex; flex-direction: column; gap: 4px; padding: 10px 0; border-top: 1px solid var(--line); }
.ac-champ:first-of-type { border-top: 0; padding-top: 0; }
.ac-champ-head { font-size: 13px; color: var(--muted); text-transform: uppercase; letter-spacing: .06em; }
.ac-place { font: 700 40px/1 var(--font-display); }
.ac-place sup { font-size: 18px; }
.ac-place .hint { font: 500 15px var(--font-body, inherit); }
.ac-up { color: var(--good); font: 600 15px var(--font-body, inherit); }
.ac-down { color: var(--bad); font: 600 15px var(--font-body, inherit); }
.ac-list { margin: 4px 0 0; padding-left: 18px; display: flex; flex-direction: column; gap: 4px; }
@media (max-width: 760px) {
  .ac-quote p { font-size: 19px; }
  .ac-count { font-size: 46px; }
}

/* Boîtes : export vers 2D */
pre.cal2d { margin: 8px 0 0; padding: 10px 12px; max-height: 360px; overflow: auto; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-2); font: 12px/1.45 var(--font-data); white-space: pre; }

/* Info technique : couples */
table.tq .tq-nm { font-weight: 700; font-size: 15px; }
@media (max-width: 760px) {
  .ck-item, .ck-actions { padding-left: 14px; }
}
/* Le nom RaceDataLab-TooL garde sa casse. */
.rail .brand { text-transform: none; letter-spacing: 0; }
.rail { scrollbar-width: thin; scrollbar-color: rgba(255,255,255,.2) transparent; }
@media (max-width: 760px) {
  .user-box, .rail-legal { display: none; }
  .team-box .nav-label, .team-name { display: none; }
  .team-sel { margin: 0; font-size: 13px; padding: 4px 6px; }
}
.topic { overflow: hidden; }

/* Pro (V4) : surfaces calmes, coins arrondis (--r, --r-sm), une seule couleur vive (celle de l'équipe), titres en minuscules
   (voir styles.css). Saira italique seulement pour la marque et les grands chiffres. */
.auth-card, .auth-choice, .site-msg, .tmr-pil, .turn, .imp2d, .wk-drop, .se-moto, .struct, .ck-vis, .inv-acc, .tm-wrap { border-radius: var(--r); }
.auth-msg, .team-sel, pre.cal2d, .ac-day { border-radius: var(--r-sm); }
.auth-card { box-shadow: 0 10px 40px rgba(0,0,0,.35); padding: 32px 28px 24px; }
.auth-brand { font: italic 900 30px/1 var(--font-display); text-transform: none; }
.auth-brand::before { content: ""; display: block; width: 30px; height: 7px; margin-bottom: 12px; background: linear-gradient(90deg, var(--livree) 0 12px, transparent 12px 17px, var(--filet) 17px); transform: skewX(-20deg); }
.auth-brand small { font: 400 13px/1.4 var(--font-body); letter-spacing: 0; }
.auth h1 { font-size: 22px; }
.team-name { font: 700 16px/1.25 var(--font-body); text-transform: none; letter-spacing: 0; }
.team-sel { font: 600 14px var(--font-body); text-transform: none; border-radius: var(--r-sm); }
.site-msg { border: 1px solid var(--line); background: var(--surface); box-shadow: inset 3px 0 0 var(--livree); }
.ac-quote { padding: 14px 20px 14px 52px; border: 1px solid var(--line); border-radius: var(--r); background: var(--surface); }
.ac-quote p { font: 600 18px/1.35 var(--font-body); }
.ac-q { left: 18px; top: 8px; font: italic 900 36px/1 var(--font-display); color: var(--livree); opacity: 1; }
.ac-count, .ac-place, .tmr-last, .timer-big { font-family: var(--font-display); font-style: italic; font-weight: 800; }
.ac-count { color: var(--fg); }
/* Badge BÊTA : discret, contour orange. */
.beta { background: transparent; color: var(--beta); border: 1px solid color-mix(in oklab, var(--beta) 55%, transparent); border-radius: 4px; font: 600 9.5px/1.2 var(--font-body); padding: 1px 5px; }
.nav-btn .beta { color: #f08c4a; border-color: rgba(240, 140, 74, .45); font-size: 9px; padding: 1px 5px; }
/* Sous-titres (h3 et équivalents) : même style partout. */
.cmp-sec h3, .turn h3, .imp2d h3, .card.wk h3, .se-grp h3, .lib-h, details.auth-choice > summary { font: 700 15px/1.3 var(--font-body); letter-spacing: 0; text-transform: none; }
.ck-sec { font: 700 18px/1.3 var(--font-body); letter-spacing: 0; text-transform: none; }
.tmr-pil { border: 1px solid var(--line); }
.tmr-pil select.tmr-who { font: 600 15px/1.3 var(--font-body); letter-spacing: 0; text-transform: none; }
.turn { border: 1px solid var(--line); }
details.card > summary h2 { display: inline-block; }
details.card:not([open]) { gap: 0; } /* Chrome garde une boîte pour le contenu replié : pas d'espace vide sous le titre */
table.t tr.cat-row > th, .card.wk tr.wk-grp > th { background: var(--surface-2); color: var(--fg); }
.imp2d, .card.wk { border-color: color-mix(in oklab, var(--livree) 70%, var(--line-strong)); }
.wk-drop.over { border-color: var(--fg); background: var(--surface-2); }
.mx-cur { outline-color: var(--fg); }
.check input, .ck-item input, .ck-vis-o input { accent-color: var(--fg); }
#plSum .stats { gap: 8px; }
main a:not(.btn) { color: inherit; text-underline-offset: 3px; }
.link, .doc-page a { color: var(--fg); text-decoration-color: var(--line-strong); }
.link:hover, .doc-page a:hover { text-decoration-color: currentColor; }
.link:focus-visible { outline-color: var(--fg); }
/* Couleur de l'équipe (page Équipe) et menu « Affichage » du rail. */
.chip.tc-sw { width: 44px; padding: 0; background: var(--c); border-color: var(--line-strong); }
.chip.tc-sw:hover { background: var(--c); border-color: var(--muted); }
.chip.tc-sw[aria-pressed="true"] { background: var(--c); border-color: var(--fg); box-shadow: 0 0 0 2px var(--surface), 0 0 0 4px var(--fg); }
.tc-pick { width: 52px; height: 36px; padding: 2px; border: 1px solid var(--line-strong); border-radius: var(--r-sm); background: var(--surface); cursor: pointer; }
/* Menu compte de la barre du haut. */
.nav-acct .team-box { display: flex; flex-direction: column; gap: 4px; }
.nav-acct .team-name, .nav-acct .user-box, .nav-acct .rail-legal { padding: 0 2px; }
.nav-acct .team-sel { margin: 0; width: 100%; }
.nav-acct .user-box { margin-top: 0; flex-direction: row; flex-wrap: wrap; align-items: center; gap: 4px 8px; padding-bottom: 10px; border-bottom: 1px solid rgba(255,255,255,.08); }
.nav-acct .user-box .pill { padding: 3px 7px; font-size: 11px; }
.nav-acct .rail-legal { padding-top: 10px; border-top: 1px solid rgba(255,255,255,.08); }
.team-sel.theme-sel { padding: 5px 8px; font: 600 13px var(--font-body); }
@media (max-width: 760px) {
  .nav-acct .team-sel { width: auto; }
  .team-sel.theme-sel { padding: 4px 6px; }
}
