/*
 * Endurance Nodes — Blesta client theme.
 * Loaded after Blesta's application.min.css (Bootstrap 4.6 + Blesta styles),
 * tokens.css (fonts and colours, the same file as the game panel theme) and
 * icons.css (Lucide icons, generated).
 *
 * Same design as the game panel (pterodactyl/theme/public/css/theme.css) so
 * billing and panel read as one product: deep low-saturation night surfaces,
 * "glass" boxes (translucent gradient, inset hairline, no hard border), a top
 * bar across the whole width, a sidebar with the menu in sections and a
 * coloured icon tile per item, uppercase labels, gold main actions and
 * purple secondary ones with a solid bottom edge.
 *
 * Every rule is prefixed with body.en so it outranks the plugins' own CSS,
 * which loads later. Blesta sets some borders, radii and backgrounds with
 * !important; those are answered with !important here, and only those.
 */

:root {
    /* surfaces: the panel's night tones (tokens.css --en-*) */
    --page: rgb(var(--en-800));
    --glass: linear-gradient(160deg, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0.015) 60%), rgba(22, 17, 42, 0.62);
    --glass-strong: linear-gradient(160deg, rgba(139, 61, 255, 0.12), rgba(255, 255, 255, 0.03) 55%), rgba(20, 15, 38, 0.96);
    --glass-edge: inset 0 0 0 1px rgba(255, 255, 255, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.07);
    --glass-hover-edge: inset 0 0 0 1px rgba(255, 255, 255, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.12);
    --glass-drop: 0 24px 48px -28px rgba(0, 0, 0, 0.85);
    --surface: var(--glass);
    --surface-solid: rgb(var(--en-700));
    --surface-raised: var(--glass-strong);
    --surface-inset: rgba(10, 4, 26, 0.45);
    --hairline: var(--line);
    --hairline-strong: var(--line-strong);
    --field: rgb(var(--en-900) / 0.7);
    --shadow: var(--glass-drop);
    --r-lg: 16px;
    --r: 14px;
    --r-sm: 10px;
    --ease-out: cubic-bezier(0.2, 0.8, 0.2, 1);
    --en-bar-h: 64px;
    --en-sb-w: 264px;
}

/* ── Base ───────────────────────────────────────────────────────────── */
html {
    color-scheme: dark;
    scrollbar-color: rgb(var(--en-500)) transparent;
}
body.en {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    font-family: var(--font-body);
    font-size: 16px;
    line-height: 1.6;
    color: var(--chalk);
    background-color: var(--page);
    background-image: radial-gradient(1000px 560px at 88% -14%, rgba(139, 61, 255, 0.2), transparent 62%),
        radial-gradient(820px 520px at -10% 40%, rgba(40, 70, 190, 0.12), transparent 62%),
        radial-gradient(900px 560px at 70% 115%, rgba(255, 111, 174, 0.08), transparent 60%);
    background-attachment: fixed;
    -webkit-font-smoothing: antialiased;
}
body.en h1,
body.en h2,
body.en h3,
body.en h4,
body.en h5,
body.en h6,
body.en .h1,
body.en .h2,
body.en .h3,
body.en .h4,
body.en .h5,
body.en .h6 {
    font-family: var(--font-display);
    font-weight: 700;
    line-height: 1.2;
    letter-spacing: -0.01em;
    color: var(--chalk);
}
body.en h3,
body.en .h3 {
    font-size: 22px;
}
body.en h4,
body.en .h4 {
    font-size: 18px;
}
body.en h5,
body.en .h5 {
    font-size: 16px;
}
body.en p {
    color: rgb(var(--en-200));
}
body.en strong,
body.en b {
    font-weight: 600;
    color: var(--chalk);
}
/* labels: the panel's small uppercase field names */
body.en label,
body.en .control-label {
    margin-bottom: 6px;
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 11.5px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--muted);
}
/* …but not the text next to a checkbox or radio button */
body.en label:has(> input[type='checkbox']),
body.en label:has(> input[type='radio']),
body.en input[type='checkbox'] + label,
body.en input[type='radio'] + label,
body.en label.inline,
body.en .form-check-label,
body.en .custom-control-label {
    font-family: var(--font-body);
    font-weight: 400;
    font-size: 15px;
    letter-spacing: 0;
    text-transform: none;
    color: var(--chalk);
}
body.en dt {
    font-family: var(--font-display);
    font-weight: 600;
    color: var(--muted-2);
}
body.en hr {
    border-top-color: var(--hairline);
}
body.en a {
    color: var(--brand-hi);
    text-decoration: none;
}
body.en a:hover {
    color: #cfa8ff;
    text-decoration: underline;
    text-underline-offset: 3px;
}
body.en address {
    margin: 0;
    line-height: 1.6;
}
body.en ::selection {
    background: rgba(139, 61, 255, 0.55);
    color: #fff;
}
body.en :focus-visible {
    outline: 3px solid var(--gold-hi);
    outline-offset: 2px;
}
body.en ::-webkit-scrollbar {
    width: 10px;
    height: 10px;
}
body.en ::-webkit-scrollbar-thumb {
    background: rgb(var(--en-500));
    border: 2px solid transparent;
    border-radius: 999px;
    background-clip: padding-box;
}
body.en ::-webkit-scrollbar-thumb:hover {
    background-color: rgb(var(--en-brand-700));
}
body.en .text-muted,
body.en small,
body.en .small,
body.en .help-block {
    color: var(--muted-2) !important;
}
body.en .text-info {
    color: var(--teal) !important;
}
body.en .text-success {
    color: var(--green) !important;
}
body.en .text-danger {
    color: #ff7a85 !important;
}
body.en .text-warning {
    color: var(--gold) !important;
}
body.en .text-primary {
    color: var(--brand-hi) !important;
}
/* Blesta paints these light with !important */
body.en .bg-light,
body.en .bg-white,
body.en .well,
body.en .top-focus-box,
body.en form.widget_filter_form,
body.en form.widget_filter_form .well {
    background: var(--surface-inset) !important;
    color: inherit;
}
/* …except a box of its own (cart summary, account on the order form):
   the same glass as every card */
body.en .card.bg-light {
    background: var(--glass) !important;
}
body.en .card .card.bg-light,
body.en .card-body > .card.bg-light {
    background: var(--surface-inset) !important;
}
body.en .border,
body.en .well {
    border: 1px solid var(--hairline) !important;
}
/* Blesta's and the plugins' near-white rules */
body.en .noindent,
body.en .border-top,
body.en .border-bottom {
    border-color: var(--hairline) !important;
}
body.en .well,
body.en .rounded,
body.en .rounded-lg {
    border-radius: var(--r) !important;
}
body.en code {
    color: var(--pink);
}
body.en pre {
    padding: 14px 16px;
    border-radius: var(--r-sm);
    background: var(--surface-inset);
    border: 1px solid var(--hairline);
    color: #e9e2f7;
}
/* an icon from icons.css in a coloured tile (--c), like the panel's */
.en-tile {
    --c: var(--brand-hi);
    display: inline-grid;
    place-items: center;
    flex-shrink: 0;
    width: 34px;
    height: 34px;
    border-radius: 10px;
    background: color-mix(in srgb, var(--c) 15%, transparent);
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--c) 30%, transparent);
    color: var(--c);
}

/* ── Top bar (the panel's #NavigationBar) ───────────────────────────── */
.en-bar {
    position: sticky;
    top: 0;
    z-index: 1030;
    display: flex;
    align-items: center;
    gap: 12px;
    height: var(--en-bar-h);
    padding: 0 12px 0 20px;
    background: rgba(13, 10, 28, 0.9);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    box-shadow: 0 1px 0 var(--line), 0 10px 30px -12px rgba(0, 0, 0, 0.6);
}
.en-brand {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    flex-shrink: 0;
    text-decoration: none !important;
}
.en-brand img {
    width: 34px;
    height: 32px;
    object-fit: contain;
    filter: drop-shadow(0 2px 10px rgba(139, 61, 255, 0.55));
    transition: transform 0.2s var(--ease-out);
}
.en-brand:hover img {
    transform: rotate(-6deg) scale(1.05);
}
.en-word {
    font-family: var(--font-display);
    font-weight: 800;
    font-size: 1.28rem;
    letter-spacing: -0.01em;
    color: var(--chalk);
    white-space: nowrap;
}
body.en .en-word b {
    font-weight: 800;
    color: var(--brand-hi);
}
.en-bar-end {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-left: auto;
}
/* round icon buttons, like the panel's right-hand icons */
body.en .en-bar-btn {
    display: inline-grid;
    place-items: center;
    width: 42px;
    height: 42px;
    border-radius: 12px;
    font-size: 18px;
    color: var(--muted);
    text-decoration: none !important;
    transition: background-color 0.15s ease, color 0.15s ease;
}
body.en .en-bar-btn:hover {
    background: rgba(255, 255, 255, 0.1);
    color: #fff;
}
body.en .en-bar-btn.active {
    background: rgba(139, 61, 255, 0.24);
    color: var(--gold);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.14);
}
body.en .en-bar-out:hover {
    background: rgba(255, 77, 90, 0.16);
    color: #ff8a92;
}
.en-avatar {
    display: inline-grid;
    place-items: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--brand), var(--pink));
    font-family: var(--font-display);
    font-weight: 800;
    font-size: 13px;
    color: #fff;
}
.en-login {
    margin-left: 6px;
}
/* "Sign up" (a client registration form exists), next to "Log In" */
.en-signup {
    margin-left: 6px;
}
@media (max-width: 480px) {
    .en-bar .en-signup {
        display: none;
    }
}
/* logged in as the client from the staff area: the language can't change */
body.en .en-lang-note {
    max-width: 250px;
    margin: 0;
    padding: 8px 12px 10px;
    font-size: 13.5px;
    line-height: 1.5;
    color: var(--muted);
    white-space: normal;
}

/* language: a globe button and a menu, like the panel's and the site's */
.en-lang {
    position: relative;
    margin: 0 6px;
}
body.en .en-lang-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 34px;
    padding: 0 10px;
    border: 0;
    border-radius: 10px;
    background: rgba(255, 255, 255, 0.07);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.16);
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 0.8rem;
    color: var(--chalk);
    cursor: pointer;
    transition: background-color 0.15s ease, box-shadow 0.15s ease;
}
body.en .en-lang-btn .en-ic {
    font-size: 16px;
}
body.en .en-lang-btn:hover,
body.en .en-lang-btn[aria-expanded='true'] {
    background: rgba(255, 255, 255, 0.13);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.26);
}
body.en .en-lang-menu {
    min-width: 176px;
    margin-top: 10px;
}
body.en .en-lang-menu .dropdown-item {
    width: 100%;
    border: 0;
    background: transparent;
    text-align: left;
    color: var(--muted);
    cursor: pointer;
}
body.en .en-lang-menu .dropdown-item.active {
    background: transparent;
    color: #fff;
}
body.en .en-lang-menu .dropdown-item:hover {
    background: rgba(255, 255, 255, 0.07);
    color: #fff;
}
.en-lang-code {
    display: inline-grid;
    place-items: center;
    min-width: 30px;
    padding: 2px 6px;
    border-radius: 6px;
    background: rgba(255, 255, 255, 0.08);
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 0.7rem;
    letter-spacing: 0.04em;
}
.en-lang-menu .active .en-lang-code,
.en-lang-menu .dropdown-item.active .en-lang-code {
    background: var(--brand);
    color: #fff;
}
/* sign-in pages: pills under the logo */
.en-lang-pills {
    display: flex;
    justify-content: center;
    gap: 6px;
    margin: 4px 0 6px;
}
.en-lang-pills button {
    min-width: 40px;
    padding: 5px 10px;
    border: 0;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.08);
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 0.75rem;
    letter-spacing: 0.05em;
    color: var(--muted);
    cursor: pointer;
    transition: background-color 0.15s ease, color 0.15s ease;
}
.en-lang-pills button:hover {
    background: rgba(255, 255, 255, 0.14);
    color: #fff;
}
.en-lang-pills button.is-active {
    background: rgba(255, 255, 255, 0.2);
    color: #fff;
}
/* the language form only holds hidden fields */
#language_selector {
    display: none;
}

/* "Return to staff portal" when staff are logged in as the client */
body.en .en-staff-note {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    height: 34px;
    margin-right: 4px;
    padding: 0 12px;
    border-radius: 10px;
    background: rgba(98, 242, 234, 0.1);
    box-shadow: inset 0 0 0 1px rgba(98, 242, 234, 0.35);
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 13px;
    line-height: 1.2;
    color: var(--teal) !important;
    white-space: nowrap;
    text-decoration: none !important;
    transition: background-color 0.15s ease;
}
body.en .en-staff-note .en-ic {
    font-size: 16px;
}
body.en .en-staff-note:hover {
    background: rgba(98, 242, 234, 0.18);
}
@media (max-width: 767.98px) {
    body.en .en-staff-note {
        justify-content: center;
        width: 42px;
        height: 42px;
        margin: 0;
        padding: 0;
        border-radius: 12px;
    }
    body.en .en-staff-note .en-staff-text {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
        white-space: nowrap;
    }
}

/* ── Sidebar (the panel's #SubNavigation) ───────────────────────────── */
.en-side {
    --sb-pad: 12px;
    display: flex;
    flex-direction: column;
    gap: 14px;
}
.en-side-card {
    display: grid;
    grid-template-columns: 46px minmax(0, 1fr);
    align-items: center;
    column-gap: 12px;
    row-gap: 12px;
    padding: 14px;
    border-radius: var(--r-lg);
    background: linear-gradient(160deg, rgba(255, 255, 255, 0.07), rgba(255, 255, 255, 0.02) 70%);
    box-shadow: inset 0 0 0 1px var(--line-strong);
    color: inherit;
    text-decoration: none !important;
    transition: box-shadow 0.15s ease;
}
a.en-side-card:hover {
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.24);
}
.en-side-avatar {
    display: grid;
    place-items: center;
    width: 46px;
    height: 46px;
    border-radius: 14px;
    background: linear-gradient(135deg, var(--brand), var(--pink));
    font-family: var(--font-display);
    font-weight: 800;
    font-size: 20px;
    color: #fff;
    box-shadow: 0 6px 16px -6px rgba(139, 61, 255, 0.7);
}
.en-side-card img {
    width: 46px;
    height: 46px;
    object-fit: contain;
    filter: drop-shadow(0 6px 8px rgba(0, 0, 0, 0.45));
}
.en-side-who {
    display: flex;
    flex-direction: column;
    min-width: 0;
}
.en-side-who b {
    overflow: hidden;
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 1.02rem;
    line-height: 1.25;
    color: var(--chalk);
    text-overflow: ellipsis;
    white-space: nowrap;
}
.en-side-who span {
    overflow: hidden;
    font-size: 0.82rem;
    color: var(--muted-2);
    text-overflow: ellipsis;
    white-space: nowrap;
}
.en-side-card--guest .en-side-who span {
    white-space: normal;
}
.en-side-card--guest .en-btn {
    grid-column: 1 / -1;
}
.en-side-nav {
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.en-side-group {
    margin: 0;
    padding: 14px 12px 6px;
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 0.68rem;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--muted-2) !important;
    opacity: 0.85;
}
.en-side-group:first-child {
    padding-top: 2px;
}
body.en .en-side-link {
    position: relative;
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 46px;
    padding: 6px 14px 6px 10px;
    border-radius: 12px;
    font-family: var(--font-display);
    font-weight: 500;
    font-size: 0.95rem;
    line-height: 1.2;
    color: var(--muted);
    text-decoration: none !important;
    transition: background-color 0.15s ease, color 0.15s ease;
}
/* the coloured icon tile, like the site's dropdown menu (.dd-icon) */
.en-side-ic {
    position: relative;
    flex-shrink: 0;
    width: 34px;
    height: 34px;
    border-radius: 10px;
    background: color-mix(in srgb, var(--c) 15%, transparent);
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--c) 30%, transparent);
    transition: background-color 0.15s ease, transform 0.18s var(--ease-out);
}
.en-side-ic::after {
    content: '';
    position: absolute;
    inset: 8px;
    background: var(--c);
    -webkit-mask: var(--ic) center / contain no-repeat;
    mask: var(--ic) center / contain no-repeat;
}
/* long names (French) take a second line instead of being cut */
.en-side-label {
    min-width: 0;
    overflow-wrap: anywhere;
}
body.en .en-side-link:hover {
    background: rgba(255, 255, 255, 0.06);
    color: #fff;
}
body.en .en-side-link:hover .en-side-ic {
    background: color-mix(in srgb, var(--c) 24%, transparent);
    transform: scale(1.06);
}
/* the page you're on: a ring and tint in the item's own colour, the tile filled */
body.en .en-side-link.active {
    background: linear-gradient(100deg, color-mix(in srgb, var(--c) 16%, rgba(255, 255, 255, 0.05)), rgba(255, 255, 255, 0.02));
    color: #fff;
    box-shadow: inset 0 0 0 1.5px color-mix(in srgb, var(--c) 65%, transparent);
}
body.en .en-side-link.active .en-side-ic {
    background: var(--c);
    box-shadow: 0 4px 14px -4px color-mix(in srgb, var(--c) 70%, transparent);
}
body.en .en-side-link.active .en-side-ic::after {
    background: #1a0d33;
}
body.en .en-side-link:focus-visible {
    outline: none;
    box-shadow: inset 0 0 0 2px var(--c);
}
.en-side-foot {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-top: auto;
    padding-top: 8px;
    border-top: 1px solid var(--line);
}
body.en .en-side-foot a {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 9px 12px;
    border-radius: 12px;
    font-family: var(--font-display);
    font-weight: 500;
    font-size: 0.92rem;
    color: var(--muted-2);
    text-decoration: none !important;
    transition: background-color 0.15s ease, color 0.15s ease;
}
body.en .en-side-foot a:hover {
    background: rgba(255, 255, 255, 0.06);
    color: #fff;
}
.en-side-ext {
    margin-left: auto;
    font-size: 12px;
    opacity: 0.7;
}

/* Desktop: a fixed column on the left; the page shifts right to make room. */
@media (min-width: 1024px) {
    .en-side {
        position: fixed;
        top: var(--en-bar-h);
        /* --en-banner: room for a notice fixed at the bottom (endurance.js) */
        bottom: var(--en-banner, 0px);
        left: 0;
        z-index: 1020;
        width: var(--en-sb-w);
        padding: 16px var(--sb-pad);
        overflow-x: hidden;
        overflow-y: auto;
        background: linear-gradient(180deg, rgba(16, 12, 32, 0.97), rgba(12, 9, 25, 0.97));
        box-shadow: 1px 0 0 var(--line);
        scrollbar-width: thin;
        scrollbar-color: transparent transparent;
        scrollbar-gutter: stable;
    }
    .en-side:hover {
        scrollbar-color: rgb(var(--en-500)) transparent;
    }
    body.en.en-app .en-shell {
        margin-left: var(--en-sb-w);
    }
}
/* Phones and tablets: a scrollable strip of pills under the top bar. */
@media (max-width: 1023.98px) {
    .en-side {
        position: sticky;
        top: var(--en-bar-h);
        z-index: 1020;
        padding: 8px 12px;
        overflow-x: auto;
        background: rgba(14, 11, 28, 0.96);
        box-shadow: 0 1px 0 var(--line);
        scrollbar-width: none;
    }
    .en-side::-webkit-scrollbar {
        display: none;
    }
    .en-side-card,
    .en-side-foot,
    .en-side-group {
        display: none !important;
    }
    .en-side-nav {
        flex-direction: row;
        gap: 6px;
        width: max-content;
    }
    body.en .en-side-link {
        gap: 9px;
        min-height: 40px;
        padding: 5px 14px 5px 6px;
        font-size: 0.9rem;
    }
    .en-side-label {
        white-space: nowrap;
    }
    .en-side-ic {
        width: 28px;
        height: 28px;
        border-radius: 8px;
    }
    .en-side-ic::after {
        inset: 6px;
    }
}
@media (max-width: 640px) {
    :root {
        --en-bar-h: 58px;
    }
    .en-bar {
        padding: 0 6px 0 14px;
    }
    .en-bar .en-word {
        display: none;
    }
    body.en .en-bar-btn {
        width: 38px;
        height: 38px;
    }
}

/* ── Page header and layout ─────────────────────────────────────────── */
.en-shell {
    display: flex;
    flex: 1 0 auto;
    flex-direction: column;
    min-width: 0;
}
.en-wrap {
    width: 100%;
    max-width: 1240px;
    margin-right: auto;
    margin-left: auto;
    padding-right: 28px;
    padding-left: 28px;
}
@media (max-width: 640px) {
    .en-wrap {
        padding-right: 16px;
        padding-left: 16px;
    }
}
/* The site's inner-page header (Rework .tool-hero / ArtHero): a big title
   with one word in the page's colour (--tc), a lede, and the page's block
   turning in a glow of the same colour on the right. */
.en-title {
    --tc: var(--brand-hi);
    display: grid;
    grid-template-columns: minmax(0, 1fr) 210px;
    align-items: center;
    gap: 24px;
    min-height: 196px;
    padding-top: 26px;
    padding-bottom: 22px;
}
.en-title-copy {
    min-width: 0;
}
.en-crumbs {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    margin-bottom: 12px;
    font-size: 15px;
    color: var(--muted-2);
}
body.en .en-crumbs a {
    color: var(--muted);
    text-decoration: none;
    transition: color 0.15s ease;
}
body.en .en-crumbs a:hover {
    color: #fff;
}
.en-crumbs .en-ic {
    width: 14px;
    height: 14px;
}
body.en .en-title h1 {
    margin: 0;
    font-weight: 800;
    font-size: clamp(32px, 20px + 1.9vw, 50px);
    line-height: 1.08;
    letter-spacing: -0.02em;
    color: var(--chalk);
    text-wrap: balance;
    overflow-wrap: anywhere;
}
.en-title .en-tl {
    color: var(--tc);
}
body.en .en-title-lede {
    max-width: 42em;
    margin: 14px 0 0;
    font-size: 17px;
    line-height: 1.6;
    color: var(--muted);
}
.en-title-art {
    position: relative;
    display: grid;
    place-items: center;
    height: 170px;
}
.en-title-glow {
    position: absolute;
    width: 230px;
    height: 230px;
    background: radial-gradient(closest-side, color-mix(in srgb, var(--tc) 40%, transparent), transparent);
}
.en-title-art .en-cube {
    position: relative;
    animation: en-float 5s ease-in-out infinite;
}
/* one turn every 14 s, always (the site's header blocks) */
.en-title-art .en-cube-body {
    animation: en-spin 14s linear infinite;
}
@media (max-width: 980px) {
    .en-title {
        grid-template-columns: minmax(0, 1fr);
        min-height: 0;
    }
    .en-title-art {
        display: none;
    }
}

/* ── 3D blocks: the site's Cube (CSS faces with the game's textures) ── */
.en-cube {
    display: inline-grid;
    place-items: center;
    width: calc(var(--s) * 1.5);
    height: calc(var(--s) * 1.6);
    flex-shrink: 0;
}
.en-cube-iso {
    position: relative;
    width: var(--s);
    height: var(--s);
    transform-style: preserve-3d;
    transform: rotateX(-30deg) rotateY(-45deg);
}
.en-cube-body {
    position: absolute;
    inset: 0;
    transform-style: preserve-3d;
}
.en-face {
    position: absolute;
    inset: 0;
    background-size: 100% 100%;
    image-rendering: pixelated;
    backface-visibility: hidden;
}
.en-face-top {
    transform: rotateX(90deg) translateZ(calc(var(--s) / 2));
}
.en-face-front {
    transform: translateZ(calc(var(--s) / 2));
    box-shadow: inset 0 0 0 999px rgba(0, 0, 0, 0.18);
}
.en-face-right {
    transform: rotateY(90deg) translateZ(calc(var(--s) / 2));
    box-shadow: inset 0 0 0 999px rgba(0, 0, 0, 0.38);
}
.en-face-back {
    transform: rotateY(180deg) translateZ(calc(var(--s) / 2));
    box-shadow: inset 0 0 0 999px rgba(0, 0, 0, 0.3);
}
.en-face-left {
    transform: rotateY(-90deg) translateZ(calc(var(--s) / 2));
    box-shadow: inset 0 0 0 999px rgba(0, 0, 0, 0.28);
}
@keyframes en-spin {
    to {
        transform: rotateY(360deg);
    }
}
/* cards with a block: it turns while the card is hovered (9 s a turn) */
.en-spin-host:hover .en-cube--spin .en-cube-body,
.en-spin-host:focus-within .en-cube--spin .en-cube-body {
    animation: en-spin 9s linear infinite;
}
/* Hytale plans: the ore bar instead of a block, a little larger (it's
   flat), with a soft shadow; it lifts while the card is hovered */
.en-ingot img {
    width: calc(var(--s) * 1.45);
    height: auto;
    image-rendering: pixelated;
    filter: drop-shadow(0 10px 14px rgba(0, 0, 0, 0.45));
    transition: transform 0.4s var(--ease-out);
}
/* Hytale and Terraria bars in 3D (12 stacked layers, see cube() in
   endurance.js). The shadow sits on the outer box: a filter on the
   preserve-3d box would flatten the layers into one. */
.en-bar3d {
    perspective: 600px;
    filter: drop-shadow(0 10px 14px rgba(0, 0, 0, 0.45));
}
.en-bar3d-body {
    position: relative;
    display: block;
    width: calc(var(--s) * 1.45);
    height: calc(var(--s) * 1.45);
    transform-style: preserve-3d;
    animation: en-swing 6s ease-in-out infinite alternate;
}
.en-bar3d .en-bar3d-body img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    image-rendering: pixelated;
    filter: none;
    transition: none;
}
.en-bar3d .en-bar3d-body img.en-bar3d-edge {
    filter: brightness(0.55);
}
.en-plan:hover .en-bar3d-body,
.en-spin-host:hover .en-bar3d-body {
    animation-duration: 2.4s;
}
.en-plan:hover .en-bar3d img,
.en-spin-host:hover .en-bar3d img {
    transform-origin: center;
}
@keyframes en-swing {
    from {
        transform: rotateY(-35deg);
    }
    to {
        transform: rotateY(35deg);
    }
}
@media (prefers-reduced-motion: reduce) {
    .en-bar3d-body {
        animation: none;
    }
}
/* the configure step's header with the plan: its name big, the step above */
.en-title-kicker {
    margin: 0 0 4px;
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 15px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--muted);
}
.en-title--plan h1 .en-tl {
    color: var(--tc);
}
.en-logo img {
    width: calc(var(--s) * 1.3);
    image-rendering: auto;
}
.en-plan:hover .en-ingot img,
.en-spin-host:hover .en-ingot img,
.en-spin-host:focus-within .en-ingot img {
    transform: translateY(-6px) rotate(-4deg);
}
.en-main {
    flex: 1 0 auto;
    padding-bottom: 48px;
}
/* a box placed straight in a row (Order History) lines up with the others */
body.en .en-main > .row > .card {
    width: calc(100% - 20px) !important;
    margin-left: 10px;
    margin-right: 10px;
}
/* Blesta's rows use 10px gutters; cards stack with one rhythm */
body.en .en-main .card,
body.en .en-main .panel,
body.en .en-main .table-curved,
body.en .en-main .list-group {
    margin-bottom: 22px;
}
body.en .en-main .card .card,
body.en .en-main .card .list-group {
    margin-bottom: 0;
}

/* ── Buttons ────────────────────────────────────────────────────────── */
/* The panel's buttons: a darker bottom edge that sinks on press; the main
   action gold, everything else the site's ghost button. */
body.en .btn,
.en-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 9px 16px;
    border: 0;
    border-radius: 12px;
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 14.5px;
    line-height: 1.2;
    letter-spacing: 0;
    text-decoration: none !important;
    white-space: nowrap;
    transition: transform 0.12s ease, box-shadow 0.12s ease, background-color 0.15s ease, color 0.15s ease;
}
body.en .btn:not(:disabled):not(.disabled):hover,
.en-btn:hover {
    transform: translateY(-1px);
}
body.en .btn:not(:disabled):not(.disabled):active,
.en-btn:active {
    transform: translateY(2px);
}
body.en .btn:focus,
body.en .btn.focus {
    box-shadow: none;
}
body.en .btn.btn-block {
    display: flex;
    width: 100%;
}
body.en .btn-lg {
    padding: 12px 20px;
    font-size: 16px;
}
body.en .btn-sm,
body.en .btn-xs {
    padding: 6px 12px;
    font-size: 13px;
    border-radius: var(--r-sm);
}
/* the main action: gold */
body.en .btn-success,
body.en .btn-primary,
.en-btn--gold {
    background: var(--gold);
    color: var(--gold-ink) !important;
    box-shadow: 0 4px 0 var(--gold-lo), 0 10px 22px -10px rgba(255, 180, 40, 0.55);
}
body.en .btn-success:hover,
body.en .btn-primary:hover,
.en-btn--gold:hover {
    background: var(--gold-hi);
    color: var(--gold-ink) !important;
    box-shadow: 0 5px 0 var(--gold-lo), 0 14px 26px -10px rgba(255, 180, 40, 0.6);
}
body.en .btn-success:not(:disabled):not(.disabled):active,
body.en .btn-primary:not(:disabled):not(.disabled):active,
body.en .show > .btn-success.dropdown-toggle,
body.en .show > .btn-primary.dropdown-toggle,
.en-btn--gold:active {
    background: var(--gold);
    color: var(--gold-ink) !important;
    box-shadow: 0 1px 0 var(--gold-lo);
}
/* everything else: the site's ghost button (Rework .btn-ghost) — a light
   translucent fill, a 2px light ring and the same bottom edge (Blesta uses
   btn-light for most actions) */
body.en .btn-light,
body.en .btn-secondary,
body.en .btn-default,
body.en .btn-info {
    background: rgba(255, 255, 255, 0.12);
    color: var(--chalk) !important;
    box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.35), 0 4px 0 rgba(0, 0, 0, 0.25);
}
body.en .btn-light:hover,
body.en .btn-secondary:hover,
body.en .btn-default:hover,
body.en .btn-info:hover {
    background: rgba(255, 255, 255, 0.2);
    color: #fff !important;
}
/* pressed, and a split button whose menu is open: Bootstrap paints these
   light grey; they stay ghost, pushed in */
body.en .btn-light:not(:disabled):not(.disabled):active,
body.en .btn-light:not(:disabled):not(.disabled).active,
body.en .btn-secondary:not(:disabled):not(.disabled):active,
body.en .btn-secondary:not(:disabled):not(.disabled).active,
body.en .btn-default:not(:disabled):not(.disabled):active,
body.en .btn-info:not(:disabled):not(.disabled):active,
body.en .show > .btn-light.dropdown-toggle,
body.en .show > .btn-secondary.dropdown-toggle,
body.en .show > .btn-default.dropdown-toggle,
body.en .show > .btn-info.dropdown-toggle {
    background: rgba(255, 255, 255, 0.2);
    color: #fff !important;
    box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.35), 0 1px 0 rgba(0, 0, 0, 0.25);
    transform: translateY(2px);
}
body.en .btn-danger {
    background: #e5484d;
    color: #fff !important;
    box-shadow: 0 4px 0 #8f1d1d;
}
body.en .btn-danger:hover {
    background: #f2555a;
}
body.en .btn-danger:not(:disabled):not(.disabled):active,
body.en .show > .btn-danger.dropdown-toggle {
    background: #d63c42;
    box-shadow: 0 1px 0 #8f1d1d;
}
body.en .btn-warning {
    background: var(--orange);
    color: #2a1204 !important;
    box-shadow: 0 4px 0 #a2512c;
}
body.en .btn-warning:hover {
    background: #f59b72;
}
body.en .btn-link {
    color: var(--brand-hi) !important;
    box-shadow: none;
}
/* secondary actions next to a gold one: the site's ghost button */
.en-btn--ghost {
    background: rgba(255, 255, 255, 0.12);
    color: var(--chalk) !important;
    box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.35), 0 4px 0 rgba(0, 0, 0, 0.25);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
}
.en-btn--ghost:hover {
    background: rgba(255, 255, 255, 0.2);
    color: #fff !important;
}
.en-btn--ghost:active {
    box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.35), 0 1px 0 rgba(0, 0, 0, 0.25);
}
body.en .btn:disabled,
body.en .btn.disabled {
    opacity: 0.55;
    transform: none;
    box-shadow: none;
}
/* split buttons ("Pay ▾") and button groups stay one piece */
/* the rings of the two halves meet in one line */
body.en .btn-group > .btn:not(:first-child) {
    margin-left: -2px;
    border-left: 0;
}
body.en .btn-group > .btn:hover,
body.en .btn-group > .btn:active {
    transform: none;
}
body.en .btn-group > .btn + .dropdown-toggle-split,
body.en .btn-group > .btn.dropdown-toggle:not(:first-child) {
    padding-left: 10px;
    padding-right: 10px;
}

/* ── Cards and panels: the panel's glass boxes ──────────────────────── */
body.en .card,
body.en .panel,
body.en .card-blesta,
body.en .panel-blesta,
body.en .modal-content {
    border: 0 !important;
    border-radius: var(--r-lg) !important;
    background: var(--glass);
    box-shadow: var(--glass-edge), var(--glass-drop);
    color: var(--chalk);
}
/* box titles: the panel's titled boxes — a quiet header with a hairline,
   the title in small gold capitals after its icon */
body.en .card-header:not(.package-name),
body.en .panel-heading {
    --ic: var(--ic-layers);
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 50px;
    padding: 12px 20px;
    border: 0;
    border-bottom: 1px solid var(--line);
    border-radius: var(--r-lg) var(--r-lg) 0 0 !important;
    background: rgba(255, 255, 255, 0.03);
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 0.8rem;
    line-height: 1.3;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--gold);
}
body.en .card-header:not(.package-name)::before,
body.en .panel-heading::before {
    content: '';
    flex-shrink: 0;
    width: 16px;
    height: 16px;
    background: var(--gold);
    -webkit-mask: var(--ic) center / contain no-repeat;
    mask: var(--ic) center / contain no-repeat;
}
body.en #client_invoices > .card-header {
    --ic: var(--ic-file-text);
}
body.en #client_services > .card-header {
    --ic: var(--ic-server);
}
body.en #client_transactions > .card-header {
    --ic: var(--ic-arrow-left-right);
}
body.en #client_quotations > .card-header {
    --ic: var(--ic-file-text);
}
body.en #client_domains > .card-header,
body.en [id*='domains'] > .card-header {
    --ic: var(--ic-globe);
}
body.en #client_tickets > .card-header,
body.en [id*='ticket'] > .card-header {
    --ic: var(--ic-ticket);
}
body.en #client_orders > .card-header {
    --ic: var(--ic-receipt);
}
body.en #my-info .card:first-child > .card-header {
    --ic: var(--ic-user-round);
}
body.en #my-info .card + .card > .card-header {
    --ic: var(--ic-users);
}
body.en .card-body,
body.en .panel-body {
    padding: 18px 20px 20px;
}
body.en .card-footer,
body.en .panel-footer {
    padding: 0 20px 20px;
    border: 0;
    border-radius: 0 0 var(--r-lg) var(--r-lg) !important;
    background: transparent;
}
/* a card inside a card is a section, not another box */
body.en .card .card,
body.en .card .panel {
    border: 0 !important;
    border-radius: var(--r) !important;
    background: var(--surface-inset);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.05);
}
/* the box whose header became the page heading (structure.pdt) */
body.en .card-blesta > .card-content:first-child > .card-body {
    padding-top: 22px;
}
/* Blesta underlines every h4/h3 in a box with a near-white line */
body.en .card-body h3,
body.en .card-body h4,
body.en .panel-body h4 {
    padding-bottom: 10px;
    border-bottom: 1px solid var(--hairline) !important;
    font-size: 17px;
}
body.en .card-body h4.border-0,
body.en .card-body .list-group-item h4 {
    padding-bottom: 0;
    border-bottom: 0 !important;
}
body.en .col-border {
    border-right-color: var(--hairline) !important;
}
/* "no invoices / no domains / no contacts…": a quiet empty state, not a box */
body.en .card .card-body > .alert-info:only-child,
body.en .card .card-body > .card-nav ~ .alert-info,
body.en .card .card-body > .alert-info:last-child:not([class*='alert-dismissible']) {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0;
    padding: 10px 2px 2px;
    border: 0 !important;
    background: transparent !important;
    color: var(--muted-2);
}
body.en .card .card-body > .alert-info:only-child::before,
body.en .card .card-body > .card-nav ~ .alert-info::before,
body.en .card .card-body > .alert-info:last-child:not([class*='alert-dismissible'])::before {
    content: '\f07c';
    display: grid;
    place-items: center;
    flex-shrink: 0;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.05);
    font-family: 'Font Awesome 5 Free';
    font-weight: 900;
    font-size: 13px;
    color: var(--muted-2);
}
body.en .card .card-body > .alert p {
    margin: 0;
    color: inherit;
}
body.en .section-title {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 4px 0 16px;
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 20px;
    color: var(--chalk);
}

/* ── Tables: dark header band, row dividers, nothing else ───────────── */
body.en .table {
    margin-bottom: 0;
    color: var(--chalk);
    font-size: 15px;
    border-collapse: separate;
    border-spacing: 0;
}
body.en .table > thead > tr > th,
body.en .table > tbody > tr > th,
body.en .table > tbody > tr > td,
body.en .table > tfoot > tr > td {
    padding: 12px 14px;
    border: 0 !important;
    border-bottom: 1px solid var(--hairline) !important;
    background-color: transparent !important;
    vertical-align: middle;
    /* Blesta keeps every cell on one line; longer languages then overflow */
    white-space: normal !important;
}
body.en .table .btn,
body.en .table .btn-group {
    white-space: nowrap;
}
/* on a phone the table scrolls sideways in its box instead: one line per row */
@media (max-width: 767.98px) {
    body.en .table > thead > tr > th,
    body.en .table > tbody > tr > td {
        white-space: nowrap !important;
    }
}
body.en .table > thead > tr > th,
body.en .table > thead > tr > td {
    background: var(--surface-inset) !important;
    border-bottom: 0 !important;
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 11.5px;
    letter-spacing: 0.08em;
    line-height: 1.35;
    text-transform: uppercase;
    color: var(--muted-2);
}
body.en .table > thead > tr > th:first-child {
    border-radius: var(--r-sm) 0 0 var(--r-sm);
}
body.en .table > thead > tr > th:last-child {
    border-radius: 0 var(--r-sm) var(--r-sm) 0;
}
body.en .table > thead > tr > th a {
    color: var(--muted-2);
    text-decoration: none !important;
}
body.en .table > thead > tr > th a:hover {
    color: var(--chalk);
}
body.en .table > tbody > tr:last-child > td,
body.en .table > tbody > tr:last-child > th {
    border-bottom: 0 !important;
}
body.en .table-striped > tbody > tr:nth-of-type(odd),
body.en .table-striped-alt > tbody > tr:nth-of-type(odd) {
    background: transparent;
}
body.en .table-hover > tbody > tr:hover > td,
body.en .table-hover > tbody > tr:hover > th {
    background-color: rgba(255, 255, 255, 0.03) !important;
    color: var(--chalk);
}
/* figures read in the display face, like prices on the site */
body.en .table td.currency_value,
body.en .table .currency_value {
    font-family: var(--font-display);
    font-weight: 500;
}
/* inside a card the table sits on the card itself */
body.en .card .table-curved,
body.en .card .table-responsive,
body.en .card-order .table-curved {
    border: 0;
    background: transparent;
    box-shadow: none;
}
/* a table on its own gets the site's table frame, on the card surface */
body.en .table-curved {
    border: 1px solid var(--hairline);
    border-radius: var(--r-lg);
    background: var(--surface);
    overflow: hidden;
}
body.en .card .table-curved {
    border-radius: 0;
    overflow: visible;
}
body.en .table-curved td,
body.en .table-curved th {
    border-left: 0 !important;
}
body.en .table .expand_details > td,
body.en .table tr.expand_details td {
    background: var(--surface-inset) !important;
}
/* rows that open details: Blesta hangs a chevron 20px past the last cell,
   which pushed every such table 6px wider than its box */
body.en .table tr.expand {
    cursor: pointer;
}
body.en .table tr.expand > td:last-of-type {
    padding-right: 38px;
}
body.en .table tr.expand > td:last-of-type::after {
    margin: 3px -26px 0 0;
    font-size: 12px;
    color: var(--muted-2);
    transition: color 0.15s ease;
}
body.en .table tr.expand:hover > td:last-of-type::after,
body.en .table tr.expand.expanded > td:last-of-type::after {
    color: var(--brand-hi);
}
body.en .table .subtable {
    background: transparent;
}
/* Blesta opens a row's details with display: block, which takes the row
   out of the table: its cell no longer spans the columns (a dark box half
   as wide as the table, and a first column pushed wide). A table row. */
body.en .table tr.expand_details[style*='block'] {
    display: table-row !important;
}
body.en .table tr.expand_details > td {
    padding: 14px 16px 16px !important;
}
body.en .table tr.expand_details .table-responsive {
    margin: 0;
}
body.en .table tr.expand_details .table {
    width: 100%;
    margin: 0;
}

/* ── Forms ──────────────────────────────────────────────────────────── */
body.en .form-control,
body.en .custom-select,
body.en select,
body.en textarea,
body.en input[type='text'],
body.en input[type='email'],
body.en input[type='password'],
body.en input[type='number'],
body.en input[type='tel'],
body.en input[type='search'],
body.en input[type='url'],
body.en input[type='date'] {
    border: 1px solid rgba(255, 255, 255, 0.13);
    border-radius: 12px;
    background-color: var(--field);
    font-family: var(--font-body);
    font-size: 15px;
    color: var(--chalk);
    transition: border-color 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease;
}
body.en .form-control:hover,
body.en select:hover,
body.en textarea:hover {
    border-color: rgba(255, 255, 255, 0.26);
}
body.en .form-control {
    height: auto;
    min-height: 44px;
    padding: 10px 14px;
}
body.en select.form-control {
    padding-right: 32px;
}
body.en .form-control::placeholder {
    color: var(--muted-2);
    opacity: 0.8;
}
/* focus: gold, like the panel's fields */
body.en .form-control:focus,
body.en select:focus,
body.en textarea:focus {
    border-color: var(--gold);
    background-color: rgb(var(--en-900));
    box-shadow: 0 0 0 3px rgba(255, 200, 61, 0.2);
    color: var(--chalk);
}
body.en .form-control:disabled,
body.en .form-control[readonly] {
    background-color: rgba(255, 255, 255, 0.03);
    color: var(--muted-2);
}
/* Drop-down lists, opened: the site's menus (Rework .dd-panel) — a dark
   rounded panel with a purple hairline, items on a soft highlight, the chosen
   one ticked in gold. Browsers with customizable <select> (Chromium 135+)
   draw it that way; the others keep their own list, in these colours (their
   chosen item used to be light grey with white text). */
body.en select option {
    background-color: #1f1242;
    color: var(--chalk);
}
body.en select option:checked {
    background: #4b2a8f linear-gradient(0deg, #4b2a8f 0 0);
    color: #fff;
}
@supports (appearance: base-select) {
    body.en select:not([multiple]):not([size]),
    body.en select:not([multiple]):not([size])::picker(select) {
        appearance: base-select;
    }
    body.en select:not([multiple]):not([size]) {
        display: flex;
        align-items: center;
        gap: 10px;
        cursor: pointer;
    }
    /* the theme's chevron instead of the browser's triangle */
    body.en select:not([multiple]):not([size])::picker-icon {
        content: '';
        width: 14px;
        height: 14px;
        background-color: var(--muted);
        -webkit-mask: var(--ic-chevron-down) center / contain no-repeat;
        mask: var(--ic-chevron-down) center / contain no-repeat;
        transition: rotate 0.2s ease;
    }
    body.en select:not([multiple]):not([size]):open::picker-icon {
        rotate: 180deg;
    }
    body.en select:not([multiple]):not([size]):open {
        border-color: var(--gold);
        box-shadow: 0 0 0 3px rgba(255, 200, 61, 0.2);
    }
    body.en select::picker(select) {
        max-height: min(360px, 60vh);
        margin: 6px 0;
        padding: 6px;
        border: 1px solid rgba(176, 122, 255, 0.3);
        border-radius: 14px;
        background: #1f1242;
        box-shadow: 0 24px 48px rgba(0, 0, 0, 0.5);
        overflow-y: auto;
        scrollbar-color: rgb(var(--en-500)) transparent;
        opacity: 1;
        transform: none;
        transition: opacity 0.16s ease, transform 0.16s ease, overlay 0.16s allow-discrete, display 0.16s allow-discrete;
    }
    @starting-style {
        body.en select:open::picker(select) {
            opacity: 0;
            transform: translateY(-4px);
        }
    }
    body.en select:not([multiple]):not([size]) option {
        display: flex;
        align-items: center;
        gap: 10px;
        min-height: 40px;
        padding: 8px 12px;
        border-radius: 10px;
        background: transparent;
        font-family: var(--font-body);
        font-size: 15px;
        color: var(--chalk);
        cursor: pointer;
        transition: background-color 0.12s ease;
    }
    body.en select:not([multiple]):not([size]) option:hover,
    body.en select:not([multiple]):not([size]) option:focus-visible {
        background: rgba(176, 122, 255, 0.14);
        outline: none;
    }
    body.en select:not([multiple]):not([size]) option:checked {
        background: rgba(176, 122, 255, 0.2);
        font-weight: 600;
        color: #fff;
    }
    body.en select:not([multiple]):not([size]) option::checkmark {
        order: 1;
        margin-left: auto;
        color: var(--gold);
    }
    body.en select:not([multiple]):not([size]) option:disabled {
        opacity: 0.45;
        cursor: not-allowed;
    }
}

/* Quantity sliders (the order form's configurable options): the site's
   range slider (Rework input[type=range]) — an 8px track filled in gold up to
   the value, a white thumb ringed in gold — with its number box beside it.
   The slider's own bubble is hidden: Blesta sizes it like a page tooltip
   (200px wide, over the label), and the box already shows the value. */
body.en .form-group:has(> .slider) {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    column-gap: 16px;
}
body.en .form-group:has(> .slider) > label {
    grid-column: 1 / -1;
}
body.en .form-group:has(> .slider) > label:last-child {
    margin: 8px 0 0;
    font-family: var(--font-body);
    font-weight: 500;
    font-size: 14px;
    letter-spacing: 0;
    text-transform: none;
    color: var(--muted-2);
}
body.en .form-group > .slider.slider-horizontal {
    width: 100% !important;
    max-width: none;
    height: 24px;
}
body.en .slider .slider-track {
    top: 50%;
    height: 8px;
    margin-top: -4px;
    border-radius: 99px;
    background: rgba(255, 255, 255, 0.1);
    background-image: none;
    box-shadow: none;
}
body.en .slider .slider-selection {
    border-radius: 99px;
    background: var(--gold);
    background-image: none;
    box-shadow: none;
}
body.en .slider .slider-track-high,
body.en .slider .slider-track-low {
    background: transparent;
}
body.en .slider .slider-handle {
    top: 50%;
    width: 22px;
    height: 22px;
    margin: -11px 0 0 -11px;
    border: 4px solid var(--gold);
    border-radius: 50%;
    background: #fff;
    background-image: none;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.4);
    cursor: grab;
    transition: transform 0.12s ease;
}
body.en .slider .slider-handle:hover,
body.en .slider .slider-handle:active {
    transform: scale(1.1);
}
body.en .slider .slider-handle:focus-visible {
    outline: 3px solid var(--gold-hi);
    outline-offset: 2px;
}
body.en .slider .tooltip {
    display: none !important;
}
body.en .form-group:has(> .slider) > input[type='number'] {
    width: 84px;
    min-height: 42px;
    padding: 8px 6px;
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 16px;
    text-align: center;
}

/* Order summary: Blesta floats the price cell to the right, which takes it
   out of its row (lines under the prices don't meet the others), and lets
   "1 @" break over two lines */
body.en .card-order td.price-col {
    float: none !important;
    text-align: right;
    white-space: nowrap;
}
body.en .card-order .table td {
    vertical-align: middle;
}
/* the summary isn't a scrolling table: on a phone its descriptions wrap
   (the one-line rule for tables would push it past the screen) */
body.en .card-order .table > thead > tr > th:first-child,
body.en .card-order .table > tbody > tr > td:first-child {
    white-space: normal !important;
    overflow-wrap: anywhere;
}
body.en #order-summary .card-order .table td:nth-child(2) {
    white-space: nowrap !important;
    color: var(--muted);
}
/* while Blesta recalculates it (every change on the form), the summary stays
   in place, dimmed, instead of growing a loading bar and jumping */
body.en #order-summary > .loading_container {
    display: none;
}
body.en #order-summary #summary-details {
    transition: opacity 0.15s ease;
}
body.en #order-summary:has(> .loading_container) #summary-details {
    opacity: 0.55;
}
body.en .form-group {
    margin-bottom: 18px;
}
body.en .input-group-text,
body.en .input-group-addon {
    border: 1px solid rgba(255, 255, 255, 0.11);
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.05);
    font-family: var(--font-display);
    font-weight: 600;
    color: var(--muted);
}
body.en input[type='checkbox'],
body.en input[type='radio'] {
    accent-color: var(--brand);
}
/* checkboxes drawn like the rest of the fields: a dark box with a hairline,
   purple with a white tick when checked (the browser's own box is light) */
body.en input[type='checkbox']:not(.custom-control-input) {
    -webkit-appearance: none;
    appearance: none;
    display: inline-grid;
    place-content: center;
    flex-shrink: 0;
    width: 18px;
    height: 18px;
    margin: 0 8px 0 0;
    vertical-align: -3px;
    border: 0;
    border-radius: 5px;
    background: rgb(var(--en-900) / 0.8);
    box-shadow: inset 0 0 0 1.5px rgba(255, 255, 255, 0.28);
    cursor: pointer;
    transition: background-color 0.15s ease, box-shadow 0.15s ease;
}
body.en input[type='checkbox']:not(.custom-control-input):hover {
    box-shadow: inset 0 0 0 1.5px rgba(176, 122, 255, 0.7);
}
body.en input[type='checkbox']:not(.custom-control-input):checked {
    background: var(--brand);
    box-shadow: inset 0 0 0 1.5px var(--brand-hi);
}
body.en input[type='checkbox']:not(.custom-control-input):checked::after {
    content: '';
    width: 9px;
    height: 5px;
    margin-top: -2px;
    border: solid #fff;
    border-width: 0 0 2px 2px;
    transform: rotate(-45deg);
}
body.en input[type='checkbox']:not(.custom-control-input):disabled {
    opacity: 0.5;
    cursor: not-allowed;
}
/* a checkbox and its text in their own row ("I want to receive emails…") */
body.en .form-group.well:has(> input[type='checkbox']) {
    display: flex;
    align-items: center;
    gap: 2px;
    padding: 14px 16px;
}
body.en .form-group.well > input[type='checkbox'] + label {
    margin: 0;
    cursor: pointer;
}
body.en .checkbox label,
body.en .radio label,
body.en .checkbox-inline,
body.en .radio-inline {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: var(--font-body);
    font-weight: 400;
    font-size: 15px;
    color: var(--chalk);
}
body.en .has-error .form-control,
body.en .is-invalid {
    border-color: rgba(255, 77, 90, 0.8) !important;
}
/* file pickers (profile picture, ticket attachments) */
body.en input[type='file'] {
    font-family: var(--font-body);
    font-size: 14.5px;
    color: var(--muted);
}
body.en input[type='file'].form-control {
    padding: 7px 8px;
}
body.en input[type='file']::file-selector-button {
    margin-right: 12px;
    padding: 6px 14px;
    border: 0;
    border-radius: 9px;
    background: rgba(255, 255, 255, 0.12);
    box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.35);
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 13.5px;
    color: #fff;
    cursor: pointer;
    transition: background-color 0.15s ease;
}
body.en input[type='file']::file-selector-button:hover {
    background: rgba(255, 255, 255, 0.2);
}

/* ── Alerts and badges ──────────────────────────────────────────────── */
body.en .alert {
    display: block;
    padding: 14px 18px;
    border: 1px solid var(--hairline) !important;
    border-radius: var(--r) !important;
    font-size: 15px;
    color: var(--chalk);
}
body.en .alert-info {
    background: rgba(98, 242, 234, 0.07);
    border-color: rgba(98, 242, 234, 0.25) !important;
}
body.en .alert-success {
    background: rgba(52, 222, 122, 0.08);
    border-color: rgba(52, 222, 122, 0.3) !important;
}
body.en .alert-warning {
    background: rgba(255, 200, 61, 0.07);
    border-color: rgba(255, 200, 61, 0.3) !important;
}
body.en .alert-danger {
    background: rgba(255, 77, 90, 0.09);
    border-color: rgba(255, 77, 90, 0.35) !important;
}
body.en .alert strong {
    font-family: var(--font-display);
    font-weight: 700;
}
body.en .alert p {
    margin: 10px 0 0;
}
body.en .alert .btn {
    margin: 4px 6px 0 0;
}
body.en .alert .close {
    color: var(--chalk);
    text-shadow: none;
    opacity: 0.55;
}
body.en .badge {
    padding: 4px 9px;
    border-radius: 999px;
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 11.5px;
    letter-spacing: 0.02em;
}
body.en .badge-success {
    background: rgba(52, 222, 122, 0.15);
    color: var(--green);
}
body.en .badge-danger {
    background: rgba(255, 77, 90, 0.16);
    color: #ff8a92;
}
body.en .badge-warning {
    background: rgba(255, 200, 61, 0.15);
    color: var(--gold);
}
body.en .badge-info,
body.en .badge-primary {
    background: rgba(139, 61, 255, 0.22);
    color: var(--brand-hi);
}
body.en .badge-secondary,
body.en .badge-default,
body.en .badge-light {
    background: rgba(255, 255, 255, 0.08);
    color: var(--muted);
}

/* ── Lists, tabs, pagination, menus, modals ─────────────────────────── */
body.en .list-group {
    border: 0;
    border-radius: var(--r-lg);
    background: transparent;
}
body.en .list-group-item {
    padding: 12px 18px;
    border: 0;
    border-bottom: 1px solid var(--hairline);
    background: transparent;
    color: var(--chalk);
}
body.en .list-group-item:last-child {
    border-bottom: 0;
}
body.en .list-group-item-action:hover,
body.en .list-group.list-options a.list-group-item:hover {
    background: rgba(255, 255, 255, 0.04) !important;
    color: var(--chalk) !important;
    text-decoration: none;
}
body.en .list-group-item.active {
    background: rgba(139, 61, 255, 0.18);
    color: var(--chalk);
    box-shadow: inset 3px 0 0 var(--brand-hi);
}
body.en .list-group-item.active i {
    color: var(--brand-hi);
}
/* A page's own menu (a service's pages, payment accounts, a menu section's
   pages): Blesta puts it in a column on the left. With the sidebar there,
   it becomes a row of tabs above the page instead of a second column. */
@media (min-width: 768px) {
    body.en .en-main .row > .col-md-3:has(> .list-group:not(.list-options)) {
        flex: 0 0 100%;
        max-width: 100%;
    }
    body.en .en-main .row > .col-md-3:has(> .list-group:not(.list-options)) + .col-md-9 {
        flex: 0 0 100%;
        max-width: 100%;
    }
}
body.en .en-subnav,
body.en .en-main .col-md-3 > .list-group:not(.list-options) {
    display: flex;
    flex-flow: row wrap;
    gap: 4px;
    margin-bottom: 18px;
    padding: 5px;
    border: 0;
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.04);
    box-shadow: inset 0 0 0 1px var(--line);
}
body.en .en-subnav .list-group-item,
body.en .en-main .col-md-3 > .list-group:not(.list-options) > .list-group-item {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    width: auto;
    margin: 0;
    padding: 8px 14px;
    border: 0 !important;
    border-radius: 10px !important;
    background: transparent;
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 14.5px;
    line-height: 1.3;
    color: var(--muted);
    box-shadow: none;
}
body.en .en-subnav .list-group-item i,
body.en .en-main .col-md-3 > .list-group:not(.list-options) > .list-group-item i {
    margin: 0;
    color: var(--muted-2);
}
body.en .en-subnav .list-group-item:hover,
body.en .en-main .col-md-3 > .list-group:not(.list-options) > .list-group-item:hover {
    background: rgba(255, 255, 255, 0.06) !important;
    color: #fff !important;
}
body.en .en-subnav .list-group-item.active,
body.en .en-main .col-md-3 > .list-group:not(.list-options) > .list-group-item.active {
    background: rgba(139, 61, 255, 0.24) !important;
    color: #fff !important;
    box-shadow: inset 0 0 0 1px rgba(176, 122, 255, 0.4);
}
body.en .en-subnav .list-group-item.active i,
body.en .en-main .col-md-3 > .list-group:not(.list-options) > .list-group-item.active i {
    color: var(--gold);
}
body.en .nav-tabs {
    gap: 4px;
    border-bottom: 1px solid var(--hairline);
}
body.en .nav-tabs .nav-link,
body.en .nav-tabs li a {
    border: 0;
    border-radius: var(--r-sm) var(--r-sm) 0 0;
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 14.5px;
    color: var(--muted) !important;
}
body.en .nav-tabs .nav-link:hover,
body.en .nav-tabs .nav-link:focus {
    background: rgba(255, 255, 255, 0.05);
    color: var(--chalk) !important;
}
/* the open tab: readable in every state (hover, focus, being clicked) */
body.en .nav-tabs .nav-link.active,
body.en .nav-tabs .nav-link.active:hover,
body.en .nav-tabs .nav-link.active:focus,
body.en .nav-tabs .nav-link.active:active,
body.en .nav-tabs li a.active,
body.en .nav-tabs .active > a,
body.en .nav .nav-item a.nav-link.active:hover {
    border-color: transparent;
    background: rgba(139, 61, 255, 0.14) !important;
    color: var(--chalk) !important;
    box-shadow: inset 0 -2px 0 var(--brand-hi);
}
body.en .nav-pills .nav-link {
    border-radius: var(--r-sm);
    font-family: var(--font-display);
    font-weight: 600;
    color: var(--muted-2);
}
body.en .nav-pills .nav-link.active {
    background: rgba(139, 61, 255, 0.28);
    color: var(--chalk);
}
body.en .pagination {
    gap: 4px;
}
body.en .page-link,
body.en .pagination li a {
    margin: 0;
    border: 0;
    border-radius: var(--r-sm) !important;
    background: rgba(255, 255, 255, 0.05);
    font-family: var(--font-display);
    font-weight: 600;
    color: var(--muted);
}
body.en .page-item.active .page-link,
body.en .pagination li.active a {
    background: var(--brand);
    color: #fff !important;
}
/* menus: the panel's — dark glass, blurred, each action with a small tile
   tinted in its own colour (by its icon) */
/* the site's menus (Rework .dd-panel): a dark panel with a purple hairline */
body.en .dropdown-menu {
    min-width: 11rem;
    padding: 7px;
    border: 1px solid rgba(176, 122, 255, 0.3);
    border-radius: 16px;
    background: #1f1242;
    box-shadow: 0 24px 48px rgba(0, 0, 0, 0.5);
    color: var(--muted);
}
/* fade only: Popper places the menu with a transform, which a sliding
   entrance would override until it ends (the menu jumped sideways) */
body.en .dropdown-menu.show {
    animation: en-fade 0.15s ease-out backwards;
}
body.en .dropdown-item,
body.en .dropdown-menu > li > a {
    --c: var(--muted);
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 6px 10px 6px 6px;
    border-radius: 10px;
    font-family: var(--font-display);
    font-weight: 500;
    font-size: 14.5px;
    color: var(--muted);
    text-decoration: none !important;
    white-space: nowrap;
    transition: background-color 0.15s ease, color 0.15s ease;
}
/* Blesta's table menus still use the old <ul><li><a> markup */
body.en .dropdown-menu > li {
    list-style: none;
}
body.en .dropdown-item > i,
body.en .dropdown-menu > li > a > i {
    box-sizing: content-box;
    width: 12px;
    padding: 7px;
    border-radius: 8px;
    background: color-mix(in srgb, var(--c) 14%, transparent);
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--c) 28%, transparent);
    font-size: 12px;
    text-align: center;
    color: var(--c);
    transition: background-color 0.15s ease;
}
body.en .dropdown-item:hover,
body.en .dropdown-item:focus,
body.en .dropdown-item.active,
body.en .dropdown-menu > li > a:hover,
body.en .dropdown-menu > li > a:focus {
    background: rgba(176, 122, 255, 0.14);
    color: #fff;
    text-decoration: none;
}
body.en .dropdown-item:hover > i,
body.en .dropdown-menu > li > a:hover > i {
    background: color-mix(in srgb, var(--c) 26%, transparent);
}
body.en :is(.dropdown-item, .dropdown-menu > li > a):has(> .fa-file-invoice-dollar, > .fa-eye, > .fa-search) {
    --c: var(--brand-hi);
}
body.en :is(.dropdown-item, .dropdown-menu > li > a):has(> .fa-download, > .fa-file-download, > .fa-file-pdf) {
    --c: var(--green);
}
body.en :is(.dropdown-item, .dropdown-menu > li > a):has(> .fa-pencil-alt, > .fa-edit, > .fa-cog, > .fa-cogs) {
    --c: var(--gold);
}
body.en :is(.dropdown-item, .dropdown-menu > li > a):has(> .fa-plus-circle, > .fa-plus, > .fa-reply) {
    --c: var(--teal);
}
body.en :is(.dropdown-item, .dropdown-menu > li > a):has(> .fa-ban, > .fa-trash, > .fa-trash-alt, > .fa-times, > .fa-times-circle) {
    --c: #f87171;
}
body.en .dropdown-divider {
    margin: 6px 4px;
    border-top-color: var(--hairline);
}
body.en .modal-content {
    background: var(--surface-raised);
}
body.en .modal-header,
body.en .modal-footer {
    border-color: var(--hairline);
}
body.en .modal-title,
body.en .modal-header h5 {
    font-family: var(--font-display);
    font-weight: 700;
}
body.en .modal-backdrop.show {
    opacity: 0.7;
    background: #08031a;
}
body.en .close {
    color: var(--chalk);
    text-shadow: none;
}
body.en .progress {
    height: 10px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.08);
}
body.en .progress-bar {
    border-radius: 999px;
    background: linear-gradient(90deg, var(--brand), var(--brand-hi));
}
body.en .tooltip-inner {
    border-radius: 8px;
    background: var(--surface-raised);
    font-family: var(--font-display);
}

/* ── Dashboard hero (client_main.pdt) — the panel's DashboardHero ───── */
body.client-client_main-index .en-title {
    display: none;
}
body.client-client_main-index .en-main {
    padding-top: 26px;
}
.en-hero {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    min-height: 188px;
    margin-bottom: 22px;
    padding: 30px 34px;
    overflow: hidden;
    border-radius: 22px;
    background: radial-gradient(ellipse 34% 70% at 86% 50%, rgba(139, 61, 255, 0.22), transparent 70%),
        linear-gradient(90deg, rgba(14, 10, 30, 0.97) 0%, rgba(17, 13, 34, 0.92) 40%, rgba(17, 13, 34, 0.72) 70%, rgba(17, 13, 34, 0.55) 100%),
        linear-gradient(0deg, rgba(14, 10, 30, 0.55), transparent 55%),
        url('../img/plans-village.webp') 60% 45% / cover;
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.1), 0 30px 60px -32px rgba(0, 0, 0, 0.85);
}
.en-hero-copy {
    position: relative;
    z-index: 1;
    min-width: 0;
}
.en-hero-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 12px;
    margin-bottom: 8px;
}
.en-eyebrow {
    margin: 0;
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 0.78rem;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--brand-hi) !important;
}
/* "5 Services" next to the eyebrow, like the panel's server count */
.en-hero-count {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 24px;
    padding: 0 10px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.07);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.14);
    font-family: var(--font-display);
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--muted);
}
.en-hero-count b {
    font-weight: 800;
    color: var(--chalk);
}
body.en .en-hero-title {
    margin: 0;
    font-weight: 800;
    font-size: clamp(1.6rem, 1.2rem + 1.2vw, 2.3rem);
    line-height: 1.1;
    letter-spacing: -0.02em;
    color: var(--chalk);
    text-shadow: 0 4px 24px rgba(10, 2, 30, 0.5);
    overflow-wrap: anywhere;
}
body.en .en-hero-name {
    font-weight: 800;
    color: var(--gold);
}
body.en .en-hero-lede {
    max-width: 34em;
    margin: 8px 0 0;
    font-size: 1rem;
    color: #d9d0ea;
}
.en-hero-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 20px;
}
.en-hero-actions .en-btn {
    padding: 0.7rem 1.15rem;
    font-size: 0.95rem;
}
/* balance due, moved here from Blesta's notice by endurance.js */
.en-hero-balance {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px 12px;
    max-width: 44em;
    margin-top: 18px;
    padding: 10px 12px;
    border-radius: 14px;
    background: rgba(239, 138, 92, 0.1);
    box-shadow: inset 0 0 0 1px rgba(239, 138, 92, 0.38);
}
.en-hero-balance .en-tile {
    --c: var(--orange);
    width: 32px;
    height: 32px;
}
.en-hero-balance-text {
    flex: 1 1 240px;
    font-size: 14.5px;
    line-height: 1.45;
    color: var(--chalk);
}
.en-hero-balance-text br {
    display: none;
}
.en-hero-balance .btn {
    padding: 7px 13px;
    font-size: 13.5px;
}
.en-hero-art {
    position: relative;
    flex-shrink: 0;
    width: 230px;
    height: 150px;
    margin-right: 6px;
}
@keyframes en-float {
    0%,
    100% {
        transform: translateY(0);
    }
    50% {
        transform: translateY(-7px);
    }
}
/* the panel's floating blocks, turning slowly (DashboardHero.tsx) */
.en-hero-block {
    position: absolute;
    filter: drop-shadow(0 14px 14px rgba(0, 0, 0, 0.55));
    animation: en-float 4.5s ease-in-out infinite;
}
.en-hero-block .en-cube-body {
    animation: en-spin 9s linear infinite;
}
.en-hero-block--a {
    top: 26px;
    left: 70px;
}
.en-hero-block--b {
    top: 0;
    left: 172px;
    animation-delay: -1.2s;
}
.en-hero-block--b .en-cube-body {
    animation-delay: -3s;
}
.en-hero-block--c {
    top: 96px;
    left: 8px;
    animation-delay: -2.4s;
}
.en-hero-block--c .en-cube-body {
    animation-delay: -6s;
    animation-direction: reverse;
}
.en-hero-block--d {
    top: 104px;
    left: 180px;
    animation-delay: -3.3s;
}
.en-hero-block--d .en-cube-body {
    animation-delay: -1.5s;
}
@media (max-width: 1199.98px) {
    /* drawn at 70%; the negative margin gives back the 30% it doesn't use */
    .en-hero-art {
        margin: 0 0 0 -69px;
        transform: scale(0.7);
        transform-origin: right center;
    }
}
@media (max-width: 640px) {
    .en-hero {
        padding: 22px;
    }
    .en-hero-art {
        display: none;
    }
}

/* ── Dashboard layout ───────────────────────────────────────────────── */
/* The widgets take the main column and the account summary (Blesta's
   profile column) goes to the right, like the stats beside the panel's
   console. */
@media (min-width: 768px) {
    body.en #my-info {
        order: 2;
    }
}
@media (min-width: 768px) and (max-width: 1299.98px) {
    body.en #my-info {
        flex: 0 0 100%;
        max-width: 100%;
        order: 2;
    }
    body.en #my-info + .right_content,
    body.en .row > .right_content.col-md-9 {
        flex: 0 0 100%;
        max-width: 100%;
    }
}

/* ── Dashboard: account summary (client_main_myinfo) ────────────────── */
/* Blesta stacks four boxes here (profile, contacts, auto-pay, credits).
   They read as one card: shared frame, hairline between sections. */
@media (min-width: 1300px) {
    body.en #my-info {
        position: sticky;
        top: calc(var(--en-bar-h) + 20px);
        align-self: flex-start;
    }
}
/* narrower screens: the four sections side by side under the widgets */
@media (min-width: 768px) and (max-width: 1299.98px) {
    body.en #my-info {
        display: grid !important;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 16px;
        margin-bottom: 22px;
    }
    body.en #my-info > * {
        margin: 0 !important;
        border-radius: var(--r-lg) !important;
        box-shadow: var(--glass-edge), var(--glass-drop) !important;
    }
}
body.en #my-info > .card,
body.en #my-info > .list-options,
body.en #my-info > .amounts {
    margin: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: var(--glass);
    box-shadow: var(--glass-edge);
}
@media (min-width: 1300px), (max-width: 767.98px) {
    body.en #my-info > * + * {
        margin-top: -1px !important;
    }
    body.en #my-info > :first-child {
        border-radius: var(--r-lg) var(--r-lg) 0 0 !important;
    }
    body.en #my-info > :last-child {
        margin-bottom: 22px !important;
        border-radius: 0 0 var(--r-lg) var(--r-lg) !important;
        box-shadow: var(--glass-edge), var(--glass-drop);
    }
}
body.en #my-info > .amounts > .list-options {
    margin: 0;
    border: 0;
    background: transparent;
    box-shadow: none;
}
body.en #my-info .card-header {
    border-radius: 0 !important;
}
body.en #my-info > :first-child > .card-header {
    border-radius: var(--r-lg) var(--r-lg) 0 0 !important;
}
body.en #my-info address strong {
    display: block;
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 18px;
}
body.en #my-info address strong + br {
    display: none;
}
body.en #my-info address hr {
    margin: 12px 0;
}
body.en #my-info .card-footer {
    padding-top: 2px;
}
/* secondary actions here: quiet buttons, the page's main ones stay loud */
body.en #my-info .card-footer .btn {
    background: rgba(255, 255, 255, 0.06);
    color: var(--chalk) !important;
    box-shadow: inset 0 0 0 1px var(--hairline);
}
body.en #my-info .card-footer .btn:hover {
    background: rgba(139, 61, 255, 0.22);
    transform: none;
}
body.en #my-info .card-footer .btn i {
    color: var(--brand-hi);
}
body.en #my-info .card .card-body > .alert {
    padding-top: 0;
}
body.en #my-info .card .card-body > .alert::before {
    content: none;
}
body.en #my-info .list-group .card-body {
    padding-top: 14px;
    padding-bottom: 10px;
}
/* "not set up for automatic payment" and credits: quiet rows */
body.en #my-info .list-options {
    overflow: hidden;
}
body.en #my-info .list-options .list-group-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 13px 20px;
    border: 0;
    border-top: 1px solid var(--hairline);
    border-radius: 0;
    background: transparent !important;
    font-size: 14.5px;
    line-height: 1.45;
    color: var(--muted) !important;
}
body.en #my-info .list-options .list-group-item:first-child {
    border-top: 0;
}
body.en #my-info .list-options .list-group-item i {
    order: -1;
    box-sizing: content-box;
    width: 14px;
    margin: 0;
    padding: 9px;
    border-radius: 10px;
    background: rgba(176, 122, 255, 0.15);
    box-shadow: inset 0 0 0 1px rgba(176, 122, 255, 0.3);
    font-size: 14px;
    text-align: center;
    color: var(--brand-hi);
}
body.en #my-info .list-options .list-group-item.float-right,
body.en #my-info .list-options .list-group-item .float-right {
    float: none !important;
}
body.en #my-info .list-options .list-group-item-text {
    margin: 0;
    color: inherit;
}
body.en #my-info .list-options a.list-group-item:hover {
    color: var(--chalk) !important;
}
body.en #my-info .list-options .credits {
    justify-content: space-between;
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 11.5px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--muted-2) !important;
}
body.en #my-info .list-options .credits .currency_value {
    font-weight: 800;
    font-size: 18px;
    letter-spacing: 0;
    text-transform: none;
    color: var(--chalk);
}

/* ── Dashboard: summary tiles (Client Cards plugin) ─────────────────── */
/* The panel's stat blocks: a coloured icon tile, a small uppercase label
   and the figure. The plugin paints each card with an inline, !important
   colour that no stylesheet can override; an inset shadow as big as the
   card covers it (it paints over the background, under the content). */
body.en .right_content > .row.cards {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(146px, 1fr));
    gap: 12px;
    margin: 0 0 22px;
}
body.en .right_content > .row.cards > [class*='col-'] {
    max-width: none;
    margin: 0;
    padding: 0;
}
body.en .cards a {
    display: block;
    height: 100%;
    text-decoration: none !important;
}
body.en .cards .card {
    --c: var(--brand-hi);
    position: relative;
    display: flex;
    align-items: center;
    height: 100%;
    min-height: 80px;
    margin: 0 !important;
    padding: 12px 10px 12px 58px !important;
    border: 0 !important;
    border-radius: 14px !important;
    box-shadow: inset 0 0 0 999px rgb(var(--en-700)), var(--glass-edge), var(--glass-drop) !important;
    transition: box-shadow 0.18s ease;
}
/* the tile … */
body.en .cards .card::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 10px;
    width: 38px;
    height: 38px;
    margin-top: -19px;
    border-radius: 11px;
    background: color-mix(in srgb, var(--c) 16%, transparent);
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--c) 32%, transparent);
    transition: background-color 0.2s ease, box-shadow 0.2s ease;
}
/* … and its icon */
body.en .cards .card::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 19px;
    width: 20px;
    height: 20px;
    margin-top: -10px;
    background: var(--c);
    -webkit-mask: var(--ic, var(--ic-layers)) center / contain no-repeat;
    mask: var(--ic, var(--ic-layers)) center / contain no-repeat;
}
body.en .cards .card .card-content {
    display: flex;
    flex-direction: column-reverse;
    gap: 2px;
    text-align: left;
}
body.en .cards .card .card-value {
    font-family: var(--font-display);
    font-weight: 800;
    font-size: 22px;
    line-height: 1.15;
    color: var(--chalk) !important;
}
body.en .cards .card .card-label {
    margin: 0;
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 10px;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--muted-2) !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
body.en .cards .card .card-content {
    min-width: 0;
}
body.en .cards a:hover .card {
    box-shadow: inset 0 0 0 999px rgb(var(--en-700)), var(--glass-hover-edge), var(--glass-drop) !important;
}
body.en .cards a:hover .card::before {
    background: color-mix(in srgb, var(--c) 26%, transparent);
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--c) 50%, transparent);
}
body.en .cards [id$='services_count'] {
    --c: var(--green);
    --ic: var(--ic-server);
}
body.en .cards [id$='invoices_count'] {
    --c: var(--teal);
    --ic: var(--ic-file-text);
}
body.en .cards [id$='domain_count'] {
    --c: #5ab8ff;
    --ic: var(--ic-globe);
}
body.en .cards [id$='orders_count'] {
    --c: var(--orange);
    --ic: var(--ic-receipt);
}
body.en .cards [id$='tickets_count'] {
    --c: var(--pink);
    --ic: var(--ic-ticket);
}

/* ── List widgets (invoices, services, transactions…) ───────────────── */
body.en .card-blesta {
    overflow: hidden;
}
body.en .card-blesta > .card-content > .card-body,
body.en .card-blesta > .card-body {
    padding: 16px 20px 20px;
}
body.en .card-nav {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 14px;
}
body.en .card-nav > .float-left,
body.en .card-nav > .float-right {
    float: none !important;
    display: flex;
    gap: 8px;
}
body.en .card-nav > .clearfix {
    display: none;
}
/* Open / Closed, Active / Pending… as plain pills, no box around them */
body.en .card-links,
body.en .panel-links {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    margin: 0;
    padding: 0;
    list-style: none;
}
body.en .card-links > li + li::before,
body.en .panel-links > li + li::before {
    content: none;
}
body.en .card-links li a {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 6px 12px;
    border-radius: 999px;
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 13.5px;
    color: var(--muted-2);
    text-decoration: none !important;
    transition: background-color 0.15s ease, color 0.15s ease;
}
body.en .card-links li a:hover {
    background: rgba(255, 255, 255, 0.05);
    color: var(--chalk);
}
body.en .card-links li.active a {
    background: rgba(139, 61, 255, 0.22);
    color: var(--chalk);
}
body.en .card-links .badge {
    padding: 1px 7px;
    background: rgba(255, 255, 255, 0.1);
    font-size: 11px;
    color: inherit;
}
/* the filter toggle: an icon, not another purple box */
body.en .card-nav .filter-toggle {
    width: 36px;
    height: 34px;
    padding: 0;
    background: rgba(255, 255, 255, 0.05);
    color: var(--muted) !important;
    box-shadow: none;
}
body.en .card-nav .filter-toggle:hover {
    background: rgba(139, 61, 255, 0.22);
    color: var(--chalk) !important;
    transform: none;
}
body.en form.widget_filter_form {
    margin-bottom: 14px;
    padding: 0;
    border-radius: var(--r) !important;
}
body.en form.widget_filter_form .card {
    background: transparent !important;
}

/* ── A service's page (client_services_manage) ──────────────────────── */
body.en .panel-pad {
    padding: 0;
}
body.en .service-info label {
    display: block;
    margin: 0 0 4px;
    font-size: 11.5px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--muted-2);
}
body.en .card-body .service-info h4 {
    margin: 0 0 16px;
    padding-bottom: 14px;
    font-weight: 600;
    font-size: 17px;
    color: var(--chalk);
}
body.en .card-body .service-info h4:last-child {
    margin-bottom: 4px;
    padding-bottom: 0;
    border-bottom: 0 !important;
}
body.en .service-info h4:empty::before {
    content: '—';
    color: var(--muted-2);
}
body.en .service-info.col-border {
    padding-right: 28px;
}
body.en .service-info.col-border + .service-info {
    padding-left: 28px;
}

/* ── Portal home (CMS page) ─────────────────────────────────────────── */
/* Blesta's default portal is rebuilt by structure.pdt (.en-portal): four
   cards with the sidebar's coloured tiles, in the client's language. */
.en-portal {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 240px), 1fr));
    gap: 16px;
    margin-bottom: 24px;
}
body.en .en-portal-card {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-height: 184px;
    padding: 22px 22px 20px;
    border-radius: var(--r-lg);
    background: var(--glass);
    box-shadow: var(--glass-edge), var(--glass-drop);
    color: var(--muted);
    text-decoration: none !important;
    transition: box-shadow 0.18s ease;
}
.en-portal-ic {
    position: relative;
    width: 48px;
    height: 48px;
    margin-bottom: 10px;
    border-radius: 13px;
    background: color-mix(in srgb, var(--c) 15%, transparent);
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--c) 30%, transparent);
    transition: background-color 0.18s ease, transform 0.2s var(--ease-out);
}
.en-portal-ic::after {
    content: '';
    position: absolute;
    inset: 12px;
    background: var(--c);
    -webkit-mask: var(--ic) center / contain no-repeat;
    mask: var(--ic) center / contain no-repeat;
}
.en-portal-card b {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 18px;
    color: var(--chalk);
}
.en-portal-card > span:not([class]) {
    font-size: 15px;
    line-height: 1.5;
}
.en-portal-go {
    position: absolute;
    top: 24px;
    right: 22px;
    font-size: 16px;
    color: var(--muted-2);
    transition: transform 0.2s var(--ease-out), color 0.18s ease;
}
body.en .en-portal-card:hover {
    box-shadow: inset 0 0 0 1.5px color-mix(in srgb, var(--c) 55%, transparent), var(--glass-drop);
}
body.en .en-portal-card:hover .en-portal-ic {
    background: color-mix(in srgb, var(--c) 25%, transparent);
    transform: translateY(-2px) rotate(-4deg);
}
body.en .en-portal-card:hover .en-portal-go {
    color: var(--c);
    transform: translateX(3px);
}
/* a portal page edited in the CMS keeps Blesta's boxes, themed */
body.en .portal-box {
    margin-bottom: 24px;
}
/* the stock portal has four boxes on a three-column grid, which leaves one
   alone on a second row: four across (two on tablets) */
@media (min-width: 992px) {
    body.en .row:has(> .portal-box:nth-child(4):last-child) > .portal-box {
        flex: 0 0 25%;
        max-width: 25%;
    }
}
@media (min-width: 576px) and (max-width: 991.98px) {
    body.en .row:has(> .portal-box:nth-child(4):last-child) > .portal-box {
        flex: 0 0 50%;
        max-width: 50%;
    }
}
body.en .portal-box a {
    display: block;
    height: 100%;
    text-decoration: none !important;
}
body.en .portal-box .card {
    height: 100%;
    margin: 0;
    transition: border-color 0.2s ease, background-color 0.2s ease;
}
body.en .portal-box .card-body {
    padding: 28px 22px;
    text-align: center;
}
body.en .portal-box i {
    display: grid;
    place-items: center;
    width: 72px;
    height: 72px;
    margin: 0 auto 18px;
    padding: 0 !important;
    border-radius: 20px;
    background: rgba(139, 61, 255, 0.16);
    font-size: 30px !important;
    color: var(--brand-hi);
    transition: transform 0.25s var(--ease-out);
}
body.en .portal-box h4 {
    margin-bottom: 8px;
    font-weight: 800;
    font-size: 21px;
}
body.en .portal-box p {
    margin: 0;
    padding: 0;
    border: 0;
    color: var(--muted);
}
body.en .portal-box a:hover .card {
    border-color: rgba(176, 122, 255, 0.4) !important;
    background: rgba(40, 24, 92, 0.6);
}
body.en .portal-box a:hover i {
    transform: translateY(-3px) rotate(-4deg);
}

/* ── Sign-in screens (log in, password reset, 2FA: no header) ───────── */
/* The game panel's sign-in, measured side by side: brand, title, a 372px
   dark glass card, the copyright right under it, all centred in the
   window. Same words as the panel too (plugin language overrides). Sizes
   in px: Blesta sets the root font to 95%, the panel's rem is 16px. */
body.en.en-bare {
    background-color: rgb(var(--en-800));
    background-image: linear-gradient(90deg, rgba(22, 8, 54, 0.9) 0%, rgba(30, 11, 68, 0.74) 45%, rgba(44, 16, 92, 0.42) 100%),
        linear-gradient(180deg, rgba(22, 8, 54, 0.5) 0%, transparent 30%, transparent 62%, rgba(18, 10, 42, 0.96) 100%),
        url('../img/hero-cherry-grove.webp');
    background-size: cover;
    background-position: 60% 50%;
    background-attachment: fixed;
}
body.en.en-bare::before {
    content: '';
    position: fixed;
    top: 0;
    right: 0;
    left: 0;
    z-index: 5;
    height: 2px;
    background: linear-gradient(90deg, var(--brand), var(--pink), var(--gold));
}
body.en-bare .en-shell {
    justify-content: center;
    padding: 32px 0 24px;
}
.en-auth-brand {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
    padding: 0 16px;
    text-align: center;
}
.en-auth-logo img {
    width: 64px;
    height: 60px;
    object-fit: contain;
    filter: drop-shadow(0 4px 18px rgba(139, 61, 255, 0.65));
}
.en-auth-brand .en-word {
    margin-top: 6px;
    font-size: 27px;
}
body.en .en-auth-tag {
    margin: 0;
    font-size: 15.2px;
    color: var(--muted);
}
body.en .en-auth-brand .en-lang-pills {
    margin: 12px 0 0;
}
body.en .en-auth-brand .en-lang-pills button {
    min-width: 0;
    padding: 4px 10px;
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.07);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.14);
    font-size: 11.84px;
    letter-spacing: 0;
}
body.en .en-auth-brand .en-lang-pills button:hover {
    background: rgba(255, 255, 255, 0.13);
}
body.en .en-auth-brand .en-lang-pills button.is-active {
    background: rgba(255, 255, 255, 0.2);
}
body.en-bare .en-main {
    display: flex;
    flex: 0 0 auto;
    justify-content: center;
    padding-bottom: 0;
}
body.en-bare .row.login {
    flex-direction: column;
    align-items: center;
    width: 100%;
    max-width: 392px;
    margin: 0 auto;
    padding-top: 0;
}
body.en-bare .row.login > [class*='col-'] {
    flex: 0 0 auto;
    width: 100%;
    max-width: 100%;
    margin-left: 0;
    padding: 0 10px;
    text-align: center;
}
body.en-bare .row.login > [class*='col-']:first-child h2,
body.en-bare .row.login > [class*='col-']:first-child hr,
body.en-bare .row.login > [class*='col-']:first-child p {
    display: none;
}
body.en-bare .row.login h4 {
    margin: 0;
    padding: 16px 0;
    font-weight: 800;
    font-size: 25.6px;
    line-height: 1.4;
    letter-spacing: -0.01em;
    text-shadow: 0 4px 24px rgba(10, 2, 30, 0.5);
}
/* the card: dark glass (the blur on a layer behind it, so fixed badges
   like reCAPTCHA's aren't pulled onto the card) */
body.en-bare .row.login .panel {
    position: relative;
    isolation: isolate;
    margin-bottom: 0 !important;
    border-radius: 22px !important;
    background: transparent;
    box-shadow: 0 40px 80px -24px rgba(0, 0, 0, 0.7);
    text-align: left;
}
body.en-bare .row.login .panel::before {
    content: '';
    position: absolute;
    inset: 0;
    z-index: -1;
    border-radius: inherit;
    background: rgba(18, 9, 42, 0.82);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.14);
    backdrop-filter: blur(18px) saturate(1.3);
    -webkit-backdrop-filter: blur(18px) saturate(1.3);
    pointer-events: none;
}
body.en-bare .row.login .panel-body {
    padding: 26px 26px 0;
}
body.en-bare .row.login .form-group {
    margin-bottom: 22px;
}
body.en-bare .row.login label {
    margin-bottom: 8px;
    font-size: 11.52px;
    letter-spacing: 0.08em;
}
body.en-bare .row.login .form-control {
    min-height: 48px;
    font-size: 15.2px;
}
body.en-bare .row.login .form-control::placeholder {
    color: transparent;
}
body.en-bare .row.login .checkbox,
body.en-bare .row.login .form-check {
    margin: -6px 0 16px;
}
body.en-bare .row.login .checkbox label,
body.en-bare .row.login .form-check-label,
body.en-bare .row.login label:has(> input[type='checkbox']) {
    font-family: var(--font-body);
    font-weight: 400;
    font-size: 14px;
    letter-spacing: 0;
    text-transform: none;
    color: var(--muted);
}
body.en-bare .row.login .panel-body .btn {
    width: 100%;
    min-height: 47px;
    padding: 12px 20px;
    font-size: 16px;
}
body.en-bare .row.login .panel-body .btn i {
    display: none;
}
/* stacked buttons (password reset: send + back to log in) */
body.en-bare .row.login .panel-body .btn + .btn {
    margin-top: 14px;
}
/* cards without a footer (reset, new password, 2FA) close with the same
   padding they open with */
body.en-bare .row.login .panel:not(:has(.panel-footer)) .panel-body {
    padding-bottom: 26px;
}
body.en-bare .row.login .panel-body > .alert,
body.en-bare .row.login .panel-body .message .alert {
    margin-bottom: 24px;
}
body.en-bare .row.login .panel-footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 6px 22px;
    padding: 22px 26px 26px;
}
body.en-bare .row.login .panel-footer a {
    float: none !important;
    display: inline !important;
    font-family: var(--font-body);
    font-weight: 400;
    font-size: 12px;
    letter-spacing: 0.025em;
    text-transform: uppercase;
    color: var(--muted) !important;
}
body.en-bare .row.login .panel-footer a:hover {
    color: var(--gold) !important;
    text-decoration: none;
}
body.en-bare .en-footer {
    margin: 0 auto;
    padding: 16px 0 0;
    border-top: 0;
}
body.en-bare .en-footer-links {
    display: none;
}
body.en.en-bare .en-copy {
    font-size: 12px;
}

/* ── Order form (Order plugin, Wizard template) ─────────────────────── */
body.en .section-title {
    display: block;
    margin: 0 0 20px;
}
body.en .section-title h3 {
    margin: 0 0 6px;
    font-weight: 800;
    font-size: 28px;
    letter-spacing: -0.015em;
    color: var(--chalk);
}
body.en .section-title p {
    margin: 0;
    font-size: 16px;
    color: var(--muted);
}

/* first step: package groups (endurance.js adds the block) */
body.en .package-groups {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr));
    gap: 16px;
    margin-top: 4px;
    border: 0;
    background: none;
    box-shadow: none;
}
body.en .package-groups .list-group-item {
    --c: var(--brand-hi);
    display: flex;
    align-items: center;
    gap: 18px;
    margin: 0;
    padding: 22px 24px;
    border: 1px solid var(--hairline) !important;
    border: 1px solid color-mix(in srgb, var(--c) 30%, transparent) !important;
    border-radius: 22px !important;
    background: var(--surface-solid);
    background: linear-gradient(170deg, color-mix(in srgb, var(--c) 18%, var(--surface-solid)) 0%, var(--surface-solid) 60%);
    box-shadow: var(--shadow);
    text-decoration: none !important;
    transition: border-color 0.2s ease;
}
body.en .package-groups .list-group-item::after {
    content: '\f054';
    margin-left: auto;
    font-family: 'Font Awesome 5 Free';
    font-weight: 900;
    color: var(--muted-2);
    transition: transform 0.2s var(--ease-out), color 0.2s ease;
}
body.en .package-groups .list-group-item h4 {
    margin: 0;
    font-size: 22px;
    font-weight: 800;
}
body.en .package-groups .list-group-item:hover {
    border-color: color-mix(in srgb, var(--c) 65%, transparent) !important;
}
body.en .package-groups .list-group-item:hover::after {
    transform: translateX(4px);
    color: var(--c);
}
/* the group's block, turning while the card is hovered */
body.en .package-groups .list-group-item .en-cube {
    margin: -8px -4px -8px -8px;
    filter: drop-shadow(0 10px 12px rgba(0, 0, 0, 0.5));
}

/* plan cards (boxes style): the site's PlanCard (Rework .plan), built by
   endurance.js — block in a glow of the plan's colour, name, memory, the
   one-line description, spec tiles, then price, period and button */
body.en .en-plan-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 272px), 1fr));
    gap: 24px;
    align-items: stretch;
    margin: 0;
}
body.en .en-plan-grid > * {
    flex: none;
    width: auto;
    max-width: none;
    margin: 0;
    padding: 0;
}
body.en .en-plan-grid > .col-md-12 {
    grid-column: 1 / -1;
}
body.en .package-boxes {
    display: flex;
}
body.en .package {
    --c: var(--brand-hi);
    position: relative;
    display: flex;
    flex-direction: column;
    width: 100%;
    margin: 0;
    padding: 22px 22px 24px;
    overflow: visible;
    border: 1px solid rgba(255, 255, 255, 0.08) !important;
    border: 1px solid color-mix(in srgb, var(--c) 30%, rgba(255, 255, 255, 0.05)) !important;
    border-radius: 22px !important;
    background: #1a1040;
    background: linear-gradient(180deg, color-mix(in srgb, var(--c) 14%, #22164f) 0%, #1a1040 50%);
    box-shadow: 0 24px 50px -30px rgba(0, 0, 0, 0.8);
    text-align: center;
    opacity: 1;
    cursor: default;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}
body.en .package:hover {
    transform: translateY(-6px);
    box-shadow: 0 30px 60px -28px color-mix(in srgb, var(--c) 60%, transparent);
}
/* the site's "most popular" plan: a thicker ring and a tab on top */
body.en .package.en-plan--popular {
    border: 2px solid var(--c) !important;
    box-shadow: 0 0 0 6px color-mix(in srgb, var(--c) 12%, transparent), 0 30px 70px -26px color-mix(in srgb, var(--c) 70%, transparent);
}
.en-plan-flag {
    position: absolute;
    top: -2px;
    left: 50%;
    z-index: 2;
    padding: 6px 17px 7px;
    border-radius: 0 0 10px 10px;
    background: var(--c);
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 11.5px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    white-space: nowrap;
    color: #06302d;
    transform: translateX(-50%);
}
.en-plan-art {
    position: relative;
    display: grid;
    place-items: center;
    height: 132px;
    margin-bottom: 4px;
}
.en-plan-art::before {
    content: '';
    position: absolute;
    width: 160px;
    height: 160px;
    background: radial-gradient(closest-side, color-mix(in srgb, var(--c) 40%, transparent), transparent);
}
.en-plan-art::after {
    content: '';
    position: absolute;
    bottom: 6px;
    width: 76px;
    height: 12px;
    background: radial-gradient(closest-side, rgba(0, 0, 0, 0.55), transparent);
}
.en-plan-art .en-cube {
    position: relative;
    z-index: 1;
    animation: en-float 5s ease-in-out infinite;
}
body.en .package .package-name {
    padding: 0;
    border: 0;
    background: none;
}
body.en .package .package-name h4 {
    margin: 0;
    padding: 0;
    font-weight: 800;
    font-size: 27px;
    letter-spacing: -0.01em;
    color: var(--chalk);
}
/* the order form's own stylesheet draws a dashed line under every
   paragraph in a card (the site's cards have none) */
body.en .package p {
    border: 0 !important;
}
.en-plan-info {
    display: flex;
    flex: 1 0 auto;
    flex-direction: column;
}
body.en .en-plan-ram {
    margin: 3px 0 0;
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 18px;
    color: var(--c);
}
body.en .en-plan-ram span {
    font-weight: 500;
    font-size: 15px;
    color: var(--muted);
}
body.en .en-plan-desc {
    min-height: 3.2em;
    margin: 9px 0 18px;
    font-size: 15.5px;
    line-height: 1.55;
    color: var(--muted);
}
/* specs as tiles: big figure, small label, icon in the plan's colour */
.en-plan-specs {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 8px;
    margin: 0 0 20px;
    text-align: left;
}
.en-plan-specs > div {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    column-gap: 10px;
    align-items: center;
    padding: 10px 12px;
    border: 1px solid var(--line);
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.045);
}
.en-plan-specs .en-ic {
    grid-row: span 2;
    width: 17px;
    height: 17px;
    color: var(--c);
}
body.en .en-plan-specs dt {
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 10.5px;
    letter-spacing: 0.07em;
    line-height: 1.35;
    text-transform: uppercase;
    overflow-wrap: anywhere;
    color: var(--muted-2);
}
body.en .en-plan-specs dd {
    margin: 0;
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 16px;
    line-height: 1.3;
    color: var(--chalk);
}
.en-plan-specs .is-wide {
    grid-column: 1 / -1;
}
.en-plan-specs .is-off dd {
    font-weight: 500;
    color: var(--muted-2);
}
.en-plan-specs .is-off .en-ic {
    color: #6d6388;
}
body.en .en-plan-extra {
    margin: -8px 0 18px;
    padding: 0;
    list-style: none;
    font-size: 14.5px;
    color: var(--muted);
}
/* bottom: price, billing period, button (a hairline above, like the site) */
.en-plan-buy {
    display: grid;
    gap: 14px;
    margin-top: auto;
    padding-top: 18px;
    border-top: 1px solid var(--line);
}
body.en .en-plan-price {
    margin: 0;
    font-family: var(--font-display);
    font-weight: 800;
    font-size: 38px;
    line-height: 1;
    letter-spacing: -0.02em;
    color: var(--chalk);
}
body.en .en-plan-price b {
    font-weight: 800 !important;
}
body.en .en-plan-price span {
    margin-left: 4px;
    font-family: var(--font-body);
    font-weight: 500;
    font-size: 15px;
    letter-spacing: 0;
    color: var(--muted-2);
}
body.en .package .price-box {
    padding: 0 !important;
    border: 0;
    background: none;
}
body.en .package .price-box.en-plan-single {
    display: none;
}
body.en .package .price-box .instructions {
    margin-bottom: 6px;
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 11px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--muted-2);
}
body.en .package .price-box .instructions i {
    display: none;
}
body.en .package .price-box select {
    min-height: 40px;
    font-size: 14px;
}
body.en .package .order {
    padding: 0 !important;
    border: 0 !important;
    background: none !important;
}
/* the site's plan button: a ring in the plan's colour; gold on the most
   popular plan */
body.en .package .order .btn {
    padding: 14px 18px;
    border-radius: 12px !important;
    font-size: 16px;
    transition: transform 0.12s ease, box-shadow 0.12s ease, background-color 0.2s ease;
}
body.en .package .unselected-btn .btn {
    background: rgba(255, 255, 255, 0.05) !important;
    color: var(--chalk) !important;
    box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--c) 60%, transparent), 0 4px 0 rgba(0, 0, 0, 0.3) !important;
}
body.en .package .unselected-btn .btn:hover {
    background: color-mix(in srgb, var(--c) 18%, transparent) !important;
    transform: translateY(-2px);
}
body.en .package.en-plan--popular .unselected-btn .btn {
    background: var(--gold) !important;
    color: var(--gold-ink) !important;
    box-shadow: 0 4px 0 var(--gold-lo), 0 12px 28px -8px rgba(255, 180, 40, 0.55) !important;
}
body.en .package.en-plan--popular .unselected-btn .btn:hover {
    background: var(--gold-hi) !important;
}
body.en .package .unselected-btn .btn:active {
    transform: translateY(3px);
}
/* each card orders its own plan: its button is always "Order …" */
body.en .en-plans-direct .package .selected-btn {
    display: none !important;
}
body.en .en-plans-direct .package .unselected-btn {
    display: block !important;
}
@media (prefers-reduced-motion: reduce) {
    body.en .package:hover {
        transform: none;
    }
}
/* cart / continue bar under the plans */
body.en .package-boxes ~ .col-md-12 .btn-group {
    gap: 10px;
}
body.en .package-boxes ~ .col-md-12 .btn-group > .btn {
    border-radius: 14px !important;
    border-left: 0;
}
body.en .package-boxes ~ .col-md-12 small {
    display: block;
    margin-top: 10px;
    text-align: right;
}
/* each card orders its own plan (endurance.js): the bar keeps the cart */
body.en .en-plans-direct .package-boxes ~ .col-md-12 button[type='submit'],
body.en .en-plans-direct .package-boxes ~ .col-md-12 small {
    display: none;
}
body.en .en-plans-direct .package.en-plan--sending .order .btn {
    opacity: 0.7;
    pointer-events: none;
}
/* the list of order forms (/order/forms/): one card per form, its name and
   button on one line, centred on each other */
body.en .order-listing {
    margin-bottom: 16px;
}
body.en .order-listing .card {
    padding: 22px 26px !important;
}
body.en .order-listing .row {
    align-items: center;
    row-gap: 6px;
}
body.en .order-listing .head-item h3 {
    margin: 0;
    font-weight: 800;
    font-size: 24px;
}
body.en .order-listing .col-sm-12:empty,
body.en .order-listing .col-sm-12:not(:has(*)) {
    display: none;
}
body.en .order-listing .col-sm-12 {
    color: var(--muted);
}
body.en .order-listing .head-item .btn {
    float: right;
}
/* affiliate sign-up: the program's text, then the button with room above */
body.en .card-body p + p {
    margin-top: 10px;
}
body.plugin-orderclient-affiliates-signup .card-body {
    padding: 26px 28px 28px;
    font-size: 16.5px;
    line-height: 1.65;
}
body.plugin-orderclient-affiliates-signup .card-body p.text-center {
    margin: 24px 0 0;
}
/* cart and checkout summary boxes */
body.en .card-order {
    padding: 18px 22px;
    font-size: 15px;
}
body.en .card-order .total-due h4 {
    font-weight: 800;
    font-size: 30px;
}

/* ── Support: tickets and knowledge base (Support Manager plugin) ───── */
/* new ticket, step 1: departments as cards you can click anywhere */
body.en .card-body .list-group > a.list-group-item {
    position: relative;
    display: block;
    height: 100%;
    padding: 20px 52px 20px 22px !important;
    border: 1px solid var(--hairline) !important;
    border-radius: var(--r) !important;
    background: var(--surface-inset) !important;
    color: var(--muted) !important;
    text-decoration: none !important;
    transition: border-color 0.2s ease, background-color 0.2s ease;
}
body.en .card-body .list-group > a.list-group-item::after {
    content: '\f054';
    position: absolute;
    top: 50%;
    right: 22px;
    font-family: 'Font Awesome 5 Free';
    font-weight: 900;
    font-size: 13px;
    color: var(--muted-2);
    transform: translateY(-50%);
    transition: transform 0.2s var(--ease-out), color 0.2s ease;
}
body.en .card-body .list-group > a.list-group-item:hover {
    border-color: rgba(176, 122, 255, 0.45) !important;
    background: rgba(139, 61, 255, 0.1) !important;
}
body.en .card-body .list-group > a.list-group-item:hover::after {
    color: var(--brand-hi);
    transform: translate(3px, -50%);
}
body.en .card-body .list-group > a.list-group-item h4 {
    margin: 0 0 4px;
    font-weight: 700;
    font-size: 18px;
    color: var(--chalk);
}
body.en .card-body .list-group > a.list-group-item p {
    margin: 0;
    font-size: 15px;
}
body.en .card-body .row > [class*='col-'] > .list-group.mb-3 {
    height: calc(100% - 1rem);
}
/* …and no card around those cards */
body.en .card-blesta:has(> .card-content:first-child > .card-body > .row > [class*='col-'] > .list-group > a.list-group-item) {
    overflow: visible;
    border: 0 !important;
    background: transparent;
    box-shadow: none;
}
body.en .card-blesta:has(> .card-content:first-child > .card-body > .row > [class*='col-'] > .list-group > a.list-group-item) > .card-content > .card-body {
    padding: 0;
}
body.en .card-blesta:has(> .card-content:first-child > .card-body > .row > [class*='col-'] > .list-group > a.list-group-item) .list-group > a.list-group-item {
    background: var(--surface) !important;
    box-shadow: var(--shadow);
}

/* a ticket's summary box: the same label / value pairs as a service */
body.en .card-body > .card.bg-light label {
    margin: 0 0 4px;
    font-size: 11.5px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--muted-2);
}
body.en .card-body > .card.bg-light p {
    margin: 0;
    font-size: 15.5px;
    color: var(--chalk);
}
body.en .card-body > .card.bg-light hr {
    margin: 14px 0;
}

/* a ticket: replies sit on the ticket's card, no box around each one */
body.en .row .ticket-reply {
    margin: 0 0 14px;
    padding: 0;
    overflow: hidden;
    border: 0;
    border-radius: var(--r);
    background: var(--surface-inset);
}
body.en .row .ticket-reply div.top-bar {
    padding: 11px 20px;
    border-radius: 0;
    background: rgba(255, 255, 255, 0.03);
}
body.en .row .ticket-reply div.top-bar.staff-reply {
    background: linear-gradient(90deg, rgba(139, 61, 255, 0.24), rgba(139, 61, 255, 0.04));
    box-shadow: inset 3px 0 0 var(--brand-hi);
}
body.en .row .ticket-reply div.top-bar.staff-reply + .replier {
    border-color: var(--hairline);
}
/* "The status has been changed to…": a line in the timeline */
body.en .card-body > .marbot10 {
    padding: 0;
}
body.en .card-body > .marbot10 > .alert {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 14px;
    padding: 4px 4px 4px 2px;
    border: 0 !important;
    background: transparent !important;
    font-size: 14px;
    color: var(--muted-2);
}
body.en .card-body > .marbot10 > .alert::before {
    content: '\f05a';
    font-family: 'Font Awesome 5 Free';
    font-weight: 900;
    color: var(--teal);
}
body.en .card-body > .marbot10 > .alert p {
    margin: 0;
    color: inherit;
}
body.en .card-body > .marbot10 > .alert em {
    font-style: normal;
    color: rgba(203, 191, 224, 0.6);
}
body.en .row .ticket-reply div.top-bar p {
    margin: 0;
    font-family: var(--font-display);
    font-style: normal;
    font-weight: 500;
    font-size: 13.5px;
    color: var(--muted);
}
body.en .row .ticket-reply div.replier {
    padding-top: 6px;
    padding-bottom: 14px;
    border-right: 1px solid var(--hairline);
}
body.en .row .ticket-reply div.replier img {
    width: 60px !important;
    height: 60px;
    margin: 14px auto 8px;
    padding: 0;
    object-fit: cover;
    border: 0;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.06);
}
body.en .row .ticket-reply div.replier strong {
    font-family: var(--font-display);
    font-weight: 700;
}
body.en .row .ticket-reply div.response {
    padding: 16px 22px;
    color: var(--chalk);
}
body.en .row .ticket-reply div.response p {
    color: var(--chalk);
}
/* on a phone the author goes above the message, not in a narrow column */
@media (max-width: 575.98px) {
    body.en .row .ticket-reply div.replier {
        display: flex;
        align-items: center;
        gap: 12px;
        flex: 0 0 100%;
        max-width: 100%;
        padding: 12px 18px;
        border-right: 0;
        border-bottom: 1px solid var(--hairline);
        text-align: left;
    }
    body.en .row .ticket-reply div.replier img {
        width: 38px !important;
        height: 38px;
        margin: 0;
    }
    body.en .row .ticket-reply div.replier p {
        margin: 0;
        text-align: left !important;
    }
    body.en .row .ticket-reply div.response {
        flex: 0 0 100%;
        max-width: 100%;
        padding: 14px 18px;
    }
}
/* file drop area and the rich text editor (Toast UI) */
body.en .dropzone,
body.en form.dropzone {
    border: 0 !important;
    background: transparent;
}
body.en .dz-message,
body.en .drag-drop-files {
    border: 1.5px dashed var(--hairline-strong) !important;
    border-radius: var(--r);
    background: rgba(255, 255, 255, 0.02) !important;
    color: var(--muted-2);
}
body.en .toastui-editor-defaultUI {
    border: 1px solid rgba(255, 255, 255, 0.11);
    border-radius: var(--r);
    overflow: hidden;
    background: var(--field);
}
body.en .toastui-editor-defaultUI-toolbar,
body.en .toastui-editor-toolbar {
    border-bottom: 1px solid var(--hairline) !important;
    background: rgba(255, 255, 255, 0.03) !important;
}
body.en .toastui-editor-toolbar-icons {
    border-color: transparent;
    background-color: transparent;
    filter: invert(0.85) hue-rotate(180deg);
}
body.en .toastui-editor-toolbar-icons:not(:disabled):hover {
    border-color: var(--hairline-strong);
    background-color: rgba(0, 0, 0, 0.15);
}
body.en .toastui-editor-toolbar-divider {
    background-color: var(--hairline-strong);
}
/* Blesta's "preview" button in the editor toolbar (a Font Awesome eye) */
body.en .toastui-editor-toolbar button.fas {
    border-color: transparent !important;
    border-radius: 8px;
    background: transparent !important;
    font-size: 15px;
    color: rgba(236, 230, 246, 0.8);
}
body.en .toastui-editor-toolbar button.fas:hover,
body.en .toastui-editor-toolbar button.fas.active {
    background: rgba(139, 61, 255, 0.25) !important;
    color: #fff;
}
body.en .toastui-editor-tooltip {
    border-radius: 8px;
    background: var(--surface-raised);
    font-family: var(--font-display);
}
body.en .toastui-editor-tooltip .arrow {
    background: var(--surface-raised);
}
body.en .toastui-editor-ww-container,
body.en .toastui-editor-md-container,
body.en .toastui-editor-main,
body.en .toastui-editor-contents {
    background: transparent !important;
}
body.en .toastui-editor-contents,
body.en .toastui-editor-contents p,
body.en .ProseMirror {
    color: var(--chalk) !important;
    font-family: var(--font-body);
    font-size: 15.5px;
}
body.en .toastui-editor-md-container .toastui-editor-md-preview {
    border-left-color: var(--hairline) !important;
}
body.en .toastui-editor-mode-switch {
    border-top: 1px solid var(--hairline) !important;
    background: rgba(255, 255, 255, 0.02) !important;
}
body.en .toastui-editor-mode-switch .tab-item {
    border-color: var(--hairline) !important;
    background: transparent !important;
    font-family: var(--font-display);
    color: var(--muted-2) !important;
}
body.en .toastui-editor-mode-switch .tab-item.active {
    background: rgba(139, 61, 255, 0.2) !important;
    color: var(--chalk) !important;
}
body.en .toastui-editor-popup,
body.en .toastui-editor-context-menu,
body.en .toastui-editor-dropdown-toolbar {
    border: 1px solid rgba(176, 122, 255, 0.3);
    border-radius: var(--r);
    background: var(--surface-raised);
    box-shadow: 0 20px 40px -16px rgba(0, 0, 0, 0.8);
    color: var(--chalk);
}
body.en .toastui-editor-popup-body input[type='text'],
body.en .toastui-editor-popup-body label {
    color: var(--chalk);
}
/* knowledge base: a big search field (no box around it) and category cards */
body.en .card.card-kb {
    margin-bottom: 28px;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
    box-shadow: none;
}
body.en .card-kb .input-group {
    flex-wrap: nowrap;
    padding: 6px;
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 16px;
    background: var(--field);
    box-shadow: var(--shadow);
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
body.en .card-kb .input-group:focus-within {
    border-color: rgba(176, 122, 255, 0.7);
    box-shadow: 0 0 0 3px rgba(139, 61, 255, 0.22), var(--shadow);
}
body.en .card-kb .form-control {
    min-height: 46px;
    border: 0;
    background: transparent !important;
    box-shadow: none !important;
    font-size: 16px;
}
body.en .card-kb .input-group-append .btn {
    border-radius: 12px !important;
    padding: 0 20px;
}
body.en .section-title h3 i {
    margin-right: 4px;
    font-size: 0.8em;
    color: var(--brand-hi);
}
body.en .section-title p {
    font-family: var(--font-body);
    font-style: normal;
    font-weight: 400;
}
body.en .categories .row > [class*='col-'] {
    margin-bottom: 16px;
}
body.en .categories .row > [class*='col-'] > div {
    position: relative;
    height: 100%;
    margin: 0;
    padding: 18px 20px !important;
    border: 1px solid var(--hairline) !important;
    border-radius: var(--r) !important;
    background: var(--surface) !important;
    box-shadow: var(--shadow);
    font-family: var(--font-display);
    font-weight: 600;
    color: var(--muted-2);
    transition: border-color 0.2s ease;
}
body.en .categories .row > [class*='col-'] > div:hover {
    border-color: rgba(176, 122, 255, 0.45) !important;
}
body.en .categories .row > [class*='col-'] > div > i {
    margin-right: 6px;
    color: var(--brand-hi);
}
body.en .categories a {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 17px;
    color: var(--chalk);
}
/* the whole card opens the category */
body.en .categories a::after {
    content: '';
    position: absolute;
    inset: 0;
}
body.en .categories p {
    margin: 6px 0 0;
    font-family: var(--font-body);
    font-weight: 400;
    font-size: 15px;
    color: var(--muted);
}
body.en .breadcrumb {
    margin: 16px 0 24px;
    padding: 8px 16px;
    border: 0 !important;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.05);
    font-family: var(--font-display);
    font-weight: 500;
    font-size: 13.5px;
}
body.en .breadcrumb-item,
body.en .breadcrumb-item.active {
    color: var(--muted-2);
}
body.en .breadcrumb-item + .breadcrumb-item::before {
    color: var(--muted-2);
}
body.en .rate {
    margin-top: 24px;
    padding: 20px 22px;
    border: 1px solid var(--hairline);
    border-radius: var(--r-lg);
    background: var(--surface);
}
body.en .rate h5 {
    font-size: 16px;
}
body.en .rate .btn.green:hover {
    background: rgba(52, 222, 122, 0.3);
    color: #fff !important;
}
body.en .rate .btn.red:hover {
    background: rgba(255, 77, 90, 0.3);
    color: #fff !important;
}

/* ── Footer: the panel's quiet line, with the site's links ─────────── */
.en-footer {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    margin-top: 8px;
    padding-top: 22px;
    padding-bottom: 28px;
    border-top: 1px solid var(--line);
    text-align: center;
}
.en-footer-links {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 4px 18px;
}
body.en .en-footer-links a {
    font-family: var(--font-display);
    font-weight: 500;
    font-size: 13.5px;
    color: var(--muted-2) !important;
    text-decoration: none !important;
    transition: color 0.15s ease;
}
body.en .en-footer-links a:hover {
    color: var(--chalk) !important;
}
body.en .en-footer-links .en-discord:hover {
    color: #aab3ff !important;
}
body.en .en-copy {
    margin: 0;
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 0.75rem;
    letter-spacing: 0.04em;
    color: rgba(203, 191, 224, 0.45) !important;
}

/* ── Motion ─────────────────────────────────────────────────────────── */
@keyframes en-fade {
    from {
        opacity: 0;
    }
}
@keyframes en-rise {
    from {
        opacity: 0;
        transform: translateY(10px);
    }
    to {
        opacity: 1;
        transform: none;
    }
}
.en-title h1,
.en-main > .row {
    animation: en-rise 0.45s var(--ease-out) backwards;
}
@media (prefers-reduced-motion: reduce) {
    body.en *,
    body.en *::before,
    body.en *::after {
        animation: none !important;
        transition: none !important;
    }
}
