/* Elevation, light and corner scale (Kevin 2026-11-02, from the 84-shadow-test review). Loaded after every other
   stylesheet. One light source from above: top highlights, shadows fall straight down. Shadows are tinted with the
   brand purple instead of black, layered (short contact + soft ambient), and rise one level on interaction.
   Corners follow outer radius = inner radius + the space between them. */
:root {
    --cv-shadow-tint: 34 18 89; /* #221259 */
    --cv-card-border: rgb(var(--cv-shadow-tint) / 9%);
    --cv-card-border-hover: rgb(var(--cv-shadow-tint) / 14%);
    /* Level 1: cards and boxes at rest. */
    --cv-shadow-1: 0 1px 2px rgb(var(--cv-shadow-tint) / 5%), 0 6px 16px -6px rgb(var(--cv-shadow-tint) / 10%);
    /* Level 2: interactive cards on hover. */
    --cv-shadow-2: 0 2px 4px rgb(var(--cv-shadow-tint) / 5%), 0 16px 32px -12px rgb(var(--cv-shadow-tint) / 22%);
    /* Level 3: floating panels and menus. */
    --cv-shadow-3: 0 4px 10px rgb(var(--cv-shadow-tint) / 6%), 0 28px 56px -16px rgb(var(--cv-shadow-tint) / 30%);
    /* Buttons: the button's own color, under 40% opacity, narrower than the button (negative spread). */
    --cv-button-shadow: inset 0 1px 0 rgb(255 255 255 / 18%), 0 12px 24px -10px rgb(var(--cv-shadow-tint) / 35%);
    --cv-button-shadow-hover: inset 0 1px 0 rgb(255 255 255 / 22%), 0 18px 32px -12px rgb(var(--cv-shadow-tint) / 38%);
    --cv-button-shadow-active: inset 0 1px 0 rgb(255 255 255 / 12%), 0 6px 14px -8px rgb(var(--cv-shadow-tint) / 35%);
    --cv-focus-ring: 0 0 0 3px #fff, 0 0 0 6px rgb(var(--cv-shadow-tint) / 30%);
    /* Corner scale: 4 badges, 8 icon tiles, 12 small buttons, 18 primary button, 24 cards and boxes. */
    /* Cards use 8px tiles + their own padding (12/16/20px by breakpoint), capped at 24px: the rules below compute it
       per element, because a custom property defined here would resolve once with the root padding. */
    --cv-radius-button-sm: 12px;
}

/* Cards, boxes and panels with 16px padding around 8px icon tiles: 24 = 8 + 16. */
:is(.cv-v1-heading, .cv-v1-workflow-intro, .cv-v1-book-panel, .cv-v1-newsletter-panel, .cv-v1-contact-panel,
    .cv-v1-service, .cv-v1-industry, .cv-v1-post, .cv-v1-form-panel, .cv-v1-blueprint, .cv-cro-method,
    .cv-inquiry-image, .cv-inquiry-copy, .cv-work-heading, .cv-case) { border-radius: min(24px, calc(var(--cv-card-padding, 16px) + 8px)); }
.cv-v1-post-image { border-radius: calc(min(24px, calc(var(--cv-card-padding, 16px) + 8px)) - 1px) calc(min(24px, calc(var(--cv-card-padding, 16px) + 8px)) - 1px) 0 0; }
.cv-v1-service-cover, :is(.cv-v1-industry, .cv-case) > :is(.cv-v1-industry-image, .cv-case-image) {
    border-radius: calc(min(24px, calc(var(--cv-card-padding, 16px) + 8px)) - 1px) calc(min(24px, calc(var(--cv-card-padding, 16px) + 8px)) - 1px) 0 0;
}
@media (min-width: 576px) {
    .cv-v1-service-cover, :is(.cv-v1-industry, .cv-case) > :is(.cv-v1-industry-image, .cv-case-image) {
        border-radius: calc(min(24px, calc(var(--cv-card-padding, 16px) + 8px)) - 1px) 0 0 calc(min(24px, calc(var(--cv-card-padding, 16px) + 8px)) - 1px);
    }
    .cv-featured-cases--cover-right .cv-case > .cv-case-image { border-radius: 0 calc(min(24px, calc(var(--cv-card-padding, 16px) + 8px)) - 1px) calc(min(24px, calc(var(--cv-card-padding, 16px) + 8px)) - 1px) 0; }
}
@media (max-width: 575px) {
    .cv-v1-service-cover, :is(.cv-v1-industry, .cv-case) > :is(.cv-v1-industry-image, .cv-case-image) {
        border-radius: calc(min(24px, calc(var(--cv-card-padding, 16px) + 8px)) - 1px) 0 0 calc(min(24px, calc(var(--cv-card-padding, 16px) + 8px)) - 1px);
    }
}

/* Floating layers sit highest. */
:is(.cv-page-toc-panel, .cv-nav-panel) { box-shadow: var(--cv-shadow-3); border-color: var(--cv-card-border); }
.cv-page-toc-toggle { box-shadow: 0 2px 4px rgb(var(--cv-shadow-tint) / 6%), 0 8px 18px -8px rgb(var(--cv-shadow-tint) / 22%); }

/* Icon tiles: keep the white top highlight (light from above) and add a hairline contact shadow. */
:is(.cv-v1-heading-icon, .cv-section--icon-tiles .cv-inquiry-heading > svg, .cv-section--icon-tiles .cv-blueprint-heading > h3 > svg) {
    box-shadow: inset 0 1px 0 #fff, 0 1px 2px rgb(var(--cv-shadow-tint) / 8%);
}

/* Interactive cards rise one level on hover (pointer devices only). `translate` is separate from the scroll-reveal
   `transform`, and the reveal transitions are repeated so its entrance animation is unchanged. */
:is(.cv-v1-service, .cv-v1-industry, .cv-case, .cv-v1-post):has(details, a[href]),
:is(.cv-v1-faq-grid, .cv-v1-faq-column) details {
    transition: box-shadow .2s ease, border-color .2s ease, translate .2s ease;
}
html.cv-sr :is(.cv-v1-service, .cv-v1-industry, .cv-case, .cv-v1-post):has(details, a[href]).cv-sr-item,
html.cv-sr :is(.cv-v1-faq-grid, .cv-v1-faq-column) details.cv-sr-item {
    transition:
        opacity 0.75s cubic-bezier(0.22, 1, 0.36, 1) var(--cv-sr-delay, 0ms),
        transform 0.85s cubic-bezier(0.22, 1, 0.36, 1) var(--cv-sr-delay, 0ms),
        box-shadow .2s ease, border-color .2s ease, translate .2s ease;
}
@media (hover: hover) {
    :is(.cv-v1-service, .cv-v1-industry, .cv-case, .cv-v1-post):has(details, a[href]):hover,
    :is(.cv-v1-faq-grid, .cv-v1-faq-column) details:hover {
        translate: 0 -2px;
        border-color: var(--cv-card-border-hover);
        box-shadow: var(--cv-shadow-2);
    }
}

/* Primary button: hover keeps the top highlight, pressed settles, keyboard focus is clearly visible. */
.cv-button { box-shadow: var(--cv-button-shadow); }
.cv-button:hover { box-shadow: var(--cv-button-shadow-hover); }
.cv-button:active { transform: translateY(0); background: #180d40; box-shadow: var(--cv-button-shadow-active); }
.cv-button:focus-visible { outline: none; box-shadow: var(--cv-button-shadow), var(--cv-focus-ring); }
/* Header button: same family as the primary button (12px small, 18px primary) instead of 6px. */
body:has(> .cv-home-v2) .cv-header .cv-button { border-radius: var(--cv-radius-button-sm); }

@media (prefers-reduced-motion: reduce) {
    :is(.cv-v1-service, .cv-v1-industry, .cv-case, .cv-v1-post):has(details, a[href]),
    :is(.cv-v1-faq-grid, .cv-v1-faq-column) details,
    html.cv-sr :is(.cv-v1-service, .cv-v1-industry, .cv-case, .cv-v1-post):has(details, a[href]).cv-sr-item,
    html.cv-sr :is(.cv-v1-faq-grid, .cv-v1-faq-column) details.cv-sr-item { transition: none; translate: none; }
}

/* Hero media sit beside 24px hero panels: same corner and level-1 shadow (Kevin 2026-11-02: hero covers looked flat).
   Transparent contain-fit artwork (SmartSaaS hero) keeps no shadow, which would draw a box around empty space. */
:is(.cv-industry-hero-grid > .cv-industry-hero-cover, .cv-case-hero-grid > img, .cv-hero-youtube) {
    border-radius: 24px;
    box-shadow: var(--cv-shadow-1);
}
.cv-smartsaas-hero .cv-case-hero-grid > img { box-shadow: none; }
/* Post Shorts: the 9:16 player frame is a surface of its own. */
.cv-native-post .cv-post-short-media { border-radius: 24px; box-shadow: var(--cv-shadow-1); }

/* Site-wide spacing (Kevin 2026-11-02): every section box uses the shared card padding, so the corner icon sits at the
   same distance as everywhere else (the book testimonials box had 28/20px). */
.cv-book-testimonials { padding: var(--cv-card-padding); }
/* Research list covers sit flush in 24px cards: 1px less than the card. */
@media (min-width: 701px) {
    .cv-research :is(.cv-research-paper-list, .cv-research-ebook-list) .cv-v1-post-image {
        border-radius: calc(min(24px, calc(var(--cv-card-padding, 16px) + 8px)) - 1px) 0 0 calc(min(24px, calc(var(--cv-card-padding, 16px) + 8px)) - 1px);
    }
}
@media (max-width: 700px) {
    .cv-research :is(.cv-research-paper-list, .cv-research-ebook-list) .cv-v1-post-image {
        border-radius: calc(min(24px, calc(var(--cv-card-padding, 16px) + 8px)) - 1px) calc(min(24px, calc(var(--cv-card-padding, 16px) + 8px)) - 1px) 0 0;
    }
}
/* Research covers padded inside their card: inner = 24px card - 16px padding. List and portrait variants keep their own
   more specific flush rules. */
.cv-research .cv-v1-post-grid:not(.cv-practice-grid, .cv-research-paper-list, .cv-research-ebook-list) > .cv-v1-post > .cv-v1-post-image img { border-radius: 8px; }

/* Hover light (Kevin 2026-11-02, second pass): a single line travels around the OUTSIDE of the box, 3px from its
   edge (radius = box radius + 3px), with a soft colored glow that fades outward, like Apple's edge light. The box
   itself is not lit. Every top-level surface on the site takes it; image frames that must clip their photo
   (inquiry image, hero video) and full reading surfaces are left out. Pointer devices only; the line stays still
   with reduced motion; without @property support it shows without travelling. */
@property --cv-light-angle { syntax: "<angle>"; inherits: false; initial-value: 0deg; }
@keyframes cv-light-travel { to { --cv-light-angle: 360deg; } }
:is(.cv-v1-faq-column details, .cv-v1-faq-grid details) { --cv-light-r: 10px; }
.cv-v1-media-logo { --cv-light-r: 16px; }
.cv-consulting-leadership { border-radius: min(24px, calc(var(--cv-card-padding, 16px) + 8px)); }
@media (hover: hover) {
    :is(.cv-v1-heading, .cv-v1-workflow-intro, .cv-v1-book-panel, .cv-v1-newsletter-panel, .cv-v1-contact-panel,
        .cv-v1-service, .cv-v1-industry, .cv-v1-post, .cv-v1-form-panel, .cv-v1-blueprint, .cv-cro-method,
        .cv-inquiry-copy, .cv-work-heading, .cv-case, .cv-consulting-leadership, .cv-v1-media-logo,
        .cv-v1-faq-column details, .cv-v1-faq-grid details):not(:is(.cv-v1-heading, .cv-v1-workflow-intro, .cv-v1-book-panel, .cv-v1-newsletter-panel, .cv-v1-contact-panel,
        .cv-v1-service, .cv-v1-industry, .cv-v1-post, .cv-v1-form-panel, .cv-v1-blueprint, .cv-cro-method,
        .cv-inquiry-copy, .cv-work-heading, .cv-case, .cv-consulting-leadership, .cv-v1-media-logo,
        .cv-v1-faq-column details, .cv-v1-faq-grid details) *) {
        position: relative;
        overflow: visible; /* the light sits outside; covers inside carry their own matching radius */
    }
    :is(.cv-v1-heading, .cv-v1-workflow-intro, .cv-v1-book-panel, .cv-v1-newsletter-panel, .cv-v1-contact-panel,
        .cv-v1-service, .cv-v1-industry, .cv-v1-post, .cv-v1-form-panel, .cv-v1-blueprint, .cv-cro-method,
        .cv-inquiry-copy, .cv-work-heading, .cv-case, .cv-consulting-leadership, .cv-v1-media-logo,
        .cv-v1-faq-column details, .cv-v1-faq-grid details):not(:is(.cv-v1-heading, .cv-v1-workflow-intro, .cv-v1-book-panel, .cv-v1-newsletter-panel, .cv-v1-contact-panel,
        .cv-v1-service, .cv-v1-industry, .cv-v1-post, .cv-v1-form-panel, .cv-v1-blueprint, .cv-cro-method,
        .cv-inquiry-copy, .cv-work-heading, .cv-case, .cv-consulting-leadership, .cv-v1-media-logo,
        .cv-v1-faq-column details, .cv-v1-faq-grid details) *)::before,
    :is(.cv-v1-heading, .cv-v1-workflow-intro, .cv-v1-book-panel, .cv-v1-newsletter-panel, .cv-v1-contact-panel,
        .cv-v1-service, .cv-v1-industry, .cv-v1-post, .cv-v1-form-panel, .cv-v1-blueprint, .cv-cro-method,
        .cv-inquiry-copy, .cv-work-heading, .cv-case, .cv-consulting-leadership, .cv-v1-media-logo,
        .cv-v1-faq-column details, .cv-v1-faq-grid details):not(:is(.cv-v1-heading, .cv-v1-workflow-intro, .cv-v1-book-panel, .cv-v1-newsletter-panel, .cv-v1-contact-panel,
        .cv-v1-service, .cv-v1-industry, .cv-v1-post, .cv-v1-form-panel, .cv-v1-blueprint, .cv-cro-method,
        .cv-inquiry-copy, .cv-work-heading, .cv-case, .cv-consulting-leadership, .cv-v1-media-logo,
        .cv-v1-faq-column details, .cv-v1-faq-grid details) *)::after {
        --cv-light-gap: 3px;
        content: "";
        position: absolute;
        z-index: 1;
        pointer-events: none;
        /* Comet: transparent most of the way, a fading tail, a bright magenta head. */
        background: conic-gradient(from var(--cv-light-angle),
            transparent 0 58%,
            rgb(76 195 255 / 0) 60%, rgb(76 195 255 / .55) 74%,
            rgb(138 92 255 / .85) 88%, rgb(255 79 163 / .95) 97%, transparent 99%);
        opacity: 0;
        transition: opacity .4s ease;
    }
    /* The travelling line: 1.5px, outside the border. */
    :is(.cv-v1-heading, .cv-v1-workflow-intro, .cv-v1-book-panel, .cv-v1-newsletter-panel, .cv-v1-contact-panel,
        .cv-v1-service, .cv-v1-industry, .cv-v1-post, .cv-v1-form-panel, .cv-v1-blueprint, .cv-cro-method,
        .cv-inquiry-copy, .cv-work-heading, .cv-case, .cv-consulting-leadership, .cv-v1-media-logo,
        .cv-v1-faq-column details, .cv-v1-faq-grid details):not(:is(.cv-v1-heading, .cv-v1-workflow-intro, .cv-v1-book-panel, .cv-v1-newsletter-panel, .cv-v1-contact-panel,
        .cv-v1-service, .cv-v1-industry, .cv-v1-post, .cv-v1-form-panel, .cv-v1-blueprint, .cv-cro-method,
        .cv-inquiry-copy, .cv-work-heading, .cv-case, .cv-consulting-leadership, .cv-v1-media-logo,
        .cv-v1-faq-column details, .cv-v1-faq-grid details) *)::before {
        inset: calc(-1 * var(--cv-light-gap));
        padding: 1.5px;
        border-radius: calc(var(--cv-light-r, min(24px, calc(var(--cv-card-padding, 16px) + 8px))) + var(--cv-light-gap));
        -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
        -webkit-mask-composite: xor;
        mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0);
    }
    /* The glow: a 16px band outside the box that fades away from the edge (two crossed fades), with the inside cut out. */
    :is(.cv-v1-heading, .cv-v1-workflow-intro, .cv-v1-book-panel, .cv-v1-newsletter-panel, .cv-v1-contact-panel,
        .cv-v1-service, .cv-v1-industry, .cv-v1-post, .cv-v1-form-panel, .cv-v1-blueprint, .cv-cro-method,
        .cv-inquiry-copy, .cv-work-heading, .cv-case, .cv-consulting-leadership, .cv-v1-media-logo,
        .cv-v1-faq-column details, .cv-v1-faq-grid details):not(:is(.cv-v1-heading, .cv-v1-workflow-intro, .cv-v1-book-panel, .cv-v1-newsletter-panel, .cv-v1-contact-panel,
        .cv-v1-service, .cv-v1-industry, .cv-v1-post, .cv-v1-form-panel, .cv-v1-blueprint, .cv-cro-method,
        .cv-inquiry-copy, .cv-work-heading, .cv-case, .cv-consulting-leadership, .cv-v1-media-logo,
        .cv-v1-faq-column details, .cv-v1-faq-grid details) *)::after {
        inset: -16px;
        padding: 16px;
        border-radius: calc(var(--cv-light-r, min(24px, calc(var(--cv-card-padding, 16px) + 8px))) + 16px);
        filter: blur(4px);
        -webkit-mask:
            linear-gradient(#000 0 0) content-box,
            linear-gradient(#000 0 0),
            linear-gradient(to right, transparent, #000 16px, #000 calc(100% - 16px), transparent),
            linear-gradient(to bottom, transparent, #000 16px, #000 calc(100% - 16px), transparent);
        -webkit-mask-composite: xor, source-over, source-in;
        mask:
            linear-gradient(#000 0 0) content-box exclude,
            linear-gradient(#000 0 0) intersect,
            linear-gradient(to right, transparent, #000 16px, #000 calc(100% - 16px), transparent) intersect,
            linear-gradient(to bottom, transparent, #000 16px, #000 calc(100% - 16px), transparent);
    }
    :is(.cv-v1-heading, .cv-v1-workflow-intro, .cv-v1-book-panel, .cv-v1-newsletter-panel, .cv-v1-contact-panel,
        .cv-v1-service, .cv-v1-industry, .cv-v1-post, .cv-v1-form-panel, .cv-v1-blueprint, .cv-cro-method,
        .cv-inquiry-copy, .cv-work-heading, .cv-case, .cv-consulting-leadership, .cv-v1-media-logo,
        .cv-v1-faq-column details, .cv-v1-faq-grid details):not(:is(.cv-v1-heading, .cv-v1-workflow-intro, .cv-v1-book-panel, .cv-v1-newsletter-panel, .cv-v1-contact-panel,
        .cv-v1-service, .cv-v1-industry, .cv-v1-post, .cv-v1-form-panel, .cv-v1-blueprint, .cv-cro-method,
        .cv-inquiry-copy, .cv-work-heading, .cv-case, .cv-consulting-leadership, .cv-v1-media-logo,
        .cv-v1-faq-column details, .cv-v1-faq-grid details) *):hover {
        /* 3D: light from above on the top edge plus the raised level-2 shadow. */
        box-shadow: inset 0 1px 0 rgb(255 255 255 / 90%), var(--cv-shadow-2);
    }
    :is(.cv-v1-heading, .cv-v1-workflow-intro, .cv-v1-book-panel, .cv-v1-newsletter-panel, .cv-v1-contact-panel,
        .cv-v1-service, .cv-v1-industry, .cv-v1-post, .cv-v1-form-panel, .cv-v1-blueprint, .cv-cro-method,
        .cv-inquiry-copy, .cv-work-heading, .cv-case, .cv-consulting-leadership, .cv-v1-media-logo,
        .cv-v1-faq-column details, .cv-v1-faq-grid details):not(:is(.cv-v1-heading, .cv-v1-workflow-intro, .cv-v1-book-panel, .cv-v1-newsletter-panel, .cv-v1-contact-panel,
        .cv-v1-service, .cv-v1-industry, .cv-v1-post, .cv-v1-form-panel, .cv-v1-blueprint, .cv-cro-method,
        .cv-inquiry-copy, .cv-work-heading, .cv-case, .cv-consulting-leadership, .cv-v1-media-logo,
        .cv-v1-faq-column details, .cv-v1-faq-grid details) *):hover::before { opacity: .9; animation: cv-light-travel 3.6s linear infinite; }
    :is(.cv-v1-heading, .cv-v1-workflow-intro, .cv-v1-book-panel, .cv-v1-newsletter-panel, .cv-v1-contact-panel,
        .cv-v1-service, .cv-v1-industry, .cv-v1-post, .cv-v1-form-panel, .cv-v1-blueprint, .cv-cro-method,
        .cv-inquiry-copy, .cv-work-heading, .cv-case, .cv-consulting-leadership, .cv-v1-media-logo,
        .cv-v1-faq-column details, .cv-v1-faq-grid details):not(:is(.cv-v1-heading, .cv-v1-workflow-intro, .cv-v1-book-panel, .cv-v1-newsletter-panel, .cv-v1-contact-panel,
        .cv-v1-service, .cv-v1-industry, .cv-v1-post, .cv-v1-form-panel, .cv-v1-blueprint, .cv-cro-method,
        .cv-inquiry-copy, .cv-work-heading, .cv-case, .cv-consulting-leadership, .cv-v1-media-logo,
        .cv-v1-faq-column details, .cv-v1-faq-grid details) *):hover::after { opacity: .45; animation: cv-light-travel 3.6s linear infinite; }
}
@media (hover: hover) and (prefers-reduced-motion: reduce) {
    :is(.cv-v1-heading, .cv-v1-workflow-intro, .cv-v1-book-panel, .cv-v1-newsletter-panel, .cv-v1-contact-panel,
        .cv-v1-service, .cv-v1-industry, .cv-v1-post, .cv-v1-form-panel, .cv-v1-blueprint, .cv-cro-method,
        .cv-inquiry-copy, .cv-work-heading, .cv-case, .cv-consulting-leadership, .cv-v1-media-logo,
        .cv-v1-faq-column details, .cv-v1-faq-grid details):not(:is(.cv-v1-heading, .cv-v1-workflow-intro, .cv-v1-book-panel, .cv-v1-newsletter-panel, .cv-v1-contact-panel,
        .cv-v1-service, .cv-v1-industry, .cv-v1-post, .cv-v1-form-panel, .cv-v1-blueprint, .cv-cro-method,
        .cv-inquiry-copy, .cv-work-heading, .cv-case, .cv-consulting-leadership, .cv-v1-media-logo,
        .cv-v1-faq-column details, .cv-v1-faq-grid details) *)::before, :is(.cv-v1-heading, .cv-v1-workflow-intro, .cv-v1-book-panel, .cv-v1-newsletter-panel, .cv-v1-contact-panel,
        .cv-v1-service, .cv-v1-industry, .cv-v1-post, .cv-v1-form-panel, .cv-v1-blueprint, .cv-cro-method,
        .cv-inquiry-copy, .cv-work-heading, .cv-case, .cv-consulting-leadership, .cv-v1-media-logo,
        .cv-v1-faq-column details, .cv-v1-faq-grid details):not(:is(.cv-v1-heading, .cv-v1-workflow-intro, .cv-v1-book-panel, .cv-v1-newsletter-panel, .cv-v1-contact-panel,
        .cv-v1-service, .cv-v1-industry, .cv-v1-post, .cv-v1-form-panel, .cv-v1-blueprint, .cv-cro-method,
        .cv-inquiry-copy, .cv-work-heading, .cv-case, .cv-consulting-leadership, .cv-v1-media-logo,
        .cv-v1-faq-column details, .cv-v1-faq-grid details) *)::after { animation: none !important; }
}
