*{box-sizing:border-box}body{margin:0;font:13px Segoe UI,Arial;color:#10213e;background:#f5f8fb}header{height:58px;background:linear-gradient(100deg,#07192b,#12385a);color:#fff;display:flex;align-items:center;padding:0 22px;gap:14px}header b{font-size:28px}header b span{color:#65c9e7}header small{color:#d7e1eb}header button{margin-left:auto}button{border:0;border-radius:7px;background:#197cf2;color:#fff;font-weight:700;padding:10px 22px}main{max-width:1500px;margin:auto}.hero{height:175px;background:linear-gradient(110deg,#071729,#103451);color:#fff;display:grid;grid-template-columns:170px 390px 1fr;align-items:center;padding:12px 28px}.ring{width:135px;height:135px;border:12px solid #42e86e;border-radius:50%;display:grid;place-content:center;text-align:center;box-shadow:0 0 20px #38e86b55}.ring strong{font-size:44px}.hero h2{margin:0}.hero h1{color:#4aee6d;margin:4px 0;font-size:28px}.facts{border-left:1px solid #39627d;padding-left:25px;display:grid;grid-template-columns:repeat(3,1fr)}.phase{height:40px;background:#fff;display:flex;gap:10px;align-items:center;padding:6px 15px}.track{height:7px;background:#e3eaf1;flex:1;border-radius:8px;overflow:hidden}.track i{display:block;height:100%;width:0;background:#2087f5;transition:.2s}.metrics{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;padding:8px 14px}.metrics article,.middle article,.bottom article,.ready{background:#fff;border:1px solid #dce5ee;border-radius:9px;padding:10px}.metrics strong{font-size:25px;display:block;margin:5px 0}.metrics em{font-size:11px;font-style:normal}.metrics canvas{height:25px;width:100%}.middle{display:grid;grid-template-columns:2.1fr .65fr .9fr;gap:8px;padding:0 14px 7px}.middle article{height:195px}.middle h3,.bottom h3,.ready h3{margin:0 0 7px}.chart canvas{height:140px;width:100%}.chart h3 i{float:right;color:#18a446;font-size:10px}.stages{display:grid;grid-template-columns:repeat(4,1fr);text-align:center;font-size:10px}.big{font-size:27px}.ready{margin:0 14px 7px;padding:8px 12px}.ready #apps{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.ready #apps div{background:#effbf5;padding:9px;border-radius:6px;font-weight:700}.ready #apps b{display:block;color:#16913a;margin-top:3px}.bottom{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;padding:0 14px 7px}.bottom article{
    min-height:165px;
    height:auto;
}

.bottom table{
    width:100%;
    border-collapse:collapse;
}

.bottom table td{
    padding:3px 5px;
    border-bottom:1px solid #e5eaf0;
    line-height:1.25;
}

.bottom table td:last-child{
    text-align:right;
    white-space:nowrap;
}.bottom p{border-bottom:1px solid #e5eaf0;padding:4px}.bottom p b{float:right}.bottom h4{color:#168d36}.actions{margin:0 14px 8px;background:#fff;padding:7px;display:flex;gap:9px}.actions input{flex:1;border:1px solid #ccd8e4;border-radius:6px;padding:8px}.dark{background:#0e3152}footer{height:38px;background:#fff;border-top:1px solid #dce5ee;display:flex;align-items:center;padding:0 22px;gap:20px}footer span:last-child{margin-left:auto}footer strong{color:#0878ea}@media(max-width:1000px){.metrics{grid-template-columns:repeat(3,1fr)}.middle,.bottom{grid-template-columns:1fr}.hero{grid-template-columns:150px 1fr}.facts{display:none}.ready #apps{grid-template-columns:repeat(3,1fr)}}


/* ===== NetVitals measurement tooltips ===== */

.stat-tip {
    position: relative;
    cursor: help;
}

.stat-tip::after {
    content: attr(data-tip);
    position: absolute;
    left: 50%;
    bottom: calc(100% + 10px);
    transform: translateX(-50%) translateY(4px);
    width: 300px;
    max-width: 90vw;
    padding: 12px 14px;
    background: #07192b;
    color: #ffffff;
    border-radius: 9px;
    font-size: 12px;
    font-weight: 400;
    line-height: 1.55;
    white-space: pre-line;
    box-shadow: 0 8px 28px rgba(0,0,0,.28);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    z-index: 9999;
    transition:
        opacity .15s ease,
        transform .15s ease,
        visibility .15s ease;
}

.stat-tip::before {
    content: "";
    position: absolute;
    left: 50%;
    bottom: calc(100% + 3px);
    transform: translateX(-50%);
    border: 7px solid transparent;
    border-top-color: #07192b;
    opacity: 0;
    visibility: hidden;
    z-index: 10000;
    transition: opacity .15s ease;
}

.stat-tip:hover::after {
    opacity: 1;
    visibility: visible;
    transform: translateX(-50%) translateY(0);
}

.stat-tip:hover::before {
    opacity: 1;
    visibility: visible;
}

/* Prevent left/right metric cards from pushing tooltip off screen */
.metrics .stat-tip:first-child::after {
    left: 0;
    transform: translateX(0) translateY(4px);
}

.metrics .stat-tip:first-child:hover::after {
    transform: translateX(0) translateY(0);
}

.metrics .stat-tip:last-child::after {
    left: auto;
    right: 0;
    transform: translateX(0) translateY(4px);
}

.metrics .stat-tip:last-child:hover::after {
    transform: translateX(0) translateY(0);
}

/* Subtle visual indication that a measurement has help */
.stat-tip:hover {
    border-color: #8bbff2;
    box-shadow: 0 3px 12px rgba(25,124,242,.13);
}

/* Mobile/tablet: tooltip appears below card */
@media (max-width: 800px) {
    .stat-tip::after {
        left: 0;
        right: auto;
        top: calc(100% + 7px);
        bottom: auto;
        width: min(300px, 85vw);
        transform: none;
    }

    .stat-tip:hover::after {
        transform: none;
    }

    .stat-tip::before {
        display: none;
    }
}


/* ===== NetVitals lower diagnostic panel tooltips ===== */

/*
   Lower-row tooltips open downward instead of upward.
   This prevents them from covering the primary metric cards.
*/

.lower-tip::after {
    top: 44px;
    bottom: auto;
    left: 50%;
    width: 330px;
    transform: translateX(-50%) translateY(-4px);
}

.lower-tip:hover::after {
    transform: translateX(-50%) translateY(0);
}

.lower-tip::before {
    top: 31px;
    bottom: auto;
    border: 7px solid transparent;
    border-bottom-color: #07192b;
}

/* Latency chart gets a slightly wider explanation */
.chart.lower-tip::after {
    width: 380px;
}

/* Keep tooltip inside viewport on smaller screens */
@media (max-width: 1000px) {

    .lower-tip::after,
    .chart.lower-tip::after {
        left: 12px;
        right: auto;
        width: min(340px, calc(100vw - 50px));
        transform: none;
    }

    .lower-tip:hover::after {
        transform: none;
    }

    .lower-tip::before {
        display: none;
    }
}


/* ========================================================
   ippbxHOST promotional services strip
   ======================================================== */

.ippbx-promo {
    margin: 8px 14px;
    display: grid;
    grid-template-columns: .85fr 1.25fr 1.25fr 1.25fr;
    gap: 8px;
}

.promo-intro,
.promo-card {
    min-height: 88px;
    border-radius: 9px;
}

.promo-intro {
    background:
        linear-gradient(135deg,#07192b,#103d62);
    color: #fff;
    padding: 12px 15px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.promo-eyebrow {
    color: #66d3f1;
    font-size: 10px;
    font-weight: 800;
    letter-spacing: .8px;
    margin-bottom: 4px;
}

.promo-intro strong {
    font-size: 16px;
    line-height: 1.15;
}

.promo-intro span {
    color: #c7d8e7;
    font-size: 11px;
    margin-top: 4px;
}

.promo-card {
    position: relative;
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 11px 32px 11px 13px;
    background: #fff;
    border: 1px solid #d7e2ec;
    color: #10213e;
    text-decoration: none;
    box-shadow: 0 1px 4px rgba(10,30,50,.05);
    transition:
        transform .15s ease,
        box-shadow .15s ease,
        border-color .15s ease;
}

.promo-card:hover {
    transform: translateY(-2px);
    border-color: #4b9ff2;
    box-shadow: 0 7px 20px rgba(10,50,90,.14);
}

.promo-card small {
    display: block;
    color: #64768a;
    font-size: 9px;
    font-weight: 800;
    letter-spacing: .45px;
    margin-bottom: 2px;
}

.promo-card strong {
    display: block;
    color: #0d2743;
    font-size: 15px;
    line-height: 1.15;
}

.promo-card span {
    display: block;
    color: #617083;
    font-size: 10px;
    margin-top: 4px;
}

.promo-icon {
    width: 46px;
    min-width: 46px;
    height: 46px;
    border-radius: 50%;
    background: #eaf5ff;
    display: grid;
    place-items: center;
    font-size: 24px;
}

.promo-logo {
    width: 72px;
    min-width: 72px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.promo-logo img {
    display: block;
    max-width: 70px;
    max-height: 42px;
    width: auto;
    height: auto;
    object-fit: contain;
}

.promo-brand-text {
    font-size: 18px !important;
    font-weight: 900 !important;
    letter-spacing: -.5px;
}

.brand-3cx {
    color: #2586d9 !important;
}

.brand-yeastar {
    color: #1682c4 !important;
}

.promo-arrow {
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-52%);
    color: #2585e8;
    font-size: 27px;
    font-weight: 400;
}

.promo-card.hosting {
    border-top: 3px solid #20a3ed;
}

.promo-card.cx {
    border-top: 3px solid #2585e8;
}

.promo-card.ys {
    border-top: 3px solid #27a0ce;
}

@media (max-width: 1100px) {

    .ippbx-promo {
        grid-template-columns: 1fr 1fr;
    }

    .promo-intro {
        grid-column: 1 / -1;
        min-height: 65px;
    }
}

@media (max-width: 650px) {

    .ippbx-promo {
        grid-template-columns: 1fr;
    }

    .promo-intro {
        grid-column: auto;
    }

    .promo-card {
        min-height: 80px;
    }
}

/* Clickable ippbxHOST promotional box */
a.promo-intro {
    text-decoration: none;
    cursor: pointer;
    transition: transform .15s ease, box-shadow .15s ease;
}

a.promo-intro:hover {
    transform: translateY(-2px);
    box-shadow: 0 7px 20px rgba(10,50,90,.22);
}

a.promo-intro:hover strong {
    text-decoration: underline;
}

/* NetVitals multi-region live measurements */
#regionLive {
    font-size: 10px;
    font-style: normal;
    color: #18a64a;
    margin-left: 5px;
}

#regionalCard p {
    display: flex;
    justify-content: space-between;
    gap: 10px;
}

#regionalCard p b {
    white-space: nowrap;
}

#regionalCard .best-region {
    color: #18a64a;
}

#regionNote {
    display: block;
    margin-top: 7px;
    opacity: .65;
    font-size: 10px;
}
