@charset "UTF-8";

/* ============================================================================
   Components - Buttons, Navigation, Footer
   ============================================================================ */

/* ============================================================================
   404 Search
   ============================================================================ */

/* Core supplies the associated label, but showLabel=false clips it to a screen-reader-only box. */
.error404 .wp-block-search__label.screen-reader-text {
    clip: auto;
    clip-path: none;
    color: var(--adst-text);
    font-family: var(--adst-font-family);
    font-size: var(--wp--preset--font-size--medium);
    font-weight: var(--adst-font-regular);
    height: auto;
    margin: initial;
    overflow: visible;
    padding: initial;
    position: static;
    width: auto;
}

.adst-container,
.adst-header-inner,
.adst-topbar-inner,
.adst-blog-section > .adst-container {
    width: min(var(--adst-width-content), 100% - 2 * var(--adst-container-inset));
    margin-inline: auto;
    padding-inline: var(--adst-container-inset);
}

/* Layout Modifier System - Industry-standard width architecture */
.adst-layout--content .adst-container {
    /* Default: Content width - 1180px max */
    width: min(var(--adst-width-content), 100% - 2 * var(--adst-container-inset));
    margin-inline: auto;
}

.adst-layout--full .adst-container {
    /* Full: Capped at 1920px maximum */
    width: min(var(--adst-width-full), 100% - 2 * var(--adst-container-inset));
    margin-inline: auto;
}

/* Mobile responsive adjustments for full layout */
@media (max-width: 768px) {
    .adst-layout--full .adst-container {
        padding-inline: var(--adst-container-inset);
    }
}


/* Enable WordPress blockGap system with our spacing scale */
.is-layout-flow {
    --wp--style--block-gap: var(--space-between-blocks);
}

/* Prevent WordPress from adding top margin on first element */
.is-layout-flow > *:first-child {
    margin-block-start: 0;
}

/* Allow full-width blocks to break out of post content container */
.wp-block-post-content > .alignfull {
    max-width: 100vw;
    width: 100vw;
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
    padding: 0;
}

.adst-section {
    padding-block: var(--adst-section-padding);
}

.adst-section--tight { padding-block: var(--adst-section-padding-tight); }
.adst-section--alt { background: var(--adst-background-alt); }

/* Home fleet overview (#153), native core blocks styled as one approved composition. */
.adst-fleet {
    box-sizing: border-box;
    margin-block: 0;
    padding: var(--space-20) 0;
    width: 100%;
    background: var(--wp--preset--color--background);
}

.adst-fleet :where(.wp-block-group, h2, h3, p, ul, ol, figure, .wp-block-buttons) {
    margin-block: 0;
}

.adst-fleet__inner {
    display: flex;
    flex-direction: column;
    gap: var(--space-10);
    width: min(var(--adst-width-content), calc(100% - 2 * var(--adst-container-inset)));
    margin-inline: auto;
}

.adst-fleet__header {
    display: grid;
    grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
    gap: var(--space-12);
    align-items: end;
}

.adst-fleet__header-copy,
.adst-fleet__header-detail {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-3);
    min-width: 0;
}

.adst-fleet__eyebrow {
    color: var(--wp--preset--color--gray-text);
    font-family: var(--adst-font-heading);
    font-size: var(--wp--preset--font-size--small);
    font-weight: var(--adst-font-semibold);
    letter-spacing: 3px;
    line-height: 1.4;
    text-transform: uppercase;
}

.adst-fleet h2 {
    color: var(--wp--preset--color--dark-text);
    font-family: var(--adst-font-heading);
    font-size: var(--wp--preset--font-size--display);
    font-weight: var(--adst-font-black);
    letter-spacing: -0.03em;
    line-height: 1.2;
}

.adst-fleet__intro {
    color: var(--wp--preset--color--secondary-light);
    font-size: var(--wp--preset--font-size--medium);
    line-height: 1.7;
}

.adst-fleet__cta {
    justify-content: flex-start;
}

.adst-fleet__cards {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: var(--space-5);
}

.adst-fleet-card {
    position: relative;
    display: flex;
    flex-direction: column;
    min-width: 0;
    border: 1px solid var(--wp--preset--color--light);
    background: var(--wp--preset--color--background);
    transition: transform var(--adst-transition);
}

.adst-fleet-card:focus-within {
    outline: 3px solid var(--button-focus-ring);
    outline-offset: 3px;
}

.adst-fleet-card__title a:focus-visible {
    outline: 0;
}

.adst-fleet-card__title a::after {
    content: '';
    position: absolute;
    inset: 0;
}

.adst-fleet-card__media {
    position: relative;
    overflow: hidden;
}

.adst-fleet-card__image,
.adst-fleet-card__image img {
    width: 100%;
    height: 190px;
}

.adst-fleet-card__image img {
    object-fit: cover;
    object-position: center 60%;
}

.adst-fleet-card__count {
    position: absolute;
    left: 0;
    bottom: 0;
    display: flex;
    align-items: baseline;
    gap: var(--space-1);
    padding: var(--space-2) 14px;
    color: var(--wp--preset--color--primary);
    background: var(--wp--preset--color--secondary);
}

.adst-fleet-card__count-number {
    font-family: var(--adst-font-heading);
    font-size: 26px;
    font-weight: var(--adst-font-black);
    letter-spacing: -0.03em;
    line-height: 1;
}

.adst-fleet-card__count-unit {
    color: var(--wp--preset--color--white);
    font-family: var(--adst-font-heading);
    font-size: var(--wp--preset--font-size--x-small);
    font-weight: var(--adst-font-bold);
    letter-spacing: 1px;
    line-height: 1;
}

.adst-fleet-card__body {
    display: flex;
    flex: 1;
    flex-direction: column;
    gap: var(--space-3);
    padding: var(--space-5);
}

.adst-fleet-card__title {
    color: var(--wp--preset--color--dark-text);
    font-family: var(--adst-font-heading);
    font-size: 19px;
    font-weight: var(--adst-font-bold);
    line-height: 1.25;
}

.adst-fleet-card__title a {
    color: inherit;
    text-decoration: none;
}

.adst-fleet-card__blurb {
    color: var(--wp--preset--color--secondary-light);
    font-size: var(--wp--preset--font-size--small);
    line-height: 1.6;
}

.adst-fleet-card__chips {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: auto;
    padding: var(--space-1) 0 0;
    list-style: none;
}

.adst-fleet-card__chips li {
    display: inline-flex;
    align-items: center;
    height: 26px;
    padding-inline: 10px;
    color: var(--wp--preset--color--secondary);
    background: var(--wp--preset--color--primary);
    font-family: var(--adst-font-heading);
    font-size: var(--wp--preset--font-size--utility);
    font-weight: var(--adst-font-bold);
    letter-spacing: 1px;
    line-height: 1;
    text-transform: uppercase;
}

.adst-fleet-path {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
}

.adst-fleet-path__label {
    color: var(--wp--preset--color--dark-text);
    font-family: var(--adst-font-heading);
    font-size: 13px;
    font-weight: var(--adst-font-bold);
    letter-spacing: 2px;
    line-height: 1.4;
    text-transform: uppercase;
}

.adst-fleet-path__list {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: var(--space-2);
    padding: 0;
    list-style: none;
}

.adst-fleet-path__item {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
    min-width: 0;
    padding: var(--space-3) var(--space-4);
    border-top: 3px solid var(--wp--preset--color--primary);
    background: var(--wp--preset--color--background-alt);
}

.adst-fleet-path__item strong {
    color: var(--wp--preset--color--dark-text);
    font-family: var(--adst-font-heading);
    font-size: 15px;
    line-height: 1.4;
}

.adst-fleet-path__item span {
    color: var(--wp--preset--color--gray-text);
    font-size: 13px;
    line-height: 1.45;
}

@media (hover: hover) {
    .adst-fleet-card:hover {
        transform: translateY(-2px);
    }
}

@media (max-width: 1024px) {
    .adst-fleet__cards {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .adst-fleet-path__list {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 768px) {
    .adst-fleet {
        padding-block: var(--space-12);
    }

    .adst-fleet__inner {
        display: grid;
        gap: var(--space-6);
    }

    .adst-fleet__header,
    .adst-fleet__header-detail {
        display: contents;
    }

    .adst-fleet__header-copy { order: 1; }
    .adst-fleet__intro { order: 2; }
    .adst-fleet__cards { order: 3; }
    .adst-fleet-path { order: 4; }
    .adst-fleet__cta { order: 5; }

    .adst-fleet h2 {
        font-size: var(--wp--preset--font-size--x-large);
    }

    .adst-fleet__cards,
    .adst-fleet-path__list {
        grid-template-columns: minmax(0, 1fr);
    }

    .adst-fleet__cards {
        gap: var(--space-4);
    }

    .adst-fleet-card__body {
        padding: var(--space-4);
    }

    .adst-fleet-path__item {
        display: grid;
        grid-template-columns: var(--space-24) minmax(0, 1fr);
        gap: var(--space-3);
        align-items: center;
        border-top: 0;
        border-left: 3px solid var(--wp--preset--color--primary);
    }

    .adst-fleet-path__item strong {
        font-size: var(--wp--preset--font-size--small);
    }
}

@media (prefers-reduced-motion: reduce) {
    .adst-fleet-card {
        transition: none;
    }

    .adst-fleet-card:hover {
        transform: none;
    }
}

/* Section columns use native core/columns widths, gap, padding, and mobile stacking. */
.adst-section-layout > .adst-section-layout__sidebar,
.adst-section-layout > .adst-section-layout__content {
    box-sizing: border-box;
    min-width: 0; /* Core column attributes cannot express the flex-item shrink floor. */
}

.adst-section-layout > .adst-section-layout__sidebar {
    background: var(--wp--preset--color--background);
}

@media (min-width: 769px) { /* Theme's established post-mobile breakpoint. */
    .adst-section-layout > .adst-section-layout__sidebar {
        order: -1; /* Keep the desktop sidebar left while the source order stays content-first. */
    }
}

.adst-section-layout__content > * {
    margin-block-start: 0;
}

.adst-section-layout__content > .adst-page-content {
    box-sizing: border-box;
    min-width: 0;
    width: 100%;
}

/*
 * Shared course/hub media-prose composition (#67).
 * Prod rows measure 1080px with 510/510 columns on full-width pages, and 912px
 * with 431/431 columns inside the section track. The existing 64px and 48px
 * spacing tokens reproduce those gaps within 2px, without page-specific CSS.
 */
.vai-media-prose {
    align-items: flex-start;
    box-sizing: border-box;
    display: flex;
    flex-wrap: nowrap;
    gap: var(--space-16);
    margin: var(--space-16) auto;
    max-width: 1080px;
    width: 100%;
}

.vai-media-prose > .vai-media-prose__media,
.vai-media-prose > .vai-media-prose__prose {
    box-sizing: border-box;
    flex: 1 1 0;
    min-width: 0;
}

.vai-media-prose > .vai-media-prose__prose {
    padding-top: var(--space-16);
}

.vai-media-prose > .vai-media-prose__media > .wp-block-image {
    margin: 0;
    width: 100%;
}

.vai-media-prose > .vai-media-prose__media > .wp-block-image img {
    height: auto;
    width: 100%;
}

.vai-media-prose--media-right > .vai-media-prose__media {
    order: 2;
}

.vai-media-prose--section-track {
    gap: var(--space-12);
    max-width: 912px;
}

@media (max-width: 768px) {
    .vai-media-prose,
    .vai-media-prose--section-track {
        flex-direction: column;
        gap: var(--space-8);
        margin-block: var(--space-12);
        max-width: none;
        width: 80%;
    }

    .vai-media-prose > .vai-media-prose__media,
    .vai-media-prose > .vai-media-prose__prose {
        flex-basis: auto;
        order: initial;
        padding-top: 0;
        width: 100%;
    }
}

/* Keep page-level full-width blocks inside the native right column. */
.adst-section-layout__content .adst-page-content > .alignfull,
.adst-section-layout__content .adst-page-content > .alignwide.adst-layout--full,
.adst-section-layout__content .wp-block-post-content > .alignwide.adst-layout--full {
    margin-left: 0;
    margin-right: 0;
    max-width: none;
    width: 100%;
}

/*
 * Section-page prose rhythm receipts: ticket #30 production measurements.
 * theme.json cannot scope element/block styles to the section-sidebar template or this locked group's direct children. Prod posts also use a different H2 weight/line-height, so global theme.json rules would regress #27; scoped CSS is the native safe option.
 */
.adst-section-layout .adst-page-content > .wp-block-group {
    max-width: none;
    padding-inline: 0;
    padding-block: var(--wp--preset--spacing--100); /* #112: breathing room off the hero/CTA bands; core zeroes the wrapper's margin on this flow layout. */
    background: var(--wp--preset--color--background-alt); /* Prod practice-PPL and zero-to-ATPL body sections both measure rgb(247, 247, 247). */
}

/* #112: kill the leading margin so the group's own top padding isn't doubled by the first heading's margin-block. */
.adst-section-layout .adst-page-content > .wp-block-group > :first-child {
    margin-block-start: 0;
}

.adst-section-layout .adst-page-content > .wp-block-group > :where(.wp-block-heading, p, ul, ol, figure, .wp-block-buttons) {
    box-sizing: border-box;
    margin-inline: auto;
    width: 80%; /* Prod prose rows are 912px in the 1140px desktop track and 300px at 375px. */
}

.adst-section-layout .adst-page-content > .wp-block-group > h2.wp-block-heading {
    margin-block: 54px 0; /* Prod previous-prose-bottom to next-H2 gap is 54px at 1440. */
    padding-bottom: var(--space-2); /* Prod is 10px; the 8px token is within the required 2px reuse tolerance. */
    font-size: var(--wp--preset--font-size--x-large);
    font-weight: var(--adst-font-semibold);
    line-height: 26px;
    text-align: left;
}

.adst-section-layout .adst-page-content > .wp-block-group > .adst-about + h2.wp-block-heading {
    margin-top: 27px; /* Prod first prose H2 has one 27px row-top inset after the about row. */
}

.adst-section-layout .adst-page-content > .wp-block-group > p {
    margin-block: 0;
    font-size: var(--wp--preset--font-size--medium); /* Prod paragraph is 16px. */
    line-height: 1.8; /* Prod paragraph is 28.8px at 16px. */
}

.adst-section-layout .adst-page-content > .wp-block-group > :where(ul, ol) {
    margin-block: 0;
    padding: 0 0 var(--space-4) var(--space-4); /* Prod list uses 16px left and bottom padding. */
    font-size: var(--wp--preset--font-size--medium);
    line-height: 26px;
}

.adst-section-layout .adst-page-content > .wp-block-group > :where(ul, ol) > li {
    margin-block: 0; /* Prod measured adjacent list-item spacing is 0px. */
}

.adst-section-layout .adst-page-content > .wp-block-group > .wp-block-buttons {
    justify-content: flex-start;
}

@media (max-width: 768px) {
    .adst-section-layout .adst-page-content > .wp-block-group > h2.wp-block-heading {
        margin-top: 60px; /* Prod mobile previous-prose-bottom to next-H2 gap is 60px. */
    }

    .adst-section-layout .adst-page-content > .wp-block-group > .adst-about + h2.wp-block-heading {
        margin-top: 30px; /* Prod mobile row-top inset is 30px. */
    }
}

/* Prod geometry receipts: ticket #24 production measurements. */
.adst-band {
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 378px; /* Prod contact: 377.98px at 1440. */
    padding: 111px 0 54px; /* Prod desktop band padding. */
    overflow: hidden;
    color: var(--wp--preset--color--secondary);
    text-align: center;
    background-color: var(--wp--preset--color--primary);
    background-image: var(--adst-band-pattern, none);
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
}

.adst-band--section {
    min-height: 380px; /* Prod course band: 380.19px, ticket #28 production measurements. */
}

.adst-band__content {
    width: min(80%, 912px); /* Prod: 300px at 375, 912px on the course band at 1440. */
    margin-inline: auto;
}

.adst-band__eyebrow,
.adst-band__title,
.adst-band__intro {
    margin: 0;
    color: inherit;
}

.adst-band__eyebrow {
    font-family: var(--adst-font-heading);
    font-size: var(--wp--preset--font-size--medium); /* Prod: 16px. */
    font-weight: var(--adst-font-semibold); /* Prod measured 500; no 500 file exists, rendered 400 before #61, now 600 (ticket #24 production measurements). */
    letter-spacing: 3px; /* Prod: 3px. */
    line-height: 23.8px; /* Prod computed: 23.8px at 1440; ticket #24 production measurements. */
    text-transform: uppercase;
}

.adst-band__title {
    font-family: var(--adst-font-heading);
    font-size: var(--wp--preset--font-size--display); /* Prod course: 40px. */
    font-weight: var(--adst-font-bold);
    letter-spacing: normal;
    line-height: var(--space-10); /* Prod course: 40px. */
}

.adst-band__intro {
    margin-top: var(--space-2);
    font-family: var(--adst-font-heading);
    font-size: var(--wp--preset--font-size--medium); /* Prod: 16px. */
    font-weight: var(--adst-font-semibold); /* Prod measured 500; no 500 file exists, rendered 400 before #61, now 600 (ticket #24 production measurements). */
    line-height: 23.8px; /* Prod computed: 23.8px at 1440; ticket #24 production measurements. */
}

/* ============================================================================
   Alumni Project
   ============================================================================ */

/* #139: proof header pattern (ad-starter/alumni-proof) + alumni cards. Structure is native blocks
   (group / flex group / columns / grid group); these rules only paint them. Bios stay verbatim. */
.adst-proof {
    padding: var(--space-6) var(--space-6) var(--space-5);
    background: var(--adst-light-bg);
    border-top: 3px solid var(--adst-accent);
}

.adst-proof__label {
    margin: 0 0 var(--space-4);
    font-family: var(--adst-font-heading);
    font-size: var(--adst-text-xs);
    font-weight: var(--adst-font-bold);
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--adst-muted);
}

.adst-proof__logos {
    gap: var(--space-4) var(--space-8);
}

.adst-proof__logo {
    margin: 0;
}

/* Both wordmarks on one cap height; width follows the SVG ratio (Wizz 224x104 -> 65x30, Enter 704x165 -> 128x30).
   aspect-ratio reserves that box before the SVG loads (core/image accepts no width/height attributes on theme files). */
.adst-proof__logo img {
    display: block;
    height: 30px;
    width: auto;
}

/* Single-hyphen modifiers: "--" inside block-comment attributes serializes as \u002d\u002d and breaks round-trips. */
.adst-proof__logo-wizz img { aspect-ratio: 224 / 104; }
.adst-proof__logo-enter img { aspect-ratio: 704 / 165; }

.adst-proof__text {
    margin: 0;
    font-family: var(--adst-font-heading);
    font-weight: var(--adst-font-bold);
    font-size: var(--adst-text-lg);
    letter-spacing: -0.01em;
    color: var(--adst-primary-dark);
}

.adst-proof__stats {
    gap: var(--space-4);
    margin: var(--space-6) 0 0;
    padding-top: var(--space-5);
    border-top: var(--adst-soft-border);
}

.adst-proof__stats .wp-block-column {
    min-width: 0;
}

.adst-proof__num {
    margin: 0;
    font-family: var(--adst-font-heading);
    font-weight: var(--adst-font-black);
    font-size: var(--wp--preset--font-size--heading-large);
    line-height: 1.25; /* 1.1 clipped Montserrat 800 descenders by 2px (Lavish layout audit). */
    color: var(--adst-primary);
}

.adst-proof__desc {
    margin: var(--space-1) 0 0;
    font-size: var(--adst-text-sm);
    color: var(--adst-muted);
}

/* 640, not the file's 768 split: measured 2026-09-05, at 641px the five-item logo row already wraps to 3 lines
   at 30px, while 24px logos + base-size names hold 2 lines down to 640 (3 lines at 375, expected). */
@media (max-width: 640px) {
    .adst-proof { padding: var(--space-5) var(--space-4); }
    .adst-proof__logos { gap: var(--space-3) var(--space-5); }
    .adst-proof__logo img { height: 24px; }
    .adst-proof__text { font-size: var(--adst-text-base); }
    .adst-proof__stats { gap: var(--space-3); }
    .adst-proof__num { font-size: var(--wp--preset--font-size--lead); }
    .adst-proof__desc { font-size: var(--adst-text-xs); }
}

/* Cards. The grid itself comes from the group's native grid layout (minimumColumnWidth 26rem). */
.adst-alumni-grid {
    margin: var(--space-5) 0 var(--space-8);
}

.adst-alumni-card {
    min-width: 0;
    padding: var(--space-5);
    background: var(--adst-surface);
    border: var(--adst-soft-border);
    border-left: 3px solid var(--adst-accent);
}

.adst-single-project .adst-alumni-card__name {
    margin: 0 0 var(--space-2);
    font-size: var(--adst-text-lg);
    line-height: 1.25;
}

/* Meta line uses native inline formats so the editor keeps them: em = role, mark = employer, strong = type. */
.adst-alumni-card__meta {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
    margin: 0 0 var(--space-3);
    font-size: var(--adst-text-sm);
    line-height: 1.4;
}

.adst-alumni-card__meta > em,
.adst-alumni-card__meta > mark,
.adst-alumni-card__meta > strong {
    display: inline-block;
    padding: 0.2em 0.6em;
    font-style: normal;
}

.adst-alumni-card__meta > em {
    border: 1px solid rgb(var(--adst-secondary-rgb) / 0.25);
    color: var(--adst-secondary);
}

/* Painted employer callout (#45 C9). */
.adst-alumni-card__meta > mark {
    font-weight: var(--adst-font-semibold);
    color: var(--adst-secondary);
    background-color: color-mix(in srgb, var(--adst-secondary) 10%, transparent);
}

.adst-alumni-card__meta > strong {
    font-family: var(--adst-font-heading);
    font-weight: var(--adst-font-bold);
    font-size: var(--adst-text-xs);
    letter-spacing: 0.08em;
    color: var(--adst-accent);
    background: var(--adst-primary);
}

.adst-alumni-card__bio {
    margin: 0;
    font-size: var(--adst-text-sm);
    line-height: 1.65;
    color: var(--adst-text);
}

/* Core post-title CSS sets word-break: break-word. Prefer whole words, but retain a long-word overflow fallback. */
.adst-single-project .adst-band__title {
    word-break: normal;
    overflow-wrap: break-word;
}

@media (max-width: 768px) {
    .adst-single-project .adst-band__title {
        font-size: var(--wp--preset--font-size--heading-medium); /* 32px fits “ABSOLWENTÓW” inside the measured 300px mobile title box; ticket #45 baseline and viewport measurement. */
    }
}

/* ============================================================================
   Blog Post Styling
   ============================================================================ */

/* Single Post Main Container */
body.single,
body.single .adst-single-post {
    background: var(--wp--preset--color--background); /* Prod post body: rgb(255, 255, 255), ticket #31 production measurements. */
}

.adst-single-post {
    margin-top: 0;
    padding-top: 0;
}

/* Single Post Hero Section */
.adst-single-post__hero {
    min-height: 60vh !important;
    max-height: 600px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    margin: 0 !important;
    padding: var(--space-xl) var(--adst-container-inset) !important;
}

/* Post Content */
.adst-single-post__content {
    font-size: var(--wp--preset--font-size--large);
    line-height: 1.8;
    color: var(--adst-muted);
}

/* theme.json owns all table typography. CSS only handles cells, header colour, and the scroll container. */
.wp-block-table {
    max-width: 100%;
    overflow-x: auto; /* Prod figure: auto, ticket #31 production measurements. */
    -webkit-overflow-scrolling: touch;
}

.adst-table-scroll-hint[hidden] {
    display: none;
}

.adst-table-scroll-hint:not([hidden]) {
    display: block;
    width: max-content;
    padding: var(--space-2) var(--space-3);
    margin-bottom: var(--space-2);
    color: var(--wp--preset--color--secondary);
    background: var(--wp--preset--color--primary);
    font-size: var(--wp--preset--font-size--small);
    font-weight: var(--adst-font-semibold);
}

.wp-block-table[data-adst-scroll-label]:focus-visible {
    outline: var(--space-1) solid var(--wp--preset--color--primary); /* 4px uses the existing focus-spacing token so keyboard focus remains visible. */
    outline-offset: var(--space-1); /* 4px keeps the focus ring outside the table border. */
}

.wp-block-table th,
.wp-block-table td {
    padding: 13px 18px; /* Prod body cell: 13px block / 18px inline, ticket #31 production measurements. */
    border: 0;
    border-bottom: 1px solid var(--wp--preset--color--secondary); /* #113: one continuous row rule instead of a per-cell box that notched the corners. */
}

.wp-block-table thead tr {
    color: var(--wp--preset--color--white); /* Prod header text: rgb(255, 255, 255), ticket #31 production measurements. */
    background: var(--wp--preset--color--secondary); /* Prod header row: rgb(45, 45, 45), ticket #31 production measurements. */
}

.wp-block-table thead :where(th, td) {
    padding: 14px 18px; /* Prod header cell: 14px block / 18px inline, ticket #31 production measurements. */
    color: inherit;
    border: 0; /* #113: header reads as one solid band, no per-cell divisions. */
    text-transform: uppercase; /* Prod header cell: uppercase, ticket #31 production measurements. */
}

/* #113: keep the yellow leading-edge accent once, on the header row's first cell. */
.wp-block-table thead tr > :first-child {
    border-left: 4px solid var(--wp--preset--color--primary); /* Prod leading edge: 4px rgb(252, 210, 29), ticket #31 production measurements. */
}

.adst-single-post__content p:where(:not(.adst-phone-cta__subtext, .adst-generic-cta__description)) {
    max-width: 760px; /* Contract #47 caps the measured 1080px paragraph at 760px while sibling tables and images remain full-width. */
    margin-bottom: var(--space-6);
}

/* #118: lists share the 760px paragraph measure (same descendant scope as the p rule
   above) so they stop overhanging the prose; CTA-block lists, if any, keep their width. */
.adst-single-post__content :where(ul, ol) {
    max-width: 760px;
}
.adst-single-post__content :where(.adst-phone-cta, .adst-generic-cta) :where(ul, ol) {
    max-width: none;
}

/* #118: wider blocks (media, tables) sit at one consistent width instead of 1204/1260/800. */
.adst-single-post__content > :where(figure, .wp-block-image, .wp-block-table) {
    max-width: 1080px;
    margin-inline: auto;
}

.adst-single-post__content h1:where(:not(.adst-phone-cta__heading, .adst-generic-cta__heading, .adst-section-heading__title)),
.adst-single-post__content h2:where(:not(.adst-phone-cta__heading, .adst-generic-cta__heading, .adst-section-heading__title)),
.adst-single-post__content h3:where(:not(.adst-phone-cta__heading, .adst-generic-cta__heading, .adst-section-heading__title)),
.adst-single-post__content h4:where(:not(.adst-phone-cta__heading, .adst-generic-cta__heading, .adst-section-heading__title)) {
    margin-top: 2.5rem;
    margin-bottom: 1rem;
    color: var(--adst-text);
    font-weight: 700;
}

/* Decorative airplane icon for an H1 inside single-post content only. */
.adst-single-post__content h1:where(:not(.adst-phone-cta__heading, .adst-generic-cta__heading, .adst-section-heading__title))::before {
    content: '✈' / '';
    color: var(--adst-primary);
    margin-right: 0.75rem;
    display: inline-block;
    font-size: var(--wp--preset--font-size--display);
    vertical-align: middle;
    transform: translateY(-0.1em);
}

.adst-single-post__content h1:where(:not(.adst-phone-cta__heading, .adst-generic-cta__heading, .adst-section-heading__title)) {
    font-size: var(--wp--preset--font-size--display);
}

.adst-single-post__content h2:where(:not(.adst-phone-cta__heading, .adst-generic-cta__heading, .adst-section-heading__title)) {
    font-size: var(--wp--preset--font-size--heading-medium);
}

.adst-single-post__content h3:where(:not(.adst-phone-cta__heading, .adst-generic-cta__heading, .adst-section-heading__title)) {
    font-size: var(--wp--preset--font-size--lead);
}

.adst-single-post__content h4:where(:not(.adst-phone-cta__heading, .adst-generic-cta__heading, .adst-section-heading__title)) {
    font-size: var(--wp--preset--font-size--large);
}

/* Post Footer Section */
.adst-single-post__footer {
    /* #118: split block/inline so the footer shorthand cannot be invalidated by a missing token. */
    padding-block: var(--space-2xl) var(--space-xl);
    padding-inline: var(--adst-container-inset); /* carry the page gutter so mobile nav isn't flush to the edge. */
}

/* Post Tags */
.adst-single-post__tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: var(--adst-gap-lg) !important;
}

.adst-single-post__tags a {
    display: inline-block;
    padding: var(--space-2) var(--space-4);
    background: var(--adst-background);
    color: var(--adst-muted);
    text-decoration: none;
    border-radius: 4px;
    font-size: var(--wp--preset--font-size--small);
    font-weight: 600;
    transition: all 0.2s ease;
}

.adst-single-post__tags a:hover {
    background: var(--adst-primary);
    color: var(--adst-surface);
}

/* Navigation Separator */
.adst-single-post__footer .wp-block-separator {
    border-color: rgba(0, 0, 0, 0.1);
    margin: 0 0 var(--adst-gap-md) 0 !important;
}

/* Navigation Links */
.wp-block-post-navigation-link {
    margin-bottom: 0.75rem;
}

.wp-block-post-navigation-link:last-of-type {
    margin-bottom: 0;
}

.wp-block-post-navigation-link a {
    color: var(--adst-text);
    text-decoration: none;
    font-weight: 600;
    transition: color 0.2s ease;
}

.wp-block-post-navigation-link a:hover {
    color: var(--adst-primary);
}

/* #118: distinguish the "Poprzedni/Następny post" label from the linked title. */
.wp-block-post-navigation-link .post-navigation-link__label {
    display: block;
    font-weight: 400;
    font-size: var(--wp--preset--font-size--small);
    color: var(--adst-muted);
}

/* #118: the lone "SPRAWDŹ NASZE KURSY" link renders as the #33 tertiary CTA
   (text link + arrow) without touching post markup (AC7). Scoped to a /kursy/
   anchor that is the sole child of its paragraph, so inline prose links are untouched. */
.adst-single-post__content p > a[href="/kursy/"]:only-child {
    display: inline-flex;
    align-items: center;
    gap: var(--button-gap, 0.5em);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 2px;
    color: var(--wp--preset--color--secondary);
    text-decoration-line: underline;
    text-decoration-color: currentColor;
    text-decoration-thickness: 2px;
    text-underline-offset: 5px;
}
.adst-single-post__content p > a[href="/kursy/"]:only-child::after {
    content: '→';
    font-size: var(--wp--preset--font-size--large);
    line-height: 1;
}
.adst-single-post__content p > a[href="/kursy/"]:only-child:hover {
    text-decoration-color: var(--wp--preset--color--primary);
}

/* Blog post content alignment - optimal reading width */
.blog .wp-block-post-content {
    padding: 0 var(--adst-container-inset) !important;
    max-width: 760px;
    margin: 0 auto !important;
}

.blog .wp-block-post-content.has-global-padding,
.single .wp-block-post-content.has-global-padding {
    padding-left: var(--adst-container-inset);
    padding-right: var(--adst-container-inset);
}

/* Responsive adjustments */
@media (max-width: 768px) {
    .adst-single-post__hero {
        min-height: 50vh !important;
        max-height: none !important;
        padding: var(--adst-gap-lg) var(--adst-container-inset) !important;
    }

    .adst-single-post__content {
        font-size: var(--wp--preset--font-size--medium);
    }

    .adst-single-post__meta {
        font-size: var(--wp--preset--font-size--x-small);
    }
}

/* Blog archive post alignment */
.wp-block-post-template > .wp-block-post {
    max-width: 760px;
    margin: 0 auto var(--space-xl) auto;
    padding: 0 var(--adst-container-inset);
    text-align: left;
}

.wp-block-post-template > .wp-block-post .wp-block-post-title,
.wp-block-post-template > .wp-block-post .adst-post-meta,
.wp-block-post-template > .wp-block-post .wp-block-post-excerpt {
    max-width: 100%;
    margin: 0 auto;
}

/* Front page post content - remove all spacing and constraints (for home page blocks) */
.home .wp-block-post-content {
    margin: 0;
    padding: 0;
}

.home .wp-block-post-content.is-layout-flow {
    gap: 0;
}

.home .wp-block-post-content > * {
    margin-block-start: 0;
    margin-block-end: 0;
}

/* Hide all comments sections */
.wp-block-comments,
.comments-area,
.comment-respond,
.commentlist,
#comments {
    display: none !important;
    height: 0 !important;
    overflow: hidden !important;
    margin: 0 !important;
    padding: 0 !important;
}

.adst-section-heading {
    display: grid;
    gap: 0.65rem;
    margin-bottom: var(--adst-gap-lg);
}

.adst-section-heading--center,
.adst-section-heading:not(.adst-section-heading--left) {
    text-align: center;
    margin-inline: auto;
}

.adst-section-heading__title {
    margin: 0;
    font-size: var(--wp--preset--font-size--display);
    font-weight: 800;
    letter-spacing: -0.03em;
    line-height: 1.256;
}

.adst-section-heading__subtitle {
    margin: 0 auto;
    max-width: 90%;
    font-size: var(--wp--preset--font-size--medium);
    color: rgb(var(--adst-text-rgb, 17 17 23) / 0.72);
}

/* Optional tagline support */
.adst-section-heading__tagline {
    display: block;
    margin-top: -5px;
    margin-bottom: 5px;
    font-size: var(--wp--preset--font-size--medium);
    font-weight: 400;
    color: var(--adst-muted);
    text-transform: capitalize;
    line-height: 1.4;
}

.adst-section-heading__tagline .arrow-icon {
    display: inline-flex;
    align-items: center;
    margin: 0 8px;
    font-size: var(--wp--preset--font-size--x-small);
    color: var(--adst-primary);
    animation: arrowRight 2s ease-in-out infinite;
}

.adst-section-heading__tagline .arrow-icon--left {
    animation-name: arrowLeft;
}

/* Arrow animations */
@keyframes arrowRight {
    0%, 100% {
        transform: translateX(0);
    }
    50% {
        transform: translateX(8px);
    }
}

@keyframes arrowLeft {
    0%, 100% {
        transform: translateX(0);
    }
    50% {
        transform: translateX(-8px);
    }
}

/* Responsive section heading sizes (match template) */
@media (min-width: 769px) and (max-width: 1024px) {
    .adst-section-heading__title {
        font-size: var(--wp--preset--font-size--heading-large);
    }
}

@media (max-width: 768px) {
    .adst-section-heading__title {
        font-size: var(--wp--preset--font-size--lead);
        line-height: 1.15;
        letter-spacing: -0.02em;
    }

    .adst-section-heading__subtitle {
        font-size: var(--wp--preset--font-size--small);
        max-width: 95%;
    }
}

.is-style-checkmark {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    gap: 0.75rem;
}

.is-style-checkmark li {
    position: relative;
    padding-left: var(--space-6);
    font-size: var(--wp--preset--font-size--medium);
    color: rgb(var(--adst-text-rgb, 17 17 23) / 0.78);
}

.is-style-checkmark li::before {
    content: '✓';
    content: '✓' / '';
    position: absolute;
    left: 0;
    top: 0;
}

/* Top bar & Header */

.adst-header-wrap {
    left: 0;
    position: fixed;
    right: 0;
    top: 0;
    z-index: var(--adst-z-fixed-header);
}

.adst-topbar,
.adst-header-bar {
    background: var(--wp--preset--color--secondary);
    color: var(--wp--preset--color--white);
}

.adst-topbar {
    max-height: 80px; /* measured: prod desktop utility section is 79.59px (ticket #22 production measurements) */
    opacity: 1;
    overflow: hidden;
    padding-block: var(--space-2);
    position: relative;
    transition: max-height 280ms ease, padding 280ms ease, opacity 220ms ease;
    z-index: var(--adst-z-content);
}

.adst-topbar.adst-topbar--collapsed {
    max-height: 0;
    opacity: 0;
    padding-block: 0;
    pointer-events: none;
}

.adst-topbar .alignwide,
.adst-header-bar .alignwide {
    max-width: 100%;
    width: 100%;
}

.adst-topbar-inner {
    align-items: center;
    display: flex;
    gap: var(--space-4);
    justify-content: space-between;
    padding-inline: var(--adst-header-inset); /* measured: prod nav module x=57.59px at 1440; utilities follow the same responsive inset (ticket #29 production measurements). */
    position: relative;
}

.adst-utility-buttons {
    gap: var(--space-2);
}

.adst-topbar .adst-utility-button .wp-block-button__link {
    --btn-bg: var(--button-primary-bg);
    --btn-hover-bg: var(--button-primary-bg-hover);
    --btn-text: var(--button-primary-text);
    --btn-hover-text: var(--button-primary-text-hover);
    border-width: 0;
    border-radius: var(--button-radius);
    box-shadow: none;
    font-family: var(--button-font-family);
    font-size: var(--wp--preset--font-size--utility); /* Prod utility control: 11px; ticket #33 production measurements. */
    font-weight: var(--adst-font-bold);
    letter-spacing: normal; /* Compact navigation utility exception; 2px would clip the reservation label at 375px. */
    min-height: 25.3px; /* measured: prod utility button (ticket #22 production measurements) */
    padding: var(--space-1) var(--space-2);
    white-space: nowrap;
}

.adst-topbar .adst-utility-button .wp-block-button__link:hover {
    color: var(--button-primary-text-hover);
}

@media (max-width: 374px) {
    .adst-topbar {
        max-height: calc(2 * 44px + 3 * var(--space-2)); /* two button rows, their gap and the bar's block padding */
    }

    .adst-utility-buttons {
        flex-wrap: wrap;
    }

    .adst-topbar .adst-utility-button .wp-block-button__link {
        min-height: 44px;
    }
}

.adst-topbar .adst-language-switcher {
    border: 0;
    padding: 0;
}

.adst-topbar .adst-language-switcher a {
    color: var(--wp--preset--color--white);
}

.adst-header-bar {
    border: 0;
    box-shadow: 0 4px 20px rgb(var(--adst-secondary-rgb) / 0.12);
    margin-block-start: 0;
    overflow: visible;
    position: relative;
    transition: box-shadow 280ms ease, transform 280ms ease;
    z-index: var(--adst-z-header-bar);
}

.adst-header-inner {
    align-items: center;
    display: flex;
    flex-wrap: nowrap;
    justify-content: center;
    margin: 0 auto;
    min-height: 84px; /* measured: prod desktop charcoal nav section (ticket #22 production measurements) */
    padding: 0 var(--adst-header-inset); /* measured: 60px accepted side inset at 1440; endpoint interpolation gives 51px at W=1310 for the fixed caret (ticket #29 breakpoint measurements). */
    position: relative;
    width: 100%;
}

.adst-header-brand {
    align-items: flex-start;
    align-self: flex-start;
    display: flex;
    flex-shrink: 0;
    justify-content: center;
    left: 50%;
    padding: 0;
    position: absolute;
    top: -66.3px; /* measured: -25px prod top and 68.72px overlap; adjusted by the 41.3px local topbar (ticket #22 production measurements) */
    transform: translateX(-50%);
    transition: top 280ms ease, transform 280ms ease, width 280ms ease;
    width: 294.31px; /* measured: prod desktop logo.png width (ticket #22 production measurements) */
    z-index: var(--adst-z-brand);
}

.adst-header-brand .wp-block-site-logo,
.adst-header-brand .wp-block-site-logo a,
.adst-header-brand .wp-block-site-logo img {
    display: block;
    height: auto;
    width: 100%;
}

.adst-header__logo-mobile {
    display: none;
}

.adst-header-bar--scrolled {
    box-shadow: 0 2px 12px rgb(var(--adst-secondary-rgb) / 0.18);
}

.adst-header-bar--scrolled .adst-header-inner {
    min-height: 64px; /* retained local sticky bar; plate fit is derived in ticket #22 production measurements */
}

.adst-header-bar--scrolled .adst-header-brand {
    top: 50%;
    transform: translate(-50%, -50%);
    width: 80px; /* derived: 58.8px-high 400:294 plate fits the 64px sticky bar (ticket #22 production measurements) */
}

.adst-header-bar--hidden {
    transform: translateY(-100%);
}

.adst-header-nav {
    color: var(--wp--preset--color--white);
    position: relative;
    width: 100%;
    z-index: var(--adst-z-header-bar);
}

.adst-header-nav .wp-block-navigation__container {
    align-items: center;
    column-gap: var(--space-1); /* coordinator floor: the 4px token remains intact wherever the desktop menu is shown (ticket #29, 2026-08-27). */
    flex-wrap: nowrap;
    width: 100%;
}

.adst-header-nav .wp-block-navigation-item {
    flex-shrink: 1;
    position: relative;
}

.adst-header-nav a,
.adst-header-nav .wp-block-navigation-item__content {
    align-items: center;
    color: var(--wp--preset--color--white);
    display: inline-flex;
    font-family: var(--adst-font-nav);
    font-size: var(--adst-nav-font-size); /* measured: 14px prod endpoint at 1440; coordinator floor is 12px at measured W=1310 (ticket #29 breakpoint measurements). */
    font-weight: var(--adst-font-semibold);
    letter-spacing: var(--adst-nav-tracking); /* coordinator floor is 1px; 2px intersects the unchanged plate with the binding inset (ticket #29 breakpoint measurements). */
    line-height: 1.4;
    padding: var(--space-3) var(--space-1); /* coordinator floor: item spacing never compresses below the 4px token (ticket #29, 2026-08-27). */
    text-decoration: none;
    text-transform: uppercase;
    white-space: nowrap;
}

.adst-header-nav .wp-block-navigation-item.has-child {
    align-items: center;
    display: flex;
    padding-inline: var(--space-1);
}

.adst-header-nav .wp-block-navigation-item.has-child > .wp-block-navigation-item__content {
    background: none;
    color: inherit;
    padding: var(--space-3) 0;
}

.adst-header-nav .wp-block-navigation__responsive-container-content > .wp-block-navigation__container > .has-child > .wp-block-navigation-submenu__toggle {
    align-items: center;
    background: transparent;
    border: 0;
    color: var(--wp--preset--color--white);
    display: inline-flex;
    flex: 0 0 18px;
    height: 18px;
    justify-content: center;
    margin: 0 0 0 var(--space-1);
    padding: 0;
    width: 18px; /* measured: prod .et_pb_menu submenu arrow box at 1440px (ticket #22 production measurements). */
}

.adst-header-nav .wp-block-navigation-submenu__toggle svg {
    color: inherit;
    display: block;
    height: 14px;
    width: 18px;
}

.adst-header-nav .wp-block-navigation-submenu__toggle svg path {
    stroke: currentColor;
}

.adst-header-nav .wp-block-navigation__submenu-container {
    background: var(--wp--preset--color--white);
    border: 1px solid var(--wp--preset--color--light);
    box-shadow: 0 4px 12px rgb(var(--adst-secondary-rgb) / 0.15);
    left: 0;
    min-width: 200px;
    opacity: 0;
    position: absolute;
    top: 100%;
    transform: translateY(0);
    transition: opacity 0.2s ease, visibility 0.2s ease;
    visibility: hidden;
    z-index: var(--adst-z-dropdown);
}

.adst-header-nav .wp-block-navigation__submenu-container.is-open,
.adst-header-nav .wp-block-navigation-item.has-child:hover > .wp-block-navigation__submenu-container {
    opacity: 1;
    pointer-events: auto;
    visibility: visible;
}

.adst-header-nav .wp-block-navigation__submenu-container .wp-block-navigation-item {
    margin: 0;
}

.adst-header-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content,
.adst-header-nav .wp-block-navigation__submenu-container .wp-block-navigation-item.has-child > .wp-block-navigation-item__content,
.adst-header-nav .wp-block-navigation__submenu-container .wp-block-navigation-item.has-child > .wp-block-navigation-submenu__toggle {
    color: var(--wp--preset--color--secondary);
    font-size: var(--wp--preset--font-size--x-small);
    letter-spacing: 0.08em;
}

.adst-header-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
    display: flex;
    padding: var(--space-3) var(--space-4);
}

.adst-header-nav .wp-block-navigation__submenu-container .wp-block-navigation-item.has-child {
    padding: 0;
}

.adst-header-nav .wp-block-navigation__submenu-container .wp-block-navigation-item.has-child > .wp-block-navigation-item__content {
    flex: 1;
    padding: var(--space-3) var(--space-2) var(--space-3) var(--space-4);
}

.adst-header-nav .wp-block-navigation__submenu-container .wp-block-navigation-item.has-child > .wp-block-navigation-submenu__toggle {
    padding: var(--space-3) var(--space-4) var(--space-3) var(--space-1);
}

.adst-header-nav .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container {
    left: 100%;
    top: 0;
}

.adst-header-nav .wp-block-navigation__responsive-container-content > .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content:hover {
    text-decoration: underline;
    text-decoration-color: var(--wp--preset--color--primary);
}

.adst-header-nav .wp-block-navigation-item__content[aria-current="page"]:not([href*="#"]),
.adst-header-nav .current-menu-item > a:not([href*="#"]) {
    color: var(--wp--preset--color--primary);
}

.adst-header-nav .wp-block-navigation-item a:focus-visible,
.adst-header-nav .wp-block-navigation-submenu__toggle:focus-visible {
    outline: 2px solid var(--wp--preset--color--primary);
    outline-offset: 2px;
}

.adst-language-switcher {
    align-items: center;
    display: flex;
    flex-shrink: 0;
}

.adst-language-switcher ul {
    align-items: center;
    display: flex;
    gap: var(--space-1);
    list-style: none;
    margin: 0;
    padding: 0;
}

.adst-language-switcher li {
    list-style: none;
    margin: 0;
    padding: 0;
}

.adst-language-switcher li::before {
    content: none;
}

.adst-language-switcher a {
    align-items: center;
    display: inline-flex;
    justify-content: center;
    min-height: 44px;
    min-width: 44px;
    padding: var(--space-2);
}

.adst-language-switcher img {
    display: block;
    height: auto;
    width: 24px;
}

.adst-language-switcher .lang-code {
    color: var(--wp--preset--color--white);
    font-size: var(--wp--preset--font-size--x-small);
    font-weight: var(--adst-font-semibold);
    letter-spacing: 0.05em;
    text-transform: uppercase;
}

/* CSS custom properties are not valid in media-query conditions. Keep this one inclusive pair beside the shared --adst-desktop-nav-min token; navigation.js reads that token instead of duplicating 1310px (ticket #29 breakpoint measurements). */
@media (min-width: 1310px) { /* W: menu at the ruled 12px/1px floor passes here; the next 10px step intersects the plate. Prod wraps at 1280, but Bartosz's no-overlap ruling overrides parity. */
    .adst-band {
        align-items: flex-start;
        padding-top: var(--adst-plate-text-offset); /* derived: 68px plate drop + Bartosz's binding 92px text clearance (ticket #29 contract). */
    }

    .hero-split__panel {
        align-items: flex-start;
    }

    .hero-split__content {
        padding-top: var(--adst-plate-text-offset); /* derived: 68px plate drop + binding 92px clearance (ticket #29 contract). */
    }

    .adst-header-nav .wp-block-navigation__responsive-container-content > .wp-block-navigation__container {
        justify-content: center;
    }

    /* ponytail: split menu assumes 11 items / 6+5 halves around the plate; upgrade when a 12th top-level item or a renamed split is added via a menu-derived split index in adst_header nav rendering. */
    .adst-header-nav .wp-block-navigation__responsive-container-content > .wp-block-navigation__container > .wp-block-navigation-item:nth-child(6) {
        margin-right: auto;
    }

    .adst-header-nav .wp-block-navigation__responsive-container-content > .wp-block-navigation__container > .wp-block-navigation-item:nth-child(7) {
        margin-left: auto;
    }

    .adst-header-nav .wp-block-navigation-item.has-child:hover,
    .adst-header-nav .wp-block-navigation__submenu-container .wp-block-navigation-item:hover {
        background: var(--wp--preset--color--primary);
        color: var(--wp--preset--color--secondary);
    }

    .adst-header-nav .wp-block-navigation__responsive-container .wp-block-navigation-item.has-child:hover > .wp-block-navigation__submenu-container {
        display: flex;
        opacity: 1;
        visibility: visible;
    }
}

@media (max-width: 1309px) { /* W−1: switch to #22's existing hamburger below the measured 1310px readable-menu floor (ticket #29 breakpoint measurements). */
    :root {
        --adst-est-topbar: 0px;
        --adst-est-header: 0px;
    }

    .wp-site-blocks {
        padding-top: 0;
        transition: none;
    }

    html {
        scroll-padding-top: calc(var(--adst-header-h-scrolled) + var(--space-2));
    }

    /* Stick the template part, not its bar: the short header wrapper would
       otherwise constrain sticky positioning to the header's own height. */
    header.wp-block-template-part:has(.adst-header-wrap) {
        position: sticky;
        top: calc(-1 * var(--adst-mobile-topbar-height, 0px));
        z-index: var(--adst-z-fixed-header);
    }

    /* WordPress fixes its admin bar above 600px; below that it scrolls away. */
    @media (min-width: 601px) {
        body.admin-bar header.wp-block-template-part:has(.adst-header-wrap) {
            top: calc(var(--wp-admin--admin-bar--height) - var(--adst-mobile-topbar-height, 0px));
        }
    }

    .adst-header-wrap {
        position: relative;
        top: 0;
    }

    .adst-topbar {
        transition: none;
    }

    .adst-topbar-inner {
        flex-wrap: nowrap;
        gap: var(--space-2);
        padding-inline: var(--space-2);
    }

    .adst-header-inner {
        align-items: center;
        display: flex;
        flex-direction: row;
        gap: var(--space-3);
        justify-content: space-between;
        min-height: var(--adst-header-h-scrolled);
        padding: var(--space-2) var(--adst-container-inset);
    }

    .adst-header-brand {
        align-items: center;
        align-self: center;
        gap: var(--space-3);
        left: auto;
        margin-left: 0;
        max-width: none;
        position: relative;
        top: auto;
        transform: none;
        width: var(--adst-header-logo-w);
    }

    .adst-header-brand .wp-block-site-logo {
        display: none;
    }

    .adst-header-inner:has(.adst-header-nav .is-menu-open) .adst-header-brand {
        visibility: hidden;
    }

    .adst-header__logo-mobile,
    .adst-header__logo-mobile a,
    .adst-header__logo-mobile img {
        display: block;
        height: auto;
        margin: 0;
        width: 100%;
    }

    .adst-header-nav {
        justify-content: center;
        position: relative;
        width: auto;
        z-index: auto;
    }

    .adst-header-nav .wp-block-navigation__responsive-container-open,
    .adst-header-nav button.wp-block-navigation__responsive-container-open {
        display: flex;
    }

    .adst-header-nav .wp-block-navigation__container {
        display: none;
    }

    .adst-header-nav .wp-block-navigation__responsive-container:not(.is-menu-open) {
        display: none;
        opacity: 0;
        pointer-events: none;
        visibility: hidden;
    }

    .adst-header-nav .wp-block-navigation__responsive-container.is-menu-open {
        display: block;
        opacity: 1;
        pointer-events: auto;
        visibility: visible;
    }

    .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
        display: flex !important;
        flex-direction: column;
        gap: 0;
        margin: 0;
        padding: 0;
    }

    .wp-block-navigation__responsive-container .wp-block-navigation__container,
    .wp-block-navigation__responsive-container ul,
    .wp-block-navigation__responsive-container .is-layout-flex,
    .wp-block-navigation__responsive-container .is-layout-flow {
        column-gap: 0 !important;
        gap: 0;
        list-style: none;
        margin: 0;
        padding: 0;
        row-gap: 0 !important;
    }

    .wp-block-navigation__responsive-container .wp-block-navigation__container > *,
    .wp-block-navigation__responsive-container .is-layout-flex > *,
    .wp-block-navigation__responsive-container .is-layout-flow > * {
        margin-block-end: 0 !important;
        margin-block-start: 0 !important;
    }

    .wp-block-navigation__responsive-container {
        -webkit-overflow-scrolling: touch;
        background: var(--adst-surface);
        border: none;
        bottom: 0 !important;
        box-shadow: none;
        height: 100vh;
        left: 0 !important;
        max-height: 100vh;
        max-width: 100vw;
        overflow-x: hidden !important;
        overflow-y: auto !important;
        position: fixed;
        right: 0 !important;
        top: 0 !important;
        width: 100vw;
        z-index: var(--adst-z-overlay) !important;
    }

    .wp-block-navigation__responsive-close {
        background: var(--adst-surface);
        border: none;
        box-shadow: none;
        left: 0;
        padding: 0.75rem 1rem;
        position: sticky;
        right: 0;
        top: 0;
        z-index: var(--adst-z-control);
    }

    .wp-block-navigation__responsive-dialog {
        border: none;
        box-shadow: none;
        height: 100%;
        max-width: 100%;
        width: 100%;
    }

    .wp-block-navigation__responsive-container-content {
        gap: 0 !important;
        margin: 0;
        padding: 1rem 0 0 !important;
    }

    .wp-block-navigation__responsive-container-close {
        align-items: center;
        background: transparent;
        border: none;
        box-shadow: none;
        display: flex;
        justify-content: center;
        min-height: 44px;
        min-width: 44px;
        padding: 0.75rem !important;
    }

    .wp-block-navigation__responsive-container .wp-block-navigation__container .wp-block-navigation-item {
        align-items: stretch !important;
        background: var(--adst-surface) !important;
        border: none;
        box-shadow: none;
        column-gap: 0 !important;
        display: flex;
        gap: 0;
        margin: 0;
        padding: 0;
        row-gap: 0 !important;
    }

    .wp-block-navigation__responsive-container .wp-block-navigation__container > .wp-block-navigation-item {
        margin-bottom: 0.6rem !important;
    }

    .wp-block-navigation__responsive-container .wp-block-navigation__container > .wp-block-navigation-item:last-child {
        margin-bottom: 0 !important;
    }

    .wp-block-navigation__responsive-container .wp-block-navigation-item,
    .wp-block-navigation__responsive-container li {
        margin: 0;
        margin-bottom: 0 !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
        margin-top: 0 !important;
    }

    .wp-block-navigation__responsive-container .wp-block-navigation-item a {
        align-items: center;
        background: transparent;
        border: none;
        box-shadow: none;
        color: var(--adst-secondary);
        display: flex;
        flex: 1;
        font-size: var(--wp--preset--font-size--medium);
        font-weight: 600;
        line-height: 1.3;
        min-height: 40px;
        padding: 0.5rem 1.25rem;
        text-decoration: none;
        text-transform: uppercase;
    }

    .wp-block-navigation__responsive-container .wp-block-navigation-item .wp-block-navigation-submenu__toggle {
        display: none !important;
    }

    .wp-block-navigation__responsive-container .wp-block-navigation__submenu-container {
        background: var(--adst-surface);
        border: none !important;
        box-shadow: none;
        column-gap: 0 !important;
        display: flex;
        flex-direction: column;
        gap: 0;
        list-style: none;
        margin: 0;
        padding: 0 !important; /* Core applies 32px inline and 40px top padding; this survives because removing both overlapping resets changes the open menu. */
        row-gap: 0 !important;
    }

    .wp-block-navigation__responsive-container .wp-block-navigation__submenu-container > * {
        margin: 0;
    }

    .wp-block-navigation__responsive-container .wp-block-navigation__submenu-container .wp-block-navigation-item {
        align-items: stretch;
        background: var(--adst-surface);
        border: none;
        box-shadow: none;
        display: flex;
        margin: 0;
        padding: 0;
    }

    .wp-block-navigation__responsive-container .wp-block-navigation__submenu-container .wp-block-navigation-item a {
        background: transparent;
        border: none;
        box-shadow: none;
        font-size: var(--wp--preset--font-size--small);
        font-weight: var(--adst-font-semibold);
        line-height: 1.3;
        min-height: 36px;
        padding: 0.45rem 1.25rem 0.45rem 2.25rem;
        text-transform: none;
    }

    .wp-block-navigation__responsive-container .adst-language-switcher {
        display: none !important;
    }

    .adst-language-switcher {
        border: none;
        display: flex !important;
        margin: 0;
        padding: 0;
    }

    .adst-language-switcher ul {
        margin: 0 !important;
    }

    .wp-block-navigation__responsive-container-open,
    .adst-header-nav .wp-block-navigation__responsive-container-open,
    button.wp-block-navigation__responsive-container-open {
        align-items: center;
        background: transparent;
        border: none;
        border-radius: 0;
        cursor: pointer;
        display: flex;
        justify-content: center;
        min-height: 48px;
        min-width: 48px;
        padding: 0.65rem;
        position: relative;
        transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
        z-index: var(--adst-z-control);
    }

    .wp-block-navigation__responsive-container-open:hover,
    .adst-header-nav .wp-block-navigation__responsive-container-open:hover {
        transform: scale(1.05);
    }

    /* Recognisable opener; keep core's accessible name and menu behaviour. */
    .adst-header-nav button.wp-block-navigation__responsive-container-open {
        background: var(--button-primary-bg);
        border-radius: var(--button-radius);
        color: var(--button-primary-text);
        font-family: var(--button-font-family);
        font-size: var(--wp--preset--font-size--small);
        font-weight: var(--adst-font-bold);
        gap: var(--space-2);
        padding: var(--space-3) var(--space-5);
    }

    .adst-header-nav button.wp-block-navigation__responsive-container-open:focus-visible {
        outline: 2px solid var(--button-primary-bg);
        outline-offset: var(--space-1);
    }

    .adst-header-nav button.wp-block-navigation__responsive-container-open::before {
        background: currentColor;
        box-shadow: 0 calc(-1 * var(--space-2)) currentColor, 0 var(--space-2) currentColor;
        content: "";
        height: 2px;
        width: var(--space-6);
    }

    .adst-header-nav button.wp-block-navigation__responsive-container-open::after {
        content: "MENU";
    }

    .adst-header-wrap .adst-header-nav .wp-block-navigation__responsive-container-open svg {
        display: none;
    }

    @media (forced-colors: active) {
        .adst-header-nav button.wp-block-navigation__responsive-container-open::before {
            /* Preserve all three bars using the user's high-contrast palette. */
            background: ButtonText;
            color: ButtonText;
            forced-color-adjust: none;
        }
    }

    .wp-block-navigation__responsive-container-open:focus-visible,
    .adst-header-nav .wp-block-navigation__responsive-container-open:focus-visible {
        outline: 2px solid var(--adst-primary);
        outline-offset: 2px;
    }

    .adst-header-nav .wp-block-navigation__responsive-container.is-menu-open {
        background: var(--wp--preset--color--secondary);
        color: var(--wp--preset--color--white);
    }

    .adst-header-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
        align-items: flex-start;
    }
}

@media (max-width: 768px) {
    .adst-header-inner {
        gap: 0.65rem;
        padding-inline: 1rem;
    }

    .adst-header-brand {
        gap: 0.5rem;
    }

    .adst-language-switcher .lang-code {
        font-size: var(--wp--preset--font-size--utility);
        padding: 0.3rem 0.5rem;
    }

    .wp-block-navigation__responsive-container-open {
        min-height: 44px;
        min-width: 44px;
        padding: 0.55rem;
    }

    .wp-block-navigation__responsive-container .wp-block-navigation__container .wp-block-navigation-item a {
        font-size: var(--wp--preset--font-size--small);
        line-height: 1.2;
        min-height: 36px;
        padding: 0.4rem 1rem !important;
    }

    .wp-block-navigation__responsive-container .wp-block-navigation-item .wp-block-navigation-submenu__toggle {
        padding: 0.4rem 0.5rem !important;
    }

    .wp-block-navigation__responsive-container .wp-block-navigation__submenu-container .wp-block-navigation-item a {
        font-size: var(--wp--preset--font-size--small);
        line-height: 1.2;
        min-height: 32px;
        padding: 0.35rem 1rem 0.35rem var(--space-8) !important;
    }

    .wp-block-navigation__responsive-container .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container {
        background: #ffffff !important;
    }

    .wp-block-navigation__responsive-container .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container .wp-block-navigation-item a {
        padding: 0.5rem 1rem 0.5rem 2.75rem !important;
    }
}

/* Instagram photo strip (#175) */

.vai-social-follow {
    background: var(--wp--preset--color--background-alt);
    border-block: 1px solid var(--wp--preset--color--light);
    box-sizing: border-box;
    margin: 0;
    padding: var(--space-8) var(--adst-container-inset);
    width: 100%;
}

.vai-social-follow__inner {
    display: grid;
    gap: var(--space-6);
    margin-inline: auto;
    max-width: var(--adst-width-content);
}

.vai-social-follow__label {
    color: var(--wp--preset--color--secondary);
    font-family: var(--adst-font-heading);
    font-size: var(--wp--preset--font-size--large);
    font-weight: var(--adst-font-bold);
    margin: 0;
    text-align: center;
}

.vai-social-follow__photos.wp-block-gallery.has-nested-images {
    display: grid;
    gap: var(--space-3);
    grid-template-columns: repeat(4, minmax(0, 1fr));
    margin: 0;
    width: 100%;
}

.vai-social-follow__photos.wp-block-gallery.has-nested-images figure.wp-block-image {
    aspect-ratio: 1;
    margin: 0;
    width: 100% !important;
}

.vai-social-follow .vai-social-follow__photos.wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image) img {
    aspect-ratio: 1;
    flex: 1 1 auto;
    height: 100%;
    object-fit: cover;
    width: 100%;
}

.vai-social-follow__photos .vai-social-follow__photo-low-subject img {
    object-position: center 70%;
}

.vai-social-follow__cta {
    margin: 0;
}

@media (max-width: 600px) {
    .vai-social-follow {
        padding-block: var(--space-6);
    }

    .vai-social-follow__inner {
        gap: var(--space-4);
    }

    .vai-social-follow__photos.wp-block-gallery.has-nested-images {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

/* Footer — approved light, compact desktop and native phone sections (#293). */

footer.wp-block-template-part {
    margin-block-start: 0;
}

.adst-footer,
.adst-footer__bar {
    margin: 0;
    width: 100%;
}

/* The bar owns the single gold divider; other dark panel placements keep theirs. */
.adst-footer > .contact-form-panel--dark {
    border-bottom: 0;
}

.adst-footer__bar {
    background: var(--wp--preset--color--background-alt);
    border-top: 4px solid var(--wp--preset--color--primary);
    color: var(--wp--preset--color--dark-text);
    padding: var(--space-12) var(--adst-container-inset) 0;
    font-size: var(--wp--preset--font-size--small);
}

.adst-footer__bar-inner {
    display: grid;
    grid-template-columns: 330px repeat(3, minmax(0, 1fr)); /* token-exempt: #293 canvas brand track; DESIGN.md Footer. */
    column-gap: var(--space-12);
    margin-inline: auto;
    max-width: var(--adst-width-content);
}

.adst-footer__bar a {
    color: var(--wp--preset--color--secondary);
}

.adst-footer__bar a:hover {
    color: #000; /* token-exempt: #293 canvas hover ink; DESIGN.md Footer. */
    text-decoration: underline;
    text-decoration-color: var(--wp--preset--color--primary);
    text-decoration-thickness: 2px;
    text-underline-offset: 4px;
}

.adst-footer__brand {
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
    padding-bottom: 28px; /* token-exempt: #293 canvas clearance above School; DESIGN.md Footer. */
}

.adst-footer__logo {
    display: block;
    width: 150px; /* token-exempt: #293 canvas desktop logo; DESIGN.md Footer. */
}

.adst-footer__logo img {
    display: block;
    width: 100%;
    height: auto;
    /* Recolour attachment 358 through its alpha channel using the palette token. */
    filter: url(#adst-footer-logo-color);
}

.adst-footer__logo feFlood {
    flood-color: var(--wp--preset--color--secondary);
}

.adst-footer__contact {
    display: flex;
    flex-direction: column;
    gap: 2px; /* token-exempt: #293 canvas compact address rhythm; DESIGN.md Footer. */
    font-style: normal;
    line-height: 1.6;
}

.adst-footer__phone {
    font-family: var(--adst-font-heading);
    font-size: 17px; /* token-exempt: #293 canvas phone hierarchy; DESIGN.md Footer. */
    font-weight: var(--adst-font-bold);
    text-decoration: none;
}

.adst-footer__location p {
    margin: 0;
}

.adst-footer__hours {
    display: block;
}

.adst-footer__section {
    min-width: 0;
}

.adst-footer__heading,
.adst-footer__section summary {
    color: var(--wp--preset--color--secondary);
    font-family: var(--adst-font-heading);
    font-size: var(--wp--preset--font-size--x-small);
    font-weight: var(--adst-font-bold);
    letter-spacing: 1.8px; /* token-exempt: #293 canvas desktop label tracking; DESIGN.md Footer. */
    text-transform: uppercase;
}

.adst-footer__heading {
    margin: 0 0 10px; /* token-exempt: #293 canvas label-to-links gap; DESIGN.md Footer. */
}

/* Without scripting, desktop retains usable native disclosure controls. */
.adst-footer__section summary {
    display: flex;
}

@media (min-width: 1025px) {
    .adst-footer__section[open] summary {
        display: none;
    }
}

.adst-footer__section nav > a {
    display: block;
    color: var(--wp--preset--color--dark-text);
    line-height: var(--space-8);
    text-decoration: none;
}

.adst-footer__school {
    border-block: 1px solid var(--wp--preset--color--light);
    grid-column: 1 / -1;
}

.adst-footer__school nav {
    display: flex;
    flex-wrap: wrap;
    column-gap: 28px; /* token-exempt: #293 canvas School link separation; DESIGN.md Footer. */
}

.adst-footer__school nav > a {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    font-family: var(--adst-font-nav);
    font-size: 13px; /* token-exempt: #293 canvas School type; DESIGN.md Footer. */
    font-weight: var(--adst-font-semibold);
    color: var(--wp--preset--color--secondary);
}

.adst-footer__bottom {
    display: flex;
    align-items: center;
    gap: var(--space-6);
    grid-column: 1 / -1;
    min-height: 76px; /* token-exempt: #293 canvas legal/social row height; DESIGN.md Footer. */
    color: var(--wp--preset--color--gray-text);
    font-size: 13px; /* token-exempt: #293 canvas legal type; DESIGN.md Footer. */
}

.adst-footer__company {
    flex: 1;
    margin: 0;
    line-height: 1.6;
}

.adst-footer__legal,
.adst-footer__social {
    display: flex;
    align-items: center;
    gap: var(--space-5);
}

.adst-footer__legal a {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    color: var(--wp--preset--color--gray-text);
}

.adst-footer__social {
    gap: var(--space-2);
}

.adst-footer__social a {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: var(--wp--preset--color--white);
    box-shadow: inset 0 0 0 1px #cfcfcf; /* token-exempt: #293 canvas social ring; DESIGN.md Footer. */
}

/* token-exempt: #293 approved intermediate-width fit, not a second design; DESIGN.md Footer. */
@media (max-width: 1200px) and (min-width: 1025px) {
    .adst-footer__bar-inner {
        grid-template-columns: 280px repeat(3, minmax(0, 1fr)); /* token-exempt: #293 brand track fit; DESIGN.md Footer. */
        column-gap: var(--space-6);
    }
}

@media (max-width: 1024px) {
    .adst-footer__bar {
        padding: var(--space-8) var(--space-5) var(--space-5);
    }

    .adst-footer__bar-inner {
        display: flex;
        flex-direction: column;
    }

    .adst-footer__brand {
        gap: 14px; /* token-exempt: #293 canvas phone logo-to-address gap; DESIGN.md Footer. */
        padding-bottom: var(--space-6);
    }

    .adst-footer__logo {
        width: 130px; /* token-exempt: #293 canvas phone logo; DESIGN.md Footer. */
        min-height: 44px;
    }

    .adst-footer__contact {
        gap: 0;
    }

    .adst-footer__contact > a {
        display: flex;
        align-items: center;
        min-height: 44px;
        font-size: 15px; /* token-exempt: #293 canvas phone contact type; DESIGN.md Footer. */
    }

    .adst-footer__contact .adst-footer__phone {
        font-size: 18px; /* token-exempt: #293 canvas phone-number emphasis; DESIGN.md Footer. */
    }

    .adst-footer__location {
        padding-block: 10px; /* token-exempt: #293 address wrap clearance within the 44px row; DESIGN.md Footer. */
    }

    .adst-footer__location p,
    .adst-footer__hours {
        display: inline;
    }

    .adst-footer__hours::before {
        content: ' · ';
    }

    .adst-footer__section {
        border-bottom: 1px solid var(--wp--preset--color--light);
    }

    .adst-footer__brand + .adst-footer__section {
        border-top: 1px solid var(--wp--preset--color--light);
    }

    .adst-footer__section summary {
        display: flex;
        align-items: center;
        justify-content: space-between;
        min-height: 52px;
        font-size: 13px; /* token-exempt: #293 canvas phone summary type; DESIGN.md Footer. */
        letter-spacing: 1.6px; /* token-exempt: #293 canvas phone label tracking; DESIGN.md Footer. */
        list-style: none;
        cursor: pointer;
    }

    .adst-footer__section summary::-webkit-details-marker {
        display: none;
    }

    .adst-footer__section summary svg {
        flex-shrink: 0;
        transition: transform 160ms ease;
    }

    .adst-footer__section[open] summary svg {
        transform: rotate(180deg);
    }

    .adst-footer__heading {
        display: none;
    }

    .adst-footer__section nav {
        padding-bottom: var(--space-2);
    }

    .adst-footer__section nav > a {
        display: flex;
        align-items: center;
        min-height: 44px;
        font-family: var(--adst-font-family);
        font-size: 15px; /* token-exempt: #293 canvas phone course/School link type; DESIGN.md Footer. */
        font-weight: var(--adst-font-regular);
        line-height: 1.6;
    }

    .adst-footer__school {
        border-top: 0;
    }

    .adst-footer__school nav {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        column-gap: var(--space-4);
    }

    .adst-footer__bottom {
        display: grid;
        gap: var(--space-1);
        padding-top: var(--space-6);
    }

    .adst-footer__social {
        grid-row: 1;
        gap: 10px; /* token-exempt: #293 canvas phone social separation; DESIGN.md Footer. */
        margin-bottom: var(--space-5);
    }

    .adst-footer__legal {
        grid-row: 2;
        flex-wrap: wrap;
        column-gap: var(--space-5);
        row-gap: 0;
    }

    .adst-footer__company {
        grid-row: 3;
    }
}

@media (prefers-reduced-motion: reduce) {
    .adst-footer__section summary svg {
        transition: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .adst-topbar,
    .adst-header-bar,
    .adst-header-brand,
    .adst-header-nav .wp-block-navigation__submenu-container {
        transition: none;
    }
}

/* ==========================================================================
   Kontakt channel router and static linked map (#167)
   ========================================================================== */
.vai-contact-page {
    box-sizing: border-box;
    max-width: 100vw;
    width: 100vw;
    margin: 0 calc(50% - 50vw);
    padding-block: var(--space-24);
    background: var(--wp--preset--color--white);
}

.vai-contact-page > :where(.vai-contact-page__heading, .vai-contact-channels, .vai-contact-jump, .vai-contact-where, .vai-contact-registry) {
    box-sizing: border-box;
    width: min(var(--adst-width-content), calc(100% - 2 * var(--adst-container-inset)));
    margin-inline: auto;
}

.vai-contact-page > .vai-contact-page__heading,
.vai-contact-where__copy > h2 {
    margin-block: 0 var(--space-6);
    color: var(--wp--preset--color--secondary);
    font-family: var(--adst-font-heading);
    font-size: var(--wp--preset--font-size--heading-large);
    font-weight: var(--adst-font-black);
    line-height: 1.15;
}

.vai-contact-channels {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--space-5);
}

/* Core flow margins otherwise offset grid items inside their tracks. */
.vai-contact-channels > .vai-contact-tile,
.vai-contact-where > :where(.vai-contact-where__copy, .vai-contact-map) {
    margin-block: 0;
}

.vai-contact-tile {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    min-width: 0;
    min-height: 180px;
    padding: var(--space-8);
    border: 1px solid var(--adst-light);
    border-radius: 12px;
    color: var(--adst-text);
    background: var(--wp--preset--color--white);
    transition: transform var(--adst-transition), box-shadow var(--adst-transition);
}

.vai-contact-tile-call {
    border: 2px solid var(--wp--preset--color--secondary);
    background: var(--wp--preset--color--primary);
}

.vai-contact-tile:focus-within {
    outline: 3px solid var(--button-focus-ring);
    outline-offset: 3px;
}

.vai-contact-page .vai-contact-channels .vai-contact-tile > :where(p, h3) {
    margin: 0;
}

.vai-contact-tile__kicker {
    font-family: var(--adst-font-heading);
    font-size: var(--wp--preset--font-size--x-small);
    font-weight: var(--adst-font-bold);
    letter-spacing: 0.16em;
}

.vai-contact-tile__title {
    font-family: var(--adst-font-heading);
    font-size: 20px;
    font-weight: var(--adst-font-black);
    line-height: 1.2;
    overflow-wrap: anywhere;
}

.vai-contact-tile-call .vai-contact-tile__title {
    font-size: 30px;
}

.vai-contact-tile__title a,
.vai-contact-tile__title a:hover,
.vai-contact-tile__title a:focus {
    color: inherit;
    text-decoration: none;
}

.vai-contact-tile__title a:focus-visible {
    outline: 0;
}

/* Stretch the one semantic link across its native group, as in the #153 fleet cards. */
.vai-contact-tile__title a::after {
    content: '';
    position: absolute;
    inset: 0;
}

.vai-contact-tile__note {
    margin-top: auto;
    color: var(--adst-muted);
    font-size: var(--wp--preset--font-size--small);
    line-height: 1.5;
}

.vai-contact-tile-call .vai-contact-tile__note {
    color: var(--wp--preset--color--secondary);
}

.vai-contact-tile__go {
    font-weight: var(--adst-font-bold);
    text-decoration: underline;
}

.vai-contact-page > .vai-contact-jump {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--space-3);
    margin-top: var(--space-6);
    color: var(--adst-muted);
}

.vai-contact-page > .vai-contact-where {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
    gap: var(--space-16);
    margin-top: var(--space-24);
}

.vai-contact-where__copy > p {
    margin-block: 0;
    line-height: 1.7;
}

.vai-contact-bullets {
    display: grid;
    gap: var(--space-3);
    margin: var(--space-6) 0 0;
    padding: 0;
    list-style: none;
}

.vai-contact-bullets li {
    position: relative;
    margin: 0;
    padding-left: var(--space-8);
    color: var(--adst-text);
    font-size: var(--wp--preset--font-size--medium);
    line-height: 1.5;
}

.vai-contact-bullets li::before {
    content: '';
    position: absolute;
    top: 2px;
    left: 0;
    width: 20px;
    height: 20px;
    background-color: var(--wp--preset--color--primary);
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 11.08V12a10 10 0 1 1-5.93-9.14'/%3E%3Cpolyline points='22 4 12 14.01 9 11.01'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 11.08V12a10 10 0 1 1-5.93-9.14'/%3E%3Cpolyline points='22 4 12 14.01 9 11.01'/%3E%3C/svg%3E") center / contain no-repeat;
}

.vai-contact-map {
    position: relative;
    min-width: 0;
}

.vai-contact-map__link {
    position: relative;
    display: block;
    min-width: 44px;
    min-height: 44px;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    border-radius: 12px;
    transition: transform var(--adst-transition);
}

.vai-contact-page .vai-contact-map__link:focus-visible {
    outline: 3px solid var(--button-focus-ring);
    outline-offset: 3px;
    transition: transform var(--adst-transition);
}

.vai-contact-map__link picture,
.vai-contact-map__link img {
    display: block;
    width: 100%;
    height: 100%;
}

.vai-contact-map__link img {
    object-fit: cover;
    transform: scale(1.7);
    transform-origin: 50% 48%;
}

.vai-contact-map__cta {
    position: absolute;
    bottom: var(--space-4);
    left: var(--space-4);
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    box-sizing: border-box;
    padding: 10px 18px;
    border: 2px solid var(--wp--preset--color--secondary);
    border-radius: var(--button-radius);
    color: var(--wp--preset--color--secondary);
    background: var(--wp--preset--color--primary);
    font-family: var(--adst-font-heading);
    font-size: var(--wp--preset--font-size--small);
    font-weight: var(--adst-font-bold);
    letter-spacing: 0.06em;
}

.vai-contact-map__link:hover .vai-contact-map__cta {
    color: var(--wp--preset--color--primary);
    background: var(--wp--preset--color--secondary);
}

.vai-contact-map__osm {
    position: absolute;
    right: 0;
    bottom: 0;
    padding: var(--space-2) var(--space-3);
    color: var(--wp--preset--color--white);
    background: var(--wp--preset--color--secondary);
    font-size: var(--wp--preset--font-size--x-small);
    font-weight: var(--adst-font-semibold);
    text-decoration: underline;
    text-underline-offset: 0.18em;
}

.vai-contact-map__osm:hover,
.vai-contact-map__osm:focus {
    color: var(--wp--preset--color--white);
}

.vai-contact-page > .vai-contact-registry {
    margin-top: var(--space-12);
    padding-top: var(--space-5);
    border-top: 1px solid var(--adst-light);
    color: var(--adst-muted);
    font-size: var(--wp--preset--font-size--small);
}

@media (hover: hover) {
    .vai-contact-tile:hover,
    .vai-contact-map__link:hover {
        transform: translateY(-2px);
    }
}

@media (max-width: 1024px) {
    .vai-contact-page {
        padding-block: var(--space-20);
    }

    .vai-contact-channels,
    .vai-contact-page > .vai-contact-where {
        grid-template-columns: minmax(0, 1fr);
    }

    .vai-contact-page > .vai-contact-where {
        gap: var(--space-10);
    }
}

@media (max-width: 767px) {
    .vai-contact-map__cta {
        top: var(--space-4);
        bottom: auto;
    }
}

@media (prefers-reduced-motion: reduce) {
    .vai-contact-tile,
    .vai-contact-map__link,
    .vai-contact-tile:hover,
    .vai-contact-map__link:hover {
        transition: none;
        transform: none;
    }
}

/* ==========================================================================
   PAGE TEMPLATE STYLES (moved from blog.css, #63)
   These rules build the 1200px content track for every page with a hero header.
   They lived in blog.css, which #60 gated to blog contexts, so default-template
   pages (kadra, referencje, o-nas...) lost their container. Keep them in a
   stylesheet that loads on every page.
   ========================================================================== */
/* Page content area with hero header */
.adst-page-content {
	margin-bottom: clamp(3rem, 6vw, 5rem);
	padding-block-start: var(--wp--preset--spacing--100); /* #112: gap between hero band and first content on page-template pages (kontakt, referencje, polityka). */
}

/* Default constrained layout for page content blocks */
.adst-page-content > * {
	max-width: 1200px;
	margin-left: auto;
	margin-right: auto;
	padding-left: clamp(1rem, 3vw, 2rem);
	padding-right: clamp(1rem, 3vw, 2rem);
}

/* First block after hero - no extra margin (hero padding-bottom provides spacing) */
.adst-page-content > *:first-child {
	margin-top: 0;
}

/* Remove top margin from entry-content wrapper when it's the first child */
.adst-page-content .entry-content:first-child,
.adst-page-content > .entry-content {
	margin-top: 0 !important;
	margin-block-start: 0 !important;
}

/* Remove top margin from wp-block-post-content when it's first child or contains alignfull */
.adst-page-content.wp-block-post-content:first-child,
.adst-page-content.wp-block-post-content > .entry-content:first-child,
.adst-page-content.wp-block-post-content.is-layout-flow:first-child,
.adst-page-content.wp-block-post-content.is-layout-flow .entry-content:first-child {
	margin-top: 0 !important;
	margin-block-start: 0 !important;
}

/* Remove top margin from entry-content when it contains alignfull blocks */
.adst-page-content .entry-content > .alignfull:first-child,
.adst-page-content.wp-block-post-content.is-layout-flow .entry-content > .alignfull:first-child {
	margin-top: 0 !important;
	margin-block-start: 0 !important;
}

/* Specific fix for entry-content.alignfull.adst-page-content.wp-block-post-content.is-layout-flow */
.entry-content.alignfull.adst-page-content.wp-block-post-content.is-layout-flow,
.adst-page-content.wp-block-post-content.is-layout-flow.entry-content {
	margin-top: 0 !important;
	margin-block-start: 0 !important;
}

/* Section blocks as first child - their padding-top provides the spacing */
.adst-page-content > [class*="-section"]:first-child {
	margin-top: 0;
	padding-top: 0;
}

/* Ensure blocks have consistent vertical spacing */
.adst-page-content > * + * {
	margin-top: var(--space-between-blocks);
}

/* But don't add margin if the previous sibling is entry-content with alignfull */
.adst-page-content .entry-content + * {
	margin-top: 0;
}

/* Add top padding for custom block sections (pricing, services, team, etc.) */
.adst-page-content > .adst-pricing-section,
.adst-page-content > .adst-services-cards,
.adst-page-content > .adst-team-section,
.adst-page-content > .adst-features-columns,
.adst-page-content > .adst-testimonials,
.adst-page-content > .adst-program-section,
.adst-page-content > .adst-about,
.adst-page-content > .adst-process-steps {
	padding-top: var(--space-section);
	padding-bottom: var(--space-section);
}

/* Remove top padding from first section block - hero provides spacing */
.adst-page-content > .adst-pricing-section:first-child,
.adst-page-content > .adst-services-cards:first-child,
.adst-page-content > .adst-team-section:first-child,
.adst-page-content > .adst-features-columns:first-child,
.adst-page-content > .adst-testimonials:first-child,
.adst-page-content > .adst-program-section:first-child,
.adst-page-content > .adst-about:first-child,
.adst-page-content > .adst-process-steps:first-child {
	padding-top: 0;
	margin-top: 0;
}

/* Override WordPress core alignfull padding reset for our custom sections */
.adst-page-content.wp-block-post-content > .alignfull.adst-pricing-section,
.adst-page-content.wp-block-post-content > .alignfull[class*="-section"] {
	padding-top: var(--space-section);
	padding-bottom: var(--space-section);
}

/* Remove top padding from first alignfull section block */
.adst-page-content.wp-block-post-content > .alignfull.adst-pricing-section:first-child,
.adst-page-content.wp-block-post-content > .alignfull[class*="-section"]:first-child {
	padding-top: 0;
	margin-top: 0;
}

/* Ensure section headings inside blocks have proper top spacing */
.adst-page-content .adst-section-heading:not(.wp-block-ad-starter-section-heading) {
	margin-top: 0;
	padding-top: 0;
}

/* Full-width alignment support - breaks out of container */
.adst-page-content > .alignfull {
	max-width: none;
	width: 100vw;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
	padding-left: 0;
	padding-right: 0;
}

/* When custom blocks are set to full-width, expand their internal containers */
.adst-page-content > .alignfull .adst-container {
	max-width: none;
	width: 100%;
	padding-left: clamp(2rem, 5vw, 4rem);
	padding-right: clamp(2rem, 5vw, 4rem);
}

/* Wide alignment - wider than default but not full viewport */
.adst-page-content > .alignwide {
	max-width: min(1600px, 90vw);
}

/* Override alignwide constraint when block has adst-layout--full */
.adst-page-content > .alignwide.adst-layout--full,
.adst-page-content > .alignwide.adst-testimonials.adst-layout--full,
.adst-page-content > .alignwide.wp-block-ad-starter-testimonials.adst-layout--full,
.wp-block-post-content > .alignwide.adst-layout--full,
.wp-block-post-content > .alignwide.adst-testimonials.adst-layout--full,
.wp-block-post-content > .alignwide.wp-block-ad-starter-testimonials.adst-layout--full {
	max-width: none !important;
	width: 100vw !important;
	margin-left: calc(50% - 50vw) !important;
	margin-right: calc(50% - 50vw) !important;
	padding-left: 0 !important;
	padding-right: 0 !important;
}

/* Ensure custom blocks inherit full-width properly */
.adst-page-content > .alignfull .wp-block-group__inner-container,
.adst-page-content > .alignfull > div {
	/* Reset any internal constraints */
}

/* Maintain spacing for full-width blocks */
.adst-page-content > .alignfull {
	margin-top: clamp(2rem, 4vw, 3rem);
	margin-bottom: clamp(2rem, 4vw, 3rem);
}

@media (max-width: 768px) {
	.adst-page-content > * {
		padding-left: clamp(1rem, 3vw, 1.5rem);
		padding-right: clamp(1rem, 3vw, 1.5rem);
	}

	.adst-page-content > .alignfull {
		margin-left: calc(50% - 50vw);
		margin-right: calc(50% - 50vw);
	}

	/* Ensure alignwide with adst-layout--full breaks out on mobile */
	.adst-page-content > .alignwide.adst-layout--full {
		margin-left: calc(50% - 50vw);
		margin-right: calc(50% - 50vw);
		padding-left: 0;
		padding-right: 0;
	}
}

/* #147–148: native leadership and compact instructor compositions on Kadra. */
.adst-page-content > .vai-kadra-body {
	background: var(--wp--preset--color--background);
	margin-inline: 0;
	max-width: none;
	padding-inline: 0;
	width: 100%;
}

.vai-kadra-body > * {
	box-sizing: border-box;
	margin-inline: auto;
	width: min(calc(100% - (2 * var(--adst-container-inset))), 1080px); /* #147–148 approved canvas content track. */
}

/* #149: the approved bands alone escape #148's instructor content track. */
.vai-kadra-body > :is(.vai-instructor-band, .vai-instructor-cta) {
	width: 100%;
	margin-block: 0;
	padding: calc(var(--space-16) + var(--space-2)) var(--adst-container-inset);
	text-align: center;
}

.vai-kadra-body :is(.vai-instructor-band, .vai-instructor-cta) > * {
	max-width: 1080px; /* #149 Desktop canvas inner content track. */
	margin-inline: auto;
	margin-block: 0;
}

.vai-kadra-body :is(.vai-instructor-band, .vai-instructor-cta) h2 {
	font-size: var(--wp--preset--font-size--display);
	font-weight: var(--adst-font-black);
	letter-spacing: -0.03em;
	line-height: 1.25;
	color: inherit;
}

.vai-kadra-body .vai-instructor-band {
	color: var(--wp--preset--color--background);
}

.vai-kadra-body .vai-instructor-band > p {
	margin-block-start: var(--space-2);
	color: color-mix(in srgb, var(--wp--preset--color--background) 78%, transparent);
}

.vai-kadra-body :is(.vai-instructor-band, .vai-instructor-cta) > .wp-block-buttons {
	margin-block-start: calc(var(--space-6) + var(--space-1));
	gap: var(--space-3);
}

.vai-kadra-body .vai-instructor-band .wp-block-button__link {
	--btn-bg: transparent;
	--btn-text: var(--wp--preset--color--background);
	--btn-border: color-mix(in srgb, var(--wp--preset--color--background) 40%, transparent);
	--btn-hover-bg: var(--wp--preset--color--background);
	--btn-hover-text: var(--wp--preset--color--secondary);
	--btn-hover-border: var(--wp--preset--color--background);
	box-sizing: border-box;
	min-height: 44px; /* #149 ticket touch target, including phones. */
	padding: 0 var(--space-5);
	border-radius: var(--button-radius);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: var(--adst-font-semibold);
	letter-spacing: 1px; /* #149 approved canvas chip tracking. */
	gap: 0;
	white-space: nowrap;
}

/* The TT4 parent has its own higher-specificity outline hover. Keep this override local. */
.vai-kadra-body .vai-instructor-band .wp-block-button.is-style-outline > .wp-block-button__link:hover {
	color: var(--btn-hover-text);
	background: var(--btn-hover-bg);
	border-color: var(--btn-hover-border);
}

.vai-kadra-body .vai-chip-given {
	margin-inline-end: 0.35em;
}

.vai-kadra-body .vai-instructor-cta {
	padding-block: var(--space-20);
	color: var(--wp--preset--color--secondary);
	background-image: var(--adst-band-pattern);
	background-position: center;
	background-size: cover;
}

.vai-kadra-body .vai-instructor-cta h2 {
	font-size: var(--wp--preset--font-size--heading-medium);
}

.vai-kadra-body .vai-instructor-cta > .wp-block-buttons {
	gap: var(--space-8);
}

@media (max-width: 768px) { /* #149 reuses the leadership/instructor phone breakpoint. */
	.vai-kadra-body > :is(.vai-instructor-band, .vai-instructor-cta) {
		padding-block: var(--space-12);
	}

	.vai-kadra-body :is(.vai-instructor-band, .vai-instructor-cta) h2 {
		font-size: var(--wp--preset--font-size--heading-medium);
	}

	.vai-kadra-body .vai-instructor-cta {
		padding-block: calc(var(--space-12) + var(--space-2));
	}

	.vai-kadra-body .vai-instructor-cta h2 {
		font-size: var(--wp--preset--font-size--x-large);
	}

	.vai-kadra-body .vai-instructor-cta > .wp-block-buttons {
		flex-direction: column;
		gap: var(--space-5);
	}

	.vai-kadra-body .vai-instructor-cta .is-style-secondary,
	.vai-kadra-body .vai-instructor-cta .is-style-secondary > a {
		width: 100%;
		box-sizing: border-box;
	}
}

@media (width < 480px) { /* #149 ticket: surname-only chips below 480px. */
	.vai-kadra-body .vai-instructor-band > .wp-block-buttons {
		gap: var(--space-2);
	}

	.vai-kadra-body .vai-instructor-band .wp-block-button__link {
		padding-inline: calc(var(--space-3) + (var(--space-1) / 2));
	}

	/* Keep the full name accessible, while only the surname occupies visual space.
	 * ponytail: contentOnly button edits may drop this unregistered span; register a
	 * RichText format before enabling chip-label editing beyond the approved six names.
	 */
	.vai-kadra-body .vai-chip-given {
		position: absolute;
		margin: 0;
		width: 1px; /* Standard visually-hidden clip box, preserves the accessible name. */
		height: 1px; /* Standard visually-hidden clip box. */
		clip-path: inset(50%);
		overflow: hidden;
	}
}

/* #148 supersedes #65/#140's full-bleed profiles and #117's empty prose offsets. */
.vai-kadra-body > .vai-instructor {
	display: grid;
	grid-template-columns: 300px minmax(0, 1fr); /* #148 Desktop canvas square portrait column. */
	gap: calc(var(--space-12) + var(--space-2));
	margin-block: 0;
	padding-block: calc(var(--space-12) + var(--space-2)); /* #148: 56px keeps the full page below its 8000px AC. */
	background: var(--wp--preset--color--background);
}

.vai-kadra-body > .vai-instructor--alt {
	background: var(--wp--preset--color--background-alt);
}

.vai-instructor :where(.wp-block-group, figure, p, h3, details) {
	margin: 0;
	min-width: 0;
}

.vai-instructor__text {
	max-width: 660px; /* #148 Desktop canvas prose measure. */
}

.vai-instructor__portrait,
.vai-instructor__portrait img {
	display: block;
	width: 100%;
	aspect-ratio: 1;
	object-fit: cover;
}

.vai-instructor__initials {
	box-sizing: border-box;
	display: flex;
	align-items: flex-end;
	padding: var(--space-4);
	background: var(--wp--preset--color--primary) var(--adst-band-pattern) center / cover no-repeat;
	color: var(--wp--preset--color--secondary);
	font-family: var(--adst-font-heading);
	font-size: 102px; /* #148 Desktop canvas initials. */
	font-weight: var(--adst-font-black);
	letter-spacing: -0.03em;
	line-height: 1;
}

.vai-instructor__initials p {
	line-height: 1;
}

.vai-instructor__facts,
.vai-instructor__bio {
	margin-block-start: var(--space-6);
}

.vai-instructor__fact {
	padding-block: var(--space-3);
	border-top: 1px solid var(--wp--preset--color--light); /* #148 canvas hairlines. */
}

.vai-instructor__fact:last-child {
	border-bottom: 1px solid var(--wp--preset--color--light); /* #148 canvas hairlines. */
}

.vai-instructor__fact p:first-child,
.vai-instructor__identity p {
	font-family: var(--adst-font-heading);
	font-size: var(--wp--preset--font-size--utility);
	font-weight: var(--adst-font-bold);
	letter-spacing: 2px; /* #148 canvas fact-label tracking. */
	text-transform: uppercase;
	color: var(--adst-muted);
}

.vai-instructor__fact p + p {
	margin-block-start: calc(var(--space-1) / 2);
	font-size: var(--wp--preset--font-size--small);
	font-weight: var(--adst-font-semibold);
	color: var(--wp--preset--color--dark-text);
	line-height: 1.4;
}

.vai-instructor__identity p {
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: var(--adst-font-semibold);
	letter-spacing: 3px; /* #148 Desktop canvas role eyebrow. */
}

.vai-instructor__identity h3 {
	margin-block-start: calc(var(--space-3) / 2);
	font-size: 31px; /* #148 AC and Desktop canvas name size. */
	line-height: 1.3;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--dark-text);
}

.vai-instructor__bio > p,
.vai-instructor__more > p {
	color: var(--wp--preset--color--secondary-light);
	line-height: 1.75;
}

.vai-instructor__bio > * + *,
.vai-instructor__more > p {
	margin-block-start: var(--space-5);
}

/* Native open state changes the label even with JavaScript disabled.
 * ponytail: labels depend on unregistered summary spans; a contentOnly RichText edit drops
 * those tags and merges both labels. Before allowing summary edits, register the inline
 * format or generate the state labels outside the editable RichText summary.
 */
.vai-instructor__more:not([open]) .vai-more-open,
.vai-instructor__more[open] .vai-more-closed {
	display: none;
}

@media (max-width: 768px) { /* #148: reuse #147's leadership layout breakpoint. */
	.vai-kadra-body > .vai-instructor {
		grid-template-columns: var(--space-24) minmax(0, 1fr);
		gap: var(--space-5) var(--space-4);
		padding-block: var(--space-10);
	}

	.vai-instructor__aside,
	.vai-instructor__text {
		display: contents;
	}

	.vai-instructor__portrait {
		grid-area: 1 / 1;
	}

	.vai-instructor__identity {
		grid-area: 1 / 2;
		align-self: start; /* #148: even a one-line name stays within 40px of the portrait top. */
	}

	.vai-instructor__facts {
		grid-area: 2 / 1 / auto / -1;
	}

	.vai-instructor__bio {
		grid-area: 3 / 1 / auto / -1;
	}

	.vai-instructor__facts,
	.vai-instructor__bio {
		margin: 0;
	}

	.vai-instructor__initials {
		font-size: var(--wp--preset--font-size--heading-medium);
	}

	.vai-instructor__identity p {
		font-size: var(--wp--preset--font-size--utility);
		letter-spacing: 2px; /* #148 Mobile canvas role eyebrow. */
	}

	.vai-instructor__identity h3 {
		font-size: var(--wp--preset--font-size--lead);
		line-height: 1.2;
	}
}

/* #147: the approved leadership composition replaces #140's small shared photo. */
.vai-kadra-body > .vai-zarzad {
	padding-block: var(--space-20);
}

.vai-zarzad > * + * {
	margin-block-start: var(--space-12);
}

.vai-zarzad__heading > * {
	margin: 0;
}

.vai-zarzad__heading h2 {
	color: var(--wp--preset--color--dark-text);
	font-size: var(--wp--preset--font-size--display);
	font-weight: var(--adst-font-black);
	letter-spacing: -0.03em;
	line-height: 1.25;
}

.vai-zarzad__heading p {
	color: var(--adst-muted);
	margin-block-start: var(--space-2);
}

.vai-zarzad__photo img {
	display: block;
	width: 100%;
	height: 520px;
	object-fit: cover;
	object-position: center 25%; /* The uncropped source needs extra headroom for Maciej. */
	border-radius: var(--adst-radius);
}

.vai-zarzad .vai-founders {
	gap: var(--space-16);
	margin-bottom: 0;
}

.vai-founder > * + * {
	margin-block-start: var(--space-5);
}

.vai-founder__header {
	display: flex;
	align-items: center;
	gap: var(--space-5);
}

.vai-founder__portrait {
	flex: 0 0 112px;
	margin: 0;
}

.vai-founder__portrait img {
	display: block;
	width: 112px;
	height: 112px;
	object-fit: cover;
	border-radius: var(--adst-radius);
}

.vai-founder__identity {
	min-width: 0;
	margin: 0;
}

.vai-founder__identity h3 {
	margin: 0;
	color: var(--wp--preset--color--dark-text);
	font-size: var(--wp--preset--font-size--x-large);
	line-height: 1.2;
	letter-spacing: -0.02em;
}

.vai-founder__identity p {
	margin-block-start: var(--space-1);
	color: var(--adst-muted);
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.5;
}

.vai-founder__fact {
	padding-block: var(--space-3);
	border-block: 1px solid var(--wp--preset--color--light);
}

.vai-founder__fact p {
	margin: 0;
	color: var(--wp--preset--color--dark-text);
	font-weight: var(--adst-font-semibold);
}

.vai-founder__fact p:first-child {
	font-family: var(--adst-font-heading);
	font-size: var(--wp--preset--font-size--utility);
	font-weight: var(--adst-font-bold);
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--adst-muted);
}

.vai-founder > p,
.vai-founder__more > p {
	color: var(--wp--preset--color--secondary-light);
	line-height: 1.75;
}

.vai-founder__more > p + p {
	margin-block-start: var(--space-5);
}

:is(.vai-founder__more, .vai-instructor__more) > summary {
	min-height: 44px; /* #147–148 canvas disclosure touch target. */
	align-content: center;
	width: fit-content;
	font-family: var(--adst-font-heading);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: var(--adst-font-bold);
	letter-spacing: 2px; /* #147–148 canvas disclosure tracking. */
	text-transform: uppercase;
	border-bottom: 2px solid var(--wp--preset--color--primary); /* #147–148 canvas disclosure underline. */
	cursor: pointer;
}

:is(.vai-founder__more, .vai-instructor__more) > summary:hover {
	background: var(--wp--preset--color--background-alt);
}

:is(.vai-founder__more, .vai-instructor__more) > summary:focus-visible {
	outline: 2px solid var(--wp--preset--color--dark-text); /* #147 keyboard-focus treatment, reused by #148. */
	outline-offset: 4px; /* #147 focus clearance. */
}

@media (min-width: 769px) {
	.vai-founder__more > summary {
		display: none;
	}

	.vai-founder__more > p:first-of-type {
		margin-block-start: 0;
	}
}

@media (max-width: 768px) {
	.vai-kadra-body > .vai-zarzad {
		padding-block: calc(var(--space-12) + var(--space-2));
	}

	.vai-zarzad > * + * {
		margin-block-start: var(--space-8);
	}

	.vai-zarzad__heading h2 {
		font-size: var(--wp--preset--font-size--heading-medium);
	}

	.vai-zarzad__heading p {
		font-size: var(--wp--preset--font-size--small);
	}

	.vai-zarzad__photo img {
		height: 260px;
	}

	.vai-zarzad .vai-founders {
		flex-direction: column;
		gap: var(--space-8);
	}

	.vai-founder > * + *,
	.vai-founder__more > p + p {
		margin-block-start: var(--space-4);
	}

	.vai-founder__header {
		gap: var(--space-4);
	}

	.vai-founder__portrait {
		flex-basis: 88px;
	}

	.vai-founder__portrait img {
		width: 88px;
		height: 88px;
	}

	.vai-founder__identity h3 {
		font-size: var(--wp--preset--font-size--lead);
	}
}

@media (max-width: 768px) {
	.adst-page-content > .vai-kadra-body {
		padding-inline: 0;
	}

}

/*
 * Program roadmap (#87): a native group of paragraphs drawn as prod's centred timeline.
 * Receipts from prod /0atpl-os/ at 1440 (audit/2026-09-01-133749/screenshots): title 40px, 2px dark
 * line, 28px white dots, 150px between steps, labels 18px bold uppercase 45px off the line, band padding
 * 120px top. Main steps sit left of the line, exam steps right in white.
 */
.vai-timeline {
    box-sizing: border-box;
    padding: 120px var(--space-4) var(--space-16);
    color: var(--wp--preset--color--secondary);
    text-align: center;
}

.adst-page-content > .wp-block-group > .vai-timeline {
    width: 100vw;
    max-width: 100vw;
    margin-inline: calc(50% - 50vw); /* Full-bleed band inside the 1200px default-template track, like .wp-block-post-content > .alignfull. */
}

.adst-section-layout .adst-page-content > .wp-block-group > .vai-timeline {
    width: 100%;
    max-width: none;
    margin-inline: 0; /* Section pages keep the band inside the content column. */
}

.vai-timeline__title {
    margin: 0 0 var(--space-16);
    font-family: var(--wp--preset--font-family--montserrat);
    font-size: var(--wp--preset--font-size--display);
    font-weight: var(--adst-font-bold);
    line-height: 1.2;
    text-align: center;
}

.vai-timeline__steps {
    position: relative;
    max-width: 1080px;
    margin-inline: auto;
}

.vai-timeline__steps::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 50%;
    width: 2px;
    margin-left: -1px;
    background: var(--wp--preset--color--secondary);
}

.vai-timeline__step {
    position: relative;
    box-sizing: border-box;
    width: 50%;
    margin: 0 0 122px; /* 150px step pitch minus the 28px dot row (prod). */
    padding-right: 45px;
    font-family: var(--wp--preset--font-family--montserrat);
    font-size: 18px;
    font-weight: var(--adst-font-bold);
    line-height: 28px; /* One line = the dot's height, so the dot centres on the label. */
    text-align: right;
    text-transform: uppercase;
}

.vai-timeline__step:last-child {
    margin-bottom: 0;
}

.vai-timeline__step::before {
    content: "";
    position: absolute;
    top: 0;
    right: -14px;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--wp--preset--color--secondary); /* #109: charcoal on yellow restores 9.43:1 non-text contrast. */
}

.vai-timeline__step--right {
    margin-left: 50%;
    padding-right: 0;
    padding-left: 45px;
    text-align: left;
}

.vai-timeline__step--right::before {
    right: auto;
    left: -14px;
}

.vai-timeline__step--exam {
    /* Prod paints exam labels white on the yellow band (1.46:1); charcoal keeps the same emphasis at 9.43:1
       (ticket #33 contrast calculations). Flip back to white only with the #38 white-on-yellow sign-off. */
    color: var(--wp--preset--color--secondary);
}

.vai-timeline__note {
    width: 50%;
    margin: -110px 0 122px; /* Pulls the note into the 122px step gap so it starts 12px under its label (150px prod pitch, see __step). */
    padding-right: 45px;
    font-size: var(--wp--preset--font-size--medium);
    line-height: 1.5;
    text-align: right;
}

.vai-timeline__note--right {
    margin-left: 50%;
    padding-right: 0;
    padding-left: 45px;
    text-align: left;
}

/* SYMULATORY (the widest fleet title) needs ~300px at the 40px display size and broke mid-word in the
   274px prose column at 375; 9vw = 33.75px there, which fits (#99 N1). Explicit size presets keep their value. */
@media (max-width: 781px) {
    .vai-media-prose__prose > h2.wp-block-heading:not([class*="font-size"]) {
        font-size: min(var(--wp--preset--font-size--display), 9vw);
    }
}

@media (max-width: 781px) {
    /* Prod mobile stacks everything in one column to the right of the line. */
    .vai-timeline {
        padding-top: var(--space-16);
    }

    .vai-timeline__steps::before {
        left: 14px;
        margin-left: 0;
    }

    .vai-timeline__step,
    .vai-timeline__step--right,
    .vai-timeline__note,
    .vai-timeline__note--right {
        width: 100%;
        margin-left: 0;
        padding-right: 0;
        padding-left: 45px;
        text-align: left;
    }

    .vai-timeline__step {
        margin-bottom: var(--space-8);
    }

    .vai-timeline__step::before,
    .vai-timeline__step--right::before {
        right: auto;
        left: 0;
    }

    .vai-timeline__note {
        margin-top: calc(-1 * var(--space-8) + var(--space-2)); /* Single column: the 32px step gap minus the same 12px label clearance as desktop. */
    }
}

/*
 * Cropped gallery tiles are 4:3 (ADR 0002 amendment via #72/#73). Core sizes cropped images with
 * height:100% inside a flex figure, which collapses to 0 once a caption is in normal flow (#89) and
 * lets tiles stretch to the tallest image in the row; an explicit ratio removes both.
 */
.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image:not(#individual-image) img {
    /* :not(#individual-image) mirrors core's own specificity hack; without it core's height:100% wins. */
    flex: 0 0 auto; /* core's flex-basis 0% would zero the height once it is no longer 100%. */
    height: auto;
    aspect-ratio: 4 / 3;
    object-fit: cover;
}

/*
 * Gallery captions sit under the tile like prod's fleet galleries (#89), not as core's white-on-gradient
 * overlay. Receipts: prod /cruiser/ at 1440 — 18px Montserrat regular, dark text, left-aligned, 16px below the image.
 */
.wp-block-gallery.has-nested-images figure.wp-block-image figcaption.wp-element-caption {
    position: static;
    margin: var(--space-4) 0 0;
    padding: 0;
    background: none;
    color: var(--wp--preset--color--dark-text);
    font-family: var(--wp--preset--font-family--montserrat);
    font-size: 18px;
    font-weight: var(--adst-font-regular, 400);
    line-height: 1.4;
    text-align: left;
    text-shadow: none;
}

/* Core lets figures in an incomplete last row grow to fill it; with the 4:3 lock above that made the
   trailing tiles bigger than their siblings (#97). Same #individual-image specificity hack as core. */
.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image:not(#individual-image) {
    flex-grow: 0;
}

/* Core derives tile width from --wp--style--unstable-gallery-gap, which falls through to block-gap (2.5rem)
   while the rendered gap is theme.json's core/gallery blockGap (spacing 30). Feed the chain the same token so
   width math and the real gap agree; without it flex-grow: 0 leaves a 96px hole per row at 1440. */
.wp-block-gallery.has-nested-images {
    --wp--style--gallery-gap-default: var(--wp--preset--spacing--30);
}

/* #169: the decorative Cruiser drifts on its own view timeline between the two home videos.
   The 767px phone breakpoint preserves the measured Divi motion, matching the JS fallback. */
.adst-aircraft-drift {
    overflow: hidden;
    overflow: clip;
    background: transparent;
    /* The strip paints over the band below so the aircraft can rest on it. */
    position: relative;
    z-index: 1;
    /* The drift is expressed in cqw, so it is measured against the strip's real
       content width. vw would include the scrollbar and push the aircraft a few
       pixels further off-page than asked. */
    container-type: inline-size;
    /* Kill the 28px block gap on both seams: the strip meets the section above
       directly and is pulled into the band below. min(1080px, 100%) is the
       figure's own width expression, so the overlap tracks the image scale at
       every viewport. Measured on the source alpha: the solid aircraft ends at
       row 507 and rows 508-596 are cast shadow only, so pulling the band up by
       128 of 1080 image-widths puts its edge at row 490 - the wheels cross onto
       the band and the shadow falls on it. */
    margin-block-start: 0;
    margin-block-end: calc(min(1080px, 100%) * -0.1185);
}

@supports (animation-timeline: view()) {
    .adst-aircraft-drift {
        /* Drive the drift off the strip's box, not the image's. The image now
           overhangs the strip on both edges, so an anonymous view() on the image
           would progress on a different box than the JS fallback measures. */
        view-timeline-name: --adst-aircraft-drift;
    }
}

.adst-aircraft-drift + * {
    margin-block-start: 0;
}

.adst-aircraft-drift__figure {
    /* flow-root keeps the image's negative margins from collapsing out of the figure. */
    display: flow-root;
    width: min(1080px, 100%);
    margin: 0 auto;
}

.adst-aircraft-drift__figure img {
    display: block;
    width: 100%;
    height: auto;
    transform: translateX(0);
    /* The source carries 149 of 1080 image-widths of empty alpha above the
       aircraft (measured on the alpha bounding box). Crop 125 of it and keep 24
       as clearance from the sticky header. Percentage margins here resolve
       against the figure, which is the image's rendered width, so the crop
       holds at every viewport instead of only at 1080. */
    margin-top: -11.6%;
}

/* 50cqw is half the strip's width, so the aircraft's centre sits exactly on the
   page edge at both ends: it enters with its right half off-page and leaves with
   its left half off-page, fully visible as the strip passes mid-viewport. */
@keyframes adst-aircraft-drift {
    from { transform: translateX(50cqw); }
    to { transform: translateX(-50cqw); }
}

@supports (animation-timeline: view()) {
    .adst-aircraft-drift__figure img {
        animation: adst-aircraft-drift 1ms linear both;
        animation-timeline: --adst-aircraft-drift;
        animation-range: cover 0% cover 100%;
    }

    @media (max-width: 767px) {
        .adst-aircraft-drift__figure img {
            animation-range: cover 25% cover 75%;
        }
    }
}

@media (prefers-reduced-motion: reduce) {
    .adst-aircraft-drift__figure img {
        animation: none !important;
        transform: translateX(0) !important;
    }
}
