/* Responsive behavior for public pages, portals and login. */
@media (max-width: 1180px) {
    .prog-site-header__inner {
        gap: 0.75rem;
    }

    .prog-school-identity {
        min-width: min(15rem, 30vw);
    }

    .prog-primary-nav a {
        padding-inline: 0.5rem;
        font-size: 0.875rem;
    }

    .prog-header-actions .prog-button:not(:last-child) {
        display: none;
    }

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

    .prog-footer-grid {
        grid-template-columns: minmax(16rem, 1.4fr) repeat(2, minmax(10rem, 1fr));
    }

    .prog-footer-grid > :last-child {
        grid-column: 2;
    }

    .prog-portal-shell {
        --prog-sidebar-width: 236px;
    }
}

@media (max-width: 480px) {
    .prog-notification-menu-list,
    .prog-learning-notification-menu > div {
        position: fixed;
        top: calc(var(--prog-admin-offset, 0px) + 5rem);
        right: 1rem;
        left: 1rem;
        width: auto;
        max-height: calc(100vh - var(--prog-admin-offset, 0px) - 6rem);
    }
}

@media (max-width: 1024px) {
    body.admin-bar {
        --prog-admin-offset: 32px;
    }

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

    .prog-site-header__inner {
        justify-content: space-between;
    }

    .prog-school-identity {
        min-width: 0;
        flex: 1;
    }

    .prog-header-actions {
        display: none;
    }

    .prog-primary-nav {
        position: fixed;
        z-index: 34;
        top: calc(var(--prog-admin-offset, 0px) + var(--prog-header-height));
        right: 0;
        bottom: 0;
        left: 0;
        display: block;
        visibility: hidden;
        overflow: auto;
        padding: 1rem var(--prog-page-gutter) 6rem;
        background: var(--prog-header);
        opacity: 0;
        transform: translateY(-0.5rem);
        transition: opacity var(--prog-transition), transform var(--prog-transition), visibility var(--prog-transition);
    }

    .prog-site-header[data-menu-open="true"] .prog-primary-nav {
        visibility: visible;
        opacity: 1;
        transform: none;
    }

    .prog-primary-nav ul {
        display: grid;
        justify-content: stretch;
        gap: 0.35rem;
    }

    .prog-primary-nav a {
        width: 100%;
        min-height: 50px;
        padding: 0.75rem 1rem;
        font-size: 1rem;
    }

    .prog-primary-nav .menu-item-has-children > .sub-menu {
        padding-inline-start: 1rem;
    }

    body.prog-menu-open {
        overflow: hidden;
    }

    .prog-hero__inner {
        grid-template-columns: minmax(0, 1.3fr) minmax(15rem, 0.7fr);
        gap: 2rem;
    }

    .prog-about-grid,
    .prog-contact-grid {
        grid-template-columns: 1fr 1fr;
        gap: 2rem;
    }

    .prog-gallery-item {
        grid-column: span 4;
    }

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

    .prog-portal-shell {
        display: block;
    }

    .prog-portal-sidebar {
        position: fixed;
        z-index: 60;
        top: var(--prog-admin-offset, 0px);
        bottom: 0;
        left: 0;
        width: min(20rem, calc(100vw - 3.5rem));
        height: auto;
        visibility: hidden;
        box-shadow: var(--prog-shadow);
        transform: translateX(-105%);
        transition: transform 220ms ease, visibility 220ms ease;
    }

    [dir="rtl"] .prog-portal-sidebar {
        right: 0;
        left: auto;
        transform: translateX(105%);
    }

    .prog-portal-shell[data-sidebar-open="true"] .prog-portal-sidebar {
        visibility: visible;
        transform: none;
    }

    .prog-portal-shell::after {
        position: fixed;
        z-index: 55;
        inset: var(--prog-admin-offset, 0px) 0 0;
        visibility: hidden;
        background: rgba(5, 22, 15, 0.5);
        content: "";
        opacity: 0;
        transition: opacity 220ms ease, visibility 220ms ease;
    }

    .prog-portal-shell[data-sidebar-open="true"]::after {
        visibility: visible;
        opacity: 1;
    }

    .prog-portal-workspace {
        position: relative;
        z-index: 1;
    }

    .prog-portal-menu-toggle {
        display: inline-flex;
    }

    body.prog-sidebar-open {
        overflow: hidden;
    }

    .prog-portal-bottom-nav {
        position: fixed;
        z-index: 45;
        right: 0;
        bottom: 0;
        left: 0;
        display: block;
        padding-bottom: env(safe-area-inset-bottom, 0px);
        border-top: 1px solid var(--prog-border);
        background: color-mix(in srgb, var(--prog-surface) 96%, transparent);
        box-shadow: 0 -4px 18px rgba(14, 58, 38, 0.09);
        backdrop-filter: blur(12px);
    }

    .prog-portal-bottom-nav ul {
        display: grid;
        grid-auto-flow: column;
        grid-auto-columns: minmax(4.25rem, 1fr);
        overflow-x: auto;
        overscroll-behavior-inline: contain;
        scrollbar-width: none;
    }

    .prog-portal-bottom-nav:not(:has(ul)) {
        display: grid;
        grid-auto-flow: column;
        grid-auto-columns: minmax(4.25rem, 1fr);
        overflow-x: auto;
        overscroll-behavior-inline: contain;
        scrollbar-width: none;
    }

    .prog-portal-bottom-nav ul::-webkit-scrollbar,
    .prog-portal-bottom-nav:not(:has(ul))::-webkit-scrollbar {
        display: none;
    }

    .prog-portal-bottom-nav a {
        display: grid;
        min-height: 62px;
        place-items: center;
        align-content: center;
        gap: 0.15rem;
        padding: 0.35rem 0.25rem;
        color: var(--prog-text-soft);
        font-size: 0.875rem;
        font-weight: 700;
        line-height: 1.1;
        text-align: center;
        text-decoration: none;
    }

    .prog-portal-bottom-nav .current-menu-item > a,
    .prog-portal-bottom-nav a[aria-current="page"] {
        color: var(--prog-primary-dark);
    }

    .prog-portal-bottom-nav .prog-portal-nav__icon {
        width: 1.35rem;
        height: 1.35rem;
    }

    .prog-portal-main {
        padding-bottom: calc(6rem + env(safe-area-inset-bottom, 0px));
    }

    .prog-dashboard-grid > * {
        grid-column: span 6;
    }

    .prog-login-shell {
        grid-template-columns: minmax(0, 0.9fr) minmax(23rem, 1.1fr);
    }
}

@media (max-width: 782px) {
    body.admin-bar {
        --prog-admin-offset: 46px;
    }
}

@media (max-width: 768px) {
    :root {
        --prog-page-gutter: 1.5rem;
        --prog-section-padding: clamp(2.5rem, 9vw, 4rem);
        --prog-header-height: 68px;
    }

    .prog-announcement__inner {
        grid-template-columns: auto minmax(0, 1fr) auto;
    }

    .prog-announcement__link {
        display: none;
    }

    .prog-school-identity__logo {
        width: 42px;
        height: 42px;
    }

    .prog-school-identity__motto {
        display: none;
    }

    .prog-hero {
        min-height: auto;
    }

    .prog-hero__inner {
        min-height: auto;
        grid-template-columns: 1fr;
        padding-block: 4.5rem 6rem;
    }

    .prog-hero__panel {
        max-width: 32rem;
    }

    .prog-quick-access {
        margin-top: -3.5rem;
    }

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

    .prog-quick-card {
        min-height: 10rem;
    }

    .prog-about-grid,
    .prog-contact-grid {
        grid-template-columns: 1fr;
    }

    .prog-section-heading,
    .prog-footer-bottom {
        align-items: flex-start;
        flex-direction: column;
    }

    .prog-section-heading {
        display: flex;
    }

    .prog-event-card {
        grid-template-columns: 4rem minmax(0, 1fr);
    }

    .prog-event-card__action {
        grid-column: 2;
        justify-self: start;
    }

    .prog-gallery-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        grid-auto-rows: 11rem;
    }

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

    .prog-gallery-item:first-child {
        grid-column: 1 / -1;
        grid-row: span 2;
    }

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

    .prog-footer-grid > :first-child {
        grid-column: 1 / -1;
    }

    .prog-footer-grid > :last-child {
        grid-column: auto;
    }

    .prog-page-header {
        grid-template-columns: 1fr;
        align-items: start;
    }

    .prog-page-header__actions {
        justify-content: flex-start;
    }

    .prog-dashboard-grid > *,
    .prog-dashboard-grid > .prog-span-6,
    .prog-dashboard-grid > .prog-span-8 {
        grid-column: 1 / -1;
    }

    .prog-form-grid {
        grid-template-columns: 1fr;
    }

    .prog-field,
    .prog-field--full,
    .prog-form-actions {
        grid-column: 1;
    }

    .prog-account-button__name {
        display: none;
    }

    .prog-account-button {
        display: flex;
        width: 44px;
        min-width: 44px;
        padding: 0.35rem;
    }

    .prog-account-button > :not(.prog-account-button__avatar) {
        display: none;
    }

    .prog-child-header {
        grid-template-columns: auto minmax(0, 1fr);
    }

    .prog-child-header__action {
        grid-column: 1 / -1;
    }

    .prog-responsive-cards {
        overflow: visible;
        border: 0;
        background: transparent;
    }

    .prog-responsive-cards table {
        min-width: 0;
        border-collapse: separate;
        background: transparent;
    }

    .prog-responsive-cards thead {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
        clip-path: inset(50%);
        white-space: nowrap;
    }

    .prog-responsive-cards tbody,
    .prog-responsive-cards tr,
    .prog-responsive-cards td {
        display: block;
        width: 100%;
    }

    .prog-responsive-cards tr {
        margin-bottom: 0.9rem;
        overflow: hidden;
        border: 1px solid var(--prog-border);
        border-radius: var(--prog-radius-small);
        background: var(--prog-surface);
        box-shadow: var(--prog-shadow-small);
    }

    .prog-responsive-cards td {
        display: grid;
        grid-template-columns: minmax(7rem, 38%) minmax(0, 1fr);
        gap: 0.75rem;
        padding: 0.7rem 0.8rem;
        border-bottom: 1px solid var(--prog-border);
        text-align: end;
    }

    .prog-responsive-cards td::before {
        color: var(--prog-text-soft);
        content: attr(data-label);
        font-size: 0.78rem;
        font-weight: 800;
        text-align: start;
        text-transform: uppercase;
    }

    .prog-responsive-cards td:last-child {
        border-bottom: 0;
    }

    .prog-responsive-cards .prog-table-actions {
        justify-content: flex-end;
    }

    .prog-login-shell {
        display: block;
        min-height: 100vh;
        min-height: 100svh;
        padding: clamp(1.25rem, 6vw, 3rem) 1.5rem;
        background-color: var(--prog-login-background);
        background-image:
            linear-gradient(rgba(5, 29, 18, 0.62), rgba(5, 29, 18, 0.78)),
            var(--prog-login-image, linear-gradient(130deg, var(--prog-primary-dark), var(--prog-primary), var(--prog-secondary)));
        background-position: center;
        background-size: cover;
    }

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

    .prog-login-panel {
        min-height: calc(100vh - 3rem);
        min-height: calc(100svh - 3rem);
        padding: 0;
        background: transparent;
    }

    .prog-login-card__brand {
        display: block;
    }
}

@media (max-width: 480px) {
    :root {
        --prog-page-gutter: 1rem;
    }

    .prog-announcement__inner {
        gap: 0.45rem;
        font-size: 0.82rem;
    }

    .prog-school-identity__name {
        font-size: 0.91rem;
    }

    .prog-mobile-actions .prog-button {
        width: 44px;
        min-width: 44px;
        padding: 0;
        font-size: 0;
    }

    .prog-mobile-actions .prog-button [aria-hidden="true"] {
        font-size: 1rem;
    }

    .prog-hero__actions,
    .prog-hero__actions .prog-button {
        width: 100%;
    }

    .prog-quick-access__grid {
        grid-template-columns: 1fr;
    }

    .prog-quick-card {
        min-height: auto;
    }

    .prog-footer-grid {
        grid-template-columns: 1fr;
    }

    .prog-footer-grid > :first-child,
    .prog-footer-grid > :last-child {
        grid-column: auto;
    }

    .prog-gallery-grid {
        grid-template-columns: 1fr;
    }

    .prog-gallery-item,
    .prog-gallery-item:first-child {
        grid-column: auto;
        grid-row: auto;
    }

    .prog-portal-topbar {
        gap: 0.5rem;
    }

    .prog-portal-topbar__subtitle,
    .prog-portal-topbar__title {
        max-width: 42vw;
    }

    .prog-page-header__actions,
    .prog-page-header__actions .prog-button,
    .prog-form-actions .prog-button {
        width: 100%;
    }

    .prog-toolbar > * {
        width: 100%;
        flex-basis: 100%;
    }

    .prog-child-selector label {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
    }

    .prog-child-selector select {
        min-width: 0;
        max-width: 42vw;
    }

    .prog-parent-view-banner {
        align-items: flex-start;
        flex-direction: column;
        gap: 0.25rem;
        padding-block: 0.55rem;
    }

    .prog-next-action,
    .prog-report-card {
        grid-template-columns: minmax(0, 1fr) auto;
    }

    .prog-next-action > :first-child,
    .prog-report-card > :first-child {
        display: none;
    }

    .prog-login-shell {
        padding: 1rem;
    }

    .prog-login-panel {
        min-height: calc(100vh - 2rem);
        min-height: calc(100svh - 2rem);
    }

    .prog-login-card {
        padding: 1.15rem;
        border-radius: var(--prog-radius);
    }

    .prog-role-selector {
        gap: 0.35rem;
    }

    .prog-role-option label {
        padding-inline: 0.25rem;
        font-size: 0.78rem;
    }

    .prog-login-options {
        align-items: flex-start;
        flex-direction: column;
        gap: 0.6rem;
    }
}

@media (min-width: 1920px) {
    :root {
        --prog-page-gutter: 4rem;
    }

    .prog-hero__inner {
        grid-template-columns: minmax(0, 1.35fr) minmax(24rem, 0.65fr);
    }

    .prog-portal-shell {
        --prog-sidebar-width: 296px;
    }
}

/* Responsive aliases for the concise native theme templates. */
@media (max-width: 1180px) {
    .prog-header-inner {
        gap: 0.75rem;
    }

    .prog-school-identity {
        min-width: min(15rem, 30vw);
    }

    .prog-primary-menu a {
        padding-inline: 0.5rem;
        font-size: 0.875rem;
    }

    .prog-header-logins > a:not(:last-child) {
        display: none;
    }

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

    .prog-portal-layout {
        --prog-sidebar-width: 236px;
    }
}

@media (max-width: 1024px) {
    .prog-header-inner {
        justify-content: space-between;
    }

    .prog-school-identity {
        min-width: 0;
        flex: 1;
    }

    .prog-primary-navigation {
        position: fixed;
        z-index: 34;
        top: calc(var(--prog-admin-offset, 0px) + var(--prog-header-height));
        right: 0;
        bottom: 0;
        left: 0;
        display: block;
        visibility: hidden;
        overflow: auto;
        padding: 1rem var(--prog-page-gutter) 6rem;
        background: var(--prog-header);
        opacity: 0;
        transform: translateY(-0.5rem);
        transition: opacity var(--prog-transition), transform var(--prog-transition), visibility var(--prog-transition);
    }

    .prog-site-header[data-menu-open="true"] .prog-primary-navigation {
        visibility: visible;
        opacity: 1;
        transform: none;
    }

    .prog-primary-menu {
        display: grid;
        justify-content: stretch;
        gap: 0.35rem;
    }

    .prog-primary-menu a {
        width: 100%;
        min-height: 50px;
        padding: 0.75rem 1rem;
        font-size: 1rem;
    }

    .prog-primary-menu .sub-menu {
        padding-inline-start: 1rem;
    }

    .prog-header-logins > a:last-child {
        min-width: 44px;
        padding-inline: 0.75rem;
    }

    .prog-hero:has(> .prog-hero-content) {
        grid-template-columns: minmax(0, 1.2fr) minmax(15rem, 0.8fr);
    }

    .prog-portal-layout {
        display: block;
    }

    .prog-portal-layout[data-sidebar-open="true"] .prog-portal-sidebar {
        visibility: visible;
        transform: none;
    }

    .prog-portal-layout::after {
        position: fixed;
        z-index: 55;
        inset: var(--prog-admin-offset, 0px) 0 0;
        visibility: hidden;
        background: rgba(5, 22, 15, 0.5);
        content: "";
        opacity: 0;
        transition: opacity 220ms ease, visibility 220ms ease;
    }

    .prog-portal-layout[data-sidebar-open="true"]::after {
        visibility: visible;
        opacity: 1;
    }

    .prog-portal-layout > .prog-portal-main {
        position: relative;
        z-index: 1;
    }
}

@media (max-width: 768px) {
    .prog-school-identity > img,
    .prog-logo-fallback {
        width: 42px;
        height: 42px;
    }

    .prog-school-identity small {
        display: none;
    }

    .prog-header-logins {
        display: none;
    }

    .prog-mobile-login {
        display: inline-flex;
        min-height: 44px;
        align-items: center;
        justify-content: center;
        padding: 0.65rem 0.9rem;
        border: 1px solid rgba(255, 255, 255, 0.55);
        border-radius: 12px;
        color: var(--prog-header-contrast);
        font-weight: 750;
        text-decoration: none;
    }

    .prog-header-logins > a:last-child {
        width: 44px;
        overflow: hidden;
        padding: 0;
        font-size: 0;
    }

    .prog-header-logins > a:last-child::before {
        content: "↪";
        font-size: 1rem;
    }

    .prog-hero:has(> .prog-hero-content) {
        grid-template-columns: 1fr;
    }

    .prog-hero-content {
        padding: 4.5rem var(--prog-page-gutter) 2rem;
    }

    .prog-hero-visual {
        min-height: 20rem;
        padding: 1rem var(--prog-page-gutter) 5rem;
    }

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

    .prog-card-grid-four,
    .prog-card-grid-three,
    .prog-value-grid,
    .prog-feature-band,
    .prog-preview-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .prog-split-layout,
    .prog-contact-section {
        grid-template-columns: 1fr;
    }

    .prog-support-section {
        align-items: flex-start;
        flex-direction: column;
    }

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

    .prog-colour-swatches {
        grid-column: 1 / -1;
    }

    .prog-portal-page-header {
        grid-template-columns: 1fr;
        align-items: start;
    }

    .prog-staff-summary {
        grid-template-columns: 1fr;
    }

    .prog-theme-login-shell .prog-login-shell,
    .prog-login-page-shell > .prog-login-shell {
        display: block;
        min-height: 100vh;
        min-height: 100svh;
        padding: clamp(1rem, 5vw, 2rem);
        background: linear-gradient(140deg, var(--prog-primary-dark), var(--prog-primary), var(--prog-secondary));
    }

    .prog-login-shell > .prog-login-brand {
        display: none;
    }

    .prog-login-card-wrap {
        min-height: calc(100vh - 2rem);
        min-height: calc(100svh - 2rem);
        padding: 0;
        background: transparent;
    }
}

@media (max-width: 480px) {
    .prog-announcement:not(:has(.prog-announcement__inner)) {
        grid-template-columns: auto minmax(0, 1fr) auto;
    }

    .prog-announcement > a {
        display: none;
    }

    .prog-menu-toggle > span:last-child {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
    }

    .prog-actions,
    .prog-actions .prog-button {
        width: 100%;
    }

    .prog-card-grid-six,
    .prog-card-grid-four,
    .prog-card-grid-three,
    .prog-value-grid,
    .prog-feature-band,
    .prog-preview-grid,
    .prog-colour-swatches {
        grid-template-columns: 1fr;
    }

    .prog-event-list article {
        grid-template-columns: 1fr;
    }

    .prog-event-list time {
        justify-self: start;
    }

    .prog-preview-identity {
        grid-template-columns: 1fr;
    }

    .prog-colour-swatches {
        grid-column: auto;
    }

    .prog-portal-account > span,
    .prog-portal-account > a:last-child {
        display: none;
    }

    .prog-portal-account {
        gap: 0.35rem;
    }

    .prog-portal-account-menu > summary {
        position: relative;
        width: 44px;
        min-width: 44px;
        padding: 0;
        justify-content: center;
    }

    .prog-portal-account-menu > summary > span {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
        clip-path: inset(50%);
        white-space: nowrap;
    }

    .prog-portal-account-menu > summary::before {
        content: "●";
        font-size: 1rem;
    }

    .prog-portal-account-menu > summary::after {
        margin-inline-start: 0.2rem;
    }

    .prog-portal-page-header .prog-button {
        width: 100%;
    }

    .prog-login-role-options {
        gap: 0.35rem;
    }

    .prog-login-role-option > span {
        padding-inline: 0.25rem;
    }

    .prog-login-role-option small {
        display: none;
    }
}

@media (max-width: 900px) {
    body .prog-learning-portal {
        display: block;
        grid-template-columns: 1fr;
        min-height: 100vh;
        min-height: 100svh;
        padding-bottom: calc(72px + env(safe-area-inset-bottom, 0px));
        overflow: visible;
    }

    .prog-learning-portal > .prog-learning-header {
        top: var(--prog-admin-offset, 0px);
        min-height: 68px;
        flex-wrap: nowrap;
        gap: 0.55rem;
        padding: 0.55rem var(--prog-page-gutter);
    }

    .prog-learning-portal .prog-learning-school-mark {
        width: 42px;
        height: 42px;
        border-radius: 11px;
    }

    .prog-learning-portal .prog-learning-school-name {
        min-width: 0;
        flex: 1;
    }

    .prog-learning-portal .prog-learning-school-name strong {
        font-size: 0.9rem;
    }

    .prog-learning-portal .prog-learning-profile {
        width: auto;
        flex: 0 0 auto;
        margin-inline-start: auto;
        padding: 0;
        border: 0;
    }

    .prog-learning-portal .prog-learning-profile > a {
        min-height: 44px;
        margin-inline-start: 0;
        padding: 0.45rem 0.6rem;
        font-size: 0.875rem;
    }

    .prog-learning-portal > .prog-learning-child-switcher {
        padding-inline: var(--prog-page-gutter);
    }

    .prog-learning-portal > .prog-parent-view-banner,
    .prog-learning-portal > .prog-staff-preview-banner {
        position: sticky;
        z-index: 35;
        top: calc(var(--prog-admin-offset, 0px) + 68px);
    }

    .prog-learning-portal > .prog-learning-nav {
        position: fixed;
        z-index: 70;
        top: auto;
        right: 0;
        bottom: 0;
        left: 0;
        display: flex;
        width: 100%;
        height: auto;
        min-height: 64px;
        max-height: none;
        flex-direction: row;
        align-items: stretch;
        gap: 0;
        overflow-x: auto;
        overflow-y: hidden;
        padding: 0 0 env(safe-area-inset-bottom, 0px);
        border: 0;
        border-top: 1px solid var(--prog-border);
        background: var(--prog-surface);
        color: var(--prog-text-soft);
        box-shadow: 0 -4px 18px rgba(14, 58, 38, 0.09);
        overscroll-behavior-inline: contain;
        scrollbar-width: none;
    }

    .prog-learning-portal > .prog-learning-nav::-webkit-scrollbar {
        display: none;
    }

    .prog-learning-portal > .prog-learning-nav a {
        display: grid;
        width: auto;
        min-width: 4.65rem;
        min-height: 64px;
        flex: 1 0 4.65rem;
        grid-template-columns: 1fr;
        place-items: center;
        align-content: center;
        gap: 0.15rem;
        padding: 0.35rem 0.3rem;
        border-radius: 0;
        color: var(--prog-text-soft);
        font-size: 0.875rem;
        line-height: 1.1;
        text-align: center;
    }

    .prog-learning-portal > .prog-learning-nav a > span {
        width: 1.5rem;
        height: 1.5rem;
        background: transparent;
        color: inherit;
    }

    .prog-learning-portal > .prog-learning-nav a:hover,
    .prog-learning-portal > .prog-learning-nav a.active,
    .prog-learning-portal > .prog-learning-nav a[aria-current="page"] {
        background: var(--prog-surface-soft);
        color: var(--prog-primary-dark);
    }

    .prog-learning-portal > .prog-learning-nav a.active > span,
    .prog-learning-portal > .prog-learning-nav a[aria-current="page"] > span {
        background: transparent;
        color: var(--prog-primary);
    }

    .prog-learning-portal > .prog-portal-content {
        width: 100%;
        min-width: 0;
        padding: 1rem var(--prog-page-gutter) calc(2rem + env(safe-area-inset-bottom, 0px));
    }
}

@media (min-width: 901px) and (max-width: 1024px) {
    body .prog-learning-portal {
        display: grid;
        grid-template-columns: minmax(14rem, 15rem) minmax(0, 1fr);
    }
}

@media (max-width: 480px) {
    .prog-learning-portal .prog-learning-school-name small,
    .prog-learning-portal .prog-learning-profile > span {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
        clip-path: inset(50%);
        white-space: nowrap;
    }

    .prog-learning-account-menu > summary {
        position: relative;
        width: 44px;
        min-width: 44px;
        padding: 0;
        justify-content: center;
    }

    .prog-learning-account-menu > summary > span {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
        clip-path: inset(50%);
        white-space: nowrap;
    }

    .prog-learning-account-menu > summary::before {
        content: "●";
        font-size: 1rem;
    }

    .prog-learning-account-menu > summary::after {
        margin-inline-start: 0.2rem;
    }

    .prog-learning-portal .prog-learning-profile .prog-learning-avatar {
        width: 38px;
        height: 38px;
    }

    .prog-learning-portal .prog-learning-profile > a {
        min-width: 44px;
        padding-inline: 0.45rem;
        font-size: 0.7rem;
    }

    .prog-learning-portal .prog-learning-child-switcher > span {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
        clip-path: inset(50%);
    }

    .prog-learning-portal .prog-learning-child-switcher a {
        min-width: 10rem;
    }
}


/* v1.0.4 public-school mobile reliability layer. */
html {
    scroll-padding-top: calc(var(--prog-live-header-offset, var(--prog-header-height)) + 12px);
    overflow-x: clip;
}

.prog-public-school-site [id] {
    scroll-margin-top: calc(var(--prog-live-header-offset, var(--prog-header-height)) + 12px);
}

.prog-site-main,
.prog-site-header,
.prog-announcement,
.prog-site-footer {
    max-width: 100%;
    overflow-x: clip;
}

@media (max-width: 1024px) {
    .prog-site-header__inner,
    .prog-header-inner {
        display: grid;
        min-height: 0;
        grid-template-columns: minmax(0, 1fr) auto auto;
        align-items: center;
        gap: .55rem;
        padding: .65rem var(--prog-page-gutter);
    }

    .prog-school-identity {
        min-width: 0;
        max-width: 100%;
    }

    .prog-school-identity__logo,
    .prog-school-identity > img {
        width: 44px;
        height: 44px;
        flex: 0 0 44px;
    }

    .prog-school-identity__text,
    .prog-school-identity > span {
        min-width: 0;
    }

    .prog-school-identity__name,
    .prog-school-identity > span > strong,
    .prog-school-identity__motto,
    .prog-school-identity > span > small {
        display: block;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .prog-header-actions,
    .prog-header-logins {
        display: none;
    }

    .prog-menu-toggle,
    .prog-mobile-actions,
    .prog-mobile-login {
        display: inline-flex;
        min-height: 44px;
        align-items: center;
        justify-content: center;
    }

    .prog-mobile-login {
        padding: .55rem .7rem;
        border: 1px solid color-mix(in srgb, var(--prog-on-header) 34%, transparent);
        border-radius: 9px;
        background: transparent;
        color: var(--prog-on-header);
        font-size: .82rem;
        font-weight: 750;
        text-decoration: none;
    }

    .prog-primary-nav,
    .prog-primary-navigation {
        position: fixed;
        z-index: 90;
        top: var(--prog-live-nav-top, calc(var(--prog-admin-offset, 0px) + var(--prog-header-height)));
        right: 0;
        bottom: 0;
        left: 0;
        display: block;
        visibility: hidden;
        overflow-y: auto;
        overscroll-behavior: contain;
        padding: 1rem var(--prog-page-gutter) calc(6rem + env(safe-area-inset-bottom, 0px));
        background: var(--prog-header);
        opacity: 0;
        transform: translateY(-.5rem);
        transition: opacity 180ms ease, transform 180ms ease, visibility 180ms ease;
        -webkit-overflow-scrolling: touch;
    }

    .prog-site-header[data-menu-open="true"] .prog-primary-nav,
    .prog-site-header[data-menu-open="true"] .prog-primary-navigation {
        visibility: visible;
        opacity: 1;
        transform: none;
    }

    .prog-primary-menu,
    .prog-primary-nav ul,
    .prog-primary-navigation ul {
        display: grid;
        width: 100%;
        margin: 0;
        padding: 0;
        gap: .4rem;
        list-style: none;
    }

    .prog-primary-menu a,
    .prog-primary-nav a,
    .prog-primary-navigation a {
        display: flex;
        width: 100%;
        min-height: 50px;
        align-items: center;
        padding: .75rem 1rem;
        border-radius: 10px;
        color: var(--prog-on-header);
        font-size: 1rem;
        text-decoration: none;
    }

    body.prog-menu-open {
        overflow: hidden;
        touch-action: none;
    }

    .prog-announcement__inner {
        grid-template-columns: auto minmax(0, 1fr) auto;
        padding-inline: .75rem;
    }

    .prog-announcement__inner > a {
        display: none;
    }

    .prog-hero {
        min-height: auto;
    }

    .prog-hero__inner {
        min-height: auto;
        grid-template-columns: 1fr;
        gap: 1.25rem;
        padding-block: clamp(3rem, 12vw, 5rem);
    }

    .prog-hero h1 {
        max-width: none;
        font-size: clamp(2rem, 9vw, 3.35rem);
    }

    .prog-hero__panel {
        width: 100%;
    }

    .prog-section,
    .prog-quick-access {
        padding-inline: clamp(.9rem, 4vw, 1.5rem);
    }

    .prog-split-layout,
    .prog-about-grid,
    .prog-contact-grid,
    .prog-headteacher-welcome,
    .prog-admissions-section {
        grid-template-columns: 1fr;
        gap: 1.25rem;
    }

    .prog-card-grid-four,
    .prog-card-grid-three,
    .prog-value-grid,
    .prog-feature-band,
    .prog-quick-access__grid,
    .prog-footer-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .prog-footer-grid > :last-child {
        grid-column: auto;
    }

    .prog-actions,
    .prog-hero__actions {
        align-items: stretch;
    }

    .prog-actions .prog-button,
    .prog-hero__actions .prog-button {
        justify-content: center;
    }

    .prog-school-login-modal__dialog,
    [data-prog-school-login-dialog] {
        width: min(calc(100vw - 1.25rem), 34rem);
        max-height: calc(100dvh - 1.25rem);
        overflow-y: auto;
        margin: .625rem;
    }
}

@media (max-width: 680px) {
    :root {
        --prog-page-gutter: .9rem;
        --prog-section-padding: 2.75rem;
    }

    .prog-site-header__inner,
    .prog-header-inner {
        grid-template-columns: minmax(0, 1fr) auto;
    }

    .prog-mobile-login {
        grid-column: 1 / -1;
        width: 100%;
    }

    .prog-card-grid-four,
    .prog-card-grid-three,
    .prog-value-grid,
    .prog-feature-band,
    .prog-quick-access__grid,
    .prog-footer-grid,
    .prog-school-stats {
        grid-template-columns: 1fr;
    }

    .prog-section-heading h2,
    .prog-section > .prog-section-heading h2 {
        max-width: none;
    }

    .prog-gallery-grid {
        grid-template-columns: 1fr;
    }

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

    .prog-event-list article {
        grid-template-columns: 1fr;
    }

    .prog-button,
    button,
    input[type="submit"] {
        min-height: 44px;
    }
}

/* v1.0.17 — Priority 2 touch navigation dock.
 * Tablet/mobile navigation remains swipeable but the scrollbar is never drawn.
 * Bottom navigation floats above the safe-area edge instead of becoming a
 * full-width browser-like strip. */
@media (max-width:1180px){
    .prog-portal-bottom-nav,
    .prog-theme-mobile-nav-dock {
        scrollbar-width: none !important;
        -ms-overflow-style: none;
        overscroll-behavior-inline: contain;
        -webkit-overflow-scrolling: touch;
    }
    .prog-portal-bottom-nav::-webkit-scrollbar,
    .prog-theme-mobile-nav-dock::-webkit-scrollbar,
    .prog-portal-bottom-nav ul::-webkit-scrollbar,
    .prog-theme-mobile-nav-dock ul::-webkit-scrollbar { display:none !important; width:0 !important; height:0 !important; }
    .prog-learning-nav,
    .prog-child-switcher,
    .prog-learning-child-switcher { scrollbar-width:none !important; -ms-overflow-style:none; }
    .prog-learning-nav::-webkit-scrollbar,
    .prog-child-switcher::-webkit-scrollbar,
    .prog-learning-child-switcher::-webkit-scrollbar { display:none !important; width:0 !important; height:0 !important; }
    .prog-theme-mobile-nav-dock {
        position:fixed !important;
        z-index:70 !important;
        right:8px !important;
        bottom:max(8px,env(safe-area-inset-bottom,0px)) !important;
        left:8px !important;
        display:flex !important;
        flex-wrap:nowrap !important;
        gap:.35rem;
        width:auto !important;
        max-width:none !important;
        margin:0 !important;
        padding:.45rem !important;
        overflow-x:auto !important;
        overflow-y:hidden !important;
        white-space:nowrap !important;
        border:1px solid var(--prog-border) !important;
        border-radius:1rem !important;
        background:color-mix(in srgb,var(--prog-surface) 96%,transparent) !important;
        box-shadow:0 10px 30px rgba(14,58,38,.18) !important;
        backdrop-filter:blur(12px);
    }
    .prog-theme-mobile-nav-dock > *,
    .prog-theme-mobile-nav-dock > ul > * { flex:0 0 auto !important; }
    body.prog-theme-has-mobile-nav-dock .prog-portal-main,
    body.prog-theme-has-mobile-nav-dock main { padding-bottom:calc(6.5rem + env(safe-area-inset-bottom,0px)); }
}

@media (max-width:1024px){
    .prog-portal-bottom-nav {
        right:8px;
        bottom:max(8px,env(safe-area-inset-bottom,0px));
        left:8px;
        overflow:hidden;
        border:1px solid var(--prog-border);
        border-radius:1rem;
        box-shadow:0 10px 30px rgba(14,58,38,.18);
    }
    .prog-portal-main { padding-bottom:calc(6.5rem + env(safe-area-inset-bottom,0px)); }
}


/* Admissions device responsiveness */
@media (max-width: 980px){.prog-admissions-hero{grid-template-columns:1fr}.prog-admissions-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.prog-admissions-step-list{grid-template-columns:repeat(2,minmax(0,1fr))}.prog-admissions-step-list li:last-child{grid-column:span 2}.prog-admissions-contact{grid-template-columns:1fr}}
@media (max-width: 680px){.prog-admissions-page{padding-left:12px;padding-right:12px}.prog-admissions-hero{padding:28px 20px;border-radius:22px}.prog-admissions-hero h1{font-size:clamp(2rem,12vw,3.2rem)}.prog-admissions-hero .prog-actions{display:grid;grid-template-columns:1fr}.prog-admissions-hero .prog-button,.prog-admissions-hero .prog-text-link{text-align:center;justify-content:center}.prog-admissions-card-grid,.prog-admissions-step-list,.prog-admissions-information,.prog-admissions-faq-grid,.prog-admissions-contact__details{grid-template-columns:1fr}.prog-admissions-step-list li:last-child{grid-column:auto}.prog-admissions-card-grid article,.prog-admissions-panel{padding:20px}.prog-admissions-contact{padding:26px 20px}.prog-school-identity__logo,.prog-logo-fallback{width:48px;height:48px}.prog-school-identity__motto{max-width:32ch}}
@media (max-width: 420px){.prog-admissions-page{padding-left:8px;padding-right:8px}.prog-admissions-hero{padding:24px 16px}.prog-admissions-hero__summary{padding:20px}.prog-admissions-card-grid article,.prog-admissions-panel,.prog-admissions-step-list li{padding:17px}.prog-admissions-contact__details>a,.prog-admissions-contact__details>div{padding:15px}}
