 :root{--navy:#071b38;--teal:#0698aa;--pale:#eaf8fa;--line:#e0e8ed;--muted:#5e7185;--orange:#fc4c02}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--navy);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;background:#fbfdfe}button,input,textarea{font:inherit}.topbar{height:148px;background:#fff;border-bottom:2px solid var(--teal);display:flex;align-items:center;justify-content:space-between;padding:0 28px 0 35px;position:relative;z-index:2}.identity{display:flex;align-items:center;gap:24px}.identity img{width:190px;height:190px;object-fit:contain;align-self:flex-start;margin-top:4px}.identity h1{font-size:3rem;line-height:1;margin:0 0 12px;font-weight:850;letter-spacing:-.04em}.identity p{margin:0;color:var(--teal);font-size:1.65rem;font-weight:600}.top-actions{display:flex;gap:10px}.strava-btn,button{border:0;border-radius:9px;padding:12px 18px;font-weight:750;cursor:pointer;background:var(--navy);color:white}.strava-btn{background:linear-gradient(180deg,#079cac,#008a9b)}.outline{background:white;color:var(--teal);border:1px solid var(--teal)}button:disabled{opacity:.45;cursor:not-allowed}.app-shell{display:grid;grid-template-columns:294px minmax(0,1fr)}.sidebar{background:#fff;border-right:1px solid var(--line);min-height:calc(100vh - 148px);padding:58px 20px 28px;display:flex;flex-direction:column;justify-content:space-between}.sidebar nav{display:flex;flex-direction:column;gap:9px}.nav{background:transparent;color:var(--navy);text-align:left;padding:17px 16px;font-size:1rem}.nav.active,.nav:hover{background:var(--pale);color:#087f91}.side-bottom{display:grid;gap:22px}.side-bottom p{font-size:.78rem;color:var(--muted);padding-left:8px}main{padding:36px 28px;min-width:0}.card{background:#fff;border:1px solid var(--line);border-radius:15px;box-shadow:0 4px 16px rgba(7,27,56,.055);padding:24px;margin-bottom:22px}.card h2{font-size:1.08rem;color:#078b9d;margin:0 0 20px}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr)}.stats-grid>div{text-align:center;border-right:1px solid var(--line);padding:0 15px;display:flex;flex-direction:column;align-items:center}.stats-grid>div:last-child{border:0}.stats-grid i{font-style:normal;font-size:2.3rem;color:var(--teal);height:52px}.stats-grid b{font-size:2.15rem;line-height:1.15;margin:8px 0}.stats-grid strong{font-size:.86rem}.stats-grid span{font-size:.85rem;color:var(--muted);margin-top:6px}.content-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(300px,.8fr);gap:22px}.section-title{display:flex;align-items:center;justify-content:space-between;gap:15px}.small{font-size:.78rem;padding:9px 12px}.rides .empty{padding:30px;text-align:center;color:var(--muted)}.ride{display:grid;grid-template-columns:42px minmax(140px,1fr) 110px 80px 110px auto;gap:12px;align-items:center;padding:15px 6px;border-bottom:1px solid var(--line)}.ride:last-child{border:0}.bike-dot{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--teal);color:#fff}.ride h3{font-size:.95rem;margin:0}.ride p{margin:0;color:var(--muted);font-size:.82rem}.ride-actions{display:flex;gap:5px}.ride-actions button{padding:7px 9px;font-size:.7rem}.strava-title{color:var(--orange)!important;font-weight:900}.strava-copy{display:flex;gap:15px;align-items:flex-start}.strava-copy>b{font-size:2rem}.strava-copy p{line-height:1.6;margin:0 0 18px;font-size:.92rem}.wide{width:100%;margin-top:8px}.notice{background:var(--pale);border-radius:8px;padding:10px;margin-top:10px;font-size:.82rem}.quick{display:grid;gap:8px}.quick h2{margin-bottom:8px}.quick button{background:var(--pale);color:#087f91;text-align:left}.form-card,.placeholder{scroll-margin-top:20px}.placeholder{margin-top:22px}.form label{display:block;font-size:.82rem;font-weight:700;margin:10px 0}.form input,.form textarea{width:100%;border:1px solid #cbd7dd;border-radius:9px;padding:11px;margin-top:6px}.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}footer{border-top:1px solid var(--line);text-align:center;padding:18px;color:#50647a;font-size:.78rem;background:white}@media(max-width:900px){.topbar{height:auto;padding:14px 18px}.identity img{width:90px;height:90px;margin:0}.identity h1{font-size:1.8rem}.identity p{font-size:1rem}.app-shell{grid-template-columns:1fr}.sidebar{min-height:0;padding:10px;position:sticky;top:0;z-index:5;border-right:0;border-bottom:1px solid var(--line)}.sidebar nav{flex-direction:row;overflow:auto}.nav{white-space:nowrap;padding:10px 12px}.nav span{display:none}.side-bottom{display:none}main{padding:18px 12px}.content-grid{grid-template-columns:1fr}.stats-grid{grid-template-columns:repeat(2,1fr);gap:18px}.stats-grid>div{border:0}.ride{grid-template-columns:38px 1fr auto}.ride .ride-date,.ride .ride-km,.ride .ride-elev{display:none}.ride-actions{grid-column:2/4}.top-actions{display:none}}@media(max-width:520px){.identity h1{font-size:1.45rem}.identity p{font-size:.9rem}.identity{gap:10px}.identity img{width:72px;height:72px}.stats-grid b{font-size:1.55rem}.stats-grid strong{font-size:.72rem}.two{grid-template-columns:1fr}.card{padding:17px}}
.auth-gate{position:fixed;inset:0;z-index:9999;background:#f4fafb;display:grid;place-items:center;padding:18px}
.auth-gate[hidden]{display:none}.auth-box{width:min(430px,100%);background:#fff;border:1px solid var(--line,#dfe8ec);border-radius:18px;padding:28px;box-shadow:0 20px 60px rgba(7,27,56,.12)}
.auth-box>img{width:150px;height:95px;object-fit:contain;display:block;margin:0 auto 10px}.auth-box h2{text-align:center;font-size:1.7rem;margin:0 0 8px}.auth-box>p{text-align:center;color:#607486;line-height:1.45}
.auth-tabs{display:grid;grid-template-columns:1fr 1fr;background:#eef8fa;border-radius:10px;padding:4px;margin:20px 0}.auth-tabs button{background:transparent;color:#087f91}.auth-tabs button.active{background:#078f9f;color:#fff}
.auth-box label{display:block;font-size:.82rem;font-weight:750;margin:12px 0}.auth-box input{display:block;width:100%;margin-top:6px;border:1px solid #cbd8dd;border-radius:9px;padding:12px}.auth-box form>button{width:100%;margin-top:8px}
#authMessage{font-size:.82rem;margin-top:12px;color:#a33}.user-chip{font-size:.8rem;color:#087f91;font-weight:750}

.auth-gate{display:grid!important;position:fixed!important;inset:0!important;z-index:2147483647!important;background:rgba(244,250,251,.985)!important;place-items:center!important}.auth-gate[hidden]{display:none!important}.auth-box{border-top:5px solid #0698aa!important}.auth-box:before{content:"COMPTE UTILISATEUR";display:block;text-align:center;font-size:.72rem;letter-spacing:.14em;font-weight:900;color:#0698aa;margin-bottom:12px}

/* auth-scroll-packaged-fix */
.auth-gate{overflow-y:auto;align-items:flex-start;padding:16px;-webkit-overflow-scrolling:touch}
.auth-box{margin:auto;max-height:calc(100dvh - 32px);overflow-y:auto;overscroll-behavior:contain}
@media (max-height:700px),(max-width:520px){
  .auth-gate{display:block}
  .auth-box{width:100%;max-width:430px;margin:0 auto;max-height:none;overflow:visible}
}

/* V1.1 B5 — zone compte utilisateur */
.top-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:12px;
}
.account-box{
  display:flex;
  align-items:center;
  gap:9px;
  min-height:42px;
  padding:5px 6px 5px 12px;
  border:1px solid var(--line,#dfe8ec);
  border-radius:12px;
  background:#f8fbfc;
}
.account-box[hidden]{display:none!important}
.account-icon{
  width:26px;
  height:26px;
  border-radius:50%;
  display:grid;
  place-items:center;
  background:#e3f5f7;
  color:#078b9d;
  font-size:.55rem;
  flex:0 0 auto;
}
.user-chip{
  display:block;
  max-width:180px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:var(--navy,#071b38);
  font-size:.88rem;
  font-weight:800;
  line-height:1;
}
.logout-btn{
  min-height:32px;
  padding:7px 10px;
  border-radius:8px;
  background:#fff;
  color:#087f91;
  border:1px solid #8fcbd1;
  font-size:.76rem;
  font-weight:750;
}
@media(max-width:900px){
  .top-actions{display:flex}
  .account-box{padding-left:8px}
  .user-chip{max-width:120px}
  #connectStravaTop{display:none}
}
@media(max-width:520px){
  .account-box{gap:6px}
  .user-chip{max-width:85px;font-size:.78rem}
  .logout-btn{padding:6px 8px;font-size:.7rem}
}

/* V1.1 B8 — classement */
.leaderboard-card{scroll-margin-top:20px}
.leaderboard-sub{margin:-12px 0 0;color:var(--muted);font-size:.86rem}
.leaderboard-head,.leaderboard-row{
  display:grid;
  grid-template-columns:54px minmax(150px,1fr) 110px 130px 120px;
  gap:12px;
  align-items:center;
}
.leaderboard-head{
  padding:10px 12px;
  border-bottom:1px solid var(--line);
  color:var(--muted);
  font-size:.73rem;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.05em;
}
.leaderboard-row{
  padding:14px 12px;
  border-bottom:1px solid var(--line);
}
.leaderboard-row:last-child{border-bottom:0}
.leaderboard-rank{
  width:34px;height:34px;border-radius:50%;
  display:grid;place-items:center;
  background:var(--pale);color:#087f91;font-weight:900;
}
.leaderboard-row.top-1 .leaderboard-rank,
.leaderboard-row.top-2 .leaderboard-rank,
.leaderboard-row.top-3 .leaderboard-rank{
  background:#078f9f;color:#fff;
}
.leaderboard-name{font-weight:850;color:var(--navy)}
.leaderboard-me{display:inline-block;margin-left:7px;padding:2px 7px;border-radius:999px;background:var(--pale);color:#087f91;font-size:.68rem;font-weight:800}
.leaderboard-number{font-weight:900;font-size:1.05rem}
.leaderboard-muted{color:var(--muted);font-size:.85rem}
@media(max-width:700px){
  .leaderboard-head{display:none}
  .leaderboard-row{
    grid-template-columns:42px 1fr auto;
    gap:8px 10px;
  }
  .leaderboard-row .lb-km,.leaderboard-row .lb-elev{
    grid-column:2;
    font-size:.78rem;
  }
  .leaderboard-row .lb-elev{grid-column:3}
}

/* V1.1 B14 — préparation review Strava */
.strava-review-card p{color:var(--muted);line-height:1.55;max-width:900px}
.strava-review-card strong{color:#FC5200}
.strava-btn{
  background:#FC5200!important;
  color:#fff!important;
  min-height:48px;
  border-radius:6px;
  font-weight:800;
  letter-spacing:.01em;
}
.strava-btn:hover{filter:brightness(.96)}
.strava-card .outline.wide{border-color:#FC5200;color:#FC5200}
.strava-card .outline.wide:hover{background:#fff5f0}
.strava-title{color:#FC5200!important}

/* V1.1 B16 — identité 200 à la ronde + couronne classement */
.logo-round{
  width:116px;
  height:116px;
  border-radius:50%;
  display:grid;
  place-items:center;
  overflow:hidden;
  background:#fff;
  border:3px solid var(--teal,#0698aa);
  box-shadow:0 8px 22px rgba(7,27,56,.12);
  flex:0 0 auto;
}
.logo-round img{
  width:94px!important;
  height:94px!important;
  object-fit:contain!important;
  margin:0!important;
  align-self:auto!important;
}
.association-subtitle{
  margin:0;
  color:var(--teal,#0698aa);
  font-size:1.28rem!important;
  font-weight:850!important;
  letter-spacing:.01em;
}
.association-subtitle a{
  color:inherit;
  font-weight:950;
  text-decoration:none;
  border-bottom:2px solid currentColor;
}
.association-subtitle a:hover{
  opacity:.78;
}
.leaderboard-crown{
  margin-left:7px;
  font-size:1rem;
  vertical-align:middle;
  filter:drop-shadow(0 2px 2px rgba(0,0,0,.10));
}
@media(max-width:900px){
  .logo-round{width:82px;height:82px}
  .logo-round img{width:66px!important;height:66px!important}
  .association-subtitle{font-size:.95rem!important}
}
@media(max-width:520px){
  .logo-round{width:68px;height:68px}
  .logo-round img{width:54px!important;height:54px!important}
  .association-subtitle{font-size:.78rem!important}
}

/* V1.1 B17 — logo complet, masque circulaire uniquement */
.logo-round{
  width:116px;
  height:116px;
  border-radius:50%;
  overflow:hidden;
  padding:0;
  background:#fff;
  border:3px solid var(--teal,#0698aa);
  box-shadow:0 8px 22px rgba(7,27,56,.12);
  display:block;
  flex:0 0 116px;
}
.logo-round img{
  display:block!important;
  width:100%!important;
  height:100%!important;
  max-width:none!important;
  object-fit:contain!important;
  object-position:center!important;
  margin:0!important;
  padding:0!important;
  border-radius:0!important;
}
@media(max-width:900px){
  .logo-round{width:82px;height:82px;flex-basis:82px}
  .logo-round img{width:100%!important;height:100%!important}
}
@media(max-width:520px){
  .logo-round{width:68px;height:68px;flex-basis:68px}
  .logo-round img{width:100%!important;height:100%!important}
}

/* V1.1 B18 — profil utilisateur */
.profile-card{scroll-margin-top:20px}
.profile-sub{margin:-12px 0 0;color:var(--muted);font-size:.86rem}
.profile-layout{
  display:grid;
  grid-template-columns:220px minmax(0,1fr);
  gap:28px;
  align-items:start;
}
.avatar-editor{text-align:center}
.profile-avatar-preview{
  width:150px;height:150px;border-radius:50%;
  margin:0 auto 14px;
  display:grid;place-items:center;
  overflow:hidden;
  background:linear-gradient(145deg,#eefcfd,#dff5f7);
  border:3px solid var(--teal);
  box-shadow:0 8px 20px rgba(7,27,56,.10);
  font-size:3.2rem;
}
.profile-avatar-preview img{
  width:100%;height:100%;object-fit:cover;display:block
}
.avatar-upload-btn{
  display:inline-block;
  border-radius:9px;
  padding:10px 13px;
  background:var(--navy);
  color:#fff;
  font-size:.82rem;
  font-weight:800;
  cursor:pointer;
}
.avatar-editor .outline{margin-top:8px}
.profile-help{
  color:var(--muted);
  font-size:.75rem;
  line-height:1.4;
  margin:10px auto 0;
  max-width:190px;
}
.profile-form{max-width:520px}
.profile-form label{
  display:block;
  font-size:.82rem;
  font-weight:800;
  margin:0 0 16px;
}
.profile-form input,
.profile-form select{
  display:block;
  width:100%;
  margin-top:7px;
  padding:12px;
  border:1px solid #c7d7dc;
  border-radius:9px;
  background:#fff;
  color:var(--navy);
}
.profile-message{
  min-height:20px;
  margin-top:10px;
  font-size:.82rem;
  color:#087f91;
  font-weight:700;
}
.leaderboard-avatar{
  width:34px;height:34px;border-radius:50%;
  object-fit:cover;
  border:2px solid #dcebed;
  vertical-align:middle;
  margin-right:9px;
}
.leaderboard-avatar-fallback{
  width:34px;height:34px;border-radius:50%;
  display:inline-grid;place-items:center;
  background:var(--pale);
  color:#087f91;
  margin-right:9px;
  vertical-align:middle;
  font-size:.9rem;
}
@media(max-width:700px){
  .profile-layout{grid-template-columns:1fr}
  .avatar-editor{text-align:left}
  .profile-avatar-preview{margin-left:0}
  .profile-help{margin-left:0}
}

/* V1.1 B21 — avatar du compte dans l'en-tête */
.account-avatar{
  width:42px;height:42px;border-radius:50%;
  object-fit:cover;display:block;
  border:2px solid var(--teal,#0698aa);
  box-shadow:0 4px 12px rgba(7,27,56,.12);
  flex:0 0 42px;
}
.account-avatar-fallback{
  width:42px;height:42px;border-radius:50%;
  display:grid;place-items:center;
  background:var(--pale,#e9f7f8);
  color:var(--teal,#0698aa);
  border:2px solid var(--teal,#0698aa);
  font-size:1.1rem;
  flex:0 0 42px;
}

/* V1.1 B24 — statistiques utilisateur */
.user-challenge-stats{scroll-margin-top:20px}
.stats-detail-sub{margin:-12px 0 0;color:var(--muted);font-size:.86rem}
.challenge-stats-table{border:1px solid var(--line);border-radius:12px;overflow:hidden}
.challenge-stats-head,.challenge-stats-row{display:grid;grid-template-columns:minmax(230px,1.5fr) 130px 130px 120px;gap:12px;align-items:center}
.challenge-stats-head{background:#f4fafb;padding:10px 14px;color:var(--muted);font-size:.73rem;font-weight:850;text-transform:uppercase}
.challenge-stats-row{padding:16px 14px;border-top:1px solid var(--line)}
.challenge-stats-row>div strong{display:block;color:var(--navy)}
.challenge-stats-row small{display:block;color:var(--muted);margin-top:4px;line-height:1.35}
.challenge-stats-row>strong{font-size:1.18rem;color:#078b9d}
.stats-footnote{margin:12px 0 0;color:var(--muted);font-size:.78rem}
@media(max-width:700px){
  .challenge-stats-head{display:none}
  .challenge-stats-row{grid-template-columns:1fr 1fr;gap:8px}
  .challenge-stats-row>div{grid-column:1/3;margin-bottom:4px}
  .challenge-stats-row>strong{grid-column:1/3}
}

/* V1.1 B25 — classement Eddington */
.eddington-leaderboard-head,
.eddington-leaderboard-row{
  display:grid;
  grid-template-columns:54px minmax(170px,1fr) 130px 150px;
  gap:12px;
  align-items:center;
}
.eddington-leaderboard-head{
  padding:10px 12px;
  border-bottom:1px solid var(--line);
  color:var(--muted);
  font-size:.73rem;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.05em;
}
.eddington-leaderboard-row{
  padding:14px 12px;
  border-bottom:1px solid var(--line);
}
.eddington-leaderboard-row:last-child{border-bottom:0}
.eddington-score{
  font-weight:950;
  color:#078b9d;
  font-size:1.1rem;
}
.eddington-rides{
  color:var(--muted);
  font-size:.84rem;
}
@media(max-width:700px){
  .eddington-leaderboard-head{display:none}
  .eddington-leaderboard-row{
    grid-template-columns:42px 1fr auto;
    gap:8px 10px;
  }
  .eddington-rides{
    grid-column:2/4;
  }
}

/* V1.1 B26 — explication des challenges */
.challenge-info-card{display:flex;gap:24px;align-items:flex-start;scroll-margin-top:20px}
.challenge-info-badge{
  width:82px;height:82px;min-width:82px;border-radius:50%;
  display:grid;place-items:center;background:var(--navy);color:#fff;
  font-size:1.55rem;font-weight:950;border:4px solid var(--teal);
  box-shadow:0 8px 20px rgba(7,27,56,.12)
}
.eddington-badge{font-size:2rem}
.challenge-info-content{flex:1}
.challenge-info-content h2{margin-top:4px}
.challenge-lead{font-size:1rem;font-weight:700;color:var(--navy);line-height:1.55}
.challenge-info-content p{line-height:1.65}
.challenge-rules{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:18px 0}
.challenge-rules div{background:#f4fafb;border:1px solid var(--line);border-radius:10px;padding:14px;text-align:center}
.challenge-rules strong{display:block;font-size:1.15rem;color:#078b9d}
.challenge-rules span{display:block;margin-top:4px;color:var(--muted);font-size:.76rem}
@media(max-width:700px){
 .challenge-info-card{display:block}
 .challenge-info-badge{width:64px;height:64px;min-width:64px;margin-bottom:15px}
 .challenge-rules{grid-template-columns:1fr}
}
