:root{
  /* Palette officielle Powerformer, relevee sur les supports de marque */
  --green:#49645B;        /* vert Powerformer : logo, titres */
  --green-dark:#33473F;   /* variante foncee : survols, textes appuyes */
  --green-light:#6E827A;  /* variante claire : traits, icones */
  --panel:#E9E9E4;        /* panneau clair des supports imprimes */
  --cream:#F6F6F2;        /* fond de page */
  --text:#2B3730; --text-soft:#5B6961; --border:#DDDDD6; --white:#FFFFFF; --gold:#D9A441;
}
*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth;}
body{font-family:'Inter',sans-serif; background:var(--cream); color:var(--text); line-height:1.6; overflow-x:hidden;}
h1,h2,h3{font-family:'Cormorant Garamond',Georgia,serif; font-weight:600; letter-spacing:-.01em;}
.display{font-family:'Cormorant Garamond',Georgia,serif;}
.wrap{max-width:1120px; margin:0 auto; padding:0 24px;}
a{color:inherit; text-decoration:none;}
img{max-width:100%; display:block;}

/* Header */
header{position:sticky; top:0; z-index:50; background:rgba(248,245,240,.92); backdrop-filter:blur(8px); border-bottom:1px solid var(--border);}
header .wrap{display:flex; align-items:center; justify-content:space-between; height:72px;}
.logo{display:flex; align-items:center; gap:10px; font-family:'Nunito',sans-serif; font-weight:800; font-size:20px; color:var(--green);}
.logo img{width:36px; height:36px; border-radius:10px; object-fit:cover;}
nav.main-nav{display:flex; gap:32px; font-size:14px; font-weight:600; color:var(--text-soft);}
nav.main-nav a:hover, nav.main-nav a.active{color:var(--green);}
.header-actions{display:flex; align-items:center; gap:16px;}
.menu-toggle{display:none; background:none; border:0; font-size:24px; color:var(--green); cursor:pointer;}

.btn{display:inline-flex; align-items:center; gap:8px; background:var(--green); color:#fff; padding:12px 22px; border-radius:30px; font-weight:700; font-size:14px; transition:background .2s, transform .2s; border:none; cursor:pointer;}
.btn:hover{background:var(--green-dark); transform:translateY(-1px);}
.btn.ghost{background:transparent; border:1.5px solid var(--green); color:var(--green);}
.btn.ghost:hover{background:var(--green); color:#fff;}
.btn.small{padding:9px 16px; font-size:13px;}

/* Page hero (sub-pages) */
.page-hero{padding:64px 0 48px; text-align:center; background:linear-gradient(180deg, #EEF1EA 0%, var(--cream) 100%);}
.page-hero .eyebrow{margin-bottom:14px;}
.page-hero h1{font-size:38px; font-weight:800; margin-bottom:12px;}
.page-hero p{color:var(--text-soft); font-size:16px; max-width:520px; margin:0 auto;}
.breadcrumb{font-size:13px; color:var(--text-soft); margin-bottom:16px;}
.breadcrumb a:hover{color:var(--green);}

.eyebrow{display:inline-block; font-size:12px; font-weight:700; letter-spacing:1.5px; text-transform:uppercase; color:var(--green); background:#E9EFE6; padding:6px 14px; border-radius:20px;}

section{padding:88px 0;}
.section-head{max-width:560px; margin:0 auto 48px; text-align:center;}
.section-head .eyebrow{margin-bottom:14px;}
.section-head h2{font-size:32px; font-weight:800; margin-bottom:12px;}
.section-head p{color:var(--text-soft); font-size:16px;}

/* Hero (home) */
.hero{padding:88px 0 64px; position:relative; overflow:hidden;}
/* Photo du studio fournie par le client : elle est volontairement delavee
   (concue comme fond d'impression), on l'utilise donc telle quelle en fond. */
.hero::before{content:''; position:absolute; inset:0; z-index:0;
  background:url('/img/studio-2.jpg') center 38% / cover no-repeat; opacity:.55;
  -webkit-mask-image:linear-gradient(180deg,#000 0%,#000 55%,transparent 100%);
  mask-image:linear-gradient(180deg,#000 0%,#000 55%,transparent 100%);}
.hero .wrap{position:relative; z-index:1;}
.hero .wrap{display:grid; grid-template-columns:1.1fr .9fr; gap:56px; align-items:center;}
.hero h1{font-size:44px; font-weight:800; line-height:1.15; color:var(--text); margin-bottom:18px;}
.hero h1 span{color:var(--green);}
.hero p{font-size:17px; color:var(--text-soft); max-width:480px; margin-bottom:32px;}
.hero-actions{display:flex; gap:14px; flex-wrap:wrap;}
.hero-visual{position:relative; aspect-ratio:4/5; border-radius:28px; overflow:hidden; background:linear-gradient(160deg, var(--green) 0%, #2f4437 60%, #1c281f 100%); display:flex; align-items:flex-end; padding:32px; box-shadow:0 30px 60px -20px rgba(43,71,57,.35);}
.hero-visual .brand-mark{position:absolute; top:36px; right:36px; width:76px; height:76px; border-radius:16px; box-shadow:0 8px 24px rgba(0,0,0,.25);}
.hero-card{background:rgba(255,255,255,.12); backdrop-filter:blur(6px); border:1px solid rgba(255,255,255,.25); border-radius:16px; padding:18px 20px; color:#fff; width:100%;}
.hero-card b{display:block; font-size:15px; margin-bottom:2px;}
.hero-card span{font-size:13px; opacity:.8;}

/* Stats */
.stats{padding:36px 0; border-top:1px solid var(--border); border-bottom:1px solid var(--border);}
.stats .wrap{display:grid; grid-template-columns:repeat(4,1fr); gap:24px; text-align:center;}
.stats b{display:block; font-family:'Nunito',sans-serif; font-size:28px; font-weight:800; color:var(--green);}
.stats span{font-size:13px; color:var(--text-soft);}

/* Feature cards */
.features{display:grid; grid-template-columns:repeat(3,1fr); gap:24px;}
.feature{background:#fff; border:1px solid var(--border); border-radius:18px; padding:28px; transition:transform .2s, box-shadow .2s;}
.feature:hover{transform:translateY(-3px); box-shadow:0 16px 32px -16px rgba(43,71,57,.25);}
.feature .ic{width:48px; height:48px; border-radius:12px; background:#E9EFE6; display:flex; align-items:center; justify-content:center; font-size:22px; margin-bottom:16px;}
.feature h3{font-size:17px; font-weight:700; margin-bottom:8px;}
.feature p{font-size:14px; color:var(--text-soft);}

/* Instructor cards */
.team-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:28px;}
.team-card{background:#fff; border:1px solid var(--border); border-radius:20px; overflow:hidden; text-align:center;}
.team-photo{height:220px; background:linear-gradient(160deg, var(--green-light), var(--green)); display:flex; align-items:center; justify-content:center; font-size:56px; color:#fff;}
.team-info{padding:22px;}
.team-info h3{font-size:18px; font-weight:700; margin-bottom:4px;}
.team-info .role{font-size:13px; color:var(--green); font-weight:600; margin-bottom:10px;}
.team-info p{font-size:14px; color:var(--text-soft);}

/* Testimonials */
.testimonials{background:#fff;}
.testi-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:24px;}
.testi{background:var(--cream); border-radius:18px; padding:26px; border:1px solid var(--border);}
.testi .stars{color:var(--gold); font-size:14px; margin-bottom:12px; letter-spacing:2px;}
.testi p{font-size:14px; color:var(--text); margin-bottom:16px; font-style:italic;}
.testi .who{display:flex; align-items:center; gap:10px;}
.testi .avatar{width:36px; height:36px; border-radius:50%; background:var(--green); color:#fff; display:flex; align-items:center; justify-content:center; font-weight:700; font-size:13px;}
.testi .who b{font-size:13px; display:block;}
.testi .who span{font-size:12px; color:var(--text-soft);}

/* Plans */
.plans{background:#fff;}
.plan-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:24px;}
.plan{border:1px solid var(--border); border-radius:20px; padding:32px 28px; background:var(--cream); position:relative;}
.plan.featured{background:var(--green); color:#fff; transform:scale(1.03); box-shadow:0 24px 48px -16px rgba(43,71,57,.4);}
.plan.featured .plan-price, .plan.featured h3{color:#fff;}
.plan.featured .plan-sub{color:rgba(255,255,255,.75);}
.badge{position:absolute; top:-12px; left:50%; transform:translateX(-50%); background:var(--gold); color:#2B3730; font-size:11px; font-weight:800; padding:5px 14px; border-radius:20px; letter-spacing:.5px;}
.plan h3{font-size:18px; font-weight:700; margin-bottom:6px;}
.plan-sub{font-size:13px; color:var(--text-soft); margin-bottom:18px;}
.plan-price{font-family:'Nunito',sans-serif; font-size:36px; font-weight:800; color:var(--green); margin-bottom:4px;}
.plan-price small{font-size:14px; font-weight:600;}
.plan-credits{font-size:13px; margin-bottom:22px; opacity:.85;}
.plan ul{list-style:none; font-size:14px;}
.plan li{padding:7px 0; display:flex; gap:8px; align-items:flex-start;}
.plan li::before{content:"✓"; font-weight:800; color:var(--green);}
.plan.featured li::before{color:#fff;}

/* FAQ */
.faq{max-width:720px; margin:0 auto;}
.faq-item{border-bottom:1px solid var(--border); padding:20px 0;}
.faq-item summary{cursor:pointer; font-weight:700; font-size:15px; list-style:none; display:flex; justify-content:space-between; align-items:center;}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-item summary::after{content:"+"; font-size:20px; color:var(--green); font-weight:400;}
.faq-item[open] summary::after{content:"−";}
.faq-item p{font-size:14px; color:var(--text-soft); margin-top:12px;}

/* CTA band */
.cta-band{background:var(--green); color:#fff; border-radius:28px; margin:0 24px; padding:64px 48px; text-align:center;}
.cta-band .wrap{padding:0; max-width:640px;}
.cta-band h2{font-size:30px; font-weight:800; margin-bottom:14px;}
.cta-band p{opacity:.85; margin-bottom:28px;}
.store-badges{display:flex; gap:14px; justify-content:center; flex-wrap:wrap;}
.store-badge{display:flex; align-items:center; gap:10px; background:#fff; color:var(--text); padding:12px 20px; border-radius:14px; font-weight:700; font-size:14px;}

/* Gallery */
.gallery-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:16px;}
.gallery-item{aspect-ratio:1; border-radius:16px; background:linear-gradient(160deg, var(--green-light), var(--green-dark)); display:flex; align-items:center; justify-content:center; font-size:32px; color:rgba(255,255,255,.85);}

/* Contact */
.contact{display:grid; grid-template-columns:1fr 1fr; gap:48px; align-items:start;}
.info-card{background:#fff; border:1px solid var(--border); border-radius:16px; padding:20px 22px; display:flex; gap:14px; align-items:flex-start; margin-bottom:14px;}
.info-card .ic{font-size:20px;}
.info-card b{display:block; font-size:12px; text-transform:uppercase; letter-spacing:.5px; color:var(--text-soft); margin-bottom:3px;}
.info-card span{font-size:15px; font-weight:600;}
.map-box{border-radius:20px; overflow:hidden; border:1px solid var(--border); height:100%; min-height:320px;}
.map-box iframe{width:100%; height:100%; min-height:320px; border:0; display:block;}

.contact-form{background:#fff; border:1px solid var(--border); border-radius:20px; padding:32px;}
.contact-form label{display:block; font-size:13px; font-weight:600; margin-bottom:6px; color:var(--text);}
.contact-form input, .contact-form textarea{width:100%; padding:12px 14px; border:1px solid var(--border); border-radius:10px; font-family:inherit; font-size:14px; margin-bottom:18px; background:var(--cream);}
.contact-form textarea{resize:vertical; min-height:100px;}
.contact-form input:focus, .contact-form textarea:focus{outline:2px solid var(--green); outline-offset:1px;}

footer{border-top:1px solid var(--border); padding:48px 0 24px;}
footer .foot-grid{display:grid; grid-template-columns:1.6fr 1fr 1fr 1.2fr; gap:40px; margin-bottom:32px;}
footer .foot-logo{display:flex; align-items:center; gap:10px; font-family:'Nunito',sans-serif; font-weight:800; font-size:18px; color:var(--green); margin-bottom:12px;}
footer .foot-logo img{width:32px; height:32px; border-radius:8px;}
footer p.desc{font-size:13px; color:var(--text-soft); max-width:280px;}
footer h4{font-size:13px; text-transform:uppercase; letter-spacing:.5px; margin-bottom:14px; color:var(--text);}
footer ul{list-style:none; font-size:14px; color:var(--text-soft);}
footer li{margin-bottom:10px;}
footer li a:hover{color:var(--green);}
.foot-bottom{display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:16px; padding-top:24px; border-top:1px solid var(--border);}
.foot-copy{font-size:13px; color:var(--text-soft);}

@media (max-width: 860px){
  nav.main-nav{position:fixed; top:72px; left:0; right:0; background:var(--cream); flex-direction:column; padding:20px 24px; gap:0; border-bottom:1px solid var(--border); transform:translateY(-150%); transition:transform .25s; z-index:40;}
  nav.main-nav.open{transform:translateY(0);}
  nav.main-nav a{padding:14px 0; border-bottom:1px solid var(--border);}
  .menu-toggle{display:block;}
  .hero .wrap{grid-template-columns:1fr;}
  .hero h1{font-size:34px;}
  .stats .wrap{grid-template-columns:repeat(2,1fr); row-gap:20px;}
  .features{grid-template-columns:1fr;}
  .team-grid{grid-template-columns:1fr;}
  .testi-grid{grid-template-columns:1fr;}
  .plan-grid{grid-template-columns:1fr;}
  .plan.featured{transform:none;}
  .contact{grid-template-columns:1fr;}
  .gallery-grid{grid-template-columns:repeat(2,1fr);}
  footer .foot-grid{grid-template-columns:1fr;}
  section{padding:56px 0;}
}

:root{ color-scheme: light; }

/* ══════════════════════════════════════════════════════════
   ESPACE MEMBRE
   ══════════════════════════════════════════════════════════ */

/* Éléments partagés */
/* `display:flex` sur .member-strip/.guest-strip écrase le display:none
   implicite de l'attribut [hidden] — on le rétablit explicitement. */
[hidden]{display:none !important;}
.muted{color:var(--text-soft);}
.btn.block{width:100%; justify-content:center;}
.btn.ghost.danger{border-color:#C05B5B; color:#9E3030;}
.btn.ghost.danger:hover{background:#9E3030; border-color:#9E3030; color:#fff;}
.btn[disabled]{opacity:.45; cursor:not-allowed; transform:none;}
.linklike{background:none; border:0; padding:0; font:inherit; font-size:13px; font-weight:700; color:var(--green); cursor:pointer;}
.linklike:hover{text-decoration:underline;}
.account-dot{width:7px; height:7px; border-radius:50%; background:#8FD694;}

.field{margin-bottom:18px;}
.field label{display:block; font-size:13px; font-weight:600; margin-bottom:6px;}
.field input, .field textarea{width:100%; padding:12px 14px; border:1px solid var(--border); border-radius:10px; font-family:inherit; font-size:14px; background:var(--cream); color:var(--text);}
.field input:focus, .field textarea:focus{outline:2px solid var(--green); outline-offset:1px;}

/* Champ mot de passe avec bouton oeil (posé par main.js) */
.field-password{position:relative; display:block;}
.field-password input{padding-right:46px;}
.pw-toggle{position:absolute; top:50%; right:8px; transform:translateY(-50%);
  display:inline-flex; align-items:center; justify-content:center;
  width:32px; height:32px; padding:0; border:0; border-radius:8px;
  background:transparent; color:var(--text-soft); cursor:pointer;}
.pw-toggle:hover{background:rgba(0,0,0,.05); color:var(--text);}
.pw-toggle:focus-visible{outline:2px solid var(--green); outline-offset:1px;}

.form-error{background:#FCE4E4; color:#9E3030; font-size:13px; padding:10px 14px; border-radius:10px; margin-bottom:16px;}
.phone-line{display:flex; align-items:center; gap:10px; flex-wrap:wrap; min-height:44px;}
.phone-value{font-weight:600;}
.phone-actions{display:flex; align-items:center; gap:16px; flex-wrap:wrap;}
.linklike:disabled{opacity:.55; cursor:default;}
.note{font-size:12.5px; color:var(--text-soft); line-height:1.55; margin-top:16px;}
.note.small{margin-top:12px; text-align:center;}

.pill{display:inline-flex; align-items:center; font-size:12px; font-weight:700; padding:5px 11px; border-radius:20px; background:#EDE7E0; color:var(--text-soft); white-space:nowrap;}
.pill.ok{background:#E4F0E2; color:#2F6B3A;}
.pill.warn{background:#FBE9DC; color:#9A5B22;}
.pill.ko{background:#FCE4E4; color:#9E3030;}

.empty-state{text-align:center; padding:56px 24px; background:#fff; border:1px dashed var(--border); border-radius:18px;}
.empty-state.small{padding:36px 20px;}
.empty-icon{font-size:34px; margin-bottom:12px;}
.empty-state b{display:block; font-size:16px; margin-bottom:6px;}
.empty-state p{font-size:14px; color:var(--text-soft);}

@keyframes pf-pulse{0%,100%{opacity:.55;} 50%{opacity:.9;}}
.skeleton-card, .skeleton-row{background:#EFEAE4; border-radius:14px; animation:pf-pulse 1.4s ease-in-out infinite;}
.skeleton-card{height:88px; margin-bottom:12px;}
.skeleton-row{height:58px; margin-bottom:10px;}

/* Notifications */
#pf-toast{position:fixed; bottom:24px; left:50%; transform:translateX(-50%); z-index:100; display:flex; flex-direction:column; gap:10px; align-items:center; pointer-events:none;}
@keyframes pf-toast-in{from{opacity:0; transform:translateY(12px);} to{opacity:1; transform:none;}}
.toast{background:var(--green); color:#fff; font-size:14px; font-weight:600; padding:13px 22px; border-radius:30px; box-shadow:0 12px 28px -10px rgba(43,71,57,.5); animation:pf-toast-in .22s ease; transition:opacity .35s, transform .35s;}
.toast.error{background:#9E3030;}
.toast.out{opacity:0; transform:translateY(8px);}

/* ── Connexion / inscription ───────────────────────────── */
.auth-section{padding:72px 0 96px;}
.auth-wrap{display:grid; grid-template-columns:1fr 440px; gap:64px; align-items:center;}
.auth-side h1{font-size:34px; font-weight:800; line-height:1.2; margin:14px 0 14px;}
.auth-side p{color:var(--text-soft); max-width:420px; margin-bottom:26px;}
.auth-perks{list-style:none; display:grid; gap:12px;}
.auth-perks li{position:relative; padding-left:28px; font-size:14.5px; color:var(--text);}
.auth-perks li::before{content:"✓"; position:absolute; left:0; top:-1px; width:19px; height:19px; border-radius:50%; background:#E9EFE6; color:var(--green); font-size:11px; font-weight:800; display:flex; align-items:center; justify-content:center;}

.auth-card{background:#fff; border:1px solid var(--border); border-radius:22px; padding:32px; box-shadow:0 24px 48px -28px rgba(43,71,57,.3);}
.tabs{display:flex; background:var(--cream); border-radius:12px; padding:4px; margin-bottom:26px;}
.tab{flex:1; background:none; border:0; padding:11px; border-radius:9px; font:inherit; font-size:14px; font-weight:700; color:var(--text-soft); cursor:pointer; transition:background .18s, color .18s;}
.tab.active{background:#fff; color:var(--green); box-shadow:0 2px 8px -2px rgba(43,71,57,.18);}
.auth-switch{text-align:center; font-size:13px; color:var(--text-soft); margin-top:20px; display:flex; gap:6px; justify-content:center;}

/* ── Planning ──────────────────────────────────────────── */
.planning-section{padding:48px 0 88px;}
.member-strip{display:flex; align-items:center; gap:32px; background:var(--green); color:#fff; border-radius:18px; padding:22px 28px; margin-bottom:28px; flex-wrap:wrap;}
.member-strip-item{display:flex; flex-direction:column;}
.member-strip-item b{font-family:'Nunito',sans-serif; font-size:22px; font-weight:800;}
.member-strip-item span{font-size:12px; opacity:.8;}
.member-strip .btn.ghost{margin-left:auto; border-color:rgba(255,255,255,.6); color:#fff;}
.member-strip .btn.ghost:hover{background:#fff; color:var(--green);}

.guest-strip{display:flex; align-items:center; justify-content:space-between; gap:24px; background:#fff; border:1px solid var(--border); border-radius:18px; padding:22px 26px; margin-bottom:28px; flex-wrap:wrap;}
.guest-strip b{display:block; font-size:16px; margin-bottom:3px;}
.guest-strip span{font-size:14px; color:var(--text-soft);}
.guest-actions{display:flex; gap:10px; flex-wrap:wrap;}

.day-tabs{display:flex; gap:10px; margin-bottom:28px; overflow-x:auto; padding-bottom:4px;}
.day-tab{flex:0 0 auto; min-width:76px; background:#fff; border:1px solid var(--border); border-radius:14px; padding:12px 8px; cursor:pointer; font:inherit; text-align:center; transition:border-color .18s, background .18s, transform .18s;}
.day-tab:hover{border-color:var(--green-light);}
.day-tab.active{background:var(--green); border-color:var(--green); color:#fff; transform:translateY(-2px);}
.day-tab .day-name{display:block; font-size:12px; font-weight:600; opacity:.75;}
.day-tab .day-num{display:block; font-family:'Nunito',sans-serif; font-size:20px; font-weight:800; margin-top:2px;}

.list-date{font-family:'Nunito',sans-serif; font-size:18px; font-weight:800; margin-bottom:16px; text-transform:capitalize;}
.class-list{display:flex; flex-direction:column; gap:12px;}
.class-row{display:grid; grid-template-columns:88px 1fr auto; gap:20px; align-items:center; background:#fff; border:1px solid var(--border); border-radius:16px; padding:18px 22px; transition:border-color .18s, box-shadow .18s;}
.class-row:hover{border-color:var(--green-light); box-shadow:0 10px 24px -18px rgba(43,71,57,.4);}
.class-row.is-booked{border-color:#B9D3BC; background:#F6FAF5;}
.class-time{font-family:'Nunito',sans-serif; font-size:14px; font-weight:800; color:var(--green); line-height:1.35;}
.class-main h3{font-size:16px; font-weight:700; margin-bottom:3px;}
.class-meta{font-size:13px; color:var(--text-soft);}
.class-side{display:flex; align-items:center; gap:12px;}

/* ── Compte ────────────────────────────────────────────── */
.account-section{padding:48px 0 88px;}
.account-head{display:flex; align-items:center; justify-content:space-between; gap:24px; margin-bottom:32px; flex-wrap:wrap;}
.account-id{display:flex; align-items:center; gap:18px;}
.avatar-lg{width:60px; height:60px; border-radius:18px; background:var(--green); color:#fff; display:flex; align-items:center; justify-content:center; font-family:'Nunito',sans-serif; font-size:21px; font-weight:800;}
.account-head h1{font-size:27px; font-weight:800;}
.account-head-actions{display:flex; gap:10px; flex-wrap:wrap;}

.kpi-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:18px; margin-bottom:32px;}
.kpi{background:#fff; border:1px solid var(--border); border-radius:18px; padding:22px;}
.kpi-label{display:block; font-size:12px; font-weight:600; text-transform:uppercase; letter-spacing:.6px; color:var(--text-soft); margin-bottom:8px;}
.kpi-value{display:block; font-family:'Nunito',sans-serif; font-size:28px; font-weight:800; color:var(--green); line-height:1.15;}
.kpi-sub{display:block; font-size:12.5px; color:var(--text-soft); margin-top:5px;}
.kpi-sub.ok{color:#2F6B3A; font-weight:600;}
.kpi-sub.warn{color:#9A5B22; font-weight:600;}
.kpi-sub a{color:var(--green); font-weight:600;}
.kpi-sub a:hover{text-decoration:underline;}

.account-grid{display:grid; grid-template-columns:1.35fr 1fr; gap:24px; margin-bottom:24px;}
.panel{background:#fff; border:1px solid var(--border); border-radius:20px; padding:26px 28px; margin-bottom:24px;}
.panel:last-child{margin-bottom:0;}
.account-grid .panel{margin-bottom:0;}
.panel-head{display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:20px;}
.panel-head h2{font-size:18px; font-weight:800;}

.row-item{display:flex; align-items:center; justify-content:space-between; gap:18px; padding:15px 0; border-bottom:1px solid var(--border);}
.row-item:last-child{border-bottom:0; padding-bottom:0;}
.row-item:first-child{padding-top:0;}
.row-main b{display:block; font-size:15px; margin-bottom:2px;}
.row-main .muted{font-size:13px;}
.row-side{display:flex; align-items:center; gap:12px; flex-shrink:0;}
.amount{font-family:'Nunito',sans-serif; font-size:17px; font-weight:800; color:var(--green);}

/* ── Abonnement / paiement ─────────────────────────────── */
.checkout-section{padding:48px 0 88px;}
.checkout-grid{display:grid; grid-template-columns:1fr 400px; gap:28px; align-items:start;}
.checkout-side{position:sticky; top:96px;}

.plan-options, .method-options{display:flex; flex-direction:column; gap:12px;}
.plan-family{display:flex; flex-direction:column; gap:10px; margin-bottom:22px;}
.plan-family:last-child{margin-bottom:0;}
.plan-family h3{font-family:'Nunito',sans-serif; font-size:13px; font-weight:800; text-transform:uppercase; letter-spacing:.8px; color:var(--green); padding-bottom:6px; border-bottom:1px solid var(--border);}
.plan-option, .method{display:flex; align-items:center; gap:14px; border:1.5px solid var(--border); border-radius:14px; padding:16px 18px; cursor:pointer; transition:border-color .18s, background .18s;}
.plan-option:hover, .method:hover{border-color:var(--green-light);}
.plan-option.selected, .method:has(input:checked){border-color:var(--green); background:#F4F8F2;}
.plan-option input, .method input{accent-color:var(--green); width:18px; height:18px; flex-shrink:0;}
.plan-option-body, .method-body{flex:1; display:flex; flex-direction:column;}
.plan-option-body b, .method-body b{font-size:15px; margin-bottom:2px;}
.plan-option-body .muted, .method-body span{font-size:13px; color:var(--text-soft);}
.plan-option-price{font-family:'Nunito',sans-serif; font-size:19px; font-weight:800; color:var(--green); white-space:nowrap;}
.plan-option-price s{font-size:13px; font-weight:600; margin-right:5px;}

/* Panier multi-packs */
.cart-list{margin-bottom:8px;}
.cart-empty{font-size:13.5px; color:var(--text-soft); background:var(--cream); border:1px dashed var(--border); border-radius:12px; padding:18px; text-align:center;}
.cart-item{display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 0; border-bottom:1px solid var(--border);}
.cart-item-main{min-width:0;}
.cart-item-main b{display:block; font-size:13.5px; margin-bottom:2px;}
.cart-item-main .muted{font-size:12.5px;}
.cart-item-side{display:flex; align-items:center; gap:10px; flex-shrink:0;}
.cart-item-side b{font-family:'Nunito',sans-serif; font-size:15px; font-weight:800; color:var(--green);}
.cart-remove{width:24px; height:24px; border-radius:50%; border:1px solid var(--border); background:#fff; color:var(--text-soft); font-size:15px; line-height:1; cursor:pointer; transition:background .18s, color .18s, border-color .18s;}
.cart-remove:hover{background:#9E3030; border-color:#9E3030; color:#fff;}

/* Packs du membre */
.packs-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:16px;}
.pack-tile{background:var(--cream); border:1px solid var(--border); border-radius:16px; padding:18px 20px;}
.pack-tile.inactive{opacity:.6;}
.pack-tile-head{display:flex; align-items:flex-start; justify-content:space-between; gap:10px; margin-bottom:14px;}
.pack-tile-head b{font-size:14px; line-height:1.35;}
.pack-tile-count{display:flex; align-items:baseline; gap:7px; margin-bottom:10px;}
.pack-tile-count b{font-family:'Nunito',sans-serif; font-size:30px; font-weight:800; color:var(--green); line-height:1;}
.pack-tile-count span{font-size:12.5px; color:var(--text-soft);}
.pack-bar{height:6px; border-radius:4px; background:#E3DCD4; overflow:hidden; margin-bottom:12px;}
.pack-bar span{display:block; height:100%; border-radius:4px; background:var(--green);}
.pack-tile-foot{font-size:12.5px; color:var(--text-soft);}

.summary-row{display:flex; justify-content:space-between; align-items:center; gap:16px; padding:11px 0; font-size:14px; border-bottom:1px solid var(--border);}
.summary-row span{color:var(--text-soft);}
.summary-row b{font-weight:700; text-align:right;}
.summary-row.discount b{color:#2F6B3A;}
.summary-total{display:flex; justify-content:space-between; align-items:center; padding:18px 0 22px; font-size:15px;}
.summary-total span{font-weight:600;}
.summary-total b{font-family:'Nunito',sans-serif; font-size:28px; font-weight:800; color:var(--green);}

.coupon{padding:20px 0 4px;}
.coupon label{display:block; font-size:13px; font-weight:600; margin-bottom:8px;}
.coupon-row{display:flex; gap:10px;}
.coupon-row input{flex:1; min-width:0; padding:11px 14px; border:1px solid var(--border); border-radius:10px; font-family:inherit; font-size:14px; font-weight:600; letter-spacing:1.2px; text-transform:uppercase; background:var(--cream);}
.coupon-row input:focus{outline:2px solid var(--green); outline-offset:1px;}
.coupon .form-error{margin:10px 0 0;}
.coupon-applied{display:flex; align-items:center; justify-content:space-between; gap:12px; background:#EDF5E9; border:1px solid #C3D6BA; border-radius:10px; padding:11px 14px; margin-top:10px; font-size:13.5px;}
.coupon-applied b{letter-spacing:1px;}

/* ══════════════════════════════════════════════════════════
   PACKS & TARIFS
   ══════════════════════════════════════════════════════════ */
.packs-section{padding:56px 0 72px;}

.family-tabs{display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin-bottom:40px;}
.family-tab{display:flex; align-items:center; gap:14px; background:#fff; border:1.5px solid var(--border); border-radius:16px; padding:16px 20px; cursor:pointer; font:inherit; text-align:left; transition:border-color .18s, background .18s, transform .18s, box-shadow .18s;}
.family-tab:hover{border-color:var(--green-light); transform:translateY(-2px);}
.family-tab.active{background:var(--green); border-color:var(--green); color:#fff; box-shadow:0 16px 32px -18px rgba(43,71,57,.55);}
.ft-icon{font-size:26px; line-height:1;}
.ft-text{display:flex; flex-direction:column; min-width:0;}
.ft-text b{font-family:'Nunito',sans-serif; font-size:16px; font-weight:800;}
.ft-text span{font-size:12.5px; opacity:.7;}

.family-head{display:flex; align-items:flex-end; justify-content:space-between; gap:28px; margin-bottom:28px; flex-wrap:wrap;}
.family-head h2{font-size:27px; font-weight:800; display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; margin-bottom:8px;}
.family-room{font-family:'Inter',sans-serif; font-size:12px; font-weight:700; letter-spacing:.6px; text-transform:uppercase; color:var(--green); background:#E9EFE6; padding:5px 12px; border-radius:20px;}
.family-head p{color:var(--text-soft); font-size:15px; max-width:460px;}
.family-disciplines{display:flex; gap:8px; flex-wrap:wrap;}
.chip{font-size:12.5px; font-weight:600; color:var(--text-soft); background:#fff; border:1px solid var(--border); padding:6px 13px; border-radius:20px;}

.pack-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(215px,1fr)); gap:18px;}
.pack-card{position:relative; display:flex; flex-direction:column; background:#fff; border:1.5px solid var(--border); border-radius:20px; padding:28px 22px 22px; text-align:center; transition:transform .2s, box-shadow .2s, border-color .2s;}
.pack-card:hover{transform:translateY(-4px); border-color:var(--green-light); box-shadow:0 22px 40px -22px rgba(43,71,57,.4);}
.pack-card.highlight{border-color:var(--green); background:linear-gradient(180deg,#F4F8F2 0%,#fff 55%);}
.pack-badge{position:absolute; top:-11px; left:50%; transform:translateX(-50%); background:var(--gold); color:#2B3730; font-size:10.5px; font-weight:800; letter-spacing:.5px; text-transform:uppercase; padding:5px 13px; border-radius:20px; white-space:nowrap;}
.pack-card.highlight .pack-badge{background:var(--green); color:#fff;}

.pack-sessions{display:flex; align-items:baseline; justify-content:center; gap:6px; margin-bottom:14px;}
.pack-sessions b{font-family:'Nunito',sans-serif; font-size:44px; font-weight:800; color:var(--text); line-height:1;}
.pack-sessions span{font-size:13px; font-weight:600; color:var(--text-soft);}
.pack-price{font-family:'Nunito',sans-serif; font-size:30px; font-weight:800; color:var(--green); line-height:1;}
.pack-price small{font-size:15px; font-weight:700;}
.pack-unit{font-size:13px; color:var(--text-soft); margin-top:5px;}
.pack-saving{display:inline-block; margin:14px auto 0; font-size:12px; font-weight:700; color:#2F6B3A; background:#E4F0E2; padding:5px 12px; border-radius:20px;}
.pack-saving.neutral{color:var(--text-soft); background:#EDE7E0;}

.pack-meta{margin:18px 0 20px; border-top:1px solid var(--border); padding-top:16px; display:grid; gap:9px;}
.pack-meta > div{display:flex; justify-content:space-between; align-items:center; gap:10px;}
.pack-meta dt{font-size:12.5px; color:var(--text-soft);}
.pack-meta dd{font-size:13px; font-weight:700;}
.pack-card .btn{margin-top:auto;}

.packs-legend{margin-top:32px; font-size:13px; color:var(--text-soft); text-align:center; max-width:640px; margin-left:auto; margin-right:auto;}

/* Tableau comparatif */
.compare-section{background:#fff; padding-top:72px; padding-bottom:88px;}
.table-scroll{overflow-x:auto; border:1px solid var(--border); border-radius:18px;}
.compare-table{width:100%; border-collapse:collapse; min-width:760px; background:var(--cream);}
.compare-table th, .compare-table td{padding:16px 14px; text-align:center; border-bottom:1px solid var(--border);}
.compare-table thead th{background:#fff; font-size:12.5px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; color:var(--text-soft); white-space:nowrap;}
.compare-table tbody th{text-align:left; font-family:'Nunito',sans-serif; font-size:15px; font-weight:800; white-space:nowrap; background:#fff;}
.compare-table tbody tr:last-child th, .compare-table tbody tr:last-child td{border-bottom:0;}
.compare-table td b{display:block; font-family:'Nunito',sans-serif; font-size:17px; font-weight:800; color:var(--green);}
.cell-unit{display:block; font-size:12px; color:var(--text-soft); margin-top:3px;}
.cell-validity{display:block; font-size:11.5px; color:var(--text-soft); opacity:.8; margin-top:2px;}
.compare-table td.na{color:#C4BCB4;}

@media (max-width: 860px){
  .family-tabs{grid-template-columns:1fr;}
  .family-head{flex-direction:column; align-items:flex-start; gap:16px;}
  .pack-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:14px;}
  .pack-sessions b{font-size:38px;}
}

@media (max-width: 980px){
  .auth-wrap{grid-template-columns:1fr; gap:40px;}
  .checkout-grid{grid-template-columns:1fr;}
  .checkout-side{position:static;}
  .account-grid{grid-template-columns:1fr;}
  .kpi-grid{grid-template-columns:repeat(2,1fr);}
}

@media (max-width: 860px){
  nav.main-nav .account-link{display:none;}
  .header-actions .btn:not(.account-link){display:none;}
  .class-row{grid-template-columns:70px 1fr; row-gap:14px;}
  .class-side{grid-column:1 / -1; justify-content:space-between;}
  .member-strip{gap:22px;}
  .member-strip .btn.ghost{margin-left:0; width:100%; justify-content:center;}
  .account-head{align-items:flex-start; flex-direction:column;}
  .row-item{flex-direction:column; align-items:flex-start; gap:10px;}
  .row-side{width:100%; justify-content:space-between;}
  .auth-card{padding:26px 22px;}
  .panel{padding:22px 20px;}
}

@media (max-width: 520px){
  .kpi-grid{grid-template-columns:1fr;}
}

/* ═══════════════════════════════════════════════════════════════
   Infos pratiques — horaires, règlement, annulation
   Reprend la mise en page des supports imprimés Powerformer :
   panneau clair arrondi posé sur fond crème, vert de marque.
   ═══════════════════════════════════════════════════════════════ */

.pf-alt{background:linear-gradient(180deg,#EEF0EA 0%, var(--cream) 100%);}

/* — Horaires — */
.pf-hours{display:grid; grid-template-columns:1.1fr .9fr; gap:40px; align-items:center;
  background:var(--panel); border-radius:24px; padding:44px 48px;}
.pf-hours-main h2{font-size:34px; color:var(--green); margin:6px 0 18px;}
.pf-hours-time{font-family:'Cormorant Garamond',Georgia,serif; font-size:64px; line-height:1;
  color:var(--green); font-weight:600;}
.pf-hours-time span{color:var(--green-light); font-size:40px; margin:0 8px;}
.pf-hours-note{margin-top:18px; color:var(--text-soft); font-size:15px;}
.pf-hours-note b{color:var(--green);}
.pf-days{list-style:none; background:var(--white); border-radius:18px; padding:10px 22px;}
.pf-days li{display:flex; justify-content:space-between; align-items:center; gap:16px;
  padding:11px 0; border-bottom:1px solid var(--border); font-size:15px;}
.pf-days li:last-child{border-bottom:0;}
.pf-days li span{color:var(--text-soft);}
.pf-days li b{color:var(--green); font-weight:700;}
.pf-days li.is-special b{background:var(--green); color:#fff; padding:3px 12px; border-radius:20px; font-size:13px;}

/* — Règlement — */
.pf-rules{list-style:none; display:grid; grid-template-columns:repeat(2,1fr); gap:16px; margin-top:34px;}
.pf-rules li{display:flex; gap:16px; background:var(--white); border:1px solid var(--border);
  border-radius:16px; padding:20px 22px;}
.pf-rules .ic{font-size:22px; line-height:1.2; flex-shrink:0;}
.pf-rules b{display:block; color:var(--green); font-size:15px; margin-bottom:4px;}
.pf-rules p{font-size:14px; color:var(--text-soft); line-height:1.55;}

/* — Annulation — */
.pf-cancel{display:grid; grid-template-columns:auto 1fr; gap:38px; align-items:start;
  background:var(--panel); border-radius:24px; padding:44px 48px;}
.pf-cancel-badge{width:110px; height:110px; border-radius:50%; background:var(--green); color:#fff;
  display:grid; place-items:center; font-family:'Cormorant Garamond',Georgia,serif;
  font-size:42px; font-weight:700; flex-shrink:0;}
.pf-cancel h2{font-size:30px; color:var(--green); margin:6px 0 16px;}
.pf-cancel p{color:var(--text-soft); margin-bottom:12px; line-height:1.65;}
.pf-cancel p b{color:var(--text);}
.pf-thanks{color:var(--green) !important; font-weight:600; margin-top:18px !important;}

@media(max-width:900px){
  .pf-hours,.pf-cancel{grid-template-columns:1fr; padding:32px 26px; gap:28px;}
  .pf-rules{grid-template-columns:1fr;}
  .pf-hours-time{font-size:52px;}
  .pf-cancel-badge{width:84px; height:84px; font-size:32px;}
}

/* ═══════════════════════════════════════════════════════════════
   Fiche de renseignements — formulaire d'inscription
   ═══════════════════════════════════════════════════════════════ */

.pf-form{max-width:840px; margin:0 auto;}
.pf-form fieldset{border:1px solid var(--border); border-radius:20px; background:var(--white);
  padding:28px 30px 30px; margin-bottom:22px;}
.pf-form legend{font-family:'Cormorant Garamond',Georgia,serif; font-size:24px; font-weight:600;
  color:var(--green); padding:0 12px; margin-left:-4px;}
.pf-hint{font-size:13px; color:var(--text-soft); margin-bottom:14px;}

.pf-grid{display:grid; grid-template-columns:1fr 1fr; gap:16px 20px;}
.pf-grid > label, .pf-form > label{display:flex; flex-direction:column; gap:6px;
  font-size:13px; font-weight:600; color:var(--text-soft);}
.pf-wide{grid-column:1 / -1;}
.pf-form input[type=text], .pf-form input[type=tel], .pf-form input[type=email],
.pf-form input[type=date], .pf-form input[type=number], .pf-form textarea{
  font-family:inherit; font-size:15px; color:var(--text); background:var(--cream);
  border:1px solid var(--border); border-radius:10px; padding:11px 14px; width:100%;}
.pf-form input:focus, .pf-form textarea:focus{outline:none; border-color:var(--green);
  background:#fff; box-shadow:0 0 0 3px rgba(73,100,91,.12);}
.pf-form textarea{resize:vertical;}

.pf-checks{display:grid; grid-template-columns:repeat(2,1fr); gap:10px 20px; margin-bottom:18px;}
.pf-checks label, .pf-radio label{display:flex; align-items:center; gap:9px;
  font-size:14px; font-weight:500; color:var(--text); cursor:pointer;}
.pf-form input[type=checkbox], .pf-form input[type=radio]{width:17px; height:17px;
  accent-color:var(--green); cursor:pointer; flex-shrink:0;}

.pf-radio{grid-column:1 / -1; display:flex; flex-wrap:wrap; align-items:center; gap:10px 22px;
  background:var(--cream); border-radius:12px; padding:13px 16px;}
.pf-radio > span{font-size:14px; font-weight:600; color:var(--text-soft); margin-right:auto;}

.pf-engagement{background:var(--panel) !important;}
.pf-consent{display:flex; gap:11px; align-items:flex-start; font-size:14px;
  line-height:1.55; color:var(--text); margin-bottom:14px; cursor:pointer;}
.pf-consent:last-child{margin-bottom:0;}

.pf-submit{text-align:center; padding:8px 0 12px;}
.pf-submit .pf-hint{margin-top:12px;}

@media(max-width:720px){
  .pf-grid, .pf-checks{grid-template-columns:1fr;}
  .pf-form fieldset{padding:22px 20px 24px;}
}

/* Photo du studio + devise de marque */
.pf-photo{border-radius:22px; overflow:hidden; background:var(--panel); margin-top:8px;}
.pf-photo img{width:100%; height:clamp(260px,44vw,460px); object-fit:cover; object-position:center 42%;}
.pf-photo figcaption{padding:14px 20px; font-size:14px; color:var(--text-soft); text-align:center;}
.pf-motto{margin-top:34px; text-align:center; font-family:'Cormorant Garamond',Georgia,serif;
  font-size:clamp(26px,4vw,38px); color:var(--green); font-weight:500;}
.pf-motto b{font-weight:700;}

/* ══════════════════════════════════════════════════════════
   PLANNING — AGENDA DE LA SEMAINE
   ══════════════════════════════════════════════════════════ */

/* Couleur d'un cours : --fond pour la carte, --trait pour l'accent */
.t-sauge  {--fond:#E7EFE5; --trait:#49645B;}
.t-sable  {--fond:#F4EEDF; --trait:#A07C2C;}
.t-terre  {--fond:#F6E8E0; --trait:#B0603F;}
.t-lavande{--fond:#ECE9F4; --trait:#6C5B9C;}
.t-bleu   {--fond:#E4EDF3; --trait:#3F6E8C;}
.t-rose   {--fond:#F6E7EB; --trait:#A4536A;}
.t-menthe {--fond:#E1F0EA; --trait:#2F7A66;}
.t-ocre   {--fond:#F8EEDC; --trait:#B7782A;}

.agenda{background:#fff; border:1px solid var(--border); border-radius:24px; padding:26px 26px 22px; box-shadow:0 24px 50px -38px rgba(43,71,57,.45);}
.agenda-top{display:flex; align-items:flex-end; justify-content:space-between; gap:18px; flex-wrap:wrap; margin-bottom:16px;}
.agenda-range{font-family:'Cormorant Garamond',Georgia,serif; font-size:28px; font-weight:700; line-height:1.1; color:var(--text);}
.agenda-sub{font-size:13px; color:var(--text-soft); margin-top:4px;}
.agenda-controls{display:flex; gap:10px; flex-wrap:wrap;}

/* Boutons segmentés (salle, vue) */
.seg{display:inline-flex; background:var(--cream); border:1px solid var(--border); border-radius:30px; padding:4px; gap:2px;}
.seg button{font:inherit; font-size:13px; font-weight:600; color:var(--text-soft); background:transparent; border:0;
  padding:8px 14px; border-radius:24px; cursor:pointer; white-space:nowrap; transition:background .18s, color .18s;}
.seg button:hover{color:var(--green);}
.seg button.on{background:var(--green); color:#fff; box-shadow:0 6px 14px -8px rgba(43,71,57,.7);}
.seg .seg-court{display:none;}
.agenda .seg, .agenda .day-tabs{scrollbar-width:none;}
.agenda .seg::-webkit-scrollbar, .agenda .day-tabs::-webkit-scrollbar{display:none;}

.agenda-legend{display:flex; flex-wrap:wrap; gap:8px 16px; padding:12px 0 18px; border-bottom:1px solid var(--border); margin-bottom:18px; font-size:12.5px; color:var(--text-soft);}
.agenda-legend span{display:inline-flex; align-items:center; gap:7px;}
.agenda-legend i{width:10px; height:10px; border-radius:3px; background:var(--trait); display:inline-block;}
.agenda-legend .lg-state{margin-left:auto;}
.agenda-legend .lg-state + .lg-state{margin-left:0;}
.agenda-legend .lg-mine i{background:var(--green); box-shadow:0 0 0 2px #fff, 0 0 0 3px var(--green);}
.agenda-legend .lg-full i{background:repeating-linear-gradient(135deg,#D6D2CB 0 3px,#EFECE7 3px 6px);}

/* ── Grille de la semaine ── */
/* Pas d'overflow:hidden ici : il empêcherait la ligne des jours de rester collée en haut. */
.wk{border:1px solid var(--border); border-radius:18px;}
.wk-heads{display:grid; grid-template-columns:60px repeat(7, 1fr); background:#FAFAF6; border-bottom:1px solid var(--border);
  position:sticky; top:72px; z-index:5; border-radius:18px 18px 0 0;}
.wk-corner{border-right:1px solid var(--border);}
.wk-head{text-align:center; padding:12px 4px 10px; border-right:1px solid #ECECE6; position:relative;}
.wk-head:last-child{border-right:0;}
.wk-head span{display:block; font-size:11px; font-weight:700; letter-spacing:1px; text-transform:uppercase; color:var(--text-soft);}
.wk-head b{display:block; font-family:'Nunito',sans-serif; font-size:24px; font-weight:800; line-height:1.15; color:var(--text);}
.wk-head small{display:block; font-size:11px; color:var(--text-soft);}
.wk-head.today span, .wk-head.today small{color:var(--green);}
.wk-head.today b{display:inline-flex; align-items:center; justify-content:center; width:36px; height:36px; margin:2px auto 1px;
  border-radius:50%; background:var(--green); color:#fff; font-size:18px;}

.wk-body{display:grid; grid-template-columns:60px repeat(7, 1fr); border-radius:0 0 18px 18px; overflow:hidden;}
.wk-axis{position:relative; border-right:1px solid var(--border); background:#FAFAF6;}
.wk-axis span{position:absolute; right:8px; transform:translateY(-50%); font-size:11px; font-weight:600; color:var(--text-soft); font-variant-numeric:tabular-nums;}
.wk-axis span:first-child{transform:translateY(2px);}
.wk-col{position:relative; border-right:1px solid #ECECE6;
  background-image:linear-gradient(to bottom, #EFEFEA 1px, transparent 1px);
  background-size:100% var(--h);}
.wk-col:last-child{border-right:0;}
.wk-col.today{background-color:#FBFCF9;}

.now-line{position:absolute; left:0; right:0; height:2px; background:#C0563F; z-index:3; pointer-events:none;}
.now-line::before{content:''; position:absolute; left:-5px; top:-4px; width:10px; height:10px; border-radius:50%; background:#C0563F;}

/* Carte d'un cours dans la grille */
.ev{position:absolute; z-index:1; display:flex; flex-direction:column; gap:1px; text-align:left; overflow:hidden;
  font:inherit; color:var(--text); background:var(--fond); border:0; border-left:3px solid var(--trait);
  border-radius:10px; padding:6px 8px; cursor:pointer; transition:transform .15s, box-shadow .15s;}
.ev:hover{transform:translateY(-1px); box-shadow:0 10px 20px -12px rgba(43,55,48,.45); z-index:2;}
.ev:focus-visible{outline:2px solid var(--green); outline-offset:2px;}
.ev-time{font-size:10.5px; font-weight:700; color:var(--trait); font-variant-numeric:tabular-nums; letter-spacing:.2px;}
.ev-name{font-size:12.5px; font-weight:700; line-height:1.2; overflow-wrap:anywhere;}
.ev-meta{font-size:11px; color:var(--text-soft); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.ev-tag{margin-top:auto; font-size:10.5px; font-weight:700; color:var(--trait);}
.ev.compact{flex-direction:row; flex-wrap:wrap; align-items:baseline; column-gap:6px; padding:4px 7px;}
.ev.compact .ev-meta, .ev.compact .ev-tag{display:none;}
.ev.narrow{padding:5px 6px;}
.ev.narrow .ev-meta{display:none;}
.ev.narrow .ev-name, .ev.narrow .ev-tag{white-space:nowrap; overflow:hidden; text-overflow:ellipsis; overflow-wrap:normal;}
.ev.narrow .ev-name{font-size:11.5px;}
.ev.narrow .ev-tag{font-size:10px; margin-top:2px;}

.ev.mine{background:var(--green); border-left-color:var(--green-dark); color:#fff;}
.ev.mine .ev-time, .ev.mine .ev-tag, .ev.mine .ev-meta{color:rgba(255,255,255,.88);}
.ev.full:not(.mine){background:repeating-linear-gradient(135deg, #F1EFEB 0 6px, #F8F7F4 6px 12px); border-left-color:#B9B2A8; color:var(--text-soft);}
.ev.full:not(.mine) .ev-time, .ev.full:not(.mine) .ev-tag{color:#8E877E;}
.ev.past{opacity:.5;}
.ev.past:hover{opacity:.8;}

/* ── Vue jour (et mobile) ── */
.day-tab .day-count{display:block; font-size:11px; opacity:.7; margin-top:1px;}
.timeline{display:flex; flex-direction:column; gap:12px;}
.tl-item{display:grid; grid-template-columns:62px 1fr; gap:14px; align-items:stretch;}
.tl-time{text-align:right; padding-top:14px; font-variant-numeric:tabular-nums;}
.tl-time b{display:block; font-family:'Nunito',sans-serif; font-size:17px; font-weight:800; color:var(--text);}
.tl-time span{font-size:12px; color:var(--text-soft);}
.tl-card{display:flex; align-items:center; gap:18px; justify-content:space-between; background:var(--fond);
  border-left:4px solid var(--trait); border-radius:16px; padding:16px 18px; cursor:pointer; transition:box-shadow .18s, transform .18s;}
.tl-card:hover{box-shadow:0 14px 28px -20px rgba(43,55,48,.55); transform:translateY(-1px);}
.tl-main{min-width:0; flex:1;}
.tl-room{display:inline-block; font-size:10.5px; font-weight:700; letter-spacing:.8px; text-transform:uppercase; color:var(--trait); margin-bottom:2px;}
.tl-main h3{font-family:'Nunito',sans-serif; font-size:17px; font-weight:800; margin-bottom:2px;}
.tl-meta{font-size:13px; color:var(--text-soft);}
.tl-side{display:flex; flex-direction:column; align-items:flex-end; gap:8px; flex-shrink:0;}
.tl-tag{font-size:12px; font-weight:700; color:var(--trait);}
.tl-item.mine .tl-card{background:var(--green); border-left-color:var(--green-dark); color:#fff;}
.tl-item.mine .tl-room, .tl-item.mine .tl-meta, .tl-item.mine .tl-tag{color:rgba(255,255,255,.85);}
.tl-item.mine .btn.ghost.danger{background:#fff; border-color:#fff;}
.tl-item.full:not(.mine) .tl-card{background:repeating-linear-gradient(135deg, #F1EFEB 0 8px, #F8F7F4 8px 16px); border-left-color:#B9B2A8;}
.tl-item.past .tl-card{opacity:.55;}

/* Jauge de remplissage */
.places-bar{height:6px; border-radius:6px; background:rgba(0,0,0,.08); overflow:hidden; margin-top:10px;}
.places-bar.small{height:4px; max-width:180px; margin-top:8px;}
.places-bar i{display:block; height:100%; background:var(--trait, var(--green)); border-radius:6px; transition:width .3s;}
.tl-item.mine .places-bar{background:rgba(255,255,255,.25);}
.tl-item.mine .places-bar i{background:#fff;}

/* ── Fiche d'un cours ── */
.agenda-modal{position:fixed; inset:0; z-index:80; background:rgba(28,40,33,.45); backdrop-filter:blur(3px);
  display:flex; align-items:center; justify-content:center; padding:20px; animation:pf-fade .18s ease;}
.agenda-modal-card{position:relative; width:100%; max-width:420px; background:#fff; border-radius:24px; overflow:hidden;
  box-shadow:0 40px 80px -30px rgba(0,0,0,.45); animation:pf-rise .22s ease;}
.agenda-modal-band{height:10px; background:var(--trait, var(--green));}
.agenda-modal-close{position:absolute; top:18px; right:16px; width:34px; height:34px; border-radius:50%; border:0;
  background:var(--cream); color:var(--text); font-size:20px; line-height:1; cursor:pointer;}
.agenda-modal-close:hover{background:var(--panel);}
.agenda-modal-body{padding:22px 26px 26px;}
.agenda-modal-room{display:inline-block; font-size:11px; font-weight:700; letter-spacing:1px; text-transform:uppercase;
  color:var(--trait, var(--green)); background:var(--fond, #E9EFE6); padding:5px 12px; border-radius:20px;}
.agenda-modal-body h2{font-size:30px; font-weight:700; margin:10px 0 14px; line-height:1.1;}
.agenda-modal-facts{list-style:none; border-top:1px solid var(--border);}
.agenda-modal-facts li{display:flex; justify-content:space-between; gap:12px; padding:11px 0; border-bottom:1px solid var(--border); font-size:14px;}
.agenda-modal-facts span{color:var(--text-soft);}
.agenda-modal-facts b{text-align:right;}
.agenda-modal-places{margin:16px 0 20px; font-size:13px; color:var(--text-soft);}
.agenda-modal-places .places-bar{margin:0 0 8px;}
.agenda-modal-note{font-size:13px; margin-bottom:12px; padding:10px 12px; border-radius:12px; background:#E4F0E2; color:#2F6B3A; font-weight:600;}
.agenda-modal-action .btn.block{padding:14px 22px;}

@keyframes pf-fade{from{opacity:0}to{opacity:1}}
@keyframes pf-rise{from{opacity:0; transform:translateY(12px) scale(.98)}to{opacity:1; transform:none}}

@media (max-width: 900px){
  .agenda{padding:18px 14px; border-radius:20px;}
  .agenda-range{font-size:24px;}
  .agenda-controls{width:100%;}
  .seg{width:100%; overflow-x:auto;}
  .seg button{flex:1; padding:8px 10px;}
  .seg .seg-long{display:none;}
  .seg .seg-court{display:inline;}
  .agenda-legend .lg-state{margin-left:0;}
}
@media (max-width: 560px){
  .tl-item{grid-template-columns:48px 1fr; gap:10px;}
  .tl-time b{font-size:15px;}
  .tl-card{flex-direction:column; align-items:stretch; gap:12px; padding:14px;}
  .tl-side{flex-direction:row; align-items:center; justify-content:space-between;}
}
