:root{
  --bg:#fff;--card:#fff;--ink:#111;--mut:#666;--line:#d9d9d9;--acc:#111;--acc-ink:#fff;
  --club:#6a2c91;--yes:#cdeed8;--yes-ink:#10532a;--no:#f8d3d0;--no-ink:#8a1f17;--oth:#dfe6f7;--oth-ink:#233a7a;--unk:#fff;
}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){
  --bg:#0c0c0c;--card:#161616;--ink:#f2f2f2;--mut:#9a9a9a;--line:#2e2e2e;--acc:#f2f2f2;--acc-ink:#0c0c0c;
  --club:#c9a2f0;--yes:#1c4a31;--yes-ink:#b6ebcb;--no:#552420;--no-ink:#f6c4bf;--oth:#273b66;--oth-ink:#cdd9f7;--unk:#161616;}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.4 system-ui,-apple-system,Segoe UI,sans-serif}
.wrap{max-width:1100px;margin:0 auto;padding:12px 16px 40px}
h1{font-size:1.25rem;margin:8px 0}
h2{font-size:1.05rem;margin:18px 0 8px}
.mut{color:var(--mut);font-size:.9rem}
.scroll{overflow-x:auto;border:1px solid var(--line);border-radius:10px;background:var(--card)}
table{border-collapse:separate;border-spacing:0;width:100%}
th,td{border-bottom:1px solid var(--line);border-right:1px solid var(--line);padding:0;text-align:center}
tr:last-child td{border-bottom:0}
th.name,td.name{position:sticky;left:0;background:var(--card);text-align:left;padding:6px 10px;min-width:124px;z-index:1}
th.rh{padding:6px 4px;min-width:74px;font-weight:400;background:var(--card)}
th.rh b{display:block}
th.rh span{display:block;font-size:.75rem;color:var(--mut)}
th.rh .ex{color:var(--club);font-weight:800;text-transform:uppercase;font-size:.8rem}
.cell{display:block;width:100%;min-height:58px;border:0;background:var(--unk);color:var(--ink);font:inherit;font-weight:600;cursor:pointer;padding:6px 4px}
.cell.yes{background:var(--yes);color:var(--yes-ink)}
.cell.no{background:var(--no);color:var(--no-ink)}
.cell.play{background:var(--yes);color:var(--yes-ink)}
.cell.block{background:var(--no);color:var(--no-ink);font-weight:500;font-size:.85rem}
.cell:disabled{cursor:default}
.cell:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--acc);outline-offset:-2px}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 12px}
button.tab,button.btn{font:inherit;border:1px solid var(--line);background:var(--card);color:var(--ink);padding:8px 14px;border-radius:999px;cursor:pointer;min-height:40px}
button.tab[aria-selected=true],button.btn.pri{background:var(--acc);color:var(--acc-ink);border-color:var(--acc)}
button.btn.dng{color:var(--no-ink)}
input,select{font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:8px;padding:8px 10px;min-height:40px;max-width:100%}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px;cursor:pointer}
.card h3{margin:0 0 8px;font-size:1rem}
.chips{display:flex;flex-wrap:wrap;gap:4px}
.chip{font-size:.78rem;border-radius:6px;padding:3px 6px;background:var(--bg);border:1px solid var(--line)}
.chip.g{background:var(--yes);color:var(--yes-ink);border-color:transparent}
.chip.r{background:var(--no);color:var(--no-ink);border-color:transparent}
.chip.o{background:var(--oth);color:var(--oth-ink);border-color:transparent}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:6px 0}
.panel{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:12px}
.link{word-break:break-all;font-size:.85rem;color:var(--mut)}
dialog{border:1px solid var(--line);border-radius:14px;background:var(--card);color:var(--ink);max-width:340px;width:calc(100% - 32px);padding:16px}
dialog::backdrop{background:rgba(0,0,0,.4)}
#toast{position:fixed;left:50%;bottom:20px;transform:translateX(-50%) translateY(80px);background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:10px;transition:transform .2s;z-index:9}
#toast.on{transform:translateX(-50%) translateY(0)}
.err{background:var(--no);color:var(--no-ink);padding:10px 12px;border-radius:10px}

/* Site du club */
.site{max-width:760px;margin:0 auto;padding:16px 16px 40px}
.hero{display:flex;justify-content:center;padding:12px 0 20px}
.hero img{width:min(100%,560px);height:auto;background:#fff;border-radius:18px}
.menu{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.big{display:flex;align-items:center;justify-content:center;min-height:68px;border:2px solid var(--ink);border-radius:14px;background:var(--ink);color:var(--bg);font:700 1.05rem/1.2 system-ui,sans-serif;letter-spacing:.04em;text-transform:uppercase;text-decoration:none;cursor:pointer;padding:12px}
.big:hover{background:var(--bg);color:var(--ink)}
.back{display:inline-flex;align-items:center;min-height:44px;margin:4px 0 8px;color:var(--ink);font-weight:600;text-decoration:none;cursor:pointer;border:0;background:none;font-size:1rem;padding:0}
.prose p{margin:0 0 .9em;white-space:pre-line}
.prose h3{margin:1.2em 0 .4em}
.prose ul{margin:0 0 1em;padding-left:1.2em}
.actu{display:flex;gap:12px;border-bottom:1px solid var(--line);padding:14px 0}
.actu img{width:96px;height:96px;object-fit:cover;border-radius:10px;flex:none;border:1px solid var(--line)}
.actu h3{margin:0 0 2px;font-size:1.05rem}
.actu .d{color:var(--mut);font-size:.85rem}
textarea{font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:8px;padding:8px 10px;width:100%;min-height:140px}

.teamrow th{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.teamrow th.rh span{color:inherit;opacity:.7}

td.ctr{padding:8px 10px}
thead th{padding:8px 10px;background:var(--card)}

.eff table{width:auto}
.eff .scroll{display:inline-block;max-width:100%}
.eff td{padding:7px 12px;white-space:nowrap}
.eff td.name{min-width:0}
.choice{display:flex;gap:8px}
.choice button{flex:1;min-height:56px;font:700 1.1rem system-ui;border-radius:12px;border:2px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer}
.choice .yes{background:var(--yes);color:var(--yes-ink)}
.choice .no{background:var(--no);color:var(--no-ink)}

td.elo{padding:0 8px;font-size:.85rem;color:var(--mut);white-space:nowrap}
.eff2 table{width:auto}
.eff2 th{background:var(--ink);color:var(--bg);padding:8px 10px;border-color:var(--ink)}
.eff2 td{padding:6px 10px;min-width:130px;vertical-align:top;font-size:.9rem;text-align:left;height:52px}
.eff2 td small{display:block;color:var(--mut);font-size:.78rem}
.eff2 .scroll{display:inline-block;max-width:100%}

.nm span{display:block;line-height:1.2}
.nm .pr{font-size:.85rem}
.nm .fn{font-weight:400;font-size:.8rem;white-space:nowrap;letter-spacing:-.01em}
.nm .el{font-size:.75rem;color:var(--mut)}
.eff2 td.g{background:var(--yes);color:var(--yes-ink)}
.eff2 td.r{background:var(--no);color:var(--no-ink)}
.eff2 td.g .el,.eff2 td.r .el{color:inherit;opacity:.75}
.eff2 th small{display:block;font-weight:400;font-size:.72rem;opacity:.8}
.eff2 th small.ex{color:var(--bg);font-weight:800;text-transform:uppercase;opacity:1}
.eff2 td{min-width:124px;height:auto}

/* Pages d'équipe : grand format, mais le tableau tient toujours dans la largeur de la page (tout se met à l'échelle) */
.scroll.team{container-type:inline-size;overflow:hidden}
.team table{table-layout:fixed;width:100%}
.team th.name,.team td.name{position:static;width:27%;min-width:0;padding:1.2cqw 1.4cqw}
.team .nm .pr{font-size:clamp(.62rem,1.9cqw,1.1rem)}
.team .nm .fn{font-size:clamp(.62rem,2cqw,1.15rem);letter-spacing:0;white-space:normal;overflow-wrap:anywhere}
.team .nm .el{font-size:clamp(.58rem,1.7cqw,.95rem);margin-top:2px}
.team th.rh{min-width:0;padding:1cqw .3cqw;overflow:hidden}
.team th.rh b{font-size:clamp(.62rem,1.9cqw,1.1rem)}
.team th.rh span{font-size:clamp(.5rem,1.35cqw,.88rem);overflow-wrap:anywhere;line-height:1.15}
.team .cell{min-height:clamp(54px,8.5cqw,84px);font-size:clamp(.62rem,2.1cqw,1.2rem);padding:0 2px}
.team .cell.block{font-size:clamp(.5rem,1.5cqw,.95rem);overflow-wrap:anywhere;line-height:1.1}
.team th.rh .ex{font-size:clamp(.42rem,1.25cqw,.8rem);overflow-wrap:normal;letter-spacing:-.02em}

.eff2 .scroll{border:0;background:none;overflow-x:auto}
.eff2 th.gap,.eff2 td.gap{min-width:0;width:18px;padding:0;border:0;background:none}
.eff2 td.void{border:0;background:none}
.eff2 table{border-collapse:separate}
.eff2 td{height:60px}

/* EFFECTIF : toute la largeur de l'écran, compact pour tout voir sans descendre */
.wrap.full{max-width:none}
.eff2 .scroll{display:block;width:100%}
.eff2 table{width:100%;table-layout:fixed}
.eff2 td{height:54px;padding:3px 12px;min-width:0}
.eff2 th{padding:6px 10px}
.eff2 td .nm span{line-height:1.12}
.eff2 .nm .pr,.eff2 .nm .fn{font-size:.88rem}
.eff2 .nm .fn{white-space:normal;overflow-wrap:anywhere}
.eff2 .nm .el{font-size:.76rem}
.eff2 th.gap,.eff2 td.gap{width:16px}
/* Petit/moyen écran : les lignes se réduisent selon la hauteur disponible pour que les 10 lignes tiennent sans descendre */
.eff2 td{height:clamp(42px,calc((100vh - 210px) / 10),54px);padding:2px 12px}
.eff2 .nm .pr,.eff2 .nm .fn{font-size:clamp(.68rem,1.7vh,.88rem)}
.eff2 .nm .el{font-size:clamp(.6rem,1.45vh,.76rem)}
/* EFFECTIF : chaque colonne est refermée (bords gauche et bas) */
.eff2 table{border-collapse:collapse}
.eff2 td{border:1px solid var(--line)}
.eff2 td.void,.eff2 td.gap{border:0}
.eff2 th.gap{border:0;background:none}
.eff2 tr:last-child td{border-bottom:1px solid var(--line)}
.eff2 tr:last-child td.void,.eff2 tr:last-child td.gap{border-bottom:0}

/* Pages d'équipe : tout visible au premier coup d'œil, sans descendre. La hauteur d'une ligne = place disponible / nombre de joueurs */
.team{--rh:clamp(38px,calc((100vh - var(--chrome,230px)) / var(--rows,8)),96px)}
.team .cell{min-height:var(--rh);font-size:clamp(.62rem,min(2.1cqw,2.6vh),1.2rem)}
.team td.name,.team th.name{padding-top:2px;padding-bottom:2px}
.team td.name{height:var(--rh)}
.team .nm span{line-height:1.12}
.team .nm .pr{font-size:clamp(.62rem,min(1.9cqw,2.2vh),1.1rem)}
.team .nm .fn{font-size:clamp(.62rem,min(2cqw,2.3vh),1.15rem)}
.team .nm .el{font-size:clamp(.56rem,min(1.7cqw,1.9vh),.95rem);margin-top:0}
.team th.rh{padding-top:clamp(2px,1vh,10px);padding-bottom:clamp(2px,1vh,10px)}
.team th.rh b{font-size:clamp(.62rem,min(1.9cqw,2.2vh),1.1rem)}
.team th.rh span{font-size:clamp(.5rem,min(1.35cqw,1.7vh),.88rem)}
.team{--rh:clamp(34px,calc((100vh - var(--chrome,230px)) / var(--rows,8)),96px)}

/* Pages d'équipe : toutes les colonnes de rondes ont la même largeur (celle de la colonne « Classement »), colonne des noms plus étroite, marges légères */
.wrap.pad{padding:24px 28px 32px}
.tw{--namew:172px;--colw:104px;width:min(100%,calc(var(--namew) + var(--n) * var(--colw)));margin:0 auto}
.tw h1{font-size:1.3rem;margin:0 0 12px}
.tw .scroll.team{width:100%;border-radius:14px}
.team th.name,.team td.name{width:min(var(--namew),27cqw);padding:2px 12px}
.team .nm .fn{white-space:normal}
.team td{padding:3px}
.team td.name{padding:2px 12px}
.team .cell{min-height:calc(var(--rh) - 6px);border-radius:8px}
.team th.rh span{font-size:clamp(.5rem,min(1.3cqw,1.7vh),.74rem)}
.tw{--namew:196px}
.team .nm .pr,.team .nm .fn{font-size:clamp(.62rem,min(1.9cqw,2.2vh),1rem)}
.team .nm .fn{white-space:nowrap}
@container (max-width:560px){.team .nm .fn{white-space:normal}}
@container (max-width:560px){.team td{padding:1px}.team .cell{border-radius:5px;min-height:calc(var(--rh) - 2px)}}
/* EFFECTIF : même largeur de page que les tableaux N1, N2… (on passe de l'un à l'autre sans que la page change de taille) */
.tw .eff2 .scroll{overflow:visible}
.eff2 td{padding:2px 8px}
.eff2 .nm .pr,.eff2 .nm .fn{font-size:clamp(.62rem,1.6vh,.76rem)}
.eff2 .nm .fn{white-space:nowrap}
.eff2 .nm .pr,.eff2 .nm .fn{font-size:clamp(.58rem,1.5vh,.7rem)}
/* EFFECTIF : noms aussi grands que possible, sans descendre (taille limitée par la largeur ET la hauteur de l'écran) */
.eff2{container-type:inline-size}
.eff2 td{height:clamp(46px,calc((100vh - 230px) / 10),66px);padding:3px 9px}
.eff2 .nm .pr,.eff2 .nm .fn{font-size:clamp(.6rem,min(1.36cqw,2.1vh),.95rem)}
.eff2 .nm .el{font-size:clamp(.55rem,min(1.15cqw,1.8vh),.8rem)}
.eff2 .nm .fn{white-space:normal;overflow-wrap:anywhere}

/* PROCHAIN MATCH */
.pm-title{text-align:center;margin:4px 0 14px}
.pm-big{font-size:clamp(1.8rem,5vh,2.8rem);font-weight:800;letter-spacing:.18em;line-height:1.1}
.pm-date{font-size:clamp(1.1rem,3vh,1.6rem);margin-top:2px}
.pgrid{display:grid;grid-template-columns:repeat(var(--c),minmax(0,1fr));gap:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;container-type:inline-size;--sh:clamp(34px,calc((100vh - 330px) / 8),54px)}
.pcol{border-right:1px solid var(--line);display:flex;flex-direction:column}
.pcol:last-child{border-right:0}
.ph{background:var(--ink);color:var(--bg);text-align:center;padding:7px 4px;font-size:1rem;font-weight:600}
.ps{text-align:center;padding:4px 3px;border-bottom:2px solid var(--ink);min-height:2.6em}
.ps span{display:block;font-size:.76rem;line-height:1.2;overflow-wrap:anywhere}
.ps .ex{color:var(--club);font-weight:800}
.ps .forfait{font-weight:800;letter-spacing:.05em;padding-top:.5em}
.slot{height:var(--sh);border-bottom:1px solid var(--line);display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:2px 3px}
.slot.g{background:var(--yes);color:var(--yes-ink)}
.pn{font-size:clamp(.68rem,1.35cqw,.98rem);line-height:1.15}
.pe{font-size:clamp(.58rem,1.1cqw,.8rem);opacity:.75;line-height:1.15}
.wait{min-height:calc(var(--sh) * 1.6);padding:8px 4px;text-align:center;font-size:clamp(.66rem,1.25cqw,.92rem);line-height:1.35;flex:1}

/* COMPO VALIDÉE */
.valid{display:block;width:100%;border:0;border-top:1px solid var(--line);background:none;color:inherit;font:inherit;font-size:clamp(.62rem,1.15cqw,.8rem);font-weight:700;padding:6px 2px;cursor:pointer}
.valid:hover{background:var(--line)}
.pact{display:flex;border-top:1px solid var(--line)}.pact .valid{border-top:0}.pact .valid+.valid{border-left:1px solid var(--line)}
.slot.ech{position:relative}
.slot.ech.wh{background:#fff;color:#111}
.slot.ech.bk{background:#111;color:#fff}
.slot.ech .pe{opacity:.7}
.bn{position:absolute;left:4px;top:2px;font-size:.65rem;font-weight:800;opacity:.6}
.tag{cursor:grab;border:1px dashed currentColor;border-radius:6px;padding:1px 6px;text-align:center;user-select:none;margin:1px auto;max-width:94%}
.wait .tag{border-color:var(--line);display:block}
.tag.sel{outline:2px solid var(--club);outline-offset:1px}
.mk{margin-right:3px;font-weight:700}
.wait .tag .pn,.wait .tag .pe{display:inline;margin-right:4px}

/* ESTHÉTIQUE : plein écran, gris clair */
.pgrid{height:calc(100vh - 150px);min-height:520px;--sh:clamp(34px,calc((100vh - 450px) / 8),96px)}
.ph{font-size:clamp(1.2rem,2.6cqw,1.9rem);padding:10px 4px}
.ps{min-height:0}
.ps span{font-size:clamp(.78rem,1.45cqw,1.1rem);line-height:1.3}
.ps .hr{font-weight:700;min-height:1.3em}
.ps .forfait{font-size:clamp(.9rem,1.6cqw,1.2rem)}
.pn{font-size:clamp(.78rem,1.7cqw,1.2rem)}
.pe{font-size:clamp(.64rem,1.2cqw,.9rem)}
.wait{font-size:clamp(.74rem,1.5cqw,1.05rem)}
.slot.ech.bk{background:#dcdcdc;color:#111}
.slot.ech .pe{opacity:.65}
.valid{font-size:clamp(.78rem,1.4cqw,1rem);padding:10px 2px}
.ps .forfait{padding-top:0}

/* AJUSTEMENTS */
.slot{padding:2px 12px}
.pn{font-size:clamp(.7rem,1.2cqw,.95rem);white-space:nowrap}
.pe{font-size:clamp(.58rem,1vw,.78rem)}
.tag{white-space:nowrap;padding:2px 8px;max-width:none}
.tag .pn,.tag .pe{white-space:nowrap}
.wait{padding:8px 10px;font-size:clamp(.7rem,1.2cqw,.95rem)}
.wait .tag{display:block;width:max-content;max-width:100%;margin:3px auto}
.valid{font-size:.72rem;font-weight:600;padding:7px 8px;letter-spacing:.02em}
.pact{padding:0 4px;gap:4px}.pact .valid{border-left:0!important}

.pact{display:block;padding:0}
.moy{text-align:center;font-size:.8rem;padding:7px 4px;border-top:1px solid var(--line)}
.coul{display:flex;border-top:1px solid var(--line)}
.coul .valid{border-top:0;flex:1;padding:7px 4px}.coul .valid+.valid{border-left:1px solid var(--line)}
.coul .valid.on{background:#dcdcdc}
.pact>.valid{border-top:1px solid var(--line)}
.rh .hh{font-weight:700}
.nada{flex:1;background:var(--bg)}
.wait{min-height:56px}.pcol{min-height:0}.pgrid{overflow:hidden}
.slot .tag{padding:0 8px;margin:0;line-height:1.1}.slot .tag .pn,.slot .tag .pe{line-height:1.15}
.ph,.ps,.slot,.pact,.valid{flex:none}.wait{flex:1 1 0;min-height:56px}
.pgrid{--sh:clamp(30px,calc((100vh - 500px) / 8),96px)}.wait{min-height:40px}
.tag,.wait .tag{border:0;border-radius:6px}.tag:hover{background:rgba(128,128,128,.18)}
.fill{flex:none}.wait{display:flex;flex-direction:column;justify-content:center;align-items:center}

.mail{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;border:0;border-top:1px solid var(--line);background:none;color:inherit;font:inherit;font-size:.78rem;padding:6px 4px;cursor:pointer}
.mail i{width:16px;height:16px;border:1.5px solid currentColor;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-style:normal;font-size:.7rem;font-weight:800;line-height:1}
.mail.on i{background:var(--yes);color:var(--yes-ink);border-color:var(--yes-ink)}
.mail:hover{background:var(--line)}
.pgrid{--sh:clamp(30px,calc((100vh - 530px) / 8),96px)}

.ch{height:.85em;width:.85em;vertical-align:-.1em;border-radius:2px}
td.name:has(.mute){background:#e3e3e3}
.alerte{background:#fde0e0;color:#a40000;font-weight:800;font-size:.72rem;text-align:center;padding:6px 4px;border-top:1px solid #a40000}
.alerte{padding:4px;line-height:1.25}.wait{min-height:24px}

/* NOTIFS */
.tab{position:relative}
.badge{position:absolute;top:-7px;right:-7px;min-width:20px;height:20px;padding:0 5px;border-radius:10px;background:#d32f2f;color:#fff;font-size:.72rem;font-weight:800;display:flex;align-items:center;justify-content:center;box-sizing:border-box}
.notifs{max-width:760px;margin:6px auto}
.notif{display:flex;gap:14px;padding:10px 12px;border-bottom:1px solid var(--line);font-size:.95rem}
.notif .nt{flex:none;color:var(--mut);font-size:.8rem;min-width:84px;padding-top:2px}
.notif.new{font-weight:700;background:rgba(128,128,128,.1)}

/* JEUNES : colonne « Catégorie » (U10 – (2) / date de naissance) */
th.cat,td.cat{width:clamp(70px,13cqw,118px)}
.team th.cath{font-weight:400;font-size:clamp(.5rem,min(1.3cqw,1.7vh),.74rem);color:var(--mut);width:clamp(70px,13cqw,118px)}
.cat span{display:block;line-height:1.15;white-space:nowrap}
.cat .cu{font-weight:700;font-size:clamp(.6rem,min(1.6cqw,2vh),.95rem)}
.cat .cd{font-size:clamp(.52rem,min(1.3cqw,1.7vh),.8rem);color:var(--mut)}
button.catb{display:block;width:100%;border:0;background:none;color:inherit;font:inherit;cursor:pointer;padding:0}
button.catb:hover{background:var(--line)}

.ps .adv{font-weight:600}
.pbs{flex:none;border-top:2px solid var(--no-ink);background:var(--no);color:var(--no-ink);font-size:.72rem;line-height:1.25;padding:5px 6px;text-align:left}

/* Mutés : ligne en gris clair (nom + catégorie) */
:root{--mu:#ececec}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--mu:#2a2a2a}}
tr.mu td.name,tr.mu td.cat{background:var(--mu)}

/* N1 / N3 : gros trait noir entre deux catégories d'âge */
.team tr.cut td{border-top:4px solid var(--ink)}

/* ===== 3 LIGNES : ADULTES / JEUNES / NOTIFICATIONS ===== */
.tabbar{margin:6px 0 12px}
.tabbar .tabs{margin:0 0 5px;gap:6px;align-items:center;flex-wrap:nowrap;overflow-x:auto}
.tabbar button.tab{min-height:32px;padding:4px 12px;font-size:.88rem;flex:none}
.tabsec{flex:none;min-width:92px;font-weight:800;letter-spacing:.06em;font-size:.88rem}
.pgrid{height:calc(100vh - 200px);min-height:480px;--sh:clamp(28px,calc((100vh - 565px) / 8),96px)}
.cell.prop{background:#ffe55c;color:#3d3200;font-weight:700}
.prop-box{background:#fff4b3;color:#3d3200;border-radius:8px;padding:6px 8px;align-items:center}
.notif .ns{flex:none;font-size:.62rem;font-weight:800;letter-spacing:.06em;border:1px solid var(--line);border-radius:999px;padding:2px 7px;align-self:flex-start;margin-top:2px}
.notif.go{cursor:pointer}.notif.go:hover{background:rgba(128,128,128,.14)}
.mail{padding:4px 4px;font-size:.74rem}
.moy{padding:5px 4px}
.coul .valid{padding:5px 4px}
.pact>.valid{padding:6px 4px}
/* Composition / Mailing / Table + Couleur : texte à gauche, coche à droite, alignés */
.mail{justify-content:space-between;gap:8px;padding-left:12px;padding-right:12px;text-align:left}
/* Menus du haut + accueil */
.topnav{display:flex;gap:10px;margin:0 0 10px;padding-bottom:8px;border-bottom:1px solid var(--line)}
.dd{position:relative}
.ddb{font:inherit;font-weight:800;letter-spacing:.06em;font-size:.9rem;background:none;color:var(--ink);border:1px solid var(--ink);border-radius:999px;padding:4px 14px;cursor:pointer}
.dd:hover .ddb,.dd:focus-within .ddb{background:var(--ink);color:var(--bg)}
.ddm{display:none;position:absolute;left:0;top:100%;padding-top:4px;min-width:200px;z-index:20}
.dd:hover .ddm,.dd:focus-within .ddm{display:block}
.ddm{background:none}
.ddm>button{display:block;width:100%;text-align:left;font:inherit;font-size:.92rem;background:var(--card);color:var(--ink);border:1px solid var(--line);border-top-width:0;padding:9px 16px;cursor:pointer}
.ddm>button:first-child{border-top-width:1px;border-radius:10px 10px 0 0}.ddm>button:last-child{border-radius:0 0 10px 10px}
.ddm>button:hover{background:var(--ink);color:var(--bg)}
.home{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;min-height:calc(100vh - 140px)}
.home .logo{width:min(620px,80vw);height:auto}
.logot{font-weight:800;letter-spacing:.18em;font-size:clamp(1rem,2.4vw,1.5rem)}
.ptitre{margin:30px 0}
