*{box-sizing:border-box}html{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif}body{margin:0;--bg:#0d1117;--panel:#151b24;--panel2:#10161e;--text:#edf1f5;--muted:#94a0ad;--line:#2b3441;--accent:#5f8aa8;--accent2:#a9bfd1;--ok:#79be9b;--okbg:#173127;--maybe:#d2ab5c;--maybebg:#382d18;--danger:#df7777;--dangerbg:#3b2022;--sidebar:#090d12;--hero1:#111923;--hero2:#213347;--radius:16px;--shadow:0 16px 42px rgba(0,0,0,.24);background:radial-gradient(circle at top,var(--panel) 0,var(--bg) 46%);color:var(--text);min-height:100vh}.theme-neutral{--accent:#778b9d}.theme-knight{--bg:#070a10;--panel:#111722;--panel2:#0c121a;--text:#eef4f8;--muted:#8291a0;--line:#273645;--accent:#86b9d5;--accent2:#c5d7e3;--ok:#70c1c8;--okbg:#123139;--sidebar:#05070b;--hero1:#07101b;--hero2:#17324a;--radius:9px}.theme-delta{--bg:#101410;--panel:#1a201b;--panel2:#151a16;--text:#e7e3d9;--muted:#9da59b;--line:#353d35;--accent:#87945f;--accent2:#bac398;--ok:#9bbf74;--okbg:#263323;--sidebar:#090c0a;--hero1:#0a0d0b;--hero2:#283126;--radius:11px}.theme-warhammer{--bg:#17120f;--panel:#251d18;--panel2:#1b1612;--text:#eadfcb;--muted:#ab9c85;--line:#4a3c30;--accent:#a44439;--accent2:#c59b5d;--ok:#8fa06a;--okbg:#2d321f;--sidebar:#0f0b09;--hero1:#160d0b;--hero2:#4b201a;--radius:5px;font-family:Georgia,"Times New Roman",serif}.theme-startrek{--bg:#070b18;--panel:#11182a;--panel2:#0d1322;--text:#eef4ff;--muted:#9daccc;--line:#2a3855;--accent:#d9aa4f;--accent2:#77a9dc;--ok:#78b9b8;--okbg:#163436;--sidebar:#050814;--hero1:#0d1731;--hero2:#263b6e;--radius:22px}.theme-achtung{--bg:#262119;--panel:#352e23;--panel2:#2c261e;--text:#eee2c8;--muted:#b2a58d;--line:#5a4f3d;--accent:#9d895a;--accent2:#c9b77f;--ok:#92965e;--okbg:#333820;--sidebar:#17140f;--hero1:#201b13;--hero2:#51452e;--radius:4px;font-family:"Courier New",ui-monospace,monospace}.theme-etu{--bg:#08111d;--panel:#111d2a;--panel2:#0c1622;--text:#f4f1e8;--muted:#9fb0c2;--line:#2f4358;--accent:#d8b56a;--accent2:#d4544b;--ok:#76b7a2;--okbg:#16352e;--maybe:#d8a85a;--maybebg:#3b2c18;--danger:#d9665d;--dangerbg:#43221f;--sidebar:#07101a;--hero1:#091827;--hero2:#153858;--radius:12px;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}.theme-nautilus{--bg:#07171b;--panel:#0d2529;--panel2:#091d21;--text:#e6eee9;--muted:#8fa7a4;--line:#28464a;--accent:#b7793e;--accent2:#79b7b6;--ok:#74b69d;--okbg:#16332d;--maybe:#d2a15c;--maybebg:#3a2c19;--danger:#c9655a;--dangerbg:#3b211f;--sidebar:#051114;--hero1:#071519;--hero2:#174451;--radius:10px;font-family:Georgia,"Times New Roman",serif}.theme-dcc{--bg:#17130d;--panel:#252016;--panel2:#1d1811;--text:#efe3c5;--muted:#b3a587;--line:#514733;--accent:#c44c35;--accent2:#d2b15f;--ok:#91a768;--okbg:#2b3420;--maybe:#d3a548;--maybebg:#3e3018;--danger:#d65b48;--dangerbg:#46231d;--sidebar:#0e0b08;--hero1:#17100a;--hero2:#4a2d16;--radius:3px;font-family:Georgia,"Times New Roman",serif}.theme-traveller{--bg:#05070b;--panel:#0d1118;--panel2:#080c12;--text:#f0f3f6;--muted:#8e9aa8;--line:#29313a;--accent:#d5523f;--accent2:#d7dde4;--ok:#72b5a8;--okbg:#14312c;--maybe:#d3a65a;--maybebg:#392d18;--danger:#df675b;--dangerbg:#3a201d;--sidebar:#020407;--hero1:#05080c;--hero2:#1c2835;--radius:2px;font-family:ui-monospace,"SFMono-Regular",Consolas,monospace}.theme-runequest{--bg:#1b140d;--panel:#2c2116;--panel2:#22190f;--text:#f0e1c1;--muted:#b7a27c;--line:#57452e;--accent:#c4863d;--accent2:#6fa8a0;--ok:#8cab68;--okbg:#2a341e;--maybe:#d2a24b;--maybebg:#3d2f18;--danger:#bb5546;--dangerbg:#40221d;--sidebar:#120d08;--hero1:#20150b;--hero2:#624124;--radius:8px;font-family:Georgia,"Times New Roman",serif}.theme-fallout{--bg:#10120e;--panel:#1b2017;--panel2:#13170f;--text:#e7e3c8;--muted:#a7aa86;--line:#3c4630;--accent:#d0b24f;--accent2:#72a76b;--ok:#7fb477;--okbg:#1c3420;--maybe:#d4a94d;--maybebg:#3b2f17;--danger:#c7604f;--dangerbg:#40221c;--sidebar:#090b08;--hero1:#11150d;--hero2:#384522;--radius:6px;font-family:ui-monospace,"SFMono-Regular",Consolas,monospace}.theme-cthulhu{--bg:#0b1110;--panel:#151d1b;--panel2:#101715;--text:#e5e1d5;--muted:#94a19b;--line:#31413b;--accent:#769285;--accent2:#b4a67f;--ok:#789e83;--okbg:#1a3025;--maybe:#b99a5e;--maybebg:#352b1c;--danger:#a9534f;--dangerbg:#38201f;--sidebar:#070c0b;--hero1:#0b1210;--hero2:#213a34;--radius:7px;font-family:Georgia,"Times New Roman",serif}.has-bg:before{content:"";position:fixed;inset:0;background-image:linear-gradient(rgba(0,0,0,var(--campaign-overlay)),rgba(0,0,0,var(--campaign-overlay))),var(--campaign-bg);background-size:cover;background-position:center;background-attachment:fixed;z-index:-2}.has-bg:after{content:"";position:fixed;inset:0;background:radial-gradient(circle at top,transparent 0,var(--bg) 88%);z-index:-1}.app{display:grid;grid-template-columns:245px 1fr;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;padding:24px 17px;background:color-mix(in srgb,var(--sidebar) 96%,transparent);border-right:1px solid var(--line);backdrop-filter:blur(12px)}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--text);margin-bottom:28px}.brand-mark{width:42px;height:42px;display:grid;place-items:center;border-radius:var(--radius);border:1px solid var(--accent);background:linear-gradient(135deg,var(--panel2),var(--accent));font:900 11px Arial;letter-spacing:.08em}.brand b{display:block;font-size:17px}.brand small{display:block;color:var(--muted);font-size:11px;margin-top:2px}.sidebar nav{display:grid;gap:5px}.sidebar nav a{padding:12px 13px;border-radius:var(--radius);color:var(--muted);text-decoration:none;font-weight:700}.sidebar nav a:hover{background:var(--panel);color:var(--text);box-shadow:inset 3px 0 0 var(--accent)}.sidebar-user{position:absolute;left:17px;right:17px;bottom:18px;border-top:1px solid var(--line);padding-top:14px;display:grid;gap:3px}.sidebar-user span,.sidebar-user a{font-size:12px;color:var(--muted)}.sidebar-user a{margin-top:8px}.content{padding:28px 32px 50px;min-width:0}.footer{margin-top:35px;text-align:center;color:var(--muted);font-size:12px}.page-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-end;margin-bottom:22px}.page-head h1{margin:4px 0 5px;font-size:31px}.page-head p{margin:0;color:var(--muted)}.eyebrow{font:800 10px/1 Arial,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.card{background:linear-gradient(180deg,color-mix(in srgb,var(--panel) 96%,transparent),color-mix(in srgb,var(--panel2) 96%,transparent));border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;backdrop-filter:blur(8px)}.card h2{margin-top:0}.narrow{max-width:680px}.btn{appearance:none;border:1px solid var(--accent);background:var(--accent);color:#fff;border-radius:calc(var(--radius)*.78);padding:11px 15px;font-weight:850;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.theme-startrek .btn,.theme-knight .btn,.theme-fallout .btn{color:#07111b}.btn.secondary{background:var(--panel);color:var(--text);border-color:var(--line)}.btn.small{padding:8px 11px;font-size:13px}.wide{width:100%}.actions{display:flex;gap:8px;flex-wrap:wrap}.actions.vertical{flex-direction:column}.form-actions{display:flex;justify-content:flex-end;margin-top:18px}.top-gap{margin-top:18px}label{display:grid;gap:7px;margin-bottom:15px;font-weight:750;font-size:13px}input,textarea,select{width:100%;padding:12px 13px;border:1px solid var(--line);border-radius:calc(var(--radius)*.7);background:var(--panel2);color:var(--text);font:inherit}textarea{min-height:95px;resize:vertical}input[type=range]{padding:0;accent-color:var(--accent)}label small,.help{color:var(--muted);font-size:12px;font-weight:500}fieldset{border:1px solid var(--line);border-radius:var(--radius);padding:14px;margin:0 0 16px}legend{padding:0 7px;color:var(--muted);font-size:12px}.form-grid{display:grid;gap:14px}.form-grid.two{grid-template-columns:1fr 1fr}.muted{color:var(--muted)}.center{text-align:center}.flash{padding:13px 15px;border:1px solid;border-radius:var(--radius);margin-bottom:18px}.flash.success{background:var(--okbg);color:var(--ok);border-color:var(--ok)}.flash.error{background:var(--dangerbg);color:var(--danger);border-color:var(--danger)}.auth-wrap{min-height:calc(100vh - 100px);display:grid;place-items:center}.auth-card{width:min(440px,100%)}.auth-mark{width:54px;height:54px;border:1px solid var(--accent);border-radius:var(--radius);display:grid;place-items:center;background:var(--panel2);color:var(--accent);font-weight:900;margin-bottom:16px}.auth-mark.danger{color:var(--danger);border-color:var(--danger)}.install-shell{min-height:100vh;padding:35px 16px;display:grid;place-items:center}.install-card{width:min(760px,100%);background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:26px;box-shadow:var(--shadow)}.install-brand{margin-bottom:15px}.install-card hr{border:0;border-top:1px solid var(--line);margin:22px 0}.codebox{font-family:ui-monospace,monospace}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}.stat-card{padding:19px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}.stat-card strong{font-size:30px;display:block}.stat-card span{color:var(--muted);font-size:12px}.admin-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.admin-card{display:flex;gap:14px;padding:22px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);text-decoration:none;color:var(--text)}.admin-card>span{font-size:30px;color:var(--accent)}.admin-card h2{margin:0 0 5px}.admin-card p{margin:0;color:var(--muted)}.admin-columns{display:grid;grid-template-columns:minmax(300px,.7fr) minmax(420px,1.3fr);gap:20px}.campaign-stack{display:grid;gap:22px}.theme-scope{--card-bg:none;--card-overlay:.58}.campaign-block,.campaign-admin-item{--bg:#0d1117;--panel:#151b24;--panel2:#10161e;--text:#edf1f5;--muted:#94a0ad;--line:#2b3441;--accent:#5f8aa8;--hero1:#111923;--hero2:#213347;--radius:14px;color:var(--text)}.theme-scope.theme-knight{--panel:#111722;--panel2:#0c121a;--text:#eef4f8;--muted:#8291a0;--line:#273645;--accent:#86b9d5;--hero1:#07101b;--hero2:#17324a}.theme-scope.theme-delta{--panel:#1a201b;--panel2:#151a16;--text:#e7e3d9;--muted:#9da59b;--line:#353d35;--accent:#87945f;--hero1:#0a0d0b;--hero2:#283126}.theme-scope.theme-warhammer{--panel:#251d18;--panel2:#1b1612;--text:#eadfcb;--muted:#ab9c85;--line:#4a3c30;--accent:#a44439;--hero1:#160d0b;--hero2:#4b201a}.theme-scope.theme-startrek{--panel:#11182a;--panel2:#0d1322;--text:#eef4ff;--muted:#9daccc;--line:#2a3855;--accent:#d9aa4f;--hero1:#0d1731;--hero2:#263b6e}.theme-scope.theme-achtung{--panel:#352e23;--panel2:#2c261e;--text:#eee2c8;--muted:#b2a58d;--line:#5a4f3d;--accent:#9d895a;--hero1:#201b13;--hero2:#51452e}.theme-scope.theme-etu{--panel:#111d2a;--panel2:#0c1622;--text:#f4f1e8;--muted:#9fb0c2;--line:#2f4358;--accent:#d8b56a;--hero1:#091827;--hero2:#153858}.theme-scope.theme-nautilus{--panel:#0d2529;--panel2:#091d21;--text:#e6eee9;--muted:#8fa7a4;--line:#28464a;--accent:#b7793e;--hero1:#071519;--hero2:#174451}.theme-scope.theme-dcc{--panel:#252016;--panel2:#1d1811;--text:#efe3c5;--muted:#b3a587;--line:#514733;--accent:#c44c35;--hero1:#17100a;--hero2:#4a2d16}.theme-scope.theme-traveller{--panel:#0d1118;--panel2:#080c12;--text:#f0f3f6;--muted:#8e9aa8;--line:#29313a;--accent:#d5523f;--hero1:#05080c;--hero2:#1c2835}.theme-scope.theme-runequest{--panel:#2c2116;--panel2:#22190f;--text:#f0e1c1;--muted:#b7a27c;--line:#57452e;--accent:#c4863d;--hero1:#20150b;--hero2:#624124}.theme-scope.theme-fallout{--panel:#1b2017;--panel2:#13170f;--text:#e7e3c8;--muted:#a7aa86;--line:#3c4630;--accent:#d0b24f;--hero1:#11150d;--hero2:#384522}.theme-scope.theme-cthulhu{--panel:#151d1b;--panel2:#101715;--text:#e5e1d5;--muted:#94a19b;--line:#31413b;--accent:#769285;--hero1:#0b1210;--hero2:#213a34}.campaign-block{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--panel);box-shadow:var(--shadow)}.campaign-hero,.mini-hero{position:relative;background-image:linear-gradient(rgba(0,0,0,var(--card-overlay)),rgba(0,0,0,var(--card-overlay))),var(--card-bg),linear-gradient(135deg,var(--hero1),var(--hero2));background-size:cover;background-position:center;padding:24px}.campaign-hero{display:flex;justify-content:space-between;gap:18px;align-items:flex-end;min-height:155px}.campaign-hero h2,.mini-hero h3{margin:6px 0}.campaign-hero p{margin:0;color:var(--muted)}.campaign-meta{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.campaign-meta span,.chips span,.badge,.status-pill{padding:6px 9px;border:1px solid var(--line);background:var(--panel2);border-radius:999px;font-size:11px;font-weight:800}.campaign-content{padding:20px;display:grid;grid-template-columns:1fr 1fr;gap:24px}.campaign-content h3{margin-top:0}.list{display:grid;gap:9px}.list-link{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:13px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel2);text-decoration:none;color:var(--text)}.list-link strong,.list-link small{display:block}.list-link small{color:var(--muted);margin-top:3px}.confirmed{display:flex;gap:10px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel2)}.confirmed>span{color:var(--ok);font-weight:900}.confirmed strong,.confirmed small{display:block}.confirmed small{color:var(--muted);margin-top:3px}.status-pill.open{color:var(--maybe)}.status-pill.closed{color:var(--ok)}.selected-banner{padding:18px;background:var(--okbg);border:1px solid var(--ok);border-radius:var(--radius);margin-bottom:18px}.selected-banner span,.selected-banner strong{display:block}.selected-banner span{font-size:10px;letter-spacing:.12em;color:var(--ok)}.selected-banner strong{font-size:18px;margin-top:4px}.availability-list{display:grid;gap:12px}.availability-row{display:grid;grid-template-columns:minmax(180px,1fr) auto;gap:18px;align-items:center;padding:16px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel2)}.choice-group{display:flex;gap:8px}.choice-group label{margin:0}.choice-group input{position:absolute;opacity:0;pointer-events:none}.choice-group span{min-width:112px;padding:10px;border:1px solid var(--line);border-radius:calc(var(--radius)*.7);display:grid;place-items:center;cursor:pointer;background:var(--panel)}.choice-group input:checked+span.yes{color:var(--ok);background:var(--okbg);border-color:var(--ok)}.choice-group input:checked+span.maybe{color:var(--maybe);background:var(--maybebg);border-color:var(--maybe)}.choice-group input:checked+span.no{color:var(--danger);background:var(--dangerbg);border-color:var(--danger)}.invite-panel{background:linear-gradient(135deg,var(--panel),var(--panel2));border:1px solid var(--accent);border-radius:var(--radius);padding:22px;margin-bottom:20px}.invite-panel h2{margin:5px 0 12px}.invite-panel textarea{min-height:175px}.check-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.check{display:flex;grid-template-columns:auto 1fr;align-items:center;gap:8px;margin:0;padding:9px;border:1px solid var(--line);border-radius:calc(var(--radius)*.65)}.check input{width:auto;accent-color:var(--accent)}.players-list{gap:0}.player-row{display:flex;justify-content:space-between;gap:16px;padding:15px 0;border-bottom:1px solid var(--line)}.player-main{min-width:0;flex:1}.title-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.player-main>small{color:var(--muted)}.chips{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}.chips span.warning{color:var(--maybe)}.badge.ready{color:var(--ok)}.badge.pending{color:var(--maybe)}.badge.off{color:var(--danger)}details{margin-top:8px}summary{cursor:pointer;color:var(--accent);font-weight:800}.details-form{margin-top:12px}.campaign-admin-list{display:grid;gap:13px}.campaign-admin-item{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--panel2)}.campaign-admin-item details,.campaign-admin-item>.actions{margin:12px}.mini-hero{min-height:112px}.date-entry{display:grid;grid-template-columns:1fr auto;gap:8px;margin-bottom:8px}.icon-button{width:42px;border:1px solid var(--line);border-radius:calc(var(--radius)*.6);background:var(--panel2);color:var(--danger);font-size:22px;cursor:pointer}.matrix-wrap{overflow:auto}.matrix{width:100%;border-collapse:separate;border-spacing:0;min-width:760px}.matrix th,.matrix td{padding:12px;border-bottom:1px solid var(--line);text-align:center}.matrix th:first-child,.matrix td:first-child{text-align:left;position:sticky;left:0;background:var(--panel);z-index:1}.matrix thead th{color:var(--muted)}.matrix thead th small,.matrix thead th b,.totals small{display:block;font-size:10px}.matrix .best{background:color-mix(in srgb,var(--accent) 12%,transparent);outline:1px solid color-mix(in srgb,var(--accent) 55%,transparent)}.answer{width:31px;height:31px;border-radius:50%;display:inline-grid;place-items:center;font-weight:900}.answer.yes{background:var(--okbg);color:var(--ok)}.answer.maybe{background:var(--maybebg);color:var(--maybe)}.answer.no{background:var(--dangerbg);color:var(--danger)}.answer.none{background:var(--panel2);color:var(--muted)}.date-confirm-grid{display:grid;gap:9px}.date-confirm{display:flex;justify-content:space-between;gap:15px;align-items:center;padding:13px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel2)}.date-confirm strong,.date-confirm span{display:block}.date-confirm span{color:var(--muted);font-size:12px;margin-top:3px}.date-confirm.selected{border-color:var(--ok);background:var(--okbg)}.empty{text-align:center;padding:50px 20px}.empty-icon{font-size:42px;color:var(--accent)}
@media(max-width:1000px){.admin-columns{grid-template-columns:1fr}.admin-grid{grid-template-columns:1fr 1fr}.campaign-content{grid-template-columns:1fr}.stat-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:780px){.app{grid-template-columns:1fr}.sidebar{height:auto;position:relative;padding:14px}.brand{margin-bottom:12px}.sidebar nav{display:flex;overflow:auto;gap:4px}.sidebar nav a{white-space:nowrap}.sidebar-user{display:none}.content{padding:22px 14px 40px}.page-head{align-items:flex-start;flex-direction:column}.page-head h1{font-size:27px}.admin-grid,.stat-grid,.form-grid.two{grid-template-columns:1fr}.campaign-hero{align-items:flex-start;flex-direction:column}.campaign-meta{justify-content:flex-start}.availability-row{grid-template-columns:1fr}.choice-group{display:grid;grid-template-columns:repeat(3,1fr)}.choice-group span{min-width:0;font-size:12px}.check-grid{grid-template-columns:1fr}.player-row{flex-direction:column}.actions.vertical{flex-direction:row}.date-confirm{align-items:flex-start;flex-direction:column}}
@media(max-width:520px){.card{padding:17px}.choice-group{grid-template-columns:1fr}.date-confirm .btn{width:100%}}
/* V2 */
.stat-grid.four{grid-template-columns:repeat(4,1fr)}
.dashboard-grid{display:grid;grid-template-columns:1.35fr .85fr;gap:20px;margin-bottom:20px}
.section-head{display:flex;justify-content:space-between;gap:14px;align-items:center;margin-bottom:16px}.section-head h2{margin:3px 0}.section-head p{margin:4px 0 0}
.progress{display:block;width:220px;max-width:100%;height:7px;border:1px solid var(--line);background:var(--panel2);border-radius:999px;overflow:hidden;margin-top:8px}.progress b{display:block;height:100%;background:var(--accent)}
.mini-btn{display:inline-flex;align-items:center;justify-content:center;padding:7px 10px;border:1px solid var(--line);background:var(--panel2);border-radius:8px;color:var(--text);text-decoration:none;font-size:11px;font-weight:800;cursor:pointer}.mini-btn:hover{border-color:var(--accent)}
.actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.actions form,.inline-form{margin:0}.list-link.nonlink{cursor:default}.list-link.nonlink>a{color:var(--text);text-decoration:none;min-width:0;flex:1}.list-link.nonlink .actions{flex:0 0 auto}
.campaign-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.campaign-card{position:relative;min-height:180px;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;text-decoration:none;color:var(--text);background-image:linear-gradient(rgba(0,0,0,var(--campaign-overlay,.62)),rgba(0,0,0,var(--campaign-overlay,.62))),var(--campaign-bg,none),linear-gradient(135deg,var(--hero1),var(--hero2));background-size:cover;background-position:center;box-shadow:var(--shadow)}.campaign-card-shade{position:absolute;inset:0;background:linear-gradient(180deg,transparent,rgba(0,0,0,.60))}.campaign-card-content{position:absolute;left:18px;right:18px;bottom:16px;z-index:1}.campaign-card-content h3{font-size:20px;margin:5px 0}.campaign-card-content small{color:var(--muted)}.campaign-card .btn.small{margin-top:10px;padding:8px 10px}.player-next{display:flex;flex-direction:column;gap:8px;margin-top:12px}.admin-campaign-cards{grid-template-columns:1fr 1fr}
.activity-list{display:grid}.activity-item{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.activity-item:last-child{border-bottom:0}.activity-item>span{width:8px;height:8px;background:var(--accent);border-radius:50%;margin-top:6px}.activity-item small{display:block;color:var(--muted);margin-top:3px}
.deadline{display:inline-block;margin-top:8px;color:var(--maybe)}.selected-banner{display:flex;justify-content:space-between;align-items:center;gap:14px}.selected-banner>a{margin-left:auto}
.comment-input{grid-column:1/-1;width:100%;padding:10px;border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:8px}.availability-row{grid-template-columns:minmax(180px,1fr) auto}.availability-row .comment-input{grid-column:1/-1}
.hidden-copy{position:absolute;left:-9999px;width:1px;height:1px}.answer-comment{display:block;max-width:145px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--muted);margin:5px auto 0;font-size:10px}
.month-list{display:grid;gap:18px}.legend{display:flex;gap:8px;font-size:11px}.legend-confirmed,.legend-poll{padding:5px 8px;border-radius:999px;border:1px solid var(--line)}.legend-confirmed{color:var(--ok);background:var(--okbg)}.legend-poll{color:var(--maybe);background:var(--maybebg)}.calendar-list{display:grid;gap:8px}.calendar-row{display:grid;grid-template-columns:180px 1fr auto;gap:14px;align-items:center;padding:13px;border-radius:var(--radius);border:1px solid var(--line);color:var(--text);text-decoration:none;background:var(--panel2)}.calendar-row time{font-weight:800}.calendar-row strong,.calendar-row small{display:block}.calendar-row small{color:var(--muted);margin-top:3px}.confirmed-row{border-left:4px solid var(--ok)}.poll-row{border-left:4px solid var(--maybe)}
.install-shell,.login-shell{min-height:100vh;display:grid;place-items:center;padding:20px}.install-card,.login-card{width:min(760px,100%);background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:28px;box-shadow:var(--shadow)}.login-card{width:min(440px,100%)}.install-brand{margin-bottom:22px}.wide{width:100%;justify-content:center}.codebox{width:100%;min-height:210px}.help{text-align:center;color:var(--muted);font-size:12px}.help a{color:var(--accent)}
.player-row details{width:100%}.player-row summary{display:flex;justify-content:space-between;gap:10px;align-items:center}.details-form{display:grid;gap:8px}.details-form label{margin:0}.player-row small{display:block;color:var(--muted)}
fieldset{border:1px solid var(--line);border-radius:var(--radius);padding:12px;margin:0 0 16px}legend{color:var(--muted);font-size:12px;padding:0 6px}
textarea{width:100%;min-height:100px;padding:11px;background:var(--panel2);border:1px solid var(--line);border-radius:calc(var(--radius)*.7);color:var(--text)}
form label{display:grid;gap:6px;margin-bottom:14px;color:var(--muted);font-size:12px}form label input,form label select,form label textarea{font-size:14px;color:var(--text)}
@media(max-width:1100px){.dashboard-grid{grid-template-columns:1fr}.campaign-cards{grid-template-columns:1fr 1fr}.stat-grid.four{grid-template-columns:1fr 1fr}}
@media(max-width:780px){.campaign-cards,.admin-campaign-cards{grid-template-columns:1fr}.calendar-row{grid-template-columns:1fr}.stat-grid.four{grid-template-columns:1fr 1fr}.selected-banner{align-items:flex-start;flex-direction:column}.selected-banner>a{margin-left:0}.availability-row{grid-template-columns:1fr}.comment-input{grid-column:auto}.section-head{align-items:flex-start;flex-direction:column}.list-link.nonlink{align-items:flex-start;flex-direction:column}.list-link.nonlink .actions{width:100%}}
@media(max-width:520px){.stat-grid.four{grid-template-columns:1fr}.campaign-card{min-height:165px}}
/* V2.1 — calendrier multi-mois pour les sondages */
.polls-layout{grid-template-columns:minmax(470px,1fr) minmax(380px,.85fr)}
.poll-create-card{min-width:0}
.multi-month-fieldset{padding:16px}
.multi-month-picker{display:grid;gap:14px}
.month-picker-toolbar{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px}
.month-nav{display:flex;gap:7px;align-items:center}
.calendar-month-label{text-align:center;font-size:18px;text-transform:capitalize}
.month-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.month-calendar .weekday{text-align:center;color:var(--muted);font-size:10px;font-weight:900;letter-spacing:.05em;padding:6px 2px;text-transform:uppercase}
.calendar-day{appearance:none;aspect-ratio:1;min-width:0;border:1px solid var(--line);border-radius:calc(var(--radius)*.62);background:var(--panel2);color:var(--text);cursor:pointer;position:relative;font-weight:800;padding:4px;transition:.12s border-color,.12s background,.12s transform}
.calendar-day:hover{border-color:var(--accent);transform:translateY(-1px)}
.calendar-day.outside{opacity:.28;cursor:default}.calendar-day.outside:hover{border-color:var(--line);transform:none}
.calendar-day.today:after{content:"";position:absolute;bottom:6px;left:50%;transform:translateX(-50%);width:5px;height:5px;border-radius:50%;background:var(--accent)}
.calendar-day.selected{background:color-mix(in srgb,var(--accent) 21%,var(--panel2));border-color:var(--accent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 45%,transparent)}
.calendar-day.selected:before{content:"✓";position:absolute;right:5px;top:3px;color:var(--accent);font-size:10px}
.calendar-help{display:flex;justify-content:space-between;gap:12px;align-items:center;color:var(--muted);font-size:11px}
.selected-dates-panel{border-top:1px solid var(--line);padding-top:14px}
.selected-dates-title{display:flex;justify-content:space-between;gap:12px;margin-bottom:10px}.selected-dates-title strong,.selected-dates-title small{display:block}.selected-dates-title small{color:var(--muted);margin-top:3px}
.selected-dates-empty{padding:18px;border:1px dashed var(--line);border-radius:calc(var(--radius)*.7);text-align:center;color:var(--muted);font-size:12px}
.selected-dates-list{display:grid;gap:7px}
.selected-date-row{display:grid;grid-template-columns:1fr 105px minmax(190px,.8fr) auto;gap:8px;align-items:center;padding:9px 10px;border:1px solid var(--line);border-radius:calc(var(--radius)*.7);background:var(--panel2)}
.selected-date-row .selected-date-label strong,.selected-date-row .selected-date-label small{display:block}.selected-date-row .selected-date-label small{color:var(--muted);font-size:10px;margin-top:2px}
.selected-date-row input[type=time]{padding:8px 9px}.selected-date-host{display:grid;gap:5px}.selected-date-host select,.selected-date-host input{width:100%;padding:8px 9px}
.selected-date-row .remove-selected-date{width:36px;height:36px;padding:0;border:1px solid var(--line);background:var(--panel);color:var(--danger);border-radius:8px;cursor:pointer;font-size:18px}
#date-list{display:none}
.manual-date-fallback{margin-top:12px}.manual-date-fallback summary{font-size:12px}.manual-date-entry{grid-template-columns:1fr auto;margin-top:9px}
@media(max-width:1100px){.polls-layout{grid-template-columns:1fr}.poll-create-card{max-width:none}}
@media(max-width:680px){.month-picker-toolbar{grid-template-columns:1fr}.month-nav{justify-content:space-between}.calendar-month-label{grid-row:1;text-align:left}.calendar-day{font-size:12px}.calendar-help{align-items:flex-start;flex-direction:column}.selected-date-row{grid-template-columns:1fr auto}.selected-date-row input[type=time],.selected-date-row .selected-date-host{grid-column:1/2}.selected-date-row .remove-selected-date{grid-column:2;grid-row:1/4}.multi-month-fieldset{padding:11px}}


/* V2.2 — Chez qui ? */
.selected-banner small{display:block;margin-top:4px;color:var(--muted)}
.compact-card{padding-bottom:2px}.host-form,.host-picker-inline{display:flex;gap:12px;align-items:end;flex-wrap:wrap}.host-form label,.host-picker-inline label{min-width:210px;flex:1}.host-form select,.host-form input,.host-picker-inline select,.host-picker-inline input{width:100%}.confirm-session-form .date-confirm-grid{margin-top:14px}.player-next small{display:block;color:var(--muted);margin-top:3px}
@media(max-width:700px){.host-form,.host-picker-inline{display:grid;grid-template-columns:1fr}.host-form label,.host-picker-inline label{min-width:0}.host-form .mini-btn{width:100%}}

/* V2.5 — pseudos uniquement par campagne */
.alias-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}.alias-grid label{margin:0}.alias-grid input{margin-top:6px}.details-form fieldset+fieldset{margin-top:18px}

/* V2.5 — Chez qui par date */
.date-host-edit{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;align-items:end;padding:10px 0;border-bottom:1px solid var(--line)}.date-host-edit:last-child{border-bottom:0}.date-confirm small,.date-host-line{display:block;color:var(--muted);margin-top:4px;font-size:11px}@media(max-width:760px){.date-host-edit{grid-template-columns:1fr}}

/* V2.6.1 — suppression d'une date d'un sondage */
.date-host-edit-with-delete{grid-template-columns:1fr 1fr 1fr auto}.date-delete-btn{align-self:end;color:var(--danger);border-color:color-mix(in srgb,var(--danger) 60%,var(--line));background:var(--dangerbg);white-space:nowrap}.date-delete-btn:hover{border-color:var(--danger)}.hidden-delete-form{display:none}@media(max-width:980px){.date-host-edit-with-delete{grid-template-columns:1fr 1fr}.date-delete-btn{grid-column:1/-1;width:100%}}@media(max-width:760px){.date-host-edit-with-delete{grid-template-columns:1fr}}

/* V2.6.2 — prévention des doubles réservations */
.date-confirm.has-conflict{border-color:rgba(201,80,88,.75);background:rgba(201,80,88,.08)}
.schedule-conflict{display:flex;flex-direction:column;gap:4px;margin-top:9px;padding:9px 11px;border:1px solid rgba(201,80,88,.55);border-radius:8px;background:rgba(201,80,88,.10);color:#ffd5d9;font-size:.82rem}
.schedule-conflict b{color:#ffadb5}.date-confirm .btn:disabled{opacity:.45;cursor:not-allowed;filter:none}

/* V2.7.1 — suppression sécurisée des comptes */
.danger-zone{margin-top:18px;padding:16px;border:1px solid color-mix(in srgb,var(--danger) 55%,var(--line));border-radius:var(--radius);background:color-mix(in srgb,var(--dangerbg) 72%,var(--panel2));}
.danger-zone h3{margin:0 0 8px;color:var(--danger)}
.danger-zone p{margin:7px 0;font-size:13px;line-height:1.45}
.danger-text{color:var(--danger);font-weight:700}
.delete-user-form{margin-top:14px;padding-top:14px;border-top:1px solid color-mix(in srgb,var(--danger) 35%,var(--line))}
.delete-user-form label{margin-bottom:10px}
.danger-btn{background:var(--dangerbg);color:var(--danger);border-color:var(--danger)}
.danger-btn:hover{background:var(--danger);color:#fff}


/* V2.8.8 — accroche de séance optionnelle */
.session-teaser-admin-preview{display:grid;grid-template-columns:minmax(180px,360px) 1fr;gap:16px;align-items:start;margin:4px 0 12px}.session-teaser-admin-preview img{width:100%;max-height:190px;object-fit:cover;border:1px solid var(--line);border-radius:calc(var(--radius)*.75)}
.session-teaser-hero{display:grid;grid-template-columns:minmax(240px,.9fr) minmax(300px,1.1fr);overflow:hidden;margin:0 0 20px;border:1px solid color-mix(in srgb,var(--accent) 48%,var(--line));border-radius:var(--radius);background:linear-gradient(145deg,color-mix(in srgb,var(--panel) 94%,transparent),color-mix(in srgb,var(--hero2) 36%,var(--panel2)));box-shadow:var(--shadow)}.session-teaser-hero-image{width:100%;height:100%;min-height:250px;max-height:390px;object-fit:cover}.session-teaser-hero-body{padding:28px;display:flex;flex-direction:column;justify-content:center}.session-teaser-hero-body h2{font-size:27px;margin:7px 0 12px}.session-teaser-hero-body p{margin:0;color:var(--text);font-size:15px;line-height:1.65;white-space:normal}
.session-teaser-list-item{align-items:center}.session-teaser-list-item>img{width:58px;height:58px;object-fit:cover;border-radius:calc(var(--radius)*.55);border:1px solid var(--line)}.session-teaser-list-item em{display:block;color:var(--muted);font-size:11px;font-style:normal;margin-top:5px;line-height:1.35}
.player-session-teaser{margin-top:16px;border-top:1px solid color-mix(in srgb,var(--accent) 45%,var(--line));padding-top:14px}.player-session-teaser>img{width:100%;height:150px;object-fit:cover;border-radius:calc(var(--radius)*.65);border:1px solid var(--line);margin-bottom:11px}.player-session-teaser>div>strong{display:block;font-size:16px;margin-bottom:5px}.player-session-teaser p{margin:0 0 12px;color:var(--text);font-size:12px;line-height:1.5}.player-session-teaser .player-next{margin-top:0}.player-session-teaser .actions{margin-top:9px}
@media(max-width:760px){.session-teaser-hero{grid-template-columns:1fr}.session-teaser-hero-image{min-height:190px;max-height:260px}.session-teaser-hero-body{padding:20px}.session-teaser-admin-preview{grid-template-columns:1fr}.session-teaser-list-item>img{width:48px;height:48px}}

.session-teaser-saved-preview{margin-top:18px;border-top:1px solid var(--line);padding-top:14px}.session-teaser-saved-preview summary{cursor:pointer;color:var(--accent);font-weight:800}.session-teaser-preview-inline{margin-top:14px;margin-bottom:0}.session-teaser-preview-inline .session-teaser-hero-image{min-height:210px;max-height:300px}

/* V2.8.9 — publication indépendante de l’accroche */
.teaser-publish-check{display:flex;gap:10px;align-items:flex-start;margin:14px 0;padding:14px;border:1px solid var(--line);border-radius:calc(var(--radius)*.7);background:color-mix(in srgb,var(--panel2) 82%,transparent)}.teaser-publish-check input{margin-top:3px}.teaser-publish-check span{display:flex;flex-direction:column;gap:4px}.teaser-publish-check small{color:var(--muted);font-weight:400;line-height:1.4}


/* V2.8.10 — conserver l’identité de campagne visible avec une accroche */
.player-cards .campaign-card.has-session-teaser{min-height:0;height:auto}
.player-cards .campaign-card.has-session-teaser .campaign-card-content{position:relative;left:auto;right:auto;bottom:auto;padding:18px;min-height:180px;box-sizing:border-box}
.player-cards .campaign-card.has-session-teaser .campaign-card-content>h3{margin-bottom:8px;text-shadow:0 2px 8px rgba(0,0,0,.75)}
.player-cards .campaign-card.has-session-teaser .campaign-card-content>.eyebrow{text-shadow:0 2px 8px rgba(0,0,0,.8)}
.player-cards .campaign-card.has-session-teaser .player-session-teaser{position:relative;z-index:2;background:color-mix(in srgb,var(--panel) 64%,transparent);padding:14px;border:1px solid color-mix(in srgb,var(--accent) 30%,var(--line));border-radius:calc(var(--radius)*.7);backdrop-filter:blur(2px)}
.player-cards .campaign-card.has-session-teaser .player-session-teaser>img{height:150px}
@media(max-width:520px){.player-cards .campaign-card.has-session-teaser .campaign-card-content{padding:14px}.player-cards .campaign-card.has-session-teaser .player-session-teaser{padding:11px}}


/* V2.8.11 — tableau de bord joueur + conflits personnels */
.player-action-card{margin-bottom:20px}.player-action-list .list-link{transition:border-color .12s ease,transform .12s ease}.player-action-list .list-link:hover{border-color:color-mix(in srgb,var(--accent) 62%,var(--line));transform:translateY(-1px)}
.availability-row.has-personal-conflict{border-color:rgba(201,80,88,.72);background:color-mix(in srgb,var(--dangerbg) 35%,var(--panel2))}.personal-conflict-warning{display:flex;flex-direction:column;gap:4px;margin-top:10px;padding:9px 11px;border:1px solid color-mix(in srgb,var(--danger) 62%,var(--line));border-radius:calc(var(--radius)*.6);background:color-mix(in srgb,var(--dangerbg) 62%,transparent);font-size:11px;line-height:1.35}.personal-conflict-warning b{color:var(--danger)}.personal-conflict-warning span{color:var(--text)}.personal-conflict-warning small{color:var(--muted)}
@media(max-width:780px){.player-action-list .list-link{align-items:flex-start}.player-action-list .badge{flex:0 0 auto}.personal-conflict-warning{max-width:none}}

/* V2.8.12 — tableau de bord joueur visuel */
.player-page-head{align-items:center;margin-bottom:26px}.player-page-head h1{font-size:34px;margin-top:6px}.player-calendar-top{padding:10px 14px;font-size:12px}
.player-dashboard-main{display:grid;grid-template-columns:minmax(0,1fr);gap:20px;margin-bottom:28px}.player-dashboard-main.has-feature{grid-template-columns:minmax(0,1.75fr) minmax(300px,.75fr)}
.player-feature{position:relative;min-height:370px;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);display:grid;grid-template-columns:minmax(0,1.45fr) minmax(230px,.55fr);background-image:linear-gradient(90deg,rgba(5,8,12,.90) 0%,rgba(5,8,12,.70) 54%,rgba(5,8,12,.78) 100%),var(--feature-bg,var(--campaign-bg,none)),linear-gradient(135deg,var(--hero1),var(--hero2));background-size:cover;background-position:center}.player-feature-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.06),rgba(0,0,0,.22));pointer-events:none}.player-feature-copy,.player-feature-meta{position:relative;z-index:2}.player-feature-copy{padding:28px 30px;display:flex;flex-direction:column;justify-content:center}.player-feature-copy h2{font-size:32px;line-height:1.05;margin:12px 0 13px}.player-feature-copy p{max-width:690px;font-size:15px;line-height:1.65;margin:0;color:#f2f4f7;text-shadow:0 2px 8px rgba(0,0,0,.7)}.feature-badge{align-self:flex-start;margin-top:13px;padding:6px 9px;border-radius:7px;background:rgba(111,54,143,.82);border:1px solid rgba(207,153,235,.28);color:#f0d8ff;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.05em}.feature-actions{margin-top:22px}.feature-actions .btn{min-width:190px}.player-feature-meta{margin:28px 25px 28px 0;padding:22px 0 22px 24px;border-left:1px solid rgba(255,255,255,.12);align-self:center}.player-feature-meta h3{font-size:22px;margin:9px 0 18px}.feature-meta-line{display:flex;gap:10px;align-items:center;margin:11px 0;color:#e9eef4;font-size:13px}.feature-meta-line span{min-width:0}.status-dot{width:9px;height:9px;border-radius:50%;display:inline-block;flex:0 0 auto}.pending-dot{background:var(--maybe)}.ready-dot{background:var(--ok)}
.player-todo-panel{padding:20px;min-width:0}.section-head.compact{margin-bottom:10px}.section-head.compact h2{font-size:19px}.player-todo-list{display:grid;gap:10px}.player-todo-item{display:grid;grid-template-columns:42px 1fr;gap:12px;padding:13px;border:1px solid var(--line);border-radius:calc(var(--radius)*.75);background:color-mix(in srgb,var(--panel2) 92%,transparent);text-decoration:none;color:var(--text);transition:.15s ease}.player-todo-item:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--accent) 60%,var(--line))}.todo-icon{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 25%,var(--panel));color:var(--accent);font-weight:900;font-size:17px}.todo-confirmed .todo-icon{background:var(--okbg);color:var(--ok)}.todo-teaser .todo-icon{background:color-mix(in srgb,#8b4db3 32%,var(--panel));color:#d9a9f3}.todo-copy{min-width:0}.todo-copy strong,.todo-copy small,.todo-copy em{display:block}.todo-copy strong{font-size:13px}.todo-copy small{margin-top:4px;color:var(--muted);font-size:11px;line-height:1.35}.todo-copy em{margin-top:8px;color:var(--accent);font-size:11px;font-style:normal;font-weight:800}
.player-dashboard-lower{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:20px;align-items:start}.player-section-title{margin:0 0 12px 4px}.player-cards-rich{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch}.player-rich-card{min-height:0;height:auto;display:flex;flex-direction:column;background-image:linear-gradient(rgba(0,0,0,.54),rgba(0,0,0,.68)),var(--campaign-bg,none),linear-gradient(135deg,var(--hero1),var(--hero2))}.player-rich-card .campaign-card-shade{background:linear-gradient(180deg,rgba(0,0,0,.04),rgba(0,0,0,.48))}.rich-card-image{position:relative;z-index:1;width:100%;height:150px;object-fit:cover;border-bottom:1px solid rgba(255,255,255,.08)}.rich-card-body{position:relative;z-index:2;padding:17px;display:flex;flex-direction:column;min-height:230px}.rich-card-body h3{font-size:20px;margin:7px 0 10px}.rich-card-badges{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:11px}.rich-status{padding:4px 7px;border-radius:5px;font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.03em;border:1px solid var(--line);background:rgba(0,0,0,.30)}.rich-status.pending{color:var(--maybe);border-color:color-mix(in srgb,var(--maybe) 50%,var(--line))}.rich-status.ready{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 50%,var(--line))}.rich-status.teaser{color:#d9a9f3;border-color:rgba(185,112,220,.45)}.rich-card-info{display:grid;gap:7px;color:#d4d9df;font-size:11px;margin-bottom:15px}.rich-card-info .teaser-line{color:#d9a9f3}.rich-card-actions{margin-top:auto}.rich-card-actions .btn{flex:1}.player-upcoming-panel{padding:20px}.player-upcoming-list{display:grid;gap:2px}.player-upcoming-item{display:grid;grid-template-columns:34px 1fr;gap:10px;padding:12px 4px;border-bottom:1px solid var(--line);text-decoration:none;color:var(--text)}.player-upcoming-item:last-child{border-bottom:0}.upcoming-mark{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--okbg);color:var(--ok);font-weight:900}.player-upcoming-item strong,.player-upcoming-item small,.player-upcoming-item em{display:block}.player-upcoming-item strong{font-size:12px}.player-upcoming-item small{color:var(--muted);font-size:11px;margin-top:4px}.player-upcoming-item em{font-style:normal;color:var(--muted);font-size:10px;margin-top:4px}.upcoming-calendar-link{width:100%;margin-top:14px}
@media(max-width:1250px){.player-dashboard-main.has-feature{grid-template-columns:1fr}.player-dashboard-lower{grid-template-columns:1fr}.player-upcoming-panel{order:-1}.player-cards-rich{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){.player-feature{grid-template-columns:1fr;min-height:0}.player-feature-meta{margin:0 22px 22px;padding:18px 0 0;border-left:0;border-top:1px solid rgba(255,255,255,.12)}.player-feature-copy{padding:24px}.player-feature-copy h2{font-size:27px}}
@media(max-width:680px){.player-cards-rich{grid-template-columns:1fr}.player-page-head{align-items:flex-start}.player-calendar-top{width:100%}.player-feature-copy{padding:20px}.player-feature-meta{margin:0 20px 20px}.player-feature-copy p{font-size:14px}.rich-card-image{height:135px}}


/* V2.8.20 — présence automatique issue du sondage + empêchements */
.attendance-pill{display:inline-flex;align-items:center;justify-content:center;padding:6px 9px;border-radius:999px;border:1px solid var(--line);font-size:10px;font-weight:900;white-space:nowrap}.attendance-present{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 50%,var(--line));background:var(--okbg)}.attendance-maybe{color:var(--maybe);border-color:color-mix(in srgb,var(--maybe) 52%,var(--line));background:color-mix(in srgb,var(--maybe) 12%,var(--panel))}.attendance-absent,.attendance-reported_absent{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 50%,var(--line));background:var(--dangerbg)}.attendance-none{color:var(--muted);background:var(--panel2)}
.player-attendance-card{border-left:3px solid var(--line)}.player-attendance-card.attendance-present{border-left-color:var(--ok)}.player-attendance-card.attendance-maybe{border-left-color:var(--maybe)}.player-attendance-card.attendance-absent,.player-attendance-card.attendance-reported_absent{border-left-color:var(--danger)}.attendance-note{padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:var(--panel2);font-size:12px}.attendance-report-box{margin-top:14px;border-top:1px solid var(--line);padding-top:12px}.attendance-report-box summary{cursor:pointer;color:var(--danger);font-weight:800}.attendance-report-box form{margin-top:12px}.attendance-report-box .btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}
.attendance-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:4px 0 18px}.attendance-stat{padding:14px;border:1px solid var(--line);border-radius:calc(var(--radius)*.7);background:var(--panel2)}.attendance-stat strong{display:block;font-size:24px;line-height:1}.attendance-stat span{display:block;margin-top:7px;color:var(--muted);font-size:11px}.attendance-stat.present strong{color:var(--ok)}.attendance-stat.maybe strong{color:var(--maybe)}.attendance-stat.absent strong{color:var(--danger)}
.session-checklist{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px;margin-bottom:18px}.checklist-item{display:grid;grid-template-columns:28px 1fr;gap:8px;padding:11px;border:1px solid var(--line);border-radius:9px;background:color-mix(in srgb,var(--panel2) 92%,transparent)}.checklist-item>span{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-weight:900}.checklist-item strong,.checklist-item small{display:block}.checklist-item strong{font-size:11px}.checklist-item small{color:var(--muted);font-size:10px;margin-top:3px;line-height:1.3}.checklist-item.ok>span{background:var(--okbg);color:var(--ok)}.checklist-item.warn>span{background:color-mix(in srgb,var(--maybe) 18%,var(--panel));color:var(--maybe)}.checklist-item.neutral>span{background:var(--panel);color:var(--muted)}
.attendance-player-list{display:grid;gap:8px}.attendance-player-row{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:11px 12px;border:1px solid var(--line);border-radius:9px;background:color-mix(in srgb,var(--panel2) 88%,transparent)}.attendance-player-row strong,.attendance-player-row small{display:block}.attendance-player-row strong{font-size:12px}.attendance-player-row small{margin-top:3px;color:var(--muted);font-size:10px}.attendance-player-row .attendance-alert-note{color:var(--danger)}.attendance-inline{font-style:normal!important;font-weight:800}.attendance-inline.attendance-present,.attendance-meta.attendance-present{color:var(--ok)}.attendance-inline.attendance-maybe,.attendance-meta.attendance-maybe{color:var(--maybe)}.attendance-inline.attendance-absent,.attendance-inline.attendance-reported_absent,.attendance-meta.attendance-absent,.attendance-meta.attendance-reported_absent{color:var(--danger)}.attendance-inline.attendance-none,.attendance-meta.attendance-none{color:var(--muted)}.upcoming-mark.attendance-present{background:var(--okbg);color:var(--ok)}.upcoming-mark.attendance-maybe{background:color-mix(in srgb,var(--maybe) 18%,var(--panel));color:var(--maybe)}.upcoming-mark.attendance-absent,.upcoming-mark.attendance-reported_absent{background:var(--dangerbg);color:var(--danger)}.upcoming-mark.attendance-none{background:var(--panel2);color:var(--muted)}
@media(max-width:1000px){.session-checklist{grid-template-columns:repeat(2,minmax(0,1fr))}.attendance-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){.attendance-player-row{align-items:flex-start;flex-direction:column}.session-checklist{grid-template-columns:1fr}.attendance-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.player-attendance-card .section-head{align-items:flex-start}}

/* V2.8.21 — Relance Discord ciblée des « Peut-être » avant confirmation */
.maybe-reminder-block{margin-top:10px;padding-top:10px;border-top:1px dashed var(--line);display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.maybe-reminder-block small{flex:1;min-width:220px;color:var(--maybe)}
.maybe-reminder-block .mini-btn{white-space:nowrap}
@media(max-width:520px){.maybe-reminder-block{align-items:stretch}.maybe-reminder-block small{min-width:0}.maybe-reminder-block .mini-btn{width:100%;justify-content:center}}

/* V2.8.22 — vignettes rondes de pseudo par campagne */
.avatar-circle{display:inline-grid;place-items:center;flex:0 0 auto;width:34px;height:34px;border-radius:50%;object-fit:cover;border:1px solid color-mix(in srgb,var(--accent) 38%,var(--line));background:var(--panel2);color:var(--text);font-size:11px;font-weight:900;line-height:1;vertical-align:middle;overflow:hidden;box-shadow:0 0 0 2px color-mix(in srgb,var(--panel) 75%,transparent)}
.avatar-circle.avatar-fallback{background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 24%,var(--panel2)),var(--panel));color:color-mix(in srgb,var(--accent) 75%,#fff)}
.avatar-xs{width:24px;height:24px;font-size:8px;box-shadow:0 0 0 1px color-mix(in srgb,var(--panel) 80%,transparent)}
.avatar-sm{width:30px;height:30px;font-size:9px}.avatar-md{width:38px;height:38px;font-size:11px}.avatar-lg{width:52px;height:52px;font-size:15px}.avatar-xl{width:72px;height:72px;font-size:20px}
.sidebar-user-with-avatar{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:10px}.sidebar-user-with-avatar>div{min-width:0}.sidebar-user-with-avatar strong,.sidebar-user-with-avatar span,.sidebar-user-with-avatar a{display:block}
.person-summary{display:flex;align-items:center;gap:9px;min-width:0}.person-summary>span{min-width:0}
.account-avatar-row{display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:start;margin-bottom:18px;padding:14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel2)}.account-avatar-row p{margin:4px 0 8px}.account-avatar-row input[type=file]{max-width:100%}
.campaign-identity-list{display:grid;gap:10px;margin-bottom:16px}.campaign-identity-row{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:start;padding:14px;border:1px solid var(--line);border-radius:var(--radius);background:color-mix(in srgb,var(--panel2) 92%,transparent)}.campaign-identity-avatar{padding-top:2px}.campaign-identity-fields{display:grid;gap:9px}.campaign-identity-fields>strong{font-size:13px}.campaign-identity-fields label{margin:0}.campaign-identity-fields small{color:var(--muted);font-size:10px}
.admin-campaign-identity-list{display:grid;gap:9px;margin:8px 0 14px}.admin-campaign-identity-row{padding:10px;border:1px solid var(--line);border-radius:9px;background:var(--panel2)}.campaign-access-check{margin:0!important}.admin-avatar-editor{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start;margin:9px 0 0 26px;padding-top:9px;border-top:1px dashed var(--line)}.admin-avatar-editor strong,.admin-avatar-editor small{display:block}.admin-avatar-editor small{margin:2px 0 7px;color:var(--muted)}.admin-avatar-editor input[type=file]{max-width:100%}
.matrix-player{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}.attendance-player-identity{display:flex;align-items:center;gap:10px;min-width:0}.mj-inline,.vote-identity,.feature-mj-line,.rich-card-mj,.campaign-admin-line{display:flex!important;align-items:center;gap:7px}.vote-identity{margin-top:8px}.vote-identity span{min-width:0}
.calendar-avatar-stack{display:flex;align-items:center;min-width:112px}.calendar-avatar-stack .avatar-circle{margin-left:-6px}.calendar-avatar-stack .avatar-circle:first-child{margin-left:0}.calendar-avatar-stack small{margin-left:6px;color:var(--muted);font-size:10px}
@media(max-width:780px){.calendar-avatar-stack{min-width:0}.campaign-identity-row{grid-template-columns:1fr}.campaign-identity-avatar{padding:0}.account-avatar-row{grid-template-columns:1fr}.admin-avatar-editor{margin-left:0}.sidebar-user-with-avatar{grid-template-columns:1fr}.sidebar-user-with-avatar .avatar-circle{display:none}}
.calendar-row{grid-template-columns:180px 1fr auto auto}
@media(max-width:780px){.calendar-row{grid-template-columns:1fr}}


/* V2.8.23 — éditeur de portrait : recadrage, déplacement et zoom avant upload */
body.avatar-crop-open{overflow:hidden}
.avatar-crop-modal[hidden]{display:none!important}
.avatar-crop-modal{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;padding:18px}
.avatar-crop-backdrop{position:absolute;inset:0;background:rgba(3,7,12,.82);backdrop-filter:blur(6px)}
.avatar-crop-dialog{position:relative;width:min(820px,96vw);max-height:94vh;overflow:auto;border:1px solid var(--line);border-radius:16px;background:var(--panel);box-shadow:0 28px 90px rgba(0,0,0,.55);padding:18px}
.avatar-crop-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:16px}
.avatar-crop-head h2{margin:3px 0 4px}.avatar-crop-head p{margin:0;color:var(--muted)}
.avatar-crop-close{flex:0 0 auto}
.avatar-crop-workspace{display:grid;grid-template-columns:minmax(280px,520px) minmax(180px,1fr);grid-template-areas:"stage controls" "stage preview";gap:16px;align-items:start}
.avatar-crop-stage{grid-area:stage;position:relative;width:min(100%,520px);aspect-ratio:1;border-radius:14px;overflow:hidden;background:#070b10;cursor:grab;touch-action:none;user-select:none;border:1px solid var(--line)}
.avatar-crop-stage.is-dragging{cursor:grabbing}
.avatar-crop-stage canvas{display:block;width:100%;height:100%}
.avatar-crop-circle-guide{position:absolute;inset:2px;border:2px solid rgba(255,255,255,.9);border-radius:50%;box-shadow:0 0 0 999px rgba(0,0,0,.42),0 0 0 1px rgba(0,0,0,.7) inset;pointer-events:none}
.avatar-crop-circle-guide:before,.avatar-crop-circle-guide:after{content:"";position:absolute;background:rgba(255,255,255,.28);pointer-events:none}
.avatar-crop-circle-guide:before{left:50%;top:10%;bottom:10%;width:1px}.avatar-crop-circle-guide:after{top:50%;left:10%;right:10%;height:1px}
.avatar-crop-controls{grid-area:controls;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--panel2)}
.avatar-crop-controls>label{display:block;margin:0 0 8px;font-weight:800}
.avatar-crop-zoom-row{display:grid;grid-template-columns:auto 1fr auto;gap:9px;align-items:center}
.avatar-crop-zoom-row input[type=range]{width:100%;margin:0}
.avatar-crop-reset{margin-top:10px;width:100%}
.avatar-crop-preview-wrap{grid-area:preview;display:grid;justify-items:center;gap:8px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--panel2);color:var(--muted);font-size:11px}
.avatar-crop-preview{width:112px;height:112px;border-radius:50%;border:2px solid color-mix(in srgb,var(--accent) 46%,var(--line));background:#070b10;box-shadow:0 0 0 4px color-mix(in srgb,var(--panel) 70%,transparent)}
.avatar-crop-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.avatar-crop-input{max-width:100%}
@media(max-width:700px){
  .avatar-crop-modal{padding:8px}
  .avatar-crop-dialog{padding:13px;max-height:98vh}
  .avatar-crop-workspace{grid-template-columns:1fr;grid-template-areas:"stage" "controls" "preview"}
  .avatar-crop-stage{margin:auto}
  .avatar-crop-preview-wrap{grid-template-columns:auto 1fr;justify-items:start;align-items:center}
  .avatar-crop-preview{width:72px;height:72px}
  .avatar-crop-actions{position:sticky;bottom:-13px;background:var(--panel);padding-bottom:12px}
}

/* V2.8.24 — nouveautés depuis la dernière visite */
.dashboard-changes-card{margin-bottom:20px;padding:16px 18px}.dashboard-changes-card .section-head{margin-bottom:10px}.dashboard-changes-card h2{font-size:16px;margin-top:2px}.dashboard-change-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.dashboard-change-item{position:relative;display:grid;grid-template-columns:auto 30px minmax(0,1fr) 8px;gap:9px;align-items:center;padding:10px 11px;border:1px solid var(--line);border-radius:10px;background:var(--panel2);color:var(--text);text-decoration:none;min-width:0}.dashboard-change-item:hover{border-color:color-mix(in srgb,var(--accent) 48%,var(--line));transform:translateY(-1px)}.dashboard-change-icon{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 12%,var(--panel));color:var(--accent);font-weight:900}.dashboard-change-copy{min-width:0}.dashboard-change-copy strong,.dashboard-change-copy small,.dashboard-change-copy em{display:block}.dashboard-change-copy strong{font-size:12px}.dashboard-change-copy small{margin-top:2px;color:var(--muted);font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dashboard-change-copy em{margin-top:3px;color:var(--muted);font-size:9px;font-style:normal}.dashboard-change-dot{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 14%,transparent)}
@media(max-width:900px){.dashboard-change-list{grid-template-columns:1fr}}@media(max-width:560px){.dashboard-changes-card{padding:14px}.dashboard-change-item{grid-template-columns:auto 26px minmax(0,1fr) 7px}.dashboard-change-icon{width:26px;height:26px}.dashboard-change-copy small{white-space:normal}}

/* V2.8.25 — tableau de bord administrateur plus ergonomique */
.admin-page-head,.admin-dashboard-shell{width:min(100%,1540px);margin-left:auto;margin-right:auto}
.admin-page-head{margin-bottom:18px;align-items:center}.admin-page-head h1{font-size:34px}.admin-page-head p{max-width:720px}.admin-primary-action{padding:11px 16px;white-space:nowrap}
.admin-dashboard-shell{display:grid;gap:16px}
.admin-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.admin-stat-card{display:flex;align-items:center;gap:13px;min-height:88px;padding:16px 17px;border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(180deg,color-mix(in srgb,var(--panel) 98%,transparent),color-mix(in srgb,var(--panel2) 96%,transparent));box-shadow:0 10px 28px rgba(0,0,0,.16)}
.admin-stat-icon{width:39px;height:39px;display:grid;place-items:center;flex:0 0 auto;border-radius:11px;border:1px solid color-mix(in srgb,var(--accent) 34%,var(--line));background:color-mix(in srgb,var(--accent) 12%,var(--panel2));color:var(--accent);font-size:17px;font-weight:900}
.admin-stat-card strong,.admin-stat-card small{display:block}.admin-stat-card strong{font-size:26px;line-height:1;margin-bottom:4px}.admin-stat-card small{color:var(--muted);font-size:11px}.admin-stat-card.needs-attention .admin-stat-icon{color:var(--maybe);border-color:color-mix(in srgb,var(--maybe) 42%,var(--line));background:color-mix(in srgb,var(--maybe) 12%,var(--panel2))}
.admin-dashboard-layout{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(330px,.72fr);gap:16px;align-items:start}.admin-dashboard-maincol,.admin-dashboard-sidecol{display:grid;gap:16px;min-width:0}
.admin-priority-card,.admin-campaigns-card{padding:20px}.admin-section-head{align-items:flex-start}.admin-section-head h2{font-size:21px;margin:4px 0}.admin-section-head p{font-size:11px;color:var(--muted);max-width:620px}
.admin-poll-list{display:grid;gap:9px}.admin-poll-row{display:grid;grid-template-columns:minmax(0,1fr) auto 24px;gap:16px;align-items:center;padding:14px 15px;border:1px solid var(--line);border-radius:11px;background:color-mix(in srgb,var(--panel2) 94%,transparent);color:var(--text);text-decoration:none;transition:.16s ease}.admin-poll-row:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--accent) 46%,var(--line));background:color-mix(in srgb,var(--panel) 94%,transparent)}
.admin-poll-copy{min-width:0}.admin-system-tag{display:inline-block;margin-bottom:5px;color:var(--accent);font-size:9px;font-weight:900;letter-spacing:.1em;text-transform:uppercase}.admin-poll-copy strong,.admin-poll-copy small{display:block}.admin-poll-copy strong{font-size:14px}.admin-poll-copy small{margin-top:3px;color:var(--muted);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-poll-copy .progress{width:min(320px,100%);height:6px;margin-top:9px}
.admin-poll-counts{display:grid;justify-items:end;gap:4px;min-width:118px;font-size:10px;color:var(--muted)}.admin-poll-counts b{color:var(--text);font-size:13px}.admin-poll-counts .missing{color:var(--maybe);font-weight:800}.admin-poll-counts em{font-style:normal;color:var(--muted);font-size:9px}.admin-row-arrow{color:var(--accent);font-size:18px;font-weight:900}
.admin-empty-state{display:flex;align-items:center;gap:12px;padding:18px;border:1px dashed var(--line);border-radius:11px;background:var(--panel2)}.admin-empty-state>span{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--okbg);color:var(--ok);font-weight:900}.admin-empty-state strong,.admin-empty-state small{display:block}.admin-empty-state small{color:var(--muted);font-size:10px;margin-top:3px}.admin-empty-state.small{padding:13px}.admin-empty-state.small>span{width:30px;height:30px}
.admin-campaign-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.admin-campaign-cards .campaign-card{min-height:165px}.admin-campaign-cards .campaign-card-content h3{font-size:19px}.admin-campaign-meta{display:flex;gap:10px;flex-wrap:wrap;color:#d2d9e0;font-size:10px}.admin-campaign-meta span{padding:4px 7px;border-radius:999px;background:rgba(0,0,0,.34);border:1px solid rgba(255,255,255,.08);backdrop-filter:blur(3px)}
.admin-dashboard-sidecol .card{padding:16px}.admin-dashboard-sidecol .section-head{margin-bottom:10px}.admin-dashboard-sidecol h2{font-size:16px;margin:3px 0}
.admin-news-list{display:grid;gap:7px}.admin-news-item{display:grid;grid-template-columns:auto minmax(0,1fr) 7px;gap:9px;align-items:center;padding:9px 4px;border-bottom:1px solid var(--line);color:var(--text);text-decoration:none}.admin-news-item:last-child{border-bottom:0}.admin-news-item:hover .admin-news-copy strong{color:var(--accent)}.admin-news-copy{min-width:0}.admin-news-copy strong,.admin-news-copy small,.admin-news-copy em{display:block}.admin-news-copy strong{font-size:11px}.admin-news-copy small{font-size:9px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}.admin-news-copy em{font-size:8px;color:var(--muted);font-style:normal;margin-top:3px}
.admin-next-list{display:grid}.admin-next-item{display:grid;grid-template-columns:46px minmax(0,1fr) 16px;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line);color:var(--text);text-decoration:none}.admin-next-item:last-child{border-bottom:0}.admin-next-date{width:42px;height:48px;display:grid;place-items:center;align-content:center;border:1px solid var(--line);border-radius:9px;background:var(--panel2)}.admin-next-date b{font-size:18px;line-height:1}.admin-next-date small{font-size:8px;color:var(--accent);font-weight:900;margin-top:3px}.admin-next-copy{min-width:0}.admin-next-copy strong,.admin-next-copy small,.admin-next-copy em{display:block}.admin-next-copy strong{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-next-copy small{font-size:9px;color:var(--muted);margin-top:3px}.admin-next-copy em{font-size:9px;color:#d9a9f3;font-style:normal;margin-top:4px}
.admin-player-actions{display:grid;gap:7px}.admin-player-actions>a{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;padding:9px 10px;border:1px solid var(--line);border-radius:9px;background:var(--panel2);color:var(--text);text-decoration:none}.admin-player-actions strong,.admin-player-actions small{display:block}.admin-player-actions strong{font-size:10px}.admin-player-actions small{margin-top:3px;color:var(--muted);font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-mail-card{display:grid!important;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;border-color:color-mix(in srgb,var(--maybe) 30%,var(--line))}.admin-mail-icon{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;background:var(--maybebg);color:var(--maybe)}.admin-mail-copy{min-width:0}.admin-mail-copy strong,.admin-mail-copy small,.admin-mail-copy em{display:block}.admin-mail-copy strong{font-size:11px;margin-top:4px}.admin-mail-copy small{font-size:9px;color:var(--muted);margin-top:3px}.admin-mail-copy em{font-size:8px;color:var(--maybe);font-style:normal;margin-top:4px}
.admin-activity-list{display:grid}.admin-activity-item{display:grid;grid-template-columns:8px minmax(0,1fr);gap:9px;padding:8px 0;border-bottom:1px solid var(--line)}.admin-activity-item:last-child{border-bottom:0}.admin-activity-item>span{width:7px;height:7px;border-radius:50%;background:var(--accent);margin-top:5px}.admin-activity-item strong{font-size:10px}.admin-activity-item p{margin:2px 0 0;color:var(--text);font-size:9px;line-height:1.35}.admin-activity-item small{display:block;color:var(--muted);font-size:8px;margin-top:3px}
@media(max-width:1250px){.admin-dashboard-layout{grid-template-columns:minmax(0,1.35fr) minmax(300px,.72fr)}.admin-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:980px){.admin-dashboard-layout{grid-template-columns:1fr}.admin-dashboard-sidecol{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.admin-dashboard-sidecol .admin-news-card,.admin-dashboard-sidecol .admin-next-card{grid-column:auto}.admin-dashboard-sidecol .admin-activity-card{grid-column:1/-1}}
@media(max-width:760px){.admin-page-head{align-items:flex-start}.admin-stat-grid,.admin-campaign-cards,.admin-dashboard-sidecol{grid-template-columns:1fr}.admin-dashboard-sidecol .admin-activity-card{grid-column:auto}.admin-poll-row{grid-template-columns:1fr 20px}.admin-poll-counts{grid-column:1/-1;grid-row:2;justify-items:start;grid-template-columns:repeat(3,auto);justify-content:start}.admin-poll-row>.admin-row-arrow{grid-column:2;grid-row:1}.admin-page-head .admin-primary-action{width:100%}}
@media(max-width:520px){.admin-page-head h1{font-size:28px}.admin-stat-card{min-height:76px}.admin-stat-icon{width:34px;height:34px}.admin-stat-card strong{font-size:23px}.admin-poll-counts{grid-template-columns:1fr}.admin-campaign-cards .campaign-card{min-height:150px}}

/* V2.8.26 — saisie d’accroche repliable par défaut */
.session-teaser-editor>summary{cursor:pointer;color:var(--accent);font-weight:800}.session-teaser-editor-summary{display:inline-flex;width:calc(100% - 20px);justify-content:space-between;align-items:center;gap:16px;vertical-align:middle}.session-teaser-editor-summary>span:first-child{display:flex;flex-direction:column;gap:5px}.session-teaser-editor-summary strong{color:var(--text);font-size:17px}.session-teaser-editor-summary small{color:var(--muted);font-weight:500;line-height:1.35}.session-teaser-editor-body{margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}.session-teaser-editor-body>.muted{margin-top:0}.session-teaser-admin>.session-teaser-saved-preview{margin-top:16px}@media(max-width:700px){.session-teaser-editor-summary{width:calc(100% - 16px);align-items:flex-start}.session-teaser-editor-summary .status-pill{flex:none}}

/* V2.8.27 — responsive téléphone renforcé et menu sans chevauchement */
.mobile-menu-toggle{display:none}
@media(max-width:780px){
  html,body{width:100%;max-width:100%;overflow-x:hidden}
  body{min-width:0;-webkit-text-size-adjust:100%}
  .app{display:block;width:100%;min-width:0;min-height:100vh}
  .sidebar{position:sticky;top:0;z-index:1000;width:100%;height:auto;min-height:62px;padding:9px 12px;display:grid;grid-template-columns:minmax(0,1fr) 44px;gap:8px;align-items:center;border-right:0;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--sidebar) 98%,transparent);box-shadow:0 8px 24px rgba(0,0,0,.28);backdrop-filter:blur(14px)}
  .brand{min-width:0;max-width:100%;margin:0;gap:9px;overflow:hidden}
  .brand-mark{width:38px;height:38px;flex:0 0 38px}
  .brand>span:last-child{min-width:0}
  .brand b,.brand small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .brand b{font-size:15px}.brand small{font-size:10px}
  .mobile-menu-toggle{display:grid;place-items:center;width:44px;height:44px;min-height:44px;padding:0;border:1px solid var(--line);border-radius:10px;background:var(--panel2);color:var(--text);font-size:25px;line-height:1;cursor:pointer;touch-action:manipulation}
  .mobile-menu-toggle:active{background:var(--panel)}
  .sidebar nav{display:none!important;grid-column:1/-1;width:100%;max-height:calc(100dvh - 155px);overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;margin:2px 0 0;padding:9px 0 4px;border-top:1px solid var(--line);gap:4px}
  .sidebar.menu-open nav{display:grid!important}
  .sidebar nav a{display:flex;align-items:center;width:100%;min-height:46px;padding:11px 12px;white-space:normal;border-radius:9px;touch-action:manipulation}
  .sidebar nav a:hover,.sidebar nav a:focus-visible{background:var(--panel);color:var(--text)}
  .sidebar-user.sidebar-user-with-avatar{display:none!important;position:static;left:auto;right:auto;bottom:auto;grid-column:1/-1;width:100%;margin:0;padding:10px 5px 4px;border-top:1px solid var(--line);grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px}
  .sidebar.menu-open .sidebar-user.sidebar-user-with-avatar{display:grid!important}
  .sidebar-user-with-avatar .avatar-circle{display:inline-grid!important}
  .sidebar-user strong,.sidebar-user span{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .sidebar-user a{display:inline-flex;align-items:center;min-height:38px;margin-top:2px;padding:7px 0;color:var(--danger);touch-action:manipulation}

  .content{width:100%;max-width:100%;min-width:0;padding:16px 12px 34px;overflow:visible}
  .page-head,.admin-page-head,.player-page-head{gap:10px;margin-bottom:15px}
  .page-head h1,.admin-page-head h1,.player-page-head h1{font-size:26px;line-height:1.12;margin-top:4px}
  .page-head p,.admin-page-head p,.player-page-head p{font-size:13px;line-height:1.45}
  .card{max-width:100%;padding:15px;border-radius:max(8px,var(--radius))}
  .flash{font-size:13px;line-height:1.45}

  .btn,.mini-btn,.icon-button{min-height:44px;touch-action:manipulation}
  input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),select{min-height:44px;font-size:16px}
  textarea{font-size:16px}
  .form-actions{justify-content:stretch}.form-actions .btn{width:100%}
  .actions{max-width:100%}

  .campaign-block,.campaign-admin-item,.campaign-card,.player-feature,.admin-panel,.admin-side-card{max-width:100%;min-width:0}
  .campaign-hero,.mini-hero{padding:17px}
  .campaign-content{padding:15px;gap:15px}
  .campaign-meta{justify-content:flex-start}
  .list-link{min-width:0}
  .list-link>span{min-width:0}
  .list-link small{overflow-wrap:anywhere}

  .matrix-wrap{width:100%;max-width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain;border-radius:10px}
  .matrix{min-width:680px}
  .matrix th,.matrix td{padding:10px 8px}
  .matrix th:first-child,.matrix td:first-child{min-width:118px;box-shadow:5px 0 10px rgba(0,0,0,.14)}

  .month-calendar{gap:4px}
  .calendar-day{min-height:40px;font-size:12px}
  .calendar-day.today:after{bottom:3px}
  .calendar-day.selected:before{right:3px;top:2px}
  .month-nav .mini-btn{min-width:44px}

  .admin-dashboard-shell,.admin-page-head,.player-dashboard-shell{width:100%;max-width:100%}
  .admin-stat-grid,.stat-grid,.stat-grid.four{gap:9px}
  .admin-stat-card,.stat-card{min-width:0}
  .admin-poll-row,.admin-news-item,.admin-next-item,.dashboard-change-item{max-width:100%}
  .admin-news-copy small,.admin-poll-copy small,.admin-next-copy strong{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
  .dashboard-change-copy small{white-space:normal;overflow:visible;text-overflow:clip}

  .player-feature-copy{padding:18px}.player-feature-meta{margin:0 18px 18px}.player-feature-copy h2{font-size:25px}
  .feature-actions,.rich-card-actions{display:grid;grid-template-columns:1fr;gap:8px}
  .feature-actions .btn,.rich-card-actions .btn{width:100%;min-width:0}
  .player-upcoming-panel{padding:15px}

  .avatar-crop-dialog{width:calc(100vw - 18px);max-height:calc(100dvh - 18px);padding:14px}
  .avatar-crop-head{gap:8px}.avatar-crop-head h2{font-size:21px}.avatar-crop-head p{font-size:12px}
  .avatar-crop-workspace{grid-template-columns:1fr!important;grid-template-areas:"stage" "controls" "preview"!important;gap:12px}
  .avatar-crop-stage{width:min(100%,430px);margin-inline:auto}
  .avatar-crop-actions{position:sticky;bottom:-14px;margin:12px -14px -14px;padding:10px 14px;background:var(--panel);border-top:1px solid var(--line);z-index:2}
}
@media(max-width:520px){
  .content{padding:13px 9px 28px}
  .card{padding:13px}
  .page-head h1,.admin-page-head h1,.player-page-head h1{font-size:24px}
  .page-head>.actions,.admin-page-head>.actions{width:100%}
  .page-head>.actions .btn,.admin-page-head>.actions .btn{width:100%}
  .actions.vertical,.player-row .actions{width:100%;display:grid;grid-template-columns:1fr}
  .actions.vertical .btn,.player-row .actions .btn{width:100%}
  .list-link{align-items:flex-start;flex-direction:column}
  .list-link>b{align-self:flex-end}
  .choice-group{grid-template-columns:1fr!important}
  .choice-group span{min-height:46px}
  .calendar-day{min-height:38px;padding:2px}
  .selected-date-row{padding:8px}
  .admin-poll-counts{grid-template-columns:repeat(3,minmax(0,auto));gap:10px}
  .admin-stat-grid,.stat-grid.four{grid-template-columns:1fr 1fr}
  .dashboard-change-item{padding:9px}
  .avatar-crop-actions{display:grid;grid-template-columns:1fr}.avatar-crop-actions .btn,.avatar-crop-actions .mini-btn{width:100%}
}
@media(max-width:370px){
  .brand small{display:none}
  .admin-stat-grid,.stat-grid.four{grid-template-columns:1fr}
  .content{padding-left:8px;padding-right:8px}
}

/* V2.8.28 — indisponibilités personnelles + aide à la décision MJ */
.personal-unavailability-card{scroll-margin-top:20px}.unavailability-rule-list{display:grid;gap:9px;margin:12px 0 18px}.unavailability-rule{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:11px;align-items:center;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}.unavailability-rule-icon{width:32px;height:32px;display:grid;place-items:center;border-radius:9px;background:var(--dangerbg);color:var(--danger)}.unavailability-rule strong,.unavailability-rule small{display:block}.unavailability-rule small{margin-top:2px;color:var(--muted);font-size:10px}.unavailability-rule form{margin:0}.unavailability-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.unavailability-form{padding:14px;border:1px solid var(--line);border-radius:11px;background:color-mix(in srgb,var(--panel2) 92%,transparent)}.unavailability-form>strong{display:block;margin-bottom:12px}.unavailability-form label{margin-bottom:10px}.unavailability-form .mini-btn{margin-top:2px}.declared-unavailability-warning{margin-top:9px;padding:9px 10px;border:1px solid color-mix(in srgb,var(--danger) 48%,var(--line));border-radius:9px;background:color-mix(in srgb,var(--dangerbg) 72%,var(--panel2));display:grid;gap:3px}.declared-unavailability-warning b{font-size:11px;color:var(--danger)}.declared-unavailability-warning span,.declared-unavailability-warning small{display:block;font-size:10px}.declared-unavailability-warning span{color:var(--text)}.declared-unavailability-warning small{color:var(--muted)}.availability-row.has-declared-unavailability{box-shadow:inset 3px 0 0 color-mix(in srgb,var(--danger) 70%,transparent)}.matrix-declared-unavailable{position:relative}.matrix-unavailability,.matrix-warning-total{display:block;margin-top:4px;color:var(--danger);font-size:9px}.decision-board{margin-top:20px}.decision-date-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.decision-date-card{position:relative;display:grid;gap:12px;padding:15px;border:1px solid var(--line);border-radius:12px;background:var(--panel2);min-width:0}.decision-date-card.best-choice{border-color:color-mix(in srgb,var(--ok) 70%,var(--line));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ok) 25%,transparent),0 10px 28px rgba(0,0,0,.16)}.decision-date-card.has-conflict{border-color:color-mix(in srgb,var(--danger) 66%,var(--line))}.decision-date-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.decision-date-head>div:first-child{min-width:0}.decision-date-head strong,.decision-date-head small{display:block}.decision-date-head strong{font-size:15px}.decision-date-head small{margin-top:3px;color:var(--muted);font-size:10px}.decision-best-badge{display:inline-flex;margin-bottom:6px;padding:4px 7px;border-radius:999px;background:var(--okbg);color:var(--ok);font-size:9px;font-weight:900;letter-spacing:.03em}.decision-score{flex:0 0 auto;width:54px;height:54px;border-radius:12px;border:1px solid var(--line);display:grid;place-items:center;background:var(--panel);text-align:center}.decision-score b{font-size:22px;line-height:1}.decision-score span{margin-top:-8px;color:var(--muted);font-size:9px}.decision-metrics{display:flex;flex-wrap:wrap;gap:6px}.decision-metrics span{padding:5px 7px;border-radius:999px;border:1px solid var(--line);font-size:9px;font-weight:800}.decision-metrics .yes{color:var(--ok);background:var(--okbg)}.decision-metrics .maybe{color:var(--maybe);background:var(--maybebg)}.decision-metrics .no{color:var(--danger);background:var(--dangerbg)}.decision-metrics .none{color:var(--muted);background:var(--panel)}.decision-people-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.decision-people-group{padding:8px;border:1px solid var(--line);border-radius:9px;background:color-mix(in srgb,var(--panel) 54%,transparent);min-width:0}.decision-people-group>small{display:block;margin-bottom:6px;color:var(--muted);font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.decision-avatar-row{display:flex;align-items:center;min-height:30px;flex-wrap:wrap}.decision-avatar-row .avatar-circle{margin-right:-4px}.decision-avatar-row em{color:var(--muted);font-size:11px;font-style:normal}.decision-unavailability-warning{display:grid;gap:7px;padding:10px;border:1px solid color-mix(in srgb,var(--danger) 48%,var(--line));border-radius:9px;background:color-mix(in srgb,var(--dangerbg) 64%,var(--panel2))}.decision-unavailability-warning>b{font-size:10px;color:var(--danger)}.decision-unavailability-warning>span{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:8px}.decision-unavailability-warning>span strong,.decision-unavailability-warning>span small{display:block}.decision-unavailability-warning>span strong{font-size:10px}.decision-unavailability-warning>span small{margin-top:1px;color:var(--muted);font-size:9px}.decision-unavailability-warning>em{color:var(--muted);font-size:9px;font-style:normal}.decision-card-actions{display:flex;justify-content:flex-end;margin-top:auto}.decision-card-actions .btn{width:100%}
@media(max-width:980px){.decision-date-grid{grid-template-columns:1fr}.unavailability-form-grid{grid-template-columns:1fr}}
@media(max-width:620px){.unavailability-rule{grid-template-columns:auto minmax(0,1fr)}.unavailability-rule form{grid-column:1/-1}.unavailability-rule .mini-btn{width:100%}.decision-people-grid{grid-template-columns:1fr}.decision-date-head{align-items:center}.decision-score{width:48px;height:48px}.decision-score b{font-size:19px}}


/* V2.8.29 — gestion directe des participants dans une campagne */
.campaign-participants-editor{padding:15px}.campaign-participants-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:11px}.campaign-participants-head strong,.campaign-participants-head small{display:block}.campaign-participants-head small{margin-top:3px;color:var(--muted);font-size:11px}.campaign-participants-head>span{flex:0 0 auto;padding:5px 8px;border:1px solid var(--line);border-radius:999px;background:var(--panel2);color:var(--muted);font-size:10px;font-weight:800}.campaign-participant-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.campaign-participant-option{display:grid;grid-template-columns:auto auto minmax(0,1fr);align-items:center;gap:9px;margin:0;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:color-mix(in srgb,var(--panel2) 92%,transparent);cursor:pointer;transition:border-color .15s ease,background .15s ease,transform .15s ease}.campaign-participant-option:hover{border-color:color-mix(in srgb,var(--accent) 58%,var(--line));transform:translateY(-1px)}.campaign-participant-option.is-selected{border-color:color-mix(in srgb,var(--accent) 64%,var(--line));background:color-mix(in srgb,var(--accent) 10%,var(--panel2))}.campaign-participant-option.is-inactive{opacity:.62}.campaign-participant-option>input{width:16px;height:16px;margin:0;accent-color:var(--accent)}.campaign-participant-option>span{min-width:0}.campaign-participant-option strong,.campaign-participant-option small{display:block}.campaign-participant-option strong{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.campaign-participant-option small{margin-top:2px;color:var(--muted);font-size:9px;overflow-wrap:anywhere}.campaign-participants-note{display:block;margin-top:10px;color:var(--muted);font-size:10px;line-height:1.45}
@media(max-width:980px){.campaign-participant-grid{grid-template-columns:1fr}}
@media(max-width:520px){.campaign-participants-head{align-items:flex-start;flex-direction:column}.campaign-participant-option{grid-template-columns:auto auto minmax(0,1fr);padding:9px}}

/* V2.8.30 — séparation nette MJ / joueur */
.campaign-role-editor{padding:15px;border-color:color-mix(in srgb,var(--accent) 35%,var(--line));background:color-mix(in srgb,var(--accent) 4%,var(--panel))}
.campaign-role-editor legend{font-weight:900}.campaign-role-note{display:block;margin-top:8px;color:var(--muted);font-size:10px;line-height:1.5}
.campaign-admin-players{margin-top:12px}.campaign-participant-option.is-current-mj{box-shadow:inset 3px 0 0 color-mix(in srgb,var(--accent) 70%,transparent)}
.campaign-participant-option.is-current-mj .admin-player-role-label{color:var(--accent);font-weight:900}
.campaign-admin-players .campaign-participant-option:not(.is-selected) .admin-player-role-label+*{color:var(--muted)}
.sidebar-role-switch{margin:10px 12px 4px}.sidebar-role-switch button{width:100%;display:grid;grid-template-columns:auto 1fr;column-gap:9px;align-items:center;text-align:left;padding:10px 11px;border:1px solid color-mix(in srgb,var(--accent) 38%,var(--line));border-radius:12px;background:color-mix(in srgb,var(--accent) 8%,var(--panel2));color:var(--text);cursor:pointer}.sidebar-role-switch button>span{grid-row:1/3;font-size:18px;color:var(--accent)}.sidebar-role-switch button strong,.sidebar-role-switch button small{display:block}.sidebar-role-switch button strong{font-size:11px}.sidebar-role-switch button small{font-size:9px;color:var(--muted);margin-top:2px}.sidebar-role-switch button:hover{border-color:color-mix(in srgb,var(--accent) 65%,var(--line));background:color-mix(in srgb,var(--accent) 13%,var(--panel2))}

/* V2.8.31 — dans une campagne, le statut MJ remplace le statut joueur. */
.campaign-participant-option.is-role-locked{cursor:default;background:color-mix(in srgb,var(--accent) 8%,var(--panel2));border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}
.campaign-participant-option.is-role-locked:hover{transform:none}
.campaign-participant-option.is-role-locked>input{opacity:.45;cursor:not-allowed}
.campaign-participant-option.is-role-locked .admin-player-role-label{color:var(--accent);font-weight:900}

/* V2.8.31 — distinction visuelle MJ / joueur. */
.avatar-circle.avatar-mj{box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 72%,#fff 12%)}
.check.role-locked{opacity:.72}
.check.role-locked input{cursor:not-allowed}
.campaign-mj-presence{display:flex;align-items:center;gap:11px;margin:0 0 14px;padding:10px 12px;border:1px solid color-mix(in srgb,var(--accent) 42%,var(--line));border-radius:12px;background:color-mix(in srgb,var(--accent) 8%,var(--panel2))}
.campaign-mj-presence>span:not(.attendance-pill){display:grid;gap:2px}.campaign-mj-presence small{color:var(--accent);font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.campaign-mj-presence strong{font-size:12px}.campaign-mj-presence em{color:var(--muted);font-size:10px;font-style:normal}
.decision-mj-chip{display:flex;align-items:center;gap:8px;padding:7px 9px;border:1px solid color-mix(in srgb,var(--accent) 40%,var(--line));border-radius:10px;background:color-mix(in srgb,var(--accent) 7%,var(--panel2))}.decision-mj-chip span{display:grid;gap:1px}.decision-mj-chip small{color:var(--accent);font-size:8px;font-weight:900;text-transform:uppercase}.decision-mj-chip strong{font-size:10px}

/* V2.8.32 — le MJ répond au sondage tout en restant identifié comme MJ */
.matrix-mj-row td{background:color-mix(in srgb,var(--accent) 5%,transparent)}
.matrix-mj-row td:first-child{border-left:2px solid color-mix(in srgb,var(--accent) 65%,transparent)}
.mj-badge-inline{display:inline-flex;align-items:center;margin-left:5px;padding:2px 5px;border-radius:999px;background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent);font-size:8px!important;font-weight:900;letter-spacing:.07em;text-transform:uppercase}
.decision-mj-chip em{font-size:8px;color:var(--muted);font-style:normal}
.decision-mj-status{display:flex;align-items:center;gap:8px;margin:9px 0;padding:7px 9px;border:1px solid var(--line);border-radius:10px;background:color-mix(in srgb,var(--panel2) 88%,transparent)}
.decision-mj-status>span{display:grid;gap:1px}.decision-mj-status strong{font-size:10px}.decision-mj-status small{font-size:9px;color:var(--muted)}
.decision-mj-status.yes{border-color:color-mix(in srgb,#48b978 42%,var(--line))}.decision-mj-status.maybe{border-color:color-mix(in srgb,#e2ae4c 46%,var(--line))}.decision-mj-status.no{border-color:color-mix(in srgb,#d65f62 46%,var(--line))}
.campaign-mj-presence>.attendance-pill{margin-left:auto;white-space:nowrap}
@media(max-width:700px){.campaign-mj-presence{align-items:flex-start;flex-wrap:wrap}.campaign-mj-presence>.attendance-pill{margin-left:0}}

/* V2.8.33 — centre de notifications, tâches MJ, participants et boîte Discord */
.sidebar-notification-link{display:flex!important;align-items:center;justify-content:space-between;gap:8px}.sidebar-notification-link>span{min-width:0}.sidebar-notification-badge{flex:0 0 auto;min-width:20px;height:20px;padding:0 6px;border-radius:999px;display:inline-grid;place-items:center;background:var(--accent);color:#071018;font-size:10px;font-weight:900;box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 15%,transparent)}
.notification-page-head{align-items:center}.notification-center-card{padding:18px}.notification-center-summary{display:flex;align-items:center;gap:12px;margin-bottom:14px;padding:12px 14px;border:1px solid var(--line);border-radius:11px;background:var(--panel2)}.notification-summary-icon{width:36px;height:36px;display:grid;place-items:center;border-radius:10px;background:color-mix(in srgb,var(--accent) 12%,var(--panel));font-size:17px}.notification-center-summary strong,.notification-center-summary small{display:block}.notification-center-summary strong{font-size:14px}.notification-center-summary small{margin-top:2px;color:var(--muted);font-size:10px}.notification-center-list{display:grid;gap:8px}.notification-center-item{position:relative;display:grid;grid-template-columns:auto 34px minmax(0,1fr) 10px;gap:10px;align-items:center;padding:11px 12px;border:1px solid var(--line);border-radius:11px;background:color-mix(in srgb,var(--panel2) 94%,transparent);color:var(--text);text-decoration:none}.notification-center-item:hover{border-color:color-mix(in srgb,var(--accent) 48%,var(--line));transform:translateY(-1px)}.notification-center-item.is-unread{background:color-mix(in srgb,var(--accent) 7%,var(--panel2));border-color:color-mix(in srgb,var(--accent) 28%,var(--line))}.notification-event-icon{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 12%,var(--panel));color:var(--accent);font-weight:900}.notification-center-copy{min-width:0}.notification-center-copy strong,.notification-center-copy small,.notification-center-copy em{display:block}.notification-center-copy strong{font-size:12px}.notification-center-copy small{margin-top:2px;color:var(--muted);font-size:10px;line-height:1.35}.notification-center-copy em{margin-top:4px;color:var(--muted);font-size:9px;font-style:normal}.notification-unread-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 14%,transparent)}
.admin-task-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:16px}.admin-task-item{display:grid;grid-template-columns:34px minmax(0,1fr) 16px;gap:9px;align-items:center;padding:10px 11px;border:1px solid var(--line);border-radius:10px;background:var(--panel2);color:var(--text);text-decoration:none}.admin-task-item:hover{border-color:color-mix(in srgb,var(--accent) 44%,var(--line));transform:translateY(-1px)}.admin-task-icon{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 10%,var(--panel));color:var(--accent);font-weight:900}.admin-task-item strong,.admin-task-item small{display:block}.admin-task-item strong{font-size:11px}.admin-task-item small{margin-top:2px;color:var(--muted);font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-task-item>i{font-style:normal;color:var(--accent);font-weight:900}.admin-task-item.task-missing .admin-task-icon,.admin-task-item.task-attendance .admin-task-icon{color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,var(--panel))}.admin-task-item.task-maybe .admin-task-icon{color:var(--maybe);background:color-mix(in srgb,var(--maybe) 10%,var(--panel))}.admin-task-item.task-ideal .admin-task-icon{color:var(--ok);background:color-mix(in srgb,var(--ok) 10%,var(--panel))}.admin-subsection-head{display:flex;justify-content:space-between;align-items:end;gap:10px;margin:4px 0 9px;padding-top:13px;border-top:1px solid var(--line)}.admin-subsection-head strong{font-size:13px}.admin-subsection-head small{color:var(--muted);font-size:9px}
.rich-card-roster{margin-top:10px;padding-top:9px;border-top:1px solid rgba(255,255,255,.08)}.rich-card-roster-label{display:block;margin-bottom:6px;color:#c6d0d8;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.rich-card-roster-row{display:flex;align-items:center;gap:5px;min-width:0}.rich-card-roster-row .avatar-circle{box-shadow:0 0 0 2px rgba(7,13,18,.86)}.roster-avatar-wrap{position:relative;display:inline-flex}.roster-avatar-wrap.is-mj i{position:absolute;right:-3px;bottom:-3px;min-width:19px;height:14px;padding:0 3px;border-radius:6px;display:grid;place-items:center;background:var(--accent);color:#071018;font-size:7px;font-weight:900;font-style:normal}.roster-more{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:rgba(0,0,0,.46);border:1px solid rgba(255,255,255,.12);font-size:9px;font-weight:900}.rich-card-roster-row>small{margin-left:4px;color:#b7c2cb;font-size:9px}
.campaign-roster-card>summary{cursor:pointer}.campaign-roster-summary{display:flex;width:calc(100% - 18px);align-items:center;justify-content:space-between;gap:14px;vertical-align:middle}.campaign-roster-summary>span:first-child{display:flex;flex-direction:column;gap:4px}.campaign-roster-summary strong{font-size:14px;color:var(--text)}.campaign-roster-preview{display:flex;align-items:center}.campaign-roster-preview .avatar-circle{margin-left:-7px;box-shadow:0 0 0 2px var(--panel)}.campaign-roster-preview .avatar-circle:first-child{margin-left:0}.campaign-roster-preview>i{margin-left:6px;color:var(--muted);font-size:9px;font-style:normal}.campaign-roster-body{display:grid;grid-template-columns:minmax(180px,.65fr) minmax(0,1.6fr);gap:12px;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}.campaign-roster-mj{position:relative;display:flex;align-items:center;gap:9px;padding:10px;border:1px solid color-mix(in srgb,var(--accent) 28%,var(--line));border-radius:10px;background:color-mix(in srgb,var(--accent) 7%,var(--panel2))}.campaign-roster-mj strong{font-size:12px}.roster-role-label{position:absolute;right:8px;top:7px;color:var(--accent);font-size:8px;font-weight:900}.campaign-roster-players{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.campaign-roster-person{display:flex;align-items:center;gap:8px;padding:8px 9px;border:1px solid var(--line);border-radius:9px;background:var(--panel2)}.campaign-roster-person strong,.campaign-roster-person small{display:block}.campaign-roster-person strong{font-size:11px}.campaign-roster-person small{margin-top:1px;color:var(--muted);font-size:8px}
.discord-toolbox{padding:15px 17px}.discord-toolbox .section-head{margin-bottom:9px}.discord-toolbox h2{font-size:16px}.discord-toolbox p{font-size:10px;color:var(--muted)}.discord-toolbox-actions{display:flex;flex-wrap:wrap;gap:7px}.discord-toolbox-actions .mini-btn{min-height:38px}.discord-toolbox-note{display:block;margin-top:8px;color:var(--muted);font-size:9px}
@media(max-width:900px){.admin-task-list{grid-template-columns:1fr}.campaign-roster-body{grid-template-columns:1fr}.campaign-roster-players{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.notification-page-head{align-items:flex-start}.notification-page-head form,.notification-page-head .mini-btn{width:100%}.notification-center-card{padding:14px}.notification-center-item{grid-template-columns:auto 28px minmax(0,1fr) 8px;padding:9px}.notification-event-icon{width:28px;height:28px}.notification-center-copy small{white-space:normal}.campaign-roster-summary{align-items:flex-start;flex-direction:column}.campaign-roster-preview{padding-left:7px}.campaign-roster-players{grid-template-columns:1fr}.discord-toolbox-actions{display:grid;grid-template-columns:1fr}.discord-toolbox-actions .mini-btn{width:100%}.rich-card-roster-row>small{display:none}}

/* V2.8.34 — Dernière connexion des joueurs */
.last-login-summary{display:block!important;margin-top:3px!important;font-size:9px!important;color:var(--muted)!important}.last-login-summary.recent{color:var(--ok)!important}.last-login-summary.inactive{color:var(--maybe)!important}.last-login-summary.never{color:var(--muted)!important}.last-login-card{display:grid;grid-template-columns:minmax(120px,.6fr) minmax(160px,1fr) auto;gap:10px;align-items:center;margin:10px 0 14px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}.last-login-card>span{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-weight:800}.last-login-card>strong{font-size:12px}.last-login-card>small{justify-self:end;padding:4px 7px;border-radius:999px;border:1px solid var(--line);font-size:9px;color:var(--muted)}.last-login-card.recent>small{color:var(--ok);background:var(--okbg)}.last-login-card.inactive>small{color:var(--maybe);background:var(--maybebg)}.last-login-card.never>small{color:var(--muted)}
@media(max-width:620px){.last-login-card{grid-template-columns:1fr;gap:4px}.last-login-card>small{justify-self:start;margin-top:3px}}

/* V2.8.35 — changements de présence, diagnostic et recherche joueurs */
.attendance-reported_late,.attendance-reported_early{color:var(--maybe);border-color:color-mix(in srgb,var(--maybe) 52%,var(--line));background:color-mix(in srgb,var(--maybe) 12%,var(--panel))}.player-attendance-card.attendance-reported_late,.player-attendance-card.attendance-reported_early{border-left-color:var(--maybe)}
.attendance-change-summary{display:grid;gap:4px;margin:8px 0 2px;padding:10px 12px;border:1px solid color-mix(in srgb,var(--maybe) 35%,var(--line));border-radius:10px;background:color-mix(in srgb,var(--maybe) 7%,var(--panel2))}.attendance-change-summary strong{font-size:12px}.attendance-change-summary small{color:var(--muted);font-size:10px}.attendance-report-box summary{color:var(--accent)}.attendance-change-form{display:grid;gap:12px}.attendance-choice-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.attendance-choice{display:flex;gap:8px;align-items:flex-start;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--panel2);cursor:pointer}.attendance-choice input{margin-top:3px}.attendance-choice span{display:grid;gap:2px}.attendance-choice b{font-size:10px}.attendance-choice small{font-size:8px;color:var(--muted);line-height:1.35}.attendance-time-field{max-width:260px}.attendance-time-field small{display:block;margin-top:4px;color:var(--muted);font-size:8px}.attendance-cancel-form{margin-top:8px!important}.attendance-stat-grid-five{grid-template-columns:repeat(5,minmax(0,1fr))}.attendance-stat.timing strong{color:var(--maybe)}
.player-filter-card{margin-bottom:16px;padding:14px 16px}.player-filter-form{display:grid;grid-template-columns:minmax(210px,1.5fr) minmax(160px,.8fr) minmax(180px,.9fr) auto;gap:10px;align-items:end}.player-filter-form label{margin:0}.player-filter-actions{display:flex;gap:7px;align-items:center}.player-filter-card>small{display:block;margin-top:8px;color:var(--muted);font-size:9px}.player-campaign-summary{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}.player-campaign-summary i,.player-campaign-summary em{padding:2px 5px;border:1px solid var(--line);border-radius:999px;background:var(--panel2);color:var(--muted);font-size:7px;font-style:normal;line-height:1.2}.player-campaign-summary i{color:var(--text)}
.admin-campaign-people-card{margin-top:16px}.admin-campaign-people-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.admin-campaign-person{padding:11px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}.admin-campaign-person-head{display:flex;align-items:center;gap:8px}.admin-campaign-person-head strong,.admin-campaign-person-head small{display:block}.admin-campaign-person-head strong{font-size:11px}.admin-campaign-person-head small{margin-top:2px;color:var(--muted);font-size:8px}.campaign-role-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:9px}.campaign-role-chip{display:inline-flex;gap:5px;align-items:center;padding:4px 6px;border:1px solid var(--line);border-radius:999px;font-size:8px;color:var(--muted)}.campaign-role-chip b{font-size:7px;text-transform:uppercase;letter-spacing:.06em}.campaign-role-chip.mj{border-color:color-mix(in srgb,var(--accent) 40%,var(--line));color:var(--text);background:color-mix(in srgb,var(--accent) 7%,var(--panel))}.campaign-role-chip.mj b{color:var(--accent)}.campaign-role-chip.player b{color:var(--ok)}
.diagnostic-page-head{align-items:center}.diagnostic-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:14px}.diagnostic-summary{padding:14px;border:1px solid var(--line);border-radius:11px;background:var(--panel2)}.diagnostic-summary strong{display:block;font-size:24px;line-height:1}.diagnostic-summary span{display:block;margin-top:5px;color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.08em}.diagnostic-summary.ok strong{color:var(--ok)}.diagnostic-summary.warn strong{color:var(--maybe)}.diagnostic-summary.error strong{color:var(--danger)}.diagnostic-list{display:grid;gap:8px}.diagnostic-row{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}.diagnostic-icon{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;font-weight:900}.diagnostic-row.ok .diagnostic-icon{color:var(--ok);background:var(--okbg)}.diagnostic-row.warn .diagnostic-icon{color:var(--maybe);background:var(--maybebg)}.diagnostic-row.error .diagnostic-icon{color:var(--danger);background:var(--dangerbg)}.diagnostic-row strong,.diagnostic-row small,.diagnostic-row em{display:block}.diagnostic-row strong{font-size:11px}.diagnostic-row small{margin-top:2px;color:var(--muted);font-size:9px}.diagnostic-row em{margin-top:4px;color:var(--muted);font-size:8px;font-style:normal}.diagnostic-status{padding:4px 7px;border-radius:999px;border:1px solid var(--line);font-size:8px;font-weight:900}.diagnostic-row.ok .diagnostic-status{color:var(--ok)}.diagnostic-row.warn .diagnostic-status{color:var(--maybe)}.diagnostic-row.error .diagnostic-status{color:var(--danger)}.diagnostic-note{margin-top:14px}.diagnostic-note code{padding:2px 4px;border:1px solid var(--line);border-radius:4px;background:var(--panel2)}
@media(max-width:1000px){.attendance-choice-grid{grid-template-columns:1fr}.attendance-stat-grid-five{grid-template-columns:repeat(3,minmax(0,1fr))}.player-filter-form{grid-template-columns:1fr 1fr}.player-filter-actions{grid-column:1/-1}.admin-campaign-people-list{grid-template-columns:1fr}}
@media(max-width:620px){.attendance-stat-grid-five{grid-template-columns:repeat(2,minmax(0,1fr))}.player-filter-form{grid-template-columns:1fr}.player-filter-actions{grid-column:auto}.diagnostic-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.diagnostic-row{grid-template-columns:30px minmax(0,1fr)}.diagnostic-status{grid-column:2;justify-self:start}.diagnostic-page-head{align-items:flex-start}.diagnostic-page-head .mini-btn{width:100%}}

/* V2.8.36 — passe d’ergonomie générale : navigation, lisibilité et hiérarchie. */
.sidebar nav{gap:0;max-height:calc(100vh - 285px);overflow-y:auto;overflow-x:hidden;padding-right:3px;scrollbar-width:thin;scrollbar-color:var(--line) transparent}
.sidebar-nav-group{display:grid;gap:3px;margin:0 0 13px}.sidebar-nav-group:last-child{margin-bottom:0}
.sidebar-nav-label{display:block;padding:2px 11px 5px;color:color-mix(in srgb,var(--muted) 82%,transparent);font-size:9px;font-weight:900;letter-spacing:.12em;text-transform:uppercase}
.sidebar nav a{position:relative;display:flex;align-items:center;gap:9px;min-height:39px;padding:9px 11px;font-size:13px;line-height:1.2;transition:background .12s ease,color .12s ease,border-color .12s ease}
.sidebar nav a .nav-icon{width:19px;flex:0 0 19px;text-align:center;color:color-mix(in srgb,var(--muted) 88%,var(--text));font-size:14px}
.sidebar nav a.active{background:color-mix(in srgb,var(--accent) 12%,var(--panel));color:var(--text);box-shadow:inset 3px 0 0 var(--accent)}
.sidebar nav a.active .nav-icon{color:var(--accent)}
.sidebar nav a.active:after{content:"";position:absolute;right:8px;width:5px;height:5px;border-radius:50%;background:var(--accent)}
.sidebar-notification-link .nav-label-wrap{display:flex;align-items:center;gap:9px;min-width:0}.sidebar-notification-link.active:after{display:none}
.eyebrow{font-size:11px}.mini-btn{min-height:36px;padding:8px 11px;font-size:12px}.help,label small{font-size:12px;line-height:1.4}
.admin-task-item strong{font-size:12px}.admin-task-item small{font-size:10px;line-height:1.35}.admin-subsection-head small{font-size:10px}.admin-system-tag{font-size:9px}.admin-poll-copy small,.admin-poll-counts,.admin-news-copy small,.admin-next-copy small{font-size:10px}
.decision-date-head small,.decision-unavailability-warning>span small,.decision-unavailability-warning>em{font-size:10px}.decision-best-badge,.decision-metrics span,.decision-people-group>small{font-size:10px}.matrix-unavailability,.matrix-warning-total{font-size:10px}
.discord-toolbox p,.discord-toolbox-note{font-size:10px;line-height:1.4}.player-campaign-summary i,.player-campaign-summary em,.campaign-role-chip{font-size:8px}

/* Le tableau de bord commence par les actions ; les indicateurs sont volontairement secondaires. */
.admin-overview-details{border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--panel2) 76%,transparent);overflow:hidden}
.admin-overview-details>summary{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:54px;padding:11px 15px;cursor:pointer;list-style:none}.admin-overview-details>summary::-webkit-details-marker{display:none}
.admin-overview-details>summary>span:first-child{display:grid;gap:3px}.admin-overview-details>summary strong{font-size:13px}.admin-overview-summary{color:var(--muted);font-size:11px}.admin-overview-summary b{color:var(--text)}
.admin-overview-details[open]>summary{border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--panel) 72%,transparent)}.admin-overview-details .admin-stat-grid{margin:0;padding:13px}
.admin-secondary-details>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;list-style:none}.admin-secondary-details>summary::-webkit-details-marker{display:none}.admin-secondary-details>summary>span{display:grid;gap:4px}.admin-secondary-details>summary strong{font-size:14px}.admin-secondary-details>summary>small{color:var(--muted);font-size:10px}.admin-secondary-details[open]>summary{margin-bottom:13px;padding-bottom:11px;border-bottom:1px solid var(--line)}

/* Un sondage MJ devient un petit espace de travail à trois zones au lieu d'une très longue page. */
.poll-workspace-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 0 18px;padding:6px;border:1px solid var(--line);border-radius:13px;background:color-mix(in srgb,var(--panel2) 92%,transparent);box-shadow:0 10px 30px rgba(0,0,0,.12)}
.poll-workspace-tabs button{appearance:none;display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:9px;row-gap:1px;align-items:center;min-height:54px;padding:8px 12px;border:1px solid transparent;border-radius:9px;background:transparent;color:var(--muted);text-align:left;cursor:pointer}
.poll-workspace-tabs button>span{grid-row:1/3;font-size:18px}.poll-workspace-tabs button strong,.poll-workspace-tabs button small{display:block}.poll-workspace-tabs button strong{font-size:12px;color:inherit}.poll-workspace-tabs button small{font-size:10px;color:var(--muted)}
.poll-workspace-tabs button:hover{background:color-mix(in srgb,var(--panel) 78%,transparent);color:var(--text)}.poll-workspace-tabs button.active{border-color:color-mix(in srgb,var(--accent) 40%,var(--line));background:color-mix(in srgb,var(--accent) 12%,var(--panel));color:var(--text);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 8%,transparent)}.poll-workspace-tabs button.active>span{color:var(--accent)}
[data-poll-panel]{margin-bottom:18px}[data-poll-panel][hidden]{display:none!important}.poll-participants-panel,.attendance-admin-card,.decision-board,.discord-toolbox,.session-teaser-admin,.poll-settings-details{scroll-margin-top:18px}.decision-board{margin-top:0}
.poll-settings-details>summary{cursor:pointer;font-size:13px;font-weight:850;color:var(--text)}.poll-settings-details[open]>summary{margin-bottom:14px;padding-bottom:12px;border-bottom:1px solid var(--line)}

/* Tablette : on évite les colonnes trop étroites entre 8 et 12 pouces. */
@media(min-width:781px) and (max-width:1180px){
  .app{grid-template-columns:218px minmax(0,1fr)}.sidebar{padding:20px 13px}.content{padding:24px 22px 44px}
  .admin-dashboard-layout{grid-template-columns:1fr}.admin-dashboard-sidecol{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.admin-dashboard-sidecol .admin-activity-card{grid-column:1/-1}
  .admin-campaign-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.decision-date-grid{grid-template-columns:1fr}
  .player-cards-rich{grid-template-columns:repeat(2,minmax(0,1fr))}.player-dashboard-lower{grid-template-columns:1fr}
}
@media(max-width:780px){
  .sidebar nav{max-height:calc(100dvh - 155px);padding-right:0}.sidebar-nav-group{margin-bottom:8px}.sidebar-nav-label{padding:7px 12px 3px;font-size:10px}.sidebar nav a{font-size:14px}.sidebar nav a.active:after{right:12px}
  .poll-workspace-tabs{position:sticky;top:70px;z-index:20;gap:4px;padding:4px;margin-bottom:14px;background:color-mix(in srgb,var(--panel2) 97%,transparent);backdrop-filter:blur(12px)}
  .poll-workspace-tabs button{grid-template-columns:1fr;justify-items:center;min-height:50px;padding:6px 4px;text-align:center}.poll-workspace-tabs button>span{grid-row:auto;font-size:16px}.poll-workspace-tabs button strong{font-size:11px}.poll-workspace-tabs button small{display:none}
  .admin-overview-details>summary{align-items:flex-start;flex-direction:column;gap:5px}.admin-overview-summary{line-height:1.45}
}
@media(max-width:520px){.poll-workspace-tabs button strong{font-size:10px}.poll-workspace-tabs button>span{font-size:15px}.sidebar-nav-label{font-size:9px}}

/* V2.8.37 — lisibilité générale : aucun texte d'information important ne doit rester microscopique. */
body{font-size:16px;line-height:1.5}
p,li,td,th{line-height:1.5}
small{font-size:12px!important;line-height:1.45}
label{font-size:14px}.help,label small{font-size:12px!important;line-height:1.5}
.sidebar nav a{font-size:14px}.sidebar-user span,.sidebar-user a,.footer{font-size:13px}.brand small{font-size:12px!important}.eyebrow,.sidebar-nav-label{font-size:11px}
.page-head p,.admin-card p{font-size:14px;line-height:1.5}
.mini-btn{font-size:13px}.btn.small{font-size:13px}
.stat-card span{font-size:13px}

/* Dashboard et informations d'action */
.admin-task-item strong{font-size:13px}.admin-task-item small,.admin-subsection-head small,.admin-poll-copy small,.admin-poll-counts,.admin-news-copy small,.admin-next-copy small,.admin-empty-state small{font-size:12px!important;line-height:1.45}
.admin-system-tag{font-size:11px}.admin-overview-summary{font-size:12px}.admin-secondary-details>summary>small{font-size:12px!important}

/* Notifications */
.notification-center-summary small,.notification-center-copy small,.notification-center-copy em{font-size:12px!important;line-height:1.45}.notification-center-copy strong{font-size:13px}.sidebar-notification-badge{font-size:11px}

/* Sondages, décision et disponibilité */
.decision-date-head small,.decision-unavailability-warning>span small,.decision-unavailability-warning>em,.decision-people-group>small,.matrix-unavailability,.matrix-warning-total{font-size:11px!important;line-height:1.4}
.decision-best-badge,.decision-metrics span{font-size:11px}.decision-unavailability-warning>b{font-size:12px}.decision-unavailability-warning>span strong{font-size:12px}
.decision-mj-chip small{font-size:10px!important}.decision-mj-chip strong,.decision-mj-status strong{font-size:12px}.decision-mj-chip em{font-size:11px}.decision-mj-status small{font-size:11px!important}.mj-badge-inline{font-size:10px!important}
.declared-unavailability-warning b{font-size:12px}.declared-unavailability-warning span,.declared-unavailability-warning small{font-size:11px!important}
.poll-workspace-tabs button strong{font-size:13px}.poll-workspace-tabs button small{font-size:11px!important}

/* Participants, campagnes et rôles */
.rich-card-roster-label,.rich-card-roster-row>small,.campaign-roster-preview>i{font-size:11px}.roster-role-label{font-size:10px}.roster-more{font-size:11px}.roster-avatar-wrap.is-mj i{font-size:9px}
.campaign-roster-mj strong,.campaign-roster-person strong{font-size:13px}.campaign-roster-person small{font-size:12px!important}
.campaign-participant-option strong{font-size:13px}.campaign-participant-option small,.campaign-participants-head small,.campaign-participants-note,.campaign-role-note{font-size:12px!important;line-height:1.45}.campaign-participants-head>span{font-size:11px}
.player-campaign-summary i,.player-campaign-summary em,.campaign-role-chip{font-size:10px}.campaign-role-chip b{font-size:9px}
.admin-campaign-person-head strong{font-size:13px}.admin-campaign-person-head small{font-size:12px!important}

/* Présence après confirmation */
.attendance-change-summary strong{font-size:13px}.attendance-change-summary small,.attendance-choice small,.attendance-time-field small{font-size:12px!important}.attendance-choice b{font-size:12px}

/* Joueurs et dernière connexion */
.last-login-summary{font-size:12px!important;line-height:1.4}.last-login-card>span{font-size:11px}.last-login-card>strong{font-size:13px}.last-login-card>small{font-size:11px!important}.player-filter-card>small{font-size:12px!important}

/* Diagnostic */
.diagnostic-summary span{font-size:11px}.diagnostic-row strong{font-size:13px}.diagnostic-row small{font-size:12px!important}.diagnostic-row em{font-size:11px;line-height:1.4}.diagnostic-status{font-size:10px}

/* Boîte Discord */
.discord-toolbox p,.discord-toolbox-note{font-size:12px;line-height:1.5}

/* Sur tablette et mobile, la lisibilité passe avant la compacité. */
@media(max-width:1180px){body{font-size:16px}.content{line-height:1.5}}
@media(max-width:780px){.sidebar nav a{font-size:15px}.poll-workspace-tabs button strong{font-size:12px}.page-head p{font-size:14px}}
@media(max-width:520px){.poll-workspace-tabs button strong{font-size:12px}.sidebar-nav-label{font-size:10px}}

/* V2.8.38 — confort de lecture : un cran supplémentaire pour les textes courants. */
body{font-size:17px;line-height:1.55}
p,li,td,th{line-height:1.55}
small{font-size:13px!important;line-height:1.5}
label{font-size:15px}.help,label small{font-size:13px!important;line-height:1.5}
.sidebar nav a{font-size:15px}.sidebar-user span,.sidebar-user a,.footer{font-size:14px}.brand small{font-size:13px!important}.eyebrow,.sidebar-nav-label{font-size:12px}
.page-head p,.admin-card p{font-size:15px;line-height:1.55}
.mini-btn{font-size:14px}.btn.small{font-size:14px}
.stat-card span{font-size:14px}

/* Dashboard : les textes d'état vide et d'aide doivent se lire sans effort. */
.admin-task-item strong{font-size:14px}.admin-task-item small,.admin-subsection-head small,.admin-poll-copy small,.admin-poll-counts,.admin-news-copy small,.admin-next-copy small{font-size:13px!important;line-height:1.5}
.admin-empty-state small{font-size:14px!important;line-height:1.5}
.admin-empty-state strong{font-size:15px}
.admin-system-tag{font-size:12px}.admin-overview-summary{font-size:13px}.admin-secondary-details>summary>small{font-size:13px!important}

/* Notifications */
.notification-center-summary small,.notification-center-copy small,.notification-center-copy em{font-size:13px!important;line-height:1.5}.notification-center-copy strong{font-size:14px}.sidebar-notification-badge{font-size:12px}

/* Sondages, décision et disponibilité */
.decision-date-head small,.decision-unavailability-warning>span small,.decision-unavailability-warning>em,.decision-people-group>small,.matrix-unavailability,.matrix-warning-total{font-size:12px!important;line-height:1.45}
.decision-best-badge,.decision-metrics span{font-size:12px}.decision-unavailability-warning>b{font-size:13px}.decision-unavailability-warning>span strong{font-size:13px}
.decision-mj-chip small{font-size:11px!important}.decision-mj-chip strong,.decision-mj-status strong{font-size:13px}.decision-mj-chip em{font-size:12px}.decision-mj-status small{font-size:12px!important}.mj-badge-inline{font-size:11px!important}
.declared-unavailability-warning b{font-size:13px}.declared-unavailability-warning span,.declared-unavailability-warning small{font-size:12px!important}
.poll-workspace-tabs button strong{font-size:14px}.poll-workspace-tabs button small{font-size:12px!important}

/* Participants, campagnes et rôles */
.rich-card-roster-label,.rich-card-roster-row>small,.campaign-roster-preview>i{font-size:12px}.roster-role-label{font-size:11px}.roster-more{font-size:12px}.roster-avatar-wrap.is-mj i{font-size:10px}
.campaign-roster-mj strong,.campaign-roster-person strong{font-size:14px}.campaign-roster-person small{font-size:13px!important}
.campaign-participant-option strong{font-size:14px}.campaign-participant-option small,.campaign-participants-head small,.campaign-participants-note,.campaign-role-note{font-size:13px!important;line-height:1.5}.campaign-participants-head>span{font-size:12px}
.player-campaign-summary i,.player-campaign-summary em,.campaign-role-chip{font-size:11px}.campaign-role-chip b{font-size:10px}
.admin-campaign-person-head strong{font-size:14px}.admin-campaign-person-head small{font-size:13px!important}

/* Présence après confirmation */
.attendance-change-summary strong{font-size:14px}.attendance-change-summary small,.attendance-choice small,.attendance-time-field small{font-size:13px!important}.attendance-choice b{font-size:13px}

/* Joueurs et dernière connexion */
.last-login-summary{font-size:13px!important;line-height:1.45}.last-login-card>span{font-size:12px}.last-login-card>strong{font-size:14px}.last-login-card>small{font-size:12px!important}.player-filter-card>small{font-size:13px!important}

/* Diagnostic */
.diagnostic-summary span{font-size:12px}.diagnostic-row strong{font-size:14px}.diagnostic-row small{font-size:13px!important}.diagnostic-row em{font-size:12px;line-height:1.45}.diagnostic-status{font-size:11px}

/* Boîte Discord */
.discord-toolbox p,.discord-toolbox-note{font-size:13px;line-height:1.55}

/* Tablette/mobile : aucun retour à une taille trop petite. */
@media(max-width:1180px){body{font-size:17px}.content{line-height:1.55}}
@media(max-width:780px){.sidebar nav a{font-size:16px}.poll-workspace-tabs button strong{font-size:13px}.page-head p{font-size:15px}}
@media(max-width:520px){.poll-workspace-tabs button strong{font-size:13px}.sidebar-nav-label{font-size:11px}}

/* V2.8.39 — correction de la barre latérale : le changement de mode ne doit jamais chevaucher la navigation. */
@media(min-width:781px){
  .sidebar{
    display:flex;
    flex-direction:column;
    height:100vh;
    overflow:hidden;
  }
  .sidebar .brand{flex:0 0 auto}
  .sidebar nav{
    flex:1 1 auto;
    min-height:0;
    max-height:none;
    overflow-y:auto;
    overflow-x:hidden;
    padding-right:3px;
  }
  .sidebar-role-switch{
    flex:0 0 auto;
    margin:10px 0 0;
    padding-top:10px;
    border-top:1px solid var(--line);
  }
  .sidebar-role-switch button{
    min-height:56px;
  }
  .sidebar-role-switch button strong{font-size:13px}
  .sidebar-role-switch button small{font-size:12px!important;line-height:1.35}
  .sidebar-user{
    position:static;
    left:auto;
    right:auto;
    bottom:auto;
    flex:0 0 auto;
    width:100%;
    margin-top:10px;
    padding-top:12px;
  }
}


/* V2.8.40 — menu joueur compact : aucun étirement vertical des groupes ou des liens. */
@media(min-width:781px){
  .sidebar-nav{
    display:grid;
    grid-auto-rows:max-content;
    align-content:start;
  }
  .sidebar-nav-group{
    grid-auto-rows:max-content;
    align-content:start;
  }
  .sidebar--player .sidebar-nav{
    row-gap:0;
    padding-top:0;
  }
  .sidebar--player .sidebar-nav-group{
    gap:4px;
    margin-bottom:18px;
  }
  .sidebar--player .sidebar-nav-group:last-child{
    margin-bottom:0;
  }
  .sidebar--player .sidebar-nav-label{
    padding:3px 11px 6px;
  }
  .sidebar--player .sidebar-nav a{
    min-height:44px;
    padding-top:10px;
    padding-bottom:10px;
    margin:0;
  }
}

/* V2.8.41 — confort de lecture du contenu uniquement.
   IMPORTANT : aucune taille de caractère de la barre latérale / des menus n'est modifiée ici. */
.content .page-head p,
.content .admin-page-head p,
.content .player-page-head p,
.content .section-head p,
.content .admin-section-head p{
  font-size:16px;
  line-height:1.6;
}

/* Textes descriptifs placés directement dans les cartes de contenu. */
.content .card > p,
.content .admin-card p,
.content .discord-toolbox p{
  font-size:15px;
  line-height:1.6;
}

/* Dashboard administration : les explications doivent rester lisibles sans zoomer. */
.content .admin-overview-summary,
.content .admin-subsection-head small,
.content .admin-task-item small,
.content .admin-poll-copy small,
.content .admin-news-copy small,
.content .admin-next-copy small{
  font-size:14px!important;
  line-height:1.5;
}

@media(max-width:780px){
  .content .page-head p,
  .content .admin-page-head p,
  .content .player-page-head p,
  .content .section-head p,
  .content .admin-section-head p{
    font-size:16px;
  }
}


/* V2.8.42 — mise en évidence des dates avec le plus de réponses positives.
   Aucun changement de typographie du menu latéral. */
.decision-date-card.top-positive{
  border-color:color-mix(in srgb,var(--ok) 82%,var(--line));
  background:linear-gradient(180deg,color-mix(in srgb,var(--okbg) 34%,var(--panel2)),var(--panel2) 52%);
  box-shadow:inset 4px 0 0 color-mix(in srgb,var(--ok) 88%,transparent),0 12px 30px rgba(0,0,0,.18);
}
.decision-date-card.top-positive.best-choice{
  box-shadow:inset 4px 0 0 color-mix(in srgb,var(--ok) 95%,transparent),inset 0 0 0 1px color-mix(in srgb,var(--ok) 34%,transparent),0 14px 34px rgba(0,0,0,.20);
}
.decision-date-card.top-positive.has-conflict{
  border-color:color-mix(in srgb,var(--danger) 70%,var(--line));
  box-shadow:inset 4px 0 0 color-mix(in srgb,var(--danger) 88%,transparent),0 12px 30px rgba(0,0,0,.18);
}
.decision-date-badges{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:7px}
.decision-date-badges .decision-best-badge{margin-bottom:0}
.decision-positive-badge{
  display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;
  border:1px solid color-mix(in srgb,var(--ok) 48%,var(--line));
  background:color-mix(in srgb,var(--okbg) 88%,var(--panel2));color:var(--ok);
  font-size:12px;font-weight:900;letter-spacing:.01em;
}
.decision-score.is-top-positive{
  border-color:color-mix(in srgb,var(--ok) 60%,var(--line));
  background:color-mix(in srgb,var(--okbg) 72%,var(--panel));
}
.decision-score.is-top-positive b{color:var(--ok)}
.decision-positive-legend{
  display:block;margin-bottom:12px;padding:10px 12px;
  border:1px solid color-mix(in srgb,var(--ok) 35%,var(--line));border-radius:10px;
  background:color-mix(in srgb,var(--okbg) 58%,var(--panel2));color:var(--text);
  font-size:14px;line-height:1.45;
}

/* V2.8.43 — seuil minimum de joueurs par campagne.
   Cette passe ne modifie pas la typographie du menu latéral. */
.campaign-quorum-editor{
  padding:15px;
  border-color:color-mix(in srgb,var(--ok) 32%,var(--line));
  background:color-mix(in srgb,var(--okbg) 20%,var(--panel));
}
.campaign-quorum-editor legend{font-weight:900}
.campaign-quorum-grid{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:end}
.campaign-quorum-grid label{margin:0}
.campaign-quorum-grid input[type="number"]{max-width:180px}
.campaign-quorum-summary{
  min-width:120px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;
  background:var(--panel2);text-align:center;
}
.campaign-quorum-summary strong,.campaign-quorum-summary span{display:block}
.campaign-quorum-summary strong{font-size:18px;color:var(--ok)}
.campaign-quorum-summary span{margin-top:2px;color:var(--muted);font-size:12px}
.campaign-quorum-help{display:block;margin-top:9px;color:var(--muted);font-size:14px;line-height:1.5}

.decision-quorum-legend{
  display:flex;justify-content:space-between;align-items:center;gap:14px;
  margin-bottom:13px;padding:12px 14px;border:1px solid color-mix(in srgb,var(--accent) 30%,var(--line));
  border-radius:11px;background:color-mix(in srgb,var(--accent) 5%,var(--panel2));
}
.decision-quorum-legend strong,.decision-quorum-legend span{display:block}
.decision-quorum-legend strong{font-size:15px}
.decision-quorum-legend span{margin-top:3px;color:var(--muted);font-size:13px}
.decision-quorum-legend em{
  flex:0 0 auto;padding:5px 9px;border:1px solid var(--line);border-radius:999px;
  background:var(--panel);color:var(--muted);font-size:12px;font-style:normal;font-weight:800;
}

.decision-date-card.quorum-playable{
  border-color:color-mix(in srgb,var(--ok) 70%,var(--line));
  background:linear-gradient(180deg,color-mix(in srgb,var(--okbg) 28%,var(--panel2)),var(--panel2) 58%);
  box-shadow:inset 4px 0 0 color-mix(in srgb,var(--ok) 88%,transparent),0 12px 30px rgba(0,0,0,.16);
}
.decision-date-card.quorum-ideal{
  border-color:color-mix(in srgb,var(--ok) 88%,var(--line));
  box-shadow:inset 4px 0 0 color-mix(in srgb,var(--ok) 100%,transparent),inset 0 0 0 1px color-mix(in srgb,var(--ok) 28%,transparent),0 14px 34px rgba(0,0,0,.18);
}
.decision-date-card.below-quorum:not(.has-conflict){
  border-color:color-mix(in srgb,var(--maybe) 36%,var(--line));
}
.decision-date-card.has-conflict{
  border-color:color-mix(in srgb,var(--danger) 70%,var(--line));
  box-shadow:inset 4px 0 0 color-mix(in srgb,var(--danger) 88%,transparent),0 12px 30px rgba(0,0,0,.18);
}
.decision-playable-badge,.decision-ideal-badge,.decision-quorum-badge,.decision-below-badge{
  display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;
  font-size:12px;font-weight:900;letter-spacing:.01em;
}
.decision-playable-badge,.decision-ideal-badge{
  border:1px solid color-mix(in srgb,var(--ok) 48%,var(--line));
  background:color-mix(in srgb,var(--okbg) 88%,var(--panel2));color:var(--ok);
}
.decision-ideal-badge{border-color:color-mix(in srgb,var(--ok) 72%,var(--line))}
.decision-quorum-badge{
  border:1px solid color-mix(in srgb,var(--maybe) 48%,var(--line));
  background:color-mix(in srgb,var(--maybebg) 82%,var(--panel2));color:var(--maybe);
}
.decision-below-badge{
  border:1px solid color-mix(in srgb,var(--maybe) 38%,var(--line));
  background:color-mix(in srgb,var(--maybebg) 50%,var(--panel2));color:var(--muted);
}
.decision-score.is-playable{
  width:66px;border-color:color-mix(in srgb,var(--ok) 58%,var(--line));
  background:color-mix(in srgb,var(--okbg) 70%,var(--panel));
}
.decision-score.is-playable b{color:var(--ok);font-size:18px}
.decision-score.is-ideal{border-color:color-mix(in srgb,var(--ok) 80%,var(--line))}
.quorum-force-btn{
  background:color-mix(in srgb,var(--maybebg) 80%,var(--panel));
  border-color:color-mix(in srgb,var(--maybe) 42%,var(--line));color:var(--text);
}
.matrix-quorum-state{display:block;margin-top:5px;font-size:12px;font-weight:800}
.matrix-quorum-state.met{color:var(--ok)}
.matrix-quorum-state.missing{color:var(--maybe)}

@media(max-width:780px){
  .campaign-quorum-grid{grid-template-columns:1fr}
  .campaign-quorum-summary{text-align:left}
  .decision-quorum-legend{align-items:flex-start;flex-direction:column}
}
.decision-conflict-badge{
  display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;
  border:1px solid color-mix(in srgb,var(--danger) 54%,var(--line));
  background:color-mix(in srgb,var(--dangerbg) 82%,var(--panel2));color:var(--danger);
  font-size:12px;font-weight:900;letter-spacing:.01em;
}

/* V2.8.44 — dates à débloquer, relance Discord ciblée et seuil mathématiquement impossible.
   Aucun réglage typographique du menu latéral n'est modifié ici. */
.decision-date-card.quorum-unlockable:not(.has-conflict){
  border-color:color-mix(in srgb,var(--maybe) 58%,var(--line));
  background:linear-gradient(180deg,color-mix(in srgb,var(--maybebg) 34%,var(--panel2)),var(--panel2) 62%);
  box-shadow:inset 4px 0 0 color-mix(in srgb,var(--maybe) 82%,transparent),0 12px 30px rgba(0,0,0,.15);
}
.decision-date-card.quorum-impossible:not(.has-conflict){
  border-color:color-mix(in srgb,var(--danger) 48%,var(--line));
  background:linear-gradient(180deg,color-mix(in srgb,var(--dangerbg) 24%,var(--panel2)),var(--panel2) 62%);
  opacity:.9;
}
.decision-unlockable-badge,.decision-impossible-badge{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;font-size:12px;font-weight:900;letter-spacing:.01em}
.decision-unlockable-badge{border:1px solid color-mix(in srgb,var(--maybe) 55%,var(--line));background:color-mix(in srgb,var(--maybebg) 82%,var(--panel2));color:var(--maybe)}
.decision-impossible-badge{border:1px solid color-mix(in srgb,var(--danger) 58%,var(--line));background:color-mix(in srgb,var(--dangerbg) 76%,var(--panel2));color:var(--danger)}
.unlock-reminder-block,.quorum-impossible-note{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:11px;padding:11px 12px;border-radius:10px}
.unlock-reminder-block{border:1px solid color-mix(in srgb,var(--maybe) 38%,var(--line));background:color-mix(in srgb,var(--maybebg) 45%,var(--panel2))}
.unlock-reminder-block>div{min-width:0}.unlock-reminder-block strong,.unlock-reminder-block small{display:block}.unlock-reminder-block small{margin-top:3px;color:var(--muted);font-size:14px;line-height:1.45}
.quorum-impossible-note{align-items:flex-start;flex-direction:column;border:1px solid color-mix(in srgb,var(--danger) 34%,var(--line));background:color-mix(in srgb,var(--dangerbg) 35%,var(--panel2))}
.quorum-impossible-note strong{color:var(--danger)}.quorum-impossible-note small{color:var(--muted);font-size:14px;line-height:1.45}
.matrix-quorum-state.unlockable{color:var(--maybe)}.matrix-quorum-state.impossible{color:var(--danger)}
@media(max-width:780px){.unlock-reminder-block{align-items:stretch;flex-direction:column}.unlock-reminder-block .mini-btn{width:100%}}


/* V2.8.45 — guidance joueur basée sur le quorum.
   Aucun réglage du menu latéral n'est modifié. */
.player-quorum-alert-panel{
  border-color:color-mix(in srgb,var(--maybe) 34%,var(--line));
  background:linear-gradient(180deg,color-mix(in srgb,var(--maybebg) 16%,var(--panel)),var(--panel2));
}
.player-quorum-alert-panel .section-head p,.player-poll-guidance .section-head p{font-size:15px;line-height:1.5;color:var(--muted)}
.player-quorum-alert-list{display:grid;gap:12px}
.player-quorum-alert{display:grid;gap:12px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--panel2)}
.player-quorum-alert.quorum-decisive{border-color:color-mix(in srgb,var(--maybe) 58%,var(--line));box-shadow:inset 4px 0 0 color-mix(in srgb,var(--maybe) 85%,transparent)}
.player-quorum-alert.quorum-playable{border-color:color-mix(in srgb,var(--ok) 52%,var(--line));box-shadow:inset 4px 0 0 color-mix(in srgb,var(--ok) 78%,transparent)}
.player-quorum-alert-copy{display:flex;gap:10px;align-items:flex-start}.player-quorum-alert-icon{font-size:22px;line-height:1}
.player-quorum-alert-copy>span:last-child{display:grid;gap:3px}.player-quorum-alert-copy strong{font-size:16px}.player-quorum-alert-copy small{font-size:14px;line-height:1.45;color:var(--muted)}
.player-quorum-date-chips{display:flex;flex-wrap:wrap;gap:8px}.quorum-date-chip{display:grid;gap:2px;min-width:min(220px,100%);padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--text);text-decoration:none}
.quorum-date-chip b{font-size:14px}.quorum-date-chip span{font-size:13px;color:var(--muted)}.quorum-date-chip.is-decisive{border-color:color-mix(in srgb,var(--maybe) 52%,var(--line))}.quorum-date-chip.is-playable{border-color:color-mix(in srgb,var(--ok) 48%,var(--line))}
.player-valid-dates{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:3px}.player-valid-dates>span{font-size:14px;color:var(--muted);font-weight:800}.player-valid-dates a{padding:5px 8px;border:1px solid color-mix(in srgb,var(--ok) 36%,var(--line));border-radius:999px;background:color-mix(in srgb,var(--okbg) 46%,var(--panel2));color:var(--ok);font-size:13px;font-weight:800;text-decoration:none}.player-quorum-open{justify-self:start}

.player-poll-guidance{border-color:color-mix(in srgb,var(--maybe) 38%,var(--line));background:linear-gradient(180deg,color-mix(in srgb,var(--maybebg) 18%,var(--panel)),var(--panel2))}
.player-poll-guidance-list{display:grid;gap:9px}.player-poll-guidance-date{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:var(--panel2);color:var(--text);text-decoration:none}.player-poll-guidance-date>span{display:grid;gap:2px}.player-poll-guidance-date b{font-size:15px}.player-poll-guidance-date small{font-size:13px;color:var(--muted)}.player-poll-guidance-date>strong{font-size:14px;text-align:right}.player-poll-guidance-date.is-decisive{border-color:color-mix(in srgb,var(--maybe) 58%,var(--line));background:color-mix(in srgb,var(--maybebg) 42%,var(--panel2))}.player-poll-guidance-date.is-playable{border-color:color-mix(in srgb,var(--ok) 50%,var(--line));background:color-mix(in srgb,var(--okbg) 42%,var(--panel2))}
.player-poll-valid-dates{margin-top:12px;padding:12px;border:1px solid color-mix(in srgb,var(--ok) 30%,var(--line));border-radius:10px;background:color-mix(in srgb,var(--okbg) 24%,var(--panel2))}.player-poll-valid-dates>span{display:block;margin-bottom:8px;color:var(--ok);font-size:14px;font-weight:900}.player-poll-valid-dates>div{display:flex;flex-wrap:wrap;gap:8px}.player-poll-valid-dates a{display:grid;gap:2px;padding:7px 9px;border:1px solid color-mix(in srgb,var(--ok) 30%,var(--line));border-radius:9px;color:var(--text);text-decoration:none}.player-poll-valid-dates a b{font-size:14px}.player-poll-valid-dates a small{font-size:12px;color:var(--muted)}
.availability-row{scroll-margin-top:18px}.availability-row.is-player-decisive{border-color:color-mix(in srgb,var(--maybe) 60%,var(--line));box-shadow:inset 4px 0 0 color-mix(in srgb,var(--maybe) 82%,transparent)}.availability-row.is-player-playable{border-color:color-mix(in srgb,var(--ok) 52%,var(--line));box-shadow:inset 4px 0 0 color-mix(in srgb,var(--ok) 78%,transparent)}.availability-row.is-player-helpful{border-color:color-mix(in srgb,var(--maybe) 34%,var(--line))}.availability-row.is-player-impossible{opacity:.86}
.availability-row:target{outline:2px solid color-mix(in srgb,var(--accent) 72%,transparent);outline-offset:3px}
.player-date-decision-note{display:grid;gap:2px;margin-top:9px;padding:9px 10px;border:1px solid var(--line);border-radius:9px;background:var(--panel2)}.player-date-decision-note b{font-size:14px}.player-date-decision-note span{font-size:13px;line-height:1.45;color:var(--muted)}.player-date-decision-note.decisive{border-color:color-mix(in srgb,var(--maybe) 48%,var(--line));background:color-mix(in srgb,var(--maybebg) 45%,var(--panel2))}.player-date-decision-note.playable{border-color:color-mix(in srgb,var(--ok) 42%,var(--line));background:color-mix(in srgb,var(--okbg) 42%,var(--panel2))}.player-date-decision-note.impossible{border-color:color-mix(in srgb,var(--danger) 38%,var(--line));background:color-mix(in srgb,var(--dangerbg) 32%,var(--panel2))}
@media(max-width:780px){.player-poll-guidance-date{align-items:flex-start;flex-direction:column}.player-poll-guidance-date>strong{text-align:left}.quorum-date-chip{min-width:100%}.player-quorum-open{width:100%}}

/* V2.9.0 — Appels à joueurs */
.recruitment-layout{align-items:start}
.recruitment-create-card .recruitment-rule-note{display:grid;gap:4px;margin:14px 0;padding:12px 14px;border:1px solid color-mix(in srgb,var(--accent) 34%,var(--line));border-radius:11px;background:color-mix(in srgb,var(--accent) 8%,var(--panel2))}
.recruitment-rule-note span{color:var(--muted);font-size:14px;line-height:1.45}
.recruitment-admin-list,.recruitment-dashboard-list,.recruitment-roster{display:grid;gap:9px}
.recruitment-admin-row,.recruitment-dashboard-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:14px;padding:13px;border:1px solid var(--line);border-radius:11px;background:var(--panel2);color:var(--text);text-decoration:none}
.recruitment-admin-row>div:first-child,.recruitment-dashboard-row>span{display:grid;gap:3px;min-width:0}.recruitment-admin-row small,.recruitment-dashboard-row small{color:var(--muted)}
.recruitment-admin-counts{display:grid;gap:4px;text-align:right}.recruitment-admin-counts span:not(.badge){font-size:13px;color:var(--muted)}
.recruitment-admin-hero,.recruitment-player-hero,.recruitment-dashboard-card,.recruitment-list-card{position:relative;overflow:hidden}
.recruitment-admin-hero-content,.recruitment-player-hero-content,.recruitment-dashboard-card-content{position:relative;z-index:2}
.recruitment-admin-hero-content{display:flex;align-items:end;justify-content:space-between;gap:24px;min-height:210px;padding:10px}.recruitment-admin-hero-content>div:first-child{max-width:760px}.recruitment-admin-hero h2,.recruitment-player-hero h2{margin:4px 0 10px}.recruitment-admin-hero p,.recruitment-player-hero p{line-height:1.55}.recruitment-admin-hero small{color:var(--muted)}
.recruitment-big-counter,.recruitment-player-counter{display:grid;place-items:center;min-width:180px;padding:18px;border:1px solid color-mix(in srgb,var(--accent) 36%,var(--line));border-radius:15px;background:color-mix(in srgb,var(--panel) 86%,transparent);backdrop-filter:blur(8px);text-align:center}.recruitment-big-counter strong,.recruitment-player-counter strong{font-size:34px;line-height:1}.recruitment-big-counter span,.recruitment-player-counter span{margin-top:6px;color:var(--muted);font-size:13px;font-weight:800}.recruitment-big-counter em,.recruitment-player-counter em{margin-top:8px;font-style:normal;color:var(--accent);font-size:13px;font-weight:900}
.recruitment-admin-grid,.recruitment-player-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(280px,.75fr);gap:16px;margin-top:16px}.recruitment-admin-side{display:grid;gap:16px;align-content:start}
.recruitment-person{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}.recruitment-person>span:not(.recruitment-rank){display:grid;gap:2px}.recruitment-person small{color:var(--muted)}.recruitment-person>b{font-size:12px;text-transform:uppercase;letter-spacing:.04em}.recruitment-person.accepted{border-color:color-mix(in srgb,var(--ok) 40%,var(--line))}.recruitment-person.accepted>b{color:var(--ok)}.recruitment-person.waiting{border-color:color-mix(in srgb,var(--maybe) 42%,var(--line))}.recruitment-person.waiting>b{color:var(--maybe)}.recruitment-person.maybe>b{color:var(--muted)}
.recruitment-rank{display:grid;place-items:center;min-width:32px;height:32px;padding:0 6px;border:1px solid var(--line);border-radius:9px;background:var(--panel);font-size:12px;font-weight:900}
.recruitment-launch-card h2{margin:4px 0 8px}.recruitment-launch-card form{margin-top:13px}.recruitment-converted-actions{display:grid;gap:10px;margin-top:14px}.share-message{width:100%;resize:vertical;font-family:inherit;line-height:1.45}.recruitment-settings{margin-top:16px}.recruitment-settings>summary{display:flex;align-items:center;justify-content:space-between;gap:16px;cursor:pointer}.recruitment-settings>summary>span:first-child{display:grid;gap:3px}.recruitment-open-close{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.recruitment-cover{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.26;z-index:0}.recruitment-player-hero-content{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:24px;min-height:280px}.recruitment-player-copy{max-width:800px}.recruitment-rules{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}.recruitment-rules>span{padding:7px 9px;border:1px solid var(--line);border-radius:999px;background:color-mix(in srgb,var(--panel) 85%,transparent);font-size:13px}.first-served-banner{display:grid;gap:3px;margin-top:14px;padding:12px 14px;border:1px solid color-mix(in srgb,var(--accent) 36%,var(--line));border-radius:11px;background:color-mix(in srgb,var(--accent) 9%,var(--panel2))}.first-served-banner span{color:var(--muted);font-size:14px;line-height:1.45}
.recruitment-response-card h2,.recruitment-group-card h2{margin:5px 0 10px}.recruitment-my-status{display:grid;gap:3px;margin:12px 0;padding:12px 14px;border:1px solid var(--line);border-radius:11px}.recruitment-my-status span{color:var(--muted);font-size:14px}.recruitment-my-status.accepted{border-color:color-mix(in srgb,var(--ok) 45%,var(--line));background:color-mix(in srgb,var(--okbg) 35%,var(--panel2))}.recruitment-my-status.waiting{border-color:color-mix(in srgb,var(--maybe) 48%,var(--line));background:color-mix(in srgb,var(--maybebg) 35%,var(--panel2))}.recruitment-my-status.maybe{background:var(--panel2)}
.recruitment-response-actions{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:14px}.recruitment-interest-btn{grid-column:1/-1}.muted-action{opacity:.8}.recruitment-response-help{margin:11px 0 0;color:var(--muted);font-size:13px;line-height:1.45}
.recruitment-progress{display:grid;gap:7px;margin:12px 0 16px}.recruitment-progress i{display:block;height:9px;overflow:hidden;border-radius:999px;background:var(--panel2);border:1px solid var(--line)}.recruitment-progress i b{display:block;height:100%;background:var(--accent)}.recruitment-progress span{font-size:13px;color:var(--muted)}.player-roster .recruitment-person{grid-template-columns:auto auto minmax(0,1fr)}.recruitment-waiting-summary{margin-top:12px;padding:10px;border:1px solid color-mix(in srgb,var(--maybe) 35%,var(--line));border-radius:9px;color:var(--maybe);font-weight:800;font-size:13px}
.recruitment-card-grid,.recruitment-dashboard-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}.recruitment-list-card{min-height:260px}.recruitment-list-card .campaign-card-content{position:relative;left:auto;right:auto;bottom:auto;z-index:2;display:grid;align-content:end;gap:7px;min-height:260px;padding:18px;box-sizing:border-box}.recruitment-list-card p{margin:0;color:var(--muted);line-height:1.45}.recruitment-list-meta{display:flex;flex-wrap:wrap;gap:7px;margin-top:6px}.recruitment-list-meta span{padding:5px 7px;border:1px solid var(--line);border-radius:999px;background:color-mix(in srgb,var(--panel) 86%,transparent);font-size:12px}.recruitment-list-cta{margin-top:5px;color:var(--accent)}
.player-recruitment-panel{margin-bottom:16px;border-color:color-mix(in srgb,var(--accent) 25%,var(--line))}.recruitment-dashboard-card{display:block;min-height:220px;border:1px solid var(--line);border-radius:13px;color:var(--text);text-decoration:none}.recruitment-dashboard-card-content{display:grid;align-content:end;min-height:220px;padding:16px}.recruitment-dashboard-card h3{margin:4px 0}.recruitment-dashboard-card p{margin:0;color:var(--muted)}.recruitment-card-numbers{display:grid;gap:2px;margin-top:12px}.recruitment-card-numbers strong{font-size:22px}.recruitment-card-numbers span{font-size:12px;color:var(--muted)}.recruitment-dashboard-card-content>em{margin-top:10px;font-size:13px;font-style:normal;color:var(--accent);font-weight:900}
.admin-recruitment-dashboard-card{border-color:color-mix(in srgb,var(--accent) 22%,var(--line))}.recruitment-dashboard-row em{padding:5px 8px;border-radius:999px;font-size:12px;font-style:normal;font-weight:900}.recruitment-dashboard-row em.ready{color:var(--ok);background:color-mix(in srgb,var(--okbg) 60%,var(--panel2))}.recruitment-dashboard-row em.pending{color:var(--maybe);background:color-mix(in srgb,var(--maybebg) 55%,var(--panel2))}
.admin-task-item.task-recruitment_ready .admin-task-icon{color:var(--ok)}.admin-task-item.task-recruitment .admin-task-icon{color:var(--maybe)}
@media(max-width:900px){.recruitment-admin-grid,.recruitment-player-grid{grid-template-columns:1fr}.recruitment-admin-hero-content,.recruitment-player-hero-content{grid-template-columns:1fr;align-items:start}.recruitment-big-counter,.recruitment-player-counter{min-width:0;width:100%}}
@media(max-width:680px){.recruitment-admin-row,.recruitment-dashboard-row{grid-template-columns:1fr}.recruitment-admin-counts{text-align:left}.recruitment-response-actions{grid-template-columns:1fr}.recruitment-interest-btn{grid-column:auto}.recruitment-person{grid-template-columns:auto auto minmax(0,1fr)}.recruitment-person>b{grid-column:3}.recruitment-card-grid,.recruitment-dashboard-cards{grid-template-columns:1fr}}

/* V2.9.1 — clôture et archives des appels à joueurs */
.recruitment-layout.archives-view{grid-template-columns:1fr}
.recruitment-view-tabs .mini-btn.active{border-color:var(--accent);color:var(--text);background:color-mix(in srgb,var(--accent) 14%,var(--panel2))}
.recruitment-management-card{margin-top:16px}
.recruitment-management-actions{align-items:center}
.recruitment-management-actions form{margin:0}
.recruitment-archive-banner{border-color:color-mix(in srgb,var(--ok) 40%,var(--line));background:color-mix(in srgb,var(--okbg) 45%,var(--panel2));color:var(--text)}
.recruitment-closed-banner{border-color:color-mix(in srgb,var(--maybe) 40%,var(--line));background:color-mix(in srgb,var(--maybebg) 35%,var(--panel2));color:var(--text)}
.recruitment-archives-card{min-width:0}
@media(max-width:680px){.recruitment-view-tabs{width:100%}.recruitment-view-tabs .mini-btn{flex:1;text-align:center}.recruitment-management-actions{display:grid;grid-template-columns:1fr}.recruitment-management-actions form,.recruitment-management-actions button{width:100%}}

/* V2.10.0 — rôles administrateurs et assistance joueurs */
.campaign-fixed-mj,.readonly-account-info{display:grid;gap:4px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}
.campaign-fixed-mj strong,.readonly-account-info strong{font-size:15px}.campaign-fixed-mj small,.readonly-account-info small,.readonly-account-info span{color:var(--muted);font-size:13px;line-height:1.45}
.password-reset-result{border-color:color-mix(in srgb,var(--maybe) 45%,var(--line));background:linear-gradient(180deg,color-mix(in srgb,var(--maybebg) 26%,var(--panel)),var(--panel2))}
.temporary-password-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:14px 0}.temporary-password-row code{display:inline-block;min-width:min(340px,100%);padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--panel);font-size:18px;font-weight:900;letter-spacing:.04em;user-select:all}
.assistance-list{gap:10px}.assistance-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 14px}.assistance-row .actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.assistance-row form{margin:0}.compact-flash{margin:10px 0 0}
@media(max-width:760px){.assistance-row{align-items:stretch;flex-direction:column}.assistance-row .actions{justify-content:flex-start}.assistance-row .actions form,.assistance-row .actions .btn{width:100%}.temporary-password-row{align-items:stretch;flex-direction:column}.temporary-password-row code{min-width:0;width:100%;overflow-wrap:anywhere}}

/* V2.11.0 — Invitations de campagne */
.invitation-layout{align-items:start}.invitation-created{border-color:color-mix(in srgb,var(--ok) 35%,var(--line));background:linear-gradient(180deg,color-mix(in srgb,var(--okbg) 18%,var(--panel)),var(--panel2))}.invitation-created textarea{margin-top:8px}.invitation-created>small{display:block;margin-top:10px;color:var(--muted)}
.invitation-list{display:grid;gap:10px}.invitation-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;padding:13px 14px;border:1px solid var(--line);border-radius:11px;background:var(--panel2)}.invitation-row-main{display:grid;gap:3px;min-width:0}.invitation-row-main .badge{justify-self:start}.invitation-row-main>strong{font-size:15px}.invitation-row-main>small{color:var(--muted);font-size:13px;line-height:1.4}.invitation-row-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.invitation-row-actions form{margin:0}.invitation-row.status-accepted{border-color:color-mix(in srgb,var(--ok) 34%,var(--line))}.invitation-row.status-expired,.invitation-row.status-revoked{opacity:.78}.invitation-row.status-pending{border-color:color-mix(in srgb,var(--maybe) 28%,var(--line))}
.campaign-join-shell{padding-block:34px}.campaign-join-card{max-width:620px}.campaign-join-card h2{margin:18px 0 6px}.join-account-summary,.join-existing-account{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:16px 0;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}.join-account-summary{display:grid;justify-content:stretch}.join-account-summary small{color:var(--muted)}.join-existing-account strong{font-size:14px}.join-divider{display:flex;align-items:center;gap:10px;margin:18px 0;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.08em}.join-divider:before,.join-divider:after{content:"";height:1px;flex:1;background:var(--line)}
@media(max-width:760px){.invitation-row{grid-template-columns:1fr}.invitation-row-actions{justify-content:flex-start}.invitation-row-actions form,.invitation-row-actions button{width:100%}.join-existing-account{align-items:stretch;flex-direction:column}.join-existing-account .mini-btn{width:100%;text-align:center}}

/* V2.11.0 — relances e-mail ciblées des sondages */
.matrix-player-reminder{display:grid;gap:7px;min-width:190px}.poll-reminder-meta{display:grid;gap:5px;padding-left:36px}.poll-reminder-meta small{color:var(--muted);font-size:12px;line-height:1.35}.inline-reminder-form{margin:0}.inline-reminder-form .mini-btn{padding:5px 8px;font-size:12px}
.reminder-state,.reminder-decisive{display:inline-flex;width:max-content;max-width:100%;align-items:center;gap:4px;padding:4px 7px;border:1px solid var(--line);border-radius:999px;font-size:11px;font-weight:900;line-height:1.15}.reminder-state.none{color:var(--maybe);border-color:color-mix(in srgb,var(--maybe) 38%,var(--line));background:color-mix(in srgb,var(--maybebg) 40%,var(--panel2))}.reminder-state.maybe{color:var(--muted);background:var(--panel2)}.reminder-decisive{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 35%,var(--line));background:color-mix(in srgb,var(--accent) 8%,var(--panel2))}
.poll-reminder-dialog{width:min(680px,calc(100vw - 28px));max-height:min(78vh,760px);padding:0;border:1px solid var(--line);border-radius:14px;background:var(--panel);color:var(--text);box-shadow:0 24px 70px rgba(0,0,0,.38)}.poll-reminder-dialog::backdrop{background:rgba(0,0,0,.55);backdrop-filter:blur(2px)}.poll-reminder-dialog form{display:grid;gap:0}.poll-reminder-dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px;border-bottom:1px solid var(--line)}.poll-reminder-dialog-head h2{margin:3px 0 5px}.poll-reminder-dialog-head p{margin:0;color:var(--muted);font-size:14px;line-height:1.45}.poll-reminder-list{display:grid;gap:8px;max-height:50vh;overflow:auto;padding:14px 18px}.poll-reminder-choice{display:block;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:var(--panel2);cursor:pointer}.poll-reminder-choice>span{display:flex;align-items:center;gap:10px}.poll-reminder-choice>span>span{display:grid;gap:2px}.poll-reminder-choice small,.poll-reminder-choice em{color:var(--muted);font-size:12px;line-height:1.35}.poll-reminder-choice em{font-style:normal}.poll-reminder-choice input{margin-right:8px}.poll-reminder-choice.disabled{opacity:.62;cursor:not-allowed}.poll-reminder-dialog .form-actions{padding:14px 18px;border-top:1px solid var(--line);margin:0}
@media(max-width:760px){.poll-reminder-meta{padding-left:0}.poll-reminder-dialog-head{flex-direction:column}.poll-reminder-dialog-head .mini-btn{width:100%}.poll-reminder-dialog .form-actions .btn{width:100%}}


/* V2.11.2 — résumé de fin de partie, intégré au design existant */
.session-summary-card{margin-bottom:20px}
.session-summary-list{display:grid;gap:12px;margin-top:12px}
.session-summary-entry{padding:15px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel2)}
.session-summary-author{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.session-summary-author>span{display:grid;gap:2px}
.session-summary-author small{color:var(--muted);font-size:11px}
.session-summary-text{line-height:1.58;overflow-wrap:anywhere}
.session-summary-delete{display:flex;justify-content:flex-end;margin-top:12px}
.session-summary-editor{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.session-summary-editor summary{margin-bottom:10px}
@media(max-width:780px){.session-summary-delete{justify-content:stretch}.session-summary-delete .mini-btn{width:100%}}

/* V2.11.3 — compteur de séances + compte à rebours, intégrés au design existant. */
.campaign-played-count{font-weight:700;opacity:.92}
.session-countdown{font-weight:800;color:var(--accent,#d49a49);font-style:normal}
.selected-banner .selected-countdown{display:inline-flex;align-items:center;width:max-content;margin-top:4px;padding:4px 8px;border-radius:999px;background:rgba(255,255,255,.12);color:inherit;font-weight:800}
.admin-next-copy .session-countdown,.player-upcoming-item .session-countdown{color:var(--accent,#d49a49)}
.rich-card-info .session-countdown{font-weight:800}
.session-countdown-line .session-countdown{color:inherit}


/* V2.12 — centre de campagne, charte V2.11.x conservée */
.campaign-center-nav{display:flex;gap:7px;flex-wrap:wrap;margin:-5px 0 18px;padding:9px;border:1px solid var(--line);border-radius:14px;background:rgba(10,15,22,.35)}
.campaign-center-nav a{display:inline-flex;align-items:center;min-height:38px;padding:8px 12px;border-radius:10px;color:var(--muted);font-weight:800;font-size:.9rem;text-decoration:none;border:1px solid transparent}
.campaign-center-nav a:hover{color:var(--text);background:rgba(255,255,255,.045)}
.campaign-center-nav a.active{color:var(--text);background:var(--panel);border-color:var(--line);box-shadow:0 6px 18px rgba(0,0,0,.14)}
.campaign-center-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:16px}
.campaign-center-stat{border:1px solid var(--line);background:var(--panel);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:4px}
.campaign-center-stat span{font-size:.75rem;color:var(--muted);font-weight:750;text-transform:uppercase;letter-spacing:.05em}
.campaign-center-stat strong{font-size:1.3rem}
.campaign-center-actions{display:flex;gap:8px;flex-wrap:wrap}
.campaign-center-player-list{display:grid;gap:8px}
.campaign-center-player{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}
.campaign-center-player:last-child{border-bottom:0}.campaign-center-player>span:nth-child(2){display:flex;flex-direction:column;min-width:0;flex:1}.campaign-center-player small{color:var(--muted)}
.campaign-center-poll-row{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}
.campaign-center-poll-row:last-child{border-bottom:0}.campaign-center-poll-row>span{display:flex;flex-direction:column;gap:3px}.campaign-center-poll-row small{color:var(--muted)}
.campaign-center-next{display:grid;gap:8px}.campaign-center-next strong{font-size:1.15rem}.campaign-center-next small{color:var(--muted)}
@media(max-width:1050px){.campaign-center-summary{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:720px){.campaign-center-nav{flex-wrap:nowrap;overflow-x:auto}.campaign-center-nav a{white-space:nowrap}.campaign-center-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}


/* V2.13 — Groupes de joueurs */
.player-group-filter{display:flex;align-items:end;gap:14px;flex-wrap:wrap;margin:0 0 14px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.035)}
.player-group-filter label{min-width:260px;margin:0}.player-group-filter small{color:var(--muted);max-width:620px}.player-group-filter-status{font-size:.78rem;color:var(--muted);font-weight:700}
.player-group-tags{display:flex;gap:5px;flex-wrap:wrap;margin-top:5px}.player-group-tags i{font-style:normal;font-size:.68rem;padding:2px 7px;border-radius:999px;border:1px solid var(--line);color:var(--muted)}
.player-groups-layout{align-items:start}.player-group-member-tools{display:flex;align-items:end;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:10px 0 12px}.player-group-member-tools label{min-width:min(360px,100%);margin:0}.player-group-member-tools span{color:var(--muted);font-size:.8rem}
.player-group-member-grid{max-height:520px;overflow:auto;padding-right:4px}.recruitment-group-targeting{margin-top:14px}.recruitment-group-targeting .check-grid.compact{max-height:240px;overflow:auto;margin-top:8px}.recruitment-audience-card p{margin:.35rem 0}
@media(max-width:720px){.player-group-filter{align-items:stretch}.player-group-filter label{min-width:0;width:100%}.player-group-member-tools{align-items:stretch}.player-group-member-tools label{min-width:0;width:100%}}

/* V2.13.1 — garantir le masquage du filtre groupes en création/édition de campagne. */
.campaign-participant-option[hidden]{display:none!important}

/* V2.14 — abonnement calendrier automatique */
.calendar-subscription-compact{margin-bottom:18px}.calendar-subscription-shell{margin:0;border:1px solid var(--line,#303641);border-radius:var(--radius,12px);background:var(--panel);box-shadow:var(--shadow);overflow:hidden}.calendar-subscription-shell>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 17px}.calendar-subscription-shell>summary::-webkit-details-marker{display:none}.calendar-subscription-shell[open]>summary{border-bottom:1px solid var(--line,#303641);background:color-mix(in srgb,var(--panel2) 70%,transparent)}
.calendar-subscription-summary-main{display:grid;gap:2px;min-width:0}.calendar-subscription-summary-main strong{font-size:15px}.calendar-subscription-summary-main small{color:var(--muted);font-size:11px}.calendar-subscription-summary-status{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}.calendar-sub-status{font-size:10px;font-weight:850;border:1px solid var(--line);border-radius:999px;padding:5px 8px;white-space:nowrap}.calendar-sub-status.on{color:var(--ok);background:var(--okbg);border-color:color-mix(in srgb,var(--ok) 38%,var(--line))}.calendar-sub-status.off{color:var(--muted);background:var(--panel2)}.calendar-subscription-chevron{font-size:19px;color:var(--muted);transition:transform .18s}.calendar-subscription-shell[open] .calendar-subscription-chevron{transform:rotate(180deg)}
.calendar-subscription-content{padding:16px 18px 18px}.calendar-subscription-intro{margin:0 0 10px;color:var(--muted);font-size:12px;line-height:1.55}.calendar-subscription-row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:13px 0;border-top:1px solid var(--line,#303641)}.calendar-subscription-row:first-of-type{border-top:0}.calendar-subscription-row>div:first-child{display:flex;flex-direction:column;gap:3px}.calendar-subscription-row small,.calendar-subscription-row em{color:var(--muted,#9aa4b2);font-style:normal;font-size:11px}.calendar-subscription-row .actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.calendar-subscription-row .actions form{margin:0}.calendar-subscription-secret{margin:0 0 14px;padding:14px;border:1px solid rgba(217,119,6,.35);background:rgba(217,119,6,.08);border-radius:12px}.calendar-subscription-secret p{margin:5px 0 10px}.calendar-subscription-url{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.calendar-subscription-url input{flex:1 1 420px;min-width:220px}.calendar-subscription-admin{background:rgba(255,255,255,.025);margin:0 -8px;padding-left:8px;padding-right:8px;border-radius:10px}
.calendar-subscription-guide{margin-top:10px;border-top:1px solid var(--line,#303641);padding-top:11px}.calendar-subscription-guide>summary{cursor:pointer;font-weight:800;color:var(--accent);font-size:12px}.calendar-subscription-guide[open]>summary{margin-bottom:12px}.calendar-guide-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.calendar-guide-card{border:1px solid var(--line);border-radius:11px;background:var(--panel2);padding:13px}.calendar-guide-card h3{margin:0 0 8px;font-size:13px}.calendar-guide-card ol{margin:0;padding-left:19px;color:var(--muted);font-size:11px;line-height:1.55}.calendar-guide-card li+li{margin-top:4px}.calendar-guide-notes{margin-top:10px;padding:12px;border-radius:11px;background:color-mix(in srgb,var(--accent) 7%,var(--panel2));border:1px solid color-mix(in srgb,var(--accent) 20%,var(--line));font-size:11px}.calendar-guide-notes>strong{display:block;margin-bottom:5px}.calendar-guide-notes ul{margin:0;padding-left:18px;color:var(--muted);line-height:1.55}.calendar-guide-notes li+li{margin-top:3px}
@media(max-width:760px){.calendar-subscription-shell>summary{align-items:flex-start;flex-direction:column;gap:9px}.calendar-subscription-summary-status{justify-content:flex-start}.calendar-subscription-row{align-items:flex-start;flex-direction:column}.calendar-subscription-row .actions{width:100%}.calendar-subscription-url{align-items:stretch;flex-direction:column}.calendar-subscription-url input{flex-basis:auto;width:100%}.calendar-guide-grid{grid-template-columns:1fr}.calendar-subscription-content{padding:14px}}

/* V2.15 — installation PWA, intégrée à la charte existante. */
.pwa-install-card{overflow:hidden}
.pwa-install-head{align-items:flex-start}
.pwa-install-head .badge{white-space:nowrap}
.pwa-install-head .badge.ok{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 35%,var(--line));background:var(--okbg)}
.pwa-install-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px}
.pwa-install-actions .muted{font-size:.78rem}
.pwa-install-help{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.pwa-install-help>summary{cursor:pointer;color:var(--accent);font-weight:800;font-size:.82rem}
.pwa-install-help-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px}
.pwa-install-help-grid>div{padding:13px;border:1px solid var(--line);border-radius:12px;background:var(--panel2)}
.pwa-install-help-grid strong{display:block;margin-bottom:7px}
.pwa-install-help-grid ol{margin:0;padding-left:20px;color:var(--muted);font-size:.78rem;line-height:1.55}
.pwa-install-help-grid li+li{margin-top:4px}
.pwa-install-note{margin:12px 0 0;font-size:.76rem;line-height:1.5}
@media(max-width:760px){.pwa-install-help-grid{grid-template-columns:1fr}.pwa-install-actions{align-items:stretch;flex-direction:column}.pwa-install-actions .btn{width:100%}}


/* V2.15.1 — optimisation smartphone uniquement. Aucun impact au-delà de 780 px. */
.mobile-bottom-nav{display:none}
@media(max-width:780px){
  body{padding-bottom:calc(72px + env(safe-area-inset-bottom,0px))}
  .content{padding-bottom:calc(34px + 72px + env(safe-area-inset-bottom,0px))}
  .footer{padding-bottom:8px}

  /* Navigation principale pensée pour le pouce. Le menu complet reste disponible via ☰. */
  .mobile-bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:1200;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));min-height:64px;padding:6px max(6px,env(safe-area-inset-left,0px)) calc(6px + env(safe-area-inset-bottom,0px)) max(6px,env(safe-area-inset-right,0px));border-top:1px solid var(--line);background:color-mix(in srgb,var(--sidebar) 96%,transparent);box-shadow:0 -8px 28px rgba(0,0,0,.30);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
  .mobile-bottom-nav a{position:relative;min-width:0;min-height:52px;padding:5px 2px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-radius:9px;color:var(--muted);text-decoration:none;font-size:10px;font-weight:800;line-height:1.1;text-align:center;touch-action:manipulation}
  .mobile-bottom-nav a .mobile-nav-icon{font-size:19px;line-height:1.05;color:currentColor}
  .mobile-bottom-nav a.active,.mobile-bottom-nav a[aria-current="page"]{color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent)}
  .mobile-bottom-nav .mobile-nav-badge{position:absolute;top:2px;left:calc(50% + 8px);min-width:17px;height:17px;padding:0 4px;display:grid;place-items:center;border-radius:999px;background:var(--danger);color:#fff;font:800 9px/1 Arial,sans-serif;box-shadow:0 0 0 2px var(--sidebar)}

  /* Le tiroir complet ne passe jamais sous la barre de navigation basse. */
  .sidebar nav{max-height:calc(100dvh - 150px - 70px - env(safe-area-inset-bottom,0px))}
  .sidebar.menu-open{max-height:calc(100dvh - 64px - env(safe-area-inset-bottom,0px));overflow:visible}

  /* Titres et actions : pas de rangées minuscules ou de boutons serrés. */
  .page-head>.actions,.admin-page-head>.actions,.player-page-head>.actions{width:100%;display:grid;grid-template-columns:1fr;gap:8px}
  .page-head>.actions .btn,.admin-page-head>.actions .btn,.player-page-head>.actions .btn{width:100%}
  .section-head>.actions{width:100%;display:grid;grid-template-columns:1fr;gap:7px}
  .section-head>.actions .btn,.section-head>.actions .mini-btn{width:100%}

  /* Centre de campagne : onglets tactiles, lisibles, sans casser le thème. */
  .campaign-center-nav{margin-left:-2px;margin-right:-2px;padding:6px;gap:5px;scroll-snap-type:x proximity;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .campaign-center-nav::-webkit-scrollbar{display:none}
  .campaign-center-nav a{min-height:44px;padding:9px 12px;scroll-snap-align:start}
  .campaign-center-summary{gap:8px}
  .campaign-center-stat{padding:12px;min-height:78px}
  .campaign-center-stat strong{font-size:1.15rem}
  .campaign-center-actions{display:grid;grid-template-columns:1fr;gap:8px}
  .campaign-center-actions .btn,.campaign-center-actions .mini-btn{width:100%}
  .campaign-center-poll-row{grid-template-columns:1fr;gap:7px}
  .campaign-center-poll-row .actions{width:100%}
  .campaign-center-player{align-items:flex-start}

  /* Cartes et listes : privilégier une lecture verticale au pouce. */
  .admin-card,.list-link,.notification-center-item,.invitation-row,.assistance-row{min-width:0}
  .list-link{gap:8px}
  .list-link .actions{width:100%}
  .list-link .actions .btn,.list-link .actions .mini-btn{flex:1 1 100%;width:100%}
  .player-row{gap:10px}
  .player-row>.actions{width:100%}
  .player-row>.actions .btn,.player-row>.actions .mini-btn{width:100%}

  /* Les tableaux restent utilisables sans casser toute la largeur de la page. */
  .content table:not(.matrix){display:block;width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain}
  .content table:not(.matrix) th,.content table:not(.matrix) td{white-space:nowrap}

  /* Dialogues et modales : quasi plein écran sur smartphone. */
  dialog:not(.avatar-crop-dialog){max-width:calc(100vw - 16px)!important;width:calc(100vw - 16px)!important;max-height:calc(100dvh - 24px)!important;margin:auto!important}
  .poll-reminder-dialog{border-radius:12px}
  .poll-reminder-list{max-height:calc(100dvh - 250px)}

  /* Formulaires : une seule colonne et zones tactiles confortables. */
  .form-grid.two,.admin-columns,.unavailability-form-grid,.date-host-edit,.date-host-edit-with-delete{grid-template-columns:1fr!important}
  label{margin-bottom:12px}
  input[type="checkbox"],input[type="radio"]{min-width:20px;min-height:20px}
  select,input,textarea{max-width:100%}

  /* Pièces jointes / invitations / abonnements : éviter les lignes horizontales longues. */
  .calendar-subscription-summary-status,.calendar-subscription-row .actions{flex-wrap:wrap}
  .calendar-subscription-row .actions .btn,.calendar-subscription-row .actions .mini-btn{width:100%}
  .campaign-document-row,.campaign-document-item{max-width:100%}

  /* PWA Android : évite que l'en-tête et la barre basse touchent les zones système. */
  @media(display-mode:standalone){
    .sidebar{padding-top:calc(9px + env(safe-area-inset-top,0px))}
  }
}
@media(max-width:430px){
  .brand small{display:none}
  .mobile-bottom-nav a{font-size:9px}
  .mobile-bottom-nav a .mobile-nav-icon{font-size:18px}
  .campaign-center-summary{grid-template-columns:1fr}
  .admin-stat-grid,.stat-grid.four{grid-template-columns:1fr 1fr}
  .card{border-radius:max(8px,var(--radius))}
}
@media(max-width:360px){
  .mobile-bottom-nav a span:last-child{font-size:8px}
  .admin-stat-grid,.stat-grid.four{grid-template-columns:1fr}
}

/* V2.16.2 — état Android centralisé dans la fiche joueur. */
.player-row-statuses{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}
.player-push-indicator{display:inline-grid;place-items:center;min-width:29px;height:25px;padding:0 6px;border:1px solid var(--line);border-radius:999px;background:var(--panel2);font-size:13px;line-height:1;cursor:help}
.player-push-indicator.ready,.player-push-indicator.enabled{border-color:color-mix(in srgb,var(--ok) 40%,var(--line));background:color-mix(in srgb,var(--okbg) 52%,var(--panel2))}
.player-push-indicator.warning{border-color:color-mix(in srgb,var(--maybe) 48%,var(--line));background:color-mix(in srgb,var(--maybebg) 52%,var(--panel2))}
.player-push-indicator.disabled,.player-push-indicator.none{opacity:.62}
.player-push-card{margin:12px 0 14px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--panel2)}
.player-push-card.ready,.player-push-card.enabled{border-color:color-mix(in srgb,var(--ok) 34%,var(--line))}
.player-push-card.warning{border-color:color-mix(in srgb,var(--maybe) 45%,var(--line))}
.player-push-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:9px}
.player-push-card-head h3{margin:2px 0 0}
.player-push-state{display:inline-flex;align-items:center;gap:5px;padding:5px 8px;border:1px solid var(--line);border-radius:999px;background:var(--panel);font-size:12px;font-weight:900;white-space:nowrap}
.player-push-state.ready,.player-push-state.enabled{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 38%,var(--line));background:color-mix(in srgb,var(--okbg) 50%,var(--panel))}
.player-push-state.warning{color:var(--maybe);border-color:color-mix(in srgb,var(--maybe) 45%,var(--line));background:color-mix(in srgb,var(--maybebg) 45%,var(--panel))}
.player-push-state.disabled,.player-push-state.none{color:var(--muted)}
.player-push-card p{margin:7px 0;line-height:1.45}
.player-push-card>small{display:block;margin-top:10px;color:var(--muted);line-height:1.45}
.player-push-meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px}
.player-push-meta>div{display:grid;gap:3px;padding:9px 10px;border:1px solid var(--line);border-radius:9px;background:var(--panel)}
.player-push-meta span{color:var(--muted);font-size:11px}
.player-push-meta strong{font-size:12px;line-height:1.35}
.player-push-warning{padding:9px 10px;border-radius:9px;background:color-mix(in srgb,var(--maybebg) 52%,var(--panel));color:var(--maybe);font-size:12px}
@media(max-width:780px){
  .player-row-statuses{align-items:center;gap:5px}
  .player-push-card-head{align-items:flex-start;flex-direction:column}
  .player-push-meta{grid-template-columns:1fr}
}

/* V2.16.3 — routage unique des relances : Android > e-mail > Discord. */
.reminder-choice-spacer{display:inline-block!important;width:18px;min-width:18px}
.reminder-discord-copy{margin-top:6px;justify-self:start}
.poll-reminder-choice[hidden]{display:none!important}

/* V2.16.6 — fallback Discord explicite dans les relances */
.poll-reminder-choice-main{display:grid;grid-template-columns:auto auto minmax(0,1fr);align-items:start;gap:10px}
.poll-reminder-choice-copy{display:grid;gap:3px;min-width:0}
.poll-reminder-choice-copy strong{display:block}
.poll-reminder-choice-copy small,.poll-reminder-choice-copy em{display:block}
.reminder-channel{font-style:normal;font-weight:700}
.reminder-channel.discord{color:var(--text)}
.reminder-discord-action{display:grid;gap:6px;margin:10px 0 0 58px;padding:10px;border:1px dashed var(--line);border-radius:9px;background:var(--panel)}
.reminder-discord-action .btn{justify-self:start}
.reminder-discord-action small{color:var(--muted)}
.reminder-discord-notice{display:grid;gap:4px;margin:0 18px 14px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}
.reminder-discord-notice[hidden],.poll-reminder-dialog [data-reminder-auto-actions][hidden]{display:none!important}
@media(max-width:760px){
  .poll-reminder-choice-main{grid-template-columns:auto auto minmax(0,1fr)}
  .reminder-discord-action{margin-left:0}
  .reminder-discord-action .btn{width:100%}
}


/* V2.21.0 — repères communs Classique / Moderne. */
body:not(.admin-ui-modern) .admin-breadcrumbs{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:0 0 12px;color:var(--muted);font-size:10px}body:not(.admin-ui-modern) .admin-breadcrumbs a{color:var(--muted);text-decoration:none}body:not(.admin-ui-modern) .campaign-create-advanced{margin:14px 0;border:1px solid var(--line);border-radius:12px;overflow:hidden}body:not(.admin-ui-modern) .campaign-create-advanced>summary{cursor:pointer;display:flex;gap:10px;align-items:center;padding:12px;list-style:none}body:not(.admin-ui-modern) .campaign-create-advanced>summary>span:nth-child(2){flex:1}body:not(.admin-ui-modern) .campaign-create-advanced>summary small{display:block;color:var(--muted)}body:not(.admin-ui-modern) .campaign-create-advanced-body{padding:0 12px 12px}


/* V2.21.0c — même repère compact dans l'interface Classique. */
body:not(.admin-ui-modern) .admin-breadcrumbs{
  width:max-content;max-width:100%;display:inline-flex;align-items:center;gap:8px;
  margin:0 0 14px;padding:6px 10px 6px 7px;border:1px solid var(--line);
  border-radius:999px;background:rgba(255,255,255,.025);font-size:10px
}
body:not(.admin-ui-modern) .admin-breadcrumbs-marker{
  width:22px;height:22px;display:grid;place-items:center;border-radius:999px;
  background:rgba(255,255,255,.05);font-size:9px
}
body:not(.admin-ui-modern) .admin-breadcrumbs-path{
  min-width:0;display:flex;align-items:center;gap:6px;overflow:hidden
}
body:not(.admin-ui-modern) .admin-breadcrumbs-path a,
body:not(.admin-ui-modern) .admin-breadcrumb-current{
  min-width:0;max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap
}
body:not(.admin-ui-modern) .admin-breadcrumb-sep{opacity:.35}
body:not(.admin-ui-modern) .admin-breadcrumb-current{font-weight:800}


/* V2.24.13 — rappel direct depuis le menu Séances */
.calendar-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:stretch}
.calendar-item>.calendar-row{min-width:0}
.calendar-reminder-form{display:flex;align-items:center;margin:0}
.calendar-reminder-btn{height:100%;min-width:84px;white-space:nowrap}
@media(max-width:780px){
  .calendar-item{grid-template-columns:1fr}
  .calendar-reminder-form{justify-content:flex-end}
  .calendar-reminder-btn{height:auto;width:100%}
}

/* V2.28.0 — installation mobile depuis l'espace joueur PC par QR Code */
.player-desktop-mobile-install{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:16px;align-items:center;margin-bottom:18px;padding:16px 18px;border-color:rgba(95,184,255,.22);background:linear-gradient(120deg,rgba(18,31,45,.96),rgba(23,27,34,.96))}
.player-desktop-mobile-install-icon{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;font-size:25px;background:rgba(95,184,255,.12);border:1px solid rgba(95,184,255,.2)}
.player-desktop-mobile-install-copy h2{margin:2px 0 4px;font-size:17px}.player-desktop-mobile-install-copy p{margin:0;color:var(--muted);font-size:12px;max-width:760px}
.mobile-install-qr-modal[hidden]{display:none!important}.mobile-install-qr-modal{position:fixed;inset:0;z-index:500;display:grid;place-items:center;padding:20px}.mobile-install-qr-backdrop{position:absolute;inset:0;border:0;background:rgba(0,0,0,.74);backdrop-filter:blur(3px)}
.mobile-install-qr-panel{position:relative;z-index:1;width:min(480px,100%);max-height:min(92vh,760px);overflow:auto;padding:24px;border:1px solid var(--line);border-radius:20px;background:#171b21;box-shadow:0 28px 90px rgba(0,0,0,.58);text-align:center}.mobile-install-qr-panel h2{margin:5px 0 7px;font-size:25px}.mobile-install-qr-intro{margin:0 auto 17px;color:var(--muted);max-width:390px}
.mobile-install-qr-close{position:absolute;right:12px;top:10px;width:38px;height:38px;border:1px solid var(--line);border-radius:11px;background:#20252c;color:var(--text);font-size:25px;line-height:1;cursor:pointer}.mobile-install-qr-frame{width:min(300px,100%);aspect-ratio:1;margin:0 auto 13px;padding:10px;border-radius:18px;background:#fff;display:grid;place-items:center;box-shadow:inset 0 0 0 1px #d9dde2}.mobile-install-qr-frame canvas{display:block;max-width:100%;height:auto;image-rendering:pixelated}.mobile-install-qr-loader,.mobile-install-qr-error{width:64px;height:64px;display:grid;place-items:center;border-radius:50%;background:#eef1f4;color:#20242a;font-size:28px}.mobile-install-qr-error{background:#ffe7e6;color:#a73531;font-weight:900}.mobile-install-qr-status{display:block;font-size:13px}.mobile-install-qr-countdown{display:block;min-height:18px;margin-top:3px;color:var(--muted)}
.mobile-install-qr-security{display:flex;gap:10px;text-align:left;align-items:flex-start;margin:16px 0;padding:11px 12px;border:1px solid rgba(95,184,255,.2);border-radius:12px;background:rgba(95,184,255,.07)}.mobile-install-qr-security>span{font-size:20px}.mobile-install-qr-security p{margin:0}.mobile-install-qr-security strong,.mobile-install-qr-security small{display:block}.mobile-install-qr-security small{margin-top:2px;color:var(--muted);line-height:1.35}.mobile-install-qr-actions{display:flex;justify-content:center;gap:9px;flex-wrap:wrap}.mobile-install-qr-modal.is-expired .mobile-install-qr-countdown{color:#f3bb63}.mobile-install-qr-modal.has-error .mobile-install-qr-status{color:#ff8f88}body.mobile-install-qr-open{overflow:hidden}
.mobile-install-linked{display:grid;gap:3px;text-align:left;margin:15px 0}.mobile-install-linked strong,.mobile-install-linked span{display:block}
@media(max-width:780px){.player-desktop-mobile-install{display:none!important}.mobile-install-qr-modal{display:none!important}}

/* V2.34.2 — Harmonisation globale des cases à cocher / boutons radio */
input[type="checkbox"],input[type="radio"]{width:18px!important;height:18px!important;min-width:18px;min-height:18px;padding:0!important;margin:0;flex:0 0 18px;accent-color:var(--accent);vertical-align:middle}
label.check,label.board-settings,label.board-background-toggle,label.teaser-publish-check,label.campaign-access-check{display:flex!important;grid-template-columns:none!important;align-items:flex-start!important;justify-content:flex-start;gap:10px!important;line-height:1.35}
label.check>input[type="checkbox"],label.check>input[type="radio"],label.board-settings>input[type="checkbox"],label.board-background-toggle>input[type="checkbox"],label.teaser-publish-check>input[type="checkbox"],label.campaign-access-check>input[type="checkbox"]{margin-top:1px!important}
label:not([class]):has(>input[type="checkbox"]),label:not([class]):has(>input[type="radio"]){display:flex!important;grid-template-columns:none!important;align-items:flex-start!important;justify-content:flex-start;gap:10px!important;line-height:1.35}
label:not([class]):has(>input[type="checkbox"])>input[type="checkbox"],label:not([class]):has(>input[type="radio"])>input[type="radio"]{margin-top:1px!important}
@media(max-width:780px){input[type="checkbox"],input[type="radio"]{width:20px!important;height:20px!important;min-width:20px;min-height:20px;flex-basis:20px}label.check,label.board-settings,label.board-background-toggle,label.teaser-publish-check,label.campaign-access-check,label:not([class]):has(>input[type="checkbox"]),label:not([class]):has(>input[type="radio"]){gap:11px!important}}

/* V2.35.15 — Star Marx dans les vues multi-campagnes */
.theme-scope.theme-starmarx{--panel:#211b2a;--panel2:#111626;--text:#fff3d1;--muted:#c9b68c;--line:#604135;--accent:#df3e35;--hero1:#3a1019;--hero2:#17284a}
.theme-scope.theme-starmarx .campaign-hero{border-color:rgba(244,202,82,.30);box-shadow:inset 0 0 0 1px rgba(223,62,53,.13)}
