.py-logo-text-wrapper {
    display: flex;
    gap: 10px;
    align-items: center;
}

.py-logo-text {
    font-family: var(--py-font-family-heading);
    font-weight: 600;
    max-width: 200px;
    color: var(--py-brand-color-1);
}

.aag-eyebrow {
    font-size: 1.4rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.025em;
    color: var(--py-brand-color-9);
}

.aag-section-head {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1.6rem;
}

@media (min-width: 640px) {
    .aag-section-head {
        flex-direction: row;
        align-items: flex-end;
    }
}

/* Arrow link with hover nudge. Add to a py-text or py-div acting as a link. */
.aag-link-arrow {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    flex-shrink: 0;
    font-size: 1.4rem;
    font-weight: 600;
    color: var(--py-brand-color-1);
    text-decoration: none;
    transition: color 0.2s ease;
}

.aag-link-arrow::after {
    content: "";
    width: 0.9rem;
    height: 0.9rem;
    border-top: 2px solid currentColor;
    border-right: 2px solid currentColor;
    transform: rotate(45deg);
    transition: transform 0.2s ease;
}

.aag-link-arrow:hover {
    color: var(--py-brand-color-3);
}

.aag-link-arrow:hover::after,
.aag-card:hover .aag-link-arrow::after {
    transform: rotate(45deg) translate(0.3rem, -0.3rem);
}

/* --------------------------------------------------------------------------
   2. Base card (hover lift) — used by news + event cards
   Block: py-div with class aag-card (set the block's link if whole card links)
   -------------------------------------------------------------------------- */
.aag-card {
    position: relative;
    display: flex;
    flex-direction: column;
    background-color: var(--py-white);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    border-radius: 1.2rem;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
    transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}

.aag-card:hover {
    transform: translateY(-0.4rem);
    border-color: hsl(var(--py-bc-1-hs), var(--py-bc-1-l), 0.4);
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
}

/* --------------------------------------------------------------------------
   3. News card internals
   -------------------------------------------------------------------------- */
/* Teal square date badge: day over month.
   Block: py-div.aag-date-badge > py-text (day) + py-text.aag-date-badge__month */
.aag-date-badge {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 5.6rem;
    height: 5.6rem;
    border-radius: 0.8rem;
    background-color: var(--py-brand-color-1);
    color: var(--py-white);
    line-height: 1;
}

.aag-date-badge__day {
    font-size: 1.8rem;
    font-weight: 700;
}

.aag-date-badge__month {
    margin-top: 0.2rem;
    font-size: 1rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.025em;
    opacity: 0.8;
}

.aag-category {
    font-size: 1.2rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.025em;
    color: var(--py-brand-color-9);
}

.aag-meta {
    font-size: 1.2rem;
    color: var(--py-mist);
}

/* --------------------------------------------------------------------------
   4. Publication card (cover + slide-up panel on hover)
   Block: piney/aag-pub-card (native block, blocks/aag-pub-card/)
   -------------------------------------------------------------------------- */
.aag-pub-card {
    position: relative;
    display: block;
    overflow: hidden;
    border-radius: 0;
    background-color: var(--py-white);
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.aag-pub-card:hover {
    transform: translateY(-0.4rem);
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
}

.aag-pub-card__cover {
    position: relative;
    width: 100%;
    aspect-ratio: 1224 / 1584;
    background-color: var(--py-white);
}

.aag-pub-card__cover img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: bottom;
}

.aag-pub-card__panel {
    position: absolute;
    inset-inline: 0;
    bottom: 0;
    padding: 2rem;
    background-color: var(--py-brand-color-10);
    transform: translateY(100%);
    transition: transform 0.3s ease-in-out;
}

.aag-pub-card:hover .aag-pub-card__panel,
.aag-pub-card:focus-within .aag-pub-card__panel {
    transform: translateY(0);
}

/* Touch devices: no hover, so keep the panel visible */
@media (hover: none) {
    .aag-pub-card__panel {
        position: static;
        transform: none;
        background-color: var(--py-brand-color-10);
    }
}

/* Panel internals (spans — valid inside <a> — given block behavior) */
.aag-pub-card__cover,
.aag-pub-card__panel,
.aag-pub-card__title,
.aag-pub-card__subtitle,
.aag-pub-card__desc {
    display: block;
}

.aag-pub-card__title {
    font-family: var(--py-font-family-heading);
    font-size: 1.8rem;
    font-weight: 700;
    color: var(--py-brand-color-1);
}

.aag-pub-card__subtitle {
    margin-top: 0.2rem;
    font-size: 1.2rem;
    font-weight: 500;
    color: var(--py-mist);
}

.aag-pub-card__desc {
    margin-top: 0.8rem;
    font-size: 1.4rem;
    line-height: 1.6;
    color: var(--py-slate);
}

.aag-pub-card__panel .aag-link-arrow {
    margin-top: 1.2rem;
}

/* --------------------------------------------------------------------------
   5. Event / feature split card + accent panel
   Block: piney-grid (3fr 2fr) inside py-div.aag-card.aag-feature-card
   -------------------------------------------------------------------------- */
.aag-feature-card {
    overflow: hidden;
    border-radius: 1.6rem;
}

.aag-feature-panel {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    padding: 4.8rem;
    background-color: var(--py-brand-color-6);
    text-align: center;
}

.aag-feature-panel::before {
    content: "";
    position: absolute;
    inset: 0;
    opacity: 0.3;
    background-image: radial-gradient(circle at 30% 20%, var(--py-brand-color-3), transparent 60%);
    pointer-events: none;
}

.aag-feature-panel > * {
    position: relative;
}

.aag-feature-numeral {
    font-family: var(--py-font-family-heading);
    font-size: clamp(6rem, 10vw, 8.8rem);
    font-weight: 700;
    line-height: 1;
    color: var(--py-brand-color-10);
}

.aag-feature-label {
    margin-top: 0.8rem;
    font-size: 1.4rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.3em;
    color: var(--py-white);
}

.aag-feature-sublabel {
    margin-top: 0.4rem;
    font-size: 1.2rem;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--py-brand-color-4);
}

/* --------------------------------------------------------------------------
   6. Pills & badges
   -------------------------------------------------------------------------- */
/* "Save the date" — copper pill with leading dot */
.aag-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.8rem;
    width: fit-content;
    padding: 0.4rem 1.2rem;
    border-radius: 999px;
    background-color: var(--py-brand-color-10);
    font-size: 1.2rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.025em;
    color: var(--py-brand-color-9);
}

.aag-pill::before {
    content: "";
    width: 0.6rem;
    height: 0.6rem;
    border-radius: 999px;
    background-color: var(--py-brand-color-8);
}

/* Hero eyebrow on dark backgrounds */
.aag-pill--hero {
    background-color: transparent;
    border: 1px solid rgba(255, 255, 255, 0.25);
    color: var(--py-brand-color-4);
    font-weight: 500;
}

.aag-pill--hero::before {
    display: none;
}

/* Neutral pill, e.g. "Voting member" */
.aag-pill--muted {
    background-color: var(--py-cloud);
    border-radius: 0.6rem;
    color: var(--py-slate);
    text-transform: none;
    letter-spacing: 0;
}

.aag-pill--muted::before {
    display: none;
}

/* Affiliate cards: v0 uses an external-link glyph, not the chevron */
.aag-card:has(.aag-affil-head) .aag-link-arrow::after {
    width: 1.2rem;
    height: 1.2rem;
    border: 0;
    transform: none;
    background-color: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6'/%3E%3Cpath d='M10 14 21 3'/%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3C/svg%3E") no-repeat center / contain;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6'/%3E%3Cpath d='M10 14 21 3'/%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3C/svg%3E") no-repeat center / contain;
}

.aag-card:has(.aag-affil-head):hover .aag-link-arrow::after {
    transform: none;
}

/* Honorary fellows on the tinted card: v0 = white rounded-full + avatar dot */
.aag-card--tint .aag-pill--muted {
    background-color: var(--py-white);
    border-radius: 999px;
    padding: 0.4rem 1.2rem 0.4rem 0.4rem;
}

.aag-card--tint .aag-pill--muted::before {
    display: block;
    width: 2rem;
    height: 2rem;
    flex-shrink: 0;
    border-radius: 999px;
    background-color: var(--py-brand-color-5);
}

/* --------------------------------------------------------------------------
   7. On-dark buttons (hero + CTA band)
   Add .btn--on-dark alongside .btn
   -------------------------------------------------------------------------- */
.btn--on-dark {
    background-color: transparent;
    border: 1px solid rgba(255, 255, 255, 0.4);
    color: var(--py-white);
    transition: background-color 0.2s ease;
}

.btn--on-dark:hover {
    background-color: rgba(255, 255, 255, 0.1);
    color: var(--py-white);
}

/* Arrow suffix for buttons ("Become a member →") */
.btn--arrow::after {
    content: "";
    width: 0.9rem;
    height: 0.9rem;
    margin-left: 0.6rem;
    border-top: 2px solid currentColor;
    border-right: 2px solid currentColor;
    transform: rotate(45deg);
    transition: transform 0.2s ease;
}

.btn--arrow:hover::after {
    transform: rotate(45deg) translate(0.3rem, -0.3rem);
}

/* --------------------------------------------------------------------------
   8. Utility: balanced headings + constrained measure
   -------------------------------------------------------------------------- */
.aag-balance {
    text-wrap: balance;
}

.aag-measure {
    max-width: 65ch;
}

.aag-news-card {
    padding: 2.4rem;
    text-decoration: none;
}

.aag-news-card__top {
    display: flex;
    align-items: center;
    gap: 1.6rem;
}

.aag-news-card__meta {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

.aag-news-card__title {
    margin-top: 2rem;
    font-family: var(--py-font-family-heading);
    font-size: 1.8rem;
    font-weight: 600;
    line-height: 1.375; /* v0: 18/24.75 */
    color: var(--py-brand-color-1);
}

.aag-news-card__excerpt {
    margin-top: 1.2rem;
    flex: 1 1 auto;
    font-size: 1.4rem;
    line-height: 1.625; /* v0: 14/22.75 */
    color: var(--py-slate);
}

.aag-news-card .aag-link-arrow {
    margin-top: 2rem;
}

/* Simple grid for plugin-rendered blocks */
.aag-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--py-grid-gap, 2.4rem);
}

@media (min-width: 768px) {
    .aag-grid--2,
    .aag-grid--3,
    .aag-grid--4 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 1024px) {
    .aag-grid--3 {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .aag-grid--4 {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

.aag-news-card__top,
.aag-news-card__meta,
.aag-news-card__title,
.aag-news-card__excerpt {
    display: block;
}

.aag-news-card__top {
    display: flex;
}

.aag-news-card__meta {
    display: flex;
    flex-direction: column;
}

/* Button row */
.aag-btn-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1.2rem;
}

/* Arrow link built from py-button: neutralize .btn, apply arrow-link look */
.btn.aag-link-arrow {
    background: transparent;
    border: 0;
    padding: 0;
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    font-size: 1.4rem;
    font-weight: 600;
    color: var(--py-brand-color-1);
}

.btn.aag-link-arrow:hover {
    background: transparent;
    color: var(--py-brand-color-3);
}

/* Section backgrounds */
.aag-band-cloud {
    background-color: var(--py-cloud);
}

.aag-cta-band {
    background-color: var(--py-brand-color-6);
}

.aag-cta-band__inner {
    text-align: center;
    --py-content-gap: 2.4rem; /* v0 CTA: flex gap-6 = 24px */
}

/* v0 CTA paragraph: 16px/26, max-w-xl. The generic component p (14px) and
   the pubs .aag-btn-row margin-top would otherwise leak in here. */
.aag-cta-band .aag-measure {
    max-width: 57.6rem;
    font-size: 1.6rem;
    line-height: 1.625;
}

.aag-cta-band .aag-btn-row {
    margin-top: 0;
}

.aag-section-head {
    width: 100%;
}

/* Feature card body padding (panel side has its own) */
.aag-feature-card__body {
    padding: 4rem;
}

/* Fix: base .btn (defined later in global-settings) was overriding these modifiers */
.btn.btn--accent {
    background-color: var(--py-brand-color-8);
    border-color: var(--py-brand-color-8);
    color: var(--py-white);
    transition: opacity 0.2s ease;
}

.btn.btn--accent:hover {
    opacity: 0.8;
    color: var(--py-white);
}

.btn.btn--ghost {
    background-color: transparent;
    border-color: transparent;
    color: var(--py-brand-color-1);
}

.btn.btn--ghost:hover {
    background-color: var(--py-cloud);
    opacity: 1;
}

/* Fix: pseudo-element needs a display value for width/height to apply */
.btn--arrow::after {
    display: inline-block;
}

/* --------------------------------------------------------------------------
   9. v0 parity fixes (2026-07-28)
   -------------------------------------------------------------------------- */

/* Buttons: v0 sizing (36px tall, 14px text, 8px radius) */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 3.6rem;
    padding: 0 1.6rem;
    gap: 0.6rem;
    font-size: 1.4rem;
    font-weight: 500;
    line-height: 1;
    border-radius: 0.8rem;
}

/* Keep the arrow-link variant free of button sizing */
.btn.aag-link-arrow {
    height: auto;
    padding: 0;
    border-radius: 0;
}

/* Hero image treatment: rounded corners + soft border + deep shadow (v0) */
.aag-hero-img {
    border-radius: 1.6rem;
    border: 1px solid rgba(255, 255, 255, 0.15);
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25), 0 0 0 1px rgba(255, 255, 255, 0.1);
}

/* Wash band (v0 bg-primary-wash) - publications section */
.aag-band-wash {
    background-color: var(--py-brand-color-5);
}

/* Events feature card, v0 parity (2026-07-28) */
.aag-feature-title {
    font-size: clamp(2.6rem, 3.5vw, 3.6rem);
    line-height: 1.15;
}

@media (min-width: 768px) {
    .aag-feature-card .py-grid {
        grid-template-columns: 3fr 2fr;
    }
}

.aag-meta-line {
    display: flex;
    align-items: center;
    gap: 0.8rem;
    font-size: 1.4rem;
    color: var(--py-slate);
}

.aag-meta-line::before {
    content: "";
    width: 1.6rem;
    height: 1.6rem;
    flex-shrink: 0;
    background-color: var(--py-brand-color-8);
    -webkit-mask: var(--aag-icon) no-repeat center / contain;
    mask: var(--aag-icon) no-repeat center / contain;
}

.aag-meta-cal {
    --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 2v4'/%3E%3Cpath d='M16 2v4'/%3E%3Crect width='18' height='18' x='3' y='4' rx='2'/%3E%3Cpath d='M3 10h18'/%3E%3C/svg%3E");
}

.aag-meta-pin {
    --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 10c0 4.99-5.54 10.19-7.4 11.8a1 1 0 0 1-1.2 0C9.54 20.19 4 14.99 4 10a8 8 0 0 1 16 0Z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E");
}

/* Meta items side by side (v0: date + location on one row) */
.aag-meta-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 2.4rem;
}

/* --------------------------------------------------------------------------
   10. Footer (theme template footer.php, v0 parity 2026-07-29)
   -------------------------------------------------------------------------- */
.py-footer.aag-footer {
    padding: 5.6rem var(--py-sec-pad-inline) 2.4rem;
    background-color: var(--py-brand-color-7);
    color: var(--py-brand-color-4);
}

.aag-footer__brand {
    max-width: 52ch;
}

.aag-footer__brand-row {
    display: flex;
    align-items: center;
    gap: 2rem;
}

.aag-footer__logo {
    width: 9.6rem;
    height: 9.6rem;
    flex-shrink: 0;
}

.aag-footer__name {
    font-family: var(--py-font-family-heading);
    font-size: 1.8rem;
    font-weight: 600;
    line-height: 1.3;
    color: var(--py-white);
}

.aag-footer__desc {
    margin-top: 2.4rem;
    font-size: 1.4rem;
    line-height: 1.7;
    color: hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.9);
}

.aag-footer__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 4rem 3.2rem;
    margin-top: 4.8rem;
    padding-top: 4rem;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
}

@media (min-width: 480px) {
    .aag-footer__grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (min-width: 992px) {
    .aag-footer__grid {
        grid-template-columns: repeat(5, minmax(0, 1fr));
    }
}

.aag-footer__heading {
    font-size: 1.4rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.025em;
    color: var(--py-white);
}

.aag-footer__links {
    list-style: none;
    margin: 2rem 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 1.4rem;
}

.aag-footer__links a,
.aag-footer__mail {
    font-size: 1.4rem;
    color: hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.9);
    text-decoration: none;
    transition: color 0.2s ease;
}

.aag-footer__links a:hover,
.aag-footer__mail:hover,
.aag-footer__legal a:hover {
    color: var(--py-white);
}

.aag-footer__office {
    margin-top: 4.8rem;
    padding-top: 3.2rem;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.aag-footer__office-row {
    display: flex;
    flex-direction: column;
    gap: 1.2rem;
    margin-top: 1.6rem;
}

@media (min-width: 640px) {
    .aag-footer__office-row {
        flex-direction: row;
        align-items: flex-start;
        gap: 4.8rem;
    }
}

.aag-footer__address {
    font-size: 1.4rem;
    line-height: 1.7;
    color: hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.9);
}

.aag-footer__bottom {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1.2rem;
    margin-top: 4rem;
    padding-top: 2.4rem;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
    font-size: 1.2rem;
    color: hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.7);
}

@media (min-width: 640px) {
    .aag-footer__bottom {
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
    }
}

/* Copyright | legal links | credit: equal outer columns keep the links centred.
   Needs a 1041px row (copyright 410 + links 173 + gaps, twice the wider side);
   below that the three stay in order on a wrapping row. */
@media (min-width: 1140px) {
    .aag-footer__bottom {
        display: grid;
        grid-template-columns: 1fr auto 1fr;
        column-gap: 2.4rem;
    }

    .aag-footer__credit {
        justify-self: end;
        text-align: right;
    }
}

.aag-footer__legal {
    display: flex;
    gap: 2rem;
}

.aag-footer__legal a {
    color: inherit;
    text-decoration: none;
    transition: color 0.2s ease;
}

.aag-footer__credit {
    margin: 0;
}

.aag-footer__credit a {
    color: inherit;
    text-decoration: underline;
    text-underline-offset: 0.2em;
    transition: color 0.2s ease;
}

.aag-footer__credit a:hover {
    color: var(--py-white);
}

/* Keep the row's right end clear of the fixed back-to-top button (40px at
   right 24px), which otherwise sits on the last link at the page bottom.
   In the grid range the inset goes on the credit so the links stay centred. */
@media (min-width: 640px) and (max-width: 1139.98px) {
    .aag-footer__bottom {
        padding-right: 4.8rem;
    }
}

@media (min-width: 1140px) and (max-width: 1367.98px) {
    .aag-footer__credit {
        padding-right: 4.8rem;
    }
}

/* Footer contact icons (copper, mask technique as .aag-meta-line) */
.aag-footer__address,
.aag-footer__mail {
    display: flex;
    gap: 1rem;
}

.aag-footer__address::before,
.aag-footer__mail::before {
    content: "";
    width: 1.8rem;
    height: 1.8rem;
    flex-shrink: 0;
    margin-top: 0.3rem;
    background-color: var(--py-brand-color-8);
    -webkit-mask: var(--aag-icon) no-repeat center / contain;
    mask: var(--aag-icon) no-repeat center / contain;
}

.aag-footer__address::before {
    --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 10c0 4.99-5.54 10.19-7.4 11.8a1 1 0 0 1-1.2 0C9.54 20.19 4 14.99 4 10a8 8 0 0 1 16 0Z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E");
}

.aag-footer__mail::before {
    --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='20' height='16' x='2' y='4' rx='2'/%3E%3Cpath d='m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7'/%3E%3C/svg%3E");
}

/* --------------------------------------------------------------------------
   11. People grid + Regional report cards (native blocks, 2026-07-29)
   -------------------------------------------------------------------------- */
.aag-person-cards {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.2rem;
}

@media (min-width: 480px) {
    .aag-person-cards {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 992px) {
    .aag-person-cards:not(.aag-person-cards--compact) {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    /* v0: regional councillor cards sit in a 2-col grid (room for the maps) */
    .aag-people-grid--regional .aag-person-cards:not(.aag-person-cards--compact) {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

.aag-person-card {
    display: flex;
    align-items: center;
    gap: 1.6rem;
    padding: 1.6rem;
    background-color: var(--py-white);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    border-radius: 1.2rem;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
    text-decoration: none;
    transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
}

a.aag-person-card:hover {
    border-color: hsl(var(--py-bc-1-hs), var(--py-bc-1-l), 0.3);
    background-color: hsl(var(--py-bc-5-hs), var(--py-bc-5-l), 0.4);
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
}

.aag-person-card__photo {
    display: block;
    width: 8rem;
    height: 8rem;
    flex-shrink: 0;
    overflow: hidden;
    border-radius: 999px;
    background-color: var(--py-brand-color-5);
}

.aag-person-card__photo img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: top;
}

.aag-person-card__body {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    min-width: 0;
}

.aag-person-card__name {
    font-weight: 500;
    font-size: 1.6rem;
    color: var(--py-brand-color-1);
}

.aag-person-card__role {
    font-size: 1.4rem;
    font-weight: 600;
    color: var(--py-brand-color-9);
}

.aag-person-card__meta {
    font-size: 1.4rem;
    color: var(--py-slate);
}

.aag-person-card__link {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    margin-top: 0.4rem;
    font-size: 1.2rem;
    font-weight: 600;
    color: var(--py-brand-color-1);
}

/* v0: Read Bio carries a small arrow that nudges right on hover */
.aag-person-card__link::after {
    content: "";
    width: 1.2rem;
    height: 1.2rem;
    background-color: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E%3Cpath d='m12 5 7 7-7 7'/%3E%3C/svg%3E") no-repeat center / contain;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E%3Cpath d='m12 5 7 7-7 7'/%3E%3C/svg%3E") no-repeat center / contain;
    transition: transform 0.2s ease;
}

a.aag-person-card:hover .aag-person-card__link::after {
    transform: translateX(0.2rem);
}

/* v0: regional locator map on the card's right edge */
.aag-person-card__map {
    display: block;
    width: 8rem;
    flex-shrink: 0;
    margin-left: auto;
}

.aag-person-card__map svg {
    display: block;
    width: 100%;
    height: auto;
}

.aag-person-card--compact {
    padding: 1.2rem;
    gap: 1.2rem;
}

.aag-person-card--compact .aag-person-card__photo {
    width: 4.8rem;
    height: 4.8rem;
}

.aag-term-cols {
    display: grid;
    grid-template-columns: 1fr;
    gap: 3.2rem;
}

@media (min-width: 992px) {
    .aag-term-cols {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 4rem;
    }
}

p.aag-term-label { /* tag-qualified to beat the global margin reset */
    margin-bottom: 1.6rem;
    font-size: 1.4rem;
    font-weight: 600;
    line-height: 2rem; /* v0 14/20 */
    text-transform: uppercase;
    letter-spacing: 0.025em;
    color: var(--py-ink);
}

/* v0: sub-head h3 sits 24px above its people grid — v0 mt-6, re-measured
   2026-08-14 (an earlier v0 revision used 16). Container gap is 30. */
h3 + .wp-block-piney-aag-people-grid {
    margin-top: -0.6rem;
}

.aag-report-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 2.4rem;
}

@media (min-width: 768px) {
    .aag-report-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 1024px) {
    .aag-report-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

.aag-report-card {
    display: flex;
    flex-direction: column;
    padding: 2.8rem;
    background-color: var(--py-white);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    border-radius: 1.2rem;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

.aag-report-card__region {
    font-weight: 600;
    color: var(--py-brand-color-1);
}

.aag-report-card__period {
    font-weight: 400;
    color: var(--py-mist);
}

.aag-report-card__title {
    margin-top: 1.2rem;
    font-size: 1.8rem;
    font-weight: 700;
    line-height: 1.35;
    color: var(--py-brand-color-1);
}

.aag-report-card__author {
    flex: 1 1 auto;
    margin-top: 0.8rem;
    font-size: 1.3rem;
    line-height: 1.6;
    color: var(--py-slate);
}

.aag-report-card__link {
    margin-top: 1.6rem;
}

/* --------------------------------------------------------------------------
   12. The Association page (anchors, page hero, section internals)
   -------------------------------------------------------------------------- */
.aag-anchor {
    display: block;
    position: relative;
    /* No-bar fallback offset (header only). Every page that currently has
       anchors also has the section nav, whose deeper offsets come from the
       .aag-section-nav ~ rules below — landing positions were calibrated
       against v0 headings 2026-08-07 and re-verified 2026-08-14 after the
       header-shrink fix (static offsets like v0's scroll-mt; a live var()
       here would move the anchor mid-jump while the header shrinks). */
    top: -9.6rem;
    visibility: hidden;
    /* Cancel the section flex-gap slot this zero-height child occupies —
       it silently added 4rem above every anchored section (found on the
       Events pass 2026-08-07; v0 has no anchor element, uses scroll-mt). */
    margin-bottom: calc(-1 * var(--py-section-gap));
}

/* Compact page hero band (dark) */
.aag-page-hero {
    background-color: var(--py-brand-color-6);
}

/* Checklist with copper check marks */
.aag-check-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 1.2rem;
}

.aag-check-list li {
    position: relative;
    padding-left: 2.8rem;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--py-ink);
}

/* v0 icon anatomy (measured 2026-07-31): 20px filled tint circle + 12px
   stroked check. Copper on white cards; teal variant on .aag-card--tint. */
.aag-check-list li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.2rem;
    width: 2rem;
    height: 2rem;
    border-radius: 999px;
    background-color: var(--py-brand-color-10); /* v0: solid, not alpha */
}

.aag-check-list li::after {
    content: "";
    position: absolute;
    left: 0.4rem;
    top: 0.6rem;
    width: 1.2rem;
    height: 1.2rem;
    background-color: var(--py-brand-color-9);
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") no-repeat center / contain;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'%3E%3C/path%3E%3C/svg%3E") no-repeat center / contain;
}

.aag-card--tint .aag-check-list li::before {
    background-color: hsl(var(--py-bc-1-hs), var(--py-bc-1-l), 0.1);
}

.aag-card--tint .aag-check-list li::after {
    background-color: var(--py-brand-color-1);
}

/* Simple document/download card */
.aag-doc-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.6rem;
    padding: 2.4rem;
    background-color: var(--py-white);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    border-radius: 1.4rem;
}

.aag-doc-card__name {
    font-family: var(--py-font-family-heading);
    font-size: 1.6rem;
    font-weight: 600;
    line-height: 1.5;
    color: var(--py-brand-color-1);
}

.aag-doc-card__desc {
    font-size: 1.4rem;
    line-height: 1.43;
    color: var(--py-ink);
}

/* Committee / coordinator card internals (on .aag-card) */
.aag-committee-card {
    padding: 2.4rem;
}

/* Tag-qualified: the global :is(.py-section) :is(p,h1-h6) margin reset is
   0-1-1 and silently zeroed every single-class margin on this page (found
   in the PB4 audit 2026-08-14) — p.class ties it and this file loads later. */
p.aag-committee-card__desc {
    margin-top: 0.8rem;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--py-slate);
    flex: 1 1 auto;
}

.aag-kv {
    margin-top: 1.6rem;
}

.aag-kv__label {
    font-size: 1.2rem;
    font-weight: 600;
    line-height: 1.6rem; /* v0 text-xs 12/16 (dev default 1.4 gave 16.8) */
    text-transform: uppercase;
    letter-spacing: 0.025em;
    color: var(--py-mist);
}

p.aag-kv__value { /* tag-qualified to beat the global margin reset */
    margin-top: 0.4rem; /* v0 mt-1 (re-measured 2026-08-14) */
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--py-slate);
}

.aag-kv__value a {
    color: var(--py-brand-color-1);
    text-decoration: none;
}

.aag-kv__value a:hover {
    color: var(--py-brand-color-3);
}

/* Award recipient line */
.aag-award-recipient {
    margin-top: 1.2rem;
    padding-top: 1.2rem;
    border-top: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    font-size: 1.3rem;
    color: var(--py-slate);
}

.aag-award-recipient strong {
    color: var(--py-brand-color-9);
    font-weight: 600;
}

/* Plain mailto/text link built from py-button (no button chrome, no arrow) */
.btn.aag-mail-link {
    background: transparent;
    border: 0;
    padding: 0;
    height: auto;
    border-radius: 0;
    display: inline-flex;
    font-size: 1.4rem;
    font-weight: 600;
    line-height: 2rem; /* v0 text-sm 14/20 (btn base collapsed it to 14px) */
    color: var(--py-brand-color-1);
}

.btn.aag-mail-link:hover {
    background: transparent;
    color: var(--py-brand-color-3);
}

/* v0 parity round 2 (2026-07-30, from visual comparison) */

/* Compact page hero + soft-teal eyebrow (higher specificity to beat .aag-eyebrow)
   v0 measured 2026-07-31: 56px padding-block, 80px from 992px up */
.py-section.aag-page-hero {
    padding-top: 5.6rem;
    padding-bottom: 5.6rem;
}

@media (min-width: 992px) {
    .py-section.aag-page-hero {
        padding-top: 8rem;
        padding-bottom: 8rem;
    }
}

/* Hero row: text + image; stacked below 992px, image right 38% above (v0) */
.aag-hero-row {
    display: flex;
    flex-direction: column;
    gap: 3.2rem;
    margin-top: -0.4rem; /* breadcrumb->row: content gap 2rem vs v0's mt-4 16px */
}

.aag-hero-text {
    flex: 1;
    display: block; /* py-div defaults to flex-row; v0 stacks h1 over lede */
}

.aag-hero-text .aag-measure {
    margin-top: 1.6rem;
}

/* Scoped under .aag-hero-row: the bare class also lives on the HOMEPAGE
   hero photo (rule near the top of this file) — an unscoped rule here
   hijacked it once (2026-08-06, image collapsed to 38%/16:10). Every
   visual property is set explicitly so nothing leaks either way. */
.aag-hero-row .aag-hero-img {
    aspect-ratio: 16 / 10;
    overflow: hidden;
    border: 0;
    border-radius: 1.2rem;
    box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.15);
}

.aag-hero-row .aag-hero-img img {
    object-fit: cover;
}

@media (min-width: 992px) {
    .aag-hero-row {
        flex-direction: row;
        align-items: center;
        gap: 4.8rem;
    }

    .aag-hero-row .aag-hero-img {
        width: 38%;
        flex-shrink: 0;
    }
}

.py-section.aag-page-hero .aag-eyebrow {
    color: var(--py-brand-color-4);
}

/* Icon tile (teal-tinted rounded square with masked icon) */
.aag-icon-tile {
    width: 4.4rem;
    height: 4.4rem;
    flex-shrink: 0;
    border-radius: 1rem;
    background-color: hsl(var(--py-bc-1-hs), var(--py-bc-1-l), 0.1);
    position: relative;
}

.aag-icon-tile::before {
    content: "";
    position: absolute;
    inset: 0;
    margin: auto;
    width: 2rem;
    height: 2rem;
    background-color: var(--py-brand-color-1);
    -webkit-mask: var(--aag-icon) no-repeat center / contain;
    mask: var(--aag-icon) no-repeat center / contain;
}

.aag-icon-award { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='6'/%3E%3Cpath d='M15.477 12.89 17 22l-5-3-5 3 1.523-9.11'/%3E%3C/svg%3E"); }
.aag-icon-book { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 7v14'/%3E%3Cpath d='M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z'/%3E%3C/svg%3E"); }
.aag-icon-scale { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m16 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z'/%3E%3Cpath d='m2 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z'/%3E%3Cpath d='M7 21h10'/%3E%3Cpath d='M12 3v18'/%3E%3Cpath d='M3 7h2c2 0 5-1 7-2 2 1 5 2 7 2h2'/%3E%3C/svg%3E"); }
.aag-icon-userplus { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 21a8 8 0 0 1 13.292-6'/%3E%3Ccircle cx='10' cy='8' r='5'/%3E%3Cpath d='M19 16v6'/%3E%3Cpath d='M22 19h-6'/%3E%3C/svg%3E"); }
.aag-icon-chart { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 3v16a2 2 0 0 0 2 2h16'/%3E%3Cpath d='M7 16h8'/%3E%3Cpath d='M7 11h12'/%3E%3Cpath d='M7 6h3'/%3E%3C/svg%3E"); }
.aag-icon-calendar { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 2v4'/%3E%3Cpath d='M16 2v4'/%3E%3Crect width='18' height='18' x='3' y='4' rx='2'/%3E%3Cpath d='M3 10h18'/%3E%3C/svg%3E"); }
.aag-icon-globe { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20'/%3E%3Cpath d='M2 12h20'/%3E%3C/svg%3E"); }
.aag-icon-doc { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z'/%3E%3Cpath d='M14 2v5a1 1 0 0 0 1 1h5'/%3E%3Cpath d='M12 18v-6'/%3E%3Cpath d='m9 15 3 3 3-3'/%3E%3C/svg%3E"); }

/* Medal circles (tinted per medal) */
.aag-medal {
    width: 4.4rem;
    height: 4.4rem;
    flex-shrink: 0;
    border-radius: 999px;
    position: relative;
}

.aag-medal::before {
    content: "";
    position: absolute;
    inset: 0;
    margin: auto;
    width: 2rem;
    height: 2rem;
    background-color: var(--aag-medal-fg, var(--py-brand-color-9));
    -webkit-mask: var(--aag-icon) no-repeat center / contain;
    mask: var(--aag-icon) no-repeat center / contain;
    --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7.21 15 2.66 7.14a2 2 0 0 1 .13-2.2L4.4 2.8A2 2 0 0 1 6 2h12a2 2 0 0 1 1.6.8l1.6 2.14a2 2 0 0 1 .14 2.2L16.79 15'/%3E%3Cpath d='M11 12 5.12 2.2'/%3E%3Cpath d='m13 12 5.88-9.8'/%3E%3Cpath d='M8 7h8'/%3E%3Ccircle cx='12' cy='17' r='5'/%3E%3Cpath d='M12 18v-2h-.5'/%3E%3C/svg%3E");
}

.aag-medal--gold { background-color: #F6ECDA; --aag-medal-fg: #A8842F; }
.aag-medal--silver { background-color: #EDF0F2; --aag-medal-fg: #64757E; }
.aag-medal--copper { background-color: var(--py-brand-color-10); --aag-medal-fg: var(--py-brand-color-8); }

/* Extra meta-line icons */
.aag-meta-mail { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='20' height='16' x='2' y='4' rx='2'/%3E%3Cpath d='m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7'/%3E%3C/svg%3E"); }
.aag-meta-phone { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.127.96.361 1.903.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0 1 22 16.92z'/%3E%3C/svg%3E"); }

/* Doc card: icon + text group; buttons are .btn--accent now */
.aag-doc-card__main {
    display: flex;
    align-items: center;
    gap: 1.6rem;
    min-width: 0;
}

/* The unclassed py-div holding name + desc defaults to flex-row; v0 stacks them */
.aag-doc-card__main > div:last-child {
    display: block;
}

/* Image placeholder (client photo pending) */
.aag-img-placeholder {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.6rem;
    min-height: 30rem;
    padding: 2.4rem;
    text-align: center;
    border: 1px dashed hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.9);
    border-radius: 1.2rem;
    background-color: hsl(var(--py-bc-5-hs), var(--py-bc-5-l), 0.5);
}

.aag-img-placeholder__label {
    font-size: 1.1rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--py-brand-color-9);
}

.aag-img-placeholder__title {
    font-size: 1.4rem;
    font-weight: 600;
    color: var(--py-brand-color-1);
    max-width: 34ch;
}

.aag-img-placeholder__spec {
    font-size: 1.2rem;
    color: var(--py-mist);
}

/* Award recipient chip (v0: avatar + label/value on solid wash) */
.aag-award-box {
    display: flex;
    align-items: center;
    gap: 1.6rem;
    margin-top: auto;
    padding: 1.6rem;
    border-radius: 0.8rem;
    background-color: var(--py-brand-color-5);
}

.aag-award-box .aag-kv__label {
    color: var(--py-slate);
}

.aag-award-box__avatar {
    width: 5.6rem;
    aspect-ratio: 1;
    flex-shrink: 0;
    overflow: hidden;
    border-radius: 999px;
    border: 2px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.4);
}

.aag-award-box__avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: top;
}

.aag-award-box__body {
    display: block;
    min-width: 0;
}

p.aag-award-box__value { /* tag-qualified to beat the global margin reset */
    margin-top: 0.2rem;
    font-family: var(--py-font-family-heading);
    font-size: 1.6rem;
    font-weight: 600;
    line-height: 2.4rem; /* v0 16/24 */
    color: var(--py-brand-color-1);
}

/* Wide banner placeholder variant (v0 awards: 16/5, min 224px).
   Double class: the base placeholder sets 4/3 later in the file. */
.aag-img-placeholder.aag-img-placeholder--wide {
    aspect-ratio: 16 / 5;
    min-height: 22.4rem;
}

/* Awards & Medals banner (fills the Photo A2 slot): same 16/5 box as the
   placeholder it replaces, real-photo treatment like the about figure. */
.aag-medals-img {
    aspect-ratio: 16 / 5;
    min-height: 22.4rem;
    margin-top: 1rem; /* awards lede→photo 40, like the placeholder had */
    overflow: hidden;
    border-radius: 1.2rem;
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

.aag-medals-img img {
    object-fit: cover; /* the asset is pre-cropped to the box's 16:5 */
}

/* Distinguished Lecturer: text left, square photo right from 640px (v0) */
.aag-lect-img {
    width: 100%;
    aspect-ratio: 4 / 3;
    flex-shrink: 0;
    overflow: hidden;
    border-radius: 0.8rem;
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    margin-top: 1.6rem;
}

.aag-lect-img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: top;
}

@media (min-width: 640px) {
    .aag-lect-card {
        display: grid;
        grid-template-columns: 1fr 16rem;
        column-gap: 2.4rem;
        align-items: start;
    }

    .aag-lect-card h3 {
        grid-column: 1;
    }

    .aag-lect-card .aag-committee-card__desc {
        grid-column: 1;
    }

    .aag-lect-card .aag-lect-img {
        grid-column: 2;
        grid-row: 1 / span 2;
        aspect-ratio: 1;
        margin-top: 0;
    }
}

@media (min-width: 992px) {
    .aag-lect-card {
        grid-template-columns: 1fr 17.6rem;
    }
}

/* Awards second row: honorary (wide, tinted) + nomination */
@media (min-width: 768px) {
    .aag-awards-row2 {
        grid-template-columns: 2fr 1fr;
    }
}

.aag-card--tint {
    background-color: var(--py-brand-color-5);
}

/* Affiliate badge (org code on dark teal square) + head row */
.aag-affil-head {
    display: flex;
    align-items: center;
    gap: 1.6rem;
}

.aag-affil-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    /* v0 re-measured 2026-08-14: h-16 w-16 FIXED square, text-lg 18/28.
       min-width let long badges grow and steal title width (the title
       then failed to wrap where v0's does) */
    width: 6.4rem;
    height: 6.4rem;
    padding: 0;
    border-radius: 0.8rem;
    background-color: var(--py-brand-color-6);
    font-family: var(--py-font-family-heading);
    font-size: 1.8rem;
    line-height: 2.8rem;
    font-weight: 700;
    color: var(--py-white);
}

/* Awards second-row wrapper (py-div, not piney-grid): honorary wide + nomination */
.aag-awards-row2 {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--py-grid-gap, 2.4rem);
}

@media (min-width: 768px) {
    .aag-awards-row2 {
        grid-template-columns: 2fr 1fr;
    }
}

/* Multiline value next to meta icons (e.g. address): align icon to first line */
.aag-meta-line.aag-meta-pin {
    align-items: flex-start;
}

.aag-meta-line.aag-meta-pin::before {
    margin-top: 0.3rem;
}

/* Measured v0 parity: card radii, per-section h3 scale, report cards */
.aag-card,
.aag-person-card,
.aag-report-card {
    border-radius: 1.4rem;
}

/* v0 uses 18px card titles in committees, business office and affiliates... */
.aag-committee-card h3 {
    font-size: 1.8rem;
}

/* ...and 20px in the awards section */
section:has(#awards) .aag-committee-card h3 {
    font-size: 2rem;
}

.aag-report-card {
    padding: 2.4rem;
}

.aag-report-card__title {
    font-size: 1.6rem;
    font-weight: 600;
}

/* #about section rows, matched to v0 structure (three 2-col rows) */
.aag-about-hero,
.aag-about-cards,
.aag-doc-row {
    display: grid;
    grid-template-columns: 1fr;
}

.aag-about-hero {
    gap: 3.2rem;
    align-items: center;
}

.aag-about-cards {
    gap: 3.2rem;
    margin-top: 1.8rem; /* + container gap 3rem = v0's 48px */
}

.aag-doc-row {
    gap: 1.6rem;
}

@media (min-width: 640px) {
    .aag-doc-row {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 992px) {
    .aag-about-hero,
    .aag-about-cards {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

/* v0 purpose/achieve cards: p-7, h3→list space 20px */
.aag-about-card {
    padding: 2.8rem;
    gap: 2rem;
}

/* v0 intro column rhythm: eyebrow→h2 8px, h2→lede 16px (not the uniform 20) */
.aag-about-hero .py-flex {
    --py-content-gap: 0.8rem;
}

.aag-about-hero .aag-measure {
    margin-top: 0.8rem;
}

/* Inner pages match v0's teal tight headings and 18px lede.
   Home keeps its signed-off look pending a client decision — see AI-CONTEXT.
   Custom properties, not direct props, so per-block editor controls still win. */
/* v0 h1: stepped, not fluid — 36px/40 below 640px, 48px/48 above */
body:not(.home) {
    --py-h1: 3.6rem;
}

body:not(.home) .py-section h1 {
    --py-line-height: 1.11;
}

@media (min-width: 640px) {
    body:not(.home) {
        --py-h1: 4.8rem;
    }

    body:not(.home) .py-section h1 {
        --py-line-height: 1;
    }
}

body:not(.home) .py-section h2 {
    --py-text-color: var(--py-brand-color-1);
    --py-line-height: 1.11;
}

body:not(.home) .py-section h3 {
    --py-text-color: var(--py-brand-color-1);
    --py-line-height: 1.4;
}

/* Section-head ledes (eyebrow pattern): v0 = 16px/26, max-w-3xl */
body:not(.home) .py-flex:has(> .aag-eyebrow) > .aag-measure {
    --py-font-size: 1.6rem;
    --py-line-height: 1.625;
    max-width: 76.8rem;
}

/* Feature ledes are larger: page hero + about intro, v0 = 18px, max-w-2xl */
body:not(.home) .aag-hero-text .aag-measure,
body:not(.home) .aag-about-hero .py-flex:has(> .aag-eyebrow) > .aag-measure {
    --py-font-size: 1.8rem;
    --py-line-height: 1.625;
    max-width: 67.2rem;
}

/* v0 section-head rhythm on inner pages: eyebrow→h2 8px, h2→lede 16px */
body:not(.home) .py-flex:has(> .aag-eyebrow) {
    --py-content-gap: 0.8rem;
}

body:not(.home) .py-flex:has(> .aag-eyebrow) > .aag-measure {
    margin-top: 0.8rem;
}

/* v0 doc-card button: 32px tall, 10px radius, tighter padding.
   Never wraps — the text column shrinks instead (v0 behaviour ≤768). */
.aag-doc-card .btn {
    height: 3.2rem;
    padding: 0 1rem;
    border-radius: 1rem;
    line-height: 2rem;
    flex-shrink: 0;
    white-space: nowrap;
}

.aag-doc-card__main > div:last-child {
    min-width: 0;
}

/* v0 stacks the doc-card below 640px: icon+text row, button underneath */
@media (max-width: 639px) {
    .aag-doc-card {
        flex-direction: column;
        align-items: flex-start;
    }
}

/* Scroll icon (lucide scroll-text — v0 uses it on the Code of Ethics card) */
.aag-icon-scroll { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 12h-5'/%3E%3Cpath d='M15 8h-5'/%3E%3Cpath d='M19 17V5a2 2 0 0 0-2-2H4'/%3E%3Cpath d='M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3'/%3E%3C/svg%3E"); }

/* Native figure block (piney/aag-figure); presentation via extra class */
.aag-figure {
    margin: 0;
}

.aag-figure img {
    display: block;
    width: 100%;
    height: 100%;
}

/* #about photo: v0 = 4:3, 14px radius, trim border, soft shadow */
.aag-about-img {
    aspect-ratio: 4 / 3;
    overflow: hidden;
    border-radius: 1.4rem;
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

.aag-about-img img {
    object-fit: cover;
}

/* v0 placeholder is 4:3 within its column */
.aag-img-placeholder {
    aspect-ratio: 4 / 3;
    min-height: 0;
}

/* ------------------------------------------------------------------ */
/* Breadcrumb (page hero): Home › current page. v0: 14px, white, 6px gap */

.aag-breadcrumb {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    font-size: 1.4rem;
    line-height: 2rem;
    color: var(--py-white);
}

.aag-breadcrumb a {
    color: var(--py-white);
    text-decoration: none;
    transition: opacity 0.2s ease;
}

.aag-breadcrumb a:hover {
    opacity: 0.8;
}

.aag-breadcrumb svg {
    width: 1.6rem;
    height: 1.6rem;
    flex-shrink: 0;
}

/* Sticky section nav (v0: strip under the hero, sticks below the header).
   Measured 2026-07-31: link 14px/20 w500, padding 14px 16px, gap 4px,
   active = teal text + 2px copper underline, bar bg white/80 + blur. */

/* Real rendered header height, kept live by global.js (ResizeObserver on
   .py-header) through the 9.7rem→8.1rem shrink transition. This value is
   the no-JS fallback: the full header. */
:root {
    --aag-header-h: 9.7rem;
}

.aag-section-nav {
    position: sticky;
    /* -1px: the bar tucks under the header's bottom border exactly like
       v0 (measured 2026-08-14: bar top 80px vs header bottom 81px), which
       also kills any subpixel light-gap during the shrink transition. */
    top: calc(var(--aag-header-h) - 1px);
    z-index: 30;
    background-color: hsla(var(--py-white-base), 0.95);
    border-bottom: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
}

@supports (backdrop-filter: blur(8px)) {
    .aag-section-nav {
        background-color: hsla(var(--py-white-base), 0.8);
        backdrop-filter: blur(8px);
    }
}

.aag-section-nav__inner {
    max-width: var(--py-container-width);
    margin-inline: auto;
    display: flex;
    gap: 0.4rem;
    overflow-x: auto;
}

.aag-section-nav__link {
    white-space: nowrap;
    padding: 1.4rem 1.6rem;
    border-bottom: 2px solid transparent;
    font-size: 1.4rem;
    font-weight: 500;
    line-height: 2rem;
    color: rgb(17, 17, 17);
    text-decoration: none;
    transition: color 0.15s ease;
}

.aag-section-nav__link:hover {
    color: var(--py-brand-color-1);
}

.aag-section-nav__link.is-active {
    color: var(--py-brand-color-1);
    border-bottom-color: var(--py-brand-color-8);
}

/* Anchors on pages with a section nav need a deeper offset. Unlike v0
   (scroll-mt on the section), our anchor span sits inside the section's
   8rem top padding, so the value compensates for padding + flex gap too.
   Tuned so a jumped-to heading lands ~93px below the nav, matching v0. */
.aag-section-nav ~ .py-section .aag-anchor {
    /* retuned 2026-08-07 after the anchor flex-gap fix moved content 4rem
       closer to the anchor (was -17.2rem; landings measured vs v0) */
    top: -22.4rem;
}

/* ------------------------------------------------------------------ */
/* Business Office cards (v0 parity 2026-07-31): wide contact card with
   labelled entries + narrow webmaster card with globe tile */

.aag-bo-card {
    padding: 2.8rem;
}

/* v0: 3-col grid at desktop, main card spans 2 */
@media (min-width: 992px) {
    .aag-bo-main {
        grid-column: span 2;
    }
}

/* Card h3s in this pattern are 18px in v0 (about cards stay 20px) */
.aag-committee-card h3,
.aag-bo-card h3 {
    --py-font-size: 1.8rem;
}

.aag-bo-role {
    font-size: 1.4rem;
    font-weight: 500;
    line-height: 2rem;
    color: var(--py-ink);
}

/* Labelled contact list: icon left, uppercase label over value.
   v0: 2-col from 640px, address entry spans both. */
.aag-contact {
    display: grid;
    grid-template-columns: 1fr;
    gap: 2rem;
    margin-top: 2.4rem;
}

@media (min-width: 640px) {
    .aag-contact {
        grid-template-columns: 1fr 1fr;
    }

    .aag-contact__item--wide {
        grid-column: span 2;
    }
}

.aag-contact__item {
    position: relative;
    display: block;
    padding-left: 3.2rem;
}

.aag-contact__item::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.2rem;
    width: 2rem;
    height: 2rem;
    background-color: var(--py-brand-color-8);
    -webkit-mask: var(--aag-icon) no-repeat center / contain;
    mask: var(--aag-icon) no-repeat center / contain;
}

.aag-ci-mail { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7'/%3E%3Crect x='2' y='4' width='20' height='16' rx='2'/%3E%3C/svg%3E"); }
.aag-ci-phone { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384'/%3E%3C/svg%3E"); }
.aag-ci-pin { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E"); }

.aag-contact__label {
    font-size: 1.2rem;
    font-weight: 600;
    line-height: 1.6rem;
    text-transform: uppercase;
    color: rgb(68, 68, 68); /* v0 #444; between our ink and slate */
}

.aag-contact__value {
    display: block;
    margin-top: 0.2rem;
    font-size: 1.4rem;
    line-height: 2rem;
    color: var(--py-ink);
}

/* Multi-line address block */
div.aag-contact__value p {
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--py-ink);
}

.aag-contact .aag-mail-link,
.aag-bo-side .aag-mail-link {
    font-weight: 400; /* v0 links here are regular weight */
}

.aag-contact .btn.aag-mail-link {
    margin-top: 0.2rem;
}

/* Webmaster side card: globe tile, then heading */
.aag-icon-globe { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20'/%3E%3Cpath d='M2 12h20'/%3E%3C/svg%3E"); }

.aag-bo-side h3 {
    margin-top: 1.6rem;
}

p.aag-bo-name { /* tag-qualified to beat the global margin reset */
    margin-top: 0.4rem;
    font-size: 1.4rem;
    line-height: 2rem;
    color: var(--py-ink);
}

.aag-bo-side .btn.aag-mail-link {
    margin-top: 1.2rem;
}

/* ------------------------------------------------------------------ */
/* Committees & Coordinators (v0 parity 2026-07-31) */

/* py-div default flex-row strikes again: kv label must sit above value */
.aag-kv {
    display: block;
}

/* v0: chair/members block is divided from the description */
.aag-committee-card__desc + .aag-kv {
    margin-top: 2rem;
    padding-top: 1.6rem;
    border-top: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.4);
}

.aag-kv + .aag-kv {
    margin-top: 1.2rem;
}

/* Chair line: 14px teal mail icon + semibold teal name, v0 mt-1/gap-1.5 */
.aag-kv .aag-meta-line {
    margin-top: 0.4rem;
    gap: 0.6rem;
}

.aag-kv .aag-meta-line::before {
    width: 1.4rem;
    height: 1.4rem;
    background-color: var(--py-brand-color-1);
}

/* Coordinator cards: the grid right after the "Coordinators" h3.
   v0: 12px grid gap, 16px card padding, 500-weight names, 12px emails. */
body:not(.home) h3 + .py-grid:has(.aag-category) {
    --py-grid-gap: 1.2rem;
}

body:not(.home) h3 + .py-grid:has(.aag-category) > .aag-committee-card {
    padding: 1.6rem;
}

body:not(.home) h3 + .py-grid:has(.aag-category) .aag-doc-card__name {
    margin-top: 0.6rem;
    font-weight: 500;
}

body:not(.home) h3 + .py-grid:has(.aag-category) .aag-kv__value {
    /* v0 re-measured 2026-08-14: role line is text-sm 14/20 with no
       margin, link is mt-1 at 14px (v0 changed since 2026-07-31) */
    margin-top: 0;
    font-size: 1.4rem;
    line-height: 2rem;
}

body:not(.home) h3 + .py-grid:has(.aag-category) .btn.aag-mail-link {
    margin-top: 0.4rem;
    font-size: 1.4rem;
}

/* ------------------------------------------------------------------ */
/* Regional report rows (v0 parity 2026-07-31): stacked full-width rows,
   pin tile + meta/title/author, locator map, Read/Download or pending pill */

.aag-report-grid {
    display: flex;
    flex-direction: column;
    gap: 2rem; /* v0 gap-5, re-measured 2026-08-14 (was 1.6) */
}

.aag-report-row {
    display: flex;
    flex-direction: column;
    gap: 1.6rem;
    padding: 2.4rem;
    background-color: var(--py-white);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    border-radius: 1.2rem;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

@media (min-width: 640px) {
    .aag-report-row {
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
    }
}

.aag-report-row--pending {
    opacity: 0.75;
    border-color: hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.3);
}

.aag-report-row__lead {
    display: flex;
    flex: 1;
    align-items: flex-start;
    gap: 1.6rem;
}

.aag-report-row__pin {
    position: relative;
    width: 4.4rem;
    height: 4.4rem;
    flex-shrink: 0;
    border-radius: 0.8rem;
    background-color: var(--py-brand-color-5);
}

.aag-report-row__pin::before {
    content: "";
    position: absolute;
    inset: 0;
    margin: auto;
    width: 2rem;
    height: 2rem;
    background-color: var(--py-brand-color-1);
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E") no-repeat center / contain;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E") no-repeat center / contain;
}

.aag-report-row__meta {
    font-size: 1.2rem;
    font-weight: 600;
    line-height: 1.6rem; /* v0 text-xs 12/16 */
    text-transform: uppercase;
    letter-spacing: 0.025em;
    color: var(--py-brand-color-9);
}

/* Tag-qualified: the global margin reset zeroed these (PB4 audit) */
h3.aag-report-row__title {
    margin-top: 0.4rem;
    font-size: 1.6rem;
    font-weight: 600;
    line-height: 1.5; /* v0 text-base 16/24 */
    color: var(--py-brand-color-1);
}

p.aag-report-row__author {
    margin-top: 0.2rem;
    font-size: 1.4rem;
    line-height: 2rem; /* v0 text-sm 14/20 */
    color: var(--py-slate);
}

.aag-report-row__map {
    display: block;
    width: 11.2rem;
    flex-shrink: 0;
}

.aag-report-row__map svg {
    display: block;
    width: 100%;
    height: auto;
}

.aag-report-row__actions {
    display: flex;
    flex-direction: column;
    gap: 0.8rem;
    flex-shrink: 0;
}

.aag-report-row__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.6rem;
    padding: 0.8rem 1.6rem;
    border-radius: 0.8rem;
    font-size: 1.4rem;
    font-weight: 600;
    text-decoration: none;
    transition: background-color 0.2s ease, color 0.2s ease;
}

.aag-report-row__btn::before {
    content: "";
    width: 1.6rem;
    height: 1.6rem;
    flex-shrink: 0;
    background-color: currentColor;
    -webkit-mask: var(--aag-icon) no-repeat center / contain;
    mask: var(--aag-icon) no-repeat center / contain;
}

.aag-report-row__btn--solid {
    --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 7v14'/%3E%3Cpath d='M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z'/%3E%3C/svg%3E");
    background-color: var(--py-brand-color-1);
    color: var(--py-white);
}

.aag-report-row__btn--solid:hover {
    background-color: var(--py-brand-color-3);
    color: var(--py-white);
}

.aag-report-row__btn--outline {
    --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z'/%3E%3Cpath d='M14 2v5a1 1 0 0 0 1 1h5'/%3E%3Cpath d='M12 18v-6'/%3E%3Cpath d='m9 15 3 3 3-3'/%3E%3C/svg%3E");
    background-color: var(--py-brand-color-5);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    color: var(--py-brand-color-1);
}

.aag-report-row__btn--outline:hover {
    background-color: var(--py-brand-color-1);
    color: var(--py-white);
}

.aag-report-row__pill {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.8rem 1.6rem;
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.4);
    border-radius: 0.8rem;
    background-color: var(--py-white);
    font-size: 1.4rem;
    font-weight: 500;
    color: var(--py-slate);
}

.aag-report-row__pill::before {
    content: "";
    width: 1.6rem;
    height: 1.6rem;
    flex-shrink: 0;
    background-color: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/svg%3E") no-repeat center / contain;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/svg%3E") no-repeat center / contain;
}

/* Pending rows: muted pin */
.aag-report-row--pending .aag-report-row__pin {
    background-color: hsl(var(--py-bc-5-hs), var(--py-bc-5-l), 0.5);
}

.aag-report-row--pending .aag-report-row__pin::before {
    background-color: hsl(var(--py-bc-1-hs), var(--py-bc-1-l), 0.6);
}

/* ------------------------------------------------------------------ */
/* Person detail page (single-people.php, v0 parity 2026-08-06) */

/* v0: narrow max-w-4xl container carrying its own padding (48/64 block,
   32 inline); the section wrapper contributes none. */
.py-section.aag-person-section {
    padding: 0;
}

.aag-person {
    max-width: 89.6rem;
    padding: 4.8rem var(--py-sec-pad-inline); /* v0 steps 16/24/32 like ours */
}

@media (min-width: 1024px) {
    .aag-person {
        padding-block: 6.4rem;
    }
}

.aag-person__back {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    font-size: 1.4rem;
    font-weight: 600;
    color: var(--py-brand-color-1);
    text-decoration: none;
    transition: color 0.2s ease;
}

.aag-person__back:hover {
    color: var(--py-brand-color-3);
}

.aag-person__back::before {
    content: "";
    width: 1.6rem;
    height: 1.6rem;
    flex-shrink: 0;
    background-color: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m12 19-7-7 7-7'/%3E%3Cpath d='M19 12H5'/%3E%3C/svg%3E") no-repeat center / contain;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m12 19-7-7 7-7'/%3E%3Cpath d='M19 12H5'/%3E%3C/svg%3E") no-repeat center / contain;
}

.aag-person__head {
    display: flex;
    flex-direction: column;
    gap: 3.2rem;
    margin-top: 3.2rem;
}

@media (min-width: 640px) {
    .aag-person__head {
        flex-direction: row;
        align-items: flex-start;
    }
}

.aag-person__photo {
    display: block;
    width: 16rem;
    height: 16rem;
    flex-shrink: 0;
    overflow: hidden;
    border-radius: 1.8rem;
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    background-color: var(--py-brand-color-5);
}

.aag-person__photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: top;
}

.aag-person__id {
    min-width: 0;
}

.aag-person__group {
    font-size: 1.4rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.025em;
    color: var(--py-brand-color-9);
}

/* v0 name: 30px mobile, 36px/40 from 640px (own scale — not the page h1).
   Scoped under .py-section to outrank the global inner-page h1/h2 rules
   and the .py-section margin reset (both (0,2,2)+; these are (0,3,1)). */
body:not(.home) .py-section .aag-person__name {
    --py-font-size: 3rem;
    --py-line-height: 1.2;
    margin-top: 0.8rem;
    color: var(--py-brand-color-1);
}

@media (min-width: 640px) {
    body:not(.home) .py-section .aag-person__name {
        --py-font-size: 3.6rem;
        --py-line-height: 1.11;
    }
}

/* Scoped like __name: the .py-section margin reset outranks bare classes */
body:not(.home) .py-section .aag-person__role {
    margin-top: 0.4rem;
    font-size: 1.8rem;
    font-weight: 600;
    line-height: 1.556; /* v0 text-lg: 18/28 */
    color: var(--py-slate);
}

body:not(.home) .py-section .aag-person__location {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    margin-top: 1.2rem;
    font-size: 1.4rem;
    color: var(--py-slate);
}

.aag-person__location::before {
    content: "";
    width: 1.6rem;
    height: 1.6rem;
    flex-shrink: 0;
    background-color: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E") no-repeat center / contain;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E") no-repeat center / contain;
}

/* Divider + body: bio column with optional region aside (v0 row-reverse) */
.aag-person__body {
    display: flex;
    flex-direction: column;
    gap: 3.2rem;
    margin-top: 4rem;
    padding-top: 3.2rem;
    border-top: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.4);
}

@media (min-width: 992px) {
    .aag-person__body {
        flex-direction: row-reverse;
        align-items: flex-start;
    }

    .aag-person__aside {
        width: 22.4rem;
        flex-shrink: 0;
    }
}

body:not(.home) .py-section .aag-person__aside-label {
    --py-font-size: 1.4rem;
    --py-line-height: 1.45;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.025em;
    color: var(--py-brand-color-1);
}

.aag-person__map {
    margin: 1.2rem 0 0;
    max-width: 22.4rem;
}

.aag-person__map svg {
    display: block;
    width: 100%;
    height: auto;
}

body:not(.home) .py-section .aag-person__aside-caption {
    margin-top: 0.8rem;
    font-size: 1.2rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.025em;
    text-align: center;
    color: var(--py-ink);
    max-width: 22.4rem;
}

.aag-person__bio {
    flex: 1;
    max-width: 67.2rem;
}

body:not(.home) .py-section .aag-person__bio-label {
    --py-font-size: 2rem;
    --py-line-height: 1.4;
    color: var(--py-brand-color-1);
}

.aag-person__bio-text {
    margin-top: 1.6rem;
}

.aag-person__bio-text p {
    font-size: 1.6rem;
    line-height: 1.625;
    color: var(--py-ink);
}

.aag-person__bio-text p + p {
    margin-top: 1.6rem;
}

/* ------------------------------------------------------------------ */
/* Membership page (v0 parity 2026-08-06) */

/* Soft wash band: v0 bg-primary-wash/40 (types section) */
.aag-band-wash-soft {
    background-color: hsl(var(--py-bc-5-hs), var(--py-bc-5-l), 0.4);
}

/* Icon heading row: 44px teal tile + heading (benefits sub-sections) */
.aag-icon-head {
    display: flex;
    align-items: center;
    gap: 1.2rem;
}

/* New icon glyphs (extracted from v0 2026-08-06) */
.aag-icon-sparkles { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z'/%3E%3Cpath d='M20 2v4'/%3E%3Cpath d='M22 4h-4'/%3E%3Ccircle cx='4' cy='20' r='2'/%3E%3C/svg%3E"); }
.aag-icon-gradcap { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z'/%3E%3Cpath d='M22 10v6'/%3E%3Cpath d='M6 12.5V16a6 3 0 0 0 12 0v-3.5'/%3E%3C/svg%3E"); }
.aag-icon-bookopen { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 7v14'/%3E%3Cpath d='M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z'/%3E%3C/svg%3E"); }
.aag-icon-users { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2'/%3E%3Cpath d='M16 3.128a4 4 0 0 1 0 7.744'/%3E%3Cpath d='M22 21v-2a4 4 0 0 0-3-3.87'/%3E%3Ccircle cx='9' cy='7' r='4'/%3E%3C/svg%3E"); }

/* Generic 4:3 rounded figure (aag-figure extra class; benefits photo row) */
.aag-fig-4x3 {
    aspect-ratio: 4 / 3;
    overflow: hidden;
    border-radius: 1.4rem;
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

.aag-fig-4x3 img {
    object-fit: cover;
}

/* 16:10 variant (benefits: image beside the what-you-receive card) */
.aag-fig-16x10 {
    overflow: hidden;
    border-radius: 1.4rem;
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
    min-height: 25.6rem;
}

.aag-fig-16x10 img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Publication mini-card: whole card links out, v0 24px pad */
.aag-pub-mini {
    display: flex;
    flex-direction: column;
    padding: 2.4rem;
    background-color: var(--py-white);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    border-radius: 1.4rem;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
    text-decoration: none;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.aag-pub-mini:hover {
    border-color: hsl(var(--py-bc-1-hs), var(--py-bc-1-l), 0.4);
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
}

.aag-pub-mini__head {
    display: flex;
    align-items: center;
    gap: 0.8rem;
}

.aag-pub-mini__head::before {
    content: "";
    width: 1.6rem;
    height: 1.6rem;
    flex-shrink: 0;
    background-color: var(--py-brand-color-9);
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 18h-5'/%3E%3Cpath d='M18 14h-8'/%3E%3Cpath d='M4 22h16a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v16a2 2 0 0 1-4 0v-9a2 2 0 0 1 2-2h2'/%3E%3Crect width='8' height='4' x='10' y='6' rx='1'/%3E%3C/svg%3E") no-repeat center / contain;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 18h-5'/%3E%3Cpath d='M18 14h-8'/%3E%3Cpath d='M4 22h16a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v16a2 2 0 0 1-4 0v-9a2 2 0 0 1 2-2h2'/%3E%3Crect width='8' height='4' x='10' y='6' rx='1'/%3E%3C/svg%3E") no-repeat center / contain;
}

body:not(.home) .py-section .aag-pub-mini__title {
    --py-font-size: 1.8rem;
    --py-line-height: 1.55;
    color: var(--py-brand-color-1);
}

body:not(.home) .py-section .aag-pub-mini__desc {
    flex: 1;
    margin-top: 1.2rem;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--py-ink);
}

body:not(.home) .py-section .aag-pub-mini__link {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    margin-top: 1.6rem;
    font-size: 1.4rem;
    font-weight: 600;
    color: var(--py-brand-color-1);
}

.aag-pub-mini__link::after {
    content: "";
    width: 1.2rem;
    height: 1.2rem;
    background-color: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6'/%3E%3Cpath d='M10 14 21 3'/%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3C/svg%3E") no-repeat center / contain;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6'/%3E%3Cpath d='M10 14 21 3'/%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3C/svg%3E") no-repeat center / contain;
}

/* Members directory band: wash row, icon + text left */
.aag-dir-band {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1.6rem;
    padding: 2.8rem;
    background-color: var(--py-brand-color-5);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    border-radius: 1.4rem;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

@media (min-width: 640px) {
    .aag-dir-band {
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
    }
}

.aag-dir-band__lead {
    display: flex;
    align-items: center;
    gap: 1.6rem;
}

body:not(.home) .py-section .aag-dir-band__title {
    --py-font-size: 1.8rem;
    --py-line-height: 1.55;
    color: var(--py-brand-color-1);
}

body:not(.home) .py-section .aag-dir-band__desc {
    margin-top: 0.2rem;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--py-ink);
}

/* Membership type cards */
.aag-mem-card {
    padding: 2.8rem;
}

body:not(.home) .py-section .aag-mem-card h3 {
    --py-font-size: 2rem;
    --py-line-height: 1.4;
}

/* Voting pill: muted chip with ballot icon */
.aag-mem-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    width: fit-content;
    margin-top: 0.8rem;
    padding: 0.4rem 1rem;
    border-radius: 0.8rem;
    background-color: var(--py-cloud);
    font-size: 1.2rem;
    font-weight: 600;
    color: var(--py-ink);
}

.aag-mem-pill::before {
    content: "";
    width: 1.4rem;
    height: 1.4rem;
    flex-shrink: 0;
    background-color: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 12 2 2 4-4'/%3E%3Cpath d='M5 7c0-1.1.9-2 2-2h10a2 2 0 0 1 2 2v12H5V7Z'/%3E%3Cpath d='M22 19H2'/%3E%3C/svg%3E") no-repeat center / contain;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 12 2 2 4-4'/%3E%3Cpath d='M5 7c0-1.1.9-2 2-2h10a2 2 0 0 1 2 2v12H5V7Z'/%3E%3Cpath d='M22 19H2'/%3E%3C/svg%3E") no-repeat center / contain;
}

/* Dues box: wash panel, small label over large heading-font value */
.aag-mem-dues {
    display: block;
    margin-top: 2rem;
    padding: 1.6rem;
    border-radius: 1rem;
    background-color: var(--py-brand-color-5);
}

body:not(.home) .py-section .aag-mem-dues__label {
    font-size: 1.2rem;
    line-height: 1.35;
    color: var(--py-slate);
}

body:not(.home) .py-section .aag-mem-dues__value {
    margin-top: 0.2rem;
    font-family: var(--py-font-family-heading);
    font-size: 2.4rem;
    font-weight: 700;
    line-height: 1.35;
    color: var(--py-brand-color-1);
}

body:not(.home) .py-section .aag-mem-card__desc {
    margin-top: 2rem;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--py-slate);
    flex: 1 1 auto;
}

body:not(.home) .py-section .aag-mem-card__elig {
    margin-top: 2rem;
    font-size: 1.2rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.025em;
    color: var(--py-brand-color-9);
}

/* Small check-list variant (14px, tighter) for eligibility */
.aag-check-list--sm {
    margin-top: 1.2rem;
}

.aag-check-list--sm li {
    font-size: 1.4rem;
    line-height: 1.625;
}

.aag-mem-card .btn {
    margin-top: 2rem;
    align-self: flex-start;
}

/* Student & PDF card (2026-08-31 committee review): its two Apply buttons
   sit side by side, left-aligned, with the standard .aag-btn-row gap
   (stacked below 640px). The ROW takes the 2rem top offset instead of
   the buttons, so it bottom-aligns with the sibling cards' single buttons. */
.aag-mem-card .aag-mem-card__btns {
    margin-top: 2rem;
}

.aag-mem-card .aag-mem-card__btns .btn {
    margin-top: 0;
}

/* Icon-head heading + dir-band text stack + dues footnote */
body:not(.home) .py-section .aag-icon-head h3 {
    --py-font-size: 2rem;
    --py-line-height: 1.4;
    color: var(--py-brand-color-1);
}

/* Standalone icon-heads (direct container children) are larger in v0 */
body:not(.home) .py-section .py-container > .aag-icon-head h3 {
    --py-font-size: 2.4rem;
    --py-line-height: 1.35;
}

.aag-dir-band__text {
    display: block;
}

body:not(.home) .py-section .aag-mem-note {
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--py-slate);
}

/* Explicit check-list colour modifiers (membership flips the tint pattern:
   copper checks on wash card, teal on white cards) */
.aag-check-list.aag-check-list--copper li::before {
    background-color: var(--py-brand-color-10);
}

.aag-check-list.aag-check-list--copper li::after {
    background-color: var(--py-brand-color-9);
}

.aag-check-list.aag-check-list--teal li::before {
    background-color: hsl(var(--py-bc-1-hs), var(--py-bc-1-l), 0.1);
}

.aag-check-list.aag-check-list--teal li::after {
    background-color: var(--py-brand-color-1);
}

/* v0 rhythm: 64px (not the 30px container gap) before standalone icon-heads
   and the figure rows in the benefits flow (flex gap + margin = 64) */
.py-container > .aag-icon-head,
.py-container > .py-grid:has(> .wp-block-piney-aag-figure:first-child) {
    margin-top: 3.4rem;
}

/* Copper icon-tile variant (v0 membership: prof-dev + student tiles) */
.aag-icon-tile.aag-icon-tile--copper {
    background-color: var(--py-brand-color-10);
}

.aag-icon-tile.aag-icon-tile--copper::before {
    background-color: var(--py-brand-color-9);
}

/* Large check-list variant (v0 membership benefit cards: 16px items) */
.aag-check-list.aag-check-list--lg li {
    font-size: 1.6rem;
    line-height: 1.625; /* v0: 16/26 */
    color: var(--py-ink);
}

/* Large section lede (v0 membership: 18px/29.25, max-w-3xl) */
body:not(.home) .py-flex:has(> .aag-eyebrow) > .aag-measure.aag-lede-lg {
    --py-font-size: 1.8rem;
    --py-line-height: 1.625;
    max-width: 76.8rem;
}

/* Per-image figure fits (v0 membership row): diagrams contain w/ padding,
   the geochem map is cover anchored right so its legend survives the crop */
.aag-fig-4x3.aag-fig--contain img {
    object-fit: contain;
    padding: 1.2rem;
}

.aag-fig-4x3.aag-fig--right img {
    object-position: right center;
}

/* ==========================================================================
   Events page — event calendar + feature card blocks (v0 parity 2026-08-07)
   ========================================================================== */

/* --- piney/aag-event-calendar ------------------------------------------- */

.aag-event-cal--calendar {
    margin-top: 1.8rem; /* v0 48px minus 3rem container gap */
}

.aag-event-cal--aag {
    margin-top: 1rem; /* v0 40px minus 3rem container gap */
}

.aag-event-cal__year + .aag-event-cal__year {
    margin-top: 4.8rem;
}

body:not(.home) .py-section .aag-event-cal__year-head {
    display: flex;
    align-items: center;
    gap: 1.6rem;
    margin: 0;
    font-family: var(--py-font-family-heading);
    font-size: 2.4rem;
    font-weight: 700;
    line-height: 1.333;
    color: var(--py-brand-color-1);
}

.aag-event-cal__year-head::after {
    content: "";
    height: 1px;
    flex: 1;
    background-color: hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
}

.aag-event-cal__list {
    display: flex;
    flex-direction: column;
    gap: 1.2rem;
    margin: 2.4rem 0 0;
    padding: 0;
    list-style: none;
}

.aag-event-row {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1.2rem;
    padding: 2rem;
    background-color: var(--py-white);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    border-radius: 1.4rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
    text-decoration: none;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.aag-event-row:hover {
    border-color: hsl(var(--py-bc-1-hs), var(--py-bc-1-l), 0.4);
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
}

.aag-event-row--featured {
    background-color: hsl(var(--py-bc-8-hs), var(--py-bc-8-l), 0.05);
    border-color: hsl(var(--py-bc-8-hs), var(--py-bc-8-l), 0.4);
}

.aag-event-row__date {
    display: flex;
    align-items: center;
    gap: 0.8rem;
    flex-shrink: 0;
    font-size: 1.4rem;
    font-weight: 600;
    line-height: 1.43;
    color: var(--py-brand-color-1);
}

.aag-event-row--featured .aag-event-row__date {
    color: var(--py-brand-color-9);
}

.aag-event-row__star {
    width: 1.6rem;
    height: 1.6rem;
    flex-shrink: 0;
    fill: var(--py-brand-color-8);
    color: var(--py-brand-color-8);
}

.aag-event-row__body {
    min-width: 0;
    flex: 1;
}

.aag-event-row__title {
    display: block;
    font-size: 1.6rem;
    font-weight: 500;
    line-height: 1.5;
    color: var(--py-brand-color-1);
}

.aag-event-row__loc {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    margin-top: 0.2rem;
    font-size: 1.4rem;
    font-weight: 400;
    line-height: 1.43;
    color: var(--py-ink);
}

.aag-event-row__pin {
    width: 1.4rem;
    height: 1.4rem;
    flex-shrink: 0;
}

.aag-event-row__ext {
    display: none;
    width: 1.6rem;
    height: 1.6rem;
    flex-shrink: 0;
    color: var(--py-ink);
    transition: color 0.2s ease;
}

.aag-event-row:hover .aag-event-row__ext {
    color: var(--py-brand-color-1);
}

@media (min-width: 640px) {
    .aag-event-row {
        flex-direction: row;
        align-items: center;
        gap: 2.4rem;
    }

    .aag-event-row__date {
        width: 16rem;
    }

    .aag-event-row__ext {
        display: block;
    }
}

/* Empty state (group=aag with no upcoming events) */
.aag-event-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.6rem;
    padding: 5.6rem 2.4rem;
    background-color: hsl(var(--py-white-base), 0.6);
    border: 1px dashed var(--py-brand-color-4);
    border-radius: 1.8rem;
    text-align: center;
}

.aag-event-empty__tile {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 5.6rem;
    height: 5.6rem;
    border-radius: 50%;
    background-color: var(--py-brand-color-5);
}

.aag-event-empty__icon {
    width: 2.8rem;
    height: 2.8rem;
    color: var(--py-brand-color-1);
}

body:not(.home) .py-section .aag-event-empty__title {
    margin: 0;
    font-family: var(--py-font-family-heading);
    font-size: 2rem;
    font-weight: 600;
    line-height: 1.4;
    color: var(--py-brand-color-1);
}

body:not(.home) .py-section .aag-event-empty__text {
    max-width: 44.8rem;
    margin: 0;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--py-ink);
}

/* --- piney/aag-event-feature -------------------------------------------- */

.aag-event-feature {
    display: grid;
    grid-template-columns: 1fr;
    margin-top: 2.6rem; /* v0 56px minus 3rem container gap */
    background-color: var(--py-white);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    border-radius: 1.8rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
    overflow: hidden;
}

.aag-event-feature__media {
    position: relative;
    min-height: 25.6rem;
}

.aag-event-feature__media img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.aag-event-feature__body {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 2rem;
    padding: 3.2rem;
}

.aag-event-feature__pill {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    width: fit-content;
    padding: 0.4rem 1.2rem;
    background-color: hsl(var(--py-bc-8-hs), var(--py-bc-8-l), 0.15);
    border-radius: 999rem;
    font-size: 1.2rem;
    font-weight: 600;
    line-height: 1.333;
    letter-spacing: 0.3px;
    text-transform: uppercase;
    color: var(--py-brand-color-9);
}

body:not(.home) .py-section .aag-event-feature__title {
    margin: 0;
    font-family: var(--py-font-family-heading);
    font-size: 2.4rem;
    font-weight: 700;
    line-height: 1.333;
    color: var(--py-brand-color-1);
}

.aag-event-feature__meta {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

body:not(.home) .py-section .aag-event-feature__meta p {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin: 0;
    font-size: 1.6rem;
    line-height: 1.5;
    color: var(--py-ink);
}

.aag-event-feature__date {
    font-weight: 500;
}

.aag-event-feature__icon {
    width: 2rem;
    height: 2rem;
    flex-shrink: 0;
    color: var(--py-brand-color-1);
}

.aag-event-feature__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 1.2rem;
    margin-top: 0.8rem;
}

.aag-event-feature__cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.6rem;
    height: 3.2rem;
    padding: 0 1rem;
    background-color: var(--py-brand-color-8);
    border: 1px solid transparent;
    border-radius: 1rem;
    font-size: 1.4rem;
    font-weight: 500;
    line-height: 1.43;
    color: var(--py-white);
    text-decoration: none;
    white-space: nowrap;
    transition: opacity 0.2s ease;
}

.aag-event-feature__cta:hover {
    opacity: 0.8;
    color: var(--py-white);
}

.aag-event-feature__ext {
    width: 1.6rem;
    height: 1.6rem;
}

@media (min-width: 1024px) {
    .aag-event-feature {
        grid-template-columns: 1fr 1fr;
    }

    .aag-event-feature__media {
        min-height: 100%;
    }

    .aag-event-feature__body {
        padding: 4rem;
    }
}

/* ==========================================================================
   Events page — static components (v0 parity 2026-08-07)
   ========================================================================== */

/* Hero figure: v0 keynote image is anchored center bottom (inline style) */
.aag-hero-row .aag-hero-img--bottom img {
    object-position: center bottom;
}

/* Events sections step to 96px block padding at 1024 (v0 py-16 lg:py-24),
   vs the 80px token default. Token-var override, editor controls unaffected. */
.py-section.aag-sec-lg {
    --py-sec-pad-block: 6.4rem;
}

@media (min-width: 1024px) {
    .py-section.aag-sec-lg {
        --py-sec-pad-block: 9.6rem;
    }
}

/* IAGS benefit mini-cards: 40px wash tile + 14px text, 1/2/3 col grid */
.aag-benefit-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.6rem;
    margin-top: 1rem; /* v0 40px minus 3rem container gap */
}

@media (min-width: 640px) {
    .aag-benefit-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (min-width: 1024px) {
    .aag-benefit-grid {
        grid-template-columns: repeat(3, 1fr);
    }
}

.aag-benefit-card {
    display: flex;
    align-items: flex-start;
    gap: 1.2rem;
    padding: 2rem;
    background-color: var(--py-white);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    border-radius: 1.4rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
}

.aag-icon-tile--40 {
    width: 4rem;
    height: 4rem;
}

body:not(.home) .py-section .aag-benefit-card p {
    margin: 0;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--py-ink);
}

/* IAGS sub-cards (Past symposia / Host guidelines): 44px tile, 28px pad */
.aag-sub-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 2.4rem;
    margin-top: 0.2rem; /* v0 32px minus 3rem container gap */
}

@media (min-width: 768px) {
    .aag-sub-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

.aag-sub-card {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1.2rem;
    padding: 2.8rem;
    background-color: var(--py-white);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    border-radius: 1.4rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
}

body:not(.home) .py-section .aag-sub-card h3 {
    margin: 0;
    --py-font-size: 1.8rem;
    --py-line-height: 1.55;
    font-weight: 600;
}

body:not(.home) .py-section .aag-sub-card p {
    margin: 0;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--py-ink);
}

.aag-sub-card .aag-mail-link {
    margin-top: 0.4rem;
}

/* Inline link with a leading masked glyph (mail on the host-guidelines card) */
.btn.aag-link-glyph {
    gap: 0.6rem;
}

.btn.aag-link-glyph::before {
    content: "";
    width: 1.6rem;
    height: 1.6rem;
    flex-shrink: 0;
    background-color: currentColor;
    -webkit-mask: var(--aag-icon) no-repeat center / contain;
    mask: var(--aag-icon) no-repeat center / contain;
}

/* Calendar footnote box (tinted, info icon, mailto) */
.aag-footnote {
    display: flex;
    align-items: flex-start;
    gap: 1.2rem;
    margin-top: 1.8rem; /* v0 48px minus 3rem container gap */
    padding: 2rem;
    background-color: var(--py-brand-color-5);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    border-radius: 1.4rem;
}

.aag-footnote::before {
    content: "";
    width: 2rem;
    height: 2rem;
    flex-shrink: 0;
    margin-top: 0.2rem;
    background-color: var(--py-brand-color-1);
    -webkit-mask: var(--aag-icon) no-repeat center / contain;
    mask: var(--aag-icon) no-repeat center / contain;
}

body:not(.home) .py-section .aag-footnote p {
    margin: 0;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--py-ink);
}

.aag-footnote a {
    font-weight: 600;
    color: var(--py-brand-color-1);
    text-decoration: none;
    text-underline-offset: 2px;
}

.aag-footnote a:hover {
    text-decoration: underline;
}

/* New icon glyphs (extracted from v0 2026-08-07, Events page) */
.aag-icon-earth { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21.54 15H17a2 2 0 0 0-2 2v4.54'/%3E%3Cpath d='M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17'/%3E%3Cpath d='M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05'/%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3C/svg%3E"); }
.aag-icon-lightbulb { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5'/%3E%3Cpath d='M9 18h6'/%3E%3Cpath d='M10 22h4'/%3E%3C/svg%3E"); }
.aag-icon-filetext { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z'/%3E%3Cpath d='M14 2v5a1 1 0 0 0 1 1h5'/%3E%3Cpath d='M10 9H8'/%3E%3Cpath d='M16 13H8'/%3E%3Cpath d='M16 17H8'/%3E%3C/svg%3E"); }
.aag-icon-network { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='16' y='16' width='6' height='6' rx='1'/%3E%3Crect x='2' y='16' width='6' height='6' rx='1'/%3E%3Crect x='9' y='2' width='6' height='6' rx='1'/%3E%3Cpath d='M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3'/%3E%3Cpath d='M12 12V8'/%3E%3C/svg%3E"); }
.aag-icon-archive { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='20' height='5' x='2' y='3' rx='1'/%3E%3Cpath d='M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8'/%3E%3Cpath d='M10 12h4'/%3E%3C/svg%3E"); }
.aag-icon-clipcheck { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E"); }
.aag-icon-info { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 16v-4'/%3E%3Cpath d='M12 8h.01'/%3E%3C/svg%3E"); }
.aag-icon-mailglyph { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7'/%3E%3Crect x='2' y='4' width='20' height='16' rx='2'/%3E%3C/svg%3E"); }

/* ==========================================================================
   Publications — download-gate button + lead modal (2026-08-07)
   ========================================================================== */

[x-cloak] {
    display: none !important;
}

/* v0 "Download (free)" button: copper, 14/600 white, download icon */
.aag-dl-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.6rem;
    padding: 1rem 2rem;
    background-color: var(--py-brand-color-8);
    border: 0;
    border-radius: 1rem;
    font-family: inherit;
    font-size: 1.4rem;
    font-weight: 600;
    line-height: 1.43;
    color: var(--py-white);
    text-decoration: none;
    cursor: pointer;
    transition: opacity 0.2s ease;
}

.aag-dl-btn:hover {
    opacity: 0.9;
    color: var(--py-white);
}

.aag-dl-btn--inert {
    cursor: default;
}

.aag-dl-btn--inert:hover {
    opacity: 1;
}

.aag-dl-btn__icon {
    width: 1.6rem;
    height: 1.6rem;
    flex-shrink: 0;
}

/* Modal */
.aag-gate-overlay {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem;
    background-color: rgba(15, 33, 38, 0.55);
}

.aag-gate-modal {
    position: relative;
    width: 100%;
    max-width: 48rem;
    max-height: 90vh;
    overflow-y: auto;
    padding: 3.2rem;
    background-color: var(--py-white);
    border-radius: 1.8rem;
    box-shadow: 0 20px 50px rgba(0, 0, 0, 0.25);
}

.aag-gate-modal__close {
    position: absolute;
    top: 1.6rem;
    right: 1.6rem;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 3.2rem;
    height: 3.2rem;
    padding: 0;
    background: transparent;
    border: 0;
    border-radius: 0.8rem;
    color: var(--py-ink);
    cursor: pointer;
}

.aag-gate-modal__close:hover {
    background-color: var(--py-brand-color-5);
}

.aag-gate-modal__close-icon {
    width: 1.8rem;
    height: 1.8rem;
}

body:not(.home) .py-section .aag-gate-modal__title,
.aag-gate-modal__title {
    margin: 0;
    font-family: var(--py-font-family-heading);
    font-size: 2rem;
    font-weight: 700;
    line-height: 1.4;
    color: var(--py-brand-color-1);
}

body:not(.home) .py-section .aag-gate-modal__note,
.aag-gate-modal__note {
    margin: 0.8rem 0 0;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--py-ink);
}

/* Form: v0 gate fields (labels 14/600 teal, inputs 6px radius, trim/60) */
.aag-gate-form {
    display: flex;
    flex-direction: column;
    gap: 1.6rem;
    margin-top: 2rem;
}

.aag-gate-form__row {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.6rem;
}

@media (min-width: 640px) {
    .aag-gate-form__row {
        grid-template-columns: 1fr 1fr;
    }
}

/* block, not flex-column: the required-* span must stay inline with the
   label text (flex column pushed it onto its own line) */
.aag-gate-form label {
    display: block;
    font-size: 1.4rem;
    font-weight: 600;
    line-height: 1.43;
    color: var(--py-brand-color-1);
}

.aag-gate-form label input {
    margin-top: 0.8rem; /* v0 mt-2 */
}

.aag-gate-form label .aag-gate-form__error {
    display: block;
    margin-top: 0.6rem;
}

.aag-gate-form__req {
    display: inline;
    color: var(--py-brand-color-8);
}

.aag-gate-form input {
    width: 100%;
    padding: 0.8rem 1.2rem;
    background-color: var(--py-white);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.6);
    border-radius: 0.6rem;
    font-family: inherit;
    font-size: 1.4rem;
    font-weight: 400;
    line-height: 1.43;
    color: var(--py-ink);
}

.aag-gate-form input:focus {
    outline: none;
    border-color: var(--py-brand-color-1);
    box-shadow: 0 0 0 3px hsl(var(--py-bc-1-hs), var(--py-bc-1-l), 0.2);
}

.aag-gate-form input.is-invalid {
    border-color: #b3261e;
}

.aag-gate-form__error {
    font-size: 1.3rem;
    font-weight: 400;
    color: #b3261e;
}

.aag-gate-form__hp {
    position: absolute !important;
    left: -9999px !important;
    width: 1px !important;
    height: 1px !important;
    opacity: 0;
}

.aag-gate-form__submit {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    align-self: flex-start;
    height: 3.2rem;
    padding: 0 1.6rem;
    background-color: var(--py-brand-color-1);
    border: 0;
    border-radius: 1rem;
    font-family: inherit;
    font-size: 1.4rem;
    font-weight: 500;
    color: var(--py-white);
    cursor: pointer;
    transition: opacity 0.2s ease;
}

.aag-gate-form__submit:hover {
    opacity: 0.85;
}

.aag-gate-form__submit:disabled {
    opacity: 0.6;
    cursor: default;
}

/* ==========================================================================
   Publications page — components (v0 parity 2026-08-07, see pubs-spec.md)
   Margins on direct container children are v0 minus the 3rem container gap.
   ========================================================================== */

/* Cover layout: 280px cover + content column */
.aag-pub-layout {
    display: grid;
    grid-template-columns: 1fr;
    gap: 4rem;
    align-items: start;
    margin-top: 1.8rem; /* v0 48px minus 3rem container gap */
}

@media (min-width: 1024px) {
    .aag-pub-layout {
        grid-template-columns: 28rem 1fr;
    }
}

.aag-pub-cover {
    display: block;
    width: 100%;
    max-width: 28rem;
    margin-inline: auto;
}

.aag-pub-cover__img {
    margin: 0;
}

.aag-pub-cover__img img {
    display: block;
    width: 100%;
    height: auto;
    border-radius: 0;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
}

.btn.aag-access-btn {
    width: 100%;
    height: 4rem;
    margin-top: 1.6rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.6rem;
    padding: 1rem 1.6rem;
    background-color: var(--py-brand-color-5);
    border: 0;
    border-radius: 1rem;
    box-shadow: none;
    font-size: 1.4rem;
    font-weight: 600;
    color: var(--py-brand-color-1);
}

.btn.aag-access-btn::after {
    content: "";
    width: 1.6rem;
    height: 1.6rem;
    flex-shrink: 0;
    background-color: currentColor;
    -webkit-mask: var(--aag-arrow) no-repeat center / contain;
    mask: var(--aag-arrow) no-repeat center / contain;
}

.btn.aag-access-btn:hover {
    background-color: var(--py-brand-color-1);
    color: var(--py-white);
    opacity: 1;
}

.aag-pub-body {
    display: block;
    min-width: 0;
}

/* Rhythm inside the content column */
body:not(.home) .py-section .aag-pub-body h3 {
    margin: 3.2rem 0 0;
    font-family: var(--py-font-family-heading);
    font-size: 1.8rem;
    font-weight: 700;
    line-height: 1.55;
    color: var(--py-brand-color-1);
}

.aag-pub-body > :first-child,
body:not(.home) .py-section .aag-pub-body > :first-child {
    margin-top: 0;
}

.aag-pub-body .aag-check-list {
    margin-top: 1.6rem;
}

/* Editor card (GEEA) */
.aag-editor-card {
    display: block;
    padding: 2.4rem;
    background-color: var(--py-white);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    border-radius: 1.4rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
}

body:not(.home) .py-section .aag-editor-card__eyebrow {
    margin: 0;
    font-size: 1.2rem;
    font-weight: 600;
    line-height: 1.333;
    letter-spacing: 0.3px;
    text-transform: uppercase;
    color: var(--py-brand-color-9);
}

body:not(.home) .py-section .aag-editor-card__name {
    margin: 0.4rem 0 0;
    font-family: var(--py-font-family-heading);
    font-size: 1.8rem;
    font-weight: 700;
    line-height: 1.55;
    color: var(--py-brand-color-1);
}

body:not(.home) .py-section .aag-editor-card__meta {
    margin: 0;
    font-size: 1.4rem;
    line-height: 1.43;
    color: var(--py-ink);
}

/* Link tile grid (Explore the journal) */
.aag-link-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.2rem;
    margin-top: 1.6rem;
}

@media (min-width: 640px) {
    .aag-link-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

.btn.aag-link-tile {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.8rem;
    width: 100%; /* fill the grid cell (v0 tiles are cell-wide) */
    height: auto;
    padding: 1.2rem 1.6rem;
    background-color: var(--py-white);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    border-radius: 1rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
    font-size: 1.4rem;
    font-weight: 500;
    text-align: left;
    color: var(--py-brand-color-1);
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.btn.aag-link-tile::after {
    content: "";
    width: 1.4rem;
    height: 1.4rem;
    flex-shrink: 0;
    background-color: var(--py-ink);
    -webkit-mask: var(--aag-ext) no-repeat center / contain;
    mask: var(--aag-ext) no-repeat center / contain;
}

.btn.aag-link-tile:hover {
    border-color: hsl(var(--py-bc-1-hs), var(--py-bc-1-l), 0.4);
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
    background-color: var(--py-white);
    color: var(--py-brand-color-1);
    opacity: 1;
}

/* Tinted note box (Open Access) — container-level sibling */
.aag-note-box {
    display: block;
    margin-top: 0.2rem; /* v0 32px minus 3rem container gap */
    padding: 2.4rem;
    background-color: var(--py-brand-color-5);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    border-radius: 1.4rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
}

body:not(.home) .py-section .aag-note-box p {
    margin: 0;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--py-ink);
}

.aag-note-box strong {
    font-weight: 600;
    color: var(--py-brand-color-1);
}

/* Cameron-Hall medal card — copper tinted, 48px award tile via pseudos */
.aag-medal-card {
    position: relative;
    display: grid;
    grid-template-columns: 4.8rem 1fr;
    column-gap: 1.6rem;
    row-gap: 0.8rem;
    align-items: start;
    margin-top: 0.2rem; /* v0 32px minus 3rem container gap */
    padding: 2.8rem;
    background-color: hsl(var(--py-bc-10-hs), var(--py-bc-10-l), 0.4);
    border: 1px solid hsl(var(--py-bc-8-hs), var(--py-bc-8-l), 0.3);
    border-radius: 1.4rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
}

.aag-medal-card::before {
    content: "";
    grid-row: 1 / 3;
    width: 4.8rem;
    height: 4.8rem;
    border-radius: 1rem;
    background-color: var(--py-brand-color-10);
}

.aag-medal-card::after {
    content: "";
    position: absolute;
    top: 4rem;   /* 2.8rem padding + (4.8 - 2.4)/2 */
    left: 4rem;
    width: 2.4rem;
    height: 2.4rem;
    background-color: var(--py-brand-color-9);
    -webkit-mask: var(--aag-icon) no-repeat center / contain;
    mask: var(--aag-icon) no-repeat center / contain;
}

body:not(.home) .py-section .aag-medal-card h3 {
    grid-column: 2;
    margin: 0;
    font-family: var(--py-font-family-heading);
    font-size: 1.8rem;
    font-weight: 700;
    line-height: 1.55;
    color: var(--py-brand-color-1);
}

body:not(.home) .py-section .aag-medal-card p {
    grid-column: 2;
    margin: 0;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--py-ink);
}

/* Download / outline / link buttons */
.aag-btn-row {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1.2rem;
    margin-top: 2.4rem;
}

@media (min-width: 640px) {
    .aag-btn-row {
        flex-direction: row;
        align-items: center;
        column-gap: 1.6rem;
        row-gap: 0.8rem;
        flex-wrap: wrap;
    }
}

.aag-pub-body .aag-btn-row:has(.aag-btn-dl) {
    margin-top: 3.2rem;
}

.btn.aag-btn-dl::before {
    content: "";
    width: 1.6rem;
    height: 1.6rem;
    flex-shrink: 0;
    background-color: currentColor;
    -webkit-mask: var(--aag-dl) no-repeat center / contain;
    mask: var(--aag-dl) no-repeat center / contain;
}

.btn.btn--accent.aag-btn-dl {
    height: 4rem;
    padding: 1rem 2rem;
    gap: 0.6rem;
    font-weight: 600;
}

body:not(.home) .py-section .aag-lock-note {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    margin: 0;
    font-size: 1.2rem;
    font-weight: 500;
    line-height: 1.333;
    color: var(--py-ink);
}

.aag-lock-note::before {
    content: "";
    width: 1.4rem;
    height: 1.4rem;
    flex-shrink: 0;
    background-color: hsl(0, 0%, 27%);
    -webkit-mask: var(--aag-lock) no-repeat center / contain;
    mask: var(--aag-lock) no-repeat center / contain;
}

/* Full article list: bordered white tile (A) */
.btn.aag-btn-outline {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.8rem;
    width: 100%;
    max-width: 38.4rem;
    height: auto;
    margin-top: 2rem;
    padding: 1.2rem 1.6rem;
    background-color: var(--py-white);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    border-radius: 1rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
    font-size: 1.4rem;
    font-weight: 600;
    text-align: left;
    color: var(--py-brand-color-1);
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.btn.aag-btn-outline::after {
    content: "";
    width: 1.4rem;
    height: 1.4rem;
    flex-shrink: 0;
    background-color: var(--py-ink);
    -webkit-mask: var(--aag-filedown) no-repeat center / contain;
    mask: var(--aag-filedown) no-repeat center / contain;
}

.btn.aag-btn-outline:hover {
    border-color: hsl(var(--py-bc-1-hs), var(--py-bc-1-l), 0.4);
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
    background-color: var(--py-white);
    color: var(--py-brand-color-1);
    opacity: 1;
}

/* Instructions for Contributors: wash chip variant (B), inside contrib card.
   v0: inline-flex fit-to-text, file-down icon on the LEFT. */
.aag-contrib-card .btn.aag-btn-outline {
    display: inline-flex;
    width: fit-content;
    max-width: none;
    justify-content: center;
    margin-top: 1.6rem;
    padding: 0.8rem 1.6rem;
    gap: 0.6rem;
    background-color: var(--py-brand-color-5);
    border: 0;
    box-shadow: none;
}

.aag-contrib-card .btn.aag-btn-outline::after {
    content: none;
}

.aag-contrib-card .btn.aag-btn-outline::before {
    content: "";
    width: 1.6rem;
    height: 1.6rem;
    flex-shrink: 0;
    background-color: currentColor;
    -webkit-mask: var(--aag-filedown) no-repeat center / contain;
    mask: var(--aag-filedown) no-repeat center / contain;
}

.aag-contrib-card .btn.aag-btn-outline:hover {
    background-color: var(--py-brand-color-1);
    color: var(--py-white);
}

/* Contributors card */
.aag-contrib-card {
    display: block;
    margin-top: 1.6rem;
    padding: 2.4rem;
    background-color: var(--py-white);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    border-radius: 1.4rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
}

body:not(.home) .py-section .aag-contrib-card h3 {
    margin: 0;
    font-family: var(--py-font-family-heading);
    font-size: 1.6rem;
    font-weight: 700;
    line-height: 1.5;
    color: var(--py-brand-color-1);
}

body:not(.home) .py-section .aag-contrib-card p {
    margin: 0.8rem 0 0;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--py-ink);
}

/* Advertise card: icon column + text column, rates block full width */
.aag-advert-card {
    display: grid;
    grid-template-columns: 4.8rem 1fr;
    column-gap: 1.6rem;
    align-items: start;
    margin-top: 0.2rem; /* v0 32px minus 3rem container gap */
    padding: 2.8rem;
    background-color: var(--py-white);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    border-radius: 1.4rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
}

.aag-advert-card > .aag-icon-tile {
    grid-column: 1;
    width: 4.8rem;
    height: 4.8rem;
}

.aag-advert-card > * {
    grid-column: 2;
}

body:not(.home) .py-section .aag-advert-card h3 {
    margin: 0;
    font-family: var(--py-font-family-heading);
    font-size: 1.8rem;
    font-weight: 700;
    line-height: 1.55;
    color: var(--py-brand-color-1);
}

body:not(.home) .py-section .aag-advert-card p {
    margin: 0.8rem 0 0;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--py-ink);
}

.aag-advert-card .btn.aag-mail-link {
    margin-top: 1.2rem;
    gap: 0.6rem;
    line-height: 1.43; /* v0 20px box; .btn base line-height:1 squashes it */
    color: var(--py-brand-color-8);
}

.aag-advert-card .btn.aag-mail-link::before {
    content: "";
    width: 1.6rem;
    height: 1.6rem;
    flex-shrink: 0;
    background-color: currentColor;
    -webkit-mask: var(--aag-mailico) no-repeat center / contain;
    mask: var(--aag-mailico) no-repeat center / contain;
}

/* p.aag-rates-label outranks the generic .aag-advert-card p margin rule
   (which was silently reducing the 24px gap to 8px — specificity trap) */
body:not(.home) .py-section .aag-advert-card p.aag-rates-label {
    grid-column: 1 / -1;
    margin: 2.9rem 0 0; /* v0 renders 29px below the manager link */
    font-size: 1.2rem;
    font-weight: 600;
    line-height: 1.333;
    letter-spacing: 0.3px;
    text-transform: uppercase;
    color: var(--py-ink);
}

/* Ad-rate table */
.aag-advert-card .wp-block-table {
    grid-column: 1 / -1;
    margin: 1.2rem 0 0;
    overflow-x: auto;
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.4);
    border-radius: 1rem;
}

.aag-advert-card .wp-block-table table {
    width: 100%;
    border-collapse: collapse;
    font-size: 1.4rem;
    line-height: 1.43;
}

.aag-advert-card .wp-block-table th,
.aag-advert-card .wp-block-table td {
    border: 0;
    text-align: left;
}

.aag-advert-card .wp-block-table th {
    padding: 1rem 1.6rem;
    background-color: var(--py-brand-color-5);
    font-weight: 600;
    color: var(--py-brand-color-1);
}

.aag-advert-card .wp-block-table th:nth-child(2) {
    color: var(--py-ink);
}

.aag-advert-card .wp-block-table td {
    padding: 1.2rem 1.6rem;
    color: var(--py-ink);
}

.aag-advert-card .wp-block-table td:first-child {
    font-weight: 600;
    color: var(--py-brand-color-1);
}

.aag-advert-card .wp-block-table th:nth-child(n+3),
.aag-advert-card .wp-block-table td:nth-child(n+3) {
    text-align: right;
    font-weight: 600;
}

.aag-advert-card .wp-block-table td:nth-child(2) {
    font-weight: 400;
}

.aag-advert-card .wp-block-table tbody tr:nth-child(even) {
    background-color: hsl(var(--py-bc-5-hs), var(--py-bc-5-l), 0.4);
}

/* Barringer byline + review card */
body:not(.home) .py-flex:has(> .aag-eyebrow) > .aag-pub-byline {
    margin-top: 0.4rem;
    --py-font-size: 1.6rem;
    --py-line-height: 1.5;
}

.aag-review-card {
    display: block;
    margin-top: 2.4rem;
    padding: 2rem;
    background-color: var(--py-white);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    border-radius: 1.4rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
}

body:not(.home) .py-section .aag-mini-label {
    margin: 0;
    font-size: 1.2rem;
    font-weight: 600;
    line-height: 1.333;
    letter-spacing: 0.3px;
    text-transform: uppercase;
    color: var(--py-brand-color-9);
}

.aag-review-links {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.8rem;
    margin-top: 1.2rem;
}

.aag-review-links .btn.aag-mail-link {
    position: relative;
    padding-left: 1.4rem;
    font-weight: 400;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.aag-review-links .btn.aag-mail-link::before {
    content: "";
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 0.6rem;
    height: 0.6rem;
    border-radius: 999px;
    background-color: var(--py-brand-color-9);
}

/* Elements / IUGS external links */
.btn.aag-link-ext {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    height: 4rem;
    margin-top: 2.4rem;
    padding: 1rem 2rem;
    background-color: var(--py-brand-color-5);
    border: 0;
    border-radius: 1rem;
    box-shadow: none;
    font-size: 1.4rem;
    font-weight: 600;
    color: var(--py-brand-color-1);
}

.btn.aag-link-ext::after {
    content: "";
    width: 1.6rem;
    height: 1.6rem;
    flex-shrink: 0;
    background-color: currentColor;
    -webkit-mask: var(--aag-ext) no-repeat center / contain;
    mask: var(--aag-ext) no-repeat center / contain;
}

.btn.aag-link-ext:hover {
    background-color: var(--py-brand-color-1);
    color: var(--py-white);
    opacity: 1;
}

/* View the report: plain inline variant inside sub-cards */
.aag-sub-card .btn.aag-link-ext {
    height: auto;
    margin-top: 1.6rem;
    padding: 0;
    background: transparent;
}

.aag-sub-card .btn.aag-link-ext::after {
    width: 1.4rem;
    height: 1.4rem;
}

.aag-sub-card .btn.aag-link-ext:hover {
    background: transparent;
    color: var(--py-brand-color-3);
}

/* Sub-card tweaks for this page (scoped to the cloud band so the Events
   #iags sub-cards keep their own rhythm): card 2 is wash-filled, and v0
   spacing here is 16/8/16 rather than the flex gap 12. */
.aag-sub-card:has(> .aag-icon-lock) {
    background-color: var(--py-brand-color-5);
}

.aag-band-cloud .aag-sub-grid {
    margin-top: 1rem; /* v0 40px minus 3rem container gap */
}

.aag-band-cloud .aag-sub-card {
    gap: 0;
}

body:not(.home) .py-section.aag-band-cloud .aag-sub-card h3 {
    margin-top: 1.6rem;
}

body:not(.home) .py-section.aag-band-cloud .aag-sub-card p {
    flex: 1;
    margin-top: 0.8rem;
}

.btn.btn--solid {
    height: 3.6rem;
    width: fit-content;
    margin-top: 1.6rem;
    padding: 0.8rem 1.6rem;
    gap: 0.6rem;
    background-color: var(--py-brand-color-1);
    border: 0;
    border-radius: 1rem;
    font-size: 1.4rem;
    font-weight: 600;
    color: var(--py-white);
}

.btn.btn--solid:hover {
    opacity: 0.9;
    color: var(--py-white);
}

/* Icon vars for the pseudo-element glyphs above */
.aag-access-btn, .aag-btn-row, .btn--accent.aag-btn-dl {
    --aag-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E%3Cpath d='m12 5 7 7-7 7'/%3E%3C/svg%3E");
    --aag-dl: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 15V3'/%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'/%3E%3Cpath d='m7 10 5 5 5-5'/%3E%3C/svg%3E");
}

.aag-link-tile, .aag-link-ext {
    --aag-ext: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6'/%3E%3Cpath d='M10 14 21 3'/%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3C/svg%3E");
}

.aag-btn-outline {
    --aag-filedown: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z'/%3E%3Cpath d='M14 2v5a1 1 0 0 0 1 1h5'/%3E%3Cpath d='M12 18v-6'/%3E%3Cpath d='m9 15 3 3 3-3'/%3E%3C/svg%3E");
}

.aag-lock-note, .aag-icon-lock {
    --aag-lock: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='11' x='3' y='11' rx='2' ry='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E");
}

.aag-mail-link {
    --aag-mailico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7'/%3E%3Crect x='2' y='4' width='20' height='16' rx='2'/%3E%3C/svg%3E");
}

/* Tile glyphs (masked via .aag-icon-tile::before / --aag-icon) */
.aag-icon-megaphone { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11 6a13 13 0 0 0 8.4-2.8A1 1 0 0 1 21 4v12a1 1 0 0 1-1.6.8A13 13 0 0 0 11 14H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2z'/%3E%3Cpath d='M6 14a12 12 0 0 0 2.4 7.2 2 2 0 0 0 3.2-2.4A8 8 0 0 1 10 14'/%3E%3Cpath d='M8 6v8'/%3E%3C/svg%3E"); }
.aag-icon-bookmarked { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 2v8l3-3 3 3V2'/%3E%3Cpath d='M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20'/%3E%3C/svg%3E"); }
.aag-icon-lock.aag-icon-tile { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='11' x='3' y='11' rx='2' ry='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E"); background-color: hsl(var(--py-bc-1-hs), var(--py-bc-1-l), 0.1); }
.aag-icon-award.aag-medal-card { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m15.477 12.89 1.515 8.526a.5.5 0 0 1-.81.47l-3.58-2.687a1 1 0 0 0-1.197 0l-3.586 2.686a.5.5 0 0 1-.81-.469l1.514-8.526'/%3E%3Ccircle cx='12' cy='8' r='6'/%3E%3C/svg%3E"); }

/* v0 caps the whole section-head block at max-w-3xl — the h2 must wrap at
   768px like v0, not just the lede (found on the Publications pass; v0 h2s
   'Geochemistry: …' and 'Exploration, Remote Sensing, …' are two-liners) */
body:not(.home) .py-flex:has(> .aag-eyebrow) > h2 {
    max-width: 76.8rem;
}

/* Flat page heroes (no aag-hero-text wrapper): lede is still 18px, max-w-2xl */
body:not(.home) .aag-page-hero .aag-measure {
    --py-font-size: 1.8rem;
    --py-line-height: 1.625;
    max-width: 67.2rem;
}

/* Publications + News: v0's h1 here is 48/60 (no leading-none), unlike the
   Events/Association heroes which measure 48/48 — v0 is inconsistent, so
   this is page-scoped rather than a hero-wide change. */
body.page-id-5041 .aag-page-hero h1,
body.page-id-69 .aag-page-hero h1 {
    --py-line-height: 1.25;
}

/* .btn base line-height:1 squashes the tile-style links; v0 rows are 20px */
.btn.aag-link-tile,
.btn.aag-btn-outline {
    line-height: 1.43;
}

.aag-review-links .btn.aag-mail-link {
    line-height: 1.43;
}

/* ==========================================================================
   EXPLORE Issues page — gated archive (v0 parity 2026-08-07)
   ========================================================================== */

/* Locked column: v0 max-w-3xl centered, space-y-6 */
.aag-ea-lede-wrap {
    display: flex;
    flex-direction: column;
    gap: 2.4rem;
    width: 100%;
    max-width: 76.8rem;
    margin-inline: auto;
}

body:not(.home) .py-section .aag-ea-lede {
    margin: 0;
    font-size: 1.8rem;
    line-height: 1.625;
    color: var(--py-ink);
}

.aag-ea-lede strong {
    font-weight: 600;
    color: var(--py-brand-color-1);
}

.aag-ea-box {
    padding: 2rem;
    background-color: var(--py-white);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    border-radius: 1.4rem;
}

.aag-ea-box--wash {
    background-color: var(--py-brand-color-5);
}

body:not(.home) .py-section .aag-ea-box__head {
    margin: 0;
    font-size: 1.4rem;
    font-weight: 600;
    line-height: 1.43;
    color: var(--py-brand-color-1);
}

body:not(.home) .py-section .aag-ea-box__text {
    margin: 0.4rem 0 0;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--py-ink);
}

.aag-ea-box__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.8rem;
    height: 3.2rem;
    margin-top: 1.6rem;
    padding: 0 1rem;
    background-color: var(--py-brand-color-1);
    border-radius: 1rem;
    font-size: 1.4rem;
    font-weight: 500;
    line-height: 1.43;
    color: var(--py-white);
    text-decoration: none;
    transition: opacity 0.2s ease;
}

.aag-ea-box__btn:hover {
    opacity: 0.8;
    color: var(--py-white);
}

/* The inline form reuses .aag-gate-form styles (modal gate); v0 spacing
   here is gap-6 (24px) rather than the modal's 16px. */
.aag-ea-lede-wrap .aag-gate-form {
    margin-top: 0;
    gap: 2.4rem;
}

.aag-ea-lede-wrap .aag-gate-form__row {
    gap: 2.4rem;
}

/* Unlocked: confirmation bar + tile grid (full container width) */
.aag-ea-confirm {
    display: flex;
    align-items: flex-start;
    gap: 1.2rem;
    padding: 2rem;
    background-color: var(--py-brand-color-5);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    border-radius: 1.4rem;
}

.aag-ea-confirm__tile {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.4rem;
    height: 2.4rem;
    margin-top: 0.2rem;
    flex-shrink: 0;
    border-radius: 50%;
    background-color: hsl(var(--py-bc-1-hs), var(--py-bc-1-l), 0.1);
}

.aag-ea-confirm__check {
    width: 1.6rem;
    height: 1.6rem;
    color: var(--py-brand-color-1);
}

body:not(.home) .py-section .aag-ea-confirm p {
    margin: 0;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--py-ink);
}

.aag-ea-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 2.4rem;
    margin: 3.2rem 0 0;
    padding: 0;
    list-style: none;
}

@media (min-width: 640px) {
    .aag-ea-grid {
        grid-template-columns: repeat(3, 1fr);
    }
}

@media (min-width: 1024px) {
    .aag-ea-grid {
        grid-template-columns: repeat(4, 1fr);
    }
}

.aag-ea-tile {
    display: block;
    text-decoration: none;
}

.aag-ea-tile__media {
    position: relative;
    display: block;
    aspect-ratio: 1224 / 1584;
    overflow: hidden;
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    border-radius: 1.4rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.aag-ea-tile__media img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
}

a.aag-ea-tile:hover .aag-ea-tile__media {
    border-color: hsl(var(--py-bc-1-hs), var(--py-bc-1-l), 0.4);
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
}

.aag-ea-tile__meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.8rem;
    margin-top: 1.2rem;
}

.aag-ea-tile__body {
    display: block;
    min-width: 0;
}

.aag-ea-tile__label {
    display: block;
    font-family: var(--py-font-family-heading);
    font-size: 1.4rem;
    font-weight: 700;
    line-height: 1.43;
    color: var(--py-brand-color-1);
}

.aag-ea-tile__sub {
    display: block;
    font-size: 1.2rem;
    line-height: 1.333;
    color: var(--py-ink);
}

.aag-ea-tile__dl {
    width: 1.6rem;
    height: 1.6rem;
    flex-shrink: 0;
    color: var(--py-ink);
    transition: transform 0.2s ease;
}

a.aag-ea-tile:hover .aag-ea-tile__dl {
    transform: translateY(2px);
}

.aag-ea-tile--pending {
    opacity: 0.6;
    cursor: default;
}

/* --------------------------------------------------------------------------
   Students page (v0 parity, 2026-08-10)
   -------------------------------------------------------------------------- */

/* v0 asymmetric section padding: #application is pt-0/pb-4, the support
   section is pt-0 — their top whitespace comes from the previous section's
   bottom padding. Uniform padding would double the gaps (80 → 160). */
.py-section.aag-sec-app {
    padding-block-start: 0;
    padding-block-end: 1.6rem;
}

.py-section.aag-sec-flush {
    padding-block-start: 0;
}

/* In flush sections the content sits at the section top (no 8rem padding),
   so their anchors need 8rem less shift to land like v0 (measured 80 low) */
.aag-section-nav ~ .py-section.aag-sec-app .aag-anchor,
.aag-section-nav ~ .py-section.aag-sec-flush .aag-anchor {
    top: -14.4rem;
}

/* Figure that fills its grid cell (benefits photo, award wide shot).
   The img is absolutely positioned (v0's Next Image fill pattern) so the
   figure never drives the grid row height — the sibling card/figure does. */
.aag-fig-fill {
    position: relative;
    height: 100%;
    min-height: 25.6rem;
    overflow: hidden;
    border-radius: 1.4rem;
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
}

.aag-fig-fill img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Portrait figure (award-winner photo): v0 aspect-3/4, crop anchored top */
.aag-fig-3x4 {
    aspect-ratio: 3 / 4;
    overflow: hidden;
    border-radius: 1.4rem;
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
}

.aag-fig-3x4 img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.aag-fig--top img {
    object-position: top;
}

/* Award photo grid: v0 is grid-cols-3 with the wide shot spanning 2.
   v0 keeps 3 columns on mobile (103px slivers — a v0 defect); we stack. */
.aag-award-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--py-grid-gap, 2.4rem);
}

@media (min-width: 768px) {
    .aag-award-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .aag-award-grid .aag-fig--span2 {
        grid-column: span 2;
    }
}

/* Accent price band ($10 student membership) */
.aag-price-band {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 2.4rem;
    margin-top: 0.2rem; /* + container gap 3rem = v0's 32px */
    padding: 2.8rem;
    background-color: var(--py-brand-color-10);
    border: 1px solid hsl(var(--py-bc-8-hs), var(--py-bc-8-l), 0.3);
    border-radius: 1.4rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
}

@media (min-width: 768px) {
    .aag-price-band {
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
    }
}

.aag-price-band__lead {
    display: flex;
    align-items: flex-start; /* v0: badge top-aligns with the h3 */
    gap: 1.6rem;
}

.aag-price-band__badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 5.6rem;
    height: 5.6rem;
    flex-shrink: 0;
    border-radius: 1rem;
    background-color: var(--py-white);
    font-family: var(--py-font-family-heading);
    font-size: 2rem;
    font-weight: 700;
    color: var(--py-brand-color-9);
}

.aag-price-band__text {
    display: block;
}

body:not(.home) .py-section .aag-price-band__text h3 {
    --py-font-size: 1.8rem;
    --py-line-height: 1.55;
}

body:not(.home) .py-section .aag-price-band__desc {
    margin-top: 0.4rem;
    max-width: 57.6rem;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--py-ink);
}

/* Application cards: white card, wash icon chip, small desc, dead pill */
.aag-app-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 2.4rem;
    margin-top: 0.2rem; /* + container gap 3rem = v0's 32px */
}

@media (min-width: 768px) {
    .aag-app-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

.aag-app-card {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    padding: 2.8rem;
}

body:not(.home) .py-section .aag-app-card h3 {
    --py-font-size: 1.8rem;
    --py-line-height: 1.55;
    margin-top: 1.6rem;
}

body:not(.home) .py-section .aag-app-card__desc {
    margin-top: 0.8rem;
    flex: 1 1 auto;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--py-slate);
}

/* Disabled placeholder pill: v0 ships a <span> styled as an accent button */
p.aag-dead-pill {
    display: inline-flex;
    align-items: center;
    height: 3.2rem;
    margin-top: 2rem;
    padding: 0 1.2rem;
    border-radius: 1rem;
    background-color: var(--py-brand-color-8);
    font-size: 1.4rem;
    font-weight: 500;
    line-height: 1;
    color: var(--py-white);
    opacity: 0.6;
    cursor: not-allowed;
}

/* Support cards (research support / travel bursary): wash card, 24px h3,
   16px inner rhythm, white coming-soon pill */
.aag-support-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 2.4rem;
}

@media (min-width: 992px) {
    .aag-support-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

.aag-support-card {
    gap: 1.6rem;
}

body:not(.home) .py-section .aag-support-card .aag-icon-head h3 {
    --py-font-size: 2.4rem;
    --py-line-height: 1.35;
}

body:not(.home) .py-section .aag-support-card__desc {
    font-size: 1.6rem;
    line-height: 1.625;
    color: var(--py-ink);
}

p.aag-soon-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.8rem;
    width: fit-content;
    padding: 0.8rem 1.2rem;
    border-radius: 0.8rem;
    background-color: var(--py-white);
    font-size: 1.4rem;
    font-weight: 500;
    color: var(--py-ink);
}

.aag-soon-pill::before {
    content: "";
    width: 1.6rem;
    height: 1.6rem;
    flex-shrink: 0;
    background-color: var(--py-brand-color-9);
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/svg%3E") no-repeat center / contain;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/svg%3E") no-repeat center / contain;
}

/* Contact band: white card, title + desc left, outline button right */
.aag-contact-band {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1.6rem;
    margin-top: 0.2rem; /* + container gap 3rem = v0's 32px */
    padding: 2.8rem;
    background-color: var(--py-white);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    border-radius: 1.4rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
}

@media (min-width: 640px) {
    .aag-contact-band {
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
    }
}

.aag-contact-band__text {
    display: block;
}

body:not(.home) .py-section .aag-contact-band__title {
    --py-font-size: 1.8rem;
    --py-line-height: 1.55;
    color: var(--py-brand-color-1);
}

body:not(.home) .py-section .aag-contact-band__desc {
    margin-top: 0.4rem;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--py-slate);
}

/* Outline button (v0 "Contact us": h-8, white, #A7C7CC border, dark text) */
.btn.aag-contact-btn {
    height: 3.2rem;
    padding: 0 1.2rem;
    background-color: var(--py-white);
    border: 1px solid #A7C7CC;
    color: var(--py-ink);
}

.btn.aag-contact-btn:hover {
    background-color: var(--py-cloud);
    color: var(--py-ink);
}

/* v0 students benefit list is space-y-4 (16px); the shared check-list is
   12px (v0 membership). Page-scoped so membership keeps its rhythm. */
body.page-id-5042 .aag-check-list--lg {
    gap: 1.6rem;
    margin-top: 0.4rem; /* card gap 2rem + 0.4 = v0's 24px (ul mt-6) */
}

/* Wash icon-chip variant (v0 application cards: bg-primary-wash) */
.aag-icon-tile.aag-icon-tile--wash {
    background-color: var(--py-brand-color-5);
}

/* --------------------------------------------------------------------------
   News article template (single.php, v0 parity 2026-08-10)
   -------------------------------------------------------------------------- */

/* Narrow teal hero: v0 detail container is max-w-3xl with 64px block pad */
.py-section.aag-article-hero {
    background-color: var(--py-brand-color-6);
    --py-sec-pad-block: 6.4rem;
}

.aag-article-hero__inner {
    --py-container-width: 76.8rem;
    padding-inline: 3.2rem; /* v0: content column is 704 inside the 768 container */
}

.aag-article-hero .aag-breadcrumb {
    color: var(--py-white);
}

.aag-article-hero__meta {
    display: flex;
    align-items: center;
    gap: 1.2rem;
    margin-top: 2.4rem;
}

/* v0: category is a pill on detail pages (plain text on listing cards) */
.aag-article-hero__cat {
    display: inline-flex;
    align-items: center;
    line-height: 1.333;
    padding: 0.4rem 1.2rem;
    border-radius: 999px;
    background-color: var(--py-brand-color-8);
    font-size: 1.2rem;
    font-weight: 600;
    letter-spacing: 0.03rem;
    text-transform: uppercase;
    color: var(--py-white);
}

.aag-article-hero__meta time {
    font-size: 1.4rem;
    line-height: 1.43;
    color: var(--py-white);
}

/* .py-section h1 (0,1,1) would zero the margin — keep specificity above it */
.py-section .aag-article-hero__title {
    margin: 1.6rem 0 0;
    font-family: var(--py-font-family-heading);
    font-size: 3.6rem;
    line-height: 1.25;
    font-weight: 700;
    color: var(--py-white);
    text-wrap: balance;
}

/* Article body: 768px column, 24px block rhythm (v0 space-y-6) */
.aag-article {
    background-color: var(--py-white);
}

.aag-article__inner {
    max-width: 76.8rem;
    margin-inline: auto;
    padding: 6.4rem 3.2rem;
}

.aag-article__body > * {
    margin-block: 0;
}

.aag-article__body > * + * {
    margin-top: 2.4rem;
}

.aag-article__body p {
    font-size: 1.6rem;
    line-height: 1.625;
    color: var(--py-ink);
}

.aag-article__body h2 {
    font-family: var(--py-font-family-heading);
    font-size: 2rem;
    line-height: 1.4;
    font-weight: 700;
    color: var(--py-brand-color-1);
}

.aag-article__body a {
    font-weight: 600;
    color: var(--py-brand-color-1);
    text-decoration: underline;
    text-underline-offset: 2px;
    transition: color 0.15s ease;
}

.aag-article__body a:hover {
    color: #2C6B78; /* v0 --primary-light */
}

/* INVENTED (v0 defines no h3/list/blockquote styles — no article uses
   them; kept consistent with the body scale, flagged for design sign-off) */
.aag-article__body h3 {
    font-family: var(--py-font-family-heading);
    font-size: 1.8rem;
    line-height: 1.55;
    font-weight: 700;
    color: var(--py-brand-color-1);
}

.aag-article__body ul,
.aag-article__body ol {
    padding-left: 2.4rem;
    font-size: 1.6rem;
    line-height: 1.625;
    color: var(--py-ink);
}

.aag-article__body li + li {
    margin-top: 0.8rem;
}

.aag-article__body blockquote {
    padding: 1.6rem 2.4rem;
    border-left: 3px solid var(--py-brand-color-1);
    background-color: var(--py-brand-color-5);
    border-radius: 0 1rem 1rem 0;
    font-size: 1.6rem;
    line-height: 1.625;
    color: var(--py-ink);
}

/* 2-up bordered figure cards (v0 article figure grid — same card chrome
   as the listing cards). Used via a wp:html block in post content. */
.aag-fig-cards {
    display: grid;
    grid-template-columns: 1fr;
    gap: 2.4rem;
}

@media (min-width: 640px) {
    .aag-fig-cards {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

.aag-fig-cards figure {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.2rem;
    margin: 0;
    padding: 2.4rem;
    background-color: var(--py-white);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    border-radius: 1.4rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
}

.aag-fig-cards__box {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 19.2rem;
}

.aag-fig-cards img {
    max-width: 100%;
    max-height: 19.2rem;
    width: auto;
    object-fit: contain;
}

.aag-fig-cards figcaption {
    font-size: 1.4rem;
    line-height: 1.43;
    font-weight: 500;
    color: var(--py-ink);
}

/* Back-to-all-news: top rule at 40% alpha (cards use 50) */
.aag-article__back {
    margin-top: 4.8rem;
    padding-top: 3.2rem;
    border-top: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.4);
}

.aag-article__back a {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    font-size: 1.4rem;
    line-height: 1.43;
    font-weight: 600;
    color: var(--py-brand-color-1);
    transition: color 0.15s ease;
}

.aag-article__back a::before {
    content: "";
    width: 1.6rem;
    height: 1.6rem;
    flex-shrink: 0;
    background-color: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m12 19-7-7 7-7'/%3E%3Cpath d='M19 12H5'/%3E%3C/svg%3E") no-repeat center / contain;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m12 19-7-7 7-7'/%3E%3Cpath d='M19 12H5'/%3E%3C/svg%3E") no-repeat center / contain;
}

.aag-article__back a:hover {
    color: #2C6B78;
}

/* New tile glyphs (exact v0 lucide paths) */
.aag-icon-shield { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z'/%3E%3Cpath d='m9 12 2 2 4-4'/%3E%3C/svg%3E"); }
.aag-icon-flask { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2'/%3E%3Cpath d='M6.453 15h11.094'/%3E%3Cpath d='M8.5 2h7'/%3E%3C/svg%3E"); }
.aag-icon-plane { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M17.8 19.2 16 11l3.5-3.5C21 6 21.5 4 21 3c-1-.5-3 0-4.5 1.5L13 8 4.8 6.2c-.5-.1-.9.1-1.1.5l-.3.5c-.2.5-.1 1 .3 1.3L9 12l-2 3H4l-1 1 3 2 2 3 1-1v-3l3-2 3.5 5.3c.3.4.8.5 1.3.3l.5-.2c.4-.3.6-.7.5-1.2z'/%3E%3C/svg%3E"); }

/* ============================================================
   Members Area (v0 parity 2026-08-13)
   Shell rendered by templates/members-area.php + inc/members-area.php;
   content components used by the wp:html blocks on the ten /members/
   pages. Scoped v0 text colors: v0's CURRENT slate/mist are #111/#444
   (darker than the site-wide --py-slate/--py-mist tokens measured from
   an earlier v0) — kept scoped here so signed-off public pages don't
   shift; raise with design before promoting to the global tokens.
   ============================================================ */

.aag-ma-body,
.aag-ma-renewbar {
    --aag-ma-slate: rgb(17, 17, 17);
    --aag-ma-mist: rgb(68, 68, 68);
    --aag-ma-border: hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    --aag-ma-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
}

/* ---- hero ---- */
.aag-ma-hero-row {
    display: flex;
    flex-direction: column;
    gap: 3.2rem;
    margin-top: 2.4rem;
}

.aag-ma-hero-text h1 {
    max-width: 76.8rem;
    margin-top: 1.2rem;
}

.aag-ma-eyebrow {
    display: flex;
    align-items: center;
    gap: 0.8rem;
    margin: 0;
    font-size: 1.4rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.025em;
    color: var(--py-white);
}

.aag-ma-eyebrow svg {
    width: 2rem;
    height: 2rem;
    color: var(--py-brand-color-8);
    flex-shrink: 0;
}

/* Scoped under .aag-ma-hero: the global :is(.py-section) :is(p) margin
   reset is (0,1,1) and would zero single-class margins. */
.aag-ma-hero .aag-ma-welcome {
    margin-top: 1.6rem;
    font-size: 1.8rem;
    line-height: 1.625;
    color: var(--py-white);
}

.aag-ma-hero .aag-ma-desc {
    margin-top: 0.4rem;
    max-width: 67.2rem;
    font-size: 1.8rem;
    line-height: 1.625;
    color: var(--py-white);
}

.aag-ma-hero-visual {
    flex-shrink: 0;
    opacity: 0.9;
    width: 14rem;
}

.aag-ma-hero-visual img {
    width: 100%;
    height: auto;
}

.aag-ma-hero-visual--photo {
    opacity: 1;
    width: 100%;
    aspect-ratio: 16 / 10;
    border-radius: 1.4rem;
    overflow: hidden;
    box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.15);
}

.aag-ma-hero-visual--photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

@media (min-width: 640px) {
    .aag-ma-hero-row {
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
    }
    .aag-ma-hero-text {
        flex: 1;
    }
    .aag-ma-hero-visual {
        width: 16rem;
    }
    .aag-ma-hero-visual--photo {
        width: 28.8rem;
    }
}

@media (min-width: 1024px) {
    .aag-ma-hero-visual {
        width: 20.8rem;
    }
    .aag-ma-hero-visual--photo {
        width: 38.4rem;
    }
}

/* ---- hub renewal bar ---- */
.aag-ma-renewbar {
    background-color: var(--py-white);
    border-bottom: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.4);
}

.aag-ma-renewbar__inner {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1.2rem;
    padding-top: 1.6rem;
    padding-bottom: 1.6rem;
}

.aag-ma-renewbar__inner p {
    margin: 0;
    font-size: 1.4rem;
    line-height: 1.5;
    color: var(--aag-ma-slate);
}

@media (min-width: 640px) {
    .aag-ma-renewbar__inner {
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
    }
}

/* Copper action button (renew bar, View events, logo downloads) */
.aag-ma-btn,
.aag-ma-renew-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.8rem;
    flex-shrink: 0;
    background-color: var(--py-brand-color-8);
    color: var(--py-white);
    font-size: 1.4rem;
    font-weight: 500;
    line-height: 2rem;
    padding: 0.6rem 1.6rem;
    border-radius: 1rem;
    text-decoration: none;
    transition: opacity 0.2s ease;
}

.aag-ma-btn:hover,
.aag-ma-renew-btn:hover {
    opacity: 0.8;
    color: var(--py-white);
}

/* ---- two-column body ---- */
.aag-ma-body {
    background-color: var(--py-white);
    padding-top: 4.8rem;
    padding-bottom: 4.8rem;
}

.aag-ma-cols {
    display: flex;
    flex-direction: column;
    gap: 3.2rem;
}

.aag-ma-main {
    min-width: 0;
    flex: 1;
}

.aag-ma-side ul {
    list-style: none;
    margin: 0;
    padding: 0 0 0.8rem;
    display: flex;
    gap: 0.4rem;
    overflow-x: auto;
}

.aag-ma-side-label {
    margin: 0;
    padding: 0 1.2rem 0.8rem;
    font-family: var(--py-font-family-heading);
    font-size: 1.4rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.025em;
    color: var(--py-brand-color-1);
}

.aag-ma-side a {
    display: block;
    padding: 0.8rem 1.2rem;
    border-radius: 0.8rem;
    font-size: 1.4rem;
    font-weight: 500;
    line-height: 2rem;
    color: var(--aag-ma-slate, rgb(17, 17, 17));
    text-decoration: none;
    white-space: nowrap;
    transition: background-color 0.15s ease, color 0.15s ease;
}

.aag-ma-side a:hover,
.aag-ma-side a.is-active {
    background-color: var(--py-brand-color-5);
    color: var(--py-brand-color-1);
}

@media (min-width: 1024px) {
    .aag-ma-body {
        padding-top: 6.4rem;
        padding-bottom: 6.4rem;
    }
    .aag-ma-cols {
        flex-direction: row;
    }
    .aag-ma-side {
        width: 25.6rem;
        flex-shrink: 0;
    }
    .aag-ma-side nav {
        position: sticky;
        /* v0 lg:top-24 = static 96px whatever the header state (measured
           2026-08-14) — it is not visually attached to the header, so v0
           does not track the shrink and neither do we. */
        top: 9.6rem;
    }
    .aag-ma-side ul {
        flex-direction: column;
        overflow: visible;
        padding-bottom: 0;
    }
    .aag-ma-side a {
        white-space: normal;
    }
}

/* ---- generic inline mask icon ---- */
.aag-ma-ic {
    display: inline-block;
    width: 1.6rem;
    height: 1.6rem;
    flex-shrink: 0;
    background-color: var(--py-brand-color-9);
    -webkit-mask: var(--aag-icon) no-repeat center / contain;
    mask: var(--aag-icon) no-repeat center / contain;
}

.aag-ma-ic--mist {
    background-color: var(--aag-ma-mist, rgb(68, 68, 68));
}

.aag-ma-ic--sm {
    width: 1.4rem;
    height: 1.4rem;
}

/* ---- copper icon tile (v0 bg-accent-soft + accent-dark glyph) ---- */
.aag-ma-tile {
    width: 4.4rem;
    height: 4.4rem;
    flex-shrink: 0;
    border-radius: 1rem;
    background-color: var(--py-brand-color-10);
    position: relative;
}

.aag-ma-tile::before {
    content: "";
    position: absolute;
    inset: 0;
    margin: auto;
    width: 2rem;
    height: 2rem;
    background-color: var(--py-brand-color-9);
    -webkit-mask: var(--aag-icon) no-repeat center / contain;
    mask: var(--aag-icon) no-repeat center / contain;
}

/* ---- headings & grids ---- */
.aag-ma-h2 {
    margin: 0;
    font-family: var(--py-font-family-heading);
    font-size: 3rem;
    font-weight: 700;
    color: var(--py-brand-color-1);
}

.aag-ma-intro {
    margin: 0.8rem 0 0;
    max-width: 67.2rem;
    font-size: 1.6rem;
    line-height: 1.625;
    color: var(--aag-ma-slate);
}

.aag-ma-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 2rem;
    margin-top: 3.2rem;
}

.aag-ma-grid--flush {
    margin-top: 0;
}

.aag-ma-grid--loose {
    gap: 2.4rem;
}

@media (min-width: 640px) {
    .aag-ma-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (min-width: 1024px) {
    .aag-ma-grid:not(.aag-ma-grid--2) {
        grid-template-columns: repeat(3, 1fr);
    }
}

/* ---- cards ---- */
.aag-ma-card {
    display: flex;
    flex-direction: column;
    border-radius: 1.4rem;
    border: 1px solid var(--aag-ma-border);
    background-color: var(--py-white);
    padding: 2.4rem;
    box-shadow: var(--aag-ma-shadow);
}

a.aag-ma-card {
    text-decoration: none;
    transition: border-color 0.15s ease, background-color 0.15s ease;
}

a.aag-ma-card:hover {
    border-color: hsl(var(--py-bc-8-hs), var(--py-bc-8-l), 0.5);
    background-color: var(--py-brand-color-5);
}

.aag-ma-card h2,
.aag-ma-card h3 {
    margin: 1.6rem 0 0;
    font-family: var(--py-font-family-heading);
    font-size: 1.8rem;
    font-weight: 700;
    color: var(--py-brand-color-1);
}

.aag-ma-card > p {
    margin: 0.8rem 0 0;
    flex: 1;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--aag-ma-slate);
}

.aag-ma-cta {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    margin-top: 1.6rem;
    font-size: 1.4rem;
    font-weight: 600;
    color: var(--py-brand-color-9);
}

.aag-ma-cta::after {
    content: "";
    width: 1.6rem;
    height: 1.6rem;
    background-color: currentColor;
    -webkit-mask: var(--aag-icon-arrowright) no-repeat center / contain;
    mask: var(--aag-icon-arrowright) no-repeat center / contain;
}

/* ---- callouts, pills, placeholders ---- */
.aag-ma-callout {
    display: flex;
    align-items: flex-start;
    gap: 1.2rem;
    border-radius: 1.4rem;
    border: 1px solid var(--aag-ma-border);
    background-color: var(--py-brand-color-5);
    padding: 2rem;
}

.aag-ma-callout > .aag-ma-ic {
    margin-top: 0.2rem;
}

.aag-ma-callout p {
    margin: 0;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--aag-ma-slate);
}

.aag-ma-callout--split {
    flex-direction: column;
    align-items: flex-start;
    gap: 1.6rem;
    padding: 2.4rem;
}

.aag-ma-callout--split h2 {
    margin: 0;
    font-family: var(--py-font-family-heading);
    font-size: 1.8rem;
    font-weight: 700;
    color: var(--py-brand-color-1);
}

.aag-ma-callout--split p {
    margin-top: 0.4rem;
}

@media (min-width: 640px) {
    .aag-ma-callout--split {
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
    }
}

.aag-ma-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    border-radius: 999px;
    background-color: var(--py-brand-color-10);
    padding: 0.4rem 1rem;
    font-size: 1.2rem;
    font-weight: 600;
    color: var(--py-brand-color-9);
}

.aag-ma-soon {
    display: inline-flex;
    align-items: center;
    gap: 0.8rem;
    width: fit-content;
    margin: 1.6rem 0 0;
    border-radius: 0.8rem;
    background-color: var(--py-brand-color-5);
    padding: 0.8rem 1.2rem;
    font-size: 1.2rem;
    font-weight: 500;
    color: var(--aag-ma-slate);
}

.aag-ma-dead-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.8rem;
    width: fit-content;
    flex-shrink: 0;
    border: 1px solid var(--py-brand-color-4);
    border-radius: 1rem;
    background-color: var(--py-white);
    padding: 0.8rem 1.6rem;
    font-size: 1.4rem;
    font-weight: 500;
    line-height: 2rem;
    color: var(--aag-ma-slate);
    cursor: not-allowed;
    opacity: 0.6;
}

.aag-ma-dead-btn--dashed {
    border-style: dashed;
}

/* ---- horizontal list cards (short courses, IAGS cross-link) ---- */
.aag-ma-stack {
    display: flex;
    flex-direction: column;
    gap: 2rem;
}

.aag-ma-list-card {
    display: flex;
    flex-direction: column;
    gap: 1.6rem;
    border-radius: 1.4rem;
    border: 1px solid var(--aag-ma-border);
    background-color: var(--py-white);
    padding: 2.4rem;
    box-shadow: var(--aag-ma-shadow);
}

.aag-ma-list-card__lead {
    display: flex;
    gap: 1.6rem;
    min-width: 0;
}

.aag-ma-list-card h2,
.aag-ma-list-card h3 {
    margin: 0;
    font-family: var(--py-font-family-heading);
    font-size: 1.8rem;
    font-weight: 700;
    color: var(--py-brand-color-1);
}

.aag-ma-list-card h2 span,
.aag-ma-list-card h3 span {
    color: var(--py-brand-color-9);
}

.aag-ma-list-card p {
    margin: 0.4rem 0 0;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--aag-ma-slate);
}

.aag-ma-meta {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    margin-top: 0.4rem;
    font-size: 1.4rem;
    color: var(--aag-ma-slate);
}

@media (min-width: 640px) {
    .aag-ma-list-card {
        flex-direction: row;
        align-items: flex-start;
        justify-content: space-between;
    }
    .aag-ma-list-card--center {
        align-items: center;
    }
}

/* ---- toolbar: filter tabs + search ---- */
.aag-ma-toolbar {
    display: flex;
    flex-direction: column;
    gap: 1.6rem;
}

@media (min-width: 640px) {
    .aag-ma-toolbar {
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
    }
}

.aag-ma-tabs {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    border: 1px solid var(--aag-ma-border);
    border-radius: 1rem;
    background-color: var(--py-white);
    padding: 0.4rem;
    width: fit-content;
}

.aag-ma-tabs button {
    border: 0;
    background: transparent;
    border-radius: 0.8rem;
    padding: 0.6rem 1.4rem;
    font-size: 1.4rem;
    font-weight: 500;
    line-height: 2rem;
    color: var(--aag-ma-slate);
    cursor: pointer;
    transition: background-color 0.15s ease, color 0.15s ease;
}

.aag-ma-tabs button[aria-selected="true"] {
    background-color: var(--py-brand-color-1);
    color: var(--py-white);
}

.aag-ma-search {
    position: relative;
}

.aag-ma-search::before {
    content: "";
    position: absolute;
    left: 1.2rem;
    top: 50%;
    transform: translateY(-50%);
    width: 1.6rem;
    height: 1.6rem;
    background-color: var(--aag-ma-mist, rgb(68, 68, 68));
    -webkit-mask: var(--aag-icon-search) no-repeat center / contain;
    mask: var(--aag-icon-search) no-repeat center / contain;
}

.aag-ma-search input {
    width: 100%;
    border: 1px solid var(--py-brand-color-4);
    border-radius: 1rem;
    background-color: var(--py-white);
    padding: 0.8rem 1.2rem 0.8rem 3.6rem;
    font-size: 1.4rem;
    line-height: 2rem;
    color: var(--aag-ma-slate);
    font-family: inherit;
}

.aag-ma-search input::placeholder {
    color: var(--aag-ma-mist);
}

.aag-ma-search input:focus {
    outline: none;
    border-color: var(--py-brand-color-9);
    box-shadow: 0 0 0 2px var(--py-brand-color-10);
}

@media (min-width: 640px) {
    .aag-ma-toolbar .aag-ma-search {
        width: 28.8rem;
    }
}

.aag-ma-count {
    margin: 1.2rem 0 0;
    font-size: 1.4rem;
    color: var(--aag-ma-mist);
}

.aag-ma-hidden {
    display: none !important;
}

/* ---- lectures media cards ---- */
.aag-ma-media-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 3.2rem;
    margin-top: 3.2rem;
}

@media (min-width: 1024px) {
    .aag-ma-media-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

.aag-ma-video-ph {
    aspect-ratio: 16 / 9;
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1.2rem;
    border-radius: 1.4rem;
    border: 1px dashed hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.6);
    background-color: var(--py-brand-color-5);
    padding: 2.4rem;
    text-align: center;
}

.aag-ma-video-ph .aag-ma-ic {
    width: 4rem;
    height: 4rem;
    background-color: hsl(var(--py-bc-1-hs), var(--py-bc-1-l), 0.4);
}

.aag-ma-video-ph p {
    margin: 0;
    font-size: 1.4rem;
    font-weight: 500;
    color: var(--aag-ma-slate);
}

.aag-ma-media h3 {
    margin: 0.8rem 0 0;
    font-family: var(--py-font-family-heading);
    font-size: 1.8rem;
    font-weight: 700;
    color: var(--py-brand-color-1);
}

.aag-ma-media .aag-ma-pill-row {
    display: flex;
    align-items: center;
    gap: 0.8rem;
    margin-top: 1.6rem;
}

.aag-ma-speaker {
    margin: 0.4rem 0 0;
    font-size: 1.4rem;
    font-weight: 500;
    color: var(--aag-ma-slate);
}

.aag-ma-speaker span {
    font-weight: 400;
    color: var(--aag-ma-mist);
}

.aag-ma-event {
    margin: 0.4rem 0 0;
    font-size: 1.2rem;
    color: var(--aag-ma-mist);
}

.aag-ma-media > p:not([class]) {
    margin: 0.8rem 0 0;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--aag-ma-slate);
}

.aag-ma-note-box {
    margin-top: 1.6rem;
    border-radius: 1rem;
    border: 1px solid var(--aag-ma-border);
    background-color: var(--py-brand-color-5);
    padding: 1.6rem;
}

.aag-ma-note-box .aag-ma-note {
    display: flex;
    align-items: flex-start;
    gap: 0.8rem;
    margin: 0;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--aag-ma-slate);
}

.aag-ma-note-box .aag-ma-ic {
    margin-top: 0.2rem;
}

.aag-ma-note-box .aag-ma-dead-btn {
    margin-top: 1.2rem;
}

/* ---- video embed (governance) ---- */
.aag-ma-video-wrap {
    margin-top: 2.4rem;
    max-width: 67.2rem;
}

.aag-ma-video {
    aspect-ratio: 16 / 9;
    width: 100%;
    overflow: hidden;
    border-radius: 1.4rem;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
}

.aag-ma-video iframe {
    width: 100%;
    height: 100%;
    border: 0;
    display: block;
}

.aag-ma-sechead {
    display: flex;
    align-items: center;
    gap: 1.2rem;
}

.aag-ma-sechead h2 {
    margin: 0;
    font-family: var(--py-font-family-heading);
    font-size: 2.4rem;
    font-weight: 700;
    color: var(--py-brand-color-1);
}

.aag-ma-sec {
    scroll-margin-top: 12rem;
}

.aag-ma-sec + .aag-ma-sec,
.aag-ma-vspace {
    margin-top: 4.8rem;
}

.aag-ma-lede {
    margin: 1.6rem 0 0;
    max-width: 67.2rem;
    font-size: 1.6rem;
    line-height: 1.625;
    color: var(--aag-ma-slate);
}

/* ---- IAGS symposium cards ---- */
.aag-ma-sym {
    border-radius: 1.4rem;
    border: 1px solid var(--aag-ma-border);
    background-color: var(--py-white);
    padding: 2.4rem;
    box-shadow: var(--aag-ma-shadow);
}

.aag-ma-sym__row {
    display: flex;
    flex-direction: column;
    gap: 2rem;
}

.aag-ma-sym-tile {
    width: 6.4rem;
    height: 6.4rem;
    flex-shrink: 0;
    border-radius: 1rem;
    background-color: var(--py-brand-color-10);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.aag-ma-sym-tile strong {
    font-family: var(--py-font-family-heading);
    font-size: 1.8rem;
    font-weight: 700;
    color: var(--py-brand-color-9);
}

.aag-ma-sym-tile small {
    font-size: 1rem;
    font-weight: 600;
    text-transform: uppercase;
    color: hsl(var(--py-bc-9-hs), var(--py-bc-9-l), 0.8);
}

.aag-ma-sym h3 {
    margin: 0;
    font-family: var(--py-font-family-heading);
    font-size: 1.8rem;
    font-weight: 700;
    color: var(--py-brand-color-1);
}

.aag-ma-sym h3 span {
    color: var(--py-brand-color-9);
}

.aag-ma-sym__kicker {
    margin: 0.4rem 0 0;
    font-size: 1.2rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.025em;
    color: var(--aag-ma-mist);
}

.aag-ma-sym__meta {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    margin-top: 1.2rem;
}

.aag-ma-sym__meta .aag-ma-meta {
    margin-top: 0;
}

@media (min-width: 640px) {
    .aag-ma-sym__row {
        flex-direction: row;
    }
    .aag-ma-sym__meta {
        flex-direction: row;
        gap: 2rem;
    }
}

.aag-ma-rows {
    list-style: none;
    margin: 1.6rem 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.8rem;
}

.aag-ma-rows li {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.8rem;
    border-radius: 1rem;
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.4);
    background-color: var(--py-brand-color-5);
    padding: 0.8rem 1.2rem;
}

.aag-ma-rows .aag-ma-row-name {
    display: inline-flex;
    align-items: center;
    gap: 0.8rem;
    font-size: 1.4rem;
    color: var(--aag-ma-slate);
}

.aag-ma-rows .aag-ma-row-name small {
    font-size: 1.2rem;
    color: var(--aag-ma-mist);
}

.aag-ma-rows .aag-ma-row-status {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 1.2rem;
    font-weight: 500;
    color: var(--aag-ma-mist);
}

.aag-ma-rows a.aag-ma-row-dl {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 1.2rem;
    font-weight: 600;
    color: var(--py-brand-color-9);
    text-decoration: none;
}

.aag-ma-rows a.aag-ma-row-dl:hover {
    text-decoration: underline;
}

/* ---- presidents table ---- */
.aag-ma-table-card {
    border-radius: 1.4rem;
    border: 1px solid var(--aag-ma-border);
    background-color: var(--py-white);
    box-shadow: var(--aag-ma-shadow);
    overflow: hidden;
}

.aag-ma-table-scroll {
    overflow-x: auto;
}

table.aag-ma-table {
    width: 100%;
    min-width: 57.6rem;
    border-collapse: collapse;
    text-align: left;
    font-size: 1.4rem;
}

table.aag-ma-table thead tr {
    background-color: var(--py-brand-color-1);
}

table.aag-ma-table th {
    color: var(--py-white);
    font-family: var(--py-font-family-heading);
    font-weight: 600;
    padding: 1.2rem 2rem;
}

table.aag-ma-table td {
    padding: 1.2rem 2rem;
    color: var(--aag-ma-slate);
}

table.aag-ma-table td:first-child {
    white-space: nowrap;
    font-weight: 500;
    color: var(--py-brand-color-1);
}

table.aag-ma-table tbody tr:nth-child(even) {
    background-color: hsl(var(--py-bc-5-hs), var(--py-bc-5-l), 0.6);
}

/* ---- memorial cards ---- */
.aag-ma-mem-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.2rem;
}

@media (min-width: 640px) {
    .aag-ma-mem-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (min-width: 1024px) {
    .aag-ma-mem-grid {
        grid-template-columns: repeat(3, 1fr);
    }
}

.aag-ma-mem-card {
    display: flex;
    align-items: center;
    gap: 1.2rem;
    border-radius: 1rem;
    border: 1px solid var(--aag-ma-border);
    background-color: var(--py-white);
    padding: 1.6rem;
    box-shadow: var(--aag-ma-shadow);
    min-width: 0;
}

.aag-ma-mem-card .aag-ma-disc {
    width: 4rem;
    height: 4rem;
    flex-shrink: 0;
    border-radius: 999px;
    background-color: var(--py-brand-color-10);
    position: relative;
}

.aag-ma-mem-card .aag-ma-disc::before {
    content: "";
    position: absolute;
    inset: 0;
    margin: auto;
    width: 2rem;
    height: 2rem;
    background-color: var(--py-brand-color-9);
    -webkit-mask: var(--aag-icon) no-repeat center / contain;
    mask: var(--aag-icon) no-repeat center / contain;
}

.aag-ma-mem-card > div {
    min-width: 0;
}

.aag-ma-mem-card .aag-ma-mem-name {
    margin: 0;
    font-size: 1.6rem;
    font-weight: 500;
    color: var(--py-brand-color-1);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.aag-ma-mem-card .aag-ma-mem-sub {
    margin: 0;
    font-size: 1.2rem;
    color: var(--aag-ma-slate);
}

/* ---- dotted name lists (honorary fellows, history objectives) ---- */
.aag-ma-dotlist {
    list-style: none;
    margin: 1.6rem 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.8rem;
}

.aag-ma-dotlist li {
    position: relative;
    padding-left: 1.8rem;
    font-size: 1.6rem;
    line-height: 1.5;
    color: var(--aag-ma-slate);
}

.aag-ma-dotlist li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.9rem;
    width: 0.6rem;
    height: 0.6rem;
    border-radius: 999px;
    background-color: var(--py-brand-color-8);
}

.aag-ma-dotlist--muted li::before {
    background-color: var(--py-brand-color-4);
}

@media (min-width: 640px) {
    .aag-ma-dotlist--2col {
        display: grid;
        grid-template-columns: repeat(2, 1fr);
    }
}

/* ---- history article ---- */
.aag-ma-article {
    max-width: 76.8rem;
    display: flex;
    flex-direction: column;
    gap: 2rem;
}

.aag-ma-article p {
    margin: 0;
    font-size: 1.6rem;
    line-height: 1.625;
    color: var(--aag-ma-slate);
}

.aag-ma-article .aag-ma-box {
    border-radius: 1.4rem;
    border: 1px solid var(--aag-ma-border);
    background-color: var(--py-brand-color-5);
    padding: 2.4rem;
}

.aag-ma-article h2 {
    margin: 0;
    font-family: var(--py-font-family-heading);
    font-size: 1.8rem;
    font-weight: 700;
    color: var(--py-brand-color-1);
}

.aag-ma-article .aag-ma-box p,
.aag-ma-article h2 + p {
    margin-top: 1.2rem;
}

.aag-ma-article .aag-ma-dotlist li {
    padding-left: 2rem;
    line-height: 1.625;
}

.aag-ma-refs {
    margin-top: 4rem;
    border-top: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.4);
    padding-top: 3.2rem;
}

.aag-ma-refs h2 {
    font-size: 2rem;
}

.aag-ma-refs ul {
    list-style: none;
    margin: 1.6rem 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 1.2rem;
}

.aag-ma-refs li {
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--aag-ma-slate);
}

/* ---- image placeholder figure ---- */
.aag-ma-fig {
    display: flex;
    flex-direction: column;
    gap: 0.8rem;
    margin: 0;
}

.aag-ma-img-ph {
    aspect-ratio: 3 / 2;
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1.2rem;
    border: 2px dashed var(--py-brand-color-4);
    border-radius: 1.4rem;
    background-color: var(--py-brand-color-5);
    padding: 2.4rem;
    text-align: center;
}

.aag-ma-img-ph .aag-ma-disc {
    width: 4.8rem;
    height: 4.8rem;
    border-radius: 999px;
    background-color: var(--py-white);
    position: relative;
}

.aag-ma-img-ph .aag-ma-disc::before {
    content: "";
    position: absolute;
    inset: 0;
    margin: auto;
    width: 2.2rem;
    height: 2.2rem;
    background-color: var(--py-brand-color-9);
    -webkit-mask: var(--aag-icon) no-repeat center / contain;
    mask: var(--aag-icon) no-repeat center / contain;
}

.aag-ma-img-ph .aag-ma-ph-label {
    margin: 0;
    font-size: 1.2rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.025em;
    color: var(--py-brand-color-9);
}

.aag-ma-img-ph .aag-ma-ph-title {
    margin: 0;
    font-family: var(--py-font-family-heading);
    font-size: 1.6rem;
    font-weight: 600;
    color: var(--py-brand-color-1);
}

.aag-ma-img-ph .aag-ma-ph-spec {
    margin: 0;
    font-size: 1.2rem;
    color: var(--aag-ma-slate);
}

.aag-ma-fig figcaption {
    font-size: 1.4rem;
    color: var(--aag-ma-mist);
}

/* ---- logo download cards ---- */
.aag-ma-logo-card {
    overflow: hidden;
    padding: 0;
}

.aag-ma-logo-prev {
    height: 17.6rem;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2.4rem;
}

.aag-ma-logo-prev img {
    height: 100%;
    width: auto;
    object-fit: contain;
}

.aag-ma-logo-card__body {
    display: flex;
    flex-direction: column;
    flex: 1;
    padding: 2.4rem;
}

.aag-ma-logo-card__body h2 {
    margin: 0;
}

.aag-ma-logo-card__body p {
    margin: 0.8rem 0 0;
    flex: 1;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--aag-ma-slate);
}

.aag-ma-logo-card__body .aag-ma-btn {
    margin-top: 2rem;
    width: fit-content;
}

.aag-ma-btn .aag-ma-ic {
    background-color: currentColor;
}

.aag-ma-guide-box {
    margin-top: 4rem;
    border-radius: 1.4rem;
    border: 1px solid var(--aag-ma-border);
    background-color: var(--py-brand-color-5);
    padding: 2.4rem;
}

.aag-ma-guide-box h2 {
    margin: 0;
    font-family: var(--py-font-family-heading);
    font-size: 1.6rem;
    font-weight: 600;
    color: var(--py-brand-color-1);
}

.aag-ma-guide-box p {
    margin: 0.8rem 0 0;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--aag-ma-slate);
}

/* ---- member tools links (plugin .aag-hub-links block) ---- */
.aag-ma-body .aag-hub-links {
    margin-top: 4rem;
}

.aag-ma-body .aag-hub-links ul {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: 1fr;
    gap: 2rem;
}

@media (min-width: 640px) {
    .aag-ma-body .aag-hub-links ul {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (min-width: 1024px) {
    .aag-ma-body .aag-hub-links ul {
        grid-template-columns: repeat(3, 1fr);
    }
}

.aag-ma-body .aag-hub-links a {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.2rem;
    border-radius: 1.4rem;
    border: 1px solid var(--aag-ma-border);
    background-color: var(--py-brand-color-5);
    padding: 2rem 2.4rem;
    font-family: var(--py-font-family-heading);
    font-size: 1.6rem;
    font-weight: 700;
    color: var(--py-brand-color-1);
    text-decoration: none;
    transition: border-color 0.15s ease, background-color 0.15s ease;
}

.aag-ma-body .aag-hub-links a::after {
    content: "";
    width: 1.6rem;
    height: 1.6rem;
    flex-shrink: 0;
    background-color: var(--py-brand-color-9);
    -webkit-mask: var(--aag-icon-arrowright) no-repeat center / contain;
    mask: var(--aag-icon-arrowright) no-repeat center / contain;
}

.aag-ma-body .aag-hub-links a:hover {
    border-color: hsl(var(--py-bc-8-hs), var(--py-bc-8-l), 0.5);
    background-color: var(--py-white);
}

/* ---- back to top ---- */
.aag-ma-top {
    position: fixed;
    bottom: 2.4rem;
    right: 2.4rem;
    z-index: 50;
    width: 4.4rem;
    height: 4.4rem;
    border-radius: 999px;
    border: 0;
    background-color: var(--py-brand-color-1);
    color: var(--py-white);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
    opacity: 0;
    transform: translateY(0.4rem);
    pointer-events: none;
    transition: opacity 0.2s ease, transform 0.2s ease;
}

.aag-ma-top.is-visible {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
}

.aag-ma-top svg {
    width: 2rem;
    height: 2rem;
}

/* ---- members-area icon glyphs (exact v0 lucide paths) ---- */
:root {
    --aag-icon-arrowright: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E%3Cpath d='m12 5 7 7-7 7'/%3E%3C/svg%3E");
    --aag-icon-search: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E");
}

.aag-icon-video { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5'/%3E%3Crect x='2' y='6' width='14' height='12' rx='2'/%3E%3C/svg%3E"); }
.aag-icon-calclock { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.25'/%3E%3Cpath d='M16 2v4'/%3E%3Cpath d='M8 2v4'/%3E%3Cpath d='M3 10h5'/%3E%3Cpath d='M17.5 17.5 16 16.3V14'/%3E%3Ccircle cx='16' cy='16' r='6'/%3E%3C/svg%3E"); }
.aag-icon-flower { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 5a3 3 0 1 1 3 3m-3-3a3 3 0 1 0-3 3m3-3v1M9 8a3 3 0 1 0 3 3M9 8h1m5 0a3 3 0 1 1-3 3m3-3h-1m-2 3v-1'/%3E%3Ccircle cx='12' cy='8' r='2'/%3E%3Cpath d='M12 10v12'/%3E%3Cpath d='M12 22c4.2 0 7-1.667 7-5-4.2 0-7 1.667-7 5Z'/%3E%3Cpath d='M12 22c-4.2 0-7-1.667-7-5 4.2 0 7 1.667 7 5Z'/%3E%3C/svg%3E"); }
.aag-icon-target { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Ccircle cx='12' cy='12' r='6'/%3E%3Ccircle cx='12' cy='12' r='2'/%3E%3C/svg%3E"); }
.aag-icon-download { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 15V3'/%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'/%3E%3Cpath d='m7 10 5 5 5-5'/%3E%3C/svg%3E"); }
.aag-icon-medal { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7.21 15 2.66 7.14a2 2 0 0 1 .13-2.2L4.4 2.8A2 2 0 0 1 6 2h12a2 2 0 0 1 1.6.8l1.6 2.14a2 2 0 0 1 .14 2.2L16.79 15'/%3E%3Cpath d='M11 12 5.12 2.2'/%3E%3Cpath d='m13 12 5.88-9.8'/%3E%3Cpath d='M8 7h8'/%3E%3Ccircle cx='12' cy='17' r='5'/%3E%3Cpath d='M12 18v-2h-.5'/%3E%3C/svg%3E"); }
.aag-icon-circledot { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3C/svg%3E"); }
.aag-icon-presentation { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 3h20'/%3E%3Cpath d='M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3'/%3E%3Cpath d='m7 21 5-5 5 5'/%3E%3C/svg%3E"); }
.aag-icon-filedown { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z'/%3E%3Cpath d='M14 2v4a2 2 0 0 0 2 2h4'/%3E%3Cpath d='M12 18v-6'/%3E%3Cpath d='m9 15 3 3 3-3'/%3E%3C/svg%3E"); }
.aag-icon-clock { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpolyline points='12 6 12 12 16 14'/%3E%3C/svg%3E"); }
.aag-icon-mappin { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E"); }
.aag-icon-caldays { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 2v4'/%3E%3Cpath d='M16 2v4'/%3E%3Crect width='18' height='18' x='3' y='4' rx='2'/%3E%3Cpath d='M3 10h18'/%3E%3Cpath d='M8 14h.01'/%3E%3Cpath d='M12 14h.01'/%3E%3Cpath d='M16 14h.01'/%3E%3Cpath d='M8 18h.01'/%3E%3Cpath d='M12 18h.01'/%3E%3Cpath d='M16 18h.01'/%3E%3C/svg%3E"); }
.aag-icon-image { --aag-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='18' x='3' y='3' rx='2' ry='2'/%3E%3Ccircle cx='9' cy='9' r='2'/%3E%3Cpath d='m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21'/%3E%3C/svg%3E"); }

/* Members Area — spacing/variant utilities (v0-measured) */
.aag-ma-vspace-sm { margin-top: 2.4rem; }
.aag-ma-vspace-xs { margin-top: 2rem; }
.aag-ma-card > :first-child { margin-top: 0; }
.aag-ma-logo-prev--light { background-color: var(--py-cloud); }
.aag-ma-logo-prev--dark { background-color: var(--py-brand-color-1); }

/* Members hero h1: white on the dark band (inner-page h1 rules elsewhere
   set teal), v0 spacing eyebrow->h1 12px, h1->welcome 16px */
.aag-ma-hero h1 {
    color: var(--py-white);
    margin: 1.2rem 0 0;
}

/* IAGS card theme line (only #20 Santiago has one in v0) */
.aag-ma-sym__theme {
    margin: 0.8rem 0 0;
    font-size: 1.4rem;
    font-style: italic;
    line-height: 1.625;
    color: var(--aag-ma-slate);
}

/* ============================================================
   Application forms (Gravity Forms inside .aag-form-sec, 2026-08-13)
   GF legacy markup; typography aligned to the theme. Long consent
   text (Code of Ethics / Conditions) gets readable sizing.
   ============================================================ */
:is(.aag-form-sec, .aag-ma-main) .gform_wrapper {
    max-width: 64rem;
    width: 100%;
    font-size: 1.5rem;
    color: var(--py-ink);
}

:is(.aag-form-sec, .aag-ma-main) .gform_fields {
    display: flex;
    flex-direction: column;
    gap: 2rem;
}

:is(.aag-form-sec, .aag-ma-main) .gfield_label {
    display: inline-block;
    font-size: 1.4rem;
    font-weight: 600;
    color: var(--py-brand-color-1);
    margin-bottom: 0.4rem;
}

:is(.aag-form-sec, .aag-ma-main) .gfield_required_asterisk,
:is(.aag-form-sec, .aag-ma-main) .gfield_required_text {
    color: var(--py-brand-color-8);
}

:is(.aag-form-sec, .aag-ma-main) input[type="text"],
:is(.aag-form-sec, .aag-ma-main) input[type="email"],
:is(.aag-form-sec, .aag-ma-main) input[type="number"],
:is(.aag-form-sec, .aag-ma-main) input[type="tel"],
:is(.aag-form-sec, .aag-ma-main) select,
:is(.aag-form-sec, .aag-ma-main) textarea {
    width: 100%;
    border: 1px solid var(--py-brand-color-4);
    border-radius: 0.8rem;
    background-color: var(--py-white);
    padding: 0.8rem 1.2rem;
    font-family: inherit;
    font-size: 1.5rem;
    line-height: 1.5;
    color: var(--py-ink);
}

:is(.aag-form-sec, .aag-ma-main) select {
    width: auto;
    min-width: 20rem;
    max-width: 100%;
}

:is(.aag-form-sec, .aag-ma-main) input:focus,
:is(.aag-form-sec, .aag-ma-main) select:focus,
:is(.aag-form-sec, .aag-ma-main) textarea:focus {
    outline: none;
    border-color: var(--py-brand-color-9);
    box-shadow: 0 0 0 2px var(--py-brand-color-10);
}

:is(.aag-form-sec, .aag-ma-main) .gform-field-label--type-sub {
    font-size: 1.2rem;
    color: var(--py-mist);
}

/* Consent + checkbox/radio rows: readable long text */
:is(.aag-form-sec, .aag-ma-main) .gfield_consent_label,
:is(.aag-form-sec, .aag-ma-main) .gchoice label {
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--py-ink);
}

:is(.aag-form-sec, .aag-ma-main) .ginput_container_consent {
    display: flex;
    align-items: flex-start;
    gap: 0.8rem;
}

:is(.aag-form-sec, .aag-ma-main) input[type="checkbox"],
:is(.aag-form-sec, .aag-ma-main) input[type="radio"] {
    width: 1.6rem;
    height: 1.6rem;
    margin-top: 0.3rem;
    flex-shrink: 0;
    accent-color: var(--py-brand-color-8);
}

:is(.aag-form-sec, .aag-ma-main) select[multiple] {
    width: 100%;
    min-height: 14rem;
}

:is(.aag-form-sec, .aag-ma-main) .gform_footer {
    margin-top: 2.4rem;
}

:is(.aag-form-sec, .aag-ma-main) input[type="submit"],
:is(.aag-form-sec, .aag-ma-main) .gform_button {
    display: inline-block;
    border: 0;
    background-color: var(--py-brand-color-8);
    color: var(--py-white);
    font-family: inherit;
    font-size: 1.5rem;
    font-weight: 500;
    padding: 1rem 2.4rem;
    border-radius: 1rem;
    cursor: pointer;
    transition: opacity 0.2s ease;
}

:is(.aag-form-sec, .aag-ma-main) input[type="submit"]:hover {
    opacity: 0.8;
}

:is(.aag-form-sec, .aag-ma-main) .gfield_validation_message,
:is(.aag-form-sec, .aag-ma-main) .validation_message {
    margin-top: 0.6rem;
    font-size: 1.3rem;
    color: #b3261e;
}

:is(.aag-form-sec, .aag-ma-main) .gform_validation_errors {
    border: 1px solid #e0a2a2;
    background: #fdeeee;
    border-radius: 0.8rem;
    padding: 1.2rem 1.6rem;
    margin-bottom: 2rem;
    font-size: 1.4rem;
    color: #b3261e;
}

:is(.aag-form-sec, .aag-ma-main) .gform_confirmation_message {
    font-size: 1.6rem;
    line-height: 1.625;
    color: var(--py-ink);
}

.aag-form-note {
    margin: 0;
    font-size: 1.5rem;
    line-height: 1.625;
    color: var(--py-slate);
}

.aag-form-note a {
    color: var(--py-brand-color-9);
    font-weight: 600;
}

/* Fellow-upgrade page reuses the members-area shell; give its form the
   same treatment without the .aag-form-sec section wrapper. */
.aag-ma-main .gform_wrapper {
    max-width: 64rem;
    font-size: 1.5rem;
}

.aag-ma-main .aag-form-note {
    margin-bottom: 2rem;
}

/* ============================================================
   Plugin endpoint shell (.aag-shell — aag-membership endpoints
   rendered inside theme chrome, 2026-08-13). The endpoint markup is
   plugin-owned (h1/h2, fieldsets, dl.aag-facts, table.aag-dir,
   .aag-btn, notices); this block gives it theme typography.
   ============================================================ */
.aag-shell {
    background-color: var(--py-white);
    padding: 4.8rem var(--py-sec-pad-inline);
}

.aag-shell__inner {
    max-width: 76.8rem;
    margin: 0 auto;
    font-size: 1.5rem;
    line-height: 1.625;
    color: var(--py-ink);
}

.aag-shell h1 {
    font-family: var(--py-font-family-heading);
    font-size: 3rem;
    line-height: 1.2;
    font-weight: 700;
    color: var(--py-brand-color-1);
    margin: 0 0 1.6rem;
}

.aag-shell h2 {
    font-family: var(--py-font-family-heading);
    font-size: 2rem;
    font-weight: 700;
    color: var(--py-brand-color-1);
    margin: 3.2rem 0 1.2rem;
}

.aag-shell p {
    margin: 0 0 1.2rem;
}

.aag-shell fieldset {
    border: 1px solid var(--py-brand-color-4);
    border-radius: 1rem;
    margin: 1.6rem 0;
    padding: 1.6rem;
}

.aag-shell legend {
    font-weight: 600;
    color: var(--py-brand-color-1);
    padding: 0 0.6rem;
}

.aag-shell label {
    font-size: 1.4rem;
}

.aag-shell input[type="text"],
.aag-shell input[type="password"],
.aag-shell input[type="email"],
.aag-shell input[type="search"],
.aag-shell select {
    width: 100%;
    max-width: 40rem;
    border: 1px solid var(--py-brand-color-4);
    border-radius: 0.8rem;
    background-color: var(--py-white);
    padding: 0.8rem 1.2rem;
    font-family: inherit;
    font-size: 1.5rem;
    line-height: 1.5;
    color: var(--py-ink);
    margin: 0.4rem 0 0.8rem;
}

.aag-shell select {
    width: auto;
    min-width: 20rem;
    max-width: 100%;
}

.aag-shell input:focus,
.aag-shell select:focus {
    outline: none;
    border-color: var(--py-brand-color-9);
    box-shadow: 0 0 0 2px var(--py-brand-color-10);
}

.aag-shell input[type="checkbox"],
.aag-shell input[type="radio"] {
    width: 1.6rem;
    height: 1.6rem;
    accent-color: var(--py-brand-color-8);
}

.aag-shell button,
.aag-shell .aag-btn {
    display: inline-block;
    border: 1px solid var(--py-brand-color-8);
    border-radius: 1rem;
    background-color: var(--py-white);
    color: var(--py-brand-color-9);
    font-family: inherit;
    font-size: 1.5rem;
    font-weight: 500;
    padding: 0.8rem 1.8rem;
    cursor: pointer;
    text-decoration: none;
    transition: opacity 0.2s ease;
}

.aag-shell button.aag-pay,
.aag-shell .aag-btn-solid,
.aag-shell button[type="submit"] {
    background-color: var(--py-brand-color-8);
    border-color: var(--py-brand-color-8);
    color: var(--py-white);
}

.aag-shell button:hover,
.aag-shell .aag-btn:hover {
    opacity: 0.8;
}

.aag-shell dl.aag-facts {
    display: grid;
    grid-template-columns: 16rem 1fr;
    gap: 0.6rem 1.6rem;
    margin: 1.6rem 0;
}

.aag-shell dl.aag-facts dt {
    font-weight: 600;
    color: var(--py-brand-color-1);
}

.aag-shell dl.aag-facts dd {
    margin: 0;
}

.aag-shell .aag-saved,
.aag-shell .aag-error,
.aag-shell .aag-pending,
.aag-shell .aag-notice {
    border-radius: 1rem;
    padding: 1.2rem 1.6rem;
    margin: 0 0 1.6rem;
}

.aag-shell .aag-saved {
    background: #edf7ee;
    border: 1px solid #9fd3a5;
}

.aag-shell .aag-error {
    background: #fdeeee;
    border: 1px solid #e0a2a2;
}

.aag-shell .aag-pending,
.aag-shell .aag-notice {
    background: #fff6e5;
    border: 1px solid #e2c07f;
}

.aag-shell table.aag-dir {
    border-collapse: collapse;
    width: 100%;
    margin-top: 1.6rem;
    font-size: 1.4rem;
}

.aag-shell table.aag-dir th {
    background-color: var(--py-brand-color-1);
    color: var(--py-white);
    font-family: var(--py-font-family-heading);
    font-weight: 600;
    padding: 1rem 1.4rem;
    text-align: left;
}

.aag-shell table.aag-dir td {
    border-bottom: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    padding: 1rem 1.4rem;
    text-align: left;
}

.aag-shell .aag-pager a,
.aag-shell .aag-pager strong {
    margin-right: 0.8rem;
}

.aag-shell small {
    font-size: 1.3rem;
    color: var(--py-mist);
}

/* Directory page is wider than the forms */
.aag-endpoint .aag-shell__inner:has(table.aag-dir) {
    max-width: 96rem;
}

@media (min-width: 1024px) {
    .aag-shell {
        padding-top: 6.4rem;
        padding-bottom: 6.4rem;
    }
}

/* ============================================================
   /membership-account/ design pass (2026-08-18). Page-scoped under
   .aag-acct — the shared .aag-shell rules above are untouched, so
   directory/renewal/pay/deny endpoints keep their look. Card treatment
   mirrors .aag-ma-card; field styling mirrors the GF application forms
   (labels 1.4/600 brand-1, 0.4rem label→input, 1.6rem copper-accent
   checks). Spacing scale: cards 2.4rem apart, card padding 2.4rem,
   h2→content 1.2rem, field→field 1.6rem, check rows 0.8rem,
   content→button 2.4rem (= .gform_footer), fieldsets 1.6rem apart.
   ============================================================ */
.aag-shell__inner:has(> .aag-acct) {
    max-width: 86.4rem;
}

.aag-acct {
    --aag-acct-border: hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    --aag-acct-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
}

/* The structural <br> separators between fields are neutralized —
   spacing is owned by the label/help/button margins below. (The <br>
   inside each label is harmless: the input under it is a block.) */
.aag-acct form > br,
.aag-acct fieldset > br {
    display: none;
}

/* ---- header block ---- */
.aag-acct-head h1 {
    margin-bottom: 0.8rem;
}

.aag-acct-status {
    margin: 0;
    font-size: 1.6rem;
}

.aag-acct-renew {
    margin: 1.6rem 0 0;
}

.aag-acct-links {
    margin: 1.2rem 0 0;
    font-size: 1.4rem;
}

.aag-acct-links a {
    font-weight: 600;
    color: var(--py-brand-color-9);
    text-decoration: none;
}

.aag-acct-links a:hover {
    text-decoration: underline;
}

/* ---- cards (members-area card treatment) ---- */
.aag-acct-card {
    border: 1px solid var(--aag-acct-border);
    border-radius: 1.4rem;
    background-color: var(--py-white);
    box-shadow: var(--aag-acct-shadow);
    padding: 2.4rem;
    margin-top: 2.4rem;
}

.aag-acct .aag-acct-card h2 {
    margin: 0 0 1.2rem;
}

/* Credential actions are siblings: side by side from 768px */
.aag-acct-cred {
    display: grid;
    grid-template-columns: 1fr;
    gap: 2.4rem;
    margin-top: 2.4rem;
}

.aag-acct-cred .aag-acct-card {
    margin-top: 0;
}

@media (min-width: 768px) {
    .aag-acct-cred {
        grid-template-columns: 1fr 1fr;
    }
}

/* ---- fields (GF application-form parity) ---- */
.aag-acct-field {
    display: block;
    margin: 0 0 1.6rem;
    font-size: 1.4rem;
    font-weight: 600;
    color: var(--py-brand-color-1);
}

.aag-acct .aag-acct-field input {
    margin: 0.4rem 0 0;
    font-weight: 400;
}

.aag-acct-check {
    display: flex;
    align-items: flex-start;
    gap: 0.8rem;
    margin: 0 0 0.8rem;
    line-height: 1.625;
}

.aag-acct .aag-acct-check input {
    margin-top: 0.3rem;
    flex-shrink: 0;
}

.aag-acct-help {
    display: block;
    margin: 0.8rem 0 1.2rem;
    line-height: 1.5;
}

/* content → button = 2.4rem, like the application forms' gform_footer */
.aag-acct .aag-acct-card form p:last-child {
    margin: 2.4rem 0 0;
}

/* ---- fieldsets: deliberate group styling ---- */
.aag-acct fieldset {
    margin: 0 0 1.6rem;
    padding: 1.6rem 2rem 2rem;
}

.aag-acct fieldset:last-of-type {
    margin-bottom: 0;
}

.aag-acct legend {
    font-family: var(--py-font-family-heading);
    font-size: 1.5rem;
}

.aag-acct fieldset > .aag-acct-field:last-of-type,
.aag-acct fieldset > .aag-acct-check:last-of-type {
    margin-bottom: 0;
}

/* ---- facts list inside its card ---- */
/* dl in the selectors: must out-rank .aag-shell dl.aag-facts above */
.aag-acct dl.aag-facts {
    margin: 0;
    grid-template-columns: 18rem 1fr; /* "Membership number" fits one line */
}

@media (max-width: 480px) {
    .aag-acct dl.aag-facts {
        grid-template-columns: 1fr;
        gap: 0;
    }

    .aag-acct dl.aag-facts dt {
        margin-top: 0.8rem;
    }

    .aag-acct dl.aag-facts dt:first-child {
        margin-top: 0;
    }
}


/* ============================================================
   Members Area mega panel (v0 parity 2026-08-13). Lock icons on the
   trigger + panel title, accent Renew pill leading the links grid.
   ============================================================ */
.main-nav .menu-members-area > a::before,
.main-nav-mobile .menu-members-area .mobile-nav-row > a::before {
    content: "";
    display: inline-block;
    width: 1.4rem;
    height: 1.4rem;
    flex-shrink: 0;
    margin-right: 0.6rem;
    vertical-align: -0.1rem;
    background-color: var(--py-brand-color-8);
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='11' x='3' y='11' rx='2' ry='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E") no-repeat center / contain;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='11' x='3' y='11' rx='2' ry='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E") no-repeat center / contain;
}

.mega-panel--members .mega-panel__title::after {
    content: "";
    display: inline-block;
    width: 1.6rem;
    height: 1.6rem;
    margin-left: 0.8rem;
    vertical-align: -0.1rem;
    background-color: var(--py-brand-color-8);
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='11' x='3' y='11' rx='2' ry='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E") no-repeat center / contain;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='11' x='3' y='11' rx='2' ry='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E") no-repeat center / contain;
}

.mega-panel__renew-li {
    grid-column: 1 / -1;
    margin-bottom: 0.8rem;
}

/* Desktop-scoped: in v0's MOBILE accordion Renew is a plain row like the
   other links (measured 2026-08-14), so outside .main-nav the pill falls
   back to the generic mobile row styling. Pill metrics re-measured on v0
   2026-08-14: 12.8px/19.2, pad 0 10px. */
.main-nav .mega-panel__links .mega-panel__renew {
    display: inline-flex;
    align-items: center;
    background-color: var(--py-brand-color-8);
    color: var(--py-white);
    font-size: 1.28rem;
    font-weight: 500;
    line-height: 1.92rem;
    padding: 0 1rem;
    border-radius: 0.8rem;
    text-decoration: none;
    transition: opacity 0.2s ease;
}

.main-nav .mega-panel__links .mega-panel__renew:hover {
    /* re-assert the pill bg: the generic panel-row hover wash used to
       bleed through here (white text on wash — invisible; v0 keeps the
       copper bg and dims to opacity .8) */
    background-color: var(--py-brand-color-8);
    opacity: 0.8;
    color: var(--py-white);
}

/* ============================================================
   Members Area spacing corrections (measured audit 2026-08-13,
   v0 vs dev at 1440 — see fb-space-measure). Root cause: v0 heading
   line-heights (text-lg = 18/28, text-base = 16/24, text-xl = 20/28)
   were inherited, not set. Plus targeted per-page deltas.
   ============================================================ */
.aag-ma-card h2,
.aag-ma-card h3,
.aag-ma-list-card h2,
.aag-ma-list-card h3,
.aag-ma-sym h3,
.aag-ma-media h3,
.aag-ma-callout--split h2,
.aag-ma-article h2,
.aag-ma-refs h2 {
    line-height: 2.8rem;
}

.aag-ma-guide-box h2 {
    line-height: 2.4rem;
}

table.aag-ma-table th,
table.aag-ma-table td {
    line-height: 2rem;
}

/* Card action buttons (governance/logo download): v0 mt-5 + h-40 */
.aag-ma-card > .aag-ma-btn {
    margin-top: 2rem;
    width: fit-content;
    padding: 0.8rem 1.6rem;
}

/* Governance document cards are p-7 in v0 (other cards p-6) */
.aag-ma-card--lg {
    padding: 2.8rem;
}

/* A section following a grid (awards: Honorary Fellows after the medal
   grid) gets the same 48px rhythm as section-after-section */
.aag-ma-grid + .aag-ma-sec {
    margin-top: 4.8rem;
}

/* v0 mt-10 (medal grid) */
.aag-ma-vspace-md {
    margin-top: 4rem;
}

/* v0 mt-2 lede variant (awards Honorary Fellows intro) */
.aag-ma-lede--tight {
    margin-top: 0.8rem;
}

/* v0 mt-6 grid variant (honorary fellows cards) */
.aag-ma-grid--sm {
    margin-top: 2.4rem;
}

/* Past-IAGS search is the py-2.5 / pl-10 variant (42px tall) */
.aag-ma-search--lg input {
    padding: 1rem 1.2rem 1rem 4rem;
}

/* Spacing audit round 2 (2026-08-13): the lectures note-box carried the
   global <p> bottom margin on its placeholder button, and its info line
   inherited 1.625 line-height where v0 uses 20px; the history objectives
   list is mt-3/gap-3 in v0 (the awards dotlists keep mt-4/gap-2). */
p.aag-ma-dead-btn {
    margin-bottom: 0;
}

.aag-ma-note-box .aag-ma-note {
    line-height: 2rem;
}

.aag-ma-article .aag-ma-dotlist {
    margin-top: 1.2rem;
    gap: 1.2rem;
}

/* Round 3: refs section sits inside our flex article (gap 2rem) where
   v0 has it outside its gap wrapper - net mt-10 = gap + 2rem; and the
   short-course meta <p> inherited the list-card p line-height. */
.aag-ma-refs {
    margin-top: 2rem;
}

.aag-ma-list-card p.aag-ma-meta {
    line-height: 2rem;
}

/* ============================================================
   Header account menu ("Hi, {first}" dropdown, 2026-08-13).
   Same interaction pattern as the nav dropdowns: hover on desktop
   pointer devices, click/tap toggle, Escape + focus-out close.
   ============================================================ */
.py-account-menu {
    position: relative;
}

.py-account-menu__trigger {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    cursor: pointer;
}

.py-account-menu__trigger svg {
    width: 1.6rem;
    height: 1.6rem;
    flex-shrink: 0;
    transition: transform 0.2s ease;
}

.py-account-menu[x-data] .py-account-menu__trigger[aria-expanded="true"] svg {
    transform: rotate(180deg);
}

.py-account-menu__panel {
    position: absolute;
    top: calc(100% + 0.6rem);
    right: 0;
    z-index: 60;
    min-width: 18rem;
    background-color: var(--py-white);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.6);
    border-radius: 1rem;
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
    padding: 0.6rem;
}

.py-account-menu__panel a {
    display: block;
    padding: 0.8rem 1.2rem;
    border-radius: 0.6rem;
    font-size: 1.4rem;
    font-weight: 500;
    color: var(--py-ink);
    text-decoration: none;
    white-space: nowrap;
    transition: background-color 0.15s ease, color 0.15s ease;
}

.py-account-menu__panel a:hover,
.py-account-menu__panel a:focus-visible {
    background-color: var(--py-brand-color-5);
    color: var(--py-brand-color-1);
}

/* Mobile: panel flows in place under the trigger (no absolute overlay) */
.py-account-menu--mobile .py-account-menu__panel {
    position: static;
    box-shadow: none;
    border: 0;
    padding: 0.4rem 0 0;
    min-width: 0;
}

/* ============================================================
   Themed /login page (2026-08-13). WP core wp_login_form() output
   (#loginform) styled to the theme inside a narrow card.
   ============================================================ */
.aag-login-hero h1 {
    color: var(--py-white);
    margin: 1.2rem 0 0;
}

.aag-page-hero .aag-login-lede {
    margin-top: 1.2rem;
    max-width: 67.2rem;
    font-size: 1.8rem;
    line-height: 1.625;
    color: var(--py-white);
}

.aag-login-band {
    background-color: var(--py-white);
    padding: 4.8rem var(--py-sec-pad-inline) 6.4rem;
}

.aag-login-card {
    max-width: 44rem;
    margin: 0 auto;
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    border-radius: 1.4rem;
    background-color: var(--py-white);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
    padding: 3.2rem;
}

.aag-login-card form p {
    margin: 0 0 1.6rem;
}

.aag-login-card label {
    display: block;
    font-size: 1.4rem;
    font-weight: 600;
    color: var(--py-brand-color-1);
    margin-bottom: 0.4rem;
}

.aag-login-card input[type="text"],
.aag-login-card input[type="password"] {
    width: 100%;
    border: 1px solid var(--py-brand-color-4);
    border-radius: 0.8rem;
    background-color: var(--py-white);
    padding: 0.8rem 1.2rem;
    font-family: inherit;
    font-size: 1.5rem;
    line-height: 1.5;
    color: var(--py-ink);
}

.aag-login-card input:focus {
    outline: none;
    border-color: var(--py-brand-color-9);
    box-shadow: 0 0 0 2px var(--py-brand-color-10);
}

.aag-login-card .login-remember label {
    display: inline-flex;
    align-items: center;
    gap: 0.8rem;
    font-weight: 400;
    font-size: 1.4rem;
    color: var(--py-ink);
    margin: 0;
}

.aag-login-card input[type="checkbox"] {
    width: 1.6rem;
    height: 1.6rem;
    accent-color: var(--py-brand-color-8);
}

.aag-login-card input[type="submit"] {
    display: inline-block;
    width: 100%;
    border: 0;
    background-color: var(--py-brand-color-8);
    color: var(--py-white);
    font-family: inherit;
    font-size: 1.5rem;
    font-weight: 500;
    padding: 1rem 2.4rem;
    border-radius: 1rem;
    cursor: pointer;
    transition: opacity 0.2s ease;
}

.aag-login-card input[type="submit"]:hover {
    opacity: 0.8;
}

.aag-login-error {
    margin: 0 0 1.6rem;
    background: #fdeeee;
    border: 1px solid #e0a2a2;
    border-radius: 1rem;
    padding: 1.2rem 1.6rem;
    font-size: 1.4rem;
    line-height: 1.625;
    color: #8f1f1f;
}

.aag-login-lost {
    margin: 1.6rem 0 0;
    font-size: 1.4rem;
}

.aag-login-lost a,
.aag-login-join a {
    color: var(--py-brand-color-9);
    font-weight: 600;
}

.aag-login-join {
    margin: 2.4rem auto 0;
    max-width: 44rem;
    text-align: center;
    font-size: 1.4rem;
    color: var(--py-slate);
}

/* ============================================================
   Polish batch 2 (2026-08-13, v0-measured header/chrome).
   ============================================================ */

/* ---- 4. Header nav to v0: item color #111 (v0's current slate),
   radius 8px, lucide stroke chevron replacing the border-corner glyph.
   Font (Poppins 14/500), padding 8/10 and the wash-pill hover/open state
   already matched. Site-wide by design — the header is one component. */
.main-nav > ul > li > a,
.main-nav > ul > li > span {
    color: rgb(17, 17, 17);
    border-radius: 0.8rem;
}

.main-nav > ul > li.menu-item-has-children > a::after,
.main-nav > ul > li.menu-item-has-children > span::after {
    width: 1.6rem;
    height: 1.6rem;
    border: 0;
    background-color: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat center / contain;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat center / contain;
    transform: none;
}

.main-nav > ul > li.menu-item-has-children:hover > a::after,
.main-nav > ul > li.menu-item-has-children:focus-within > a::after,
.main-nav > ul > li.menu-item-has-children:hover > span::after,
.main-nav > ul > li.menu-item-has-children:focus-within > span::after {
    transform: rotate(180deg);
}

/* Mobile header: same ink + the same lucide chevron on the toggle */
.main-nav-mobile li a {
    color: rgb(17, 17, 17);
    font-weight: 500;
}

.main-nav-mobile .menu-item button.submenu-toggle::after {
    width: 1.6rem;
    height: 1.6rem;
    border: 0;
    background-color: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat center / contain;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat center / contain;
    transform: none;
}

.main-nav-mobile .menu-item button.submenu-toggle.open::after {
    transform: rotate(180deg);
}

/* ---- 1. Account dropdown: continuous hover area. The panel is now a
   TRANSPARENT wrapper flush against the trigger (padding-top carries the
   visual gap INSIDE the hover container); the card look moved to __box.
   Close intent-delay (250ms) lives in the Alpine timer in header.php. */
.py-account-menu__panel {
    position: absolute;
    top: 100%;
    right: 0;
    z-index: 60;
    min-width: 18rem;
    padding: 0.8rem 0 0;
    background: transparent;
    border: 0;
    box-shadow: none;
    border-radius: 0;
}

.py-account-menu__box {
    background-color: var(--py-white);
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.6);
    border-radius: 1rem;
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
    padding: 0.6rem;
}

.py-account-menu--mobile .py-account-menu__panel {
    position: static;
    padding: 0.4rem 0 0;
    min-width: 0;
}

.py-account-menu--mobile .py-account-menu__box {
    box-shadow: none;
    border: 0;
    padding: 0;
}

/* ---- 3. Back-to-top to v0 exactly (site-wide, rendered in footer.php):
   40px circle, brand-1, 16px arrow, right/bottom 24, hidden = opacity 0 +
   16px drop, 300ms standard easing, hover = primary-light, no shadow. */
.aag-ma-top {
    position: fixed;
    bottom: 2.4rem;
    right: 2.4rem;
    z-index: 50;
    width: 4rem;
    height: 4rem;
    border-radius: 999px;
    border: 0;
    background-color: var(--py-brand-color-1);
    color: var(--py-white);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    box-shadow: none;
    opacity: 0;
    transform: translateY(1.6rem);
    pointer-events: none;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.aag-ma-top.is-visible {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
}

.aag-ma-top:hover {
    background-color: var(--py-brand-color-3);
}

.aag-ma-top svg {
    width: 1.6rem;
    height: 1.6rem;
}

/* ---- 5. Search popup branded (presentation only; trigger/behavior
   untouched). Card language + form fields per the /login card. */
.py-search__overlay {
    background: hsl(var(--py-bc-2-hs), var(--py-bc-2-l), 0.7);
}

.py-search__modal {
    border-radius: 1.4rem;
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.35);
}

.py-search__header {
    border-bottom: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.4);
}

.py-search__title {
    font-family: var(--py-font-family-heading);
    font-size: 1.8rem;
    font-weight: 700;
    color: var(--py-brand-color-1);
}

.py-search__close {
    color: var(--py-mist);
    transition: color 0.15s ease;
}

.py-search__close:hover {
    color: var(--py-brand-color-1);
}

.py-search__input {
    border: 1px solid var(--py-brand-color-4);
    border-radius: 0.8rem;
    padding: 1rem 1.4rem;
    font-family: inherit;
    font-size: 1.5rem;
    color: var(--py-ink);
}

.py-search__input::placeholder {
    color: var(--py-mist);
}

.py-search__input:focus {
    border-color: var(--py-brand-color-9);
    box-shadow: 0 0 0 2px var(--py-brand-color-10);
}

.py-search__submit {
    background-color: var(--py-brand-color-8);
    color: var(--py-white);
    font-family: inherit;
    font-size: 1.4rem;
    font-weight: 500;
    border: 0;
    border-radius: 0.8rem;
    padding: 0.8rem 1.6rem;
    cursor: pointer;
    transition: opacity 0.2s ease;
}

.py-search__submit:hover {
    opacity: 0.8;
}

/* The trigger must never wrap (nav width tightened once Members Area joined) */
.py-account-menu__trigger {
    white-space: nowrap;
}

/* ============================================================
   Polish batch 3 (2026-08-14): mega-panel text, measured on v0.
   Panel link rows (every panel, Members Area rows included):
   #111 14px/20 w500, pad 8x12, radius 8px — we shipped slate
   15px/400 pad 10x12 r6. Hover (brand-1 + wash) already matched.
   Panel description is #111 in v0 too (was slate). Mobile accordion
   rows: #111 14px/400 pad 8x12 (was slate 15px, pad 9x12).
   These override the global-settings.css base rules (same
   specificity, this file loads later). Title/CTA already matched.
   ============================================================ */
.mega-panel__links a {
    padding: 0.8rem 1.2rem;
    border-radius: 0.8rem;
    font-size: 1.4rem;
    font-weight: 500;
    line-height: 2rem;
    color: rgb(17, 17, 17);
}

.mega-panel__desc {
    color: rgb(17, 17, 17);
}

.main-nav-mobile .mega-panel--mobile .mega-panel__links a {
    padding: 0.8rem 1.2rem;
    font-size: 1.4rem;
    color: rgb(17, 17, 17);
}

/* ============================================================
   Polish batch 4 (2026-08-14): /about/the-association spacing,
   re-measured against LIVE v0 (v0 changed since the 2026-07-31
   build). Root cause of most deficits: the global margin reset
   (0-1-1) beat this page's single-class margin rules — those are
   now tag-qualified in place; the rules below add what never
   existed. All classes here are used on page 5044 only (checked).
   v0 rhythm: lede→content mt-12 (48), sub-block mt-14 (56),
   h3→grid mt-6 (24); our section flex gap is 30.
   ============================================================ */

/* Committee cards: title text-lg 18/28; the icon→title mt-4 applies only
   under a tile — v0's tile-less Honorary card has no title margin */
.aag-committee-card > h3 {
    line-height: 2.8rem;
}

.aag-committee-card > .aag-icon-tile + h3 {
    margin-top: 1.6rem;
}

/* v0 chair row: the inline mail link sits in a 24px line box — ours is a
   flex row, so line-height cannot size it; min-height does */
.aag-kv .aag-meta-line {
    min-height: 2.4rem;
}

.aag-bo-card h3 {
    line-height: 2.8rem;
}

/* Affiliate variant (same aag-committee-card class; v0 differs): p-7,
   head-row→desc mt-5, desc→link mt-5, title leading-tight */
.aag-card:has(.aag-affil-head) {
    padding: 2.8rem;
}

.aag-affil-head h3 {
    line-height: 2.25rem;
}

.aag-card:has(.aag-affil-head) p.aag-committee-card__desc {
    margin-top: 2rem;
}

.aag-card:has(.aag-affil-head) .aag-link-arrow {
    margin-top: 2rem;
    line-height: 2rem;
}

/* Medal variant: p-7, 48px tile w/ 24px icon, title mt-5, desc mt-3,
   recipient box mt-5 (was margin-top:auto — v0 fixes the gap and lets
   the desc flex-1 do the stretching) */
.aag-committee-card:has(> .aag-medal) {
    padding: 2.8rem;
}

.aag-committee-card > .aag-medal {
    width: 4.8rem;
    height: 4.8rem;
}

.aag-committee-card > .aag-medal::before {
    width: 2.4rem;
    height: 2.4rem;
}

.aag-committee-card:has(> .aag-medal) > h3 {
    margin-top: 2rem;
}

.aag-committee-card:has(> .aag-medal) p.aag-committee-card__desc {
    margin-top: 1.2rem;
}

.aag-committee-card .aag-award-box {
    margin-top: 2rem;
}

/* Distinguished Lecturer band: v0 mt-6 above (24), p-7, h3→desc mt-3 (12),
   and no icon tile so no title margin. Desktop is a grid — zero its row
   gap and use v0's real margin instead of fighting the track gap. */
.aag-lect-card {
    margin-top: -0.6rem;
    padding: 2.8rem;
}

.aag-lect-card > h3 {
    margin-top: 0;
}

.aag-lect-card p.aag-committee-card__desc {
    margin-top: -0.6rem; /* mobile flex gap 30 → v0 gap-6 24 */
}

@media (min-width: 640px) {
    .aag-lect-card {
        row-gap: 0;
        /* the row-spanning figure otherwise inflates the h3 row and
           pushes the description down — pin row 1 to the h3 height */
        grid-template-rows: auto 1fr;
    }

    .aag-lect-card p.aag-committee-card__desc {
        margin-top: 1.2rem;
        align-self: start;
    }
}

/* Section rhythm (flex gap 30 → v0 values) */
.py-grid:has(> .aag-committee-card) {
    margin-top: 1.8rem; /* lede→grid 48 */
}

h3 + .py-grid:has(> .aag-committee-card) {
    margin-top: -0.6rem; /* h3→grid 24 */
}

.py-grid:has(> .aag-committee-card) + h3 {
    margin-top: 2.6rem; /* grid→next sub-head 56 */
}

.py-grid:has(> .aag-bo-card) {
    margin-top: 1rem; /* v0 mt-10 = 40 */
}

.aag-awards-row2 {
    margin-top: 1.8rem; /* medals grid→honorary row 48 */
}

.aag-img-placeholder--wide {
    margin-top: 1rem; /* awards lede→photo v0 mt-10 = 40 */
}

/* Governance people rhythm (grids are page-unique) */
h3:has(+ .wp-block-piney-aag-people-grid.aag-people-grid--executive) {
    margin-top: 1.8rem; /* lede→Executive Officers 48 */
}

.wp-block-piney-aag-people-grid + h3 {
    margin-top: 2.6rem; /* grid→next sub-head 56 */
}

.aag-people-grid--councillor + p {
    margin-top: -0.6rem; /* grid→"Each year…" note 24 (v0 mt-6) */
}

h3 + p:has(+ .wp-block-piney-aag-people-grid.aag-people-grid--regional) {
    margin-top: -1.8rem; /* Regional h3→intro 12 (v0 mt-3) */
    max-width: 76.8rem; /* v0 max-w-3xl — 65rem wrapped a third line */
}

/* "Each year…" note → Regional Councillors h3 is the grid→h3 rule above
   minus the note: v0 mt-14 after the note */
p + h3:has(+ p + .wp-block-piney-aag-people-grid.aag-people-grid--regional) {
    margin-top: 2.6rem;
}

/* About "Our purpose"/"How we achieve it" lists: v0 space-y-3.5 (14) —
   scoped: the shared .aag-check-list elsewhere stays 12 until those
   pages are measured against live v0 */
.aag-about-card .aag-check-list {
    gap: 1.4rem;
}

/* --- PB4 round 2 (remaining deviations from the re-measure) --- */

/* Coordinator cards (the ones leading with an .aag-category eyebrow):
   v0 category 12/16, role text-sm 14/20 no margin, mail link mt-1 14px */
.aag-card:has(> .aag-category) > .aag-category {
    line-height: 1.6rem;
}

/* (role + mail-link values live in the calibrated coordinator block
   around line 2014 — updated there, it out-specifies rules here) */

/* Awards second row (Honorary + Nomination): v0 p-7; desc mt-3 and NOT
   flex-1 (our flex:1 stretched it and pushed the fellows pills to the
   card bottom — v0 keeps them right under the text); pills row mt-5;
   download button is 32px tall in v0 */
.aag-awards-row2 > .aag-committee-card {
    padding: 2.8rem;
}

.aag-awards-row2 p.aag-committee-card__desc {
    flex: 0 0 auto;
    margin-top: 1.2rem; /* Honorary: v0 mt-3 */
}

/* Nomination (the tiled card) uses mt-2 in v0 */
.aag-awards-row2 .aag-committee-card:has(> .aag-icon-tile) p.aag-committee-card__desc {
    margin-top: 0.8rem;
}

.aag-awards-row2 .aag-btn-row {
    margin-top: 2rem;
}

.aag-awards-row2 .aag-btn-row .btn {
    height: 3.2rem;
}

/* Business Office: v0 label→value gap is 6px on the mail/phone items
   (address item already matches) */
.aag-ci-mail .btn.aag-mail-link {
    margin-top: 0.6rem;
}

.aag-ci-phone p.aag-contact__value {
    margin-top: 0.6rem;
}


/* Regional Councillors grid follows its intro paragraph: v0 mt-6 (24) */
p + .wp-block-piney-aag-people-grid.aag-people-grid--regional {
    margin-top: -0.6rem;
}

/* Regional Activities: v0 lede→report grid mt-12 (48) */
.aag-report-grid {
    margin-top: 1.8rem;
}

/* About doc cards (Bylaws/Ethics): v0 mt-8 = 32 above the row (gap 30) */
.aag-doc-row {
    margin-top: 0.2rem;
}

/* ============================================================
   Members Area content placement (Beth's delivery, 2026-09-02):
   lecture <video>, Gold Medal recipients list, memorial photos.
   Recipients markup is generic — a silver/copper section reuses
   .aag-ma-recipients-sec / .aag-ma-recipients / .aag-ma-recipient.
   ============================================================ */
.aag-ma-video {
    width: 100%;
    aspect-ratio: 16 / 9;
    border-radius: 1.4rem;
    overflow: hidden;
    background-color: var(--py-brand-color-1);
}

.aag-ma-video video {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
    background-color: #000;
}

.aag-ma-note-box .aag-ma-btn {
    margin-top: 0.4rem;
}

.aag-ma-recipients {
    list-style: none;
    margin: 2.4rem 0 0;
    padding: 0;
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.6rem;
}

@media (min-width: 768px) {
    .aag-ma-recipients {
        grid-template-columns: repeat(2, 1fr);
    }
}

.aag-ma-recipient {
    display: flex;
    align-items: flex-start;
    gap: 1.6rem;
    border-radius: 1.4rem;
    border: 1px solid var(--aag-ma-border);
    background-color: var(--py-white);
    box-shadow: var(--aag-ma-shadow);
    padding: 2rem;
    min-width: 0;
}

.aag-ma-recipient__photo {
    flex-shrink: 0;
}

.aag-ma-recipient__img {
    display: block;
    width: 8.8rem;
    height: 8.8rem;
    border-radius: 1.2rem;
    object-fit: cover;
    object-position: top;
    background-color: var(--py-brand-color-5);
}

.aag-ma-recipient__img--none {
    background-color: var(--py-brand-color-10);
    -webkit-mask: none;
    mask: none;
}

/* Photo credit for a recipient portrait (2026-09-21: Hansuld only, per the
   client). Last line of the body, under "Read the citation", so the card
   keeps the same height as its neighbours. Small + muted, same family as
   the citation text. */
.aag-ma-recipient__credit {
    /* the negative bottom margin keeps the line out of the body's measured
       height, so this card stays as tall as the ones without a credit; the
       card's 2rem bottom padding still clears the text */
    margin: 0.8rem 0 -1rem;
    font-size: 1.1rem;
    line-height: 1.3;
    color: var(--aag-ma-slate);
}

.aag-ma-recipient__body {
    min-width: 0;
    flex: 1;
}

.aag-ma-recipient__year {
    margin: 0;
    font-size: 1.2rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--py-brand-color-9);
}

.aag-ma-recipient h3 {
    margin: 0.2rem 0 0;
    font-family: var(--py-font-family-heading);
    font-size: 1.8rem;
    font-weight: 700;
    line-height: 2.8rem;
    color: var(--py-brand-color-1);
}

.aag-ma-recipient__cite {
    margin-top: 0.8rem;
}

.aag-ma-recipient__cite summary {
    cursor: pointer;
    width: fit-content;
    font-size: 1.4rem;
    font-weight: 600;
    color: var(--py-brand-color-9);
}

.aag-ma-recipient__cite summary:hover {
    text-decoration: underline;
}

.aag-ma-recipient__cite > div {
    margin-top: 1.2rem;
}

.aag-ma-recipient__cite p,
.aag-ma-recipient__cite li {
    margin: 0 0 1.2rem;
    font-size: 1.4rem;
    line-height: 1.625;
    color: var(--aag-ma-slate);
}

.aag-ma-recipient__cite ul {
    margin: 0 0 1.2rem;
    padding-left: 2rem;
}

.aag-ma-recipient__cite li {
    margin-bottom: 0.6rem;
}

/* Memorial card: portrait replaces the flower disc when a photo exists */
.aag-ma-mem-card .aag-ma-mem-photo {
    display: block;
    width: 5.6rem;
    height: 5.6rem;
    flex-shrink: 0;
    border-radius: 999px;
    object-fit: cover;
    object-position: top;
    background-color: var(--py-brand-color-5);
}

.aag-ma-mem-card .aag-ma-mem-link {
    font-weight: 600;
    color: var(--py-brand-color-9);
    text-decoration: none;
}

.aag-ma-mem-card .aag-ma-mem-link:hover {
    text-decoration: underline;
}

.aag-ma-mem-card .aag-ma-mem-link small {
    font-size: 1.1rem;
    font-weight: 400;
    color: var(--aag-ma-mist);
}

/* Full names from the obituaries are longer than v0's placeholders
   ("David Murray McConchie" ellipsised at 1440 in a 3-col grid) — wrap. */
.aag-ma-mem-card .aag-ma-mem-name {
    white-space: normal;
}

/* Archive rows: keep "(2.9 MB)" on one line at 380px */
.aag-ma-rows .aag-ma-row-name small {
    white-space: nowrap;
}

/* "Other symposia" (past-iags): a section after the filtered stack missed
   the 48px section boundary (.aag-ma-sec + .aag-ma-sec / .aag-ma-grid +
   .aag-ma-sec) and its lede -> cards gap was the 20px vspace-xs where the
   page rhythm is 24px (measured 2026-09-02: awards/governance boundaries
   48, lede -> content 24). */
[data-ma-filter] + .aag-ma-sec {
    margin-top: 4.8rem;
}

.aag-ma-sec > .aag-ma-lede + .aag-ma-stack {
    margin-top: 2.4rem;
}

/* --------------------------------------------------------------------------
   Polish batch 2026-09-03 (Beth's Sept 3 list + committee feedback)
   -------------------------------------------------------------------------- */
/* Home feature panel: "32nd IAGS" lockup on one line (#20) — measured before:
   numeral 88px / label 14px (1440), 60px / 14px (380). Client asked for the
   ordinal smaller and "IAGS" larger; the two now share a baseline. */
.aag-feature-lockup {
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: 1.2rem;
}

.aag-feature-lockup .aag-feature-numeral {
    font-size: clamp(4.4rem, 6vw, 5.6rem);
}

.aag-feature-lockup .aag-feature-label {
    margin-top: 0;
    font-size: clamp(2rem, 2.6vw, 2.8rem);
    letter-spacing: 0.14em;
}

.aag-feature-sublabel + .aag-feature-sublabel {
    margin-top: 0;
}

/* Awards: DOI links inside Cameron-Hall Copper Medal citations */
.aag-ma-recipient__cite a {
    color: var(--py-brand-color-9);
    text-decoration: underline;
    text-underline-offset: 0.2em;
    overflow-wrap: anywhere;
}

.aag-ma-recipient__cite a:hover {
    color: var(--py-brand-color-3);
}

/* Business Office grid (#15): the 4-up cards are 295px at 1440 (263px inner)
   and the Website Maintenance e-mail is a 300px unbreakable token (v0 overflows
   too). One size down for the row's mail links at desktop widths (257px) plus
   a wrap safety net; 380/tablet cards are >= 348px and keep 14px. */
@media (min-width: 1200px) {
    body:not(.home) h3 + .py-grid:has(.aag-category) .btn.aag-mail-link {
        font-size: 1.2rem;
        letter-spacing: -0.01em;
        overflow-wrap: anywhere;
    }
}

/* Mobile nav (#19): a childless top-level item ("Home") is a bare link, not
   a .mobile-nav-row — measured 18px/45px vs 17px/52px for the parent rows.
   Same metrics as .main-nav-mobile .mobile-nav-row > a. */
.main-nav-mobile > ul > li > a {
    display: block;
    width: 100%;
    padding: 1.4rem 0;
    font-size: 1.7rem;
    font-weight: 600;
    color: var(--py-brand-color-1);
    text-decoration: none;
}

/* ==========================================================================
   Old-site harvest 2026-09-08: EXPLORE archive rows (page 5045) +
   Council minutes year cards (members area)
   ========================================================================== */

/* Current-issue card */
.aag-ea-current {
    width: 100%;
    max-width: 76.8rem;
    margin: 3.2rem auto 0;
    padding: 2.4rem;
    border-radius: 1.4rem;
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    background-color: var(--py-white);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
}

body:not(.home) .py-section .aag-ea-current__kicker {
    margin: 0;
    font-size: 1.2rem;
    font-weight: 600;
    letter-spacing: 0.025em;
    text-transform: uppercase;
    color: var(--py-brand-color-9);
}

body:not(.home) .py-section .aag-ea-current__title {
    margin: 0.6rem 0 0;
    font-family: var(--py-font-family-heading);
    font-size: 2.4rem;
    font-weight: 700;
    line-height: 1.25;
    color: var(--py-brand-color-1);
}

.aag-ea-current__title span {
    font-family: var(--py-font-family);
    font-size: 1.6rem;
    font-weight: 500;
    color: var(--py-ink);
    margin-left: 0.8rem;
}

body:not(.home) .py-section .aag-ea-current__sci {
    margin: 0.8rem 0 0;
    font-size: 1.4rem;
    line-height: 1.5;
    color: var(--py-ink);
}

.aag-ea-current .aag-dl-btn {
    margin-top: 1.6rem;
}

/* Decade jump chips */
.aag-ea-jump {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.8rem;
    margin-top: 4rem;
}

.aag-ea-jump__label {
    font-size: 1.3rem;
    font-weight: 600;
    color: var(--py-ink);
}

.aag-ea-jump a {
    display: inline-flex;
    align-items: center;
    padding: 0.4rem 1.2rem;
    border-radius: 99rem;
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.6);
    background-color: var(--py-white);
    font-size: 1.3rem;
    font-weight: 600;
    color: var(--py-brand-color-1);
    text-decoration: none;
    transition: background-color 0.2s ease, border-color 0.2s ease;
}

.aag-ea-jump a:hover {
    background-color: var(--py-brand-color-10);
    border-color: var(--py-brand-color-9);
}

/* Decade / year sections */
.aag-ea-decade {
    margin-top: 3.2rem;
    scroll-margin-top: 12rem;
}

.aag-ea-decade + .aag-ea-decade {
    margin-top: 4.8rem;
    padding-top: 3.2rem;
    border-top: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
}

body:not(.home) .py-section .aag-ea-decade__h {
    margin: 0;
    font-family: var(--py-font-family-heading);
    font-size: 2.4rem;
    font-weight: 700;
    color: var(--py-brand-color-1);
}

.aag-ea-year {
    margin-top: 2.4rem;
    scroll-margin-top: 12rem;
}

body:not(.home) .py-section .aag-ea-year__h {
    margin: 0 0 1.2rem;
    font-family: var(--py-font-family-heading);
    font-size: 1.8rem;
    font-weight: 700;
    color: var(--py-brand-color-9);
}

.aag-ea-rows {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.8rem;
}

.aag-ea-row {
    scroll-margin-top: 12rem; /* #explore-issue-NNN links land below the sticky header (2026-09-17) */
    border-radius: 1rem;
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.5);
    background-color: var(--py-white);
    padding: 1.2rem 1.6rem;
}

.aag-ea-row__main {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.6rem 1.6rem;
}

.aag-ea-row__issue {
    font-family: var(--py-font-family-heading);
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--py-brand-color-1);
}

.aag-ea-row__date {
    font-size: 1.3rem;
    color: var(--py-ink);
}

.aag-ea-row__dl,
.aag-ea-row__extra-link {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 1.3rem;
    font-weight: 600;
    color: var(--py-brand-color-9);
    text-decoration: none;
}

.aag-ea-row__dl {
    margin-left: auto;
    white-space: nowrap;
}

/* long supplementary labels (issue 185's second article) must wrap, not overflow */
.aag-ea-row__extra-link {
    align-items: flex-start;
    min-width: 0;
    overflow-wrap: anywhere;
}

.aag-ea-row__extra-link .aag-ea-row__ic {
    margin-top: 0.2rem;
}

.aag-ea-row__dl:hover,
.aag-ea-row__extra-link:hover,
.aag-ea-row__sci-link:hover {
    text-decoration: underline;
}

.aag-ea-row__ic {
    width: 1.6rem;
    height: 1.6rem;
    flex-shrink: 0;
}

.aag-ea-row__pending {
    margin-left: auto;
    font-size: 1.2rem;
    font-weight: 500;
    color: var(--py-ink);
}

.aag-ea-row--pending {
    opacity: 0.7;
}

body:not(.home) .py-section .aag-ea-row__sci,
body:not(.home) .py-section .aag-ea-row__extra {
    margin: 0.6rem 0 0;
    font-size: 1.3rem;
    line-height: 1.5;
    color: var(--py-ink);
}

.aag-ea-row__sci-label {
    font-weight: 600;
}

.aag-ea-row__sci-link {
    color: var(--py-brand-color-9);
    text-decoration: underline;
    text-underline-offset: 0.2em;
}

.aag-ea-row__doi {
    margin-left: 0.8rem;
    font-size: 1.1rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--py-brand-color-1);
    text-decoration: none;
    border: 1px solid hsl(var(--py-bc-4-hs), var(--py-bc-4-l), 0.6);
    border-radius: 0.4rem;
    padding: 0.1rem 0.5rem;
}

.aag-ea-row__doi:hover {
    background-color: var(--py-brand-color-10);
}

/* Members area — Council minutes: year cards reuse .aag-ma-sym + .aag-ma-rows */
.aag-ma-yearnav {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.6rem;
    margin-top: 2rem;
}

.aag-ma-yearnav a {
    display: inline-flex;
    padding: 0.3rem 1rem;
    border-radius: 99rem;
    border: 1px solid var(--aag-ma-border);
    background-color: var(--py-white);
    font-size: 1.2rem;
    font-weight: 600;
    color: var(--py-brand-color-1);
    text-decoration: none;
}

.aag-ma-yearnav a:hover {
    background-color: var(--py-brand-color-10);
    border-color: var(--py-brand-color-9);
}

.aag-ma-sec > .aag-ma-yearnav + .aag-ma-stack {
    margin-top: 2.4rem;
}

.aag-ma-sym.aag-ma-yearcard {
    scroll-margin-top: 12rem;
}

.aag-ma-yearcard h3 {
    margin: 0;
    font-family: var(--py-font-family-heading);
    font-size: 2rem;
    font-weight: 700;
    color: var(--py-brand-color-1);
}

.aag-ma-yearcard .aag-ma-rows {
    margin-top: 1.2rem;
}

/* Governance: Code of Ethics as page text */
.aag-ma-ethics h3 {
    margin: 2.4rem 0 0;
    font-family: var(--py-font-family-heading);
    font-size: 1.8rem;
    font-weight: 700;
    color: var(--py-brand-color-1);
}

.aag-ma-ethics ol {
    margin: 1.2rem 0 0;
    padding-left: 2.4rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
    font-size: 1.5rem;
    line-height: 1.625;
    color: var(--aag-ma-slate);
}

.aag-ma-ethics ol li {
    padding-left: 0.4rem;
}

.aag-ma-ethics .aag-ma-btn {
    margin-top: 2.4rem;
}

/* Members area — history archive photo (2026-09-09: Beth's Sept 8 photo fills the "Photo A3" slot) */
.aag-ma-fig__img {
    display: block;
    width: 100%;
    height: auto;
    border-radius: 1.4rem;
    border: 1px solid var(--aag-ma-border);
}

/* Publications EXPLORE row (2026-09-09): the secondary "All back issues" link
   is the theme's ghost button, sized to sit level with the copper gate button
   (.aag-dl-btn: 4rem tall, 1rem 2rem padding, 600 weight). */
.aag-btn-row .btn.btn--ghost {
    height: 4rem;
    margin-top: 0;
    padding: 0 2rem;
    font-weight: 600;
}

/* Account page "About you" fieldset (v0.14.1, 2026-09-11): selects match the
   text inputs; the mobile country code + number sit side by side. */
.aag-acct .aag-acct-field select {
    display: block;
    margin: 0.4rem 0 0;
    font-weight: 400;
}

.aag-acct .aag-acct-inline {
    display: grid;
    grid-template-columns: 12rem 1fr;
    gap: 1.2rem;
}

.aag-acct .aag-acct-inline .aag-acct-field {
    margin-bottom: 1.6rem;
}

.aag-acct .aag-acct-interests {
    margin: 0.4rem 0 1.2rem;
}

.aag-acct .aag-acct-interests .aag-acct-check {
    font-weight: 400;
}

.aag-acct .aag-acct-details .aag-acct-help {
    margin-top: 1.2rem;
    margin-bottom: 0;
}

/* ==========================================================================
   Header fit (2026-09-18): logged-in header overflowed its container at every
   width (7 nav items + "Hi, {name}" trigger). Fix = tighter primary-nav
   link padding (10px -> 6px, desktop only) + "Members" nav label + capped
   trigger name + desktop nav from 1280.
   The pill hover/open state keeps its shape; only its side padding shrinks.
   ========================================================================== */
.main-nav > ul > li > a,
.main-nav > ul > li > span {
    padding-left: 0.6rem;
    padding-right: 0.6rem;
}

/* Desktop account trigger: "Hi, {first name}" + chevron (restored 2026-09-18
   after the icon-only trial). The name is capped at 12ch with an ellipsis;
   the full name stays in the DOM and the accessible name. */
.py-account-menu__name {
    display: inline-block;
    max-width: 12ch;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    vertical-align: bottom;
}

/* Header row wider than the content column at >= 1280 (2026-09-18, operator
   decision): sets the container token for the header's own row only; page
   content containers keep 1216px. Mega panels span this row (left/right 0).
   The header's own gutter token drops 32 -> 16px here so the row really is
   100vw - 32px up to the 1360px cap (at 1280 v0 keeps 32px; from 1376 the
   cap binds and the logo sits at v0's x40 at 1440). */
@media (min-width: 1280px) {
    .py-header {
        --py-sec-pad-inline: 16px;
    }

    .py-header > .py-container {
        --py-container-width: min(calc(100vw - 3.2rem), 136rem);
    }
}

/* 1280–1365.98: the greeting drops "Hi, " to fit; >= 1366 shows it. */
@media (min-width: 1280px) and (max-width: 1365.98px) {
    .py-account-menu__hi {
        display: none;
    }
}

/* Desktop-nav switch moved 1200 -> 1280 (2026-09-18): logged in, the header
   overflowed its container at 1200–1279 even with 6px link padding. That band now uses the drawer (hamburger), like
   < 1200. Overrides the 1200px switch in global-settings.css for the band
   only; >= 1280 is untouched. */
@media (min-width: 1200px) and (max-width: 1279.98px) {
    nav.main-nav {
        display: none;
    }

    .py-header-actions:not(.py-header-actions--mobile) {
        display: none;
    }

    .py-header .mobile-menu {
        display: flex;
    }
}
