:root{
  --bg:#080b16;--panel:rgba(18,23,43,.78);--panel2:rgba(25,31,58,.72);--text:#eef3ff;--muted:#93a0bd;--line:rgba(255,255,255,.10);
  --brand:#8b5cf6;--brand2:#22d3ee;--good:#22c55e;--warn:#f59e0b;--bad:#ef4444;--info:#38bdf8;--shadow:0 18px 50px rgba(0,0,0,.28);
}

/* Profil V2 - orientation boutique cosmetique / MC */
.profile-preview{position:relative;overflow:hidden}
.profile-preview::before{content:"";position:absolute;inset:0;background:linear-gradient(140deg,rgba(139,92,246,.14),transparent 38%);pointer-events:none}
.profile-tier-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;border:1px solid rgba(34,211,238,.3);background:rgba(34,211,238,.1);font-size:.72rem;font-weight:800;color:#cff7ff}
.profile-stats-quick{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:8px}
.profile-stats-quick>div{border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.04);padding:8px 10px;text-align:left}
.profile-stats-quick span{display:block;color:var(--muted);font-size:.72rem}
.profile-stats-quick strong{display:block;font-size:.92rem;margin-top:2px}
.profile-cosmetics-preview{width:100%;border:1px dashed rgba(139,92,246,.35);border-radius:14px;padding:10px;background:rgba(15,20,40,.55)}
.profile-cosmetics-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.profile-cosmetics-head b{font-size:.84rem}
.profile-cosmetics-head small{font-size:.7rem;color:var(--muted)}
.profile-cosmetics-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
.cosmetic-slot{border:1px solid var(--line);border-radius:10px;padding:7px 8px;background:rgba(255,255,255,.03);text-align:left}
.cosmetic-slot span{display:block;color:var(--muted);font-size:.68rem}
.cosmetic-slot b{display:block;font-size:.76rem;margin-top:2px}
@media(max-width:760px){.profile-cosmetics-grid{grid-template-columns:1fr}}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:radial-gradient(circle at 20% 0%,rgba(139,92,246,.22),transparent 34%),radial-gradient(circle at 80% 20%,rgba(34,211,238,.14),transparent 36%),var(--bg);color:var(--text);font-family:Inter,Segoe UI,Arial,sans-serif;font-size:14px;line-height:1.45}button,input,select,textarea{font:inherit}button{cursor:pointer}.hidden{display:none!important}.muted{color:var(--muted)}.mini{font-size:.78rem}.wide{width:100%}
.ambient{position:fixed;inset:auto;filter:blur(70px);opacity:.5;pointer-events:none}.ambient-a{width:280px;height:280px;background:#7c3aed;left:-80px;top:90px}.ambient-b{width:240px;height:240px;background:#0891b2;right:10%;top:20px}.ambient-c{width:210px;height:210px;background:#db2777;right:10%;bottom:5%}
.login-shell{min-height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:32px;padding:40px 24px;position:relative;z-index:1}.login-art{text-align:center;max-width:560px;width:100%}.login-art p{max-width:42rem;margin-left:auto;margin-right:auto;color:#c9d4f1;font-size:1rem}.feature-strip{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px;justify-content:center}.feature-strip span,.pill,.badge{border:1px solid var(--line);background:rgba(255,255,255,.06);border-radius:999px;padding:5px 9px;font-size:.78rem;color:#dbe7ff}.brand-orb{width:54px;height:54px;border-radius:18px;display:grid;place-items:center;background:linear-gradient(135deg,var(--brand),var(--brand2));font-weight:900;box-shadow:0 12px 30px rgba(139,92,246,.35)}.brand-orb.small{width:34px;height:34px;border-radius:12px;font-size:.78rem}.brand-logo{width:34px;height:34px;border-radius:12px;object-fit:contain;display:block;flex-shrink:0;box-shadow:0 8px 22px rgba(0,0,0,.22)}.brand-logo.small{width:34px;height:34px}.login-brand-logo{width:min(220px,72vw);max-height:min(28vh,200px);height:auto;object-fit:contain;display:block;margin:0 auto;animation:loginLogoFloat 5.5s ease-in-out infinite,loginLogoGlow 6.5s ease-in-out infinite;will-change:transform}
@keyframes loginLogoFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
@keyframes loginLogoGlow{0%,100%{filter:drop-shadow(0 14px 36px rgba(139,92,246,.28)) drop-shadow(0 0 22px rgba(34,211,238,.08))}50%{filter:drop-shadow(0 22px 52px rgba(34,211,238,.22)) drop-shadow(0 0 36px rgba(139,92,246,.18))}}
@media(prefers-reduced-motion:reduce){.login-brand-logo{animation:none!important;will-change:auto}}
.card{background:linear-gradient(180deg,var(--panel),rgba(12,16,31,.78));border:1px solid var(--line);border-radius:18px;padding:16px;box-shadow:var(--shadow);backdrop-filter:blur(14px)}.elevated{box-shadow:var(--shadow)}.login-card h2,.card h2,.section-title h2{margin:0;font-size:1.2rem}.login-card label,.form-card label,label{display:grid;gap:6px;color:#dce6ff;font-weight:700;font-size:.82rem}input,select,textarea{width:100%;background:rgba(5,8,18,.72);border:1px solid var(--line);border-radius:12px;color:var(--text);padding:9px 10px;outline:0;min-height:38px}textarea{min-height:92px;resize:vertical}input:focus,select:focus,textarea:focus{border-color:rgba(139,92,246,.8);box-shadow:0 0 0 3px rgba(139,92,246,.15)}
button,.primary,.ghost,.danger-soft,.danger-btn{border:1px solid var(--line);border-radius:12px;padding:9px 12px;font-weight:800;color:var(--text);background:rgba(255,255,255,.06);min-height:38px}.primary{background:linear-gradient(135deg,var(--brand),#06b6d4);border-color:transparent}.ghost{background:transparent}.danger-soft,.danger-btn{background:rgba(239,68,68,.12);border-color:rgba(239,68,68,.28)}.big-action{font-size:.95rem;min-height:44px;width:100%;margin-top:8px}.hint{font-size:.78rem;color:var(--muted)}
.app-shell,.admin-shell{display:grid;grid-template-columns:230px minmax(0,1fr);min-height:100vh;position:relative;z-index:1}.sidebar{position:sticky;top:0;height:100vh;padding:14px;border-right:1px solid var(--line);background:rgba(7,10,22,.72);backdrop-filter:blur(18px);display:flex;flex-direction:column;gap:14px;overflow:visible;z-index:220}.side-brand{display:flex;gap:10px;align-items:center}.side-brand b{display:block}.side-brand span{display:block;color:var(--muted);font-size:.76rem}.side-nav{display:grid;gap:7px}.nav-item{text-align:left;border-radius:12px;background:transparent;color:#cbd7f3;padding:9px 10px;min-height:36px}.nav-item.active,.nav-item:hover{background:rgba(139,92,246,.18);border-color:rgba(139,92,246,.28);color:white}.side-footer{margin-top:auto;display:grid;gap:8px;position:relative;overflow:visible;z-index:221}
.nav-live-item{display:flex;align-items:center;justify-content:space-between;gap:8px}
.nav-live-count{display:inline-grid;place-items:center;min-width:1.3rem;height:1.3rem;padding:0 .32rem;border-radius:999px;background:rgba(34,197,94,.2);border:1px solid rgba(34,197,94,.48);color:#dcfce7;font-size:.68rem;font-weight:900;line-height:1;font-variant-numeric:tabular-nums}
.content,.admin-content{padding:18px 330px 28px 22px;max-width:1600px;width:100%;position:relative}.hero-card{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:16px;padding:18px;border-radius:22px;background:linear-gradient(135deg,rgba(139,92,246,.24),rgba(34,211,238,.10));border:1px solid var(--line)}.hero-card h1{font-size:1.65rem;margin:.1rem 0}.hero-card p{margin:.2rem 0 0;color:#cad5ee}.hero-card.compact{padding:14px 16px}.hero-card.compact h1{font-size:1.4rem}.hero-stats{display:grid;grid-template-columns:repeat(3,86px);gap:8px}.hero-stats div,.stat{background:rgba(0,0,0,.18);border:1px solid var(--line);border-radius:16px;padding:10px;text-align:center}.hero-stats b,.stat b{display:block;font-size:1.45rem}.hero-stats span,.stat span{color:var(--muted);font-size:.75rem}.eyebrow{text-transform:uppercase;letter-spacing:.12em;color:#9bdfff;font-size:.68rem;font-weight:900}.grid{display:grid;gap:12px}.two{grid-template-columns:repeat(2,minmax(0,1fr))}.four{grid-template-columns:repeat(4,minmax(0,1fr))}.tournament-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.section-title{display:flex;align-items:end;justify-content:space-between;margin:16px 0 10px}.page,.apage{display:grid;gap:12px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.badge.info,.notif.info{border-color:rgba(56,189,248,.35)}.badge.success,.notif.success{border-color:rgba(34,197,94,.35)}.badge.warning,.notif.warning{border-color:rgba(245,158,11,.42)}.badge.danger,.notif.danger{border-color:rgba(239,68,68,.45)}.badge.status-running,.status-live{background:rgba(34,197,94,.14);border-color:rgba(34,197,94,.35)}.badge.status-open{background:rgba(56,189,248,.13)}.badge.status-done{background:rgba(148,163,184,.12)}
.notification-rail{position:fixed;right:18px;top:18px;width:292px;max-height:calc(100vh - 36px);overflow:auto;z-index:5;padding:13px}.notif-list{display:grid;gap:8px}.notif{border:1px solid var(--line);background:rgba(255,255,255,.045);border-radius:14px;padding:10px}.notif b{display:block;font-size:.9rem}.notif p{margin:3px 0;color:#d7e0f6;font-size:.82rem}.notif span{font-size:.72rem;color:var(--muted)}
.news-stack{display:grid;gap:10px}.news{padding:14px}.level-danger{border-color:rgba(239,68,68,.38)}.level-warning{border-color:rgba(245,158,11,.38)}.level-success{border-color:rgba(34,197,94,.38)}.chipline{display:flex;gap:6px;flex-wrap:wrap}.twitch-empty iframe,#twitchBox iframe{width:100%;height:260px;border:0;border-radius:16px;background:#000}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}.compact-form{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.form-card{display:grid;gap:10px}.checkline{display:flex!important;grid-template-columns:auto 1fr;align-items:center;gap:8px}.checkline input{width:auto;min-height:0}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px}.toolbar input{max-width:360px}.inline{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.inline>*{flex:1 1 130px}.inline button,.inline .danger-btn{flex:0 0 auto}
.table-card{display:grid;gap:8px}.row,.user-row,.sanction-row{display:grid;grid-template-columns:1.1fr .8fr 1fr 1fr 1.4fr auto;gap:8px;align-items:center;border-bottom:1px solid var(--line);padding:8px 0}.row:last-child,.user-row:last-child,.sanction-row:last-child{border-bottom:0}.user-row{grid-template-columns:1.05fr .72fr .62fr 1fr 1fr 1.15fr auto}.sanction-row{grid-template-columns:.7fr .9fr .9fr 1.4fr 1fr auto}.audit-list p{border-bottom:1px solid var(--line);padding:8px 0;margin:0}.audit-list p:last-child{border-bottom:0}.news-admin-grid{display:grid;gap:10px}
.availability-board{display:grid;gap:12px}.clear-board{margin-top:4px}.day-block{background:rgba(255,255,255,.045);border:1px solid var(--line);border-radius:18px;padding:12px}.day-title{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:8px;margin-bottom:10px}.day-title h3{margin:0;text-transform:capitalize;font-size:1.05rem}.day-title span{color:var(--muted);font-size:.82rem}.availability-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px}.availability-item{display:flex;gap:10px;align-items:center;background:rgba(0,0,0,.18);border:1px solid var(--line);border-radius:14px;padding:10px}.availability-item p{margin:2px 0 0;color:var(--muted);font-size:.82rem}.time-badge{min-width:92px;text-align:center;padding:8px;border-radius:12px;background:linear-gradient(135deg,rgba(139,92,246,.26),rgba(34,211,238,.12));border:1px solid rgba(139,92,246,.25);font-weight:900;color:white}.availability-highlights{display:grid;gap:8px}.best-slot{display:flex;justify-content:space-between;gap:10px;align-items:center;background:rgba(0,0,0,.18);border:1px solid var(--line);border-radius:14px;padding:10px}.best-slot b,.best-slot span,.best-slot small{display:block}.best-slot span{color:#dce6ff;font-weight:800}.best-slot small{color:var(--muted)}.best-slot strong{background:rgba(34,197,94,.14);border:1px solid rgba(34,197,94,.28);border-radius:999px;min-width:32px;text-align:center;padding:5px 8px}
.toast{position:fixed;right:18px;bottom:18px;max-width:min(390px,calc(100vw - 36px));padding:13px 14px;border-radius:16px;background:rgba(25,31,62,.96);border:1px solid var(--line);z-index:99;box-shadow:var(--shadow);backdrop-filter:blur(14px)}.toast.danger{border-color:rgba(239,68,68,.7)}.toast.warning{border-color:rgba(245,158,11,.7)}.toast.success{border-color:rgba(34,197,94,.7)}
@media(max-width:1180px){.content,.admin-content{padding-right:22px}.notification-rail{position:relative;right:auto;top:auto;width:auto;max-height:none;margin-bottom:12px}.app-shell,.admin-shell{grid-template-columns:1fr}.sidebar{position:relative;height:auto;border-right:0;border-bottom:1px solid var(--line)}.side-nav{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.two,.four{grid-template-columns:1fr}.row,.user-row,.sanction-row{grid-template-columns:1fr}.hero-card{display:grid}.hero-stats{grid-template-columns:repeat(3,1fr)}}
@media(max-width:620px){body{font-size:13px}.login-shell,.content,.admin-content{padding:14px}.hero-card{padding:14px;border-radius:18px}.card{padding:13px;border-radius:16px}.hero-card h1{font-size:1.35rem}.hero-stats{grid-template-columns:1fr}.section-title{display:grid;gap:4px}.availability-list{grid-template-columns:1fr}.availability-item{align-items:flex-start}.time-badge{min-width:78px}.twitch-empty iframe,#twitchBox iframe{height:210px}}

/* V7 polish: interface plus compacte, toasts empilés, notifications et disponibilités plus lisibles */
.login-card{display:grid;gap:12px;width:100%;max-width:420px;text-align:center}.login-card label{margin-top:2px;text-align:left}.login-card input{margin-top:2px}.login-card .primary{margin-top:2px}.login-card p{margin:0}.login-card h2{margin-top:0}
button,.primary,.ghost,.danger-soft,.danger-btn{white-space:nowrap}.form-card button,.notification-composer button{justify-self:start}.notification-composer .big-action{justify-self:stretch;display:flex;justify-content:center;align-items:center;gap:8px}
#toast{position:fixed;right:18px;bottom:18px;z-index:100;display:grid;gap:10px;width:min(380px,calc(100vw - 36px));pointer-events:none}.toast{position:relative;right:auto;bottom:auto;width:100%;max-width:none;pointer-events:auto;animation:toastIn .22s ease-out}.toast-clickable{cursor:pointer}.toast-clickable:hover{filter:brightness(1.08);border-color:rgba(139,92,246,.55)!important}
.notif-clickable{cursor:pointer;transition:background .15s,border-color .15s}.notif-clickable:hover{background:rgba(139,92,246,.1);border-color:rgba(139,92,246,.28)}.notif-open-hint{color:#a78bfa;font-weight:700}.toast-out{opacity:0;transform:translateX(20px);transition:.25s ease}.toast-close{position:absolute;top:7px;right:8px;min-height:0;padding:0;width:24px;height:24px;border-radius:999px;background:rgba(255,255,255,.06);font-size:16px;line-height:1;color:#dce6ff}.toast b{display:block;padding-right:28px}.toast div{font-size:.85rem;color:#d7e0f6;margin-top:3px}@keyframes toastIn{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
.notif{display:grid;grid-template-columns:28px 1fr;gap:8px;align-items:start}.notif-icon{width:28px;height:28px;border-radius:10px;background:rgba(255,255,255,.06);display:grid;place-items:center;font-size:.85rem}.notif.info{background:linear-gradient(135deg,rgba(56,189,248,.08),rgba(255,255,255,.035))}.notif.success{background:linear-gradient(135deg,rgba(34,197,94,.09),rgba(255,255,255,.035))}.notif.warning{background:linear-gradient(135deg,rgba(245,158,11,.10),rgba(255,255,255,.035))}.notif.danger{background:linear-gradient(135deg,rgba(239,68,68,.11),rgba(255,255,255,.035))}
.notif-main-wrap{position:relative;min-width:0}
.notif-main-wrap:has(.notif-delete){padding-right:24px}
.notif-delete{position:absolute;top:0;right:0;z-index:2;width:22px;height:22px;min-height:22px;padding:0;border:0;border-radius:7px;background:rgba(0,0,0,.38);color:#f4f4ff;font-size:15px;line-height:1;cursor:pointer;display:grid;place-items:center;transition:opacity .12s ease,background .12s ease;font-weight:700}
.notif-delete:hover{background:rgba(239,68,68,.52)}
@media(hover:hover){.notif-delete{opacity:0}.notif:hover .notif-delete{opacity:1}}
@media(hover:none){.notif-delete{opacity:.55}}
.availability-mode-note{display:flex;gap:10px;align-items:center;justify-content:space-between;background:rgba(34,211,238,.055)}.availability-mode-note b{color:#fff}.availability-mode-note span{color:var(--muted);font-size:.86rem}.compact-title{margin-top:18px}.player-avail-section{display:grid;gap:10px}.player-avail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px}.player-avail-card{padding:13px}.player-avail-card h3{margin:0;font-size:1rem}.player-slot{display:grid;gap:2px;border-top:1px solid var(--line);padding:8px 0}.player-slot:first-of-type{border-top:0}.player-slot b{font-size:.82rem;text-transform:capitalize}.player-slot span{font-weight:900;color:#fff}.player-slot small{color:var(--muted)}
.day-block{background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.025))}.day-title h3{font-size:1rem}.time-badge{font-size:.82rem;min-width:96px}.availability-item b{font-size:.95rem}.availability-item{min-height:62px}
.news-admin-grid .card{margin:0!important}.card+.card{margin-top:0}
@media(max-width:620px){.login-shell{padding:22px}.login-card{gap:10px}.brand-orb{width:46px;height:46px;border-radius:16px}#toast{right:12px;bottom:12px;width:calc(100vw - 24px)}.availability-mode-note{display:grid}.time-badge{min-width:86px}.availability-item{display:grid;grid-template-columns:86px 1fr}}

/* V8 corrections : densité, vraie colonne notifications, live agrandi, disponibilités plus lisibles */
body{font-size:13px}.content,.admin-content{padding-right:308px}.notification-rail{top:0;right:0;width:286px;height:100vh;max-height:none;border-radius:0;border-top:0;border-right:0;border-bottom:0;padding:12px 10px;background:rgba(8,11,22,.88);display:flex;flex-direction:column;overflow:hidden}.notification-rail .card-head{flex:0 0 auto}.notification-rail .notif-list{overflow-y:auto;min-height:0;padding-right:4px;display:flex;flex-direction:column;gap:6px}.notification-rail .notif{grid-template-columns:22px 1fr;padding:7px 8px;border-radius:11px;gap:7px}.notification-rail .notif-icon{width:22px;height:22px;border-radius:8px;font-size:.68rem}.notification-rail .notif b{font-size:.76rem;line-height:1.15}.notification-rail .notif p{font-size:.72rem;line-height:1.25;margin:2px 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.notification-rail .notif span{font-size:.64rem}.notification-rail h2{font-size:1rem}.live-card{min-height:360px}.live-card #twitchBox iframe,.twitch-empty iframe,#twitchBox iframe{height:min(58vh,520px);min-height:340px}.availability-submit{margin-top:12px}.form-card button,.card button{margin-top:6px}.login-card{gap:14px}.login-card .primary{margin-top:6px}.dashboard-grid{display:grid;grid-template-columns:minmax(320px,.9fr) minmax(360px,1.1fr);gap:12px}.quick-notif{border-color:rgba(34,211,238,.22)}
.player-avail-card{padding:0;overflow:hidden}.player-avail-card summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 13px;font-weight:900}.player-avail-card summary::-webkit-details-marker{display:none}.player-avail-card summary span:before{content:'▸';display:inline-block;margin-right:8px;color:var(--brand2);transition:.18s}.player-avail-card[open] summary span:before{transform:rotate(90deg)}.player-avail-card summary b{min-width:26px;text-align:center;border:1px solid var(--line);border-radius:999px;padding:2px 7px;background:rgba(255,255,255,.06);font-size:.78rem}.player-slot-list{padding:0 13px 12px}.player-slot{padding:8px 0}.shared-slot{border-color:rgba(34,197,94,.28);background:linear-gradient(135deg,rgba(34,197,94,.08),rgba(255,255,255,.035))}.best-slot strong{background:rgba(34,197,94,.18)}
@media(max-width:1180px){.content,.admin-content{padding-right:22px}.notification-rail{position:relative;width:auto;height:260px;border-radius:18px;border:1px solid var(--line);right:auto;top:auto;margin-bottom:12px}.notification-rail .notif-list{overflow-y:auto}.dashboard-grid{grid-template-columns:1fr}.live-card #twitchBox iframe,.twitch-empty iframe,#twitchBox iframe{height:330px;min-height:260px}}
@media(max-width:620px){body{font-size:12.5px}.content,.admin-content{padding:14px}.notification-rail{height:230px}.live-card #twitchBox iframe,.twitch-empty iframe,#twitchBox iframe{height:240px;min-height:220px}.dashboard-grid{grid-template-columns:1fr}}

/* V9 : alertes ciblées avertissement / bannissement */
.center-modal{position:fixed;inset:0;z-index:999;display:grid;place-items:center;padding:24px;background:rgba(3,6,18,.72);backdrop-filter:blur(14px)}
.center-modal-card{width:min(520px,100%);border:1px solid var(--line);border-radius:24px;padding:24px;background:linear-gradient(180deg,rgba(20,26,52,.98),rgba(10,14,30,.98));box-shadow:0 28px 90px rgba(0,0,0,.55);text-align:center;animation:centerPop .18s ease-out}
.center-modal-icon{width:64px;height:64px;margin:0 auto 12px;border-radius:22px;display:grid;place-items:center;background:rgba(245,158,11,.14);border:1px solid rgba(245,158,11,.32);font-size:1.8rem}
.center-modal-card h2{margin:0 0 8px;font-size:1.35rem}.center-modal-card p{margin:0 0 12px;color:#dbe7ff}.center-modal-card .primary{min-width:180px;justify-content:center}.ban-mode .center-modal-card{border-color:rgba(239,68,68,.58)}.ban-mode .center-modal-icon{background:rgba(239,68,68,.16);border-color:rgba(239,68,68,.45)}.warning-mode .center-modal-card{border-color:rgba(245,158,11,.48)}
@keyframes centerPop{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}

/* V11 : profils + disponibilités accordéon corrigées + UI plus nette */
.player-avail-grid{align-items:start!important;grid-auto-rows:auto!important}.player-avail-card{align-self:start!important;min-height:0}.player-avail-card:not([open]){height:auto!important}.player-mini-profile{padding:0 13px 8px;color:var(--muted);display:grid;gap:4px;font-size:.78rem}.player-mini-profile span{display:inline-block;margin-right:8px;color:#dce6ff}.player-mini-profile p{margin:2px 0 0;color:var(--muted);line-height:1.35}.profile-layout{display:grid;grid-template-columns:minmax(240px,320px) minmax(0,1fr);gap:14px;align-items:start}.profile-preview{text-align:center;display:grid;gap:10px;justify-items:center}.profile-avatar{width:86px;height:86px;border-radius:28px;display:grid;place-items:center;font-weight:1000;font-size:1.8rem;border:1px solid var(--line);box-shadow:0 18px 50px rgba(0,0,0,.28)}.profile-avatar.violet{background:linear-gradient(135deg,#7c3aed,#22d3ee)}.profile-avatar.cyan{background:linear-gradient(135deg,#0891b2,#67e8f9)}.profile-avatar.green{background:linear-gradient(135deg,#16a34a,#86efac)}.profile-avatar.orange{background:linear-gradient(135deg,#ea580c,#fbbf24)}.profile-avatar.rose{background:linear-gradient(135deg,#db2777,#fb7185)}.profile-preview h2{margin:0}.profile-tags{display:grid;gap:6px;width:100%}.profile-tags span{border:1px solid var(--line);background:rgba(255,255,255,.045);border-radius:999px;padding:7px 10px;font-size:.82rem;color:#dce6ff}.profile-save{margin-top:12px!important}.form-card textarea#profileBio{min-height:120px}.notification-rail .notif p{word-break:break-word}.login-card input{margin-bottom:8px}.login-card label{display:grid;gap:4px}.login-card .primary{margin-top:10px!important}
@media(max-width:760px){.profile-layout{grid-template-columns:1fr}.player-avail-grid{grid-template-columns:1fr}}

/* V12 : membres en ligne + suppression disponibilités */
.online-widget{position:relative;z-index:1200;display:grid;gap:8px;pointer-events:auto}
.online-toggle{pointer-events:auto;display:flex;align-items:center;justify-content:center;gap:8px;border-radius:999px;padding:8px 12px;background:linear-gradient(135deg,rgba(34,197,94,.2),rgba(34,211,238,.13));border:1px solid rgba(34,197,94,.34);box-shadow:0 10px 30px rgba(0,0,0,.25);backdrop-filter:blur(14px);width:100%}
.online-toggle b{min-width:22px;text-align:center}.online-dot{width:9px;height:9px;border-radius:999px;background:#22c55e;box-shadow:0 0 0 4px rgba(34,197,94,.16),0 0 18px rgba(34,197,94,.8)}
.online-panel{pointer-events:auto;position:absolute;left:0;bottom:calc(100% + 8px);width:min(320px,calc(100vw - 32px));max-height:320px;overflow:hidden;border:1px solid var(--line);border-radius:18px;background:#080b16!important;opacity:1!important;box-shadow:0 16px 40px rgba(0,0,0,.35);backdrop-filter:none!important;display:flex;flex-direction:column;z-index:1300}
.online-widget.collapsed .online-panel{display:none}.online-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-bottom:1px solid var(--line)}.online-panel-head b{font-size:.82rem}.online-panel-head button{min-height:0;width:26px;height:26px;padding:0;border-radius:999px}
.online-list{display:grid;gap:4px;overflow:auto;padding:8px;min-height:0}.online-user{display:grid;grid-template-columns:28px minmax(0,1fr);gap:7px;align-items:center;border:1px solid var(--line);background:rgba(255,255,255,.045);border-radius:11px;padding:6px}.online-user>div{min-width:0}.online-user b{display:block;font-size:.78rem}.online-user small{display:block;color:var(--muted);font-size:.66rem;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.online-avatar{width:28px;height:28px;border-radius:10px;display:grid;place-items:center;font-size:.65rem;font-weight:1000;background:linear-gradient(135deg,#7c3aed,#22d3ee)}.online-avatar.cyan{background:linear-gradient(135deg,#0891b2,#67e8f9)}.online-avatar.green{background:linear-gradient(135deg,#16a34a,#86efac)}.online-avatar.orange{background:linear-gradient(135deg,#ea580c,#fbbf24)}.online-avatar.rose{background:linear-gradient(135deg,#db2777,#fb7185)}
.online-group{display:grid;gap:6px}
.online-group-title{margin:4px 2px 2px;font-size:.72rem;font-weight:900;letter-spacing:.04em;text-transform:uppercase;color:#b7c5e9}
.online-user-name,.online-user-name .pseudo-link{display:block;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.82rem;font-weight:900}
#toast{bottom:72px}.availability-main{min-width:0;flex:1}.icon-btn{min-height:0;width:28px;height:28px;padding:0;border-radius:999px;display:grid;place-items:center;flex:0 0 auto}.danger-mini{background:rgba(239,68,68,.12);border-color:rgba(239,68,68,.32);color:#fecaca}.player-slot{grid-template-columns:minmax(0,1fr) auto;align-items:center}.player-slot div{display:grid;gap:2px}
@media(max-width:620px){.online-toggle span:last-child{display:none}#toast{bottom:64px}.online-panel{left:0;width:calc(100vw - 28px);max-height:320px}}

.small-btn{min-height:30px;padding:5px 9px;border-radius:10px}

/* V14 - Live page, disponibilités en pop-up */
.news-stack-expanded{max-width:980px}
.home-compatible-wrap{margin-bottom:22px;max-width:980px}
.home-compatible-wrap .section-title{margin-bottom:10px}
.compact-shared-grid .best-slot{align-items:flex-start;overflow:hidden;min-width:0;width:100%;max-width:100%;box-sizing:border-box}
.compact-shared-grid .best-slot>div{flex:1;min-width:0;overflow:hidden}
.compact-shared-grid .best-slot b,.compact-shared-grid .best-slot span{overflow-wrap:anywhere;word-break:break-word}
.compact-shared-grid .best-slot small{display:block;margin-top:4px;line-height:1.35;overflow-wrap:anywhere;word-break:break-word;white-space:normal}
.compact-shared-grid .best-slot strong{flex-shrink:0;align-self:flex-start;margin-top:2px}
.live-page-layout{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(320px,.8fr);gap:14px;align-items:start}
.live-player-card,.live-chat-card{min-height:520px;display:flex;flex-direction:column}
.live-player-card #twitchBox,.live-chat-card #twitchChatBox{flex:1;min-height:0}
.live-chat-external-card{min-height:220px;display:grid;align-content:center;gap:12px;border:1px solid var(--line);border-radius:16px;padding:16px;background:rgba(0,0,0,.14)}
.live-player-card iframe{width:100%;height:min(68vh,720px);min-height:520px;border:0;border-radius:16px;background:#000}
.live-chat-card iframe{width:100%;height:min(68vh,720px);min-height:520px;border:0;border-radius:16px;background:#0b0f1c}
.compact-player-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;align-items:start!important}
.player-avail-button{width:100%;text-align:left;display:flex;align-items:center;justify-content:space-between;gap:10px;cursor:pointer;padding:12px!important;min-height:70px;align-self:start!important}
.player-avail-button:hover{transform:translateY(-1px);border-color:rgba(34,211,238,.35);background:rgba(255,255,255,.065)}
.player-card-main{display:flex;align-items:center;gap:10px;min-width:0}.player-card-main div{min-width:0}.player-card-main b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-card-main small{display:block;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.72rem}.player-avail-button strong{background:rgba(255,255,255,.1);border:1px solid var(--line);border-radius:999px;min-width:30px;height:30px;display:grid;place-items:center}
.modal-backdrop{position:fixed;inset:0;z-index:80;background:rgba(0,0,0,.58);backdrop-filter:blur(10px);display:grid;place-items:center;padding:18px}.modal-backdrop.hidden{display:none!important}.availability-modal{width:min(720px,96vw);height:min(620px,86vh);min-height:min(620px,86vh);max-height:86vh;position:relative;display:flex;flex-direction:column;padding:18px!important;overflow:hidden;box-sizing:border-box}.availability-modal #availabilityModalContent{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.availability-modal #availabilityModalContent>.modal-player-head{flex-shrink:0}.availability-modal #availabilityModalContent>.modal-bio{flex-shrink:0}.availability-modal #availabilityModalContent>.modal-slot-scroll{flex:1 1 auto;min-height:0;max-height:none;overflow-y:auto!important;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable;display:flex!important;flex-direction:column;gap:8px;align-items:stretch}.modal-x{position:absolute;top:12px;right:12px;z-index:2;width:36px;height:36px;border-radius:12px;background:rgba(255,255,255,.08);border:1px solid var(--line);color:#fff;font-size:1.15rem;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;margin:0;box-sizing:border-box;font-family:inherit}.modal-x:hover{background:rgba(239,68,68,.22);border-color:rgba(239,68,68,.45)}.modal-player-head{display:flex;align-items:center;gap:12px;padding-right:48px;margin-bottom:10px}.modal-player-head h2{margin:0}.modal-bio{margin:0 0 12px;color:#dce6ff;line-height:1.45;border:1px solid var(--line);background:rgba(255,255,255,.045);border-radius:14px;padding:10px}.modal-slot-scroll{overflow-y:auto;min-height:0;display:grid;gap:8px;padding-right:6px}.modal-slot{margin:0;border:1px solid var(--line);background:rgba(255,255,255,.045);border-radius:14px;padding:10px 12px}.rank-editor{border:1px solid var(--line);background:rgba(255,255,255,.035);border-radius:18px;padding:12px;margin-top:8px}.rank-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-top:8px}
@media(max-width:1180px){.live-page-layout{grid-template-columns:1fr}.live-player-card iframe,.live-chat-card iframe{height:420px;min-height:360px}}
@media(max-width:620px){.live-player-card iframe,.live-chat-card iframe{height:320px;min-height:280px}.availability-modal{height:86vh;min-height:86vh;max-height:86vh;padding:14px!important}.compact-player-grid{grid-template-columns:1fr}}

/* V15 : notifications repliées, créneaux communs en pop-up, rangs RL en listes déroulantes */
.content,.admin-content{padding-right:22px!important}
.notification-rail{
  position:fixed!important;
  top:0!important;
  right:0!important;
  width:min(330px,92vw)!important;
  height:100vh!important;
  max-height:none!important;
  margin:0!important;
  border-radius:0!important;
  border-top:0!important;
  border-right:0!important;
  border-bottom:0!important;
  padding:12px 10px!important;
  z-index:85!important;
  background:rgba(8,11,22,.94)!important;
  box-shadow:-24px 0 70px rgba(0,0,0,.42)!important;
  backdrop-filter:blur(18px)!important;
  transform:translateX(0);
  transition:transform .22s ease;
  display:flex!important;
  flex-direction:column!important;
  overflow:hidden!important;
}
.notification-rail.collapsed{transform:translateX(calc(100% - 42px));box-shadow:none!important;background:transparent!important;border-left:0!important;padding-left:0!important;pointer-events:none}
.notification-tab{position:absolute;left:-42px;top:160px;width:42px;height:92px;min-height:0;border-radius:16px 0 0 16px;background:linear-gradient(135deg,rgba(139,92,246,.95),rgba(34,211,238,.82));border:1px solid rgba(255,255,255,.18);border-right:0;color:white;display:grid;place-items:center;gap:2px;padding:7px 4px;box-shadow:-10px 12px 34px rgba(0,0,0,.28);pointer-events:auto;cursor:pointer}
.notification-tab span{font-size:1rem}.notification-tab b{min-width:20px;height:20px;border-radius:999px;background:#ef4444;color:white;display:grid;place-items:center;font-size:.65rem;line-height:1;border:1px solid rgba(255,255,255,.25)}.notification-tab b.hidden{display:none!important}
.notification-rail.collapsed .notification-head,.notification-rail.collapsed .notif-list{opacity:0;pointer-events:none}.notification-head{flex:0 0 auto}.notification-rail .notif-list{overflow-y:auto!important;min-height:0!important;padding-right:4px!important;display:flex!important;flex-direction:column!important;gap:6px!important}.notification-rail .notif{display:grid;grid-template-columns:22px minmax(0,1fr);padding:7px 8px;border-radius:11px;gap:7px}.notification-rail .notif-icon{width:22px;height:22px;border-radius:8px;font-size:.68rem;display:grid;place-items:center}.notification-rail .notif b{font-size:.76rem;line-height:1.15}.notification-rail .notif p{font-size:.72rem;line-height:1.25;margin:2px 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.notification-rail .notif span{font-size:.64rem}.notification-rail h2{font-size:1rem}.notification-rail.collapsed .card-head{visibility:hidden}
.shared-slot-button{width:100%;text-align:left;cursor:pointer}.shared-slot-button:hover{transform:translateY(-1px);border-color:rgba(34,197,94,.5);background:linear-gradient(135deg,rgba(34,197,94,.12),rgba(255,255,255,.05))}.rank-edit-grid select{min-height:36px}.modal-slot-scroll{max-height:100%;overflow-y:auto!important}.modal-slot small{display:block}.availability-highlights .best-slot{min-height:64px}
@media(max-width:1180px){.notification-rail{width:min(330px,92vw)!important;height:100vh!important;position:fixed!important;right:0!important;top:0!important}.notification-rail.collapsed{transform:translateX(calc(100% - 42px))}.notification-tab{top:130px}.content,.admin-content{padding-right:22px!important}}
@media(max-width:620px){.notification-tab{top:112px;width:38px;height:84px;left:-38px}.notification-rail{width:min(315px,92vw)!important}.availability-modal{width:96vw!important;height:82vh!important;min-height:82vh!important;max-height:82vh!important}}


/* V16 hotfix : languette notifications toujours visible et cliquable */
.notification-rail.collapsed{
  transform:translateX(100%)!important;
  pointer-events:auto!important;
  background:rgba(8,11,22,.94)!important;
  border-left:1px solid var(--line)!important;
  padding-left:10px!important;
}
.notification-rail.collapsed .notification-tab{
  pointer-events:auto!important;
  opacity:1!important;
  visibility:visible!important;
}
.notification-tab{
  z-index:999!important;
  pointer-events:auto!important;
}
.notification-rail.collapsed .notification-head,
.notification-rail.collapsed .notif-list{
  opacity:0!important;
  pointer-events:none!important;
}
.notification-rail:not(.collapsed) .notification-tab{
  opacity:.92!important;
}
@media(max-width:620px){
  .notification-rail.collapsed{transform:translateX(100%)!important;}
}

/* Languette notifications (fixe, alignée sur la largeur du panneau) */
.notification-floating-tab{
  position:fixed!important;
  right:0!important;
  top:50%!important;
  transform:translateY(-50%)!important;
  width:30px!important;
  height:56px!important;
  min-height:0!important;
  z-index:9999!important;
  margin:0!important;
  padding:0 2px!important;
  border-radius:10px 0 0 10px!important;
  border:1px solid rgba(255,255,255,.10)!important;
  border-right:0!important;
  background:rgba(8,11,22,.88)!important;
  backdrop-filter:blur(14px)!important;
  box-shadow:-2px 0 12px rgba(0,0,0,.22)!important;
  color:#c9d4f1!important;
  display:grid!important;
  place-items:center!important;
  gap:2px!important;
  cursor:pointer!important;
  box-sizing:border-box!important;
  transition:right .22s ease,background .15s ease,filter .15s ease;
}
.notification-floating-tab:hover{
  filter:brightness(1.07);
  background:rgba(14,18,34,.92)!important;
}
.notification-floating-tab span{font-size:.78rem!important;line-height:1!important;opacity:.88}
.notification-floating-tab b{
  min-width:15px;height:15px;border-radius:999px;background:rgba(239,68,68,.85);color:#fff;
  display:grid;place-items:center;font-size:.58rem;line-height:1;
  border:1px solid rgba(0,0,0,.2)
}
.notification-floating-tab b.hidden{display:none!important}
.notification-floating-tab.open{
  right:min(330px,92vw)!important;
  transform:translateY(-50%)!important;
  border-radius:10px 0 0 10px!important;
}
.notification-rail.collapsed .notification-tab{display:none!important}
.notification-rail:not(.collapsed) .notification-tab{display:none!important}
.compact-shared-grid{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:8px!important}.compact-shared-grid .best-slot{min-height:58px;padding:10px 12px;gap:10px}.compact-shared-grid .best-slot b{font-size:.86rem;line-height:1.25}.compact-shared-grid .best-slot span{font-size:.8rem;margin-top:2px}.compact-shared-grid .best-slot small{font-size:.7rem}.compact-shared-grid .best-slot strong{font-size:.82rem;min-width:28px;padding:4px 7px}
@media(max-width:620px){
  .notification-floating-tab{width:28px!important;height:52px!important}
  .notification-floating-tab.open{right:min(315px,92vw)!important}
  .compact-shared-grid{grid-template-columns:1fr}
}

/* Liste des jours (dispos) : aperçu compact, max 5 lignes visibles + scroll */
.day-blocks-scroll{display:flex;flex-direction:column;gap:10px;max-height:calc(5 * 4.35rem + 4 * 10px);overflow-y:auto;overflow-x:hidden;padding:4px 8px 4px 2px;scrollbar-gutter:stable}
.day-summary-card{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%;min-height:4.35rem;text-align:left;padding:12px 16px;border-radius:16px;border:1px solid var(--line);background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.025));color:inherit;font:inherit;cursor:pointer;white-space:normal;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease}
.day-summary-card:hover{border-color:rgba(139,92,246,.42);background:linear-gradient(180deg,rgba(139,92,246,.14),rgba(12,16,31,.55));box-shadow:0 8px 28px rgba(0,0,0,.2)}
.day-summary-main{display:flex;flex-direction:column;gap:3px;min-width:0}
.day-summary-main b{font-size:1.02rem;text-transform:capitalize;line-height:1.2}
.day-summary-count{flex-shrink:0;font-weight:900;font-size:.88rem;padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:rgba(139,92,246,.14);color:#eef3ff;white-space:nowrap}
.availability-modal #availabilityModalContent > .modal-slot-scroll > .availability-item.modal-day-item,
.availability-modal #availabilityModalContent > .modal-slot-scroll > .player-slot.modal-slot{flex:0 0 auto;width:100%;box-sizing:border-box;align-self:stretch}
.availability-modal .availability-item.modal-day-item{align-items:center;min-height:62px;height:auto;max-height:none}
.availability-modal #availabilityModalContent > .modal-slot-scroll > .player-slot.modal-slot{align-items:center;height:auto;min-height:0}
.availability-modal .modal-slot-scroll > p.muted{flex:0 0 auto;margin:0}

/* Liens pseudo → profil public */
.pseudo-link{background:none!important;border:none!important;padding:0!important;margin:0!important;font:inherit!important;font-weight:800;color:#c4b5fd!important;text-decoration:none!important;cursor:pointer;display:inline;white-space:normal;min-height:0!important;line-height:inherit;box-shadow:none!important}
.pseudo-link:hover{color:#e0e7ff!important}
.pseudo-with-title{display:inline-flex;flex-direction:column;align-items:flex-start;gap:1px;max-width:100%}
.pseudo-title-label{display:block;font-size:.66rem;line-height:1.15;letter-spacing:.02em;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.news-author .pseudo-link{font-weight:800}
.notification-rail .notif-meta .pseudo-link{font-weight:900!important;color:#f4f0ff!important;letter-spacing:.01em}
.notification-rail .notif-meta .muted{font-weight:600;opacity:.9}
.online-user-name .pseudo-link{font-weight:800}
.availability-modal .pseudo-inline{display:block;margin-bottom:2px}
.availability-modal .pseudo-inline .pseudo-link,.availability-modal .modal-slot .pseudo-link{font-weight:900!important;font-size:1.06rem;color:#f8f6ff!important;letter-spacing:.015em}
.availability-page-sub{margin:6px 0 0;max-width:min(520px,100%)}
.availability-page-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}
.availability-page-board.availability-board{display:flex;flex-direction:column;flex:1 1 auto;min-height:min(420px,58vh);margin-top:6px}
.availability-days-page{max-height:none!important;flex:1;min-height:0;overflow-y:auto;scrollbar-gutter:stable}
.availability-form-modal{width:min(480px,96vw);max-height:min(90vh,640px);position:relative;display:flex;flex-direction:column;padding:18px!important;gap:4px;overflow:hidden}
.avail-form-modal-inner{width:100%;max-width:none;align-items:stretch;text-align:left;gap:14px;padding-right:2px;overflow-y:auto;min-height:0}
.avail-form-modal-inner .avail-form-grid{width:100%;justify-items:stretch;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px!important}
.avail-form-modal-inner label{text-align:left;font-size:.82rem;gap:5px;display:grid}
.avail-form-modal-inner input,.avail-form-modal-inner select{min-height:40px;padding:8px 10px;font-size:.88rem}
.avail-form-modal-inner .avail-note-label{grid-column:1/-1}
.avail-form-modal-actions{display:flex;justify-content:flex-end;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px;padding-top:12px;border-top:1px solid var(--line);flex-shrink:0}
.avail-form-modal-actions .availability-submit{margin:0;max-width:none;min-height:40px;padding:9px 20px;font-size:.88rem}
@media(max-width:620px){
  .avail-form-modal-inner .avail-form-grid{grid-template-columns:1fr!important}
  .availability-page-board.availability-board{min-height:min(300px,50vh)}
}
.avail-form-card{display:flex;flex-direction:column;align-items:center;text-align:center;padding:14px 18px!important}
.avail-form-card .card-head{width:100%;justify-content:center;margin-bottom:8px}
.avail-form-card .card-head h2{font-size:1.1rem}
.avail-form-card-full{width:100%;max-width:none;align-self:stretch}
.avail-form-inner{width:100%;max-width:560px;display:flex;flex-direction:column;align-items:center;gap:10px}
.avail-form-card-full .avail-form-inner{max-width:min(720px,100%)}
.avail-form-card .avail-form-grid{width:100%;justify-items:stretch;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px!important}
.avail-form-card label{text-align:center;font-size:.8rem;gap:4px}
.avail-form-card input,.avail-form-card select{min-height:36px;padding:7px 9px;font-size:.84rem}
.avail-form-card .availability-submit{margin-top:4px;width:100%;max-width:340px;min-height:38px;padding:8px 14px;font-size:.86rem}
@media(max-width:620px){.avail-form-card .avail-form-grid{grid-template-columns:1fr!important}}
.settings-compact-nav{display:flex;flex-wrap:wrap;gap:8px}
.settings-collapsible{border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.03);overflow:hidden}
.settings-collapsible-head{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;background:rgba(255,255,255,.04);border:0;padding:11px 12px;text-align:left}
.settings-collapsible-head h3{margin:0;font-size:.95rem}
.settings-collapsible-head span{color:var(--muted);font-size:.78rem}
.settings-collapsible-body{padding:12px;display:grid;gap:10px}
.settings-collapsible.collapsed .settings-collapsible-body{display:none}
.settings-collapsible.collapsed .settings-collapsible-head::before{content:'▸ ';color:#a5b4fc}
.settings-collapsible:not(.collapsed) .settings-collapsible-head::before{content:'▾ ';color:#67e8f9}
.user-role-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.profile-public-toolbar{margin-bottom:12px}
.profile-avail-card{margin-top:14px}
.profile-avail-list{display:flex;flex-direction:column;gap:8px;max-height:min(420px,48vh);overflow-y:auto;padding-right:4px}
.profile-avail-head{margin-top:16px}
.rank-readonly-grid{display:grid;gap:8px;margin-bottom:4px}
.rank-readonly-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 10px;border-radius:12px;border:1px solid var(--line);background:rgba(0,0,0,.12)}
.rank-readonly-row span{color:var(--muted);font-size:.82rem}
#publicProfileTags{display:flex;flex-direction:column;gap:8px}
#publicProfileTags .profile-tags-line{border:1px solid var(--line);background:rgba(255,255,255,.045);border-radius:999px;padding:7px 10px;font-size:.82rem;color:#dce6ff}

/* Bandeau accueil : masqué sur téléphone (gain de place) */
@media(max-width:620px){
  .public-body .content > header.hero-card{display:none!important}
}

/* Admin : journal avec défilement, grille dashboard une colonne */
.dashboard-grid-single{grid-template-columns:1fr!important;max-width:min(960px,100%)}
.audit-list-scroll{max-height:min(480px,58vh);overflow-y:auto;min-height:0;padding-right:6px;scrollbar-gutter:stable}

.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.hero-stats-duo{grid-template-columns:repeat(2,minmax(0,86px))}
.stat-grid-trio{align-items:stretch}

/* News : contenu enrichi (Quill / HTML sanitisé) */
.news-body.rich-text,.news-body.plain-text{font-size:0.94rem;line-height:1.62;color:#e3ebff}
.news-body.rich-text p{margin:.72em 0}
.news-body.rich-text h1{font-size:1.42rem;margin:1em 0 .52em;font-weight:800;line-height:1.22;letter-spacing:-.02em}
.news-body.rich-text h2{font-size:1.22rem;margin:.92em 0 .48em;font-weight:800;line-height:1.25}
.news-body.rich-text h3{font-size:1.08rem;margin:.85em 0 .4em;font-weight:700}
.news-body.rich-text h4,.news-body.rich-text h5,.news-body.rich-text h6{font-size:1rem;margin:.75em 0 .35em;font-weight:700;opacity:.95}
.news-body.rich-text ul,.news-body.rich-text ol{margin:.45em 0 .8em;padding-left:1.4em}
.news-body.rich-text li{margin:.28em 0}
.news-body.rich-text blockquote{margin:14px 0;padding:12px 16px;border-left:4px solid rgba(139,92,246,.65);background:rgba(0,0,0,.22);border-radius:0 14px 14px 0;color:#cad5ee;font-style:italic}
.news-body.rich-text pre{background:#070a12;border:1px solid var(--line);border-radius:14px;padding:14px 16px;overflow-x:auto;font-size:.84rem;margin:14px 0;line-height:1.45}
.news-body.rich-text code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.88em;background:rgba(0,0,0,.32);padding:2px 7px;border-radius:7px}
.news-body.rich-text pre code{background:transparent;padding:0;font-size:inherit}
.news-body.rich-text a{color:#7dd3fc;text-decoration:underline;text-underline-offset:2px}
.news-body.rich-text a:hover{color:#a5f3fc}
.news-body.plain-text p{margin:.5em 0}

/* Admin — Quill (thème sombre) */
.news-editor-card .news-editor-label{display:block;margin:12px 0 8px;font-size:.82rem;color:var(--muted)}
.news-quill-wrap{border-radius:14px;overflow:hidden}
.news-quill-wrap .ql-toolbar.ql-snow{border:1px solid var(--line);border-bottom:0;border-radius:14px 14px 0 0;background:rgba(0,0,0,.4);padding:8px;flex-wrap:wrap}
.news-quill-wrap .ql-container.ql-snow{border:1px solid var(--line);border-radius:0 0 14px 14px;background:rgba(0,0,0,.24);font-size:0.94rem;min-height:280px;color:#e8eeff}
.news-quill-wrap .ql-editor{min-height:260px;line-height:1.58;padding:14px 16px}
.news-quill-wrap .ql-editor.ql-blank::before{color:rgba(255,255,255,.32);font-style:normal;left:16px;right:16px}
.news-quill-wrap .ql-snow .ql-picker{color:#e8eeff}
.news-quill-wrap .ql-snow .ql-picker-options{background:#151a2a;border:1px solid var(--line);border-radius:12px;padding:6px}
.news-quill-wrap .ql-snow .ql-stroke{stroke:#c7d4f0}
.news-quill-wrap .ql-snow .ql-fill{fill:#c7d4f0}
.news-quill-wrap .ql-snow .ql-picker.ql-expanded .ql-picker-label{border-color:rgba(255,255,255,.12)}
.news-editing-banner{background:rgba(139,92,246,.14);border:1px solid rgba(139,92,246,.38);border-radius:12px;padding:10px 14px;margin-bottom:14px;font-size:.88rem;display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.news-editing-banner.hidden{display:none!important}
.news-form-actions{margin-top:14px;gap:10px}
.news-admin-item-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:6px}
.news-admin-item-head h3{margin:0;font-size:1.06rem;line-height:1.3}
.news-admin-preview{font-size:.84rem;line-height:1.45;max-height:4.2em;overflow:hidden}
.news-admin-btns{margin-top:10px}

/* Accueil — news (aperçu + édition) */
.section-title-row{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap}
.news-home-toolbar{display:flex;align-items:center;gap:8px}
.news-list-card .news-excerpt{margin:.5rem 0 0;color:#dce6ff;font-size:.9rem;line-height:1.5;display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden}
.news-list-card .news-readmore{margin-top:8px}
.news-card-staff{margin-top:12px;padding-top:10px;border-top:1px solid var(--line);gap:8px;flex-wrap:wrap}
.news-article-nav{margin-bottom:12px}
.news-full-page .news-full-title{font-size:1.45rem;margin:0;line-height:1.25}
.news-full-page .card-head{align-items:flex-start}
.news-full-staff{margin-top:16px;padding-top:14px;border-top:1px solid var(--line);gap:8px;flex-wrap:wrap}
.news-composer-modal{width:min(760px,94vw);max-height:min(92vh,900px);display:flex;flex-direction:column;position:relative;padding:18px!important;overflow:hidden}
.news-composer-modal .news-composer-actions{margin-top:14px}
.news-composer-modal #homeNewsEditor{min-height:0}
.news-composer-modal .ql-container{max-height:min(42vh,380px)}

/* Admin — Ballchasing / stats replay */
.bc-card .bc-status{min-height:1.2em;margin-top:8px}
.bc-meta{margin:12px 0;font-size:.88rem;line-height:1.45;color:#dce6ff}
.bc-meta a{color:#7dd3fc}
.bc-table-wrap{overflow-x:auto;border-radius:14px;border:1px solid var(--line);background:rgba(0,0,0,.2)}
.bc-table{width:100%;border-collapse:collapse;font-size:.84rem}
.bc-table th,.bc-table td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--line)}
.bc-table th{color:var(--muted);font-weight:800;text-transform:uppercase;font-size:.68rem;letter-spacing:.06em}
.bc-table tbody tr:last-child td{border-bottom:0}
.bc-row.bc-team-blue .bc-team-tag{background:rgba(59,130,246,.2);border:1px solid rgba(59,130,246,.4);color:#93c5fd}
.bc-row.bc-team-orange .bc-team-tag{background:rgba(249,115,22,.15);border:1px solid rgba(249,115,22,.4);color:#fdba74}
.bc-team-tag{display:inline-block;padding:3px 10px;border-radius:999px;font-size:.72rem;font-weight:800}
.bc-bump-note{margin-top:10px}

/* Admin users table compact role + OK */
.user-role-actions{display:flex;flex-wrap:nowrap;align-items:center;gap:6px;justify-content:flex-end}
.user-role-actions select{flex:0 1 auto;min-height:30px;padding:5px 8px;min-width:112px;max-width:160px}
.user-role-actions .mini-ok-btn{flex:0 0 auto}
.mini-ok-btn{min-height:30px;padding:5px 9px;border-radius:10px;font-size:.76rem;line-height:1}

/* Multi-streams Live (grille + pastilles) */
#liveStatusHint{margin:.35rem 0 0}
.live-channel-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin-bottom:14px}
.live-empty-card{margin:0}
.live-channel-card{display:flex;flex-direction:column;align-items:stretch;gap:6px;text-align:left;padding:12px 14px;border-radius:16px;border:1px solid var(--line);background:rgba(0,0,0,.2);cursor:pointer;transition:border-color .15s,background .15s,transform .12s;font:inherit;color:inherit}
.live-channel-card:hover{border-color:rgba(34,211,238,.35);background:rgba(255,255,255,.055)}
.live-channel-card.selected{border-color:rgba(34,211,238,.55);background:rgba(139,92,246,.14);box-shadow:0 0 0 1px rgba(139,92,246,.2)}
.live-channel-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.live-channel-name{font-weight:800;font-size:.95rem;line-height:1.25}
.live-channel-badges{display:flex;flex-wrap:wrap;gap:6px;align-items:center;justify-content:flex-end}
.mini-badge{font-size:.62rem;padding:3px 8px}
.live-channel-login{font-size:.72rem}
.live-channel-meta{display:flex;flex-direction:column;gap:2px;margin-top:4px}
.live-card-title{font-size:.78rem;line-height:1.35;color:#dce6ff;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.live-viewers{font-size:.72rem;color:#9bdfff}
.live-badge{display:inline-flex;align-items:center;font-size:.62rem;font-weight:800;letter-spacing:.04em;padding:3px 8px;border-radius:999px;text-transform:uppercase}
.live-badge-on{background:rgba(34,197,94,.22);border:1px solid rgba(34,197,94,.45);color:#86efac}
.live-badge-off{background:rgba(239,68,68,.15);border:1px solid rgba(239,68,68,.38);color:#fca5a5}
.live-badge-unknown{background:rgba(148,163,184,.15);border:1px solid rgba(148,163,184,.35);color:#cbd5e1}
.live-admin-wrap{display:flex;flex-direction:column;gap:10px}
.live-admin-row{display:grid;grid-template-columns:1fr 1fr auto auto auto auto;gap:8px;align-items:center;padding:10px;border-radius:14px;border:1px solid var(--line);background:rgba(0,0,0,.14)}
@media(max-width:900px){.live-admin-row{grid-template-columns:1fr 1fr;grid-auto-rows:auto}.live-admin-row .live-admin-move{grid-column:1/-1;justify-self:start}}
.live-admin-row label{display:flex;flex-direction:column;gap:4px;font-size:.72rem;color:var(--muted)}
.live-admin-row input{min-height:34px}
.live-admin-featured{display:flex;align-items:center;gap:8px;font-size:.8rem;white-space:nowrap}
.settings-hint{font-size:.78rem;color:var(--muted);line-height:1.45;margin:0 0 8px}

/* Classement RL (site + admin replay) */
.ranking-toolbar{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.ranking-subtab.active{background:rgba(139,92,246,.22)!important;border-color:rgba(139,92,246,.4)!important;color:#fff!important}
.rank-table-wrap{overflow-x:auto;border-radius:16px;border:1px solid var(--line);margin-top:4px}
.rank-table{width:100%;border-collapse:collapse;font-size:.86rem}
.rank-table th,.rank-table td{padding:10px 11px;text-align:left;border-bottom:1px solid var(--line)}
.rank-table th{background:rgba(0,0,0,.28);color:var(--muted);font-weight:800;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}
.rank-table tbody tr:last-child td{border-bottom:0}
.rank-table tbody tr.rank-top-1{background:linear-gradient(90deg,rgba(234,179,8,.2),transparent 58%)}
.rank-table tbody tr.rank-top-2{background:linear-gradient(90deg,rgba(148,163,184,.22),transparent 58%)}
.rank-table tbody tr.rank-top-3{background:linear-gradient(90deg,rgba(217,119,6,.2),transparent 58%)}
.rank-table .rank-num{white-space:nowrap;font-weight:900;color:#f4f6ff}
.rank-table .rank-medal{margin-right:7px;font-size:1.08rem;line-height:1;vertical-align:-2px}
.rank-table .rank-idx{font-variant-numeric:tabular-nums}
.rank-table .rank-player-col .pseudo-link,.rank-table .rank-name-plain{
  font-weight:900!important;
  color:var(--text)!important;
  letter-spacing:.015em;
  -webkit-font-smoothing:antialiased;
}
.rank-table .rank-player-col .pseudo-link:hover{color:#eef2ff!important}
.rank-table .rank-stat-cell{text-align:right}
.rank-table .rank-stat-num{font-weight:800;font-variant-numeric:tabular-nums;color:#f4f6ff}
.rank-table .rank-match-total{white-space:nowrap;font-size:.82rem;font-variant-numeric:tabular-nums;line-height:1.35}
.rank-wl-win{color:#4ade80;font-weight:800;font-variant-numeric:tabular-nums;text-shadow:0 0 12px rgba(74,222,128,.35)}
.rank-wl-loss{color:#f87171;font-weight:800;font-variant-numeric:tabular-nums;text-shadow:0 0 12px rgba(248,113,113,.35)}
.rank-wl-draw{color:#fde047;font-weight:800;font-variant-numeric:tabular-nums}
.rank-by-stat-toolbar{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 10px}
.rank-stat-filter-btn{min-height:34px!important;font-size:.76rem!important}
.rank-stat-filter-btn.active{background:rgba(34,197,94,.2)!important;border-color:rgba(34,197,94,.45)!important;color:#fff!important}
.rank-by-stat-focus{background:rgba(34,197,94,.08)}
.rank-stat-card .pseudo-link,.rank-stat-card .rank-name-plain{font-weight:800}
.rank-name-plain{font-weight:800;color:#e8ecfc}
.rank-table thead th:nth-child(n+3){text-align:right}

/* Classement — taille confortable sur PC */
@media (min-width:900px){
  #leaderboard .section-title h2{font-size:clamp(1.55rem,2.1vw,2.05rem);margin:.15em 0 .35em}
  #leaderboard #rankingMetaLine{font-size:.88rem;line-height:1.5;max-width:62ch}
  #leaderboard .ranking-toolbar{gap:12px;margin-bottom:16px}
  #leaderboard .ranking-toolbar .ranking-subtab{padding:11px 20px;font-size:.95rem;border-radius:12px}
  #leaderboard .rank-table{font-size:1.05rem}
  #leaderboard .rank-table th{font-size:.78rem;padding:13px 14px}
  #leaderboard .rank-table td{padding:14px 16px}
  #leaderboard .rank-table .rank-player-col .pseudo-link,
  #leaderboard .rank-table .rank-name-plain{font-size:1.14rem;font-weight:900!important;letter-spacing:.02em}
  #leaderboard .rank-table .rank-stat-num{font-size:1.1rem}
  #leaderboard .rank-table .rank-match-total{font-size:1rem}
  #leaderboard .rank-table .rank-num{font-size:1.02em}
  #leaderboard .rank-table .rank-medal{font-size:1.28rem;margin-right:9px}
  #leaderboard .rank-table-wrap{border-radius:18px;margin-top:8px}
  #leaderboard .rank-stat-grid{gap:16px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
  #leaderboard .rank-stat-card{padding:18px 20px;border-radius:18px}
  #leaderboard .rank-stat-card h3{font-size:1rem}
  #leaderboard .rank-stat-value{font-size:2rem}
}

.rank-stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.rank-stat-card h3{margin:0 0 6px;font-size:.92rem}
.rank-stat-value{font-size:1.75rem;font-weight:900;margin:0;line-height:1;color:#e0e7ff}
.admin-body .bc-ranking-panel{border-top:1px solid var(--line);margin-top:14px;padding-top:14px;display:flex;flex-direction:column;gap:10px}
.admin-body .bc-ranking-panel.hidden{display:none!important}
.ranking-manual-card{margin-top:16px}
.rank-manual-rows{display:flex;flex-direction:column;gap:10px;margin:12px 0}
.rank-manual-row{border:1px solid var(--line);border-radius:14px;padding:12px;background:rgba(0,0,0,.14)}
.rank-manual-row .form-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}
.rank-manual-row-actions{display:flex;align-items:flex-end;padding-bottom:4px}
.rank-manual-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px;align-items:center}
.rank-manual-preview{min-height:1.2em}
.rank-full-match-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;margin:14px 0}
.rank-grid-side{border:1px solid var(--line);border-radius:16px;padding:12px;background:rgba(0,0,0,.1)}
.rank-grid-blue{border-color:rgba(59,130,246,.35)}
.rank-grid-orange{border-color:rgba(249,115,22,.35)}
.rank-grid-side-title{margin:0 0 10px;font-size:.95rem}
.rank-grid-stack{display:flex;flex-direction:column;gap:10px}
.rank-grid-row{display:flex;flex-direction:column;gap:8px;padding:10px;border-radius:12px;background:rgba(255,255,255,.03);border:1px solid var(--line)}
.rank-grid-name input{width:100%;min-height:34px}
.rank-grid-nums{display:flex;flex-wrap:wrap;gap:8px}
.rg-num{display:flex;flex-direction:column;gap:3px;font-size:.68rem;color:var(--muted);min-width:52px}
.rg-num input{min-height:30px;padding:4px 6px;font-size:.82rem}
.ranking-adj-card{margin-top:16px}
.rank-adj-results{display:flex;flex-direction:column;gap:6px;max-height:220px;overflow-y:auto;margin:8px 0;padding:8px;border-radius:12px;border:1px solid var(--line);background:rgba(0,0,0,.12)}
.rank-adj-results.hidden{display:none!important}
.rank-adj-selected{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:8px 0;padding:8px 12px;border-radius:12px;background:rgba(139,92,246,.12);border:1px solid rgba(139,92,246,.35)}
.rank-adj-selected.hidden{display:none!important}
.rank-adj-pick{text-align:left;justify-content:flex-start!important}
.rank-adj-history-title{margin:0;font-size:1rem}
.rank-adj-history-wrap{margin-top:8px}
.rank-adj-history-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin:6px 0 8px}
.rank-adj-history-filters label{display:grid;gap:6px;font-size:.74rem;color:var(--muted);font-weight:700}
.rank-adj-table-wrap{overflow-x:auto;border-radius:14px;border:1px solid var(--line);margin-top:6px}
.rank-adj-table-wrap-scroll{max-height:min(52vh,460px);overflow:auto}
.rank-adj-history-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:8px}
.rank-adj-table{font-size:.78rem}
.rank-adj-table th,.rank-adj-table td{padding:8px 9px;white-space:nowrap}
.rank-adj-note-cell{max-width:140px;white-space:normal!important;overflow:hidden;text-overflow:ellipsis}
.rank-adj-actions{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}
.rank-adj-edit-panel{margin-top:16px;padding:14px;border-radius:16px;border:1px solid rgba(139,92,246,.35);background:rgba(139,92,246,.08)}
.rank-adj-edit-panel.hidden{display:none!important}
.rank-adj-edit-actions{margin-top:10px;gap:10px!important}

/* —— Mobile app-like shell (≤768px) : barre du haut + menu hamburger —— */
.mobile-nav-backdrop{position:fixed;inset:0;background:rgba(3,5,12,.58);backdrop-filter:blur(4px);z-index:205;opacity:0;visibility:hidden;transition:opacity .22s ease,visibility .22s ease;pointer-events:none;-webkit-tap-highlight-color:transparent}
#app.mobile-nav-is-open .mobile-nav-backdrop:first-of-type,#adminApp.mobile-nav-is-open #adminMobileNavBackdrop{opacity:1;visibility:visible;pointer-events:auto}
.app-top-bar{display:none;align-items:center;gap:10px;padding:10px 14px;padding-top:max(10px,env(safe-area-inset-top));padding-left:max(14px,env(safe-area-inset-left));padding-right:max(14px,env(safe-area-inset-right));min-height:calc(48px + env(safe-area-inset-top));position:fixed;top:0;left:0;right:0;z-index:215;background:rgba(8,11,22,.94);backdrop-filter:saturate(1.2) blur(16px);border-bottom:1px solid var(--line);box-shadow:0 4px 24px rgba(0,0,0,.35)}
.admin-top-bar{z-index:215}
.app-menu-btn{display:grid;place-items:center;width:44px;height:44px;min-width:44px;min-height:44px;padding:0;border-radius:14px;border:1px solid var(--line);background:rgba(255,255,255,.07);color:var(--text);-webkit-tap-highlight-color:transparent}
.app-hamburger{display:grid;gap:5px;width:20px}
.app-hamburger span{display:block;height:2px;border-radius:2px;background:linear-gradient(90deg,var(--brand),var(--brand2));transition:transform .24s ease,opacity .2s ease}
#app.mobile-nav-is-open .app-hamburger span:nth-child(1){transform:translateY(7px) rotate(45deg)}
#app.mobile-nav-is-open .app-hamburger span:nth-child(2){opacity:0;transform:scaleX(0)}
#app.mobile-nav-is-open .app-hamburger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
#adminApp.mobile-nav-is-open .app-hamburger span:nth-child(1){transform:translateY(7px) rotate(45deg)}
#adminApp.mobile-nav-is-open .app-hamburger span:nth-child(2){opacity:0;transform:scaleX(0)}
#adminApp.mobile-nav-is-open .app-hamburger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.app-top-brand{display:flex;align-items:center;gap:10px;min-width:0;flex:1}
.app-top-logo{width:32px;height:32px;border-radius:11px;object-fit:contain;flex-shrink:0;box-shadow:0 6px 18px rgba(0,0,0,.25)}
.app-top-title{font-weight:900;font-size:.98rem;letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.app-top-trail{width:44px;flex-shrink:0}
@media(max-width:768px){
  html{-webkit-text-size-adjust:100%}
  body.public-body,body.admin-body{-webkit-tap-highlight-color:rgba(139,92,246,.15);touch-action:manipulation}
  #app.app-shell,#adminApp.admin-shell{display:flex!important;flex-direction:column!important;min-height:100dvh;min-height:-webkit-fill-available}
  .app-top-bar{display:flex!important}
  #app .app-sidebar,#adminApp .admin-sidebar{
    position:fixed!important;top:0;left:0;bottom:0;width:min(300px,88vw)!important;max-width:300px;height:100vh!important;height:100dvh!important;
    margin:0!important;z-index:220!important;transform:translate3d(-105%,0,0);transition:transform .3s cubic-bezier(.22,1,.36,1)!important;
    border-right:1px solid var(--line)!important;border-bottom:none!important;border-radius:0!important;padding:14px!important;
    padding-top:max(14px,env(safe-area-inset-top))!important;padding-bottom:max(14px,env(safe-area-inset-bottom))!important;
    box-shadow:12px 0 48px rgba(0,0,0,.5)!important;background:rgba(7,10,22,.97)!important;backdrop-filter:blur(20px)!important;
    overflow-y:auto!important;-webkit-overflow-scrolling:touch
  }
  #app.mobile-nav-is-open .app-sidebar,#adminApp.mobile-nav-is-open .admin-sidebar{transform:translate3d(0,0,0)!important}
  #app .app-sidebar .side-nav,#adminApp .admin-sidebar .side-nav{grid-template-columns:1fr!important;gap:6px!important}
  #app .app-sidebar .nav-item,#adminApp .admin-sidebar .nav-item{min-height:44px!important;border-radius:14px!important;font-size:.95rem!important}
  #app .app-main-area,#adminApp .app-main-area{
    flex:1;min-height:0;width:100%!important;max-width:none!important;
    padding:14px!important;padding-bottom:max(24px,env(safe-area-inset-bottom))!important;
    padding-top:calc(56px + env(safe-area-inset-top))!important;padding-left:max(14px,env(safe-area-inset-left))!important;padding-right:max(14px,env(safe-area-inset-right))!important;
    -webkit-overflow-scrolling:touch;overscroll-behavior-y:contain
  }
  #app .content,#adminApp .admin-content{padding-right:14px!important}
  .hero-card{margin-top:0!important;border-radius:20px!important}
  .card{border-radius:18px!important}
  .notification-rail{margin-top:8px!important;border-radius:20px!important}
  .notification-tab{top:calc(56px + env(safe-area-inset-top) + 8px)!important}
  #toast{bottom:max(18px,env(safe-area-inset-bottom))!important}
}
@media(min-width:769px){
  #app .mobile-nav-backdrop:first-of-type,#adminMobileNavBackdrop{display:none!important;pointer-events:none!important;opacity:0!important;visibility:hidden!important}
}

/* Paris Multicoins — matchs à pari */
.multicoins-wallet{display:flex;flex-direction:column;align-items:flex-end;gap:2px;padding:12px 14px!important;min-width:120px}
.multicoins-wallet strong{font-size:1.35rem;background:linear-gradient(135deg,#fbbf24,#f59e0b);-webkit-background-clip:text;background-clip:text;color:transparent}
.multicoins-inline{color:#fcd34d;font-weight:800}
.bet-match-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:12px;margin-bottom:4px}
.bet-match-title{margin:.35rem 0;font-size:1.05rem;line-height:1.35}
.bet-vs{color:var(--muted);font-weight:700;margin:0 .25rem}
.bet-countdown-wrap{text-align:right;display:grid;gap:4px;min-width:140px}
.bet-countdown{font-size:1.15rem;font-variant-numeric:tabular-nums;color:#fde68a}
.bet-countdown-wrap--started .bet-countdown-preface{display:none}
.bet-countdown-wrap--started .bet-countdown{font-size:.95rem;font-variant-numeric:normal;font-weight:800;color:#86efac;line-height:1.3;max-width:12em;margin-left:auto;text-align:right}
.matches-page-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;justify-content:flex-end}
.matches-subnav{padding:7px!important;display:flex;align-items:center;gap:6px;justify-content:flex-end;border:1px solid rgba(99,102,241,.2)!important;background:linear-gradient(180deg,rgba(10,14,30,.85),rgba(7,10,22,.74))!important;backdrop-filter:blur(10px)}
.matches-subnav-btn{min-height:34px!important;font-size:.76rem;font-weight:800;display:inline-flex;align-items:center;gap:6px;padding:7px 10px!important;border-radius:10px!important;color:#cfd7ef!important;background:transparent!important;border-color:transparent!important;transition:background .14s ease,color .14s ease,border-color .14s ease}
.matches-subnav-btn:hover{background:rgba(255,255,255,.06)!important;color:#fff!important}
.matches-subnav-btn.is-active{background:linear-gradient(150deg,rgba(139,92,246,.33),rgba(99,102,241,.27))!important;border-color:rgba(139,92,246,.5)!important;color:#fff!important;box-shadow:0 6px 18px rgba(99,102,241,.18)}
.matches-slip-count-badge{display:inline-grid;place-items:center;min-width:1.2rem;height:1.2rem;padding:0 .3rem;border-radius:999px;background:rgba(56,189,248,.2);border:1px solid rgba(56,189,248,.42);font-size:.64rem;line-height:1;font-variant-numeric:tabular-nums}
.matches-subnav-wallet{min-width:96px;max-width:120px;margin-left:4px;padding:7px 10px!important;border-radius:10px!important;gap:0!important;align-items:flex-end;border-color:rgba(251,191,36,.22)!important;background:rgba(245,158,11,.08)!important;box-shadow:none!important}
.matches-subnav-wallet .mini{font-size:.62rem;line-height:1.1}
.matches-subnav-wallet strong{font-size:.92rem!important;line-height:1.05}
.betting-history-modal{width:min(640px,96vw);height:min(560px,86vh);max-height:86vh;position:relative;display:flex;flex-direction:column;padding:18px!important;overflow:hidden;box-sizing:border-box}
.betting-history-modal-body{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable;padding-top:6px}
.betting-history-item{padding:14px 0;border-bottom:1px solid rgba(255,255,255,.08)}
.betting-history-item:last-child{border-bottom:0}
.betting-hist-match{margin-bottom:6px;font-size:.94rem;line-height:1.35}
.betting-hist-match .bet-vs{opacity:.72;font-weight:800;margin:0 .25em}
.betting-hist-line{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin-top:8px;font-size:.86rem}
.betting-hist-extra{margin-top:6px}
.betting-hist-date{margin-top:10px;font-size:.74rem;opacity:.92}
.betting-hist-winner{margin-top:4px}
span.badge.betting-hist-won{background:rgba(34,197,94,.25);border-color:rgba(52,211,153,.45);color:#d1fae5}
#bettingHistoryModal.modal-backdrop{z-index:248!important}
@media(max-width:620px){.bet-teams-columns{grid-template-columns:1fr}}
.bet-team-block{border:1px solid var(--line);border-radius:14px;padding:10px;background:rgba(0,0,0,.12)}
.bet-team-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px}
.bet-odd-pill{font-weight:900;font-size:1.05rem;padding:4px 10px;border-radius:999px;background:rgba(139,92,246,.18);border:1px solid rgba(139,92,246,.35)}
.bet-roster{font-size:.82rem;line-height:1.45;display:flex;flex-wrap:wrap;gap:6px}
.bet-linked{color:var(--good);font-size:.65rem;margin-right:2px}
.bet-stake-bar{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
.bet-stake-bar label{display:flex;flex-direction:column;gap:4px;min-width:100px}
.bet-stake-bar input{max-width:120px}
.bet-my-note{margin:0;color:#a7f3d0;font-size:.86rem}
.bet-pool-line{margin:0}
.owner-grant-card{border-color:rgba(251,191,36,.35)!important;background:linear-gradient(135deg,rgba(251,191,36,.08),rgba(255,255,255,.03))!important}
.betting-create-card .bet-admin-roster-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:10px 0}
@media(max-width:620px){.betting-create-card .bet-admin-roster-grid{grid-template-columns:1fr}}
.bet-admin-player-slots{display:grid;gap:8px}
.bet-admin-pseudo-slot{position:relative;display:grid;gap:4px}
.bet-admin-pseudo-slot label{display:grid!important;gap:6px}
.bet-admin-pseudo-suggest{position:absolute;left:0;right:0;top:100%;margin-top:4px;z-index:600;display:flex;flex-direction:column;gap:4px;max-height:220px;overflow-y:auto;padding:8px;border-radius:12px;border:1px solid var(--line);background:#080b16;box-shadow:0 14px 44px rgba(0,0,0,.48)}
.bet-admin-pseudo-suggest.hidden{display:none!important}
.bet-admin-pseudo-suggest-empty{margin:4px 6px}
.bet-admin-pseudo-pick{justify-content:flex-start!important;text-align:left}
.bet-admin-pseudo-pick-name{font-weight:800}
/* Admin — tableau matchs paris (pas la classe rank-table : évite alignement colonnes 3+ à droite) */
.admin-betting-table-wrap{margin-top:8px;border-radius:16px;border:1px solid var(--line);overflow-x:auto;background:rgba(0,0,0,.12)}
.admin-betting-table{width:100%;border-collapse:collapse;font-size:.8rem;table-layout:fixed}
.admin-betting-table th,.admin-betting-table td{padding:10px 11px;text-align:left!important;vertical-align:middle!important;border-bottom:1px solid var(--line);word-wrap:break-word}
.admin-betting-table thead th{background:rgba(0,0,0,.32);color:var(--muted);font-weight:800;font-size:.68rem;text-transform:uppercase;letter-spacing:.04em}
.admin-betting-table tbody tr:last-child td{border-bottom:0}
.admin-betting-table th:nth-child(1),.admin-betting-table td:nth-child(1){width:11%;min-width:100px}
.admin-betting-table th:nth-child(2),.admin-betting-table td:nth-child(2){width:22%}
.admin-betting-table th:nth-child(3),.admin-betting-table td:nth-child(3){width:9%}
.admin-betting-table th:nth-child(4),.admin-betting-table td:nth-child(4){width:12%}
.admin-betting-table th:nth-child(5),.admin-betting-table td:nth-child(5){width:11%}
.admin-betting-table th:nth-child(6),.admin-betting-table td:nth-child(6){width:11%}
.admin-betting-table .admin-betting-th-actions,.admin-betting-table .admin-betting-actions{width:auto;min-width:180px}
.admin-betting-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center;justify-content:flex-start}
.admin-betting-table .mini{font-variant-numeric:tabular-nums}
.betting-preview-line{min-height:1.2em}

/* Paris — layout type bookmaker + panier */
.betting-page-shell{display:grid;grid-template-columns:minmax(0,1fr) minmax(268px,320px);gap:18px;align-items:start;max-width:1240px}
.betting-matches-stream{display:flex;flex-direction:column;gap:16px;min-width:0}
.bet-slip-aside{position:sticky;top:12px;z-index:4;min-width:0}
@media(max-width:960px){
  .betting-page-shell{grid-template-columns:1fr}
  .bet-slip-aside{position:relative;top:auto}
}

.bet-slip-card{padding:14px!important;display:flex;flex-direction:column;gap:10px;background:linear-gradient(165deg,rgba(14,18,36,.96),rgba(8,11,22,.94))!important;border:1px solid rgba(34,211,238,.22)!important;box-shadow:0 18px 50px rgba(0,0,0,.4)!important}
.bet-slip-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.bet-slip-title{margin:0;font-size:1.02rem;font-weight:900}
.bet-slip-sub{margin:4px 0 0;font-size:.78rem;line-height:1.35}
.bet-slip-clear{flex-shrink:0}
.bet-slip-body{display:flex;flex-direction:column;gap:10px;min-height:72px;max-height:min(48vh,360px);overflow-y:auto;padding-right:2px}
.bet-slip-empty{margin:12px 4px;text-align:center;font-size:.86rem;line-height:1.45}
.bet-slip-line{border:1px solid var(--line);border-radius:14px;padding:10px;display:grid;gap:8px;background:rgba(255,255,255,.035)}
.bet-slip-line-head{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}
.bet-slip-line-head strong{font-size:.82rem;line-height:1.3;display:block;margin-bottom:2px}
.bet-slip-remove{flex-shrink:0;min-height:28px!important;padding:4px 10px!important}
.bet-slip-pick{font-size:.8rem;color:#a5b4fc;font-weight:800}
.bet-slip-stake{display:grid;gap:4px;font-size:.72rem;color:var(--muted);font-weight:700}
.bet-slip-stake input{width:100%;max-width:none}
.bet-slip-line-gain{font-size:.72rem;color:var(--muted)}
.bet-slip-line-gain b{color:#fcd34d;font-weight:900}
.bet-slip-footer{border-top:1px solid var(--line);padding-top:12px;margin-top:4px;display:grid;gap:12px}
.bet-slip-footer.hidden{display:none!important}
.bet-slip-totals{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;font-size:.82rem}
.bet-slip-totals div{display:flex;flex-direction:column;gap:2px}
.bet-slip-totals strong{font-variant-numeric:tabular-nums}
.bet-slip-validate{font-size:.92rem!important;min-height:46px!important;font-weight:900!important}

.bet-match-card-pro{display:grid;gap:10px;background:linear-gradient(180deg,rgba(22,28,52,.92),rgba(12,15,28,.85))!important;border:1px solid rgba(255,255,255,.08)!important;overflow:hidden}
.bet-match-card-pro.bet-match-closed{opacity:.88}
.bet-match-meta-row{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center}
.bet-match-league{font-size:.65rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em;color:#7dd3fc}
.bet-odds-market{margin-top:2px}
.bet-odds-market-label{font-size:.6rem;font-weight:900;color:#94a3b8;text-transform:uppercase;letter-spacing:.06em;margin:0 0 6px}
.bet-odds-row{display:grid;grid-template-columns:1fr 1fr;gap:5px}
@media(max-width:360px){.bet-odds-row{grid-template-columns:1fr}}

.bet-odds-cell{position:relative;border-radius:8px;text-align:center;cursor:pointer;-webkit-tap-highlight-color:transparent;padding:0;border:0;background:transparent;font:inherit;color:inherit}
.bet-odds-cell:disabled{cursor:not-allowed;opacity:.55}
.bet-odds-cell-inner{display:flex;flex-direction:column;align-items:stretch;border-radius:8px;padding:4px 6px 5px;background:linear-gradient(180deg,rgba(16,185,129,.1),rgba(8,17,28,.94));border:1px solid rgba(34,197,94,.38);box-shadow:inset 0 1px 0 rgba(255,255,255,.05);transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease,background .12s ease}
.bet-odds-cell:hover:not(:disabled) .bet-odds-cell-inner{transform:none;box-shadow:0 4px 14px rgba(34,197,94,.1);border-color:rgba(52,211,153,.55)}
.bet-odds-cell.is-picked .bet-odds-cell-inner{background:linear-gradient(155deg,#ea580c,#f97316 42%,#c2410c);border-color:#fdba74;box-shadow:0 6px 18px rgba(234,88,12,.32),inset 0 1px 0 rgba(255,255,255,.18)}
.bet-odds-cell.is-picked .bet-odds-num,.bet-odds-cell.is-picked .bet-odds-name{color:#fff}
.bet-odds-cell-badge{align-self:flex-start;display:inline-block;font-weight:900;font-size:.52rem;color:#bbf7d0;background:rgba(6,95,70,.88);padding:2px 5px;border-radius:5px;margin-bottom:2px;text-transform:uppercase;letter-spacing:.03em;line-height:1}
.bet-odds-cell.is-picked .bet-odds-cell-badge{background:rgba(255,255,255,.22);color:#fff}
.bet-odds-name{font-weight:900;font-size:clamp(.88rem,3vw,1.03rem);line-height:1.08;color:#eef2ff;margin-bottom:2px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.1em;text-align:center;letter-spacing:-.015em}
.bet-odds-num{font-size:.88rem;font-weight:900;font-style:italic;line-height:1;font-variant-numeric:tabular-nums;color:#fcd34d;text-shadow:0 0 10px rgba(251,191,36,.22)}
.bet-odds-pool{margin-top:3px;display:flex;align-items:center;gap:4px;width:100%}
.bet-odds-pool-track{flex:1;height:3px;background:rgba(255,255,255,.1);border-radius:99px;overflow:hidden;min-width:0}
.bet-odds-pool-fill{height:100%;width:0%;min-width:0;background:linear-gradient(90deg,#34d399,#22d3ee);border-radius:inherit;transition:width .2s ease}
.bet-odds-cell.is-picked .bet-odds-pool-fill{background:linear-gradient(90deg,#fef9c3,#fde68a)}
.bet-odds-pool-pct{font-size:.5rem;font-weight:800;font-variant-numeric:tabular-nums;color:#93c5fd;flex-shrink:0;min-width:2.4em;text-align:right}
.bet-odds-cell.is-picked .bet-odds-pool-pct{color:#fff9}
.bet-odds-cell:focus-visible .bet-odds-cell-inner{outline:2px solid #38bdf8;outline-offset:2px}
.bet-roster-mini{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:4px;font-size:.76rem;line-height:1.45;color:var(--muted);padding-top:12px;border-top:1px solid rgba(255,255,255,.06)}
@media(max-width:620px){.bet-roster-mini{grid-template-columns:1fr}}

/* Paris — téléphone : rendu « appli » */
@media(max-width:768px){
  #app.app-matches-route.app-shell .hero-card{display:none!important}
  #toast{z-index:260}
  body:has(#app.app-matches-route) #toast{bottom:max(100px,calc(168px + env(safe-area-inset-bottom)))!important}
  body:has(#app.app-matches-route #matches.matches-slip-has-items:not(.hidden)) #toast{bottom:max(120px,calc(216px + env(safe-area-inset-bottom)))!important}

  #matches.matches-page{padding-bottom:env(safe-area-inset-bottom)}
  #matches.matches-page > .section-title.matches-page-head{
    position:sticky;top:calc(56px + env(safe-area-inset-top));
    z-index:36;
    margin-top:-6px;margin-bottom:12px;
    padding:10px 0 11px;
    border-bottom:1px solid rgba(255,255,255,.07);
    background:linear-gradient(180deg,rgba(9,11,23,.94) 0%,rgba(9,11,23,.76) 70%,transparent 100%);
    backdrop-filter:saturate(1.05) blur(12px);-webkit-backdrop-filter:saturate(1.05) blur(12px);
  }
  #matches.matches-page .matches-page-head h2{font-size:1.35rem;letter-spacing:-.02em;margin:.15rem 0}
  #matches.matches-page .matches-page-intro-desktop{display:none!important}
  #matches.matches-page .matches-page-intro-short{display:block!important;line-height:1.42;font-size:.8rem}

  #matches.matches-page .matches-page-toolbar{width:100%;gap:8px;margin-top:2px;display:flex!important;flex-direction:row!important;flex-wrap:wrap!important;align-items:stretch!important;justify-content:flex-start!important}
  #matches.matches-page .matches-subnav{padding:8px!important;border-radius:16px!important}
  #matches.matches-page .matches-page-toolbar .matches-subnav-btn{
    flex:1 1 auto!important;
    white-space:nowrap;
    min-height:42px;padding:10px 8px!important;font-size:.73rem;font-weight:900;border-radius:12px
  }
  #matches.matches-page .multicoins-wallet{
    flex:1 1 100%!important;
    min-width:100%!important;
    display:flex;flex-direction:row;
    align-items:center;justify-content:space-between;
    gap:8px!important;
    padding:8px 11px!important;min-height:40px!important;border-radius:12px!important;
    background:rgba(245,158,11,.1)!important
  }
  #matches.matches-page .multicoins-wallet .mini{font-size:.66rem!important}
  #matches.matches-page .multicoins-wallet strong{font-size:.95rem!important}

  #matches.matches-page .betting-page-shell{gap:14px!important;max-width:none!important;margin:0}
  #matches.matches-page .betting-matches-stream{
    gap:13px!important;
    padding-bottom:clamp(168px,32vh,280px)!important;
  }
  #matches.matches-page.matches-slip-has-items .betting-matches-stream{padding-bottom:clamp(210px,40vh,320px)!important}

  #matches.matches-page:not(.hidden) #betSlipAside.bet-slip-aside{
    position:fixed!important;
    left:max(14px, env(safe-area-inset-left))!important;
    right:max(14px, env(safe-area-inset-right))!important;
    top:auto!important;
    width:auto!important;
    max-width:none!important;
    bottom:max(12px, env(safe-area-inset-bottom))!important;
    z-index:190;
    box-sizing:border-box;
  }
  #matches.matches-page:not(.hidden) #betSlipAside .bet-slip-card{
    border-radius:22px!important;
    max-height:min(48vh, 420px);
    padding:16px!important;
    box-shadow:0 -14px 55px rgba(0,0,0,.62), inset 0 1px 0 rgba(255,255,255,.06)!important;
    border-color:rgba(99,102,241,.42)!important;
    display:flex;flex-direction:column;gap:11px!important;overflow:hidden!important
  }
  #matches.matches-page:not(.hidden) #betSlipAside .bet-slip-body{
    flex:1;
    min-height:0!important;
    max-height:min(30vh, 280px)!important;
    overscroll-behavior-y:contain;
    -webkit-overflow-scrolling:touch;padding-right:4px!important
  }
  #matches.matches-page:not(.hidden) #betSlipAside .bet-slip-empty{padding:14px 6px;line-height:1.45;text-align:center}
  #matches.matches-page:not(.hidden) #betSlipAside .bet-slip-footer{padding-top:12px;margin-top:auto}
  #matches.matches-page:not(.hidden) #betSlipAside .bet-slip-validate{
    min-height:52px!important;
    border-radius:16px!important;
    font-size:1rem!important
  }

  .bet-match-card-pro{border-radius:20px!important;box-sizing:border-box}
  .bet-match-head{flex-direction:column;align-items:stretch;gap:6px;border-bottom:1px solid rgba(255,255,255,.07);padding-bottom:10px;margin-bottom:6px}
  .bet-match-head .bet-match-meta-row{margin-bottom:2px}
  .bet-match-title{font-size:1.08rem!important;line-height:1.35!important;margin:.35rem 0 .5rem!important}
  .bet-countdown-wrap{
    margin-top:2px;width:100%;min-width:0!important;text-align:left;
    flex-direction:row!important;flex-wrap:wrap;align-items:center;justify-content:space-between!important;gap:8px!important;
    border-top:none;
    padding-top:4px;display:flex!important;
  }
  .bet-countdown-wrap .bet-countdown-preface{font-size:.7rem;margin:0;line-height:1.25}
  .bet-countdown-wrap .bet-countdown{text-align:right;flex-shrink:1;min-width:0}

  .bet-odds-cell-inner{
    min-height:58px!important;
    padding:10px 8px 9px!important;
    border-radius:14px!important;
    justify-content:center
  }
  .bet-odds-cell-badge{font-size:.55rem;margin-bottom:3px!important}
  .bet-odds-name{font-size:clamp(.92rem,3.9vw,1.08rem)!important;min-height:2.05em;line-height:1.1!important}
  .bet-odds-num{font-size:1.02rem!important}
  .bet-odds-pool{margin-top:6px!important}
  .bet-odds-pool-track{height:4px!important}
  .bet-odds-cell:active:not(:disabled) .bet-odds-cell-inner{transform:scale(.97)}
  #matches.matches-page.matches-slip-has-items .bet-odds-cell:active:not(:disabled) .bet-odds-cell-inner{transition:transform .1s ease}
}

/* === Prédictions libres (paris hors-match) === */
.pred-card .pred-league{background:linear-gradient(135deg,rgba(139,92,246,.18),rgba(34,211,238,.16));border:1px solid rgba(139,92,246,.45);color:#e9d5ff}
.pred-card .pred-title{color:#e9d5ff}
.pred-card .pred-desc{margin:.15rem 0 .25rem;line-height:1.4}
.pred-odds-market .bet-odds-market-label{color:#c4b5fd;font-weight:800}
.pred-odds-row{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
.pred-odds-row.pred-outcomes-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.pred-odds-row.pred-outcomes-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.pred-odds-row.pred-outcomes-4{grid-template-columns:repeat(2,minmax(0,1fr))}
.pred-odds-cell .bet-odds-cell-inner{
  background:linear-gradient(180deg,rgba(139,92,246,.14),rgba(8,17,28,.94));
  border:1px solid rgba(139,92,246,.45)
}
.pred-odds-cell:hover:not(:disabled) .bet-odds-cell-inner{box-shadow:0 4px 14px rgba(139,92,246,.18);border-color:rgba(167,139,250,.7)}
.pred-odds-cell.is-picked .bet-odds-cell-inner{background:linear-gradient(155deg,#7c3aed,#a78bfa 42%,#6d28d9);border-color:#c4b5fd;box-shadow:0 6px 18px rgba(124,58,237,.36),inset 0 1px 0 rgba(255,255,255,.18)}

.bet-slip-kind-badge{display:inline-block;font-size:.62rem;font-weight:800;letter-spacing:.03em;padding:2px 7px;border-radius:999px;text-transform:uppercase;margin-bottom:4px;line-height:1.4}
.bet-slip-kind-match{background:rgba(34,197,94,.15);color:#bbf7d0;border:1px solid rgba(34,197,94,.4)}
.bet-slip-kind-pred{background:rgba(139,92,246,.18);color:#e9d5ff;border:1px solid rgba(139,92,246,.45)}

.pred-admin-outcomes{display:grid;gap:8px;margin:8px 0 10px}
.pred-admin-outcome-row{display:grid;grid-template-columns:1fr 110px auto;gap:8px;align-items:end;padding:8px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.03)}
.pred-admin-outcome-row label{display:flex;flex-direction:column;font-size:.78rem;color:var(--muted);gap:4px}
.pred-admin-outcome-row input{font:inherit}
.pred-admin-outcome-del{align-self:end;height:36px;min-width:36px;font-size:1.1rem;line-height:1}
.pred-opt-pill{margin:0 4px 4px 0;display:inline-block}

@media (max-width:520px){
  .pred-admin-outcome-row{grid-template-columns:1fr 90px auto}
  .pred-odds-row{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}

/* Mise en avant du choix pari (au lieu de "A"/"B" ou "Cote 1/2") */
.bet-my-pick,.bet-slip-pick-name,.betting-hist-pick{
  color:#fde68a;
  font-weight:900;
  font-size:1.02em;
  letter-spacing:.01em;
}
.bet-my-note{
  background:linear-gradient(180deg,rgba(234,88,12,.12),rgba(8,17,28,.0));
  border:1px solid rgba(234,88,12,.32);
  border-radius:10px;
  padding:8px 10px;
  margin-top:8px
}

/* Pari mutuel (pot commun, style Twitch) */
.bet-mode-pm{
  background:linear-gradient(135deg,rgba(168,85,247,.22),rgba(217,70,239,.18))!important;
  border:1px solid rgba(192,132,252,.55)!important;
  color:#f5d0fe!important
}
.bet-match-card-pm{
  border:1px solid rgba(192,132,252,.32)!important;
  box-shadow:0 0 0 1px rgba(192,132,252,.06) inset
}
.bet-odds-cell-pm .bet-odds-cell-inner{
  background:linear-gradient(180deg,rgba(168,85,247,.13),rgba(8,17,28,.94));
  border:1px solid rgba(168,85,247,.42)
}
.bet-odds-cell-pm:hover:not(:disabled) .bet-odds-cell-inner{
  border-color:rgba(216,180,254,.7);
  box-shadow:0 4px 14px rgba(168,85,247,.18)
}
.bet-odds-cell-pm.is-picked .bet-odds-cell-inner{
  background:linear-gradient(155deg,#9333ea,#c084fc 42%,#7e22ce);
  border-color:#e9d5ff;
  box-shadow:0 6px 18px rgba(147,51,234,.36),inset 0 1px 0 rgba(255,255,255,.18)
}
.bet-odds-pm-note{margin-left:4px;font-style:italic}

.bet-slip-line-pm{
  border-color:rgba(192,132,252,.35);
  background:linear-gradient(180deg,rgba(168,85,247,.06),rgba(255,255,255,.025))
}
.bet-slip-pm-tag{
  display:inline-block;font-size:.62rem;font-weight:700;
  padding:1px 6px;border-radius:999px;
  background:rgba(168,85,247,.18);color:#f5d0fe;
  border:1px solid rgba(192,132,252,.45);
  margin-left:4px;letter-spacing:.02em
}
.bet-slip-pm-hint{
  margin-top:2px;color:#c4b5fd;font-style:italic
}

.pred-mode-pm{background:linear-gradient(135deg,rgba(168,85,247,.22),rgba(217,70,239,.18))!important;border:1px solid rgba(192,132,252,.55)!important;color:#f5d0fe!important}
.pred-admin-outcome-row--pm{grid-template-columns:1fr auto}
@media (max-width:520px){
  .pred-admin-outcome-row--pm{grid-template-columns:1fr auto}
}

/* ===== Replays attachés aux matchs de paris ===== */
.bet-replays-line{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  margin:8px 0 0;padding:8px 12px;border-radius:10px;
  background:linear-gradient(135deg,rgba(56,189,248,.10),rgba(99,102,241,.08));
  border:1px solid rgba(125,211,252,.28)
}
.bet-replays-btn{font-weight:600}
.betting-hist-replays{margin-top:6px}

.betting-replays-modal{max-width:780px;width:96%}
.betting-replays-body{display:flex;flex-direction:column;gap:12px;max-height:70vh;overflow-y:auto;padding-right:4px}

.betting-replay-card{
  border:1px solid rgba(255,255,255,.08);
  border-radius:12px;padding:12px 14px;
  background:linear-gradient(180deg,rgba(255,255,255,.02),rgba(255,255,255,.01))
}
.betting-replay-card.is-expanded{
  border-color:rgba(125,211,252,.42);
  box-shadow:0 6px 22px rgba(56,189,248,.10)
}
.betting-replay-card-head{
  display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap
}
.betting-replay-card-title{display:flex;align-items:center;gap:8px}
.betting-replay-card-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:.85rem}
.betting-replay-card-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px}
.betting-replay-card-stats:empty{display:none}
.betting-replay-card-stats{margin-top:10px}

.replay-stats-head{
  display:flex;align-items:center;gap:14px;justify-content:center;
  padding:10px 12px;border-radius:10px;
  background:linear-gradient(180deg,rgba(255,255,255,.025),rgba(255,255,255,.01));
  border:1px solid rgba(255,255,255,.06);
  flex-wrap:wrap
}
.replay-team-score{display:flex;align-items:center;gap:8px;font-size:1.05rem}
.replay-team-blue{color:#93c5fd}
.replay-team-orange{color:#fdba74}
.replay-team-side{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;opacity:.7}
.replay-team-goals{font-size:1.6rem;font-weight:800;font-variant-numeric:tabular-nums}
.replay-vs{opacity:.55;font-style:italic}
.replay-stats-meta{margin:6px 0 4px;text-align:center}

.replay-stats-table{width:100%;border-collapse:collapse;font-size:.88rem}
.replay-stats-table thead th{
  background:rgba(255,255,255,.04);
  padding:6px 8px;text-align:left;font-weight:700;
  border-bottom:1px solid rgba(255,255,255,.08)
}
.replay-stats-table tbody td{
  padding:6px 8px;border-bottom:1px solid rgba(255,255,255,.04);
  font-variant-numeric:tabular-nums
}
.replay-stats-row.replay-stats-blue td{background:linear-gradient(90deg,rgba(56,189,248,.06),transparent 60%)}
.replay-stats-row.replay-stats-orange td{background:linear-gradient(90deg,rgba(251,146,60,.06),transparent 60%)}
.replay-stats-table th:not(:first-child),
.replay-stats-table td:not(:first-child){text-align:center}

/* ===== Admin : modale gestion des replays ===== */
.admin-replays-modal{max-width:780px;width:96%}
.admin-replays-body{display:flex;flex-direction:column;gap:8px;max-height:70vh;overflow-y:auto;padding-right:4px}
.admin-replays-list{display:flex;flex-direction:column;gap:8px}
.admin-replay-row{
  border:1px solid rgba(255,255,255,.08);border-radius:10px;
  padding:10px 12px;background:rgba(255,255,255,.015)
}
.admin-replay-row-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.admin-replay-title{flex:1 1 220px;min-width:140px}
.admin-replay-gn{flex:0 0 60px}
.admin-replays-upload{padding:12px 14px}
.admin-replays-upload h3{font-size:.95rem}
.admin-replays-upload input[type="file"]{margin-top:4px}

/* ===== Page Tournois ===== */
.tournaments-page{display:flex;flex-direction:column;gap:14px}
.tournaments-filters{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.tournament-filter-btn.is-active{
  background:linear-gradient(135deg,#a78bfa,#7c3aed);
  color:#fff;border-color:rgba(192,132,252,.55);
  box-shadow:0 4px 14px rgba(124,58,237,.28)
}
.tournaments-list{display:flex;flex-direction:column;gap:14px}
.tournament-card{padding:16px 18px;display:flex;flex-direction:column;gap:10px}
.tournament-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
.tournament-card-meta-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:4px}
.tournament-card-title{margin:0;font-size:1.2rem}
.tournament-card-when{margin:2px 0 0}
.tournament-desc{margin:0;line-height:1.45;white-space:pre-wrap;color:#cbd5e1}
.tournament-winner{
  margin:0;padding:8px 12px;border-radius:10px;
  background:linear-gradient(135deg,rgba(250,204,21,.14),rgba(251,191,36,.08));
  border:1px solid rgba(250,204,21,.32);color:#fde68a
}
.tournament-no-embed{margin:0;font-style:italic}

.tournament-status-upcoming{background:rgba(250,204,21,.18)!important;border:1px solid rgba(250,204,21,.4)!important;color:#fde68a!important}
.tournament-status-live{background:rgba(248,113,113,.22)!important;border:1px solid rgba(248,113,113,.5)!important;color:#fecaca!important;animation:tournamentLivePulse 2.4s ease-in-out infinite}
.tournament-status-finished{background:rgba(34,197,94,.18)!important;border:1px solid rgba(34,197,94,.42)!important;color:#bbf7d0!important}
.tournament-status-cancelled{background:rgba(148,163,184,.18)!important;border:1px solid rgba(148,163,184,.4)!important;color:#cbd5e1!important}
@keyframes tournamentLivePulse{
  0%,100%{box-shadow:0 0 0 0 rgba(248,113,113,.0)}
  50%{box-shadow:0 0 0 6px rgba(248,113,113,.18)}
}
.tournament-card.tournament-status-live{
  border-color:rgba(248,113,113,.4);
  box-shadow:0 8px 30px rgba(248,113,113,.10)
}
.tournament-card.tournament-status-finished{border-color:rgba(34,197,94,.28)}

.tournament-no-bracket{margin:0;font-style:italic}
.tournament-bracket-wrap{
  border-radius:12px;overflow:hidden;
  border:1px solid rgba(148,163,184,.22);
  background:rgba(15,23,42,.35)
}
.tournament-bracket-img-link{
  display:block;line-height:0;text-align:center;
  overflow:auto;max-height:85vh;
  background:#0f172a
}
.tournament-bracket-img{
  display:inline-block;max-width:100%;height:auto;vertical-align:middle;
  cursor:zoom-in
}
.tournament-bracket-hint{margin:8px;text-align:center}

.tournament-admin-bracket-block{margin-top:8px}
.tournament-admin-bracket-preview{
  margin-top:10px;padding:10px;border-radius:10px;
  border:1px solid rgba(148,163,184,.2);
  background:rgba(0,0,0,.2);text-align:center
}
.tournament-admin-bracket-preview img{
  max-width:100%;max-height:280px;height:auto;object-fit:contain
}

.tournaments-toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin-bottom:8px}
.tournament-search{max-width:320px;flex:1 1 200px}
.tournaments-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.tournament-grid-card{
  display:flex;flex-direction:column;align-items:stretch;text-align:left;gap:10px;
  padding:14px 16px;cursor:pointer;transition:transform .15s,border-color .15s,box-shadow .15s;
  width:100%;max-width:100%;box-sizing:border-box;overflow:hidden
}
.tournament-grid-card:hover{transform:translateY(-2px);border-color:rgba(139,92,246,.45);box-shadow:0 10px 28px rgba(124,58,237,.12)}
.tournament-grid-card-top{display:flex;gap:12px;align-items:flex-start;min-width:0}
.tournament-grid-card-head{flex:1;min-width:0}
.tournament-grid-card-head h3{margin:4px 0 2px;font-size:1.05rem;line-height:1.25;overflow-wrap:anywhere}
.tournament-grid-desc{margin:0;font-size:.86rem;line-height:1.4;color:#cbd5e1;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.tournament-grid-foot{margin:0}
.tournament-logo{display:inline-flex;align-items:center;justify-content:center;border-radius:14px;flex-shrink:0}
.tournament-logo-lg{width:52px;height:52px;font-size:1.75rem}
.tournament-logo-emoji{background:rgba(255,255,255,.06);border:1px solid var(--line)}
.tournament-logo-img{width:52px;height:52px;object-fit:cover;border-radius:14px;border:1px solid var(--line)}
.tournament-empty{display:grid;gap:12px;text-align:center;padding:24px}
.tournaments-detail-view{display:flex;flex-direction:column;gap:14px}
.tournaments-detail-nav{margin-bottom:4px}
.tournament-detail-header{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-start}
.tournament-detail-header-main{flex:1;min-width:0}
.tournament-detail-title{margin:6px 0 4px;font-size:1.35rem}
.tournament-detail-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.tournament-detail-desc{margin-top:8px;line-height:1.5;white-space:pre-wrap;color:#cbd5e1}
.tournament-teams-section{display:grid;gap:12px}
.tournament-teams-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.tournament-team-card{padding:12px 14px;display:grid;gap:8px}
.tournament-team-head{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;flex-wrap:wrap}
.tournament-team-head h4{margin:0}
.tournament-players-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.tournament-player-row{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;padding:6px 0;border-bottom:1px solid rgba(255,255,255,.06)}
.tournament-player-row:last-child{border-bottom:0}
.tournament-player-main{display:grid;gap:2px;min-width:0}
.tournament-add-team-card,.tournament-add-team-row{display:grid;gap:10px}
.tournament-add-team-row{grid-template-columns:1fr auto auto;align-items:end}
.tournament-add-player-row{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;margin-top:8px}
.tournament-seed-input{max-width:88px}
.tournament-form-modal{max-width:640px;width:min(96vw,640px);max-height:90vh;overflow-y:auto}
.tournament-logo-block{display:grid;gap:8px;margin:10px 0}
.tournament-emoji-picker{display:flex;flex-wrap:wrap;gap:6px}
.tournament-emoji-btn{
  width:40px;height:40px;border-radius:10px;border:1px solid var(--line);
  background:rgba(0,0,0,.2);font-size:1.25rem;cursor:pointer;padding:0
}
.tournament-emoji-btn.is-active,.tournament-emoji-btn:hover{border-color:rgba(139,92,246,.6);background:rgba(139,92,246,.15)}
.tournament-logo-preview img,.tournament-form-modal .tournament-admin-bracket-preview img{max-height:120px}
.tournament-bracket-modal{max-width:min(96vw,1100px);width:100%;max-height:92vh;overflow:hidden;display:flex;flex-direction:column}
.tournament-bracket-modal-body{overflow:auto;flex:1;text-align:center;background:#0f172a;border-radius:12px;padding:8px}
.tournament-bracket-modal-img{max-width:100%;height:auto;display:inline-block}
.tournament-form-actions{margin-top:12px}
@media(max-width:720px){
  .tournament-add-team-row,.tournament-add-player-row{grid-template-columns:1fr}
  .tournaments-grid,.tournament-teams-grid{grid-template-columns:1fr}
  .tournament-detail-header{flex-direction:column}
}

/* —— Messagerie (style inbox moderne) —— */
.nav-messages-count,.nav-live-count{
  display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;
  margin-left:6px;padding:0 5px;border-radius:999px;font-size:.68rem;font-weight:800;
  background:linear-gradient(135deg,#8b5cf6,#6366f1);color:#fff;line-height:1
}
.messages-page-head{margin-bottom:12px}
.messages-app{
  display:grid;grid-template-columns:minmax(280px,360px) minmax(0,1fr);
  min-height:min(72vh,640px);max-height:min(78vh,720px);
  overflow:hidden;padding:0;background:rgba(6,10,22,.55)
}
.messages-sidebar{
  display:flex;flex-direction:column;min-width:0;min-height:0;
  border-right:1px solid var(--line);background:rgba(0,0,0,.18)
}
.messages-sidebar::before{
  content:'Conversations';display:block;padding:14px 14px 8px;font-size:.72rem;font-weight:900;
  letter-spacing:.08em;text-transform:uppercase;color:var(--muted)
}
.messages-sidebar > .msg-conv-item,
.messages-sidebar > .messages-loading,
.messages-sidebar > .messages-empty{margin-left:6px;margin-right:6px}
.messages-sidebar > .msg-conv-item:last-of-type{margin-bottom:8px}
.messages-sidebar{overflow-y:auto;padding-bottom:8px}
.msg-conv-item{
  display:flex;align-items:center;gap:12px;width:calc(100% - 12px);
  padding:10px 12px;margin-bottom:4px;border-radius:14px;
  border:1px solid transparent;background:transparent;color:inherit;
  cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s;
  text-align:left;min-height:68px;box-sizing:border-box
}
.msg-conv-item:hover{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.06)}
.msg-conv-item.active{
  background:linear-gradient(90deg,rgba(139,92,246,.22),rgba(139,92,246,.08));
  border-color:rgba(139,92,246,.35);
  box-shadow:inset 3px 0 0 #8b5cf6
}
.msg-conv-item.unread .msg-conv-name{font-weight:900;color:#f4f0ff}
.msg-conv-item.unread .msg-conv-preview{color:#c4b5fd;font-weight:600}
.msg-conv-avatar-wrap{position:relative;flex:0 0 48px;width:48px;height:48px}
.msg-conv-avatar{
  width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-weight:900;font-size:.9rem;border:1px solid rgba(255,255,255,.12);
  box-shadow:0 6px 18px rgba(0,0,0,.25)
}
.msg-conv-avatar.violet{background:linear-gradient(135deg,#7c3aed,#22d3ee)}
.msg-conv-avatar.cyan{background:linear-gradient(135deg,#0891b2,#67e8f9)}
.msg-conv-avatar.green{background:linear-gradient(135deg,#16a34a,#86efac)}
.msg-conv-avatar.orange{background:linear-gradient(135deg,#ea580c,#fbbf24)}
.msg-conv-avatar.rose{background:linear-gradient(135deg,#db2777,#fb7185)}
.msg-conv-avatar-wrap .msg-peer-online{
  position:absolute;bottom:1px;right:1px;width:12px;height:12px;border-radius:50%;
  background:#22c55e;border:2px solid #0f1428;box-shadow:0 0 0 1px rgba(0,0,0,.3)
}
.msg-conv-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;justify-content:center}
.msg-conv-row{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0}
.msg-conv-row-bottom{align-items:flex-end}
.msg-conv-name{
  flex:1;min-width:0;font-size:.92rem;font-weight:700;line-height:1.2;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap
}
.msg-conv-time{
  flex:0 0 auto;font-size:.7rem;color:var(--muted);white-space:nowrap;line-height:1
}
.msg-conv-preview{
  flex:1;min-width:0;font-size:.8rem;color:var(--muted);line-height:1.25;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap
}
.msg-conv-badge{
  flex:0 0 auto;min-width:20px;height:20px;padding:0 6px;margin-left:6px;
  border-radius:999px;font-size:.68rem;font-weight:900;line-height:20px;text-align:center;
  background:linear-gradient(135deg,#8b5cf6,#6366f1);color:#fff;
  box-shadow:0 4px 12px rgba(139,92,246,.35)
}
.messages-thread{
  display:grid;grid-template-rows:auto 1fr auto;min-height:0;min-width:0;
  background:radial-gradient(circle at 80% 0%,rgba(139,92,246,.08),transparent 40%)
}
.messages-thread-empty{display:grid;place-items:center;padding:32px;text-align:center;min-height:280px}
.messages-thread-empty-inner{display:grid;gap:8px;max-width:320px}
.messages-empty-icon{font-size:2.4rem;opacity:.85}
.messages-thread-head{
  display:flex;align-items:center;gap:12px;padding:14px 16px;
  border-bottom:1px solid var(--line);background:rgba(0,0,0,.2)
}
.msg-thread-avatar{
  flex:0 0 44px;width:44px;height:44px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;font-weight:900;font-size:.85rem;border:1px solid rgba(255,255,255,.1)
}
.msg-thread-avatar.violet{background:linear-gradient(135deg,#7c3aed,#22d3ee)}
.msg-thread-avatar.cyan{background:linear-gradient(135deg,#0891b2,#67e8f9)}
.msg-thread-avatar.green{background:linear-gradient(135deg,#16a34a,#86efac)}
.msg-thread-avatar.orange{background:linear-gradient(135deg,#ea580c,#fbbf24)}
.msg-thread-avatar.rose{background:linear-gradient(135deg,#db2777,#fb7185)}
.msg-thread-head-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.msg-thread-name{display:block;font-size:1rem;font-weight:900;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.msg-header-status{font-size:.75rem;color:var(--muted)}
.msg-header-status.online{color:#4ade80;font-weight:700}
.msg-typing-indicator{
  display:block;font-size:.75rem;color:#a78bfa;font-weight:600;font-style:italic;
  animation:msgTypingFade .25s ease-out
}
.msg-typing-dots{display:inline-flex;gap:2px;margin-left:2px;vertical-align:baseline}
.msg-typing-dots span{
  width:4px;height:4px;border-radius:50%;background:#a78bfa;display:inline-block;
  animation:msgTypingBounce 1.2s ease-in-out infinite
}
.msg-typing-dots span:nth-child(2){animation-delay:.15s}
.msg-typing-dots span:nth-child(3){animation-delay:.3s}
@keyframes msgTypingBounce{
  0%,60%,100%{transform:translateY(0);opacity:.45}
  30%{transform:translateY(-3px);opacity:1}
}
@keyframes msgTypingFade{from{opacity:0}to{opacity:1}}
.msg-back-btn{flex:0 0 auto;min-height:34px!important;padding:6px 10px!important}
.messages-scroll{
  overflow-y:auto;padding:16px 18px;display:flex;flex-direction:column;justify-content:flex-end;gap:10px;min-height:0;
  overflow-anchor:none;
  background-image:radial-gradient(rgba(255,255,255,.03) 1px,transparent 1px);
  background-size:18px 18px
}
.msg-row{display:flex;width:100%}.msg-row.mine{justify-content:flex-end}.msg-row.theirs{justify-content:flex-start}
.msg-bubble{max-width:min(75%,480px);padding:10px 14px;border-radius:18px;display:grid;gap:4px}
.msg-bubble.mine{
  background:linear-gradient(135deg,#7c3aed,#6366f1);
  border-bottom-right-radius:6px;color:#fff;box-shadow:0 8px 24px rgba(99,102,241,.25)
}
.msg-bubble.theirs{
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.1);
  border-bottom-left-radius:6px
}
.msg-body{white-space:pre-wrap;word-break:break-word;font-size:.9rem;line-height:1.45}
.msg-meta{display:flex;align-items:center;justify-content:flex-end;gap:6px;font-size:.65rem;opacity:.88}
.msg-bubble.mine .msg-meta{color:rgba(255,255,255,.85)}
.msg-status.read{font-weight:800;font-size:.62rem;text-transform:uppercase;letter-spacing:.04em}
.msg-status.sent{opacity:.75}
.messages-compose{
  display:flex;gap:10px;padding:12px 14px;border-top:1px solid var(--line);
  background:rgba(0,0,0,.25);align-items:flex-end
}
.messages-compose textarea{
  flex:1;resize:none;min-height:44px;max-height:120px;padding:11px 14px;border-radius:22px;
  border:1px solid var(--line);background:rgba(5,8,18,.85);color:inherit;font:inherit
}
.msg-send-btn{
  flex:0 0 44px;width:44px;height:44px;min-height:44px!important;border-radius:50%!important;
  padding:0!important;display:flex;align-items:center;justify-content:center;font-size:1rem
}
.messages-thread-hint,.messages-loading,.messages-empty{padding:14px 16px;text-align:center}
.online-user{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px}
.online-user:hover{background:rgba(255,255,255,.04)}
.online-user-main{flex:1;min-width:0}
.online-user-actions{flex-shrink:0}
.online-msg-btn{font-size:.72rem;padding:4px 8px;white-space:nowrap;min-height:30px!important}
@media(max-width:899px){
  .messages-app{grid-template-columns:1fr;max-height:none;min-height:min(70vh,600px)}
  .messages-sidebar.hidden-mobile,.messages-thread.hidden-mobile{display:none!important}
  .messages-sidebar::before{display:none}
}
