/*
Theme Name: Absolute 2026
Theme URI: 
Author: Don Schnitzius
Author URI: https://donschnitzius.com/
Description: An opinionated portfolio block theme with complete starter pages, reusable patterns, automatic light and dark colors, and optional contact forms.
Requires at least: 7.0
Tested up to: 7.0
Requires PHP: 8.3
Version: 1.2.1
License: GNU General Public License v2.0 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: absolute-2026
Domain Path: /languages
Tags: block-patterns, block-styles, custom-colors, custom-logo, custom-menu, editor-style, featured-images, full-site-editing, portfolio, threaded-comments, translation-ready, wide-blocks
*/

/* Global defaults
   ========================================================================== */

html {
    scroll-behavior: smooth;
}

:root {
    color-scheme: light dark;
}

body {
    font-optical-sizing: auto;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}

.wp-site-blocks {
    display: flex;
    min-height: 100vh;
    min-height: 100dvh;
    flex-direction: column;
}

.wp-site-blocks>main {
    flex: 1 0 auto;
}

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }
}

/* Reveal animations
   ========================================================================== */

.reveal-enabled .wp-block-post-content .wp-block-group.is-style-section:not(.no-reveal),
.reveal-enabled .wp-block-post-content .wp-block-group.is-style-section-divider:not(.no-reveal),
.reveal-enabled .has-reveal:not(.no-reveal),
.reveal-enabled .reveal-target {
    opacity: 0;
    transition: opacity 333ms ease-in;
}

.reveal-enabled .wp-block-post-content .wp-block-group.is-style-section.is-visible,
.reveal-enabled .wp-block-post-content .wp-block-group.is-style-section-divider.is-visible,
.reveal-enabled .has-reveal.is-visible,
.reveal-enabled .reveal-target.is-visible {
    opacity: 1;
}

.reveal-enabled .reveal-target h1,
.reveal-enabled .reveal-target h2 {
    opacity: 0;
}

.reveal-enabled .reveal-target.is-visible h1 {
    animation: absolute-2026-fade-in 700ms ease-in 300ms forwards;
}

.reveal-enabled .reveal-target.is-visible h2 {
    animation: absolute-2026-fade-in 900ms ease-in 100ms forwards;
}

@keyframes absolute-2026-fade-in {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

@media (prefers-reduced-motion: reduce) {

    .reveal-enabled .wp-block-post-content .wp-block-group.is-style-section:not(.no-reveal),
    .reveal-enabled .wp-block-post-content .wp-block-group.is-style-section-divider:not(.no-reveal),
    .reveal-enabled .has-reveal:not(.no-reveal),
    .reveal-enabled .reveal-target,
    .reveal-enabled .reveal-target h1,
    .reveal-enabled .reveal-target h2 {
        opacity: 1;
        animation: none;
        transition: none;
    }
}

/* Site header
   ========================================================================== */

header.wp-block-template-part {
    position: sticky;
    top: 0;
    z-index: 100;
}

@supports (background: color-mix(in srgb, white 50%, transparent)) {
    .wp-block-group.site-header {
        background-color: color-mix(in srgb, var(--wp--preset--color--surface-soft) 86%, transparent) !important;
        -webkit-backdrop-filter: blur(16px);
        backdrop-filter: blur(16px);
    }

    @media (max-width: 599px) {
        .wp-block-group.site-header {
            -webkit-backdrop-filter: none;
            backdrop-filter: none;
        }
    }
}

.wp-block-group.footer-copyright {
    column-gap: 1ch;
    row-gap: 0;
}

/* Links and buttons
   ========================================================================== */

.wp-block-post-content :is(.wp-block-paragraph, .wp-block-list, .wp-block-quote) a {
    color: inherit;
    text-decoration: underline;
    text-underline-offset: 3px;
    transition: color 160ms ease, text-underline-offset 160ms ease;
}

.wp-block-post-content :is(.wp-block-paragraph, .wp-block-list, .wp-block-quote) a:hover {
    color: var(--wp--preset--color--accent-hover);
    text-underline-offset: 6px;
}

.wp-block-navigation .wp-block-navigation-item__content.wp-block-navigation-item__content {
    transition: color 160ms ease;
}

.wp-block-navigation .wp-block-navigation-item__content.wp-block-navigation-item__content:hover {
    color: var(--wp--preset--color--accent-hover);
}

.wp-block-button:not(.is-style-section-link) .wp-element-button {
    transition: transform 160ms ease, background-color 160ms ease, border-color 160ms ease, color 160ms ease;
}

.wp-block-button:not(.is-style-section-link) .wp-element-button:hover {
    transform: translateY(-1px);
}

.wp-block-button:not(.is-style-section-link) .wp-element-button:active {
    transform: translateY(0) scale(0.95);
}

code:not(pre code) {
    padding-inline: 0.25em;
    border-radius: var(--wp--preset--border-radius--small);
    background: var(--wp--preset--color--surface-soft);
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
    font-size: 0.9em;
}

.wp-block-search__input {
    border-radius: var(--wp--preset--border-radius--small);
}

pre,
.wp-block-preformatted {
    max-width: 100%;
    overflow-x: auto;
}

figure.wp-caption {
    max-width: 100%;
}

figure.wp-caption img {
    max-width: 100%;
    height: auto;
}

/* Paragraph styles
   ========================================================================== */

p.is-style-eyebrow {
    display: flex;
    align-items: center;
    gap: var(--wp--preset--spacing--050);
    width: fit-content;
}

p.is-style-eyebrow::before {
    width: var(--wp--preset--spacing--050);
    height: var(--wp--preset--spacing--050);
    border-radius: var(--wp--preset--border-radius--pill);
    background: var(--wp--preset--color--accent);
    content: "";
    flex: 0 0 auto;
}

p.is-style-callout {
    width: min(100%, 1024px);
    margin-block: 0;
    margin-inline: auto;
    text-align: center;
}

/* Button styles
   ========================================================================== */

.wp-block-button.is-style-section-link .wp-block-button__link {
    padding: var(--wp--preset--spacing--050) var(--wp--preset--spacing--100);
    border: 1px solid var(--wp--preset--color--border);
    border-radius: var(--wp--preset--border-radius--pill);
    background: var(--wp--preset--color--surface-soft);
    color: var(--wp--preset--color--muted);
    font-size: var(--wp--preset--font-size--abs-eyebrow);
    font-weight: 700;
    text-decoration: none;
    transition: background-color 160ms ease, border-color 160ms ease, color 160ms ease;
}

.wp-block-button.is-style-section-link .wp-block-button__link:hover {
    border-color: var(--wp--preset--color--accent);
    background: var(--wp--preset--color--accent-soft);
    color: var(--wp--preset--color--text);
}

/* Section styles
   ========================================================================== */

.wp-block-group.is-style-section,
.wp-block-group.is-style-section-divider {
    padding-block: var(--wp--preset--spacing--800);
}

.wp-block-group.is-style-section-divider {
    border-block-start: 1px solid var(--wp--preset--color--border);
}

/* Comments styles
   ========================================================================== */

body.page .wp-block-comments {
    border-block-start: 1px solid var(--wp--preset--color--border);
    margin-block-start: 0;
    padding-block-end: var(--wp--preset--spacing--800);
}

.front-page>.wp-block-comments,
.full-width>.wp-block-comments {
    box-sizing: border-box;
    width: 100%;
    max-width: var(--wp--style--global--wide-size);
    margin-inline: auto;
    padding-inline: var(--wp--preset--spacing--150);
}

.wp-block-comment-author-name a,
.wp-block-comment-date a,
.wp-block-comment-edit-link a,
.wp-block-comment-reply-link a {
    color: var(--wp--preset--color--muted-light);
}

.wp-block-comment-content a,
.wp-block-post-comments-form a {
    color: var(--wp--preset--color--accent);
}

.wp-block-comment-author-name a:is(:hover, :active, :focus-visible),
.wp-block-comment-date a:is(:hover, :active, :focus-visible),
.wp-block-comment-edit-link a:is(:hover, :active, :focus-visible),
.wp-block-comment-reply-link a:is(:hover, :active, :focus-visible),
.wp-block-comment-content a:is(:hover, :active, :focus-visible),
.wp-block-post-comments-form a:is(:hover, :active, :focus-visible) {
    color: var(--wp--preset--color--accent-hover);
}

.wp-block-comment-template~.wp-block-post-comments-form,
.wp-block-comment-template li.comment {
    margin-block-start: var(--wp--preset--spacing--150);
    padding-block-start: var(--wp--preset--spacing--150);
    border-block-start: 1px solid var(--wp--preset--color--border);
}

.wp-block-comment-template li.comment .wp-block-group,
.wp-block-comment-template li.comment .wp-block-group>div {
    margin-block-start: 0;
}

.wp-block-comment-template li.comment .wp-block-comment-content p {
    margin-block: var(--wp--preset--spacing--100);
}

/* Card styles
   ========================================================================== */

.wp-block-group.is-style-card {
    height: 100%;
    overflow: hidden;
    transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease;
}

.wp-block-group.is-style-card>.wp-block-image,
.wp-block-group.is-style-card>.wp-block-image img {
    width: 100%;
}

.wp-block-group.is-style-card:hover {
    border-color: var(--wp--preset--color--button-outline);
    box-shadow: var(--wp--preset--shadow--soft);
    transform: translateY(-3px);
}

.wp-block-group.is-style-card .wp-block-heading>a:link,
.wp-block-group.is-style-card .wp-block-heading>a:visited {
    color: var(--wp--preset--color--heading-3);
}

.wp-block-group.is-style-card .wp-block-heading>a:hover {
    color: var(--wp--preset--color--accent-hover);
}

.wp-block-group.is-style-card:has(.wp-block-heading a:focus-visible) {
    border-color: var(--wp--preset--color--focus);
    box-shadow: var(--wp--preset--shadow--soft);
    outline: 3px solid var(--wp--preset--color--focus);
    outline-offset: 4px;
}

.wp-block-group.is-style-card .wp-block-heading a:focus-visible {
    outline: none;
}

.wp-block-group.is-style-card:has(.wp-block-heading a:active) {
    border-color: var(--wp--preset--color--accent);
}

/* Supporting card styles
   ========================================================================== */

.wp-block-group.is-style-supporting-card {
    overflow: hidden;
}

.wp-block-group.is-style-supporting-card>.wp-block-image,
.wp-block-group.is-style-supporting-card>.wp-block-image img {
    width: 100%;
}

.wp-block-group.is-style-supporting-card>.supporting-card-media {
    box-sizing: border-box;
    border-block-start: 1px solid var(--wp--preset--color--border);
    padding: var(--wp--preset--spacing--100);
}

.wp-block-group.is-style-supporting-card>.supporting-card-media img {
    border-radius: 0 0 0.75rem 0.75rem;
}

/* Card grid
   ========================================================================== */

.wp-block-columns.card-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

/* Two columns: image right
   ========================================================================== */

.wp-block-group.two-columns-image-right {
    display: grid;
    grid-template-areas:
        "intro media"
        "lower media";
    grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
    grid-template-rows: auto 1fr;
    column-gap: var(--wp--preset--spacing--350);
    row-gap: var(--wp--preset--spacing--100);
}

.wp-block-group.two-columns-image-right>* {
    margin-block-start: 0;
}

.two-columns-image-right__intro {
    align-self: start;
    grid-area: intro;
}

.two-columns-image-right__media {
    align-self: start;
    grid-area: media;
}

.two-columns-image-right__lower {
    align-self: start;
    grid-area: lower;
}

.wp-block-group.two-columns-image-right>.two-columns-image-right__media {
    box-sizing: border-box;
    width: 100%;
}

.wp-block-group.two-columns-image-right>.two-columns-image-right__media img {
    width: 100%;
}

/* Two columns: image left
   ========================================================================== */

.wp-block-group.two-columns-image-left {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
    align-items: start;
    column-gap: var(--wp--preset--spacing--350);
}

.wp-block-group.two-columns-image-left>* {
    margin-block-start: 0;
}

.two-columns-image-left__media,
.two-columns-image-left__content {
    align-self: start;
}

.two-columns-image-left__content {
    position: sticky;
    top: 7rem;
}

.wp-block-group.two-columns-image-left>.two-columns-image-left__media {
    box-sizing: border-box;
    width: 100%;
}

.wp-block-group.two-columns-image-left>.two-columns-image-left__media img {
    width: 100%;
}

/* Two columns: text
   ========================================================================== */

.wp-block-group.two-columns-text {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
    align-items: last baseline;
    column-gap: var(--wp--preset--spacing--350);
}

.wp-block-group.two-columns-text>* {
    margin-block-start: 0;
}

.two-columns-text__heading .wp-block-heading,
.two-columns-long-text__heading {
    margin-block-end: 0;
    color: var(--wp--preset--color--muted-light);
    font-weight: 450;
    line-height: 1.2;
    text-align: end;
    text-transform: none;
}

/* Contact form
   ========================================================================== */

.wp-block-group.contact-form-card {
    box-sizing: border-box;
    border: 1px solid var(--wp--preset--color--border);
    border-radius: var(--wp--preset--border-radius--large);
    background: var(--wp--preset--color--surface);
    box-shadow: var(--wp--preset--shadow--soft);
    padding: var(--wp--preset--spacing--200);
}

.contact-form-section .wp-block-absolute-contact-form .absolute-contact-form__field label {
    margin-block-end: var(--wp--preset--spacing--050);
    color: var(--wp--preset--color--heading-3);
    font-family: var(--wp--preset--font-family--big-shoulders);
    font-size: var(--wp--preset--font-size--abs-lead);
    font-weight: 550;
    letter-spacing: 0;
}

.contact-form-section .wp-block-absolute-contact-form :is(input, textarea) {
    border: 0;
    border-radius: var(--wp--preset--border-radius--small);
    background: var(--wp--preset--color--field-background);
    color: var(--wp--preset--color--text);
}

.contact-form-section .wp-block-absolute-contact-form :is(input, textarea)::placeholder {
    color: var(--wp--preset--color--muted-light);
    opacity: 1;
}

.contact-form-section .wp-block-absolute-contact-form :is(input, textarea):focus {
    outline: 2px solid var(--wp--preset--color--focus);
    outline-offset: 2px;
}

.contact-form-section .wp-block-absolute-contact-form :is(input, textarea):focus-visible {
    outline: 3px solid var(--wp--preset--color--accent);
    outline-offset: 4px;
}

.contact-form-section .absolute-contact-form__submit {
    border: 0;
    border-radius: var(--wp--preset--border-radius--pill);
    background: var(--wp--preset--color--accent);
    color: var(--wp--preset--color--button-text);
    font: inherit;
    font-weight: 700;
    min-height: 3rem;
    padding-inline: var(--wp--preset--spacing--150);
    transition: transform 160ms ease, background-color 160ms ease, color 160ms ease;
}

.contact-form-section .absolute-contact-form__submit:hover:not(:disabled) {
    background: var(--wp--preset--color--accent-hover);
    transform: translateY(-1px);
}

.contact-form-section .absolute-contact-form__submit:active:not(:disabled) {
    transform: translateY(0) scale(0.95);
}

.contact-form-section .absolute-contact-form__status {
    color: var(--wp--preset--color--accent);
    font-weight: 700;
}

.contact-form-section .absolute-contact-form__success h2 {
    max-width: 15ch;
    margin-inline: auto;
    margin-block-end: 0;
}

.contact-form-section .absolute-contact-form__success .is-style-lead {
    margin-block-end: 0;
}

/* Two columns: long text
   ========================================================================== */

.wp-block-group.two-columns-long-text {
    display: grid;
    grid-template-areas:
        "eyebrow ."
        "heading body";
    grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
    column-gap: var(--wp--preset--spacing--350);
    row-gap: var(--wp--preset--spacing--100);
}

.wp-block-group.two-columns-long-text>* {
    margin-block-start: 0;
}

.two-columns-long-text__eyebrow {
    grid-area: eyebrow;
}

.two-columns-long-text__heading {
    align-self: start;
    grid-area: heading;
}

.two-columns-long-text__body {
    align-self: start;
    grid-area: body;
    padding-block-start: clamp(44px, calc(10.86px + 3.45vw), 55px);
}

/* Two columns: image with supporting cards
   ========================================================================== */

.wp-block-group.two-columns-image-supporting {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
    column-gap: var(--wp--preset--spacing--350);
}

.wp-block-group.two-columns-image-supporting>* {
    margin-block-start: 0;
}

.two-columns-image-supporting__content {
    align-self: start;
    position: sticky;
    top: 7rem;
}

.wp-block-group.two-columns-image-supporting>.two-columns-image-supporting__media>.wp-block-image {
    box-sizing: border-box;
    width: 100%;
}

.wp-block-group.two-columns-image-supporting>.two-columns-image-supporting__media>.wp-block-image img {
    width: 100%;
}

/* Two columns: media grid
   ========================================================================== */

.wp-block-group.two-columns-media-grid {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
    align-items: start;
    column-gap: var(--wp--preset--spacing--350);
}

.wp-block-group.two-columns-media-grid>* {
    margin-block-start: 0;
}

.two-columns-media-grid__content {
    align-self: start;
    position: sticky;
    top: 7rem;
}

.wp-block-columns:is(.is-style-media-grid-1,
    .is-style-media-grid-2,
    .is-style-media-grid-3,
    .is-style-media-grid-4) {
    display: grid;
    gap: var(--wp--preset--spacing--100);
}

.wp-block-columns.is-style-media-grid-1 {
    grid-template-columns: minmax(0, 1fr);
}

.wp-block-columns.is-style-media-grid-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.wp-block-columns.is-style-media-grid-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.wp-block-columns.is-style-media-grid-4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.wp-block-columns:is(.is-style-media-grid-1,
    .is-style-media-grid-2,
    .is-style-media-grid-3,
    .is-style-media-grid-4)>.wp-block-column {
    min-width: 0;
    margin-block-start: 0;
}

.wp-block-columns:is(.is-style-media-grid-1,
    .is-style-media-grid-2,
    .is-style-media-grid-3,
    .is-style-media-grid-4) .wp-block-image,
.wp-block-columns:is(.is-style-media-grid-1,
    .is-style-media-grid-2,
    .is-style-media-grid-3,
    .is-style-media-grid-4) .wp-block-image img {
    width: 100%;
}

.wp-block-columns:is(.is-style-media-grid-1,
    .is-style-media-grid-2,
    .is-style-media-grid-3,
    .is-style-media-grid-4) .wp-block-image img {
    border: 1px solid var(--wp--preset--color--border);
    background: var(--wp--preset--color--surface);
    box-shadow: var(--wp--preset--shadow--soft);
    object-fit: cover;
}

.wp-block-columns.is-style-media-grid-1 .wp-block-image img {
    aspect-ratio: 5 / 4;
}

.wp-block-columns.is-style-media-grid-2 .wp-block-image img {
    aspect-ratio: 3 / 2;
}

.wp-block-columns.is-style-media-grid-3 .wp-block-image img {
    aspect-ratio: 1;
}

.wp-block-columns.is-style-media-grid-4 .wp-block-image img {
    aspect-ratio: 9 / 16;
}

/* Two columns: image with numbered details
   ========================================================================== */

.wp-block-group.two-columns-image-numbered-details {
    display: grid;
    grid-template-areas:
        "eyebrow heading"
        "media content";
    grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
    column-gap: var(--wp--preset--spacing--250);
    row-gap: var(--wp--preset--spacing--150);
}

.wp-block-group.two-columns-image-numbered-details>* {
    margin-block-start: 0;
}

.two-columns-image-numbered-details__eyebrow {
    display: flex;
    grid-area: eyebrow;
    align-items: start;
    justify-content: end;
}

.two-columns-image-numbered-details__eyebrow .is-style-eyebrow {
    margin-block-start: var(--wp--preset--spacing--050);
}

.two-columns-image-numbered-details__heading {
    grid-area: heading;
}

.two-columns-image-numbered-details__heading .wp-block-heading {
    margin-block-end: 0;
    border-block-end: 1px solid var(--wp--preset--color--border);
    padding-block-end: var(--wp--preset--spacing--100);
}

.two-columns-image-numbered-details__media {
    align-self: start;
    grid-area: media;
}

.wp-block-group.two-columns-image-numbered-details>.two-columns-image-numbered-details__media {
    box-sizing: border-box;
    width: 100%;
}

.wp-block-group.two-columns-image-numbered-details>.two-columns-image-numbered-details__media img {
    width: 100%;
}

.two-columns-image-numbered-details__content {
    grid-area: content;
}

.two-columns-image-numbered-details__point {
    margin-block-end: 0;
    border-block-end: 1px solid var(--wp--preset--color--border);
    padding-block-end: var(--wp--preset--spacing--100);
}

.two-columns-image-numbered-details__point:last-child {
    padding-block-end: var(--wp--preset--spacing--250);
}

.two-columns-image-numbered-details__point-label {
    display: inline-flex;
    float: left;
    align-items: center;
    justify-content: center;
    width: 3rem;
    height: 3rem;
    margin-inline-end: var(--wp--preset--spacing--050);
    border-radius: 0.375rem;
    background: var(--wp--preset--color--accent);
    padding: 0;
    aspect-ratio: 1;
    box-sizing: border-box;
    color: var(--wp--preset--color--button-text);
    font-family: var(--wp--preset--font-family--big-shoulders);
    font-size: var(--wp--preset--font-size--abs-lead);
    font-weight: 900;
    letter-spacing: 0.035em;
    line-height: 1;
}

/* Featured panels
   ========================================================================== */

.wp-block-group.featured-panels {
    display: grid;
    grid-template-columns: minmax(0, 0.8fr) repeat(2, minmax(0, 1fr));
    align-items: stretch;
    gap: var(--wp--preset--spacing--150);
}

.wp-block-group.featured-panels>* {
    margin-block-start: 0;
}

.featured-panels__intro {
    align-self: start;
    padding-inline-end: var(--wp--preset--spacing--150);
}

.wp-block-group.featured-panel-card {
    display: flex;
    flex-direction: column;
    padding: var(--wp--preset--spacing--200);
    background: linear-gradient(145deg, var(--wp--preset--color--surface), var(--wp--preset--color--surface-soft));
}

.featured-panel-card__label {
    margin-block-end: 0;
    color: var(--wp--preset--color--muted-light);
    font-size: var(--wp--preset--font-size--abs-eyebrow);
    font-weight: 800;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.wp-block-group.featured-panel-card>.featured-panel-card__link {
    margin-block-start: auto;
    margin-block-end: 0;
    padding-block-start: var(--wp--preset--spacing--150);
    font-size: var(--wp--preset--font-size--abs-ui);
    font-weight: 800;
}

.featured-panel-card__link>a:link,
.featured-panel-card__link>a:visited {
    color: var(--wp--preset--color--text);
    text-decoration: none;
}

.featured-panel-card__link>a:hover {
    color: var(--wp--preset--color--accent-hover);
}

.wp-block-group.featured-panel-card:has(.featured-panel-card__link a:focus-visible) {
    border-color: var(--wp--preset--color--focus);
    box-shadow: var(--wp--preset--shadow--soft);
    outline: 3px solid var(--wp--preset--color--focus);
    outline-offset: 4px;
}

.featured-panel-card__link a:focus-visible {
    outline: none;
}

.wp-block-group.featured-panel-card:has(.featured-panel-card__link a:active) {
    border-color: var(--wp--preset--color--accent);
}

/* Hero
   ========================================================================== */

.wp-block-group.hero-layout {
    display: grid;
    grid-template-areas:
        "intro media"
        "lower media";
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: auto 1fr;
    column-gap: 4.5rem;
    row-gap: var(--wp--preset--spacing--150);
}

.wp-block-group.hero-layout>* {
    margin-block-start: 0;
}

.hero-layout__intro {
    align-self: start;
    grid-area: intro;
}

.hero-layout__media {
    align-self: start;
    grid-area: media;
}

.hero-layout__lower {
    align-self: start;
    grid-area: lower;
}

.wp-block-group.hero-layout>.hero-layout__media {
    box-sizing: border-box;
    width: 100%;
}

.wp-block-group.hero-layout>.hero-layout__media img {
    width: 100%;
}

/* Case study hero
   ========================================================================== */

.wp-block-group.project-details {
    display: grid;
    border: 1px solid var(--wp--preset--color--border);
    border-radius: var(--wp--preset--border-radius--large);
    background: var(--wp--preset--color--surface);
    box-shadow: var(--wp--preset--shadow--soft);
    padding: var(--wp--preset--spacing--200);
}

.project-details__logo {
    display: grid;
    place-items: center;
    border-block-end: 1px solid var(--wp--preset--color--border);
    padding-block-end: var(--wp--preset--spacing--150);
}

.project-details__logo .wp-block-image {
    margin: 0 0 var(--wp--preset--spacing--075);
}

.wp-block-group.hero-layout>.project-details .project-details__logo img {
    display: block;
    width: auto;
    max-width: 100%;
    height: auto;
    max-height: 220px;
    object-fit: contain;
}

.project-details__meta {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: var(--wp--preset--spacing--100) var(--wp--preset--spacing--150);
    border-block-end: 1px solid var(--wp--preset--color--border);
    padding-block-end: var(--wp--preset--spacing--150);
}

.wp-block-group.project-details__meta>* {
    margin-block-start: 0;
}

.project-details__label {
    margin-block-end: 0;
    color: var(--wp--preset--color--muted-light);
    font-size: var(--wp--preset--font-size--abs-eyebrow);
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.project-details__value {
    margin-block-end: 0;
    color: var(--wp--preset--color--text);
    font-weight: 700;
    line-height: 1.35;
}

.project-details__services {
    margin-block-end: 0;
    padding-inline-start: 1.2em;
    color: var(--wp--preset--color--muted);
}

.project-details__services li {
    font-size: var(--wp--preset--font-size--abs-ui);
}

.wp-block-quote.project-details__quote {
    display: flex;
    flex-direction: column;
    gap: var(--wp--preset--spacing--050);
    margin: var(--wp--preset--spacing--200) 0 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    padding: 0;
    text-align: center;
}

.project-details__quote p {
    margin-block: 0;
    color: var(--wp--preset--color--muted);
    font-family: var(--wp--preset--font-family--atkinson-hyperlegible-next);
    font-size: var(--wp--preset--font-size--abs-copy);
    font-style: oblique;
    font-weight: 424;
    letter-spacing: normal;
    line-height: 1.5;
}

.project-details__quote p span {
    color: var(--wp--preset--color--muted-light);
}

.wp-block-group.project-details .wp-block-quote.project-details__quote cite {
    display: block;
    margin-block-start: 0;
    color: var(--wp--preset--color--muted);
    font-family: var(--wp--preset--font-family--atkinson-hyperlegible-next);
    font-size: var(--wp--preset--font-size--abs-small);
    font-style: normal;
    font-weight: 424;
    letter-spacing: normal;
    line-height: 1.5;
}

/* Results
   ========================================================================== */

.wp-block-columns.results-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--wp--preset--spacing--150);
}

.wp-block-columns.results-grid>.wp-block-column {
    min-width: 0;
    margin-block-start: 0;
}

.wp-block-group.result-card {
    height: 100%;
    border: 1px solid var(--wp--preset--color--border);
    border-radius: var(--wp--preset--border-radius--medium);
    background: var(--wp--preset--color--surface);
    box-shadow: var(--wp--preset--shadow--soft);
    padding: var(--wp--preset--spacing--150);
    box-sizing: border-box;
}

.result-card__value {
    margin-block-end: 0;
    color: var(--wp--preset--color--heading-3);
    font-family: var(--wp--preset--font-family--big-shoulders);
    font-size: clamp(1.75rem, 4vw, 2.625rem);
    font-weight: 600;
    letter-spacing: -0.04em;
    line-height: 1;
}

.wp-block-group.result-card>p:last-child {
    margin-block-end: 0;
}

.results-section__callout span {
    color: var(--wp--preset--color--muted-light);
}

.wp-block-group.results-section>.results-section__callout {
    margin-block-start: var(--wp--preset--spacing--250);
}

/* Query pagination
   ========================================================================== */

.query-list .wp-block-query-pagination {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    align-items: center;
    column-gap: var(--wp--preset--spacing--150);
    margin-block-start: 0;
    border-block: 1px solid var(--wp--preset--color--border);
    padding-block: var(--wp--preset--spacing--150);
}

.query-list .wp-block-query-pagination-previous {
    grid-column: 1;
    justify-self: start;
}

.query-list .wp-block-query-pagination-numbers {
    display: flex;
    grid-column: 2;
    gap: var(--wp--preset--spacing--100);
    justify-self: center;
}

.query-list .wp-block-query-pagination-next {
    grid-column: 3;
    justify-self: end;
}

/* Image styles
   ========================================================================== */
.wp-block-image :where(figcaption) {
    margin: 0;
    padding: var(--wp--preset--spacing--050) var(--wp--preset--spacing--150) 0;
    font-size: var(--wp--preset--font-size--abs-small);
    text-align: center;
}

.is-style-card .wp-block-image :where(figcaption) {
    padding-block-end: var(--wp--preset--spacing--050);
    border-block-end: 1px solid var(--wp--preset--color--border);
    font-size: var(--wp--preset--font-size--abs-small);
    text-align: unset;
}

.wp-block-image.is-style-framed {
    width: fit-content;
    max-width: 100%;
    border: 1px solid var(--wp--preset--color--border);
    border-radius: var(--wp--preset--border-radius--large);
    background: var(--wp--preset--color--surface);
    box-shadow: var(--wp--preset--shadow--soft);
    padding: var(--wp--preset--spacing--100);
    overflow: hidden;
}

.wp-block-image.is-style-framed img {
    max-width: 100%;
    border-radius: 0.75rem;
}

.wp-block-image.is-style-framed figcaption {
    margin-block: var(--wp--preset--spacing--075) 0;
    color: var(--wp--preset--color--muted);
    font-family: var(--wp--preset--font-family--atkinson-hyperlegible-next);
    font-weight: 424;
    letter-spacing: normal;
    line-height: 1.5;
}

/* Quote styles
   ========================================================================== */

.wp-block-quote {
    margin-block: 0;
    padding: var(--wp--preset--spacing--350);
    text-align: center;
}

.wp-block-quote:not(.project-details__quote)>:where(p, cite) {
    width: min(100%, 1024px);
    margin-inline: auto;
}

.wp-block-quote cite {
    color: var(--wp--preset--color--muted);
    font-family: var(--wp--preset--font-family--atkinson-hyperlegible-next);
    font-size: var(--wp--preset--font-size--abs-ui);
    font-weight: 424;
    letter-spacing: -0.013em;
    line-height: 1.5;
}

/* Utility classes
   ========================================================================== */

.margin-top-zero {
    margin-block-start: 0;
}

/* Responsive styles
   ========================================================================== */

@media (max-width: 960px) {

    .wp-block-columns.card-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .wp-block-group.two-columns-image-right {
        grid-template-areas:
            "intro"
            "media"
            "lower";
        grid-template-columns: minmax(0, 1fr);
        grid-template-rows: none;
        column-gap: 0;
    }

    .wp-block-group.two-columns-image-left {
        grid-template-columns: minmax(0, 1fr);
        row-gap: var(--wp--preset--spacing--150);
    }

    .two-columns-image-left__media {
        order: 2;
    }

    .two-columns-image-left__content {
        display: contents;
    }

    .two-columns-image-left__intro {
        order: 1;
    }

    .two-columns-image-left__lower {
        order: 3;
    }

    .wp-block-group.two-columns-image-left>.two-columns-image-left__media,
    .wp-block-group.two-columns-image-left>.two-columns-image-left__content>.two-columns-image-left__intro,
    .wp-block-group.two-columns-image-left>.two-columns-image-left__content>.two-columns-image-left__lower {
        margin-block-start: 0;
    }

    .wp-block-group.two-columns-text {
        grid-template-columns: minmax(0, 1fr);
        align-items: start;
        row-gap: var(--wp--preset--spacing--150);
    }

    .two-columns-text__heading .wp-block-heading,
    .two-columns-long-text__heading {
        text-align: start;
    }

    .wp-block-group.two-columns-long-text {
        grid-template-areas:
            "eyebrow"
            "heading"
            "body";
        grid-template-columns: minmax(0, 1fr);
        row-gap: var(--wp--preset--spacing--100);
    }

    .two-columns-long-text__body {
        padding-block-start: 0;
    }

    .wp-block-group.two-columns-image-supporting {
        grid-template-columns: minmax(0, 1fr);
        row-gap: var(--wp--preset--spacing--150);
    }

    .two-columns-image-supporting__content,
    .two-columns-image-supporting__media {
        display: contents;
    }

    .two-columns-image-supporting__intro {
        order: 1;
    }

    .two-columns-image-supporting__primary-media {
        order: 2;
    }

    .two-columns-image-supporting__lower {
        order: 3;
    }

    .two-columns-image-supporting__cards {
        order: 4;
    }

    .wp-block-group.two-columns-image-supporting>.two-columns-image-supporting__content>.two-columns-image-supporting__intro,
    .wp-block-group.two-columns-image-supporting>.two-columns-image-supporting__content>.two-columns-image-supporting__lower,
    .wp-block-group.two-columns-image-supporting>.two-columns-image-supporting__media>.two-columns-image-supporting__primary-media,
    .wp-block-group.two-columns-image-supporting>.two-columns-image-supporting__media>.two-columns-image-supporting__cards {
        margin-block-start: 0;
    }

    .wp-block-group.two-columns-media-grid {
        grid-template-columns: minmax(0, 1fr);
        row-gap: var(--wp--preset--spacing--150);
    }

    .two-columns-media-grid__content {
        position: static;
    }

    .wp-block-group.two-columns-image-numbered-details {
        column-gap: var(--wp--preset--spacing--200);
    }

    .wp-block-group.featured-panels {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .wp-block-columns.results-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .featured-panels__intro {
        grid-column: 1 / -1;
        padding-inline-end: 0;
    }

    .wp-block-group.hero-layout {
        grid-template-areas:
            "intro"
            "media"
            "lower";
        grid-template-columns: minmax(0, 1fr);
        grid-template-rows: none;
        column-gap: 0;
    }

    .wp-block-group.is-style-section,
    .wp-block-group.is-style-section-divider,
    body.page .wp-block-comments {
        margin-block-start: 0;
        padding-block: var(--wp--preset--spacing--300);
    }

    .wp-block-quote {
        padding: var(--wp--preset--spacing--250) var(--wp--preset--spacing--200);
    }
}

@media (max-width: 640px) {
    .wp-block-columns.card-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .wp-block-columns.is-style-media-grid-3,
    .wp-block-columns.is-style-media-grid-4 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .wp-block-columns.is-style-media-grid-3>.wp-block-column:nth-child(odd):last-child {
        grid-column: 1 / -1;
        width: calc(50% - (var(--wp--preset--spacing--100) / 2));
        justify-self: center;
    }

    .wp-block-group.two-columns-image-numbered-details {
        grid-template-areas:
            "eyebrow"
            "heading"
            "media"
            "content";
        grid-template-columns: minmax(0, 1fr);
        row-gap: var(--wp--preset--spacing--100);
    }

    .two-columns-image-numbered-details__eyebrow {
        justify-content: start;
    }

    .two-columns-image-numbered-details__eyebrow .is-style-eyebrow {
        margin-block-start: 0;
    }

    .two-columns-image-numbered-details__heading .wp-block-heading {
        border-block-end: 0;
        padding-block-end: 0;
    }

    .two-columns-image-numbered-details__point:last-child {
        border-block-end: 0;
        padding-block-end: 0;
    }

    .wp-block-group.featured-panels {
        grid-template-columns: minmax(0, 1fr);
    }

    .featured-panels__intro {
        grid-column: auto;
    }

    .wp-block-group.featured-panel-card {
        padding: var(--wp--preset--spacing--150);
    }

    .wp-block-group.project-details {
        padding: var(--wp--preset--spacing--150);
    }

    .wp-block-columns.results-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .query-list .wp-block-query-pagination {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        row-gap: var(--wp--preset--spacing--150);
    }

    .query-list .wp-block-query-pagination-numbers {
        grid-column: 1 / -1;
        grid-row: 1;
    }

    .query-list .wp-block-query-pagination-previous {
        grid-column: 1;
        grid-row: 2;
    }

    .query-list .wp-block-query-pagination-next {
        grid-column: 2;
        grid-row: 2;
    }

    .project-details__meta {
        grid-template-columns: max-content minmax(0, 1fr);
    }

    .wp-block-columns:is(.is-style-media-grid-1,
        .is-style-media-grid-2,
        .is-style-media-grid-3,
        .is-style-media-grid-4) .wp-block-image img {
        border-radius: var(--wp--preset--border-radius--small);
    }

    .wp-block-image.is-style-framed {
        padding: 0;
        border-radius: var(--wp--preset--border-radius--small);
    }

    .wp-block-image.is-style-framed img {
        border-radius: 0;
    }

    .wp-block-image.is-style-framed figcaption {
        margin: 0;
        padding: var(--wp--preset--spacing--075) var(--wp--preset--spacing--150) var(--wp--preset--spacing--100);
    }

    .wp-block-group.is-style-supporting-card>.supporting-card-media {
        padding: 0;
    }
}

@media (max-width: 781px) {
    .site-footer .wp-block-navigation.footer-links {
        --navigation-layout-justification-setting: flex-start;
        --navigation-layout-justify: flex-start;
        justify-content: flex-start;
    }
}
