/* Hero: copy on a deep primary stage with a faint blueprint grid, the photo cut on a slant on the right with a secondary
 * slash and an optional rating card, and a primary trust bar underneath. Below 1024px the photo stacks under the copy
 * with a slanted top edge. */
.ocf-hero {
    --portola-trust-height: 96px;
    position: relative;
    padding: 0;
    background: var(--ocf-bg);
}

/* Stage + trust bar fill the first screen under the utility bar and nav row, so the trust bar sits in view. */
.ocf-hero__stage {
    position: relative;
    min-height: min(var(--hero-height, 760px), calc(100svh - var(--wp-admin-bar-offset, 0px) - var(--portola-utility-height, 44px) - var(--portola-nav-row-height, 104px) - var(--portola-trust-height)));
    display: flex;
    align-items: center;
    overflow: hidden;
}

/* Grid gathered around the eyebrow and headline like the footer's, thinning to a faint trace instead of covering the
 * whole stage. */
.ocf-hero__stage.portola-blueprint::before {
    -webkit-mask-image: radial-gradient(ellipse 58% 76% at 16% 24%, #000 0%, rgb(0 0 0 / 0.16) 90%, rgb(0 0 0 / 0.1) 100%);
            mask-image: radial-gradient(ellipse 58% 76% at 16% 24%, #000 0%, rgb(0 0 0 / 0.16) 90%, rgb(0 0 0 / 0.1) 100%);
}

.ocf-hero__stage > .container-global {
    position: relative;
    z-index: 1;
    flex: none;
}

.ocf-hero__content {
    max-width: min(800px, 51vw);
    padding-block: calc(var(--ocf-space-unit) * 2.5);
}

.ocf-hero__headline {
    margin: 0;
    color: var(--ocf-heading-alt);
    font-size: clamp(40px, 4vw, 64px);
    line-height: 1.02;
}

.ocf-hero__intro {
    max-width: 580px;
    margin: calc(var(--ocf-space-unit) * 1.75) 0 calc(var(--ocf-space-unit) * 2.5);
    color: var(--ocf-body-alt);
    font-size: calc(var(--font-body-size) * 1.11);
}

.ocf-hero .ocf-actions {
    display: flex;
    flex-wrap: wrap;
    gap: calc(var(--ocf-space-unit) * 1);
}

/* On the deep stage the primary action takes the secondary fill, matching the slash. */
.ocf-hero__stage .btn-primary { background: var(--ocf-secondary); color: var(--ocf-secondary-contrast); }
.ocf-hero__stage .btn-primary:hover { background: var(--ocf-secondary-hover); color: var(--ocf-secondary-contrast); }

/* Rating card on the photo, over the slash: the Google mark when reviews come from Google, the score beside the
 * stars, then the label. A soft card: light fill, hairline border, no shadow. */
.portola-rating-card {
    position: absolute;
    left: 3%;
    bottom: 44px;
    z-index: 2;
    width: 262px;
    padding: 20px 22px 18px;
    border: 1px solid var(--ocf-border);
    border-radius: 14px;
    background: color-mix(in srgb, var(--ocf-bg) 96%, var(--ocf-heading));
    color: var(--ocf-body);
}

.portola-rating-card__head {
    display: flex;
    align-items: center;
    gap: 10px;
    color: var(--ocf-heading);
    font-size: 15px;
    font-weight: 600;
    line-height: 1.2;
}

.portola-rating-card__head svg { width: 22px; height: 22px; flex: none; }

.portola-rating-card__score {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 14px;
}

.portola-rating-card__score:first-child { margin-top: 0; }

.portola-rating-card__score strong {
    color: var(--ocf-heading);
    font-family: var(--ocf-font-heading), system-ui, sans-serif;
    font-size: 46px;
    font-weight: 700;
    line-height: 1;
    letter-spacing: -0.02em;
}

.portola-rating-card__stars { color: var(--ocf-secondary); font-size: 19px; letter-spacing: 1px; line-height: 1; }
.portola-rating-card__label { margin-top: 10px; font-size: 14px; }

html[data-theme="dark"] .portola-rating-card { border-color: var(--ocf-dark-border); background: var(--ocf-dark-bg-alt); color: var(--ocf-dark-body); }
html[data-theme="dark"] .portola-rating-card__head,
html[data-theme="dark"] .portola-rating-card__score strong { color: var(--ocf-dark-heading); }

/* The photo: right half, cut on a slant; the slash straddles the cut. */
.ocf-hero__media {
    position: absolute;
    inset: 0 0 0 auto;
    width: 42%;
}

.ocf-hero__media .portola-slash {
    left: -10px;
    background: var(--ocf-secondary);
}

/* Trust bar. */
.portola-trust {
    background: var(--portola-grad);
    color: var(--ocf-primary-contrast);
}

.portola-trust__list {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: calc(var(--ocf-space-unit) * 1.5);
    min-height: var(--portola-trust-height);
    margin: 0 auto;
    padding-block: calc(var(--ocf-space-unit) * 1);
    list-style: none;
}

.portola-trust__list li {
    display: flex;
    align-items: center;
    gap: calc(var(--ocf-space-unit) * 0.75);
    font-family: var(--ocf-font-heading), system-ui, sans-serif;
    font-size: calc(var(--font-body-size) * 0.94);
    font-weight: 600;
}

.portola-trust__list svg { width: 22px; height: 22px; flex: none; }

@media (max-width: 1023px) {
    .ocf-hero__stage {
        display: block;
        min-height: 0;
    }

    .ocf-hero__content {
        max-width: 640px;
        padding-block: calc(var(--ocf-space-unit) * 4) calc(var(--ocf-space-unit) * 3);
    }

    .ocf-hero__media {
        position: relative;
        inset: auto;
        width: 100%;
        height: 360px;
        --strip-s: 56px;
    }

    .ocf-hero__media .portola-cut {
        inset: 0;
        clip-path: polygon(0 var(--strip-s), 100% 0, 100% 100%, 0 100%);
    }

    .ocf-hero__media .portola-slash {
        inset: 0;
        width: auto;
        background: var(--ocf-secondary);
        clip-path: polygon(0 calc(var(--strip-s) - 12px), 100% -12px, 100% 100%, 0 100%);
        z-index: -1;
    }

    .ocf-hero__media { z-index: 0; isolation: isolate; }

    .portola-trust__list { min-height: 76px; }
    .portola-trust__list li { font-size: calc(var(--font-body-size) * 0.8); gap: 8px; }
    .portola-trust__list svg { width: 18px; height: 18px; }
}

@media (max-width: 767px) {
    .ocf-hero__content { padding-block: calc(var(--ocf-space-unit) * 2.75) calc(var(--ocf-space-unit) * 2.25); }
    .ocf-hero__intro { margin: calc(var(--ocf-space-unit) * 1.25) 0 calc(var(--ocf-space-unit) * 2); }
    .ocf-hero .ocf-actions { flex-direction: column; align-items: stretch; }
    .portola-rating-card { left: 16px; bottom: 16px; width: auto; padding: 14px 16px; }
    .portola-rating-card__score strong { font-size: 36px; }
    .ocf-hero__media { height: 260px; --strip-s: 36px; }
    .portola-trust__list { flex-direction: column; align-items: flex-start; gap: 14px; padding-block: 26px; }
    .portola-trust__list li { font-size: calc(var(--font-body-size) * 0.94); }
}

/* The provisioner merges design.css after the pack, which hides .ocf-hero__eyebrow; keep it visible. */
.ocf-hero .ocf-hero__eyebrow { display: inline-flex; }
/* Eyebrow → headline reads the same as headline → intro (baseline to cap height). */
.ocf-hero .ocf-hero__eyebrow { margin-bottom: 30px; }
