.public-roster-page{background:#050911;color:#f7f8fb}
.public-roster-page .container{width:90%;max-width:none}
.public-roster-page .site-header{height:82px;padding-inline:5%;background:rgba(5,9,17,.82);border-color:rgba(255,255,255,.075);backdrop-filter:blur(18px)}
.public-roster-page .brand{width:192px}.public-roster-page .main-nav{gap:34px}.public-roster-page .header-join{min-width:142px;margin-left:20px}
.roster-main{min-height:100vh}.roster-hero{position:relative;padding:154px 0 74px;overflow:hidden;background:linear-gradient(90deg,rgba(4,8,14,.99),rgba(5,9,16,.84) 44%,rgba(5,9,16,.35)),url('../images/hero-city-v2.jpg') right 46%/cover no-repeat;border-bottom:1px solid var(--line)}
.roster-hero:after{content:"";position:absolute;right:7%;top:105px;width:420px;height:260px;border:1px solid rgba(255,159,26,.22);border-radius:50%;box-shadow:0 0 0 25px rgba(255,159,26,.025),0 0 0 50px rgba(108,99,255,.025)}
.roster-hero-inner{position:relative;z-index:2;display:flex;align-items:flex-end;justify-content:space-between;gap:60px}
.roster-hero-inner>div:first-child{max-width:760px}.roster-hero h1{margin:15px 0 20px;font-size:clamp(3.7rem,5vw,6rem);line-height:.94;letter-spacing:-.06em}.roster-hero h1 em{color:var(--orange);font-style:normal}.roster-hero p{max-width:650px;margin:0;color:#aab4c5;font-size:1rem}
.roster-hero-stat{position:relative;z-index:2;display:grid;min-width:235px;padding:22px;border:1px solid rgba(255,255,255,.12);border-radius:17px;background:rgba(10,16,28,.88);box-shadow:var(--shadow);backdrop-filter:blur(14px)}.roster-hero-stat strong{color:var(--orange);font-size:2.7rem;line-height:1}.roster-hero-stat span{margin-top:5px;font-weight:850}.roster-hero-stat small{margin-top:11px;color:var(--muted)}
.roster-content{padding:62px 0 95px}.roster-heading{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:20px}.roster-heading h2{margin:5px 0 2px;font-size:2.2rem}.roster-heading p{margin:0;color:var(--muted)}
.roster-filters{display:grid;grid-template-columns:1.55fr .85fr .85fr auto auto;align-items:end;gap:11px;margin-bottom:25px;padding:16px;border:1px solid var(--line);border-radius:17px;background:#0c131f}.roster-filters label{display:grid;gap:7px}.roster-filters label>span{color:#8f9aac;font-size:.61rem;font-weight:850;text-transform:uppercase;letter-spacing:.06em}.roster-filters input,.roster-filters select{width:100%;height:46px;padding:0 13px;border:1px solid rgba(255,255,255,.1);border-radius:10px;background:#080d16;color:#fff;outline:none}.roster-filters input:focus,.roster-filters select:focus{border-color:rgba(255,159,26,.55)}
.roster-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.roster-card{--class-color:#9da7b8;position:relative;display:flex;flex-direction:column;min-height:315px;padding:21px;border:1px solid rgba(255,255,255,.09);border-radius:18px;background:radial-gradient(circle at 90% 0,color-mix(in srgb,var(--class-color) 12%,transparent),transparent 35%),linear-gradient(145deg,#0e1522,#0a101a);color:#fff;text-decoration:none;transition:.22s;overflow:hidden}.roster-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--class-color)}.roster-card:hover{transform:translateY(-4px);border-color:color-mix(in srgb,var(--class-color) 48%,transparent);box-shadow:0 22px 55px rgba(0,0,0,.28)}
.roster-class-E{--class-color:#ffd35b}.roster-class-M{--class-color:#57dda1}.roster-class-A{--class-color:#69abff}.roster-class-T{--class-color:#a7b1c0}.roster-class-F{--class-color:#df665e}.roster-class-S{--class-color:#ff4b68}.roster-card.is-blacklisted{background:repeating-linear-gradient(135deg,rgba(255,50,80,.045) 0 12px,transparent 12px 26px),#150d14}
.roster-card-top{display:flex;justify-content:space-between;align-items:flex-start}.roster-classification{display:inline-flex;align-items:center;gap:8px;color:var(--class-color);font-size:.68rem;font-weight:850}.roster-classification b{display:grid;place-items:center;width:31px;height:31px;border:1px solid color-mix(in srgb,var(--class-color) 42%,transparent);border-radius:9px;background:color-mix(in srgb,var(--class-color) 10%,transparent);font-size:.95rem}.roster-card-arrow{color:var(--muted);font-size:1.15rem}
.roster-card-person{display:flex;align-items:center;gap:14px;margin:25px 0 22px}.roster-card-person .public-profile-avatar{width:64px;height:64px;flex:none;background:linear-gradient(145deg,var(--class-color),color-mix(in srgb,var(--class-color) 55%,#111));color:#080b12}.roster-card-person h3{margin:0 0 4px;font-size:1.25rem}.roster-card-person p{margin:0;color:var(--muted);font-size:.7rem}
.roster-card dl{display:grid;grid-template-columns:1.45fr .45fr .75fr;gap:8px;margin:0;padding:13px 0;border-block:1px solid rgba(255,255,255,.065)}.roster-card dl>div{min-width:0}.roster-card dt{color:#7e899b;font-size:.54rem;text-transform:uppercase}.roster-card dd{margin:4px 0 0;font-size:.65rem;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.roster-card-cta{display:flex;justify-content:space-between;align-items:center;margin-top:auto;padding-top:16px;color:#c4ccd8;font-size:.68rem;font-weight:800}.roster-card-cta b{color:var(--class-color);font-size:1rem}
.roster-empty{grid-column:1/-1;padding:70px;border:1px dashed var(--line);border-radius:18px;text-align:center}.roster-empty p{margin:5px 0 0;color:var(--muted)}
.roster-pagination{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:35px;padding-top:24px;border-top:1px solid var(--line)}.roster-pagination a{text-decoration:none}.page-direction{display:inline-flex;align-items:center;justify-content:center;min-width:120px;height:42px;border:1px solid var(--line);border-radius:10px;color:#c8cfda;font-size:.7rem;font-weight:850}.page-direction:hover{border-color:rgba(255,159,26,.4);color:#fff}.page-direction.is-disabled{opacity:.32;pointer-events:none}.page-numbers{display:flex;align-items:center;gap:7px}.page-numbers a{display:grid;place-items:center;width:39px;height:39px;border:1px solid var(--line);border-radius:10px;color:#aab3c1;font-size:.72rem;font-weight:850}.page-numbers a:hover,.page-numbers a.active{border-color:var(--orange);background:var(--orange);color:#171009}.page-numbers span{color:var(--muted)}
.roster-footer{padding:0 0 20px}.roster-footer .footer-bottom{margin-top:0}
@media(max-width:1150px){.roster-grid{grid-template-columns:repeat(2,1fr)}.roster-filters{grid-template-columns:1fr 1fr}.roster-search{grid-column:1/-1}.roster-hero:after{opacity:.35}.public-roster-page .main-nav{gap:18px}}
@media(max-width:720px){.public-roster-page .container{width:calc(100% - 28px)}.public-roster-page .site-header{padding-inline:14px}.roster-hero{padding:125px 0 48px}.roster-hero-inner{align-items:flex-start;flex-direction:column}.roster-hero h1{font-size:3.3rem}.roster-hero-stat{width:100%}.roster-filters,.roster-grid{grid-template-columns:1fr}.roster-search{grid-column:auto}.roster-pagination{flex-wrap:wrap}.page-numbers{order:-1;width:100%;justify-content:center}.page-direction{flex:1}.roster-card{min-height:300px}}

/* Annuaire multi-serveurs V2 */
.roster-filters{grid-template-columns:1.35fr .72fr .72fr .72fr auto auto}
.roster-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.roster-card-top{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px}
.roster-service{display:inline-flex;width:max-content;padding:6px 10px;border:1px solid rgba(255,159,26,.24);border-radius:999px;background:rgba(255,159,26,.08);color:#ffb541;font-size:.6rem;font-weight:950;text-transform:uppercase;letter-spacing:.07em}
.service-militaryrp{border-color:rgba(73,221,145,.25);background:rgba(73,221,145,.08);color:#58e2a0}
.roster-classification{justify-self:start}
.roster-card dl{grid-template-columns:1fr 1fr}
.roster-card dl>div{padding:5px 8px}.roster-card dl>div:nth-child(even){border-left:1px solid rgba(255,255,255,.055)}
.roster-card dd.safe{color:#56dfa0}.roster-card dd.danger{color:#ff6078}
@media(max-width:1250px){.roster-filters{grid-template-columns:1fr 1fr 1fr}.roster-search{grid-column:1/-1}}
@media(max-width:780px){.roster-filters,.roster-grid{grid-template-columns:1fr}.roster-search{grid-column:auto}}

/* Cartes premium V3 */
.roster-content{max-width:1750px}
.roster-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:17px}
.roster-card{min-height:335px;padding:22px 22px 18px;border-color:rgba(255,255,255,.1);background:linear-gradient(150deg,#101826 0%,#0a111c 72%);box-shadow:0 18px 55px rgba(0,0,0,.18)}
.roster-card:before{width:100%;height:3px;right:0;bottom:auto;background:linear-gradient(90deg,var(--class-color),transparent 78%)}
.roster-card:after{content:attr(data-class);position:absolute;z-index:0;right:-3px;top:25px;color:color-mix(in srgb,var(--class-color) 6%,transparent);font-size:9.5rem;font-weight:950;line-height:1;pointer-events:none}
.roster-card>*{position:relative;z-index:1}
.roster-card.is-blacklisted{border-color:rgba(255,75,104,.28);background:radial-gradient(circle at 100% 0,rgba(255,55,87,.11),transparent 42%),linear-gradient(150deg,#15101a,#0b111c 72%)}
.roster-card.is-blacklisted:before{background:linear-gradient(90deg,#ff4967,rgba(255,73,103,.05))}
.roster-card-top{grid-template-columns:auto auto 1fr}.roster-card-arrow{justify-self:end;display:grid;place-items:center;width:31px;height:31px;border:1px solid rgba(255,255,255,.1);border-radius:9px;background:rgba(255,255,255,.025)}
.roster-classification{gap:6px}.roster-classification b{width:29px;height:29px}.roster-service{padding:6px 9px}
.roster-card-person{margin:28px 0 23px}.roster-card-person .public-profile-avatar{width:72px;height:72px;border-radius:21px;font-size:1.65rem;box-shadow:0 12px 28px color-mix(in srgb,var(--class-color) 14%,transparent)}.roster-card-person h3{font-size:1.35rem}.roster-card-person p{font-size:.72rem}
.roster-card dl{gap:0;padding:12px;border:1px solid rgba(255,255,255,.06);border-radius:12px;background:rgba(2,6,12,.2)}.roster-card dl>div{padding:7px 9px}.roster-card dl>div:nth-child(even){border-left:1px solid rgba(255,255,255,.06)}.roster-card dt{font-size:.52rem}.roster-card dd{font-size:.68rem}
.roster-card-cta{margin-top:15px;padding:0;border:0}.roster-card-cta>span{color:#d9dee8}.roster-card-cta>b{display:grid;place-items:center;width:37px;height:37px;border-radius:10px;background:color-mix(in srgb,var(--class-color) 12%,transparent);color:var(--class-color)}
.roster-card:hover{transform:translateY(-6px);box-shadow:0 28px 70px rgba(0,0,0,.32)}
@media(max-width:1500px){.roster-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:800px){.roster-grid{grid-template-columns:1fr}.roster-card{min-height:325px}}
