:root {
    /* Warm stone neutrals */
    --color-bg: #f8f7f4;
    --color-surface: #ffffff;
    --color-text: #1c1917;
    --color-muted: #57534e;
    --color-border: #e7e5e4;

    /* Education palette */
    --color-indigo-velvet: #3d348b;
    --color-medium-slate-blue: #7678ed;
    --color-amber-flame: #f7b801;
    --color-tiger-orange: #f18701;
    --color-cayenne-red: #f35b04;

    /* Primary — slate blue with indigo depth */
    --color-primary: var(--color-medium-slate-blue);
    --color-primary-dark: var(--color-indigo-velvet);
    --color-primary-light: #eef0fd;
    --color-primary-soft: #d4d5f9;

    /* Warm accents */
    --color-accent: var(--color-tiger-orange);
    --color-accent-light: #fff8e6;

    /* Navbar */
    --color-nav-bg: var(--color-indigo-velvet);
    --color-nav-text: rgba(255, 255, 255, 0.92);
    --color-nav-text-muted: rgba(255, 255, 255, 0.72);
    --color-nav-border: rgba(255, 255, 255, 0.14);
    --color-nav-hover-bg: rgba(255, 255, 255, 0.1);
    --color-nav-cta-bg: var(--color-amber-flame);
    --color-nav-cta-text: var(--color-indigo-velvet);

    /* Semantic */
    --color-success-bg: #ecfdf3;
    --color-success-text: #166534;
    --color-error-bg: #fef2f2;
    --color-error-text: #b91c1c;
    --color-warning-bg: #fffbeb;
    --color-warning-border: #fcd34d;
    --color-warning-text: #92400e;

    /* Module tints */
    --color-module-admin-bg: var(--color-primary-light);
    --color-module-admin-text: var(--color-indigo-velvet);
    --color-module-general-bg: #fff8e6;
    --color-module-general-text: #9a5a00;
    --color-module-vce-bg: #eef0fd;
    --color-module-vce-text: var(--color-indigo-velvet);
    --color-module-ld-bg: #fff4e0;
    --color-module-ld-text: var(--color-tiger-orange);
    --color-module-exams-bg: #fff0eb;
    --color-module-exams-text: var(--color-cayenne-red);
    --color-module-premium-bg: #fffbeb;
    --color-module-premium-text: #b36a00;
    --color-module-staff-bg: #fef2f2;
    --color-module-staff-text: #b91c1c;
    --color-module-support-bg: #eef0fd;
    --color-module-support-text: var(--color-medium-slate-blue);
    --color-module-timetable-bg: #f3f0ff;
    --color-module-timetable-text: var(--color-indigo-velvet);
    --color-module-daily-bg: #fef3c7;
    --color-module-daily-text: #b45309;

    --shadow-sm: 0 1px 3px rgba(28, 25, 23, 0.06);
    --shadow-md: 0 6px 20px rgba(61, 52, 139, 0.1);
    --shadow-lg: 0 16px 40px rgba(61, 52, 139, 0.12);
    --radius: 8px;
    --max-width: 72rem;
}

*,
*::before,
*::after {
    box-sizing: border-box;
}

body {
    margin: 0;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    font-family: "Segoe UI", system-ui, -apple-system, sans-serif;
    line-height: 1.6;
    color: var(--color-text);
    background: var(--color-bg);
}

a {
    color: var(--color-primary);
    text-decoration: none;
}

a:hover {
    text-decoration: underline;
}

.container {
    width: min(100% - 2rem, var(--max-width));
    margin-inline: auto;
}

.site-header {
    background-color: var(--color-nav-bg);
    background-image: none;
    border-bottom: 1px solid var(--color-nav-border);
    box-shadow: var(--shadow-sm);
    color: var(--color-nav-text);
}

.site-header__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    min-height: 4rem;
}

.masquerade-banner {
    background: var(--color-warning-bg);
    border-bottom: 1px solid #f0d998;
    color: var(--color-warning-text);
}

.masquerade-banner__inner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.75rem 0;
}

.masquerade-banner__text {
    margin: 0;
    font-size: 0.92rem;
}

.demo-anonymize-banner {
    background: #e8f4fd;
    border-bottom: 1px solid #b8daf5;
    color: #0b4f7a;
}

.demo-anonymize-banner__inner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.75rem 0;
}

.demo-anonymize-banner__text {
    margin: 0;
    font-size: 0.92rem;
}

.demo-mode-banner {
    background: #fff4e5;
    border-bottom: 1px solid #f0c987;
    color: #7a4a00;
}

.demo-mode-banner__inner {
    padding: 0.75rem 0;
}

.demo-mode-banner__text {
    margin: 0;
    font-size: 0.92rem;
}

.cookie-consent {
    position: fixed;
    inset-inline: 0;
    bottom: 0;
    z-index: 1200;
    pointer-events: none;
}

.cookie-consent--hidden {
    display: none;
}

.cookie-consent__bar {
    pointer-events: auto;
    border-top: 1px solid var(--color-border);
    background: var(--color-surface);
    box-shadow: 0 -8px 24px rgba(28, 25, 23, 0.08);
}

.cookie-consent__bar-inner {
    display: grid;
    gap: 1rem;
    padding-block: 1rem;
}

.cookie-consent__title {
    margin: 0 0 0.35rem;
    font-size: 1rem;
    font-weight: 700;
    color: var(--color-primary-dark);
}

.cookie-consent__text {
    margin: 0;
    font-size: 0.92rem;
    color: var(--color-muted);
}

.cookie-consent__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.cookie-consent-modal {
    position: fixed;
    inset: 0;
    z-index: 1300;
}

.cookie-consent-modal[hidden] {
    display: none;
}

.cookie-consent-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(28, 25, 23, 0.45);
}

.cookie-consent-modal__panel {
    position: relative;
    width: min(100% - 2rem, 32rem);
    margin: 10vh auto 0;
    background: var(--color-surface);
    border-radius: var(--radius);
    box-shadow: var(--shadow-lg);
    outline: none;
}

.cookie-consent-modal__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 1.25rem 0;
}

.cookie-consent-modal__title {
    margin: 0;
    font-size: 1.125rem;
    color: var(--color-primary-dark);
}

.cookie-consent-modal__close {
    border: 0;
    background: transparent;
    color: var(--color-muted);
    font-size: 1.5rem;
    line-height: 1;
    cursor: pointer;
    padding: 0.25rem;
}

.cookie-consent-modal__close:hover {
    color: var(--color-text);
}

.cookie-consent-modal__body {
    padding: 0.75rem 1.25rem 1rem;
}

.cookie-consent-modal__intro {
    margin: 0 0 1rem;
    font-size: 0.92rem;
    color: var(--color-muted);
}

.cookie-consent-category {
    padding: 0.85rem 0;
    border-top: 1px solid var(--color-border);
}

.cookie-consent-category__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.35rem;
}

.cookie-consent-category__title {
    margin: 0;
    font-size: 0.98rem;
    font-weight: 600;
    color: var(--color-text);
}

.cookie-consent-category__badge {
    font-size: 0.78rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--color-muted);
}

.cookie-consent-category__text {
    margin: 0;
    font-size: 0.88rem;
    color: var(--color-muted);
}

.cookie-consent-toggle {
    width: 1.1rem;
    height: 1.1rem;
    accent-color: var(--color-primary);
}

.cookie-consent-modal__footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 0.5rem;
    padding: 0 1.25rem 1.25rem;
}

.cookie-consent-notice {
    margin: 0 0 1rem;
    padding: 0.85rem 1rem;
    border: 1px solid var(--color-warning-border);
    border-radius: var(--radius);
    background: var(--color-warning-bg);
    color: var(--color-warning-text);
    font-size: 0.92rem;
}

.cookie-consent-notice p {
    margin: 0;
}

.cookie-consent-notice__link {
    border: 0;
    padding: 0;
    background: transparent;
    color: inherit;
    font: inherit;
    font-weight: 600;
    text-decoration: underline;
    cursor: pointer;
}

.cookie-consent-placeholder {
    display: grid;
    place-items: center;
    min-height: 12rem;
    padding: 1.5rem;
    border: 1px dashed var(--color-border);
    border-radius: var(--radius);
    background: var(--color-bg);
    text-align: center;
    color: var(--color-muted);
}

.cookie-consent-placeholder p {
    margin: 0 0 0.75rem;
    max-width: 28rem;
}

body.cookie-consent-modal-open {
    overflow: hidden;
}

@media (min-width: 48rem) {
    .cookie-consent__bar-inner {
        grid-template-columns: 1fr auto;
        align-items: center;
    }

    .cookie-consent__actions {
        justify-content: flex-end;
    }
}

body.demo-mode .demo-mode__disabled,
body.demo-mode .file-dropzone.demo-mode__disabled {
    opacity: 0.55;
    cursor: not-allowed;
    pointer-events: none;
}

body.demo-mode .demo-mode__form button[type="submit"]:disabled,
body.demo-mode .demo-mode__form input[type="submit"]:disabled {
    cursor: not-allowed;
}

.brand {
    font-size: 1.125rem;
    font-weight: 700;
    color: #fff;
    text-decoration: none;
    flex-shrink: 0;
    min-width: 0;
}

.brand:hover {
    text-decoration: none;
}

.site-nav {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.site-nav__links {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    justify-content: flex-end;
    gap: 0.125rem 0.35rem;
    min-width: 0;
}

.site-nav__actions {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-left: 0.5rem;
    padding-left: 0.75rem;
    border-left: 1px solid var(--color-nav-border);
}

.site-nav a,
.site-nav button {
    font-size: 0.92rem;
}

.site-nav--app {
    flex: 1;
    min-width: 0;
    justify-content: flex-end;
    gap: 0.75rem;
}

.site-nav--public {
    position: relative;
    flex-shrink: 0;
}

.site-nav__menu-toggle {
    display: none;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    padding: 0;
    border: 1px solid var(--color-nav-border);
    border-radius: var(--radius);
    background: rgba(255, 255, 255, 0.08);
    color: var(--color-nav-text);
    cursor: pointer;
}

.site-nav__menu-toggle:hover {
    border-color: rgba(255, 255, 255, 0.28);
    background: var(--color-nav-hover-bg);
}

.site-nav__menu-toggle-icon {
    display: block;
    width: 1.15rem;
    height: 2px;
    background: currentColor;
    box-shadow: 0 -6px 0 currentColor, 0 6px 0 currentColor;
}

.site-nav__menu {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.site-nav__modules {
    position: relative;
}

.site-nav__modules-toggle {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.35rem 0.65rem;
    border: 1px solid var(--color-nav-border);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.08);
    color: var(--color-nav-text-muted);
    font: inherit;
    font-size: 0.92rem;
    cursor: pointer;
    white-space: nowrap;
}

.site-nav__modules-toggle:hover,
.site-nav__modules-toggle.is-active {
    color: #fff;
    border-color: rgba(255, 255, 255, 0.28);
    background: var(--color-nav-hover-bg);
}

.site-nav__modules-toggle.is-active {
    font-weight: 600;
}

.site-nav__modules-toggle::after {
    content: "";
    width: 0.35rem;
    height: 0.35rem;
    margin-left: 0.2rem;
    border-right: 1.5px solid currentColor;
    border-bottom: 1.5px solid currentColor;
    transform: rotate(45deg) translateY(-0.05rem);
    opacity: 0.75;
}

.site-nav__modules-menu {
    position: absolute;
    top: calc(100% + 0.35rem);
    right: 0;
    z-index: 40;
    display: none;
    flex-direction: column;
    align-items: stretch;
    min-width: 12rem;
    padding: 0.35rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    background: var(--color-surface);
    box-shadow: var(--shadow-md);
}

.site-nav__modules-toggle[aria-expanded="true"] + .site-nav__modules-menu {
    display: flex;
}

.site-nav__modules-menu .site-nav__link {
    display: block;
    padding: 0.55rem 0.75rem;
}

.site-nav__account {
    position: relative;
    flex-shrink: 0;
}

.site-nav__account-toggle {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.35rem 0.6rem 0.35rem 0.35rem;
    border: 1px solid var(--color-nav-border);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.08);
    color: var(--color-nav-text);
    cursor: pointer;
    max-width: 12rem;
}

.site-nav__account-toggle:hover {
    border-color: rgba(255, 255, 255, 0.28);
    background: var(--color-nav-hover-bg);
}

.site-nav__account-avatar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    border-radius: 50%;
    background: var(--color-primary);
    color: #fff;
    font-size: 0.75rem;
    font-weight: 700;
    flex-shrink: 0;
}

.site-nav__account-label {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 0.85rem;
    color: var(--color-nav-text-muted);
}

.site-nav__account-menu {
    position: absolute;
    top: calc(100% + 0.4rem);
    right: 0;
    min-width: 14rem;
    padding: 0.75rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    background: var(--color-surface);
    box-shadow: var(--shadow-sm);
    z-index: 20;
}

.site-nav__account-meta {
    margin: 0;
    font-size: 0.85rem;
    color: var(--color-muted);
}

.site-nav__account-meta--email {
    margin-top: 0.15rem;
    padding-bottom: 0.65rem;
    border-bottom: 1px solid var(--color-border);
    word-break: break-all;
}

.site-nav__account-actions {
    display: grid;
    gap: 0.15rem;
    margin-top: 0.65rem;
}

.site-nav__account-link {
    display: block;
    padding: 0.45rem 0.5rem;
    border-radius: calc(var(--radius) - 2px);
    color: var(--color-text);
    text-decoration: none;
}

.site-nav__account-link:hover {
    background: var(--color-bg);
    text-decoration: none;
}

.site-nav__account-link.is-active {
    color: var(--color-primary-dark);
    font-weight: 600;
}

.btn {
    display: inline-block;
    padding: 0.55rem 1rem;
    border-radius: var(--radius);
    border: 1px solid transparent;
    font-size: 0.95rem;
    font-weight: 600;
    text-decoration: none;
    cursor: pointer;
    line-height: 1.2;
}

.btn:hover {
    text-decoration: none;
}

.btn-primary {
    background: var(--color-primary);
    color: #fff;
}

.btn-primary:hover {
    background: var(--color-primary-dark);
    color: #fff;
}

.btn-secondary {
    background: var(--color-surface);
    color: var(--color-primary);
    border-color: var(--color-border);
}

.btn-secondary:hover {
    background: var(--color-bg);
}

main {
    flex: 1 0 auto;
    padding: 2.5rem 0 4rem;
}

.page-home main {
    padding-top: 0;
}

.page-title {
    margin: 0 0 0.5rem;
    font-size: 2rem;
    color: var(--color-primary-dark);
}

.lead {
    font-size: 1.125rem;
    color: var(--color-muted);
    max-width: 42rem;
}

.card {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    padding: 1.5rem;
    box-shadow: var(--shadow-sm);
    transition: box-shadow 0.15s ease, border-color 0.15s ease;
}

.card-narrow {
    max-width: 28rem;
    margin-inline: auto;
}

.school-settings-sections {
    display: grid;
    gap: 1.25rem;
}

.school-settings-section__title {
    margin: 0 0 0.35rem;
    font-size: 1.125rem;
}

.school-settings-section__lead {
    margin: 0 0 1rem;
    max-width: 42rem;
}

.school-settings-section .form-field:last-child {
    margin-bottom: 0;
}

.school-settings-form__actions {
    margin-top: 1.25rem;
}

.demo-card__actions {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0.85rem;
    margin-top: 1.25rem;
}

.demo-card__primary {
    width: 100%;
    justify-content: center;
    text-align: center;
}

.demo-card__links {
    margin: 0;
    text-align: center;
    font-size: 0.95rem;
}

.demo-card__links a {
    color: var(--color-muted);
    text-decoration: underline;
    text-underline-offset: 0.15em;
}

.demo-card__links a:hover {
    color: var(--color-primary);
}

.demo-card__sep {
    margin-inline: 0.35rem;
    color: var(--color-muted);
}

.demo-module-preview-notice {
    display: grid;
    gap: 0.75rem;
}

.demo-module-preview-notice__title {
    margin: 0;
}

.demo-module-preview-notice__text {
    margin: 0;
}

.demo-module-preview-notice__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
}

.demo-module-preview__stack {
    display: grid;
    gap: 1.25rem;
}

.demo-module-feature {
    display: grid;
    gap: 1.25rem;
    overflow: hidden;
}

@media (min-width: 768px) {
    .demo-module-feature {
        grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
        align-items: center;
    }

    .demo-module-feature:nth-child(even) .demo-module-feature__media {
        order: 2;
    }
}

.demo-module-feature__image {
    display: block;
    width: 100%;
    height: auto;
    border-radius: var(--radius-md);
    border: 1px solid var(--color-border);
}

.demo-module-feature__eyebrow {
    margin: 0 0 0.35rem;
    font-size: 0.8rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--color-primary);
}

.demo-module-feature__title {
    margin: 0 0 0.5rem;
    font-size: 1.25rem;
}

.messages {
    list-style: none;
    padding: 0;
    margin: 0;
}

.site-alerts .messages {
    display: grid;
    gap: 0.5rem;
}

.site-alerts--top {
    padding: 0;
    background: transparent;
    border-bottom: none;
}

.site-alerts--top .messages {
    gap: 0;
}

.site-alerts--top .message {
    margin-bottom: 0;
    border-radius: 0;
    border-left: none;
    border-right: none;
    border-top: none;
    padding: 0;
}

.site-alerts--top .message__inner {
    padding-block: 0.75rem;
}

.message {
    padding: 0.75rem 1rem;
    border-radius: var(--radius);
    border: 1px solid transparent;
}

.site-alerts .message {
    margin-bottom: 0;
}

.message-success {
    background: var(--color-success-bg);
    color: var(--color-success-text);
    border-color: #bbf7d0;
}

.message-error,
.message-danger {
    background: var(--color-error-bg);
    color: var(--color-error-text);
    border-color: #fecaca;
}

.message-info {
    background: var(--color-primary-light);
    color: var(--color-primary-dark);
    border-color: var(--color-primary-soft);
}

.message-warning {
    background: var(--color-warning-bg);
    color: var(--color-warning-text);
    border-color: var(--color-warning-border);
}

.form-field {
    margin-bottom: 1rem;
}

.form-field label {
    display: block;
    margin-bottom: 0.35rem;
    font-weight: 600;
}

.form-field__help {
    margin: 0.35rem 0 0;
}

.form-errors,
.form-field .errorlist,
.form-field ul.errorlist,
.site-form .nonfield-errors {
    margin: 0 0 1rem;
    padding: 0.75rem 1rem;
    border-radius: var(--radius);
    background: var(--color-error-bg);
    color: var(--color-error-text);
    border: 1px solid #fecaca;
    list-style: none;
}

.form-field .errorlist,
.form-field ul.errorlist {
    margin: 0.35rem 0 0;
    padding: 0.5rem 0.75rem;
    font-size: 0.9rem;
}

.form-control,
.form-field input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]):not([type="submit"]):not([type="button"]),
.form-field select,
.form-field textarea {
    width: 100%;
    padding: 0.65rem 0.75rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    background: var(--color-surface);
    color: var(--color-text);
    font: inherit;
    box-shadow: var(--shadow-sm);
    min-height: 2.75rem;
}

.form-field textarea {
    min-height: 6rem;
    resize: vertical;
}

.form-field select {
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2357534e' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.75rem center;
    padding-right: 2.25rem;
}

.form-control:focus,
.form-field input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):focus,
.form-field select:focus,
.form-field textarea:focus {
    outline: 2px solid var(--color-primary-soft);
    border-color: var(--color-primary);
}

.form-check {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    font-weight: 600;
    cursor: pointer;
}

.form-check input {
    width: 1rem;
    height: 1rem;
    margin: 0;
    accent-color: var(--color-primary);
}

.form-field--checkbox-list > label,
.form-field--radio-list > label {
    margin-bottom: 0.5rem;
}

.form-field ul {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    gap: 0.35rem;
}

.form-field ul li {
    margin: 0;
}

.form-field ul li label {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    margin: 0;
    padding: 0.55rem 0.75rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    background: var(--color-surface);
    font-weight: 500;
    cursor: pointer;
}

.form-field ul li label:has(input:checked) {
    border-color: var(--color-primary-soft);
    background: var(--color-primary-light);
}

.form-field ul li input {
    width: 1rem;
    height: 1rem;
    margin: 0;
    accent-color: var(--color-primary);
}

.site-form {
    display: grid;
    gap: 0.15rem;
}

.site-form .form-field {
    margin-bottom: 0.85rem;
}

.form-actions {
    display: flex;
    gap: 0.75rem;
    align-items: center;
    flex-wrap: wrap;
    margin-top: 1.25rem;
}

.hero {
    display: grid;
    gap: 1.5rem;
    align-items: start;
}

.hero__badge {
    display: inline-block;
    padding: 0.25rem 0.75rem;
    background: var(--color-success-bg);
    color: var(--color-success-text);
    border-radius: 999px;
    font-size: 0.875rem;
    font-weight: 600;
}

.hero__actions {
    display: flex;
    gap: 0.75rem;
    flex-wrap: wrap;
    margin-top: 1rem;
}

.site-footer {
    flex-shrink: 0;
    border-top: 1px solid var(--color-primary-soft);
    background: var(--color-primary-light);
    padding: 1.5rem 0 2rem;
    color: var(--color-muted);
    font-size: 0.9rem;
}

.text-muted {
    color: var(--color-muted);
}

.text-small {
    font-size: 0.9rem;
}

.school-picker {
    margin-bottom: 0;
}

.form-field .school-picker__help {
    margin-top: 0.35rem;
}

.school-picker__label {
    display: block;
    margin-bottom: 0.35rem;
    font-weight: 600;
}

.school-picker__query {
    width: 100%;
}

.school-picker__search .school-picker__query {
    display: block;
}

.school-picker__results {
    margin-top: 0.35rem;
    border: 1px solid var(--color-border);
    border-radius: 0.5rem;
    background: var(--color-surface);
    max-height: 16rem;
    overflow-y: auto;
}

.school-picker__option {
    display: block;
    width: 100%;
    padding: 0.65rem 0.85rem;
    border: none;
    border-bottom: 1px solid var(--color-border);
    background: transparent;
    text-align: left;
    cursor: pointer;
    color: inherit;
    font: inherit;
}

.school-picker__option:last-child {
    border-bottom: none;
}

.school-picker__option:hover,
.school-picker__option:focus-visible {
    background: var(--color-bg);
    outline: none;
}

.school-picker__option-name {
    display: block;
    font-weight: 600;
}

.school-picker__option-meta {
    display: block;
    margin-top: 0.15rem;
    color: var(--color-muted);
    font-size: 0.875rem;
}

.school-picker__empty {
    margin: 0;
    padding: 0.75rem 0.85rem;
}

.school-picker__selected {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.75rem 0.85rem;
    border: 1px solid var(--color-border);
    border-radius: 0.5rem;
    background: var(--color-bg);
}

.school-picker__selected-label {
    margin: 0;
}

.school-picker__selected-label strong {
    display: block;
}

.school-picker__help {
    margin: 0.5rem 0 0;
}

.school-picker .is-hidden {
    display: none;
}

.btn-sm {
    padding: 0.4rem 0.85rem;
    font-size: 0.875rem;
}

.btn-disabled {
    opacity: 0.7;
    cursor: not-allowed;
    pointer-events: none;
}

.brand {
    display: inline-flex;
    align-items: center;
    gap: 0.65rem;
}

.brand__mark {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    line-height: 0;
}

.brand__logo {
    display: block;
    height: 2rem;
    width: auto;
}

.site-header .site-nav__link {
    color: var(--color-nav-text-muted);
    text-decoration: none;
    padding: 0.35rem 0.45rem;
    border-radius: 0.375rem;
    white-space: nowrap;
}

.site-header .site-nav__link:hover,
.site-header .site-nav__link.is-active {
    color: #fff;
    text-decoration: none;
    background: var(--color-nav-hover-bg);
}

.site-header .site-nav__link.is-active {
    font-weight: 600;
}

.site-header .btn-primary {
    background: var(--color-nav-cta-bg);
    color: var(--color-nav-cta-text);
}

.site-header .btn-primary:hover {
    background: #ffe066;
    color: var(--color-nav-cta-text);
}

.site-nav__modules-menu .site-nav__link,
.site-nav__account-menu .site-nav__account-link {
    color: var(--color-muted);
    background: transparent;
}

.site-nav__modules-menu .site-nav__link:hover,
.site-nav__modules-menu .site-nav__link.is-active,
.site-nav__account-menu .site-nav__account-link:hover,
.site-nav__account-menu .site-nav__account-link.is-active {
    color: var(--color-primary-dark);
    background: var(--color-primary-light);
}

.site-nav__link {
    color: var(--color-muted);
    text-decoration: none;
    padding: 0.35rem 0.45rem;
    border-radius: 0.375rem;
    white-space: nowrap;
}

.site-nav__link:hover,
.site-nav__link.is-active {
    color: var(--color-primary-dark);
    text-decoration: none;
}

.site-nav__link.is-active {
    font-weight: 600;
    background: var(--color-primary-light);
}

@media (max-width: 991px) {
    .brand__text {
        display: none;
    }
}

@media (max-width: 767px) {
    .site-nav__account-label {
        display: none;
    }

    .site-nav__account-toggle {
        max-width: none;
        padding: 0.25rem;
        border: none;
    }

    .site-nav__menu-toggle {
        display: inline-flex;
    }

    .site-nav--public .site-nav__menu {
        display: none;
        position: absolute;
        top: calc(100% + 0.5rem);
        right: 0;
        z-index: 40;
        flex-direction: column;
        align-items: stretch;
        min-width: 14rem;
        padding: 0.5rem;
        border: 1px solid var(--color-border);
        border-radius: var(--radius);
        background: var(--color-surface);
        box-shadow: var(--shadow-md);
        gap: 0;
    }

    .site-nav--public .site-nav__menu-toggle[aria-expanded="true"] + .site-nav__menu {
        display: flex;
    }

    .site-nav--public .site-nav__links,
    .site-nav--public .site-nav__actions {
        flex-direction: column;
        align-items: stretch;
        gap: 0;
    }

    .site-nav--public .site-nav__actions {
        margin-top: 0.5rem;
        margin-left: 0;
        padding-top: 0.5rem;
        padding-left: 0;
        border-top: 1px solid var(--color-border);
        border-left: none;
    }

    .site-nav--public .site-nav__link,
    .site-nav--public .btn {
        display: block;
        text-align: left;
        white-space: normal;
    }

    .site-nav--public .site-nav__menu .site-nav__link {
        color: var(--color-muted);
    }

    .site-nav--public .site-nav__menu .site-nav__link:hover,
    .site-nav--public .site-nav__menu .site-nav__link.is-active {
        color: var(--color-primary-dark);
        background: var(--color-primary-light);
    }
}

.site-footer__inner {
    display: grid;
    gap: 1.25rem;
}

.site-footer__brand {
    margin: 0 0 0.25rem;
    font-weight: 700;
    color: var(--color-primary-dark);
}

.site-footer__nav {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
}

.site-footer__nav a {
    color: var(--color-muted);
}

.site-footer__nav a:hover {
    color: var(--color-primary-dark);
}

.site-footer__copy {
    margin: 0;
}

.eyebrow {
    margin: 0 0 0.75rem;
    font-size: 0.875rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--color-accent);
}

.marketing-hero {
    background: linear-gradient(135deg, #faf9fc 0%, var(--color-bg) 55%, #eef0fd 100%);
    padding: 3.5rem 0 4rem;
    border-bottom: 1px solid var(--color-border);
}

.marketing-hero__grid {
    display: grid;
    gap: 2rem;
    align-items: center;
}

.marketing-hero__title {
    margin: 0 0 1rem;
    font-size: clamp(2rem, 5vw, 3rem);
    line-height: 1.15;
    color: var(--color-primary-dark);
}

.marketing-hero__lead {
    margin: 0;
    font-size: 1.125rem;
    color: var(--color-muted);
    max-width: 38rem;
}

.section {
    padding: 3.5rem 0;
}

.section--muted {
    background: #f3f2fa;
}

.section__header {
    margin-bottom: 2rem;
    max-width: 40rem;
}

.section__title {
    margin: 0 0 0.5rem;
    font-size: 1.75rem;
    color: var(--color-primary-dark);
}

.section__lead {
    margin: 0;
    color: var(--color-muted);
}

/* Unified page heroes (dashboard-style gradient band) */

.page-hero,
.page-header,
.app-overview-hero {
    position: relative;
    background-color: var(--color-nav-bg);
    background-image: none;
    color: #fff;
    padding: 2.25rem 0 2.75rem;
    overflow: hidden;
}

.page-hero::before,
.page-header::before,
.app-overview-hero::before {
    content: none;
}

.page-hero--compact,
.page-header--compact {
    padding: 1.85rem 0 2.15rem;
}

.page-hero__inner,
.page-header .container,
.app-overview-hero .container {
    position: relative;
    z-index: 1;
}

.page-hero__eyebrow,
.page-header .eyebrow,
.app-overview-hero__eyebrow {
    margin: 0 0 0.5rem;
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.75);
}

.page-hero__title,
.page-header .page-title,
.app-overview-hero__title {
    margin: 0 0 0.65rem;
    font-size: clamp(1.65rem, 3.5vw, 2.35rem);
    font-weight: 700;
    line-height: 1.2;
    color: #fff;
}

.page-hero__lead,
.page-header .lead,
.app-overview-hero__lead {
    margin: 0;
    max-width: 42rem;
    font-size: 1.05rem;
    line-height: 1.55;
    color: rgba(255, 255, 255, 0.88);
}

.page-header .legal-meta {
    margin: 0.75rem 0 0;
    font-size: 0.875rem;
    color: rgba(255, 255, 255, 0.65);
}

.page-hero .hero__actions,
.page-header .hero__actions,
.page-hero__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 1.25rem;
}

.page-hero .btn-secondary,
.page-header .btn-secondary {
    background: rgba(255, 255, 255, 0.12);
    border-color: rgba(255, 255, 255, 0.35);
    color: #fff;
}

.page-hero .btn-secondary:hover,
.page-header .btn-secondary:hover {
    background: rgba(255, 255, 255, 0.22);
    border-color: rgba(255, 255, 255, 0.45);
    color: #fff;
    text-decoration: none;
}

main:has(> .page-hero),
main:has(> .page-header),
main:has(> .app-overview-hero),
main:has(> .dashboard-hero),
main:has(> .landing-hero),
.page-dashboard main,
.page-app-overview main,
.page-with-hero main,
.sac-request-page main,
.staff-availability-page main,
.fpt-page main {
    padding-top: 0;
}

.page-hero + .section,
.page-header + .section,
.app-overview-hero + .section {
    padding-top: 1.75rem;
    padding-bottom: 3.5rem;
}

.page-hero--compact + .section,
.page-header--compact + .section,
.app-overview-hero + .section {
    padding-top: 1.75rem;
}

.page-form-section {
    padding-top: 0;
    padding-bottom: 3.5rem;
}

.page-header + .section.page-form-section,
.page-hero + .section.page-form-section {
    padding-top: 0;
}

.page-form-section .card-narrow {
    position: relative;
    z-index: 2;
    margin-top: -0.5rem;
    box-shadow: var(--shadow-lg);
    border-color: rgba(15, 107, 92, 0.12);
}

.setup-card {
    display: grid;
    gap: 1.25rem;
    max-width: 48rem;
    margin-inline: auto;
    box-shadow: var(--shadow-lg);
    border-color: rgba(15, 107, 92, 0.12);
}

.setup-section-title {
    margin: 0;
    font-size: 1.125rem;
}

.setup-video-placeholder {
    aspect-ratio: 16 / 9;
    border-radius: var(--radius-md);
    border: 1px dashed rgba(15, 107, 92, 0.28);
    background: linear-gradient(
        145deg,
        rgba(15, 107, 92, 0.06),
        rgba(15, 107, 92, 0.02)
    );
    display: grid;
    place-items: center;
    text-align: center;
}

.setup-video-placeholder__inner {
    max-width: 22rem;
    padding: 1.5rem;
}

.setup-video-placeholder__icon {
    display: inline-grid;
    place-items: center;
    width: 3rem;
    height: 3rem;
    margin-bottom: 0.75rem;
    border-radius: 999px;
    background: rgba(15, 107, 92, 0.12);
    color: var(--color-primary);
    font-size: 1.125rem;
}

.setup-video-placeholder__title {
    margin: 0 0 0.35rem;
    font-weight: 600;
}

.setup-video-placeholder__hint {
    margin: 0;
    font-size: 0.9rem;
}

body:not(.page-home) .section {
    padding: 2.5rem 0 3.5rem;
}

body:not(.page-home) .section--compact {
    padding: 1.75rem 0 3rem;
}

.card__title {
    margin: 0 0 1rem;
    font-size: 1.125rem;
}

.grid-2,
.grid-3 {
    display: grid;
    gap: 1.25rem;
}

.checklist {
    margin: 0;
    padding-left: 1.25rem;
}

.checklist li {
    margin-bottom: 0.5rem;
}

.checklist li:last-child {
    margin-bottom: 0;
}

.role-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 1rem;
}

.role-tabs__btn {
    padding: 0.6rem 1rem;
    border: 1px solid var(--color-border);
    border-radius: 999px;
    background: var(--color-surface);
    color: var(--color-muted);
    font: inherit;
    font-size: 0.9rem;
    cursor: pointer;
}

.role-tabs__btn:hover,
.role-tabs__btn.is-active {
    border-color: var(--color-primary);
    color: var(--color-primary-dark);
    background: var(--color-primary-light);
}

.role-panel__heading {
    margin: 0 0 0.75rem;
    color: var(--color-primary-dark);
}

.pain-card h3,
.benefit-card h3,
.feature-card h2 {
    margin: 0 0 0.5rem;
    color: var(--color-primary-dark);
}

.feature-card {
    transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;
}

.feature-card:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
    border-color: var(--color-primary-soft);
}

.benefit-card__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    margin-bottom: 0.75rem;
    border-radius: 999px;
    background: var(--color-primary);
    color: #fff;
    font-weight: 700;
    font-size: 0.875rem;
}

.cta-banner {
    display: grid;
    gap: 1.25rem;
    align-items: center;
    background: linear-gradient(135deg, #ffffff 0%, var(--color-primary-light) 100%);
}

.cta-banner__title {
    margin: 0 0 0.5rem;
    font-size: 1.5rem;
    color: var(--color-primary-dark);
}

.cta-banner__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.feature-card__label {
    display: inline-block;
    margin-bottom: 0.75rem;
    padding: 0.2rem 0.6rem;
    border-radius: 999px;
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.feature-card__label--live {
    background: var(--color-success-bg);
    color: var(--color-success-text);
}

.feature-card__label--soon {
    background: var(--color-primary-light);
    color: var(--color-primary);
}

.pricing-grid {
    display: grid;
    gap: 1.5rem;
    max-width: 52rem;
    margin-inline: auto;
}

.pricing-card {
    position: relative;
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.pricing-card:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
}

.pricing-card--featured {
    border-color: var(--color-primary);
    box-shadow: var(--shadow-lg);
}

.pricing-card__badge {
    position: absolute;
    top: -0.75rem;
    left: 1.5rem;
    padding: 0.2rem 0.65rem;
    border-radius: 999px;
    background: var(--color-accent);
    color: #fff;
    font-size: 0.75rem;
    font-weight: 700;
}

.pricing-card__name {
    margin: 0 0 0.5rem;
    color: var(--color-primary-dark);
}

.pricing-card__price {
    margin: 0 0 1rem;
}

.pricing-card__amount {
    font-size: 2.5rem;
    font-weight: 800;
    color: var(--color-primary-dark);
}

.pricing-card__period {
    color: var(--color-muted);
}

.premium-status-panel,
.subscription-status-panel {
    margin-top: 0;
}

.page-pricing .section {
    padding-block: 2.5rem;
}

.pricing-intro {
    padding: 3rem 0 2.5rem;
    background: linear-gradient(
        165deg,
        var(--color-primary-light) 0%,
        var(--color-bg) 70%,
        var(--color-bg) 100%
    );
}

.pricing-intro__inner {
    max-width: 42rem;
    margin-inline: auto;
    text-align: center;
}

.pricing-intro__eyebrow {
    margin: 0 0 0.75rem;
    font-size: 0.8125rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--color-primary);
}

.pricing-intro__title {
    margin: 0 0 1rem;
    font-size: clamp(1.75rem, 4vw, 2.75rem);
    line-height: 1.15;
    color: var(--color-primary-dark);
}

.pricing-intro__lead {
    margin: 0 0 1.5rem;
    font-size: 1.0625rem;
    line-height: 1.65;
    color: var(--color-text-muted);
}

.pricing-modules__grid {
    display: grid;
    gap: 1.25rem;
}

.pricing-module__label {
    margin: 0 0 0.75rem;
    font-size: 0.8125rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--color-primary);
}

.pricing-module .checklist {
    margin: 0;
}

.pricing-benefits {
    display: grid;
    gap: 1.25rem;
}

.pricing-benefit h3 {
    margin: 0 0 0.5rem;
    color: var(--color-primary-dark);
}

.pricing-offer-section__inner {
    max-width: 32rem;
    margin-inline: auto;
}

.pricing-offer-section__status {
    margin-bottom: 1.25rem;
}

.pricing-offer {
    padding: 2rem;
    border-color: var(--color-primary);
    box-shadow: var(--shadow-lg);
    text-align: center;
}

.pricing-offer__eyebrow {
    margin: 0 0 0.5rem;
    font-size: 0.8125rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--color-primary);
}

.pricing-offer__price {
    margin: 0 0 0.75rem;
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: center;
    gap: 0.35rem 0.5rem;
}

.pricing-offer__amount {
    font-size: clamp(2.75rem, 7vw, 3.5rem);
    font-weight: 800;
    line-height: 1;
    color: var(--color-primary-dark);
}

.pricing-offer__period {
    font-size: 1.125rem;
    color: var(--color-muted);
}

.pricing-offer__note {
    margin: 0 0 1.25rem;
    font-size: 0.9375rem;
}

.pricing-offer__includes {
    margin: 0 0 1.5rem;
    padding: 0;
    list-style: none;
    display: grid;
    gap: 0.5rem;
    text-align: left;
}

.pricing-offer__includes li {
    position: relative;
    padding-left: 1.35rem;
    color: var(--color-text);
}

.pricing-offer__includes li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.55em;
    width: 0.45rem;
    height: 0.45rem;
    border-radius: 50%;
    background: var(--color-accent);
}

.pricing-offer__cta {
    width: 100%;
    justify-content: center;
}

.pricing-offer__cta-note {
    margin: 0.75rem 0 0;
}

.pricing-journey__steps {
    margin: 0;
    padding: 0;
    list-style: none;
    display: grid;
    gap: 1rem;
    counter-reset: pricing-journey;
}

.pricing-journey__step {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 1rem;
    align-items: start;
    padding: 1.25rem 1.5rem;
}

.pricing-journey__number {
    width: 2rem;
    height: 2rem;
    border-radius: 50%;
    display: grid;
    place-items: center;
    font-size: 0.875rem;
    font-weight: 700;
    background: var(--color-primary);
    color: #fff;
    flex-shrink: 0;
}

.pricing-journey__title {
    margin: 0 0 0.35rem;
    font-size: 1.0625rem;
    color: var(--color-primary-dark);
}

.pricing-journey__content p {
    margin: 0;
    font-size: 0.9375rem;
    line-height: 1.55;
}

.pricing-close {
    padding-top: 0;
}

.pricing-faq-section .faq {
    max-width: 42rem;
    margin-inline: auto;
}

.status-badge {
    display: grid;
    gap: 0.25rem;
    padding: 1rem 1.25rem;
    border-radius: var(--radius);
    border: 1px solid var(--color-border);
}

.status-badge--success {
    background: var(--color-success-bg);
    border-color: #c8e6c9;
}

.status-badge--neutral {
    background: var(--color-primary-light);
    border-color: var(--color-primary-soft);
}

.status-badge--warning {
    background: var(--color-warning-bg);
    border-color: var(--color-warning-border);
}

.status-pill {
    display: inline-block;
    padding: 0.15rem 0.55rem;
    border-radius: 999px;
    border: 1px solid var(--color-border);
    background: var(--color-surface-muted);
    color: var(--color-text-muted);
    font-size: 0.75rem;
    font-weight: 600;
    line-height: 1.4;
    white-space: nowrap;
}

.status-pill--success {
    background: var(--color-success-bg);
    border-color: #c8e6c9;
    color: var(--color-success-text, #1b5e20);
}

.account-email-section-title {
    margin: 1.75rem 0 1rem;
    font-size: 1.125rem;
}

.account-email-option {
    align-items: flex-start;
}

.account-email-option__label {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
}

.faq__list {
    margin: 1rem 0 0;
}

.faq__item {
    padding: 1rem 0;
    border-top: 1px solid var(--color-border);
}

.faq__item:first-child {
    border-top: 0;
    padding-top: 0;
}

.faq__item dt {
    font-weight: 700;
    color: var(--color-primary-dark);
}

.faq__item dd {
    margin: 0.35rem 0 0;
}

.link-list {
    margin: 0;
    padding-left: 1.1rem;
}

.link-list li {
    margin-bottom: 0.5rem;
}

.totp-setup {
    display: flex;
    justify-content: center;
    margin: 1.5rem 0;
}

.totp-setup__qr {
    width: 12rem;
    height: 12rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    background: #fff;
}

.totp-setup__secret {
    width: 100%;
    padding: 0.65rem 0.75rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    font: inherit;
    background: var(--color-bg);
}

.recovery-codes {
    width: 100%;
    padding: 0.75rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    font-family: ui-monospace, monospace;
    font-size: 0.9rem;
    line-height: 1.8;
    background: var(--color-bg);
}

.security-card h2 {
    margin: 0 0 0.75rem;
    color: var(--color-primary-dark);
}

.security-card {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    height: 100%;
}

.security-card .form-actions {
    margin-top: auto;
    padding-top: 0.75rem;
}

@media (min-width: 768px) {
    .marketing-hero__grid {
        grid-template-columns: 1.4fr 1fr;
    }

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

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

    .cta-banner {
        grid-template-columns: 1fr auto;
    }

    .pricing-grid {
        grid-template-columns: repeat(2, 1fr);
    }

    .pricing-modules__grid {
        grid-template-columns: repeat(3, 1fr);
    }

    .pricing-benefits {
        grid-template-columns: repeat(3, 1fr);
    }

    .pricing-journey__steps {
        grid-template-columns: repeat(4, 1fr);
        gap: 1.25rem;
        align-items: stretch;
    }

    .pricing-journey__step {
        grid-template-columns: 1fr;
        grid-template-rows: auto 1fr;
        text-align: center;
        padding: 1.5rem 1.25rem;
    }

    .pricing-journey__number {
        margin-inline: auto;
    }

    .site-footer__inner {
        grid-template-columns: 1fr auto;
        align-items: start;
    }

    .site-footer__copy {
        grid-column: 1 / -1;
    }
}

/* Dashboard personal timetable */
.my-timetable-card {
    margin-bottom: 0;
}

.my-timetable-meta {
    margin: 0 0 0.75rem;
}

.my-timetable-scroll {
    overflow-x: auto;
    margin-top: 0.5rem;
}

.my-timetable {
    width: 100%;
    min-width: 36rem;
    border-collapse: collapse;
    font-size: 0.92rem;
}

.my-timetable th,
.my-timetable td {
    padding: 0.55rem 0.65rem;
    border-bottom: 1px solid var(--color-border);
    text-align: left;
    vertical-align: top;
}

.my-timetable tbody td {
    vertical-align: top;
}

.my-timetable-slot {
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
    min-width: 0;
}

.my-timetable-cell + .my-timetable-cell {
    margin-top: 0;
    padding-top: 0;
    border-top: none;
}

/* Joined classes share one period: grow the row instead of overflowing into the next. */
.my-timetable-slot--joined {
    height: auto;
}

.my-timetable-slot--joined .my-timetable-cell {
    flex: 0 0 auto;
    min-height: 3.25rem;
}

.my-timetable tbody tr:has(.my-timetable-slot--joined) td {
    height: auto;
}

.my-timetable-cell {
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 0.25rem;
    padding: 0.45rem 0.4rem;
    border-radius: 0.35rem;
    text-align: center;
}

/* Period grid: coloured cells fill the table cell height */
.my-timetable:not(.my-timetable--yard-duty) tbody td {
    height: 1px;
}

.my-timetable:not(.my-timetable--yard-duty) .my-timetable-slot {
    height: 100%;
    min-height: 4.25rem;
}

.my-timetable:not(.my-timetable--yard-duty) .my-timetable-cell {
    flex: 1 1 auto;
    min-height: 4.25rem;
}

.my-timetable thead th {
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--color-muted);
    white-space: nowrap;
}

.my-timetable-period-col {
    min-width: 7rem;
    position: sticky;
    left: 0;
    z-index: 1;
    background: var(--color-surface);
    border-right: 1px solid var(--color-border);
    text-align: center;
    vertical-align: middle;
}

.my-timetable-period-label {
    display: block;
    font-weight: 600;
    color: var(--color-primary-dark);
    text-align: center;
}

.my-timetable-period-time {
    display: block;
    margin-top: 0.15rem;
    font-size: 0.78rem;
    font-weight: 400;
    color: var(--color-muted);
    white-space: nowrap;
    text-align: center;
}

.my-timetable-cell strong {
    display: block;
}

.my-timetable-cell-meta {
    display: block;
    margin-top: 0.1rem;
    font-size: 0.78rem;
    color: var(--color-muted);
}

.my-timetable-cell--class {
    border: 1px solid var(--cell-border, var(--color-primary-soft));
    background: var(--cell-bg, var(--color-primary-light));
}

.my-timetable-class-label {
    display: block;
    line-height: 1.25;
    color: var(--cell-text, var(--color-primary-dark));
    text-align: center;
    font-size: 0.82rem;
    font-weight: 600;
}

.my-timetable-cell--class .my-timetable-cell-meta {
    display: block;
    text-align: center;
    font-size: 0.72rem;
    line-height: 1.2;
    color: var(--cell-text, var(--color-primary-dark));
    opacity: 0.85;
    overflow: hidden;
    text-overflow: ellipsis;
}

.my-timetable-cell--meeting {
    --cell-bg: #f3e8ff;
    --cell-border: #c084fc;
    --cell-text: #581c87;
    border: 1px solid var(--cell-border, #c084fc);
    background: var(--cell-bg, #f3e8ff);
}

.my-timetable-meeting-label {
    display: block;
    line-height: 1.25;
    color: var(--cell-text, #581c87);
    text-align: center;
    font-size: 0.82rem;
    font-weight: 600;
}

.my-timetable-cell--meeting .my-timetable-cell-meta {
    display: block;
    text-align: center;
    font-size: 0.72rem;
    line-height: 1.2;
    color: var(--cell-text, #581c87);
    opacity: 0.85;
    overflow: hidden;
    text-overflow: ellipsis;
}

.my-timetable-cell--awt {
    --cell-bg: #dbeafe;
    --cell-border: #93c5fd;
    --cell-text: #1e3a8a;
    border: 1px solid var(--cell-border, #93c5fd);
    background: var(--cell-bg, #dbeafe);
}

.my-timetable-awt-label {
    display: block;
    line-height: 1.25;
    color: var(--cell-text, #1e3a8a);
    text-align: center;
    font-size: 0.82rem;
    font-weight: 600;
}

.my-timetable-cell--awt .my-timetable-cell-meta {
    display: block;
    text-align: center;
    font-size: 0.72rem;
    line-height: 1.2;
    color: var(--cell-text, #1e3a8a);
    opacity: 0.85;
}

.my-timetable-cell--unavailable {
    --cell-bg: #fef2f2;
    --cell-border: #fca5a5;
    --cell-text: #991b1b;
    --cell-tag-bg: #fecaca;
    --cell-tag-text: #b91c1c;
    border: 1px solid var(--cell-border, #fca5a5);
    background: var(--cell-bg, #fef2f2);
}

.my-timetable-unavailable-label,
.my-timetable-unavailable-reason {
    display: block;
    line-height: 1.25;
    color: var(--cell-text, #991b1b);
    text-align: center;
}

.my-timetable-unavailable-label {
    font-size: 0.82rem;
    font-weight: 600;
}

.my-timetable-unavailable-reason {
    font-size: 0.8rem;
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
}

.my-timetable-cell--unavailable .my-timetable-cell-tag {
    align-self: center;
    max-width: 100%;
    box-sizing: border-box;
    padding: 0.12rem 0.45rem;
    background: var(--cell-tag-bg, #fecaca);
    color: var(--cell-tag-text, #b91c1c);
    font-size: 0.62rem;
    letter-spacing: 0.01em;
    text-transform: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.my-timetable-cell--hue-0 {
    --cell-bg: #ccfbf1;
    --cell-border: #5eead4;
    --cell-text: #115e59;
    --cell-tag-bg: #99f6e4;
    --cell-tag-text: #0f766e;
}

.my-timetable-cell--hue-1 {
    --cell-bg: #bbf7d0;
    --cell-border: #4ade80;
    --cell-text: #14532d;
    --cell-tag-bg: #86efac;
    --cell-tag-text: #15803d;
}

.my-timetable-cell--hue-2 {
    --cell-bg: #fed7aa;
    --cell-border: #fb923c;
    --cell-text: #7c2d12;
    --cell-tag-bg: #fdba74;
    --cell-tag-text: #c2410c;
}

.my-timetable-cell--hue-3 {
    --cell-bg: #fecaca;
    --cell-border: #f87171;
    --cell-text: #7f1d1d;
    --cell-tag-bg: #fca5a5;
    --cell-tag-text: #b91c1c;
}

.my-timetable-cell--hue-4 {
    --cell-bg: #99f6e4;
    --cell-border: #2dd4bf;
    --cell-text: #134e4a;
    --cell-tag-bg: #5eead4;
    --cell-tag-text: #0f766e;
}

.my-timetable-cell--hue-5 {
    --cell-bg: #c7d2fe;
    --cell-border: #818cf8;
    --cell-text: #312e81;
    --cell-tag-bg: #a5b4fc;
    --cell-tag-text: #4338ca;
}

.my-timetable-cell--hue-6 {
    --cell-bg: #a5f3fc;
    --cell-border: #22d3ee;
    --cell-text: #164e63;
    --cell-tag-bg: #67e8f9;
    --cell-tag-text: #0e7490;
}

.my-timetable-cell--hue-7 {
    --cell-bg: #fde68a;
    --cell-border: #facc15;
    --cell-text: #713f12;
    --cell-tag-bg: #fcd34d;
    --cell-tag-text: #a16207;
}

.my-timetable-cell--hue-8 {
    --cell-bg: #d9f99d;
    --cell-border: #a3e635;
    --cell-text: #365314;
    --cell-tag-bg: #bef264;
    --cell-tag-text: #4d7c0f;
}

.my-timetable-cell--hue-9 {
    --cell-bg: #fbcfe8;
    --cell-border: #f472b6;
    --cell-text: #831843;
    --cell-tag-bg: #f9a8d4;
    --cell-tag-text: #be185d;
}

.my-timetable-cell--hue-10 {
    --cell-bg: #f5e6d3;
    --cell-border: #d97706;
    --cell-text: #78350f;
    --cell-tag-bg: #fed7aa;
    --cell-tag-text: #9a3412;
}

.my-timetable-cell--hue-11 {
    --cell-bg: #e2e8f0;
    --cell-border: #94a3b8;
    --cell-text: #1e293b;
    --cell-tag-bg: #cbd5e1;
    --cell-tag-text: #475569;
}

.my-timetable thead .my-timetable-period-col {
    text-align: center;
}

.my-timetable-cell-tag {
    display: inline-block;
    padding: 0.1rem 0.35rem;
    border-radius: 999px;
    background: var(--cell-tag-bg, #ebe4ff);
    color: var(--cell-tag-text, #5b4ba8);
    font-size: 0.68rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    text-transform: uppercase;
}

.my-timetable-row--break {
    background: #fafbfc;
}

.my-timetable-row--break .my-timetable-period-col {
    background: #f5f7f9;
    text-align: center;
}

.my-timetable-row--break .my-timetable-period-label {
    color: var(--color-muted);
    font-weight: 600;
    text-align: center;
}

.my-timetable-break-time {
    display: block;
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--color-primary-dark);
    white-space: nowrap;
}

.my-timetable--yard-duty .my-timetable-slot {
    gap: 0.35rem;
}

.my-timetable-cell--yard-duty {
    background: #eef8f1;
    border: 1px solid #c8e6d0;
}

.my-timetable-cell--yard-duty strong,
.my-timetable-cell--yard-duty .my-timetable-cell-meta {
    display: block;
    line-height: 1.25;
    text-align: center;
    overflow-wrap: anywhere;
    word-break: break-word;
}

.my-timetable-cell--yard-duty strong {
    color: #2d6a4f;
    font-size: 0.82rem;
    font-weight: 600;
}

.my-timetable-cell--yard-duty .my-timetable-cell-meta {
    font-size: 0.72rem;
    color: #2d6a4f;
    opacity: 0.85;
}

.my-timetable-cell-tag--yard-duty {
    background: #dff3e5;
    color: #2d6a4f;
}

.my-timetable-empty {
    color: var(--color-muted);
}

.my-timetable-footnote {
    margin: 0.75rem 0 0;
}

.timetable-lookup-form {
    margin-bottom: 1.25rem;
}

.timetable-lookup-form__legend {
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--color-primary-dark);
    margin-bottom: 0.65rem;
}

.timetable-lookup-form__type-options {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem 1.25rem;
    margin-bottom: 1rem;
}

.timetable-lookup-form__type-option {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    cursor: pointer;
}

.timetable-lookup-form__panel.is-hidden {
    display: none;
}

.timetable-lookup-form__student-grid {
    display: grid;
    gap: 1rem;
}

@media (min-width: 640px) {
    .timetable-lookup-form__student-grid {
        grid-template-columns: minmax(10rem, 14rem) minmax(0, 1fr);
        align-items: start;
    }
}

.timetable-lookup-results {
    margin-top: 1.25rem;
    padding-top: 1.25rem;
    border-top: 1px solid var(--color-border);
}

.timetable-lookup-results__prompt {
    margin: 0;
}

.timetable-lookup-results__header {
    margin-bottom: 0.75rem;
}

.my-yard-duty-timetable {
    margin-top: 1.75rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--color-border);
}

.my-yard-duty-timetable__title {
    margin: 0 0 0.85rem;
    font-size: 1.05rem;
    color: var(--color-primary-dark);
}

.my-yard-duty-timetable__subtitle {
    margin: 1rem 0 0.5rem;
    font-size: 0.9rem;
    color: var(--color-primary-dark);
}

.my-yard-duty-timetable__unscheduled {
    margin-top: 1rem;
}

.my-timetable-extras {
    display: grid;
    gap: 1.25rem;
    margin-top: 1.5rem;
    padding-top: 1.25rem;
    border-top: 1px solid var(--color-border);
}

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

    .my-timetable-extras:has(> :only-child) {
        grid-template-columns: 1fr;
    }
}

.my-timetable-extra__title {
    margin: 0 0 0.65rem;
    font-size: 0.95rem;
    color: var(--color-primary-dark);
}

.my-timetable-list {
    margin: 0;
    padding: 0;
    list-style: none;
}

.my-timetable-list li + li {
    margin-top: 0.55rem;
}

.my-timetable-list__primary {
    display: block;
    font-weight: 600;
    color: var(--color-text);
}

.my-timetable-list__meta {
    display: block;
    margin-top: 0.1rem;
    font-size: 0.82rem;
    color: var(--color-muted);
}

.my-load-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.88rem;
}

.my-load-table th,
.my-load-table td {
    padding: 0.45rem 0.55rem;
    border-bottom: 1px solid var(--color-border);
    text-align: left;
    vertical-align: top;
}

.my-load-table thead th {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--color-muted);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.my-load-table tfoot th,
.my-load-table tfoot td {
    border-bottom: none;
    border-top: 2px solid var(--color-border);
    font-weight: 600;
}

.my-load-table__load-col {
    width: 7.5rem;
    white-space: nowrap;
    text-align: right;
}

.my-load-table__label {
    display: block;
    font-weight: 600;
    color: var(--color-text);
}

.my-load-table__detail {
    display: block;
    margin-top: 0.1rem;
    font-size: 0.82rem;
    color: var(--color-muted);
}

.my-load-table-footnote {
    margin: 0.65rem 0 0;
}

/* Legal pages (Terms of Service, etc.) */

.section--compact {
    padding-top: 0;
}

.legal-meta {
    margin: 0.75rem 0 0;
    font-size: 0.9rem;
    color: var(--color-muted);
}

.legal-commitments {
    display: grid;
    gap: 1rem;
}

@media (min-width: 48rem) {
    .legal-commitments {
        grid-template-columns: repeat(3, 1fr);
    }
}

.legal-commitment {
    padding: 1.25rem 1.35rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    background: var(--color-surface);
    box-shadow: var(--shadow-sm);
    transition: box-shadow 0.15s ease, border-color 0.15s ease;
}

.legal-commitment:hover {
    box-shadow: var(--shadow-md);
    border-color: var(--color-primary-soft);
}

.legal-commitment__title {
    margin: 0 0 0.5rem;
    font-size: 1rem;
    color: var(--color-primary-dark);
}

.legal-layout {
    display: grid;
    gap: 1.5rem;
    align-items: start;
}

@media (min-width: 56rem) {
    .legal-layout {
        grid-template-columns: minmax(12rem, 16rem) minmax(0, 1fr);
    }
}

.legal-toc {
    position: sticky;
    top: 1rem;
}

.legal-toc__heading {
    margin: 0 0 0.75rem;
    font-size: 0.95rem;
    color: var(--color-primary-dark);
}

.legal-toc__list {
    margin: 0;
    padding-left: 1.25rem;
    font-size: 0.9rem;
}

.legal-toc__list li {
    margin-bottom: 0.45rem;
}

.legal-toc__list li:last-child {
    margin-bottom: 0;
}

.legal-toc__list a {
    color: var(--color-muted);
    text-decoration: none;
}

.legal-toc__list a:hover {
    color: var(--color-primary);
    text-decoration: underline;
}

.legal-toc__related {
    margin: 1rem 0 0;
    padding-top: 1rem;
    border-top: 1px solid var(--color-border);
    font-size: 0.9rem;
    color: var(--color-muted);
}

.legal-document {
    max-width: none;
}

.legal-section {
    scroll-margin-top: 1.5rem;
}

.legal-section + .legal-section {
    margin-top: 2.25rem;
    padding-top: 2.25rem;
    border-top: 1px solid var(--color-border);
}

.legal-section h2 {
    margin: 0 0 0.85rem;
    font-size: 1.25rem;
    color: var(--color-primary-dark);
}

.legal-section p {
    margin: 0 0 0.85rem;
}

.legal-section p:last-child {
    margin-bottom: 0;
}

.legal-section ul {
    margin: 0 0 0.85rem;
    padding-left: 1.35rem;
}

.legal-section li {
    margin-bottom: 0.45rem;
}

.legal-section li:last-child {
    margin-bottom: 0;
}

.legal-callout {
    margin: 1rem 0 0;
    padding: 1rem 1.15rem;
    border-left: 4px solid var(--color-primary);
    border-radius: 0 var(--radius) var(--radius) 0;
    background: var(--color-primary-light);
}

.legal-callout p {
    margin: 0;
    font-size: 0.95rem;
}

.legal-subheading {
    margin: 1.25rem 0 0.65rem;
    font-size: 1.05rem;
    color: var(--color-primary-dark);
}

.legal-table-wrap {
    overflow-x: auto;
    margin: 1rem 0;
}

.legal-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.92rem;
}

.legal-table th,
.legal-table td {
    padding: 0.75rem 0.85rem;
    border: 1px solid var(--color-border);
    text-align: left;
    vertical-align: top;
}

.legal-table th {
    background: var(--color-primary-light);
    color: var(--color-primary-dark);
    font-weight: 600;
}

.legal-table tbody tr:nth-child(even) {
    background: #fafbfd;
}

@media (max-width: 55.99rem) {
    .legal-toc {
        position: static;
    }
}

/* Contact page */

.contact-layout {
    display: grid;
    gap: 1.5rem;
    align-items: start;
}

@media (min-width: 48rem) {
    .contact-layout {
        grid-template-columns: minmax(14rem, 18rem) minmax(0, 1fr);
    }
}

.contact-aside__title,
.contact-form-card .card__title {
    margin-top: 0;
}

.contact-form-card {
    max-width: 40rem;
}

.recaptcha-disclosure {
    margin-top: 0.75rem;
}

/* Dashboard */

.page-dashboard main {
    padding-top: 0;
}

.dashboard-hero {
    background-color: var(--color-nav-bg);
    background-image: none;
    color: #fff;
    padding: 2.25rem 0 2.75rem;
}

.page-dashboard .dashboard-hero {
    padding: 1.75rem 0 2rem;
}

.dashboard-hero__inner {
    display: grid;
    gap: 1.5rem;
    align-items: start;
}

.dashboard-hero__eyebrow {
    margin: 0 0 0.5rem;
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.75);
}

.dashboard-hero__title {
    margin: 0 0 0.65rem;
    font-size: clamp(1.75rem, 4vw, 2.35rem);
    font-weight: 700;
    line-height: 1.2;
    color: #fff;
}

.dashboard-hero__lead {
    margin: 0 0 1rem;
    max-width: 36rem;
    font-size: 0.95rem;
    line-height: 1.45;
    color: rgba(255, 255, 255, 0.82);
}

.dashboard-hero__chips {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.dashboard-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.35rem 0.75rem;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.14);
    border: 1px solid rgba(255, 255, 255, 0.22);
    font-size: 0.875rem;
    color: rgba(255, 255, 255, 0.95);
}

.dashboard-chip svg {
    flex-shrink: 0;
    opacity: 0.85;
}

.dashboard-hero__apps {
    margin-top: 1.15rem;
}

.dashboard-hero__apps-label {
    margin: 0 0 0.55rem;
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.68);
}

.dashboard-hero__apps-links {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.dashboard-hero__app-link {
    display: inline-flex;
    align-items: center;
    padding: 0.45rem 0.9rem;
    border-radius: 999px;
    border: 1px solid rgba(255, 255, 255, 0.28);
    background: rgba(255, 255, 255, 0.1);
    color: #fff;
    font-size: 0.875rem;
    font-weight: 600;
    text-decoration: none;
    transition:
        background-color 0.15s ease,
        border-color 0.15s ease;
}

.dashboard-hero__app-link:hover {
    background: rgba(255, 255, 255, 0.18);
    border-color: rgba(255, 255, 255, 0.42);
    color: #fff;
    text-decoration: none;
}

.dashboard-hero__aside {
    padding: 1.15rem 1.25rem;
    border: 0;
    box-shadow: 0 8px 24px rgba(26, 26, 46, 0.12);
}

.dashboard-plan {
    display: flex;
    gap: 0.85rem;
    align-items: flex-start;
}

.dashboard-plan__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 8px;
    flex-shrink: 0;
}

.dashboard-plan--premium .dashboard-plan__icon {
    background: var(--color-success-bg);
    color: var(--color-success-text);
}

.dashboard-plan--free .dashboard-plan__icon {
    background: var(--color-primary-light);
    color: var(--color-primary);
}

.dashboard-plan__label {
    display: block;
    font-size: 0.95rem;
    color: var(--color-text);
}

.dashboard-plan__detail {
    margin: 0.2rem 0 0;
    font-size: 0.875rem;
    color: var(--color-muted);
    line-height: 1.45;
}

.dashboard-plan__link,
.dashboard-plan__hint {
    display: block;
    margin-top: 0.85rem;
    font-size: 0.875rem;
}

.dashboard-plan__link {
    font-weight: 600;
}

.dashboard-plan__cta {
    margin-top: 0.85rem;
    width: 100%;
    text-align: center;
}

.dashboard-section {
    padding-top: 2rem;
    padding-bottom: 0;
}

.page-dashboard .dashboard-section {
    padding-top: 1.5rem;
}

.page-dashboard .dashboard-section--primary {
    padding-top: 1.25rem;
}

.page-dashboard .dashboard-section--lookup {
    padding-top: 1.5rem;
}

.dashboard-section--timetable {
    padding-top: 2.5rem;
}

.page-dashboard .dashboard-section--timetable {
    padding-top: 1.25rem;
}

.dashboard-section--compact {
    padding-top: 2rem;
    padding-bottom: 2.5rem;
}

.page-dashboard .dashboard-section--compact {
    padding-top: 1.5rem;
    padding-bottom: 2rem;
}

.dashboard-section__header {
    margin-bottom: 1.25rem;
}

.dashboard-section__header--compact {
    margin-bottom: 0.85rem;
}

.dashboard-section__header--compact .dashboard-section__title {
    font-size: 1.15rem;
}

.dashboard-section__header--compact .dashboard-section__lead {
    font-size: 0.875rem;
}

.dashboard-section__header--with-action {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem 1rem;
}

.dashboard-section__action {
    flex-shrink: 0;
}

#my-timetable,
#timetable-lookup {
    scroll-margin-top: 1.5rem;
}

.dashboard-section__title {
    margin: 0 0 0.35rem;
    font-size: 1.35rem;
    color: var(--color-primary-dark);
}

.dashboard-section__lead {
    margin: 0;
    color: var(--color-muted);
    font-size: 0.95rem;
}

.dashboard-tool-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr));
    gap: 1rem;
}

.dashboard-tool-grid--compact {
    grid-template-columns: repeat(auto-fill, minmax(10.5rem, 1fr));
    gap: 0.65rem;
}

.page-dashboard .dashboard-tool-grid--compact .dashboard-tool-card {
    align-items: center;
    gap: 0.6rem;
    padding: 0.65rem 0.75rem;
}

.page-dashboard .dashboard-tool-grid--compact .dashboard-tool-card:hover {
    transform: none;
}

.page-dashboard .dashboard-tool-grid--compact .dashboard-tool-card__icon {
    width: 2rem;
    height: 2rem;
    border-radius: 8px;
}

.page-dashboard .dashboard-tool-grid--compact .dashboard-tool-card__icon svg {
    width: 18px;
    height: 18px;
}

.page-dashboard .dashboard-tool-grid--compact .dashboard-tool-card__desc,
.page-dashboard .dashboard-tool-grid--compact .dashboard-tool-card__arrow {
    display: none;
}

.page-dashboard .dashboard-tool-grid--compact .dashboard-tool-card__head {
    flex-wrap: wrap;
    gap: 0.25rem 0.35rem;
}

.page-dashboard .dashboard-tool-grid--compact .dashboard-tool-card__title {
    font-size: 0.9rem;
    line-height: 1.25;
}

.page-dashboard .dashboard-tool-grid--compact .dashboard-tool-card__badge {
    font-size: 0.65rem;
    padding: 0.1rem 0.35rem;
}

.role-test-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(18rem, 1fr));
    gap: 1rem;
}

.role-test-card {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    min-width: 0;
    padding: 1.15rem 1.1rem;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: calc(var(--radius) + 2px);
    box-shadow: var(--shadow-sm);
}

.role-test-card__header {
    min-width: 0;
}

.role-test-card__title {
    margin: 0;
    font-weight: 700;
    font-size: 1rem;
    color: var(--color-primary-dark);
}

.role-test-card__meta {
    margin: 0.35rem 0 0;
    font-size: 0.875rem;
    color: var(--color-muted);
    line-height: 1.45;
}

.role-test-card__meta code {
    display: inline;
    word-break: break-all;
    font-size: 0.8rem;
}

.role-test-card__access {
    margin: 0;
    padding-left: 1.1rem;
    font-size: 0.875rem;
    color: var(--color-muted);
    line-height: 1.45;
}

.role-test-card__access li + li {
    margin-top: 0.35rem;
}

.role-test-card__actions {
    margin-top: auto;
    padding-top: 0.25rem;
}

.dashboard-tool-card {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    padding: 1.15rem 1.1rem;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: calc(var(--radius) + 2px);
    text-decoration: none;
    color: inherit;
    box-shadow: var(--shadow-sm);
    transition:
        border-color 0.15s ease,
        box-shadow 0.15s ease,
        transform 0.15s ease;
}

.dashboard-tool-card:hover {
    text-decoration: none;
    border-color: var(--color-primary);
    box-shadow: var(--shadow-md);
    transform: translateY(-2px);
}

.dashboard-tool-card--locked {
    border-style: dashed;
    background: #fafbfd;
}

.dashboard-tool-card--locked:hover {
    border-color: var(--color-accent);
    box-shadow: 0 4px 16px rgba(180, 83, 9, 0.12);
}

.dashboard-tool-card__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.75rem;
    height: 2.75rem;
    border-radius: 10px;
    flex-shrink: 0;
}

.dashboard-tool-card--admin .dashboard-tool-card__icon {
    background: var(--color-module-admin-bg);
    color: var(--color-module-admin-text);
}

.dashboard-tool-card--general .dashboard-tool-card__icon {
    background: var(--color-module-general-bg);
    color: var(--color-module-general-text);
}

.dashboard-tool-card--vce .dashboard-tool-card__icon {
    background: var(--color-module-vce-bg);
    color: var(--color-module-vce-text);
}

.dashboard-tool-card--ld .dashboard-tool-card__icon {
    background: var(--color-module-ld-bg);
    color: var(--color-module-ld-text);
}

.dashboard-tool-card--exams .dashboard-tool-card__icon {
    background: var(--color-module-exams-bg);
    color: var(--color-module-exams-text);
}

.dashboard-tool-card--premium .dashboard-tool-card__icon {
    background: var(--color-module-premium-bg);
    color: var(--color-module-premium-text);
}

.dashboard-tool-card--staff .dashboard-tool-card__icon {
    background: var(--color-module-staff-bg);
    color: var(--color-module-staff-text);
}

.dashboard-tool-card--support .dashboard-tool-card__icon {
    background: var(--color-module-support-bg);
    color: var(--color-module-support-text);
}

.dashboard-tool-card--timetable .dashboard-tool-card__icon {
    background: var(--color-module-timetable-bg);
    color: var(--color-module-timetable-text);
}

.dashboard-tool-card--daily .dashboard-tool-card__icon {
    background: var(--color-module-daily-bg);
    color: var(--color-module-daily-text);
}

.dashboard-tool-card__body {
    flex: 1;
    min-width: 0;
}

.dashboard-tool-card__head {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.45rem;
    margin-bottom: 0.25rem;
}

.dashboard-tool-card__title {
    font-weight: 700;
    font-size: 1rem;
    color: var(--color-primary-dark);
}

.dashboard-tool-card__badge {
    padding: 0.1rem 0.45rem;
    border-radius: 999px;
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    background: var(--color-primary-light);
    color: var(--color-primary);
}

.dashboard-tool-card__desc {
    display: block;
    font-size: 0.875rem;
    color: var(--color-muted);
    line-height: 1.45;
}

.dashboard-tool-card__arrow {
    flex-shrink: 0;
    align-self: center;
    color: var(--color-muted);
    opacity: 0.5;
    transition: opacity 0.15s ease, transform 0.15s ease;
}

.dashboard-tool-card:hover .dashboard-tool-card__arrow {
    opacity: 1;
    color: var(--color-primary);
    transform: translateX(2px);
}

.dashboard-panel-grid {
    display: grid;
    gap: 1rem;
}

.dashboard-panel__header {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 0.85rem;
}

.dashboard-panel__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.35rem;
    height: 2.35rem;
    border-radius: 8px;
    flex-shrink: 0;
}

.dashboard-panel__icon--security {
    background: var(--color-primary-light);
    color: var(--color-primary);
}

.dashboard-panel__icon--admin {
    background: var(--color-module-general-bg);
    color: var(--color-module-general-text);
}

.dashboard-panel__icon--links {
    background: var(--color-module-vce-bg);
    color: var(--color-module-vce-text);
}

.dashboard-panel__title {
    margin: 0;
    font-size: 1.05rem;
    color: var(--color-primary-dark);
}

.dashboard-panel__actions {
    margin-top: 1rem;
}

.dashboard-status {
    display: grid;
    gap: 0.2rem;
    padding: 0.85rem 1rem;
    border-radius: var(--radius);
    font-size: 0.875rem;
}

.dashboard-status strong {
    font-size: 0.9rem;
}

.dashboard-status span {
    color: var(--color-muted);
    line-height: 1.45;
}

.dashboard-status--success {
    background: var(--color-success-bg);
    border: 1px solid #c8e6c9;
}

.dashboard-status--warning {
    background: var(--color-warning-bg);
    border: 1px solid var(--color-warning-border);
}

.dashboard-link-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.35rem;
}

.dashboard-link-list a {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    padding: 0.45rem 0.5rem;
    margin: 0 -0.5rem;
    border-radius: calc(var(--radius) - 2px);
    font-weight: 600;
    font-size: 0.9rem;
    color: var(--color-text);
    text-decoration: none;
    transition: background 0.12s ease;
}

.dashboard-link-list a:hover {
    background: var(--color-bg);
    text-decoration: none;
    color: var(--color-primary);
}

.dashboard-link-list svg {
    flex-shrink: 0;
    color: var(--color-muted);
}

.dashboard-link-list a:hover svg {
    color: var(--color-primary);
}

@media (min-width: 48rem) {
    .dashboard-hero__inner {
        grid-template-columns: 1fr minmax(16rem, 22rem);
        align-items: center;
    }

    .dashboard-panel-grid {
        grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
    }
}

/* Landing / home page */

.landing-hero--brand {
    background: linear-gradient(145deg, var(--color-indigo-velvet) 0%, #4a3f9a 55%, #5c52b8 100%);
    color: var(--color-nav-text);
    padding: 3.25rem 0 3.75rem;
    border-bottom: none;
}

.landing-hero--brand .landing-hero__eyebrow {
    color: var(--color-amber-flame);
}

.landing-hero--brand .landing-hero__title {
    color: #fff;
    max-width: 20ch;
}

.landing-hero--brand .landing-hero__lead {
    color: rgba(255, 255, 255, 0.86);
}

.landing-hero--brand .btn-secondary {
    color: #fff;
    border-color: rgba(255, 255, 255, 0.35);
    background: rgba(255, 255, 255, 0.08);
}

.landing-hero--brand .btn-secondary:hover {
    color: #fff;
    border-color: rgba(255, 255, 255, 0.5);
    background: rgba(255, 255, 255, 0.14);
}

.landing-hero {
    padding: 3rem 0 3.5rem;
    border-bottom: 1px solid var(--color-border);
}

.landing-hero__grid {
    display: grid;
    gap: 2.5rem;
    align-items: center;
}

.landing-hero__eyebrow {
    margin: 0 0 0.75rem;
    font-size: 0.875rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--color-amber-flame);
}

.landing-hero__title {
    margin: 0 0 1rem;
    font-size: clamp(2rem, 5vw, 2.85rem);
    line-height: 1.12;
    color: var(--color-primary-dark);
    max-width: 16ch;
}

.landing-hero__lead {
    margin: 0;
    font-size: 1.125rem;
    color: var(--color-muted);
    max-width: 36rem;
    line-height: 1.55;
}

.landing-hero__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 1.5rem;
}

.landing-hero-stats {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.75rem 1rem;
    margin: 1.75rem 0 0;
    padding: 0;
    list-style: none;
}

.landing-hero-stats li {
    padding-top: 0.85rem;
    border-top: 1px solid rgba(255, 255, 255, 0.18);
}

.landing-hero-stats strong {
    display: block;
    font-size: 0.95rem;
    color: #fff;
}

.landing-hero-stats span {
    display: block;
    margin-top: 0.15rem;
    font-size: 0.8rem;
    color: rgba(255, 255, 255, 0.72);
    line-height: 1.35;
}

.landing-hero__visual {
    position: relative;
}

.landing-hero__visual--stacked {
    display: grid;
    gap: 0;
}

.landing-screenshot-frame {
    border-radius: calc(var(--radius) + 6px);
    overflow: hidden;
    box-shadow: 0 24px 48px rgba(15, 10, 40, 0.45);
    border: 1px solid rgba(255, 255, 255, 0.12);
    background: #1c1917;
}

.landing-screenshot-frame__chrome {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.55rem 0.85rem;
    background: #292524;
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

.landing-screenshot-frame__dot {
    width: 0.55rem;
    height: 0.55rem;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.22);
}

.landing-screenshot-frame__image {
    display: block;
    width: 100%;
    height: auto;
    vertical-align: middle;
}

.landing-hero__photo {
    position: absolute;
    bottom: -1.25rem;
    left: -1.25rem;
    width: 11rem;
    height: auto;
    border-radius: calc(var(--radius) + 2px);
    box-shadow: 0 16px 32px rgba(15, 10, 40, 0.35);
    border: 3px solid rgba(255, 255, 255, 0.9);
    object-fit: cover;
}

.landing-trust-pills {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem 1rem;
    margin: 1.35rem 0 0;
    padding: 0;
    list-style: none;
}

.landing-trust-pills li {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.875rem;
    color: var(--color-muted);
}

.landing-trust-pills svg {
    flex-shrink: 0;
    color: var(--color-tiger-orange);
}

.landing-hero__image {
    display: block;
    width: 100%;
    height: auto;
    border-radius: calc(var(--radius) + 4px);
    box-shadow: var(--shadow-lg);
    border: 1px solid rgba(255, 255, 255, 0.8);
}

.landing-audiences {
    padding-top: 3.5rem;
    padding-bottom: 3rem;
}

.landing-audience-grid {
    display: grid;
    gap: 1.25rem;
}

.landing-audience-card {
    display: grid;
    gap: 0;
    padding: 0;
    overflow: hidden;
    border-color: var(--color-border);
    transition: box-shadow 0.15s ease, border-color 0.15s ease;
}

.landing-audience-card:hover {
    border-color: var(--color-primary-soft);
    box-shadow: var(--shadow-md);
}

.landing-audience-card__media {
    background: var(--color-primary-light);
    border-bottom: 1px solid var(--color-border);
}

.landing-audience-card__image {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 16 / 10;
    object-fit: cover;
    object-position: top center;
}

.landing-audience-card__body {
    padding: 1.35rem 1.35rem 1.5rem;
}

.landing-audience-card__label {
    margin: 0 0 0.35rem;
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--color-tiger-orange);
}

.landing-audience-card__title {
    margin: 0 0 0.5rem;
    font-size: 1.2rem;
    line-height: 1.3;
    color: var(--color-primary-dark);
}

.landing-audience-card__lead {
    margin: 0 0 1rem;
    font-size: 0.95rem;
    line-height: 1.5;
}

.landing-audience-card__points {
    margin: 0;
    padding: 0;
    list-style: none;
    display: grid;
    gap: 0.45rem;
}

.landing-audience-card__points li {
    position: relative;
    padding-left: 1.15rem;
    font-size: 0.9rem;
    color: var(--color-muted);
    line-height: 1.45;
}

.landing-audience-card__points li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.55em;
    width: 0.4rem;
    height: 0.4rem;
    border-radius: 50%;
    background: var(--color-medium-slate-blue);
}

.landing-workflows {
    padding-top: 3rem;
    padding-bottom: 3rem;
}

.landing-workflow-grid {
    display: grid;
    gap: 1.25rem;
}

.landing-workflow-card {
    display: grid;
    gap: 0;
    padding: 0;
    overflow: hidden;
    border-color: var(--color-border);
    transition: box-shadow 0.15s ease, transform 0.15s ease;
}

.landing-workflow-card:hover {
    box-shadow: var(--shadow-md);
    transform: translateY(-2px);
}

.landing-workflow-card__media {
    background: #f5f4ff;
    border-bottom: 1px solid var(--color-border);
}

.landing-workflow-card__image {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 16 / 10;
    object-fit: cover;
    object-position: top center;
}

.landing-workflow-card__body {
    padding: 1.15rem 1.25rem 1.35rem;
}

.landing-workflow-card__tag {
    display: inline-block;
    margin-bottom: 0.45rem;
    padding: 0.15rem 0.55rem;
    border-radius: 999px;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--color-primary-dark);
    background: var(--color-primary-light);
}

.landing-workflow-card__title {
    margin: 0 0 0.4rem;
    font-size: 1.05rem;
    color: var(--color-primary-dark);
}

.landing-workflow-card__desc {
    margin: 0;
    font-size: 0.92rem;
    line-height: 1.5;
}

.landing-section-header {
    margin-bottom: 1.75rem;
    max-width: 40rem;
}

.landing-section-header__title {
    margin: 0 0 0.5rem;
    font-size: 1.75rem;
    color: var(--color-primary-dark);
}

.landing-section-header__lead {
    margin: 0;
    color: var(--color-muted);
    line-height: 1.5;
}

.landing-features {
    padding-top: 3rem;
    padding-bottom: 3rem;
}

.landing-feature-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr));
    gap: 1rem;
}

.landing-feature-card {
    display: flex;
    flex-direction: column;
    gap: 0;
    padding: 1.35rem;
    transition:
        border-color 0.15s ease,
        box-shadow 0.15s ease,
        transform 0.15s ease;
}

.landing-feature-card:hover {
    border-color: var(--color-primary);
    box-shadow: var(--shadow-md);
    transform: translateY(-2px);
}

.landing-feature-card__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.65rem;
    height: 2.65rem;
    margin-bottom: 0.85rem;
    border-radius: 10px;
}

.landing-feature-card__icon--timetable {
    background: var(--color-module-admin-bg);
    color: var(--color-module-admin-text);
}

.landing-feature-card__icon--vce {
    background: var(--color-module-vce-bg);
    color: var(--color-module-vce-text);
}

.landing-feature-card__icon--admin {
    background: var(--color-module-general-bg);
    color: var(--color-module-general-text);
}

.landing-feature-card__icon--ld {
    background: var(--color-module-ld-bg);
    color: var(--color-module-ld-text);
}

.landing-feature-card__icon--team {
    background: var(--color-module-staff-bg);
    color: var(--color-module-staff-text);
}

.landing-feature-card__title {
    margin: 0 0 0.45rem;
    font-size: 1.05rem;
    color: var(--color-primary-dark);
}

.landing-feature-card__desc {
    margin: 0;
    font-size: 0.9rem;
    line-height: 1.5;
    flex: 1;
}

.landing-feature-card__label {
    display: inline-block;
    margin-top: 0.85rem;
    padding: 0.15rem 0.55rem;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    background: #fff4d6;
    color: #8a6200;
    align-self: flex-start;
}

.landing-feature-card__label--live {
    background: #e8f5e9;
    color: #2e7d32;
}

.landing-feature-card__label--soon {
    background: #eef0fd;
    color: var(--color-primary-dark);
}

.landing-feature-card__icon--team {
    background: var(--color-module-staff-bg);
    color: var(--color-module-staff-text);
}

.landing-feature-card__icon--general {
    background: var(--color-module-general-bg);
    color: var(--color-module-general-text);
}

.landing-feature-card__icon--exams {
    background: var(--color-module-exams-bg);
    color: var(--color-module-exams-text);
}

.landing-feature-card__icon--support {
    background: var(--color-module-support-bg);
    color: var(--color-module-support-text);
}

.landing-feature-card__icon--timetable-tools {
    background: var(--color-module-timetable-bg);
    color: var(--color-module-timetable-text);
}

.landing-section-header--centered {
    margin-inline: auto;
    text-align: center;
}

.landing-section-header__eyebrow {
    margin: 0 0 0.5rem;
    font-size: 0.875rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--color-amber-flame);
}

.landing-features__group-label {
    margin: 0 0 0.85rem;
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--color-muted);
}

.landing-features__group-label:not(:first-of-type) {
    margin-top: 2rem;
}

.landing-teacher-spotlight {
    padding-top: 3rem;
    padding-bottom: 3rem;
}

.landing-teacher-spotlight__grid {
    display: grid;
    gap: 2.5rem;
    align-items: center;
}

.landing-teacher-spotlight__image {
    display: block;
    width: 100%;
    height: auto;
    border-radius: calc(var(--radius) + 4px);
    box-shadow: var(--shadow-md);
    border: 1px solid var(--color-border);
}

.landing-teacher-spotlight__title {
    margin: 0 0 0.75rem;
    font-size: clamp(1.5rem, 3vw, 2rem);
    line-height: 1.2;
    color: var(--color-primary-dark);
}

.landing-teacher-spotlight__lead {
    margin: 0 0 1.25rem;
    line-height: 1.55;
}

.landing-teacher-spotlight__benefits {
    margin: 0;
    padding: 0;
    list-style: none;
    display: grid;
    gap: 1rem;
}

.landing-teacher-spotlight__benefits li {
    display: grid;
    gap: 0.2rem;
    padding-left: 1.1rem;
    border-left: 3px solid var(--color-medium-slate-blue);
}

.landing-teacher-spotlight__benefits strong {
    color: var(--color-primary-dark);
    font-size: 0.98rem;
}

.landing-teacher-spotlight__benefits span {
    color: var(--color-muted);
    font-size: 0.92rem;
    line-height: 1.5;
}

.landing-showcase {
    padding-top: 2.5rem;
    padding-bottom: 3rem;
}

.landing-showcase__stack {
    display: grid;
    gap: 3rem;
}

.landing-showcase__row {
    display: grid;
    gap: 2rem;
    align-items: center;
}

.landing-showcase__image {
    display: block;
    width: 100%;
    height: auto;
    border-radius: calc(var(--radius) + 4px);
    box-shadow: var(--shadow-md);
    border: 1px solid var(--color-border);
}

.landing-showcase__eyebrow {
    margin: 0 0 0.4rem;
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--color-amber-flame);
}

.landing-showcase__title {
    margin: 0 0 0.65rem;
    font-size: 1.45rem;
    line-height: 1.25;
    color: var(--color-primary-dark);
}

.landing-roles {
    padding-top: 3rem;
    padding-bottom: 3rem;
}

.landing-role-tabs {
    margin-bottom: 1rem;
}

.landing-role-panel {
    min-height: 10rem;
}

.landing-cta {
    padding-top: 0;
    padding-bottom: 3.5rem;
}

.landing-cta-banner {
    display: grid;
    gap: 1.25rem;
    align-items: center;
    padding: 1.75rem 1.5rem;
    background: linear-gradient(135deg, #ffffff 0%, #eef0fd 55%, #faf8ff 100%);
    border-color: var(--color-primary-soft);
}

.landing-cta-banner--brand {
    background: linear-gradient(135deg, var(--color-primary-light) 0%, #fff 65%);
}

.landing-cta-banner__title {
    margin: 0 0 0.45rem;
    font-size: 1.5rem;
    color: var(--color-primary-dark);
}

.landing-cta-banner__lead {
    margin: 0;
    color: var(--color-muted);
    line-height: 1.55;
    max-width: 36rem;
}

.landing-cta-banner__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}

@media (min-width: 48rem) {
    .landing-hero__grid {
        grid-template-columns: 1.05fr 0.95fr;
    }

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

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

    .landing-teacher-spotlight__grid {
        grid-template-columns: 0.95fr 1.05fr;
    }

    .landing-showcase__row {
        grid-template-columns: 1fr 1fr;
        gap: 2.5rem;
    }

    .landing-showcase__row--reverse .landing-showcase__visual {
        order: 2;
    }

    .landing-cta-banner {
        grid-template-columns: 1fr auto;
        padding: 2rem 2rem;
    }
}

@media (min-width: 64rem) {
    .landing-feature-grid {
        grid-template-columns: repeat(3, 1fr);
    }

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

@media (max-width: 47.99rem) {
    .landing-hero-stats {
        grid-template-columns: 1fr;
    }

    .landing-hero__photo {
        display: none;
    }
}

/* App overview pages */

.page-app-overview main {
    padding-top: 0;
}

.app-overview-hero__eyebrow,
.app-overview-hero__title,
.app-overview-hero__lead {
    /* Typography inherited from unified page hero rules. */
}

.app-overview-nav {
    margin-bottom: 1.25rem;
}

/* Underline tab subnav on app inner pages (hidden on each app's overview). */
.app-subnav {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem 1.25rem;
    margin-bottom: 0.25rem;
    border-bottom: 1px solid var(--color-border);
}

.app-subnav__link {
    color: var(--color-muted);
    text-decoration: none;
    font-size: 0.92rem;
    padding: 0.35rem 0 0.65rem;
    margin-bottom: -1px;
    border-bottom: 2px solid transparent;
}

.app-subnav__link:hover {
    color: var(--color-primary-dark);
    text-decoration: none;
}

.app-subnav__link.is-active {
    color: var(--color-primary-dark);
    border-bottom-color: var(--color-primary);
    font-weight: 600;
}

.app-subnav--module {
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem 1.25rem;
}

.app-subnav--module .app-subnav__module-links {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem 1.25rem;
}

.app-subnav--season {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    gap: 0;
    margin-top: 0.75rem;
    margin-bottom: 1rem;
    padding: 0;
    border: 1px solid var(--color-border);
    border-radius: 0.5rem;
    background: var(--color-surface);
    overflow: hidden;
}

.app-subnav--season .app-subnav__link {
    padding: 0.2rem 0;
    margin-bottom: 0;
    border-bottom-width: 2px;
}

.app-subnav__group {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    padding: 0.7rem 1rem;
    border-right: 1px solid var(--color-border);
    min-width: 0;
}

.app-subnav__group:last-child {
    border-right: none;
}

.app-subnav__group-label {
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    color: var(--color-muted);
    line-height: 1.2;
}

.app-subnav__group-links {
    display: flex;
    flex-wrap: wrap;
    gap: 0.15rem 0.9rem;
    align-items: center;
}

.app-subnav__season-switcher {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-left: auto;
}

.app-subnav__season-label {
    font-size: 0.82rem;
    color: var(--color-muted);
    white-space: nowrap;
}

.app-subnav__season-select {
    min-width: 12rem;
    max-width: 18rem;
    font-size: 0.9rem;
    padding: 0.25rem 0.5rem;
}

@media (max-width: 768px) {
    .app-subnav--season {
        flex-direction: column;
    }

    .app-subnav__group {
        border-right: none;
        border-bottom: 1px solid var(--color-border);
    }

    .app-subnav__group:last-child {
        border-bottom: none;
    }

    .app-subnav__season-switcher {
        margin-left: 0;
        width: 100%;
    }

    .app-subnav__season-select {
        flex: 1;
        max-width: none;
    }
}

.app-overview-status {
    margin-bottom: 0.5rem;
}

.app-overview-tools-header {
    margin-top: 1.75rem;
}

.app-overview-alert {
    margin-bottom: 1rem;
}

.app-overview-alert + .app-overview-alert {
    margin-top: -0.25rem;
}

.page-app-overview .dashboard-section {
    padding-top: 1.75rem;
    padding-bottom: 2.5rem;
}

/* Help guide banner — sits below overview hero, links to /support/guides/<slug>/ */
.app-overview-help {
    padding: 0.85rem 0;
    background: linear-gradient(
        180deg,
        color-mix(in srgb, var(--color-module-support-bg) 55%, #fff) 0%,
        var(--color-surface-muted) 100%
    );
    border-bottom: 1px solid var(--color-border);
}

.app-overview-help__card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.25rem;
    padding: 1rem 1.15rem;
    border: 1px solid color-mix(in srgb, var(--color-module-support-text) 18%, var(--color-border));
    border-radius: var(--radius-lg);
    background: #fff;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.app-overview-help__card:hover {
    border-color: var(--color-module-support-text);
    box-shadow: var(--shadow-sm);
}

.app-overview-help__body {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex: 1;
    min-width: 0;
    text-decoration: none;
    color: inherit;
}

.app-overview-help__body:hover {
    text-decoration: none;
    color: inherit;
}

.app-overview-help__aside {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.4rem;
    flex-shrink: 0;
}

.app-overview-help__actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 0.5rem;
}

.app-overview-help__btn {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.45rem 0.85rem;
    border-radius: var(--radius-md);
    font-size: 0.875rem;
    font-weight: 600;
    line-height: 1.2;
    text-decoration: none;
    white-space: nowrap;
    transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.app-overview-help__btn:hover {
    text-decoration: none;
}

.app-overview-help__btn--primary {
    background: var(--color-module-support-text);
    border: 1px solid var(--color-module-support-text);
    color: #fff;
}

.app-overview-help__btn--primary:hover {
    background: color-mix(in srgb, var(--color-module-support-text) 88%, #000);
    border-color: color-mix(in srgb, var(--color-module-support-text) 88%, #000);
    color: #fff;
}

.app-overview-help__btn--secondary {
    background: #fff;
    border: 1px solid color-mix(in srgb, var(--color-module-support-text) 28%, var(--color-border));
    color: var(--color-module-support-text);
}

.app-overview-help__btn--secondary:hover {
    background: var(--color-module-support-bg);
    border-color: var(--color-module-support-text);
    color: var(--color-module-support-text);
}

.app-overview-help__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.75rem;
    height: 2.75rem;
    border-radius: var(--radius-md);
    background: var(--color-module-support-bg);
    color: var(--color-module-support-text);
    flex-shrink: 0;
}

.app-overview-help__content {
    display: grid;
    gap: 0.15rem;
    min-width: 0;
}

.app-overview-help__eyebrow {
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--color-module-support-text);
}

.app-overview-help__title {
    font-size: 1rem;
    line-height: 1.35;
}

.app-overview-help__description {
    font-size: 0.9rem;
    line-height: 1.45;
    color: var(--color-text-muted);
}

.app-overview-help__meta {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--color-text-muted);
    white-space: nowrap;
}

.page-hero + .app-overview-help + .section,
.page-header--compact + .app-overview-help + .section,
.dashboard-hero + .app-overview-help + .section {
    padding-top: 1.75rem;
}

@media (max-width: 640px) {
    .app-overview-help__card {
        flex-direction: column;
        align-items: stretch;
        gap: 1rem;
    }

    .app-overview-help__aside {
        align-items: stretch;
    }

    .app-overview-help__actions {
        justify-content: stretch;
    }

    .app-overview-help__btn {
        flex: 1 1 auto;
        justify-content: center;
    }

    .app-overview-help__meta {
        text-align: center;
    }
}

.school-role-checkboxes {
    border: 0;
    margin: 0;
    padding: 0;
    min-width: 0;
}

.school-role-checkboxes legend:not(.visually-hidden) {
    display: block;
    margin-bottom: 0.5rem;
    font-weight: 600;
    color: var(--color-text);
}

.school-role-checkboxes__grid {
    display: grid;
    gap: 0.35rem;
    grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr));
}

.school-role-checkboxes__option {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    margin: 0;
    padding: 0.55rem 0.75rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    background: var(--color-surface);
    font-weight: 500;
    font-size: 0.9rem;
    color: var(--color-text);
    cursor: pointer;
    box-shadow: var(--shadow-sm);
    transition:
        border-color 0.15s ease,
        background-color 0.15s ease;
}

.school-role-checkboxes__option:hover {
    border-color: #b8c2d4;
}

.school-role-checkboxes__option:has(input:checked) {
    border-color: var(--color-primary-soft);
    background: var(--color-primary-light);
}

.school-role-checkboxes__option input {
    width: 1rem;
    height: 1rem;
    margin: 0;
    flex-shrink: 0;
    accent-color: var(--color-primary);
    cursor: pointer;
}
