.site-theme-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.35rem;
    height: 2.35rem;
    padding: 0;
    border: 1px solid var(--border);
    border-radius: 999px;
    background: var(--surface);
    color: var(--text-p);
    cursor: pointer;
    transition: background .2s, border-color .2s, transform .2s;
}

.site-theme-toggle:hover {
    border-color: var(--brand);
    transform: translateY(-1px);
}

.site-theme-toggle svg {
    width: 1rem;
    height: 1rem;
}

.site-theme-toggle .moon-icon {
    display: none;
}

:root[data-theme="dark"] .site-theme-toggle .sun-icon {
    display: none;
}

:root[data-theme="dark"] .site-theme-toggle .moon-icon {
    display: block;
}

.nav-links {
    align-items: center;
}

.destination-page .nav {
    position: sticky;
    top: env(safe-area-inset-top, 0px);
    z-index: 100;
    height: 68px;
    background: color-mix(in srgb, var(--bg) 92%, transparent);
    border-bottom: 1px solid var(--border);
    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);
}
.destination-page .nav-inner {
    width: min(100%, 1240px);
    height: 100%;
    margin-inline: auto;
    padding-inline: var(--gutter, clamp(1rem, 4vw, 2rem));
    display: flex;
    align-items: center;
    gap: clamp(.65rem, 1.4vw, 1.25rem);
}
.destination-page .nav-logo { flex: 0 0 auto; }
.destination-page .nav-logo img { display: block; width: auto; max-width: 150px; height: 34px; object-fit: contain; }
.destination-page .nav-links { flex: 1 1 auto; min-width: 0; justify-content: center; gap: clamp(.35rem, .8vw, .85rem); margin: 0; padding: 0; list-style: none; }
.destination-page .nav-links > li { list-style: none; }
.destination-page .nav-links > li > a { display: inline-flex; align-items: center; min-height: 44px; color: var(--text-s); font-size: clamp(.68rem, .78vw, .84rem); font-weight: 600; text-decoration: none; white-space: nowrap; }
.destination-page .nav-links > li > a:hover,
.destination-page .nav-links > li > a:focus-visible { color: var(--text-p); }
.destination-page .nav-btn { display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; min-height: 42px; padding: .55rem .9rem; border: 1px solid var(--accent); border-radius: 999px; background: var(--accent); color: #fff !important; font-size: .76rem; font-weight: 750; text-decoration: none !important; white-space: nowrap; }
.destination-page .nav-btn:hover { filter: brightness(.96); }
.destination-page .nav-ham { flex: 0 0 auto; }

.nav-dropdown {
    position: relative;
}

.nav-dropdown>button {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--text-s);
    font: inherit;
    font-size: .88rem;
    cursor: pointer;
}

.nav-dropdown>button:hover,
.nav-dropdown:focus-within>button {
    color: var(--text-p);
}

.nav-dropdown-chevron {
    width: .7rem;
    height: .7rem;
    transition: transform .2s;
}

.nav-dropdown:hover .nav-dropdown-chevron,
.nav-dropdown:focus-within .nav-dropdown-chevron {
    transform: rotate(180deg);
}

.nav-dropdown-menu {
    position: absolute;
    top: calc(100% + .9rem);
    left: 50%;
    min-width: 14rem;
    padding: .55rem;
    border: 1px solid var(--border);
    border-radius: 14px;
    background: var(--surface);
    box-shadow: 0 18px 45px rgba(14, 20, 32, .12);
    opacity: 0;
    pointer-events: none;
    transform: translate(-50%, -6px);
    transition: opacity .18s ease, transform .18s ease;
}

.nav-dropdown:hover .nav-dropdown-menu,
.nav-dropdown:focus-within .nav-dropdown-menu {
    opacity: 1;
    pointer-events: auto;
    transform: translate(-50%, 0);
}

.nav-dropdown-menu a {
    display: block;
    padding: .65rem .75rem;
    border-radius: 9px;
    color: var(--text-p);
    font-size: .84rem;
    text-decoration: none;
}

.nav-dropdown-menu a:hover,
.nav-dropdown-menu a:focus-visible {
    background: var(--surface-tint);
}

.nav-dropdown-label {
    display: block;
    padding: .45rem .75rem .25rem;
    color: var(--text-s);
    font-family: var(--mono);
    font-size: .65rem;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.nav-inner>.site-theme-toggle {
    flex-shrink: 0;
}

.nav-ham {
    display: none;
    flex-shrink: 0;
    padding: .5rem;
    border: 0;
    background: transparent;
    color: var(--text-p);
    cursor: pointer;
}
.nav-ham svg rect { transform-box: fill-box; transform-origin: center; transition: transform .18s ease, opacity .18s ease; }
.nav-ham.is-open svg rect:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav-ham.is-open svg rect:nth-child(2) { opacity: 0; }
.nav-ham.is-open svg rect:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

.nav-mobile {
    display: none;
}
.nav-mobile[inert] { visibility: hidden; }

.nav-mobile .nav-dropdown-menu {
    position: static;
    display: none;
    min-width: 0;
    padding: .15rem 0 .35rem .85rem;
    border: 0;
    border-radius: 0;
    box-shadow: none;
    opacity: 1;
    pointer-events: auto;
    transform: none;
    background: transparent;
}

.nav-mobile .nav-dropdown-menu.show {
    display: block;
    position: static;
    transform: none;
    opacity: 1;
    pointer-events: auto;
}

.nav-mobile .nav-dropdown>button {
    color: var(--text-p);
    font-size: 1.2rem;
    font-weight: 600;
}

.nav-mobile .nav-dropdown-menu a {
    padding: .4rem 0;
    font-size: 1rem;
}

.nav-mobile .nav-dropdown-label {
    padding-left: 0;
}

@media (max-width: 640px) {
    .nav-inner {
        gap: .75rem;
    }
    .nav-inner>.site-theme-toggle {
        margin-left: auto;
    }
    .nav-mobile .site-theme-toggle {
        display: none;
    }
    .destination-page .nav-ham { margin-left: 0 !important; }
    /* clip (not hidden) so body never becomes a scroll container, which breaks position: sticky */
    html,
    body {
        max-width: 100%;
        overflow-x: hidden;
        overflow-x: clip;
    }
    .tabs,
    .faq-tabs,
    .page-nav,
    .subnav {
        width: 100%;
        max-width: 100%;
        overflow-x: auto;
        overscroll-behavior-x: contain;
    }
    .page-nav-inner,
    .subnav-list {
        width: max-content;
        min-width: 100%;
    }
    .search-box {
        display: grid;
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        gap: .75rem;
        padding: 1rem;
    }
    .search-input {
        grid-column: 1 / -1;
        min-width: 0;
    }
    .search-divider {
        display: none;
    }
    .search-select {
        width: 100%;
        min-width: 0;
        padding: .7em .55em;
        border: 1px solid var(--border);
        border-radius: 9px;
    }
    .search-btn {
        grid-column: 1 / -1;
        width: 100%;
    }
    .course-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .course-card {
        min-width: 0;
    }
}


/* Compact auth layouts */

.auth-wrap {
    grid-template-columns: minmax(0, 1.05fr) minmax(360px, .95fr);
}

.auth-form-side {
    padding: 1.5rem clamp(1.25rem, 3vw, 3.5rem);
    overflow-y: auto;
}

.auth-signup .auth-form-side {
    justify-content: flex-start;
}

.auth-form-wrap {
    max-width: 360px;
}

.auth-form-sub {
    margin-bottom: 1.35rem;
}

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

.form-input,
.form-select {
    padding-top: .62em;
    padding-bottom: .62em;
}

.btn-primary,
.btn-submit {
    padding-top: .72em;
    padding-bottom: .72em;
}

@media (max-width: 900px) {
    .auth-wrap {
        grid-template-columns: 1fr;
    }
    .auth-form-side {
        justify-content: flex-start;
        padding: 0;
    }
    .auth-form-inner {
        padding: 1.75rem var(--gutter) calc(1.75rem + env(safe-area-inset-bottom,0px));
    }
    .auth-form-wrap {
        max-width: 390px;
    }
    /* Page-level hero: reduce top padding on tablet/mobile */
    .page-hero {
        padding-top: clamp(2rem, 5vw, 3.5rem);
    }
}

@media (max-width: 640px) {
    /* Nav: hide desktop links, show hamburger */
    .nav-links,
    .nav-btn {
        display: none !important;
    }
    .nav-ham {
        display: flex !important;
    }
    /* Page hero: compact top padding */
    .page-hero {
        padding-top: 2rem;
        padding-bottom: .5rem;
    }
    .page-hero-title {
        font-size: clamp(1.9rem, 8vw, 2.6rem);
    }
    /* Filter / tab bars: horizontal scroll */
    .filter-bar,
    .cat-bar,
    .filter-chips {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
        flex-wrap: nowrap;
        padding-bottom: .25rem;
    }
    .filter-bar::-webkit-scrollbar,
    .cat-bar::-webkit-scrollbar {
        display: none;
    }
    /* Stat strips: 2 columns on mobile */
    .stats-strip-inner {
        grid-template-columns: 1fr 1fr;
        gap: 1.25rem;
    }
    /* Featured cards / feat-post: single column */
    .feat-post,
    .feat-card {
        grid-template-columns: 1fr !important;
    }
    .feat-img-wrap {
        height: 200px;
    }
    /* Consultation layout: single column */
    .consult-wrap {
        grid-template-columns: 1fr !important;
        min-height: auto;
        padding-top: 1.5rem;
    }

    .nav-mobile {
        position: fixed;
        inset: 68px 0 0;
        z-index: 99;
        display: block;
        overflow-y: auto;
        padding: 1.5rem 1rem calc(2rem + env(safe-area-inset-bottom, 0px));
        background: var(--bg);
        border-top: 1px solid var(--border);
        opacity: 0;
        transform: translateY(-10px);
        pointer-events: none;
        transition: opacity .22s var(--ease), transform .28s var(--ease);
    }

    .nav-mobile.is-open {
        opacity: 1;
        transform: translateY(0);
        pointer-events: auto;
    }

    .nav-mobile-links {
        display: flex;
        flex-direction: column;
        gap: 1rem;
        list-style: none;
        margin: 0;
        padding: 0;
    }

    .nav-mobile-links a {
        display: block;
        font-size: 1.1rem;
        font-weight: 600;
        text-decoration: none;
        color: var(--text-p);
    }

    .nav-mobile-links .btn,
    .nav-mobile-links .nav-btn {
        display: inline-flex !important;
        width: fit-content;
    }

    .destination-page .hero {
        height: min(78svh, 620px);
        min-height: 520px;
    }

    .hero-body {
        padding: 1.25rem 1rem 2rem;
    }

    .hero-title {
        font-size: clamp(2.8rem, 12vw, 4rem);
        line-height: .91;
        margin-bottom: 1rem;
    }

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

    .hero-stat-val {
        font-size: 1.5rem;
    }

    .hero-stat-lbl {
        font-size: .7rem;
    }

    .why-strip-inner {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
        gap: 1rem;
    }

    .section {
        padding-inline: 1rem;
    }

    .section-title {
        font-size: clamp(1.75rem, 8vw, 2.25rem);
    }

    .section-sub {
        font-size: .95rem;
    }

    .cost-section {
        overflow-x: auto;
    }

    .cost-row {
        min-width: 560px;
        grid-template-columns: 1.2fr 1fr 1fr !important;
    }

    .cost-cell {
        padding: .85rem 1rem;
        font-size: .82rem;
    }

    .uni-stats {
        gap: .75rem;
    }

    .uni-card-footer {
        flex-wrap: wrap;
    }

    /* Keep wide content inside the phone viewport. */
    body {
        overflow-x: hidden;
        overflow-x: clip;
        font-size: 16px;
    }

    .nav-inner {
        padding-inline: 1rem;
    }

    .nav-logo img,
    .topnav-logo img {
        max-width: 132px !important;
        height: auto !important;
    }

    .nav-mobile {
        overflow-y: auto;
        padding-bottom: calc(2rem + env(safe-area-inset-bottom, 0px));
    }

    .counsel-track-wrap {
        width: 100%;
        max-width: 100%;
    }

    .counsel-track {
        width: max-content;
        padding-right: 1rem;
    }

    .page-hero,
    .dest-section,
    .finder-wrap,
    .schol-inner,
    .journey-header,
    .counsel-header,
    .voices,
    .cta-sec {
        width: 100%;
        min-width: 0;
    }

    .page-hero-title,
    .search-hero-title,
    .sec-title,
    .journey-title,
    .cta-hl {
        overflow-wrap: anywhere;
    }

    .search-hero {
        padding-block: 2.5rem;
    }

    .search-bar {
        width: 100%;
        min-width: 0;
        border-radius: 18px;
    }

    .search-field,
    .search-input,
    .search-select {
        min-width: 0;
    }

    .finder-wrap {
        padding-inline: 1rem;
    }

    .sidebar,
    .course-card,
    .empty-state {
        border-radius: 14px;
    }

    .results-header {
        align-items: stretch;
        flex-direction: column;
    }

    .results-sort {
        width: 100%;
    }

    .course-actions {
        align-items: stretch;
        flex-direction: row;
    }

    .btn-shortlist,
    .btn-details {
        flex: 1;
        min-width: 0;
    }

    /* Dashboard: replace the desktop shell with a readable single column. */
    .topnav {
        height: 58px;
        padding-inline: 1rem;
        gap: .65rem;
    }

    .topnav-search {
        flex: 1 1 auto;
        min-width: 0;
        padding-inline: .7rem;
    }

    .topnav-search input {
        min-width: 0;
    }

    .main {
        min-width: 0;
        padding: 1rem;
    }

    .main-header {
        align-items: stretch;
    }

    .main-header > .btn {
        width: 100%;
        justify-content: center;
    }

    .greeting {
        font-size: 1.3rem;
    }

    .progress-card {
        align-items: flex-start;
        padding: 1.15rem;
    }

    .progress-text {
        min-width: 0;
    }

    .progress-card > .btn {
        width: 100%;
    }

    .stats-row {
        gap: .65rem;
    }

    .stat-tile {
        min-width: 0;
        padding: 1rem;
    }

    .stat-lbl,
    .shortlist-name,
    .event-name,
    .schol-item-name {
        overflow-wrap: anywhere;
    }

    .shortlist-item,
    .event-item,
    .schol-item {
        gap: .7rem;
        padding-inline: 1rem;
    }

    .shortlist-status,
    .event-badge,
    .schol-deadline {
        flex-shrink: 0;
    }
}

/* ── Bootstrap Dropdown integration ─────────────────────────── */
/* Bootstrap JS adds .show when opened via click/keyboard        */
.nav-dropdown-menu.show {
    opacity: 1;
    pointer-events: auto;
    transform: translate(-50%, 0);
}

/* Chevron rotates when Bootstrap sets aria-expanded="true" */
.nav-dropdown > button[aria-expanded="true"] .nav-dropdown-chevron {
    transform: rotate(180deg);
}

/* "View all" link accent */
.nav-view-all {
    color: var(--brand) !important;
    font-weight: 600;
}

/* Mobile dropdown items: tighter spacing inside collapsed groups */
.nav-mobile .nav-dropdown-menu a.dropdown-item {
    padding: .4rem 0;
    font-size: 1rem;
    border-radius: 0;
}

/* Mobile: dropdown toggle button matches other mobile nav links */
.nav-mobile .nav-dropdown > button {
    display: flex;
    align-items: center;
    gap: .4rem;
    width: 100%;
}


/* Navigation: keep the pointer path connected to the menu and expose menus to keyboard users. */
.nav-dropdown > button { min-height: 44px; }
.nav-dropdown-menu {
    top: 100%;
    left: 0;
    min-width: 16rem;
    max-height: min(72vh, 34rem);
    overflow-y: auto;
    overscroll-behavior: contain;
    transform: translateY(-6px);
}
.nav-dropdown:hover .nav-dropdown-menu,
.nav-dropdown:focus-within .nav-dropdown-menu,
.nav-dropdown.is-open .nav-dropdown-menu {
    transform: translateY(0);
}
.nav-dropdown-menu a { min-height: 42px; }
.nav-dropdown:focus-within > button,
.nav-dropdown.is-open > button { color: var(--text-p); }
.nav-mobile .nav-dropdown-menu { left: auto; max-height: none; overflow: visible; }
.nav-mobile .nav-dropdown.is-open .nav-dropdown-menu,
.nav-mobile .nav-dropdown-menu.show { display: block; }
.nav-mobile .nav-dropdown > button { width: 100%; justify-content: space-between; text-align: left; }
.nav-mobile .nav-dropdown-menu a { min-height: 40px; }

@media (max-width: 1180px) {
    .nav-links,
    .nav-btn { display: none !important; }
    .nav-ham { display: flex !important; margin-left: auto; }
    .nav-mobile {
        position: fixed;
        inset: calc(68px + env(safe-area-inset-top, 0px)) 0 0;
        z-index: 99;
        display: block;
        overflow-y: auto;
        padding: 1.25rem var(--gutter) calc(2rem + env(safe-area-inset-bottom, 0px));
        background: var(--bg);
        border-top: 1px solid var(--border);
        opacity: 0;
        visibility: hidden;
        transform: translateY(-10px);
        pointer-events: none;
        transition: opacity .22s var(--ease), transform .28s var(--ease), visibility 0s linear .28s;
    }
    .nav-mobile.is-open { opacity: 1; visibility: visible; transform: translateY(0); pointer-events: auto; transition-delay: 0s; }
    body.nav-open { overflow: hidden; }
    .nav-mobile-links {
        max-width: 48rem;
        margin: 0 auto;
        padding: 0;
        list-style: none;
        display: flex;
        flex-direction: column;
        gap: .55rem;
    }
    .nav-mobile-links > li > a {
        display: block;
        padding: .45rem 0;
        color: var(--text-p);
        font-size: 1.08rem;
        font-weight: 650;
        text-decoration: none;
    }
    .nav-mobile-links .nav-dropdown > button { font-size: 1.08rem; font-weight: 650; }
    .nav-mobile-links .nav-dropdown-menu {
        position: static;
        display: none;
        min-width: 0;
        padding: .15rem 0 .6rem .8rem;
        border: 0;
        border-radius: 0;
        box-shadow: none;
        opacity: 1;
        pointer-events: auto;
        transform: none;
        background: transparent;
    }
    .nav-mobile-links .nav-dropdown-menu a { padding: .4rem 0; }
    .nav-mobile-links .btn { width: fit-content; margin-top: .5rem; }
}

@media (prefers-reduced-motion: reduce) {
    .nav-dropdown-menu,
    .nav-dropdown-chevron,
    .nav-mobile,
    .nav-ham svg rect { transition-duration: .01ms !important; }
    .nav-mobile { transition: none !important; }
    .nav-mobile.is-open { opacity: 1; visibility: visible; transform: none; }
}


/* Destination-page content requested for visa preparation, careers and student jobs. */
.visa-document-note {
    max-width: 1200px;
    margin: 1.5rem auto 2.5rem;
    padding: 1.25rem 1.5rem;
    border: 1px solid var(--border);
    border-left: 4px solid var(--accent);
    border-radius: 0 var(--r-md) var(--r-md) 0;
    background: var(--surface);
}
.visa-document-note h3,
.career-recruiter-heading h3 { font-size: 1.15rem; margin-bottom: .5rem; }
.visa-document-note p,
.visa-document-note li,
.career-recruiter-note,
.work-permission-note { color: var(--text-s); font-size: .86rem; }
.visa-document-note ul { display: grid; grid-template-columns: 1fr 1fr; gap: .35rem 1.5rem; padding-left: 1.2rem; margin: .75rem 0; }
.visa-document-caveat { font-size: .8rem !important; }
.career-recruiter-strip { width: 100%; max-width: 1200px; box-sizing: border-box; margin: 0 auto 2.5rem; padding: 1.5rem var(--gutter, 1.5rem); overflow: hidden; }
.career-recruiter-heading { margin-bottom: 1rem; }
.career-marquee { display: flex; width: 100%; overflow: hidden; mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent); }
.career-marquee-track { display: flex; flex: 0 0 auto; align-items: center; gap: .8rem; min-width: max-content; padding-right: .8rem; animation: career-marquee 34s linear infinite; }
.career-marquee:hover .career-marquee-track { animation-play-state: paused; }
.career-employer { display: inline-flex; align-items: center; justify-content: center; min-height: 3.25rem; min-width: 8rem; padding: .75rem 1.2rem; background: var(--surface); border: 1px solid var(--border); border-radius: 12px; color: var(--text-p); font-size: .9rem; font-weight: 700; box-shadow: 0 4px 14px rgba(14,20,32,.05); }
@keyframes career-marquee { to { transform: translateX(-100%); } }
.career-recruiter-note { margin-top: .7rem; }
.part-time-section { scroll-margin-top: 6rem; }
.part-time-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 1rem; margin-top: 1.6rem; }
.part-time-card { min-height: 9rem; padding: 1.2rem; background: var(--surface); border: 1px solid var(--border); border-radius: var(--r-md); display: flex; flex-direction: column; align-items: flex-start; gap: .45rem; }
.part-time-role { font-size: .95rem; font-weight: 750; }
.part-time-pay { display: inline-flex; padding: .25rem .6rem; border-radius: 999px; background: var(--accent-dim); color: var(--accent); font-size: .78rem; font-weight: 700; }
.part-time-card p { margin-top: auto; color: var(--text-s); font-size: .82rem; }
.work-permission-note { margin-top: .9rem; padding: .8rem 1rem; border-left: 3px solid var(--brand); background: var(--surface-tint); border-radius: 0 10px 10px 0; }
@media (max-width: 760px) {
    .part-time-grid { grid-template-columns: 1fr; }
    .visa-document-note { margin-inline: 1rem; }
    .visa-document-note ul { grid-template-columns: 1fr; }
    .career-recruiter-strip { padding-inline: 1rem; }
}
@media (prefers-reduced-motion: reduce) {
    .career-marquee-track { animation: none; }
}

.part-time-source-note { max-width: 82ch; margin-top: .8rem; color: var(--text-s); font-size: .78rem; line-height: 1.65; }
.part-time-source-note a { color: var(--brand); text-decoration-thickness: 1px; text-underline-offset: 2px; }
.part-time-source-note a:hover { color: var(--accent); }
@media (max-width: 760px) { .part-time-source-note { padding-inline: .1rem; } }


/* Six-group navigation refinement: preserve readable labels without crowding desktop widths. */
.nav-inner { gap: clamp(.45rem, 1vw, .9rem); }
.nav-links { min-width: 0; justify-content: center; gap: clamp(.25rem, .6vw, .65rem); margin: 0; padding: 0; }
.nav-links > li { flex: 0 0 auto; list-style: none; }
.nav-dropdown > button { font-size: clamp(.7rem, .78vw, .83rem); font-weight: 650; white-space: nowrap; }
.nav-dropdown > button:focus-visible,
.nav-dropdown-menu a:focus-visible,
.nav-ham:focus-visible,
.site-theme-toggle:focus-visible { outline: 3px solid color-mix(in srgb, var(--accent) 72%, white); outline-offset: 3px; }
.nav-links > .nav-dropdown:last-child > .nav-dropdown-menu { left: auto; right: 0; transform: translateY(-6px); }
.nav-links > .nav-dropdown:last-child:hover > .nav-dropdown-menu,
.nav-links > .nav-dropdown:last-child:focus-within > .nav-dropdown-menu,
.nav-links > .nav-dropdown:last-child.is-open > .nav-dropdown-menu { transform: translateY(0); }


/* Keep the mobile call-to-action at accessible contrast. */
.nav-mobile a.btn.btn-primary { color: #fff !important; }

/* ─── Consultation popup + floating launcher (site.js: setupConsultPopup) ─── */
.gm-popup { position: fixed; inset: 0; z-index: 2000; display: grid; place-items: center; padding: 1.25rem; }
.gm-popup[hidden] { display: none; }
.gm-popup-backdrop { position: absolute; inset: 0; background: rgba(8, 18, 32, .58); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); opacity: 0; transition: opacity .22s ease; }
.gm-popup-card { position: relative; display: grid; grid-template-columns: .92fr 1.08fr; width: min(100%, 860px); max-height: calc(100dvh - 2.5rem); overflow: auto; border-radius: 24px; background: var(--surface, #fff); color: var(--text-p, #0E1420); box-shadow: 0 40px 90px rgba(4, 12, 24, .45); opacity: 0; transform: translateY(18px) scale(.97); transition: opacity .26s ease, transform .32s cubic-bezier(.16, 1, .3, 1); }
.gm-popup.is-visible .gm-popup-backdrop { opacity: 1; }
.gm-popup.is-visible .gm-popup-card { opacity: 1; transform: none; }
.gm-popup-close { position: absolute; top: .85rem; right: .85rem; z-index: 2; display: grid; place-items: center; width: 38px; height: 38px; border: 1px solid var(--border, rgba(14,20,32,.1)); border-radius: 50%; background: var(--surface, #fff); color: var(--text-p, #0E1420); cursor: pointer; transition: transform .2s, border-color .2s; }
.gm-popup-close:hover { transform: rotate(90deg); border-color: var(--text-p, #0E1420); }
.gm-popup-close:focus-visible, .gm-popup-submit:focus-visible, .gm-consult-fab:focus-visible { outline: 3px solid var(--accent, #007A5A); outline-offset: 3px; }
.gm-popup-media { position: relative; min-height: 100%; background: #0F2D4A; }
.gm-popup-media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 25%; }
.gm-popup-media::after { content: ''; position: absolute; inset: 0; background: linear-gradient(to top, rgba(8, 24, 42, .75), rgba(8, 24, 42, 0) 45%); }
.gm-popup-media-badge { position: absolute; left: 1.1rem; right: 1.1rem; bottom: 1.1rem; z-index: 1; margin: 0; color: rgba(255, 255, 255, .9); font-size: .85rem; line-height: 1.35; }
.gm-popup-media-badge strong { display: block; color: #fff; font-size: 1.6rem; letter-spacing: -.02em; }
.gm-popup-body { padding: clamp(1.5rem, 3.5vw, 2.4rem); }
.gm-popup-eyebrow { display: inline-flex; align-items: center; gap: .45rem; margin: 0 0 .75rem; padding: .3rem .7rem; border-radius: 999px; background: var(--accent-dim, rgba(0,122,90,.12)); color: var(--accent, #007A5A); font: 700 .68rem var(--mono, monospace); letter-spacing: .1em; text-transform: uppercase; }
.gm-popup-eyebrow span { width: .45rem; height: .45rem; border-radius: 50%; background: currentColor; }
.gm-popup-title { margin: 0 2rem .5rem 0; font-size: clamp(1.4rem, 2.4vw, 1.85rem); font-weight: 800; letter-spacing: -.03em; line-height: 1.1; }
.gm-popup-sub { margin: 0 0 1.1rem; color: var(--text-s, #556270); font-size: .9rem; line-height: 1.55; }
.gm-popup-form { display: grid; gap: .7rem; }
.gm-popup-field { display: grid; gap: .3rem; margin: 0; font-size: .8rem; font-weight: 600; }
.gm-popup-field em { color: var(--text-s, #556270); font-style: normal; font-weight: 500; }
.gm-popup-field input, .gm-popup-field select { width: 100%; padding: .68em .9em; border: 1.5px solid var(--border, rgba(14,20,32,.12)); border-radius: 10px; background: var(--bg, #F0F2F7); color: var(--text-p, #0E1420); font: 500 .92rem var(--sans, system-ui, sans-serif); outline: none; transition: border-color .2s, box-shadow .2s; }
.gm-popup-field input:focus, .gm-popup-field select:focus { border-color: var(--accent, #007A5A); box-shadow: 0 0 0 3px var(--accent-dim, rgba(0,122,90,.12)); }
.gm-popup-field input[aria-invalid="true"] { border-color: #C0392B; }
.gm-popup-error { margin: 0; color: #C0392B; font-size: .8rem; font-weight: 600; }
.gm-popup-submit { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; margin-top: .25rem; padding: .85em 1.2em; border: 0; border-radius: 999px; background: var(--accent, #007A5A); color: #fff; font: 700 .98rem var(--sans, system-ui, sans-serif); cursor: pointer; box-shadow: 0 10px 24px rgba(0, 122, 90, .3); transition: background .2s, transform .2s cubic-bezier(.16, 1, .3, 1); }
.gm-popup-submit:hover { background: var(--accent-hover, #006649); transform: translateY(-1px); }
.gm-popup-fine { margin: 0; color: var(--text-s, #556270); font-size: .74rem; text-align: center; }
html.gm-popup-open { overflow: hidden; }

.gm-consult-fab { position: fixed; right: max(1rem, env(safe-area-inset-right)); bottom: max(1rem, env(safe-area-inset-bottom)); z-index: 1100; display: inline-flex; align-items: center; gap: .6rem; padding: .4rem 1rem .4rem .4rem; border: 1px solid rgba(255, 255, 255, .5); border-radius: 999px; background: var(--accent, #007A5A); color: #fff; font-family: var(--sans, system-ui, sans-serif); text-align: left; cursor: pointer; box-shadow: 0 14px 34px rgba(0, 60, 44, .35); transition: transform .25s cubic-bezier(.16, 1, .3, 1), box-shadow .25s; animation: gm-fab-in .6s .8s cubic-bezier(.16, 1, .3, 1) both; }
.gm-consult-fab:hover { transform: translateY(-3px); box-shadow: 0 18px 40px rgba(0, 60, 44, .42); }
.gm-consult-fab img { width: 40px; height: 40px; border: 2px solid #fff; border-radius: 50%; object-fit: cover; }
.gm-consult-fab > span { display: flex; flex-direction: column; line-height: 1.15; }
.gm-consult-fab strong { font-size: .88rem; }
.gm-consult-fab > span > span { font-size: .72rem; opacity: .85; }
html.gm-popup-open .gm-consult-fab { visibility: hidden; }
@keyframes gm-fab-in { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: none; } }

/* The destination nav is sticky (in flow), so the old 68px offset for a fixed nav left an empty band above the hero. */
.destination-page .dest-hero { margin-top: 0; }

/* Pages with a sticky nav + sticky section tabs: land anchor jumps below both bars, not under them. */
html:has(.subnav, .page-nav) { scroll-padding-top: 128px; }

/* Strobi, the study buddy: standalone companion in the bottom-left corner */
.gm-buddy { position: fixed; left: max(1rem, env(safe-area-inset-left)); bottom: max(1rem, env(safe-area-inset-bottom)); z-index: 1100; pointer-events: none; }
.gm-buddy.is-placed { bottom: auto; }
.gm-buddy > * { pointer-events: auto; }
.gm-buddy-avatar { position: relative; display: grid; place-items: center; width: 64px; height: 64px; padding: 0; border: 0; border-radius: 50%; background: transparent; cursor: grab; touch-action: none; user-select: none; -webkit-user-select: none; filter: drop-shadow(0 8px 14px rgba(20, 40, 90, .28)); animation: gm-buddy-in .7s 1s cubic-bezier(.16, 1, .3, 1) both; transition: transform .25s cubic-bezier(.34, 1.56, .64, 1); }
.gm-buddy-avatar:hover { transform: translateY(-3px) scale(1.05); }
.gm-buddy-avatar:active { transform: scale(.94); }
.gm-buddy-avatar:focus-visible { outline: 3px solid var(--accent, #007A5A); outline-offset: 3px; }
.gm-buddy-live, .gm-buddy-fallback { display: block; width: 100%; height: 100%; }
.gm-buddy-live .bs-avatar { width: 100% !important; height: 100% !important; }
.gm-buddy-eye { transform-box: fill-box; transform-origin: center; }
.gm-buddy[data-mood="happy"] .gm-buddy-fallback, .gm-buddy[data-mood="celebrate"] .gm-buddy-fallback { animation: gm-buddy-hop .5s ease-out; }
.gm-buddy[data-mood="confused"] .gm-buddy-fallback, .gm-buddy[data-mood="sad"] .gm-buddy-fallback { animation: gm-buddy-shake .45s ease-in-out; }
@keyframes gm-buddy-in { from { opacity: 0; transform: translateY(18px) scale(.8); } to { opacity: 1; transform: none; } }
@keyframes gm-buddy-hop { 40% { transform: translateY(-6px); } }
@keyframes gm-buddy-shake { 25% { transform: translateX(-4px); } 75% { transform: translateX(4px); } }

.gm-buddy-bubble { position: absolute; left: 0; bottom: calc(100% + .6rem); max-height: min(320px, 60vh); overflow-y: auto; display: grid; grid-template-columns: 1fr auto; gap: .5rem .35rem; width: min(270px, calc(100vw - 2rem)); padding: .8rem .55rem .8rem 1rem; border: 1px solid var(--border, rgba(0, 0, 0, .1)); border-radius: 18px 18px 18px 6px; background: var(--surface, #fff); color: var(--text-p, #0E1420); font: 500 .86rem/1.45 var(--sans, system-ui, sans-serif); box-shadow: 0 16px 40px rgba(14, 20, 32, .18); opacity: 0; transform: translateY(10px) scale(.96); transform-origin: 10% 100%; transition: opacity .25s, transform .3s cubic-bezier(.16, 1, .3, 1); }
.gm-buddy-bubble.is-visible { opacity: 1; transform: none; }
/* `display: grid` above would otherwise override [hidden] and leave an invisible box that swallows clicks. */
.gm-buddy-bubble[hidden] { display: none; }
.gm-buddy-title { grid-column: 1; margin: 0; font-weight: 800; font-size: .9rem; line-height: 1.3; }
.gm-buddy-title:not([hidden]) + .gm-buddy-text { grid-column: 1 / -1; }
.gm-buddy-text { grid-column: 1; margin: 0; }
.gm-buddy-actions { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: .4rem; }
.gm-buddy-actions[hidden] { display: none; }
.gm-buddy-cta { padding: .45rem .85rem; border: 0; border-radius: 999px; background: var(--accent, #007A5A); color: #fff; font: 700 .78rem var(--sans, system-ui, sans-serif); cursor: pointer; }
.gm-buddy-home { padding: .45rem .85rem; border: 1px solid var(--border, rgba(0, 0, 0, .14)); border-radius: 999px; background: transparent; color: var(--text-p, #0E1420); font: 600 .78rem var(--sans, system-ui, sans-serif); cursor: pointer; }
.gm-buddy-home:focus-visible { outline: 3px solid var(--accent, #007A5A); outline-offset: 2px; }
.gm-buddy.is-below .gm-buddy-bubble { bottom: auto; top: calc(100% + .6rem); border-radius: 6px 18px 18px 18px; transform-origin: 10% 0; }
.gm-buddy.is-flip .gm-buddy-bubble { left: auto; right: 0; border-radius: 18px 18px 6px 18px; transform-origin: 90% 100%; }
.gm-buddy.is-flip.is-below .gm-buddy-bubble { border-radius: 18px 6px 18px 18px; transform-origin: 90% 0; }
.gm-buddy.is-dragging .gm-buddy-avatar { cursor: grabbing; transform: scale(1.12) rotate(-6deg); transition: none; animation: none; }
.gm-buddy.is-dragging .gm-buddy-bubble { display: none; }
.gm-buddy-cta:focus-visible { outline: 3px solid var(--accent, #007A5A); outline-offset: 2px; }
.gm-buddy-close { grid-column: 2; grid-row: 1; display: grid; place-items: center; width: 28px; height: 28px; margin: -.3rem 0 0; border: 0; border-radius: 50%; background: transparent; color: var(--text-s, #5B6472); cursor: pointer; }
.gm-buddy-close:hover { background: var(--accent-dim, rgba(0, 122, 90, .12)); color: var(--accent-text, #005C44); }
.gm-buddy-close:focus-visible { outline: 3px solid var(--accent, #007A5A); outline-offset: 2px; }
html.gm-consent-open .gm-buddy { visibility: hidden; }
/* Next to the centred popup card on wide screens Strobi keeps reacting; the phone bottom sheet covers its corner. */
html.gm-popup-open .gm-buddy { z-index: 2100; }
@media (max-width: 700px) { html.gm-popup-open .gm-buddy { visibility: hidden; } }

@media (max-width: 700px) {
    .gm-popup { align-items: end; padding: 0; }
    .gm-popup-card { grid-template-columns: 1fr; width: 100%; max-height: 92dvh; border-radius: 22px 22px 0 0; transform: translateY(40px); }
    .gm-popup-media { min-height: 0; height: 150px; }
    .gm-popup-media img { object-position: center 34%; }
    .gm-popup-media-badge strong { display: inline; font-size: 1.05rem; margin-right: .25rem; }
    .gm-popup-body { padding: 1.25rem 1.25rem calc(1.25rem + env(safe-area-inset-bottom)); }
    .gm-popup-close { background: rgba(255, 255, 255, .92); color: #0E1420; }
    .gm-consult-fab { padding: .35rem .85rem .35rem .35rem; }
    .gm-consult-fab img { width: 34px; height: 34px; }
    .gm-consult-fab > span > span { display: none; }
    .gm-buddy-avatar { width: 52px; height: 52px; }
    .gm-buddy-bubble { width: min(250px, calc(100vw - 2rem)); font-size: .82rem; }
}
@media (prefers-reduced-motion: reduce) {
    .gm-popup-backdrop, .gm-popup-card, .gm-consult-fab, .gm-popup-close, .gm-buddy-avatar, .gm-buddy-bubble, .gm-buddy-fallback { transition: none; animation: none; }
}

/* ─── Accessibility: green text on green-tinted chips/rows needs a darker green to reach 4.5:1 ─── */
:root { --accent-text: #005C44; }
:root[data-theme="dark"] { --accent-text: #2DB88C; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) { --accent-text: #2DB88C; } }
.journey-stage, .page-tag, .cost-total td, .timeline-step .step-dot { color: var(--accent-text); }
.journey-card:nth-child(4) .journey-stage { color: rgba(255, 255, 255, .85); }
/* Links inside running text must not rely on colour alone. */
main p a, main li a, .form-terms a, .auth-form-sub a, p a[href^="mailto:"] { text-decoration: underline; text-underline-offset: 2px; }
.sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* Skip link (inserted by site.js) */
.skip-link { position: fixed; top: .5rem; left: .5rem; z-index: 3000; padding: .7rem 1rem; border-radius: 10px; background: #0F2D4A; color: #fff; font-weight: 700; text-decoration: none; transform: translateY(-160%); transition: transform .2s; }
.skip-link:focus { transform: none; outline: 3px solid #5EE0B0; outline-offset: 2px; }

/* ─── Cookie consent banner (site.js: setupConsentBanner) ─── */
.gm-consent { position: fixed; left: max(1rem, env(safe-area-inset-left)); bottom: max(1rem, env(safe-area-inset-bottom)); z-index: 2500; display: grid; gap: 1rem; width: min(560px, calc(100vw - 2rem)); padding: 1.15rem 1.2rem; border: 1px solid var(--border, rgba(14,20,32,.1)); border-radius: 18px; background: var(--surface, #fff); color: var(--text-p, #0E1420); box-shadow: 0 24px 60px rgba(8, 18, 32, .22); font-family: var(--sans, system-ui, sans-serif); }
.gm-consent[hidden] { display: none; }
.gm-consent-title { margin: 0 0 .3rem; font-size: 1rem; font-weight: 800; }
.gm-consent-text { margin: 0; color: var(--text-s, #556270); font-size: .85rem; line-height: 1.55; }
.gm-consent-text a { color: var(--accent-text, #005C44); font-weight: 700; text-decoration: underline; }
.gm-consent-options { display: grid; gap: .55rem; margin-top: .85rem; }
.gm-consent-options[hidden] { display: none; }
.gm-consent-option { display: flex; align-items: flex-start; gap: .6rem; padding: .6rem .7rem; border: 1px solid var(--border, rgba(14,20,32,.1)); border-radius: 12px; font-size: .8rem; color: var(--text-s, #556270); line-height: 1.4; cursor: pointer; }
.gm-consent-option input { margin-top: .15rem; width: 1.05rem; height: 1.05rem; accent-color: var(--accent, #007A5A); flex: 0 0 auto; }
.gm-consent-option strong { display: block; color: var(--text-p, #0E1420); font-size: .86rem; }
.gm-consent-actions { display: flex; flex-wrap: wrap; gap: .5rem; }
.gm-consent-btn { flex: 1 1 auto; min-height: 44px; padding: .6rem 1rem; border: 1.5px solid var(--text-p, #0E1420); border-radius: 999px; background: var(--text-p, #0E1420); color: var(--bg, #fff); font: 700 .86rem var(--sans, system-ui, sans-serif); cursor: pointer; }
.gm-consent-btn--ghost { background: transparent; color: var(--text-p, #0E1420); }
.gm-consent-btn:focus-visible { outline: 3px solid var(--accent, #007A5A); outline-offset: 2px; }
html.gm-consent-open .gm-consult-fab { visibility: hidden; }
@media (max-width: 560px) {
    .gm-consent { left: 0; right: 0; bottom: 0; width: 100%; border-radius: 18px 18px 0 0; padding-bottom: calc(1.15rem + env(safe-area-inset-bottom)); }
    .gm-consent-btn { flex-basis: 100%; }
}
.gm-popup-fine a { color: inherit; text-decoration: underline; }

/* ─── Legal bar: business details + policy links, injected into every footer ─── */
.gm-legal-bar { max-width: var(--w, 1280px); margin: 1.5rem auto 0; padding: 1.1rem 0 0; border-top: 1px solid var(--legal-line); color: var(--legal-fg); font-size: .78rem; line-height: 1.6; }
.gm-legal-bar--dark { --legal-fg: rgba(255, 255, 255, .8); --legal-link: #fff; --legal-line: rgba(255, 255, 255, .14); }
.gm-legal-bar--light { --legal-fg: var(--text-s, #556270); --legal-link: var(--text-p, #0E1420); --legal-line: var(--border, rgba(14,20,32,.1)); }
footer.gm-legal-bar { margin: 0; padding: 1.25rem var(--gutter, 1.25rem) calc(1.25rem + env(safe-area-inset-bottom)); max-width: none; background: var(--surface, #fff); }
.gm-legal-entity { margin: 0 0 .5rem; }
.gm-legal-bar a, .gm-legal-bar button { color: var(--legal-link); text-decoration: underline; text-underline-offset: 2px; }
.gm-legal-links { display: flex; flex-wrap: wrap; gap: .35rem 1.1rem; }
.gm-legal-links a, .gm-legal-links button { font-size: .78rem; font-weight: 600; }
.gm-legal-links button { padding: 0; border: 0; background: none; font-family: inherit; cursor: pointer; }
.gm-legal-bar a:focus-visible, .gm-legal-bar button:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; border-radius: 3px; }

/* ─── Dark mode: the bright dark-theme green (#2DB88C) carries dark text, not white ─── */
.gm-consult-fab strong, .gm-consult-fab > span > span { color: inherit; opacity: 1; }
.counsel-spec { color: var(--accent-text, #005C44); }

/* ─── Dark mode: green-filled controls keep the deep green so white text stays at 5.3:1 ─── */
:root[data-theme="dark"] :is(.btn-cta, .btn-details, .btn-explore, .btn-next, .btn-primary, .btn-reg, .btn-sm-primary, .btn-submit, .btn-submit-full, .consult-hero-badge span, .counsellor-btn-primary, .cta-strip .btn, .destination-page .nav-btn, .dr-submit, .nav-btn, .nav-cta, .newsletter-btn, .p-step.done, .search-btn, .sidebar-badge, .submit-btn, .ty-next-step-num, .gm-consult-fab, .gm-popup-submit, .error-actions .btn:not(.btn-ghost):not(.btn-outline)) { background-color: #007A5A !important; color: #fff !important; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) :is(.btn-cta, .btn-details, .btn-explore, .btn-next, .btn-primary, .btn-reg, .btn-sm-primary, .btn-submit, .btn-submit-full, .consult-hero-badge span, .counsellor-btn-primary, .cta-strip .btn, .destination-page .nav-btn, .dr-submit, .nav-btn, .nav-cta, .newsletter-btn, .p-step.done, .search-btn, .sidebar-badge, .submit-btn, .ty-next-step-num, .gm-consult-fab, .gm-popup-submit, .error-actions .btn:not(.btn-ghost):not(.btn-outline)) { background-color: #007A5A !important; color: #fff !important; } }
:root[data-theme="dark"] .highlight-box a { color: var(--text-p); }
:root[data-theme="dark"] a.btn[href$="free-consultation.html"]:not(.btn-outline):not(.btn-ghost) { background-color: #007A5A !important; color: #fff !important; }
:root[data-theme="dark"] .status-applying { color: #8FB4FF; }
:root[data-theme="dark"] .accent-card :is(.metric-lbl, .metric-sub) { color: rgba(255, 255, 255, .82); }

/* ─── Footer surface: one dark footer on every page, in both themes. The white logo,
   tagline and subscribe box below are built for it; some pages still styled a light one. ─── */
footer.footer { background: var(--brand-deep, #0F2D4A); border-top-color: transparent; }
footer.footer :is(.footer-col-title, .footer-heading, .footer-links a, .footer-legal, .footer-bottom a) { color: rgba(255, 255, 255, .78); }
footer.footer :is(.footer-links a, .footer-bottom a):hover { color: #fff; }
footer.footer .footer-bottom { border-top-color: rgba(255, 255, 255, .12); }
footer.footer .footer-brand { color: #fff; }
footer.footer .gm-legal-bar { --legal-fg: rgba(255, 255, 255, .8); --legal-link: #fff; --legal-line: rgba(255, 255, 255, .14); }
/* Bottom room under the page's outermost footer, so its last line scrolls clear of the fixed Strobi and counselling buttons. */
:root footer:not(footer *) { padding-bottom: calc(5.5rem + env(safe-area-inset-bottom)); }

/* ─── Footer brand: logo, tagline and email subscribe (shared across pages) ─── */
footer .footer-logo { display: inline-block; border-radius: 8px; }
footer .footer-logo img { display: block; width: clamp(170px, 17vw, 220px); max-width: 100%; height: auto; }
footer .footer-logo:focus-visible { outline: 3px solid #3C8FD9; outline-offset: 4px; }
footer .footer-tagline { max-width: 27ch; margin: 1rem 0 1.35rem; color: rgba(255, 255, 255, .72); font-size: clamp(.95rem, 1.1vw, 1.05rem); line-height: 1.55; }
.footer-subscribe { display: flex; flex-wrap: wrap; align-items: center; gap: .65rem; width: 100%; max-width: 330px; margin: 0; }
.footer-subscribe input { flex: 1 1 0; min-width: 0; height: 52px; padding: 0 1.1rem; border: 1px solid rgba(255, 255, 255, .2); border-radius: 16px; background: rgba(255, 255, 255, .07); color: #fff; font: 500 1rem var(--sans, system-ui, sans-serif); transition: border-color .2s, background .2s, box-shadow .2s; }
.footer-subscribe input::placeholder { color: rgba(255, 255, 255, .7); }
.footer-subscribe input:focus { outline: none; border-color: #3C8FD9; background: rgba(255, 255, 255, .1); box-shadow: 0 0 0 3px rgba(60, 143, 217, .3); }
.footer-subscribe input[aria-invalid="true"] { border-color: #FF8A80; }
.footer-subscribe button { flex: 0 0 auto; display: grid; place-items: center; width: 52px; height: 52px; padding: 0; border: 0; border-radius: 50%; background: #3C8FD9; color: #fff; cursor: pointer; box-shadow: 0 8px 20px rgba(60, 143, 217, .35); transition: transform .2s cubic-bezier(.34, 1.56, .64, 1), background .2s; }
.footer-subscribe button:hover { background: #2F7FC6; transform: translateX(2px); }
.footer-subscribe button:disabled { opacity: .6; cursor: progress; transform: none; }
.footer-subscribe button:focus-visible { outline: 3px solid #fff; outline-offset: 3px; }
.footer-subscribe-msg { flex: 1 0 100%; margin: 0; color: rgba(255, 255, 255, .7); font-size: .78rem; line-height: 1.45; }
.footer-subscribe-msg a { color: #fff; text-decoration: underline; }
.footer-subscribe-msg.is-error { color: #FFB4AB; }
.footer-subscribe-msg.is-success { color: #8EE3C2; }
@media (max-width: 700px) {
    footer :is(.footer-inner, .footer-grid) > :has(.footer-subscribe) { grid-column: 1 / -1; }
    footer .footer-tagline { max-width: 32ch; }
    .footer-subscribe { max-width: 100%; }
}
