/* ==========================================================================
   Club ORCA — espace membre & gestion
   Thème « Surface » (clair) du design system ORCA v2. Préfixe o-.
   ========================================================================== */

@font-face{font-family:"Outfit";font-weight:500;font-style:normal;font-display:swap;src:url(../fonts/outfit-v15-latin-500.woff2) format("woff2")}
@font-face{font-family:"Outfit";font-weight:600;font-style:normal;font-display:swap;src:url(../fonts/outfit-v15-latin-600.woff2) format("woff2")}
@font-face{font-family:"Outfit";font-weight:700;font-style:normal;font-display:swap;src:url(../fonts/outfit-v15-latin-700.woff2) format("woff2")}
@font-face{font-family:"Nunito Sans";font-weight:400;font-style:normal;font-display:swap;src:url(../fonts/nunito-sans-v19-latin-regular.woff2) format("woff2")}
@font-face{font-family:"Nunito Sans";font-weight:400;font-style:italic;font-display:swap;src:url(../fonts/nunito-sans-v19-latin-italic.woff2) format("woff2")}
@font-face{font-family:"Nunito Sans";font-weight:700;font-style:normal;font-display:swap;src:url(../fonts/nunito-sans-v19-latin-700.woff2) format("woff2")}

:root{
  --ground:#f4f8fb; --surface:#fff; --raised:#e6eef6; --line:#c9d6e3; --line-soft:#e1e9f1;
  --ink:#0a1a2e; --muted:#4d6278;
  --lagon:#0e7f95; --lagon-strong:#0a6a7d; --lagon-soft:#d9f3f8; --on-lagon:#fff;
  --success:#1e7d4f; --success-soft:#dcf3e6;
  --warning:#9a5a00; --warning-soft:#fcefd6;
  --danger:#b3232e; --danger-soft:#fbe1e3;
  --abysse:#04101f;
  --f-title:"Outfit",system-ui,sans-serif; --f-text:"Nunito Sans",system-ui,sans-serif;
  --r-sm:8px; --r-md:14px; --r-lg:22px; --pill:999px;
  --shadow:0 1px 2px #0a1a2e0f,0 6px 24px #0a1a2e0d;
  --shadow-lg:0 12px 40px #0a1a2e24;
  --t:.18s ease;
  --side:264px;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--ground);color:var(--ink);font:400 15px/1.55 var(--f-text);-webkit-font-smoothing:antialiased}
img,svg{max-width:100%}
a{color:var(--lagon)}
a:hover{color:var(--lagon-strong)}
:focus-visible{outline:2px solid var(--lagon);outline-offset:2px}
h1,h2,h3,h4{font-family:var(--f-title);font-weight:600;line-height:1.2;margin:0 0 .5em;text-wrap:balance}
p{margin:0 0 1em}
table{font-variant-numeric:tabular-nums}
.o-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.o-skip{position:absolute;left:-999px;top:8px;background:var(--ink);color:#fff;padding:.5rem 1rem;border-radius:var(--r-sm);z-index:100}
.o-skip:focus{left:8px}
.o-i{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.o-muted{color:var(--muted)}
.o-small{font-size:.8125rem}
.o-nowrap{white-space:nowrap}
.o-h1{font-size:1.75rem;letter-spacing:-.01em;margin:0}
.o-h2{font-size:1.25rem}
.o-h3{font-size:1.0625rem}
.o-lead{color:var(--muted);margin:.35rem 0 0;max-width:70ch}
.o-eyebrow{font:500 .75rem/1 var(--f-title);letter-spacing:.14em;text-transform:uppercase;color:var(--lagon);margin:0 0 .5rem}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}}

/* ---------- Coquille gestion ---------- */
.o-shell{display:grid;grid-template-columns:var(--side) 1fr;min-height:100vh}
.o-side{position:sticky;top:0;height:100vh;overflow-y:auto;background:var(--surface);border-right:1px solid var(--line-soft);display:flex;flex-direction:column;padding:1.25rem .875rem}
.o-side a.o-side__brand{display:grid;gap:.4rem;padding:.5rem .75rem 1.25rem;text-decoration:none;color:var(--ink);background:none}
.o-side__brand img{width:134px;height:auto}
.o-side__brand small{color:var(--muted);font-size:.75rem}
.o-side__group{font:500 .6875rem/1 var(--f-title);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:1.25rem .75rem .5rem}
.o-side ul{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.o-side a{display:flex;align-items:center;gap:.75rem;padding:.5rem .75rem;border-radius:var(--r-sm);color:var(--ink);text-decoration:none;font-weight:400;transition:background var(--t),color var(--t)}
.o-side a:hover{background:var(--ground);color:var(--ink)}
.o-side a[aria-current]{background:var(--lagon-soft);color:var(--lagon-strong);font-weight:700}
.o-side a[aria-current] .o-i{stroke:var(--lagon)}
.o-side a .o-i{stroke:var(--muted)}
.o-side a span{flex:1}
.o-count{min-width:22px;height:22px;padding:0 6px;border-radius:var(--pill);background:var(--lagon);color:#fff;font:600 .75rem/22px var(--f-title);text-align:center}
.o-side__foot{margin-top:auto;padding-top:1rem;border-top:1px solid var(--line-soft);display:grid;gap:2px}
.o-side__foot a{color:var(--muted);font-size:.875rem}

.o-main{min-width:0;display:flex;flex-direction:column}
.o-top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:1rem;height:68px;padding:0 2rem;background:#f4f8fbe6;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line-soft)}
.o-top__menu{display:none}
.o-search{position:relative;flex:1;min-width:0;max-width:560px;display:flex;align-items:center;gap:.5rem;height:42px;padding:0 .875rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--pill);transition:border-color var(--t),box-shadow var(--t)}
.o-search:focus-within{border-color:var(--lagon);box-shadow:0 0 0 3px var(--lagon-soft)}
.o-search .o-i{stroke:var(--muted);width:18px;height:18px}
.o-search input{flex:1;border:0;background:none;font:inherit;color:var(--ink);outline:none;min-width:0}
.o-search kbd{font:500 .75rem var(--f-title);color:var(--muted);border:1px solid var(--line);border-radius:6px;padding:0 .4rem}
.o-search__results{position:absolute;top:calc(100% + 6px);left:0;right:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-lg);padding:.375rem;max-height:420px;overflow:auto}
.o-search__results a{display:flex;align-items:center;gap:.75rem;padding:.5rem .625rem;border-radius:var(--r-sm);color:var(--ink);text-decoration:none}
.o-search__results a:hover,.o-search__results a.is-active{background:var(--lagon-soft)}
.o-search__results small{color:var(--muted);display:block}
.o-top__user{margin-left:auto;display:flex;align-items:center;gap:.75rem}
.o-top__name{display:grid;line-height:1.2;font-weight:700;font-size:.875rem}
.o-top__name small{font-weight:400;color:var(--muted);font-size:.75rem}
.o-avatar{width:36px;height:36px;border-radius:50%;background:var(--lagon-soft);color:var(--lagon-strong);display:grid;place-items:center;font:600 .9375rem var(--f-title);flex:none;overflow:hidden}
.o-avatar img{width:100%;height:100%;object-fit:cover}
.o-avatar--lg{width:72px;height:72px;font-size:1.5rem}
.o-iconbtn{flex:none;width:40px;height:40px;display:grid;place-items:center;border-radius:50%;border:1px solid transparent;background:none;color:var(--muted);cursor:pointer;transition:background var(--t),color var(--t)}
.o-iconbtn:hover{background:var(--raised);color:var(--ink)}
.o-content{padding:2rem;max-width:1320px;width:100%}

@media (max-width:960px){
  .o-shell{grid-template-columns:1fr}
  .o-side{position:fixed;inset:0 auto 0 0;width:min(86vw,300px);z-index:60;transform:translateX(-102%);transition:transform .25s ease;box-shadow:var(--shadow-lg)}
  .o-side.is-open{transform:none}
  .o-shell::after{content:"";position:fixed;inset:0;background:#0a1a2e66;opacity:0;pointer-events:none;transition:opacity .25s;z-index:55}
  .o-shell:has(.o-side.is-open)::after{opacity:1;pointer-events:auto}
  .o-top{padding:0 1rem;gap:.5rem}
  .o-top__menu{display:grid}
  .o-top__name,.o-search kbd{display:none}
  .o-content{padding:1.25rem 1rem 3rem}
}

/* ---------- Coquille espace membre ---------- */
.o-mtop{display:flex;align-items:center;gap:1.5rem;flex-wrap:wrap;max-width:1100px;margin:1rem auto 0;padding:.625rem .75rem .625rem 1.25rem;background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--pill);box-shadow:var(--shadow)}
.o-mtop__brand{display:flex;align-items:center;gap:.75rem;text-decoration:none;color:var(--ink);font:600 1rem var(--f-title)}
.o-mtop__brand img{height:22px;width:auto}
.o-mtop__brand span{padding-left:.75rem;border-left:1px solid var(--line);color:var(--muted);font-weight:500}
.o-mtop__nav{margin-left:auto;display:flex;flex-wrap:wrap;gap:.25rem}
.o-mtop__nav a{padding:.5rem .875rem;border-radius:var(--pill);color:var(--ink);text-decoration:none;font:500 .9375rem var(--f-title)}
.o-mtop__nav a:hover{background:var(--ground)}
.o-mtop__nav a[aria-current]{background:var(--lagon-soft);color:var(--lagon-strong)}
.o-mtop__nav .o-mtop__gestion{background:var(--ink);color:#fff}
.o-mtop__nav .o-mtop__gestion:hover{background:var(--lagon-strong);color:#fff}
.o-mcontent{max-width:1100px;margin:0 auto;padding:2rem 1rem 3rem}
.o-mfoot{max-width:1100px;margin:0 auto;padding:1rem 1rem 2.5rem;display:flex;gap:1.5rem;font-size:.875rem}
.o-mfoot a{color:var(--muted)}
@media (max-width:780px){
  .o-mtop{margin:.5rem;border-radius:var(--r-lg);padding:.75rem 1rem}
  .o-mtop__nav{margin-left:0;width:100%;overflow-x:auto;flex-wrap:nowrap}
  .o-mtop__nav a{white-space:nowrap}
}
.o-center{min-height:100vh;display:grid;place-items:center;padding:1rem}

/* ---------- En-tête de page ---------- */
.o-phead{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1.75rem}
.o-phead__actions{display:flex;flex-wrap:wrap;gap:.5rem}
.o-back{display:inline-flex;align-items:center;gap:.35rem;font-size:.875rem;text-decoration:none;color:var(--muted);margin-bottom:.5rem}
.o-back .o-i{width:16px;height:16px}

/* ---------- Boutons ---------- */
.o-btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;height:42px;padding:0 1.25rem;border-radius:var(--pill);border:1.5px solid var(--lagon);background:var(--lagon);color:var(--on-lagon);font:500 .9375rem var(--f-title);text-decoration:none;cursor:pointer;white-space:nowrap;transition:background var(--t),border-color var(--t),color var(--t),box-shadow var(--t)}
.o-btn:hover{background:var(--lagon-strong);border-color:var(--lagon-strong);color:#fff}
.o-btn .o-i{width:18px;height:18px}
.o-btn--ghost{background:var(--surface);color:var(--ink);border-color:var(--line)}
.o-btn--ghost:hover{background:var(--surface);border-color:var(--lagon);color:var(--lagon-strong)}
.o-btn--quiet{background:none;border-color:transparent;color:var(--lagon)}
.o-btn--quiet:hover{background:var(--lagon-soft);border-color:transparent;color:var(--lagon-strong)}
.o-btn--danger{background:var(--surface);color:var(--danger);border-color:#e7b4b8}
.o-btn--danger:hover{background:var(--danger);border-color:var(--danger);color:#fff}
.o-btn--ok{background:var(--success);border-color:var(--success)}
.o-btn--ok:hover{background:#17653f;border-color:#17653f}
.o-btn--sm{height:34px;padding:0 .875rem;font-size:.875rem}
.o-btn--block{width:100%}
.o-btn[disabled]{opacity:.5;cursor:not-allowed}
.o-btnrow{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}

/* ---------- Cartes & grilles ---------- */
.o-card{background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:1.5rem}
.o-card--narrow{max-width:460px;width:100%}
.o-card--flush{padding:0;overflow:hidden}
.o-card__head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}
.o-card__head h2,.o-card__head h3{margin:0}
.o-card + .o-card{margin-top:1.25rem}
.o-grid{display:grid;gap:1.25rem}
.o-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.o-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.o-grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}
.o-grid--side{grid-template-columns:minmax(0,1fr) 340px;align-items:start}
@media (max-width:1100px){.o-grid--4{grid-template-columns:repeat(2,minmax(0,1fr))}.o-grid--side{grid-template-columns:minmax(0,1fr)}}
@media (max-width:760px){.o-grid--2,.o-grid--3,.o-grid--4{grid-template-columns:1fr}}
.o-stack{display:grid;grid-template-columns:minmax(0,1fr);gap:1.25rem}

/* Tuiles chiffres */
.o-stat{display:flex;flex-direction:column;gap:.25rem;padding:1.25rem 1.375rem;background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--r-lg);box-shadow:var(--shadow);text-decoration:none;color:var(--ink);transition:border-color var(--t),transform var(--t)}
a.o-stat:hover{border-color:var(--lagon);color:var(--ink)}
.o-stat__label{display:flex;align-items:center;gap:.5rem;color:var(--muted);font-size:.875rem}
.o-stat__label .o-i{width:18px;height:18px;stroke:var(--lagon)}
.o-stat__value{font:600 2rem/1.1 var(--f-title);letter-spacing:-.02em}
.o-stat__sub{font-size:.8125rem;color:var(--muted)}
.o-stat--alert .o-stat__value{color:var(--warning)}

/* ---------- Pastilles ---------- */
.o-pill{display:inline-flex;align-items:center;gap:.3rem;height:26px;padding:0 .625rem;border-radius:var(--pill);font:500 .8125rem/1 var(--f-title);white-space:nowrap;background:var(--raised);color:var(--muted)}
.o-pill .o-i{width:14px;height:14px;stroke-width:2}
.o-pill--ok{background:var(--success-soft);color:var(--success)}
.o-pill--warn{background:var(--warning-soft);color:var(--warning)}
.o-pill--danger{background:var(--danger-soft);color:var(--danger)}
.o-pill--info{background:var(--lagon-soft);color:var(--lagon-strong)}
.o-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .6rem;border-radius:var(--pill);border:1px solid var(--line);font-size:.8125rem;color:var(--ink);background:var(--surface)}
.o-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}

/* ---------- Tableaux ---------- */
.o-tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.o-table{width:100%;border-collapse:collapse;font-size:.9375rem}
.o-table th{position:sticky;top:0;text-align:left;font:500 .75rem/1.2 var(--f-title);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:.75rem 1rem;background:var(--surface);border-bottom:1px solid var(--line);white-space:nowrap}
.o-table td{padding:.75rem 1rem;border-bottom:1px solid var(--line-soft);vertical-align:middle}
.o-table tr:last-child td{border-bottom:0}
.o-table tbody tr{transition:background var(--t)}
.o-table tbody tr:hover{background:#f7fafc}
.o-table .is-num{text-align:right}
.o-table a.o-rowlink{color:var(--ink);text-decoration:none;font-weight:700}
.o-table a.o-rowlink:hover{color:var(--lagon)}
.o-table input[type=text],.o-table input[type=number],.o-table select{height:36px}
.o-person{display:flex;align-items:center;gap:.75rem;min-width:180px}
.o-person .o-avatar{width:34px;height:34px;font-size:.8125rem}
.o-person small{display:block;color:var(--muted);font-weight:400}

/* Filtres */
.o-filters{display:flex;flex-wrap:wrap;gap:.625rem;align-items:flex-end;padding:1rem 1.25rem;border-bottom:1px solid var(--line-soft)}
.o-filters .o-field{margin:0;min-width:150px}
.o-filters .o-field label{font-size:.75rem}
.o-tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--line);margin-bottom:1.5rem;overflow-x:auto;scrollbar-width:none}
.o-tabs::-webkit-scrollbar{display:none}
.o-tabs a{padding:.75rem 1rem;color:var(--muted);text-decoration:none;font:500 .9375rem var(--f-title);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}
.o-tabs a:hover{color:var(--ink)}
.o-tabs a[aria-current]{color:var(--lagon-strong);border-color:var(--lagon)}
.o-seg{display:inline-flex;background:var(--raised);border-radius:var(--pill);padding:3px;gap:2px}
.o-seg a{padding:.35rem .875rem;border-radius:var(--pill);text-decoration:none;color:var(--muted);font:500 .875rem var(--f-title)}
.o-seg a[aria-current]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}

/* ---------- Formulaires ---------- */
.o-form{display:grid;gap:1rem}
.o-fields{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:1rem 1.25rem}
.o-fields>.o-field{grid-column:span 3}
.o-fields>.o-field--s{grid-column:span 2}
.o-fields>.o-field--l,.o-fields>.o-field--full{grid-column:1/-1}
@media (max-width:760px){.o-fields{grid-template-columns:1fr}.o-fields>.o-field,.o-fields>.o-field--s{grid-column:1/-1}}
.o-field{display:grid;gap:.375rem;align-content:start}
.o-field label{font:500 .875rem var(--f-title);color:var(--ink)}
.o-req{color:var(--danger)}
.o-help{color:var(--muted);font-size:.8125rem;line-height:1.4}
.o-field input:not([type=checkbox]):not([type=radio]),.o-field select,.o-field textarea,.o-input{width:100%;min-height:44px;padding:.5rem .875rem;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);color:var(--ink);font:inherit;transition:border-color var(--t),box-shadow var(--t)}
.o-field textarea{min-height:96px;resize:vertical;line-height:1.5}
.o-field select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%234d6278' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px;padding-right:2.25rem}
.o-field input:focus,.o-field select:focus,.o-field textarea:focus,.o-input:focus{outline:none;border-color:var(--lagon);box-shadow:0 0 0 3px var(--lagon-soft)}
.o-field input:disabled,.o-field select:disabled{background:var(--ground);color:var(--muted)}
.o-field input[aria-invalid=true]{border-color:var(--danger)}
.o-affix{display:flex;align-items:stretch}
.o-affix input{border-top-right-radius:0!important;border-bottom-right-radius:0!important}
.o-affix span{display:grid;place-items:center;padding:0 .75rem;border:1px solid var(--line);border-left:0;border-radius:0 var(--r-sm) var(--r-sm) 0;background:var(--ground);color:var(--muted)}
.o-check{display:flex;align-items:flex-start;gap:.625rem;cursor:pointer;font:400 .9375rem var(--f-text)!important}
.o-check input{width:20px;height:20px;margin:.1rem 0 0;accent-color:var(--lagon);flex:none}
.o-fieldset{border:0;padding:0;margin:0 0 .5rem}
.o-fieldset legend{font:600 1.0625rem var(--f-title);margin-bottom:1rem;padding:0}
.o-formfoot{display:flex;justify-content:flex-end;gap:.5rem;padding-top:1rem;border-top:1px solid var(--line-soft);margin-top:.5rem}
.o-formfoot--sticky{position:sticky;bottom:0;background:#ffffffee;backdrop-filter:blur(8px);margin:0 -1.5rem -1.5rem;padding:1rem 1.5rem;border-radius:0 0 var(--r-lg) var(--r-lg)}
.o-choices{display:grid;gap:.5rem}
.o-choice{display:flex;gap:.75rem;align-items:flex-start;padding:.875rem 1rem;border:1.5px solid var(--line);border-radius:var(--r-md);cursor:pointer;background:var(--surface);transition:border-color var(--t),background var(--t)}
.o-choice:hover{border-color:var(--lagon)}
.o-choice:has(input:checked){border-color:var(--lagon);background:var(--lagon-soft)}
.o-choice:has(input:disabled){opacity:.55;cursor:not-allowed}
.o-choice input{margin-top:.2rem;accent-color:var(--lagon);width:18px;height:18px;flex:none}
.o-choice strong{display:block;font-family:var(--f-title);font-weight:600}
.o-choice small{color:var(--muted)}
.o-choice .o-choice__price{margin-left:auto;font:600 1rem var(--f-title);white-space:nowrap}
.o-drop{display:grid;place-items:center;gap:.5rem;text-align:center;padding:1.75rem 1rem;border:1.5px dashed var(--line);border-radius:var(--r-md);background:var(--ground);cursor:pointer;transition:border-color var(--t),background var(--t)}
.o-drop:hover,.o-drop.is-over{border-color:var(--lagon);background:var(--lagon-soft)}
.o-drop .o-i{width:28px;height:28px;stroke:var(--lagon)}
.o-drop input{position:absolute;opacity:0;width:1px;height:1px}

/* ---------- Messages ---------- */
.o-flashes{display:grid;gap:.5rem;margin-bottom:1.25rem}
.o-flash{display:flex;align-items:flex-start;gap:.75rem;padding:.875rem 1rem;border-radius:var(--r-md);background:var(--success-soft);color:var(--success);animation:o-in .25s ease}
.o-flash p{margin:0;flex:1;color:var(--ink)}
.o-flash--danger{background:var(--danger-soft);color:var(--danger)}
.o-flash--warn{background:var(--warning-soft);color:var(--warning)}
.o-flash--info{background:var(--lagon-soft);color:var(--lagon-strong)}
.o-flash__close{background:none;border:0;color:inherit;cursor:pointer;padding:0}
.o-notice{display:flex;gap:.75rem;padding:1rem 1.125rem;border-radius:var(--r-md);background:var(--lagon-soft);color:var(--ink);border-left:3px solid var(--lagon)}
.o-notice .o-i{stroke:var(--lagon);margin-top:.1rem}
.o-notice p:last-child{margin:0}
.o-notice--warn{background:var(--warning-soft);border-color:var(--warning)}
.o-notice--warn .o-i{stroke:var(--warning)}
.o-notice--danger{background:var(--danger-soft);border-color:var(--danger)}
.o-notice--danger .o-i{stroke:var(--danger)}
.o-notice--ok{background:var(--success-soft);border-color:var(--success)}
.o-notice--ok .o-i{stroke:var(--success)}
@keyframes o-in{from{opacity:0;transform:translateY(-4px)}}

/* ---------- États vides ---------- */
.o-empty{text-align:center;padding:2.5rem 1rem}
.o-empty__icon{width:44px;height:44px;stroke:var(--lagon);margin-bottom:.75rem}
.o-empty__title{font:600 1.0625rem var(--f-title);margin:0 0 .25rem}

/* ---------- Pagination ---------- */
.o-pager{display:flex;align-items:center;justify-content:center;gap:1rem;padding:1rem;color:var(--muted);font-size:.875rem}
.o-pager a{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--line);color:var(--ink)}
.o-pager a:hover{border-color:var(--lagon);color:var(--lagon)}

/* ---------- Listes de définition / fiche ---------- */
.o-dl{display:grid;grid-template-columns:minmax(120px,38%) 1fr;gap:.5rem 1rem;margin:0}
.o-dl dt{color:var(--muted);font-size:.875rem}
.o-dl dd{margin:0;font-weight:700;overflow-wrap:anywhere}
.o-dl dd.is-plain{font-weight:400}
.o-profile{display:flex;align-items:center;gap:1.25rem;flex-wrap:wrap}
.o-profile__meta{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}

/* Progression du dossier */
.o-steps{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}
.o-steps li{display:flex;align-items:center;gap:.875rem;padding:.75rem 1rem;border:1px solid var(--line-soft);border-radius:var(--r-md);background:var(--surface)}
.o-steps .o-step__icon{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;flex:none;background:var(--raised);color:var(--muted)}
.o-steps .o-step__icon .o-i{width:16px;height:16px;stroke-width:2.2}
.o-steps .is-done .o-step__icon{background:var(--success-soft);color:var(--success)}
.o-steps .is-wait .o-step__icon{background:var(--warning-soft);color:var(--warning)}
.o-steps .is-bad .o-step__icon{background:var(--danger-soft);color:var(--danger)}
.o-steps .o-step__body{flex:1;min-width:0}
.o-steps strong{font-family:var(--f-title);font-weight:600;display:block}
.o-steps small{color:var(--muted)}
.o-progress{height:8px;border-radius:var(--pill);background:var(--raised);overflow:hidden}
.o-progress span{display:block;height:100%;background:linear-gradient(90deg,var(--lagon),#35b9cf);border-radius:inherit}

/* Chronologie (journal) */
.o-timeline{list-style:none;margin:0;padding:0}
.o-timeline li{display:grid;grid-template-columns:auto 1fr;gap:.25rem 1rem;padding:.75rem 0;border-bottom:1px solid var(--line-soft)}
.o-timeline li:last-child{border:0}
.o-timeline time{color:var(--muted);font-size:.8125rem;white-space:nowrap}

/* Carte membre (hero de l'espace) */
.o-hero{position:relative;overflow:hidden;border-radius:var(--r-lg);padding:2rem;background:radial-gradient(120% 140% at 100% 0,#0e7f95 0,#0a3a5c 45%,var(--abysse) 100%);color:#eef4fa;box-shadow:var(--shadow-lg)}
.o-hero h1{color:#fff;font-size:1.875rem;margin:0 0 .25rem}
.o-hero p{color:#b8cbdc;margin:0}
.o-hero .o-eyebrow{color:#7fe3f3}
.o-hero .o-btn--ghost{background:#ffffff14;border-color:#ffffff40;color:#fff}
.o-hero .o-btn--ghost:hover{background:#ffffff26;border-color:#fff}
.o-hero::after{content:"";position:absolute;right:-60px;bottom:-80px;width:280px;height:280px;border-radius:50%;border:1px solid #ffffff1a;box-shadow:0 0 0 40px #ffffff08,0 0 0 80px #ffffff05;pointer-events:none}

/* Personnes (annuaire, profils de la famille) */
.o-people{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem}
.o-personcard{display:flex;gap:.875rem;align-items:center;padding:1rem;background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--r-md)}
.o-personcard strong{display:block;font-family:var(--f-title);font-weight:600}
.o-personcard small{color:var(--muted)}

/* Divers */
.o-kv{display:flex;justify-content:space-between;gap:1rem;padding:.5rem 0;border-bottom:1px dashed var(--line-soft)}
.o-kv:last-child{border:0}
.o-kv--total{font:600 1.125rem var(--f-title);border-top:1px solid var(--line);border-bottom:0;padding-top:.75rem;margin-top:.25rem}
.o-divider{border:0;border-top:1px solid var(--line-soft);margin:1.25rem 0}
.o-code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.8125rem;background:var(--raised);padding:.1rem .35rem;border-radius:4px}
.o-matrix th,.o-matrix td{text-align:center}
.o-matrix td:first-child,.o-matrix th:first-child{text-align:left}
.o-matrix input{width:18px;height:18px;accent-color:var(--lagon)}
.o-matrix .o-matrix__group td{background:var(--ground);font:600 .8125rem var(--f-title);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.o-cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--line-soft);border-left:1px solid var(--line-soft)}
.o-cal__dow{padding:.5rem;font:500 .75rem var(--f-title);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border-right:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);background:var(--ground)}
.o-cal__day{min-height:110px;padding:.375rem;border-right:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);display:flex;flex-direction:column;gap:3px;min-width:0}
.o-cal__day.is-out{background:#fafcfd;color:#9aabbd}
.o-cal__day.is-today .o-cal__num{background:var(--lagon);color:#fff}
.o-cal__day.is-holiday{background:repeating-linear-gradient(135deg,#fff,#fff 6px,#f4f8fb 6px,#f4f8fb 12px)}
.o-cal__num{align-self:flex-start;font:600 .8125rem/24px var(--f-title);min-width:24px;height:24px;text-align:center;border-radius:50%}
.o-cal__ev{display:block;font-size:.75rem;line-height:1.3;padding:2px 6px;border-radius:5px;background:var(--lagon-soft);color:var(--ink);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-left:3px solid var(--c,var(--lagon))}
.o-cal__ev:hover{filter:brightness(.96);color:var(--ink)}
@media (max-width:760px){.o-cal{display:none}}
.o-agenda{list-style:none;margin:0;padding:0}
.o-agenda li{display:grid;grid-template-columns:64px 1fr;gap:1rem;padding:.875rem 0;border-bottom:1px solid var(--line-soft)}
.o-agenda__date{text-align:center;font-family:var(--f-title)}
.o-agenda__date b{display:block;font-size:1.5rem;line-height:1}
.o-agenda__date small{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:.6875rem}
.o-barchart{display:flex;align-items:flex-end;gap:6px;height:160px;padding-top:1rem}
.o-barchart span{flex:1;background:linear-gradient(180deg,#35b9cf,var(--lagon));border-radius:6px 6px 2px 2px;position:relative;min-height:2px}
.o-barchart span[data-v]::before{content:attr(data-v);position:absolute;top:-1.25rem;left:50%;transform:translateX(-50%);font:600 .6875rem var(--f-title);color:var(--muted);white-space:nowrap}
.o-login{min-height:calc(100vh - 220px);display:grid;place-items:center}
.o-login .o-card{padding:2rem}
[data-confirm]{cursor:pointer}

@media print{
  .o-side,.o-top,.o-mtop,.o-mfoot,.o-phead__actions,.o-filters,.o-pager,.o-btn{display:none!important}
  .o-shell{display:block}.o-content{padding:0}
  .o-card{box-shadow:none;border:0;padding:0}
  body{background:#fff}
}

/* Tableau de bord : liste compacte des dernières inscriptions */
.o-lastlist .o-person{align-items:center}
.o-lastlist .o-person strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.o-lastlist .o-pill{height:22px;font-size:.75rem;padding:0 .5rem}

/* 0.2.0 — retours du club (19/10/2026) */
.o-tabs--wrap{flex-wrap:wrap;overflow:visible;border-bottom:0;gap:.25rem .5rem;margin-bottom:1.25rem}
.o-tabs--wrap a{border:1px solid var(--line);border-radius:var(--pill);padding:.45rem .9rem;margin:0;font-size:.875rem}
.o-tabs--wrap a[aria-current]{background:var(--lagon-soft);border-color:var(--lagon)}
.o-input--date{max-width:13ch;font-variant-numeric:tabular-nums;letter-spacing:.02em}
.o-field .o-input--date{min-height:44px;max-width:none}
.o-terms{max-height:260px;overflow:auto;padding:1rem 1.125rem;border:1px solid var(--line);border-radius:var(--r-md);background:var(--ground);font-size:.9rem;line-height:1.55;margin:0 0 1rem}
.o-terms p{margin:0 0 .6rem}.o-terms p:last-child{margin:0}
.o-choice--single{margin:0}
.o-hint{display:flex;gap:.5rem;align-items:flex-start;color:var(--muted);font-size:.875rem;margin:.75rem 0 0}
.o-hint .o-i{flex:none;margin-top:.1rem;stroke:var(--muted)}
.o-team .o-table td{vertical-align:middle}
.o-team__who{display:flex;align-items:center;gap:.6rem}
.o-team__who small{display:block;color:var(--muted)}
