.servers-page {
    background:
        radial-gradient(
            circle at 84% 10%,
            rgba(42,51,42,.18),
            transparent 28%
        ),
        #080B08;
}


/* =========================================
   HERO
========================================= */

.servers-hero {
    position: relative;

    min-height: 470px;

    display: flex;
    align-items: flex-end;

    overflow: hidden;

    border-bottom:
        1px solid var(--line-soft);

    background:
        linear-gradient(
            90deg,
            rgba(8,11,8,.98),
            rgba(8,11,8,.80) 46%,
            rgba(8,11,8,.40)
        ),
        linear-gradient(
            0deg,
            #080B08,
            transparent 55%
        ),
        url("/assets/images/heros-hllv.png")
        center 45% / cover no-repeat;
}

.servers-hero::after {
    content: "OPS";

    position: absolute;

    right: -30px;
    bottom: -60px;

    color:
        rgba(232,228,214,.025);

    font-size:
        clamp(180px, 27vw, 410px);

    font-weight: 900;

    line-height: .8;

    letter-spacing: -.08em;
}

.servers-hero-inner {
    position: relative;
    z-index: 2;

    padding-top: 100px;
    padding-bottom: 55px;
}

.servers-kicker {
    display: flex;
    align-items: center;

    gap: 13px;

    color: var(--muted);

    font-size: 11px;
    font-weight: 800;

    letter-spacing: 2.2px;
}

.servers-kicker span {
    width: 34px;
    height: 1px;

    background:
        var(--orange);
}

.servers-title {
    position: relative;

    margin-top: 18px;
}

.servers-title h1 {
    margin: 0;

    color: var(--ivory);

    font-size:
        clamp(78px, 11vw, 155px);

    font-weight: 900;

    line-height: .78;

    letter-spacing: -.065em;
}

.servers-title-outline {
    position: absolute;

    left: 54%;
    top: -50px;

    z-index: -1;

    color: transparent;

    -webkit-text-stroke:
        1px rgba(232,228,214,.10);

    font-size:
        clamp(150px, 22vw, 320px);

    font-weight: 900;

    letter-spacing: -.08em;
}

.servers-intro {
    margin-top: 48px;

    padding-top: 20px;

    border-top:
        1px solid var(--line);

    display: flex;

    justify-content: space-between;

    gap: 40px;
}

.servers-intro p {
    max-width: 560px;

    margin: 0;

    color: var(--muted);

    font-size: 14px;

    line-height: 1.7;
}

#serversGeneratedAt {
    color: var(--ash);

    font-size: 11px;

    letter-spacing: 1.7px;
}


/* =========================================
   NETWORK
========================================= */

.servers-network {
    border-bottom:
        1px solid var(--line-soft);
}

.servers-network-grid {
    display: grid;

    grid-template-columns:
        repeat(4, 1fr);
}

.servers-network-stat {
    min-height: 100px;

    padding: 25px 20px;

    border-right:
        1px solid var(--line-soft);
}

.servers-network-stat:last-child {
    border-right: 0;
}

.servers-network-stat span {
    display: block;

    color: var(--ash);

    font-size: 11px;

    letter-spacing: 1.6px;
}

.servers-network-stat strong {
    display: block;

    margin-top: 11px;

    color: var(--ivory);

    font-size: 18px;
}


/* =========================================
   SECTIONS
========================================= */

.servers-operation-section,
.servers-roster-section,
.servers-history-section {
    padding:
        90px 0;
}

.servers-roster-section,
.servers-history-section {
    padding-top: 35px;
}

.servers-section-heading {
    margin-bottom: 42px;

    display: flex;

    gap: 22px;

    align-items: flex-start;
}

.servers-section-heading
.section-number {
    color: var(--orange);

    font-size: 12px;
}

.servers-section-heading h2 {
    margin: 7px 0 0;

    color: var(--ivory);

    font-size:
        clamp(42px, 5vw, 70px);

    line-height: .88;

    letter-spacing: -.045em;
}


/* =========================================
   SERVERS
========================================= */

.servers-list {
    border-top:
        1px solid var(--line);

    transition:
        opacity .22s ease,
        transform .22s ease;
}

.servers-list.is-loading {
    opacity: .4;

    transform:
        translateY(3px);
}

.server-operation {
    position: relative;

    padding:
        34px 0 38px;

    border-bottom:
        1px solid var(--line);

    display: grid;

    grid-template-columns:
        155px
        minmax(300px, 1.8fr)
        1fr;

    gap: 38px;
}

.server-operation-status {
    display: flex;
    align-items: flex-start;

    gap: 10px;
}

.server-live-dot {
    width: 8px;
    height: 8px;

    margin-top: 3px;

    border-radius: 50%;

    background: var(--green);

    animation:
        server-live-pulse
        1.8s ease-out infinite;
}

.server-live-dot.offline {
    background: #A34A43;

    animation: none;
}

@keyframes server-live-pulse {

    0% {
        box-shadow:
            0 0 0 0
            rgba(133,158,103,.50);
    }

    70% {
        box-shadow:
            0 0 0 8px
            rgba(133,158,103,0);
    }

    100% {
        box-shadow:
            0 0 0 0
            rgba(133,158,103,0);
    }

}

.server-operation-label {
    color: var(--orange);

    font-size: 12px;
    font-weight: 900;

    letter-spacing: 1.5px;
}

.server-operation-state {
    margin-top: 6px;

    color: var(--ash);

    font-size: 11px;

    letter-spacing: 1.3px;
}

.server-map h3 {
    margin: 0;

    color: var(--ivory);

    font-size:
        clamp(25px, 3vw, 44px);

    line-height: .92;

    letter-spacing: -.035em;
}

.server-name {
    margin-top: 9px;

    color: var(--ash);

    font-size: 11px;

    letter-spacing: 1px;
}

.server-map-meta {
    margin-top: 24px;

    display: flex;
    flex-wrap: wrap;

    gap: 8px;
}

.server-tag {
    padding: 7px 9px;

    border:
        1px solid var(--line-soft);

    color: var(--muted);

    font-size: 11px;

    font-weight: 800;

    letter-spacing: 1.1px;
}

.server-next {
    margin-top: 22px;

    color: var(--ash);

    font-size: 11px;

    line-height: 1.6;

    letter-spacing: .8px;
}

.server-next strong {
    color: var(--muted);
}

.server-operation-side {
    display: flex;

    flex-direction: column;

    justify-content: space-between;
}

.server-population {
    display: flex;

    justify-content: space-between;

    align-items: flex-end;
}

.server-population strong {
    color: var(--ivory);

    font-size: 38px;

    line-height: 1;
}

.server-population span {
    color: var(--ash);

    font-size: 11px;

    letter-spacing: 1.2px;
}

.server-population-track {
    height: 3px;

    margin-top: 13px;

    background:
        rgba(232,228,214,.08);

    overflow: hidden;
}

.server-population-fill {
    height: 100%;

    background: var(--orange);

    transition:
        width .4s ease;
}

.server-score {
    margin-top: 31px;

    display: grid;

    grid-template-columns:
        minmax(40px, 1fr)
        auto
        24px
        auto
        minmax(40px, 1fr);

    align-items: center;

    column-gap: 14px;

    width: 100%;
}

.server-score-team {
    color: var(--ash);

    font-size: 11px;

    font-weight: 700;

    letter-spacing: 1px;

    white-space: nowrap;
}

.server-score-team:first-child {
    text-align: left;
}

.server-score-team.right {
    text-align: right;
}

.server-score-value {
    color: var(--ivory);

    font-size: 30px;

    font-weight: 900;

    line-height: 1;

    text-align: center;
}

.server-score-divider {
    color: var(--ash);

    text-align: center;

    font-size: 12px;
}

.server-time {
    margin-top: 25px;
}

.server-time-head {
    display: flex;

    justify-content: space-between;

    color: var(--ash);

    font-size: 11px;

    letter-spacing: 1.2px;
}

.server-time-track {
    height: 2px;

    margin-top: 10px;

    background:
        rgba(232,228,214,.08);

    overflow: hidden;
}

.server-time-fill {
    height: 100%;

    background: var(--green);

    transition:
        width .4s ease;
}


/* =========================================
   TABS
========================================= */

.server-tabs {
    margin-bottom: 18px;

    display: flex;

    gap: 4px;

    border-top:
        1px solid var(--line-soft);

    padding-top: 20px;
}

.server-tab {
    padding: 11px 14px;

    appearance: none;

    background: transparent;

    border:
        1px solid transparent;

    color: var(--muted);

    cursor: pointer;

    font-family: inherit;

    font-size: 12px;
    font-weight: 800;

    letter-spacing: 1.1px;
}

.server-tab.active {
    color: var(--ivory);

    border-color:
        rgba(198,100,63,.42);

    background:
        rgba(198,100,63,.08);
}

.server-tab.active::before {
    content: "";

    display: inline-block;

    width: 4px;
    height: 4px;

    margin-right: 8px;

    background: var(--orange);
}


/* =========================================
   ROSTER
========================================= */

.server-roster {
    min-height: 150px;

    overflow-x: auto;

    border-top:
        1px solid var(--line);

    transition:
        opacity .2s ease;
}

.server-player-row {
    min-height: 65px;

    min-width: 1180px;

    display: grid;

    grid-template-columns:
        minmax(220px, 1.8fr)
        .45fr
        .62fr
        .62fr
        .62fr
        .68fr
        .68fr
        .68fr
        .68fr
        .72fr
        auto;

    align-items: center;

    gap: 18px;

    padding:
        10px 12px;

    border-bottom:
        1px solid var(--line-soft);

    text-decoration: none;

    transition:
        background .16s ease;
}

.server-player-row:hover {
    background:
        rgba(42,51,42,.17);
}

.server-player-name {
    display: flex;

    align-items: center;

    gap: 10px;

    min-width: 0;
}


.server-player-team-logo {
    width: 24px;
    height: 24px;

    flex:
        0 0 24px;

    object-fit:
        contain;
}


.server-player-name strong {
    overflow: hidden;

    color: var(--ivory);

    text-overflow: ellipsis;

    white-space: nowrap;

    font-size: 12px;
}

.server-player-platform {
    margin-top: 3px;

    color: var(--ash);

    font-size: 11px;

    letter-spacing: 1px;
}

.server-player-stat {
    text-align: right;
}

.server-player-stat span {
    display: block;

    color: var(--ash);

    font-size: 11px;

    letter-spacing: 1px;
}

.server-player-stat strong {
    display: block;

    margin-top: 5px;

    color: var(--muted);

    font-size: 12px;
}

.server-player-open {
    color: var(--orange);
}


/* =========================================
   HISTORY
========================================= */

.server-history-grid {
    display: grid;

    grid-template-columns:
        repeat(2, 1fr);

    gap: 1px;

    background:
        var(--line-soft);

    border-top:
        1px solid var(--line);

    border-bottom:
        1px solid var(--line);
}

.server-history-panel {
    padding: 28px;

    background: #080B08;
}

.server-history-title {
    margin-bottom: 20px;

    color: var(--ash);

    font-size: 11px;
    font-weight: 800;

    letter-spacing: 1.5px;
}

.server-history-row {
    min-height: 59px;

    display: grid;

    grid-template-columns:
        65px 1fr auto;

    align-items: center;

    gap: 15px;

    border-bottom:
        1px solid var(--line-soft);
}

.server-history-date {
    color: var(--ash);

    font-size: 11px;
}

.server-history-map strong {
    display: block;

    color: var(--ivory);

    font-size: 12px;
}

.server-history-map span {
    display: block;

    margin-top: 4px;

    color: var(--ash);

    font-size: 11px;

    letter-spacing: .8px;
}

.server-history-score {
    color: var(--orange);

    font-size: 12px;

    font-weight: 900;
}


/* =========================================
   EMPTY / LOADING
========================================= */

.servers-loading,
.server-empty {
    padding:
        70px 20px;

    color: var(--ash);

    text-align: center;

    font-size: 12px;

    letter-spacing: 1.7px;
}


/* =========================================
   RESPONSIVE
========================================= */

@media (max-width: 950px) {

    .servers-title-outline {
        display: none;
    }

    .servers-network-grid {
        grid-template-columns:
            repeat(2, 1fr);
    }

    .server-operation {
        grid-template-columns:
            120px 1fr;

    }

    .server-operation-side {
        grid-column:
            1 / -1;
    }

    .server-history-grid {
        grid-template-columns:
            1fr;
    }

    .server-player-row {
        grid-template-columns:
            minmax(200px, 2fr)
            repeat(3, 1fr)
            auto;
    }

    .server-player-stat:nth-of-type(n+4) {
        display: none;
    }

}


@media (max-width: 650px) {

    .servers-intro {
        flex-direction: column;
    }

    .servers-network-grid {
        grid-template-columns:
            1fr 1fr;
    }

    .server-operation {
        grid-template-columns:
            1fr;

        gap: 20px;
    }

    .server-player-row {
        grid-template-columns:
            minmax(170px, 1fr)
            .6fr
            .6fr
            auto;
    }

    .server-player-stat:nth-of-type(n+3) {
        display: none;
    }

}


/* =========================================
   FACTION FLAGS
========================================= */

.server-score-team {
    display: flex;
    align-items: center;
    gap: 9px;

    min-width: 0;

    white-space: nowrap;
}

.server-score-team:first-child {
    justify-content: flex-start;
}

.server-score-team.right {
    justify-content: flex-end;
}

.server-faction-flag {
    display: block;

    width: 28px;
    height: 18px;

    flex: 0 0 auto;

    object-fit: cover;

    border:
        1px solid rgba(232,228,214,.16);

    box-shadow:
        0 2px 8px rgba(0,0,0,.25);
}

@media (max-width: 650px) {

    .server-faction-flag {
        width: 24px;
        height: 16px;
    }

}

/* Override drapeaux factions */
.server-faction-flag {
    display: block;
    width: 42px;
    height: auto;
    aspect-ratio: 3 / 2;
    object-fit: contain;
    border: none !important;
    box-shadow: none !important;
    background: transparent;
}

.server-score-team {
    gap: 12px;
}

@media (max-width: 650px) {
    .server-faction-flag {
        width: 34px;
    }
}


/* =========================================
   CAPTURE / FRONT LINE
========================================= */

.server-capture {
    margin-top: 28px;
}

.server-capture-head {
    margin-bottom: 10px;

    display: flex;
    align-items: center;
    justify-content: space-between;

    color: var(--ash);

    font-size: 11px;
    font-weight: 800;

    letter-spacing: 1.3px;
}

.server-capture-factions {
    margin-bottom: 8px;

    display: grid;

    grid-template-columns:
        1fr 1fr;

    align-items: center;

    gap: 18px;
}

.server-capture-factions > div {
    display: flex;
    align-items: center;

    gap: 8px;

    color: var(--muted);

    font-size: 11px;
    font-weight: 800;

    letter-spacing: 1px;
}

.server-capture-factions > div.right {
    justify-content: flex-end;
}

.server-capture-factions img {
    width: 28px;
    height: auto;

    display: block;

    object-fit: contain;
}

.server-capture-center {
    color: var(--ivory);

    font-size: 12px;
    font-weight: 900;

    letter-spacing: 2px;
}


.server-capture-track {
    width: 100%;
    height: 32px;

    display: flex;

    gap: 3px;

    overflow: hidden;
}


/* base secteur */

.server-cap-segment {
    position: relative;

    flex: 1 1 20%;

    min-width: 0;

    display: grid;
    place-items: center;

    background:
        rgba(232,228,214,.16);

    transition:
        background .35s ease,
        opacity .35s ease,
        transform .35s ease;
}


/* USA : pointe vers la droite */

.server-cap-segment.allies {
    background:
        #243B53;

    color:
        rgba(255,255,255,.92);

    clip-path:
        polygon(
            0 0,
            88% 0,
            100% 50%,
            88% 100%,
            0 100%,
            10% 50%
        );
}


/* NVA : pointe vers la gauche */

.server-cap-segment.axis {
    background:
        #7A2E2E;

    color:
        rgba(255,255,255,.92);

    clip-path:
        polygon(
            12% 0,
            100% 0,
            90% 50%,
            100% 100%,
            12% 100%,
            0 50%
        );
}


/* neutre */

.server-cap-segment.neutral {
    background:
        rgba(232,228,214,.72);

    clip-path:
        polygon(
            10% 0,
            90% 0,
            100% 50%,
            90% 100%,
            10% 100%,
            0 50%
        );
}


/* cas incohérent / secteur disputé */

.server-cap-segment.contested {
    color: white;

    background:
        linear-gradient(
            90deg,
            #243B53 0%,
            #243B53 48%,
            #7A2E2E 52%,
            #7A2E2E 100%
        );

    clip-path:
        polygon(
            10% 0,
            90% 0,
            100% 50%,
            90% 100%,
            10% 100%,
            0 50%
        );
}


.server-cap-lock {
    width: 14px;
    height: 14px;

    display: block;
}


/* petit éclairage du front */

.server-cap-segment.allies:last-of-type,
.server-cap-segment.axis:first-of-type {
    filter:
        brightness(1.06);
}


/* offensive : tous les chevrons vont
   visuellement dans le sens de l'attaque */

.server-capture.attack-left
.server-cap-segment {
    transform:
        scaleX(-1);
}

.server-capture.attack-left
.server-cap-lock {
    transform:
        scaleX(-1);
}


/* animation douce au rafraîchissement */

.server-capture-track {
    animation:
        server-capture-arrive
        .35s ease-out;
}

@keyframes server-capture-arrive {

    from {
        opacity: .55;
        transform: translateY(2px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }

}


@media (max-width: 650px) {

    .server-capture-track {
        height: 27px;
    }

    .server-cap-lock {
        width: 12px;
        height: 12px;
    }

    .server-capture-factions img {
        width: 24px;
    }

}


/* =========================================
   HLLV CONQUEST LIVE TRACKER
========================================= */

.server-cap-segment.unknown {
    color:
        rgba(232,228,214,.35);

    background:
        repeating-linear-gradient(
            135deg,
            rgba(232,228,214,.10) 0,
            rgba(232,228,214,.10) 5px,
            rgba(232,228,214,.04) 5px,
            rgba(232,228,214,.04) 10px
        );

    clip-path:
        polygon(
            10% 0,
            90% 0,
            100% 50%,
            90% 100%,
            10% 100%,
            0 50%
        );
}


.server-cap-segment.is-contested {
    box-shadow:
        inset 0 0 0 2px
        rgba(232,228,214,.9);
}


.server-cap-segment.under-attack::after {
    content: "";

    position: absolute;
    inset: 2px;

    pointer-events: none;

    border:
        1px solid
        rgba(232,228,214,.58);

    clip-path:
        inherit;
}


.server-cap-combat {
    position: relative;
    z-index: 2;

    width: 18px;
    height: 18px;

    display: block;

    object-fit: contain;
}


.server-capture-objective-labels {
    width: 100%;

    margin-top: 7px;

    display: grid;

    grid-template-columns:
        repeat(5, minmax(0, 1fr));

    gap: 3px;
}


.server-capture-objective {
    min-width: 0;

    text-align: center;
}


.server-capture-objective strong {
    display: block;

    color: var(--ivory);

    font-size: 10px;
    font-weight: 900;

    line-height: 1;

    letter-spacing: 1px;
}


.server-capture-objective span {
    margin-top: 4px;

    display: block;

    overflow: hidden;

    color: var(--ash);

    font-size: 10px;
    font-weight: 700;

    line-height: 1.2;

    letter-spacing: .35px;

    text-overflow: ellipsis;
    white-space: nowrap;
}


.server-capture-sync {
    margin-top: 8px;

    color: var(--ash);

    font-size: 11px;
    font-weight: 800;

    line-height: 1.4;

    letter-spacing: 1px;

    text-align: center;
}


@media (max-width: 650px) {

    .server-cap-combat {
        width: 15px;
        height: 15px;
    }

    .server-capture-objective span {
        display: none;
    }

    .server-capture-objective strong {
        font-size: 10px;
    }

    .server-capture-objective-labels {
        margin-top: 5px;
    }

}


/* =========================================================
   HLLV CONQUEST // TICKETS / MORALE
   ========================================================= */

.server-morale {
    margin-top: 18px;
    padding-top: 14px;

    border-top:
        1px solid rgba(232,228,214,.12);
}

.server-morale-head {
    margin-bottom: 9px;

    display: flex;
    align-items: center;
    justify-content: space-between;

    color: var(--ash);

    font-size: 11px;
    font-weight: 800;
    letter-spacing: 1.3px;
}

.server-morale-grid {
    display: grid;

    grid-template-columns:
        minmax(0, 1fr)
        minmax(0, 1fr);

    gap: 18px;
}

.server-morale-value {
    margin-bottom: 6px;

    display: flex;
    align-items: baseline;
    justify-content: space-between;

    gap: 8px;
}

.server-morale-value > span {
    color: var(--muted);

    font-size: 11px;
    font-weight: 900;
    letter-spacing: 1px;
}

.server-morale-value strong {
    color: var(--ivory);

    font-size: 13px;
    font-weight: 900;
    line-height: 1;
}

.server-morale-value small {
    color: var(--ash);

    font-size: 11px;
    font-weight: 700;
}

.server-morale-track {
    width: 100%;
    height: 6px;

    overflow: hidden;

    background:
        rgba(232,228,214,.10);
}

.server-morale-fill {
    width: 0;
    height: 100%;

    transition:
        width .45s ease;
}

.server-morale-team.allies
.server-morale-fill {
    background:
        #243B53;
}

.server-morale-team.axis
.server-morale-fill {
    background:
        #7A2E2E;
}


/* =========================================================
   MPX // SINGLE SERVER OPERATIONS V2
   ========================================================= */


/* ---------------------------------------------------------
   SERVEUR UNIQUE
--------------------------------------------------------- */

#serversList {
    grid-template-columns:
        minmax(0, 1fr) !important;
}

#serversList > * {
    width: 100%;
    max-width: none;
}


/* Le sélecteur de serveur n'a plus de raison d'être. */

.server-tabs {
    display: none;
}


/* ---------------------------------------------------------
   FICHE LIVE
--------------------------------------------------------- */

.server-map h3 {
    font-size:
        clamp(34px, 4vw, 58px);

    line-height: .92;
}

.server-name {
    margin-top: 12px;

    font-size: 12px;
}

.server-map-meta {
    margin-top: 26px;
}

.server-tag {
    padding:
        8px 11px;

    font-size: 11px;
}

.server-next {
    margin-top: 25px;

    font-size: 12px;
}

.server-population strong {
    font-size: 46px;
}

.server-population span {
    font-size: 11px;
}

.server-population-track {
    height: 5px;

    margin-top: 15px;
}

.server-score {
    margin-top: 36px;
}

.server-score-value {
    font-size: 36px;
}

.server-score-team {
    font-size: 11px;
}

.server-time {
    margin-top: 30px;
}

.server-time-track {
    height: 4px;

    margin-top: 12px;
}


/* ---------------------------------------------------------
   LIGNE DE FRONT
--------------------------------------------------------- */

.server-capture {
    margin-top: 42px;

    padding:
        25px
        28px
        28px;

    border-top:
        1px solid
        rgba(232,228,214,.14);

    border-bottom:
        1px solid
        rgba(232,228,214,.09);

    background:
        linear-gradient(
            180deg,
            rgba(232,228,214,.025),
            rgba(232,228,214,.008)
        );
}


/* En-tête ligne de front */

.server-capture-head {
    margin-bottom: 18px;

    font-size: 12px;

    letter-spacing: 1.4px;
}


/* USA / NVA */

.server-capture-factions {
    margin-bottom: 14px;

    gap: 30px;
}

.server-capture-factions > div {
    gap: 11px;

    font-size: 12px;

    letter-spacing: 1.1px;
}

.server-capture-factions img {
    width: 40px;
}

.server-capture-center {
    font-size: 14px;

    letter-spacing: 2.2px;
}


/* Barre principale */

.server-capture-track {
    height: 58px;

    gap: 5px;
}

.server-cap-lock {
    width: 21px;
    height: 21px;
}

.server-cap-combat {
    width: 27px;
    height: 27px;
}


/* Objectifs */

.server-capture-objective-labels {
    margin-top: 14px;

    gap: 7px;
}

.server-capture-objective {
    min-height: 58px;

    padding:
        8px
        7px
        0;

    border-top:
        1px solid
        rgba(232,228,214,.07);
}

.server-capture-objective strong {
    font-size: 13px;

    line-height: 1.1;

    letter-spacing: 1.3px;
}

.server-capture-objective span {
    margin-top: 7px;

    overflow: visible;

    font-size: 12px;
    font-weight: 700;

    line-height: 1.3;

    letter-spacing: .45px;

    text-overflow: clip;
    white-space: normal;
}


/* Tracker / identification */

.server-capture-sync {
    margin-top: 16px;

    padding-top: 12px;

    border-top:
        1px solid
        rgba(232,228,214,.06);

    font-size: 11px;

    letter-spacing: 1.2px;
}


/* Renforcer visuellement un secteur attaqué */

.server-cap-segment.under-attack::after {
    inset: 4px;

    border-width: 2px;
}

.server-cap-segment.is-contested {
    box-shadow:
        inset 0 0 0 3px
        rgba(232,228,214,.9);
}


/* ---------------------------------------------------------
   MORALE / TICKETS CONQUEST
--------------------------------------------------------- */

.server-morale {
    margin-top: 25px;

    padding-top: 20px;
}

.server-morale-head {
    margin-bottom: 13px;

    font-size: 12px;
}

.server-morale-grid {
    gap: 30px;
}

.server-morale-value > span {
    font-size: 11px;
}

.server-morale-value strong {
    font-size: 17px;
}

.server-morale-value small {
    font-size: 11px;
}


/* ---------------------------------------------------------
   JOUEURS CONNECTÉS
--------------------------------------------------------- */

.server-roster {
    min-height: 190px;
}

.server-player-row {
    min-height: 76px;
}


/* ---------------------------------------------------------
   DERNIÈRES OPÉRATIONS
   Une seule colonne, toute la largeur.
--------------------------------------------------------- */

.server-history-grid {
    display: grid;

    grid-template-columns:
        minmax(0, 1fr);

    gap: 0;

    background: transparent;
}

.server-history-panel {
    width: 100%;

    padding:
        34px
        38px;

    border-top:
        1px solid var(--line);

    border-bottom:
        1px solid var(--line);

    background:
        linear-gradient(
            90deg,
            rgba(232,228,214,.018),
            rgba(232,228,214,0)
        );
}

.server-history-title {
    margin-bottom: 24px;

    font-size: 12px;

    letter-spacing: 1.6px;
}

.server-history-row {
    min-height: 76px;

    grid-template-columns:
        110px
        minmax(0, 1fr)
        110px;

    gap: 26px;
}

.server-history-date {
    font-size: 12px;
}

.server-history-map strong {
    font-size: 14px;
}

.server-history-map span {
    margin-top: 6px;

    font-size: 11px;
}

.server-history-score {
    font-size: 18px;

    text-align: right;
}


/* ---------------------------------------------------------
   TABLETTE
--------------------------------------------------------- */

@media (max-width: 900px) {

    .server-capture {
        margin-top: 34px;

        padding:
            22px
            20px
            24px;
    }

    .server-capture-track {
        height: 48px;
    }

    .server-capture-factions img {
        width: 34px;
    }

    .server-cap-lock {
        width: 18px;
        height: 18px;
    }

    .server-cap-combat {
        width: 22px;
        height: 22px;
    }

    .server-capture-objective {
        min-height: 54px;
    }

    .server-capture-objective strong {
        font-size: 12px;
    }

    .server-capture-objective span {
        font-size: 11px;
    }

    .server-history-panel {
        padding:
            28px
            24px;
    }

    .server-history-row {
        grid-template-columns:
            90px
            minmax(0, 1fr)
            80px;

        gap: 18px;
    }

}


/* ---------------------------------------------------------
   MOBILE
--------------------------------------------------------- */

@media (max-width: 650px) {

    .server-capture {
        margin-top: 28px;

        padding:
            18px
            12px
            20px;
    }

    .server-capture-head {
        margin-bottom: 14px;

        font-size: 11px;
    }

    .server-capture-factions {
        margin-bottom: 11px;
    }

    .server-capture-factions > div {
        font-size: 11px;
    }

    .server-capture-factions img {
        width: 30px;
    }

    .server-capture-center {
        font-size: 12px;
    }

    .server-capture-track {
        height: 40px;

        gap: 3px;
    }

    .server-cap-lock {
        width: 16px;
        height: 16px;
    }

    .server-cap-combat {
        width: 19px;
        height: 19px;
    }

    .server-capture-objective-labels {
        margin-top: 9px;
    }

    .server-capture-objective {
        min-height: 35px;

        padding:
            6px
            2px
            0;
    }

    .server-capture-objective strong {
        font-size: 11px;
    }

    /*
     * Sur téléphone, les noms complets des cinq
     * objectifs seraient trop serrés.
     * Le nom complet reste disponible dans title.
     */
    .server-capture-objective span {
        display: none;
    }

    .server-history-panel {
        padding:
            22px
            14px;
    }

    .server-history-row {
        min-height: 72px;

        grid-template-columns:
            70px
            minmax(0, 1fr)
            auto;

        gap: 12px;
    }

    .server-history-date {
        font-size: 11px;
    }

    .server-history-map strong {
        font-size: 12px;
    }

    .server-history-map span {
        font-size: 11px;
    }

    .server-history-score {
        font-size: 15px;
    }

}

/* =========================================
   SERVEURS // LIGNE DE FRONT PLEINE LARGEUR
========================================= */

@media (min-width: 901px) {

    .server-operation {
        grid-template-columns:
            155px
            minmax(420px, 1fr)
            410px;

        align-items: start;
        row-gap: 28px;
    }

    /*
     * On "aplatit" la colonne droite pour que
     * ses enfants participent directement à la
     * grille principale.
     */
    .server-operation-side {
        display: contents;
    }

    /*
     * Les stats population / score / progression
     * restent en colonne de droite.
     */
    .server-population,
    .server-population-track,
    .server-score,
    .server-time {
        grid-column: 3;
    }

    /*
     * La ligne de front passe sous le bloc map
     * et prend toute la largeur.
     */
    .server-capture {
        grid-column: 1 / -1;

        width: 100%;

        margin-top: 0;
        padding:
            26px
            28px
            28px;

        border-top:
            1px solid rgba(232,228,214,.14);

        border-bottom:
            1px solid rgba(232,228,214,.08);

        background:
            linear-gradient(
                180deg,
                rgba(232,228,214,.028) 0%,
                rgba(232,228,214,.010) 100%
            );
    }

    .server-capture-head {
        margin-bottom: 16px;
    }

    .server-capture-factions {
        margin-bottom: 12px;
    }

    .server-capture-track {
        height: 54px;
    }

    .server-capture-objective-labels {
        margin-top: 12px;
    }

    .server-capture-sync {
        margin-top: 14px;
    }
}


/* =========================================
   SERVEURS // PROGRESSION PLEINE LARGEUR
========================================= */

@media (min-width: 901px) {

    .server-time {
        grid-column: 1 / -1;

        width: 100%;

        margin-top: 0;

        padding-top: 4px;
    }

    .server-time-head {
        width: 100%;
    }

    .server-time-track {
        width: 100%;

        height: 5px;

        margin-top: 12px;
    }

}

/* =========================================================
   SERVEURS // MAP SUIVANTE + SUPPRESSION STATUS
   ========================================================= */

@media (min-width: 901px) {

    /*
     * Plus de colonne réservée à
     * SERVER // 01 / OPÉRATIONNEL.
     *
     * MAP = gauche
     * POPULATION = droite
     */
    .server-operation {
        grid-template-columns:
            minmax(0, 1fr)
            410px !important;

        column-gap: 54px;
        row-gap: 30px;
    }

    .server-map {
        grid-column: 1;
    }

    /*
     * Premier bloc de l'ancien side =
     * population.
     */
    .server-operation-side > div:first-child {
        grid-column: 2;

        align-self: start;
    }

    /*
     * Front + progression restent ensuite
     * sur toute la largeur.
     */
    .server-capture,
    .server-time {
        grid-column: 1 / -1;
    }

}


/* ---------------------------------------------------------
   PROCHAINE OPÉRATION
--------------------------------------------------------- */

.server-next {
    margin-top: 32px;
}

.server-next-label {
    margin-bottom: 10px;

    color: var(--ash);

    font-size: 11px;
    font-weight: 800;

    letter-spacing: 1.4px;

    text-transform: uppercase;
}

.server-next-card {
    position: relative;

    width: 100%;
    height: 185px;

    overflow: hidden;

    border-top:
        1px solid rgba(232,228,214,.14);

    border-bottom:
        1px solid rgba(232,228,214,.10);

    background:
        #080B08;
}

.server-next-image {
    position: absolute;

    inset: 0;

    width: 100%;
    height: 100%;

    display: block;

    object-fit: cover;

    opacity: .72;

    transform:
        scale(1.015);
}

.server-next-image-empty {
    display: flex;

    align-items: center;
    justify-content: center;

    color: var(--ash);

    font-size: 11px;
    font-weight: 800;

    letter-spacing: 1.3px;

    background:
        rgba(232,228,214,.025);
}

.server-next-shade {
    position: absolute;

    inset: 0;

    background:
        linear-gradient(
            90deg,
            rgba(5,8,6,.92) 0%,
            rgba(5,8,6,.58) 48%,
            rgba(5,8,6,.18) 100%
        );

    pointer-events: none;
}

.server-next-shade::after {
    content: "";

    position: absolute;

    inset: 0;

    background:
        linear-gradient(
            0deg,
            rgba(5,8,6,.72) 0%,
            transparent 62%
        );
}

.server-next-content {
    position: absolute;

    z-index: 2;

    left: 22px;
    right: 22px;
    bottom: 19px;

    display: flex;
    align-items: flex-end;
    justify-content: space-between;

    gap: 24px;
}

.server-next-content strong {
    max-width: 72%;

    color: var(--ivory);

    font-size:
        clamp(21px, 2vw, 31px);

    font-weight: 900;

    line-height: .96;

    letter-spacing:
        -.025em;
}

.server-next-content span {
    flex: 0 0 auto;

    color: var(--orange);

    font-size: 11px;
    font-weight: 900;

    letter-spacing: 1.2px;

    text-transform: uppercase;
}


/* ---------------------------------------------------------
   TABLETTE / MOBILE
--------------------------------------------------------- */

@media (max-width: 900px) {

    .server-next-card {
        height: 165px;
    }

    .server-next-content {
        left: 18px;
        right: 18px;
        bottom: 16px;
    }

}


@media (max-width: 650px) {

    .server-next {
        margin-top: 26px;
    }

    .server-next-card {
        height: 150px;
    }

    .server-next-content {
        align-items: flex-start;
        flex-direction: column;

        gap: 7px;

        left: 14px;
        right: 14px;
        bottom: 14px;
    }

    .server-next-content strong {
        max-width: 100%;

        font-size: 21px;
    }

    .server-next-content span {
        font-size: 10px;
    }

}

/* =========================================================
   SERVEURS // SCORES FRONT + NEXT MAP FULL WIDTH
   ========================================================= */


/* ---------------------------------------------------------
   SCORE CENTRAL USA / NVA
--------------------------------------------------------- */

.server-capture-factions {
    grid-template-columns:
        minmax(0, 1fr)
        auto
        minmax(0, 1fr);

    gap: 24px;
}

.server-capture-score {
    min-width: 120px;

    display: flex !important;
    align-items: center;
    justify-content: center !important;

    gap: 14px !important;

    color: var(--ivory) !important;

    letter-spacing: 0 !important;
}

.server-capture-score strong {
    min-width: 28px;

    color: var(--ivory);

    font-size: 28px;
    font-weight: 900;

    line-height: 1;

    text-align: center;
}

.server-capture-score span {
    color: var(--ash);

    font-size: 14px;
    font-weight: 700;
}


/* ---------------------------------------------------------
   PROCHAINE OPÉRATION // PLEINE LARGEUR
--------------------------------------------------------- */

.server-next {
    grid-column:
        1 / -1;

    width: 100%;

    margin-top: 0;
}

.server-next-card {
    width: 100%;

    height: 245px;
}

.server-next-content {
    left: 28px;
    right: 28px;
    bottom: 24px;
}

.server-next-content strong {
    max-width: 75%;

    font-size:
        clamp(27px, 3vw, 42px);
}


/* ---------------------------------------------------------
   DESKTOP
--------------------------------------------------------- */

@media (min-width: 901px) {

    .server-next {
        grid-column:
            1 / -1;

        margin-top: 4px;
    }

}


/* ---------------------------------------------------------
   TABLETTE
--------------------------------------------------------- */

@media (max-width: 900px) {

    .server-capture-factions {
        grid-template-columns:
            minmax(0, 1fr)
            auto
            minmax(0, 1fr);

        gap: 14px;
    }

    .server-capture-score {
        min-width: 90px;

        gap: 9px !important;
    }

    .server-capture-score strong {
        font-size: 22px;
    }

    .server-next-card {
        height: 210px;
    }

}


/* ---------------------------------------------------------
   MOBILE
--------------------------------------------------------- */

@media (max-width: 650px) {

    .server-capture-factions {
        gap: 8px;
    }

    .server-capture-score {
        min-width: 64px;

        gap: 5px !important;
    }

    .server-capture-score strong {
        min-width: 18px;

        font-size: 18px;
    }

    .server-capture-score span {
        font-size: 11px;
    }

    .server-next-card {
        height: 175px;
    }

    .server-next-content strong {
        font-size: 22px;
    }

}
