/* Public school website components. */
.prog-announcement {
    position: relative;
    z-index: 40;
    width: 100%;
    background: var(--prog-accent);
    color: var(--prog-on-accent);
}

.prog-announcement[hidden] {
    display: none;
}

.prog-announcement__inner {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto auto;
    min-height: 42px;
    align-items: center;
    gap: 0.65rem;
    padding: 0.4rem var(--prog-page-gutter);
    font-size: 0.9rem;
    font-weight: 650;
}

.prog-announcement__message {
    min-width: 0;
    margin: 0;
}

.prog-announcement a {
    color: inherit;
    font-weight: 800;
}

.prog-announcement__dismiss {
    width: 44px;
    min-width: 44px;
    min-height: 44px;
    padding: 0;
    border-color: currentColor;
    background: transparent;
    color: inherit;
}

.prog-site-header {
    position: sticky;
    z-index: 35;
    top: var(--prog-admin-offset, 0px);
    width: 100%;
    min-height: var(--prog-header-height);
    border-bottom: 1px solid color-mix(in srgb, var(--prog-on-header) 20%, transparent);
    background: var(--prog-header);
    color: var(--prog-on-header);
    box-shadow: 0 4px 18px rgba(9, 39, 27, 0.12);
}

.prog-site-header__inner {
    display: flex;
    min-height: var(--prog-header-height);
    align-items: center;
    gap: clamp(1rem, 2vw, 2rem);
    padding-inline: var(--prog-page-gutter);
}

.prog-school-identity {
    display: flex;
    min-width: min(18rem, 35vw);
    align-items: center;
    gap: 0.8rem;
    color: inherit;
    text-decoration: none;
}

.prog-school-identity:hover {
    color: inherit;
    text-decoration: none;
}

.prog-school-identity__logo {
    width: 48px;
    height: 48px;
    flex: 0 0 auto;
    border-radius: 12px;
    object-fit: contain;
}

.prog-school-identity__text {
    min-width: 0;
}

.prog-school-identity__name,
.prog-school-identity__motto {
    display: block;
    overflow: hidden;
    color: inherit;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.prog-school-identity__name {
    font-size: 1rem;
    font-weight: 800;
    line-height: 1.25;
}

.prog-school-identity__motto {
    margin-top: 0.15rem;
    opacity: 0.78;
    font-size: 0.78rem;
    line-height: 1.2;
}

.prog-primary-nav {
    display: flex;
    min-width: 0;
    flex: 1;
    align-items: center;
    justify-content: center;
}

.prog-primary-nav ul,
.prog-header-actions,
.prog-footer-links {
    display: flex;
    margin: 0;
    padding: 0;
    list-style: none;
}

.prog-primary-nav ul {
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 0.15rem;
}

.prog-primary-nav a {
    display: inline-flex;
    min-height: 44px;
    align-items: center;
    padding: 0.55rem 0.7rem;
    border-radius: 9px;
    color: inherit;
    font-size: 0.9rem;
    font-weight: 650;
    text-decoration: none;
}

.prog-primary-nav a:hover,
.prog-primary-nav .current-menu-item > a,
.prog-primary-nav .current_page_item > a,
.prog-primary-nav a[aria-current="page"] {
    background: color-mix(in srgb, var(--prog-on-header) 13%, transparent);
    color: inherit;
}

.prog-header-actions {
    flex: 0 0 auto;
    gap: 0.5rem;
}

.prog-header-actions .prog-button {
    min-height: 44px;
    padding-inline: 0.9rem;
    border-color: color-mix(in srgb, var(--prog-on-header) 28%, transparent);
}

.prog-header-actions .prog-button--outline {
    color: var(--prog-on-header);
}

.prog-mobile-actions,
.prog-menu-toggle {
    display: none;
}

.prog-hero {
    position: relative;
    isolation: isolate;
    width: 100%;
    min-height: clamp(34rem, 72vh, 52rem);
    overflow: hidden;
    background:
        radial-gradient(circle at 85% 20%, color-mix(in srgb, var(--prog-accent) 28%, transparent) 0 12%, transparent 13%),
        linear-gradient(125deg, var(--prog-primary-dark), var(--prog-primary) 58%, color-mix(in srgb, var(--prog-secondary) 60%, var(--prog-primary)));
    color: var(--prog-on-primary);
}

.prog-hero::after {
    position: absolute;
    z-index: -1;
    inset: 0;
    background: linear-gradient(90deg, rgba(4, 25, 15, 0.58), rgba(4, 25, 15, 0.08) 75%);
    content: "";
}

.prog-hero__media {
    position: absolute;
    z-index: -2;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.prog-hero__inner {
    display: grid;
    min-height: inherit;
    grid-template-columns: minmax(0, 1.15fr) minmax(16rem, 0.85fr);
    align-items: center;
    gap: clamp(2rem, 6vw, 6rem);
    padding: clamp(4rem, 8vw, 7rem) var(--prog-page-gutter);
}

.prog-hero__content {
    max-width: 50rem;
}

.prog-hero__eyebrow {
    display: inline-flex;
    margin-bottom: 1rem;
    padding: 0.35rem 0.75rem;
    border: 1px solid rgba(255, 255, 255, 0.35);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.1);
    color: inherit;
    font-size: 0.85rem;
    font-weight: 750;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.prog-hero h1,
.prog-hero h2,
.prog-hero h3 {
    color: inherit;
}

.prog-hero h1 {
    max-width: 15ch;
    margin-bottom: 1rem;
}

.prog-hero__statement {
    max-width: 46rem;
    margin-bottom: 1.5rem;
    color: inherit;
    font-size: clamp(1.05rem, 2vw, 1.35rem);
    opacity: 0.93;
}

.prog-hero__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.prog-hero .prog-button--outline {
    border-color: rgba(255, 255, 255, 0.72);
    color: #ffffff;
}

.prog-hero__panel {
    padding: clamp(1.2rem, 3vw, 2rem);
    border: 1px solid rgba(255, 255, 255, 0.22);
    border-radius: calc(var(--prog-radius) + 6px);
    background: rgba(255, 255, 255, 0.12);
    box-shadow: var(--prog-shadow);
    backdrop-filter: blur(14px);
}

.prog-school-stats {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.75rem;
}

.prog-school-stat {
    min-width: 0;
    padding: 1rem;
    border-radius: var(--prog-radius-small);
    background: rgba(255, 255, 255, 0.12);
}

.prog-school-stat__value,
.prog-school-stat__label {
    display: block;
    color: inherit;
}

.prog-school-stat__value {
    font-size: clamp(1.4rem, 3vw, 2rem);
    font-weight: 850;
    line-height: 1.1;
}

.prog-school-stat__label {
    margin-top: 0.3rem;
    opacity: 0.82;
    font-size: 0.85rem;
}

.prog-section-heading {
    display: flex;
    max-width: 100%;
    align-items: end;
    justify-content: space-between;
    gap: 1.5rem;
    margin-bottom: clamp(1.5rem, 3vw, 2.5rem);
}

.prog-section-heading__copy {
    max-width: 50rem;
}

.prog-section-heading h2 {
    margin-bottom: 0.45rem;
}

.prog-section-heading p {
    margin-bottom: 0;
    color: var(--prog-text-soft);
}

.prog-quick-access {
    position: relative;
    z-index: 3;
    margin-top: clamp(-4rem, -5vw, -2rem);
    padding-block: 0 var(--prog-section-padding);
}

.prog-quick-access__grid {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 1rem;
    padding-inline: var(--prog-page-gutter);
}

.prog-quick-card {
    display: flex;
    min-width: 0;
    min-height: 11rem;
    flex-direction: column;
    align-items: flex-start;
    padding: 1.25rem;
    border: 1px solid var(--prog-border);
    border-radius: var(--prog-radius);
    background: var(--prog-surface);
    box-shadow: var(--prog-shadow);
    color: var(--prog-text);
    text-decoration: none;
    transition: border-color var(--prog-transition), transform var(--prog-transition);
}

.prog-quick-card:hover {
    border-color: var(--prog-primary);
    color: var(--prog-text);
    text-decoration: none;
    transform: translateY(-3px);
}

.prog-quick-card__icon {
    display: grid;
    width: 2.75rem;
    height: 2.75rem;
    place-items: center;
    margin-bottom: auto;
    border-radius: 12px;
    background: color-mix(in srgb, var(--prog-primary) 12%, var(--prog-surface));
    color: var(--prog-primary-dark);
}

.prog-quick-card__title {
    display: block;
    margin-top: 1rem;
    font-weight: 800;
}

.prog-quick-card__description {
    display: block;
    margin-top: 0.35rem;
    color: var(--prog-text-soft);
    font-size: 0.86rem;
    line-height: 1.45;
}

.prog-about-grid,
.prog-contact-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.1fr) minmax(18rem, 0.9fr);
    align-items: center;
    gap: clamp(2rem, 6vw, 6rem);
}

.prog-about-media,
.prog-contact-map {
    min-height: 24rem;
    overflow: hidden;
    border-radius: calc(var(--prog-radius) + 6px);
    background: var(--prog-surface-soft);
    box-shadow: var(--prog-shadow);
}

.prog-about-media img,
.prog-contact-map iframe {
    width: 100%;
    height: 100%;
    min-height: inherit;
    object-fit: cover;
}

.prog-values-grid,
.prog-programme-grid,
.prog-support-grid,
.prog-news-grid,
.prog-resource-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr));
    gap: clamp(1rem, 2vw, 1.5rem);
}

.prog-news-card,
.prog-event-card,
.prog-achievement-card,
.prog-resource-card {
    overflow: hidden;
    border: 1px solid var(--prog-border);
    border-radius: var(--prog-radius);
    background: var(--prog-surface);
    box-shadow: var(--prog-shadow-small);
}

.prog-news-card__media {
    width: 100%;
    aspect-ratio: 16 / 9;
    object-fit: cover;
}

.prog-news-card__body,
.prog-event-card,
.prog-achievement-card,
.prog-resource-card {
    padding: clamp(1rem, 2vw, 1.5rem);
}

.prog-news-card__meta,
.prog-event-card__meta {
    color: var(--prog-text-soft);
    font-size: 0.85rem;
    font-weight: 650;
}

.prog-events-list {
    display: grid;
    gap: 1rem;
}

.prog-event-card {
    display: grid;
    grid-template-columns: 4.5rem minmax(0, 1fr) auto;
    align-items: center;
    gap: 1.25rem;
}

.prog-event-card__date {
    display: grid;
    min-height: 4.5rem;
    place-items: center;
    padding: 0.5rem;
    border-radius: 14px;
    background: var(--prog-primary);
    color: var(--prog-on-primary);
    font-weight: 800;
    line-height: 1.1;
    text-align: center;
}

.prog-achievements-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
    gap: 1rem;
}

.prog-achievement-card {
    text-align: center;
}

.prog-achievement-card__value {
    display: block;
    color: var(--prog-primary);
    font-size: clamp(1.75rem, 4vw, 3rem);
    font-weight: 850;
    line-height: 1.1;
}

.prog-gallery-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
    grid-auto-rows: clamp(9rem, 18vw, 15rem);
    gap: 0.75rem;
}

.prog-gallery-item {
    overflow: hidden;
    border-radius: var(--prog-radius-small);
    background: var(--prog-surface-soft);
}

.prog-gallery-item:nth-child(1),
.prog-gallery-item:nth-child(6) {
    grid-column: auto;
    grid-row: auto;
}

.prog-gallery-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 300ms ease;
}

.prog-gallery-item:hover img {
    transform: scale(1.025);
}

.prog-contact-list {
    display: grid;
    margin: 1.5rem 0 0;
    padding: 0;
    gap: 0.9rem;
    list-style: none;
}

.prog-contact-list li {
    display: grid;
    grid-template-columns: 2.5rem minmax(0, 1fr);
    align-items: center;
    gap: 0.75rem;
}

.prog-site-footer {
    width: 100%;
    padding-block: clamp(3rem, 6vw, 5rem) 1.25rem;
    background: var(--prog-primary-dark);
    color: var(--prog-on-primary);
}

.prog-site-footer h2,
.prog-site-footer h3,
.prog-site-footer h4 {
    color: inherit;
}

.prog-site-footer a {
    color: inherit;
}

.prog-footer-grid {
    display: grid;
    grid-template-columns: minmax(16rem, 1.4fr) repeat(3, minmax(10rem, 1fr));
    gap: clamp(2rem, 4vw, 4rem);
}

.prog-footer-links {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.45rem;
}

.prog-footer-bottom {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-top: 3rem;
    padding-top: 1.25rem;
    border-top: 1px solid rgba(255, 255, 255, 0.18);
    font-size: 0.875rem;
}

.prog-entry-header,
.prog-archive-header,
.prog-not-found {
    width: 100%;
    padding: clamp(3rem, 7vw, 6rem) var(--prog-page-gutter);
    background: var(--prog-surface-soft);
}

.prog-entry-content,
.prog-archive-content {
    width: 100%;
    padding: 0;
    background: var(--prog-surface);
}

.prog-page-header {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: end;
    gap: 1.25rem;
    width: 100%;
    margin-bottom: clamp(1.25rem, 3vw, 2.25rem);
}

.prog-page-header > div {
    min-width: 0;
}

.prog-page-header h1 {
    margin-bottom: 0.35rem;
    font-size: clamp(1.65rem, 3vw, 2.5rem);
}

.prog-page-header p {
    max-width: 62rem;
    margin: 0;
    color: var(--prog-text-soft);
}

.prog-entry-content > :where(p, ul, ol, blockquote, h2, h3, h4, pre):not(.alignwide):not(.alignfull),
.prog-entry-content > .wp-block-group:not(.alignwide):not(.alignfull) {
    max-width: var(--prog-content-measure);
}

.prog-post-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
    gap: 1.5rem;
}

.prog-pagination .nav-links {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: 2rem;
}

.prog-pagination .page-numbers {
    display: grid;
    min-width: 44px;
    min-height: 44px;
    place-items: center;
    padding: 0.45rem;
    border: 1px solid var(--prog-border);
    border-radius: 10px;
    background: var(--prog-surface);
    text-decoration: none;
}

.prog-pagination .current {
    border-color: var(--prog-primary);
    background: var(--prog-primary);
    color: var(--prog-on-primary);
}

.prog-reveal {
    opacity: 0;
    transform: translateY(14px);
    transition: opacity 420ms ease, transform 420ms ease;
}

.prog-reveal.is-visible {
    opacity: 1;
    transform: none;
}

/* Theme template compatibility: concise PHP markup uses these shorter classes. */
.prog-announcement:not(:has(.prog-announcement__inner)) {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto auto;
    min-height: 42px;
    align-items: center;
    gap: 0.65rem;
    padding: 0.4rem var(--prog-page-gutter);
    font-size: 0.9rem;
    font-weight: 650;
}

.prog-announcement > p {
    min-width: 0;
    margin: 0;
}

.prog-announcement > button[data-prog-dismiss] {
    width: 44px;
    min-width: 44px;
    min-height: 44px;
    padding: 0;
    border-color: currentColor;
    background: transparent;
    color: inherit;
}

.prog-header-inner {
    display: flex;
    min-height: var(--prog-header-height);
    align-items: center;
    gap: clamp(1rem, 2vw, 2rem);
}

.prog-school-identity > img,
.prog-logo-fallback {
    width: 48px;
    height: 48px;
    flex: 0 0 auto;
    border-radius: 12px;
    object-fit: contain;
}

.prog-logo-fallback {
    display: grid;
    place-items: center;
    background: var(--prog-surface);
    color: var(--prog-primary-dark);
    font-weight: 850;
}

.prog-school-identity > span:last-child {
    min-width: 0;
}

.prog-school-identity strong,
.prog-school-identity small {
    display: block;
    overflow: hidden;
    color: inherit;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.prog-school-identity strong {
    font-size: 1rem;
    line-height: 1.25;
}

.prog-school-identity small {
    margin-top: 0.15rem;
    opacity: 0.78;
    font-size: 0.78rem;
    line-height: 1.2;
}

.prog-primary-navigation {
    display: flex;
    min-width: 0;
    flex: 1;
    align-items: center;
    justify-content: center;
}

.prog-primary-menu,
.prog-header-logins,
.prog-footer-menu,
.prog-site-footer ul {
    margin: 0;
    padding: 0;
    list-style: none;
}

.prog-primary-menu {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 0.15rem;
}

.prog-primary-menu a {
    display: inline-flex;
    min-height: 44px;
    align-items: center;
    padding: 0.55rem 0.7rem;
    border-radius: 9px;
    color: inherit;
    font-size: 0.9rem;
    font-weight: 650;
    text-decoration: none;
}

.prog-primary-menu a:hover,
.prog-primary-menu .current-menu-item > a,
.prog-primary-menu .current_page_item > a,
.prog-primary-menu a[aria-current="page"] {
    background: rgba(255, 255, 255, 0.13);
    color: inherit;
}

.prog-header-logins {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    gap: 0.4rem;
}

.prog-mobile-login {
    display: none;
}

.prog-header-logins > a {
    display: inline-flex;
    min-height: 44px;
    align-items: center;
    padding: 0.55rem 0.7rem;
    border-radius: 999px;
    color: inherit;
    font-size: 0.875rem;
    font-weight: 700;
    text-decoration: none;
}

.prog-menu-toggle-icon {
    position: relative;
    display: block;
    width: 1.25rem;
    height: 2px;
    background: currentColor;
}

.prog-menu-toggle {
    border-color: rgba(255, 255, 255, 0.35);
    background: transparent;
    color: var(--prog-on-header);
    box-shadow: none;
}

.prog-menu-toggle:hover {
    background: rgba(255, 255, 255, 0.12);
    color: var(--prog-on-header);
    box-shadow: none;
    transform: none;
}

.prog-menu-toggle-icon::before,
.prog-menu-toggle-icon::after {
    position: absolute;
    left: 0;
    width: 100%;
    height: 2px;
    background: currentColor;
    content: "";
}

.prog-menu-toggle-icon::before {
    top: -6px;
}

.prog-menu-toggle-icon::after {
    top: 6px;
}

.prog-hero:has(> .prog-hero-content) {
    display: grid;
    grid-template-columns: minmax(0, 1.12fr) minmax(18rem, 0.88fr);
    align-items: stretch;
}

.prog-hero-content {
    z-index: 1;
    align-self: center;
    max-width: 58rem;
    padding: clamp(4rem, 9vw, 8rem) clamp(2rem, 5vw, 6rem) clamp(5rem, 9vw, 8rem) var(--prog-page-gutter);
}

.prog-eyebrow {
    display: inline-flex;
    margin-bottom: 0.75rem;
    color: var(--prog-primary);
    font-size: 0.78rem;
    font-weight: 850;
    letter-spacing: 0.075em;
    text-transform: uppercase;
}

.prog-hero .prog-eyebrow {
    padding: 0.35rem 0.7rem;
    border: 1px solid rgba(255, 255, 255, 0.34);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.1);
    color: inherit;
}

.prog-hero-lead {
    max-width: 44rem;
    margin-bottom: 0.4rem;
    font-size: clamp(1.1rem, 2vw, 1.45rem);
    font-weight: 650;
}

.prog-hero-motto {
    max-width: 42rem;
    opacity: 0.82;
}

.prog-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 1.4rem;
}

.prog-button-secondary {
    border-color: var(--prog-secondary);
    background: var(--prog-secondary);
    color: var(--prog-on-secondary);
}

.prog-hero .prog-button-secondary {
    border-color: rgba(255, 255, 255, 0.68);
    background: transparent;
    color: #ffffff;
}

.prog-public-stats {
    display: grid;
    max-width: 38rem;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.65rem;
    margin: 2rem 0 0;
}

.prog-public-stats > div {
    min-width: 0;
    padding: 0.8rem;
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.1);
}

.prog-public-stats dt,
.prog-public-stats dd {
    margin: 0;
    color: inherit;
}

.prog-public-stats dt {
    opacity: 0.78;
    font-size: 0.72rem;
}

.prog-public-stats dd {
    margin-top: 0.2rem;
    font-size: 1.25rem;
    font-weight: 850;
}

.prog-hero-visual {
    position: relative;
    z-index: 1;
    display: grid;
    min-height: 30rem;
    place-items: center;
    overflow: hidden;
    padding: 3rem var(--prog-page-gutter) 3rem 1rem;
}

.prog-school-building {
    position: relative;
    width: min(26rem, 80%);
    aspect-ratio: 1.35;
    border: 8px solid rgba(255, 255, 255, 0.62);
    border-radius: 12px 12px 4px 4px;
    background: rgba(255, 255, 255, 0.14);
    box-shadow: 0 1.5rem 3rem rgba(0, 0, 0, 0.18);
}

.prog-school-building::before {
    position: absolute;
    right: 8%;
    bottom: 100%;
    left: 8%;
    height: 5rem;
    background: rgba(255, 255, 255, 0.74);
    clip-path: polygon(50% 0, 100% 100%, 0 100%);
    content: "";
}

.prog-school-building::after {
    position: absolute;
    bottom: 0;
    left: 50%;
    width: 22%;
    height: 42%;
    border-radius: 8px 8px 0 0;
    background: rgba(255, 255, 255, 0.74);
    content: "";
    transform: translateX(-50%);
}

.prog-school-building span {
    position: absolute;
    top: 25%;
    width: 16%;
    aspect-ratio: 1;
    border: 5px solid rgba(255, 255, 255, 0.68);
    border-radius: 5px;
}

.prog-school-building span:nth-child(1) { left: 9%; }
.prog-school-building span:nth-child(2) { left: 29%; }
.prog-school-building span:nth-child(3) { right: 29%; }
.prog-school-building span:nth-child(4) { right: 9%; }

.prog-learning-orbit {
    position: absolute;
    inset: 8%;
    pointer-events: none;
}

.prog-learning-orbit b {
    position: absolute;
    display: grid;
    width: 3.25rem;
    height: 3.25rem;
    place-items: center;
    border: 1px solid rgba(255, 255, 255, 0.32);
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.16);
    color: inherit;
    font-size: 0.82rem;
    backdrop-filter: blur(8px);
}

.prog-learning-orbit b:nth-child(1) { top: 1rem; left: 0; }
.prog-learning-orbit b:nth-child(2) { top: 10%; right: 0; }
.prog-learning-orbit b:nth-child(3) { right: 9%; bottom: 0; }

.prog-section {
    padding-inline: var(--prog-page-gutter);
}

.prog-section-soft {
    background: var(--prog-surface-soft);
}

.prog-about-section {
    background: var(--prog-surface);
}

.prog-section > .prog-section-heading {
    display: block;
}

.prog-section > .prog-section-heading h2 {
    max-width: 25ch;
    margin-bottom: 0.45rem;
}

.prog-section > .prog-section-heading p {
    max-width: 58rem;
}

.prog-card-grid,
.prog-value-grid,
.prog-feature-band,
.prog-achievement-grid,
.prog-preview-grid {
    display: grid;
    gap: clamp(1rem, 2vw, 1.5rem);
}

.prog-card-grid-six { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.prog-card-grid-four { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.prog-card-grid-three { grid-template-columns: repeat(3, minmax(0, 1fr)); }

.prog-quick-access {
    padding-inline: var(--prog-page-gutter);
}

.prog-quick-access > .prog-section-heading {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
}

.prog-card-icon {
    display: grid;
    width: 2.75rem;
    height: 2.75rem;
    place-items: center;
    margin-bottom: 0.8rem;
    border-radius: 12px;
    background: var(--prog-surface-soft);
    color: var(--prog-primary-dark);
}

.prog-quick-card h3 {
    margin: 0.75rem 0 0.35rem;
    font-size: 1rem;
}

.prog-quick-card p {
    margin-bottom: 0.75rem;
    color: var(--prog-text-soft);
    font-size: 0.85rem;
}

.prog-split-layout {
    display: grid;
    grid-template-columns: minmax(0, 0.8fr) minmax(20rem, 1.2fr);
    align-items: start;
    gap: clamp(2rem, 6vw, 6rem);
}

.prog-section-lead {
    font-size: clamp(1.15rem, 2vw, 1.45rem);
    font-weight: 650;
}

.prog-value-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.prog-value-grid article,
.prog-info-card,
.prog-feature-band article,
.prog-achievement-grid article,
.prog-event-list article,
.prog-empty-card,
.prog-preview-frame,
.prog-access-card {
    padding: clamp(1rem, 2vw, 1.5rem);
    border: 1px solid var(--prog-border);
    border-radius: var(--prog-radius);
    background: var(--prog-surface);
    box-shadow: var(--prog-shadow-small);
}

.prog-info-card > span:first-child,
.prog-achievement-grid article > span:first-child {
    display: grid;
    width: 3rem;
    height: 3rem;
    place-items: center;
    margin-bottom: 0.9rem;
    border-radius: 14px;
    background: var(--prog-surface-soft);
}

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

.prog-feature-band article {
    border-top: 5px solid var(--prog-primary);
}

.prog-news-card > img {
    width: 100%;
    aspect-ratio: 16 / 9;
    object-fit: cover;
}

.prog-news-card > div {
    padding: clamp(1rem, 2vw, 1.5rem);
}

.prog-news-card time {
    color: var(--prog-text-soft);
    font-size: 0.82rem;
    font-weight: 700;
}

.prog-achievement-grid {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
}

.prog-achievement-grid article {
    text-align: center;
}

.prog-event-list {
    display: grid;
    gap: 1rem;
}

.prog-event-list article {
    display: grid;
    grid-template-columns: minmax(5rem, auto) minmax(0, 1fr);
    align-items: center;
    gap: 1.25rem;
}

.prog-event-list time {
    display: grid;
    min-height: 4rem;
    place-items: center;
    padding: 0.55rem;
    border-radius: 12px;
    background: var(--prog-primary);
    color: var(--prog-on-primary);
    font-size: 0.82rem;
    font-weight: 800;
    text-align: center;
}

.prog-resource-card > span:first-child {
    font-size: 1.8rem;
}

.prog-support-section {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 2rem;
    background: var(--prog-primary-dark);
    color: var(--prog-on-primary);
}

.prog-support-section h2,
.prog-support-section p,
.prog-support-section .prog-eyebrow {
    color: inherit;
}

.prog-gallery-grid > a,
.prog-gallery-default {
    overflow: hidden;
    border-radius: var(--prog-radius-small);
    background: var(--prog-surface);
}

.prog-gallery-grid > a,
.prog-gallery-default {
    position: relative;
    min-height: 12rem;
    color: #ffffff;
}

.prog-gallery-grid > a img,
.prog-gallery-default img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 300ms ease;
}

.prog-gallery-grid > a:hover img,
.prog-gallery-default:hover img {
    transform: scale(1.025);
}

.prog-gallery-grid > a > span,
.prog-gallery-default figcaption {
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
    padding: 1rem;
    background: linear-gradient(transparent, rgba(0, 0, 0, 0.74));
    color: #ffffff;
    font-weight: 750;
}

.prog-gallery-default {
    margin: 0;
}

.prog-highlight-card {
    padding: clamp(1.25rem, 3vw, 2rem);
    border: 1px solid var(--prog-border);
    border-radius: var(--prog-radius-small);
    background: var(--prog-surface);
    box-shadow: var(--prog-shadow-soft);
}

/* Per-School website styles. Layout choice is stored on the canonical School
 * website profile; primary and secondary colours remain owned by the School. */
body.prog-school-style-modern-academy .prog-site-header {
    border-bottom: 1px solid color-mix(in srgb, var(--prog-primary) 28%, transparent);
    background: color-mix(in srgb, var(--prog-primary-dark) 92%, #ffffff);
    box-shadow: 0 14px 36px rgba(9, 30, 22, .16);
}

body.prog-school-style-modern-academy .prog-hero,
body.prog-school-style-modern-academy .prog-admissions-hero,
body.prog-school-style-modern-academy .prog-school-notice-hero {
    width: min(1400px, calc(100% - 32px));
    margin: 20px auto 0;
    border-radius: clamp(20px, 3vw, 36px);
    overflow: hidden;
}

body.prog-school-style-modern-academy .prog-hero:has(> .prog-hero-content) {
    grid-template-columns: minmax(0, .92fr) minmax(24rem, 1.08fr);
    min-height: clamp(38rem, 76vh, 56rem);
}

body.prog-school-style-modern-academy .prog-hero-content {
    padding-inline: clamp(2rem, 6vw, 7rem) clamp(1rem, 4vw, 4rem);
}

body.prog-school-style-modern-academy .prog-hero-photo {
    margin: clamp(1.25rem, 3vw, 2.5rem);
    border-radius: 28px;
    box-shadow: 0 28px 64px rgba(3, 20, 14, .28);
}

body.prog-school-style-modern-academy .prog-section:nth-of-type(even) .prog-section-heading {
    margin-left: clamp(0rem, 8vw, 8rem);
}

body.prog-school-style-modern-academy .prog-card-grid-four > :nth-child(even) {
    translate: 0 1.25rem;
}

body.prog-school-style-modern-academy :where(.prog-info-card, .prog-news-card, .prog-highlight-card, .prog-resource-card, .prog-admissions-panel, .prog-school-notice-actions) {
    border-radius: 22px;
    box-shadow: 0 18px 46px rgba(10, 38, 27, .09);
}

body.prog-school-style-warm-community {
    --prog-background: color-mix(in srgb, var(--prog-accent) 8%, #fffdf7);
    --prog-surface-soft: color-mix(in srgb, var(--prog-accent) 7%, #ffffff);
}

body.prog-school-style-warm-community .prog-hero,
body.prog-school-style-warm-community .prog-admissions-hero,
body.prog-school-style-warm-community .prog-school-notice-hero {
    background-color: color-mix(in srgb, var(--prog-primary-dark) 90%, #7a4b24);
}

body.prog-school-style-warm-community :where(.prog-section, .prog-info-card, .prog-highlight-card, .prog-news-card, .prog-resource-card, .prog-admissions-panel, .prog-school-notice-actions) {
    border-radius: 24px;
}

body.prog-school-style-warm-community .prog-section-heading {
    max-width: 820px;
    text-align: center;
    margin-inline: auto;
}

body.prog-school-style-warm-community .prog-hero:has(> .prog-hero-content) {
    grid-template-columns: minmax(0, 1fr) minmax(22rem, .78fr);
    width: min(1360px, calc(100% - 32px));
    min-height: 42rem;
    margin: 24px auto 0;
    border-radius: 46px 46px 120px 46px;
}

body.prog-school-style-warm-community .prog-hero-photo {
    margin: 1.5rem 1.5rem 1.5rem 0;
    border-radius: 42% 18% 42% 18%;
}

body.prog-school-style-warm-community .prog-split-layout {
    grid-template-columns: minmax(18rem, 1fr) minmax(0, 1fr);
    padding: clamp(1.5rem, 4vw, 3rem);
    border-radius: 34px;
    background: color-mix(in srgb, var(--prog-accent) 8%, #ffffff);
}

body.prog-school-style-warm-community .prog-feature-band article:nth-child(odd) {
    rotate: -.7deg;
}

body.prog-school-style-warm-community .prog-feature-band article:nth-child(even) {
    rotate: .7deg;
}

body.prog-school-style-school-business .prog-site-header {
    border-bottom: 4px solid var(--prog-accent);
    background: var(--prog-primary-dark);
    box-shadow: none;
}

body.prog-school-style-school-business :where(.prog-site-main, .prog-school-notice-page) {
    max-width: 1480px;
    margin-inline: auto;
}

body.prog-school-style-school-business .prog-hero,
body.prog-school-style-school-business .prog-admissions-hero,
body.prog-school-style-school-business .prog-school-notice-hero {
    border-radius: 0;
    background-color: var(--prog-primary-dark);
}

body.prog-school-style-school-business .prog-hero:has(> .prog-hero-content) {
    grid-template-columns: minmax(22rem, .76fr) minmax(0, 1.24fr);
    min-height: clamp(40rem, 80vh, 58rem);
}

body.prog-school-style-school-business .prog-hero-photo {
    order: -1;
    border-right: 6px solid var(--prog-accent);
}

body.prog-school-style-school-business .prog-hero-content {
    padding-left: clamp(2.5rem, 6vw, 7rem);
}

body.prog-school-style-school-business .prog-section {
    border-left: 1px solid color-mix(in srgb, var(--prog-primary) 28%, transparent);
    border-right: 1px solid color-mix(in srgb, var(--prog-primary) 28%, transparent);
}

body.prog-school-style-school-business .prog-section-heading h2 {
    max-width: 34ch;
    letter-spacing: -.035em;
    text-transform: uppercase;
}

body.prog-school-style-school-business .prog-card-grid-four,
body.prog-school-style-school-business .prog-feature-band {
    gap: 0;
}

body.prog-school-style-school-business .prog-card-grid-four > *,
body.prog-school-style-school-business .prog-feature-band > * {
    border-right-width: 0;
}

body.prog-school-style-school-business .prog-card-grid-four > *:last-child,
body.prog-school-style-school-business .prog-feature-band > *:last-child {
    border-right-width: 1px;
}

body.prog-school-style-school-business :where(.prog-info-card, .prog-news-card, .prog-highlight-card, .prog-resource-card, .prog-admissions-panel, .prog-school-notice-actions) {
    border-radius: 8px;
    border-top: 4px solid var(--prog-primary);
    box-shadow: 0 10px 24px rgba(10, 28, 22, .08);
}

body.prog-school-style-school-business .prog-eyebrow {
    letter-spacing: .14em;
}

body.prog-school-style-custom-colours .prog-hero,
body.prog-school-style-custom-colours .prog-admissions-hero,
body.prog-school-style-custom-colours .prog-school-notice-hero {
    background-color: var(--prog-primary-dark);
}

body.prog-school-style-custom-colours .prog-hero:has(> .prog-hero-content) {
    width: min(1420px, calc(100% - 32px));
    min-height: 40rem;
    margin: 24px auto 0;
    border: 2px solid var(--prog-secondary);
    border-radius: 12px;
}

body.prog-school-style-custom-colours .prog-section {
    width: min(1420px, 100%);
    margin-inline: auto;
}

body.prog-school-style-custom-colours :where(.prog-info-card, .prog-news-card, .prog-highlight-card, .prog-resource-card) {
    border: 2px solid color-mix(in srgb, var(--prog-primary) 48%, var(--prog-border));
    box-shadow: none;
}

@media (max-width: 860px) {
    body.prog-school-style-modern-academy .prog-card-grid-four > :nth-child(even) { translate: none; }
    body.prog-school-style-modern-academy .prog-hero:has(> .prog-hero-content),
    body.prog-school-style-warm-community .prog-hero:has(> .prog-hero-content),
    body.prog-school-style-school-business .prog-hero:has(> .prog-hero-content),
    body.prog-school-style-custom-colours .prog-hero:has(> .prog-hero-content) { grid-template-columns: 1fr; }
    body.prog-school-style-warm-community .prog-hero-photo { margin: 0 1rem 1rem; border-radius: 28px; }
    body.prog-school-style-school-business .prog-hero-photo { order: 0; border-right: 0; border-top: 5px solid var(--prog-accent); }
    body.prog-school-style-school-business .prog-card-grid-four,
    body.prog-school-style-school-business .prog-feature-band { gap: 1rem; }
    body.prog-school-style-school-business .prog-card-grid-four > *,
    body.prog-school-style-school-business .prog-feature-band > * { border-right-width: 1px; }
}

.prog-contact-section {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(18rem, 0.7fr);
    align-items: center;
    gap: clamp(2rem, 6vw, 6rem);
    background: var(--prog-surface);
}

.prog-contact-section address {
    display: grid;
    gap: 0.75rem;
    font-style: normal;
}

.prog-contact-section address a {
    display: flex;
    min-height: 50px;
    align-items: center;
    gap: 0.75rem;
    padding: 0.7rem 0.9rem;
    border: 1px solid var(--prog-border);
    border-radius: 12px;
    background: var(--prog-surface-soft);
    text-decoration: none;
}

.prog-footer-grid,
.prog-footer-bottom {
    padding-inline: var(--prog-page-gutter);
}

.prog-site-footer h2 {
    font-size: 1.05rem;
}

.prog-site-footer li + li {
    margin-top: 0.4rem;
}

.prog-footer-bottom nav {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.prog-content-page,
.prog-full-width-template,
.prog-error-page,
.prog-preview-page {
    width: 100%;
    padding: clamp(2rem, 5vw, 5rem) var(--prog-page-gutter);
    background: var(--prog-surface);
}

.prog-access-card {
    width: min(100%, 48rem);
    margin: clamp(2rem, 8vw, 7rem) auto;
    text-align: center;
}

.prog-post-navigation {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 1rem;
    margin-top: 2rem;
}

.prog-preview-page > .prog-page-header {
    padding: 0;
}

.prog-preview-identity {
    display: grid;
    grid-template-columns: auto minmax(15rem, 0.8fr) minmax(24rem, 1.2fr);
    align-items: center;
    gap: 1.5rem;
    margin-block: 2rem;
    padding: clamp(1.25rem, 3vw, 2rem);
    border: 1px solid var(--prog-border);
    border-radius: var(--prog-radius);
    background: var(--prog-surface-soft);
}

.prog-preview-logo {
    display: grid;
    width: 6rem;
    height: 6rem;
    place-items: center;
    overflow: hidden;
    border-radius: 18px;
    background: var(--prog-surface);
    color: var(--prog-primary-dark);
    font-size: 1.4rem;
    font-weight: 850;
}

.prog-preview-logo img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.prog-colour-swatches {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.5rem;
}

.prog-colour-swatches > span {
    display: flex;
    min-height: 5rem;
    flex-direction: column;
    justify-content: flex-end;
    padding: 0.5rem;
    border: 1px solid rgba(0, 0, 0, 0.18);
    border-radius: 10px;
    color: #ffffff;
    text-shadow: 0 1px 3px rgba(0, 0, 0, 0.85);
}

.prog-colour-swatches small {
    font-size: 0.68rem;
}

.prog-preview-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.prog-preview-frame {
    min-height: 15rem;
    border-top: 6px solid var(--prog-primary);
}

.prog-preview-home { border-top-color: var(--prog-primary); }
.prog-preview-login { border-top-color: var(--prog-accent); }
.prog-preview-student { border-top-color: var(--prog-secondary); }
.prog-preview-parent { border-top-color: var(--prog-primary); }
.prog-preview-staff { border-top-color: var(--prog-primary-dark); }

.prog-error-code {
    display: block;
    color: var(--prog-primary);
    font-size: clamp(3.5rem, 12vw, 8rem);
    font-weight: 900;
    line-height: 1;
}

/* Dynamic per-school website additions (v1.0.2). */
.prog-header-login-trigger,
.prog-mobile-login[type="button"] {
    cursor: pointer;
    font: inherit;
}

.prog-hero.has-school-image {
    background: linear-gradient(125deg, var(--prog-primary-dark), var(--prog-primary));
}

.prog-hero-photo {
    min-height: inherit;
    background:
        linear-gradient(90deg, color-mix(in srgb, var(--prog-primary-dark) 38%, transparent), transparent 62%),
        var(--prog-hero-image) center / cover no-repeat;
}

.prog-headteacher-welcome {
    display: grid;
    grid-template-columns: minmax(14rem, 0.62fr) minmax(0, 1.38fr);
    align-items: center;
    gap: clamp(2rem, 6vw, 6rem);
    background:
        radial-gradient(circle at 92% 12%, color-mix(in srgb, var(--prog-accent) 20%, transparent), transparent 28%),
        var(--prog-surface);
}

.prog-headteacher-welcome > blockquote {
    padding: clamp(1.35rem, 3vw, 2.25rem);
    border: 1px solid var(--prog-border);
    border-radius: var(--prog-radius);
    background: var(--prog-surface-soft);
    box-shadow: var(--prog-shadow);
}

.prog-headteacher-welcome blockquote {
    margin: 0;
    color: var(--prog-text);
    font-size: clamp(1.05rem, 1.7vw, 1.25rem);
    line-height: 1.75;
}

.prog-admissions-section {
    display: grid;
    grid-template-columns: minmax(0, 1.2fr) minmax(18rem, 0.8fr);
    align-items: center;
    gap: clamp(2rem, 6vw, 6rem);
    background:
        linear-gradient(135deg, color-mix(in srgb, var(--prog-primary) 8%, var(--prog-surface)), var(--prog-surface));
}

.prog-admissions-section > div:last-child {
    padding: clamp(1.25rem, 3vw, 2rem);
    border: 1px solid color-mix(in srgb, var(--prog-primary) 28%, var(--prog-border));
    border-radius: var(--prog-radius);
    background: var(--prog-surface);
    box-shadow: var(--prog-shadow);
}

.prog-section-lead {
    color: var(--prog-text);
    font-size: clamp(1.05rem, 1.6vw, 1.22rem);
    line-height: 1.75;
}

.prog-school-login-modal[hidden] {
    display: none;
}

.prog-school-login-modal {
    position: fixed;
    z-index: 99999;
    inset: 0;
    display: grid;
    place-items: center;
    padding: clamp(1rem, 4vw, 3rem);
}

.prog-school-login-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(3, 20, 13, 0.72);
    backdrop-filter: blur(5px);
}

.prog-school-login-dialog {
    position: relative;
    z-index: 1;
    width: min(100%, 56rem);
    max-height: min(48rem, calc(100vh - 2rem));
    overflow: auto;
    padding: clamp(1.35rem, 4vw, 2.75rem);
    border: 1px solid color-mix(in srgb, var(--prog-primary) 22%, var(--prog-border));
    border-radius: calc(var(--prog-radius) + 6px);
    background: var(--prog-surface);
    box-shadow: 0 2rem 6rem rgba(0, 0, 0, 0.32);
    color: var(--prog-text);
}

.prog-school-login-dialog h2 {
    margin-bottom: 0.45rem;
}

.prog-school-login-close {
    position: absolute;
    top: 0.85rem;
    right: 0.85rem;
    display: grid;
    width: 44px;
    min-height: 44px;
    place-items: center;
    padding: 0;
    border: 1px solid var(--prog-border);
    border-radius: 999px;
    background: var(--prog-surface-soft);
    color: var(--prog-text);
    font-size: 1.7rem;
    line-height: 1;
    cursor: pointer;
}

.prog-school-login-options {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
    margin-top: 1.5rem;
}

.prog-school-login-options > a {
    display: grid;
    min-height: 13rem;
    align-content: start;
    gap: 0.65rem;
    padding: 1.25rem;
    border: 1px solid var(--prog-border);
    border-radius: var(--prog-radius-small);
    background: var(--prog-surface-soft);
    color: var(--prog-text);
    text-decoration: none;
    transition: border-color var(--prog-transition), box-shadow var(--prog-transition), transform var(--prog-transition);
}

.prog-school-login-options > a:hover,
.prog-school-login-options > a:focus-visible {
    border-color: var(--prog-primary);
    box-shadow: var(--prog-shadow);
    color: var(--prog-text);
    transform: translateY(-2px);
}

.prog-school-login-options > a > span {
    font-size: 2rem;
}

.prog-school-login-options strong,
.prog-school-login-options small {
    display: block;
}

.prog-school-login-options strong {
    color: var(--prog-primary-dark);
    font-size: 1.08rem;
}

.prog-school-login-options small {
    color: var(--prog-text-soft);
    line-height: 1.55;
}

.prog-school-login-help {
    margin: 1.25rem 0 0;
    padding-top: 1rem;
    border-top: 1px solid var(--prog-border);
    color: var(--prog-text-soft);
}

html.prog-login-modal-open,
html.prog-login-modal-open body {
    overflow: hidden;
}

@media (max-width: 900px) {
    .prog-headteacher-welcome,
    .prog-admissions-section {
        grid-template-columns: 1fr;
    }

    .prog-school-login-options {
        grid-template-columns: 1fr;
    }

    .prog-school-login-options > a {
        min-height: auto;
    }
}

@media (max-width: 768px) {
    .prog-hero-photo {
        min-height: 20rem;
    }

    .prog-school-login-modal {
        align-items: end;
        padding: 0;
    }

    .prog-school-login-dialog {
        width: 100%;
        max-height: 92vh;
        border-right: 0;
        border-bottom: 0;
        border-left: 0;
        border-radius: 22px 22px 0 0;
        padding: 1.35rem;
        padding-bottom: calc(1.35rem + env(safe-area-inset-bottom, 0px));
    }
}

@media (prefers-reduced-motion: reduce) {
    .prog-school-login-options > a {
        transition: none;
    }
}

/* School-login popup contains the real school login form; no extra page is required. */
.prog-school-login-options>button{display:grid;min-height:10rem;align-content:start;gap:.55rem;padding:1.05rem;border:1px solid var(--prog-border);border-radius:var(--prog-radius-small);background:var(--prog-surface-soft);color:var(--prog-text);text-align:left;cursor:pointer;transition:border-color var(--prog-transition),box-shadow var(--prog-transition),transform var(--prog-transition)}
.prog-school-login-options>button:hover,.prog-school-login-options>button:focus-visible,.prog-school-login-options>button.is-active{border-color:var(--prog-primary);box-shadow:var(--prog-shadow);color:var(--prog-text);transform:translateY(-2px)}
.prog-school-login-options>button.is-active{background:color-mix(in srgb,var(--prog-primary) 8%,var(--prog-surface))}
.prog-school-login-options>button>span{font-size:1.7rem}
.prog-school-login-options>button strong,.prog-school-login-options>button small{display:block}
.prog-school-login-options>button strong{color:var(--prog-primary-dark);font-size:1.02rem}
.prog-school-login-options>button small{color:var(--prog-text-soft);line-height:1.45}
.prog-school-popup-login-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:1.25rem;padding:1.2rem;border:1px solid color-mix(in srgb,var(--prog-primary) 24%,var(--prog-border));border-radius:var(--prog-radius-small);background:var(--prog-surface)}
.prog-school-popup-login-heading{grid-column:1/-1;display:grid;gap:.2rem}
.prog-school-popup-login-heading strong{font-size:1.15rem;color:var(--prog-primary-dark)}
.prog-school-popup-login-heading small{color:var(--prog-text-soft)}
.prog-school-popup-login-form label{display:grid;gap:.4rem;font-weight:700}
.prog-school-popup-login-form input[type="text"],.prog-school-popup-login-form input[type="password"]{width:100%;min-height:48px;padding:.75rem .85rem;border:1px solid var(--prog-border);border-radius:10px;background:#fff;color:var(--prog-text);font:inherit}
.prog-school-popup-remember{grid-column:1/-1;display:flex!important;align-items:center;justify-content:space-between;gap:1rem;width:100%;min-height:2.4rem;padding:.5rem .65rem;box-sizing:border-box;border:1px solid var(--prog-border);border-radius:5px;background:#fff;color:var(--prog-text);font-weight:600!important;cursor:pointer}
.prog-school-popup-remember:hover{border-color:color-mix(in srgb,var(--prog-primary) 52%,var(--prog-border));background:var(--prog-surface-soft)}
.prog-school-popup-remember input[type="checkbox"]{position:relative;order:2;flex:0 0 18px;width:18px;height:18px;margin:0 .2rem 0 0;padding:0;appearance:none;-webkit-appearance:none;border:1.5px solid #334155;border-radius:2px;background:#fff;box-shadow:none;cursor:pointer}
.prog-school-popup-remember input[type="checkbox"]:checked{border-color:#174ea6}
.prog-school-popup-remember input[type="checkbox"]:checked:before{content:"";position:absolute;top:1px;left:5px;width:5px;height:10px;border:solid #174ea6;border-width:0 2px 2px 0;transform:rotate(45deg)}
.prog-school-popup-remember input[type="checkbox"]:focus-visible{border-color:#174ea6;outline:3px solid color-mix(in srgb,#174ea6 24%,transparent);outline-offset:2px}
.prog-school-popup-submit{align-self:center;min-height:48px;border:0}
.prog-school-popup-forgot{align-self:center;justify-self:end;font-weight:700}
@media(max-width:700px){.prog-school-popup-login-form{grid-template-columns:1fr}.prog-school-popup-login-heading,.prog-school-popup-remember{grid-column:1}.prog-school-popup-forgot{justify-self:start}.prog-school-login-options>button{min-height:auto}}
@media(prefers-reduced-motion:reduce){.prog-school-login-options>button{transition:none}}


/* Admissions experience */
.prog-admissions-page{max-width:1220px;margin:0 auto;padding:clamp(20px,3vw,42px) clamp(16px,3vw,32px) 64px}.prog-admissions-hero{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.7fr);gap:clamp(24px,5vw,64px);align-items:center;padding:clamp(32px,6vw,76px);border-radius:32px;background:linear-gradient(135deg,color-mix(in srgb,var(--prog-primary) 10%,#fff),#fff 58%,color-mix(in srgb,var(--prog-accent) 14%,#fff));box-shadow:0 24px 70px rgba(15,47,31,.1);overflow:hidden;position:relative}.prog-admissions-hero:after{content:"";position:absolute;right:-80px;top:-80px;width:230px;height:230px;border:42px solid color-mix(in srgb,var(--prog-primary) 12%,transparent);border-radius:50%;pointer-events:none}.prog-admissions-hero__copy{position:relative;z-index:1}.prog-admissions-hero h1{font-size:clamp(2.25rem,5.5vw,5rem);line-height:.98;max-width:13ch;margin:.35rem 0 1rem}.prog-admissions-lead{font-size:clamp(1.05rem,1.8vw,1.32rem);line-height:1.65;max-width:62ch}.prog-admissions-hero__summary{position:relative;z-index:1;border-radius:24px;padding:28px;background:var(--prog-primary-dark);color:var(--prog-primary-dark-contrast);display:grid;gap:12px}.prog-admissions-hero__summary strong{font-size:1.35rem}.prog-admissions-hero__summary p{margin:0;color:inherit;opacity:.92}.prog-admissions-hero__summary span{padding-top:12px;border-top:1px solid rgba(255,255,255,.22);font-weight:700}.prog-text-link{font-weight:750;text-decoration-thickness:2px;text-underline-offset:4px}.prog-admissions-card-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.prog-admissions-card-grid article,.prog-admissions-panel{background:var(--prog-surface);border:1px solid color-mix(in srgb,var(--prog-primary) 14%,#dfe9e3);border-radius:22px;padding:24px;box-shadow:0 12px 30px rgba(13,79,49,.06)}.prog-admissions-card-grid article>span{display:grid;place-items:center;width:42px;height:42px;border-radius:14px;background:color-mix(in srgb,var(--prog-primary) 12%,#fff);color:var(--prog-primary);font-weight:850}.prog-admissions-card-grid h3,.prog-admissions-panel h2{margin:.9rem 0 .55rem}.prog-admissions-step-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;counter-reset:none}.prog-admissions-step-list li{display:grid;align-content:start;gap:12px;padding:22px;border-radius:20px;background:var(--prog-surface);border:1px solid rgba(16,35,26,.08)}.prog-admissions-step-list li>span{display:grid;place-items:center;width:40px;height:40px;border-radius:999px;background:var(--prog-secondary);color:var(--prog-secondary-contrast);font-weight:850}.prog-admissions-step-list h3{margin:0 0 6px}.prog-admissions-step-list p{margin:0}.prog-admissions-information{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.prog-admissions-panel ul{display:grid;gap:10px;padding-left:1.2rem}.prog-admissions-faq-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.prog-admissions-faq details{background:var(--prog-surface);border:1px solid rgba(16,35,26,.1);border-radius:16px;padding:18px 20px}.prog-admissions-faq summary{font-weight:800;cursor:pointer}.prog-admissions-faq details p{margin:.75rem 0 0}.prog-admissions-contact{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:34px;align-items:start;border-radius:26px;background:var(--prog-primary-dark);color:var(--prog-primary-dark-contrast)}.prog-admissions-contact h2,.prog-admissions-contact p,.prog-admissions-contact .prog-eyebrow{color:inherit}.prog-admissions-contact__details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.prog-admissions-contact__details>a,.prog-admissions-contact__details>div{display:grid;gap:4px;padding:18px;border-radius:16px;background:rgba(255,255,255,.1);color:inherit;text-decoration:none}.prog-admissions-contact__details span{overflow-wrap:anywhere}
