:root {
    --sayyes-card-radius: .65rem;
    --sayyes-control-radius: .4rem;
}

/* Say Yesland individual rank status */
.rank-status-card {
    width: min(100%, 960px);
    margin-inline: auto;
    overflow: hidden;
    border: 1px solid rgba(76, 78, 54, .16);
    border-radius: 1.6rem;
    background: #fffaf0;
    box-shadow: 0 1.1rem 2.8rem rgba(48, 55, 42, .16);
}

.rank-status-visual {
    position: relative;
    aspect-ratio: 1672 / 941;
    overflow: hidden;
    isolation: isolate;
    background: #e7efd2;
}

.rank-status-background {
    position: absolute;
    inset: 0;
    z-index: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center;
}

.rank-status-badge-wrap {
    position: absolute;
    top: 50%;
    left: clamp(4%, 6vw, 8%);
    z-index: 1;
    width: clamp(150px, 23%, 260px);
    transform: translateY(-50%);
}

.rank-status-badge {
    display: block;
    width: 100%;
    max-height: min(55vh, 520px);
    object-fit: contain;
    border-radius: 6%;
    filter: drop-shadow(0 .9rem 1.1rem rgba(34, 42, 33, .24));
}

.rank-status-information {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: clamp(1rem, 4vw, 4rem);
    min-height: 86px;
    padding: .85rem clamp(1.25rem, 4vw, 2.6rem);
    border-bottom: 1px solid rgba(111, 97, 67, .16);
    background: rgba(255, 250, 238, .97);
}

.rank-status-current-heading {
    display: flex;
    align-items: center;
    gap: 1rem;
    min-width: 0;
}

.rank-status-current-points {
    flex: 0 0 auto;
    text-align: right;
}

.rank-status-pill {
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    padding: .35rem .8rem;
    border-radius: 999px;
    background: rgba(35, 68, 55, .88);
    color: #fff;
    font-size: .74rem;
    font-weight: 800;
    letter-spacing: .08em;
    line-height: 1.2;
    white-space: nowrap;
    text-transform: uppercase;
}

.rank-status-name,
.rank-status-points,
.rank-status-points-label {
    display: block;
}

.rank-status-name {
    color: #253c31;
    font-size: clamp(1.3rem, 2.1vw, 1.75rem);
    line-height: 1.1;
}

.rank-status-points-label {
    color: #665f4b;
    font-size: .78rem;
    font-weight: 800;
    letter-spacing: .06em;
    text-transform: uppercase;
}

.rank-status-points {
    color: #c96b18;
    font-size: clamp(1.45rem, 2.3vw, 1.95rem);
    line-height: 1.15;
}

.rank-status-progress-panel {
    display: grid;
    grid-template-columns: minmax(250px, .95fr) minmax(320px, 1.35fr);
    gap: clamp(1.25rem, 4vw, 4rem);
    align-items: center;
    min-height: 104px;
    padding: 1rem clamp(1.25rem, 4vw, 2.6rem);
    border-top: 1px solid rgba(111, 97, 67, .16);
    background: rgba(255, 250, 238, .97);
}

.rank-status-next {
    display: flex;
    align-items: center;
    gap: 1rem;
    min-width: 0;
}

.rank-status-next-badge {
    width: 64px;
    height: 64px;
    flex: 0 0 64px;
    object-fit: contain;
    border-radius: 6%;
}

.rank-status-next span,
.rank-status-next strong {
    display: block;
}

.rank-status-next span {
    color: #7d725d;
    font-size: .76rem;
    font-weight: 800;
    letter-spacing: .06em;
    text-transform: uppercase;
}

.rank-status-next strong {
    color: #293f34;
    font-size: 1.05rem;
}

.rank-status-progress > strong {
    display: block;
    margin-bottom: .65rem;
    color: #3f493e;
}

.rank-status-progress-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: .9rem;
}

.rank-status-progress-row .progress {
    height: .95rem;
    border-radius: 999px;
    background: #e7ddc6;
}

.rank-status-progress-row .progress-bar {
    border-radius: inherit;
    background: linear-gradient(90deg, #58a839, #f0b62b);
}

.rank-status-progress-row > span {
    min-width: 3rem;
    color: #293f34;
    font-weight: 800;
    text-align: right;
}

img.rank-admin-badge {
    display: block;
    width: 40px !important;
    min-width: 40px;
    max-width: 40px !important;
    height: 40px !important;
    max-height: 40px !important;
    object-fit: contain;
    border-radius: 6%;
}

@media (max-width: 767.98px) {
    .rank-status-card {
        border-radius: 1.25rem;
    }

    .rank-status-visual {
        aspect-ratio: 1672 / 941;
    }

    .rank-status-badge-wrap {
        left: 5%;
        width: min(34vw, 150px);
    }

    .rank-status-information {
        display: grid;
        justify-items: center;
        gap: .8rem;
        min-height: 0;
        padding: 1.15rem 1.25rem;
        text-align: center;
    }

    .rank-status-current-heading {
        flex-wrap: wrap;
        justify-content: center;
        gap: .65rem;
    }

    .rank-status-current-points {
        text-align: center;
    }

    .rank-status-progress-panel {
        grid-template-columns: 1fr;
        gap: 1.25rem;
        padding: 1.35rem;
    }
}

/* v0.19.55 — Natural About-page islands with authentic Yesland artwork and review pills */
.yesland-about-page {
    display: grid;
    gap: clamp(1.35rem, 2.4vw, 2.15rem);
    width: min(100%, 1480px);
    margin: 0 auto;
    padding: .25rem 0 1.75rem;
}

.yesland-about-bottom {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
    gap: clamp(1.35rem, 2.5vw, 2.25rem);
}

.yesland-island.yesland-about-island {
    --about-accent: #3f8153;
    --about-accent-dark: #2d623d;
    --about-accent-rgb: 63, 129, 83;
    position: relative;
    min-height: 0;
    padding: clamp(2.25rem, 3.2vw, 3.35rem) clamp(2.25rem, 4vw, 4.5rem);
    display: grid;
    align-items: center;
    border: 2px solid rgba(var(--about-accent-rgb), .28);
    text-align: left;
    overflow: hidden;
}

.yesland-island.yesland-about-island-top {
    min-height: 315px;
    border-radius: 5.7rem 8.8rem 6.4rem 9.7rem / 4.5rem 6.8rem 5.1rem 7.3rem;
}

.yesland-island.yesland-about-island-left {
    --about-accent: #287fa6;
    --about-accent-dark: #1d6385;
    --about-accent-rgb: 40, 127, 166;
    min-height: 355px;
    border-radius: 6.8rem 4.6rem 8.1rem 5.35rem / 4.4rem 6.6rem 4.8rem 7.15rem;
}

.yesland-island.yesland-about-island-right {
    --about-accent: #cc6c30;
    --about-accent-dark: #a74f1e;
    --about-accent-rgb: 204, 108, 48;
    min-height: 355px;
    border-radius: 4.65rem 8.1rem 5.4rem 8.9rem / 6.7rem 4.35rem 7.25rem 4.9rem;
}

.yesland-about-bottom .yesland-island.yesland-about-island {
    padding: clamp(2.15rem, 2.8vw, 3rem) clamp(2rem, 2.8vw, 3rem);
}

.yesland-about-top-layout,
.yesland-about-bottom-layout {
    position: relative;
    z-index: 4;
    display: grid;
    width: 100%;
    align-items: center;
}

.yesland-about-top-layout {
    grid-template-columns: minmax(330px, 1fr) minmax(0, 1.35fr);
    gap: clamp(2.25rem, 3.6vw, 4.5rem);
}

.yesland-about-bottom-layout {
    grid-template-columns: minmax(0, 1fr) minmax(190px, 230px);
    align-items: start;
    gap: clamp(1.15rem, 1.7vw, 1.75rem);
}

.yesland-about-island-right .yesland-about-bottom-layout {
    grid-template-columns: minmax(0, 1fr) minmax(190px, 230px);
}

.yesland-about-island-right .yesland-about-content {
    grid-column: 1;
}

.yesland-about-island-right .yesland-about-visual {
    grid-column: 2;
    grid-row: 1;
}

.yesland-about-content {
    position: relative;
    z-index: 2;
    display: grid;
    gap: .9rem;
    width: 100%;
    min-width: 0;
}

.yesland-about-content h1,
.yesland-about-content h2 {
    position: relative;
    width: fit-content;
    margin: 0 0 .3rem;
    padding-bottom: .55rem;
    color: #17364b;
    font-weight: 800;
    text-align: left;
}

.yesland-about-content h1::after,
.yesland-about-content h2::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 0;
    width: min(6.5rem, 48%);
    height: .28rem;
    border-radius: 70% 35% 62% 40%;
    background: var(--about-accent);
}

.yesland-about-content h1 {
    font-size: clamp(1.95rem, 3vw, 2.75rem);
    line-height: 1.15;
}

.yesland-about-content h2 {
    font-size: clamp(1.55rem, 2.25vw, 2rem);
    line-height: 1.18;
}

.yesland-about-content p {
    margin: 0;
    color: #425f70;
    font-size: clamp(1rem, 1vw, 1.08rem);
    line-height: 1.65;
}

.yesland-about-content strong {
    color: #234c61;
    font-weight: 800;
}

.yesland-about-note {
    color: #315c73 !important;
}

.yesland-about-visual {
    position: relative;
    z-index: 3;
    display: grid;
    place-items: center;
    width: 100%;
    isolation: isolate;
}

.yesland-about-visual svg {
    display: none;
}

.yesland-about-image {
    display: block;
    width: 100%;
    height: auto;
    object-fit: contain;
}

.yesland-about-visual-world {
    max-width: 520px;
    justify-self: center;
    aspect-ratio: 2.03;
    overflow: visible;
}

.yesland-about-world-image {
    border: 2px solid rgba(var(--about-accent-rgb), .3);
    border-radius: 3.7rem 5.4rem 3.2rem 5.8rem / 3rem 4.35rem 3.8rem 4.7rem;
    box-shadow: 0 .7rem 1.35rem rgba(38, 90, 93, .2);
    transform: rotate(-.6deg);
}

.yesland-about-avatar {
    position: absolute;
    z-index: 3;
    right: -.8rem;
    bottom: -1.15rem;
    width: clamp(62px, 7vw, 92px);
    height: auto;
    filter: drop-shadow(0 .45rem .45rem rgba(40, 65, 52, .24));
}

.yesland-about-visual-school,
.yesland-about-visual-leps {
    min-height: 235px;
    margin-top: .3rem;
    align-self: start;
}

.yesland-about-visual-school .yesland-about-image,
.yesland-about-visual-leps .yesland-about-image {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
    filter: drop-shadow(0 .55rem .65rem rgba(45, 71, 50, .18));
}

.yesland-about-school-house {
    transform: rotate(-1.4deg);
}

.yesland-about-school-yessi {
    position: absolute;
    z-index: 3;
    left: -8%;
    bottom: -7%;
    width: 34%;
    height: auto;
    transform: rotate(-4deg);
    filter: drop-shadow(0 .35rem .35rem rgba(38, 59, 50, .22));
}

.yesland-about-leps-house {
    transform: translateX(3%) rotate(1.2deg);
}

.yesland-about-leps-yessi {
    position: absolute;
    z-index: 3;
    left: -8%;
    bottom: -4%;
    width: 49%;
    height: auto;
    transform: rotate(-2deg);
    filter: drop-shadow(0 .35rem .35rem rgba(38, 59, 50, .22));
}

.yesland-about-more {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    min-width: 0;
}

.yesland-about-more > summary {
    order: 2;
    display: grid;
    justify-items: start;
    gap: .85rem;
    width: 100%;
    margin: 0;
    color: #425f70;
    list-style: none;
    cursor: pointer;
}

.yesland-about-more > summary::-webkit-details-marker {
    display: none;
}

.yesland-about-summary-text {
    display: block;
    font-size: clamp(1rem, 1vw, 1.08rem);
    line-height: 1.65;
}

.yesland-about-summary-button {
    display: inline-flex;
    align-items: center;
    gap: .65rem;
    min-height: 2.8rem;
    padding: .62rem 1rem;
    border-radius: 1.1rem 1.45rem 1.05rem 1.35rem / 1.35rem 1.05rem 1.4rem 1.1rem;
    background: var(--about-accent);
    color: #fff;
    font-size: .92rem;
    font-weight: 800;
    line-height: 1.15;
    box-shadow: 0 .3rem .65rem rgba(var(--about-accent-rgb), .25);
    transition: transform 160ms ease, background-color 160ms ease, box-shadow 160ms ease;
}

.yesland-about-more > summary:hover .yesland-about-summary-button,
.yesland-about-more > summary:focus-visible .yesland-about-summary-button {
    background: var(--about-accent-dark);
    transform: translateY(-2px);
    box-shadow: 0 .45rem .85rem rgba(var(--about-accent-rgb), .31);
}

.yesland-about-more > summary:focus-visible {
    outline: 0;
}

.yesland-about-more > summary:focus-visible .yesland-about-summary-button {
    outline: 3px solid rgba(var(--about-accent-rgb), .32);
    outline-offset: 3px;
}

.yesland-about-extra {
    order: 1;
    width: 100%;
    margin-bottom: .75rem;
}

.yesland-about-more[open] > .yesland-about-extra {
    display: grid;
    gap: 1rem;
}

.yesland-about-more:not([open]) > .yesland-about-extra {
    display: none;
}

.yesland-about-less-label {
    display: none;
}

.yesland-about-more[open] .yesland-about-summary-text {
    display: none;
}

.yesland-about-more[open] .yesland-about-more-label {
    display: none;
}

.yesland-about-more[open] .yesland-about-less-label {
    display: inline;
}

.yesland-about-toggle-icon {
    width: .58rem;
    height: .58rem;
    border-right: .14rem solid currentColor;
    border-bottom: .14rem solid currentColor;
    transform: translateY(-.14rem) rotate(45deg);
    transition: transform 160ms ease;
}

.yesland-about-more[open] .yesland-about-toggle-icon {
    transform: translateY(.14rem) rotate(225deg);
}

.yesland-about-pills {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-start;
    gap: .55rem;
    margin-top: .2rem;
}

.yesland-about-pills > span,
.yesland-about-pills > a {
    display: inline-flex;
    align-items: center;
    gap: .48rem;
    min-height: 2.15rem;
    padding: .42rem .82rem;
    border: 1px solid rgba(var(--about-accent-rgb), .28);
    border-radius: 999px;
    background: rgba(var(--about-accent-rgb), .09);
    color: var(--about-accent-dark);
    font-size: .84rem;
    font-weight: 800;
    line-height: 1.22;
    box-shadow: 0 .2rem .55rem rgba(61, 72, 58, .07);
}

.yesland-about-pills > a {
    text-decoration: none;
    cursor: pointer;
    transition: color 160ms ease, background-color 160ms ease, border-color 160ms ease, transform 160ms ease, box-shadow 160ms ease;
}

.yesland-about-pills > span::before,
.yesland-about-pills > a::before {
    content: "";
    flex: 0 0 auto;
    width: .48rem;
    height: .48rem;
    border-radius: 50% 44% 52% 47%;
    background: var(--about-accent);
    box-shadow: inset 0 .08rem .12rem rgba(255,255,255,.4);
}

.yesland-about-pills > a::before {
    content: "\2605";
    display: grid;
    place-items: center;
    width: 1.05rem;
    height: 1.05rem;
    background: transparent;
    color: var(--about-accent);
    font-size: 1.02rem;
    line-height: 1;
    box-shadow: none;
}

.yesland-about-pills > a:hover,
.yesland-about-pills > a:focus-visible {
    border-color: var(--about-accent);
    background: var(--about-accent);
    color: #fff;
    transform: translateY(-2px);
    box-shadow: 0 .4rem .75rem rgba(var(--about-accent-rgb), .24);
}

.yesland-about-pills > a:hover::before,
.yesland-about-pills > a:focus-visible::before {
    color: #fff;
}

.yesland-about-pills > a:focus-visible {
    outline: 3px solid rgba(var(--about-accent-rgb), .3);
    outline-offset: 3px;
}

.yesland-about-island-top .yesland-island-decoration-grass {
    left: 1.8rem;
    bottom: .55rem;
    transform: scale(.72);
    transform-origin: left bottom;
}

.yesland-about-island-top .yesland-island-decoration-rocks {
    right: 2.2rem;
    left: auto;
    bottom: .5rem;
    transform: scale(.7);
    transform-origin: right bottom;
}

.yesland-about-island-left .yesland-island-decoration-shells {
    right: 2.5rem;
    bottom: .65rem;
    transform: scale(.68);
    transform-origin: right bottom;
}

.yesland-about-island-right .yesland-island-decoration-grass {
    right: 2.1rem;
    left: auto;
    bottom: .55rem;
    transform: scale(.68);
    transform-origin: right bottom;
}

@media (max-width: 1199.98px) {
    .yesland-island.yesland-about-island {
        padding-inline: clamp(2rem, 3vw, 3rem);
    }

    .yesland-about-bottom-layout,
    .yesland-about-island-right .yesland-about-bottom-layout {
        grid-template-columns: minmax(0, 1fr) minmax(155px, 185px);
    }

    .yesland-about-island-right .yesland-about-content {
        grid-column: 1;
    }

    .yesland-about-island-right .yesland-about-visual {
        grid-column: 2;
    }
}

@media (max-width: 991.98px) {
    .yesland-about-bottom {
        grid-template-columns: 1fr;
    }

    .yesland-about-bottom-layout,
    .yesland-about-island-right .yesland-about-bottom-layout {
        grid-template-columns: minmax(0, 1fr) minmax(185px, 225px);
    }

    .yesland-island.yesland-about-island-left,
    .yesland-island.yesland-about-island-right {
        min-height: 0;
    }
}

@media (max-width: 767.98px) {
    .yesland-about-top-layout,
    .yesland-about-bottom-layout,
    .yesland-about-island-right .yesland-about-bottom-layout {
        grid-template-columns: 1fr;
        gap: 1.5rem;
    }

    .yesland-about-content,
    .yesland-about-island-right .yesland-about-content {
        grid-column: 1;
        grid-row: 2;
    }

    .yesland-about-visual,
    .yesland-about-island-right .yesland-about-visual {
        grid-column: 1;
        grid-row: 1;
        width: min(100%, 320px);
        justify-self: center;
    }

    .yesland-about-visual-world {
        width: min(100%, 470px);
        max-width: 470px;
    }

    .yesland-about-visual-school,
    .yesland-about-visual-leps {
        min-height: 255px;
        margin-bottom: -.5rem;
    }
}

@media (max-width: 575.98px) {
    .yesland-about-page {
        gap: 1.25rem;
        padding-bottom: 1rem;
    }

    .yesland-island.yesland-about-island {
        min-height: 0;
        padding: 2.15rem 1.45rem 2.5rem;
    }

    .yesland-island.yesland-about-island-top {
        border-radius: 3.5rem 2.7rem 4.1rem 3.05rem / 2.8rem 3.8rem 2.95rem 3.55rem;
    }

    .yesland-island.yesland-about-island-left {
        border-radius: 2.8rem 3.75rem 2.55rem 4rem / 3.5rem 2.65rem 3.8rem 2.9rem;
    }

    .yesland-island.yesland-about-island-right {
        border-radius: 3.9rem 2.7rem 4.15rem 3.05rem / 2.75rem 3.95rem 2.9rem 3.7rem;
    }

    .yesland-about-content h1 {
        font-size: clamp(1.75rem, 8vw, 2.15rem);
    }

    .yesland-about-content h2 {
        font-size: 1.55rem;
    }

    .yesland-about-content p {
        font-size: 1rem;
        line-height: 1.62;
    }

    .yesland-about-summary-button {
        min-height: 2.7rem;
        padding-inline: .9rem;
        font-size: .88rem;
    }

    .yesland-about-pills > span,
    .yesland-about-pills > a {
        font-size: .8rem;
    }

    .yesland-about-island .yesland-island-decoration {
        opacity: .52;
        transform: scale(.52);
    }

    .yesland-about-avatar {
        right: -.25rem;
        bottom: -.85rem;
        width: 64px;
    }

    .yesland-about-visual-school,
    .yesland-about-visual-leps {
        min-height: 225px;
    }
}

/* Portal tabs use the warm Yesland sand surface instead of Bootstrap's flat tabs. */
.yesland-portal-tabs {
    width: fit-content;
    max-width: 100%;
    gap: .5rem;
    padding: .55rem;
    border: 1px solid rgba(188, 137, 61, .42);
    border-radius: 1.35rem 1.1rem 1.45rem 1.2rem / 1.1rem 1.4rem 1.15rem 1.35rem;
    background:
        radial-gradient(ellipse at 20% 0%, rgba(255,255,255,.78), transparent 42%),
        linear-gradient(145deg, #fff8e8 0%, #fbeac0 58%, #eccd8e 100%);
    box-shadow:
        0 .13rem 0 #dfbd79,
        0 .36rem .8rem rgba(104, 68, 27, .17);
}

.yesland-portal-tabs .nav-item {
    margin: 0;
}

.yesland-portal-tabs .nav-link {
    margin: 0;
    padding: .62rem 1rem;
    border: 1px solid rgba(162, 117, 52, .27);
    border-radius: 999px;
    background: rgba(255, 249, 235, .72);
    color: #17364b;
    font-weight: 700;
    box-shadow: 0 .12rem .25rem rgba(104, 68, 27, .08);
}

.yesland-portal-tabs .nav-link:hover,
.yesland-portal-tabs .nav-link:focus-visible {
    border-color: rgba(111, 82, 38, .48);
    background: #fff9eb;
    color: #17364b;
}

.yesland-portal-tabs .nav-link.active {
    border-color: #0c7e83;
    background: #0c7e83;
    color: #fff;
    box-shadow: 0 .22rem .48rem rgba(12, 126, 131, .24);
}

.yesland-portal-tabs .nav-link .badge {
    background: rgba(255, 255, 255, .72) !important;
    border-color: rgba(23, 54, 75, .18) !important;
    color: #17364b !important;
}

@media (max-width: 575.98px) {
    .yesland-portal-tabs {
        width: 100%;
    }

    .yesland-portal-tabs .nav-item {
        flex: 1 1 auto;
    }

    .yesland-portal-tabs .nav-link {
        width: 100%;
        text-align: center;
    }
}

/* Compact status pills on the Updates and BrainBites administration cards. */
.admin-content-badges .badge {
    align-self: center;
    padding: .35rem .55rem;
    font-size: .75rem;
    line-height: 1;
}

@media (prefers-reduced-motion: reduce) {
    .yesland-about-summary-button,
    .yesland-about-toggle-icon,
    .yesland-about-pills > a {
        transition: none;
    }
}

.card,
.alert {
    border-radius: var(--sayyes-card-radius);
}

.btn,
.form-control,
.form-select,
.progress {
    border-radius: var(--sayyes-control-radius);
}

.score-number {
    font-variant-numeric: tabular-nums;
}

.campaign-progress {
    height: 2rem;
}

.rank-badge {
    width: 2.5rem;
    height: 2.5rem;
    display: inline-grid;
    place-items: center;
    border-radius: 50%;
    font-weight: 700;
}

.action-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: .5rem;
}

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


.group-list-item {
    border-radius: .6rem;
    background: #fff;
}

.group-list-row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}

.group-list-actions {
    display: grid;
    grid-template-columns: 4.8rem 4.5rem 6.5rem;
    align-items: center;
    gap: .4rem;
    flex: 0 0 auto;
}

.group-list-actions .badge,
.group-list-actions .btn {
    width: 100%;
    min-height: 2rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: .35rem;
    white-space: nowrap;
}

.group-list-actions form {
    margin: 0;
}

@media (max-width: 767.98px) {
    .group-list-row {
        flex-direction: column;
    }

    .group-list-actions {
        width: 100%;
        grid-template-columns: 1fr 1fr 1.35fr;
    }
}

.campaign-list-item,
.class-picker {
    border-radius: var(--sayyes-card-radius);
}

.class-picker {
    max-height: 280px;
    overflow: auto;
}

.group-classes {
    min-height: 4rem;
}


.home-hero {
    padding: 2rem;
    border-radius: var(--sayyes-card-radius);
}

.home-logo {
    width: min(100%, 300px);
    max-height: 390px;
    object-fit: contain;
}

.login-logo {
    width: 120px;
    height: auto;
}

@media (min-width: 768px) {
    .home-hero {
        padding: 3rem;
    }
}

@media (max-width: 991.98px) {
    .home-logo {
        width: min(70%, 240px);
    }
}

.admin-nav-separator {
    width: 1px;
    min-height: 2rem;
    background: var(--bs-border-color);
    margin: 0 .15rem;
}

.slot-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: .55rem;
}

.appointment-slot {
    display: flex;
    flex-direction: column;
    align-items: center;
    line-height: 1.15;
    padding: .7rem .4rem;
}

.appointment-slot small {
    margin-top: .2rem;
    opacity: .75;
}

.booking-success-card {
    border-top: .3rem solid var(--bs-success) !important;
}

.booking-success-icon {
    display: grid;
    place-items: center;
    width: 3.5rem;
    height: 3.5rem;
    border-radius: 50%;
    background: var(--bs-success-bg-subtle);
    color: var(--bs-success-text-emphasis);
    font-size: 2rem;
    font-weight: 700;
}

.booking-summary dt,
.booking-summary dd {
    padding-top: .45rem;
    padding-bottom: .45rem;
    border-bottom: 1px solid var(--bs-border-color);
    margin-bottom: 0;
}

.appointment-date-heading {
    padding-left: .25rem;
}

.appointment-time-box {
    min-width: 4.5rem;
    padding: .6rem .45rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--sayyes-control-radius);
    text-align: center;
    font-variant-numeric: tabular-nums;
}

.appointment-time-box strong,
.appointment-time-box small {
    display: block;
}

.appointment-time-box strong {
    font-size: 1.15rem;
}

.appointment-time-box small {
    color: var(--bs-secondary-color);
}

.appointment-cancelled {
    opacity: .68;
}

@media (max-width: 767.98px) {
    .slot-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .admin-nav-separator {
        display: none;
    }
}

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

/* Classes and public availability */
.class-visibility-box,
.class-admin-item {
    border-radius: var(--sayyes-card-radius);
}

.class-admin-row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}

.class-admin-details {
    display: flex;
    flex-wrap: wrap;
    gap: .25rem .75rem;
}

.class-admin-details span:not(:last-child)::after {
    content: "·";
    margin-left: .75rem;
}

.class-admin-actions {
    display: grid;
    grid-template-columns: 4.5rem 5.25rem 6.5rem;
    gap: .4rem;
    flex: 0 0 auto;
}

.class-admin-actions form {
    margin: 0;
}

.class-admin-actions .btn {
    width: 100%;
    min-height: 2rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    white-space: nowrap;
}

.class-availability-hero {
    padding: 2rem;
    border-radius: var(--sayyes-card-radius);
}

.class-availability-summary {
    padding: 1rem 1.25rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--sayyes-card-radius);
    background: var(--bs-tertiary-bg);
}

.class-availability-card {
    position: relative;
    overflow: hidden;
    transition: transform .15s ease, box-shadow .15s ease;
}

.class-availability-card::before {
    content: "";
    position: absolute;
    inset: 0 0 auto;
    height: .25rem;
    background: var(--bs-primary);
}

.class-availability-card:hover {
    transform: translateY(-2px);
}

.class-spots-badge {
    max-width: 8.5rem;
    white-space: normal;
    text-align: center;
    line-height: 1.2;
    padding: .5rem .65rem;
}

.class-availability-meta {
    display: grid;
    gap: .65rem;
}

.class-availability-meta > div {
    display: grid;
    grid-template-columns: minmax(6.5rem, .8fr) 1.4fr;
    gap: .75rem;
    padding-bottom: .65rem;
    border-bottom: 1px solid var(--bs-border-color);
}

.class-availability-meta dt,
.class-availability-meta dd {
    margin: 0;
}

.class-availability-meta dt {
    color: var(--bs-secondary-color);
    font-size: .875rem;
    font-weight: 600;
}

@media (min-width: 768px) {
    .class-availability-hero {
        padding: 2.5rem;
    }
}

@media (max-width: 767.98px) {
    .class-admin-row {
        flex-direction: column;
    }

    .class-admin-actions {
        width: 100%;
        grid-template-columns: 1fr 1fr 1.35fr;
    }

    .class-admin-details span::after {
        display: none;
    }
}

@media (max-width: 419.98px) {
    .class-admin-actions {
        grid-template-columns: 1fr;
    }

    .class-availability-meta > div {
        grid-template-columns: 1fr;
        gap: .15rem;
    }
}



.appointment-type-actions {
    display: grid;
    grid-template-columns: minmax(9.75rem, auto) 5.25rem 6.5rem;
    align-items: center;
    gap: .45rem;
    flex: 0 0 auto;
}

.appointment-type-badges {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: .35rem;
    flex-wrap: nowrap;
}

.appointment-type-actions .badge,
.appointment-type-actions .btn {
    min-height: 2rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: .35rem;
    white-space: nowrap;
}

.appointment-type-actions .badge {
    padding: .35rem .65rem;
}

.appointment-type-actions .btn,
.appointment-type-actions form,
.appointment-type-actions form .btn {
    width: 100%;
}

.appointment-type-actions form {
    margin: 0;
}

@media (max-width: 991.98px) {
    .appointment-type-actions {
        grid-template-columns: 1fr 1fr;
        width: min(100%, 18rem);
    }

    .appointment-type-badges {
        grid-column: 1 / -1;
        justify-content: flex-start;
    }
}

@media (max-width: 767.98px) {
    .appointment-type-actions {
        width: 100%;
    }
}

@media (max-width: 419.98px) {
    .appointment-type-actions {
        grid-template-columns: 1fr;
    }

    .appointment-type-badges {
        grid-column: 1;
        flex-wrap: wrap;
    }
}

.class-booking-context {
    border-left: .3rem solid var(--bs-primary) !important;
}

.class-enquiry-label {
    color: var(--bs-primary-text-emphasis);
}


/* Public and administration navigation */
.public-nav-links {
    gap: .45rem;
    align-items: center;
}

.public-nav-button {
    min-height: 2.15rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding-inline: .85rem;
    border: 1px solid transparent;
    border-radius: .4rem;
    font-weight: 600;
}

.public-nav-scores {
    background-color: #087f8c;
    border-color: #087f8c;
    color: #fff !important;
}

.public-nav-classes {
    background-color: #198754;
    border-color: #198754;
    color: #fff !important;
}

.public-nav-booking {
    background-color: #fd7e14;
    border-color: #fd7e14;
    color: #fff !important;
}

.public-nav-events {
    background-color: #0f766e;
    border-color: #0f766e;
    color: #fff !important;
}

.public-nav-content {
    background-color: #5f477a;
    border-color: #5f477a;
    color: #fff !important;
}

.public-nav-scores:hover,
.public-nav-scores:focus,
.public-nav-scores:active {
    background-color: #066d78 !important;
    border-color: #055f69 !important;
    color: #fff !important;
}

.public-nav-classes:hover,
.public-nav-classes:focus,
.public-nav-classes:active {
    background-color: #157347 !important;
    border-color: #146c43 !important;
    color: #fff !important;
}

.public-nav-booking:hover,
.public-nav-booking:focus,
.public-nav-booking:active {
    background-color: #dc6506 !important;
    border-color: #cf5f05 !important;
    color: #fff !important;
}

.public-nav-events:hover,
.public-nav-events:focus,
.public-nav-events:active {
    background-color: #0b5f59 !important;
    border-color: #094f4a !important;
    color: #fff !important;
}

.public-nav-content:hover,
.public-nav-content:focus,
.public-nav-content:active,
.public-nav-content.show {
    background-color: #4e3966 !important;
    border-color: #443259 !important;
    color: #fff !important;
}

.navbar-account-menu .dropdown-toggle {
    max-width: 12rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.navbar-account-menu .dropdown-menu {
    min-width: 16rem;
    max-width: min(22rem, calc(100vw - 2rem));
}

.navbar-account-menu .dropdown-header {
    white-space: normal;
    overflow-wrap: anywhere;
}

@media (min-width: 1320px) {
    .yesland-public-navbar-crowded .navbar-account-label {
        display: none;
    }

    .yesland-public-navbar-crowded .navbar-account-menu .dropdown-toggle {
        width: 2.6rem;
        padding-right: .45rem;
        padding-left: .45rem;
    }
}

@media (min-width: 1600px) {
    .yesland-public-navbar-crowded .navbar-collapse,
    .yesland-public-navbar-crowded .public-nav-links {
        min-width: 0;
        flex-wrap: nowrap;
    }

    .yesland-public-navbar-crowded .navbar-account-actions {
        flex: 0 0 auto;
        flex-wrap: nowrap !important;
        gap: .4rem !important;
        margin-left: .5rem;
    }
}

.admin-entry-button,
.staff-signin-button {
    border-radius: .4rem;
}

.admin-nav-panel {
    padding: .85rem 1rem 1rem;
    background: var(--bs-secondary-bg);
    border: 1px solid var(--bs-border-color);
    border-radius: var(--sayyes-card-radius);
}

.admin-nav-heading {
    margin-bottom: .65rem;
    color: var(--bs-secondary-color);
    font-size: .75rem;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.admin-nav-button {
    color: var(--bs-body-color);
    background: var(--bs-body-bg);
    border: 1px solid var(--bs-border-color);
    border-radius: .35rem;
}

.admin-nav-button:hover,
.admin-nav-button:focus,
.admin-nav-button.active {
    color: #fff;
    background: var(--bs-dark);
    border-color: var(--bs-dark);
}

@media (max-width: 991.98px) {
    .public-nav-links {
        align-items: stretch;
    }

    .public-nav-button {
        width: 100%;
        justify-content: flex-start;
    }

    .navbar-account-actions {
        padding-top: .5rem;
        border-top: 1px solid var(--bs-border-color);
    }

    .navbar-account-menu,
    .navbar-account-menu .dropdown-toggle {
        width: 100%;
        max-width: none;
    }
}

/* Appointment management */
.appointment-admin-actions form {
    margin: 0;
}

.appointment-slot-checker {
    top: 7.5rem;
}

.appointment-admin-slot-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.appointment-slot-copy {
    display: flex;
    flex-direction: column;
    align-items: center;
    line-height: 1.15;
    padding: .65rem .35rem;
}

.appointment-slot-copy small {
    margin-top: .15rem;
    opacity: .75;
}

.appointment-calendar-wrap {
    overflow-x: auto;
}

.appointment-calendar {
    display: grid;
    grid-template-columns: repeat(7, minmax(8.5rem, 1fr));
    min-width: 64rem;
    background: var(--bs-border-color);
    gap: 1px;
}

.appointment-calendar-weekday {
    padding: .7rem .55rem;
    background: var(--bs-dark);
    color: #fff;
    font-size: .8rem;
    font-weight: 700;
    text-align: center;
}

.appointment-calendar-day {
    min-height: 9rem;
    padding: .55rem;
    background: var(--bs-body-bg);
}

.appointment-calendar-day.outside-month {
    background: var(--bs-tertiary-bg);
    color: var(--bs-secondary-color);
}

.appointment-calendar-day.is-today {
    box-shadow: inset 0 0 0 2px var(--bs-primary);
}

.appointment-calendar-date {
    margin-bottom: .4rem;
    font-weight: 700;
}

.appointment-calendar-events {
    display: grid;
    gap: .3rem;
}

.appointment-calendar-entry {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: .35rem;
    align-items: center;
    padding: .35rem .45rem;
    border-radius: .35rem;
    background: var(--bs-primary-bg-subtle);
    color: var(--bs-primary-text-emphasis);
    font-size: .75rem;
    line-height: 1.15;
    text-decoration: none;
}

.appointment-calendar-entry span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.appointment-calendar-entry:hover {
    filter: brightness(.96);
}

.appointment-calendar-entry.status-completed {
    background: var(--bs-success-bg-subtle);
    color: var(--bs-success-text-emphasis);
}

.appointment-calendar-entry.status-cancelled {
    background: var(--bs-secondary-bg);
    color: var(--bs-secondary-color);
    text-decoration: line-through;
}

.appointment-calendar-entry.status-no_show {
    background: var(--bs-warning-bg-subtle);
    color: var(--bs-warning-text-emphasis);
}

/* Greek holiday import */
.holiday-import-card {
    border-top: .25rem solid var(--bs-primary) !important;
}

.holiday-check-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .65rem;
}

.holiday-check-item {
    display: flex;
    align-items: flex-start;
    gap: .65rem;
    padding: .75rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--sayyes-control-radius);
    background: var(--bs-body-bg);
    cursor: pointer;
}

.holiday-check-item:hover {
    background: var(--bs-tertiary-bg);
}

.holiday-check-item .form-check-input {
    flex: 0 0 auto;
    margin-top: .2rem;
}

.holiday-check-item span,
.holiday-check-item small {
    display: block;
}

.holiday-check-item small {
    margin-top: .15rem;
    color: var(--bs-secondary-color);
}

@media (max-width: 991.98px) {
    .holiday-check-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .appointment-slot-checker {
        position: static !important;
    }
}

@media (max-width: 575.98px) {
    .holiday-check-grid,
    .appointment-admin-slot-grid {
        grid-template-columns: 1fr;
    }
}

/* Users and student accounts */
.account-summary {
    display: grid;
    grid-template-columns: minmax(5rem, .55fr) 1.45fr;
    gap: .65rem 1rem;
}

.account-summary dt,
.account-summary dd {
    margin: 0;
    padding-bottom: .65rem;
    border-bottom: 1px solid var(--bs-border-color);
}

.account-summary dt {
    color: var(--bs-secondary-color);
    font-size: .875rem;
}

.user-admin-item,
.student-campaign-card {
    border-radius: var(--sayyes-card-radius);
    background: #fff;
}

.student-links-island {
    position: relative;
    overflow: hidden;
    border-radius: var(--sayyes-card-radius);
    background:
        radial-gradient(circle at 92% 18%, rgba(255, 255, 255, .72) 0 4rem, transparent 4.1rem),
        linear-gradient(135deg, #fffdf8 0%, #f2fbf8 100%);
}

.student-links-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}

.student-links-decoration {
    display: grid;
    place-items: center;
    width: 3.25rem;
    height: 3.25rem;
    flex: 0 0 auto;
    border-radius: 50%;
    background: rgba(19, 126, 104, .12);
    color: #137e68;
    font-size: 1.5rem;
    font-weight: 800;
}

.student-link-buttons {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
    gap: .75rem;
}

.student-link-button {
    min-height: 3rem;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .55rem;
    padding: .65rem 1rem;
    white-space: normal;
    color: var(--student-link-fg) !important;
    background-color: var(--student-link-bg) !important;
    border-color: var(--student-link-bg) !important;
    transition: filter .16s ease, transform .16s ease, box-shadow .16s ease;
}

.student-link-button:hover,
.student-link-button:focus-visible {
    color: var(--student-link-fg) !important;
    background-color: var(--student-link-bg) !important;
    border-color: var(--student-link-bg) !important;
    filter: brightness(.9);
}

.student-link-button:hover {
    transform: translateY(-1px);
}

.student-link-colour-preview {
    display: inline-flex;
    align-items: center;
    min-height: 1.5rem;
    padding: .15rem .5rem;
    border: 1px solid rgba(0, 0, 0, .12);
    border-radius: 999px;
    color: var(--student-link-fg);
    background-color: var(--student-link-bg);
    font-size: .75rem;
    font-weight: 700;
}

.student-link-button-arrow {
    flex: 0 0 auto;
    font-size: .95rem;
}

.student-link-admin-row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}

.student-link-admin-actions {
    display: grid;
    grid-template-columns: repeat(3, minmax(4.4rem, 1fr));
    gap: .4rem;
    flex: 0 0 auto;
}

.student-link-admin-actions form {
    margin: 0;
}

.student-link-admin-actions .btn {
    width: 100%;
}

.user-admin-row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}

.user-admin-actions {
    display: grid;
    grid-template-columns: minmax(10rem, max-content);
    justify-content: end;
    align-items: stretch;
    gap: .4rem;
    flex: 0 0 auto;
}

.user-admin-actions form {
    margin: 0;
    width: 100%;
}

.user-admin-actions .btn {
    width: 100%;
    min-width: 0;
}

.student-placeholder {
    background: var(--bs-tertiary-bg);
    min-height: 7rem;
    display: grid;
    place-items: center;
    text-align: center;
}

@media (max-width: 767.98px) {
    .user-admin-row {
        flex-direction: column;
    }

    .student-link-admin-row {
        flex-direction: column;
    }

    .student-link-admin-actions {
        width: 100%;
    }

    .user-admin-actions {
        width: 100%;
        grid-template-columns: 1fr;
        justify-content: stretch;
    }

    .user-admin-actions a,
    .user-admin-actions form {
        width: 100%;
    }

    .user-admin-actions .btn {
        width: 100%;
        min-width: 0;
    }
}

@media (max-width: 479.98px) {
    .student-links-decoration {
        display: none;
    }

    .student-link-buttons,
    .student-link-admin-actions {
        grid-template-columns: 1fr;
    }

    .user-admin-actions {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 479.98px) {
    .account-summary {
        grid-template-columns: 1fr;
        gap: .15rem;
    }

    .account-summary dt {
        border-bottom: 0;
        padding-bottom: 0;
    }
}

/* Exercises and puzzles */
.min-w-0 {
    min-width: 0;
}

.exercise-timer-box,
.exercise-admin-item,
.exercise-question-item,
.student-exercise-card,
.exercise-question-card,
.exercise-review-item {
    border-radius: var(--sayyes-card-radius);
}

.exercise-admin-row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}

.exercise-admin-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(6.5rem, 1fr));
    gap: .4rem;
    flex: 0 0 auto;
}

.exercise-admin-actions form {
    margin: 0;
}

.exercise-admin-actions .btn {
    width: 100%;
    min-height: 2rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    white-space: nowrap;
}

.exercise-meta {
    display: flex;
    flex-wrap: wrap;
    gap: .25rem .65rem;
    color: var(--bs-secondary-color);
}

.exercise-meta span:not(:last-child)::after {
    content: "·";
    margin-left: .65rem;
}

.exercise-question-actions {
    display: grid;
    grid-template-columns: 2.25rem 2.25rem 4.5rem 4.75rem;
    align-items: start;
    gap: .35rem;
    flex: 0 0 auto;
}

.exercise-question-actions form {
    margin: 0;
}

.exercise-question-actions .btn {
    width: 100%;
    height: 2rem;
    min-height: 2rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding-top: .25rem;
    padding-bottom: .25rem;
    white-space: nowrap;
}

.exercise-taking-header {
    border-top: .3rem solid var(--bs-primary) !important;
}

.exercise-instructions {
    padding: .85rem 1rem;
    border-left: .25rem solid var(--bs-primary);
    background: var(--bs-primary-bg-subtle);
    border-radius: var(--sayyes-control-radius);
}

.exercise-timer {
    min-width: 9rem;
    padding: .7rem 1rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--sayyes-control-radius);
    background: var(--bs-body-bg);
    text-align: center;
    font-variant-numeric: tabular-nums;
}

.exercise-timer span,
.exercise-timer strong {
    display: block;
}

.exercise-timer strong {
    font-size: 1.6rem;
    line-height: 1.1;
}

.exercise-timer.is-low {
    border-color: var(--bs-danger);
    background: var(--bs-danger-bg-subtle);
    color: var(--bs-danger-text-emphasis);
}

.open-answer-input {
    min-height: 15rem;
    resize: vertical;
    line-height: 1.6;
}

.open-answer-word-count {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.exercise-choice {
    display: flex;
    align-items: flex-start;
    gap: .75rem;
    cursor: pointer;
    border-radius: var(--sayyes-control-radius);
    background: var(--bs-body-bg);
    transition: background-color .12s ease, border-color .12s ease;
}

.exercise-choice:hover {
    background: var(--bs-tertiary-bg);
    border-color: var(--bs-primary) !important;
}

.exercise-choice:has(.form-check-input:checked) {
    background: var(--bs-primary-bg-subtle);
    border-color: var(--bs-primary) !important;
}

.exercise-choice .form-check-input {
    flex: 0 0 auto;
    margin-top: .2rem;
}

.exercise-result-card {
    border-top: .35rem solid var(--bs-secondary) !important;
}

.exercise-result-card.exercise-result-passed {
    border-top-color: var(--bs-success) !important;
}

.exercise-result-card.exercise-result-failed {
    border-top-color: var(--bs-danger) !important;
}

.exercise-result-card.exercise-result-awaiting {
    border-top-color: var(--bs-warning) !important;
}

.exercise-result-icon {
    width: 4rem;
    height: 4rem;
    display: grid;
    place-items: center;
    border-radius: 50%;
    font-size: 2.5rem;
    font-weight: 700;
    background: var(--bs-secondary-bg);
}

.exercise-result-passed .exercise-result-icon {
    background: var(--bs-success-bg-subtle);
    color: var(--bs-success-text-emphasis);
}

.exercise-result-failed .exercise-result-icon {
    background: var(--bs-danger-bg-subtle);
    color: var(--bs-danger-text-emphasis);
}

.exercise-result-awaiting .exercise-result-icon {
    background: var(--bs-warning-bg-subtle);
    color: var(--bs-warning-text-emphasis);
}

.exercise-review-item.is-correct {
    border-left: .3rem solid var(--bs-success) !important;
}

.exercise-review-item.is-incorrect {
    border-left: .3rem solid var(--bs-danger) !important;
}

.exercise-review-item.is-open-answer {
    border-left: .3rem solid var(--bs-info) !important;
}

.open-answer-review {
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    line-height: 1.6;
}

.teacher-feedback-box {
    max-width: 46rem;
}

@media (max-width: 991.98px) {
    .exercise-admin-row {
        flex-direction: column;
    }

    .exercise-admin-actions {
        width: 100%;
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

@media (max-width: 767.98px) {
    .exercise-admin-actions {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .exercise-question-item > .d-flex {
        flex-direction: column;
    }

    .exercise-question-actions {
        width: 100%;
        grid-template-columns: 2.5rem 2.5rem 1fr 1fr;
    }
}

@media (max-width: 479.98px) {
    .exercise-meta span::after {
        display: none;
    }

    .exercise-admin-actions {
        grid-template-columns: 1fr;
    }

    .exercise-question-actions {
        grid-template-columns: 1fr 1fr;
    }
}

/* Extended exercise types and question bank */
.question-image-current img,
.question-list-image,
.question-bank-image,
.exercise-question-image,
.exercise-review-image {
    display: block;
    max-width: 100%;
    height: auto;
    border-radius: var(--sayyes-control-radius);
    border: 1px solid var(--bs-border-color);
}

.question-image-current img {
    max-height: 220px;
}

.question-list-image,
.question-bank-image,
.exercise-review-image {
    max-height: 180px;
}

.exercise-question-image-wrap {
    display: flex;
    justify-content: center;
    padding: .75rem;
    background: var(--bs-tertiary-bg);
    border-radius: var(--sayyes-card-radius);
}

.exercise-question-image {
    max-height: 420px;
    object-fit: contain;
}

.fill-blank-question {
    line-height: 2.25;
    font-weight: 500;
}

.fill-blank-input {
    display: inline-block;
    width: min(13rem, 70vw);
    margin: 0 .3rem;
    vertical-align: middle;
}

.exercise-order-list {
    display: grid;
    gap: .6rem;
    padding-left: 0;
    margin-bottom: 0;
    list-style: none;
    counter-reset: exercise-order;
}

.exercise-order-item {
    counter-increment: exercise-order;
    display: grid;
    grid-template-columns: auto auto minmax(0, 1fr) auto;
    align-items: center;
    gap: .65rem;
    padding: .7rem .75rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--sayyes-control-radius);
    background: var(--bs-body-bg);
    cursor: grab;
}

.exercise-order-item::before {
    content: counter(exercise-order) ".";
    color: var(--bs-secondary-color);
    font-weight: 700;
}

.exercise-order-item.is-dragging {
    opacity: .55;
    border-color: var(--bs-primary);
}

.exercise-order-handle {
    color: var(--bs-secondary-color);
    font-size: 1.15rem;
}

.exercise-order-buttons {
    display: flex;
    gap: .3rem;
}

.exercise-order-buttons .btn {
    width: 2.1rem;
    height: 2rem;
    padding: 0;
    display: inline-grid;
    place-items: center;
}

.exercise-matching-grid {
    display: grid;
    grid-template-columns: minmax(8rem, 1fr) minmax(10rem, 1.35fr);
    gap: .65rem .85rem;
    align-items: center;
}

.exercise-matching-left {
    padding: .65rem .75rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--sayyes-control-radius);
    background: var(--bs-tertiary-bg);
    font-weight: 600;
}

.exercise-question-actions-wide {
    grid-template-columns: 2.25rem 2.25rem 4.5rem 4.5rem 4.75rem;
}

.question-bank-item {
    border-radius: var(--sayyes-card-radius);
}

.question-bank-row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}

.question-bank-actions {
    display: flex;
    align-items: flex-start;
    gap: .45rem;
    flex: 0 0 min(28rem, 48%);
}

.question-bank-actions form {
    margin: 0;
}

.question-bank-add-form {
    display: grid;
    grid-template-columns: minmax(12rem, 1fr) 4.5rem;
    gap: .4rem;
    flex: 1 1 auto;
}

.question-bank-actions .btn {
    min-height: 2rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    white-space: nowrap;
}

@media (max-width: 991.98px) {
    .question-bank-row {
        flex-direction: column;
    }

    .question-bank-actions {
        width: 100%;
        flex-basis: auto;
    }
}

@media (max-width: 767.98px) {
    .exercise-question-actions-wide {
        grid-template-columns: 2.5rem 2.5rem repeat(3, minmax(0, 1fr));
    }

    .exercise-matching-grid {
        grid-template-columns: 1fr;
        gap: .3rem;
    }

    .exercise-matching-grid .form-select {
        margin-bottom: .55rem;
    }
}

@media (max-width: 575.98px) {
    .fill-blank-input {
        display: block;
        width: 100%;
        margin: .3rem 0;
    }

    .exercise-order-item {
        grid-template-columns: auto auto minmax(0, 1fr);
    }

    .exercise-order-buttons {
        grid-column: 2 / -1;
        justify-content: flex-end;
    }

    .question-bank-actions {
        flex-direction: column;
    }

    .question-bank-add-form {
        width: 100%;
        grid-template-columns: 1fr;
    }

    .question-bank-actions > form:last-child,
    .question-bank-actions > form:last-child .btn {
        width: 100%;
    }
}

.exercise-question-actions-single {
    grid-template-columns: 4.5rem;
}

@media (max-width: 479.98px) {
    .exercise-question-actions-wide {
        grid-template-columns: 1fr 1fr;
    }

    .exercise-question-actions-single {
        grid-template-columns: 1fr;
    }
}

/* Student exercise filters and result history */
.exercise-filter-group {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .4rem;
}

.exercise-filter-group .btn {
    min-height: 2.25rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .35rem;
    padding: .35rem .45rem;
    white-space: normal;
    line-height: 1.15;
}

.exercise-filter-group .btn span {
    min-width: 1.4rem;
    padding: .1rem .35rem;
    border-radius: 999px;
    background: rgba(0, 0, 0, .08);
    font-size: .75rem;
}

.exercise-filter-group .btn-check:checked + .btn span {
    background: rgba(255, 255, 255, .22);
}

.student-exercise-card.is-unavailable {
    background: var(--bs-tertiary-bg);
}

.student-exercise-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .45rem;
}

.student-exercise-actions form {
    margin: 0;
}

.student-exercise-actions .btn {
    width: 100%;
    min-height: 2.15rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.exercise-attempt-history-item {
    border-radius: var(--sayyes-card-radius);
    background: var(--bs-body-bg);
}

@media (max-width: 419.98px) {
    .exercise-filter-group,
    .student-exercise-actions {
        grid-template-columns: 1fr;
    }

    .exercise-attempt-history-item > div {
        align-items: flex-start !important;
    }

    .exercise-attempt-history-item > div > div:last-child {
        width: 100%;
        justify-content: space-between;
    }
}

/* Grouped administration navigation */
.admin-nav-groups {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: .6rem;
}

.admin-nav-groups > .dropdown,
.admin-nav-groups .admin-nav-button {
    width: 100%;
}

.admin-nav-groups .admin-nav-button {
    min-height: 2.35rem;
    display: inline-flex;
    align-items: center;
    justify-content: space-between;
    gap: .6rem;
    padding-inline: .8rem;
    font-weight: 600;
    white-space: nowrap;
}

.admin-nav-dropdown-menu {
    min-width: 100%;
    padding: .35rem;
    border-radius: var(--sayyes-control-radius);
    box-shadow: 0 .5rem 1.25rem rgba(0, 0, 0, .12);
}

.admin-nav-dropdown-menu .dropdown-item {
    padding: .5rem .65rem;
    border-radius: .3rem;
    color: var(--bs-body-color);
}

.admin-nav-dropdown-menu .dropdown-item:hover,
.admin-nav-dropdown-menu .dropdown-item:focus {
    background: var(--bs-secondary-bg);
    color: var(--bs-body-color);
}

.admin-nav-dropdown-menu .dropdown-item.active,
.admin-nav-dropdown-menu .dropdown-item.active:hover,
.admin-nav-dropdown-menu .dropdown-item.active:focus,
.admin-nav-dropdown-menu .dropdown-item:active {
    background: var(--bs-dark);
    color: #fff;
}

@media (max-width: 991.98px) {
    .admin-nav-groups {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 575.98px) {
    .admin-nav-groups {
        grid-template-columns: 1fr;
    }
}

/* Appointment reasons */
.appointment-type-actions {
    grid-template-columns: minmax(5rem, auto) 5.25rem 6.5rem;
}

.appointment-reason-actions {
    display: grid;
    grid-template-columns: minmax(9.75rem, auto) 5.25rem 6.5rem;
    align-items: center;
    gap: .45rem;
    flex: 0 0 auto;
}

.appointment-reason-actions .badge,
.appointment-reason-actions .btn {
    min-height: 2rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: .35rem;
    white-space: nowrap;
}

.appointment-reason-actions .btn,
.appointment-reason-actions form,
.appointment-reason-actions form .btn {
    width: 100%;
}

.appointment-reason-actions form {
    margin: 0;
}

@media (max-width: 1199.98px) {
    .appointment-type-actions {
        grid-template-columns: 1fr 1fr;
        width: min(100%, 18rem);
    }

    .appointment-type-actions .appointment-type-badges {
        grid-column: 1 / -1;
        justify-content: flex-start;
    }
}

@media (max-width: 991.98px) {
    .appointment-reason-actions {
        grid-template-columns: 1fr 1fr;
        width: min(100%, 18rem);
    }

    .appointment-reason-actions .appointment-type-badges {
        grid-column: 1 / -1;
        justify-content: flex-start;
    }
}

@media (max-width: 767.98px) {
    .appointment-reason-actions {
        width: 100%;
    }
}

@media (max-width: 419.98px) {
    .appointment-type-actions,
    .appointment-reason-actions {
        grid-template-columns: 1fr;
    }

    .appointment-type-actions .appointment-type-badges,
    .appointment-reason-actions .appointment-type-badges {
        grid-column: 1;
        flex-wrap: wrap;
    }
}


/* Public contact footer */
.site-footer {
    color: var(--bs-body-color);
}

.site-footer-brand {
    display: inline-flex;
    align-items: center;
    gap: .9rem;
    color: inherit;
    text-decoration: none;
}

.site-footer-brand:hover {
    color: var(--bs-primary);
}

.site-footer-logo {
    width: 72px;
    height: 72px;
    object-fit: contain;
    flex: 0 0 auto;
}

.site-footer-brand span {
    display: grid;
    gap: .15rem;
}

.site-footer-brand strong {
    font-size: 1.2rem;
}

.site-footer-brand small {
    color: var(--bs-secondary-color);
}

.site-footer-heading {
    margin-bottom: .8rem;
    font-size: .95rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
}

.site-footer-contact,
.site-footer-links {
    display: grid;
    gap: .55rem;
    font-size: .925rem;
}

.site-footer-contact > div {
    display: grid;
    gap: .08rem;
}

.site-footer-label {
    color: var(--bs-secondary-color);
    font-size: .78rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .025em;
}

.site-footer a {
    color: var(--bs-body-color);
    text-decoration: none;
}

.site-footer a:hover {
    color: var(--bs-primary);
    text-decoration: underline;
}

.site-footer-links a {
    width: fit-content;
}

.site-footer-bottom {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    margin-top: 1.5rem;
    padding-top: 1rem;
    border-top: 1px solid var(--bs-border-color);
    color: var(--bs-secondary-color);
    font-size: .82rem;
}

@media (max-width: 575.98px) {
    .site-footer-logo {
        width: 58px;
        height: 58px;
    }

    .site-footer-bottom {
        flex-direction: column;
        gap: .25rem;
    }
}

/* Compact public footer */
.site-footer > .container {
    padding-top: 1rem !important;
    padding-bottom: .65rem !important;
}

.site-footer .row {
    --bs-gutter-y: .75rem;
    align-items: flex-start;
}

.site-footer-logo {
    width: 52px;
    height: 52px;
}

.site-footer-brand {
    gap: .65rem;
}

.site-footer-brand strong {
    font-size: 1.05rem;
}

.site-footer-brand small {
    font-size: .82rem;
}

.site-footer-heading {
    margin-bottom: .4rem;
    font-size: .82rem;
}

.site-footer-contact,
.site-footer-links {
    gap: .3rem .9rem;
    font-size: .86rem;
}

.site-footer-contact > div {
    gap: 0;
}

.site-footer-label {
    font-size: .7rem;
}

.site-footer-bottom {
    margin-top: .75rem;
    padding-top: .55rem;
}

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

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

@media (max-width: 575.98px) {
    .site-footer > .container {
        padding-top: 1rem !important;
        padding-bottom: .75rem !important;
    }

    .site-footer-logo {
        width: 48px;
        height: 48px;
    }
}


/* Footer contact columns: remove empty grid-row gaps */
.site-footer-contact {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .9rem;
}

.site-footer-contact-column {
    display: flex;
    flex-direction: column;
    gap: .45rem;
    min-width: 0;
}

.site-footer-contact-item {
    display: grid;
    gap: 0;
}

.site-footer-phone-list {
    display: grid;
    gap: .08rem;
}

@media (max-width: 575.98px) {
    .site-footer-contact {
        grid-template-columns: 1fr;
        gap: .45rem;
    }
}

/* Department layer */
.public-nav-lepsi {
    background: #6f42c1;
    border-color: #6f42c1;
    color: #fff;
}
.public-nav-lepsi:hover,
.public-nav-lepsi:focus {
    background: #59359b;
    border-color: #59359b;
    color: #fff;
}
.department-context-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    padding: .75rem 1rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--sayyes-card-radius);
    background: #fff;
    margin-bottom: 1rem;
}
.workspace-context-controls {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: .65rem;
    margin-left: auto;
}
.department-selector {
    margin-left: 0;
}
.department-selector-button {
    min-width: 12rem;
    display: inline-flex;
    align-items: center;
    justify-content: space-between;
    gap: .6rem;
    background: #fff;
}
.department-selector-label {
    color: var(--bs-secondary-color);
    font-weight: 400;
}
.school-year-context-selector {
    min-width: 13rem;
}
.school-year-context-select {
    min-width: 13rem;
    background-color: #fff;
    font-weight: 600;
}
.department-selector-menu {
    min-width: 12rem;
    padding: .35rem;
    border-radius: var(--sayyes-control-radius);
    box-shadow: 0 .5rem 1.25rem rgba(0, 0, 0, .12);
}
.department-selector-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .55rem .7rem;
    border-radius: .3rem;
}
.department-selector-item.active,
.department-selector-item.active:hover,
.department-selector-item.active:focus {
    background: var(--bs-dark);
    color: #fff;
}
.department-selector-check {
    font-weight: 800;
}
@media (max-width: 575.98px) {
    .department-context-bar {
        align-items: stretch;
    }
    .workspace-context-title,
    .workspace-context-controls,
    .department-selector,
    .department-selector-button,
    .school-year-context-selector,
    .school-year-context-select {
        width: 100%;
    }
}
.site-footer-lepsi-mark,
.lepsi-mark-large {
    display: inline-grid;
    place-items: center;
    font-weight: 800;
    color: #6f42c1;
    border: 2px solid currentColor;
    border-radius: .65rem;
}
.site-footer-lepsi-mark {
    width: 3.4rem;
    height: 3.4rem;
    font-size: 1.25rem;
}
.lepsi-mark-large {
    width: 6rem;
    height: 6rem;
    font-size: 2.2rem;
}
.lepsi-hero {
    padding: 2rem;
    border-radius: var(--sayyes-card-radius);
}
.lepsi-service-list {
    display: grid;
    gap: .75rem;
}
.lepsi-service-list > div {
    padding: 1rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--sayyes-control-radius);
    background: var(--bs-tertiary-bg);
    font-weight: 600;
}
@media (min-width: 768px) {
    .lepsi-hero { padding: 3rem; }
}


/* Central Say Yes! / ΛΕΨ landing page */
.portal-hero {
    padding: 2rem;
    border-radius: var(--sayyes-card-radius);
}

.portal-logo {
    width: min(100%, 220px);
    max-height: 240px;
    object-fit: contain;
}

.portal-choice-row {
    align-items: stretch;
}

.portal-choice-card {
    position: relative;
    overflow: hidden;
    border: 1px solid var(--bs-border-color) !important;
}

.portal-choice-card::before {
    content: "";
    position: absolute;
    inset: 0 0 auto;
    height: .32rem;
}

.portal-choice-school::before {
    background: var(--bs-primary);
}

.portal-choice-leps::before {
    background: #6f42c1;
}

.portal-choice-label {
    color: var(--bs-secondary-color);
    font-size: .78rem;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.portal-feature-list {
    display: grid;
    gap: .45rem;
    padding-left: 1.2rem;
}

.btn-leps {
    background: #6f42c1;
    border-color: #6f42c1;
    color: #fff;
}

.btn-leps:hover,
.btn-leps:focus {
    background: #59359b;
    border-color: #59359b;
    color: #fff;
}

.btn-outline-leps {
    border-color: #6f42c1;
    color: #6f42c1;
}

.btn-outline-leps:hover,
.btn-outline-leps:focus {
    background: #6f42c1;
    border-color: #6f42c1;
    color: #fff;
}

.public-nav-home {
    background: #495057;
    border-color: #495057;
    color: #fff;
}

.public-nav-home:hover,
.public-nav-home:focus {
    background: #343a40;
    border-color: #343a40;
    color: #fff;
}

.public-nav-school {
    background: #0d6efd;
    border-color: #0d6efd;
    color: #fff;
}

.public-nav-school:hover,
.public-nav-school:focus {
    background: #0b5ed7;
    border-color: #0a58ca;
    color: #fff;
}

@media (min-width: 768px) {
    .portal-hero {
        padding: 2.5rem;
    }
}


/* Say Yes! umbrella brand and department footer */
.site-footer-departments {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .45rem;
    margin-top: .65rem;
}

.site-footer-department {
    display: flex;
    align-items: center;
    gap: .45rem;
    min-width: 0;
    padding: .45rem .55rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--sayyes-control-radius);
    background: var(--bs-body-bg);
    text-decoration: none !important;
}

.site-footer-department:hover {
    background: var(--bs-tertiary-bg);
    border-color: currentColor;
}

.site-footer-department-icon {
    width: 2rem;
    height: 2rem;
    display: inline-grid;
    place-items: center;
    flex: 0 0 auto;
    border-radius: .4rem;
    font-size: .72rem;
    font-weight: 800;
}


.site-footer-department-school .site-footer-department-icon {
    background: var(--bs-primary-bg-subtle);
    color: var(--bs-primary-text-emphasis);
}

.site-footer-department-leps .site-footer-department-icon {
    border: 1px solid #6f42c1;
    color: #6f42c1;
}

.site-footer-department > span:last-child {
    display: grid;
    min-width: 0;
    line-height: 1.1;
}

.site-footer-department strong {
    font-size: .78rem;
}

.site-footer-department small {
    margin-top: .12rem;
    overflow: hidden;
    color: var(--bs-secondary-color);
    font-size: .68rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

@media (max-width: 575.98px) {
    .site-footer-departments {
        grid-template-columns: 1fr;
    }
}

/* Footer quick links: one vertical column only */
.site-footer-links {
    grid-template-columns: 1fr !important;
}

/* Google Classroom */
.classroom-connection-details dt,
.classroom-connection-details dd {
    padding-top: .25rem;
    padding-bottom: .25rem;
    margin-bottom: 0;
}

.classroom-course-row {
    background: var(--bs-body-bg);
}

.classroom-course-actions {
    min-width: min(100%, 23rem);
}

.classroom-course-actions form {
    margin: 0;
}

.classroom-activity-entry .exercise-meta {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem 1rem;
    color: var(--bs-secondary-color);
    font-size: .925rem;
}

.classroom-activity-entry .exercise-meta span:not(:last-child)::after {
    content: "·";
    margin-left: 1rem;
}

@media (max-width: 575.98px) {
    .classroom-course-actions {
        width: 100%;
        min-width: 0;
    }

    .classroom-course-actions .d-flex {
        flex-direction: column;
    }

    .classroom-activity-entry .exercise-meta {
        display: grid;
        gap: .35rem;
    }

    .classroom-activity-entry .exercise-meta span::after {
        display: none;
    }
}

.public-nav-presentations {
    background-color: #8b3a62;
    border-color: #8b3a62;
    color: #fff !important;
}

.public-nav-presentations:hover,
.public-nav-presentations:focus,
.public-nav-presentations:active {
    background-color: #71304f !important;
    border-color: #672b48 !important;
    color: #fff !important;
}

/* Events and presentations */
.public-content-card {
    transition: transform .18s ease, box-shadow .18s ease;
}

.public-content-card:hover {
    transform: translateY(-2px);
}

.public-content-card-past {
    opacity: .88;
}

.public-content-card-image,
.featured-public-content-image {
    width: 100%;
    height: 13rem;
    object-fit: cover;
}

.public-content-detail-image {
    width: 100%;
    max-height: 34rem;
    object-fit: cover;
}

.public-content-meta dt,
.public-content-meta dd {
    padding-top: .45rem;
    padding-bottom: .45rem;
    margin-bottom: 0;
}

.public-content-description {
    font-size: 1.05rem;
    line-height: 1.75;
}

.public-content-video,
.public-content-resources {
    background: var(--bs-tertiary-bg);
}

.public-content-admin-image-wrap {
    padding: .75rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    background: var(--bs-tertiary-bg);
}

.public-content-admin-image {
    display: block;
    width: 100%;
    max-height: 15rem;
    object-fit: cover;
    border-radius: calc(var(--bs-border-radius) - .15rem);
}

.featured-public-content-card {
    overflow: hidden;
}

.public-content-presentation-badge {
    background: #8b3a62;
    color: #fff;
}

@media (max-width: 575.98px) {
    .public-content-card-image,
    .featured-public-content-image {
        height: 11rem;
    }

    .public-content-detail-image {
        max-height: 22rem;
    }
}

/* Yesland public events prototype — dimensional island study */
.yesland-events-stage {
    position: relative;
    isolation: isolate;
    margin: -1.5rem calc(50% - 50vw) -1.5rem;
    padding: 3rem max(1rem, calc((100vw - 1320px) / 2 + 1rem)) 5rem;
    min-height: 68vh;
    overflow: hidden;
    background:
        radial-gradient(ellipse 72% 46% at 15% 0%, rgba(221,255,250,.72), transparent 66%),
        radial-gradient(ellipse 58% 48% at 92% 92%, rgba(13,143,159,.20), transparent 72%),
        radial-gradient(ellipse 46% 36% at 3% 88%, rgba(27,174,182,.15), transparent 75%),
        linear-gradient(150deg, #a5ebe3 0%, #78d8d4 39%, #58c8ca 70%, #43b8c1 100%);
}

.yesland-events-stage::before,
.yesland-events-stage::after {
    content: "";
    position: absolute;
    z-index: -1;
    pointer-events: none;
}

/* Soft underwater light and depth; no visible closed rings. */
.yesland-events-stage::before {
    inset: -14%;
    opacity: .48;
    background:
        radial-gradient(ellipse 42% 20% at 12% 20%, rgba(235,255,252,.38), transparent 70%),
        radial-gradient(ellipse 48% 22% at 72% 18%, rgba(233,255,252,.30), transparent 72%),
        radial-gradient(ellipse 42% 20% at 35% 70%, rgba(232,255,252,.24), transparent 72%),
        radial-gradient(ellipse 36% 18% at 92% 78%, rgba(228,255,251,.22), transparent 74%),
        radial-gradient(ellipse 54% 34% at 48% 108%, rgba(8,139,155,.18), transparent 74%);
    filter: blur(16px);
    transform: translate3d(-1%, -.5%, 0) scale(1.08);
    animation: yesland-water-current 30s ease-in-out infinite alternate;
}

/* Large SVG caustics built from open sine-like curves. */
.yesland-events-stage::after {
    inset: -12%;
    opacity: .28;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1200' height='680' viewBox='0 0 1200 680'%3E%3Cg fill='none' stroke='%23effffd' stroke-linecap='round'%3E%3Cpath opacity='.50' stroke-width='3.2' d='M-80 86 C35 18 145 154 270 84 S510 20 640 94 S892 151 1025 78 S1245 34 1310 92'/%3E%3Cpath opacity='.34' stroke-width='2.4' d='M-120 180 C12 112 118 244 255 176 S500 112 635 185 S880 245 1010 174 S1215 118 1320 190'/%3E%3Cpath opacity='.42' stroke-width='2.8' d='M-90 298 C42 224 162 360 300 291 S555 228 690 303 S930 355 1065 286 S1245 246 1310 304'/%3E%3Cpath opacity='.28' stroke-width='2.2' d='M-130 414 C15 342 130 482 280 408 S540 349 682 420 S925 474 1070 402 S1250 360 1320 425'/%3E%3Cpath opacity='.40' stroke-width='3' d='M-100 544 C40 470 160 610 305 537 S560 475 710 550 S950 605 1090 532 S1260 490 1330 551'/%3E%3Cpath opacity='.22' stroke-width='1.8' d='M80 -30 C145 35 205 5 274 58 S410 94 482 44 S628 -2 698 52 S838 96 912 42 S1060 0 1130 54'/%3E%3Cpath opacity='.24' stroke-width='1.9' d='M22 235 C92 292 150 264 220 317 S360 352 430 302 S570 262 642 314 S790 354 858 300 S1000 264 1072 318'/%3E%3Cpath opacity='.20' stroke-width='1.7' d='M100 470 C170 528 230 498 300 552 S445 588 516 536 S656 500 728 552 S870 590 944 536 S1084 500 1155 552'/%3E%3C/g%3E%3C/svg%3E");
    background-repeat: repeat;
    background-size: 1200px 680px;
    filter: blur(.35px);
    transform: translate3d(-2%, -1%, 0) scale(1.06);
    animation: yesland-water-caustics 34s ease-in-out infinite alternate;
}

@keyframes yesland-water-current {
    from { transform: translate3d(-1.2%, -.7%, 0) scale(1.08); }
    to   { transform: translate3d(1.3%, .8%, 0) scale(1.12); }
}

@keyframes yesland-water-caustics {
    from { transform: translate3d(-2%, -1%, 0) scale(1.06); opacity: .24; }
    to   { transform: translate3d(1.8%, 1.2%, 0) scale(1.09); opacity: .32; }
}

@media (prefers-reduced-motion: reduce) {
    .yesland-events-stage::before,
    .yesland-events-stage::after {
        animation: none;
    }
}

/* v0.19.7 — Google sign-in for Classroom-imported student accounts */
.student-google-login {
    padding: .35rem 0 .15rem;
}

.student-google-login .g_id_signin {
    min-height: 44px;
    max-width: 100%;
}

.login-method-divider {
    display: flex;
    align-items: center;
    gap: .75rem;
    margin: 1.25rem 0;
    color: #607787;
    font-size: .82rem;
    font-weight: 700;
    text-align: center;
}

.login-method-divider::before,
.login-method-divider::after {
    content: '';
    height: 1px;
    flex: 1 1 auto;
    background: rgba(62, 90, 105, .22);
}

.login-method-divider span {
    max-width: 14rem;
}

.yesland-events-stage > .d-flex:first-child {
    position: relative;
    z-index: 2;
    color: #153247;
}

.yesland-events-stage > .d-flex:first-child .text-secondary {
    color: rgba(21, 50, 71, .76) !important;
}

.yesland-island {
    position: relative;
    z-index: 1;
    border: 1px solid rgba(188, 137, 61, .42);
    background:
        radial-gradient(ellipse at 27% 12%, rgba(255,255,255,.96) 0%, rgba(255,255,255,.45) 16%, transparent 37%),
        radial-gradient(ellipse at 78% 78%, rgba(214,154,65,.25) 0%, transparent 38%),
        radial-gradient(ellipse at 54% 44%, rgba(255,246,214,.75) 0%, transparent 58%),
        linear-gradient(145deg, #fff8e8 0%, #fbeac0 50%, #eccd8e 100%);
    /* Layered lower shadows create the visual thickness of a pebble-like island. */
    box-shadow:
        0 .18rem .18rem rgba(255,255,255,.72) inset,
        .22rem .35rem .65rem rgba(255,255,255,.52) inset,
        -.34rem -.55rem .9rem rgba(170,111,41,.22) inset,
        0 -.48rem .26rem rgba(167,111,43,.16) inset,
        0 .28rem 0 #dfbd79,
        0 .58rem 0 #cfa65d,
        0 .76rem .24rem rgba(104,68,27,.30),
        0 1.45rem 2.35rem rgba(16,92,101,.35),
        0 2.2rem 3.7rem rgba(7,79,88,.16);
    overflow: hidden;
    filter: saturate(1.02);
}

/* Bevel highlight and softly darkened perimeter make the surface feel inflated. */
.yesland-island::before,
.yesland-island::after {
    content: "";
    position: absolute;
    pointer-events: none;
}

.yesland-island::before {
    z-index: 1;
    inset: .35rem .45rem .52rem;
    border-radius: inherit;
    box-shadow:
        inset .45rem .55rem .75rem rgba(255,255,255,.38),
        inset -.52rem -.62rem 1rem rgba(167,105,35,.13);
}

.yesland-island::after {
    z-index: 1;
    left: 7%;
    right: 12%;
    top: .45rem;
    height: 34%;
    border-radius: 50%;
    background: linear-gradient(180deg, rgba(255,255,255,.33), transparent);
    filter: blur(.55rem);
    opacity: .72;
}

.yesland-filter-island {
    width: min(100%, 1120px);
    margin-inline: auto;
    padding: 1.65rem 2rem 1.9rem;
    border-radius: 4.9rem 6.8rem 4.35rem 6.15rem / 3.2rem 4.7rem 3.95rem 5rem;
    transform: rotate(-.16deg);
}

.yesland-empty-island {
    width: min(100%, 900px);
    min-height: 230px;
    margin: 1.7rem auto 0;
    padding: 4.7rem 4rem 4.55rem;
    display: grid;
    place-items: center;
    border-radius: 7.6rem 5.5rem 8.6rem 6.1rem / 4.6rem 6.7rem 5rem 7.1rem;
    transform: rotate(.18deg);
}

.yesland-island-content {
    position: relative;
    z-index: 4;
    transform: rotate(.16deg);
}

.yesland-empty-island .yesland-island-content {
    transform: rotate(-.18deg);
}

.yesland-island-texture {
    position: absolute;
    inset: 0;
    z-index: 2;
    opacity: .30;
    pointer-events: none;
    background-image:
        radial-gradient(circle, rgba(139,92,31,.25) 0 .65px, transparent .95px),
        radial-gradient(circle, rgba(255,255,255,.88) 0 .7px, transparent 1.05px),
        radial-gradient(ellipse at center, rgba(191,129,44,.09) 0 1px, transparent 1.8px);
    background-position: 0 0, 9px 11px, 4px 7px;
    background-size: 18px 18px, 25px 25px, 31px 23px;
    mix-blend-mode: multiply;
}

.yesland-island .form-label {
    color: #18354a;
    font-weight: 700;
}

.yesland-island .form-select,
.yesland-island .form-control {
    min-height: 2.7rem;
    border: 1px solid rgba(74, 103, 112, .24);
    border-radius: 1.45rem 1.1rem 1.55rem 1.2rem / 1.1rem 1.45rem 1.15rem 1.35rem;
    background-color: rgba(255,255,255,.84);
    box-shadow: inset 0 1px 2px rgba(38,69,74,.08), 0 2px 0 rgba(255,255,255,.5);
}

.yesland-island .btn-primary {
    min-height: 2.7rem;
    border: 1px solid #1787b5;
    border-radius: 1.8rem 1.35rem 1.7rem 1.45rem / 1.4rem 1.75rem 1.35rem 1.65rem;
    background: linear-gradient(180deg, #29b5dd, #1599cb);
    box-shadow: 0 .27rem 0 #087ba9, 0 .5rem .9rem rgba(9,91,123,.2);
    font-weight: 800;
    text-shadow: 0 1px 0 rgba(0,0,0,.12);
}

.yesland-island .btn-primary:hover,
.yesland-island .btn-primary:focus {
    transform: translateY(-1px);
    background: linear-gradient(180deg, #31bfe6, #169fd1);
    box-shadow: 0 .32rem 0 #087ba9, 0 .62rem 1rem rgba(9,91,123,.24);
}

.yesland-empty-island h2 {
    color: #17364b;
    font-weight: 800;
}

.yesland-empty-island p {
    color: #536c79 !important;
}

.yesland-island-decoration {
    position: absolute;
    z-index: 3;
    pointer-events: none;
}

.yesland-island-decoration-rocks {
    left: 1.75rem;
    bottom: .64rem;
    width: 6.2rem;
    height: 3.1rem;
}

.yesland-island-decoration-rocks::after {
    content: "";
    position: absolute;
    left: -.25rem;
    right: -.15rem;
    bottom: -.16rem;
    height: .58rem;
    border-radius: 50%;
    background: rgba(151,102,38,.22);
    filter: blur(.22rem);
}

.yesland-island-decoration-rocks span {
    position: absolute;
    bottom: 0;
    display: block;
    border-radius: 52% 48% 45% 55% / 58% 57% 43% 42%;
    background:
        radial-gradient(circle at 32% 25%, rgba(255,255,255,.72), transparent 32%),
        linear-gradient(145deg, #dccdaa, #968462 72%);
    box-shadow: inset -.16rem -.18rem .3rem rgba(77,58,31,.22), 0 .2rem .24rem rgba(91,68,35,.22);
}

.yesland-island-decoration-rocks span:nth-child(1) { left: 0; width: 2.2rem; height: 1.45rem; transform: rotate(-10deg); }
.yesland-island-decoration-rocks span:nth-child(2) { left: 1.6rem; width: 2.8rem; height: 1.9rem; transform: rotate(7deg); }
.yesland-island-decoration-rocks span:nth-child(3) { left: 4.05rem; width: 1.65rem; height: 1.15rem; transform: rotate(14deg); }

.yesland-island-decoration-starfish {
    right: 1.85rem;
    bottom: .42rem;
    width: 3.8rem;
    height: 3.8rem;
    filter: drop-shadow(0 .25rem .18rem rgba(116,61,15,.30));
}

.yesland-island-decoration-starfish span,
.yesland-island-decoration-starfish span::before,
.yesland-island-decoration-starfish span::after {
    position: absolute;
    inset: 50% auto auto 50%;
    width: .8rem;
    height: 3.15rem;
    content: "";
    border-radius: 72% 72% 46% 46%;
    background:
        linear-gradient(90deg, rgba(255,196,99,.65), transparent 32%),
        linear-gradient(90deg, #f39b45, #ef7f28 60%, #c85d19);
    box-shadow: inset -.12rem -.12rem .18rem rgba(130,55,10,.22);
    transform-origin: 50% 50%;
}

.yesland-island-decoration-starfish span { transform: translate(-50%,-50%) rotate(0deg); }
.yesland-island-decoration-starfish span::before { transform: translate(-50%,-50%) rotate(72deg); }
.yesland-island-decoration-starfish span::after { transform: translate(-50%,-50%) rotate(144deg); }

.yesland-island-decoration-grass {
    left: 2rem;
    bottom: .72rem;
    width: 4.2rem;
    height: 4.2rem;
}

.yesland-island-decoration-grass span {
    position: absolute;
    left: 50%;
    bottom: .35rem;
    width: .65rem;
    height: 3.3rem;
    border-radius: 100% 0 100% 0;
    background: linear-gradient(90deg, #2f8635, #75bd3e 58%, #a0d256);
    transform-origin: 50% 100%;
    box-shadow: inset .12rem 0 rgba(255,255,255,.32), .1rem .15rem .12rem rgba(52,93,31,.18);
}
.yesland-island-decoration-grass span:nth-child(1) { transform: translateX(-50%) rotate(-28deg); }
.yesland-island-decoration-grass span:nth-child(2) { transform: translateX(-50%) rotate(-4deg); height: 3.8rem; }
.yesland-island-decoration-grass span:nth-child(3) { transform: translateX(-50%) rotate(27deg); height: 3rem; }

.yesland-island-decoration-shells {
    right: 2.3rem;
    bottom: .86rem;
    width: 5.5rem;
    height: 2.4rem;
}

.yesland-island-decoration-shells span {
    position: absolute;
    bottom: 0;
    border-radius: 72% 72% 48% 48%;
    background:
        radial-gradient(circle at 35% 25%, rgba(255,255,255,.50), transparent 34%),
        repeating-linear-gradient(90deg, #f5b56d 0 .18rem, #e98d43 .18rem .3rem);
    box-shadow: inset -.1rem -.12rem .18rem rgba(157,70,18,.18), 0 .18rem .22rem rgba(111,67,25,.20);
}
.yesland-island-decoration-shells span:nth-child(1) { left: 0; width: 1.6rem; height: 1.15rem; transform: rotate(-12deg); }
.yesland-island-decoration-shells span:nth-child(2) { left: 1.9rem; width: 1.25rem; height: .9rem; transform: rotate(8deg); }
.yesland-island-decoration-shells span:nth-child(3) { left: 3.45rem; width: 1.75rem; height: 1.25rem; transform: rotate(18deg); }

@media (prefers-reduced-motion: reduce) {
    .yesland-events-stage::before,
    .yesland-events-stage::after {
        animation: none;
    }
}

@media (max-width: 767.98px) {
    .yesland-events-stage {
        margin-top: -1rem;
        padding-top: 2rem;
        padding-bottom: 3.5rem;
    }

    .yesland-filter-island {
        padding: 1.65rem 1.35rem 3.8rem;
        border-radius: 3.6rem 5rem 3.8rem 4.6rem / 3rem 3.8rem 3.4rem 4.2rem;
    }

    .yesland-empty-island {
        min-height: 260px;
        padding: 4.8rem 1.5rem 4.5rem;
        border-radius: 4.6rem 3.7rem 5.4rem 3.9rem / 3.4rem 4.8rem 3.6rem 5rem;
    }

    .yesland-island-decoration-starfish { right: 1rem; }
    .yesland-island-decoration-rocks { left: 1rem; }
}

/* Official Say Yes! typography. Sizes, colours and layout remain unchanged. */
:root {
    --bs-body-font-family: "Comfortaa", sans-serif;
}

body,
button,
input,
optgroup,
select,
textarea {
    font-family: "Comfortaa", sans-serif;
}

/* Footer paired quick links */
.site-footer-link-pair {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .35rem 1rem;
}

.site-footer-link-pair a {
    width: fit-content;
}

/* v0.15.0 — Public Yesland: English School */
.yesland-school-stage {
    position: relative;
    isolation: isolate;
    margin: -1.5rem calc(50% - 50vw) -3rem;
    padding: 3rem max(1rem, calc((100vw - 1320px) / 2 + 1rem)) 5rem;
    min-height: 68vh;
    overflow: hidden;
    background:
        radial-gradient(ellipse 72% 46% at 15% 0%, rgba(221,255,250,.72), transparent 66%),
        radial-gradient(ellipse 58% 48% at 92% 92%, rgba(13,143,159,.20), transparent 72%),
        radial-gradient(ellipse 46% 36% at 3% 88%, rgba(27,174,182,.15), transparent 75%),
        linear-gradient(150deg, #a5ebe3 0%, #78d8d4 39%, #58c8ca 70%, #43b8c1 100%);
}

.yesland-school-stage::before,
.yesland-school-stage::after {
    content: "";
    position: absolute;
    z-index: -1;
    pointer-events: none;
}

.yesland-school-stage::before {
    inset: -14%;
    opacity: .48;
    background:
        radial-gradient(ellipse 42% 20% at 12% 20%, rgba(235,255,252,.38), transparent 70%),
        radial-gradient(ellipse 48% 22% at 72% 18%, rgba(233,255,252,.30), transparent 72%),
        radial-gradient(ellipse 42% 20% at 35% 70%, rgba(232,255,252,.24), transparent 72%),
        radial-gradient(ellipse 36% 18% at 92% 78%, rgba(228,255,251,.22), transparent 74%),
        radial-gradient(ellipse 54% 34% at 48% 108%, rgba(8,139,155,.18), transparent 74%);
    filter: blur(16px);
    transform: translate3d(-1%, -.5%, 0) scale(1.08);
    animation: yesland-water-current 30s ease-in-out infinite alternate;
}

.yesland-school-stage::after {
    inset: -12%;
    opacity: .28;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1200' height='680' viewBox='0 0 1200 680'%3E%3Cg fill='none' stroke='%23effffd' stroke-linecap='round'%3E%3Cpath opacity='.50' stroke-width='3.2' d='M-80 86 C35 18 145 154 270 84 S510 20 640 94 S892 151 1025 78 S1245 34 1310 92'/%3E%3Cpath opacity='.34' stroke-width='2.4' d='M-120 180 C12 112 118 244 255 176 S500 112 635 185 S880 245 1010 174 S1215 118 1320 190'/%3E%3Cpath opacity='.42' stroke-width='2.8' d='M-90 298 C42 224 162 360 300 291 S555 228 690 303 S930 355 1065 286 S1245 246 1310 304'/%3E%3Cpath opacity='.28' stroke-width='2.2' d='M-130 414 C15 342 130 482 280 408 S540 349 682 420 S925 474 1070 402 S1250 360 1320 425'/%3E%3Cpath opacity='.40' stroke-width='3' d='M-100 544 C40 470 160 610 305 537 S560 475 710 550 S950 605 1090 532 S1260 490 1330 551'/%3E%3C/g%3E%3C/svg%3E");
    background-repeat: repeat;
    background-size: 1200px 680px;
    filter: blur(.35px);
    transform: translate3d(-2%, -1%, 0) scale(1.06);
    animation: yesland-water-caustics 34s ease-in-out infinite alternate;
}

.yesland-school-hero {
    width: min(100%, 1120px);
    margin-inline: auto;
    padding: 3.6rem 4rem 4.2rem;
    border-radius: 7.4rem 5.6rem 8.2rem 6.4rem / 5.1rem 7rem 5.4rem 6.6rem;
    transform: rotate(-.12deg);
}

.yesland-school-hero .yesland-island-content { transform: rotate(.12deg); }
.yesland-school-eyebrow { color: #16789b; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.yesland-school-hero h1 { color: #17364b; }
.yesland-school-hero .lead { color: #536c79; max-width: 42rem; }
.yesland-school-logo {
    width: auto;
    max-width: 100%;
    max-height: 21rem;
    filter: drop-shadow(0 .8rem 1rem rgba(50,91,86,.18));
}

.yesland-school-actions .btn,
.yesland-school-section-heading .btn,
.yesland-school-content-island .btn {
    border-radius: 1.6rem 1.25rem 1.55rem 1.3rem / 1.25rem 1.55rem 1.2rem 1.45rem;
    font-weight: 800;
}

.yesland-school-section-heading { color: #153247; position: relative; z-index: 2; }
.yesland-school-section-heading p { color: rgba(21,50,71,.76); }

.yesland-school-content-island {
    padding: 1.15rem;
    border-radius: 4.8rem 3.8rem 5.4rem 4rem / 3.8rem 5rem 3.9rem 4.7rem;
    transform: rotate(.12deg);
}

.yesland-school-content-island:nth-child(even) { transform: rotate(-.12deg); }
.yesland-school-content-island .yesland-island-content { transform: none; overflow: hidden; border-radius: 3.75rem 2.9rem 4.2rem 3.15rem / 3rem 4rem 3.1rem 3.7rem; }
.yesland-school-featured-image { width: 100%; height: 14rem; object-fit: cover; }
.yesland-school-card-body { padding: 1.6rem 1.5rem 1.75rem; }
.yesland-school-card-body h3 { color: #17364b; font-weight: 800; }
.yesland-school-card-copy { color: #536c79; }

@media (prefers-reduced-motion: reduce) {
    .yesland-school-stage::before,
    .yesland-school-stage::after { animation: none; }
}

@media (max-width: 767.98px) {
    .yesland-school-stage { margin-top: -1rem; padding-top: 2rem; padding-bottom: 3.5rem; }
    .yesland-school-hero { padding: 3rem 1.5rem 4.7rem; border-radius: 4.8rem 3.8rem 5.7rem 4.1rem / 3.7rem 5rem 3.9rem 5.2rem; }
    .yesland-school-logo {
        max-height: 15rem;
    }
    .yesland-school-actions .btn { width: 100%; }
    .yesland-school-section-heading > div:last-child { width: 100%; }
    .yesland-school-section-heading .btn { flex: 1 1 auto; }
    .yesland-school-featured-image { height: 11rem; }
}


/* v0.15.0 — Public Yesland: sand navbar and footer */
.yesland-public-navbar,
.site-footer {
    background: #fbeac0 !important;
    border-color: rgba(188, 137, 61, .38) !important;
}

.yesland-public-navbar {
    box-shadow: 0 .3rem .9rem rgba(91, 90, 51, .12);
}

.site-footer {
    box-shadow: 0 -.35rem 1.1rem rgba(74, 102, 83, .12);
}

.yesland-public-navbar .navbar-brand,
.site-footer,
.site-footer a {
    color: #17364b;
}

.yesland-public-navbar .navbar-toggler {
    border-color: rgba(111, 82, 38, .30);
}

.site-footer-bottom {
    border-top-color: rgba(188, 137, 61, .32);
}


/* v0.15.0 — Public Yesland: full-width seamless sea background */
body.yesland-public-page {
    /* Full-bleed Yesland sections use viewport units. Clip their fractional
       desktop overflow so they never create a horizontal page scrollbar. */
    overflow-x: hidden;
    overflow-x: clip;
    background-color: #58c8ca;
    background-image:
        url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1200' height='1200' viewBox='0 0 1200 1200' preserveAspectRatio='none'%3E%3Cg fill='none' stroke='%23effffd' stroke-linecap='round'%3E%3Cpath opacity='.30' stroke-width='3.2' d='M-80 105 C35 25 145 180 270 100 S510 25 640 112 S892 180 1025 92 S1245 42 1310 108'/%3E%3Cpath opacity='.20' stroke-width='2.4' d='M-120 300 C12 220 118 375 255 294 S500 220 635 308 S880 380 1010 292 S1215 225 1320 312'/%3E%3Cpath opacity='.26' stroke-width='2.8' d='M-90 520 C42 430 162 598 300 510 S555 432 690 525 S930 590 1065 500 S1245 450 1310 526'/%3E%3Cpath opacity='.18' stroke-width='2.2' d='M-130 760 C15 670 130 840 280 748 S540 675 682 765 S925 832 1070 742 S1250 690 1320 770'/%3E%3Cpath opacity='.24' stroke-width='3' d='M-100 1010 C40 920 160 1090 305 1000 S560 924 710 1018 S950 1085 1090 992 S1260 935 1330 1018'/%3E%3C/g%3E%3C/svg%3E"),
        radial-gradient(ellipse 72% 46% at 15% 0%, rgba(221,255,250,.72), transparent 66%),
        radial-gradient(ellipse 58% 48% at 92% 92%, rgba(13,143,159,.20), transparent 72%),
        radial-gradient(ellipse 46% 36% at 3% 88%, rgba(27,174,182,.15), transparent 75%),
        linear-gradient(150deg, #a5ebe3 0%, #78d8d4 39%, #58c8ca 70%, #43b8c1 100%);
    background-position: center top, center, center, center, center;
    background-repeat: no-repeat, no-repeat, no-repeat, no-repeat, no-repeat;
    background-size: 100% 100%, cover, cover, cover, cover;
    background-attachment: scroll;
}

.yesland-public-main,
.yesland-school-stage {
    background: transparent;
}

/* The shared public-page sea supplies the waves on every page. */
.yesland-public-page .yesland-school-stage::before,
.yesland-public-page .yesland-school-stage::after {
    content: none;
}

/* v0.15.0 — Public Yesland: shared treatment for every public page */
.yesland-public-page .yesland-public-main {
    position: relative;
    z-index: 1;
}

/* Public headings remain directly over the sea. */
.yesland-public-page .yesland-public-main > h1,
.yesland-public-page .yesland-public-main > .d-flex:first-child,
.yesland-public-page .yesland-public-main > .row:first-child {
    color: #17364b;
}

.yesland-public-page .yesland-public-main .text-secondary {
    color: rgba(23, 54, 75, .74) !important;
}

/* Remove the generic Bootstrap-panel appearance from all public surfaces. */
.yesland-public-page .card,
.yesland-public-page .home-hero,
.yesland-public-page .class-availability-hero,
.yesland-public-page form.card,
.yesland-public-page .public-content-empty:not(.yesland-island),
.yesland-public-page .alert {
    border: 1px solid rgba(188, 137, 61, .42) !important;
    border-radius: 3.4rem 2.65rem 3.8rem 2.9rem / 2.55rem 3.4rem 2.7rem 3.15rem !important;
    background:
        radial-gradient(circle, rgba(139,92,31,.12) 0 .65px, transparent .95px) 0 0 / 18px 18px,
        radial-gradient(circle, rgba(255,255,255,.52) 0 .7px, transparent 1.05px) 9px 11px / 25px 25px,
        radial-gradient(ellipse at 27% 12%, rgba(255,255,255,.94) 0%, rgba(255,255,255,.42) 16%, transparent 37%),
        radial-gradient(ellipse at 78% 78%, rgba(214,154,65,.20) 0%, transparent 38%),
        linear-gradient(145deg, #fff8e8 0%, #fbeac0 52%, #eccd8e 100%) !important;
    box-shadow:
        0 .18rem .18rem rgba(255,255,255,.70) inset,
        .22rem .35rem .65rem rgba(255,255,255,.48) inset,
        -.34rem -.55rem .9rem rgba(170,111,41,.18) inset,
        0 .25rem 0 #dfbd79,
        0 .48rem 0 #cfa65d,
        0 .68rem .22rem rgba(104,68,27,.24),
        0 1.15rem 2rem rgba(16,92,101,.27) !important;
    overflow: hidden;
}

.yesland-public-page .card:nth-of-type(even),
.yesland-public-page .row > [class*="col-"]:nth-child(even) > .card {
    border-radius: 2.8rem 3.7rem 2.65rem 3.9rem / 3.25rem 2.55rem 3.55rem 2.75rem !important;
}

.yesland-public-page .card-header,
.yesland-public-page .card-footer {
    border-color: rgba(188, 137, 61, .28);
    background: rgba(255,255,255,.22);
}

.yesland-public-page .card-body,
.yesland-public-page .home-hero,
.yesland-public-page .class-availability-hero {
    color: #17364b;
}

.yesland-public-page .card h1,
.yesland-public-page .card h2,
.yesland-public-page .card h3,
.yesland-public-page .card h4,
.yesland-public-page .home-hero h1,
.yesland-public-page .class-availability-hero h1 {
    color: #17364b;
    font-weight: 800;
}

/* Forms and account pages become compact island surfaces. */
.yesland-public-page .form-control,
.yesland-public-page .form-select,
.yesland-public-page .input-group-text {
    border-color: rgba(74,103,112,.25);
    border-radius: 1.35rem 1rem 1.45rem 1.1rem / 1rem 1.4rem 1.05rem 1.3rem;
    background-color: rgba(255,255,255,.84);
    box-shadow: inset 0 1px 2px rgba(38,69,74,.08);
}

.yesland-public-page textarea.form-control {
    border-radius: 1.6rem 1.15rem 1.7rem 1.25rem / 1.2rem 1.65rem 1.25rem 1.5rem;
}

.yesland-public-page .form-label,
.yesland-public-page .form-check-label {
    color: #18354a;
    font-weight: 700;
}

/* Public tables stay functional but visually belong to the island surface. */
.yesland-public-page .table {
    --bs-table-bg: transparent;
    --bs-table-striped-bg: rgba(255,255,255,.24);
    --bs-table-hover-bg: rgba(255,255,255,.34);
    color: #17364b;
}

.yesland-public-page .table > :not(caption) > * > * {
    border-bottom-color: rgba(131,96,43,.20);
}

/* Shared organic buttons. Existing department colours are preserved. */
.yesland-public-page .btn {
    border-radius: 1.55rem 1.15rem 1.5rem 1.25rem / 1.15rem 1.5rem 1.1rem 1.4rem;
    font-weight: 800;
}

.yesland-public-page .pagination .page-link {
    margin-inline: .12rem;
    border-color: rgba(95,91,65,.28);
    border-radius: 1rem !important;
    background: rgba(255,248,232,.90);
    color: #17364b;
}

.yesland-public-page .dropdown-menu {
    border-color: rgba(188,137,61,.38);
    border-radius: 1.35rem;
    background: #fff5db;
    box-shadow: 0 .8rem 1.8rem rgba(31,72,76,.20);
    overflow: hidden;
}

/* Images follow the organic surface instead of square Bootstrap geometry. */
.yesland-public-page .public-content-card-image,
.yesland-public-page .featured-public-content-image,
.yesland-public-page .public-content-detail-image {
    border-radius: 2.65rem 2.05rem 1.6rem 2.3rem / 2rem 2.7rem 1.8rem 2.4rem;
}

.yesland-public-page .card-img-top {
    border-top-left-radius: inherit;
    border-top-right-radius: inherit;
}

/* Page-specific public heroes now read as larger islands. */
.yesland-public-page .home-hero,
.yesland-public-page .class-availability-hero {
    padding: 3rem 3.4rem !important;
    border-radius: 6.4rem 4.8rem 7.1rem 5.2rem / 4.4rem 6rem 4.7rem 5.7rem !important;
}

/* Login, password and account surfaces should not become unnecessarily wide. */
.yesland-public-page .row.justify-content-center .card {
    max-width: 100%;
}

/* Fully custom Yesland islands keep the radius declared by their own
   component class. Do not reset it to the parent radius. */

@media (max-width: 767.98px) {
    .yesland-public-page .card,
    .yesland-public-page .home-hero,
    .yesland-public-page .class-availability-hero,
    .yesland-public-page form.card,
    .yesland-public-page .public-content-empty:not(.yesland-island),
    .yesland-public-page .alert {
        border-radius: 2.35rem 1.85rem 2.6rem 2rem / 1.9rem 2.45rem 2rem 2.25rem !important;
    }

    .yesland-public-page .home-hero,
    .yesland-public-page .class-availability-hero {
        padding: 2.2rem 1.4rem !important;
    }

    .yesland-public-page .card-body {
        padding: 1.35rem !important;
    }
}

/* v0.15.0 — Public navbar dropdown contrast */
.yesland-public-navbar .dropdown-menu {
    border: 1px solid rgba(151, 102, 36, .48);
    background: #f4d998;
    box-shadow: 0 .8rem 1.6rem rgba(49, 72, 67, .24);
}

.yesland-public-navbar .dropdown-item {
    color: #17364b;
    background: transparent;
    font-weight: 700;
}

.yesland-public-navbar .dropdown-item:hover,
.yesland-public-navbar .dropdown-item:focus {
    color: #102b3e;
    background: #ffeec4;
}

.yesland-public-navbar .dropdown-item.active,
.yesland-public-navbar .dropdown-item:active {
    color: #fff;
    background: #526b76;
}

.yesland-public-navbar .dropdown-divider {
    border-top-color: rgba(123, 82, 31, .30);
}


/* v0.15.0 — Step 3.1: Public Yesland button system */
.yesland-public-page {
    --yesland-action-school: #2468ad;
    --yesland-action-school-hover: #1d568f;
    --yesland-action-leps: #b65316;
    --yesland-action-leps-hover: #93410f;
    --yesland-action-general: #347a49;
    --yesland-action-general-hover: #28623a;
    --yesland-action-current: var(--yesland-action-general);
    --yesland-action-current-hover: var(--yesland-action-general-hover);
    --yesland-button-pale: rgba(255, 250, 237, .94);
    --yesland-button-text: #17364b;
}

.yesland-public-page.yesland-department-sayyes {
    --yesland-action-current: var(--yesland-action-school);
    --yesland-action-current-hover: var(--yesland-action-school-hover);
}

.yesland-public-page.yesland-department-lepsi {
    --yesland-action-current: var(--yesland-action-leps);
    --yesland-action-current-hover: var(--yesland-action-leps-hover);
}

/* Shared geometry. Compact controls remain compact by design. */
.yesland-public-page .btn:not(.btn-close):not(.public-nav-button) {
    min-height: 3rem;
    padding: .68rem 1.15rem;
    border-radius: .95rem;
    font-family: "Comfortaa", sans-serif;
    font-weight: 600;
    line-height: 1.2;
    transition:
        transform 180ms ease,
        box-shadow 180ms ease,
        background-color 180ms ease,
        border-color 180ms ease,
        color 180ms ease;
}

.yesland-public-page .btn-sm:not(.public-nav-button) {
    min-height: 2.35rem;
    padding: .45rem .8rem;
    border-radius: .8rem;
}

.yesland-public-page .btn-lg {
    min-height: 3.25rem;
    padding: .78rem 1.35rem;
    border-radius: 1rem;
}

/* Primary action: contextual by public department. */
.yesland-public-page .btn-primary,
.yesland-public-page .yesland-island .btn-primary {
    border-color: var(--yesland-action-current);
    background: var(--yesland-action-current);
    color: #fff;
    box-shadow: 0 .24rem .58rem rgba(27, 63, 71, .22);
    text-shadow: none;
}

.yesland-public-page .btn-primary:hover,
.yesland-public-page .btn-primary:focus-visible,
.yesland-public-page .yesland-island .btn-primary:hover,
.yesland-public-page .yesland-island .btn-primary:focus-visible {
    border-color: var(--yesland-action-current-hover);
    background: var(--yesland-action-current-hover);
    color: #fff;
    transform: translateY(-2px) scale(1.01);
    box-shadow: 0 .42rem .85rem rgba(27, 63, 71, .29);
}

/* Explicit department/general variants for mixed-context pages. */
.yesland-public-page .btn-school {
    --yesland-action-current: var(--yesland-action-school);
    --yesland-action-current-hover: var(--yesland-action-school-hover);
}

.yesland-public-page .btn-leps {
    --yesland-action-current: var(--yesland-action-leps);
    --yesland-action-current-hover: var(--yesland-action-leps-hover);
    border-color: var(--yesland-action-current);
    background: var(--yesland-action-current);
    color: #fff;
}

.yesland-public-page .btn-yesland {
    --yesland-action-current: var(--yesland-action-general);
    --yesland-action-current-hover: var(--yesland-action-general-hover);
}

.yesland-public-page .btn-leps:hover,
.yesland-public-page .btn-leps:focus-visible {
    border-color: var(--yesland-action-current-hover);
    background: var(--yesland-action-current-hover);
    color: #fff;
}

/* Secondary action: pale surface, contextual border, dark text. */
.yesland-public-page .btn-outline-primary,
.yesland-public-page .btn-outline-leps {
    border: 2px solid var(--yesland-action-current);
    background: var(--yesland-button-pale);
    color: var(--yesland-button-text);
    box-shadow: 0 .14rem .35rem rgba(27, 63, 71, .12);
}

.yesland-public-page .btn-outline-primary:hover,
.yesland-public-page .btn-outline-primary:focus-visible,
.yesland-public-page .btn-outline-leps:hover,
.yesland-public-page .btn-outline-leps:focus-visible {
    border-color: var(--yesland-action-current-hover);
    background: #fff3d5;
    color: var(--yesland-button-text);
    transform: translateY(-2px) scale(1.01);
    box-shadow: 0 .35rem .7rem rgba(27, 63, 71, .20);
}

/* Quiet public action. Administration remains outside this scope. */
.yesland-public-page .btn-quiet,
.yesland-public-page .btn-outline-secondary {
    border-color: transparent;
    background: transparent;
    color: #385362;
    box-shadow: none;
}

.yesland-public-page .btn-quiet:hover,
.yesland-public-page .btn-quiet:focus-visible,
.yesland-public-page .btn-outline-secondary:hover,
.yesland-public-page .btn-outline-secondary:focus-visible {
    border-color: rgba(56, 83, 98, .15);
    background: rgba(255, 250, 237, .62);
    color: #17364b;
    transform: translateY(-1px);
    box-shadow: none;
}

/* Keyboard, pressed and unavailable states. */
.yesland-public-page .btn:not(.btn-close):focus-visible {
    outline: 3px solid rgba(24, 84, 116, .38);
    outline-offset: 3px;
}

.yesland-public-page .btn:not(.btn-close):active,
.yesland-public-page .btn:not(.btn-close).active {
    transform: translateY(0) scale(.99);
    box-shadow: inset 0 .16rem .28rem rgba(20, 42, 49, .20);
}

.yesland-public-page .btn:disabled,
.yesland-public-page .btn.disabled {
    opacity: .52;
    transform: none;
    box-shadow: none;
    cursor: not-allowed;
}

@media (prefers-reduced-motion: reduce) {
    .yesland-public-page .btn {
        transition: none;
    }

    .yesland-public-page .btn:hover,
    .yesland-public-page .btn:focus-visible,
    .yesland-public-page .btn:active {
        transform: none;
    }
}

/* v0.15.0 — Step 3.2: Yesland card system */
:root {
    --yesland-card-bg: #fff9eb;
    --yesland-card-bg-sand: #f8edcf;
    --yesland-card-border: rgba(162, 117, 52, .28);
    --yesland-card-text: #17364b;
    --yesland-card-muted: #5c7180;
    --yesland-card-radius: 1.55rem;
    --yesland-card-radius-organic: 1.7rem 1.35rem 1.8rem 1.45rem / 1.4rem 1.75rem 1.35rem 1.65rem;
    --yesland-card-shadow: 0 .55rem 1.25rem rgba(30, 73, 77, .15);
    --yesland-card-shadow-hover: 0 .85rem 1.65rem rgba(30, 73, 77, .21);
    --yesland-card-padding: 1.5rem;
    --yesland-card-gap: 1rem;
}

/* Reusable card component. Safe to opt into in both public and admin views. */
.yesland-card {
    position: relative;
    color: var(--yesland-card-text);
    background: var(--yesland-card-bg);
    border: 1px solid var(--yesland-card-border);
    border-radius: var(--yesland-card-radius);
    box-shadow: var(--yesland-card-shadow);
    overflow: hidden;
}

.yesland-card--organic {
    border-radius: var(--yesland-card-radius-organic);
}

.yesland-card--sand {
    background: var(--yesland-card-bg-sand);
}

.yesland-card--compact {
    --yesland-card-padding: 1rem;
    --yesland-card-gap: .75rem;
    border-radius: 1.1rem;
    box-shadow: 0 .35rem .85rem rgba(30, 73, 77, .12);
}

.yesland-card__header,
.yesland-card__body,
.yesland-card__footer {
    padding: var(--yesland-card-padding);
}

.yesland-card__header,
.yesland-card__footer {
    background: rgba(255, 255, 255, .22);
}

.yesland-card__header {
    border-bottom: 1px solid rgba(162, 117, 52, .18);
}

.yesland-card__footer {
    border-top: 1px solid rgba(162, 117, 52, .18);
}

.yesland-card__title {
    margin: 0;
    color: var(--yesland-card-text);
    font-weight: 800;
}

.yesland-card__text,
.yesland-card__meta {
    color: var(--yesland-card-muted);
}

.yesland-card__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .75rem;
}

.yesland-card--interactive {
    transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease;
}

.yesland-card--interactive:hover,
.yesland-card--interactive:focus-within {
    transform: translateY(-2px);
    border-color: rgba(131, 88, 30, .38);
    box-shadow: var(--yesland-card-shadow-hover);
}

.yesland-card--featured {
    border-width: 2px;
    box-shadow: 0 .8rem 1.7rem rgba(30, 73, 77, .18);
}

/* Public Bootstrap cards use the shared card family automatically. */
.yesland-public-page .card,
.yesland-public-page form.card,
.yesland-public-page .public-content-empty:not(.yesland-island) {
    color: var(--yesland-card-text) !important;
    background: var(--yesland-card-bg) !important;
    border: 1px solid var(--yesland-card-border) !important;
    border-radius: var(--yesland-card-radius-organic) !important;
    box-shadow: var(--yesland-card-shadow) !important;
}

.yesland-public-page .card:nth-of-type(even),
.yesland-public-page .row > [class*="col-"]:nth-child(even) > .card {
    border-radius: 1.45rem 1.75rem 1.4rem 1.85rem / 1.7rem 1.35rem 1.8rem 1.45rem !important;
}

.yesland-public-page .card-header,
.yesland-public-page .card-footer {
    padding: 1.15rem 1.4rem;
    background: rgba(255, 255, 255, .22);
    border-color: rgba(162, 117, 52, .18);
}

.yesland-public-page .card-body {
    padding: var(--yesland-card-padding);
}

.yesland-public-page .card-title,
.yesland-public-page .card h1,
.yesland-public-page .card h2,
.yesland-public-page .card h3,
.yesland-public-page .card h4 {
    color: var(--yesland-card-text);
    font-weight: 800;
}

.yesland-public-page .card-text,
.yesland-public-page .card .text-secondary,
.yesland-public-page .card .text-muted {
    color: var(--yesland-card-muted) !important;
}

.yesland-public-page a.card,
.yesland-public-page .card.public-content-card {
    transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease;
}

.yesland-public-page a.card:hover,
.yesland-public-page a.card:focus-visible,
.yesland-public-page .card.public-content-card:hover {
    transform: translateY(-2px);
    border-color: rgba(131, 88, 30, .38) !important;
    box-shadow: var(--yesland-card-shadow-hover) !important;
}

/* Dense administration screens can opt into the compact member of the family
   without altering the existing Administration appearance globally. */
.admin-page .yesland-card,
.admin-shell .yesland-card {
    --yesland-card-padding: 1rem;
    --yesland-card-gap: .75rem;
    border-radius: 1rem;
    box-shadow: 0 .3rem .75rem rgba(30, 73, 77, .10);
}

@media (max-width: 767.98px) {
    :root {
        --yesland-card-padding: 1.2rem;
    }

    .yesland-public-page .card,
    .yesland-public-page form.card,
    .yesland-public-page .public-content-empty:not(.yesland-island) {
        border-radius: 1.35rem 1.1rem 1.45rem 1.2rem / 1.15rem 1.4rem 1.1rem 1.35rem !important;
    }

    .yesland-public-page .card-header,
    .yesland-public-page .card-footer {
        padding: 1rem 1.2rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .yesland-card--interactive,
    .yesland-public-page a.card,
    .yesland-public-page .card.public-content-card {
        transition: none;
    }

    .yesland-card--interactive:hover,
    .yesland-card--interactive:focus-within,
    .yesland-public-page a.card:hover,
    .yesland-public-page a.card:focus-visible,
    .yesland-public-page .card.public-content-card:hover {
        transform: none;
    }
}

/* v0.15.0 — Step 3.2a: balanced card geometry */
/* Keep one recognisable public-card silhouette instead of alternating shapes. */
.yesland-public-page .card,
.yesland-public-page form.card,
.yesland-public-page .public-content-empty:not(.yesland-island),
.yesland-public-page .card:nth-of-type(even),
.yesland-public-page .row > [class*="col-"]:nth-child(even) > .card {
    border-radius: var(--yesland-card-radius-organic) !important;
    overflow: hidden;
}

/* Nested Bootstrap sections must follow the outer card corners. */
.yesland-public-page .card > :first-child,
.yesland-card > :first-child {
    border-top-left-radius: inherit;
    border-top-right-radius: inherit;
}

.yesland-public-page .card > :last-child,
.yesland-card > :last-child {
    border-bottom-right-radius: inherit;
    border-bottom-left-radius: inherit;
}

.yesland-public-page .card-img,
.yesland-public-page .card-img-top {
    border-top-left-radius: inherit;
    border-top-right-radius: inherit;
}

.yesland-public-page .card-img,
.yesland-public-page .card-img-bottom {
    border-bottom-right-radius: inherit;
    border-bottom-left-radius: inherit;
}

.yesland-public-page .card .list-group,
.yesland-public-page .card .list-group-item,
.yesland-public-page .card .table-responsive,
.yesland-public-page .card table {
    border-radius: 0;
}

/* Compact/admin opt-in cards remain regular rather than organic. */
.yesland-card--compact,
.admin-page .yesland-card,
.admin-shell .yesland-card {
    border-radius: 1rem;
    overflow: hidden;
}

@media (max-width: 767.98px) {
    .yesland-public-page .card,
    .yesland-public-page form.card,
    .yesland-public-page .public-content-empty:not(.yesland-island),
    .yesland-public-page .card:nth-of-type(even),
    .yesland-public-page .row > [class*="col-"]:nth-child(even) > .card {
        border-radius: 1.3rem !important;
    }
}

/* v0.15.0 — Step 3.2b: island-derived card family
   Public cards are scaled versions of the established Yesland island.
   Administration is not changed globally. */
:root {
    --yesland-island-surface:
        radial-gradient(circle, rgba(139,92,31,.12) 0 .65px, transparent .95px) 0 0 / 18px 18px,
        radial-gradient(circle, rgba(255,255,255,.52) 0 .7px, transparent 1.05px) 9px 11px / 25px 25px,
        radial-gradient(ellipse at 27% 12%, rgba(255,255,255,.94) 0%, rgba(255,255,255,.42) 16%, transparent 37%),
        radial-gradient(ellipse at 78% 78%, rgba(214,154,65,.20) 0%, transparent 38%),
        linear-gradient(145deg, #fff8e8 0%, #fbeac0 52%, #eccd8e 100%);
    --yesland-island-border: rgba(188, 137, 61, .42);
    --yesland-island-shadow:
        0 .18rem .18rem rgba(255,255,255,.70) inset,
        .22rem .35rem .65rem rgba(255,255,255,.48) inset,
        -.34rem -.55rem .9rem rgba(170,111,41,.18) inset,
        0 .22rem 0 #dfbd79,
        0 .43rem 0 #cfa65d,
        0 .62rem .22rem rgba(104,68,27,.24),
        0 1rem 1.8rem rgba(16,92,101,.24);
    --yesland-island-shadow-hover:
        0 .18rem .18rem rgba(255,255,255,.70) inset,
        .22rem .35rem .65rem rgba(255,255,255,.48) inset,
        -.34rem -.55rem .9rem rgba(170,111,41,.18) inset,
        0 .25rem 0 #dfbd79,
        0 .5rem 0 #cfa65d,
        0 .72rem .26rem rgba(104,68,27,.27),
        0 1.25rem 2.1rem rgba(16,92,101,.29);
}

/* Shared island-card material. */
.yesland-card,
.yesland-public-page .card,
.yesland-public-page form.card,
.yesland-public-page .public-content-empty:not(.yesland-island) {
    color: #17364b !important;
    background: var(--yesland-island-surface) !important;
    border: 1px solid var(--yesland-island-border) !important;
    border-radius: 2.9rem 2.35rem 3.25rem 2.55rem / 2.35rem 3rem 2.45rem 2.8rem !important;
    box-shadow: var(--yesland-island-shadow) !important;
    overflow: hidden;
}

/* XL island: public hero surfaces. */
.yesland-public-page .home-hero,
.yesland-public-page .class-availability-hero,
.yesland-public-page .yesland-school-hero,
.yesland-card--xl {
    background: var(--yesland-island-surface) !important;
    border: 1px solid var(--yesland-island-border) !important;
    border-radius: 7.4rem 5.6rem 8.2rem 6.4rem / 5.1rem 7rem 5.4rem 6.6rem !important;
    box-shadow:
        0 .18rem .18rem rgba(255,255,255,.72) inset,
        .22rem .35rem .65rem rgba(255,255,255,.52) inset,
        -.34rem -.55rem .9rem rgba(170,111,41,.22) inset,
        0 .28rem 0 #dfbd79,
        0 .58rem 0 #cfa65d,
        0 .76rem .24rem rgba(104,68,27,.30),
        0 1.45rem 2.35rem rgba(16,92,101,.35) !important;
    overflow: hidden;
}

/* L, M and S members of the same family. */
.yesland-card--lg,
.yesland-public-page .featured-public-content-card {
    border-radius: 4.1rem 3.25rem 4.65rem 3.55rem / 3.2rem 4.3rem 3.35rem 4rem !important;
}

.yesland-card--md,
.yesland-public-page .public-content-card {
    border-radius: 2.9rem 2.35rem 3.25rem 2.55rem / 2.35rem 3rem 2.45rem 2.8rem !important;
}

.yesland-card--sm,
.yesland-card--compact {
    border-radius: 1.65rem 1.35rem 1.8rem 1.45rem / 1.35rem 1.75rem 1.4rem 1.6rem !important;
    box-shadow: 0 .35rem .85rem rgba(30,73,77,.13) !important;
}

/* No alternating silhouettes: every member uses a deliberate size variant. */
.yesland-public-page .card:nth-of-type(even),
.yesland-public-page .row > [class*="col-"]:nth-child(even) > .card {
    border-radius: 2.9rem 2.35rem 3.25rem 2.55rem / 2.35rem 3rem 2.45rem 2.8rem !important;
}

/* Internal Bootstrap sections follow the parent island. */
.yesland-public-page .card > :first-child,
.yesland-card > :first-child {
    border-top-left-radius: inherit !important;
    border-top-right-radius: inherit !important;
}

.yesland-public-page .card > :last-child,
.yesland-card > :last-child {
    border-bottom-right-radius: inherit !important;
    border-bottom-left-radius: inherit !important;
}

.yesland-public-page .card-header,
.yesland-public-page .card-footer,
.yesland-card__header,
.yesland-card__footer {
    background: rgba(255,255,255,.20) !important;
    border-color: rgba(162,117,52,.18) !important;
}

.yesland-public-page a.card,
.yesland-public-page .card.public-content-card,
.yesland-card--interactive {
    transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease;
}

.yesland-public-page a.card:hover,
.yesland-public-page a.card:focus-visible,
.yesland-public-page .card.public-content-card:hover,
.yesland-card--interactive:hover,
.yesland-card--interactive:focus-within {
    transform: translateY(-2px);
    border-color: rgba(131,88,30,.38) !important;
    box-shadow: var(--yesland-island-shadow-hover) !important;
}

/* Administration opt-in card: neutral, regular and compact. Existing admin
   screens remain unchanged unless this class is added deliberately. */
.admin-page .yesland-card,
.admin-shell .yesland-card,
.yesland-card--admin {
    background: #fff !important;
    border: 1px solid rgba(0,0,0,.10) !important;
    border-radius: .75rem !important;
    box-shadow: 0 .25rem .65rem rgba(20,36,48,.08) !important;
}

@media (max-width: 767.98px) {
    .yesland-public-page .home-hero,
    .yesland-public-page .class-availability-hero,
    .yesland-public-page .yesland-school-hero,
    .yesland-card--xl {
        border-radius: 4.8rem 3.8rem 5.7rem 4.1rem / 3.7rem 5rem 3.9rem 5.2rem !important;
    }

    .yesland-card,
    .yesland-public-page .card,
    .yesland-public-page form.card,
    .yesland-public-page .public-content-empty:not(.yesland-island),
    .yesland-public-page .card:nth-of-type(even),
    .yesland-public-page .row > [class*="col-"]:nth-child(even) > .card {
        border-radius: 2.15rem 1.75rem 2.4rem 1.9rem / 1.8rem 2.3rem 1.9rem 2.15rem !important;
    }
}


/* v0.15.0 — Step 3.2c: Event-card and button alignment corrections */
/* Buttons use flex alignment so labels remain centred both horizontally and
   vertically at every supported height. This is public-only. */
.yesland-public-page :is(a, button).btn:not(.btn-close) {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .4rem;
    text-align: center;
    vertical-align: middle;
}

.yesland-public-page input.btn:not(.btn-close) {
    text-align: center;
}

.yesland-public-page .d-grid > .btn,
.yesland-public-page .btn.w-100 {
    width: 100%;
}

.yesland-public-page .public-nav-button {
    white-space: nowrap;
}

/* Events use explicit members of the island-card family rather than relying
   on generic Bootstrap card matching. */
.yesland-events-stage .public-content-card,
.yesland-public-page .public-content-detail {
    position: relative;
    border-radius: 2.55rem 2.15rem 2.8rem 2.3rem / 2.1rem 2.7rem 2.2rem 2.5rem !important;
    overflow: hidden;
}

.yesland-public-page .public-content-detail {
    border-radius: 4.1rem 3.25rem 4.65rem 3.55rem / 3.2rem 4.3rem 3.35rem 4rem !important;
}

/* Event images form the top face of the card; their lower corners must not
   create a second rounded shape inside the island. */
.yesland-events-stage .public-content-card > .card-img-top,
.yesland-public-page .public-content-detail > .public-content-detail-image {
    display: block;
    border-top-left-radius: inherit !important;
    border-top-right-radius: inherit !important;
    border-bottom-right-radius: 0 !important;
    border-bottom-left-radius: 0 !important;
}

.yesland-events-stage .public-content-card > .card-body,
.yesland-public-page .public-content-detail > .card-body {
    position: relative;
    z-index: 1;
}

@media (max-width: 767.98px) {
    .yesland-events-stage .public-content-card,
    .yesland-public-page .public-content-detail {
        border-radius: 2rem 1.65rem 2.2rem 1.8rem / 1.7rem 2.15rem 1.75rem 2rem !important;
    }
}


/* v0.15.0 — Step 3.2d: protect custom Events island silhouettes
   These selectors intentionally outrank broad public-card rules. */
.yesland-public-page .yesland-events-stage .yesland-filter-island {
    border-radius: 4.9rem 6.8rem 4.35rem 6.15rem / 3.2rem 4.7rem 3.95rem 5rem !important;
}

.yesland-public-page .yesland-events-stage .yesland-empty-island {
    border-radius: 7.6rem 5.5rem 8.6rem 6.1rem / 4.6rem 6.7rem 5rem 7.1rem !important;
}

@media (max-width: 767.98px) {
    .yesland-public-page .yesland-events-stage .yesland-filter-island {
        border-radius: 2.5rem 3.1rem 2.3rem 2.8rem / 2rem 2.7rem 2.2rem 2.9rem !important;
    }

    .yesland-public-page .yesland-events-stage .yesland-empty-island {
        border-radius: 3.4rem 2.8rem 3.8rem 3rem / 2.7rem 3.5rem 2.9rem 3.7rem !important;
    }
}


/* Say Yes! handwritten wordmark — public navbar and School hero only. */
.yesland-public-page .sayyes-wordmark {
    font-family: "Kalam", "Marker Felt", "Segoe Print", "Comic Sans MS", cursive;
    font-weight: 700;
    letter-spacing: 0.01em;
}

.yesland-public-page .public-brand-wordmark {
    font-size: 2rem;
    line-height: 1;
    padding-top: 0.1rem;
}

.yesland-public-page .school-hero-wordmark {
    font-size: clamp(3.15rem, 5vw, 4.5rem);
    line-height: 0.96;
    margin-bottom: 0.35rem;
}

@media (max-width: 991.98px) {
    .yesland-public-page .public-brand-wordmark {
        font-size: 1.75rem;
    }

    .yesland-public-page .school-hero-wordmark {
        font-size: clamp(2.7rem, 8vw, 3.75rem);
    }
}

/* v0.17.1 — Prevent the wider School public navbar from wrapping. */
.yesland-public-navbar > .container {
    max-width: 100%;
    padding-right: clamp(1rem, 3vw, 3.25rem);
    padding-left: clamp(1rem, 3vw, 3.25rem);
}

@media (min-width: 1320px) and (max-width: 1599.98px) {
    .yesland-public-navbar-crowded .navbar-brand {
        flex: 0 0 auto;
        margin-right: .65rem;
    }

    .yesland-public-navbar-crowded .navbar-collapse {
        min-width: 0;
        flex-wrap: nowrap;
    }

    .yesland-public-navbar-crowded .public-nav-links {
        min-width: 0;
        flex-wrap: nowrap;
        gap: .25rem;
    }

    .yesland-public-navbar-crowded .public-nav-button {
        min-height: 2rem;
        padding-right: .55rem;
        padding-left: .55rem;
        font-size: .8rem;
    }

    .yesland-public-navbar-crowded .navbar-account-actions {
        flex: 0 0 auto;
        flex-wrap: nowrap !important;
        gap: .3rem !important;
        margin-left: .45rem;
    }

    .yesland-public-navbar-crowded .public-language-switch {
        flex-wrap: nowrap;
    }

    .yesland-public-navbar-crowded .public-language-switch .btn,
    .yesland-public-navbar-crowded .admin-entry-button,
    .yesland-public-navbar-crowded .staff-signin-button,
    .yesland-public-navbar-crowded .navbar-account-menu .dropdown-toggle {
        padding-right: .58rem;
        padding-left: .58rem;
        font-size: .8rem;
    }

    .yesland-public-navbar-crowded .navbar-account-menu .dropdown-toggle {
        max-width: 6.75rem;
    }

    .yesland-public-page .yesland-public-navbar-crowded .public-brand-wordmark {
        font-size: 1.7rem;
    }
}

/* Bootstrap expands the navbar at 992px. For the wider School menu, keep the
   hamburger until there is genuinely enough horizontal space. */
@media (min-width: 992px) and (max-width: 1319.98px) {
    .yesland-public-navbar-crowded .navbar-toggler {
        display: block;
    }

    .yesland-public-navbar-crowded .navbar-collapse {
        flex-basis: 100%;
        flex-grow: 1;
        align-items: center;
    }

    .yesland-public-navbar-crowded .navbar-collapse.collapse:not(.show) {
        display: none !important;
    }

    .yesland-public-navbar-crowded .navbar-collapse.collapse.show,
    .yesland-public-navbar-crowded .navbar-collapse.collapsing {
        display: block !important;
    }

    .yesland-public-navbar-crowded .navbar-nav {
        flex-direction: column;
    }

    .yesland-public-navbar-crowded .navbar-nav .dropdown-menu {
        position: static;
    }

    .yesland-public-navbar-crowded .public-nav-links {
        align-items: stretch;
        padding-top: .75rem;
    }

    .yesland-public-navbar-crowded .public-nav-button {
        width: 100%;
        justify-content: flex-start;
    }

    .yesland-public-navbar-crowded .navbar-account-actions {
        padding-top: .5rem;
        border-top: 1px solid var(--bs-border-color);
    }

    .yesland-public-navbar-crowded .navbar-account-menu,
    .yesland-public-navbar-crowded .navbar-account-menu .dropdown-toggle {
        width: 100%;
        max-width: none;
    }
}


/* v0.17.5 — Student projects island hub */
.student-projects-page {
    width: min(100%, 1120px);
    margin-inline: auto;
    padding: .75rem 0 3.5rem;
}

.student-projects-heading {
    width: min(100%, 760px);
    margin: 0 auto 2.75rem;
}

.student-projects-heading h1 {
    color: #17364b;
}

.student-projects-grid {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: clamp(1.75rem, 3.2vw, 3rem);
    align-items: center;
}

.student-project-island {
    grid-column: span 2;
    min-height: 175px;
    padding: 2rem 1.35rem 2.75rem;
    display: grid;
    place-items: center;
    border-radius: 47% 53% 45% 55% / 54% 44% 56% 46%;
    color: #17364b;
    text-align: center;
    text-decoration: none;
    font: inherit;
    appearance: none;
    cursor: pointer;
    transition: transform 180ms ease, box-shadow 180ms ease, filter 180ms ease;
}

.student-project-island:nth-child(2) {
    border-radius: 56% 44% 53% 47% / 45% 58% 42% 55%;
    transform: rotate(-1.2deg);
}

.student-project-island:nth-child(3) {
    border-radius: 44% 56% 48% 52% / 58% 43% 57% 42%;
    transform: rotate(.9deg);
}

.student-project-island:nth-child(4) {
    grid-column: 2 / span 2;
    border-radius: 53% 47% 57% 43% / 46% 57% 43% 54%;
    transform: rotate(-.7deg);
}

.student-project-island:nth-child(5) {
    grid-column: 4 / span 2;
    border-radius: 46% 54% 43% 57% / 56% 45% 55% 44%;
    transform: rotate(1deg);
}

.student-project-island .yesland-island-content {
    display: grid;
    place-items: center;
    min-height: 3.5rem;
    transform: none;
}

.student-project-island strong {
    max-width: 12rem;
    color: #17364b;
    font-size: clamp(1.15rem, 1.9vw, 1.45rem);
    font-weight: 800;
    line-height: 1.15;
}

.student-project-island:not(.is-inactive):hover,
.student-project-island:not(.is-inactive):focus-visible {
    color: #17364b;
    transform: translateY(-5px) rotate(-.35deg) scale(1.025);
    box-shadow:
        0 .18rem .18rem rgba(255,255,255,.72) inset,
        .22rem .35rem .65rem rgba(255,255,255,.52) inset,
        -.34rem -.55rem .9rem rgba(170,111,41,.22) inset,
        0 -.48rem .26rem rgba(167,111,43,.16) inset,
        0 .34rem 0 #dfbd79,
        0 .68rem 0 #cfa65d,
        0 .9rem .3rem rgba(104,68,27,.30),
        0 1.75rem 2.7rem rgba(16,92,101,.39),
        0 2.4rem 4rem rgba(7,79,88,.18);
}

.student-project-island.is-inactive {
    cursor: default;
}

.student-project-island.is-inactive:focus-visible {
    outline: 3px solid rgba(23, 120, 155, .45);
    outline-offset: 5px;
}

.student-project-island-campaigns {
    box-shadow:
        0 .18rem .18rem rgba(255,255,255,.72) inset,
        .22rem .35rem .65rem rgba(255,255,255,.52) inset,
        -.34rem -.55rem .9rem rgba(170,111,41,.22) inset,
        0 -.48rem .26rem rgba(167,111,43,.16) inset,
        0 .28rem 0 #dfbd79,
        0 .58rem 0 #cfa65d,
        0 .76rem .24rem rgba(104,68,27,.30),
        0 1.45rem 2.35rem rgba(16,92,101,.35),
        0 2.2rem 3.7rem rgba(7,79,88,.16),
        0 0 0 .24rem rgba(52,122,73,.16);
}

.student-project-island .yesland-island-decoration-rocks {
    left: 1.05rem;
    transform: scale(.72);
    transform-origin: left bottom;
}

.student-project-island .yesland-island-decoration-starfish {
    right: .75rem;
    transform: scale(.68);
    transform-origin: right bottom;
}

.student-project-island .yesland-island-decoration-shells {
    right: 1rem;
    transform: scale(.72);
    transform-origin: right bottom;
}

.student-project-island .yesland-island-decoration-grass {
    left: 1rem;
    transform: scale(.72);
    transform-origin: left bottom;
}

@media (max-width: 991.98px) {
    .student-projects-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .student-project-island,
    .student-project-island:nth-child(4),
    .student-project-island:nth-child(5) {
        grid-column: auto;
    }

    .student-project-island:last-child {
        grid-column: 1 / -1;
        width: min(100%, 330px);
        justify-self: center;
    }
}

@media (max-width: 575.98px) {
    .student-projects-page {
        padding-top: .25rem;
    }

    .student-projects-heading {
        margin-bottom: 2rem;
    }

    .student-projects-grid {
        grid-template-columns: 1fr;
        gap: 1.8rem;
    }

    .student-project-island,
    .student-project-island:last-child {
        grid-column: auto;
        width: 100%;
        min-height: 155px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .student-project-island {
        transition: none;
    }
}

/* v0.17.9 — Student videos and songs API gallery */
.student-videos-page {
    width: min(100%, 1120px);
    margin-inline: auto;
    padding: .75rem 0 3.5rem;
}

.student-videos-island {
    width: 100%;
    min-height: 0;
    padding: clamp(1.35rem, 3vw, 2.5rem);
    border-radius: 5.4rem 4.1rem 5.8rem 4.45rem / 4.5rem 5.6rem 4.2rem 5.1rem;
}

.student-videos-island .yesland-island-content {
    transform: none;
}

.student-videos-island .yesland-island-decoration-starfish {
    right: 1.35rem;
    bottom: .7rem;
    transform: scale(.78) rotate(9deg);
    transform-origin: right bottom;
}

.student-videos-content {
    position: relative;
    z-index: 2;
    display: grid;
    gap: 1.5rem;
}

.student-video-overview {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .2rem .35rem 0;
}

.student-video-overview h2,
.student-video-player-panel h2,
.student-video-empty h2 {
    margin: 0;
    color: #17364b;
    font-size: clamp(1.35rem, 2.2vw, 1.8rem);
    font-weight: 800;
}

.student-video-overview p,
.student-video-empty p {
    margin: .35rem 0 0;
    color: #536d7d;
}

.student-video-count {
    flex: 0 0 auto;
    padding: .45rem .8rem;
    border: 1px solid rgba(23, 54, 75, .13);
    border-radius: 999px;
    background: rgba(255, 252, 244, .84);
    color: #17364b;
    font-size: .92rem;
    font-weight: 800;
    box-shadow: 0 .35rem .8rem rgba(23, 54, 75, .08);
}

.student-video-player-panel {
    scroll-margin-top: 7.5rem;
    padding: clamp(1rem, 2.4vw, 1.5rem);
    border: 1px solid rgba(23, 54, 75, .13);
    border-radius: clamp(1.4rem, 3vw, 2.25rem);
    background: rgba(255, 252, 244, .9);
    box-shadow: 0 1.25rem 2.5rem rgba(23, 54, 75, .14);
}

.student-video-player-panel h2 {
    margin-bottom: 1rem;
    text-align: center;
}

.student-video-player {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    border: 1px solid rgba(23, 54, 75, .16);
    border-radius: clamp(1.05rem, 2.5vw, 1.75rem);
    background: #0d1117;
    box-shadow: 0 1rem 2rem rgba(23, 54, 75, .18);
}

.student-video-player iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
}

.student-video-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: clamp(1rem, 2vw, 1.35rem);
}

.student-video-card {
    display: grid;
    align-content: start;
    gap: .8rem;
    min-width: 0;
    padding: .7rem .7rem 1rem;
    border: 1px solid rgba(23, 54, 75, .13);
    border-radius: 1.45rem 1.7rem 1.35rem 1.6rem / 1.55rem 1.35rem 1.7rem 1.4rem;
    background: rgba(255, 252, 244, .9);
    color: #17364b;
    text-decoration: none;
    box-shadow: 0 .7rem 1.35rem rgba(23, 54, 75, .11);
    transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease;
}

.student-video-card:hover,
.student-video-card:focus-visible {
    color: #17364b;
    transform: translateY(-4px);
    border-color: rgba(15, 118, 130, .34);
    box-shadow: 0 1.1rem 2rem rgba(23, 54, 75, .17);
}

.student-video-card.is-selected {
    border-color: rgba(15, 118, 130, .58);
    box-shadow:
        0 0 0 .18rem rgba(15, 118, 130, .13),
        0 1rem 2rem rgba(23, 54, 75, .16);
}

.student-video-thumbnail {
    position: relative;
    display: block;
    width: 100%;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    border-radius: 1rem 1.2rem .95rem 1.1rem / 1.1rem .95rem 1.2rem 1rem;
    background: linear-gradient(145deg, #d8edf2, #9bcbd3);
}

.student-video-thumbnail img,
.student-video-thumbnail-placeholder {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.student-video-thumbnail-placeholder {
    background:
        radial-gradient(circle at 30% 28%, rgba(255,255,255,.7), transparent 24%),
        linear-gradient(145deg, #d8edf2, #9bcbd3);
}

.student-video-play-icon {
    position: absolute;
    left: 50%;
    top: 50%;
    display: grid;
    place-items: center;
    width: 3rem;
    height: 3rem;
    padding-left: .15rem;
    border: 2px solid rgba(255,255,255,.88);
    border-radius: 50%;
    background: rgba(20, 62, 76, .8);
    color: #fff;
    font-size: 1.15rem;
    line-height: 1;
    transform: translate(-50%, -50%);
    box-shadow: 0 .5rem 1rem rgba(0,0,0,.24);
}

.student-video-card strong {
    display: -webkit-box;
    min-height: 2.75rem;
    overflow: hidden;
    color: #17364b;
    font-size: 1rem;
    font-weight: 800;
    line-height: 1.35;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}

.student-video-empty {
    padding: clamp(1.25rem, 3vw, 2rem);
    border: 1px solid rgba(23, 54, 75, .13);
    border-radius: 1.75rem;
    background: rgba(255, 252, 244, .88);
    text-align: center;
}

.student-videos-actions {
    display: flex;
    justify-content: center;
    gap: .75rem;
    flex-wrap: wrap;
}

@media (max-width: 991.98px) {
    .student-video-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 575.98px) {
    .student-videos-page {
        padding-top: .25rem;
    }

    .student-videos-island {
        padding: 1rem;
        border-radius: 2.8rem 2.2rem 3rem 2.35rem / 2.35rem 3rem 2.25rem 2.75rem;
    }

    .student-video-overview {
        align-items: flex-start;
        flex-direction: column;
    }

    .student-video-grid {
        grid-template-columns: 1fr;
    }

    .student-video-card strong {
        min-height: 0;
    }

    .student-videos-actions .btn {
        width: 100%;
    }
}

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

/* v0.18.0 — Creative Art Google Drive gallery */
.creative-art-page {
    width: min(100%, 1120px);
    margin-inline: auto;
    padding: .75rem 0 3.5rem;
}

.creative-art-island {
    width: 100%;
    min-height: 0;
    padding: clamp(1.35rem, 3vw, 2.5rem);
    border-radius: 5.2rem 4.35rem 5.7rem 4.55rem / 4.6rem 5.5rem 4.25rem 5rem;
}

.creative-art-island .yesland-island-content {
    transform: none;
}

.creative-art-island .yesland-island-decoration-shells {
    right: 1.25rem;
    bottom: .8rem;
    transform: scale(.82) rotate(4deg);
    transform-origin: right bottom;
}

.creative-art-content {
    position: relative;
    z-index: 2;
    display: grid;
    gap: 1.5rem;
}

.creative-art-overview {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .2rem .35rem 0;
}

.creative-art-overview h2,
.creative-art-empty h2 {
    margin: 0;
    color: #17364b;
    font-size: clamp(1.35rem, 2.2vw, 1.8rem);
    font-weight: 800;
}

.creative-art-overview p,
.creative-art-empty p {
    margin: .35rem 0 0;
    color: #536d7d;
}

.creative-art-count {
    flex: 0 0 auto;
    padding: .45rem .8rem;
    border: 1px solid rgba(23, 54, 75, .13);
    border-radius: 999px;
    background: rgba(255, 252, 244, .84);
    color: #17364b;
    font-size: .92rem;
    font-weight: 800;
    box-shadow: 0 .35rem .8rem rgba(23, 54, 75, .08);
}

.creative-art-breadcrumb {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .4rem;
    padding: .1rem .35rem;
    color: #536d7d;
    font-size: .92rem;
    font-weight: 700;
}

.creative-art-breadcrumb a {
    color: #0f7682;
    text-decoration: none;
}

.creative-art-breadcrumb a:hover,
.creative-art-breadcrumb a:focus-visible {
    color: #0a5b64;
    text-decoration: underline;
}

.creative-art-counts {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: .5rem;
}

.creative-art-section {
    display: grid;
    gap: .85rem;
}

.creative-art-section h3 {
    margin: 0 .35rem;
    color: #17364b;
    font-size: 1.08rem;
    font-weight: 800;
}

.creative-art-folder-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: clamp(1rem, 2vw, 1.35rem);
}

.creative-art-folder-card {
    position: relative;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    grid-template-rows: auto auto;
    align-items: center;
    column-gap: 1rem;
    row-gap: .15rem;
    min-height: 118px;
    padding: 1rem 1.1rem;
    overflow: hidden;
    border: 1px solid rgba(23, 54, 75, .13);
    border-radius: 1.7rem 1.35rem 1.55rem 1.8rem / 1.45rem 1.75rem 1.35rem 1.65rem;
    background:
        radial-gradient(circle at 82% 18%, rgba(255,255,255,.72), transparent 28%),
        linear-gradient(145deg, rgba(255,248,225,.96), rgba(244,219,164,.94));
    color: #17364b;
    text-decoration: none;
    box-shadow:
        0 .18rem .16rem rgba(255,255,255,.72) inset,
        0 .7rem 1.35rem rgba(23, 54, 75, .11);
    transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease;
}

.creative-art-folder-card:hover,
.creative-art-folder-card:focus-visible {
    color: #17364b;
    transform: translateY(-4px) rotate(-.15deg);
    border-color: rgba(190, 119, 50, .4);
    box-shadow:
        0 .18rem .16rem rgba(255,255,255,.75) inset,
        0 1.1rem 2rem rgba(23, 54, 75, .17);
}

.creative-art-folder-shape {
    position: relative;
    grid-row: 1 / span 2;
    display: block;
    width: 4.25rem;
    height: 3.1rem;
    border-radius: .55rem .65rem .75rem .55rem;
    background: linear-gradient(145deg, #f3ca6e, #d9a94c);
    box-shadow:
        0 .16rem .12rem rgba(255,255,255,.48) inset,
        0 .45rem .8rem rgba(117, 76, 25, .2);
}

.creative-art-folder-shape::before {
    content: "";
    position: absolute;
    left: .28rem;
    top: -.72rem;
    width: 2.05rem;
    height: .95rem;
    border-radius: .48rem .58rem 0 0;
    background: #e7b756;
}

.creative-art-folder-shape span {
    position: absolute;
    inset: .42rem .35rem .35rem;
    border-radius: .42rem .5rem .58rem .42rem;
    background: linear-gradient(155deg, rgba(255,239,183,.9), rgba(238,193,100,.78));
}

.creative-art-folder-card strong {
    min-width: 0;
    overflow: hidden;
    color: #17364b;
    font-size: 1.05rem;
    font-weight: 800;
    line-height: 1.25;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.creative-art-folder-card > span:last-child {
    color: #536d7d;
    font-size: .9rem;
    font-weight: 700;
}

.creative-art-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: clamp(1rem, 2vw, 1.35rem);
}

.creative-art-card {
    display: grid;
    align-content: start;
    gap: .8rem;
    min-width: 0;
    padding: .7rem .7rem 1rem;
    border: 1px solid rgba(23, 54, 75, .13);
    border-radius: 1.55rem 1.35rem 1.7rem 1.4rem / 1.4rem 1.7rem 1.35rem 1.6rem;
    background: rgba(255, 252, 244, .9);
    color: #17364b;
    text-align: left;
    font: inherit;
    box-shadow: 0 .7rem 1.35rem rgba(23, 54, 75, .11);
    transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease;
}

.creative-art-card:hover,
.creative-art-card:focus-visible {
    color: #17364b;
    transform: translateY(-4px) rotate(-.15deg);
    border-color: rgba(190, 119, 50, .38);
    box-shadow: 0 1.1rem 2rem rgba(23, 54, 75, .17);
}

.creative-art-image-wrap {
    position: relative;
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    border-radius: 1.1rem 1rem 1.25rem .95rem / 1rem 1.2rem .95rem 1.15rem;
    background:
        radial-gradient(circle at 30% 28%, rgba(255,255,255,.75), transparent 24%),
        linear-gradient(145deg, #f4dfb5, #d8b36f);
}

.creative-art-image-wrap img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 220ms ease;
}

.creative-art-card:hover .creative-art-image-wrap img,
.creative-art-card:focus-visible .creative-art-image-wrap img {
    transform: scale(1.035);
}

.creative-art-expand {
    position: absolute;
    right: .65rem;
    bottom: .65rem;
    display: grid;
    place-items: center;
    width: 2.35rem;
    height: 2.35rem;
    border: 2px solid rgba(255,255,255,.88);
    border-radius: 50%;
    background: rgba(20, 62, 76, .82);
    color: #fff;
    font-size: 1.15rem;
    font-weight: 800;
    line-height: 1;
    box-shadow: 0 .45rem .9rem rgba(0,0,0,.22);
}

.creative-art-card strong {
    display: -webkit-box;
    min-height: 2.7rem;
    overflow: hidden;
    color: #17364b;
    font-size: 1rem;
    font-weight: 800;
    line-height: 1.35;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}

.creative-art-empty {
    padding: clamp(1.25rem, 3vw, 2rem);
    border: 1px solid rgba(23, 54, 75, .13);
    border-radius: 1.75rem;
    background: rgba(255, 252, 244, .88);
    text-align: center;
}

.creative-art-actions {
    display: flex;
    justify-content: center;
    gap: .75rem;
    flex-wrap: wrap;
}

.creative-art-modal .modal-content {
    overflow: hidden;
    border: 1px solid rgba(23, 54, 75, .15);
    border-radius: 1.75rem;
    background: #fffdf8;
    box-shadow: 0 1.5rem 4rem rgba(13, 56, 68, .28);
}

.creative-art-modal .modal-header,
.creative-art-modal .modal-footer {
    border-color: rgba(23, 54, 75, .1);
}

.creative-art-modal .modal-title {
    color: #17364b;
    font-weight: 800;
}

.creative-art-modal .modal-body {
    display: grid;
    gap: 1rem;
    justify-items: center;
    padding: clamp(1rem, 2.5vw, 1.75rem);
    background:
        radial-gradient(circle at 15% 15%, rgba(255,255,255,.7), transparent 25%),
        linear-gradient(145deg, rgba(221,241,244,.7), rgba(250,235,204,.7));
}

.creative-art-modal .modal-body img {
    display: block;
    max-width: 100%;
    max-height: 72vh;
    width: auto;
    height: auto;
    border-radius: 1rem;
    background: #fff;
    box-shadow: 0 1rem 2.25rem rgba(23, 54, 75, .2);
}

.creative-art-modal-description {
    width: min(100%, 760px);
    margin: 0;
    color: #435f70;
    text-align: center;
    white-space: pre-line;
}

@media (max-width: 991.98px) {
    .creative-art-grid,
    .creative-art-folder-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 575.98px) {
    .creative-art-page {
        padding-top: .25rem;
    }

    .creative-art-island {
        padding: 1rem;
        border-radius: 2.8rem 2.2rem 3rem 2.35rem / 2.35rem 3rem 2.25rem 2.75rem;
    }

    .creative-art-overview {
        align-items: flex-start;
        flex-direction: column;
    }

    .creative-art-counts {
        justify-content: flex-start;
    }

    .creative-art-grid,
    .creative-art-folder-grid {
        grid-template-columns: 1fr;
    }

    .creative-art-folder-card {
        min-height: 104px;
    }

    .creative-art-card strong {
        min-height: 0;
    }

    .creative-art-actions .btn,
    .creative-art-modal .modal-footer .btn {
        width: 100%;
    }
}

@media (prefers-reduced-motion: reduce) {
    .creative-art-card,
    .creative-art-folder-card,
    .creative-art-image-wrap img {
        transition: none;
    }
}

/* v0.19.0 — Creative Writing and Student Presentations Drive libraries */
.student-drive-page {
    width: min(100%, 1120px);
    margin-inline: auto;
    padding: .75rem 0 3.5rem;
}

.student-drive-island {
    width: 100%;
    min-height: 0;
    padding: clamp(1.35rem, 3vw, 2.5rem);
    border-radius: 5.2rem 4.35rem 5.7rem 4.55rem / 4.6rem 5.5rem 4.25rem 5rem;
}

.student-drive-island .yesland-island-content {
    transform: none;
}

.student-drive-island-creative_writing .yesland-island-decoration-grass {
    right: 1.4rem;
    bottom: .85rem;
    transform: scale(.78) rotate(3deg);
    transform-origin: right bottom;
}

.student-drive-island-student_presentations .yesland-island-decoration-rocks {
    right: 1.4rem;
    bottom: .85rem;
    transform: scale(.8) rotate(-2deg);
    transform-origin: right bottom;
}

.student-drive-content {
    position: relative;
    z-index: 2;
    display: grid;
    gap: 1.5rem;
}

.student-drive-breadcrumb {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .45rem;
    padding: .05rem .35rem;
    color: #526d7e;
    font-size: .95rem;
    font-weight: 700;
}

.student-drive-breadcrumb a {
    color: #0f7682;
    text-decoration: none;
}

.student-drive-breadcrumb a:hover,
.student-drive-breadcrumb a:focus-visible {
    color: #0a5b64;
    text-decoration: underline;
}

.student-drive-overview {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .2rem .35rem 0;
}

.student-drive-overview h2,
.student-drive-empty h2 {
    margin: 0;
    color: #17364b;
    font-size: clamp(1.35rem, 2.2vw, 1.8rem);
    font-weight: 800;
}

.student-drive-overview p,
.student-drive-empty p {
    margin: .35rem 0 0;
    color: #536d7d;
}

.student-drive-counts {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: .5rem;
}

.student-drive-count {
    flex: 0 0 auto;
    padding: .45rem .8rem;
    border: 1px solid rgba(23, 54, 75, .13);
    border-radius: 999px;
    color: #35596c;
    background: rgba(255, 252, 241, .88);
    font-size: .9rem;
    font-weight: 800;
    box-shadow: 0 .35rem .8rem rgba(23, 54, 75, .08);
}

.student-drive-section {
    display: grid;
    gap: .85rem;
}

.student-drive-section h3 {
    margin: 0 .35rem;
    color: #17364b;
    font-size: 1.08rem;
    font-weight: 800;
}

.student-drive-folder-grid,
.student-drive-file-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: clamp(1rem, 2vw, 1.35rem);
}

.student-drive-folder-card,
.student-drive-file-card {
    position: relative;
    display: grid;
    min-width: 0;
    min-height: 116px;
    padding: 1rem;
    border: 1px solid rgba(23, 54, 75, .14);
    border-radius: 1.45rem 1.2rem 1.55rem 1.3rem;
    color: #17364b;
    background:
        radial-gradient(circle at 85% 12%, rgba(255,255,255,.85) 0 8%, transparent 9%),
        linear-gradient(145deg, rgba(255,253,246,.98), rgba(244,232,202,.96));
    box-shadow: 0 .65rem 1.35rem rgba(23, 54, 75, .12);
    text-align: left;
    text-decoration: none;
    transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease;
}

.student-drive-folder-card {
    grid-template-columns: auto minmax(0, 1fr);
    grid-template-rows: auto auto;
    align-items: center;
    column-gap: .9rem;
}

.student-drive-file-card {
    grid-template-columns: minmax(0, 1fr);
    align-content: start;
    align-items: stretch;
    gap: .72rem;
    width: 100%;
    min-height: 0;
    padding: .7rem .7rem 1rem;
    font: inherit;
}

.student-drive-folder-card:hover,
.student-drive-folder-card:focus-visible,
.student-drive-file-card:hover,
.student-drive-file-card:focus-visible {
    color: #17364b;
    transform: translateY(-4px) rotate(-.15deg);
    border-color: rgba(32, 126, 134, .38);
    box-shadow: 0 1.1rem 2rem rgba(23, 54, 75, .17);
}

.student-drive-folder-shape {
    position: relative;
    grid-row: 1 / span 2;
    display: block;
    width: 3.6rem;
    height: 2.75rem;
    border-radius: .45rem .55rem .65rem .48rem;
    background: linear-gradient(155deg, #f0c767, #d69b36);
    box-shadow: 0 .45rem .8rem rgba(117, 76, 25, .2);
}

.student-drive-folder-shape::before {
    content: "";
    position: absolute;
    left: .28rem;
    top: -.42rem;
    width: 1.65rem;
    height: .7rem;
    border-radius: .42rem .42rem 0 0;
    background: #e7b756;
}

.student-drive-folder-shape span {
    position: absolute;
    inset: .42rem .35rem .35rem;
    border-radius: .42rem .5rem .58rem .42rem;
    background: linear-gradient(155deg, rgba(255,239,183,.9), rgba(238,193,100,.78));
}

.student-drive-folder-card strong {
    min-width: 0;
    overflow: hidden;
    color: #17364b;
    font-size: 1.02rem;
    font-weight: 800;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.student-drive-folder-card > span:last-child {
    color: #536d7d;
    font-size: .9rem;
    font-weight: 700;
}

.student-drive-thumbnail-wrap {
    position: relative;
    display: grid;
    place-items: center;
    width: 100%;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    border: 1px solid rgba(23, 54, 75, .1);
    border-radius: 1.1rem 1rem 1.25rem .95rem / 1rem 1.2rem .95rem 1.15rem;
    background: linear-gradient(145deg, #f6ecd5, #e1c791);
}

.student-drive-thumbnail-fallback {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    background:
        radial-gradient(circle at 28% 22%, rgba(255,255,255,.72), transparent 26%),
        linear-gradient(145deg, #e7f0ee, #b8d5d1);
}

.student-drive-island-student_presentations .student-drive-thumbnail-fallback {
    background:
        radial-gradient(circle at 28% 22%, rgba(255,255,255,.72), transparent 26%),
        linear-gradient(145deg, #f5e4d3, #dfb584);
}

.student-drive-thumbnail-wrap img,
.student-drive-thumbnail-video {
    position: absolute;
    inset: 0;
    z-index: 1;
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
    background: #f7f1e5;
    transition: transform 220ms ease;
}

.student-drive-thumbnail-video {
    object-fit: cover;
}

.student-drive-thumbnail-wrap.is-unavailable img {
    display: none;
}

.student-drive-file-card:hover .student-drive-thumbnail-wrap img,
.student-drive-file-card:focus-visible .student-drive-thumbnail-wrap img,
.student-drive-file-card:hover .student-drive-thumbnail-video,
.student-drive-file-card:focus-visible .student-drive-thumbnail-video {
    transform: scale(1.025);
}

.student-drive-thumbnail-expand {
    position: absolute;
    right: .65rem;
    bottom: .65rem;
    z-index: 2;
    display: grid;
    place-items: center;
    width: 2.35rem;
    height: 2.35rem;
    border: 2px solid rgba(255,255,255,.88);
    border-radius: 50%;
    background: rgba(20, 62, 76, .82);
    color: #fff;
    font-size: 1.15rem;
    font-weight: 800;
    line-height: 1;
    box-shadow: 0 .45rem .9rem rgba(0,0,0,.22);
}

.student-drive-file-icon {
    display: grid;
    place-items: center;
    width: 4rem;
    height: 5rem;
    padding-top: .35rem;
    border: 1px solid rgba(23, 54, 75, .12);
    border-radius: .65rem .65rem .8rem .65rem;
    color: #fff;
    background: linear-gradient(155deg, #3b91a0, #176b79);
    box-shadow: 0 .5rem 1rem rgba(23, 82, 95, .22);
    font-size: .72rem;
    font-weight: 900;
    letter-spacing: .04em;
}

.student-drive-island-student_presentations .student-drive-file-icon {
    background: linear-gradient(155deg, #e48a50, #b75e37);
    box-shadow: 0 .5rem 1rem rgba(123, 63, 37, .22);
}

.student-drive-file-copy {
    display: grid;
    min-width: 0;
    gap: .18rem;
    padding: .08rem .3rem 0;
}

.student-drive-file-copy strong {
    display: -webkit-box;
    min-height: 2.5rem;
    overflow: hidden;
    color: #17364b;
    font-size: 1rem;
    font-weight: 800;
    line-height: 1.25;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}

.student-drive-file-copy small {
    overflow: hidden;
    color: #627989;
    font-size: .82rem;
    font-weight: 700;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.student-drive-file-copy > span {
    margin-top: .22rem;
    color: #0f7682;
    font-size: .88rem;
    font-weight: 800;
}

.student-drive-empty {
    padding: clamp(1.25rem, 3vw, 2rem);
    border: 1px solid rgba(23, 54, 75, .13);
    border-radius: 1.75rem;
    background: rgba(255, 252, 241, .72);
    text-align: center;
}

.student-drive-actions {
    display: flex;
    justify-content: center;
    gap: .75rem;
    flex-wrap: wrap;
}

.student-drive-modal .modal-content {
    max-height: calc(100vh - 2rem);
    max-height: calc(100dvh - 2rem);
    overflow: hidden;
    border: 1px solid rgba(23, 54, 75, .15);
    border-radius: 1.75rem;
    background: #fffdf7;
    box-shadow: 0 1.5rem 4rem rgba(13, 56, 68, .28);
}

.student-drive-modal .modal-dialog {
    --bs-modal-margin: 1rem;
}

.student-drive-modal .modal-header,
.student-drive-modal .modal-footer {
    border-color: rgba(23, 54, 75, .1);
}

.student-drive-modal .modal-title {
    color: #17364b;
    font-weight: 800;
}

.student-drive-modal .modal-body {
    display: grid;
    min-height: 0;
    gap: .85rem;
    padding: 1rem;
    overflow: auto;
    background:
        radial-gradient(circle at 10% 5%, rgba(255,255,255,.9), transparent 24%),
        linear-gradient(145deg, rgba(221,241,244,.7), rgba(250,235,204,.7));
}

.student-drive-preview {
    position: relative;
    min-height: min(72vh, 780px);
    overflow: hidden;
    border-radius: 1rem;
    background: #fff;
    box-shadow: 0 1rem 2.25rem rgba(23, 54, 75, .18);
}

.student-drive-preview-loading {
    position: absolute;
    z-index: 2;
    inset: 0;
    display: grid;
    place-content: center;
    justify-items: center;
    gap: 1rem;
    padding: 2rem;
    color: #17364b;
    background:
        radial-gradient(circle at 50% 38%, rgba(255,255,255,.98), rgba(255,253,247,.94) 38%, rgba(224,241,242,.95));
    text-align: center;
}

.student-drive-preview-loading[hidden] {
    display: none;
}

.student-drive-preview-loading > span:last-child {
    display: grid;
    gap: .3rem;
}

.student-drive-preview-loading strong {
    font-size: 1.05rem;
    font-weight: 800;
}

.student-drive-preview-loading small {
    color: #536d7d;
    font-size: .9rem;
}

.student-drive-preview-spinner {
    width: 3.2rem;
    height: 3.2rem;
    border: .35rem solid rgba(32, 126, 134, .2);
    border-top-color: #207e86;
    border-radius: 50%;
    animation: student-drive-preview-spin .8s linear infinite;
}

@keyframes student-drive-preview-spin {
    to { transform: rotate(360deg); }
}

.student-drive-modal iframe {
    display: block;
    width: 100%;
    height: min(72vh, 780px);
    border: 0;
    border-radius: 1rem;
    background: #fff;
}

.student-presentation-preview {
    min-height: 0;
    background: #102b3b;
}

.student-presentation-player {
    display: grid;
    grid-template-rows: minmax(0, 1fr) auto;
    width: 100%;
    height: min(72vh, 780px);
    color: #fff;
    background: #102b3b;
}

.student-presentation-player[hidden],
.student-presentation-media[hidden],
.student-presentation-media img[hidden],
.student-presentation-media video[hidden] {
    display: none;
}

.student-presentation-media {
    display: grid;
    width: 100%;
    height: min(68vh, 720px);
    height: min(68dvh, 720px);
    max-height: 720px;
    color: #fff;
    background: #102b3b;
}

.student-presentation-media-stage {
    position: relative;
    display: grid;
    width: 100%;
    height: 100%;
    min-width: 0;
    min-height: 0;
    max-width: 100%;
    max-height: 100%;
    place-items: center;
    overflow: hidden;
    padding: 1rem;
    background:
        radial-gradient(circle at 50% 45%, rgba(40, 85, 105, .72), transparent 55%),
        #102b3b;
}

.student-presentation-media img,
.student-presentation-media video {
    display: block;
    width: 100%;
    height: 100%;
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    background: #071923;
    box-shadow: 0 .8rem 2.4rem rgba(0, 0, 0, .34);
}

.student-presentation-media video {
    min-width: 0;
    min-height: 0;
}

/* Student Presentation images reuse the Creative Art viewer's natural-size
   layout. Video keeps the fixed media stage above. */
.student-presentation-media.is-image {
    height: auto;
    max-height: none;
    color: inherit;
    background: transparent;
}

.student-presentation-media.is-image .student-presentation-media-stage {
    height: auto;
    max-height: none;
    overflow: visible;
    padding: clamp(1rem, 2.5vw, 1.75rem);
    background:
        radial-gradient(circle at 15% 15%, rgba(255,255,255,.7), transparent 25%),
        linear-gradient(145deg, rgba(221,241,244,.7), rgba(250,235,204,.7));
}

.student-presentation-media.is-image img {
    display: block;
    width: auto;
    height: auto;
    max-width: 100%;
    max-height: 72vh;
    object-fit: contain;
    border-radius: 1rem;
    background: #fff;
    box-shadow: 0 1rem 2.25rem rgba(23, 54, 75, .2);
}

.student-presentation-stage {
    position: relative;
    display: grid;
    min-width: 0;
    min-height: 0;
    place-items: center;
    overflow: hidden;
    padding: 1rem;
    outline: 0;
    background:
        radial-gradient(circle at 50% 45%, rgba(40, 85, 105, .72), transparent 55%),
        #102b3b;
}

.student-presentation-stage:focus-visible {
    box-shadow: inset 0 0 0 .2rem rgba(255, 255, 255, .8);
}

.student-presentation-stage canvas {
    display: block;
    max-width: 100%;
    max-height: 100%;
    background: #fff;
    box-shadow: 0 .8rem 2.4rem rgba(0, 0, 0, .34);
}

.student-presentation-error {
    display: grid;
    max-width: 32rem;
    gap: .4rem;
    padding: 1.5rem;
    border: 1px solid rgba(255, 255, 255, .2);
    border-radius: 1rem;
    color: #fff;
    background: rgba(9, 32, 45, .9);
    text-align: center;
}

.student-presentation-error[hidden] {
    display: none;
}

.student-presentation-controls {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .65rem;
    padding: .8rem 1rem;
    border-top: 1px solid rgba(255, 255, 255, .14);
    background: #173b4e;
}

.student-presentation-controls .btn {
    display: inline-flex;
    min-height: 2.55rem;
    align-items: center;
    justify-content: center;
    gap: .45rem;
    border-radius: 999px;
    font-weight: 800;
}

.student-presentation-counter {
    min-width: 9.5rem;
    color: rgba(255, 255, 255, .9);
    font-size: .95rem;
    font-weight: 700;
    text-align: center;
}

.student-presentation-player:fullscreen {
    width: 100vw;
    height: 100vh;
    background: #071923;
}

.student-presentation-player:fullscreen .student-presentation-stage {
    padding: 1.5rem;
}

.student-drive-modal-description {
    width: 100%;
    margin: 0;
    padding: .2rem .35rem;
    color: #435f70;
    font-size: .95rem;
    line-height: 1.5;
}

@media (max-width: 991.98px) {
    .student-drive-folder-grid,
    .student-drive-file-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 575.98px) {
    .student-drive-page {
        padding-top: .25rem;
    }

    .student-drive-island {
        padding: 1rem;
        border-radius: 2.8rem 2.2rem 3rem 2.35rem / 2.35rem 3rem 2.25rem 2.75rem;
    }

    .student-drive-overview {
        align-items: flex-start;
        flex-direction: column;
    }

    .student-drive-counts {
        justify-content: flex-start;
    }

    .student-drive-folder-grid,
    .student-drive-file-grid {
        grid-template-columns: 1fr;
    }

    .student-drive-file-copy strong {
        min-height: 0;
    }

    .student-drive-actions .btn,
    .student-drive-modal .modal-footer .btn {
        width: 100%;
    }

    .student-drive-modal iframe {
        height: 66vh;
    }

    .student-drive-preview {
        min-height: 66vh;
    }

    .student-presentation-preview {
        min-height: 0;
    }

    .student-presentation-player {
        height: 66vh;
    }

    .student-presentation-media {
        height: 60vh;
        height: 60dvh;
        max-height: 60dvh;
    }

    .student-presentation-controls {
        flex-wrap: wrap;
        gap: .45rem;
        padding: .65rem;
    }

    .student-presentation-controls .btn {
        width: auto;
    }

    .student-presentation-controls .btn > span:not([aria-hidden]) {
        display: none;
    }

    .student-presentation-counter {
        min-width: 7.75rem;
        order: -1;
        width: 100%;
    }
}

@media (prefers-reduced-motion: reduce) {
    .student-drive-folder-card,
    .student-drive-file-card,
    .student-drive-thumbnail-wrap img {
        transition: none;
    }

    .student-drive-preview-spinner {
        animation-duration: 1.8s;
    }
}

/* v0.19.18 — Prizes, gifts and MakerWorld */
.prizes-gifts-page {
    width: min(100%, 1120px);
    margin-inline: auto;
    padding: .75rem 0 3.5rem;
}

.prizes-gifts-islands {
    display: grid;
    gap: clamp(2.5rem, 5vw, 4.5rem);
}

.prizes-gifts-gallery-island {
    width: 100%;
    min-height: 0;
    padding: clamp(1.35rem, 3vw, 2.5rem);
    border-radius: 5.2rem 4.35rem 5.7rem 4.55rem / 4.6rem 5.5rem 4.25rem 5rem;
    scroll-margin-top: 7rem;
}

.prizes-gifts-gallery-island-gifts {
    border-radius: 4.45rem 5.55rem 4.8rem 6rem / 5.35rem 4.4rem 5.7rem 4.65rem;
}

.prizes-gifts-gallery-island .yesland-island-content,
.prizes-gifts-makerworld-island .yesland-island-content {
    transform: none;
}

.prizes-gifts-gallery-island .yesland-island-decoration-rocks {
    left: 1.2rem;
    bottom: .7rem;
    transform: scale(.82);
    transform-origin: left bottom;
}

.prizes-gifts-gallery-island .yesland-island-decoration-shells {
    right: 1.2rem;
    bottom: .75rem;
    transform: scale(.82) rotate(4deg);
    transform-origin: right bottom;
}

.prizes-gifts-makerworld-island {
    width: min(100%, 780px);
    min-height: 260px;
    margin-inline: auto;
    padding: clamp(2rem, 5vw, 3.5rem);
    border-radius: 48% 52% 44% 56% / 55% 45% 58% 42%;
}

.prizes-gifts-makerworld-island .yesland-island-decoration-grass {
    left: 1.25rem;
    bottom: .65rem;
    transform: scale(.85);
    transform-origin: left bottom;
}

.prizes-gifts-makerworld-content {
    position: relative;
    z-index: 2;
    display: grid;
    justify-items: center;
    gap: .75rem;
    max-width: 36rem;
    margin-inline: auto;
    color: #17364b;
    text-align: center;
}

.prizes-gifts-makerworld-kicker {
    color: #0f7682;
    font-size: .82rem;
    font-weight: 800;
    letter-spacing: .12em;
    text-transform: uppercase;
}

.prizes-gifts-makerworld-content h2 {
    margin: 0;
    color: #17364b;
    font-size: clamp(1.75rem, 3.4vw, 2.6rem);
    font-weight: 800;
}

.prizes-gifts-makerworld-content p {
    margin: 0 0 .35rem;
    color: #536d7d;
    font-size: 1.05rem;
}

.prizes-gifts-pagination {
    margin-top: 1.5rem;
}

.prizes-gifts-pagination .pagination {
    flex-wrap: wrap;
    gap: .35rem;
}

.prizes-gifts-pagination .page-link {
    min-width: 2.55rem;
    border: 1px solid rgba(42, 105, 126, .22);
    border-radius: 999px !important;
    background: rgba(255, 255, 255, .78);
    color: #175f7d;
    text-align: center;
    font-weight: 800;
    box-shadow: 0 .18rem .35rem rgba(35, 75, 88, .10);
}

.prizes-gifts-pagination .page-item.active .page-link {
    border-color: #1687b1;
    background: #1687b1;
    color: #fff;
}

.prizes-gifts-pagination .page-item.disabled .page-link {
    background: rgba(255, 255, 255, .42);
    color: #71838b;
}

/* v0.19.23 — Main Square department hub */
.departments-hub-page {
    width: min(100%, 1040px);
    margin-inline: auto;
    padding: .75rem 0 3.75rem;
}

.departments-hub-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: clamp(2rem, 5vw, 4.25rem);
    align-items: stretch;
}

.department-hub-island {
    min-height: 330px;
    padding: clamp(2.2rem, 5vw, 3.6rem) clamp(1.6rem, 4vw, 3rem);
    display: grid;
    place-items: center;
    color: #17364b;
    text-align: center;
    text-decoration: none;
    transition: transform 180ms ease, box-shadow 180ms ease, filter 180ms ease;
}

.department-hub-island-school {
    border-radius: 48% 52% 45% 55% / 55% 44% 56% 45%;
    transform: rotate(-.55deg);
}

.department-hub-island-leps {
    border-radius: 56% 44% 53% 47% / 45% 57% 43% 55%;
    transform: rotate(.65deg);
}

.department-hub-island:hover,
.department-hub-island:focus-visible {
    color: #17364b;
    transform: translateY(-7px) rotate(0deg) scale(1.018);
    box-shadow:
        0 .18rem .18rem rgba(255,255,255,.72) inset,
        .22rem .35rem .65rem rgba(255,255,255,.52) inset,
        -.34rem -.55rem .9rem rgba(170,111,41,.22) inset,
        0 -.48rem .26rem rgba(167,111,43,.16) inset,
        0 .34rem 0 #dfbd79,
        0 .68rem 0 #cfa65d,
        0 .9rem .3rem rgba(104,68,27,.30),
        0 1.8rem 2.8rem rgba(16,92,101,.4),
        0 2.5rem 4rem rgba(7,79,88,.2);
}

.department-hub-content {
    display: grid;
    justify-items: center;
    gap: .8rem;
    max-width: 23rem;
    transform: none;
}

.department-hub-code {
    display: inline-grid;
    min-width: 4.4rem;
    min-height: 4.4rem;
    padding: .65rem;
    place-items: center;
    border-radius: 50%;
    color: #fff;
    font-size: 1.15rem;
    font-weight: 900;
    letter-spacing: .03em;
    box-shadow: inset 0 .14rem .25rem rgba(255,255,255,.32), 0 .35rem .7rem rgba(32,68,79,.2);
}

.department-hub-island-school .department-hub-code,
.department-hub-island-school .department-hub-action {
    background: linear-gradient(180deg, #27a9d3, #157fa8);
}

.department-hub-island-leps .department-hub-code,
.department-hub-island-leps .department-hub-action {
    background: linear-gradient(180deg, #e99545, #ca6828);
}

.department-hub-content h2 {
    margin: .15rem 0 0;
    color: #17364b;
    font-size: clamp(1.8rem, 3.4vw, 2.65rem);
    font-weight: 800;
}

.department-hub-content p {
    min-height: 3.3rem;
    margin: 0;
    color: #526d7c;
    font-size: 1.05rem;
    line-height: 1.55;
}

.department-hub-action {
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    margin-top: .45rem;
    padding: .75rem 1.2rem;
    border-radius: 999px;
    color: #fff;
    font-weight: 800;
    box-shadow: 0 .25rem .55rem rgba(36, 70, 79, .2);
}

.department-hub-island .yesland-island-decoration-rocks,
.department-hub-island .yesland-island-decoration-shells {
    transform: scale(.82);
    transform-origin: bottom;
}

@media (max-width: 767.98px) {
    .departments-hub-grid {
        grid-template-columns: 1fr;
    }

    .department-hub-island {
        min-height: 285px;
    }
}

@media (max-width: 575.98px) {
    .departments-hub-page {
        padding-top: .25rem;
    }

    .department-hub-island {
        min-height: 260px;
        border-radius: 3.7rem 3rem 4rem 3.25rem / 3.2rem 4rem 3rem 3.75rem;
    }

    .prizes-gifts-pagination .page-link {
        min-width: 2.35rem;
        padding-inline: .65rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .department-hub-island {
        transition: none;
    }
}

@media (max-width: 575.98px) {
    .prizes-gifts-page {
        padding-top: .25rem;
    }

    .prizes-gifts-gallery-island {
        padding: 1rem;
        border-radius: 2.8rem 2.2rem 3rem 2.35rem / 2.35rem 3rem 2.25rem 2.75rem;
    }

    .prizes-gifts-makerworld-island {
        min-height: 235px;
        border-radius: 43% 57% 46% 54% / 55% 44% 56% 45%;
    }

    .prizes-gifts-makerworld-content .btn {
        width: 100%;
    }
}

/* v0.19.43 — Two-row public footer and dedicated Contact page */
.site-footer > .container {
    padding-top: .65rem !important;
    padding-bottom: .4rem !important;
}

.site-footer-main {
    display: grid;
    grid-template-columns: minmax(240px, 1fr) minmax(320px, auto) minmax(370px, 1fr);
    align-items: center;
    gap: .75rem 1.5rem;
}

.site-footer-identity,
.site-footer-navigation {
    min-width: 0;
}

.site-footer-brand {
    max-width: 100%;
}

.site-footer-identity {
    justify-self: start;
}

.site-footer-brand small {
    white-space: nowrap;
}

.site-footer-departments {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin-top: 0;
    justify-self: center;
}

.site-footer-navigation {
    justify-self: end;
    text-align: right;
}

.site-footer-navigation .site-footer-heading {
    margin-bottom: .2rem;
}

.site-footer-links {
    display: grid;
    gap: .18rem;
}

.site-footer-link-row {
    display: flex;
    flex-wrap: nowrap;
    justify-content: flex-end;
    gap: .2rem 1rem;
}

.site-footer-link-row a {
    white-space: nowrap;
}

.site-footer-bottom {
    justify-content: center;
    gap: .45rem;
    margin-top: .4rem;
    padding-top: .3rem;
    font-size: .72rem;
}

.yesland-contact-page {
    display: grid;
    gap: 1.5rem;
    max-width: 880px;
    margin: 0 auto;
}

.yesland-contact-island {
    min-height: 310px;
    padding: 3rem;
    border-radius: 44% 56% 47% 53% / 54% 43% 57% 46%;
}

.yesland-contact-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.5rem 2.5rem;
    width: min(100%, 620px);
    margin: auto;
}

.yesland-contact-item {
    display: grid;
    align-content: start;
    gap: .18rem;
}

.yesland-contact-item a {
    width: fit-content;
    color: inherit;
    text-decoration: none;
}

.yesland-contact-item a:hover {
    color: var(--bs-primary);
    text-decoration: underline;
}

.yesland-contact-actions {
    grid-column: 1 / -1;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: .75rem;
    padding-top: .35rem;
}

.yesland-contact-actions .btn {
    min-width: 220px;
}

@media (max-width: 1199.98px) {
    .site-footer-main {
        grid-template-columns: 1fr 1.25fr;
        align-items: start;
    }

    .site-footer-navigation {
        grid-column: 1 / -1;
        justify-self: stretch;
        text-align: left;
    }

    .site-footer-navigation .site-footer-heading {
        display: none;
    }

    .site-footer-links {
        display: flex;
        flex-wrap: wrap;
        gap: .25rem 1rem;
    }

    .site-footer-link-row {
        justify-content: flex-start;
    }
}

@media (max-width: 575.98px) {
    .site-footer-main,
    .yesland-contact-grid {
        grid-template-columns: 1fr;
    }

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

    .site-footer-brand small {
        white-space: normal;
    }

    .site-footer-bottom {
        flex-direction: row;
        flex-wrap: wrap;
    }

    .yesland-contact-island {
        min-height: 0;
        padding: 2rem 1.5rem;
        border-radius: 2.8rem 2.2rem 3rem 2.35rem / 2.35rem 3rem 2.25rem 2.75rem;
    }

    .yesland-contact-actions .btn {
        width: 100%;
        min-width: 0;
    }
}

/* v0.19.57 — Legal, privacy and consent system */
.site-footer-legal-links {
    display: flex;
    flex-wrap: nowrap;
    justify-content: center;
    gap: .1rem .75rem;
    font-size: .7rem;
}

.site-footer-bottom {
    flex-wrap: wrap;
}

.site-footer-copyright {
    white-space: nowrap;
}

.site-footer-legal-links a,
.site-footer-legal-links button {
    padding: 0;
    border: 0;
    background: transparent;
    color: inherit;
    font: inherit;
    text-decoration: none;
    white-space: nowrap;
    cursor: pointer;
}

.site-footer-legal-links a:hover,
.site-footer-legal-links button:hover,
.site-footer-legal-links a:focus-visible,
.site-footer-legal-links button:focus-visible {
    color: var(--bs-primary);
    text-decoration: underline;
    text-underline-offset: .18em;
}

.legal-page-nav {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: .55rem;
    width: min(100%, 980px);
    margin: 0 auto 1.15rem;
}

.legal-page-nav a,
.legal-page-nav button {
    min-height: 2.55rem;
    padding: .55rem .85rem;
    border: 1px solid rgba(47, 125, 97, .25);
    border-radius: 999px;
    background: rgba(255, 250, 240, .88);
    color: #315d52;
    font: inherit;
    font-size: .82rem;
    font-weight: 800;
    text-decoration: none;
    cursor: pointer;
}

.legal-page-nav a:hover,
.legal-page-nav a:focus-visible,
.legal-page-nav button:hover,
.legal-page-nav button:focus-visible,
.legal-page-nav .is-current {
    border-color: #2f7d61;
    background: #2f7d61;
    color: #fff;
    outline: none;
}

.legal-document {
    width: min(100%, 980px);
    margin: 0 auto;
    padding: clamp(1.35rem, 4vw, 3.25rem);
    border: 1px solid rgba(94, 111, 91, .12);
    border-radius: 3.25rem 2.4rem 3.6rem 2.75rem / 2.65rem 3.45rem 2.55rem 3.2rem;
    background: rgba(255, 252, 242, .96);
    box-shadow: 0 1rem 2.8rem rgba(74, 92, 72, .14);
    color: #283c38;
    line-height: 1.68;
}

.legal-document h1 {
    margin: 0;
    color: #286958;
    font-size: clamp(2rem, 6vw, 3.1rem);
    line-height: 1.12;
    letter-spacing: -.035em;
}

.legal-document-meta {
    margin: .8rem 0 2rem;
    padding: .75rem 1rem;
    border-left: .28rem solid #e7a52f;
    border-radius: 0 .75rem .75rem 0;
    background: rgba(247, 231, 185, .45);
    color: #586762;
    font-size: .88rem;
    line-height: 1.5;
}

.legal-document h2 {
    margin: 2.25rem 0 .8rem;
    color: #315d52;
    font-size: clamp(1.3rem, 3vw, 1.65rem);
    line-height: 1.3;
}

.legal-document h3 {
    margin: 1.45rem 0 .55rem;
    color: #4f6f66;
    font-size: 1.08rem;
    line-height: 1.4;
}

.legal-document p {
    margin: 0 0 .88rem;
}

.legal-document-emphasis {
    color: #304944;
}

.legal-document ul {
    margin: -.2rem 0 1.1rem;
    padding-left: 1.35rem;
}

.legal-document li {
    margin: .3rem 0;
    padding-left: .2rem;
}

.legal-document li::marker {
    color: #d78d23;
}

.legal-table-wrap {
    max-width: 100%;
    margin: 1rem 0 1.25rem;
    overflow-x: auto;
    border: 1px solid rgba(47, 125, 97, .18);
    border-radius: 1rem;
}

.legal-table {
    width: 100%;
    min-width: 560px;
    border-collapse: collapse;
    background: #fff;
}

.legal-table th,
.legal-table td {
    padding: .85rem 1rem;
    border-bottom: 1px solid rgba(47, 125, 97, .13);
    text-align: left;
    vertical-align: top;
}

.legal-table th {
    background: #e8f3ed;
    color: #315d52;
    font-size: .85rem;
}

.legal-table tr:last-child td {
    border-bottom: 0;
}

.legal-table p {
    margin: 0;
}

.legal-consent-page {
    display: grid;
    place-items: center;
    min-height: min(70vh, 46rem);
    padding-block: 1rem 2rem;
}

.legal-consent-card {
    width: min(100%, 720px);
    padding: clamp(1.35rem, 4vw, 2.6rem);
    border: 1px solid rgba(47, 125, 97, .15);
    border-radius: 3rem 2.4rem 3.25rem 2.55rem / 2.5rem 3.15rem 2.4rem 3rem;
    background: rgba(255, 252, 242, .97);
    box-shadow: 0 1rem 3rem rgba(54, 81, 71, .16);
}

.legal-consent-heading {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-bottom: 1.25rem;
}

.legal-consent-heading p {
    margin: 0 0 .1rem;
    color: #2f7d61;
    font-size: .75rem;
    font-weight: 850;
    letter-spacing: .09em;
    text-transform: uppercase;
}

.legal-consent-heading h1 {
    margin: 0;
    color: #284b43;
    font-size: clamp(1.55rem, 4vw, 2.2rem);
}

.legal-consent-icon {
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 3.4rem;
    height: 3.4rem;
    border-radius: 48% 52% 44% 56% / 56% 42% 58% 44%;
    background: #e3f2e9;
    color: #2f7d61;
    font-size: 1.35rem;
    font-weight: 900;
}

.legal-consent-notice {
    margin: 0 0 1rem;
    color: #324944;
    font-size: clamp(1.05rem, 2.5vw, 1.2rem);
    line-height: 1.65;
}

.legal-consent-links,
.legal-inline-links {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem .8rem;
}

.legal-consent-links a,
.legal-inline-links a {
    color: #2f6f5b;
    font-weight: 750;
}

.legal-consent-check {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: .7rem;
    align-items: start;
    padding: 1rem;
    border: 1px solid rgba(47, 125, 97, .17);
    border-radius: 1rem;
    background: rgba(255, 255, 255, .72);
    line-height: 1.5;
}

.legal-consent-check .form-check-input {
    margin-top: .2rem;
}

.legal-consent-check a {
    display: block;
    width: fit-content;
    margin-top: .25rem;
    color: #2f6f5b;
    font-size: .82rem;
    font-weight: 750;
}

.legal-consent-version {
    margin-top: 1.2rem;
    color: #71807b;
    font-size: .72rem;
    text-align: center;
}

@media (max-width: 575.98px) {
    .legal-document {
        border-radius: 2rem 1.65rem 2.2rem 1.8rem / 1.8rem 2.1rem 1.7rem 2rem;
    }

    .legal-page-nav {
        justify-content: flex-start;
        overflow-x: auto;
        flex-wrap: nowrap;
        padding-bottom: .2rem;
    }

    .legal-page-nav a,
    .legal-page-nav button {
        flex: 0 0 auto;
    }
}
