/* ══════════════════════════════════════════════════════════
   UI — composants maison, animations, codes couleur
   ══════════════════════════════════════════════════════════ */
:root{
  --ease:cubic-bezier(.2,.8,.2,1);
  /* Échelle de niveau : 5 = top 20 % … 1 = 20 % les plus bas */
  --tn5:#0e7a34;--tn4:#4f8f1d;--tn2:#b86200;--tn1:#c0281e;
  --tn5-bg:rgba(34,160,70,.16);--tn4-bg:rgba(34,160,70,.07);--tn2-bg:rgba(255,140,0,.09);--tn1-bg:rgba(230,60,50,.11);
}

/* ── Couleurs de niveau ── */
.t5{color:var(--tn5)!important}.t4{color:var(--tn4)!important}.t2{color:var(--tn2)!important}.t1{color:var(--tn1)!important}
.bg-t5{background:var(--tn5-bg)}.bg-t4{background:var(--tn4-bg)}.bg-t2{background:var(--tn2-bg)}.bg-t1{background:var(--tn1-bg)}
.fill-t5{background:#22a046!important}.fill-t4{background:#7cb342!important}.fill-t3{background:#b0b0b0!important}
.fill-t2{background:#f59e0b!important}.fill-t1{background:#e5484d!important}
.score-chip{display:inline-block;min-width:30px;text-align:center;padding:1px 6px;border-radius:6px;font-size:11px;font-weight:800;font-variant-numeric:tabular-nums}

/* ── Soulignement / pastille glissants ── */
.tabs,.season-bar{position:relative}
.ink{position:absolute;left:0;pointer-events:none;transition:transform .32s var(--ease),width .32s var(--ease),opacity .2s}
.ink.no-anim{transition:none}
.ink-line{bottom:0;height:2px;background:var(--orange);border-radius:2px}
.ink-pill{top:0;background:var(--orange);border-radius:20px;z-index:0}
.tab.active{border-bottom-color:transparent}
.s-pill{position:relative;z-index:1;transition:color .25s}
.s-pill.on{background:transparent}

/* ── Transitions entre onglets et contenus ── */
.tab-panel.active{animation:panelIn .28s var(--ease)}
@keyframes panelIn{from{opacity:0;transform:translateY(6px)}}
.sd-body{animation:fadeIn .22s ease}
@keyframes fadeIn{from{opacity:0}}
.refreshing .logo-sub::after{content:' · actualisation…';color:var(--orange)}

/* ── Fenêtres : ouverture / fermeture ── */
.overlay:not([hidden]){animation:ovIn .2s ease}
.overlay .modal{animation:modalIn .26s var(--ease)}
.overlay.closing{animation:ovOut .18s ease forwards;pointer-events:none}
.overlay.closing .modal{animation:modalOut .18s ease forwards}
.drawer-overlay.closing .drawer{animation:drawerOut .18s ease forwards}
@keyframes ovIn{from{opacity:0}}
@keyframes ovOut{to{opacity:0}}
@keyframes modalIn{from{opacity:0;transform:translateY(10px) scale(.97)}}
@keyframes modalOut{to{opacity:0;transform:translateY(6px) scale(.98)}}
@keyframes drawerOut{to{transform:translateX(40px);opacity:0}}

/* ── Focus clavier ── */
:focus{outline:none}
:focus-visible{outline:2px solid rgba(255,107,0,.55);outline-offset:2px;border-radius:6px}

/* ── Cases à cocher (dessinées, comportement natif conservé) ── */
input[type=checkbox]:not(.toggle input){
  appearance:none;-webkit-appearance:none;width:18px;height:18px;margin:0;flex-shrink:0;cursor:pointer;
  border:1.5px solid var(--line2);border-radius:5px;background:var(--bg);
  display:inline-grid;place-content:center;transition:background .15s,border-color .15s;
}
input[type=checkbox]:not(.toggle input)::before{
  content:'';width:10px;height:10px;background:#fff;transform:scale(0);transition:transform .18s cubic-bezier(.3,1.6,.5,1);
  clip-path:polygon(14% 44%,0 65%,50% 100%,100% 16%,80% 0,43% 62%);
}
input[type=checkbox]:not(.toggle input):checked{background:var(--orange);border-color:var(--orange)}
input[type=checkbox]:not(.toggle input):checked::before{transform:scale(1)}
input[type=checkbox]:not(.toggle input):hover{border-color:var(--orange)}

/* ── Liste déroulante / champ date ── */
.ui-select{
  display:inline-flex;align-items:center;justify-content:space-between;gap:10px;min-width:120px;
  padding:6px 10px;border:1px solid var(--line2);border-radius:var(--r-s);background:var(--bg);
  font:inherit;font-size:12px;font-weight:600;color:var(--text);cursor:pointer;transition:border-color .15s,box-shadow .15s;
}
.ui-select:hover,.ui-select[aria-expanded=true]{border-color:var(--orange)}
.ui-select[aria-expanded=true]{box-shadow:0 0 0 3px var(--orange-bg)}
.ui-select.empty span{color:var(--t3);font-weight:500}
.ui-caret{width:8px;height:8px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform .2s var(--ease);opacity:.6}
.ui-select[aria-expanded=true] .ui-caret{transform:translateY(1px) rotate(-135deg)}
.ui-cal-ico{width:13px;height:13px;border:1.5px solid currentColor;border-radius:3px;border-top-width:3px;opacity:.5}
.ui-date{min-width:170px}

/* ── Popover commun ── */
.ui-pop{
  position:fixed;z-index:1200;background:var(--bg);border:1px solid var(--line2);border-radius:10px;
  box-shadow:0 12px 32px rgba(0,0,0,.14),0 2px 6px rgba(0,0,0,.06);
  animation:popIn .16s var(--ease);transform-origin:top left;
}
.ui-pop.up{transform-origin:bottom left}
.ui-pop.closing{animation:popOut .12s ease forwards}
@keyframes popIn{from{opacity:0;transform:translateY(-4px) scale(.98)}}
@keyframes popOut{to{opacity:0;transform:translateY(-4px) scale(.98)}}
.ui-options{max-height:260px;overflow:auto;padding:4px}
.ui-option{padding:7px 10px;border-radius:6px;font-size:13px;cursor:pointer;white-space:nowrap}
.ui-option.hl,.ui-option:hover{background:var(--s2)}
.ui-option.sel{color:var(--orange);font-weight:700}
.ui-option mark{background:var(--orange-bg);color:var(--orange);border-radius:3px;padding:0 1px}

/* ── Calendrier (sélecteur de date) ── */
.ui-pop-cal{padding:12px;width:292px}
.ui-cal-head{display:flex;align-items:center;gap:2px;margin-bottom:8px}
.ui-cal-head b{flex:1;text-align:center;font-size:13px}
.ui-cal-nav{width:28px;height:28px;border:none;background:none;border-radius:6px;cursor:pointer;font-size:15px;color:var(--t2)}
.ui-cal-nav:hover{background:var(--s2);color:var(--text)}
.ui-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.ui-cal-grid small{text-align:center;font-size:10px;font-weight:700;color:var(--t3);padding:4px 0}
.ui-day{position:relative;height:34px;border:none;background:none;border-radius:8px;cursor:pointer;font:inherit;font-size:12px;font-variant-numeric:tabular-nums;color:var(--text);transition:background .12s}
.ui-day:hover{background:var(--s2)}
.ui-day.today{box-shadow:inset 0 0 0 1px var(--line2)}
.ui-day.live::after,.ui-dot{content:'';position:absolute;left:50%;bottom:4px;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:var(--orange)}
.ui-dot{position:static;display:inline-block;margin:0 2px 1px 0;vertical-align:middle}
.ui-day.sel{background:var(--orange);color:#fff;font-weight:700}
.ui-day.sel::after{background:#fff}
.ui-cal-foot{display:flex;justify-content:space-between;align-items:center;margin-top:8px;padding-top:8px;border-top:1px solid var(--line);font-size:11px;color:var(--t3)}
.ui-cal-foot button{border:none;background:none;font:inherit;font-size:12px;font-weight:600;color:var(--orange);cursor:pointer;padding:4px 6px;border-radius:6px}
.ui-cal-foot button:hover{background:var(--orange-bg)}

/* ── Boîte de dialogue ── */
.ui-dialog{z-index:1300}
.ui-dialog-msg{font-size:14px;color:var(--t2);white-space:pre-line;line-height:1.55}
.ui-dialog .ui-field{margin-top:14px}
.btn-danger{background:var(--red);color:#fff}
.btn-danger:hover{opacity:.88}

/* ── Info-bulle ── */
.ui-tip{
  position:fixed;z-index:1400;max-width:280px;padding:6px 10px;border-radius:7px;
  background:#1c1c1e;color:#fff;font-size:11.5px;font-weight:500;line-height:1.4;pointer-events:none;
  opacity:0;transform:translateY(3px);transition:opacity .15s,transform .15s var(--ease);
}
.ui-tip.on{opacity:1;transform:none}

/* ── Champ texte générique ── */
.ui-field{width:100%;font-family:inherit;font-size:14px;padding:10px 12px;border-radius:var(--r-s);border:1px solid var(--line2);background:var(--bg);color:var(--text);transition:border-color .15s,box-shadow .15s}
.ui-field:focus{border-color:var(--orange);box-shadow:0 0 0 3px var(--orange-bg)}
.ui-field.invalid{border-color:var(--red);animation:shake .3s}
@keyframes shake{25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}

/* ── Bouton de verrouillage (mode édition) ── */
.ui-select-sm{min-width:0;padding:3px 8px;font-size:11px;text-transform:none;letter-spacing:0}
.lock-btn.unlocked{background:rgba(26,140,54,.1);border-color:rgba(26,140,54,.35);color:var(--green)}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}

/* ── Icônes SVG ── */
.ic{width:1.05em;height:1.05em;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vertical-align:-.16em}
.btn .ic,.tab .ic,.mode-btn .ic,.sc-best .ic,.ed-head .ic,.ch-card h3 .ic,.sc-detail-sum small .ic{margin-right:6px}
.btn{display:inline-flex;align-items:center;justify-content:center}
.tab .ic{opacity:.75}
.tab.active .ic{opacity:1}
.icon-btn .ic{width:16px;height:16px;margin:0}
.logo-icon .ic{width:22px;height:22px;color:#fff;vertical-align:0}
.rec-icon .ic{width:22px;height:22px;color:var(--orange)}
.ch-card h3 .ic{width:14px;height:14px;vertical-align:-.2em}
.drop-area .ico .ic{width:34px;height:34px;color:var(--t3);stroke-width:1.5}
.sd-logo-ph .ic{width:24px;height:24px;color:var(--t3)}
.logo-placeholder .ic{width:18px;height:18px}
.ic.medal{margin-right:3px;stroke-width:2.2}
.ic.star-best{width:12px;height:12px;margin-left:4px;fill:currentColor;vertical-align:-.1em}
.ic.spin{animation:spin .9s linear infinite}
.imp-msg .ic,.err .ic{vertical-align:-.2em;margin-right:2px}
.sc-best .ic{color:var(--gold)}
.ui-cal-nav .ic{width:15px;height:15px;vertical-align:-.2em}
.search{padding-left:36px;background:var(--s2) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.35-4.35'/%3E%3C/svg%3E") no-repeat 12px center/15px}
