/* The product site's shared page styles.

   Global rather than a .razor.css on purpose: Blazor scopes an isolated stylesheet to the one
   component that owns it, so styles written on the homepage would never reach /pricing,
   /for-msps or /sample. Four near-identical scoped stylesheets would drift within a fortnight,
   so these live here and every marketing page uses the same class names.

   Written for every marketing page — /pricing, /for-msps and /sample
   import nothing and simply reuse these class names, because four near-identical stylesheets
   would drift within a fortnight.

   Contrast floor is 4.5:1 on the #0d1017 ground. White at 55% clears it (6.2:1); white at 40%
   does not (3.8:1) and is not used for text anywhere here. */

.wrap {
    max-width: 1180px;
    margin: 0 auto;
    padding: 0 28px;
}

.sec {
    padding: 84px 28px;
}

.band {
    background: rgba(255, 255, 255, 0.025);
    border-block: 1px solid rgba(255, 255, 255, 0.06);
}

.band.last {
    border-bottom: none;
}

/* ---- Type ---- */
.eyebrow {
    margin: 0 0 18px;
    font-size: 11.5px;
    font-weight: 800;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.55);
}

.eyebrow.lime {
    color: #A8E22B;
}

h1 {
    margin: 0;
    font-size: clamp(34px, 5.4vw, 60px);
    font-weight: 800;
    line-height: 1.06;
    letter-spacing: -0.025em;
    color: #fff;
    text-wrap: balance;
}

.sh {
    margin: 0 0 14px;
    font-size: clamp(26px, 3.2vw, 36px);
    font-weight: 800;
    line-height: 1.15;
    letter-spacing: -0.02em;
    color: #fff;
    text-wrap: balance;
}

.lede {
    margin: 26px 0 0;
    max-width: 62ch;
    font-size: 17px;
    line-height: 1.65;
    color: rgba(255, 255, 255, 0.66);
}

.sl {
    margin: 0 0 26px;
    max-width: 66ch;
    font-size: 15.5px;
    line-height: 1.7;
    color: rgba(255, 255, 255, 0.62);
}

.fine {
    margin: 22px 0 0;
    font-size: 13px;
    color: rgba(255, 255, 255, 0.5);
}

/* ---- Hero ---- */
.hero {
    padding: 96px 0 74px;
    position: relative;
    overflow: hidden;
}

/* One soft lime wash, top right. Enough to stop a flat black page reading as unfinished,
   not so much that it competes with the only lime that matters — the buttons. */
.hero::before {
    content: "";
    position: absolute;
    top: -220px;
    right: -180px;
    width: 620px;
    height: 620px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(168, 226, 43, 0.1) 0%, transparent 70%);
    filter: blur(70px);
    pointer-events: none;
}

.hero .wrap {
    position: relative;
    z-index: 1;
}

.br {
    display: none;
}

/* ---- Buttons ---- */
.hcta {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    margin-top: 34px;
}

.btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: #A8E22B;
    color: #0d1017;
    font-size: 15px;
    font-weight: 700;
    text-decoration: none;
    padding: 13px 24px;
    border: 1px solid #A8E22B;
    border-radius: 9px;
    cursor: pointer;
    white-space: nowrap;
}

.btn:hover {
    opacity: 0.9;
}

.btn.ghost {
    background: transparent;
    color: #fff;
    border-color: rgba(255, 255, 255, 0.22);
}

.btn.ghost:hover {
    border-color: rgba(255, 255, 255, 0.45);
    opacity: 1;
}

.btn.wide {
    justify-content: center;
    width: 100%;
    margin-top: 4px;
}

/* ---- The free check block ---- */
.freebox {
    display: grid;
    grid-template-columns: 1.25fr 1fr;
    gap: 40px;
    align-items: center;
    padding: 44px 0;
}

.fbtext h2 {
    margin: 0 0 14px;
    font-size: clamp(23px, 2.7vw, 31px);
    font-weight: 800;
    line-height: 1.18;
    letter-spacing: -0.02em;
    color: #fff;
    text-wrap: balance;
}

.fbtext p {
    margin: 0;
    max-width: 52ch;
    font-size: 15px;
    line-height: 1.65;
    color: rgba(255, 255, 255, 0.62);
}

.fbform {
    display: flex;
    flex-direction: column;
    gap: 11px;
}

.fbform input {
    font: inherit;
    font-size: 16px;
    padding: 14px 16px;
    border: 1px solid rgba(255, 255, 255, 0.18);
    border-radius: 9px;
    background: rgba(255, 255, 255, 0.06);
    color: #fff;
    width: 100%;
}

.fbform input::placeholder {
    color: rgba(255, 255, 255, 0.45);
}

.fbform input:focus-visible {
    outline: none;
    border-color: #A8E22B;
    box-shadow: 0 0 0 3px rgba(168, 226, 43, 0.25);
}

.fbform .btn {
    justify-content: center;
}

/* ---- Card grids ---- */
.grid3 {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 18px;
}

.grid2 {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 18px;
}

.card {
    padding: 26px 26px 28px;
    border: 1px solid rgba(255, 255, 255, 0.09);
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.02);
}

.card h3 {
    margin: 0 0 11px;
    font-size: 17px;
    font-weight: 800;
    line-height: 1.3;
    letter-spacing: -0.01em;
    color: #fff;
}

.card p {
    margin: 0;
    font-size: 14.5px;
    line-height: 1.62;
    color: rgba(255, 255, 255, 0.62);
}

/* ---- Can / cannot ----
   The two are visually distinguished because the distinction is the point: half of these are
   capabilities and half are refusals, and a reader skimming should be able to tell which is
   which without reading the sentence. */
.claim {
    padding: 24px 26px;
    border-radius: 14px;
    border: 1px solid;
    border-left-width: 3px;
}

.claim.ok {
    border-color: rgba(168, 226, 43, 0.25);
    border-left-color: #A8E22B;
    background: rgba(168, 226, 43, 0.05);
}

.claim.no {
    border-color: rgba(255, 255, 255, 0.12);
    border-left-color: rgba(255, 255, 255, 0.35);
    background: rgba(255, 255, 255, 0.02);
}

.ct {
    margin: 0 0 9px;
    font-size: 16px;
    font-weight: 800;
    line-height: 1.3;
    color: #fff;
}

.claim p:last-child {
    margin: 0;
    font-size: 14.5px;
    line-height: 1.62;
    color: rgba(255, 255, 255, 0.64);
}

/* ---- Split with prices ---- */
.split {
    display: grid;
    grid-template-columns: 1.35fr 1fr;
    gap: 46px;
    align-items: start;
}

.prices {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.price {
    padding: 20px 22px;
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.02);
}

.pn {
    margin: 0;
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 0.13em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.55);
}

.pp {
    margin: 7px 0 0;
    font-size: 30px;
    font-weight: 800;
    letter-spacing: -0.02em;
    color: #fff;
}

.pp span {
    margin-left: 8px;
    font-size: 13px;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.5);
}

.ps {
    margin: 6px 0 0;
    font-size: 13.5px;
    line-height: 1.55;
    color: rgba(255, 255, 255, 0.6);
}

/* ---- Closing call to action ---- */
.endcta {
    max-width: 62ch;
}

.endcta h2 {
    margin: 0 0 14px;
    font-size: clamp(26px, 3.2vw, 36px);
    font-weight: 800;
    line-height: 1.15;
    letter-spacing: -0.02em;
    color: #fff;
}

.endcta p {
    margin: 0;
    font-size: 15.5px;
    line-height: 1.7;
    color: rgba(255, 255, 255, 0.64);
}

.endcta .fine a {
    color: #A8E22B;
}

@media (min-width: 900px) {
    .br {
        display: inline;
    }
}

@media (max-width: 980px) {
    .grid3 {
        grid-template-columns: repeat(2, 1fr);
    }

    .split,
    .freebox {
        grid-template-columns: 1fr;
        gap: 30px;
    }
}

@media (max-width: 680px) {
    .sec {
        padding: 58px 18px;
    }

    .wrap {
        padding: 0 18px;
    }

    .hero {
        padding: 62px 0 52px;
    }

    .grid3,
    .grid2 {
        grid-template-columns: 1fr;
    }

    .hcta .btn {
        flex: 1 1 100%;
        justify-content: center;
    }
}

/* ---- Pricing tiers ---- */
.tiers {
    align-items: start;
}

.tier {
    display: flex;
    flex-direction: column;
    gap: 0;
    padding: 28px 26px 26px;
}

/* The middle tier is the one most people should buy, so it is marked rather than left for the
   reader to work out from the price alone. */
.tier.feat {
    border-color: rgba(168, 226, 43, 0.3);
    background: rgba(168, 226, 43, 0.05);
}

.ticks {
    margin: 20px 0 24px;
    padding: 0;
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 10px;
    flex: 1;
}

.ticks li {
    position: relative;
    padding-left: 24px;
    font-size: 14.5px;
    line-height: 1.55;
    color: rgba(255, 255, 255, 0.68);
}

.ticks li::before {
    content: "✓";
    position: absolute;
    left: 0;
    top: 0;
    font-weight: 800;
    color: #A8E22B;
}

.ticks.tight {
    margin: 14px 0 0;
    gap: 7px;
}

.ticks.tight li {
    font-size: 13.5px;
}

/* The "not yet" list uses a dash, not a tick. A crossed-out tick reads as a failure; a dash
   reads as an absence, which is what it is. */
.ticks.muted li::before {
    content: "—";
    color: rgba(255, 255, 255, 0.4);
}

.ticks.muted li {
    color: rgba(255, 255, 255, 0.55);
}

/* ---- Callout note ---- */
.note {
    margin-top: 30px;
    padding: 24px 26px;
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-left: 3px solid rgba(255, 255, 255, 0.35);
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.02);
    max-width: 78ch;
}

.note p:last-child {
    margin: 0;
    font-size: 14.5px;
    line-height: 1.65;
    color: rgba(255, 255, 255, 0.64);
}

.hero.short {
    padding: 76px 0 44px;
}

.faq .card h3 {
    font-size: 16px;
}
