:root{--fond:#f5f6f8;--surface:#fff;--texte:#1d2330;--texte-discret:#667085;--bordure:#e3e6ec;--primaire:#2563eb;--primaire-fonce:#1d4ed8;--primaire-clair:#eaf1ff;--danger:#c62828;--danger-clair:#fdecec;--succes:#1b7f4b;--succes-clair:#e6f6ed;--attente:#8a5a00;--attente-clair:#fff4dc;--rayon:10px;--ombre:0 1px 2px #1018280f, 0 1px 3px #10182814;color:var(--texte);background:var(--fond);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}*{box-sizing:border-box}body{background:var(--fond);margin:0}h1,h2,h3{margin:0;line-height:1.25}h1{font-size:1.6rem}h2{font-size:1.15rem}h3{font-size:1rem}a{color:var(--primaire)}.app{flex-direction:column;min-height:100vh;display:flex}.header{background:var(--surface);border-bottom:1px solid var(--bordure);z-index:10;position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;gap:1rem;max-width:1200px;margin:0 auto;padding:.75rem 1rem;display:flex}.brand{color:var(--texte);font-size:1.2rem;font-weight:800;text-decoration:none}.header-user{align-items:center;gap:.75rem;display:flex}.header-name{align-items:center;gap:.5rem;font-weight:500;display:flex}.role-tag{background:var(--primaire-clair);color:var(--primaire-fonce);border-radius:999px;padding:.1rem .5rem;font-size:.75rem;font-weight:600}.main{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:1.5rem 1rem 2.5rem}.footer{width:100%;max-width:1200px;color:var(--texte-discret);flex-wrap:wrap;justify-content:space-between;gap:.5rem;margin:0 auto;padding:1rem;font-size:.8rem;display:flex}.health{align-items:center;gap:.4rem;display:inline-flex}.health-point{background:var(--texte-discret);border-radius:50%;width:8px;height:8px}.health-ok .health-point{background:var(--succes)}.health-indisponible .health-point{background:var(--danger)}.page{flex-direction:column;gap:1rem;display:flex}.page-entete{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.section{flex-direction:column;gap:.75rem;display:flex}.carte{background:var(--surface);border:1px solid var(--bordure);border-radius:var(--rayon);box-shadow:var(--ombre);padding:1.25rem}.texte-discret{color:var(--texte-discret);font-size:.9rem}.vide{color:var(--texte-discret);background:var(--surface);border:1px dashed var(--bordure);border-radius:var(--rayon);text-align:center;margin:0;padding:1.5rem}.retour-lien{align-self:flex-start;font-size:.9rem;text-decoration:none}.loading{color:var(--texte-discret);margin:0}.error,.success{border-radius:8px;margin:0;padding:.65rem .85rem;font-size:.9rem}.error{background:var(--danger-clair);color:var(--danger)}.success{background:var(--succes-clair);color:var(--succes)}.btn{font:inherit;cursor:pointer;border:1px solid #0000;border-radius:8px;padding:.55rem 1rem;font-size:.9rem;font-weight:600;transition:background .15s}.btn:disabled{opacity:.6;cursor:wait}.btn-primary{background:var(--primaire);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primaire-fonce)}.btn-ghost{background:var(--surface);border-color:var(--bordure);color:var(--texte)}.btn-ghost:hover{background:var(--fond)}.btn-danger{background:var(--surface);border-color:var(--danger);color:var(--danger)}.btn-danger:hover{background:var(--danger-clair)}.btn-large{width:100%;padding:.75rem;font-size:1rem}.btn-lien{font:inherit;color:var(--primaire);cursor:pointer;background:0 0;border:none;padding:0;font-size:.8rem}:focus-visible{outline:2px solid var(--primaire);outline-offset:2px}.form{flex-direction:column;gap:.9rem;display:flex}.form label{flex-direction:column;gap:.3rem;font-size:.875rem;font-weight:500;display:flex}.form input:not([type=radio]):not([type=range]),.form select,.form textarea{font:inherit;border:1px solid var(--bordure);background:var(--surface);color:var(--texte);border-radius:8px;width:100%;padding:.55rem .7rem;font-size:1rem}.form textarea{resize:vertical}.form input[type=range]{accent-color:var(--primaire)}.form-ligne{grid-template-columns:1fr 1fr;gap:.9rem;display:grid}.form-actions{justify-content:flex-end;gap:.5rem;margin-top:.5rem;display:flex}fieldset{border:none;margin:0;padding:0}legend{margin-bottom:.4rem;font-size:.875rem;font-weight:500}.form label.radio{flex-direction:row;align-items:center;gap:.4rem}.choix-statut{flex-wrap:wrap;gap:.25rem 1.25rem;display:flex}.choix-statut legend{width:100%}.auth-page{justify-content:center;padding-top:1rem;display:flex}.auth-carte{flex-direction:column;gap:1rem;width:100%;max-width:440px;display:flex}.sous-titre{color:var(--texte-discret);margin:-.5rem 0 0}.auth-lien{text-align:center;margin:0;font-size:.9rem}.choix-role{grid-template-columns:1fr 1fr;gap:.6rem;display:grid}.choix-role legend{grid-column:1/-1}.form .choix-role-option{border:1px solid var(--bordure);cursor:pointer;border-radius:8px;gap:.15rem;padding:.75rem}.choix-role-option input{opacity:0;position:absolute}.choix-role-option span{color:var(--texte-discret);font-size:.8rem;font-weight:400}.choix-role-option.actif{border-color:var(--primaire);background:var(--primaire-clair)}.choix-role-option:has(input:focus-visible){outline:2px solid var(--primaire)}.invitation{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.invitation p{margin:.25rem 0 0}.invitation-code{flex-direction:column;align-items:flex-end;display:flex}.invitation-code code{letter-spacing:.15em;background:var(--primaire-clair);color:var(--primaire-fonce);-webkit-user-select:all;user-select:all;border-radius:8px;padding:.3rem .8rem;font-size:1.5rem;font-weight:700}.liste-athletes{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.carte-athlete{color:var(--texte);align-items:center;gap:.85rem;padding:1rem;text-decoration:none;transition:border-color .15s;display:flex}.carte-athlete:hover{border-color:var(--primaire)}.carte-athlete>span:nth-child(2){flex-direction:column;flex:1;min-width:0;display:flex}.carte-athlete .texte-discret{text-overflow:ellipsis;overflow:hidden}.avatar{background:var(--primaire-clair);width:42px;height:42px;color:var(--primaire-fonce);text-transform:uppercase;border-radius:50%;flex-shrink:0;place-items:center;font-weight:700;display:grid}.fleche{color:var(--texte-discret)}.rejoindre{flex-direction:column;gap:.75rem;width:100%;max-width:460px;margin:0 auto;display:flex}.rejoindre p{margin:0}.form .input-code{text-transform:uppercase;letter-spacing:.15em;text-align:center;font-weight:600}.week-nav{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.week-nav-centre{text-align:center;flex-direction:column;align-items:center;display:flex}.calendrier{grid-template-columns:repeat(7,minmax(0,1fr));gap:.5rem;transition:opacity .15s;display:grid}.calendrier-chargement{opacity:.5}.jour{background:var(--surface);border:1px solid var(--bordure);border-radius:var(--rayon);flex-direction:column;min-height:180px;display:flex}.jour-aujourdhui{border-color:var(--primaire);box-shadow:0 0 0 1px var(--primaire)}.jour-entete{border-bottom:1px solid var(--bordure);align-items:baseline;gap:.4rem;padding:.5rem .6rem;display:flex}.jour-nom{text-transform:capitalize;font-weight:700}.jour-num{color:var(--texte-discret);font-size:.8rem}.btn-ajouter{border:1px solid var(--bordure);background:var(--surface);width:26px;height:26px;color:var(--primaire);cursor:pointer;border-radius:6px;margin-left:auto;font-size:1.1rem;line-height:1}.btn-ajouter:hover{background:var(--primaire-clair)}.jour-seances{flex-direction:column;gap:.4rem;padding:.5rem;display:flex}.jour-vide{color:var(--bordure);text-align:center;margin:.5rem 0}.carte-seance{font:inherit;text-align:left;border:1px solid var(--bordure);border-left:4px solid var(--primaire);background:var(--surface);cursor:pointer;border-radius:6px;flex-direction:column;align-items:flex-start;gap:.2rem;width:100%;padding:.5rem .55rem;transition:box-shadow .15s;display:flex}.carte-seance:hover{box-shadow:var(--ombre)}.carte-titre{overflow-wrap:anywhere;font-size:.875rem;font-weight:600}.carte-infos{color:var(--texte-discret);font-size:.75rem}.type-endurance{border-left-color:#2563eb}.type-fractionne{border-left-color:#dc2626}.type-renfo{border-left-color:#7c3aed}.type-competition{border-left-color:#ea580c}.type-repos{border-left-color:#94a3b8}.type-autre{border-left-color:#0d9488}.badge{border-radius:999px;padding:.1rem .45rem;font-size:.7rem;font-weight:600;display:inline-block}.badge-prevue{background:var(--attente-clair);color:var(--attente)}.badge-realisee{background:var(--succes-clair);color:var(--succes)}.badge-non_realisee{background:var(--danger-clair);color:var(--danger)}.modal-fond{z-index:20;background:#10182873;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:12px;flex-direction:column;gap:1rem;width:100%;max-width:560px;max-height:calc(100vh - 2rem);padding:1.25rem;display:flex;overflow-y:auto}.modal-entete{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.btn-fermer{cursor:pointer;color:var(--texte-discret);background:0 0;border:none;padding:0 .25rem;font-size:1.5rem;line-height:1}.details{flex-direction:column;gap:.75rem;display:flex}.details-date{color:var(--texte-discret);text-transform:capitalize;margin:-.75rem 0 0}.details-liste{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:.75rem;margin:0;display:grid}.details-liste dt{color:var(--texte-discret);font-size:.75rem}.details-liste dd{margin:0;font-weight:500}.details-description{white-space:pre-line;background:var(--fond);border-radius:8px;margin:0;padding:.75rem}.retour{background:var(--succes-clair);border-radius:8px;flex-direction:column;gap:.6rem;padding:.85rem;display:flex}.retour-commentaire{margin:0;font-style:italic}.retour-form{border-top:1px solid var(--bordure);padding-top:1rem}@media (width<=760px){h1{font-size:1.35rem}.hide-mobile,.header-name{display:none}.calendrier{grid-template-columns:1fr}.jour{min-height:0}.form-ligne{grid-template-columns:1fr}.invitation-code{align-items:flex-start}.modal-fond{align-items:flex-end;padding:0}.modal{border-radius:12px 12px 0 0;max-height:92vh}}
