/* ===========================================================================
   Travim — site styles
   Sections:  tokens · themes · base · backdrop · aurora · layout · buttons ·
              header · hero · phone · steps · try-it · assistant · plus band ·
              business · cta · docs · footer · responsive
   ======================================================================== */

/* ── tokens (dark is the base theme) ────────────────────────────────────── */
:root {
    /* warm night: deep sea blue rather than near-black */
    --ink: rgba(0, 0, 50, .85);
    --ink-1: #101f36;
    --ink-2: #16283f;
    --line: rgba(255, 233, 205, .12);
    --line-strong: rgba(255, 233, 205, .22);

    --text: #fdf4e8;
    --muted: #b3c1d4;
    --muted-soft: rgba(179, 193, 212, .7);

    --sun: #ffc24b;
    --sea: #46b7e8;
    --coral: #ff8a5b;
    --sand: #ffe1a8;

    --on-accent: #2b1a04;

    /* frosted panels: dark enough that text stays legible over any photo */
    --glass: linear-gradient(160deg, rgba(0, 0, 50, .82), rgba(0, 0, 50, .88));
    --glass-strong: linear-gradient(160deg, rgba(0, 0, 50, .9), rgba(0, 0, 50, .93));
    --inset-hi: inset 0 1px 0 rgba(255, 246, 232, .12);

    /* photo backdrop — the photographs carry the page, the scrim only
       keeps text readable */
    --photo-opacity: 1;
    --photo-scrim:
        radial-gradient(130% 95% at 50% 6%, rgba(11, 21, 38, .2), rgba(11, 21, 38, .55) 74%),
        linear-gradient(180deg, rgba(11, 21, 38, .34) 0%, rgba(11, 21, 38, .56) 52%, rgba(11, 21, 38, .82) 100%);
    --photo-filter: saturate(1.12) contrast(1.02);

    --shadow-sm: 0 6px 20px rgba(3, 10, 22, .4);
    --shadow: 0 22px 50px -18px rgba(3, 10, 22, .82);
    --shadow-lg: 0 60px 120px -40px rgba(3, 10, 22, .95);

    --radius-xs: 10px;
    --radius-sm: 14px;
    --radius: 20px;
    --radius-lg: 28px;
    --radius-xl: 40px;

    /* The hero panel's fill. */
    --hero-fill: rgba(0, 0, 50, .92);

    --shell: 1180px;
    --font: "Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
    --font-display: "Sora", var(--font);
    /* The hero headline only. A hand-drawn face is too playful for body or UI
       type, and it has no Arabic or Persian glyphs at all — the RTL override
       below sends those locales back to Vazirmatn. */
    --font-hero: "Henny Penny", var(--font-display);
    --ease: cubic-bezier(.22, .8, .28, 1);

    color-scheme: dark;
}

/* Surfaces that re-declare the palette locally: the phone screen and the
   nightlife band. Scoping the tokens keeps every child rule unchanged. */
.on-dark {
    /* re-inherit from the scoped token, otherwise the light theme's dark text
       colour leaks into this always-dark subtree */
    color: #fdf4e8;
    --text: #fdf4e8;
    --muted: #b3c1d4;
    --muted-soft: rgba(179, 193, 212, .7);
    --line: rgba(255, 233, 205, .12);
    --line-strong: rgba(255, 233, 205, .22);
    --sun: #ffc24b;
    --sea: #46b7e8;
    --coral: #ff8a5b;
    --sand: #ffe1a8;
    --on-accent: #2b1a04;
    /* frosted panels: dark enough that text stays legible over any photo */
    --glass: linear-gradient(160deg, rgba(0, 0, 50, .82), rgba(0, 0, 50, .88));
    --glass-strong: linear-gradient(160deg, rgba(0, 0, 50, .9), rgba(0, 0, 50, .93));
    --inset-hi: inset 0 1px 0 rgba(255, 246, 232, .12);
    color-scheme: dark;
}

html[dir="rtl"] {
    --font: "Vazirmatn", system-ui, sans-serif;
    --font-display: "Vazirmatn", system-ui, sans-serif;
    /* Henny Penny is Latin-only; Arabic and Persian would fall back glyph by
       glyph and render as a broken mix. RTL keeps its own face. */
    --font-hero: "Vazirmatn", system-ui, sans-serif;
}

/* ── base ───────────────────────────────────────────────────────────────── */
* { box-sizing: border-box; }

html {
    scroll-behavior: smooth;
    scroll-padding-top: 88px;
    -webkit-text-size-adjust: 100%;
    /* Clip sideways visual overflow without turning <html> into a nested
       scroll container. `hidden` here can make WebKit send arrow-key scrolling
       to the wrong container, resulting in no movement and a system beep. */
    overflow-x: clip;
}

body {
    display: flex;
    flex-direction: column;
    margin: 0;
    min-height: 100vh;
    background: var(--ink);
    color: var(--text);
    font-family: var(--font);
    font-size: 16px;
    line-height: 1.6;
    letter-spacing: -.005em;
    overflow-x: clip;
    -webkit-font-smoothing: antialiased;
    transition: background .4s var(--ease), color .4s var(--ease);
}

h1, h2, h3, h4 {
    font-family: var(--font-display);
    font-weight: 600;
    letter-spacing: -.03em;
    line-height: 1.12;
    margin: 0;
}

p { margin: 0; }

a { color: inherit; text-decoration: none; }

img, svg { display: block; }

button, input { font: inherit; color: inherit; }

.sr-only {
    position: absolute;
    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;
    inset-inline-start: -9999px;
    top: 12px;
    padding: 10px 16px;
    border-radius: var(--radius-xs);
    background: var(--ink-2);
    z-index: 60;
}

.skip-link:focus { inset-inline-start: 16px; }

:focus-visible {
    outline: 2px solid var(--sun);
    outline-offset: 3px;
    border-radius: 6px;
}

/* The page itself is programmatically focused to restore native keyboard
   scrolling in WebKit. It is not a visible interactive control. */
main[tabindex="-1"]:focus { outline: none; }

/* ── photo backdrop (rotating) ──────────────────────────────────────────── */
.backdrop {
    position: fixed;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    overflow: hidden;
}

.backdrop-slide {
    position: absolute;
    inset: 0;
    background-position: center;
    background-size: cover;
    filter: var(--photo-filter);
    opacity: 0;
    transform: scale(1.06);
    transition: opacity 1.8s var(--ease), transform 9s linear;
    will-change: opacity, transform;
}

.backdrop-slide.is-active {
    opacity: var(--photo-opacity);
    transform: scale(1.13);
}

.backdrop-scrim {
    position: absolute;
    inset: 0;
    background: var(--photo-scrim);
}

/* home rotation — optimised WebP derivatives of static/img/bg-photos */
.page-index .backdrop-slide:nth-child(1) { background-image: url("/static/img/photos/bg-village.webp"); }
.page-index .backdrop-slide:nth-child(2) { background-image: url("/static/img/photos/bg-alps.webp"); }
.page-index .backdrop-slide:nth-child(3) { background-image: url("/static/img/photos/bg-autumn.webp"); }
.page-index .backdrop-slide:nth-child(4) { background-image: url("/static/img/photos/bg-beach.webp"); }
.page-index .backdrop-slide:nth-child(5) { background-image: url("/static/img/photos/bg-summit.webp"); }

/* quieter rotation on the reading pages */
.page-doc .backdrop-slide:nth-child(1) { background-image: url("/static/img/photos/bg-river.webp"); }
.page-doc .backdrop-slide:nth-child(2) { background-image: url("/static/img/photos/bg-street.webp"); }

/* The home page has no scrim over the photograph — legibility comes from
   .hero-panel and the opaque cards further down, not from tinting the photo
   itself, so it shows at its exact, unfiltered colour. */
.page-index { --photo-filter: none; }

.page-doc { --photo-opacity: .8; }

/* ── ambient light ──────────────────────────────────────────────────────── */
.aurora {
    position: fixed;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    overflow: hidden;
}

.orb {
    position: absolute;
    border-radius: 50%;
    filter: blur(90px);
    opacity: .28;
    will-change: transform;
}

.orb-sun {
    width: 46vw;
    height: 46vw;
    top: -14vw;
    inset-inline-start: -10vw;
    background: radial-gradient(circle at 35% 35%, rgba(255, 194, 75, .55), transparent 68%);
    animation: drift-a 26s var(--ease) infinite alternate;
}

.orb-sea {
    width: 52vw;
    height: 52vw;
    top: 4vw;
    inset-inline-end: -16vw;
    background: radial-gradient(circle at 60% 40%, rgba(70, 183, 232, .6), transparent 70%);
    animation: drift-b 32s var(--ease) infinite alternate;
}

.orb-coral {
    width: 38vw;
    height: 38vw;
    top: 62vh;
    inset-inline-start: 24vw;
    background: radial-gradient(circle at 50% 50%, rgba(255, 138, 91, .42), transparent 70%);
    animation: drift-c 38s var(--ease) infinite alternate;
}

.aurora-soft .orb { opacity: .26; }

@keyframes drift-a { to { transform: translate3d(6vw, 5vh, 0) scale(1.12); } }
@keyframes drift-b { to { transform: translate3d(-7vw, 7vh, 0) scale(1.08); } }
@keyframes drift-c { to { transform: translate3d(5vw, -6vh, 0) scale(1.15); } }

/* ── layout ─────────────────────────────────────────────────────────────── */
.shell {
    width: min(100% - 44px, var(--shell));
    margin-inline: auto;
}

main {
    position: relative;
    z-index: 1;
    flex: 1;
}

.section { padding: 104px 0; }

.section-head {
    position: relative;
    max-width: 660px;
    margin: 0 auto 56px;
    text-align: center;
}

/* The photographs run at full strength behind the page, so a bare heading
   sitting directly on one carries its own soft pad. The hero does not need
   this — .hero-panel is its own solid backdrop. Inset-based, so it flips
   with the writing direction. */
.section-head { isolation: isolate; }

.section-head::before {
    content: "";
    position: absolute;
    inset: -18% -12%;
    z-index: -1;
    background: radial-gradient(64% 58% at 50% 50%, color-mix(in srgb, var(--ink) 90%, transparent), transparent 74%);
    filter: blur(22px);
    pointer-events: none;
}

.section-head h2 { font-size: clamp(28px, 3.4vw, 42px); }

.section-head p {
    margin-top: 14px;
    color: var(--muted);
    font-size: 17px;
}

.eyebrow {
    display: inline-block;
    margin-bottom: 14px;
    color: var(--sun);
    font-family: var(--font-display);
    font-size: 12.5px;
    font-weight: 600;
    letter-spacing: .16em;
    text-transform: uppercase;
}

.badge-plus {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 11px;
    border-radius: 999px;
    background: linear-gradient(135deg, #ffc24b, #ff8a5b);
    color: #1b0f06;
    font-family: var(--font-display);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
}

/* ── buttons ────────────────────────────────────────────────────────────── */
.btn {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 14px 26px;
    border: 0;
    border-radius: 999px;
    font-family: var(--font-display);
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
    transition: transform .25s var(--ease), box-shadow .25s var(--ease), filter .25s var(--ease);
}

.btn-sm { padding: 10px 20px; font-size: 14px; }

.btn-primary {
    color: var(--on-accent);
    background: linear-gradient(135deg, var(--sun), #ffd97d 45%, var(--sea) 130%);
    box-shadow: 0 14px 34px -12px rgba(255, 194, 75, .7), inset 0 1px 0 rgba(255, 255, 255, .5);
}

.btn-primary:hover {
    transform: translateY(-2px);
    filter: saturate(1.08);
}

.btn-ghost {
    color: var(--text);
    background: var(--glass-strong);
    border: 1px solid var(--line-strong);
    backdrop-filter: blur(14px);
}

.btn-ghost:hover {
    transform: translateY(-2px);
    border-color: color-mix(in srgb, var(--sun) 50%, transparent);
}

.btn-spinner {
    display: none;
    width: 15px;
    height: 15px;
    border: 2px solid rgba(43, 26, 4, .3);
    border-top-color: var(--on-accent);
    border-radius: 50%;
    animation: spin .7s linear infinite;
}

.btn.is-busy .btn-spinner { display: block; }
.btn.is-busy { pointer-events: none; opacity: .8; }

@keyframes spin { to { transform: rotate(360deg); } }

/* ── header ─────────────────────────────────────────────────────────────── */
/* Solid, fixed colour at all times — a translucent or blurred header reads
   badly over a photograph that can be light or dark at any scroll position. */
.site-header {
    position: sticky;
    top: 0;
    z-index: 50;
    padding: 16px 0;
    border-bottom: 1px solid transparent;
    background: var(--ink);
}

.site-header.is-elevated {
    border-bottom-color: var(--line);
    box-shadow: var(--shadow-sm);
}

.nav-shell {
    display: flex;
    align-items: center;
    gap: 20px;
}

.brand {
    display: inline-flex;
    align-items: center;
    gap: 10px;
}

.brand-name {
    font-family: var(--font-display);
    font-size: 19px;
    font-weight: 600;
    letter-spacing: -.02em;
}

.nav-links {
    display: flex;
    gap: 4px;
    margin-inline: auto;
}

.nav-links a {
    padding: 8px 13px;
    border-radius: 999px;
    color: var(--muted);
    font-size: 14.5px;
    font-weight: 500;
    transition: color .2s var(--ease), background .2s var(--ease);
}

.nav-links a:hover {
    color: var(--text);
    background: color-mix(in srgb, var(--text) 8%, transparent);
}

.nav-actions {
    display: flex;
    align-items: center;
    gap: 8px;
    /* Always at the end of the header, whether or not the centre nav links
       are showing — on a phone they are not, and without this the controls
       drift into the middle. */
    margin-inline-start: auto;
}

.icon-btn {
    display: grid;
    place-items: center;
    width: 38px;
    height: 38px;
    padding: 0;
    border: 1px solid var(--line);
    border-radius: 50%;
    background: transparent;
    color: var(--muted);
    cursor: pointer;
    transition: color .2s var(--ease), border-color .2s var(--ease), transform .3s var(--ease);
}

.icon-btn:hover {
    color: var(--text);
    border-color: var(--line-strong);
    transform: rotate(-14deg);
}

.lang-switch { position: relative; }

.lang-trigger {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 9px 14px;
    border: 1px solid var(--line);
    border-radius: 999px;
    background: transparent;
    color: var(--muted);
    font-size: 14px;
    cursor: pointer;
    transition: color .2s var(--ease), border-color .2s var(--ease);
}

.lang-trigger:hover {
    color: var(--text);
    border-color: var(--line-strong);
}

.lang-menu {
    position: absolute;
    top: calc(100% + 10px);
    inset-inline-end: 0;
    min-width: 152px;
    padding: 7px;
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--ink-2) 96%, transparent);
    backdrop-filter: blur(16px);
    box-shadow: var(--shadow);
    display: none;
}

.lang-switch.is-open .lang-menu { display: block; }

.lang-menu a {
    display: block;
    padding: 9px 13px;
    border-radius: 9px;
    color: var(--muted);
    font-size: 14px;
}

.lang-menu a:hover {
    color: var(--text);
    background: color-mix(in srgb, var(--text) 8%, transparent);
}

/* ── hero ───────────────────────────────────────────────────────────────── */
.hero {
    position: relative;
    padding: clamp(28px, 3vw, 16px) 0;
}

/* The card that replaced the aurora: a solid, unmistakably coloured panel
   that both frames the phone + headline and guarantees they read over any
   photograph, regardless of what is behind it. */
.hero-panel {
    width: min(90%, 1200px);
    margin-inline: auto;
    padding: clamp(36px, 6vw, 88px) clamp(24px, 5vw, 88px);
    border-radius: var(--radius-lg);
    background: var(--hero-fill);
    box-shadow: var(--shadow), var(--inset-hi);
    transition: background .4s var(--ease);
}

.hero-shell {
    display: grid;
    grid-template-columns: minmax(0, 1.02fr) minmax(0, .98fr);
    align-items: center;
    gap: clamp(32px, 5vw, 72px);
}

.pill {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    padding: 8px 16px 8px 12px;
    border: 1px solid var(--line-strong);
    border-radius: 999px;
    background: var(--glass);
    backdrop-filter: blur(12px);
    color: var(--muted);
    font-size: 13.5px;
    font-weight: 500;
}

.pill-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--sun);
    box-shadow: 0 0 0 4px color-mix(in srgb, var(--sun) 18%, transparent);
    animation: pulse 2.6s ease-in-out infinite;
}

@keyframes pulse {
    50% { box-shadow: 0 0 0 8px color-mix(in srgb, var(--sun) 4%, transparent); }
}

.hero-title {
    margin-top: 22px;
    font-family: var(--font-hero);
    /* Henny Penny only ships weight 400 and runs visually smaller than the
       display sans at the same size, so it gets its own scale rather than
       inheriting --font-display's clamp. */
    font-size: clamp(38px, 4.8vw, 58px);
    font-weight: 400;
    letter-spacing: 0;
    line-height: 1.26;
}

.grad {
    background: linear-gradient(105deg, var(--sun) 2%, var(--coral) 46%, var(--sea) 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

:root[data-theme="dark"] .grad {
    background: linear-gradient(105deg, var(--sun) 2%, #ffd08a 34%, var(--coral) 68%, var(--sea) 104%);
    -webkit-background-clip: text;
    background-clip: text;
}

.hero-lead {
    max-width: 30em;
    margin-top: 18px;
    color: var(--muted);
    font-size: clamp(15.5px, 1.2vw, 17.5px);
    line-height: 1.6;
}

.hero-meta {
    margin-top: 16px;
    color: var(--muted-soft);
    font-size: 13.5px;
}

.hero-proof {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 32px;
    margin: 28px 0 0;
    padding: 20px 0 0;
    border-top: 1px solid var(--line);
    list-style: none;
}

.hero-proof li {
    display: flex;
    align-items: baseline;
    gap: 8px;
    color: var(--muted);
    font-size: 13.5px;
}

.hero-proof strong {
    font-family: var(--font-display);
    font-size: 22px;
    font-weight: 600;
    color: var(--text);
}

/* ── store buttons ──────────────────────────────────────────────────────── */
/* Two equal halves rather than two content-sized buttons: the App Store and
   Play labels are different lengths, so left to themselves they produce a
   lopsided pair. */
.store-row {
    display: flex;
    gap: 14px;
    margin-top: 28px;
    max-width: 460px;
}

.store-btn {
    display: inline-flex;
    flex: 1 1 0;
    align-items: center;
    gap: 13px;
    padding: 12px 20px;
    border: 1px solid var(--line-strong);
    border-radius: 16px;
    background: var(--glass-strong);
    backdrop-filter: blur(16px);
    box-shadow: var(--shadow-sm), var(--inset-hi);
    transition: transform .3s var(--ease), border-color .3s var(--ease), box-shadow .3s var(--ease);
}

.store-btn:hover {
    transform: translateY(-3px);
    border-color: color-mix(in srgb, var(--sun) 45%, transparent);
}

.store-text {
    display: flex;
    flex-direction: column;
    line-height: 1.2;
}

.store-text small {
    color: var(--muted);
    font-size: 11px;
    letter-spacing: .06em;
    text-transform: uppercase;
    white-space: nowrap;
}

.store-text strong {
    font-family: var(--font-display);
    font-size: 16.5px;
    font-weight: 600;
}

/* ── phone (semi-3D, always dark) ───────────────────────────────────────── */
.hero-stage {
    position: relative;
    display: flex;
    justify-content: center;
    perspective: 1500px;
}

.phone {
    position: relative;
    width: min(302px, 82vw);
    transform-style: preserve-3d;
    transform: rotateX(7deg) rotateY(-17deg) rotateZ(1.5deg);
    transition: transform .6s var(--ease);
    animation: hover-float 7s ease-in-out infinite;
}

html[dir="rtl"] .phone { transform: rotateX(7deg) rotateY(17deg) rotateZ(-1.5deg); }
html[dir="rtl"] .app-prompt { border-radius: 16px 16px 6px 16px; }

@keyframes hover-float { 50% { translate: 0 -14px; } }

.phone-glow {
    position: absolute;
    inset: -14% -18%;
    border-radius: 50%;
    background: radial-gradient(ellipse at 50% 55%, rgba(70, 183, 232, .55), transparent 62%);
    filter: blur(50px);
    transform: translateZ(-90px);
}

/* Cast shadow on the "ground" behind the device, so it separates from a bright
   photograph instead of floating on it. Sits behind in the 3D space. */
.phone::after {
    content: "";
    position: absolute;
    left: 6%;
    right: 6%;
    bottom: -6%;
    height: 22%;
    border-radius: 50%;
    background: radial-gradient(ellipse at 50% 50%, rgba(3, 8, 18, .78), rgba(3, 8, 18, 0) 70%);
    filter: blur(26px);
    transform: translateZ(-70px);
    pointer-events: none;
}

.phone-body {
    position: relative;
    padding: 12px;
    border-radius: 46px;
    background: linear-gradient(160deg, #0099ff, #eee 42%, #2b3352);
    box-shadow:
        0 70px 120px -40px rgba(2, 7, 16, .95),
        0 34px 60px -28px rgba(2, 7, 16, .85),
        0 0 0 1px rgba(255, 255, 255, .16),
        0 0 0 6px rgba(3, 8, 18, .28),
        inset 0 1px 1px rgba(255, 255, 255, .3),
        inset 0 -2px 10px rgba(0, 0, 0, .7);
    transform-style: preserve-3d;
}

.phone-notch {
    position: absolute;
    top: 20px;
    left: 50%;
    width: 88px;
    height: 22px;
    border-radius: 999px;
    background: #05070f;
    transform: translateX(-50%) translateZ(2px);
    z-index: 3;
}

.phone-screen {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 12px;
    height: 566px;
    padding: 50px 14px 16px;
    border-radius: 36px;
    background:
        radial-gradient(120% 60% at 20% 0%, rgba(255, 194, 75, .16), transparent 55%),
        radial-gradient(120% 70% at 100% 40%, rgba(70, 183, 232, .22), transparent 60%),
        linear-gradient(180deg, #0a0f1f, #060912);
    overflow: hidden;
    transform-style: preserve-3d;
}

.app-bar {
    display: flex;
    align-items: center;
    gap: 8px;
    font-family: var(--font-display);
    font-size: 14.5px;
    font-weight: 600;
}

.app-avatar {
    width: 24px;
    height: 24px;
    margin-inline-start: auto;
    border-radius: 50%;
    background: linear-gradient(135deg, #ff8a5b, #ffe1a8);
}

.app-prompt {
    padding: 13px 15px;
    border: 1px solid rgba(255, 255, 255, .1);
    border-radius: 16px 16px 16px 6px;
    background: var(--glass);
    transform: translateZ(22px);
}

.app-prompt-label {
    display: block;
    margin-bottom: 5px;
    color: var(--sun);
    font-size: 10px;
    font-weight: 600;
    letter-spacing: .1em;
    text-transform: uppercase;
}

.app-prompt p {
    font-size: 13px;
    line-height: 1.5;
    color: #dbe3ff;
}

.app-cards {
    display: flex;
    flex-direction: column;
    gap: 10px;
    transform-style: preserve-3d;
}

.app-card {
    padding: 10px;
    border: 1px solid rgba(255, 255, 255, .1);
    border-radius: 16px;
    background: linear-gradient(150deg, rgba(255, 255, 255, .1), rgba(255, 255, 255, .028));
    box-shadow: 0 16px 30px -20px rgba(0, 0, 0, .95), inset 0 1px 0 rgba(255, 255, 255, .16);
    backdrop-filter: blur(6px);
}

.float-1 { transform: translateZ(46px); }
.float-2 { transform: translateZ(30px); }
.float-3 { transform: translateZ(16px); }

.app-card header {
    display: flex;
    align-items: center;
    gap: 10px;
}

.app-thumb {
    width: 42px;
    height: 42px;
    flex: none;
    border-radius: 11px;
    object-fit: cover;
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .16);
}

.app-card h4 { font-size: 12.5px; font-weight: 600; }

.app-card header p {
    margin-top: 2px;
    color: var(--muted);
    font-size: 11px;
}

.app-match {
    margin-inline-start: auto;
    padding: 3px 8px;
    border-radius: 999px;
    background: color-mix(in srgb, var(--sun) 16%, transparent);
    color: var(--sun);
    font-size: 10.5px;
    font-weight: 600;
}

.app-chiprow {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 9px;
}

.app-chiprow span {
    padding: 4px 9px;
    border-radius: 999px;
    background: rgba(255, 255, 255, .06);
    color: var(--muted);
    font-size: 10.5px;
}

.app-cta {
    margin-top: auto;
    padding: 13px;
    border-radius: 15px;
    background: linear-gradient(135deg, var(--sun), var(--sea) 150%);
    color: var(--on-accent);
    font-family: var(--font-display);
    font-size: 13.5px;
    font-weight: 600;
    text-align: center;
    box-shadow: 0 14px 28px -14px rgba(255, 194, 75, .9);
    transform: translateZ(34px);
}

.stage-chip {
    position: absolute;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 15px;
    border: 1px solid var(--line-strong);
    border-radius: 999px;
    background: color-mix(in srgb, var(--ink-2) 82%, transparent);
    backdrop-filter: blur(14px);
    box-shadow: var(--shadow-sm);
    color: var(--text);
    font-size: 13px;
    font-weight: 500;
    white-space: nowrap;
}

.chip-a { top: 32%; inset-inline-start: -4%; animation: hover-float 8s ease-in-out infinite; }
.chip-b { top: 46%; inset-inline-end: -6%; animation: hover-float 9.5s ease-in-out .8s infinite; }
.chip-c { bottom: 12%; inset-inline-start: 2%; animation: hover-float 8.6s ease-in-out .4s infinite; }

/* ── shared card surface ────────────────────────────────────────────────── */
.step, .feature, .photo-card, .plan-card, .biz-item {
    position: relative;
    border: 1px solid var(--line);
    border-radius: var(--radius-lg);
    background: var(--glass);
    backdrop-filter: blur(14px);
    box-shadow: var(--shadow), var(--inset-hi);
    transform-style: preserve-3d;
    transition: transform .4s var(--ease), border-color .4s var(--ease);
}

.step::after, .feature::after, .photo-card::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: radial-gradient(420px circle at var(--mx, 50%) var(--my, 0%), color-mix(in srgb, var(--sun) 14%, transparent), transparent 62%);
    opacity: 0;
    transition: opacity .4s var(--ease);
    pointer-events: none;
}

.step:hover, .feature:hover, .photo-card:hover { border-color: var(--line-strong); }
.step:hover::after, .feature:hover::after, .photo-card:hover::after { opacity: 1; }

/* ── steps ──────────────────────────────────────────────────────────────── */
.steps {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    margin: 0;
    padding: 0;
    list-style: none;
    perspective: 1400px;
}

.step { padding: 32px 28px 34px; }

.step-num {
    display: inline-block;
    margin-bottom: 18px;
    font-family: var(--font-display);
    font-size: 40px;
    font-weight: 700;
    letter-spacing: -.05em;
    background: linear-gradient(180deg, currentColor, transparent 190%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    -webkit-text-fill-color: transparent;
    background-image: linear-gradient(180deg, var(--text), color-mix(in srgb, var(--text) 18%, transparent));
}

.step h3, .feature h3 { font-size: 20px; }

.step p, .feature p {
    margin-top: 12px;
    color: var(--muted);
    font-size: 15px;
}

/* ── try it ─────────────────────────────────────────────────────────────── */
.try-box {
    display: flex;
    gap: 10px;
    max-width: 760px;
    margin: 0 auto;
    padding: 10px;
    border: 1px solid var(--line-strong);
    border-radius: 999px;
    background: var(--glass-strong);
    backdrop-filter: blur(18px);
    box-shadow: var(--shadow), var(--inset-hi);
}

.try-box input {
    flex: 1;
    min-width: 0;
    padding: 0 12px 0 20px;
    border: 0;
    background: transparent;
    font-size: 16px;
}

.try-box input::placeholder { color: var(--muted-soft); }
.try-box input:focus { outline: none; }

.try-examples {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 10px;
    margin-top: 20px;
}

.try-examples button {
    padding: 8px 16px;
    border: 1px dashed var(--line-strong);
    border-radius: 999px;
    background: var(--glass);
    backdrop-filter: blur(10px);
    color: var(--muted);
    font-size: 13.5px;
    cursor: pointer;
    transition: color .2s var(--ease), border-color .2s var(--ease), background .2s var(--ease);
}

.try-examples button:hover {
    color: var(--text);
    border-style: solid;
    border-color: color-mix(in srgb, var(--sun) 45%, transparent);
    background: color-mix(in srgb, var(--sun) 6%, transparent);
}

.try-status {
    min-height: 22px;
    margin-top: 20px;
    color: var(--muted);
    font-size: 14px;
    text-align: center;
    text-shadow: 0 1px 16px color-mix(in srgb, var(--ink) 92%, transparent);
}

.try-status.is-error { color: var(--coral); }

.plan-cards {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 18px;
    margin-top: 12px;
    perspective: 1400px;
}

.plan-card {
    display: flex;
    flex-direction: column;
    padding: 26px 24px 28px;
    opacity: 0;
    transform: translateY(24px) rotateX(6deg);
    animation: card-in .7s var(--ease) forwards;
}

.plan-card:nth-child(2) { animation-delay: .1s; }
.plan-card:nth-child(3) { animation-delay: .2s; }

@keyframes card-in { to { opacity: 1; transform: none; } }

.plan-card .plan-emoji { font-size: 30px; margin-bottom: 14px; }

.plan-card h3 { font-size: 20px; }

.plan-card .plan-meta {
    margin-top: 6px;
    color: var(--sun);
    font-size: 13px;
    font-weight: 600;
}

.plan-card p {
    margin-top: 12px;
    color: var(--muted);
    font-size: 14.5px;
}

.plan-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
    margin-top: 18px;
}

.plan-chips span {
    padding: 5px 11px;
    border-radius: 999px;
    background: color-mix(in srgb, var(--text) 7%, transparent);
    color: var(--muted);
    font-size: 12px;
}

.try-foot {
    margin-top: 26px;
    color: var(--muted-soft);
    font-size: 13px;
    text-align: center;
    text-shadow: 0 1px 16px color-mix(in srgb, var(--ink) 92%, transparent);
}

/* ── assistant: photo cards + compact row ───────────────────────────────── */
.photo-cards {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    perspective: 1400px;
}

.photo-card {
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.photo-card-media {
    position: relative;
    aspect-ratio: 3 / 2;
    background-position: center;
    background-size: cover;
}

.photo-card-media::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, transparent 30%, color-mix(in srgb, var(--ink) 78%, transparent) 100%);
}

.media-airport { background-image: url("/static/img/photos/card-airport.webp"); }
.media-gallery { background-image: url("/static/img/photos/card-gallery.webp"); }
.media-water { background-image: url("/static/img/photos/card-water.webp"); }

.photo-card-tag {
    position: absolute;
    top: 14px;
    inset-inline-start: 14px;
    z-index: 2;
    padding: 6px 12px;
    border-radius: 999px;
    background: rgba(6, 9, 18, .6);
    backdrop-filter: blur(10px);
    color: #eef2ff;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: .04em;
}

.photo-card-body { padding: 24px 24px 28px; }

.photo-card-body h3 { font-size: 20px; }

.photo-card-body p {
    margin-top: 12px;
    color: var(--muted);
    font-size: 15px;
}

.mini-features {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
    margin-top: 20px;
}

.mini-feature {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 20px 22px;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    background: var(--glass);
    backdrop-filter: blur(12px);
}

.mini-feature span {
    font-size: 20px;
    line-height: 1.2;
}

.mini-feature h4 { font-size: 15.5px; }

.mini-feature p {
    margin-top: 5px;
    color: var(--muted);
    font-size: 13.5px;
}

/* ── plus band: ask where you stand (always dark) ───────────────────────── */
.plus-band {
    position: relative;
    overflow: hidden;
    padding: clamp(40px, 5vw, 68px);
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: var(--radius-xl);
    background: #060912;
    box-shadow: var(--shadow-lg);
}

.plus-band::before {
    content: "";
    position: absolute;
    inset: 0;
    background: url("/static/img/photos/club-bar.webp") center / cover;
    opacity: .9;
}

.plus-band::after {
    content: "";
    position: absolute;
    inset: 0;
    background:
        radial-gradient(90% 90% at 12% 4%, rgba(255, 138, 91, .34), transparent 62%),
        linear-gradient(100deg, rgba(8, 17, 32, .93) 32%, rgba(8, 17, 32, .5) 100%);
}

.plus-shell {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    align-items: center;
    gap: clamp(28px, 4vw, 56px);
}

.plus-copy h2 {
    margin-top: 14px;
    font-size: clamp(26px, 3vw, 38px);
}

.plus-copy > p {
    margin-top: 16px;
    color: var(--muted);
    font-size: 16.5px;
}

.plus-list {
    margin: 22px 0 0;
    padding: 0;
    list-style: none;
}

.plus-list li {
    display: flex;
    gap: 11px;
    margin-top: 12px;
    color: var(--muted);
    font-size: 14.5px;
}

.plus-list li::before {
    content: "";
    flex: none;
    width: 7px;
    height: 7px;
    margin-top: 9px;
    border-radius: 50%;
    background: var(--sun);
    box-shadow: 0 0 12px color-mix(in srgb, var(--sun) 70%, transparent);
}

/* chat mock */
.chat {
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding: 20px;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: var(--radius-lg);
    background: linear-gradient(165deg, rgba(255, 255, 255, .1), rgba(255, 255, 255, .03));
    backdrop-filter: blur(18px);
    box-shadow: var(--shadow);
}

.chat-loc {
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--sun);
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.chat-msg {
    max-width: 86%;
    padding: 12px 15px;
    border-radius: 16px;
    font-size: 14px;
    line-height: 1.5;
}

.chat-msg.me {
    align-self: flex-end;
    border-end-end-radius: 6px;
    background: linear-gradient(135deg, var(--sun), var(--sea) 165%);
    color: var(--on-accent);
    font-weight: 500;
}

.chat-msg.app {
    align-self: flex-start;
    border-end-start-radius: 6px;
    border: 1px solid rgba(255, 255, 255, .1);
    background: rgba(255, 255, 255, .06);
    color: #dfe6ff;
}

.chat-answer {
    display: flex;
    gap: 12px;
    align-items: center;
    align-self: flex-start;
    width: 100%;
    padding: 12px;
    border: 1px solid rgba(255, 255, 255, .1);
    border-radius: 16px;
    background: rgba(255, 255, 255, .06);
}

.chat-answer img {
    width: 58px;
    height: 58px;
    flex: none;
    border-radius: 12px;
    object-fit: cover;
}

.chat-answer h4 { font-size: 14px; }

.chat-answer p {
    margin-top: 3px;
    color: var(--muted);
    font-size: 12.5px;
}

.chat-attach {
    display: flex;
    align-items: center;
    gap: 10px;
    align-self: flex-end;
    padding: 8px 8px 8px 14px;
    border-radius: 16px;
    border-end-end-radius: 6px;
    background: rgba(255, 255, 255, .1);
    font-size: 13.5px;
}

.chat-attach img {
    width: 42px;
    height: 42px;
    border-radius: 10px;
    object-fit: cover;
}

/* ── business travel ────────────────────────────────────────────────────── */
.biz-shell {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    align-items: center;
    gap: clamp(28px, 4vw, 56px);
}

.biz-photo {
    position: relative;
    aspect-ratio: 16 / 11;
    border-radius: var(--radius-xl);
    background: url("/static/img/photos/expo-dome.webp") center / cover;
    border: 1px solid var(--line);
    box-shadow: var(--shadow-lg);
    overflow: hidden;
}

.biz-photo::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, transparent 34%, rgba(8, 17, 32, .78));
}

.biz-receipt {
    position: absolute;
    z-index: 2;
    inset-inline-start: 18px;
    inset-inline-end: 18px;
    bottom: 18px;
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 16px;
    border: 1px solid rgba(255, 255, 255, .16);
    border-radius: var(--radius);
    background: rgba(10, 14, 28, .82);
    backdrop-filter: blur(14px);
    color: #eef2ff;
}

.biz-receipt span { font-size: 20px; }

.biz-receipt strong {
    display: block;
    font-family: var(--font-display);
    font-size: 14px;
}

.biz-receipt small {
    color: #98a4c6;
    font-size: 12px;
}

.biz-receipt em {
    margin-inline-start: auto;
    color: #ffc24b;
    font-size: 13px;
    font-style: normal;
    font-weight: 600;
}

.biz-items {
    display: grid;
    gap: 14px;
}

.biz-item {
    display: flex;
    gap: 16px;
    padding: 22px 24px;
    border-radius: var(--radius);
}

.biz-item .biz-icon {
    display: grid;
    place-items: center;
    width: 44px;
    height: 44px;
    flex: none;
    border-radius: 13px;
    background: color-mix(in srgb, var(--text) 7%, transparent);
    box-shadow: var(--inset-hi);
    font-size: 20px;
}

.biz-item h3 { font-size: 17px; }

.biz-item p {
    margin-top: 6px;
    color: var(--muted);
    font-size: 14.5px;
}

/* ── closing cta ────────────────────────────────────────────────────────── */
.cta-band { padding-bottom: 116px; }

.cta-shell {
    display: grid;
    grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr);
    align-items: center;
    gap: 44px;
    padding: clamp(34px, 4vw, 58px);
    border: 1px solid var(--line-strong);
    border-radius: var(--radius-xl);
    background:
        radial-gradient(120% 140% at 0% 0%, color-mix(in srgb, var(--sun) 16%, transparent), transparent 55%),
        radial-gradient(120% 140% at 100% 100%, color-mix(in srgb, var(--sea) 22%, transparent), transparent 55%),
        var(--glass);
    backdrop-filter: blur(16px);
    box-shadow: var(--shadow-lg), var(--inset-hi);
}

.cta-copy h2 { font-size: clamp(28px, 3.2vw, 40px); }

.cta-copy p {
    margin-top: 14px;
    color: var(--muted);
    font-size: 16.5px;
}

.early-form {
    padding: 26px;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    background: color-mix(in srgb, var(--ink) 55%, transparent);
}

.early-form h3 { font-size: 18px; }

.early-form > p {
    margin-top: 8px;
    color: var(--muted);
    font-size: 14px;
}

.early-row {
    display: flex;
    gap: 10px;
    margin-top: 18px;
}

.early-row input {
    flex: 1;
    min-width: 0;
    padding: 13px 18px;
    border: 1px solid var(--line-strong);
    border-radius: 999px;
    background: color-mix(in srgb, var(--text) 5%, transparent);
    font-size: 15px;
}

.early-row input::placeholder { color: var(--muted-soft); }

.early-row input:focus {
    outline: none;
    border-color: color-mix(in srgb, var(--sun) 50%, transparent);
}

.early-status {
    min-height: 20px;
    margin-top: 12px;
    color: var(--sun);
    font-size: 13.5px;
}

.early-status.is-error { color: var(--coral); }

/* ── docs ───────────────────────────────────────────────────────────────── */
.doc { padding: 72px 0 104px; }

.doc-shell { max-width: 900px; }
.doc-narrow { max-width: 760px; }
.doc-center { text-align: center; }

.doc h1 { font-size: clamp(32px, 4.4vw, 50px); }

.doc-lead {
    margin-top: 16px;
    color: var(--muted);
    font-size: 17px;
}

.doc-body {
    margin-top: 40px;
    color: var(--muted);
    font-size: 15.5px;
}

.doc-body h2 {
    margin-top: 38px;
    color: var(--text);
    font-size: 21px;
}

.doc-body p { margin-top: 12px; }

.doc-body ul { margin-top: 12px; padding-inline-start: 20px; }

.doc-body li { margin-top: 6px; }

.doc-body a { color: var(--sun); }

.faq {
    margin-top: 44px;
    display: grid;
    gap: 12px;
}

.faq details {
    padding: 20px 24px;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    background: var(--glass);
    backdrop-filter: blur(12px);
}

.faq summary {
    font-family: var(--font-display);
    font-size: 16.5px;
    font-weight: 600;
    cursor: pointer;
    list-style: none;
}

.faq summary::-webkit-details-marker { display: none; }

.faq summary::after {
    content: "+";
    float: inline-end;
    color: var(--sun);
    font-size: 20px;
    line-height: 1;
}

.faq details[open] summary::after { content: "–"; }

.faq p {
    margin-top: 12px;
    color: var(--muted);
    font-size: 15px;
}

.doc-contact { margin-top: 52px; }

.doc-contact h2 { font-size: 22px; }

.doc-contact p {
    margin-top: 10px;
    color: var(--muted);
}

.doc-contact a { color: var(--sun); }

.doc-install .store-row { justify-content: flex-start; }

.doc-center .store-row,
.doc-center .btn { margin-inline: auto; }

.lost-mark {
    display: block;
    margin-bottom: 18px;
    font-size: 54px;
}

.doc-center .btn { margin-top: 30px; display: inline-flex; }

/* ── footer ─────────────────────────────────────────────────────────────── */
.site-footer {
    position: relative;
    z-index: 1;
    padding-top: 56px;
    border-top: 1px solid var(--line);
    background: var(--ink);
}

.footer-shell {
    display: grid;
    grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
    gap: 44px;
    padding-bottom: 44px;
}

.footer-brand p {
    max-width: 34em;
    margin-top: 14px;
    color: var(--muted);
    font-size: 14.5px;
}

.footer-social-link {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    min-height: 46px;
    margin-top: 20px;
    padding: 5px 13px 5px 5px;
    border: 1px solid var(--line);
    border-radius: 14px;
    color: var(--muted);
    font-size: 14.5px;
    font-weight: 600;
    transition: color .2s var(--ease), border-color .2s var(--ease), transform .2s var(--ease);
}

.footer-social-link:hover {
    border-color: color-mix(in srgb, #d946ef 55%, var(--line));
    color: var(--text);
    transform: translateY(-1px);
}

.footer-social-link:focus-visible {
    outline: 2px solid var(--sun);
    outline-offset: 3px;
}

.footer-social-icon {
    display: grid;
    width: 36px;
    height: 36px;
    place-items: center;
    flex: 0 0 36px;
    border-radius: 11px;
    color: #fff;
    background: linear-gradient(135deg, #f9ce34 0%, #ee2a7b 52%, #6228d7 100%);
    box-shadow: 0 6px 18px rgba(238, 42, 123, .18);
}

.footer-social-icon svg {
    width: 24px;
    height: 24px;
    fill: none;
    stroke: currentColor;
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-width: 1.8;
}

.footer-social-icon .instagram-dot {
    fill: currentColor;
    stroke: none;
}

.footer-links {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 28px;
}

.footer-links h3 {
    margin-bottom: 12px;
    color: var(--muted-soft);
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .12em;
    text-transform: uppercase;
}

.footer-links a {
    display: block;
    margin-top: 8px;
    color: var(--muted);
    font-size: 14.5px;
    transition: color .2s var(--ease);
}

.footer-links a:hover { color: var(--text); }

.footer-base {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 24px;
    justify-content: space-between;
    padding: 22px 0 30px;
    border-top: 1px solid var(--line);
    color: var(--muted-soft);
    font-size: 13px;
}

.footer-base a { color: var(--muted); }
.footer-base a:hover { color: var(--text); }

/* ── responsive ─────────────────────────────────────────────────────────── */
@media (max-width: 1080px) {
    .mini-features { grid-template-columns: 1fr; }
}

@media (max-width: 940px) {
    .hero-panel { width: min(92%, 900px); }

    .hero-shell { grid-template-columns: 1fr; }

    .hero-copy { text-align: center; }

    .hero-lead { margin-inline: auto; }

    .store-row, .hero-proof { justify-content: center; }

    .hero-proof { border-top: 0; padding-top: 8px; }

    .hero-stage { margin-top: 26px; }

    .phone { transform: rotateX(5deg) rotateY(-9deg); }

    .chip-a { inset-inline-start: 2%; }
    .chip-b { inset-inline-end: 0; }

    .nav-links { display: none; }

    .steps, .plan-cards, .photo-cards { grid-template-columns: 1fr; }

    .plus-shell, .biz-shell, .cta-shell, .footer-shell { grid-template-columns: 1fr; }

    .biz-photo { aspect-ratio: 16 / 10; }
}

@media (max-width: 640px) {
    .section { padding: 76px 0; }

    .shell { width: min(100% - 32px, var(--shell)); }

    /* keep the install buttons inside the first screen on a phone */
    .hero { padding-top: 10px; }

    .hero-panel {
        width: calc(100% - 24px);
        padding: 32px 18px;
        border-radius: 24px;
    }

    .store-row { max-width: none; }

    .pill { font-size: 12.5px; padding: 6px 13px 6px 10px; }

    .hero-title { margin-top: 16px; font-size: clamp(30px, 8.6vw, 40px); }

    .hero-lead { margin-top: 14px; font-size: 15px; }

    .store-row { flex-wrap: nowrap; gap: 10px; margin-top: 22px; }

    .store-btn { flex: 1; justify-content: center; gap: 9px; padding: 10px 12px; }

    .store-text small { font-size: 9.5px; letter-spacing: .04em; }

    .store-text strong { font-size: 15px; }

    .hero-meta { margin-top: 12px; font-size: 12.5px; }

    .hero-proof { gap: 8px 20px; margin-top: 20px; font-size: 12.5px; }

    .hero-proof strong { font-size: 18px; }

    .try-box { flex-direction: column; border-radius: var(--radius-lg); }

    .try-box input { padding: 12px 16px; }

    .early-row { flex-direction: column; }

    .early-row .btn { width: 100%; }

    .stage-chip { font-size: 12px; padding: 8px 12px; }

    /* The wordmark stays at every width — a bare icon does not tell a first
       visitor whose site this is. The language label is what gives way. */
    .brand-name { font-size: 17px; }

    /* the header keeps four controls on a phone: drop the labels, not the controls */
    .lang-trigger span { display: none; }

    .lang-trigger { padding: 10px 12px; }

    .plus-band { padding: 28px 22px; }

    .chat-msg { max-width: 94%; }
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }

    *, *::before, *::after {
        animation-duration: .001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .001ms !important;
    }

    .phone { transform: none; }

    .backdrop-slide { transform: none; }
}
