/* Polices auto-hébergées (variables, sous-ensemble latin — couvre le français) :
   plus aucun appel à fonts.googleapis.com/gstatic.com (RGPD). */
@font-face{font-family:"Archivo";font-style:normal;font-weight:400 900;font-stretch:75% 125%;font-display:swap;src:url("fonts/archivo.woff2") format("woff2")}
@font-face{font-family:"Public Sans";font-style:normal;font-weight:400 600;font-display:swap;src:url("fonts/public-sans.woff2") format("woff2")}
@font-face{font-family:"Azeret Mono";font-style:normal;font-weight:400 600;font-display:swap;src:url("fonts/azeret-mono.woff2") format("woff2")}

:root{
  --ink:#0A2A3D; --paper:#EEF2F5; --craie:#FFFFFF; --accent:#006DA6;
  --gazon:#2F6B4F; --plot:#F4C13C; --alerte:#C2452D; --succes:#2F8F5B;
  --gris:#66798A; --trait:rgba(10,42,61,.14);
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--paper);color:var(--ink);font-family:"Public Sans",system-ui,sans-serif;font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}
h1,h2,h3{font-family:"Archivo",sans-serif;font-variation-settings:"wdth" 110;margin:0}
h1{font-weight:900;text-transform:uppercase;letter-spacing:-.02em;font-size:clamp(20px,3vw,30px);line-height:.95}
h2{font-weight:800;text-transform:uppercase;letter-spacing:.01em;font-size:18px}
h3{font-weight:700;font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--gris)}
.mono{font-family:"Azeret Mono",monospace;font-size:12px;letter-spacing:-.02em}
button{font:inherit;cursor:pointer}

.topbar{position:sticky;top:0;z-index:20;background:var(--ink);color:var(--paper);padding:12px 20px;display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.topbar h1{color:var(--craie)}
.brand{display:flex;align-items:center;gap:12px}
.brand-logo{height:44px;width:auto;display:block}
.spacer{flex:1}
.weeknav{display:flex;align-items:center;gap:8px}
.weeknav button{border:1px solid rgba(255,255,255,.25);background:transparent;color:var(--paper);border-radius:2px;padding:5px 10px;font-family:"Azeret Mono",monospace;font-size:12px}
.weeknav button:hover{background:rgba(255,255,255,.12)}
.weeknav .lab{font-family:"Azeret Mono",monospace;font-size:12px;min-width:150px;text-align:center}

.account{display:flex;align-items:center;gap:10px;font-size:13px}
.account .who{font-family:"Azeret Mono",monospace;font-size:12px;color:var(--plot)}
.account button{border:1px solid rgba(255,255,255,.25);background:transparent;color:var(--paper);border-radius:2px;padding:6px 12px;font-size:12px;text-transform:uppercase;letter-spacing:.05em}
.account button:hover{background:rgba(255,255,255,.12)}

nav.tabs{position:sticky;top:60px;z-index:19;background:var(--paper);border-bottom:1px solid var(--trait);padding:0 20px;display:flex;gap:2px;overflow:auto}
nav.tabs button{border:0;background:transparent;padding:14px 16px;color:var(--gris);font-weight:600;font-size:13px;text-transform:uppercase;letter-spacing:.05em;border-bottom:3px solid transparent;white-space:nowrap}
nav.tabs button[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--accent)}
main{padding:24px 20px 80px;max-width:1180px;margin:0 auto}
.panel{display:none}
.panel.on{display:block}
.head{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.head p{margin:0;color:var(--gris);max-width:60ch;font-size:14px}
.card{background:var(--craie);border:1px solid var(--trait);border-radius:3px;padding:18px}
.grid2{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:20px;align-items:start}
@media(max-width:900px){.grid2{grid-template-columns:1fr}}

/* planning */
.week-scroll{overflow-x:auto}
.week{display:grid;grid-template-columns:56px repeat(7,minmax(0,1fr));background:var(--craie);border:1px solid var(--trait);border-radius:3px;overflow:hidden;min-width:720px}
.daycol{border-left:1px solid var(--trait)}
.dayhead{padding:8px 6px;border-bottom:1px solid var(--trait)}
.dayhead .d{font-family:"Archivo";font-weight:800;text-transform:uppercase;font-size:12px;letter-spacing:.04em}
.dayhead .n{font-family:"Azeret Mono",monospace;font-size:11px;color:var(--gris)}
.dayhead.we{background:#F6F3E8}
.dayhead.today{box-shadow:inset 0 3px 0 var(--plot)}
.hourlab{font-family:"Azeret Mono",monospace;font-size:10px;color:var(--gris);text-align:right;padding:2px 6px 0 0;border-bottom:1px dotted var(--trait);height:44px}
.body{position:relative}
.line{position:absolute;left:0;right:0;border-top:1px dotted var(--trait)}
.ev{position:absolute;border-radius:2px;padding:4px 5px;overflow:hidden;font-size:11px;line-height:1.25;border-left:3px solid;cursor:pointer}
.ev .t{font-weight:600;display:block}
.ev .q{font-family:"Azeret Mono",monospace;font-size:10px;opacity:.8}
.ev-entrainement{background:#E1EEF5;border-color:var(--accent);color:#0A3A52}
.ev-match_championnat{background:var(--ink);border-color:var(--plot);color:var(--craie)}
.ev-match_amical{background:#FBEFCB;border-color:var(--plot);color:#5A4400}
.ev-protege{background:repeating-linear-gradient(45deg,#F2F2EE,#F2F2EE 5px,#E6E6E0 5px,#E6E6E0 10px);border-color:var(--gris);color:var(--gris);cursor:default}
.ev-fermeture{background:repeating-linear-gradient(45deg,#F7DCD6,#F7DCD6 5px,#F0C9C1 5px,#F0C9C1 10px);border-color:var(--alerte);color:#7A2517;cursor:default}
.legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:12px;font-size:12px;color:var(--gris)}
.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px}

/* terrains */
.pitchwrap{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start}
@media(max-width:640px){.pitchwrap{grid-template-columns:1fr}}
.pitch h3{margin-bottom:6px}
svg.terrain{width:100%;display:block;background:var(--gazon);border-radius:3px}
svg.terrain .quart{fill:transparent;stroke:var(--craie);stroke-width:1.5;cursor:pointer;transition:fill .12s}
svg.terrain .quart:hover{fill:rgba(255,255,255,.16)}
svg.terrain .quart[data-sel="1"]{fill:var(--plot);fill-opacity:.85}
svg.terrain .quart[data-off="1"]{fill:rgba(10,42,61,.55);cursor:not-allowed;stroke-dasharray:3 3}
svg.terrain .code{font-family:"Azeret Mono",monospace;font-size:11px;fill:var(--craie);pointer-events:none;font-weight:600}
svg.terrain .code[data-sel="1"]{fill:var(--ink)}
svg.terrain .chalk{fill:none;stroke:var(--craie);stroke-width:1.2;opacity:.55;pointer-events:none}
.scalenote{font-family:"Azeret Mono",monospace;font-size:10px;color:var(--gris);margin-top:4px}
.anxbox{width:50%}

/* calendrier */
.cal{border:1px solid var(--trait);border-radius:2px;overflow:hidden}
.calhead{display:flex;align-items:center;justify-content:space-between;padding:6px;background:var(--paper)}
.calhead span{font-family:"Archivo";font-weight:700;text-transform:uppercase;font-size:12px;letter-spacing:.04em}
.calhead button{border:0;background:transparent;padding:2px 8px;font-size:16px;line-height:1;color:var(--ink)}
.calhead button:disabled{opacity:.25;cursor:not-allowed}
.calgrid{display:grid;grid-template-columns:repeat(7,1fr)}
.calgrid .dow{font-family:"Azeret Mono",monospace;font-size:9px;color:var(--gris);text-align:center;padding:4px 0}
.calgrid .day{border:0;background:var(--craie);padding:7px 0 9px;font-family:"Azeret Mono",monospace;font-size:12px;position:relative;color:var(--ink)}
.calgrid .day:hover:not(:disabled){background:#E1EEF5}
.calgrid .day:disabled{color:#C6CEC9;cursor:not-allowed}
.calgrid .day[aria-pressed="true"]{background:var(--ink);color:var(--plot);font-weight:600}
.calgrid .day .dot{position:absolute;left:50%;bottom:3px;transform:translateX(-50%);width:4px;height:4px;border-radius:50%;background:var(--accent)}
.calgrid .day[aria-pressed="true"] .dot{background:var(--plot)}

/* formulaires */
label{display:block;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--gris);margin:14px 0 5px}
select,input[type=time],input[type=date],input[type=number],input[type=email],input[type=password],input[type=text]{width:100%;padding:9px 10px;border:1px solid var(--trait);border-radius:2px;background:var(--craie);font:inherit;color:var(--ink)}
select:focus-visible,input:focus-visible,button:focus-visible,.ev:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.chip{border:1px solid var(--trait);background:var(--craie);padding:6px 10px;border-radius:2px;font-family:"Azeret Mono",monospace;font-size:12px}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--craie);border-color:var(--ink)}
.cta{margin-top:18px;width:100%;background:var(--accent);color:var(--craie);border:0;padding:13px;border-radius:2px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-size:13px}
.cta:hover{background:#045686}
.cta.ghost{background:transparent;color:var(--ink);border:1px solid var(--ink)}
.cta.danger{background:var(--alerte)}
.msg{margin-top:12px;padding:10px 12px;border-radius:2px;font-size:13px;border-left:3px solid}
.msg.ok{background:#E3F1E9;border-color:var(--succes);color:#1F5C3D}
.msg.ko{background:#F7DCD6;border-color:var(--alerte);color:#7A2517}
.rule{font-size:12px;color:var(--gris);margin-top:6px}
#suggestions .mini{margin:3px 6px 3px 0}

.tablewrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:13px}
th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--gris);padding:8px;border-bottom:1px solid var(--trait)}
td{padding:8px;border-bottom:1px solid var(--trait);vertical-align:top}
tr:last-child td{border-bottom:0}
.tag{font-family:"Azeret Mono",monospace;font-size:10px;padding:2px 6px;border-radius:2px;text-transform:uppercase;display:inline-block;line-height:1.4}
.tag.attente{background:#EAEAE4;color:var(--gris)}
.tag.place{background:var(--ink);color:var(--plot)}
.tag.ext{background:#E3F1E9;color:var(--succes)}
.mini{border:1px solid var(--trait);background:var(--craie);padding:5px 8px;border-radius:2px;font-size:12px}
.mini:hover{background:var(--paper)}
.selrow{border:1px solid var(--trait);border-radius:2px;padding:5px 6px;font-size:12px;max-width:130px;margin-right:4px}
.empty{color:var(--gris);font-size:13px;padding:14px 0}
.gridref{overflow:auto}
.gridref table{min-width:760px}
.gridref td,.gridref th{white-space:nowrap;font-size:11px}

/* connexion (modale simple) */
.overlay{position:fixed;inset:0;background:rgba(10,42,61,.55);display:none;align-items:center;justify-content:center;z-index:30;padding:20px}
.overlay.on{display:flex}
.modal{background:var(--craie);border-radius:3px;padding:22px;max-width:360px;width:100%}
.modal h2{margin-bottom:14px}
.modal .cta{margin-top:16px}
.linklike{background:none;border:0;color:var(--gris);text-decoration:underline;font-size:12px;margin-top:10px;padding:0}

@media print{
  .topbar,nav.tabs,.noprint{display:none!important}
  body{background:#fff}
  .panel{display:none!important}
  .panel.on{display:block!important}
  .week-scroll{overflow:visible!important}
  .week{min-width:0!important}
}
