:root {
    --primary-color: #160177;
    --secondary-color: #76d6ff;

    /* Bootstrap ships --bs-code-color: #d63384, which is 4.27:1 on the .bg-light
       sections (#f8f9fa) and 4.50:1 on white — i.e. failing in one place and
       passing by 0.005 in the other, at ~12px. Inline <code> is small text and
       needs 4.5:1, so this darkens the same pink to 4.98:1 / 5.25:1. */
    --bs-code-color: #c62a77;
}

body {

    font-family: 'Exo', sans-serif;
    background-color: #ecf4fb;
    color: #333;
}

/* Skip link (WCAG 2.4.1). Emitted first in <body> by website_layouts/header.
   Positioned off-canvas rather than display:none — a hidden element is not
   focusable, so it has to stay in the tab order to work at all. */
.skip-link {
    position: absolute;
    left: -9999px;
    top: 0;
    z-index: 2000;
    background: #160177;
    color: #ffffff;
    padding: 12px 20px;
    border-radius: 0 0 8px 0;
    font-weight: 600;
    text-decoration: none;
}

.skip-link:focus {
    left: 0;
    outline: 3px solid #76d6ff;
    outline-offset: 2px;
}

/* The navbar is sticky, so an un-offset jump lands the heading underneath it. */
#main-content {
    scroll-margin-top: 90px;
}

.otr-card {
    background: white;
    border-radius: 15px;
    border: 1px solid #0057b335;
    padding: 20px;
    box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1);
}

.text_fix_300px {
    margin-right: 10px;
    font-weight: 500;
    color: #01072e;
}

/* ── Marketing navbar: floating dark capsule ───────────────────────────────
   Sits on the dark hero gradient (see website_layouts/product_hero.blade.php)
   and keeps its own background once the sticky bar scrolls onto the light page
   body. Only the marketing pages load this file — the customer, reseller and
   admin panels use css/styles.css — so none of this reaches them. */
.navbar {
    background-color: transparent;
    box-shadow: none;
    /* Side padding keeps the capsule off the screen edges below 576px, where
       Bootstrap's .container is full-width and the rounded ends would other-
       wise be clipped flat. Above that the container's own max-width centres
       it and this padding is never reached. */
    padding: 14px 12px 0;
}

.navbar>.container {
    background: rgba(11, 17, 48, .82);
    border: 1px solid rgba(255, 255, 255, .09);
    border-radius: 44px;
    /* Less padding on the right than the left: the CTA is a filled pill and
       carries its own visual weight, so equal padding reads lopsided. */
    padding: 9px 12px 9px 22px;
    box-shadow: 0 10px 30px rgba(3, 6, 20, .45);
    -webkit-backdrop-filter: blur(14px);
    backdrop-filter: blur(14px);
}

/* The bar floats ON the hero rather than sitting in a band above it: the hero
   gradient is not flat (a teal orb bleeds in from the left), so no solid strip
   behind the capsule can match it. Pulling the hero up under the transparent
   bar is the only seamless option.

   Scoped to the three dark hero partials on purpose — /faq, /policy, /status,
   /wiki and the blog posts open with light content, and sliding that under the
   bar would hide it. Those pages keep the bar in normal flow. */
/* How far the hero is pulled up. Deliberately a little MORE than the bar's real
   height: overshooting just hides a few extra pixels of gradient behind the
   capsule, while undershooting leaves a pale line of page background above it —
   which is exactly what happened on phones, where the stacked bar is taller. */
:root {
    --nav-overlap: 88px;
}

@media (max-width: 991.98px) {
    :root {
        --nav-overlap: 104px;
    }
}

#main-content .hx,
#main-content .ph-hero,
#main-content .px-hero {
    margin-top: calc(-1 * var(--nav-overlap));
}

/* …and give the hero's own content back the room the bar now covers. Selectors
   carry #main-content because each partial ships its own <style> block, which
   the browser applies after this file at equal specificity. */
#main-content .hx .hx-inner {
    padding-top: calc(2rem + var(--nav-overlap));
}

#main-content .ph-hero {
    padding-top: calc(2.5rem + var(--nav-overlap));
}

#main-content .px-hero {
    padding-top: calc(3rem + var(--nav-overlap));
}

/* The coming-soon banner sits between the bar and <main>, so on those pages the
   hero must not slide up over it. */
.coming-soon-bar+#main-content .hx,
.coming-soon-bar+#main-content .ph-hero,
.coming-soon-bar+#main-content .px-hero {
    margin-top: 0;
}

.navbar-brand {
    font-weight: 700;
    color: #fff !important;
}

/* Neutral links on purpose. Every item used to be the same accent blue as the
   brand and the button, so nothing led — the accent is spent on hover and the
   current page only, which leaves the single CTA as the one thing that pops. */
.nav-link {
    color: #c7ccd6 !important;
    font-weight: 500;
    margin: 0 6px;
    transition: color .2s;
}

.nav-link:hover,
.nav-link:focus {
    color: #ffffff !important;
}

.nav-link.active {
    color: var(--secondary-color) !important;
    font-weight: 600;
}

/* The bar's own CTA: fully round, brighter than the site-wide indigo so it
   reads as the primary action against the dark capsule. Scoped to .navbar so
   buttons elsewhere keep the asymmetric house style. */
/* White-on-blue has to clear 4.5:1 (WCAG 1.4.3). The old #2f8fff measured
   3.23:1 and the old lighter hover #57a6ff fell to 2.53:1 — the primary CTA got
   harder to read exactly as the pointer landed on it. #1565c8 is 5.63:1 and
   hover now goes darker, not lighter, because brightening a mid-blue always
   costs contrast against white text. */
.navbar .prv_btn {
    background-color: #1565c8;
    border-color: #1565c8;
    border-radius: 999px;
    padding: 9px 22px;
}

.navbar .prv_btn:hover,
.navbar .prv_btn:focus {
    background-color: #0f5cbd;
    border-color: #0f5cbd;
}

.navbar-toggler {
    border-color: rgba(255, 255, 255, .18);
}

@media (max-width: 991.98px) {

    .navbar>.container {
        border-radius: 30px;
        padding: 10px 12px 10px 18px;
        /* Anchor for the floating menu below. */
        position: relative;
    }

    /* The open menu is a panel hanging BELOW the capsule, not extra height
       inside it. In flow it grew the bar, which pushed the hero down the page
       and exposed a band of light background either side of it — the menu
       must not move the page it sits on. */
    .navbar-collapse {
        position: absolute;
        top: calc(100% + 8px);
        left: 0;
        right: 0;
        z-index: 1080;
        background: rgba(11, 17, 48, .96);
        border: 1px solid rgba(255, 255, 255, .09);
        border-radius: 20px;
        padding: 8px 18px 16px;
        box-shadow: 0 18px 40px rgba(3, 6, 20, .55);
        -webkit-backdrop-filter: blur(14px);
        backdrop-filter: blur(14px);
    }

    /* Bootstrap animates height on .collapsing; without this the panel is
       visible but zero-height mid-transition and the shadow flickers. */
    .navbar-collapse.collapsing {
        overflow: hidden;
    }

    .nav-link {
        margin: 0;
        padding: 9px 2px;
    }

    .navbar .prv_btn {
        display: block;
        text-align: center;
    }
}

.btn-primary {
    background-color: var(--primary-color);
    border-color: var(--primary-color);
    font-weight: 400;
    font-size: 14px;
    border-radius: 20px 5px 20px 5px;
    padding-left: 15px;
    padding-right: 15px;
}

.btn-primary:hover {
    background-color: #0dadec;
    border-color: #0dadec;
}

.btn-danger {
    background-color: #d9534f;
    border-color: #d9534f   ;
    font-weight: 400;
    font-size: 14px;
    border-radius: 20px 5px 20px 5px;
    padding-left: 15px;
    padding-right: 15px;
}

.btn-success {
    background-color: #30974f;
    font-weight: 400;
    font-size: 14px;
    border-radius: 20px 5px 20px 5px;
    padding-left: 15px;
    padding-right: 15px;
}

.btn-success:hover {
    background-color: #23703b;
}

.btn-secondary {
    background-color: #5d5959;
    border-color: #515150   ;
    font-weight: 400;
    font-size: 14px;
    border-radius: 20px 5px 20px 5px;
    padding-left: 15px;
    padding-right: 15px;
}


.btn-outline-primary {
    color: var(--primary-color);
    border-color: var(--primary-color);
    font-weight: 600;
}

.btn-outline-primary:hover {
    background-color: var(--primary-color);
    border-color: var(--primary-color);
}

.hero {
    position: relative;
    height: 80vh;
    background: linear-gradient(135deg, #090144, #054e9c);

}


/* Legacy home-hero text classes (.hero_title/.hero_sub_title/.hero_desc) removed
   — the home hero now uses the .hx slider component defined in home.blade.php. */

.container_hero {
    height: 75vh;
    display: flex;
    align-items: center;
}

.wave {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 100px;
    -moz-transform: scaleY(-1);
    -o-transform: scaleY(-1);
    -webkit-transform: scaleY(-1);
    transform: scaleY(-1);
    filter: FlipV;
    -ms-filter: "FlipV";

}

.wave svg {
    width: 100%;
    height: 100%;
}

.feature-icon {
    font-size: 2.5rem;
    color: var(--secondary-color);
    margin-bottom: 20px;
}

.section-title {
    color: var(--primary-color);
    font-weight: 700;
    margin-bottom: 30px;
    text-align: center;
    width: 100%;
}

.pricing-card {
    border-radius: 18px;
    border: 1px solid #e7edf6;
    box-shadow: 0 10px 30px -16px rgba(9, 1, 68, 0.18);
    transition: transform .25s ease, box-shadow .25s ease;
    margin-bottom: 30px;
}

.pricing-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 26px 50px -22px rgba(9, 1, 68, 0.30);
}

.pricing-card:hover {
    transform: translateY(-10px);
    box-shadow: 0 15px 30px rgba(0, 0, 0, 0.1);
}

.pricing-header {
    background: linear-gradient(135deg, #16265f, #0b1130);
    color: #fff;
    border-radius: 18px 18px 0 0;
    padding: 22px 20px;
}

.popular-plan {
    border: 2px solid var(--secondary-color);
    position: relative;
    box-shadow: 0 20px 46px -20px rgba(118, 214, 255, 0.55);
}

.popular-badge {
    position: absolute;
    top: -10px;
    right: 20px;
    background-color: var(--secondary-color);
    color: var(--primary-color);
    padding: 5px 15px;
    border-radius: 20px;
    font-weight: 700;
    font-size: 0.8rem;
}

.price {

    font-size: 2.5rem;
    font-weight: 700;
    color: var(--primary-color);
}

.price-period {
    color: #777;
    font-weight: 500;
    font-size: 1rem;
}

.feature-list {
    list-style: none;
    padding: 0;
}

.feature-list li {
    padding: 8px 0;
    position: relative;
}

.feature-list li:before {
    content: '\f00c';
    font-family: 'Font Awesome 6 Free';
    font-weight: 900;
    color: var(--secondary-color);
    position: relative;
    margin-right: 5px;

}

/* CDN pay-as-you-go overage strip (inside product-summary-card) */
.cdn-overage {
    border-top: 1px solid rgba(0, 0, 0, 0.08);
    padding-top: 18px;
}

.cdn-overage-label {
    text-transform: uppercase;
    letter-spacing: 1px;
    font-size: 0.78rem;
    font-weight: 700;
    color: #054e9c;
}

.cdn-overage-label i {
    margin-right: 6px;
}

.cdn-overage-item {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    padding: 8px 14px;
    border-radius: 12px;
    background: rgba(5, 78, 156, 0.05);
    font-size: 0.95rem;
    color: #2b2b3a;
}

.cdn-overage-item strong {
    color: #090144;
    font-weight: 800;
}

.cdn-overage-item strong small {
    font-weight: 500;
    color: #595966;
    margin-left: 2px;
}

/* ===== Pricing tabs ===== */
.pricing-tabs {
    display: inline-flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 6px;
    padding: 6px;
    background: #f1f3f9;
    border-radius: 16px;
    width: auto;
}

.pricing-tabs .nav-link {
    border: none;
    background: transparent;
    color: var(--primary-color) !important;
    font-weight: 600;
    border-radius: 12px;
    padding: 10px 22px;
    margin: 0;
    transition: all 0.25s ease;
    white-space: nowrap;
}

.pricing-tabs .nav-link i {
    margin-right: 6px;
    opacity: 0.85;
}

.pricing-tabs .nav-link:hover {
    background: #e3e7f3;
    color: var(--primary-color) !important;
}

.pricing-tabs .nav-link.active,
.pricing-tabs .nav-link.active:hover {
    background: linear-gradient(135deg, #090144, #054e9c);
    color: #fff !important;
    box-shadow: 0 6px 14px rgba(9, 1, 68, 0.25);
}

.pricing-tabs .nav-link.active i {
    opacity: 1;
}

/* ===== Product summary card (VPS / Hosting / Mailbox) ===== */
.product-summary-card {
    border: none;
    border-radius: 24px;
    overflow: hidden;
    box-shadow: 0 10px 30px rgba(9, 1, 68, 0.08);
}

.product-summary-body {
    padding: 36px 40px;
}

.product-summary-icon {
    width: 52px;
    height: 52px;
    flex: 0 0 52px;
    border-radius: 14px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1.4rem;
    color: #fff;
    background: linear-gradient(135deg, #090144, #054e9c);
}

.product-feature {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    font-size: 0.97rem;
    color: #2b2b3a;
}

.product-feature i {
    color: #054e9c;
    margin-top: 3px;
    width: 18px;
    text-align: center;
    flex: 0 0 18px;
}

.product-summary-price {
    background: linear-gradient(135deg, #090144, #054e9c);
    color: #fff;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 36px 24px;
}

.product-summary-price .price-label {
    text-transform: uppercase;
    letter-spacing: 1px;
    font-size: 0.78rem;
    opacity: 0.8;
}

.product-summary-price .price-amount {
    display: inline-flex;
    align-items: flex-start;
    line-height: 1;
    margin: 6px 0 2px;
}

.product-summary-price .price-currency {
    font-size: 1.4rem;
    font-weight: 700;
    margin-top: 6px;
    color: #fff;
}

.product-summary-price .price {
    font-size: 3rem;
    font-weight: 800;
    color: #fff;
}

.product-summary-price .price-period {
    color: rgba(255, 255, 255, 0.8);
}

.product-summary-price .prv_btn {
    background-color: var(--secondary-color);
    border-color: var(--secondary-color);
    color: var(--primary-color);
    font-weight: 700;
}

.product-summary-price .prv_btn:hover {
    filter: brightness(1.05);
}

@media (max-width: 767.98px) {
    .product-summary-body { padding: 28px 24px; }
    .product-summary-price { padding: 28px 24px; }
}

footer {

    background-color: #0c0146;
    color: white;
    padding: 20px 0 20px;
}

.footer-links a {
    color: #9c9b9b;
    text-decoration: none;
    display: block;
    margin-bottom: 10px;
    transition: all 0.3s;
    font-size: 16px;
}

.footer-links a:hover {
    color: #74b7f2;
    text-decoration: none;
}

.social-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background-color: rgba(255, 255, 255, 0.1);
    color: white;
    margin-right: 10px;
    transition: all 0.3s;
}

.social-icon:hover {
    background-color: var(--secondary-color);
    color: var(--primary-color);
}

.gradient-box {
    height: 350px;
    border: 1px solid #76baed;
    border-radius: 80px 5px 80px 5px;
    background: linear-gradient(135deg, #090144, #054e9c);
    display: flex;
    justify-content: center;
    align-items: center;
    color: white;
    text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}

.gradient-box-lite {
    background-color: #fff;
    min-height: 250px;
    border: 1px solid #e7edf6;
    border-radius: 18px;
    display: flex;
    justify-content: center;
    align-items: center;
    color: rgb(5, 1, 29);
    box-shadow: 0 6px 20px -10px rgba(9, 1, 68, 0.16);
    transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease;
    position: relative;
    overflow: hidden;
}

.gradient-box-lite::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: linear-gradient(90deg, #160177, #2b8fd6);
    opacity: 0;
    transition: opacity .22s ease;
}

.gradient-box-lite:hover {
    transform: translateY(-6px);
    box-shadow: 0 22px 44px -18px rgba(9, 1, 68, 0.30);
    border-color: #d7e2f2;
}

.gradient-box-lite:hover::before {
    opacity: 1;
}



.prv_btn {
    border-radius: 18px 5px 18px 5px;
    padding: 10px;
}

/* Features section */
.feat-category {
    padding: 20px 0;
}

.feat-cat-label {
    padding-right: 2rem;
    margin-bottom: 1.5rem;
}

.feat-cat-icon {
    width: 52px;
    height: 52px;
    border-radius: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.3rem;
    margin-bottom: 14px;
    color: #fff;
}

.feat-cat-icon--blue   { background: linear-gradient(135deg, #2563eb, #3b82f6); }
.feat-cat-icon--red    { background: linear-gradient(135deg, #dc2626, #ef4444); }
.feat-cat-icon--green  { background: linear-gradient(135deg, #059669, #10b981); }
.feat-cat-icon--teal   { background: linear-gradient(135deg, #0284c7, #0ea5e9); }
.feat-cat-icon--purple { background: linear-gradient(135deg, #7c3aed, #8b5cf6); }
.feat-cat-icon--orange { background: linear-gradient(135deg, #d97706, #f59e0b); }

.feat-cat-title {
    font-weight: 700;
    color: var(--primary-color);
    margin-bottom: 6px;
}

.feat-item {
    display: flex;
    gap: 14px;
    align-items: flex-start;
}

.feat-icon {
    font-size: 1.2rem;
    width: 1.5rem;
    flex-shrink: 0;
    margin-top: 3px;
}

/* 2-line clamp on feature descriptions */
.feat-desc-outer {
    position: relative;
    line-height: 1.45;
}

.feat-desc {
    overflow: hidden;
    max-height: calc(2 * 1.45em);
    line-height: 1.45;
    margin-bottom: 0 !important;
}

/* Gradient fade that masks the raw cut-off text */
.feat-desc-outer::after {
    content: '';
    position: absolute;
    bottom: 0;
    right: 0;
    width: 5.5rem;
    height: 1.45em;
    background: linear-gradient(to right, transparent, #f8f9fa 55%);
    pointer-events: none;
}

/* 'More…' sits inline at the end of line 2 */
.feat-more {
    position: absolute;
    bottom: 0;
    right: 0;
    z-index: 1;
    font-size: 0.7rem;
    color: #6b7280;
    font-weight: 600;
    cursor: pointer;
    text-decoration: none;
    padding-left: 2px;
    line-height: 1.45;
    background: transparent;
}

.feat-more:hover {
    color: #111827;
    text-decoration: underline;
}

/* Popover for full feature description */
.feat-popover.popover {
    max-width: 280px;
    font-size: 0.82rem;
    box-shadow: 0 8px 24px rgba(0,0,0,0.12);
    border: 1px solid rgba(0,0,0,0.1);
}

.feat-popover .popover-body {
    color: #374151;
    line-height: 1.55;
    padding: 10px 14px;
}

.feat-divider {
    border-color: rgba(0,0,0,0.07);
    margin: 0.5rem 0;
}

/* Product icon circles */
.product-icon-wrap {
    width: 76px;
    height: 76px;
    border-radius: 20px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1.9rem;
    color: #fff;
    margin-bottom: 16px;
    box-shadow: 0 12px 26px -12px rgba(9, 1, 68, 0.55);
    transition: transform .22s ease;
}

.gradient-box-lite:hover .product-icon-wrap {
    transform: scale(1.06) translateY(-2px);
}

/* Legacy home-hero auto-fade slider (.auto-fade-slider/.slide/.fade1/.fade2/
   @keyframes fade) removed — replaced by the .hx hero slider in home.blade.php. */



.map-section {
    text-align: center;
    padding: 60px 20px;
    color: #fff;
    font-family: Arial, sans-serif;
}

.subtitle {
    text-transform: uppercase;
    color: #b6a9ff;
    letter-spacing: 1px;
}

.title {
    font-size: 2.5em;
    margin: 10px 0;
}

.description {
    max-width: 600px;
    margin: 0 auto 40px;
    font-size: 1em;
    opacity: 0.8;
}

/* The artwork IS the projection: world_map_equirect.svg is a true equirectangular
   render of longitude -180..180 / latitude 84..-58. background-size: 100% 100%
   (not contain) plus preserveAspectRatio="none" in the SVG means the viewBox maps
   1:1 onto this box with no letterboxing, so the % coordinates the Blade view
   computes are exact. aspect-ratio must stay 360/142 to match the window, or every
   marker shifts vertically. */
.world-map {
    position: relative;
    width: 100%;
    max-width: 1000px;
    margin: auto;
    background: url('../images/world_map_equirect.svg') no-repeat center center;
    background-size: 100% 100%;
    aspect-ratio: 360 / 142;
}

.location {
    position: absolute;
    width: 20px;
    height: 20px;
    background: #e80950;
    border: 3px solid #fff;
    border-radius: 50%;
    cursor: pointer;
    transition: transform 0.3s;
}

.location:hover {
    transform: scale(1.4);
}

.tooltip {
    position: absolute;
    bottom: 125%;
    left: 50%;
    transform: translateX(-50%);
    background: #090144;
    color: #fff;
    padding: 6px 12px;
    border-radius: 20px;
    white-space: nowrap;
    font-size: 0.9em;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s ease;
}

/* visibility, not opacity alone. Text at opacity:0 is still rendered, so contrast
   checkers measure this white label against whatever sits behind it — here the
   orange dot (2.53:1) — and report a contrast error on every marker, even though
   the label is never actually shown against orange (on hover it sits on #04255c
   at 14.74:1). visibility:hidden takes it out of rendering and out of the
   accessibility tree, which is what we meant all along.
   Scoped to .location: the bare .tooltip class is also Bootstrap's, and its JS
   tooltips toggle visibility through .show, which this must not fight. */
.location .tooltip {
    visibility: hidden;
    transition: opacity 0.3s ease, visibility 0.3s ease;
}

.location:hover .tooltip {
    visibility: visible;
    opacity: 1;
}

.faq-section {

    max-width: 800px;
    margin: 2rem auto;
}

.faq-section h4 {
    font-weight: 700;
    color: #959595;
    letter-spacing: 1px;
}

.accord-button {
    height: 40px;
    width: 100%;
    border: 1px solid #9f9f9f62;
    border-radius: 5px 5px 5px 5px;
    background: #ffff;
    display: flex;
    justify-content: center;
    font-size: 16px;
    align-items: center;
    color: white;
}

.accord-button:not(.collapsed) {
    background: #0502385b;
    color: #fdfdfd;
}

.accordion-button {
    font-size: 1.1rem;
    font-weight: 600;
    color: #636363;
    border-radius: 8px !important;
    transition: background 0.2s;
}

.accordion-button:not(.collapsed) {
    background: #05023833;
    color: #fdfdfd;
}

.accordion-button:focus {
    z-index: 3;
    border-color: #090144 !important;
    outline: 0;

}

.accordion-item {
    border: none;
    margin-bottom: 1rem;
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 2px 8px rgba(37, 99, 235, 0.07);
}

.accordion-body {
    background: #fff;
    color: #374151;
    font-size: 1rem;
    border-radius: 0 0 10px 10px;
}

@media (max-width: 600px) {
    .faq-section {
        padding: 1rem 0.5rem;
    }

    .accordion-button {
        font-size: 1rem;
    }
}

.otr-card-element {
   padding: 10px; border: 1px solid #747474; border-radius: 6px;
}
.hyperlink_wiki {
    text-decoration: none;
    color: #1e74bf;
    font-weight: 500;
    font-size: 18px;
    line-height: 2;
}

.checkout_terms_text {
    font-size: 10px;
    color: #676768;
}

/* ── Homepage Edge Globe ─────────────────────────────────────────────────── */
.edge-network-section {
    padding-top: 3rem !important;
    padding-bottom: 3.5rem !important;
}

.edge-network-card {
   
    border: 1px solid #76baed;
    border-radius: 80px 5px 80px 5px;
    background: linear-gradient(135deg, #090144, #054e9c);
    display: flex;
    justify-content: center;
    align-items: center;
    color: white;

}

/* Flat edge map — replaces the WebGL globe. Reuses the .world-map / .location /
   .tooltip geometry defined above, restyled to sit on the dark network card.
   The map art is #084BAE, which disappears against the card's #054e9c gradient,
   so the card is darkened here and the art brightened via ::before (a filter on
   .world-map itself would wash out the markers too). */
.edge-network-card--map {
    flex-direction: column;
    background: linear-gradient(135deg, #060130, #06306b);
    padding: 2.5rem 1.5rem 2rem;
}

.edge-network-card--map .edge-network-copy {
    max-width: 640px;
    margin-bottom: 1.75rem;
}

.edge-world-map {
    background: none;
}

.edge-world-map::before {
    content: '';
    position: absolute;
    inset: 0;
    background: url('../images/world_map_equirect.svg') no-repeat center center;
    background-size: 100% 100%;
    filter: brightness(1.9) saturate(0.55);
    opacity: 0.6;
    pointer-events: none;
}

.edge-world-map .location {
    width: 14px;
    height: 14px;
    border-width: 2px;
    background: #e88e10;
    animation: edgeDotPulse 2.8s ease-out infinite;
}

.edge-world-map .location:hover {
    animation: none;
    transform: scale(1.45);
    z-index: 4;
}

.edge-world-map .tooltip {
    background: #04255c;
    border: 1px solid #76baed;
    font-size: 0.8rem;
    z-index: 5;
}

@keyframes edgeDotPulse {
    0%   { box-shadow: 0 0 0 0 rgba(232, 142, 16, 0.55); }
    70%  { box-shadow: 0 0 0 11px rgba(232, 142, 16, 0); }
    100% { box-shadow: 0 0 0 0 rgba(232, 142, 16, 0); }
}

.edge-map-count {
    margin: 1.5rem 0 0;
    color: #cfe0f5;
    font-size: 0.9rem;
}

@media (max-width: 767px) {
    .edge-world-map .location { width: 10px; height: 10px; border-width: 1.5px; }
    .edge-world-map .tooltip  { font-size: 0.7rem; padding: 4px 9px; }
}

@media (prefers-reduced-motion: reduce) {
    .edge-world-map .location { animation: none; }
}

.edge-globe-shell {
    position: relative;
    border-radius: 20px;
    background: transparent;
    border: none;
    box-shadow: none;
}

.edge-globe-canvas {
    width: 100%;
    height: min(62vw, 680px);
    min-height: 510px;
    max-width: 760px;
    margin: -6px auto 0;
    display: block;
}

.edge-globe-loader {
    position: absolute;
    inset: 0 0 64px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #e7edf5;
    font-weight: 700;
    font-size: 0.98rem;
    letter-spacing: 0.2px;
    z-index: 2;
    pointer-events: none;
}

.edge-globe-loader::before {
    content: "";
    width: 22px;
    height: 22px;
    border-radius: 50%;
    border: 2px solid rgba(255, 255, 255, 0.26);
    border-top-color: #d4a93e;
    margin-right: 10px;
    animation: edge-globe-spin 0.9s linear infinite;
}

@keyframes edge-globe-spin {
    to {
        transform: rotate(360deg);
    }
}

.edge-globe-canvas canvas {
    display: block !important;
    margin: 0 auto !important;
}

.edge-globe-nav {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 8px;
    margin-top: 0;
}

.edge-globe-arrow {
    border: none;
    background: transparent;
    color: #f5f7fa;
    font-size: 1.75rem;
    line-height: 1;
    width: 34px;
    height: 34px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    transition: background 0.2s ease, transform 0.2s ease;
}

.edge-globe-arrow:hover {
    background: rgba(255, 255, 255, 0.08);
    transform: translateY(-1px);
}



.edge-region-tab {
    border: 1px solid rgba(255, 255, 255, 0.18);
    background: rgba(6, 41, 110, 0.88);
    color: #f1f5fa;
    padding: 10px 20px;
    border-radius: 999px;
    font-size: 0.60rem;
    font-weight: 700;
    letter-spacing: 0.2px;
    text-transform: uppercase;
    white-space: nowrap;
    transition: all 0.2s ease;
}

.edge-region-tab:hover {
    color: #ffffff;
    border-color: rgba(255, 255, 255, 0.42);
}

.edge-region-tab.active {
    background: rgba(2, 25, 71, 0.88);
    border-color: #f3f4f6;
    color: #e8eaef;
    box-shadow: 0 8px 20px rgba(6, 8, 11, 0.35);
}

.edge-globe-meta {
    margin-top: 10px;
    text-align: center;
    font-size: 0.84rem;
    letter-spacing: 0.3px;
    color: rgba(232, 238, 247, 0.62);
}

.edge-globe-fallback {
    margin-top: 14px;
    color: #e4e8f0;
    text-align: center;
    font-size: 0.92rem;
}

.edge-network-copy {
    color: #f6f8fb;
    max-width: 430px;
    margin: 0 auto;
}

.edge-network-copy h2 {
    font-size: clamp(2rem, 3.6vw, 3.2rem);
    line-height: 1.08;
    margin-bottom: 1.1rem;
    font-weight: 700;
    color: #ffffff;
}

.edge-network-copy p {
    color: rgba(236, 242, 248, 0.9);
    font-size: 1.05rem;
    line-height: 1.5;
    margin-bottom: 1.7rem;
}

.edge-network-btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 13px 28px;
    border-radius: 12px;
    border: 1px solid rgba(255, 255, 255, 0.5);
    background: #f4f6f8;
    color: #101722;
    text-decoration: none;
    font-weight: 700;
    font-size: 1.1rem;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.edge-network-btn:hover {
    color: #101722;
    transform: translateY(-1px);
    box-shadow: 0 12px 28px rgba(0, 0, 0, 0.24);
}

.blog-post-body {
    color: #1f2937;
    line-height: 1.75;
    font-size: 1rem;
}

.blog-post-body h1,
.blog-post-body h2,
.blog-post-body h3,
.blog-post-body h4 {
    color: #0f172a;
    margin-top: 1.6rem;
    margin-bottom: 0.6rem;
}

.blog-post-body a {
    color: var(--primary);
}

.blog-post-body img {
    max-width: 100%;
    border-radius: 8px;
    margin: 1rem 0;
}

.blog-post-body pre,
.blog-post-body code {
    background: #eef2ff;
    border-radius: 4px;
    padding: 2px 6px;
    font-size: 0.875em;
}

/* Posts use <pre> blocks for ASCII architecture diagrams. They must keep their
   own line breaks and scroll inside themselves — wrapping turns a diagram into
   noise, and letting one overflow scrolls the whole page sideways on mobile. */
.blog-post-body pre {
    display: block;
    overflow-x: auto;
    padding: 1rem 1.1rem;
    margin: 1.25rem 0;
    white-space: pre;
    line-height: 1.45;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
    border: 1px solid #dbe3f8;
    -webkit-overflow-scrolling: touch;
}

.blog-post-body pre code {
    background: transparent;
    padding: 0;
    font-size: 1em;
}

.blog-post-body table {
    width: 100%;
    border-collapse: collapse;
    margin: 1.25rem 0;
    font-size: 0.94rem;
}

.blog-post-body thead th {
    background: #f1f5f9;
    text-align: left;
    font-weight: 600;
    color: #0f172a;
}

.blog-post-body th,
.blog-post-body td {
    border: 1px solid #e2e8f0;
    padding: 0.55rem 0.75rem;
    vertical-align: top;
}

.blog-post-body tbody tr:nth-child(even) {
    background: #fafbfe;
}

/* Comparison tables are wide by nature; below the fold of a phone screen they
   scroll on their own rather than forcing the page to. */
@media (max-width: 640px) {
    .blog-post-body table {
        display: block;
        overflow-x: auto;
        white-space: nowrap;
    }
}

.blog-post-body blockquote {
    border-left: 3px solid var(--primary);
    padding-left: 1rem;
    color: #475569;
}

.blog-post-card {
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.blog-post-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 12px 32px rgba(0, 0, 0, 0.10) !important;
}

.wiki-hero {
    background: linear-gradient(135deg, #0f162f 0%, #1a2a4a 100%);
    padding: 3rem 0 2.5rem;
    color: #e6ebff;
}

.wiki-hero h1 {
    font-size: 2rem;
    font-weight: 700;
}

.wiki-hero p {
    color: #a0aec0;
    max-width: 650px;
}

/* ===== Wiki article body (rendered guide content) ===== */
.wiki-article-body {
    max-width: 820px;
    color: #2b2b3a;
    line-height: 1.7;
}

.wiki-article-body h2 {
    font-size: 1.7rem;
    font-weight: 700;
    color: #090144;
    margin: 0 0 1rem;
}

.wiki-article-body h3 {
    font-size: 1.2rem;
    font-weight: 700;
    color: #090144;
    margin: 2rem 0 0.75rem;
}

.wiki-article-body p {
    margin-bottom: 1rem;
}

.wiki-article-body ul,
.wiki-article-body ol {
    margin: 0 0 1rem 1.25rem;
    padding-left: 0.5rem;
}

.wiki-article-body li {
    margin-bottom: 0.4rem;
}

.wiki-article-body code {
    background: #eef2ff;
    color: #054e9c;
    border-radius: 4px;
    padding: 2px 6px;
    font-size: 0.875em;
}

.wiki-article-body pre {
    background: #0f162f;
    color: #e6ebff;
    border-radius: 10px;
    padding: 16px 18px;
    overflow-x: auto;
    margin: 0 0 1.25rem;
}

.wiki-article-body pre code {
    background: transparent;
    color: inherit;
    padding: 0;
    font-size: 0.85rem;
    line-height: 1.55;
    white-space: pre;
}

.wiki-article-body table {
    width: 100%;
    border-collapse: collapse;
    margin: 0 0 1.5rem;
    font-size: 0.95rem;
}

.wiki-article-body th,
.wiki-article-body td {
    border: 1px solid #e2e8f0;
    padding: 10px 14px;
    text-align: left;
    vertical-align: top;
}

.wiki-article-body thead th {
    background: #f1f5ff;
    color: #090144;
    font-weight: 700;
}

.wiki-article-body tbody tr:nth-child(even) {
    background: #fafbff;
}

html {
    scroll-behavior: smooth;
}

.wiki-layout {
    display: flex;
    align-items: flex-start;
    gap: 2rem;
}

.wiki-sidebar {
    width: 220px;
    flex-shrink: 0;
    position: sticky;
    top: 80px;
    max-height: calc(100vh - 100px);
    overflow-y: auto;
    padding-right: 0.5rem;
}

.wiki-sidebar::-webkit-scrollbar {
    width: 4px;
}

.wiki-sidebar::-webkit-scrollbar-thumb {
    background: #dee2e6;
    border-radius: 4px;
}

.wiki-sidebar .sidebar-heading {
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #6c757d;
    padding: 0.5rem 0 0.3rem;
    border-bottom: 1px solid #dee2e6;
    margin-bottom: 0.4rem;
}

.wiki-sidebar a {
    display: block;
    font-size: 0.82rem;
    color: #444;
    text-decoration: none;
    padding: 0.25rem 0.5rem;
    border-radius: 5px;
    margin-bottom: 1px;
}

.wiki-sidebar a:hover,
.wiki-sidebar a.active {
    background: #e8f0fe;
    color: #0d6efd;
}

.wiki-main {
    flex: 1;
    min-width: 0;
}

/* Each category is a card rather than a bare list on the page background —
   the flat lists read as an unstyled index next to the rest of the site. */
.wiki-section {
    margin-bottom: 1.25rem;
    scroll-margin-top: 100px;
    background: #fff;
    border: 1px solid #dbe3ef;
    border-radius: 14px;
    padding: 1.1rem 1.25rem 1.25rem;
    box-shadow: 0 1px 2px rgba(16, 30, 70, .04);
}

.wiki-section-head {
    display: flex;
    align-items: center;
    gap: .6rem;
    border-bottom: 1px solid #e8f0fe;
    padding-bottom: 0.5rem;
    margin-bottom: 0.85rem;
}

.wiki-section-title {
    font-size: 1rem;
    font-weight: 700;
    color: #0d6efd;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin: 0;
}

.wiki-section-count {
    font-size: .72rem;
    font-weight: 700;
    color: #5b6b86;
    background: #eef3fb;
    border-radius: 999px;
    padding: 1px 8px;
}

/* Two columns of links on a wide viewport; the single column left most of the
   content area empty. */
.wiki-article-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: .15rem .75rem;
}

/* The API entry point is a different kind of link from an article, so it gets
   its own card at the top instead of pretending to be a category. */
.wiki-callout {
    display: flex;
    align-items: center;
    gap: .9rem;
    background: linear-gradient(135deg, #0f1a3f 0%, #17306b 100%);
    color: #e8eefc;
    border-radius: 14px;
    padding: 1rem 1.25rem;
    margin-bottom: 1.25rem;
    text-decoration: none;
    transition: transform .15s, box-shadow .15s;
}

.wiki-callout:hover {
    color: #fff;
    transform: translateY(-1px);
    box-shadow: 0 8px 22px rgba(15, 26, 63, .25);
}

.wiki-callout-icon {
    width: 40px;
    height: 40px;
    flex-shrink: 0;
    border-radius: 11px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, .12);
    color: #6ee7ff;
}

.wiki-callout strong {
    display: block;
    font-size: .95rem;
}

.wiki-callout small {
    display: block;
    color: #a9b8d8;
    font-size: .78rem;
    line-height: 1.4;
}

.wiki-callout-go {
    margin-left: auto;
    color: #6ee7ff;
    font-size: .85rem;
}

.wiki-help {
    font-size: .85rem;
    color: #6c757d;
    margin-top: 1.5rem;
}

.wiki-article-link {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.875rem;
    color: #333;
    text-decoration: none;
    padding: 0.3rem 0.5rem;
    border-radius: 5px;
}

.wiki-article-link::before {
    content: '';
    display: inline-block;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: #0d6efd;
    flex-shrink: 0;
}

.wiki-article-link:hover {
    background: #f0f4ff;
    color: #0d6efd;
}

@media (max-width: 768px) {
    .edge-network-card {
        border-radius: 20px;
        padding: 1.3rem 1rem 1.4rem;
    }

    .edge-globe-canvas {
        min-height: 330px;
        height: 90vw;
        margin-top: 0;
    }

    .edge-globe-nav {
        gap: 5px;
        margin-top: -2px;
    }

    .edge-region-tab {
        padding: 8px 14px;
        font-size: 0.78rem;
        letter-spacing: 0.15px;
    }

    .edge-network-copy {
        margin-top: 0.5rem;
        max-width: 100%;
        text-align: center;
        padding: 0 1rem;
    }

    .edge-network-copy h2 {
        font-size: 2rem;
    }

    .edge-network-copy p {
        font-size: 0.98rem;
    }

    .edge-network-btn {
        display: inline-flex;
    }

    .wiki-layout {
        flex-direction: column;
    }

    .wiki-sidebar {
        width: 100%;
        position: static;
        max-height: none;
    }
}

    .cookie-consent {
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 1060;
        padding: 16px;
        background: rgba(6, 12, 34, 0.96);
        border-top: 1px solid rgba(255, 255, 255, 0.14);
        box-shadow: 0 -12px 28px rgba(0, 0, 0, 0.28);
        color: #e8edf8;
    }

    .cookie-consent__content {
        max-width: 1100px;
        margin: 0 auto;
    }

    .cookie-consent__title {
        margin: 0 0 8px;
        color: #ffffff;
        font-weight: 700;
    }

    .cookie-consent__text {
        margin: 0;
        color: #c4cee2;
        line-height: 1.5;
        font-size: 0.95rem;
    }

    .cookie-consent__text a {
        color: #9ed7ff;
        text-decoration: underline;
    }

    .cookie-consent__actions {
        display: flex;
        flex-wrap: wrap;
        gap: 10px;
        margin-top: 12px;
    }

    .cookie-consent__prefs {
        margin-top: 12px;
        border-top: 1px solid rgba(255, 255, 255, 0.15);
        padding-top: 10px;
    }

    .cookie-consent__toggle {
        display: flex;
        align-items: center;
        gap: 8px;
        margin-bottom: 8px;
        font-size: 0.92rem;
    }

    .cookie-consent__prefs-actions {
        margin-top: 8px;
    }

    .cookie-settings-trigger {
        position: fixed;
        left: 12px;
        bottom: 12px;
        z-index: 1059;
        border: 1px solid rgba(0, 0, 0, 0.16);
        background: #ffffff;
        color: #14213d;
        border-radius: 999px;
        padding: 8px 12px;
        font-size: 0.8rem;
        font-weight: 600;
        box-shadow: 0 6px 16px rgba(0, 0, 0, 0.18);
    }

    .cookie-settings-trigger[hidden] {
        display: none !important;
    }

    @media (max-width: 768px) {
        .cookie-consent {
            padding: 14px;
        }

        .cookie-consent__actions {
            display: grid;
            grid-template-columns: 1fr;
        }

        .cookie-consent__actions .btn {
            width: 100%;
        }
    }
/* Cookie banner buttons — darker shades for WCAG AA white-text contrast (>=4.5:1) */
.cookie-consent .btn-danger { background-color: #b52d3a; border-color: #b52d3a; }
.cookie-consent .btn-danger:hover { background-color: #9e2732; border-color: #9e2732; }
.cookie-consent .btn-success { background-color: #146c43; border-color: #146c43; }
.cookie-consent .btn-success:hover { background-color: #115c39; border-color: #115c39; }

/* Coming-soon bar on marketing pages whose service switch is off. */
.coming-soon-bar {
    background: linear-gradient(135deg, #0d1b3e 0%, #14306b 100%);
    color: #dbe4ff;
    padding: 10px 0;
    font-size: 14px;
    text-align: center;
    border-bottom: 1px solid rgba(255, 255, 255, .12);
}
.coming-soon-bar strong { color: #fff; }
.coming-soon-bar a { color: #7fb6ff; text-decoration: underline; }

/* A product whose service switch is off: still linked, but flagged. */
.product-link-soon { opacity: .72; }
.soon-tag {
    margin-left: 6px;
    padding: 1px 5px;
    border: 1px solid currentColor;
    border-radius: 9px;
    font-size: 9px;
    letter-spacing: .04em;
    text-transform: uppercase;
    opacity: .85;
    vertical-align: 1px;
}

/* ── Plan card (new pricing card) ──────────────────────────────────────────
   Used on /cloud-vps. Deliberately a separate class from .pricing-card so the
   older card on the hosting and email pages is untouched until those pages are
   redesigned too. Nothing here depends on the plan type, so it is reusable.

   The only per-card variation is the accent bar across the top, set by an
   inline --plan-accent on the card. Feature icons keep one shared colour on
   purpose: tinting six small glyphs per card turns the list into stripes and
   makes the rows harder to scan. */
.plan-card {
    position: relative;
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #fff;
    border: 1px solid #e9eef7;
    border-radius: 22px;
    padding: 30px 28px 28px;
    box-shadow: 0 18px 40px -26px rgba(9, 1, 68, .28);
    transition: transform .25s ease, box-shadow .25s ease;
    overflow: hidden;
}

.plan-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 30px 56px -28px rgba(9, 1, 68, .38);
}

/* Accent bar. A pseudo-element rather than a border so the card's own rounded
   corners still clip it. */
.plan-card::before {
    content: '';
    position: absolute;
    inset: 0 0 auto 0;
    height: 4px;
    background: var(--plan-accent, var(--secondary-color));
}

.plan-card-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
}

.plan-card-name {
    font-size: 1.45rem;
    font-weight: 800;
    letter-spacing: -.01em;
    color: #16233c;
    margin: 0;
    line-height: 1.2;
}

/* Headline spec, e.g. "2 vCPU". */
.plan-card-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    flex: 0 0 auto;
    background: #f1f5fd;
    color: #46536e;
    font-size: .8rem;
    font-weight: 700;
    padding: 6px 12px;
    border-radius: 999px;
    white-space: nowrap;
}

.plan-card-chip i { color: var(--plan-accent, var(--secondary-color)); }

.plan-card-price {
    display: flex;
    align-items: baseline;
    gap: 6px;
    margin: 14px 0 0;
}

.plan-card-amount {
    font-size: 3rem;
    font-weight: 800;
    letter-spacing: -.03em;
    color: #101a2e;
    line-height: 1;
}

.plan-card-period {
    font-size: 1rem;
    font-weight: 500;
    color: #7c879c;
}

/* Status pill — "Coming soon", "Most popular". */
.plan-card-status {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    margin-top: 16px;
    padding: 7px 15px;
    border-radius: 999px;
    font-size: .76rem;
    font-weight: 800;
    letter-spacing: .07em;
    text-transform: uppercase;
    background: #eef2fb;
    color: #46536e;
}

.plan-card-status i { font-size: .8rem; }

.plan-card-status--popular {
    background: rgba(22, 1, 119, .07);
    color: var(--primary-color);
}

.plan-card hr.plan-card-rule {
    border: 0;
    border-top: 1px solid #eef1f7;
    margin: 24px 0 20px;
    opacity: 1;
}

.plan-card-specs {
    list-style: none;
    padding: 0;
    margin: 0 0 24px;
    /* Grows so the CTAs line up across a row of cards. Only bites when one card
       genuinely has more content than another. */
    flex: 1 1 auto;
}

.plan-card-specs li {
    display: flex;
    align-items: center;
    gap: 13px;
    padding: 8px 0;
    font-size: 1rem;
    color: #37425c;
}

/* ── Cloud VPS filter bar ──────────────────────────────────────────────────
   Location and storage-type chips above the plan grid. Replaces the per-card
   "Available in" list, which repeated every location on every card and grew
   unreadable as regions were added. */
.vps-filters {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin: 8px auto 28px;
    max-width: 980px;
}

.vps-filter-row {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px 14px;
}

.vps-filter-label {
    font-size: .82rem;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: #8a97b4;
    min-width: 86px;
}

.vps-filter-label i { margin-right: 6px; }

.vps-filter-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.vps-chip {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 7px 14px;
    border: 1px solid #d7ddea;
    border-radius: 999px;
    background: #fff;
    color: #37425c;
    font-size: .9rem;
    line-height: 1.2;
    cursor: pointer;
    transition: border-color .15s, background .15s, color .15s;
}

.vps-chip:hover { border-color: #2f6bff; color: #2f6bff; }

.vps-chip.is-active {
    background: #2f6bff;
    border-color: #2f6bff;
    color: #fff;
}

.vps-chip-flag { font-size: 1.05rem; line-height: 1; }

.vps-reset-link {
    border: 0;
    background: none;
    padding: 0;
    color: #2f6bff;
    text-decoration: underline;
    cursor: pointer;
    font: inherit;
}

@media (max-width: 575.98px) {
    .vps-filter-label { min-width: 0; width: 100%; }
}

/* The "@ 1 Gbps" half of the bandwidth line. Lighter than the allowance beside
   it: the TB figure is what a buyer compares between tiers, the port speed is
   the qualifier. The li is a flex row with a gap, so this needs no margin. */
.plan-card-specs .plan-port-speed {
    color: #8a97b4;
    font-size: .92rem;
    white-space: nowrap;
}

.plan-card-specs i {
    width: 20px;
    flex: 0 0 20px;
    text-align: center;
    font-size: .95rem;
    color: #8a97b4;
}

.plan-card-cta {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 9px;
    width: 100%;
    padding: 14px 18px;
    border: 1.5px solid #dfe6f4;
    border-radius: 14px;
    background: #fff;
    color: #1d2a45;
    font-size: 1.02rem;
    font-weight: 700;
    text-decoration: none;
    transition: border-color .18s ease, background .18s ease, color .18s ease;
}

.plan-card-cta:hover,
.plan-card-cta:focus-visible {
    border-color: var(--plan-accent, var(--secondary-color));
    background: #f8fbff;
    color: var(--primary-color);
}

.plan-card-cta i { color: var(--plan-accent, var(--secondary-color)); }

/* Ordering is open: the CTA is the real action, so make it solid. */
.plan-card-cta--solid {
    background: var(--primary-color);
    border-color: var(--primary-color);
    color: #fff;
}

.plan-card-cta--solid:hover,
.plan-card-cta--solid:focus-visible {
    background: #1e0399;
    border-color: #1e0399;
    color: #fff;
}

.plan-card-cta--solid i { color: inherit; }

/* "Available in" row. Locations wrap onto their own lines, so this row aligns
   its icon to the top rather than centring it against a multi-line block. */
.plan-card-specs li.plan-card-spec--locations {
    align-items: flex-start;
    padding-top: 12px;
}

.plan-card-spec--locations i { margin-top: 3px; }

.plan-card-loc-label {
    display: block;
    font-size: .84rem;
    color: #7c879c;
    margin-bottom: 7px;
}

.plan-card-locs {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.plan-card-loc {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: #f4f7fd;
    border: 1px solid #e6ecf7;
    border-radius: 9px;
    padding: 5px 10px;
    font-size: .84rem;
    font-weight: 600;
    color: #37425c;
    line-height: 1.3;
}

.plan-card-loc-flag { font-size: 1rem; line-height: 1; }

/* Full right now — still listed, because the location is real and capacity
   comes back; just not selectable today. */
.plan-card-loc.is-out {
    background: #fbfcfe;
    color: #99a3b8;
    border-style: dashed;
}

.plan-card-loc.is-out em {
    font-style: normal;
    font-size: .7rem;
    font-weight: 800;
    letter-spacing: .05em;
    text-transform: uppercase;
    color: #c2536a;
    margin-left: 6px;
}

@media (max-width: 575.98px) {
    .plan-card { padding: 26px 22px 24px; }
    .plan-card-amount { font-size: 2.5rem; }
}
