/* Google Fonts now load from a preconnected <link> in the head injection
   (Settings > Header and Footer > Head). The render-blocking @import that
   lived on this line was removed 2026-08-21 for page speed. */

/* Hide Meta Except Date on Blog Index */
.text-sep {
    display: none !important;
}
.minor-meta {
    display: none;
}
time.date-container.minor-meta.updated {
    display: block;
}
i {
    font-style: italic;
}
/* iFrame embed bottom padding tweak */
.avia-video-16-9, .js_active .avia-iframe-wrap {
    padding-bottom: 300px;
}

/* MooSend Form CSS Tweaks */
#ms-sub-form button {
    cursor: pointer;
}
#top .footer_color input[type='email'] {
    color: #333;
}
.footer_color label span {
    color: white !important;
}

/* Disclaimer Display CSS */
/* Hide on ALL to start */
.disclaimer-text-holder {
    display: none;
}
/* Hide on Portfolio */
.single-portfolio .disclaimer-text-holder {
    display: none;
}
/* Hide on White Paper */
.cat-white-paper .disclaimer-text-holder {
    display: none;
}
/* Show on Newsletter */
.cat-newsletter .disclaimer-text-holder {
    display: block;
}
/* Show on Press */
.cat-press .disclaimer-text-holder {
    display: block;
}
/* Show on Insights */
.cat-insights .disclaimer-text-holder {
    display: block;
}
/* Disclaimer Font styling */
p.disclaimer-text {
    font-size: 12px;
    background-color: #f9f9f9;
    padding: 10px;
    border: solid 1px #BBB;
}

/* Remove Footer Menu padding */
.widget_nav_menu a {
    padding: 0px;
}

.wpforms-form input[type=submit],
.wpforms-form button[type=submit] {
    background-color: #0e4170 !important; /* Blue background */
    border: 1px solid #0e4170 !important; /* Blue border */
    color: #fff !important; /* White text color */
    font-size: 1em; /* Size of text */
    padding: 10px 15px; /* Distance between text and border */
}

/* Footer subscribe form */
/* Scoped to the MooSend form inside the Enfold footer so nothing leaks
   into the WPForms contact or whitepaper forms on the rebuilt pages. */

/* a) "Email" label above the input: force white on the navy footer */
#top .footer_color #ms-sub-form label,
#top .footer_color #ms-sub-form label span {
    color: #FFFFFF !important;
}

/* b + c) Subscribe button: match the email input shape, sized to its text,
   KEY green background with white text */
#top .footer_color #ms-sub-form button,
#top .footer_color #ms-sub-form button[type='submit'] {
    display: inline-block;
    width: auto;
    background-color: #084503 !important;
    background-image: none !important;
    border: 1px solid #084503 !important;
    border-radius: 4px !important;
    color: #FFFFFF !important;
    font-family: inherit;
    font-size: 0.95rem;
    font-weight: 600;
    line-height: 1.2;
    padding: 0.6rem 1.1rem !important;
    margin-top: 0.5rem;
    text-transform: none;
    cursor: pointer;
    transition: background-color 0.2s ease, border-color 0.2s ease;
}
#top .footer_color #ms-sub-form button:hover,
#top .footer_color #ms-sub-form button:focus {
    background-color: #052D01 !important;
    border-color: #052D01 !important;
    color: #FFFFFF !important;
}

/* d) Visible keyboard focus ring for accessibility */
#top .footer_color #ms-sub-form button:focus-visible {
    outline: 2px solid #FFFFFF;
    outline-offset: 2px;
}

/* WPForms submit buttons on the rebuilt pages */
/* The legacy rule above paints submit buttons navy #0e4170 site-wide.
   assets/styles.css only styles .btn classes, which WPForms does not use,
   so without this the contact and whitepaper buttons render navy.
   HANDOFF section 4: one button rule site-wide, KEY green with white text,
   darkening to #052D01 on hover. */

#top .wpforms-form button[type='submit'],
#top .wpforms-form input[type='submit'],
#top div.wpforms-container-full .wpforms-form button[type='submit'],
#top div.wpforms-container-full .wpforms-form input[type='submit'] {
    background-color: #084503 !important;
    background-image: none !important;
    border: 1px solid #084503 !important;
    border-radius: 4px !important;
    color: #FFFFFF !important;
    font-weight: 600;
    padding: 0.875rem 1.75rem !important;
    text-transform: none;
    cursor: pointer;
    transition: background-color 0.2s ease, border-color 0.2s ease;
}

#top .wpforms-form button[type='submit']:hover,
#top .wpforms-form input[type='submit']:hover,
#top div.wpforms-container-full .wpforms-form button[type='submit']:hover,
#top div.wpforms-container-full .wpforms-form input[type='submit']:hover {
    background-color: #052D01 !important;
    border-color: #052D01 !important;
    color: #FFFFFF !important;
}

#top .wpforms-form button[type='submit']:focus-visible,
#top .wpforms-form input[type='submit']:focus-visible {
    outline: 2px solid #084503;
    outline-offset: 2px;
}

/* Home hero particle field */
/* main.js sizes the canvas from its parent element's clientHeight. In the
   static reference the canvas sits directly inside the hero section, which
   has height. In WordPress it sits inside an Avia codeblock wrapper that
   collapses to zero height, so the canvas buffer was 2390 x 0 and the field
   never painted. Make the wrapper fill the hero section instead. */

#top .home-hero {
    position: relative;
    overflow: hidden;
}

#top .home-hero .hero-canvas-block,
#top .home-hero .avia_codeblock_section {
    position: absolute;
    inset: 0;
    margin: 0;
    padding: 0;
    pointer-events: none;
    z-index: 0;
}

#top .home-hero .hero-canvas-block .avia_codeblock,
#top .home-hero .hero-canvas-block > div {
    height: 100%;
}

#top .home-hero canvas.hero-canvas,
#top .home-hero canvas[data-field='hero'] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
}

/* Keep the hero copy above the canvas */
#top .home-hero .entry-content-wrapper,
#top .home-hero .flex_column,
#top .home-hero .av-special-heading,
#top .home-hero .avia_textblock {
    position: relative;
    z-index: 1;
}


/* ==================================================================
   WORDPRESS ADAPTER LAYER (restored 2026-08-06)
   ------------------------------------------------------------------
   These are the bespoke class names invented for the Avia / Enfold
   markup on the 2026 redesign drafts. None of them are defined in
   assets/styles.css or assets/wp-bridge.css, so when this block was
   dropped the markup lost every layout constraint it had.

   Restored from post 1550 (slug "enfold"), which remains untouched
   as the rollback copy.

   Deliberately NOT restored, because assets/styles.css already
   provides them properly: .card, .card-grid, .card-tag, .filter-bar,
   .filter-btn, .flywheel-svg, .fw-arc, .ascent-svg, .advisor-photo,
   .stat-note, .market-note, .sector-tags, .section-head, .port-card,
   .insight-card, .card-logo, .card-body, the IBM Plex Mono and Inter
   font declarations, and the design tokens.
   ================================================================== */


/* ---- Supercycle: alternating chart and copy rows ---- */
.sc-rows { margin-top: 30px; }

.sc-row {
    display: flex;
    align-items: center;
    gap: 38px;
    padding: 26px 0;
    border-bottom: 1px solid #e3e8ef;
}
.sc-row:last-child { border-bottom: none; }
.sc-row-flip { flex-direction: row-reverse; }
.sc-row-flip .sc-text { text-align: right; }

.sc-text { flex: 1 1 auto; min-width: 0; }
.sc-text .stat-sector {
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #4a7729;
    margin: 0;
}
.sc-text .stat-big {
    font-size: 32px;
    font-weight: 700;
    color: #0e4170;
    margin: 2px 0 6px;
}
.sc-text > p:not(.stat-sector):not(.stat-big):not(.stat-note) {
    margin: 0 0 4px;
    font-size: 15px;
    color: #4a5568;
    line-height: 1.55;
}


/* ---- Sector chart slot ----
   The old .sc-icon rule was written when this slot held a 24px line
   icon inside a 92px navy circle. It now holds a .colchart SVG whose
   viewBox is 160 x 100 and whose CSS width is 100%, so inside a
   full width Avia column it stretched to roughly 1195 x 747 and left
   about a screenful of blank space per row, five times over.

   Constrain the slot to a sensible width and let the SVG keep its
   1.6 : 1 ratio. 280px wide resolves to 175px tall.

   The market-cell class on the same wrapper is functional, not
   decorative: main.js only hands out is-live to
   ".market-cell, .stat, .phase, .growth-wrap, .ascent-wrap, .flywheel-svg",
   and assets/styles.css keeps the bars at scaleY(0) until an is-live
   ancestor exists. Neutralise the design system's .market-cell skin
   in this slot so the class stays purely functional here. */

.sc-row .sc-icon {
    flex: 0 0 280px;
    width: 280px;
    max-width: 100%;
    align-self: center;
}
.sc-row .sc-icon.market-cell {
    display: block;
    background: none;
    padding: 0;
    gap: 0;
}
.sc-icon > svg.colchart {
    display: block;
    width: 100%;
    height: auto;
}

@media only screen and (max-width: 989px) {
    .sc-row .sc-icon { flex: 0 0 240px; width: 240px; }
    .sc-row { gap: 28px; }
}
@media only screen and (max-width: 620px) {
    .sc-row, .sc-row-flip { flex-direction: column; text-align: center; }
    .sc-row-flip .sc-text { text-align: center; }
    .sc-row .sc-icon {
        flex: 0 0 auto;
        width: 100%;
        max-width: 300px;
        margin: 0 auto;
    }
}


/* ---- Platform stats: big count-up numerals ---- */
.stat-xl {
    font-size: clamp(46px, 5.5vw, 74px) !important;
    font-weight: 700;
    line-height: 1.05;
    margin-bottom: 6px;
}


/* ---- IC process: four phase cards with tilt ---- */
.ic-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 22px;
    margin: 4px 0 10px;
}
.home-process .dealflow-container { display: none; }
@media only screen and (max-width: 989px) {
    .ic-grid { grid-template-columns: repeat(2, 1fr); }
}
@media only screen and (max-width: 620px) {
    .ic-grid { grid-template-columns: 1fr; }
}
.ic-phase {
    background: #fff;
    border: 1px solid #e3e8ef;
    border-top: 3px solid #0e4170;
    border-radius: 12px;
    padding: 26px 22px 24px;
    box-shadow: 0 4px 14px rgba(14,54,92,0.06);
    transition: transform 0.45s cubic-bezier(0.2,0.6,0.2,1), box-shadow 0.45s ease;
    will-change: transform;
}
.ic-phase:hover {
    transform: perspective(900px) rotateX(3deg) rotateY(2deg) translateY(-6px);
    box-shadow: 0 18px 38px rgba(14,54,92,0.16);
}
.ic-phase h3 { font-size: 18px; margin: 6px 0 10px; color: #14365c; }
.ic-phase p { font-size: 14px; line-height: 1.55; color: #4a5568; }
.ic-num {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.1em;
    color: #4a7729;
    margin-bottom: 4px;
}
.ic-pct { font-size: 34px; font-weight: 700; color: #0e4170; margin: 16px 0 2px; }
.ic-label {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #6b7a8c;
}


/* ---- Card meta line ---- */
.card-meta { margin-top: 10px !important; font-size: 13px; }


/* ---- Firm page image frames ---- */
.firm-img {
    margin: 0 0 22px;
    border-radius: 10px;
    box-shadow: 0 18px 40px rgba(14,54,92,0.25);
    transform: rotate(-2deg);
    transition: transform 0.45s cubic-bezier(0.2,0.6,0.2,1);
    overflow: hidden;
}
.firm-img:hover { transform: rotate(0deg) scale(1.02); }
.firm-img img { display: block; width: 100%; height: auto; border-radius: 10px; }
.firm-img-wide { max-width: 760px; margin: 26px auto 6px; transform: rotate(0); }
.firm-img-wide:hover { transform: scale(1.015); }


/* ---- Firm: platform growth count-up stats ---- */
.growth-stats {
    display: flex;
    gap: 70px;
    flex-wrap: wrap;
    margin: 24px 0 8px;
}
.growth-stat p { margin: 0; }
.growth-stat .stat-xl { color: #0e4170; }
.growth-stat p:last-child { color: #4a5568; font-size: 15px; }


/* ---- Team: advisor initials placeholder ---- */
.advisor-placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255,255,255,0.12);
    color: #fff;
    font-weight: 700;
    font-size: 26px;
    letter-spacing: 0.05em;
}


/* ---- Strategies: flywheel step list ---- */
.flywheel-steps {
    list-style: none;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px 28px;
    max-width: 720px;
    margin: 18px auto 0;
    padding: 0;
}
.flywheel-steps li { font-size: 14px; color: rgba(255,255,255,0.85); line-height: 1.5; }
.flywheel-steps li strong { color: #fff; }
@media only screen and (max-width: 620px) {
    .flywheel-steps { grid-template-columns: 1fr; }
}


/* ---- Podcast embed and episode list ---- */
.podcast-embed-block iframe {
    border: 0;
    border-radius: 14px;
    box-shadow: 0 12px 32px rgba(14,54,92,0.18);
    margin-top: 10px;
    transition: height 0.4s ease;
}
.more-episodes { margin-top: 16px; }
.episode-list {
    max-height: 560px;
    overflow-y: auto;
    margin-top: 18px;
    background: #fff;
    border: 1px solid #e3e8ef;
    border-radius: 12px;
    box-shadow: 0 4px 14px rgba(14,54,92,0.06);
}
.episode-list .ep-item {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 18px;
    padding: 15px 20px;
    border-bottom: 1px solid #eef1f5;
    text-decoration: none;
    transition: background 0.2s ease;
}
.episode-list .ep-item:last-child { border-bottom: none; }
.episode-list .ep-item:hover { background: #f5f8fb; }
.episode-list .ep-title { color: #14365c; font-size: 15px; font-weight: 600; line-height: 1.4; }
.episode-list .ep-date { color: #6b7a8c; font-size: 13px; white-space: nowrap; }
.episode-list .ep-loading { padding: 18px 20px; margin: 0; color: #6b7a8c; }
#top .podcast-embed-block .avia-iframe-wrap {
    padding-bottom: 0 !important;
    height: auto !important;
    position: static !important;
}
#top .podcast-embed-block .avia-iframe-wrap iframe {
    position: static !important;
    width: 100% !important;
}


/* ---- Avia buttons on the redesign drafts: KEY forest green ----
   Enfold paints .avia-button from theme options (currently navy
   #0e4170). The handoff calls for one button treatment site-wide in
   KEY green, which is already applied to WPForms above. This is the
   Avia side of the same adapter rule, scoped to the redesign pages
   so legacy pages are untouched. */
body#top:is(.page-id-8066,.page-id-8067,.page-id-8068,.page-id-8069,.page-id-8070,.page-id-8072,.page-id-8073,.page-id-8074,.page-id-8075,.page-id-8076,.page-id-8077,.page-id-8078,.page-id-8094,.page-id-8095) .avia-button {
    background-color: #084503 !important;
    border-color: #084503 !important;
    color: #ffffff !important;
    background-image: none !important;
}
body#top:is(.page-id-8066,.page-id-8067,.page-id-8068,.page-id-8069,.page-id-8070,.page-id-8072,.page-id-8073,.page-id-8074,.page-id-8075,.page-id-8076,.page-id-8077,.page-id-8078,.page-id-8094,.page-id-8095) .avia-button:hover {
    background-color: #052D01 !important;
    border-color: #052D01 !important;
}


/* ---- Accessibility: reduced motion ---- */
@media (prefers-reduced-motion: reduce) {
    .ic-phase, .firm-img, .podcast-embed-block iframe { transition: none !important; }
    .ic-phase:hover, .firm-img:hover { transform: none !important; }
}


/* Interior page hero particle field */
/* Same trap as the home hero block above. main.js sizes each canvas from
   canvas.parentElement.clientHeight. Inside an Avia codeblock that wrapper
   collapses to zero height, so the buffer becomes WIDTH x 0 and the field
   never paints. Make the codeblock wrapper fill the hero so it has real
   height. Scoped to .page-hero, so the home hero rules above are untouched. */

/* Homepage hero: strengthen the particle field */
/* Keep the approved light hero, but make the constellation read against white.
   main.js draws at nodeAlpha 0.78 / lineAlpha 0.26 in rgb(43,108,163). Those
   live inside the vendor file, which the handoff says to keep verbatim, so
   they cannot be raised directly. A CSS filter on the canvas strengthens
   exactly what main.js already paints, without touching the palette or the
   vendor code. The backdrop tint is --c-panel #F4F7FA, an existing token. */

#top .home-hero {
    background-color: #F4F7FA;
}

#top .home-hero canvas.hero-canvas,
#top .home-hero canvas[data-field='hero'] {
    filter: saturate(1.45) contrast(1.2);
}

/* Interior hero fields now use the same "hero" field type as the homepage,
   so they render the full constellation rather than the fainter ambient
   variant. Give them the same panel tint and lift so they read identically. */
#top .page-hero {
    background-color: #F4F7FA;
}

#top .page-hero canvas.field-canvas,
#top .page-hero canvas[data-field='hero'] {
    filter: saturate(1.45) contrast(1.2);
}


#top .page-hero {
    position: relative;
    overflow: hidden;
}

#top .page-hero .ambient-canvas-block,
#top .page-hero .avia_codeblock_section {
    position: absolute;
    inset: 0;
    margin: 0;
    padding: 0;
    pointer-events: none;
    z-index: 0;
}

#top .page-hero .ambient-canvas-block .avia_codeblock,
#top .page-hero .ambient-canvas-block > div,
#top .page-hero .avia_codeblock_section .avia_codeblock {
    height: 100%;
    margin: 0;
    padding: 0;
}

#top .page-hero canvas.field-canvas,
#top .page-hero canvas[data-field='ambient'] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
}

/* Keep the hero copy above the canvas */
#top .page-hero .entry-content-wrapper,
#top .page-hero .flex_column,
#top .page-hero .av-special-heading,
#top .page-hero .avia_textblock {
    position: relative;
    z-index: 1;
}


/* ==================================================================
   Strategies page (8074): equal-height .tile cards
   ------------------------------------------------------------------
   .tile itself is defined in assets/styles.css and is NOT redefined
   here. Avia renders each card in a floated av_one_half column, so
   cards sharing a row would otherwise have ragged heights. Make the
   section's column wrapper a wrapping flex row, so columns on the
   same line stretch to equal height, then let the textblock section
   and the tile inside it fill that height.
   Scoped to page 8074 so no other page is affected.
   ================================================================== */

body#top.page-id-8074 :is(.strategies-sectors,.strategies-cannabis,.strategies-frontier,.strategies-entry) .entry-content-wrapper {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
}

body#top.page-id-8074 :is(.strategies-sectors,.strategies-cannabis,.strategies-frontier,.strategies-entry) .flex_column.av_one_half {
    display: flex;
    flex-direction: column;
}

body#top.page-id-8074 :is(.strategies-sectors,.strategies-cannabis,.strategies-frontier,.strategies-entry) .flex_column.av_one_half > .av_textblock_section {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
}

body#top.page-id-8074 :is(.strategies-sectors,.strategies-cannabis,.strategies-frontier,.strategies-entry) .flex_column.av_one_half > .av_textblock_section > .avia_textblock.tile {
    flex: 1 1 auto;
}


/* Homepage hero: full-bleed particle field */
/* The canvas was resolving its absolute position against .flex_column, so it
   only covered the 1195px content column, roughly 75 percent of the hero.
   Making the column static lets the canvas resolve against .home-hero itself
   and cover the whole section. Side benefit: main.js derives particle count
   from canvas area (areaPer 23000), so a larger canvas seeds noticeably more
   nodes rather than sitting on the 30-particle floor. */

#top .home-hero .entry-content-wrapper,
#top .home-hero .flex_column {
    position: static;
}

#top .home-hero .av-special-heading,
#top .home-hero .avia_textblock,
#top .home-hero .avia-button-wrap,
#top .home-hero .avia-button,
#top .home-hero .avia-buttonrow-wrap {
    position: relative;
    z-index: 2;
}

#top .home-hero .hero-canvas-block,
#top .home-hero .avia_codeblock_section {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
    pointer-events: none;
    z-index: 0;
}

/* Nodes and links pushed harder. Note the ceiling: main.js draws at
   nodeAlpha 0.78 / lineAlpha 0.26 inside the vendor file, and a CSS filter
   cannot raise alpha. Darkening and boosting contrast is what is available
   without forking main.js. */
#top .home-hero canvas.hero-canvas,
#top .home-hero canvas[data-field='hero'] {
    filter: saturate(1.7) contrast(1.9) brightness(0.62);
}

/* Homepage hero: break the field out to full bleed */
/* Enfold's MAIN.template-page is position:relative and clamped to the 1195px
   content width, so an absolutely positioned child can only ever cover the
   column, not the 1909px section. Breaking out horizontally with 100vw and a
   centring translate. .home-hero already has overflow:hidden, so the 100vw
   cannot introduce a horizontal scrollbar.
   The inner wrapper must also be given real dimensions: main.js reads
   canvas.parentElement.clientWidth/clientHeight to size the buffer. */

#top .home-hero .hero-canvas-block,
#top .home-hero .avia_codeblock_section {
    top: 0;
    bottom: 0;
    left: 50%;
    right: auto;
    inset: auto;
    transform: translateX(-50%);
    width: 100vw;
    max-width: none;
    height: auto;
}

#top .home-hero .hero-canvas-block > div,
#top .home-hero .hero-canvas-block .avia_codeblock,
#top .home-hero .avia_codeblock_section > div {
    width: 100%;
    height: 100%;
}

/* Correction: `inset: auto` must come FIRST in the block. Declared after
   top/bottom/left it resets them, which collapsed the field to zero height
   and threw it off to the left. */

#top .home-hero .hero-canvas-block,
#top .home-hero .avia_codeblock_section {
    inset: auto;
    top: 0;
    bottom: 0;
    left: 50%;
    right: auto;
    transform: translateX(-50%);
    width: 100vw;
    max-width: none;
    height: auto;
}

/* Hero field: darken toward brand navy */
/* brightness(0.44) maps the drawn rgb(43,108,163) to roughly rgb(19,48,72),
   which is almost exactly --c-navy-deep #0A2C4D. See the note below on why
   this only goes so far: alpha, not colour, is the limiting factor. */

#top .home-hero canvas.hero-canvas,
#top .home-hero canvas[data-field='hero'],
#top .page-hero canvas.field-canvas,
#top .page-hero canvas[data-field='hero'] {
    filter: saturate(1.3) contrast(1.45) brightness(0.44);
}

/* Hero field filter: back off now that alpha does the work */
/* The heavy brightness(0.44) above was compensating for lineAlpha 0.26.
   main.js is now tuned to nodeAlpha 0.90 / lineAlpha 0.50, so the filter
   only needs a light touch. Leaving the old rule in place would render the
   field almost black. */

#top .home-hero canvas.hero-canvas,
#top .home-hero canvas[data-field='hero'],
#top .page-hero canvas.field-canvas,
#top .page-hero canvas[data-field='hero'] {
    filter: saturate(1.15) contrast(1.08) brightness(0.94);
}

/* Interior page heroes: break the field out to full bleed */
/* Mirrors the .home-hero full-bleed block above. Enfold's MAIN.template-page
   is position:relative and clamped to the 1195px content column, so an
   absolutely positioned child can only ever cover the column, not the full
   section. Break out horizontally with left 50 percent, a centring
   translate, and width 100vw. .page-hero already has overflow:hidden, so
   the 100vw cannot introduce a horizontal scrollbar.
   NOTE: inset:auto is declared FIRST. Declared after top/bottom/left it
   resets them, which collapses the field to zero height and throws it
   off to the left. */

#top .page-hero .entry-content-wrapper,
#top .page-hero .flex_column {
    position: static;
}

#top .page-hero .av-special-heading,
#top .page-hero .avia_textblock,
#top .page-hero .avia-button-wrap,
#top .page-hero .avia-button,
#top .page-hero .avia-buttonrow-wrap {
    position: relative;
    z-index: 2;
}

#top .page-hero .hero-canvas-block,
#top .page-hero .alpha-boost-block,
#top .page-hero .avia_codeblock_section {
    inset: auto;
    top: 0;
    bottom: 0;
    left: 50%;
    right: auto;
    position: absolute;
    transform: translateX(-50%);
    width: 100vw;
    max-width: none;
    height: auto;
    margin: 0;
    padding: 0;
    pointer-events: none;
    z-index: 0;
}

/* Inner wrapper needs real dimensions: main.js reads the canvas parent
   element clientWidth and clientHeight to size the buffer. */
#top .page-hero .hero-canvas-block > div,
#top .page-hero .hero-canvas-block .avia_codeblock,
#top .page-hero .avia_codeblock_section > div,
#top .page-hero .avia_codeblock_section .avia_codeblock {
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
}

/* The interior canvases now carry class hero-canvas and data-field hero, so
   the older field-canvas and data-field ambient rules above no longer match
   them. Position them the same way the homepage canvas is positioned. */
#top .page-hero canvas.hero-canvas,
#top .page-hero canvas[data-field='hero'] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
}

/* Insights: make the whole card clickable */
/* Stretched-link pattern. The Read anchor inside .card-meta grows an
   ::after that covers the entire card, so clicking anywhere on the tile
   follows it. Deliberately NOT wrapping the card in an <a>: that would
   nest anchors (invalid) and would flatten the heading structure for
   screen readers. This way there is still exactly one real link per card,
   with its own accessible name and normal keyboard behaviour.

   Works for the two hardcoded cards AND the ten injected by the press
   loader, because every card uses the same p.card-meta wrapper.

   Card 1 also carries an inline body link to /strategies/. It sits in a
   plain <p>, so it is lifted to z-index 2 and stays independently
   clickable above the stretched layer. */

body#top.page-id-8076 .insight-card {
    position: relative;
    cursor: pointer;
}

body#top.page-id-8076 .insight-card .card-meta a::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
}

body#top.page-id-8076 .insight-card p:not(.card-meta) a,
body#top.page-id-8076 .insight-card h2 a {
    position: relative;
    z-index: 2;
}

/* Make the whole tile read as interactive, matching the .tile hover. */
body#top.page-id-8076 .insight-card {
    transition: border-color 250ms cubic-bezier(0.22, 1, 0.36, 1),
                transform 250ms cubic-bezier(0.22, 1, 0.36, 1);
}

body#top.page-id-8076 .insight-card:hover {
    border-color: #0E4170;
    transform: translateY(-4px);
}

/* Keyboard parity: focusing the Read link outlines the whole card. */
body#top.page-id-8076 .insight-card:focus-within {
    border-color: #0E4170;
    outline: 2px solid #0E4170;
    outline-offset: 2px;
}


/* ==================================================================
   Interior page heroes: match the homepage hero box model
   ------------------------------------------------------------------
   PROBLEM (reported 2026-08-11): on every interior page the hero copy
   sat noticeably lower than on the homepage, and the particle field
   was missing from the top of the section.

   CAUSE: assets/styles.css styles .page-hero for the static reference
   markup, where the section IS the content box:

       .page-hero { min-height: 62vh; display: flex;
                    align-items: flex-end;
                    padding: calc(var(--nav-h) + var(--s-8)) 0 var(--s-8); }

   In Avia that class lands on the outer .avia-section, so:
     1. the 144px top padding + flex-end alignment pushed the copy to
        the bottom of an over-tall box, and
     2. the hero canvas, which is absolutely positioned against
        MAIN.template-page, could only ever cover the padding box.
        The section's 144px top and 64px bottom padding stayed blank,
        which is why the field looked absent.
   The homepage hero has none of this: .home-hero carries no padding
   of its own (Avia's section padding lives on .container), so MAIN
   spans the whole section and the canvas fills it edge to edge.

   FIX: give .page-hero the same box model as .home-hero, and make the
   hero's .container / MAIN static so the absolutely positioned canvas
   wrapper resolves against .page-hero itself. The canvas then covers
   100% of the section no matter how tall it gets.
   Scoped to .page-hero, so the homepage rules above are untouched.
   ================================================================== */

#top .page-hero {
    display: block;
    padding-top: 0;
    padding-bottom: 0;
}

/* Let the absolutely positioned canvas wrapper resolve against
   .page-hero (position: relative) instead of MAIN.template-page,
   so it spans the entire hero section. */
#top .page-hero > .container,
#top .page-hero .template-page {
    position: static;
}


/* ==================================================================
   Strategies (8074): watermark icons inside the .tile cards
   ------------------------------------------------------------------
   Each of the 17 tiles carries an inline <svg class="tile-icon">
   authored in the same thin-line language as the colchart, flywheel
   and ascent SVGs elsewhere on the site: 64x64 viewBox, 1.6px stroke,
   navy #0E4170, with a green #084503 accent (class "acc") on one or
   two elements per mark.

   NOTE ON MARKUP: the SVG is deliberately nested INSIDE each card's
   existing <p class="index"> label rather than sitting as a sibling.
   wpautop wraps a bare top-level <svg> in a <p> of its own, which
   then contributes ~26px of stray vertical margin to every card.
   Nesting it inside an element that already exists sidesteps that.

   The mark is positioned against the tile and clipped by the tile's
   4px radius, so it bleeds into the top-right corner. Copy is allowed
   to flow over it: at 9% opacity it reads as texture rather than as a
   competing element. Hidden below 620px, where the card is too narrow
   for copy and mark to coexist.
   ================================================================== */

body#top.page-id-8074 .tile {
    position: relative;
    overflow: hidden;
}

body#top.page-id-8074 .tile .tile-icon {
    position: absolute;
    top: 14px;
    right: 14px;
    width: 136px;
    height: 136px;
    color: #0E4170;
    opacity: 0.09;
    pointer-events: none;
}

body#top.page-id-8074 .tile .tile-icon .acc {
    stroke: #084503;
}

/* The index label hosts the icon. Keep it a plain static text line so
   the absolutely positioned child anchors to .tile, not to the label. */
body#top.page-id-8074 .tile .index {
    position: static;
}

@media only screen and (max-width: 620px) {
    body#top.page-id-8074 .tile .tile-icon {
        display: none;
    }
}


/* ==================================================================
   Home (8078): clickable portfolio marquee logos
   ------------------------------------------------------------------
   Each marquee tile whose company has a portfolio page is an <a> that
   still carries .marquee-item, so the existing flex/logo/label rules
   in assets/styles.css apply unchanged. Two tiles stay as <div>:
   Jeeter and MM Brands have no company page yet. That deliberately
   mirrors the Portfolio page (8075), where those same two cards are
   the only ones rendered without a .card-link.

   ACCESSIBILITY: .marquee-track is aria-hidden and main.js clones its
   innerHTML to loop the animation, so every link exists twice in the
   DOM. Focusable controls must not sit inside aria-hidden content and
   must not be duplicated in the tab order, so the anchors carry
   tabindex="-1" and are a pointer affordance only. The keyboard and
   screen-reader path is the "View the full portfolio" button directly
   beneath the marquee, which reaches the same pages.

   The track already pauses on hover (.marquee:hover), so a logo holds
   still long enough to be clicked.
   ================================================================== */

#top .marquee a.marquee-item {
    color: inherit;
    text-decoration: none;
    cursor: pointer;
}

/* The home marquee hides its text labels
   (.home-portfolio .marquee-item span { display: none !important }),
   so the hover affordance has to live on the logo itself. A small
   lift, matching the .tile:hover treatment used elsewhere on the
   site. Resting appearance is deliberately left untouched. */
#top .marquee a.marquee-item img {
    transition: transform 200ms cubic-bezier(0.22, 1, 0.36, 1);
}

#top .marquee a.marquee-item:hover img {
    transform: translateY(-4px) scale(1.04);
}

@media (prefers-reduced-motion: reduce) {
    #top .marquee a.marquee-item img {
        transition: none;
    }
    #top .marquee a.marquee-item:hover img {
        transform: none;
    }
}

/* Non-linked tiles (Jeeter, MM Brands) must not look interactive. */
#top .marquee div.marquee-item {
    cursor: default;
}


/* ==================================================================
   Team (8072): even two-up advisory board card grid
   ------------------------------------------------------------------
   1. NO LOGOS. Organisation logos were added here and then removed;
      see the note further down for the asset reasons and for what
      would be needed to bring them back.

   2. ALIGNMENT. Avia renders these as floated av_one_half columns, so
      two cards on a line could not match heights and any stray block
      knocked one column out of step. Making the section's column
      wrapper a wrapping flex row lets cards on a line stretch to equal
      height, and the min-height floor stops short cards looking
      stunted, so the board reads as one even grid down to the lone
      seventh card.

      Root cause of the reported "Gallegos sits lower than Martin":
      an HTML comment on its own line inside the Gallegos block, which
      wpautop turned into an empty paragraph worth about 28px. Fixed
      in the page content by moving that comment inline.
   ================================================================== */

body#top.page-id-8072 .advisory-board .entry-content-wrapper {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
}

body#top.page-id-8072 .advisory-board .entry-content-wrapper > .av_one_full {
    flex: 0 0 100%;
}

body#top.page-id-8072 .advisory-board .flex_column.av_one_half {
    display: flex;
    flex-direction: column;
}

body#top.page-id-8072 .advisory-board .flex_column.av_one_half > .av_textblock_section {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
}

body#top.page-id-8072 .advisory-board .flex_column.av_one_half .avia_textblock {
    flex: 1 1 auto;
    min-height: 21rem;
}

/* NO ADVISOR LOGOS. Tried and reverted 2026-08-12. The seven marks in
   the media library are unusable as a set on the navy band: six carry
   zero transparency and their baked-in backgrounds disagree with each
   other. WisdomTree ships on solid blue rgb(1,71,186), US Cannabis
   Council on navy rgb(11,35,84), SCI Ventures on charcoal
   rgb(35,41,46), while Earl Gallegos, Antares and Holland & Knight are
   artwork on solid white. Only Aspen Institute is genuinely
   transparent. Any single treatment therefore fights half the set, and
   no blend mode resolves a 3-dark / 3-white / 1-transparent split.

   Each advisor's organisation is already named in the role line
   directly above, so the logos were repeating information while
   importing seven foreign palettes into the page.

   To revive this: source transparent single-colour WHITE marks (SVG
   preferred) for the six, place them bare on the navy at a uniform
   opacity with no plate behind them, and re-add the .advisor-logo-wrap
   slot so card rhythm stays even. The LOGOS PENDING note in the page
   content tracks the asset request. */

/* One column on small screens, so the height floor would only add dead space. */
@media only screen and (max-width: 767px) {
    body#top.page-id-8072 .advisory-board .flex_column.av_one_half .avia_textblock {
        min-height: 0;
    }
}


/* ==================================================================
   MOBILE PASS - 2026 redesign drafts (added 2026-08-18)
   ------------------------------------------------------------------
   All 14 "Draft:" pages were reviewed at a 390px viewport. Nothing was
   structurally broken: document scrollWidth stayed at 390px on every
   page, so no section overflows horizontally and every Avia column
   stacks to one column as intended. The corrections below are the
   legibility and touch-target problems that pass turned up.

   Everything here sits inside max-width:767px and, where a rule could
   plausibly touch legacy markup, is scoped to the redesign page IDs.
   Desktop and the published pages are untouched.
   ================================================================== */

@media only screen and (max-width: 767px) {

/* ---- Firm (8073): the two pannable charts were clipping their labels
   .growth-svg and .ascent-svg are scroll canvases - width:100% with
   min-width 640px / 760px inside a .growth-wrap / .ascent-wrap that is
   overflow-x:auto. Inside a 332px phone content column that renders the
   growth chart at 0.81 of its 792-unit viewBox and the ascent chart at
   0.76 of its 1000-unit viewBox, which drops the milestone captions to
   roughly 7px and pushes the later milestones off the visible strip -
   with no cue that the chart pans at all.

   Widening the scroll canvas rather than shrinking it to fit is what
   fixes the type. Captions are laid out in viewBox units, so scaling
   the whole SVG up lifts them from ~7px to ~10px without changing any
   font-size. That matters: bumping .mile-cap directly was tried first
   and collided "FOUNDED" into "FIRST INVESTMENT IN U.S. CANNABIS",
   because the 2018 and 2020 milestones sit close together. Scaling
   moves the labels apart and enlarges them in the same proportion. ---- */

/* SUPERSEDED 2026-08-19: the widen-and-pan approach below was replaced
   by fit-to-view. Keeping the whole graph on screen was judged more
   important than keeping every in-SVG caption. See the FIT block. */
body#top.page-id-8073 .growth-svg { min-width: 0; width: 100%; }
body#top.page-id-8073 .ascent-svg { min-width: 0; width: 100%; }

/* ---- FIT: whole chart visible on a phone, no horizontal panning ----
   The SVGs scale down with their viewBox, so anything declared in
   viewBox units shrinks with them. At a 280px content column the
   growth chart renders at 0.35 of its 792-unit viewBox and the ascent
   chart at 0.28 of its 1000 units, which would drop 9px captions to
   roughly 3px. Type is therefore declared much larger here purely to
   survive the downscale - these are not real pixel sizes.

   The long milestone captions are hidden on phones: at a legible size
   they are wide enough in viewBox units to overlap each other (the
   2018 and 2020 markers sit close together on the growth chart, and
   the 2020/2023 nodes are only 90 units apart on the ascent). Years,
   axis values and the summary chips below the chart are kept, so the
   shape and the numbers still read. */

body#top.page-id-8073 :is(.growth-wrap, .ascent-wrap) {
    overflow-x: visible;
    padding: 8px;
}

/* Declared sizes are chosen so the RENDERED size clears 11px after the
   viewBox downscale: growth renders at ~0.33 of its viewBox on a 390px
   phone, ascent at ~0.28. Measured effective sizes are in the report. */
body#top.page-id-8073 .growth-svg .grid-label  { font-size: 36px; }
body#top.page-id-8073 .growth-svg .mile-year   { font-size: 38px; }
body#top.page-id-8073 .growth-svg .mile-cap { display: none; }

/* The moving value bubble and the inline 2018 / Today axis labels sit
   in the same band as the milestone years. At mobile type sizes they
   collide ($0.0M was printing straight through 2018, and Today was
   clipping to "To"), so they are dropped on phones - the axis values
   and milestone years carry the same information. */
body#top.page-id-8073 .growth-svg .glabel { display: none; }
body#top.page-id-8073 .growth-svg .grid-label:nth-of-type(4),
body#top.page-id-8073 .growth-svg .grid-label:nth-of-type(5) { display: none; }

body#top.page-id-8073 .ascent-svg .asc-year { font-size: 42px; }
body#top.page-id-8073 .ascent-svg .asc-desc { display: none; }

/* ==================================================================
   STRATEGIES FLYWHEEL: MOBILE VARIANT (added 2026-08-19)
   ------------------------------------------------------------------
   Phones get a different presentation of the same content: a real
   ordered list carrying the four stages as text, emitted by the
   [key_flywheel_list] shortcode. Diagram and list swap at 767px, so
   only one is ever in the layout and screen readers see it once.
   ================================================================== */

/* Flywheel container. Restored 2026-08-19 from the original static-site
   source (key-website/strategies.html) after the block was damaged by a
   bad find-and-replace. The SVG now sits on a single line inside a div,
   so wpautop has no newlines to inject <br> into. */
#top .strategies-flywheel .flywheel-container { max-width: 100%; margin: 0 auto; }

@media only screen and (max-width: 767px) {
    #top .flywheel-svg { display: none; }
    #top .flywheel-list-block { display: block; }
    #top .fw-list { list-style: none; margin: 0; padding: 0; }
    #top .fw-list-item {
        display: block;
        padding: 14px 0;
        border-top: 1px solid rgba(255, 255, 255, 0.18);
    }
    #top .fw-list-item:last-child { border-bottom: 1px solid rgba(255, 255, 255, 0.18); }
    #top .fw-list-num {
        display: block;
        font-family: 'IBM Plex Mono', monospace;
        font-size: 12px;
        letter-spacing: 0.08em;
        color: #9CC3E5;
        margin-bottom: 2px;
    }
    #top .fw-list-title {
        display: block;
        font-size: 16px;
        font-weight: 600;
        line-height: 1.3;
        color: #ffffff;
    }
    #top .fw-list-sub {
        display: block;
        font-size: 14px;
        line-height: 1.45;
        color: rgba(255, 255, 255, 0.82);
        margin-top: 2px;
    }
}

/* Original note kept for history: flywheel SVG NOT adjusted, deliberately. It renders at 0.43
   of its 660-unit viewBox on a phone, so its 17px / 13.5px / 9px
   labels land at 7.3px / 5.8px / 3.8px. Raising them to 26 units did
   clear 11px rendered, but the centre labels ("KEY" and "+ KEY
   NETWORK") then overlapped each other, which is worse than small.
   The node positions are fixed in the SVG and cannot be re-spaced from
   CSS, so this needs a mobile-specific variant of the diagram - a
   design change, not a stylesheet one. Left at its designed sizes. */

/* Make the pan affordance visible. Mobile browsers hide overlay
   scrollbars until a gesture starts, so the charts currently read as
   static-but-cropped. A thin always-on bar is the cheapest honest cue
   that there is more chart to the right. */
body#top.page-id-8073 :is(.growth-wrap, .ascent-wrap) {
    scrollbar-width: thin;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-x: contain;
}
body#top.page-id-8073 :is(.growth-wrap, .ascent-wrap)::-webkit-scrollbar {
    height: 6px;
    -webkit-appearance: none;
}
body#top.page-id-8073 :is(.growth-wrap, .ascent-wrap)::-webkit-scrollbar-thumb {
    background: rgba(14, 65, 112, 0.40);
    border-radius: 3px;
}
body#top.page-id-8073 :is(.growth-wrap, .ascent-wrap)::-webkit-scrollbar-track {
    background: rgba(14, 65, 112, 0.08);
}


/* ---- Legibility floor: nothing under 11px on a phone ----
   Measured at 390px: .chart-note 8.5px (Home, "Firm figures as of
   H1 2026."), .funnel-cap 11px and .stat-sector 12px (Home), .chip
   12px (Firm). These are captions and eyebrow labels, so they are
   nudged past the floor rather than restyled. */

body#top:is(.page-id-8066,.page-id-8067,.page-id-8068,.page-id-8069,.page-id-8070,.page-id-8072,.page-id-8073,.page-id-8074,.page-id-8075,.page-id-8076,.page-id-8077,.page-id-8078,.page-id-8094,.page-id-8095) .chart-note {
    font-size: 11px;
    line-height: 1.5;
}

body#top:is(.page-id-8066,.page-id-8067,.page-id-8068,.page-id-8069,.page-id-8070,.page-id-8072,.page-id-8073,.page-id-8074,.page-id-8075,.page-id-8076,.page-id-8077,.page-id-8078,.page-id-8094,.page-id-8095) :is(.funnel-cap, .stat-sector, .chip) {
    font-size: 12.5px;
}


/* ---- Touch targets in the footer ----
   Footer menu links measured 23px tall and the "What's new" widget
   list 17px, because ".widget_nav_menu a { padding: 0px }" earlier in
   this file strips their padding. That rule tightens the desktop
   footer, so rather than removing it the padding is restored for
   phones only, where these are thumb targets and not a compact list.
   Left deliberately alone: inline links inside body copy (20px). Those
   are words in a sentence, and padding them would break the line. */

#top #menu-footer-menu li a {
    display: block;
    padding: 12px 0;
    line-height: 1.25;
}

/* Scoped away from .widget_nav_menu: that rule is 2 IDs + 3 compound
   parts, so without the :not() it out-specifies the footer-menu rule
   above and quietly clamps those links back to 6px. */
#top #footer .widget:not(.widget_nav_menu) ul li a {
    display: inline-block;
    padding: 6px 0;
}

#top .copyright { font-size: 12px; }

/* ---- Form controls as touch targets ----
   WPForms inputs measured 38px tall on the Contact page, under the
   44px minimum for a comfortable thumb target. Font size is already
   17px, which is what keeps iOS from zooming on focus, so only the
   height needed raising. */
#top .wpforms-form input[type="text"],
#top .wpforms-form input[type="email"],
#top .wpforms-form input[type="tel"],
#top .wpforms-form select,
#top .wpforms-form button[type="submit"],
#top #ms-sub-form input[type="email"],
#top #ms-sub-form button {
    min-height: 44px;
}

}


/* ==================================================================
   WPAUTOP ARTIFACT CLEANUP (added 2026-08-18)
   ------------------------------------------------------------------
   The redesign pages originally held their custom markup in Enfold
   Code Block elements. Code Blocks do not render on this install
   (published pages drop them entirely), so every one was converted to
   a Text Block, which does render. Text Blocks run their contents
   through wpautop, and wpautop wraps runs of inline elements in <p>
   and inserts <br> at newlines.

   On the portfolio marquee that broke the flex row: each logo ended up
   inside its own <p>, the track laid out as columns instead of a strip,
   and the 5,104px-wide track overflowed the document — which is what
   pushed every page's content left with a dead gutter on the right.

   display:contents makes the injected <p> transparent to the flex
   container, so the anchors become direct flex children again without
   editing the markup. Empty paragraphs are collapsed for the same
   reason. This is cosmetic repair of a rendering artifact, not layout
   design — if Code Blocks are ever fixed at the theme level, this
   block and the conversion can both be reverted together.
   ================================================================== */

#top .marquee-track > p { display: contents; }
#top .marquee-track > br { display: none; }
#top .avia_textblock > p:empty { display: none; margin: 0; }


/* ==================================================================
   CODE BLOCK -> TEXT BLOCK COMPATIBILITY (added 2026-08-18)
   ------------------------------------------------------------------
   Sixteen rules earlier in this file are scoped to .avia_codeblock and
   .avia_codeblock_section. After the conversion those elements emit
   .avia_textblock inside .av_textblock_section instead, so none of
   those rules match any more. Three visible regressions followed, all
   repaired below. Delete this whole block if Code Blocks are ever
   fixed at the theme level and the conversion is reverted.
   ================================================================== */

/* ---- 1. Script-only blocks must not occupy layout ----
   alpha-boost, recount and filter blocks contain nothing but a
   <script>. As Code Blocks they collapsed to nothing; as Text Blocks
   they pick up paragraph margins and inflate whichever section holds
   them, which is what made the navy platform band on Home noticeably
   taller than the approved design. Hiding them does NOT stop the
   scripts: a script executes regardless of its container's display. */

#top .alpha-boost-block,
#top .recount-script-block,
#top .filter-script-block { display: none !important; }


/* ---- 2. Hero canvases ----
   wpautop wraps the <canvas> in a <p>, which broke both the section
   rule (scoped to .avia_codeblock_section) and the "> div" child rule.
   Forcing the geometry from CSS alone was tried and rejected: it sized
   the canvas correctly but left main.js's drawing buffer desynced, so
   the canvas painted nothing.

   The working approach removes the <p> from the DOM before main.js
   initialises (see the footer injection under Settings > Head, Footer
   and Post Injections), so main.js measures a correctly positioned
   canvas and sizes its own buffer. These rules then only have to
   position the block and let the canvas fill it - deliberately no
   !important and no absolute positioning on the canvas itself, so
   main.js's own measurements stay authoritative. */

/* Full-bleed anchoring. inset:0 alone was fighting the older full-bleed
   rule and resolved to left:-559px, so the field covered the left of
   the hero and ran off-screen while the right third stayed empty.
   left:50% + margin-left:-50vw centres a viewport-wide box on the
   section's own centre line, which is also the viewport centre, so the
   canvas spans 0 to 100vw and covers the hero edge to edge. Vertical
   stays pinned to the section with top/bottom 0. */

#top .home-hero .hero-canvas-block,
#top .home-hero .ambient-canvas-block,
#top .page-hero .hero-canvas-block,
#top .page-hero .ambient-canvas-block {
    /* !important is needed here: on Strategies an earlier rule left both
       left AND right resolved, which over-constrains an absolutely
       positioned box and collapsed its used width to 0 (measured
       left:615.46px right:1274.46px width:0). Pinning every box
       property removes the ambiguity. The canvas inside deliberately
       keeps non-important 100%/100% so main.js can still measure it. */
    position: absolute !important;
    top: 0 !important;
    bottom: 0 !important;
    left: 50% !important;
    right: auto !important;
    width: 100vw !important;
    max-width: 100vw !important;
    margin: 0 0 0 -50vw !important;
    padding: 0 !important;
    /* The older full-bleed rule also applies translateX(-50%). Combined
       with margin-left:-50vw that double-shifts the block exactly half a
       viewport left (measured: left resolved to -659px on a 1318px
       viewport), which is why the field covered the left of the hero and
       ran off-screen while the right stayed bare. */
    transform: none;
    pointer-events: none;
    z-index: 0;
}

#top .home-hero .av_textblock_section:has(.hero-canvas-block),
#top .page-hero .av_textblock_section:has(.hero-canvas-block),
#top .page-hero .av_textblock_section:has(.ambient-canvas-block) {
    position: absolute;
    inset: 0;
    margin: 0;
    padding: 0;
    pointer-events: none;
    z-index: 0;
}

#top .hero-canvas-block > canvas,
#top .ambient-canvas-block > canvas {
    display: block;
    width: 100%;
    height: 100%;
}


/* ---- superseded note, kept for history ----
   The particle canvas is still pinned to the top-left of each hero
   rather than filling it. Cause is understood: wpautop wraps the
   <canvas> in a <p>, so the existing "> div" child selector no longer
   matches, and the section rules are scoped to .avia_codeblock_section.

   CSS alone cannot finish this. Forcing the geometry with position /
   inset / width / height DOES size the canvas correctly (verified at
   1600x525 filling the hero), but main.js reads the element's
   dimensions once at init to size the drawing buffer, and the forced
   sizing leaves the buffer desynced - the canvas then paints nothing
   at all, which is worse than the current cosmetic misplacement.

   Correct fix is to stop wpautop touching this markup: move the canvas
   into a registered shortcode (Code Snippets) so it is emitted from
   PHP as a bare <canvas> inside a <div>, which the existing rules in
   this file already handle. Left alone deliberately until then.
   ================================================================== */


/* ---- 3. Navy bands: restore heading contrast ----
   .band-navy sets white body copy, but headings and the bold role line
   were coloured by rules scoped to .avia_codeblock. On the Team
   advisors grid that left advisor names at 1.14:1 and firm names at
   1.36:1 against #0A2C4D - both far below the WCAG AA 4.5:1 floor and
   effectively unreadable, which is exactly how they were reported. */

#top .band-navy .avia_textblock h1,
#top .band-navy .avia_textblock h2,
#top .band-navy .avia_textblock h3,
#top .band-navy .avia_textblock h4,
#top .band-navy .avia_textblock h5 { color: #ffffff; }

#top .band-navy .avia_textblock strong { color: #9CC3E5; }

/* Inline links on navy. The default link colour is #0E4170, which is
   the navy itself - on the Firm page the "cannabis portfolio" link was
   effectively invisible against #0A2C4D. Same treatment as the bold
   role line: 7.67:1, and white on hover so the affordance is obvious. */
#top .band-navy .avia_textblock a,
#top .band-navy .avia_textblock a:visited,
#top .band-navy .avia_textblock p a,
#top .band-navy .avia_textblock li a { color: #9CC3E5; }

#top .band-navy .avia_textblock a:hover,
#top .band-navy .avia_textblock a:focus { color: #ffffff; }


/* ---- 4. Home hero buttons sit side by side ----
   Enfold wraps each av_button in a block-level .avia-button-wrap, so
   two consecutive buttons stack vertically no matter what the button
   itself is set to. Making the wrapper inline-block puts The Firm and
   Portfolio on one line; inline-block still wraps naturally on narrow
   viewports, so they stack again on a phone rather than overflowing. */

#top .home-hero .avia-button-wrap {
    display: inline-block;
    width: auto;
    vertical-align: top;
    margin: 0 12px 12px 0;
}

/* wpautop also drops a <br> between the two button wrappers, which
   forces a line break even though both are inline-block. Scoped to
   direct children of the column so the intentional line breaks inside
   the hero paragraph are untouched. */
#top .home-hero .flex_column > br { display: none; }


/* ==================================================================
   DESKTOP LEGIBILITY FLOOR (added 2026-08-18)
   ------------------------------------------------------------------
   The mobile pass above raised .chart-note to 11px under 767px, but
   the rule that sets it lives outside any media query and renders at
   8.5px on desktop too — the smallest text anywhere on the redesign
   at 1200px ("Firm figures as of H1 2026." under the Home charts).
   8.5px is below the readable floor on every viewport, not just
   phones, so the same 11px minimum is applied unconditionally here.
   Everything else on the drafts already measures 11px or larger.
   ================================================================== */

body#top:is(.page-id-8066,.page-id-8067,.page-id-8068,.page-id-8069,.page-id-8070,.page-id-8072,.page-id-8073,.page-id-8074,.page-id-8075,.page-id-8076,.page-id-8077,.page-id-8078,.page-id-8094,.page-id-8095) .chart-note {
    font-size: 11px;
    line-height: 1.5;
}


/* ==================================================================
   FORM AUTOFILL HINTS (added 2026-08-18)
   ------------------------------------------------------------------
   WPForms emits no autocomplete attributes, so browsers and password
   managers cannot prefill name / email / organisation on the Contact
   and white-paper forms. That is a real drop-off cost on a lead form
   and it is WCAG 2.1 AA SC 1.3.5 (Identify Input Purpose).

   CSS cannot set attributes, so this is only the visual half. The
   attribute fix belongs in the form builder or a small snippet — it
   is written up in the launch report as a post-launch item.
   ================================================================== */


/* ==================================================================
   FLYWHEEL: DIAGRAM ON DESKTOP, LIST ON MOBILE (2026-08-19)
   ------------------------------------------------------------------
   Authoritative rules for the swap. Placed last so they win on source
   order regardless of what earlier blocks in this file say.

   Why a list at all: the SVG renders at ~0.43 of its 660-unit viewBox
   on a phone, putting its labels at 3.8-7.3px. Enlarging them enough
   to clear 11px makes the two centre labels overlap, and the node
   positions are fixed in the SVG so they cannot be re-spaced in CSS.
   The list carries the same four stages as real text instead.

   Markup comes from the [key_flywheel_list] shortcode (Code Snippets:
   "KEY 2026 redesign shortcodes"), so wpautop never touches it.
   Only one of the two is ever in the layout, so screen readers and
   search engines see the content once, not twice.
   ================================================================== */

#top .flywheel-list-wrap { display: none; }

@media only screen and (max-width: 767px) {

    #top .strategies-flywheel .flywheel-container { display: none; }
    #top .flywheel-list-wrap { display: block; }

    #top .fw-list { list-style: none; margin: 0; padding: 0; }

    #top .fw-list-item {
        display: block;
        padding: 14px 0;
        border-top: 1px solid rgba(255, 255, 255, 0.18);
    }
    #top .fw-list-item:last-child {
        border-bottom: 1px solid rgba(255, 255, 255, 0.18);
    }

    #top .fw-list-num {
        display: block;
        font-family: 'IBM Plex Mono', monospace;
        font-size: 12px;
        letter-spacing: 0.08em;
        color: #9CC3E5;
        margin-bottom: 2px;
    }
    #top .fw-list-title {
        display: block;
        font-size: 16px;
        font-weight: 600;
        line-height: 1.3;
        color: #ffffff;
    }
    #top .fw-list-sub {
        display: block;
        font-size: 14px;
        line-height: 1.45;
        color: rgba(255, 255, 255, 0.82);
        margin-top: 2px;
    }

}


/* ==================================================================
   PORTFOLIO CARDS: WHOLE TILE CLICKABLE (2026-08-19) ==== */
#top .port-card { position: relative; }
#top .port-card .card-link { color: inherit; text-decoration: none; }
#top .port-card .card-link::after { content: ""; position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 2; }
#top .port-card:hover .card-link, #top .port-card .card-link:hover { text-decoration: underline; }
#top .port-card .card-link:focus-visible::after { outline: 2px solid #1E6FBA; outline-offset: -3px; }
/* ==== TWO-UP SECTIONS: LEVEL THE COLUMNS (2026-08-19)
   ------------------------------------------------------------------
   In "Two markets, one platform" the two half-columns hold copy of
   different lengths - the Frontier blurb wraps to three lines where
   the Cannabis one wraps to two. Enfold floats these columns, so each
   one is only as tall as its own content and the buttons landed 28px
   apart (measured: left column 303px tall, right 331px).

   Making the section's content wrapper a flex row lets the two columns
   stretch to a shared height, and margin-top:auto on the button
   wrapper pushes both buttons to the bottom of that shared box. The
   eyebrow, heading, tags and copy already shared a baseline and are
   unaffected.

   Desktop only. Below 768px the columns stack, where levelling would
   just add a gap under the shorter one.
   ================================================================== */

@media only screen and (min-width: 768px) {

    #top .home-strategies .entry-content-wrapper {
        display: flex;
        flex-wrap: wrap;
        align-items: stretch;
    }

    /* the full-width heading column keeps its own row */
    #top .home-strategies .entry-content-wrapper > .av_one_full {
        flex: 0 0 100%;
    }

    #top .home-strategies .entry-content-wrapper > .av_one_half {
        display: flex;
        flex-direction: column;
    }

    #top .home-strategies .av_one_half .avia-button-wrap {
        margin-top: auto;
    }

}


/* ==================================================================
   GROUP A: KEY DESIGN SYSTEM OVERRIDES (added 2026-08-20, Claude)
   ------------------------------------------------------------------
   Restores the reference build's type system, rhythm, and alignment
   on top of Enfold's option CSS. assets/styles.css and main.js are
   already enqueued by the child theme; these rules cover only what
   Enfold's later-loading option CSS was overriding, plus WP-only
   class names introduced by the adapter layer above.

   Scope: the font stack is site-wide; structural rules are scoped to
   the 2026 redesign page IDs, matching the adapter pattern above.

   REVERT: delete from this comment block to the end of the file, and
   remove the @import line at the very top of the file.
   ================================================================== */

/* ---- A1. Type foundation ---- */
html body, #top {
    font-family: 'Inter', 'Helvetica Neue', Arial, sans-serif !important;
    font-size: 1.0625rem;
    line-height: 1.7;
    color: #33475D;
    -webkit-font-smoothing: antialiased;
}

#top h1, #top h2, #top h3, #top h4, #top h5, #top h6,
#top .av-special-heading .av-special-heading-tag {
    font-family: 'Inter', 'Helvetica Neue', Arial, sans-serif !important;
}

#top #main h1, #top #main h2, #top #main h3, #top #main h4 {
    color: #0A2C4D;
    font-weight: 600;
    letter-spacing: -0.01em;
}

/* Navy bands keep light headings (must outrank the #main rule above) */
#top #main .band-navy h1, #top #main .band-navy h2,
#top #main .band-navy h3, #top #main .band-navy h4,
#top #main .band-navy .av-special-heading .av-special-heading-tag {
    color: #FFFFFF;
}

/* ---- A2. Heading scale (redesign pages) ---- */
body#top:is(.page-id-8066,.page-id-8067,.page-id-8068,.page-id-8069,.page-id-8070,.page-id-8072,.page-id-8073,.page-id-8074,.page-id-8075,.page-id-8076,.page-id-8077,.page-id-8078,.page-id-8094,.page-id-8095) h1.av-special-heading-tag {
    font-size: clamp(2rem, 4.2vw, 3.4rem) !important;
    line-height: 1.12;
}
body#top:is(.page-id-8066,.page-id-8067,.page-id-8068,.page-id-8069,.page-id-8070,.page-id-8072,.page-id-8073,.page-id-8074,.page-id-8075,.page-id-8076,.page-id-8077,.page-id-8078,.page-id-8094,.page-id-8095) h2.av-special-heading-tag {
    font-size: clamp(1.375rem, 2.6vw, 2rem) !important;
    line-height: 1.25;
}

/* Statement and definition bands: reference display sizes */
body#top.page-id-8078 .home-definition h2.av-special-heading-tag {
    font-size: clamp(1.35rem, 2.4vw, 1.9rem) !important;
    line-height: 1.5;
    font-weight: 500;
    max-width: 64rem;
}
body#top.page-id-8078 .home-statement h2.av-special-heading-tag {
    font-size: clamp(1.9rem, 3.4vw, 2.6rem) !important;
}

/* ---- A2. Mono eyebrow labels ---- */
body#top:is(.page-id-8066,.page-id-8067,.page-id-8068,.page-id-8069,.page-id-8070,.page-id-8072,.page-id-8073,.page-id-8074,.page-id-8075,.page-id-8076,.page-id-8077,.page-id-8078,.page-id-8094,.page-id-8095) .av-special-heading .av-subheading {
    font-family: 'IBM Plex Mono', Consolas, monospace !important;
    font-size: 0.8125rem !important;
    font-weight: 500;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: #0E4170;
    line-height: 1.4;
    margin-bottom: 0.875rem;
}
body#top:is(.page-id-8066,.page-id-8067,.page-id-8068,.page-id-8069,.page-id-8070,.page-id-8072,.page-id-8073,.page-id-8074,.page-id-8075,.page-id-8076,.page-id-8077,.page-id-8078,.page-id-8094,.page-id-8095) .band-navy .av-special-heading .av-subheading {
    color: #9CC3E5;
}

/* ---- A2. Mono numerals and small labels ---- */
body#top:is(.page-id-8066,.page-id-8067,.page-id-8068,.page-id-8069,.page-id-8070,.page-id-8072,.page-id-8073,.page-id-8074,.page-id-8075,.page-id-8076,.page-id-8077,.page-id-8078,.page-id-8094,.page-id-8095) .stat-xl,
body#top:is(.page-id-8066,.page-id-8067,.page-id-8068,.page-id-8069,.page-id-8070,.page-id-8072,.page-id-8073,.page-id-8074,.page-id-8075,.page-id-8076,.page-id-8077,.page-id-8078,.page-id-8094,.page-id-8095) .sc-text .stat-big {
    font-family: 'IBM Plex Mono', Consolas, monospace;
}
body#top:is(.page-id-8066,.page-id-8067,.page-id-8068,.page-id-8069,.page-id-8070,.page-id-8072,.page-id-8073,.page-id-8074,.page-id-8075,.page-id-8076,.page-id-8077,.page-id-8078,.page-id-8094,.page-id-8095) .sc-text .stat-sector {
    font-family: 'IBM Plex Mono', Consolas, monospace;
    color: #0E4170;
    letter-spacing: 0.14em;
}
body#top:is(.page-id-8066,.page-id-8067,.page-id-8068,.page-id-8069,.page-id-8070,.page-id-8072,.page-id-8073,.page-id-8074,.page-id-8075,.page-id-8076,.page-id-8077,.page-id-8078,.page-id-8094,.page-id-8095) .sector-num {
    font-family: 'IBM Plex Mono', Consolas, monospace;
    font-size: 0.8125rem;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: #0E4170;
}
body#top:is(.page-id-8066,.page-id-8067,.page-id-8068,.page-id-8069,.page-id-8070,.page-id-8072,.page-id-8073,.page-id-8074,.page-id-8075,.page-id-8076,.page-id-8077,.page-id-8078,.page-id-8094,.page-id-8095) .sector-tags {
    font-family: 'IBM Plex Mono', Consolas, monospace;
    font-size: 0.75rem;
    letter-spacing: 0.06em;
    color: #5A7186;
}
body#top:is(.page-id-8066,.page-id-8067,.page-id-8068,.page-id-8069,.page-id-8070,.page-id-8072,.page-id-8073,.page-id-8074,.page-id-8075,.page-id-8076,.page-id-8077,.page-id-8078,.page-id-8094,.page-id-8095) .chart-note {
    font-family: 'IBM Plex Mono', Consolas, monospace;
    color: #5A7186;
}
body#top:is(.page-id-8066,.page-id-8067,.page-id-8068,.page-id-8069,.page-id-8070,.page-id-8072,.page-id-8073,.page-id-8074,.page-id-8075,.page-id-8076,.page-id-8077,.page-id-8078,.page-id-8094,.page-id-8095) .band-navy .chart-note {
    color: rgba(255, 255, 255, 0.6);
}
body#top:is(.page-id-8066,.page-id-8067,.page-id-8068,.page-id-8069,.page-id-8070,.page-id-8072,.page-id-8073,.page-id-8074,.page-id-8075,.page-id-8076,.page-id-8077,.page-id-8078,.page-id-8094,.page-id-8095) .lead {
    font-size: clamp(1.125rem, 1.6vw, 1.3125rem);
    line-height: 1.6;
}

/* ---- A3. Container and measure ---- */
.responsive body#top:is(.page-id-8066,.page-id-8067,.page-id-8068,.page-id-8069,.page-id-8070,.page-id-8072,.page-id-8073,.page-id-8074,.page-id-8075,.page-id-8076,.page-id-8077,.page-id-8078,.page-id-8094,.page-id-8095) .container {
    max-width: 1376px;
}
body#top:is(.page-id-8066,.page-id-8067,.page-id-8068,.page-id-8069,.page-id-8070,.page-id-8072,.page-id-8073,.page-id-8074,.page-id-8075,.page-id-8076,.page-id-8077,.page-id-8078,.page-id-8094,.page-id-8095) .avia_textblock p {
    max-width: 44rem;
}

/* ---- A3. Kill the right-aligned supercycle rows ---- */
body#top.page-id-8078 .sc-row-flip .sc-text,
body#top.page-id-8078 .sc-row-flip .sc-text > p {
    text-align: left;
}
@media only screen and (max-width: 620px) {
    body#top.page-id-8078 .sc-row,
    body#top.page-id-8078 .sc-row-flip {
        text-align: left;
    }
    body#top.page-id-8078 .sc-row .sc-icon {
        margin: 0;
    }
}

/* ---- A4. Section rhythm ---- */
body#top:is(.page-id-8066,.page-id-8067,.page-id-8068,.page-id-8069,.page-id-8070,.page-id-8072,.page-id-8073,.page-id-8074,.page-id-8075,.page-id-8076,.page-id-8077,.page-id-8078,.page-id-8094,.page-id-8095) .avia-section:not(.home-hero):not(.page-hero):not(.home-platform) > .container {
    padding-top: clamp(4.5rem, 9vh, 7rem) !important;
    padding-bottom: clamp(4.5rem, 9vh, 7rem) !important;
}
body#top:is(.page-id-8066,.page-id-8067,.page-id-8068,.page-id-8069,.page-id-8070,.page-id-8072,.page-id-8073,.page-id-8074,.page-id-8075,.page-id-8076,.page-id-8077,.page-id-8078,.page-id-8094,.page-id-8095) .avia-section.main_color + .avia-section.main_color {
    border-top: 1px solid rgba(14, 65, 112, 0.16);
}
body#top:is(.page-id-8066,.page-id-8067,.page-id-8068,.page-id-8069,.page-id-8070,.page-id-8072,.page-id-8073,.page-id-8074,.page-id-8075,.page-id-8076,.page-id-8077,.page-id-8078,.page-id-8094,.page-id-8095) .av-special-heading {
    margin-bottom: 0.75rem;
}

/* ---- A5. Button system: reference typography and shape ---- */
body#top:is(.page-id-8066,.page-id-8067,.page-id-8068,.page-id-8069,.page-id-8070,.page-id-8072,.page-id-8073,.page-id-8074,.page-id-8075,.page-id-8076,.page-id-8077,.page-id-8078,.page-id-8094,.page-id-8095) .avia-button {
    font-family: 'IBM Plex Mono', Consolas, monospace !important;
    font-size: 0.8125rem !important;
    font-weight: 500 !important;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    padding: 0.875rem 1.75rem !important;
    border-radius: 4px !important;
    line-height: 1.2;
}

/* ---- A6. Inline links in light sections ---- */
body#top:is(.page-id-8066,.page-id-8067,.page-id-8068,.page-id-8069,.page-id-8070,.page-id-8072,.page-id-8073,.page-id-8074,.page-id-8075,.page-id-8076,.page-id-8077,.page-id-8078,.page-id-8094,.page-id-8095) .avia-section.main_color .avia_textblock a {
    color: #0E4170;
    text-decoration: underline;
    text-decoration-color: rgba(14, 65, 112, 0.35);
    text-underline-offset: 3px;
}
body#top:is(.page-id-8066,.page-id-8067,.page-id-8068,.page-id-8069,.page-id-8070,.page-id-8072,.page-id-8073,.page-id-8074,.page-id-8075,.page-id-8076,.page-id-8077,.page-id-8078,.page-id-8094,.page-id-8095) .avia-section.main_color .avia_textblock a:hover {
    text-decoration-color: #0E4170;
}

/* ---- A8. IC stream canvas sizing insurance ---- */
body#top.page-id-8078 .stream-wrap canvas {
    width: 100%;
    max-height: 160px;
}
@media only screen and (max-width: 620px) {
    body#top.page-id-8078 .stream-wrap canvas {
        max-height: 120px;
    }
}

/* ---- A7. Remove the Enfold header search icon ---- */
#top li#menu-item-search,
#top #menu-item-search,
#top .menu-item-search {
    display: none !important;
}

/* GROUP F: heading case correction (added 2026-08-21, Claude).
   Reference build headings are sentence case; a theme default was
   forcing uppercase on display headings. Eyebrows and buttons keep
   their intentional uppercase via their own rules. */
#top h1, #top h2, #top h3, #top h4,
#top .av-special-heading .av-special-heading-tag {
  text-transform: none !important;
}
#top h1 { letter-spacing: -0.015em; }

/* GROUP G: header menu cleanup (added 2026-08-21, Claude).
   Removes the theme-palette charcoal field behind the main menu and
   applies the reference nav system translated for the white header:
   mono uppercase labels, navy ink, signal underline on hover/active,
   Contact as the green outline pill. */
#top #header .main_menu,
#top #header .main_menu ul,
#top #header .main_menu .menu,
#top #header .av-main-nav > li,
#top #header .av-main-nav > li > a,
#top #header .av-main-nav > li.current-menu-item > a,
#top #header .av-main-nav > li.current_page_item > a {
  background: transparent !important;
  background-color: transparent !important;
}
#top #header .av-main-nav > li > a {
  font-family: 'IBM Plex Mono', 'SFMono-Regular', Consolas, 'Liberation Mono', monospace !important;
  font-size: 0.8125rem !important;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  font-weight: 500;
  color: #0A2C4D !important;
  border: none !important;
}
#top #header .av-main-nav > li > a:hover {
  color: #0E4170 !important;
}
#top #header .avia-menu-fx {
  background: #0E4170 !important;
  height: 2px !important;
}
/* Contact: reference nav-cta pill */
#top #header .av-main-nav > li:last-child > a {
  border: 1px solid #084503 !important;
  border-radius: 4px !important;
  color: #084503 !important;
  padding: 0.5rem 1.125rem !important;
  line-height: 1 !important;
  height: auto !important;
  margin-top: auto;
  margin-bottom: auto;
}
#top #header .av-main-nav > li:last-child > a:hover {
  background: #084503 !important;
  color: #FFFFFF !important;
}
#top #header .av-main-nav > li:last-child .avia-menu-fx {
  display: none !important;
}


/* ==================================================================
   GROUP H: PARTNER REVIEW FIXES (added 2026-08-21, Claude)
   1) IC phase rules render static: no draw animation.
   2) Supercycle cells: uniform badge boxes, bottom-aligned charts.
   3) Header nav: navy ink in every header state, plus the reference
      text underline on hover and on the active page. Enfold's own
      menu-fx bar is retired in favour of a text-width underline.
   4) Footer and socket: brand navy band, mono widget titles,
      reference text colours.
   5) Full-bleed shim in case Enfold's layout option is set to Boxed.
      The proper fix is Theme Options > General Layout > Stretched.
   REVERT: delete from this comment block to the end of the file.
   ================================================================== */

/* ---- H1. IC phase top rules: static ---- */
#top .phase::before { transform: scaleX(1) !important; transition: none !important; }

/* ---- H2. Supercycle grid: uniform badges, aligned baselines ---- */
#top .market-cell { display: flex; flex-direction: column; }
#top .market-cell .market-sub { flex: 1 1 auto; }
#top .market-cell svg.colchart { margin-top: auto; }
#top .market-cell .growth-badge {
  display: flex;
  align-items: center;
  width: 100%;
  align-self: stretch;
  min-height: 4.75rem;
  margin-top: 0.75rem;
  background: #FFFFFF;
}

/* ---- H3. Header nav ink + hover underline, all header states ---- */
#top #header .av-main-nav > li > a,
#top #header .av-main-nav > li > a .avia-menu-text,
#top #header.av_header_transparency .av-main-nav > li > a,
#top #header.av_header_transparency .av-main-nav > li > a .avia-menu-text,
#top #header .av-main-nav > li.current-menu-item > a .avia-menu-text,
#top #header .av-main-nav > li.current_page_item > a .avia-menu-text {
  color: #0A2C4D !important;
  opacity: 1 !important;
}
#top #header .av-main-nav > li > a:hover .avia-menu-text { color: #0E4170 !important; }
#top #header .av-main-nav .avia-menu-fx { display: none !important; }
#top #header .av-main-nav > li > a .avia-menu-text { position: relative; }
#top #header .av-main-nav > li > a .avia-menu-text::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -7px;
  height: 2px;
  background: #0E4170;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 250ms cubic-bezier(0.22, 1, 0.36, 1);
}
#top #header .av-main-nav > li > a:hover .avia-menu-text::after,
#top #header .av-main-nav > li.current-menu-item > a .avia-menu-text::after,
#top #header .av-main-nav > li.current_page_item > a .avia-menu-text::after { transform: scaleX(1); }
#top #header .av-main-nav > li:last-child > a .avia-menu-text::after { display: none; }
@media (prefers-reduced-motion: reduce) {
  #top #header .av-main-nav > li > a .avia-menu-text::after { transition: none; }
}

/* ---- H4. Footer and socket: reference treatment ---- */
#top #footer { background-color: #0A2C4D !important; }
#top #footer .widgettitle {
  font-family: 'IBM Plex Mono', 'SFMono-Regular', Consolas, monospace;
  font-size: 0.8125rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #8FBE8B;
  font-weight: 500;
}
#top #footer, #top #footer p, #top #footer li { color: rgba(226, 234, 243, 0.88); font-size: 0.9375rem; }
#top #footer a { color: rgba(226, 234, 243, 0.88); }
#top #footer a:hover { color: #FFFFFF; }
#top #socket { background-color: #0A2C4D !important; border-top: 1px solid rgba(255, 255, 255, 0.14); }
#top #socket .copyright {
  color: rgba(196, 213, 230, 0.70);
  font-family: 'IBM Plex Mono', 'SFMono-Regular', Consolas, monospace;
  font-size: 0.75rem;
  letter-spacing: 0.06em;
}
#top #socket a { color: rgba(196, 213, 230, 0.70); }
#top #socket a:hover { color: #FFFFFF; }

/* ---- H5. Full-bleed shim if the layout option is Boxed ---- */
body#top.boxed #wrap_all { max-width: 100%; width: 100%; box-shadow: none; }
html.html_boxed { background: #FFFFFF; }
html.html_boxed body { background: #FFFFFF; }

/* ==================================================================
   GROUP I: PIN NAVY BANDS (added 2026-08-21, Claude)
   The band sections take their background from Enfold's "Alternate
   Content" colour scheme in Theme Options > General Styling. A save
   on that screen regenerated the dynamic stylesheet with the old
   site's green as the alternate background, repainting every navy
   band. This pins the approved brand navy at the CSS layer so no
   theme-option state can repaint the bands again.
   ================================================================== */
#top .avia-section.band-navy,
#top .avia-section.band-navy .container,
#top .avia-section.band-navy .content {
  background-color: #0A2C4D !important;
  background-image: none !important;
}

/* ==================================================================
   GROUP J: HEADER LOGO SIZE (added 2026-08-21, Claude)
   Cap the header logo at the reference nav proportions. Enfold sizes
   the logo from the theme's header-size option; this pins it to the
   approved scale regardless. Width stays auto so the mark never
   distorts.
   ================================================================== */
#top .logo img {
  max-height: 54px !important;
  width: auto !important;
}
#top .logo,
#top .logo a {
  display: flex;
  align-items: center;
  height: 100%;
}

/* ==================================================================
   GROUP K: FULL-BLEED SECTIONS (added 2026-08-21, Claude)
   Root cause of the "white border around each page": these pages
   render through Enfold's classic template, so every av_section sits
   INSIDE the centred content column and its background stops at the
   container edge. The theme ignored the builder-template flag, so
   instead of fighting the template system, break every section out
   to the full viewport width. The inner .container (max-width 86rem,
   centred) keeps all text exactly where it is; only the backgrounds,
   bands, and particle fields extend to the screen edges, matching
   the reference build. overflow-x:clip absorbs the scrollbar-width
   overhang that 100vw introduces.
   REVERT: delete this block.
   ================================================================== */
#top .template-page .avia-section {
  width: 100vw;
  max-width: 100vw;
  position: relative;
  left: 50%;
  margin-left: -50vw;
}
#top #main {
  overflow-x: hidden;
  overflow-x: clip;
}

/* ==================================================================
   GROUP L: PARTNER REVIEW FIXES, ROUND 2 (added 2026-08-21, Claude)
   L1 Slim header at 80px. L2 Scroll progress meter, pure CSS
   scroll-driven (blue to green, per reference .progress); browsers
   without scroll-timeline support simply never show it. L3 Enfold
   scroll-top button hidden (reference has none). L4 Firm "today"
   block right-aligned. L5 Buttons normalised to one size/baseline.
   L6 Reference diagonal hue restored on heroes.
   REVERT: delete this block.
   ================================================================== */

/* L1. Slim header */
#top #header_main .container,
#top #header_main .main_menu ul:first-child > li > a {
  height: 80px !important;
  line-height: 80px !important;
}
#top #header_main .container { min-height: 0 !important; }
#top #header {
  border-bottom: 1px solid rgba(14, 65, 112, 0.10);
  box-shadow: none !important;
}

/* L2. Scroll progress meter */
@keyframes key-progress { to { transform: scaleX(1); } }
body::before {
  content: "";
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 4px;
  background: linear-gradient(90deg, #2B6CA3, #084503);
  box-shadow: 0 0 14px rgba(14, 65, 112, 0.40);
  transform: scaleX(0);
  transform-origin: left;
  z-index: 9990;
  pointer-events: none;
  animation: key-progress linear;
  animation-timeline: scroll(root);
}
body.admin-bar::before { top: 32px; }
@media (prefers-reduced-motion: reduce) {
  body::before { display: none; }
}

/* L3. Hide the Enfold scroll-top button */
#top #scroll-top-link { display: none !important; }

/* L4. Firm "One platform, five sectors": LEFT-aligned block at the
   standard content edge (rewritten 2026-08-23 per owner decision,
   reversing the right-align requested 2026-08-23 morning). */
#top .firm-today .av-special-heading,
#top .firm-today .avia_textblock,
#top .firm-today .avia_textblock p,
#top .firm-today .av-special-heading .av-special-heading-tag {
  margin-left: 0 !important;
  margin-right: auto !important;
}
#top .firm-today .avia-button-wrap {
  margin-left: 0 !important;
  margin-right: auto !important;
  float: none !important;
}

/* L5. Buttons: one size, one baseline */
#top .avia-button-wrap {
  display: inline-block;
  vertical-align: top;
  margin: 0 0.75rem 0 0;
}
#top .avia-button {
  margin: 0 !important;
  padding: 0.875rem 1.75rem !important;
  line-height: 1.2 !important;
  border: 1px solid transparent !important;
  box-shadow: none !important;
}

/* L6. Diagonal hue on heroes */
#top .home-hero::before,
#top .page-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(255, 255, 255, 0) 40%, rgba(14, 65, 112, 0.06) 72%, rgba(10, 44, 77, 0.16) 100%);
  pointer-events: none;
  z-index: 1;
}
#top .home-hero > .container,
#top .page-hero > .container {
  position: relative;
  z-index: 2;
}

/* ==================================================================
   GROUP M: STICKY HEADER, LAYOUT SHIFT, MOBILE PASS (2026-08-21, Claude)
   M1 Translucent blurred sticky header per reference (requires the
      Enfold Sticky Header option, enabled by Pete 2026-08-21).
   M2 scrollbar-gutter:stable kills the post-load sideways "click":
      the scrollbar was appearing after first paint and narrowing the
      viewport by ~15px. The gutter is now always reserved.
   M3 Compact mobile header: 64px bar, 44px logo, and the desktop
      hover underline suppressed inside the burger overlay.
   M4 Interior page hero particle fields hidden on phones: less
      visual noise and less main-thread work on small screens. The
      homepage keeps its field at every size.
   REVERT: delete this block.
   ================================================================== */

/* M1. Translucent blurred header */
#top #header .header_bg {
  background-color: rgba(255, 255, 255, 0.85) !important;
}
#top #header {
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

/* M2. No more post-load sideways shift */
html { scrollbar-gutter: stable; }

/* M3. Mobile header */
@media (max-width: 989px) {
  #top #header_main .container,
  #top #header_main .main_menu ul:first-child > li > a {
    height: 64px !important;
    line-height: 64px !important;
  }
  #top .logo img { max-height: 44px !important; }
  #top #header .av-main-nav > li > a .avia-menu-text::after { display: none; }
}

/* M4. Interior fields off on phones */
@media (max-width: 767px) {
  #top .page-hero canvas { display: none !important; }
}

/* ==================================================================
   GROUP N: TRUE GLASS HEADER (added 2026-08-21, Claude)
   Enfold paints several stacked background layers in the header, so
   one translucent layer still read as solid white. Every sublayer is
   forced transparent; the single wash lives on .header_bg at 62%
   with a stronger blur. Deliberately not 0% opacity: when a navy
   band scrolls beneath, navy nav links need the light wash to stay
   readable. If a clearer glass is wanted, lower the 0.62 alpha.
   REVERT: delete this block.
   ================================================================== */
#top #header .header_bg {
  background-color: rgba(255, 255, 255, 0.62) !important;
  background-image: none !important;
}
#top #header_main,
#top #header_main_alternate,
#top #header_main .container,
#top #header_main .main_menu,
#top #header_main .main_menu ul {
  background: transparent !important;
}
#top #header {
  background: transparent !important;
  backdrop-filter: blur(14px) saturate(1.15);
  -webkit-backdrop-filter: blur(14px) saturate(1.15);
}

/* ==================================================================
   GROUP O: MOBILE HEADER REPAIR (added 2026-08-22, Claude)
   The Group N glass treatment forced transparent backgrounds onto
   .main_menu ul, which blanked the mobile flyout menu, and the
   backdrop-filter can trap Enfold's fixed-position mobile overlay
   inside the header box. The Group J logo flex sizing (height:100%)
   collapses in the mobile header layout, hiding the logo. Fixes are
   scoped to mobile widths; the burger flyout is pinned solid white
   at every size so it can never inherit the glass transparency.
   REVERT: delete this block.
   ================================================================== */

/* Burger flyout: always solid, always readable, at any width */
body #av-burger-menu-ul {
  background: #FFFFFF !important;
}
body #av-burger-menu-ul li a {
  color: #0A2C4D !important;
}
body .av-burger-overlay {
  background: rgba(10, 44, 77, 0.55) !important;
}

@media (max-width: 989px) {
  /* No glass on phones: kills the fixed-overlay containing-block bug */
  #top #header {
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
  }
  #top #header .header_bg {
    background-color: rgba(255, 255, 255, 0.97) !important;
  }

  /* Logo: back to natural flow and visible */
  #top .logo,
  #top .logo a {
    display: block;
    height: auto !important;
  }
  #top .logo img {
    max-height: 40px !important;
  }

  /* Release the forced 64px line-height from menu anchors; keep a
     compact bar via the container only */
  #top #header_main .main_menu ul:first-child > li > a {
    height: auto !important;
    line-height: normal !important;
  }
  #top #header_main .container {
    height: auto !important;
    min-height: 64px !important;
  }
  #top .av-burger-menu-main > a {
    height: 64px !important;
    line-height: 64px !important;
  }
}

/* ==================================================================
   GROUP P: INVESTORS PAGE (added 2026-08-22, Claude)
   Plain white hero (no field, no diagonal hue) and a stacked column
   of three brand-green portal buttons that stays clean on mobile.
   REVERT: delete this block.
   ================================================================== */
#top .investors-hero::before { display: none !important; }
#top .avia-section.investors-hero { background: #FFFFFF !important; }
.investor-portals {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  max-width: 520px;
  margin: 0 0 1.5rem;
}
.investor-portals .btn { text-align: center; }
#top .portal-note {
  color: #5A7186;
  font-size: 0.9375rem;
  max-width: 520px;
}

/* ==================================================================
   GROUP Q: INVESTOR PORTAL TILES (added 2026-08-23, Claude)
   Two portfolio-style tiles: mono label top, logo centred, green
   button (site btn-primary, same hover) bottom-right. Collapses to
   one column on phones. Supersedes the Group P stacked-button block.
   REVERT: delete this block.
   ================================================================== */
.investor-portal-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1.75rem;
  max-width: 1000px;
  margin: 0;
}
.portal-tile {
  display: flex;
  flex-direction: column;
  border: 1px solid rgba(10, 44, 77, 0.12);
  background: #FBFCFD;
  padding: 2rem;
  min-height: 340px;
}
.portal-tile .portal-label {
  font-family: 'IBM Plex Mono', 'SFMono-Regular', Consolas, monospace;
  font-size: 0.9375rem;
  line-height: 1.5;
  font-weight: 500;
  color: #0A2C4D;
  letter-spacing: 0.01em;
}
.portal-tile .portal-logo {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2rem 0;
}
.portal-tile .portal-logo img { max-width: 78%; height: auto; }
.portal-tile .portal-cta { text-align: right; }
.portal-tile .portal-cta .avia-button-wrap {
  display: inline-block;
  margin: 0;
  vertical-align: bottom;
}
@media (max-width: 767px) {
  .investor-portal-grid { grid-template-columns: 1fr; gap: 1.25rem; }
  .portal-tile { min-height: 0; padding: 1.5rem; }
  .portal-tile .portal-cta { text-align: center; }
  .portal-tile .portal-cta .avia-button-wrap { display: block; }
  .portal-tile .portal-cta .avia-button { display: block; width: 100%; text-align: center; }
}

/* ==================================================================
   GROUP R v2: BUTTON + TILE HOVER PARITY (corrected 2026-08-23)
   v1 wrongly standardised on a darken. The live Portfolio hero
   button is Enfold's light variant, whose hover FADES SLIGHTLY
   TRANSPARENT; that is the approved behaviour. Every green button
   site-wide now shares it: solid brand green base, opacity 0.85 on
   hover, site easing. Portal tiles get the exact portfolio-tile
   hover: thin signal outline + 4px lift, no shadow.
   REVERT: delete this block.
   ================================================================== */
#top .avia-button,
#top .btn-primary,
#top .wpforms-form button[type=submit] {
  background-color: #084503 !important;
  border: 1px solid #084503 !important;
  color: #FFFFFF !important;
  opacity: 1;
  transition: opacity 200ms cubic-bezier(0.22, 1, 0.36, 1) !important;
}
#top .avia-button:hover,
#top .btn-primary:hover,
#top .wpforms-form button[type=submit]:hover {
  background-color: #084503 !important;
  border-color: #084503 !important;
  color: #FFFFFF !important;
  opacity: 0.85;
}
#top .portal-tile {
  background: #FFFFFF;
  transition: transform 300ms cubic-bezier(0.22, 1, 0.36, 1),
              border-color 300ms cubic-bezier(0.22, 1, 0.36, 1);
}
#top .portal-tile:hover {
  transform: translateY(-4px);
  border-color: #0E4170;
  box-shadow: none;
}

/* ==================================================================
   GROUP S: MOBILE HEADER LOGO + PROGRESS BAR REPAIR (2026-08-23)
   S1 The logo vanished at narrow widths: at the mobile breakpoint the
      flex/auto sizing collapsed the SVG logo to zero width. Force it
      visible with explicit positioning and a minimum width.
   S2 The scroll meter flickered and reset on mobile because CSS
      scroll-timeline recalculates whenever the browser URL bar shows
      or hides. The bar is now driven by a --key-scroll variable set
      by the footer script (all widths), and sits flush at top:0 on
      mobile including for logged-in admins.
   REVERT: delete this block.
   ================================================================== */
body::before {
  animation: none !important;
  transform: scaleX(var(--key-scroll, 0));
  top: 0;
}
body.admin-bar::before { top: 32px; }
@media (max-width: 989px) {
  body::before { top: 0 !important; }
  body.admin-bar::before { top: 0 !important; }

  #top #header_main .container { position: relative; }
  #top .logo {
    position: absolute !important;
    left: 1rem;
    top: 0;
    display: flex !important;
    align-items: center;
    height: 64px !important;
    max-width: 60vw;
    z-index: 5;
  }
  #top .logo a {
    display: flex !important;
    align-items: center;
    height: 100% !important;
  }
  #top .logo img {
    display: block !important;
    max-height: 40px !important;
    width: auto !important;
    min-width: 120px;
  }
}

/* ==================================================================
   GROUP T: /whitepaper/ STATIC RENDER (added 2026-08-23, Claude)
   Page 8077 rendered blank: its reveal-classed elements sat at
   opacity 0 waiting for choreography that never completes on this
   page. Script enqueues are not reachable over the MCP, so the
   required outcome is enforced at the CSS layer, scoped to this page
   only via the WordPress body class: every reveal element renders
   fully visible with no JavaScript dependency. No other page's
   choreography is affected.
   REVERT: delete this block.
   ================================================================== */
#top.page-id-8077 .reveal,
#top.page-id-8077 .reveal-hero,
body.page-id-8077 .reveal,
body.page-id-8077 .reveal-hero {
  opacity: 1 !important;
  transform: none !important;
  transition: none !important;
}

/* ==================================================================
   GROUP U (audit ref: L5): TEAM PHOTO HOVER (added 2026-08-23)
   The theme's JS-injected image overlay mis-sizes on first hover
   over the linked partner/advisor photos (a.photo-link). Suppress
   the injected overlay for this pattern only and draw a
   deterministic CSS shade that covers the full image from the first
   hover. LinkedIn click-through unchanged; no other hover pattern
   on the site is matched by these selectors.
   REVERT: delete this block.
   ================================================================== */
#top .avia_textblock .photo-link .image-overlay {
  display: none !important;
}
#top .avia_textblock .photo-link {
  position: relative;
  display: block;
}
#top .avia_textblock .photo-link::after {
  content: "";
  position: absolute;
  inset: 0;
  background: #fff;
  opacity: 0;
  transition: opacity 0.25s ease;
}
#top .avia_textblock .photo-link:hover::after {
  opacity: 0.35;
}
/* ==================================================================
   GROUP V: MOBILE POLISH CSS BATCH (added 2026-08-23, Claude)
   Batch order Tasks 2, 4/5, 11, 12, 13. Placed last so these win on
   source order over the earlier header/logo groups they supersede.
   REVERT: delete this block.
   ================================================================== */
#top .logo,
#top .logo a {
  display: flex !important;
  align-items: center;
}
#top .logo img,
#top .logo svg {
  height: 40px !important;
  width: auto !important;
  max-height: 40px !important;
  min-width: 116px;
  display: block !important;
}
@media (min-width: 990px) {
  #top .logo img,
  #top .logo svg {
    height: 48px !important;
    max-height: 48px !important;
  }
}
#top #header_meta:empty {
  display: none !important;
  min-height: 0 !important;
  border: 0 !important;
}
#top #advanced_menu_toggle,
#top .av-hamburger-inner,
#top .av-hamburger-inner::before,
#top .av-hamburger-inner::after {
  color: #FFFFFF !important;
}
#top .av-hamburger .av-hamburger-inner,
#top .av-hamburger .av-hamburger-inner::before,
#top .av-hamburger .av-hamburger-inner::after,
#top .av-hamburger.is-active .av-hamburger-inner,
#top .av-hamburger.is-active .av-hamburger-inner::before,
#top .av-hamburger.is-active .av-hamburger-inner::after {
  background-color: #FFFFFF !important;
}
#top #advanced_menu_toggle .avia_hamburger_inner,
#top #advanced_menu_hide {
  color: #FFFFFF !important;
}
body::before { top: 0 !important; }
body.admin-bar::before { top: 0 !important; }
#top .portal-tile .portal-logo img {
  max-height: 68px;
  width: auto;
  max-width: 78%;
}
/* GROUP W: HEADER ROW + PORTAL ALIGN + CHART DOT (2026-08-23) */
#top #main { padding-top: 80px !important; }
#top .container_wrap_first { margin-top: 0 !important; border-top: 0 !important; }
@media (max-width: 989px) { #top #main { padding-top: 64px !important; } }
#top .av-hamburger-inner,
#top .av-hamburger-inner::before,
#top .av-hamburger-inner::after { background-color: #0A2C4D !important; }
#top .av-hamburger.is-active .av-hamburger-inner,
#top .av-hamburger.is-active .av-hamburger-inner::before,
#top .av-hamburger.is-active .av-hamburger-inner::after,
html.av-menu-open .av-hamburger-inner,
html.av-menu-open .av-hamburger-inner::before,
html.av-menu-open .av-hamburger-inner::after { background-color: #FFFFFF !important; }
#top #advanced_menu_toggle { color: #0A2C4D !important; }
html.av-menu-open #top #advanced_menu_toggle,
#top #advanced_menu_hide { color: #FFFFFF !important; }
@media (max-width: 989px) {
  #top .av-burger-menu-main {
    position: absolute !important;
    right: 1rem;
    top: 0;
    height: 64px !important;
    display: flex !important;
    align-items: center !important;
  }
  #top #header_main .container { position: relative; }
}
#top .portal-tile .portal-logo { justify-content: flex-start; }
#top .market-cell .colchart .traj-dot {
  opacity: 0;
  transition: opacity 300ms ease 600ms;
}
#top .market-cell.is-live .colchart .traj-dot,
#top .is-visible .colchart .traj-dot { opacity: 1; }


/* ==================================================================
   GROUP X: BURGER ICON COLOUR (added 2026-08-24, Claude)
   The burger rendered as an empty box at narrow widths, on desktop
   and on mobile. Cause: Group V paints the three bars #FFFFFF at
   specificity (1 id, 2 classes), while Group W's navy correction is
   only (1 id, 1 class), so Group W never applied and white bars sat
   on the white header. Owner decision 2026-08-24: brand green at
   rest, matching the hover appearance. The active state is left
   white, where the icon sits over the navy overlay.
   REVERT: delete this block.
   ================================================================== */
html:not(.av-menu-open) #top .av-hamburger:not(.is-active) .av-hamburger-inner,
html:not(.av-menu-open) #top .av-hamburger:not(.is-active) .av-hamburger-inner::before,
html:not(.av-menu-open) #top .av-hamburger:not(.is-active) .av-hamburger-inner::after {
  background-color: #084503 !important;
}
html:not(.av-menu-open) #top #advanced_menu_toggle,
html:not(.av-menu-open) #top #advanced_menu_toggle .avia_hamburger_inner {
  color: #084503 !important;
}



/* ==================================================================
   GROUP Y: BURGER STUCK STATE ON TOUCH (added 2026-08-24, Claude)
   Reported on iPhone: open the burger, close it with the X, and the
   control stays a solid green block instead of returning to three
   lines. Tapping elsewhere clears it.

   Cause: iOS holds :hover on the last element tapped until another
   element is tapped, so the control's hover fill stays painted after
   the overlay closes. Group X only recoloured the icon, so the fill
   underneath it was never addressed. Green icon on a green fill
   reads as a solid block.

   Fix: the control carries no background in any state. The green
   lives on the icon itself, which is the approved appearance, and
   hover styling is pinned to the resting look on coarse pointers,
   where there is no real hover to represent.
   REVERT: delete this block.
   ================================================================== */

#top #advanced_menu_toggle,
#top #advanced_menu_toggle:hover,
#top #advanced_menu_toggle:focus,
#top #advanced_menu_toggle:active,
#top .av-burger-menu-main > a,
#top .av-burger-menu-main > a:hover,
#top .av-burger-menu-main > a:focus,
#top .av-burger-menu-main > a:active {
  background: none !important;
  background-color: transparent !important;
  background-image: none !important;
  box-shadow: none !important;
}

@media (hover: none) {
  #top #advanced_menu_toggle:hover,
  #top #advanced_menu_toggle:focus,
  #top .av-burger-menu-main > a:hover,
  #top .av-burger-menu-main > a:focus {
    background: none !important;
    background-color: transparent !important;
    color: #084503 !important;
  }
  html:not(.av-menu-open) #top .av-hamburger:not(.is-active):hover .av-hamburger-inner,
  html:not(.av-menu-open) #top .av-hamburger:not(.is-active):hover .av-hamburger-inner::before,
  html:not(.av-menu-open) #top .av-hamburger:not(.is-active):hover .av-hamburger-inner::after {
    background-color: #084503 !important;
  }
}

/* Keyboard users keep a visible ring. */
#top #advanced_menu_toggle:focus-visible,
#top .av-burger-menu-main > a:focus-visible {
  outline: 2px solid #084503;
  outline-offset: 2px;
}



/* ==================================================================
   GROUP Z: PARTNER LONG-FORM BIO PAGES (added 2026-08-24, Claude)
   Supports the four partner detail pages and the "Read more" link
   that sits under each short bio on the team page. The arrow is an
   HTML entity in the markup rather than a CSS content escape, so
   there is no backslash for the editor pipeline to mangle.
   REVERT: delete this block.
   ================================================================== */

#top .team-partners .bio-more { margin: 1.25rem 0 0; }

#top .team-partners .bio-more a {
  display: inline-block;
  font-family: var(--key-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
  font-size: 0.8125rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #084503;
  text-decoration: none;
  border-bottom: 1px solid rgba(8, 69, 3, 0.35);
  padding-bottom: 2px;
  transition: color .2s ease, border-color .2s ease;
}

#top .team-partners .bio-more a span {
  display: inline-block;
  margin-left: 0.35em;
  transition: transform .2s ease;
}

#top .team-partners .bio-more a:hover {
  color: #052D01;
  border-bottom-color: #052D01;
}

#top .team-partners .bio-more a:hover span { transform: translateX(3px); }

#top .partner-bio .partner-photo {
  display: block;
  width: 100%;
  height: auto;
  max-width: 320px;
  border-radius: 2px;
}

@media only screen and (max-width: 767px) {
  #top .partner-bio .partner-photo {
    max-width: 240px;
    margin-bottom: 1.75rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  #top .team-partners .bio-more a,
  #top .team-partners .bio-more a span { transition: none; }
}


/* ==========================================================================
   Header logo: drop the white background plate baked into the SVG
   ========================================================================== */
/* Safety net for a raster (PNG/JPG) header logo: cancel the 116px
   min-width so an <img> logo keeps its true aspect ratio instead of
   being stretched horizontally. Inert while the logo is an inline SVG. */
#top #header .logo img,
#top .av-logo-container .logo img {
  min-width: 0 !important;
  width: auto !important;
  object-fit: contain;
}

/* NOTE: the header logo is KEY_Logo_Horizontal_Color_Transparent_1568w.svg,
   which has no white background plate. Do NOT add a rule that blanks white
   fills in the logo SVG - the remaining white paths are the letter counters
   in "INVESTMENT PARTNERS" and removing them fills in the holes. */

/* ==========================================================================
   Homepage contact section ("Start a conversation"): halve vertical padding
   150px -> 75px top and bottom
   ========================================================================== */
body#top.home #av_section_10.avia-section > .container.av-section-cont-open,
body#top.home #av_section_10.avia-section.av-av_section-dcb36442c871c5aeb6b4878bbfb0055c > .container.av-section-cont-open {
  padding-top: clamp(2.25rem, 4.5vh, 3.5rem) !important;
  padding-bottom: clamp(2.25rem, 4.5vh, 3.5rem) !important;
}
.home #av_section_10 .template-page,
.home .avia-section.av-av_section-dcb36442c871c5aeb6b4878bbfb0055c .template-page {
  padding-top: 35px;
  padding-bottom: 35px;
}



/* ==================================================================
   GROUP AA: PARTNER BIO NAME BLOCK (added 2026-08-24, Claude)
   Extends Group Z. The particle hero was removed from the four
   partner pages at owner request, so the pages are plain white and
   the name and title now sit directly under the headshot in the left
   column. The name carries the page h1.
   REVERT: delete this block.
   ================================================================== */

#top .partner-bio .partner-name {
  margin: 1.5rem 0 0.35rem;
  font-size: clamp(1.5rem, 2.4vw, 1.875rem);
  line-height: 1.15;
  letter-spacing: -0.01em;
  color: #0A2C4D;
}

#top .partner-bio .partner-title {
  margin: 0;
  font-size: 0.9375rem;
  line-height: 1.45;
  color: #6b7a8c;
}

@media only screen and (max-width: 767px) {
  #top .partner-bio .partner-name {
    margin-top: 1.25rem;
    font-size: 1.5rem;
  }
}


/* ==========================================================================
   Portfolio pages: hide the whole Press block when a company has no tagged
   press posts, instead of showing Enfold's "Nothing Found" empty state.
   Scoped to children of the Portfolio page (ID 8075). Matches only when the
   blog element rendered its no-results header, so pages that do have press
   are untouched.
   ========================================================================== */
body#top.parent-pageid-8075 .flex_column:has(> .av-alb-blogposts .entry-content-header[aria-label="No Posts Found"]) {
  display: none;
}
