:root{--black:#070807;--panel:#0c1116;--panel2:#101821;--line:#293641;--muted:#91a5b7;--blue:#8bbbea;--gold:#e2ad3c;--white:#f4f6f8}
*{box-sizing:border-box}body{margin:0;background:var(--black);color:var(--white);font-family:Arial,Helvetica,sans-serif;min-height:100vh}.site-header{height:96px;border-bottom:1px solid #252a2f;display:flex;align-items:center;justify-content:space-between;padding:0 40px;gap:40px;background:#060706}.brand{color:#fff;text-decoration:none;display:flex;flex-direction:column;line-height:.8}.brand strong{font-size:28px;letter-spacing:-1px}.brand span{font-size:9px;color:#9c9c9c;letter-spacing:2px;font-weight:800;margin-top:10px}.site-header nav{display:flex;align-items:center;gap:38px}.site-header nav a{color:#aaa;text-decoration:none;font-weight:900;font-size:13px;letter-spacing:2px;white-space:nowrap}.site-header nav a:hover,.site-header nav a.active{color:#fff}main{padding:0 38px 70px}.hero{padding:100px 0 70px;border-bottom:1px solid #292c2c}.eyebrow{color:var(--gold);font-size:13px;letter-spacing:4px;font-weight:900;margin:0 0 18px}.hero h1{font-size:104px;line-height:.82;letter-spacing:-6px;margin:0;max-width:850px}.hero h1 span{display:block;color:var(--gold)}.intro{color:#a9b9c7;font-size:20px;line-height:1.65;max-width:760px;margin:40px 0 0}.directory{margin-top:68px}.game-tabs{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);margin-bottom:48px}.game-tab{appearance:none;border:0;border-right:1px solid var(--line);background:#090c0f;color:#8494a2;display:flex;gap:25px;align-items:center;text-align:left;padding:27px 30px;cursor:pointer;font-size:22px;font-weight:900}.game-tab:last-child{border-right:0}.game-tab small{display:block;color:#758797;font-size:9px;letter-spacing:2px;margin-bottom:7px}.game-tab.active{background:var(--panel2);color:#fff;box-shadow:inset 0 -3px var(--gold)}.game-tab.active small{color:var(--gold)}.tab-number{font-size:38px;color:#343b42}.game-tab.active .tab-number{color:var(--gold)}.directory-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;margin-bottom:30px}.directory-heading h2{font-size:42px;margin:0;letter-spacing:-1px}.network-stats{display:flex;border:1px solid var(--line)}.network-stats div{min-width:135px;padding:16px 24px;border-right:1px solid var(--line);text-align:center}.network-stats div:last-child{border:0}.network-stats strong{display:block;font-size:26px;color:var(--gold)}.network-stats span{font-size:8px;letter-spacing:2px;font-weight:900;color:#8093a5}.toolbar{display:flex;gap:12px;align-items:stretch;margin-bottom:12px}.search{border:1px solid var(--line);background:#080d11;padding:10px 16px;display:flex;align-items:center;gap:15px;flex:1}.search span{font-size:9px;color:var(--blue);font-weight:900;letter-spacing:2px}.search input{width:100%;border:0;outline:0;background:transparent;color:#fff;font-size:15px;padding:7px}.populated,.refresh{border:1px solid var(--line);background:#0b1117;color:#a9bac8;padding:0 20px;display:flex;align-items:center;gap:10px;font-size:10px;font-weight:900;letter-spacing:1px}.populated{cursor:pointer}.populated input{accent-color:var(--gold)}.refresh{cursor:pointer}.refresh:hover{border-color:var(--gold);color:var(--gold)}.update-status{font-size:9px;letter-spacing:1.5px;color:#687b8b;text-align:right;min-height:12px}.table-wrap{border:1px solid var(--line);overflow-x:auto}table{width:100%;border-collapse:collapse;min-width:900px}th{text-align:left;color:#7792aa;font-size:9px;letter-spacing:2px;padding:15px 18px;border-bottom:1px solid var(--line);background:#0a1015}td{padding:18px;border-bottom:1px solid #202c35;color:#b7c7d4;font-size:13px}tr:last-child td{border-bottom:0}tbody tr{background:#0b1116}tbody tr:hover{background:#101a22}.server-name{font-size:15px;font-weight:800;color:#f2f5f7}.official{display:inline-block;margin-left:9px;padding:4px 6px;border:1px solid #85671f;color:var(--gold);font-size:7px;letter-spacing:1px;vertical-align:2px}.players{color:#fff;font-weight:800}.players strong{color:var(--gold)}.address{font-family:Consolas,monospace;color:#87a8c5;font-size:12px}.server-message{text-align:center;padding:58px 20px;color:#7d91a2;font-size:11px;font-weight:900;letter-spacing:2px}.server-message[hidden]{display:none}.source{display:block;color:#5e7283;font-size:8px;letter-spacing:1px;margin-top:5px;text-transform:uppercase}
@media(max-width:1050px){.site-header{height:auto;padding:25px 24px;align-items:flex-start}.site-header nav{gap:18px;flex-wrap:wrap;justify-content:flex-end}.hero h1{font-size:80px}.site-header nav a{font-size:10px}.directory-heading{align-items:flex-start}}
@media(max-width:720px){main{padding:0 18px 40px}.site-header{display:block}.site-header nav{margin-top:25px;justify-content:flex-start}.hero{padding:65px 0 50px}.hero h1{font-size:58px;letter-spacing:-3px}.intro{font-size:16px}.game-tabs{grid-template-columns:1fr}.game-tab{border-right:0;border-bottom:1px solid var(--line)}.game-tab:last-child{border-bottom:0}.directory-heading{display:block}.network-stats{margin-top:25px}.network-stats div{flex:1}.toolbar{flex-wrap:wrap}.search{flex-basis:100%;min-height:56px}.populated,.refresh{height:48px}.directory-heading h2{font-size:32px}}

/* Independent master-network directory */
.master-strip{display:flex;align-items:center;gap:20px;margin-top:35px;color:#64798a;font-size:8px;font-weight:900;letter-spacing:1.5px}.master-strip strong{color:#8cc9a5}.pulse{width:8px;height:8px;border-radius:50%;background:#55bf81;box-shadow:0 0 0 5px rgba(85,191,129,.1)}
.tab-title{flex:1}.tab-count{border:1px solid #2f3e49;padding:8px 10px;color:#7f95a6;font-size:12px}.game-tab.active .tab-count{border-color:#786022;color:var(--gold)}
.network-stats div{min-width:125px;padding-left:20px;padding-right:20px}
table{min-width:980px}tbody tr.is-offline{background:#090d11}tbody tr.is-offline td{color:#718391}.server-primary{display:flex;align-items:center;gap:12px}.status-dot{width:9px;height:9px;border-radius:50%;background:#52606b;box-shadow:0 0 0 4px rgba(82,96,107,.1);flex:none}.is-online .status-dot{background:#55bf81;box-shadow:0 0 0 4px rgba(85,191,129,.1)}.server-name{display:block}.freshness{display:block;color:#617789;font-size:8px;letter-spacing:1.2px;margin-top:6px}.is-online .freshness{color:#67a887}
.address{appearance:none;border:0;background:transparent;padding:0;text-align:left;cursor:pointer}.address:hover{color:var(--gold)}.address small{display:block;font-family:Arial,Helvetica,sans-serif;color:#526a7d;font-size:7px;letter-spacing:1px;margin-top:6px}
.server-name-line{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.server-name-line .official{margin-left:0;vertical-align:0;white-space:nowrap}
@media(max-width:720px){.master-strip{align-items:flex-start;flex-wrap:wrap}.network-stats{overflow-x:auto}.network-stats div{min-width:105px}.tab-count{margin-left:auto}}

/* Expandable live player roster */
.server-row{cursor:pointer;outline:none}.server-row:focus-visible{box-shadow:inset 3px 0 var(--gold)}.server-row.is-expanded{background:#111c24}.server-details-row td{padding:0;border-bottom:1px solid #344550;background:#081016}.server-details{margin:0 18px 20px;border:1px solid #31424f;border-left:3px solid var(--gold);background:#0a1219}.details-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:15px 18px;border-bottom:1px solid #263743;background:#0d1821}.details-heading div{display:flex;align-items:center;gap:15px}.details-heading span{font-size:8px;letter-spacing:1.8px;color:#7995ad;font-weight:900}.details-heading strong{font-size:13px;color:#f1f4f6}.player-table{padding:5px 18px 12px}.player-row{display:grid;grid-template-columns:minmax(190px,2fr) repeat(4,minmax(65px,1fr));gap:16px;align-items:center;min-height:40px;border-bottom:1px solid #1c2a34;color:#9fb1c0;font-size:12px}.player-row:last-child{border-bottom:0}.player-row strong{color:#f2f5f7;overflow-wrap:anywhere}.player-head{min-height:34px;color:#668096;font-size:8px;font-weight:900;letter-spacing:1.3px}.players-unavailable{padding:28px 18px;display:flex;flex-direction:column;gap:8px}.players-unavailable strong{color:#d7e0e7;font-size:11px;letter-spacing:1px}.players-unavailable span{color:#718696;font-size:12px;line-height:1.5}
@media(max-width:720px){.server-details{margin:0 10px 14px}.details-heading,.details-heading div{align-items:flex-start;flex-direction:column;gap:7px}.player-table{padding:5px 12px 12px;overflow-x:auto}.player-row{min-width:600px}}

/* Shareable server detail view */
.detail-actions{display:flex!important;align-items:center!important;flex-direction:row!important;gap:9px!important}.detail-actions button,.detail-actions a{border:1px solid #354958;background:#0a1219;color:#8db8dd;padding:9px 11px;text-decoration:none;font-size:8px;font-weight:900;letter-spacing:1px;cursor:pointer}.detail-actions button:hover,.detail-actions a:hover{border-color:var(--gold);color:var(--gold)}.server-overview{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:1px solid #263743}.server-overview div{padding:16px 18px;border-right:1px solid #263743;border-bottom:1px solid #263743}.server-overview div:nth-child(3n){border-right:0}.server-overview small,.rules-grid small,.team-strip small{display:block;color:#668198;font-size:7px;font-weight:900;letter-spacing:1.3px;margin-bottom:7px}.server-overview strong,.rules-grid strong{color:#dbe4ea;font-size:11px;overflow-wrap:anywhere}.rules-grid{display:grid;grid-template-columns:repeat(6,1fr);border-bottom:1px solid #263743}.rules-grid span{padding:13px 15px;border-right:1px solid #263743}.rules-grid span:last-child{border-right:0}.team-strip{display:flex;border-bottom:1px solid #263743}.team-strip>span{padding:13px 18px;border-right:1px solid #263743;min-width:150px}.team-strip strong{color:#f1f4f6}.team-strip em{display:block;color:#7d91a2;font-size:8px;font-style:normal;margin-top:5px}.roster-title{display:flex;justify-content:space-between;align-items:center;padding:16px 18px 6px}.roster-title span{color:var(--gold);font-size:8px;font-weight:900;letter-spacing:1.5px}.roster-title strong{color:#91a7b9;font-size:9px;letter-spacing:1px}
@media(max-width:900px){.server-overview{grid-template-columns:1fr 1fr}.server-overview div:nth-child(3n){border-right:1px solid #263743}.server-overview div:nth-child(2n){border-right:0}.rules-grid{grid-template-columns:repeat(3,1fr)}.rules-grid span:nth-child(3n){border-right:0}}
@media(max-width:560px){.server-overview{grid-template-columns:1fr}.server-overview div{border-right:0}.rules-grid{grid-template-columns:1fr 1fr}.rules-grid span:nth-child(3n){border-right:1px solid #263743}.rules-grid span:nth-child(2n){border-right:0}.detail-actions{align-items:flex-start!important;flex-wrap:wrap}.roster-title{align-items:flex-start;flex-direction:column;gap:7px}}
/* Battlefield scoreboard: Team 1 red, Team 2 blue */
.team-rosters{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:12px 18px 18px}
.team-panel{border:1px solid #293b48;background:#091117;min-width:0}
.team-panel>header{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:13px 15px;border-bottom:1px solid #293b48}
.team-panel>header div:last-child{text-align:right}
.team-panel>header small{display:block;font-size:7px;font-weight:900;letter-spacing:1.4px;margin-bottom:5px}
.team-panel>header strong{font-size:13px}
.team-panel>header b,.team-panel>header span{display:block;font-size:8px;letter-spacing:1px}
.team-panel>header span{color:#8a9cac;margin-top:5px}
.team-red{border-top:3px solid #c95757}
.team-red>header{background:rgba(143,45,45,.16)}
.team-red>header small,.team-red .team-player span{color:#df7777}
.team-blue{border-top:3px solid #4f87c8}
.team-blue>header{background:rgba(42,89,143,.16)}
.team-blue>header small,.team-blue .team-player span{color:#79aee8}
.team-player-head,.team-player{display:grid;grid-template-columns:minmax(135px,2fr) repeat(3,minmax(48px,.7fr));gap:10px;align-items:center;padding:10px 12px;border-bottom:1px solid #1d2a33}
.team-player:last-child{border-bottom:0}
.team-player-head{color:#657d90;font-size:7px;font-weight:900;letter-spacing:1px}
.team-player{font-size:11px;color:#9caebb}
.team-player strong{color:#eef2f5;overflow-wrap:anywhere}
.empty-team{margin:0;padding:24px 12px;color:#627687;font-size:9px;letter-spacing:1px}
.neutral-roster{margin:0 18px 18px;border:1px solid #33414b;background:#0a1015}
.neutral-roster>header{display:flex;justify-content:space-between;padding:12px 14px;border-bottom:1px solid #293741;color:#9baab6;font-size:9px;letter-spacing:1px}
@media(max-width:900px){.team-rosters{grid-template-columns:1fr}}
@media(max-width:560px){.team-rosters{padding:10px}.team-player-list{overflow-x:auto}.team-player-head,.team-player{min-width:520px}.neutral-roster{margin:0 10px 14px}}
