:root{--navy:#102f48;--navy-2:#071f32;--teal:#0d8794;--teal-light:#dff4f3;--pink:#df0b5d;--gold:#f6b90d;--ink:#1b2c38;--muted:#60717d;--paper:#fffdfa;--soft:#f5f7f7;--line:#dce4e7;--shadow:0 18px 50px rgba(16,47,72,.12);--radius:24px;--shell:1180px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;line-height:1.65}img{max-width:100%;height:auto}a{color:inherit}.shell{width:min(calc(100% - 40px),var(--shell));margin-inline:auto}.narrow{max-width:780px}.centre{text-align:center}.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{position:absolute;left:-9999px;top:8px;background:#fff;padding:10px 16px;z-index:1000}.skip-link:focus{left:8px}.site-header{position:sticky;top:0;z-index:100;background:rgba(255,253,250,.94);backdrop-filter:blur(14px);border-bottom:1px solid rgba(16,47,72,.08)}.nav-shell{display:flex;align-items:center;justify-content:space-between;min-height:88px}.brand-logo{width:184px;height:72px;object-fit:contain;object-position:left center}.brand-link{display:flex}.site-nav{display:flex;align-items:center;gap:24px;font-size:.95rem;font-weight:700}.site-nav a{text-decoration:none;padding:8px 0;position:relative}.site-nav a:not(.nav-signin)::after{content:"";position:absolute;left:0;right:100%;bottom:2px;height:3px;background:var(--teal);transition:right .2s}.site-nav a:hover::after,.site-nav a.is-active::after{right:0}.nav-signin{background:var(--navy);color:#fff!important;padding:11px 18px!important;border-radius:999px}.nav-toggle{display:none;background:none;border:0;padding:8px}.nav-toggle span:not(.sr-only){display:block;width:26px;height:3px;background:var(--navy);margin:5px;border-radius:2px}.hero{padding:72px 0 62px;overflow:hidden}.hero-grid,.split-section{display:grid;grid-template-columns:1.05fr .95fr;gap:64px;align-items:center}.hero-copy h1,.page-hero h1{font-size:clamp(2.7rem,5.5vw,5.7rem);line-height:.98;letter-spacing:-.055em;margin:18px 0 24px;color:var(--navy)}.hero-copy .lead,.page-hero .lead{font-size:clamp(1.08rem,2vw,1.34rem);color:var(--muted);max-width:720px}.hero-visual{position:relative}.hero-visual:before{content:"";position:absolute;inset:-28px;background:linear-gradient(135deg,rgba(246,185,13,.25),rgba(13,135,148,.18),rgba(223,11,93,.15));border-radius:38px;transform:rotate(3deg);z-index:-1}.hero-visual img{display:block;border-radius:30px;box-shadow:var(--shadow);aspect-ratio:1.5/1;object-fit:cover}.eyebrow{text-transform:uppercase;letter-spacing:.13em;font-size:.78rem;font-weight:900;color:var(--teal)}.eyebrow.light{color:#9ce4e4}.button-row{display:flex;flex-wrap:wrap;gap:12px;margin:30px 0 20px}.button{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;border:0;border-radius:999px;padding:14px 22px;font-weight:850;font-size:1rem;cursor:pointer;transition:transform .18s,box-shadow .18s}.button:hover{transform:translateY(-2px);box-shadow:0 12px 25px rgba(16,47,72,.18)}.button-primary{background:var(--pink);color:#fff}.button-secondary{background:var(--teal-light);color:var(--navy)}.button-white{background:#fff;color:var(--navy)}.button-outline-light{border:2px solid rgba(255,255,255,.65);color:#fff}.text-link{color:var(--teal);font-weight:850;text-decoration:none}.assurance-strip{background:var(--navy);color:#fff;padding:20px 0}.assurance-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}.assurance-grid span{font-size:.9rem;font-weight:700;padding-left:18px;position:relative}.assurance-grid span:before{content:"✓";color:var(--gold);position:absolute;left:0}.section{padding:90px 0}.section-tint{background:linear-gradient(135deg,#eef8f7,#f8f3ed)}.section-news{background:#fbf7f2}.section h2,.cta-band h2{font-size:clamp(2rem,4vw,3.5rem);line-height:1.06;letter-spacing:-.04em;margin:14px 0 20px;color:var(--navy)}.section-intro{font-size:1.18rem;color:var(--muted)}.feature-grid{display:grid;gap:24px;margin-top:42px}.feature-grid.three{grid-template-columns:repeat(3,1fr)}.feature-card,.audience-card,.news-card,.value-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:30px;box-shadow:0 10px 30px rgba(16,47,72,.06)}.feature-card h3,.news-card h3,.news-card h2{font-size:1.35rem;color:var(--navy);margin:14px 0 8px}.round-icon{width:88px;height:88px;object-fit:contain}.tick-list{list-style:none;padding:0;margin:26px 0}.tick-list li{padding:8px 0 8px 30px;position:relative}.tick-list li:before{content:"✓";position:absolute;left:0;color:var(--pink);font-weight:900}.tick-list.large li{font-size:1.08rem}.product-panel{background:var(--navy);padding:28px;border-radius:32px;box-shadow:var(--shadow)}.mock-browser{background:#fff;border-radius:16px;overflow:hidden}.mock-browser-bar{display:flex;gap:6px;padding:11px 14px;background:#e9eef0}.mock-browser-bar span{width:9px;height:9px;border-radius:50%;background:#9eacb3}.mock-content{display:grid;grid-template-columns:28% 1fr;min-height:310px}.mock-sidebar{background:#143e58}.mock-main{padding:28px}.mock-heading{width:58%;height:20px;background:#d6e4e7;border-radius:5px}.mock-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:24px 0}.mock-cards i{height:70px;background:#e4f4f3;border-radius:10px}.mock-lines b{display:block;height:10px;background:#e7ecee;border-radius:5px;margin:13px 0}.mock-lines b:nth-child(2){width:85%}.mock-lines b:nth-child(3){width:72%}.mock-caption{color:#c7d9e0;font-size:.82rem;margin-bottom:0}.audience-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px}.audience-card{padding:44px}.audience-dark{background:var(--navy);color:#fff}.audience-dark h2{color:#fff}.light-link{color:#9ce4e4}.section-heading-row{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:28px}.news-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.news-card a{text-decoration:none}.news-category{display:inline-block;color:var(--pink);font-weight:900;font-size:.78rem;text-transform:uppercase;letter-spacing:.08em}.news-card small{display:block;color:var(--muted);margin-top:16px}.cta-band{background:linear-gradient(115deg,var(--navy-2),var(--navy),#0b6670);color:#fff;padding:62px 0}.cta-band h2{color:#fff}.cta-grid{display:flex;align-items:center;justify-content:space-between;gap:42px}.page-hero{padding:88px 0;background:linear-gradient(135deg,#f8f3eb,#eef8f7)}.page-hero-dark{background:linear-gradient(120deg,var(--navy-2),var(--navy));color:#fff}.page-hero-dark h1,.page-hero-dark .lead{color:#fff}.page-hero-image .hero-icon,.hero-icon{width:min(320px,70vw);justify-self:center}.process-list{display:grid;gap:18px}.process-step{display:grid;grid-template-columns:90px 1fr;gap:26px;padding:28px;border-bottom:1px solid var(--line)}.process-step>span{font-size:2.4rem;font-weight:900;color:var(--gold)}.process-step h2{font-size:1.8rem;margin:0 0 8px}.quote-section{padding:78px 0;background:var(--navy);color:#fff}.quote-section blockquote{font-size:clamp(1.5rem,3vw,2.4rem);line-height:1.35;margin:0;text-align:center}.contact-grid{display:grid;grid-template-columns:.75fr 1.25fr;gap:54px}.number-list{padding-left:22px}.contact-card{margin-top:30px;padding:22px;border-radius:18px;background:var(--teal-light);display:grid}.contact-form{background:#fff;border:1px solid var(--line);padding:34px;border-radius:var(--radius);box-shadow:var(--shadow)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.contact-form label{display:grid;gap:7px;font-weight:750;margin-bottom:18px}.contact-form input,.contact-form textarea{width:100%;border:1px solid #bdcbd0;border-radius:12px;padding:13px 14px;font:inherit;background:#fff}.contact-form input:focus,.contact-form textarea:focus{outline:3px solid rgba(13,135,148,.18);border-color:var(--teal)}.form-message{padding:14px;border-radius:12px;margin-bottom:18px}.form-message.success{background:#e3f6ec;color:#175e36}.form-message.error{background:#fff0f0;color:#8c1f28}.form-note{font-size:.86rem;color:var(--muted)}.honeypot{position:absolute;left:-9999px}.faq-list details{border-bottom:1px solid var(--line);padding:18px 0}.faq-list summary{cursor:pointer;font-weight:850;font-size:1.15rem;color:var(--navy)}.faq-list p{color:var(--muted)}.article-header{padding:80px 0 44px;background:linear-gradient(135deg,#f8f3eb,#eef8f7)}.article-header h1{font-size:clamp(2.5rem,5vw,4.7rem);line-height:1.02;color:var(--navy)}.article-body,.legal-content{max-width:800px;padding-top:64px;padding-bottom:80px}.article-body h2,.legal-content h2{font-size:1.7rem;color:var(--navy);margin-top:36px}.site-footer{background:#081d2e;color:#d8e4e8;padding:64px 0 26px}.footer-grid{display:grid;grid-template-columns:1.5fr repeat(3,1fr);gap:36px}.footer-logo{width:170px;filter:brightness(0) invert(1)}.site-footer h2{font-size:1rem;color:#fff}.site-footer a{display:block;text-decoration:none;margin:8px 0;color:#d8e4e8}.footer-bottom{display:flex;justify-content:space-between;gap:30px;border-top:1px solid rgba(255,255,255,.16);margin-top:42px;padding-top:22px;font-size:.8rem;color:#9db0b9}.reveal{opacity:0;transform:translateY(24px);transition:opacity .7s,transform .7s}.reveal.is-visible{opacity:1;transform:none}.delay-1{transition-delay:.12s}.delay-2{transition-delay:.24s}@media(max-width:980px){.site-nav{position:absolute;top:88px;left:20px;right:20px;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow);border-radius:18px;padding:18px;display:none;flex-direction:column;align-items:stretch;gap:4px}.site-nav.is-open{display:flex}.site-nav a{padding:11px 10px}.nav-toggle{display:block}.hero-grid,.split-section,.contact-grid{grid-template-columns:1fr}.hero-visual{order:-1}.hero-home .hero-visual{order:0}.assurance-grid{grid-template-columns:1fr 1fr}.feature-grid.three,.news-grid{grid-template-columns:1fr 1fr}.cta-grid{align-items:flex-start;flex-direction:column}.hero-copy h1,.page-hero h1{font-size:clamp(2.7rem,9vw,4.5rem)}}@media(max-width:680px){.shell{width:min(calc(100% - 28px),var(--shell))}.nav-shell{min-height:74px}.brand-logo{width:145px;height:58px}.site-nav{top:74px}.hero,.section,.page-hero{padding:60px 0}.hero-grid,.split-section{gap:34px}.hero-home .hero-visual{order:-1}.hero-copy h1,.page-hero h1{font-size:2.75rem}.assurance-grid,.feature-grid.three,.news-grid,.audience-grid,.form-grid,.footer-grid{grid-template-columns:1fr}.assurance-grid{gap:12px}.section-heading-row,.footer-bottom{align-items:flex-start;flex-direction:column}.process-step{grid-template-columns:1fr;gap:4px;padding-inline:4px}.process-step>span{font-size:1.5rem}.button-row{align-items:stretch;flex-direction:column}.button{width:100%}.audience-card{padding:30px}.contact-form{padding:22px}.footer-bottom{gap:8px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.reveal{opacity:1;transform:none;transition:none}}

/* =========================================================
   Homepage live product screenshot
   ========================================================= */
.product-screenshot-panel {
    padding: 18px;
    background: linear-gradient(145deg, var(--navy-2), var(--navy), #0b6670);
}

.product-screenshot-frame {
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, 0.18);
    border-radius: 18px;
    background: #f4f0e9;
    box-shadow: 0 18px 40px rgba(7, 31, 50, 0.28);
}

.product-screenshot-frame img {
    display: block;
    width: 100%;
    height: auto;
    max-height: 720px;
    object-fit: contain;
    object-position: top center;
}

.product-screenshot-panel .mock-caption {
    margin: 14px 4px 0;
    color: #d8e8ec;
    line-height: 1.5;
}

/* =========================================================
   Footer logo correction
   The supplied logo is a full-colour image, so it must not be
   inverted. A light backing keeps it clear on the dark footer.
   ========================================================= */
.footer-logo {
    display: block;
    width: min(240px, 100%);
    height: auto;
    padding: 10px 12px;
    border-radius: 14px;
    background: #fff;
    filter: none;
    object-fit: contain;
    object-position: left center;
}

@media (max-width: 680px) {
    .product-screenshot-panel {
        padding: 10px;
        border-radius: 22px;
    }

    .product-screenshot-frame {
        border-radius: 14px;
    }

    .product-screenshot-frame img {
        max-height: none;
    }

    .footer-logo {
        width: min(210px, 100%);
    }
}


/* =========================================================
   Page hero icon frames
   Match the multicolour treatment used around the homepage image.
   ========================================================= */
.hero-icon-frame {
    position: relative;
    width: min(380px, 78vw);
    justify-self: center;
    padding: 26px;
    border-radius: 38px;
    isolation: isolate;
}

.hero-icon-frame::before {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: linear-gradient(135deg, rgba(246,185,13,.25), rgba(13,135,148,.18), rgba(223,11,93,.15));
    transform: rotate(3deg);
    z-index: -1;
}

.hero-icon-frame .hero-icon {
    display: block;
    width: 100%;
    max-width: none;
    height: auto;
    object-fit: contain;
    border-radius: 28px;
}

.page-hero-dark .hero-icon-frame::before {
    background: linear-gradient(135deg, rgba(246,185,13,.30), rgba(13,135,148,.28), rgba(223,11,93,.24));
}

@media (max-width: 680px) {
    .hero-icon-frame {
        width: min(320px, 82vw);
        padding: 18px;
        border-radius: 30px;
    }

    .hero-icon-frame .hero-icon {
        border-radius: 22px;
    }
}

/* =========================================================
   Public service status page
   Append to /assets/css/site.css
   ========================================================= */
.service-status-hero {
    overflow: hidden;
}

.service-status-hero-grid {
    display: grid;
    grid-template-columns: 1.15fr .85fr;
    gap: 54px;
    align-items: center;
}

.service-status-overall {
    position: relative;
    padding: 34px;
    border: 1px solid var(--line);
    border-radius: 30px;
    background: #fff;
    box-shadow: var(--shadow);
}

.service-status-overall p,
.service-status-overall span {
    margin: 0;
    color: var(--muted);
}

.service-status-overall strong {
    display: block;
    margin: 8px 0 10px;
    color: var(--navy);
    font-size: clamp(1.7rem, 3vw, 2.6rem);
    line-height: 1.05;
}

.service-status-pulse {
    display: inline-block;
    width: 16px;
    height: 16px;
    margin-bottom: 18px;
    border-radius: 50%;
    background: #24884f;
    box-shadow: 0 0 0 8px rgba(36, 136, 79, .13);
}

.service-status-state-partial_outage .service-status-pulse,
.service-status-state-degraded .service-status-pulse {
    background: #d18b08;
    box-shadow: 0 0 0 8px rgba(209, 139, 8, .15);
}

.service-status-state-major_outage .service-status-pulse,
.service-status-state-unavailable .service-status-pulse {
    background: var(--pink);
    box-shadow: 0 0 0 8px rgba(223, 11, 93, .13);
}

.service-status-heading-row {
    align-items: flex-end;
}

.service-status-updated {
    min-width: 210px;
    margin: 0;
    color: var(--muted);
    text-align: right;
    font-size: .9rem;
}

.service-status-updated strong {
    color: var(--navy);
}

.service-status-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 24px;
    margin-top: 38px;
}

.service-status-card {
    position: relative;
    overflow: hidden;
    min-height: 250px;
    padding: 30px;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    background: #fff;
    box-shadow: 0 10px 30px rgba(16, 47, 72, .06);
}

.service-status-card::before {
    content: "";
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    height: 6px;
    background: #24884f;
}

.service-status-card.service-status-state-degraded::before {
    background: #d18b08;
}

.service-status-card.service-status-state-unavailable::before {
    background: var(--pink);
}

.service-status-card-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.service-status-icon {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: #24884f;
    box-shadow: 0 0 0 7px rgba(36, 136, 79, .12);
}

.service-status-state-degraded .service-status-icon {
    background: #d18b08;
    box-shadow: 0 0 0 7px rgba(209, 139, 8, .14);
}

.service-status-state-unavailable .service-status-icon {
    background: var(--pink);
    box-shadow: 0 0 0 7px rgba(223, 11, 93, .12);
}

.service-status-badge {
    padding: 7px 11px;
    border-radius: 999px;
    background: #e3f6ec;
    color: #175e36;
    font-size: .78rem;
    font-weight: 900;
}

.service-status-state-degraded .service-status-badge {
    background: #fff4d7;
    color: #805200;
}

.service-status-state-unavailable .service-status-badge {
    background: #fff0f3;
    color: #941442;
}

.service-status-card h3 {
    margin: 30px 0 10px;
    color: var(--navy);
    font-size: 1.45rem;
}

.service-status-card p {
    margin-bottom: 18px;
}

.service-status-card small {
    display: block;
    color: var(--muted);
}

.service-status-help-card .button {
    margin-top: 12px;
}

@media (max-width: 900px) {
    .service-status-hero-grid,
    .service-status-grid {
        grid-template-columns: 1fr;
    }

    .service-status-hero-grid {
        gap: 32px;
    }
}

@media (max-width: 680px) {
    .service-status-overall,
    .service-status-card {
        padding: 24px;
    }

    .service-status-updated {
        min-width: 0;
        text-align: left;
    }

    .service-status-card {
        min-height: 0;
    }
}

/* =========================================================
   Service status hotfix additions
   Append once to the end of /assets/css/site.css
   ========================================================= */
.service-status-state-checking .service-status-pulse,
.service-status-state-checking .service-status-icon,
.service-status-state-unknown .service-status-pulse,
.service-status-state-unknown .service-status-icon {
    background: var(--teal);
    box-shadow: 0 0 0 8px rgba(13, 135, 148, .13);
}

.service-status-card.service-status-state-checking::before,
.service-status-card.service-status-state-unknown::before {
    background: var(--teal);
}

.service-status-state-checking .service-status-badge,
.service-status-state-unknown .service-status-badge {
    background: var(--teal-light);
    color: var(--navy);
}

.service-status-state-checking .service-status-pulse,
.service-status-state-checking .service-status-icon {
    animation: prepsted-status-pulse 1.2s ease-in-out infinite;
}

@keyframes prepsted-status-pulse {
    0%, 100% { opacity: .45; }
    50% { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
    .service-status-state-checking .service-status-pulse,
    .service-status-state-checking .service-status-icon {
        animation: none;
    }
}

/* =========================================================
   WCAG 2.2 AA accessibility and resilience improvements
   ========================================================= */
:root {
    /* Darkened from the original teal so small branded text exceeds 4.5:1 on light backgrounds. */
    --teal: #087682;
    --gold-text: #835600;
    --focus-dark: #102f48;
    --focus-light: #ffffff;
    --error: #8c1f28;
    --error-bg: #fff0f0;
    --success: #175e36;
    --success-bg: #e3f6ec;
}

html {
    scroll-padding-top: 112px;
}

body {
    overflow-wrap: break-word;
}

.hero-grid > *,
.split-section > *,
.contact-grid > * {
    min-width: 0;
}

:where(h1, h2, h3, h4, h5, h6, [id], a, button, input, textarea, select, summary, [tabindex]) {
    scroll-margin-top: 112px;
}

main:focus {
    outline: none;
}

.sr-only {
    clip: auto;
    clip-path: inset(50%);
}

.skip-link {
    position: fixed;
    top: 12px;
    left: 12px;
    z-index: 10000;
    width: auto;
    height: auto;
    margin: 0;
    padding: 12px 18px;
    overflow: visible;
    clip: auto;
    clip-path: none;
    border: 2px solid var(--navy);
    border-radius: 10px;
    background: #fff;
    color: var(--navy);
    font-weight: 850;
    text-decoration: underline;
    text-underline-offset: .18em;
    transform: translateY(-180%);
}

.skip-link:focus,
.skip-link:focus-visible {
    left: 12px;
    transform: translateY(0);
}

:where(a, button, input, textarea, select, summary, [tabindex]):focus-visible {
    outline: 3px solid var(--focus-light);
    outline-offset: 3px;
    box-shadow: 0 0 0 6px var(--focus-dark);
}

.site-header {
    background: rgba(255, 253, 250, .99);
}

.brand-link,
.nav-toggle,
.site-nav a,
.button {
    min-height: 44px;
}

.brand-link {
    align-items: center;
}

.nav-toggle {
    min-width: 48px;
    min-height: 48px;
    padding: 9px;
    border-radius: 10px;
    color: var(--navy);
}

.nav-toggle .nav-toggle-icon {
    display: block;
    width: 30px;
    height: auto;
    margin: 0;
    background: transparent;
}

.nav-toggle .nav-toggle-icon span {
    display: block;
    width: 28px;
    height: 3px;
    margin: 5px 1px;
    border-radius: 2px;
    background: currentColor;
}

.site-nav a {
    display: inline-flex;
    align-items: center;
    padding-top: 10px;
    padding-bottom: 10px;
}

.text-link,
.article-body a,
.legal-content a,
.contact-copy a,
.form-note a,
.error-summary a,
.service-status-noscript a {
    text-decoration: underline;
    text-decoration-thickness: .11em;
    text-underline-offset: .2em;
}

.text-link:hover,
.article-body a:hover,
.legal-content a:hover,
.contact-copy a:hover,
.form-note a:hover,
.error-summary a:hover,
.service-status-noscript a:hover {
    text-decoration-thickness: .18em;
}

.eyebrow {
    color: var(--teal);
}

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

.process-step > span {
    color: var(--gold-text);
}

.feature-card h2 {
    margin: 14px 0 8px;
    color: var(--navy);
    font-size: 1.35rem;
}

.news-category {
    margin: 0;
}

.news-card h2 a,
.news-card h3 a {
    text-decoration: underline;
    text-decoration-color: currentColor;
    text-decoration-thickness: .08em;
    text-underline-offset: .17em;
}

.news-card h2 a:hover,
.news-card h3 a:hover {
    text-decoration-color: currentColor;
    text-decoration-thickness: .13em;
}

.news-card time,
.article-header time {
    display: block;
    margin-top: 16px;
    color: var(--muted);
    font-size: .875rem;
}

.news-card .text-link {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    margin-top: 10px;
}

.article-body,
.legal-content {
    overflow-wrap: anywhere;
}

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

.site-footer a {
    display: inline-flex;
    align-items: center;
    min-height: 32px;
    text-decoration: underline;
    text-decoration-color: rgba(216, 228, 232, .48);
    text-underline-offset: .18em;
}

.site-footer a:hover {
    text-decoration-color: currentColor;
}

/* Content stays available if JavaScript is blocked or fails. */
.reveal {
    opacity: 1;
    transform: none;
}

.js .reveal {
    opacity: 1;
    transform: translateY(24px);
}

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

/* Contact form */
.contact-form h2 {
    margin-top: 0;
    color: var(--navy);
    font-size: 1.7rem;
}

.form-intro {
    margin-top: -8px;
    margin-bottom: 26px;
    color: var(--muted);
}

.form-field {
    min-width: 0;
    margin-bottom: 18px;
}

.form-field > label,
.contact-form > .form-field > label {
    display: block;
    margin: 0 0 7px;
    font-weight: 750;
}

.field-requirement {
    color: var(--muted);
    font-size: .88em;
    font-weight: 650;
}

.field-hint,
.field-error {
    margin: 0 0 8px;
    font-size: .9rem;
    line-height: 1.5;
}

.field-hint {
    color: var(--muted);
}

.field-error {
    margin-top: 8px;
    color: var(--error);
    font-weight: 750;
}

.contact-form input,
.contact-form textarea {
    min-height: 48px;
    border-color: #767676;
    font-size: 1rem;
}

.contact-form textarea {
    min-height: 150px;
    resize: vertical;
}

.contact-form input:focus,
.contact-form textarea:focus {
    border-color: var(--navy);
}

.contact-form input[aria-invalid="true"],
.contact-form textarea[aria-invalid="true"] {
    border: 3px solid var(--error);
}

.error-summary,
.form-message {
    margin-bottom: 24px;
    padding: 20px 22px;
    border-radius: 14px;
}

.error-summary {
    border: 3px solid var(--error);
    border-left-width: 8px;
    background: var(--error-bg);
    color: var(--ink);
}

.error-summary h2,
.form-message h2 {
    margin: 0 0 8px;
    color: inherit;
    font-size: 1.45rem;
}

.error-summary ul,
.error-summary p,
.form-message p {
    margin-bottom: 0;
}

.error-summary a {
    color: var(--error);
    font-weight: 800;
}

.form-message.success {
    border: 3px solid var(--success);
    border-left-width: 8px;
    background: var(--success-bg);
    color: var(--success);
}

.form-note {
    max-width: 60ch;
}

/* FAQ uses native disclosure controls with generous keyboard/touch targets. */
.faq-list summary {
    min-height: 48px;
    padding: 10px 8px;
    border-radius: 8px;
}

.faq-list details[open] summary {
    margin-bottom: 8px;
}

/* Service status updates use text as well as colour. */
.service-status-detail {
    display: block;
    margin: 0;
    color: var(--muted);
    font-size: .875rem;
}

.service-status-updated time {
    color: var(--navy);
    font-weight: 800;
}

.service-status-noscript {
    border-top: 4px solid var(--gold-text);
    background: #fff7df;
}

@media (max-width: 980px) {
    html {
        scroll-padding-top: 92px;
    }

    :where(h1, h2, h3, h4, h5, h6, [id], a, button, input, textarea, select, summary, [tabindex]) {
        scroll-margin-top: 92px;
    }

    .site-nav {
        max-height: calc(100vh - 112px);
        overflow-y: auto;
        overscroll-behavior: contain;
    }

    .site-nav a {
        min-height: 48px;
        padding: 12px;
        border-radius: 8px;
    }

    .no-js .nav-shell {
        flex-wrap: wrap;
    }

    .no-js .nav-toggle {
        display: none;
    }

    .no-js .site-nav {
        position: static;
        display: flex;
        width: 100%;
        max-height: none;
        padding: 4px 0 16px;
        border: 0;
        border-radius: 0;
        box-shadow: none;
    }
}

@media (max-width: 680px) {
    .site-nav {
        right: 14px;
        left: 14px;
    }

    .contact-form,
    .error-summary,
    .form-message {
        padding: 20px;
    }

    .service-status-card-top {
        align-items: flex-start;
        flex-direction: column;
    }
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        scroll-behavior: auto !important;
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
        transition-delay: 0ms !important;
    }

    .js .reveal {
        opacity: 1;
        transform: none;
    }
}

@media (prefers-contrast: more) {
    :root {
        --line: #80909a;
        --muted: #40515c;
    }

    .feature-card,
    .audience-card,
    .news-card,
    .value-card,
    .contact-form,
    .service-status-card,
    .service-status-overall {
        border-width: 2px;
    }
}

@media (forced-colors: active) {
    .button,
    .nav-signin,
    .service-status-badge,
    .footer-logo {
        forced-color-adjust: auto;
    }

    .site-nav a.is-active {
        outline: 2px solid currentColor;
    }

    .service-status-pulse,
    .service-status-icon,
    .service-status-card::before {
        background: CanvasText;
    }
}

@media print {
    .reveal,
    .js .reveal {
        opacity: 1 !important;
        transform: none !important;
    }

    .site-header,
    .site-footer,
    .cta-band,
    .nav-toggle,
    .skip-link {
        display: none !important;
    }
}
