/* ZoApps shared look (2026-09): white page, black type, one bright colour per app.
   Loaded on every page after style.min.css. Page-specific layouts live in home.css. */

@font-face {
    font-family: 'Nunito';
    font-style: normal;
    font-weight: 200 1000;
    font-display: swap;
    src: url('../font/nunito-latin.woff2') format('woff2');
}

:root {
    --ink: #111111;
    --ink-2: #4A4A4A;
    --line: #EDEDED;
    --soft: #F5F5F5;

    /* One colour per app, plus a fourth for colour-block grids */
    --kt: #FFD34E;
    --lf: #8FD3FF;
    --pp: #FF8F7A;
    --mint: #8FE3AE;

    --round: 36px;
    --round-md: 28px;
    --round-lg: 48px;
    --font-play: 'Nunito', ui-rounded, 'SF Pro Rounded', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;

    /* Re-point the old tokens so legacy components follow the new look */
    --font-sans: var(--font-play);
    --text-primary: var(--ink);
    --text-secondary: var(--ink-2);
    --accent-primary: var(--ink);
    --accent-hover: #333333;
    --bg-secondary: #FFFFFF;
    --border-subtle: var(--line);

    /* Page accent: yellow by default, each app page sets its own */
    --accent: var(--kt);
}

.app-kt {
    --accent: var(--kt)
}

.app-lf {
    --accent: var(--lf)
}

.app-pp {
    --accent: var(--pp)
}

.visually-hidden {
    position: absolute !important;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0
}

/* ---------- Base ---------- */

html,
body {
    background: #fff
}

body,
input,
select,
textarea,
button {
    font-family: var(--font-play);
    color: var(--ink)
}

p,
li {
    font-weight: 500
}

/* Width and height attributes reserve space; CSS keeps the real proportions */

img {
    max-width: 100%;
    height: auto
}

.py-xl {
    padding-top: 6.5rem;
    padding-bottom: 6.5rem
}

@media (max-width: 768px) {
    .py-xl {
        padding-top: 4.5rem;
        padding-bottom: 4.5rem
    }
}

h1,
h2,
h3,
.h1,
.h2,
.h3,
.h4 {
    font-family: var(--font-play);
    text-transform: none;
    color: var(--ink)
}

.h1 {
    font-weight: 900;
    font-size: clamp(2.6rem, 6.5vw, 4.75rem);
    line-height: 1;
    letter-spacing: -.035em;
    text-wrap: balance
}

.h2 {
    font-size: clamp(1.9rem, 4vw, 3rem);
    font-weight: 900;
    line-height: 1.08;
    letter-spacing: -.025em;
    text-wrap: balance
}

.h3 {
    font-weight: 800;
    font-size: 1.5rem;
    letter-spacing: -.01em;
    line-height: 1.2
}

.h4 {
    font-weight: 800;
    font-size: 1.2rem;
    line-height: 1.3
}

h1 strong,
.faq-question:hover {
    color: inherit
}

.text-subtle,
.lead {
    color: var(--ink-2)
}

.eyebrow,
.section-annotation {
    font-size: .8125rem;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--ink-2)
}

.text-link,
.legal-content a,
.faq-answer a {
    color: var(--ink);
    font-weight: 800;
    text-decoration: underline;
    text-underline-offset: 3px
}

.bg-secondary {
    background: #fff
}

/* ---------- Buttons: plain pills ---------- */

.btn,
.btn-outline {
    font-family: var(--font-play);
    font-size: 1.0625rem;
    font-weight: 800;
    padding: 1rem 1.75rem;
    border-radius: 999px;
    box-shadow: none;
    width: auto;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    transition: transform var(--transition-fast), background-color var(--transition-fast)
}

.btn::after,
.btn-outline::after {
    display: none
}

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

.btn-primary:hover {
    background: #333;
    box-shadow: none;
    opacity: 1
}

.btn-outline,
.btn-outline.dark-text {
    background: #fff;
    color: var(--ink);
    border: 2px solid var(--ink)
}

.btn-outline:hover {
    background: var(--soft);
    opacity: 1
}

/* ---------- Header: flat and full width, like the rest of the page ---------- */

.navbar {
    top: 0;
    left: 0;
    right: 0;
    width: 100%;
    max-width: none;
    transform: none;
    background: transparent;
    border: 0;
    border-radius: 0;
    box-shadow: none;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    padding: 1.25rem;
    transition: background-color var(--transition-fast), padding var(--transition-fast)
}

.navbar-content {
    position: relative;
    z-index: 2
}

.navbar-scrolled {
    background: rgba(255, 255, 255);
    border-bottom: 1px solid #000;
    padding: .7rem 1.25rem
}

.logo,
.logo-text {
    color: var(--ink);
    font-size: 1.575rem;
    font-weight: 900
}

.logo-mark {
    width: 34px;
    height: 34px
}

.desktop-nav a {
    color: var(--ink);
    font-weight: 800;
    font-size: 1rem;
    margin: 0 .85rem
}

.desktop-nav a:hover {
    color: var(--ink-2);
    opacity: 1
}

.navbar .btn-primary.btn-sm {
    background: var(--ink);
    color: #fff;
    font-size: 1rem;
    font-weight: 800;
    padding: .7rem 1.35rem
}

.mobile-menu-toggle span {
    width: 26px;
    height: 3px;
    border-radius: 2px;
    background: var(--ink)
}

/* Mobile menu: a full white panel with big type */

.mobile-nav {
    top: 0;
    left: 0;
    width: 100%;
    height: 100vh;
    height: 100dvh;
    z-index: 1;
    background: #fff;
    padding: 6.5rem 1.5rem 2.5rem;
    gap: 1.25rem
}

/* While the menu is open it sits above the consent banner, so the CTA stays reachable */

.navbar:has(.mobile-nav.active) {
    z-index: 1300
}

.mobile-nav a {
    color: var(--ink);
    font-size: 1.75rem;
    font-weight: 900
}

.mobile-nav .btn-primary {
    color: #fff;
    font-size: 1.0625rem;
    margin-top: auto;
    align-self: stretch
}

/* ---------- First section clears the fixed header ---------- */

main > :first-child:not(.hero-section):not(.page-404) {
    padding-top: 9.5rem
}

/* 404 has very little content, so centre it in what is left below the header */
.page-404 {
    display: flex;
    align-items: center;
    min-height: calc(100vh - 80px)
}

main > :first-child > .mt-lg {
    margin-top: 0
}

@media (max-width: 768px) {
    main > :first-child:not(.hero-section):not(.page-404) {
        padding-top: 7.5rem
    }

    .page-404 {
        min-height: calc(100vh - 74px)
    }
}

/* ---------- Contact: the three apps sit above the email CTA ---------- */

.contact-panel {
    display: flex;
    flex-direction: column
}

.contact-apps {
    list-style: none;
    margin: 0 0 2rem;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: .75rem;
    flex: 1
}

.ca-item {
    --c: var(--lf);
    flex: 1;
    min-height: 88px;
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1rem 1.25rem;
    border-radius: var(--round-md);
    background-color: var(--c);
    background-position: 0 0;
    background-size: 46% 62%;
    background-repeat: repeat
}

.ca-kt {
    --c: var(--lf);
    background-image: url(../img/cards/bgr-1.svg)
}

.ca-lf {
    --c: var(--kt);
    background-image: url(../img/cards/bgr-2.svg)
}

.ca-pp {
    --c: var(--pp);
    background-image: url(../img/cards/bgr-3.svg)
}

.ca-item img {
    width: 56px;
    height: 56px;
    border-radius: 16px;
    flex: 0 0 auto
}

.ca-name {
    display: block;
    font-weight: 900;
    font-size: 1.125rem;
    letter-spacing: -.01em;
    line-height: 1.2;
    color: var(--ink)
}

.ca-meta {
    display: block;
    margin-top: .15rem;
    font-size: .875rem;
    font-weight: 700;
    color: rgba(0, 0, 0, .72)
}

@media (max-width: 900px) {
    .contact-apps {
        flex: 0 0 auto
    }

    .ca-item {
        min-height: 0
    }
}

/* ---------- Page hero: sized to its content, not the full screen ---------- */

.hero-section {
    background: #fff;
    height: auto;
    min-height: 0;
    display: block;
    padding: 9.5rem 0 2.5rem
}

.hero-section .hero-text {
    max-width: 900px;
    margin: 0 auto
}

@media (max-width: 768px) {
    .hero-section {
        padding: 7.5rem 0 2rem
    }

    .desktop-nav a {
        margin: 0 .6rem
    }
}

.hero-orb,
.bg-ornament {
    display: none !important
}

.hero-sub {
    color: var(--ink-2);
    font-size: 1.1875rem;
    line-height: 1.55;
    max-width: 40rem;
    margin-left: auto;
    margin-right: auto
}

.hero-text .h1 {
    max-width: 16ch;
    margin: 0 auto
}

.hero-actions {
    flex-wrap: wrap;
    gap: .75rem
}

.shadow-large {
    box-shadow: 0 24px 60px -24px rgba(0, 0, 0, .25)
}

/* Accent block behind a page's main picture */

.hero-visual.mt-lg {
    border-radius: var(--round) !important;
    box-shadow: none !important;
    background: var(--accent);
    padding: clamp(.75rem, 2.5vw, 1.75rem)
}

.hero-visual.mt-lg img {
    border-radius: 20px
}

/* ---------- Cards and panels ---------- */

.glass-panel {
    background: #fff;
    border: 2px solid var(--line);
    border-radius: var(--round-md);
    box-shadow: none;
    padding: 1.75rem;
    backdrop-filter: none;
    -webkit-backdrop-filter: none
}

.glass-panel:hover {
    background: #fff;
    border-color: var(--ink)
}

.glass-panel.p-0 {
    padding: 0 !important
}

.glass-panel span[aria-hidden=true] {
    background: var(--soft)
}

.glass-panel:hover span[aria-hidden=true] {
    background: var(--ink);
    color: #fff
}

.icon-box {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    background: var(--accent);
    color: var(--ink);
    box-shadow: none
}

.icon-box.centered {
    margin-left: auto;
    margin-right: auto
}

.step-image,
.step-image img {
    border-radius: 20px
}

.tag {
    background: var(--soft);
    border: 0;
    color: var(--ink);
    font-weight: 800;
    font-size: .75rem;
    padding: .35rem .7rem
}

/* "How it works" block: the app colour instead of the old orange gradient */

body #how-we-build .container {
    background: var(--accent);
    border-radius: var(--round-lg);
    padding: clamp(2rem, 5vw, 3.5rem) clamp(1.25rem, 4vw, 3rem)
}

body #how-we-build .section-header h2,
body #how-we-build .section-header p,
body #how-we-build .section-header span {
    color: var(--ink) !important
}

/* Numbered steps */

.process-step {
    --c: var(--kt);
    background: var(--ink);
    border: 0;
    border-radius: var(--round-md);
    box-shadow: none;
    color: #fff;
    padding: 2rem;
    backdrop-filter: none;
    -webkit-backdrop-filter: none
}

.process-step:nth-child(2) {
    --c: var(--lf)
}

.process-step:nth-child(3) {
    --c: var(--pp)
}

.process-step:nth-child(4) {
    --c: var(--mint)
}

.process-step .h3 {
    color: #fff
}

.process-step p {
    color: rgba(255, 255, 255, .72)
}

/* the number is the mark itself: no badge behind it, same cut as the home steps */
.step-badge {
    display: block;
    width: auto;
    height: auto;
    background: none;
    border-radius: 0;
    color: var(--c);
    font-size: 3.5rem;
    font-weight: 900;
    line-height: .78;
    letter-spacing: -.045em;
    margin-bottom: 1.25rem
}

/* Link list (for example the Laffari resources) */

.feature-list li {
    background: #fff;
    border: 2px solid var(--line);
    border-radius: var(--round-md)
}

.feature-list li:hover {
    background: #fff;
    border-color: var(--ink)
}

/* Product cards on /products/ */

.apps-cards {
    overflow: hidden
}

.apps-cards .project-visual {
    background: var(--soft);
    position: relative;
    aspect-ratio: 16 / 9;
    overflow: hidden
}

.apps-cards .project-visual img {
    display: block
}

.apps-cards .project-info {
    background: #fff;
    border: 0;
    padding: 1.75rem;
    height: auto;
    color: var(--ink)
}

.apps-cards .project-desc {
    color: var(--ink-2)
}

/* ---------- Colour call-to-action block (was the black glow block) ---------- */

.cta-section-premium {
    background: #fff;
    padding: 4rem 0 6rem
}

.cta-section-premium::before {
    display: none
}

.cta-section-premium>.container {
    background: var(--accent);
    border-radius: var(--round-lg);
    padding: clamp(3rem, 7vw, 5rem) clamp(1.25rem, 4vw, 3rem)
}

.cta-section-premium h2,
.cta-section-premium .h1,
.cta-section-premium .text-subtle,
.cta-section-premium p {
    color: var(--ink) !important
}

.cta-section-premium .h1 {
    font-size: clamp(2rem, 4.5vw, 3.25rem)
}

.cta-section-premium .btn-outline {
    background: #fff
}

/* ---------- FAQ ---------- */

#faq {
    overflow: visible
}

.faq-list {
    gap: 0
}

.faq-item {
    border-bottom: 2px solid var(--line)
}

.faq-question {
    gap: 1rem;
    font-size: 1.1875rem;
    font-weight: 800;
    padding: 1.35rem 0;
    color: var(--ink)
}

.faq-answer p {
    color: var(--ink-2);
    line-height: 1.65
}

.icon-plus {
    flex: 0 0 auto;
    display: grid;
    place-items: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 50%;
    background: var(--soft);
    font-weight: 700;
    transition: transform var(--transition-fast)
}

/* ---------- Legal pages ---------- */

.legal-content,
.legal-content p,
.legal-content li {
    color: var(--ink-2)
}

.legal-content h3 {
    color: var(--ink)
}

/* ---------- Footer: white ---------- */

footer {
    background: #fff;
    padding: 2rem 0 2rem
}

footer .text-subtle,
.footer-heading,
.copyright {
    color: var(--ink-2)
}

.footer-heading {
    font-weight: 900
}

.footer-links-col a {
    color: var(--ink);
    font-weight: 600
}

.footer-links-col a:hover {
    color: var(--ink-2)
}

.footer-bottom {
    border-top: 2px solid var(--line)
}

/* ---------- Keyboard focus ---------- */

a:focus-visible,
button:focus-visible,
summary:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
    outline: 3px solid var(--ink);
    outline-offset: 3px
}

@media (max-width: 768px) {
    .glass-panel {
        padding: 1.5rem
    }

    .hero-actions .btn,
.hero-actions .btn-outline {
        width: 100%
    }
}

@media (prefers-reduced-motion: reduce) {

    .btn,
    .btn-outline,
    .how-steps li,
    .how-steps li::before,
    .step-title,
    .step-desc,
    .step-more {
        transition: none
    }
}

/* The first section is above the fold: never fade it in */

#hero.fade-in-section,
.hero-section.fade-in-section {
    opacity: 1;
    transform: none
}

/* ---------- Shared components (moved from home.css so every page can use them) ---------- */

.badges {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    list-style: none
}

.badge {
    display: inline-flex;
    align-items: center;
    font-size: .8125rem;
    font-weight: 800;
    line-height: 1;
    padding: .5rem .8rem;
    border-radius: 999px;
    background: var(--soft);
    color: var(--ink)
}

.badge.is-soon {
    background: var(--ink);
    color: #fff
}

/* ---------- Mission ---------- */

.pillars {
    display: grid;
    grid-template-columns: 1fr;
    gap: 2.5rem;
    list-style: none;
    text-align: center
}

.pillar {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .75rem
}

.pillar-badge {
    width: 104px;
    height: 104px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    margin-bottom: .5rem;
 
}


.pillar-badge img {
    width: 76px;
    height: 76px;
    border-radius: 16px
}

.pillar .h3 {
    font-size: 1.75rem;
    font-weight: 900
}

.pillar p {
    color: var(--ink-2);
    max-width: 30ch
}

/* ---------- Trust ---------- */

.trust-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
    list-style: none
}

.trust-tile {
    position: relative;
    overflow: hidden;
    border-radius: var(--round);
    padding: 2.75rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: .7rem;
    min-height: 308px
}

/* A tile with its own illustration drops the small chip */
.trust-tile[data-icon] .trust-icon {
    display: none
}

.trust-tile[data-icon]::after {
    content: '';
    position: absolute;
    right: -10px;
    bottom: -12px;
    width: 262px;
    height: 269px;
    background: center / contain no-repeat
}

.trust-tile[data-icon=no-ads]::after {
    background-image: url(../img/cards/ic-no-ads-ever.webp)
}

.trust-tile[data-icon=private]::after {
    background-image: url(../img/cards/ic-private-by-design.webp)
}

.trust-tile[data-icon=calm]::after {
    background-image: url(../img/cards/ic-calm-by-design.webp)
}

.trust-tile[data-icon=checked]::after {
    background-image: url(../img/cards/ic-checked-by-a-person.webp)
}

/* keep the copy clear of the illustration, on both tile widths */
.trust-tile[data-icon] p {
    max-width: min(36ch, 60%)
}

.trust-tile[data-icon] .h3 {
    max-width: min(20ch, 70%)
}

.trust-tile>* {
    position: relative;
    z-index: 1
}

.trust-tile:nth-child(4n+1) {
    background: var(--kt)
}

.trust-tile:nth-child(4n+2) {
    background: var(--lf)
}

.trust-tile:nth-child(4n+3) {
    background: var(--pp)
}

.trust-tile:nth-child(4n) {
    background: var(--mint)
}

.trust-icon {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    background: #fff;
    display: grid;
    place-items: center;
    margin-bottom: .75rem;
    color: var(--ink)
}

.trust-icon svg {
    width: 28px;
    height: 28px
}

.trust-tile .h3 {
    font-size: 2rem;
    font-weight: 900;
    letter-spacing: -.02em;
    line-height: 1.1
}

.trust-tile p {
    color: rgba(0, 0, 0, .75);
    font-size: 1.0625rem;
    line-height: 1.6
}

.how-steps {
    --step-ease: cubic-bezier(.4, 0, .2, 1);
    list-style: none;
    display: grid;
    gap: .35rem;
    counter-reset: step
}

.how-steps li {
    --c: var(--kt);
    counter-increment: step;
    display: grid;
    grid-template-columns: auto 1fr;
    column-gap: 1.1rem;
    align-items: start;
    /* padding stays constant, so opening a step never nudges its neighbours sideways */
    margin: 0 -1.25rem;
    padding: 1rem 1.25rem;
    border-top: 2px solid rgba(255, 255, 255, .16);
    border-radius: 0;
    transition: background .4s var(--step-ease), border-color .3s var(--step-ease),
        border-radius .3s var(--step-ease)
}

.how-steps li:first-child {
    border-top-color: transparent
}

/* The step number carries the colour and matches the height of the text beside it */
.how-steps li::before {
    content: counter(step, decimal-leading-zero);
    grid-row: span 3;
    align-self: center;
    font-size: 3.5rem;
    font-weight: 900;
    line-height: .78;
    letter-spacing: -.045em;
    color: var(--c);
    transition: font-size .4s var(--step-ease), color .3s var(--step-ease)
}

.how-steps li:nth-child(2) {
    --c: var(--lf)
}

.how-steps li:nth-child(3) {
    --c: var(--pp)
}

.how-steps li:nth-child(4) {
    --c: var(--mint)
}

.step-title {
    display: block;
    font-weight: 800;
    font-size: 1.0625rem;
    color: #fff;
    transition: color .3s var(--step-ease)
}

/* Both lines collapse by animating a grid row from 0fr to 1fr: the browser
   interpolates to the real content height, so there is no max-height guesswork. */
.step-desc,
.step-more {
    display: grid;
    grid-template-rows: 1fr;
    transition: grid-template-rows .4s var(--step-ease), opacity .3s var(--step-ease),
        margin .4s var(--step-ease), color .3s var(--step-ease)
}

.step-desc>span,
.step-more>span {
    display: block;
    min-height: 0;
    overflow: hidden
}

.step-desc {
    margin-top: .15rem;
    font-size: .875rem;
    line-height: 1.45;
    color: rgba(255, 255, 255, .62)
}

/* The longer line stays in the DOM for search and screen readers, and opens on hover */
.step-more {
    grid-template-rows: 0fr;
    opacity: 0;
    font-size: .9375rem;
    line-height: 1.5;
    color: rgba(0, 0, 0, .75)
}

/* Hovered step: opens on its own colour */
.how-steps li:hover {
    background: var(--c);
    border-top-color: transparent;
    border-radius: 20px
}

.how-steps li:hover+li {
    border-top-color: transparent
}

.how-steps li:hover::before,
.how-steps li:hover .step-title {
    color: var(--ink)
}

.how-steps li:hover .step-desc {
    color: rgba(0, 0, 0, .72)
}

.how-steps li:hover .step-more {
    grid-template-rows: 1fr;
    opacity: 1;
    margin-top: .45rem
}

/* Everything else pulls back to just a number and a title while one step is open */
.how-steps:has(li:hover) li:not(:hover) .step-desc {
    grid-template-rows: 0fr;
    opacity: 0;
    margin-top: 0
}

.how-steps:has(li:hover) li:not(:hover)::before {
    font-size: 1.0625rem;
    line-height: 1.35
}

@media (min-width: 640px) {
    .trust-grid {
        grid-template-columns: repeat(2, 1fr)
    }
}

@media (min-width: 900px) {
    .pillars {
        grid-template-columns: repeat(3, 1fr)
    }

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

@media (max-width: 768px) {
    .trust-tile {
        padding: 1.5rem
    }

    .trust-tile {
        min-height: 0
    }

    .trust-tile .h3 {
        font-size: 1.625rem
    }

    /* one column on a phone: the art sits under the copy, not behind it */
    .trust-tile[data-icon] {
        padding-bottom: 5.5rem
    }

    .trust-tile[data-icon] p,
    .trust-tile[data-icon] .h3 {
        max-width: none
    }

    .trust-tile[data-icon]::after {
        width: 152px;
        height: 156px;
        right: -6px;
        bottom: -6px
    }
}

.more-link {
    text-align: center;
    margin-top: 2rem;
    font-weight: 700
}

/* ---------- Info pages: parents, about, press ---------- */

.info-hero {
    text-align: center
}

.info-hero .hero-sub {
    margin-top: 1.25rem
}

/* One card per app with its facts */

.app-facts {
    display: grid;
    gap: 1.25rem
}

.app-fact-card {
    border: 2px solid var(--line);
    border-radius: var(--round);
    overflow: hidden;
    background: #fff
}

.app-fact-head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .75rem 1rem;
    padding: 1.25rem 1.5rem;
    background: var(--accent)
}

.app-fact-head img {
    width: 56px;
    height: 56px;
    border-radius: 16px;
    flex: 0 0 auto
}

.app-fact-head .h3 {
    margin: 0;
    font-weight: 900
}

.app-fact-head .badges {
    margin-left: auto
}

.app-fact-head .badge {
    background: #fff
}

.app-fact-head .badge.is-soon {
    background: var(--ink);
    color: #fff
}

.fact-list {
    margin: 0;
    padding: .25rem 1.5rem .75rem
}

.fact-list>div {
    display: grid;
    grid-template-columns: 1fr;
    gap: .2rem;
    padding: .95rem 0;
    border-bottom: 2px solid var(--line)
}

.fact-list>div:last-child {
    border-bottom: 0
}

.fact-list dt {
    font-weight: 900
}

.fact-list dd {
    margin: 0;
    color: var(--ink-2);
    font-weight: 500
}

.fact-list dd a {
    color: var(--ink);
    font-weight: 800;
    text-decoration: underline;
    text-underline-offset: 3px
}

@media (min-width: 700px) {
    .fact-list>div {
        grid-template-columns: 13rem 1fr;
        gap: 1.25rem
    }
}

/* Copy-ready text for press */

.copy-block {
    background: var(--soft);
    border-radius: var(--round-md);
    padding: 1.5rem
}

.copy-block h3 {
    font-size: .8125rem;
    font-weight: 900;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--ink-2);
    margin-bottom: .6rem
}

.copy-block p {
    color: var(--ink);
    font-weight: 600;
    line-height: 1.6
}

.copy-btn {
    margin-top: 1rem;
    font: inherit;
    font-weight: 800;
    font-size: .875rem;
    color: var(--ink);
    background: #fff;
    border: 2px solid var(--ink);
    border-radius: 999px;
    padding: .45rem 1rem;
    cursor: pointer
}

/* Downloadable assets */

.asset-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
    gap: 1rem;
    list-style: none
}

.asset-card {
    border: 2px solid var(--line);
    border-radius: var(--round-md);
    overflow: hidden;
    background: #fff;
    display: flex;
    flex-direction: column
}

.asset-thumb {
    aspect-ratio: 4 / 3;
    background: var(--soft);
    display: grid;
    place-items: center;
    overflow: hidden
}

.asset-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover
}

.asset-thumb.is-contain img {
    width: auto;
    height: auto;
    max-width: 62%;
    max-height: 72%;
    object-fit: contain
}

.asset-meta {
    padding: .9rem 1rem 1.1rem;
    display: flex;
    flex-direction: column;
    gap: .2rem;
    flex: 1
}

.asset-meta strong {
    font-weight: 900
}

.asset-meta span {
    color: var(--ink-2);
    font-size: .875rem;
    font-weight: 600
}

.asset-meta a {
    margin-top: auto;
    padding-top: .5rem;
    font-weight: 800;
    color: var(--ink);
    text-decoration: underline;
    text-underline-offset: 3px
}

/* Brand wordmark keeps its orange dot */

.logo .dot {
    color: #FF4D00
}

.is-site {
    --accent: var(--soft)
}

/* ---------- Cookie choice (Google Analytics only runs after "Allow") ---------- */

.consent {
    position: fixed;
    z-index: 1200;
    left: 1rem;
    right: 1rem;
    bottom: 1rem;
    max-width: 26rem;
    background: #fff;
    border: 2px solid var(--ink);
    border-radius: 24px;
    padding: 1.1rem 1.25rem;
    box-shadow: 0 18px 40px rgba(0, 0, 0, .16)
}

.consent[hidden] {
    display: none
}

.consent-text {
    font-size: .9375rem;
    line-height: 1.5;
    color: var(--ink-2)
}

.consent-text strong {
    display: block;
    color: var(--ink);
    font-weight: 900;
    font-size: 1.0625rem;
    margin-bottom: .2rem
}

.consent-text a {
    color: var(--ink);
    font-weight: 800;
    text-decoration: underline;
    text-underline-offset: 3px
}

.consent-actions {
    display: flex;
    gap: .6rem;
    margin-top: .9rem
}

.consent-btn {
    flex: 1;
    font: inherit;
    font-weight: 800;
    font-size: 1rem;
    padding: .7rem 1rem;
    border-radius: 999px;
    border: 2px solid var(--ink);
    background: #fff;
    color: var(--ink);
    cursor: pointer
}

.consent-btn.is-yes {
    background: var(--ink);
    color: #fff
}

.consent-btn:focus-visible {
    outline: 3px solid var(--ink);
    outline-offset: 3px
}

@media (min-width: 640px) {
    .consent {
        right: auto
    }
}

/* ---------- News ---------- */

.news-post {
    border: 2px solid var(--line);
    border-radius: var(--round);
    padding: clamp(1.5rem, 4vw, 2.5rem)
}

.news-post .post-cover {
    display: block;
    width: 100%;
    aspect-ratio: 16 / 9;
    object-fit: cover;
    border-radius: var(--round-md);
    background: var(--soft);
    margin-bottom: 1.5rem
}

.news-post .h2 {
    margin: .25rem 0 1rem
}

.news-post p {
    color: var(--ink-2);
    line-height: 1.65;
    margin-bottom: .75rem
}

/* ---------- News list and article ---------- */

.post-list {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr));
    gap: 2.5rem;
    list-style: none
}

.post-card-link {
    display: flex;
    flex-direction: column;
    height: 100%;
    color: var(--ink);
    text-decoration: none
}

.post-card-cover {
    display: block;
    border-radius: var(--round-md);
    overflow: hidden;
    background: var(--soft)
}

.post-card-cover img {
    display: block;
    width: 100%;
    aspect-ratio: 16 / 9;
    object-fit: cover;
    transition: transform .4s ease
}

.post-card-link:hover .post-card-cover img,
.post-card-link:focus-visible .post-card-cover img {
    transform: scale(1.03)
}

.post-card-body {
    display: block;
    padding-top: 1.25rem
}

.post-card-body .h3 {
    display: block;
    margin-top: .35rem;
    font-size: 1.5rem;
    font-weight: 900;
    line-height: 1.25;
    letter-spacing: -.015em
}

.post-card-excerpt {
    display: block;
    margin-top: .5rem;
    color: var(--ink-2);
    line-height: 1.6
}

.post-card-more {
    display: inline-block;
    margin-top: .9rem;
    font-weight: 800;
    text-decoration: underline;
    text-underline-offset: 4px
}

.post-title {
    font-size: clamp(2.1rem, 4.6vw, 3.1rem);
    line-height: 1.05;
    letter-spacing: -.025em;
    margin: .35rem 0 1.75rem;
    max-width: 22ch
}

.post-body {
    margin-top: 2rem;
    font-size: 1.0625rem;
    line-height: 1.7
}

.post-body p {
    color: var(--ink-2);
    margin-bottom: 1.1rem
}

.post-body .h3 {
    margin: 2rem 0 .6rem;
    font-size: 1.375rem;
    font-weight: 900;
    color: var(--ink)
}

.post-body ul {
    margin: 0 0 1.1rem 1.15rem;
    padding-left: .9rem;
    list-style: disc;
    color: var(--ink-2)
}

.post-body li::marker {
    color: var(--ink)
}

.post-body li {
    margin-bottom: .6rem;
    padding-left: .25rem
}

.news-date {
    font-size: .875rem;
    font-weight: 800;
    color: var(--ink-2)
}

.news-next {
    scroll-margin-top: 7rem;
    margin-top: 1.25rem;
    background: var(--soft);
    border-radius: var(--round);
    padding: 1.5rem clamp(1.5rem, 4vw, 2.5rem)
}

.news-next .h3 {
    font-weight: 900;
    margin-bottom: .5rem
}

.news-next p {
    color: var(--ink-2)
}
