/* ==========================================================================
   Siddhi Infra — design system (redesign, 2026)

   One stylesheet for the whole site. It sits on top of bootstrap.min.css
   (grid, collapse, accordion only) and Font Awesome (all.min.css).

   Naming: every class this file introduces starts with "ui-". Older class
   names you will still see in page bodies (blog articles, the ported content
   pages) are styled near the end, in "Content compatibility".

   Animation: elements carry data-anim="…" and assets/js/si-motion.js plays
   them. Hidden start states only apply under html.js-motion, which that script
   sets — with JavaScript off (or for crawlers) everything is simply visible.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Tokens
   -------------------------------------------------------------------------- */
:root {
    --c-orange: #ed852b;
    --c-orange-2: #c66a14;
    --c-orange-soft: #fdf0e4;
    --c-orange-rgb: 237, 133, 43;
    --c-ink: #141518;
    --c-ink-2: #1f2023;
    --c-ink-3: #2b2d31;
    --c-ink-rgb: 20, 21, 24;
    --c-paper: #ffffff;
    --c-cream: #f7f5f2;
    --c-cream-2: #efebe5;
    --c-line: #e6e1d9;
    --c-text: #4a4c51;
    --c-muted: #7b7d82;
    --c-on-dark: rgba(255, 255, 255, .78);

    --f-head: "Space Grotesk", "Segoe UI", system-ui, sans-serif;
    --f-body: "Inter", "Segoe UI", system-ui, sans-serif;

    --fs-hero: clamp(2rem, 1.3rem + 2.6vw, 3.6rem);
    --fs-h2: clamp(1.4rem, 1.15rem + 1.6vw, 2.6rem);
    --fs-h3: clamp(1.4rem, 1.1rem + 1vw, 2.1rem);
    --fs-h4: clamp(1.1rem, 1rem + .4vw, 1.3rem);
    --fs-lead: clamp(1.02rem, .95rem + .3vw, 1.18rem);

    --sp-section: clamp(3rem, 2rem + 3.5vw, 5rem);
    --r-sm: 10px;
    --r: 16px;
    --r-lg: 24px;
    --r-xl: 32px;
    --sh-1: 0 18px 40px -28px rgba(var(--c-ink-rgb), .45);
    --sh-2: 0 40px 80px -40px rgba(var(--c-ink-rgb), .55);
    --ease: cubic-bezier(.22, 1, .36, 1);
    --header-h: 104px;   /* 90px bar + its 14px top offset */

    /* names the mobile drawer CSS (ported below) still uses */
    --orange: var(--c-orange);
    --orange-dark: var(--c-orange-2);
    --orange-rgb: var(--c-orange-rgb);
    --blue: var(--c-ink-2);
    --blue-rgb: 31, 32, 35;
    --gray: var(--c-text);
    --primary-font: var(--f-body);
    --secondary-font: var(--f-head);
    --off-white-bdr: var(--c-line);
}

/* --------------------------------------------------------------------------
   2. Base
   -------------------------------------------------------------------------- */
html {
    scroll-behavior: auto;
    -webkit-text-size-adjust: 100%;
}

body {
    margin: 0;
    background: var(--c-paper);
    color: var(--c-text);
    font-family: var(--f-body);
    font-size: 16px;
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
    overflow-x: clip;
}

h1, h2, h3, h4, h5, h6,
.ui-hd {
    margin: 0 0 .5em;
    color: var(--c-ink);
    font-family: var(--f-head);
    font-weight: 700;
    line-height: 1.12;
    letter-spacing: -.02em;
}

/* heading levels follow the live site, so an h5/h6 often stands where the design
   had an h4 — keep them the same base size (sections set their own sizes) */
h5, h6 {
    font-size: 1em;
}

p {
    margin: 0 0 1em;
}

a {
    color: inherit;
    text-decoration: none;
    transition: color .3s var(--ease);
}

a:hover {
    color: var(--c-orange);
}

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

::selection {
    background: var(--c-orange);
    color: #fff;
}

:focus-visible {
    outline: 2px solid var(--c-orange);
    outline-offset: 3px;
}

.ui-skip {
    position: absolute;
    left: 12px;
    top: -60px;
    z-index: 2000;
    padding: 10px 16px;
    background: var(--c-orange);
    color: #fff;
    border-radius: var(--r-sm);
}

.ui-skip:focus {
    top: 12px;
    color: #fff;
}

/* --------------------------------------------------------------------------
   3. Layout
   -------------------------------------------------------------------------- */
.ui-wrap {
    width: 100%;
    max-width: 1280px;
    margin-inline: auto;
    padding-inline: clamp(16px, 4vw, 32px);
}

.ui-section {
    position: relative;
    padding-block: var(--sp-section);
}

.ui-section--cream {
    background: var(--c-cream);
}

.ui-section--dark {
    background: var(--c-ink);
    color: var(--c-on-dark);
}

.ui-section--dark h1, .ui-section--dark h2, .ui-section--dark h3,
.ui-section--dark h4, .ui-section--dark h5, .ui-section--dark h6, .ui-section--dark .ui-hd {
    color: #fff;
}

/* soft orange glow used on dark bands */
.ui-glow::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background:
        radial-gradient(700px 360px at 88% 0%, rgba(var(--c-orange-rgb), .18), transparent 70%),
        radial-gradient(520px 300px at 0% 100%, rgba(var(--c-orange-rgb), .1), transparent 70%);
}

/* fine blueprint grid on dark bands */
.ui-grid-bg {
    background-image:
        linear-gradient(rgba(255, 255, 255, .04) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255, 255, 255, .04) 1px, transparent 1px);
    background-size: 56px 56px;
}

/* --------------------------------------------------------------------------
   4. Section heads
   -------------------------------------------------------------------------- */
.ui-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 16px;
    font-family: var(--f-head);
    font-size: 13px;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--c-orange);
}

.ui-eyebrow::before {
    content: "";
    width: 28px;
    height: 2px;
    background: currentColor;
}

.ui-head {
    max-width: 760px;
    margin-bottom: clamp(28px, 3vw, 44px);
}

.ui-head--center {
    margin-inline: auto;
    text-align: center;
}

.ui-head--center .ui-eyebrow::after {
    content: "";
    width: 28px;
    height: 2px;
    background: currentColor;
}

.ui-head__row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    margin-bottom: clamp(28px, 3vw, 44px);
}

.ui-head__row .ui-head {
    margin-bottom: 0;
}

.ui-title {
    font-size: var(--fs-h2);
    margin: 0;
}

.ui-title--md {
    font-size: var(--fs-h3);
}

.ui-title em,
.ui-title .ui-accent {
    font-style: normal;
    color: var(--c-orange);
}

.ui-lead {
    margin-top: 18px;
    font-size: var(--fs-lead);
    color: var(--c-muted);
}

.ui-section--dark .ui-lead {
    color: var(--c-on-dark);
}

/* --------------------------------------------------------------------------
   5. Buttons
   -------------------------------------------------------------------------- */
.ui-btn {
    --btn-bg: var(--c-orange);
    --btn-fg: #fff;
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 15px 26px;
    border: 1.5px solid var(--btn-bg);
    border-radius: 999px;
    background: var(--btn-bg);
    color: var(--btn-fg);
    font-family: var(--f-head);
    font-size: 15px;
    font-weight: 600;
    line-height: 1;
    letter-spacing: .01em;
    white-space: nowrap;
    overflow: hidden;
    isolation: isolate;
    cursor: pointer;
    transition: color .4s var(--ease), border-color .4s var(--ease), transform .4s var(--ease);
}

/* fill wipe on hover */
.ui-btn::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    background: var(--c-ink);
    transform: translateY(101%);
    transition: transform .45s var(--ease);
}

.ui-btn:hover {
    color: #fff;
    border-color: var(--c-ink);
}

.ui-btn:hover::before {
    transform: translateY(0);
}

.ui-btn i {
    font-size: 14px;
    transition: transform .4s var(--ease);
}

.ui-btn:hover i {
    transform: translateX(4px);
}

.ui-btn--ghost {
    --btn-bg: transparent;
    --btn-fg: var(--c-ink);
    border-color: var(--c-ink);
}

.ui-btn--ghost::before {
    background: var(--c-ink);
}

.ui-btn--light {
    --btn-bg: transparent;
    --btn-fg: #fff;
    border-color: rgba(255, 255, 255, .5);
}

.ui-btn--light::before {
    background: #fff;
}

.ui-btn--light:hover {
    color: var(--c-ink);
    border-color: #fff;
}

.ui-btn--white {
    --btn-bg: #fff;
    --btn-fg: var(--c-ink);
}

.ui-btn--sm {
    padding: 11px 18px;
    font-size: 14px;
}

.ui-btn--block {
    width: 100%;
}

.ui-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: var(--f-head);
    font-weight: 600;
    color: var(--c-orange);
}

.ui-link i {
    transition: transform .4s var(--ease);
}

.ui-link:hover i {
    transform: translateX(5px);
}

/* --------------------------------------------------------------------------
   6. Header
   -------------------------------------------------------------------------- */
.ui-header {
    position: fixed;
    inset: 0 0 auto;
    z-index: 1000;
    padding-top: 14px;
    transition: padding .4s var(--ease), transform .4s var(--ease);
}

.ui-header__bar {
    display: flex;
    align-items: center;
    gap: 14px;
    min-height: 90px;
    padding: 10px 14px 10px 22px;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 999px;
    background: rgba(20, 21, 24, .35);
    -webkit-backdrop-filter: blur(14px) saturate(140%);
    backdrop-filter: blur(14px) saturate(140%);
    transition: background .4s var(--ease), border-color .4s var(--ease), box-shadow .4s var(--ease);
}

.ui-header.is-scrolled {
    padding-top: 10px;
}

.ui-header.is-scrolled .ui-header__bar {
    background: rgba(255, 255, 255, .92);
    border-color: var(--c-line);
    box-shadow: var(--sh-1);
}

.ui-header.is-hidden {
    transform: translateY(-120%);
}

.ui-header__logo {
    flex: none;
    display: block;
    width: 225px;
}

.ui-header__logo img {
    display: block;
    width: 100%;
    height: auto;
}

.ui-header__logo .logo-colored,
.ui-header.is-scrolled .ui-header__logo .logo-white {
    display: none;
}

.ui-header.is-scrolled .ui-header__logo .logo-colored {
    display: block;
}

.ui-nav {
    display: flex;
    align-items: center;
    gap: 2px;
    margin: 0 auto;
    padding: 0;
    list-style: none;
}

.ui-nav > li {
    position: relative;
}

.ui-nav > li > a {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 10px 8px;
    border-radius: 999px;
    color: #fff;
    font-family: var(--f-head);
    font-size: 15px;
    font-weight: 500;
    white-space: nowrap;
    transition: color .3s var(--ease), background .3s var(--ease);
}

.ui-header.is-scrolled .ui-nav > li > a {
    color: var(--c-ink);
}

.ui-nav > li > a:hover,
.ui-nav > li > a[aria-current="page"],
.ui-nav > li:hover > a {
    color: var(--c-orange);
}

.ui-nav__caret {
    font-size: 11px;
    transition: transform .3s var(--ease);
}

.ui-nav > li:hover .ui-nav__caret {
    transform: rotate(180deg);
}

/* mega menu */
.ui-mega {
    position: absolute;
    top: calc(100% + 18px);
    left: 50%;
    width: min(980px, 92vw);
    padding: 28px;
    border: 1px solid var(--c-line);
    border-radius: var(--r-lg);
    background: #fff;
    box-shadow: var(--sh-2);
    opacity: 0;
    visibility: hidden;
    transform: translate(-42%, 12px);
    transition: opacity .35s var(--ease), transform .35s var(--ease), visibility .35s;
}

.ui-mega::before {
    content: "";
    position: absolute;
    inset: -20px 0 auto;
    height: 20px;
}

.ui-nav > li:hover .ui-mega,
.ui-nav > li:focus-within .ui-mega {
    opacity: 1;
    visibility: visible;
    transform: translate(-42%, 0);
}

.ui-mega__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px 28px;
}

.ui-mega__col h6,
.ui-mega__title {
    margin: 0 0 10px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--c-line);
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--c-muted);
}

.ui-mega__col ul {
    margin: 0;
    padding: 0;
    list-style: none;
}

.ui-mega__col a {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 8px 10px;
    margin-inline: -10px;
    border-radius: var(--r-sm);
    color: var(--c-ink);
    font-size: 15px;
    font-weight: 500;
    transition: background .25s var(--ease), color .25s var(--ease);
}

.ui-mega__col a i {
    display: grid;
    place-items: center;
    flex: none;
    width: 32px;
    height: 32px;
    border-radius: 9px;
    background: var(--c-orange-soft);
    color: var(--c-orange);
    font-size: 15px;
    transition: background .25s var(--ease), color .25s var(--ease);
}

.ui-mega__col a:hover {
    background: var(--c-cream);
    color: var(--c-orange);
}

.ui-mega__col a:hover i {
    background: var(--c-orange);
    color: #fff;
}

.ui-header__actions {
    display: flex;
    align-items: center;
    gap: 10px;
    flex: none;
}

.ui-header__call {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    color: #fff;
    font-family: var(--f-head);
    font-weight: 600;
    font-size: 15px;
}

.ui-header__call {
    position: relative;
}

/* icon only: the number stays in the markup for screen readers (the link is
   still a tel: link); it is shown in full in the hero, contact and footer */
.ui-header__call span {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
}

.ui-header__call i {
    display: grid;
    place-items: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .12);
}

.ui-header.is-scrolled .ui-header__call {
    color: var(--c-ink);
}

.ui-header.is-scrolled .ui-header__call i {
    background: var(--c-orange-soft);
    color: var(--c-orange);
}

.ui-burger {
    display: none;
    place-items: center;
    width: 46px;
    height: 46px;
    border: 0;
    border-radius: 50%;
    background: var(--c-orange);
    color: #fff;
    font-size: 18px;
}

/* --------------------------------------------------------------------------
   7. Home hero
   -------------------------------------------------------------------------- */
.ui-hero {
    position: relative;
    min-height: min(100svh, 980px);
    display: flex;
    align-items: center;
    padding: calc(var(--header-h) + 64px) 0 150px;
    background: var(--c-ink);
    color: var(--c-on-dark);
    overflow: hidden;
    isolation: isolate;
}

/* desktop: the photo area takes the banners' own shape (1954 x 800), so the whole banner
   shows without zooming. Below it a dark strip as tall as the stats ribbon's top half
   (--hero-overlap): the ribbon sits on that strip, never on the product. */
@media (min-width: 992px) {
    .ui-hero {
        --hero-overlap: 64px;
        min-height: calc(100vw * 800 / 1954 + var(--hero-overlap));
        padding: calc(var(--header-h) + 10px) 0 calc(var(--hero-overlap) + 12px);
    }

    .ui-hero .ui-hero__slides {
        bottom: var(--hero-overlap);
    }

    .ui-hero .ui-hero__badge {
        margin-bottom: 14px;
    }

    .ui-hero .ui-hero__title {
        margin-bottom: 14px;
        font-size: clamp(2rem, 1.2rem + 2.4vw, 3.6rem);
    }

    .ui-hero .ui-hero__copy {
        margin-bottom: 20px;
    }

    /* all three slide texts share one grid cell, so the block is as tall as the
       longest one and the band never changes height when the slide changes */
    .ui-hero .ui-hero__text {
        display: grid;
        min-height: 0;
    }

    .ui-hero .ui-hero__slide-copy {
        grid-area: 1 / 1;
        position: relative;
    }

    .ui-hero .ui-hero__nav {
        margin-top: 18px;
    }
}

.ui-hero__slides {
    position: absolute;
    inset: 0;
    z-index: -2;
}

.ui-hero__slides .swiper-slide img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: var(--pos, center);   /* phones: the product's spot, set per slide in index.php */
    transform: scale(1.03);
    transition: transform 7s linear;
}

/* desktop: the banners are wider than the band, so they are pinned to the right edge —
   only the hazy left side (behind the text) is trimmed, never the product. The slow
   zoom also grows from the right so it doesn't push the product out of frame. */
@media (min-width: 992px) {
    .ui-hero__slides .swiper-slide img {
        object-position: right center;
        transform-origin: right center;
    }
}

.ui-hero__slides .swiper-slide-active img {
    transform: scale(1);
}

.ui-hero::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    background:
        linear-gradient(90deg, rgba(20, 21, 24, .86) 0%, rgba(20, 21, 24, .5) 45%, rgba(20, 21, 24, 0) 75%),
        linear-gradient(0deg, rgba(20, 21, 24, .8) 0%, transparent 32%);
}

.ui-hero__inner {
    max-width: 720px;
}

.ui-hero__badge {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 26px;
    padding: 8px 16px 8px 8px;
    border: 1px solid rgba(255, 255, 255, .16);
    border-radius: 999px;
    background: rgba(255, 255, 255, .06);
    font-size: 14px;
    color: #fff;
}

.ui-hero__badge b {
    padding: 4px 10px;
    border-radius: 999px;
    background: var(--c-orange);
    font-family: var(--f-head);
    font-size: 12px;
    letter-spacing: .06em;
    white-space: nowrap;
    flex-shrink: 0;
}

.ui-hero__text {
    position: relative;
    min-height: 330px;
}

.ui-hero__slide-copy {
    position: absolute;
    inset: 0 0 auto;
    opacity: 0;
    visibility: hidden;
    transform: translateY(24px);
    transition: opacity .7s var(--ease), transform .7s var(--ease), visibility .7s;
}

.ui-hero__slide-copy.is-active {
    position: relative;
    opacity: 1;
    visibility: visible;
    transform: none;
}

.ui-hero__title {
    margin: 0 0 22px;
    color: #fff;
    font-size: var(--fs-hero);
    line-height: 1.02;
    letter-spacing: -.035em;
}

.ui-hero__title span {
    display: block;
    color: var(--c-orange);
}

/* the H1/H2 text stays "manufacturer in India" as on the live site; only the
   first letter is shown as a capital */
.ui-hero__title span::first-letter {
    text-transform: uppercase;
}

.ui-hero__copy {
    max-width: 560px;
    margin-bottom: 34px;
    font-size: var(--fs-lead);
    color: var(--c-on-dark);
}

.ui-hero__cta {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
}

.ui-hero__nav {
    display: flex;
    align-items: center;
    gap: 18px;
    margin-top: 46px;
}

.ui-hero__dots {
    display: flex;
    gap: 10px;
}

.ui-hero__dot {
    position: relative;
    width: 54px;
    height: 3px;
    padding: 0;
    border: 0;
    border-radius: 3px;
    background: rgba(255, 255, 255, .22);
    overflow: hidden;
    cursor: pointer;
}

.ui-hero__dot::after {
    content: "";
    position: absolute;
    inset: 0;
    background: var(--c-orange);
    transform: scaleX(0);
    transform-origin: left;
}

.ui-hero__dot.is-active::after {
    animation: ui-dot 6s linear forwards;
}

@keyframes ui-dot {
    to { transform: scaleX(1); }
}

.ui-hero__count {
    font-family: var(--f-head);
    font-size: 14px;
    color: rgba(255, 255, 255, .6);
}

.ui-hero__count b {
    color: #fff;
}

/* scroll cue */
.ui-hero__scroll {
    position: absolute;
    left: 50%;
    bottom: 120px;
    width: 26px;
    height: 42px;
    border: 1.5px solid rgba(255, 255, 255, .4);
    border-radius: 14px;
    transform: translateX(-50%);
    cursor: pointer;
    transition: border-color .3s var(--ease), background .3s var(--ease);
}

.ui-hero__scroll:hover,
.ui-hero__scroll:focus-visible {
    border-color: var(--c-orange);
    background: rgba(var(--c-orange-rgb), .15);
}

.ui-hero__scroll:hover::after,
.ui-hero__scroll:focus-visible::after {
    background: var(--c-orange);
}

.ui-hero__scroll::after {
    content: "";
    position: absolute;
    top: 8px;
    left: 50%;
    width: 3px;
    height: 8px;
    margin-left: -1.5px;
    border-radius: 2px;
    background: #fff;
    animation: ui-scroll 1.8s var(--ease) infinite;
}

@keyframes ui-scroll {
    0% { opacity: 0; transform: translateY(0); }
    30% { opacity: 1; }
    100% { opacity: 0; transform: translateY(12px); }
}

/* --------------------------------------------------------------------------
   8. Stats ribbon (overlaps the hero)
   -------------------------------------------------------------------------- */
/* The ribbon straddles the bottom edge of the hero: exactly half on the banner,
   half below, whatever its height at each screen size. The section takes no
   height of its own; the next section adds room for the lower half. */
.ui-stats {
    position: relative;
    z-index: 3;
    height: 0;
}

.ui-stats > .ui-wrap {
    transform: translateY(-50%);
}

.ui-stats + .ui-section {
    padding-top: calc(var(--sp-section) + 64px);
}

.ui-stats__grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    border-radius: var(--r-lg);
    background: #fff;
    box-shadow: var(--sh-2);
    overflow: hidden;
}

.ui-stat {
    display: flex;
    align-items: center;
    gap: 18px;
    padding: 30px 28px;
}

.ui-stat + .ui-stat {
    border-left: 1px solid var(--c-line);
}

.ui-stat__icon {
    display: grid;
    place-items: center;
    flex: none;
    width: 56px;
    height: 56px;
    border-radius: 16px;
    background: var(--c-orange-soft);
    color: var(--c-orange);
    font-size: 24px;
}

.ui-stat__num {
    display: block;
    color: var(--c-ink);
    font-family: var(--f-head);
    font-size: clamp(1.8rem, 1.3rem + 1.2vw, 2.5rem);
    font-weight: 700;
    line-height: 1;
    letter-spacing: -.03em;
}

.ui-stat__label {
    display: block;
    margin: 6px 0 0;
    font-family: var(--f-body);
    font-weight: 400;
    line-height: 1.5;
    letter-spacing: 0;
    font-size: 14px;
    color: var(--c-muted);
}

/* the ribbon on inner pages, without the hero overlap */
.ui-stats--flat {
    height: auto;
}

.ui-stats--flat > .ui-wrap {
    transform: none;
}

.ui-stats.ui-stats--flat + .ui-section {
    padding-top: var(--sp-section);
}

/* --------------------------------------------------------------------------
   9. Trust strip / marquee
   -------------------------------------------------------------------------- */
.ui-marquee {
    position: relative;
    display: flex;
    overflow: hidden;
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
    mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}

.ui-marquee__track {
    display: flex;
    flex: none;
    align-items: center;
    gap: 56px;
    padding-right: 56px;
    animation: ui-marquee 38s linear infinite;
}

.ui-marquee:hover .ui-marquee__track {
    animation-play-state: paused;
}

@keyframes ui-marquee {
    to { transform: translateX(-100%); }
}

.ui-ticker {
    padding-block: 26px;
    border-block: 1px solid var(--c-line);
    background: var(--c-paper);
}

.ui-ticker__item {
    display: inline-flex;
    align-items: center;
    gap: 14px;
    color: var(--c-ink);
    font-family: var(--f-head);
    font-size: clamp(1.15rem, 1rem + .6vw, 1.6rem);
    font-weight: 600;
    white-space: nowrap;
}

.ui-ticker__item i {
    color: var(--c-orange);
    font-size: .8em;
}

/* the product line: every name is a link to its page */
a.ui-ticker__item {
    transition: color .3s var(--ease);
}

a.ui-ticker__item:hover,
a.ui-ticker__item:focus-visible {
    color: var(--c-orange);
}

/* a longer line than the logo strip, so a slower loop keeps the same reading pace */
.ui-ticker .ui-marquee__track {
    animation-duration: 90s;
}

/* --------------------------------------------------------------------------
   10. About split
   -------------------------------------------------------------------------- */
.ui-split {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: clamp(36px, 6vw, 96px);
    align-items: center;
}

/* in a two-column split the image rides along while the longer text column
   scrolls past, instead of floating mid-way with a gap above it */
.ui-split > .ui-media {
    align-self: start;
    position: sticky;
    top: calc(var(--header-h, 90px) + 32px);
}

.ui-media {
    position: relative;
}

.ui-media__frame {
    position: relative;
    border-radius: var(--r-xl);
    overflow: hidden;
    background-color: var(--c-cream);
    background-position: center;
    background-size: cover;   /* the blurred preview set inline on the page */
    box-shadow: var(--sh-2);
}

.ui-media__frame img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.ui-media::before {
    content: "";
    position: absolute;
    inset: 28px -22px -22px 28px;
    z-index: -1;
    border: 2px solid var(--c-orange);
    border-radius: var(--r-xl);
}

.ui-media__badge {
    position: absolute;
    left: -24px;
    bottom: 36px;
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 18px 22px;
    border-radius: var(--r);
    background: var(--c-ink);
    color: #fff;
    box-shadow: var(--sh-2);
}

.ui-media__badge strong {
    font-family: var(--f-head);
    font-size: 40px;
    line-height: 1;
    color: var(--c-orange);
}

.ui-media__badge > span {
    font-size: 14px;
    line-height: 1.35;
    color: var(--c-on-dark);
}

.ui-checks {
    display: grid;
    gap: 12px;
    margin: 26px 0;
    padding: 0;
    list-style: none;
}

.ui-checks li {
    display: flex;
    align-items: center;
    gap: 12px;
    color: var(--c-ink);
    font-weight: 500;
}

.ui-checks li i {
    display: grid;
    place-items: center;
    flex: none;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--c-orange);
    color: #fff;
    font-size: 12px;
}

.ui-callout {
    display: flex;
    align-items: center;
    gap: 18px;
    margin: 0 0 26px;
    padding: 20px 22px;
    border: 1px solid var(--c-line);
    border-radius: var(--r);
    background: var(--c-cream);
}

.ui-callout__num {
    font-family: var(--f-head);
    font-size: 34px;
    font-weight: 700;
    line-height: 1;
    color: var(--c-ink);
}

.ui-callout i {
    color: var(--c-orange);
    font-size: 30px;
}

/* About: tick list beside a figure card (icon left, number and label right) */
.ui-facts {
    display: flex;
    align-items: stretch;
    gap: 20px;
    margin: 26px 0;
}

.ui-facts .ui-checks {
    flex: 1 1 auto;
    align-content: center;
    margin: 0;
}

.ui-callout--stack {
    flex: 0 0 186px;
    justify-content: center;
    gap: 12px;
    margin: 0;
    padding: 18px 16px;
}

.ui-callout--stack i {
    display: grid;
    place-items: center;
    flex: none;
    width: 48px;
    height: 48px;
    border-radius: 14px;
    background: rgba(var(--c-orange-rgb), .12);
    font-size: 24px;
}

/* too narrow for both side by side below 1280px: the card moves under the list */
@media (max-width: 1279px) {
    .ui-facts {
        flex-direction: column;
    }

    .ui-callout--stack {
        flex-basis: auto;
        justify-content: flex-start;
    }
}

.ui-callout--stack p {
    font-size: 14px;
    line-height: 1.3;
}

.ui-quote-text {
    padding-left: 18px;
    border-left: 3px solid var(--c-orange);
    font-size: var(--fs-lead);
    color: var(--c-ink);
}

/* --------------------------------------------------------------------------
   11. Product cards
   -------------------------------------------------------------------------- */
.ui-products {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 20px;
}

/* homepage product range: one block per category, each with the standard
   section head (.ui-head__row) */
.ui-pgroup + .ui-pgroup {
    margin-top: clamp(56px, 6vw, 88px);
}

/* three across, so 9 toilets and 6 cabins fill whole rows */
.ui-pgroup .ui-products {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.ui-product {
    position: relative;
    display: flex;
    flex-direction: column;
    border: 1px solid var(--c-line);
    border-radius: var(--r-lg);
    background: #fff;
    overflow: hidden;
    transition: transform .5s var(--ease), box-shadow .5s var(--ease), border-color .5s var(--ease);
}

.ui-product__img {
    position: relative;
    display: grid;
    place-items: center;
    aspect-ratio: 1 / 1;
    padding: 22px;
    /* soft cream-white studio backdrop behind the product cut-outs */
    background: radial-gradient(ellipse at 50% 42%, #fff 0%, #fbf8f4 45%, #f1ebe2 100%);
    overflow: hidden;
}

.ui-product__img img {
    position: relative;
    z-index: 1;
    max-height: 100%;
    width: auto;
    object-fit: contain;
    /* images saved on a white box blend into the backdrop instead of showing a square */
    mix-blend-mode: multiply;
    transition: transform .7s var(--ease);
}

.ui-product__icon {
    position: absolute;
    z-index: 2;
    top: 14px;
    left: 14px;
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    border-radius: 12px;
    background: #fff;
    color: var(--c-orange);
    font-size: 18px;
    box-shadow: var(--sh-1);
}

.ui-product__body {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 18px 20px;
    border-top: 1px solid var(--c-line);
}

.ui-product__name {
    margin: 0;
    font-size: 17px;
    font-weight: 600;
    letter-spacing: -.01em;
}

.ui-product__name a::after {
    content: "";
    position: absolute;
    inset: 0;
}

.ui-product__arrow {
    display: grid;
    place-items: center;
    flex: none;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: var(--c-cream);
    color: var(--c-ink);
    transition: background .4s var(--ease), color .4s var(--ease), transform .4s var(--ease);
}

.ui-product:hover {
    transform: translateY(-6px);
    border-color: rgba(var(--c-orange-rgb), .5);
    box-shadow: var(--sh-2);
}

.ui-product:hover .ui-product__img img {
    transform: scale(1.07);
}

.ui-product:hover .ui-product__arrow {
    background: var(--c-orange);
    color: #fff;
    transform: rotate(-45deg);
}

.ui-product:hover .ui-product__name a {
    color: var(--c-orange);
}

/* --------------------------------------------------------------------------
   12. Certifications band
   -------------------------------------------------------------------------- */
.ui-cert {
    display: grid;
    grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr);
    gap: clamp(36px, 6vw, 96px);
    align-items: center;
}

.ui-badges {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
    margin-top: 34px;
}

.ui-badge {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    padding: 20px 16px 22px;
    text-align: center;
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: var(--r);
    background: rgba(255, 255, 255, .04);
    color: #fff;
    font-family: var(--f-head);
    font-weight: 600;
    line-height: 1.3;
    transition: border-color .4s var(--ease), background .4s var(--ease);
}

.ui-badge:hover {
    border-color: rgba(var(--c-orange-rgb), .6);
    background: rgba(var(--c-orange-rgb), .08);
}

/* every mark sits on the same white tile, so icon and logos line up */
.ui-badge__mark {
    --tile-h: 84px;
    display: grid;
    place-items: center;
    width: 100%;
    max-width: 190px;
    height: var(--tile-h);
    padding: 10px 14px;
    border-radius: 12px;
    background: #fff;
}

.ui-badge__mark i {
    font-size: 44px;
    color: var(--c-orange);
}

.ui-badge__mark img {
    max-width: 100%;
    max-height: calc(var(--tile-h) - 20px);   /* tile height minus its padding */
    width: auto;
    height: auto;
}

.ui-badge > span:last-child {
    font-size: 15px;
}

.ui-cert__doc {
    position: relative;
    padding: 14px;
    border-radius: var(--r-lg);
    background: #fff;
    box-shadow: 0 50px 90px -40px rgba(0, 0, 0, .8);
    transform: rotate(2deg);
    transition: transform .6s var(--ease);
}

.ui-cert__doc:hover {
    transform: rotate(0) scale(1.02);
}

.ui-cert__doc img {
    display: block;
    width: 100%;
    border-radius: 12px;
}

/* --------------------------------------------------------------------------
   13. Feature list (numbered)
   -------------------------------------------------------------------------- */
.ui-features {
    display: grid;
    gap: 14px;
    counter-reset: feat;
}

.ui-feature {
    display: grid;
    grid-template-columns: auto auto minmax(0, 1fr);
    align-items: start;
    gap: 18px;
    padding: 22px;
    border: 1px solid var(--c-line);
    border-radius: var(--r);
    background: #fff;
    counter-increment: feat;
    transition: border-color .4s var(--ease), box-shadow .4s var(--ease), transform .4s var(--ease);
}

.ui-feature::before {
    content: "0" counter(feat);
    padding-top: 6px;
    font-family: var(--f-head);
    font-size: 13px;
    font-weight: 700;
    color: var(--c-muted);
}

.ui-feature > i {
    display: grid;
    place-items: center;
    width: 48px;
    height: 48px;
    border-radius: 14px;
    background: var(--c-orange-soft);
    color: var(--c-orange);
    font-size: 21px;
}

.ui-feature h4,
.ui-feature h3,
.ui-feature h6 {
    margin: 4px 0 4px;
    font-size: var(--fs-h4);
}

.ui-feature p {
    margin: 0;
    font-size: 15px;
}

.ui-feature:hover {
    border-color: rgba(var(--c-orange-rgb), .45);
    box-shadow: var(--sh-1);
    transform: translateX(6px);
}

.ui-photo {
    border-radius: var(--r-xl);
    overflow: hidden;
    box-shadow: var(--sh-2);
}

.ui-photo img {
    display: block;
    width: 100%;
}

/* --------------------------------------------------------------------------
   14. Cards (expertise, why, steps)
   -------------------------------------------------------------------------- */
.ui-cards {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 20px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.ui-card {
    position: relative;
    display: flex;
    flex-direction: column;
    height: 100%;
    padding: clamp(24px, 2.6vw, 36px);
    border: 1px solid var(--c-line);
    border-radius: var(--r-lg);
    background: #fff;
    overflow: hidden;
    transition: transform .5s var(--ease), box-shadow .5s var(--ease), border-color .5s var(--ease);
}

.ui-card::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 3px;
    background: var(--c-orange);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform .5s var(--ease);
}

.ui-card:hover {
    transform: translateY(-6px);
    border-color: transparent;
    box-shadow: var(--sh-2);
}

.ui-card:hover::after {
    transform: scaleX(1);
}

.ui-card__icon {
    display: grid;
    place-items: center;
    width: 64px;
    height: 64px;
    margin-bottom: 22px;
    border-radius: 18px;
    background: var(--c-orange-soft);
    color: var(--c-orange);
    font-size: 28px;
    transition: background .4s var(--ease), color .4s var(--ease), transform .5s var(--ease);
}

.ui-card:hover .ui-card__icon {
    background: var(--c-orange);
    color: #fff;
    transform: rotate(-8deg);
}

.ui-card h4,
.ui-card h3,
.ui-card h5,
.ui-card h6,
.ui-card .ui-card__title {
    margin-bottom: 10px;
    font-size: var(--fs-h4);
}

.ui-card p {
    flex: 1 1 auto;
    margin-bottom: 18px;
    font-size: 15px;
}

.ui-card--row {
    flex-direction: row;
    gap: 18px;
    align-items: flex-start;
}

.ui-card--row .ui-card__icon {
    flex: none;
    width: 52px;
    height: 52px;
    margin: 0;
    font-size: 22px;
}

.ui-card--row p {
    margin: 0;
}

/* how it works */
.ui-steps {
    position: relative;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 20px;
    margin: 0;
    padding: 0;
    list-style: none;
    counter-reset: step;
}

.ui-steps::before {
    content: "";
    position: absolute;
    top: 33px;
    left: 8%;
    right: 8%;
    height: 2px;
    background: repeating-linear-gradient(90deg, rgba(255, 255, 255, .25) 0 8px, transparent 8px 16px);
}

.ui-step {
    position: relative;
    counter-increment: step;
    text-align: center;
}

.ui-step__num {
    position: relative;
    display: grid;
    place-items: center;
    width: 68px;
    height: 68px;
    margin: 0 auto 22px;
    border: 1.5px solid rgba(var(--c-orange-rgb), .6);
    border-radius: 50%;
    background: var(--c-ink);
    color: var(--c-orange);
    font-size: 24px;
    transition: background .4s var(--ease), color .4s var(--ease);
}

.ui-step:hover .ui-step__num {
    background: var(--c-orange);
    color: #fff;
}

.ui-step__num::after {
    content: "0" counter(step);
    position: absolute;
    top: -6px;
    right: -8px;
    padding: 2px 7px;
    border-radius: 999px;
    background: var(--c-orange);
    color: #fff;
    font-family: var(--f-head);
    font-size: 11px;
    font-weight: 700;
}

.ui-step h3 {
    margin-bottom: 8px;
    font-size: var(--fs-h4);
}

.ui-step p {
    margin: 0 auto;
    max-width: 260px;
    font-size: 15px;
}

/* --------------------------------------------------------------------------
   15. Clients band
   -------------------------------------------------------------------------- */
.ui-clients {
    position: relative;
    padding: clamp(36px, 5vw, 64px);
    border-radius: var(--r-xl);
    background: linear-gradient(135deg, var(--c-orange) 0%, #d96f17 100%);
    color: rgba(255, 255, 255, .9);
    overflow: hidden;
}

.ui-clients::before {
    content: "";
    position: absolute;
    right: -120px;
    top: -120px;
    width: 380px;
    height: 380px;
    border-radius: 50%;
    border: 60px solid rgba(255, 255, 255, .08);
}

.ui-clients h2, .ui-clients h3, .ui-clients .ui-hd {
    color: #fff;
}

.ui-clients .ui-eyebrow {
    color: #fff;
}

.ui-clients__logos {
    margin-top: 36px;
}

.ui-clients__logos .ui-marquee__track {
    gap: 18px;
    padding-right: 18px;
    animation-duration: 26s;
}

.ui-logo {
    display: grid;
    place-items: center;
    width: 220px;
    height: 112px;
    padding: 18px 28px;
    border-radius: var(--r);
    background: #fff;
}

.ui-logo img {
    max-height: 64px;
    width: auto;
    object-fit: contain;
}

/* --------------------------------------------------------------------------
   16. Blog cards
   -------------------------------------------------------------------------- */
.ui-posts {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 24px;
}

.ui-post {
    position: relative;
    display: flex;
    flex-direction: column;
    border-radius: var(--r-lg);
    background: #fff;
    border: 1px solid var(--c-line);
    overflow: hidden;
    transition: transform .5s var(--ease), box-shadow .5s var(--ease);
}

.ui-post__img {
    aspect-ratio: 16 / 9;
    overflow: hidden;
}

.ui-post__img img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .8s var(--ease);
}

.ui-post__body {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    gap: 14px;
    padding: 22px 24px 24px;
}

.ui-post__title {
    margin: 0;
    font-size: 18px;
    font-weight: 600;
    line-height: 1.4;
}

.ui-post__title a::after {
    content: "";
    position: absolute;
    inset: 0;
}

.ui-post__more {
    margin-top: auto;
}

.ui-post:hover {
    transform: translateY(-6px);
    box-shadow: var(--sh-2);
}

.ui-post:hover .ui-post__img img {
    transform: scale(1.06);
}

.ui-post:hover .ui-post__title a {
    color: var(--c-orange);
}

/* --------------------------------------------------------------------------
   17. Testimonials
   -------------------------------------------------------------------------- */
.ui-reviews {
    display: grid;
    grid-template-columns: minmax(0, 4fr) minmax(0, 8fr);
    gap: 24px;
    align-items: stretch;
}

.ui-gcard {
    display: flex;
    flex-direction: column;
    gap: 20px;
    padding: 30px;
    border-radius: var(--r-lg);
    background: var(--c-ink);
    color: var(--c-on-dark);
    overflow: hidden;
    position: relative;
}

.ui-gcard:hover {
    color: var(--c-on-dark);
}

.ui-gcard__head {
    display: flex;
    align-items: center;
    gap: 14px;
}

.ui-gcard__head svg {
    flex: none;
    width: 44px;
    height: 44px;
    padding: 8px;
    border-radius: 12px;
    background: #fff;
}

.ui-gcard__title {
    display: block;
    color: #fff;
    font-family: var(--f-head);
    font-size: 19px;
    font-weight: 600;
}

.ui-gcard__score {
    display: flex;
    align-items: center;
    gap: 16px;
    padding-top: 20px;
    border-top: 1px solid rgba(255, 255, 255, .12);
}

.ui-gcard__score strong {
    color: #fff;
    font-family: var(--f-head);
    font-size: 56px;
    line-height: 1;
}

.ui-stars {
    display: flex;
    gap: 3px;
    color: #fbbc04;
    font-size: 15px;
}

.ui-gcard__cta {
    margin-top: auto;
    color: var(--c-orange);
    font-family: var(--f-head);
    font-weight: 600;
}

.ui-review {
    display: flex;
    flex-direction: column;
    height: 100%;
    padding: 30px;
    border: 1px solid var(--c-line);
    border-radius: var(--r-lg);
    background: #fff;
}

.ui-review__top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 16px;
}

.ui-review__top svg {
    width: 24px;
    height: 24px;
}

.ui-review__text {
    flex: 1 1 auto;
    margin: 0 0 22px;
    color: var(--c-ink);
    font-family: var(--f-head);
    font-size: 19px;
    font-weight: 500;
    line-height: 1.5;
}

.ui-review__who {
    display: flex;
    align-items: center;
    gap: 12px;
    padding-top: 18px;
    border-top: 1px solid var(--c-line);
}

.ui-review__avatar {
    display: grid;
    place-items: center;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: var(--c-orange-soft);
    color: var(--c-orange);
    font-family: var(--f-head);
    font-weight: 700;
}

.ui-review__name {
    margin: 0;
    font-size: 16px;
}

.ui-review__via {
    display: block;
    font-size: 13px;
    color: var(--c-muted);
}

/* Swiper inside a grid cell: without an explicit width the slider sizes itself
   to its own track of slides and pushes the page sideways */
.ui-reviews > * {
    min-width: 0;
}

.ui-reviews .swiper {
    width: 100%;
    max-width: 100%;
    height: 100%;
}

.ui-reviews .swiper-slide {
    height: auto;
}

.ui-slider-nav {
    display: flex;
    gap: 10px;
    margin-top: 18px;
}

.ui-slider-nav button {
    display: grid;
    place-items: center;
    width: 46px;
    height: 46px;
    border: 1px solid var(--c-line);
    border-radius: 50%;
    background: #fff;
    color: var(--c-ink);
    transition: background .3s var(--ease), color .3s var(--ease), border-color .3s var(--ease);
}

.ui-slider-nav button:hover {
    background: var(--c-orange);
    border-color: var(--c-orange);
    color: #fff;
}

/* --------------------------------------------------------------------------
   18. Contact + forms
   -------------------------------------------------------------------------- */
.ui-contact {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: clamp(32px, 5vw, 72px);
    align-items: stretch;   /* both columns as tall as the taller one (the form) */
}

/* text column: the contact cards grow to fill the space under the intro, so their
   bottom edge lines up with the form card */
.ui-contact > :first-child {
    display: flex;
    flex-direction: column;
}

.ui-contact__list {
    flex: 1 1 auto;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-auto-rows: 1fr;
    gap: 14px;
    margin-top: 30px;
}

.ui-contact__item {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 18px;
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: var(--r);
    background: rgba(255, 255, 255, .04);
    color: #fff;
    font-family: var(--f-head);
    font-weight: 500;
    line-height: 1.45;
    transition: border-color .3s var(--ease), background .3s var(--ease);
}

.ui-contact__item:hover {
    border-color: rgba(var(--c-orange-rgb), .6);
    background: rgba(var(--c-orange-rgb), .08);
    color: #fff;
}

.ui-contact__item--wide {
    grid-column: 1 / -1;
}

.ui-contact__item i {
    display: grid;
    place-items: center;
    flex: none;
    width: 44px;
    height: 44px;
    border-radius: 12px;
    background: var(--c-orange);
    color: #fff;
}

/* always a white card, so its text stays dark even inside a dark section */
.ui-formcard {
    padding: clamp(24px, 3vw, 40px);
    border-radius: var(--r-xl);
    background: #fff;
    color: var(--c-text);
    box-shadow: var(--sh-2);
}

.ui-formcard__title {
    margin-bottom: 22px;
    font-family: var(--f-head);
    font-size: var(--fs-h3);
    font-weight: 700;
    line-height: 1.15;
    color: var(--c-ink);
}

.ui-form {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
}

.ui-form .ui-field--full {
    grid-column: 1 / -1;
}

.ui-field input,
.ui-field select,
.ui-field textarea {
    width: 100%;
    padding: 15px 18px;
    border: 1.5px solid var(--c-line);
    border-radius: 14px;
    background: var(--c-cream);
    color: var(--c-ink);
    font: inherit;
    font-size: 15px;
    transition: border-color .3s var(--ease), background .3s var(--ease), box-shadow .3s var(--ease);
}

.ui-field textarea {
    min-height: 120px;
    resize: vertical;
}

.ui-field select {
    appearance: none;
    padding-right: 42px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%23141518' d='M6 8 0 0h12z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 18px center;
}

.ui-field input:focus,
.ui-field select:focus,
.ui-field textarea:focus {
    outline: none;
    border-color: var(--c-orange);
    background-color: #fff;
    box-shadow: 0 0 0 4px rgba(var(--c-orange-rgb), .15);
}

.ui-field .iti {
    width: 100%;
}

/* --------------------------------------------------------------------------
   19. Outlet finder band (components/select-city.php)
   -------------------------------------------------------------------------- */
.select-cities {
    position: relative;
    padding-block: 46px;
    background: var(--c-orange);
    color: #fff;
}

/* same width and side gutters as .ui-wrap, so the band lines up with the page */
.select-cities > .container {
    max-width: 1280px;
    padding-inline: clamp(16px, 4vw, 32px);
}

.select-cities__title {
    margin: 0;
    color: #fff;
    font-size: clamp(1.4rem, 1.1rem + 1vw, 2rem);
    line-height: 1.2;
}

.select-cities .form-control {
    height: 54px;
    padding: 0 18px;
    border: 0;
    border-radius: 14px;
    background-color: #fff;
    color: var(--c-ink);
    font-size: 15px;
}

.select-cities .ht-btn {
    background: var(--c-ink);
    color: #fff;
    font-family: var(--f-head);
    font-weight: 600;
    transition: background .3s var(--ease);
}

.select-cities .ht-btn:hover {
    background: #000;
}

.select-cities select.form-control {
    padding-right: 44px;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%23141518' d='M6 8 0 0h12z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 18px center;
    cursor: pointer;
}

/* the city list stays locked until a state is picked */
.select-cities .form-control:disabled {
    background-color: rgba(255, 255, 255, .8);
    color: var(--c-muted, #6b6e75);
    cursor: not-allowed;
}

.select-cities .form-control:focus {
    outline: none;
    box-shadow: 0 0 0 4px rgba(20, 21, 24, .2);
}

/* stacked below 992px: centred title with room before the fields */
@media (max-width: 991px) {
    .select-cities {
        padding-block: 40px;
    }

    .select-cities__title {
        margin-bottom: 22px;
        text-align: center;
    }
}

@media (max-width: 575px) {
    .select-cities {
        padding-block: 34px;
    }

    .select-cities__title {
        margin-bottom: 18px;
    }

    .select-cities .form-control {
        height: 50px;
    }

    .select-cities .row.g-3 {
        --bs-gutter-y: 12px;
    }
}

/* --------------------------------------------------------------------------
   20. Footer
   -------------------------------------------------------------------------- */
.ui-footer {
    position: relative;
    background: var(--c-ink);
    color: var(--c-on-dark);
    overflow: hidden;
}

.ui-footer__grid {
    display: grid;
    grid-template-columns: 1.2fr .75fr 1.6fr 1.25fr;
    gap: 30px;
    padding-block: clamp(48px, 6vw, 40px);
}

.ui-footer__logo {
    display: block;
    width: 100%;
    margin-bottom: 20px;
}

.ui-footer__title {
    margin-bottom: 20px;
    color: #fff;
    font-size: 17px;
    letter-spacing: 0;
}

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

.ui-footer__links li + li {
    margin-top: 10px;
}

.ui-footer__links a {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--c-on-dark);
    transition: color .3s var(--ease), transform .3s var(--ease);
}

.ui-footer__links a:hover {
    color: var(--c-orange);
    transform: translateX(4px);
}

.ui-footer__links a:has(> i) {
    align-items: baseline;   /* arrow sits on the first line, on the text baseline */
}

.ui-footer__links a > i {
    flex: none;
    width: 10px;
    color: var(--c-orange);
    font-size: 13px;
}

.ui-footer__links--two {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px 18px;
}

.ui-footer__links--two li + li {
    margin-top: 0;
}

.ui-footer__contact li {
    display: flex;
    gap: 12px;
    align-items: flex-start;
}

.ui-footer__contact li i {
    margin-top: 5px;
    color: var(--c-orange);
}

.ui-social {
    display: flex;
    gap: 10px;
    margin-top: 22px;
}

.ui-social a {
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    border: 1px solid rgba(255, 255, 255, .16);
    border-radius: 50%;
    color: #fff;
    transition: background .3s var(--ease), border-color .3s var(--ease);
}

.ui-social a:hover {
    background: var(--c-orange);
    border-color: var(--c-orange);
    color: #fff;
}

.ui-footer__bottom {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 14px;
    padding-block: 24px;
    border-top: 1px solid rgba(255, 255, 255, .1);
    font-size: 14px;
}

.ui-footer__bottom p {
    margin: 0;
}

.ui-footer__bottom a {
    color: #fff;
}

.ui-footer__bottom ul {
    display: flex;
    gap: 22px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.ui-footer__word {
    display: block;
    margin: 0 0 -0.18em;
    color: rgba(255, 255, 255, .04);
    font-family: var(--f-head);
    font-size: clamp(4rem, 15vw, 15rem);
    font-weight: 700;
    line-height: .8;
    letter-spacing: -.05em;
    text-align: center;
    white-space: nowrap;
    user-select: none;
    pointer-events: none;
}

/* --------------------------------------------------------------------------
   21. Motion start states (only under html.js-motion — see si-motion.js)
   -------------------------------------------------------------------------- */
.js-motion [data-anim="fade-up"],
.js-motion [data-anim-item] {
    opacity: 0;
    transform: translateY(40px);
}

.js-motion [data-anim="fade-in"] {
    opacity: 0;
}

.js-motion [data-anim="reveal"] {
    clip-path: inset(0 0 100% 0 round var(--r-xl));
}

.js-motion [data-anim="split"] {
    opacity: 0;
}

.js-motion [data-anim="zoom"] {
    opacity: 0;
    transform: scale(.94);
}

/* reading progress bar (blog articles) */
.ui-progress {
    position: fixed;
    inset: 0 0 auto;
    z-index: 1001;
    height: 3px;
    background: var(--c-orange);
    transform: scaleX(0);
    transform-origin: left;
}

/* magnetic buttons need a transform origin that doesn't fight the hover wipe */
[data-magnetic] {
    will-change: transform;
}

/* --------------------------------------------------------------------------
   22. Responsive
   -------------------------------------------------------------------------- */
/* 1200-1299px: the 200px logo and the full menu still share one bar */
@media (max-width: 1299px) {
    .ui-header__bar {
        padding-left: 16px;
    }

    .ui-nav > li > a {
        padding-inline: 6px;
        font-size: 14px;
    }
}

@media (max-width: 1199px) {

    .ui-nav > li > a {
        padding-inline: 10px;
        font-size: 14px;
    }

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

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

/* the eight menu items need about 1200px; below that the burger takes over */
@media (max-width: 1199px) {
    .ui-nav,
    .ui-header__call {
        display: none;
    }

    .ui-burger {
        display: grid;
    }

    .ui-header__actions {
        margin-left: auto;
    }
}

@media (max-width: 991px) {
    :root {
        --header-h: 74px;
    }

    .ui-split > .ui-media {
        position: relative;
        top: auto;
    }

    .ui-header__actions .ui-btn {
        display: none;
    }

    .ui-header__bar {
        min-height: 60px;
        padding: 8px 8px 8px 18px;
    }

    .ui-header__logo {
        width: 225px;
    }

    .ui-hero {
        min-height: auto;
        padding-bottom: 210px;
    }

    .ui-split,
    .ui-cert,
    .ui-contact,
    .ui-reviews {
        grid-template-columns: minmax(0, 1fr);
    }

    /* stacked: nothing to line up with, so the contact cards keep their own height */
    .ui-contact__list {
        grid-auto-rows: auto;
    }

    .ui-hero__scroll {
        display: none;
    }

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

    /* two rows now, so the lower half is taller */
    .ui-stats + .ui-section {
        padding-top: calc(var(--sp-section) + 165px);
    }

    .ui-stat:nth-child(3) {
        border-left: 0;
    }

    .ui-stat:nth-child(n+3) {
        border-top: 1px solid var(--c-line);
    }

    .ui-cards,
    .ui-posts {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .ui-steps {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        row-gap: 40px;
    }

    .ui-steps::before {
        display: none;
    }

    .ui-media {
        max-width: 640px;
    }
}

@media (max-width: 767px) {
    body {
        font-size: 15.5px;
    }

    .ui-products,
    .ui-pgroup .ui-products {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 12px;
    }

    .ui-product__img {
        padding: 14px;
    }

    .ui-product__body {
        padding: 14px;
    }

    .ui-product__name {
        font-size: 15px;
    }

    .ui-product__arrow {
        width: 32px;
        height: 32px;
    }

    .ui-product__icon {
        width: 34px;
        height: 34px;
        font-size: 15px;
    }

    .ui-cards,
    .ui-posts,
    .ui-badges,
    .ui-contact__list,
    .ui-form {
        grid-template-columns: minmax(0, 1fr);
    }

    /* a full-width card has room for a larger tile */
    .ui-badge__mark {
        --tile-h: 100px;
        max-width: 240px;
    }

    .ui-stat {
        flex-direction: column;
        align-items: flex-start;
        gap: 12px;
        padding: 22px 18px;
    }

    .ui-stat__icon {
        width: 46px;
        height: 46px;
        font-size: 20px;
    }

    .ui-media::before {
        inset: 18px -10px -10px 18px;
    }

    .ui-media__badge {
        left: 12px;
        bottom: 12px;
        padding: 14px 16px;
    }

    .ui-media__badge strong {
        font-size: 30px;
    }

    .ui-feature {
        grid-template-columns: auto minmax(0, 1fr);
    }

    .ui-feature::before {
        display: none;
    }

    .ui-feature:hover {
        transform: none;
    }

    .ui-footer__grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .ui-footer__bottom {
        flex-direction: column;
    }

    .ui-hero__text {
        min-height: 360px;
    }

    /* text spans the full width on phones, so the shade is even instead of left-heavy */
    .ui-hero::after {
        background: linear-gradient(180deg, rgba(20, 21, 24, .5) 0%, rgba(20, 21, 24, .62) 55%, rgba(20, 21, 24, .85) 100%);
    }
}

@media (max-width: 575px) {
    /* hero badge: compact so it stays one line on phones (about 340px wide);
       on the narrowest phones it may still wrap, so it is a rounded box, not a pill */
    .ui-hero__badge {
        gap: 8px;
        max-width: 100%;
        padding: 6px 12px 6px 6px;
        border-radius: 16px;
        font-size: 12px;
        line-height: 1.35;
    }

    .ui-hero__badge b {
        padding: 4px 8px;
        font-size: 10.5px;
        letter-spacing: .04em;
    }
}

/* 360-389px phones: a touch smaller still, so the badge keeps to one line and
   the longest section heading keeps to two */
@media (max-width: 389px) {
    .ui-title {
        font-size: 22px;
    }

    .ui-hero__title {
        font-size: 30px;
    }

    .ui-hero__badge {
        gap: 6px;
        padding-right: 10px;
        font-size: 11px;
    }

    .ui-hero__badge b {
        padding: 3px 7px;
        font-size: 10px;
        letter-spacing: .02em;
    }
}

@media (max-width: 575px) {
    .ui-steps {
        grid-template-columns: minmax(0, 1fr);
    }

    .ui-hero__cta .ui-btn {
        flex: 1 1 auto;
    }

    .ui-logo {
        width: 170px;
        height: 92px;
    }
}

/* --------------------------------------------------------------------------
   23. Reduced motion
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: .001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .001ms !important;
    }

    .ui-hero__slides .swiper-slide img {
        transform: none;
    }
}

/* --------------------------------------------------------------------------
   24. Mobile navigation drawer — ported unchanged from the previous
   stylesheet; it reads the alias tokens defined in section 1.
   -------------------------------------------------------------------------- */
.mnav {
    position: fixed;
    inset: 0;
    z-index: 1200;
}

.mnav[hidden] {
    display: none;
}

/* The quick-connect stack sits at z-index 9998 and the back-to-top rail floats
   too, so both would ride over the open drawer. The drawer's JS puts
   .mnav-open on <html> while it is up; raising the drawer past 9998 instead
   would only leave them showing through the scrim. */
.mnav-open .cn-cb-fab-stack,
.mnav-open .scroll-to-top {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

.mnav-scrim {
    position: absolute;
    inset: 0;
    background: rgba(var(--blue-rgb), .6);
    opacity: 0;
    transition: opacity .3s ease;
}

.mnav.is-open .mnav-scrim {
    opacity: 1;
}

.mnav-panel {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    width: min(86vw, 380px);
    display: flex;
    flex-direction: column;
    background: #fff;
    box-shadow: -14px 0 40px rgba(var(--blue-rgb), .28);
    transform: translateX(100%);
    transition: transform .32s cubic-bezier(.4, 0, .2, 1);
}

.mnav.is-open .mnav-panel {
    transform: translateX(0);
}

/* ---- head ---------------------------------------------------------------- */
.mnav-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex: 0 0 auto;
    padding: 14px 14px 13px 18px;
    border-bottom: 1px solid #eceff3;
    background: #fff;
}

.mnav-logo {
    display: block;
    line-height: 0;
}

.mnav-logo img {
    display: block;
    width: auto;
    height: 38px;
}

.mnav-x {
    position: relative;
    flex: 0 0 38px;
    width: 38px;
    height: 38px;
    padding: 0;
    border: 1px solid #e4e7ec;
    border-radius: 9px;
    background: #f7f8fa;
    cursor: pointer;
}

/* Two bars rather than an icon-font glyph — a close button that fails to
   render would trap the visitor inside the drawer. */
.mnav-x span {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 15px;
    height: 2px;
    margin: -1px 0 0 -7.5px;
    border-radius: 1px;
    background: var(--blue);
}

.mnav-x span:first-child {
    transform: rotate(45deg);
}

.mnav-x span:last-child {
    transform: rotate(-45deg);
}

/* ---- tabs ---------------------------------------------------------------- */
.mnav-tabs {
    display: flex;
    flex: 0 0 auto;
    border-bottom: 1px solid #eceff3;
    background: #f7f8fa;
}

.mnav-tab {
    flex: 1 1 0;
    padding: 13px 6px;
    border: 0;
    border-bottom: 2px solid transparent;
    background: transparent;
    font-family: var(--primary-font);
    font-size: 12.5px;
    font-weight: 700;
    letter-spacing: .7px;
    text-transform: uppercase;
    color: #6b7280;
    cursor: pointer;
    transition: color .2s ease, border-color .2s ease, background .2s ease;
}

.mnav-tab.is-on {
    color: var(--orange);
    border-bottom-color: var(--orange);
    background: #fff;
}

/* ---- panes --------------------------------------------------------------- */
.mnav-body {
    flex: 1 1 auto;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
}

.mnav-pane {
    display: none;
}

.mnav-pane.is-on {
    display: block;
}

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

.mnav-list li {
    margin: 0;
}

.mnav-list > li > a,
.mnav-cat {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    width: 100%;
    padding: 14px 18px;
    border: 0;
    border-bottom: 1px solid #f0f2f5;
    background: transparent;
    font-family: var(--primary-font);
    font-size: 14px;
    font-weight: 600;
    line-height: 1.45;
    text-align: left;
    color: var(--blue);
    text-decoration: none;
    cursor: pointer;
}

.mnav-list > li > a:hover,
.mnav-list > li > a:focus,
.mnav-cat:hover {
    background: rgba(var(--orange-rgb), .07);
    color: var(--orange);
}

.mnav-list > li > a.is-active {
    color: var(--orange);
    box-shadow: inset 3px 0 0 var(--orange);
    background: rgba(var(--orange-rgb), .07);
}

/* The chevron is drawn, for the same reason the close button is. */
.mnav-cat > i {
    flex: 0 0 auto;
    width: 7px;
    height: 7px;
    border-top: 2px solid #b0b6bf;
    border-right: 2px solid #b0b6bf;
    transform: rotate(45deg);
}

.mnav-cat:hover > i {
    border-color: var(--orange);
}

/* Products tab: icon tile + label (redesigned pages; see components/mobile-nav.php) */
.mnav-txt {
    flex: 1 1 auto;
    min-width: 0;
}

.mnav-ico {
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 34px;
    height: 34px;
    border-radius: 10px;
    background: rgba(var(--orange-rgb), .1);
    color: var(--orange);
    font-size: 16px;
    transition: background .25s ease, color .25s ease;
}

.mnav-list > li > a:hover .mnav-ico,
.mnav-list > li > a.is-active .mnav-ico,
.mnav-cat:hover .mnav-ico {
    background: var(--orange);
    color: #fff;
}

.mnav-list > li > a:has(.mnav-ico),
.mnav-cat:has(.mnav-ico) {
    padding-block: 10px;
}

/* ---- level 2 ------------------------------------------------------------- */
.mnav-sub {
    position: absolute;
    inset: 0;
    z-index: 2;
    display: flex;
    flex-direction: column;
    background: #fff;
    transform: translateX(100%);
    transition: transform .32s cubic-bezier(.4, 0, .2, 1);
}

.mnav-sub[hidden] {
    display: none;
}

.mnav-sub.is-on {
    transform: translateX(0);
}

.mnav-back {
    display: flex;
    align-items: center;
    gap: 10px;
    flex: 1 1 auto;
    min-width: 0;
    padding: 0;
    border: 0;
    background: transparent;
    font-family: var(--primary-font);
    font-size: 14px;
    font-weight: 700;
    color: var(--blue);
    text-align: left;
    cursor: pointer;
}

.mnav-back i {
    flex: 0 0 auto;
    width: 8px;
    height: 8px;
    border-left: 2px solid var(--orange);
    border-bottom: 2px solid var(--orange);
    transform: rotate(45deg);
}

.mnav-back span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mnav-sub .mnav-list > li > a {
    font-weight: 500;
    font-size: 13.5px;
}

.mnav-all {
    display: block;
    margin: 16px 18px 24px;
    padding: 12px 16px;
    border-radius: 9px;
    background: var(--orange);
    font-family: var(--primary-font);
    font-size: 13px;
    font-weight: 700;
    text-align: center;
    color: #fff;
    text-decoration: none;
}

.mnav-all:hover {
    background: var(--orange-dark);
    color: #fff;
}

/* ---- contact tab --------------------------------------------------------- */
.mnav-contact {
    padding: 18px;
}

/* Named one by one rather than as `.mnav-contact > a` — that would also catch
   the CTA below and lay its label out as a flex row, off to the left. */
.mnav-phone,
.mnav-wa,
.mnav-mail,
.mnav-addr {
    display: flex;
    align-items: flex-start;
    gap: 11px;
    margin: 0 0 14px;
    font-size: 13.5px;
    line-height: 1.6;
    color: #5b6472;
    text-decoration: none;
}

.mnav-phone:hover,
.mnav-wa:hover,
.mnav-mail:hover,
.mnav-addr:hover {
    color: var(--orange);
}

.mnav-phone > i,
.mnav-wa > i,
.mnav-mail > i,
.mnav-addr > i {
    flex: 0 0 16px;
    margin-top: 3px;
    color: var(--orange);
    text-align: center;
}

.mnav-phone span {
    font-size: 19px;
    font-weight: 700;
    color: var(--blue);
    letter-spacing: .2px;
}

.mnav-wa i {
    color: #25d366;
}

.mnav-social {
    display: flex;
    gap: 8px;
    margin: 18px 0 0;
}

.mnav-social a {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 9px;
    background: #f2f4f7;
    font-size: 14px;
    color: var(--blue);
    transition: background .2s ease, color .2s ease;
}

.mnav-social a:hover {
    background: var(--orange);
    color: #fff;
}

.mnav-cta {
    display: block;
    margin: 18px 0 0;
    padding: 13px 16px;
    border-radius: 9px;
    background: var(--orange);
    font-family: var(--primary-font);
    font-size: 13.5px;
    font-weight: 700;
    text-align: center;
    color: #fff;
    text-decoration: none;
}

.mnav-cta:hover {
    background: var(--orange-dark);
    color: #fff;
}

/* ---- desktop ------------------------------------------------------------- */
/* The drawer never opens above 1199px (the redesign shows the full menu from
   1200px) — the JS closes it on resize — and this keeps a stale open state from
   covering the desktop layout. */
@media only screen and (min-width: 1200px) {
    .mnav {
        display: none !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .mnav-scrim,
    .mnav-panel,
    .mnav-sub {
        transition: none;
    }
}


/* --------------------------------------------------------------------------
   25. Enquiry forms built from the shared components (contact-form.php,
   product-inquiry-form.php) — their markup predates the redesign, so they
   are styled by context instead of by ui- classes.
   -------------------------------------------------------------------------- */
.ui-formcard .row {
    --bs-gutter-x: 14px;
    row-gap: 14px;
}

.ui-formcard .form-group {
    margin: 0;
}

.ui-formcard input:not([type="hidden"]),
.ui-formcard select,
.ui-formcard textarea {
    width: 100%;
    padding: 15px 18px;
    border: 1.5px solid var(--c-line);
    border-radius: 14px;
    background-color: var(--c-cream);
    color: var(--c-ink);
    font: inherit;
    font-size: 15px;
    transition: border-color .3s var(--ease), background-color .3s var(--ease), box-shadow .3s var(--ease);
}

.ui-formcard select {
    appearance: none;
    padding-right: 42px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%23141518' d='M6 8 0 0h12z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 18px center;
}

.ui-formcard textarea {
    min-height: 130px;
    resize: vertical;
}

.ui-formcard input:focus,
.ui-formcard select:focus,
.ui-formcard textarea:focus {
    outline: none;
    border-color: var(--c-orange);
    background-color: #fff;
    box-shadow: 0 0 0 4px rgba(var(--c-orange-rgb), .15);
}

.ui-formcard .iti {
    width: 100%;
}

.ui-formcard .thm-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    width: 100%;
    padding: 16px 26px;
    border: 0;
    border-radius: 999px;
    background: var(--c-orange);
    color: #fff;
    font-family: var(--f-head);
    font-size: 15px;
    font-weight: 600;
    transition: background .3s var(--ease);
}

.ui-formcard .thm-btn:hover {
    background: var(--c-ink);
}

.ui-formcard .thm-btn .icon-next1::before {
    content: "\2192";
    font-family: var(--f-body);
}

/* --------------------------------------------------------------------------
   26. Back to top — bottom left, clear of the call / WhatsApp buttons on the right
   -------------------------------------------------------------------------- */
.ui-totop {
    position: fixed;
    left: 24px;
    bottom: 28px;
    z-index: 900;
    display: grid;
    place-items: center;
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background: var(--c-ink);
    color: #fff;
    font-size: 18px;
    box-shadow: var(--sh-2);
    opacity: 0;
    visibility: hidden;
    transform: translateY(12px);
    transition: opacity .3s var(--ease), transform .3s var(--ease), visibility .3s, background .3s var(--ease);
}

.ui-totop.is-visible {
    opacity: 1;
    visibility: visible;
    transform: none;
}

.ui-totop:hover,
.ui-totop:focus-visible {
    background: var(--c-orange);
    color: #fff;
}

/* without JS the button never gets is-visible, so show it outright */
html:not(.js-motion) .ui-totop {
    opacity: 1;
    visibility: visible;
    transform: none;
}

@media (max-width: 767px) {
    .ui-totop {
        left: 12px;
        bottom: 84px;
        width: 42px;
        height: 42px;
    }
}

/* --------------------------------------------------------------------------
   27. Phones: every heading is centred — the section headings with their
   eyebrow label (which gets a rule on both sides, as in .ui-head--center),
   the buttons that sit beside a heading, the hero text block and the footer
   call-to-action. Body copy, lists and cards keep their own alignment.
   -------------------------------------------------------------------------- */
@media (max-width: 767px) {
    .ui-head,
    .ui-title,
    .ui-formcard__title,
    .ui-pd__glance h4,
    .ui-prose__title,
    .ui-hero__text {
        text-align: center;
    }

    .ui-head {
        margin-inline: auto;
    }

    .ui-eyebrow {
        display: flex;
        justify-content: center;
    }

    .ui-eyebrow::after {
        content: "";
        width: 28px;
        height: 2px;
        background: currentColor;
    }

    .ui-head__row {
        flex-direction: column;
        align-items: center;
        justify-content: center;
    }

    /* hero: badge, copy, buttons and slide counter line up under the centred title */
    .ui-hero__inner {
        text-align: center;
    }

    .ui-hero__copy {
        margin-inline: auto;
    }

    .ui-hero__cta,
    .ui-hero__nav {
        justify-content: center;
    }

    /* footer logo image fills its (full-width) link on phones */
    .ui-footer__logo img {
        width: 100%;
        height: auto;
    }
}

/* ==========================================================================
   28. Inner pages — banner, breadcrumb (components/ui/page-hero.php)
   ========================================================================== */
.ui-pagehero {
    position: relative;
    padding: calc(var(--header-h) + 72px) 0 clamp(56px, 7vw, 96px);
    background: var(--c-ink);
    color: var(--c-on-dark);
    overflow: hidden;
    isolation: isolate;
}

.ui-pagehero__bg {
    position: absolute;
    inset: -10% 0;
    z-index: -2;
}

.ui-pagehero__bg img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.ui-pagehero::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    background:
        linear-gradient(90deg, rgba(20, 21, 24, .95) 0%, rgba(20, 21, 24, .82) 50%, rgba(20, 21, 24, .55) 100%),
        radial-gradient(circle at 85% 20%, rgba(var(--c-orange-rgb), .28), transparent 45%);
}

.ui-pagehero__title {
    max-width: 900px;
    margin: 0;
    color: #fff;
    font-size: var(--fs-hero);
    line-height: 1.05;
}

.ui-pagehero__title--long {
    max-width: 1000px;
    font-size: clamp(1.7rem, 1.1rem + 2vw, 2.9rem);
    line-height: 1.15;
}

.ui-pagehero__lead {
    max-width: 640px;
    margin: 18px 0 0;
    font-size: var(--fs-lead);
}

.ui-crumbs ol {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 10px;
    margin: 22px 0 0;   /* sits under the title */
    padding: 0;
    list-style: none;
    font-size: 14px;
}

.ui-crumbs li {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    color: rgba(255, 255, 255, .62);
}

.ui-crumbs li + li::before {
    content: "";
    width: 6px;
    height: 6px;
    border-top: 1.5px solid currentColor;
    border-right: 1.5px solid currentColor;
    transform: rotate(45deg);
    opacity: .7;
}

.ui-crumbs a {
    color: #fff;
}

.ui-crumbs a:hover {
    color: var(--c-orange);
}

.ui-crumbs [aria-current] {
    color: var(--c-orange);
}

/* ==========================================================================
   29. Product page (components/ui/product-body.php)
   ========================================================================== */
.ui-pd__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: clamp(32px, 5vw, 80px);
    align-items: start;
}

/* gallery: big stage + thumbnails; sticks while the info column scrolls past */
.ui-pd__media {
    position: sticky;
    top: calc(var(--header-h) + 32px);
}

.ui-pd__stage {
    position: relative;
    aspect-ratio: 1 / 1;
    border: 1px solid var(--c-line);
    border-radius: var(--r-xl);
    background: radial-gradient(ellipse at 50% 42%, #fff 0%, #fbf8f4 45%, #f1ebe2 100%);
    overflow: hidden;
}

.ui-pd__slide {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    padding: clamp(20px, 4vw, 48px);
    cursor: zoom-in;
}

.ui-pd__slide[hidden] {
    display: none;
}

.ui-pd__slide img {
    max-width: 100%;
    max-height: 100%;
    width: auto;
    height: auto;
    object-fit: contain;
    mix-blend-mode: multiply;
    transition: transform .8s var(--ease);
}

.ui-pd__stage:hover .ui-pd__slide img {
    transform: scale(1.05);
}

.ui-pd__zoom {
    position: absolute;
    right: 18px;
    bottom: 18px;
    display: grid;
    place-items: center;
    width: 46px;
    height: 46px;
    border-radius: 50%;
    background: #fff;
    color: var(--c-ink);
    box-shadow: var(--sh-1);
    pointer-events: none;
}

.ui-pd__thumbs {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-top: 14px;
}

.ui-pd__thumb {
    width: 86px;
    height: 86px;
    padding: 6px;
    border: 1.5px solid var(--c-line);
    border-radius: var(--r);
    background: #fff;
    cursor: pointer;
    transition: border-color .3s var(--ease), transform .3s var(--ease);
}

.ui-pd__thumb img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.ui-pd__thumb:hover {
    transform: translateY(-2px);
}

.ui-pd__thumb.is-active {
    border-color: var(--c-orange);
}

.ui-pd__info .ui-title {
    margin-bottom: 18px;
}

.ui-pd__info > .ui-lead {
    text-align: justify;
}

/* optional "Key Features" list (portable toilet page) */
.ui-pd__features {
    margin-top: 26px;
}

.ui-pd__features h4,
.ui-pd__features .ui-pd__subtitle {
    margin: 0 0 12px;
    font-size: 17px;
}

.ui-pd__features .ui-checks {
    margin: 0;
}

/* Applications tab: two cards a row inside the tab box */
.ui-apps {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

@media (max-width: 767px) {
    .ui-apps {
        grid-template-columns: minmax(0, 1fr);
    }

    .ui-pd__features h4,
    .ui-pd__features .ui-pd__subtitle {
        text-align: center;
    }
}

.ui-pd__glance {
    margin: 30px 0;
    padding: 22px 24px;
    border: 1px solid var(--c-line);
    border-radius: var(--r-lg);
    background: var(--c-cream);
}

.ui-pd__glance h4,
.ui-pd__glance .ui-pd__subtitle {
    margin: 0 0 14px;
    font-size: 17px;
}

.ui-pd__glance dl {
    margin: 0;
}

.ui-pd__glance dl > div {
    display: grid;
    grid-template-columns: minmax(120px, 38%) 1fr;
    gap: 14px;
    padding: 11px 0;
    border-top: 1px dashed var(--c-line);
}

.ui-pd__glance dl > div:first-child {
    border-top: 0;
    padding-top: 0;
}

.ui-pd__glance dt {
    color: var(--c-muted);
    font-weight: 500;
    font-size: 14px;
}

.ui-pd__glance dd {
    margin: 0;
    color: var(--c-ink);
    font-weight: 600;
    font-size: 15px;
}

/* the three actions share one row: compact buttons that split the width */
.ui-pd__actions {
    display: flex;
    flex-wrap: nowrap;
    gap: 8px;
}

.ui-pd__actions .ui-btn {
    flex: 1 1 auto;
    gap: 8px;
    padding: 14px 12px;
    font-size: 14px;
}

/* 992-1199px: the product column is narrow, so the icons go to keep the labels whole */
@media (min-width: 992px) and (max-width: 1199px) {
    .ui-pd__actions .ui-btn {
        padding: 13px 8px;
        font-size: 13px;
    }

    .ui-pd__actions .ui-btn i {
        display: none;
    }
}

.ui-btn--wa {
    --btn-bg: #1faa59;
    --btn-fg: #fff;
}

.ui-pd__trust {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 22px;
    margin: 26px 0 0;
    padding: 20px 0 0;
    border-top: 1px solid var(--c-line);
    list-style: none;
    font-size: 14px;
    font-weight: 600;
    color: var(--c-ink);
}

.ui-pd__trust i {
    margin-right: 6px;
    color: var(--c-orange);
}

.ui-pd__share {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 14px;
    margin-top: 22px;
}

.ui-pd__share p {
    margin: 0;
    font-family: var(--f-head);
    font-weight: 600;
    color: var(--c-ink);
}

.ui-pd__share .product-details__social-link {
    display: flex;
    gap: 8px;
}

.ui-pd__share .product-details__social-link a {
    display: grid;
    place-items: center;
    width: 40px;
    height: 40px;
    border: 1px solid var(--c-line);
    border-radius: 50%;
    color: var(--c-ink);
    transition: background .3s var(--ease), color .3s var(--ease), border-color .3s var(--ease);
}

.ui-pd__share .product-details__social-link a:hover {
    border-color: var(--c-orange);
    background: var(--c-orange);
    color: #fff;
}

/* tabs: every panel shows without JS; si-motion.js hides the inactive ones */
.ui-tabs {
    padding: clamp(22px, 3vw, 40px);
    border: 1px solid var(--c-line);
    border-radius: var(--r-xl);
    background: #fff;
}

.ui-tabs__list {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    width: fit-content;
    max-width: 100%;
    margin-bottom: clamp(22px, 3vw, 34px);
    padding: 6px;
    border-radius: 999px;
    background: var(--c-cream);
}

.ui-tabs__btn {
    padding: 12px 22px;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: var(--c-text);
    font-family: var(--f-head);
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
    transition: background .3s var(--ease), color .3s var(--ease);
}

.ui-tabs__btn:hover {
    color: var(--c-ink);
}

.ui-tabs__btn.is-active {
    background: var(--c-ink);
    color: #fff;
}

.ui-tabs__panel + .ui-tabs__panel {
    margin-top: 32px;
}

.ui-tabs.is-ready .ui-tabs__panel + .ui-tabs__panel {
    margin-top: 0;
}

.ui-tabs__panel[hidden] {
    display: none;
}

/* Description tab: the copy runs the full width of the panel, justified */
.ui-prose p {
    font-size: 16.5px;
    line-height: 1.8;
    text-align: justify;
}

.ui-prose__title {
    margin: 0 0 14px;
    font-size: clamp(20px, 1.1rem + .6vw, 26px);
}

.ui-prose p:last-child {
    margin-bottom: 0;
}

.ui-spec {
    width: 100%;
    border: 1px solid var(--c-line);
    border-collapse: separate;
    border-spacing: 0;
    border-radius: var(--r);
    overflow: hidden;
}

.ui-spec th,
.ui-spec td {
    padding: 15px 20px;
    border-bottom: 1px solid var(--c-line);
    vertical-align: top;
    font-size: 15px;
}

.ui-spec tr:last-child th,
.ui-spec tr:last-child td {
    border-bottom: 0;
}

.ui-spec th {
    width: 34%;
    background: var(--c-cream);
    color: var(--c-ink);
    font-family: var(--f-head);
    font-weight: 600;
}

.ui-spec td {
    color: var(--c-text);
}

.ui-spec tr:hover td {
    background: rgba(var(--c-orange-rgb), .04);
}

.ui-gallery {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
}

.ui-gallery__item {
    position: relative;
    display: block;
    aspect-ratio: 1 / 1;
    border-radius: var(--r);
    background: var(--c-cream);
    overflow: hidden;
    cursor: zoom-in;
}

.ui-gallery__item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .7s var(--ease);
}

.ui-gallery__item:hover img {
    transform: scale(1.07);
}

.ui-gallery__zoom {
    position: absolute;
    right: 12px;
    bottom: 12px;
    display: grid;
    place-items: center;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: var(--c-orange);
    color: #fff;
    opacity: 0;
    transform: translateY(8px);
    transition: opacity .3s var(--ease), transform .3s var(--ease);
}

.ui-gallery__item:hover .ui-gallery__zoom,
.ui-gallery__item:focus-visible .ui-gallery__zoom {
    opacity: 1;
    transform: none;
}

/* FAQ accordion (Bootstrap collapse, restyled) */
.ui-faq {
    --bs-accordion-btn-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23ed852b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 5l6 6 6-6'/%3E%3C/svg%3E");
    --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23ed852b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 5l6 6 6-6'/%3E%3C/svg%3E");
    max-width: 920px;
    margin: 0 auto;
}

.ui-faq .ui-faq__item {
    margin-bottom: 12px;
    border: 1px solid var(--c-line);
    border-radius: var(--r);
    background: #fff;
    overflow: hidden;
}

.ui-faq__q {
    margin: 0;
}

.ui-faq .accordion-button {
    gap: 16px;
    padding: 20px 22px;
    background: #fff;
    color: var(--c-ink);
    font-family: var(--f-head);
    font-size: 17px;
    font-weight: 600;
    box-shadow: none;
}

.ui-faq .accordion-button:not(.collapsed) {
    background: var(--c-cream);
    color: var(--c-ink);
}

.ui-faq .accordion-button:focus {
    box-shadow: 0 0 0 3px rgba(var(--c-orange-rgb), .25);
}

.ui-faq .accordion-button::after {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background-color: var(--c-orange-soft);
    background-position: center;
    background-size: 12px;
}

.ui-faq__num {
    flex: none;
    color: var(--c-orange);
    font-size: 14px;
}

.ui-faq__a {
    padding: 4px 22px 22px 58px;
    background: var(--c-cream);
    color: var(--c-text);
    line-height: 1.75;
}


/* FAQ: heading + help card on the left, questions on the right */
.ui-faqwrap {
    display: grid;
    grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
    gap: clamp(32px, 5vw, 72px);
    align-items: start;
}

.ui-faqwrap__side {
    position: sticky;
    top: calc(var(--header-h) + 32px);
}

.ui-faqwrap .ui-faq {
    max-width: none;
    margin: 0;
}

.ui-faqwrap__card {
    padding: clamp(22px, 2.6vw, 32px);
    border-radius: var(--r-lg);
    background: var(--c-ink);
    color: var(--c-on-dark);
}

.ui-faqwrap__icon {
    display: grid;
    place-items: center;
    width: 52px;
    height: 52px;
    margin-bottom: 16px;
    border-radius: 14px;
    background: rgba(var(--c-orange-rgb), .16);
    color: var(--c-orange);
    font-size: 24px;
}

.ui-faqwrap__card .ui-faqwrap__title {
    margin: 0 0 6px;
    color: #fff;
    font-family: var(--f-head);
    font-size: 20px;
    font-weight: 700;
}

.ui-faqwrap__card p {
    margin-bottom: 18px;
    font-size: 15px;
}

.ui-faqwrap__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

@media (max-width: 991px) {
    .ui-faqwrap {
        grid-template-columns: minmax(0, 1fr);
    }

    /* stacked: heading, then the questions, then the help card */
    .ui-faqwrap {
        gap: 24px;
    }

    .ui-faqwrap__side {
        display: contents;
    }

    .ui-faqwrap .ui-head {
        margin-bottom: 0;
    }

    .ui-faqwrap .ui-faq {
        order: 1;
    }

    .ui-faqwrap__card {
        order: 2;
    }
}

/* closing call to action */
.ui-cta {
    position: relative;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    padding: clamp(32px, 4vw, 56px);
    border-radius: var(--r-xl);
    background: linear-gradient(120deg, var(--c-orange) 0%, var(--c-orange-2) 100%);
    color: #fff;
    overflow: hidden;
}

.ui-cta::after {
    content: "";
    position: absolute;
    right: -60px;
    top: -60px;
    width: 240px;
    height: 240px;
    border: 40px solid rgba(255, 255, 255, .1);
    border-radius: 50%;
    pointer-events: none;
}

.ui-cta h3,
.ui-cta .ui-cta__title {
    margin: 0 0 8px;
    color: #fff;
    font-size: var(--fs-h3);
}

.ui-cta p {
    margin: 0;
    color: rgba(255, 255, 255, .9);
}

/* lightbox (si-motion.js, [data-lightbox]) */
.ui-lb {
    position: fixed;
    inset: 0;
    z-index: 10000;
    display: grid;
    place-items: center;
    padding: 60px 70px;
    background: rgba(12, 13, 15, .92);
    opacity: 0;
    transition: opacity .3s var(--ease);
}

.ui-lb.is-on {
    opacity: 1;
}

/* sized against the viewport (minus the overlay's padding): a percentage height
   does not resolve inside the grid, so large photos used to run off the screen */
.ui-lb img {
    width: auto;
    height: auto;
    max-width: calc(100vw - 140px);
    max-height: calc(100vh - 120px);
    max-height: calc(100dvh - 120px);
    object-fit: contain;
    border-radius: var(--r);
    background: #fff;
}

.ui-lb button {
    position: absolute;
    display: grid;
    place-items: center;
    width: 48px;
    height: 48px;
    border: 1px solid rgba(255, 255, 255, .25);
    border-radius: 50%;
    background: rgba(255, 255, 255, .08);
    color: #fff;
    font-size: 18px;
    cursor: pointer;
}

.ui-lb button:hover {
    border-color: var(--c-orange);
    background: var(--c-orange);
}

.ui-lb__close {
    top: 16px;
    right: 16px;
}

.ui-lb__prev {
    left: 12px;
    top: 50%;
    transform: translateY(-50%);
}

.ui-lb__next {
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
}

.ui-lb__count {
    position: absolute;
    bottom: 18px;
    left: 50%;
    transform: translateX(-50%);
    color: rgba(255, 255, 255, .75);
    font-size: 14px;
}

/* video popup: a 16:9 player as large as the screen allows */
.ui-lb__frame {
    width: min(100%, calc((100vh - 120px) * 16 / 9), 1100px);
    aspect-ratio: 16 / 9;
    border-radius: var(--r);
    background: #000;
    overflow: hidden;
}

.ui-lb__frame iframe {
    display: block;
    width: 100%;
    height: 100%;
    border: 0;
}

/* "Product Video" tab: thumbnail with a play button */
.ui-video {
    position: relative;
    display: block;
    max-width: 520px;
    aspect-ratio: 16 / 9;
    border-radius: var(--r-lg);
    background: #000;
    overflow: hidden;
}

.ui-video img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: .85;
    transition: transform .7s var(--ease), opacity .4s var(--ease);
}

.ui-video:hover img {
    transform: scale(1.04);
    opacity: .7;
}

.ui-video__play {
    position: absolute;
    top: 50%;
    left: 50%;
    display: grid;
    place-items: center;
    width: 84px;
    height: 84px;
    padding-left: 5px;
    border-radius: 50%;
    background: var(--c-orange);
    color: #fff;
    font-size: 26px;
    transform: translate(-50%, -50%);
    box-shadow: 0 0 0 12px rgba(var(--c-orange-rgb), .25);
    transition: transform .4s var(--ease);
}

.ui-video:hover .ui-video__play {
    transform: translate(-50%, -50%) scale(1.08);
}

.ui-video__label {
    position: absolute;
    left: 18px;
    bottom: 16px;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 7px 14px;
    border-radius: 999px;
    background: rgba(0, 0, 0, .6);
    color: #fff;
    font-family: var(--f-head);
    font-size: 14px;
    font-weight: 600;
}

@media (max-width: 767px) {
    .ui-video__play {
        width: 64px;
        height: 64px;
        font-size: 20px;
    }
}

@media (max-width: 991px) {
    .ui-pd__grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .ui-pd__media {
        position: relative;
        top: auto;
    }

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

@media (max-width: 767px) {
    .ui-pagehero,
    .ui-pagehero__title,
    .ui-pagehero__lead {
        text-align: center;
        margin-inline: auto;
    }

    .ui-crumbs ol {
        justify-content: center;
    }

    /* phones: too narrow for three labels side by side, so they stack */
    .ui-pd__actions {
        flex-wrap: wrap;
    }

    .ui-pd__actions .ui-btn {
        flex: 1 1 100%;
        padding: 15px 20px;
        font-size: 15px;
    }

    /* one row; each segment sized to its label (a long one wraps between words),
       so "Specifications" never spills out of its pill */
    .ui-tabs__list {
        display: flex;
        flex-wrap: nowrap;
        gap: 4px;
        width: 100%;
        padding: 4px;
        border-radius: var(--r);
    }

    .ui-tabs__btn {
        flex: 1 1 auto;   /* default min-width keeps every word inside its pill */
        padding: 10px 8px;
        border-radius: 12px;
        font-size: 13px;
        line-height: 1.25;
    }

    /* four tabs (the portable toilet page adds Applications): two rows of two */
    .ui-tabs__list:has(> :nth-child(4)) {
        flex-wrap: wrap;
    }

    .ui-tabs__list:has(> :nth-child(4)) .ui-tabs__btn {
        flex: 1 1 calc(50% - 4px);
    }
}

/* the narrowest phones: a little smaller still, so all three labels fit */
@media (max-width: 359px) {
    .ui-tabs__btn {
        padding-inline: 5px;
        font-size: 12px;
    }
}

@media (max-width: 767px) {

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

    .ui-spec th,
    .ui-spec td {
        display: block;
        width: 100%;
    }

    .ui-spec th {
        padding-bottom: 6px;
        border-bottom: 0;
    }

    .ui-spec td {
        padding-top: 4px;
    }

    .ui-faq .accordion-button {
        padding: 16px;
        font-size: 15.5px;
    }

    .ui-faq__a {
        padding: 4px 16px 18px;
    }

    .ui-cta {
        flex-direction: column;
        align-items: center;
        text-align: center;
    }

    .ui-lb {
        padding: 70px 12px;
    }

    .ui-lb img {
        max-width: calc(100vw - 24px);
        max-height: calc(100vh - 140px);
        max-height: calc(100dvh - 140px);
    }

    .ui-lb__prev,
    .ui-lb__next {
        top: auto;
        bottom: 12px;
        transform: none;
    }
}

/* ==========================================================================
   30. Blog article + city guide (components/ui/blog-body-*.php)
   ========================================================================== */
.ui-blog {
    display: grid;
    grid-template-columns: 320px minmax(0, 1fr);   /* sidebar on the left */
    grid-template-areas: "side main";
    gap: clamp(32px, 4vw, 56px);
    align-items: start;
}

.ui-blog__main {
    grid-area: main;
    min-width: 0;
}

/* the whole sidebar is pinned, at its full height */
.ui-blog__side {
    grid-area: side;
    position: sticky;
    top: calc(var(--header-h) + 24px);
    align-self: start;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.ui-blog__box {
    padding: 22px;
    border: 1px solid var(--c-line);
    border-radius: var(--r-lg);
    background: #fff;
}

.ui-blog__box-title {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 14px;
    color: var(--c-ink);
    font-family: var(--f-head);
    font-size: 17px;
    font-weight: 700;
}

.ui-blog__box-title i {
    color: var(--c-orange);
}

.ui-blog__toc ul {
    margin: 0;
    padding: 0;
    list-style: none;
}

/* contents list: an orange rule across the top, numbered entries, and the
   section being read as a filled orange row */
.ui-blog__toc {
    position: relative;
    overflow: hidden;
    border-top: 0;
}

.ui-blog__toc::before {
    content: "";
    position: absolute;
    inset: 0 0 auto;
    height: 4px;
    background: linear-gradient(90deg, var(--c-orange), var(--c-orange-2));
}

.ui-blog__toc .ui-blog__box-title i {
    display: grid;
    place-items: center;
    width: 32px;
    height: 32px;
    border-radius: 10px;
    background: rgba(var(--c-orange-rgb), .12);
    font-size: 15px;
}

.ui-blog__toc ul {
    counter-reset: toc;
}

.ui-blog__toc li {
    counter-increment: toc;
}

.ui-blog__toc li a {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 5px 8px;
    border-radius: 10px;
    color: var(--c-text);
    font-size: 13.5px;
    line-height: 1.4;
    transition: color .3s var(--ease), background .3s var(--ease), transform .3s var(--ease);
}

.ui-blog__toc li a::before {
    content: counter(toc, decimal-leading-zero);
    flex: none;
    min-width: 24px;
    padding: 1px 0;
    border-radius: 6px;
    background: var(--c-cream);
    color: var(--c-muted);
    font-family: var(--f-head);
    font-size: 11px;
    font-weight: 700;
    line-height: 1.6;
    text-align: center;
    transition: background .3s var(--ease), color .3s var(--ease);
}

.ui-blog__toc li a:hover {
    color: var(--c-ink);
    transform: translateX(3px);
}

.ui-blog__toc li a:hover::before {
    background: rgba(var(--c-orange-rgb), .15);
    color: var(--c-orange-2);
}

.ui-blog__toc li a.active {
    background: rgba(var(--c-orange-rgb), .1);
    color: var(--c-ink);
    font-weight: 600;
}

.ui-blog__toc li a.active::before {
    background: var(--c-orange);
    color: #fff;
}

.ui-blog__share {
    display: flex;
    gap: 8px;
}

.ui-blog__share a,
.ui-blog__share button {
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    border: 1px solid var(--c-line);
    border-radius: 50%;
    background: #fff;
    color: var(--c-ink);
    cursor: pointer;
    transition: background .3s var(--ease), color .3s var(--ease), border-color .3s var(--ease);
}

.ui-blog__share a:hover,
.ui-blog__share button:hover {
    border-color: var(--c-orange);
    background: var(--c-orange);
    color: #fff;
}

.blog-share__toast {
    height: 0;
    overflow: hidden;
    color: var(--c-orange);
    font-size: 13px;
    font-weight: 600;
    transition: height .3s var(--ease), margin .3s var(--ease);
}

.blog-share__toast.show {
    height: 20px;
    margin-top: 10px;
}

.ui-blog__cover {
    margin: 0 0 32px;
    border-radius: var(--r-xl);
    overflow: hidden;
    background: var(--c-cream);
}

.ui-blog__cover img {
    display: block;
    width: 100%;
    height: auto;
}

/* the article text: a readable measure and clear rhythm */
.ui-article {
    color: var(--c-text);
    font-size: 17px;
    line-height: 1.8;
}

.ui-article > :first-child {
    margin-top: 0;
}

.ui-article h2,
.ui-article h3,
.ui-article h4,
.ui-article h5,
.ui-article h6 {
    margin: 1.6em 0 .6em;
    color: var(--c-ink);
    line-height: 1.25;
    scroll-margin-top: calc(var(--header-h) + 24px);
}

.ui-article h2 { font-size: clamp(24px, 1.2rem + 1vw, 32px); }
.ui-article h3 { font-size: clamp(20px, 1.05rem + .6vw, 25px); }
.ui-article h4 { font-size: 20px; }
.ui-article h5 { font-size: 18px; }
.ui-article h6 { font-size: 17px; }

.ui-article p {
    margin: 0 0 1.1em;
    text-align: justify;
}

.ui-article a {
    color: var(--c-orange-2);
    text-decoration: underline;
    text-decoration-color: rgba(var(--c-orange-rgb), .35);
    text-underline-offset: 3px;
}

.ui-article a:hover {
    color: var(--c-orange);
}

.ui-article strong {
    color: var(--c-ink);
}

.ui-article ul,
.ui-article ol {
    margin: 0 0 1.3em;
    padding-left: 0;
    list-style: none;
}

.ui-article ol {
    padding-left: 22px;
    list-style: decimal;
}

.ui-article ul > li {
    position: relative;
    margin-bottom: 10px;
    padding-left: 26px;
}

.ui-article ul > li::before {
    content: "";
    position: absolute;
    left: 4px;
    top: .72em;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--c-orange);
}

.ui-article ol > li {
    margin-bottom: 10px;
    padding-left: 6px;
}

.ui-article ol > li::marker {
    color: var(--c-orange);
    font-weight: 700;
}

.ui-article img {
    max-width: 100%;
    height: auto;
    border-radius: var(--r);
}

.ui-article figure {
    margin: 0 0 1.2em;
}

.ui-article .row {
    margin-bottom: 1.2em;
}

/* "Key Takeaways" box at the top of the newer articles */
.ui-article .key-takeaways {
    margin: 0 0 2em;
    padding: 24px 26px;
    border: 1px solid rgba(var(--c-orange-rgb), .3);
    border-left: 4px solid var(--c-orange);
    border-radius: var(--r);
    background: var(--c-cream);
}

.ui-article .key-takeaways h3 {
    margin-top: 0;
}

.ui-article .key-takeaways ul {
    margin: 0;
}

.ui-article .key-takeaways ul > li::before {
    content: "\2713";
    top: 0;
    width: auto;
    height: auto;
    border-radius: 0;
    background: none;
    color: var(--c-orange);
    font-weight: 700;
}

.ui-blog__tags {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    margin-top: 32px;
    padding-top: 24px;
    border-top: 1px solid var(--c-line);
}

.ui-blog__tags > span {
    color: var(--c-ink);
    font-family: var(--f-head);
    font-weight: 700;
}

.ui-blog__tags > span i {
    color: var(--c-orange);
}

.ui-blog__tags ul {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.ui-blog__tags li {
    padding: 6px 14px;
    border-radius: 999px;
    background: var(--c-cream);
    color: var(--c-text);
    font-size: 13.5px;
}

.ui-blog__faq {
    margin-top: 40px;
    scroll-margin-top: calc(var(--header-h) + 24px);
}

.ui-blog__faq .ui-faq {
    max-width: none;
}

.ui-blog__nav {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    margin-top: 40px;
}

.ui-blog__nav-item {
    display: grid;
    gap: 6px;
    padding: 20px 22px;
    border: 1px solid var(--c-line);
    border-radius: var(--r-lg);
    background: #fff;
    transition: border-color .3s var(--ease), transform .3s var(--ease);
}

.ui-blog__nav-item:hover {
    border-color: var(--c-orange);
    transform: translateY(-2px);
}

.ui-blog__nav-item span {
    color: var(--c-orange);
    font-family: var(--f-head);
    font-size: 13px;
    font-weight: 600;
    letter-spacing: .06em;
    text-transform: uppercase;
}

.ui-blog__nav-item strong {
    color: var(--c-ink);
    font-family: var(--f-head);
    font-size: 16px;
    line-height: 1.35;
}

.ui-blog__nav-item--next {
    grid-column: 2;
    text-align: right;
}

/* ==========================================================================
   31. Old content blocks inside content pages (privacy, terms)
   ========================================================================== */
.ui-content-page .si-legal {
    padding-block: var(--sp-section);
}

.ui-content-page .si-legal__content {
    color: var(--c-text);
    font-size: 16.5px;
    line-height: 1.8;
}

.ui-content-page .si-legal__content h2 {
    margin: 0 0 8px;
    font-size: clamp(24px, 1.2rem + 1vw, 32px);
}

.ui-content-page .si-legal__content h3 {
    margin: 0 0 12px;
    font-size: 21px;
}

.ui-content-page .si-legal__content .date {
    margin-bottom: 0;
    text-align: center;
    color: var(--c-muted);
    font-size: 14px;
}

.ui-content-page .si-legal__content .page-wrap-is {
    margin-bottom: 30px;
    padding: 24px 26px;
    border: 1px solid var(--c-line);
    border-radius: var(--r-lg);
    background: #fff;
}

.ui-content-page .si-legal__content ul,
.ui-content-page .si-legal__content ol {
    margin: 0;
    padding-left: 22px;
}

.ui-content-page .si-legal__content li {
    margin-bottom: 8px;
}

.ui-content-page .si-legal__content a {
    color: var(--c-orange-2);
}

/* old "cta-one" band, restyled as the orange call-to-action card */
.ui-content-page .cta-one {
    padding-bottom: var(--sp-section);
}

.ui-content-page .cta-one > .container {
    max-width: 1280px;
    padding: clamp(32px, 4vw, 56px);
    border-radius: var(--r-xl);
    background: linear-gradient(120deg, var(--c-orange) 0%, var(--c-orange-2) 100%);
    color: #fff;
}

.ui-content-page .cta-one h3,
.ui-content-page .cta-one .ui-hd {
    margin: 0 0 8px;
    color: #fff;
    font-size: var(--fs-h3);
}

.ui-content-page .cta-one p {
    margin: 0;
    color: rgba(255, 255, 255, .9);
}

.ui-content-page .thm-btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 15px 26px;
    border-radius: 999px;
    background: var(--c-orange);
    color: #fff;
    font-family: var(--f-head);
    font-weight: 600;
}

.ui-content-page .thm-btn--white {
    background: #fff;
    color: var(--c-ink);
}

.ui-content-page .thm-btn .icon-next1::before {
    content: "\2192";
}

@media (max-width: 1199px) {
    .ui-blog {
        grid-template-columns: 280px minmax(0, 1fr);
    }
}

@media (max-width: 991px) {
    .ui-blog {
        grid-template-columns: minmax(0, 1fr);
        grid-template-areas: "main" "side";
    }

    .ui-blog__side {
        position: static;
    }


    /* on tablets and phones the contents list is not needed above the fold */
    .ui-blog__toc {
        display: none;
    }
}

@media (max-width: 767px) {
    .ui-article {
        font-size: 16px;
    }

    .ui-blog__nav {
        grid-template-columns: minmax(0, 1fr);
    }

    .ui-blog__nav-item--next {
        grid-column: auto;
    }

    .ui-content-page .cta-one > .container {
        text-align: center;
    }

    .ui-content-page .cta-one .text-lg-end {
        margin-top: 18px;
    }
}

.ui-blog__faq--follows {
    margin-top: 8px;
}

/* ==========================================================================
   32. City landing pages (components/ui/city-body.php)
   ========================================================================== */
.ui-city-lead {
    max-width: 920px;
    margin: 0 auto clamp(32px, 4vw, 48px);
    text-align: center;
    font-size: var(--fs-lead);
    line-height: 1.75;
}

.ui-city-lead p:last-child {
    margin-bottom: 0;
}

.ui-city-lead--dark {
    color: var(--c-on-dark);
}

.ui-city-prose p {
    line-height: 1.8;
    text-align: justify;
}

.ui-city-boxes {
    display: grid;
    gap: 20px;
}

.ui-city-box {
    display: grid;
    grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
    gap: clamp(20px, 3vw, 40px);
    align-items: center;
    padding: clamp(16px, 2vw, 22px);
    border: 1px solid var(--c-line);
    border-radius: var(--r-xl);
    background: #fff;
}

.ui-city-box--flip {
    grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);   /* text column stays the wider one */
}

.ui-city-box--flip .ui-city-box__img {
    order: 2;
}

.ui-city-box__img {
    aspect-ratio: 4 / 3;
    border-radius: var(--r-lg);
    background: radial-gradient(ellipse at 50% 42%, #fff 0%, #fbf8f4 45%, #f1ebe2 100%);
    overflow: hidden;
}

.ui-city-box__img img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    mix-blend-mode: multiply;
}

.ui-city-box__body h3,
.ui-city-box__body h4 {
    margin: 0 0 12px;
    font-size: clamp(20px, 1.05rem + .6vw, 26px);
}

.ui-city-box__body p {
    margin-bottom: 18px;
    line-height: 1.75;
    text-align: justify;
}

.ui-city-points {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.ui-city-points li {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 18px 20px;
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: var(--r);
    background: rgba(255, 255, 255, .04);
    color: #fff;
    font-family: var(--f-head);
    font-weight: 600;
}

.ui-city-points span {
    display: grid;
    flex: none;
    place-items: center;
    width: 44px;
    height: 44px;
    border-radius: 12px;
    background: var(--c-orange);
    font-size: 19px;
}

.ui-media__badge--cert {
    align-items: center;
}

.ui-media__badge--cert > i {
    color: var(--c-orange);
    font-size: 30px;
}

.ui-media__badge--cert b {
    display: block;
    color: #fff;
    font-family: var(--f-head);
    font-size: 16px;
}

.ui-posts--wrap {
    justify-content: center;
}

.ui-post__text {
    margin: 0;
    font-size: 14.5px;
    line-height: 1.6;
}

.ui-city-cta--gap {
    padding-top: var(--sp-section);
}

@media (max-width: 991px) {
    .ui-city-points {
        grid-template-columns: minmax(0, 1fr);
    }
}

@media (max-width: 767px) {
    .ui-city-box,
    .ui-city-box--flip {
        grid-template-columns: minmax(0, 1fr);
    }

    .ui-city-box--flip .ui-city-box__img {
        order: 0;
    }

    .ui-city-lead {
        text-align: justify;
    }
}

/* ==========================================================================
   33. Standalone inner pages (about, products, clients, gallery, presence,
       blogs, contact, proposal, brochure, thank you, sitemap)
   ========================================================================== */
.ui-cards--two {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

/* certificates: white sheets on the dark band, open in the photo viewer */
.ui-certs {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 340px));
    justify-content: center;
    gap: 28px;
}

.ui-certs__item {
    margin: 0;
    text-align: center;
}

.ui-certs__item a {
    position: relative;
    display: block;
    aspect-ratio: 3 / 4;
    padding: 12px;
    border-radius: var(--r);
    background: #fff;
    overflow: hidden;
    cursor: zoom-in;
}

.ui-certs__item img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    transition: transform .6s var(--ease);
}

.ui-certs__item a:hover img {
    transform: scale(1.04);
}

.ui-certs__item a:hover .ui-gallery__zoom {
    opacity: 1;
    transform: none;
}

.ui-certs__item figcaption {
    margin-top: 12px;
    color: #fff;
    font-family: var(--f-head);
    font-weight: 600;
}

@media (max-width: 767px) {
    .ui-cards--two {
        grid-template-columns: minmax(0, 1fr);
    }

    /* one per row on phones so each certificate stays readable */
    .ui-certs {
        grid-template-columns: minmax(0, 340px);
    }
}

/* client logos, shown large (our-clients) */
.ui-clientgrid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 20px;
}

.ui-clientgrid__item {
    margin: 0;
    padding: 18px;
    border: 1px solid var(--c-line);
    border-radius: var(--r-lg);
    background: #fff;
    text-align: center;
    transition: border-color .4s var(--ease), transform .4s var(--ease), box-shadow .4s var(--ease);
}

.ui-clientgrid__item:hover {
    border-color: rgba(var(--c-orange-rgb), .5);
    box-shadow: var(--sh-1);
    transform: translateY(-4px);
}

.ui-clientgrid__logo {
    display: grid;
    place-items: center;
    height: 120px;
}

.ui-clientgrid__logo img {
    max-width: 80%;
    max-height: 90px;
    width: auto;
    height: auto;
    object-fit: contain;
}

.ui-clientgrid__item figcaption {
    margin-top: 12px;
    color: var(--c-ink);
    font-family: var(--f-head);
    font-weight: 600;
}

/* pill chips: gallery filter, blog categories, city links */
.ui-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin: 0 0 clamp(24px, 3vw, 36px);
    padding: 0;
    list-style: none;
}

.ui-chips--center,
[data-gallery-filter].ui-chips {
    justify-content: center;
}

.ui-chips > button,
.ui-chips > a,
.ui-chips--links li > a {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 18px;
    border: 1.5px solid var(--c-line);
    border-radius: 999px;
    background: #fff;
    color: var(--c-ink);
    font-family: var(--f-head);
    font-size: 14.5px;
    font-weight: 600;
    cursor: pointer;
    transition: background .3s var(--ease), color .3s var(--ease), border-color .3s var(--ease);
}

.ui-chips > button:hover,
.ui-chips > a:hover,
.ui-chips--links li > a:hover {
    border-color: var(--c-ink);
}

.ui-chips > .is-active {
    border-color: var(--c-ink);
    background: var(--c-ink);
    color: #fff;
}

.ui-chips--links {
    margin: 0;
}

.ui-chips--links li > a {
    font-size: 14px;
    font-weight: 500;
}

.ui-chips--links li > a i {
    color: var(--c-orange);
}

/* gallery masonry (columns) */
.ui-masonry {
    columns: 4 260px;
    column-gap: 16px;
}

.ui-masonry__item {
    break-inside: avoid;
    margin: 0 0 16px;
}

.ui-masonry__item[hidden] {
    display: none;
}

.ui-masonry__item a {
    position: relative;
    display: block;
    border-radius: var(--r);
    background: var(--c-cream);
    overflow: hidden;
    cursor: zoom-in;
}

.ui-masonry__item img {
    display: block;
    width: 100%;
    height: auto;
    transition: transform .7s var(--ease);
}

.ui-masonry__item a:hover img {
    transform: scale(1.05);
}

.ui-masonry__item a:hover .ui-gallery__zoom,
.ui-masonry__item a:focus-visible .ui-gallery__zoom {
    opacity: 1;
    transform: none;
}

.ui-masonry__empty {
    text-align: center;
    color: var(--c-muted);
}

/* outlets (global presence) */
.ui-outlets + .ui-outlets {
    margin-top: clamp(40px, 5vw, 64px);
}

.ui-outlets__head {
    margin: 0 0 20px;
    padding-bottom: 14px;
    border-bottom: 1px solid var(--c-line);
    font-size: clamp(20px, 1.05rem + .6vw, 26px);
}

.ui-outlets__head em {
    color: var(--c-orange);
    font-style: normal;
}

.ui-outlets__grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 18px;
}

.ui-citycard {
    display: block;
    border: 1px solid var(--c-line);
    border-radius: var(--r-lg);
    background: #fff;
    overflow: hidden;
    transition: border-color .4s var(--ease), transform .4s var(--ease), box-shadow .4s var(--ease);
}

.ui-citycard:hover {
    border-color: rgba(var(--c-orange-rgb), .5);
    box-shadow: var(--sh-1);
    transform: translateY(-4px);
}

.ui-citycard__img {
    display: block;
    aspect-ratio: 4 / 3;
    overflow: hidden;
}

.ui-citycard__img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .7s var(--ease);
}

.ui-citycard:hover .ui-citycard__img img {
    transform: scale(1.06);
}

.ui-citycard__name {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin: 0;
    padding: 14px 16px;
    color: var(--c-ink);
    font-family: var(--f-head);
    font-size: 16px;
    font-weight: 600;
    line-height: 1.5;
    letter-spacing: 0;
}

.ui-citycard__name i {
    color: var(--c-orange);
}

.ui-statechips + .ui-statechips {
    margin-top: 28px;
}

.ui-statechips__head {
    margin: 0 0 14px;
    font-size: 20px;
}

/* blog listing pagination */
.ui-pager {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 8px;
    margin-top: clamp(32px, 4vw, 48px);
}

.ui-pager a,
.ui-pager span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-width: 44px;
    height: 44px;
    padding: 0 14px;
    border: 1.5px solid var(--c-line);
    border-radius: 999px;
    background: #fff;
    color: var(--c-ink);
    font-family: var(--f-head);
    font-weight: 600;
}

.ui-pager a:hover {
    border-color: var(--c-ink);
}

.ui-pager .is-active {
    border-color: var(--c-orange);
    background: var(--c-orange);
    color: #fff;
}

/* contact page: cards with a small heading */
.ui-contact__list--cards {
    margin-top: 0;
}

.ui-contact__item h3,
.ui-contact__item h6,
.ui-contact__label {
    display: block;
    margin: 0 0 4px;
    font-family: var(--f-head);
    line-height: 1.3;
    color: var(--c-orange);
    font-size: 13px;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.ui-contact__item a {
    color: #fff;
}

.ui-contact__item a:hover {
    color: var(--c-orange);
}

.ui-contact__hint {
    display: block;
    color: var(--c-on-dark);
    font-family: var(--f-body);
    font-size: 13px;
    font-weight: 400;
}

.ui-contact__social {
    margin-top: 22px;
}

.ui-checks--dark {
    margin-top: 22px;
}

/* trust points under the contact cards (Get A Proposal), side by side */
.ui-contact__checks {
    grid-template-columns: repeat(2, max-content);
    column-gap: 28px;
    margin: 24px 0 0;
}

@media (max-width: 575px) {
    .ui-contact__checks {
        grid-template-columns: max-content;
        justify-content: center;
    }
}

.ui-checks--dark li {
    color: #fff;
}

.ui-formcard__note {
    margin: -12px 0 18px;
    color: var(--c-muted);
    font-size: 13.5px;
}

.ui-map iframe {
    display: block;
    width: 100%;
    height: 460px;
    border: 0;
}

/* contact page — light version: white cards on cream, map as a rounded card */
.ui-contactpage {
    position: relative;
    overflow: hidden;
}

.ui-contactpage::before {
    content: "";
    position: absolute;
    top: -180px;
    right: -160px;
    width: 520px;
    height: 520px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(var(--c-orange-rgb), .14), transparent 70%);
    pointer-events: none;
}

.ui-contact--light .ui-contact__list--cards {
    margin-top: 26px;
}

.ui-contact--light .ui-contact__item {
    position: relative;
    border: 1px solid var(--c-line);
    background: #fff;
    color: var(--c-ink);
    box-shadow: var(--sh-1);
    overflow: hidden;
    transition: transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s var(--ease);
}

.ui-contact--light .ui-contact__item::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 0;
    width: 100%;
    height: 3px;
    background: linear-gradient(90deg, var(--c-orange), var(--c-orange-2));
    transform: scaleX(0);
    transform-origin: left;
    transition: transform .4s var(--ease);
}

.ui-contact--light .ui-contact__item:hover {
    border-color: rgba(var(--c-orange-rgb), .35);
    background: #fff;
    color: var(--c-ink);
    box-shadow: var(--sh-2);
    transform: translateY(-4px);
}

.ui-contact--light .ui-contact__item:hover::after {
    transform: scaleX(1);
}

.ui-contact--light .ui-contact__item i {
    width: 48px;
    height: 48px;
    background: rgba(var(--c-orange-rgb), .12);
    color: var(--c-orange);
    font-size: 19px;
    transition: background .35s var(--ease), color .35s var(--ease);
}

.ui-contact--light .ui-contact__item:hover i {
    background: var(--c-orange);
    color: #fff;
}

.ui-contact--light .ui-contact__item a {
    color: var(--c-ink);
}

.ui-contact--light .ui-contact__item a:hover {
    color: var(--c-orange);
}

.ui-contact--light .ui-social a {
    border-color: var(--c-line);
    background: #fff;
    color: var(--c-ink);
    box-shadow: var(--sh-1);
}

.ui-contact--light .ui-social a:hover {
    border-color: var(--c-orange);
    background: var(--c-orange);
    color: #fff;
}

.ui-contact--light .ui-formcard {
    border: 1px solid var(--c-line);
    border-top: 4px solid var(--c-orange);
}

/* desktop: the card is stretched to the cards column, so the message box takes up
   the spare height instead of leaving a blank strip under the button */
@media (min-width: 992px) {
    .ui-contact--light .ui-formcard {
        display: flex;
        flex-direction: column;
    }

    .ui-contact--light .ui-formcard form {
        flex: 1 1 auto;
        display: flex;
        flex-direction: column;
    }

    .ui-contact--light .ui-formcard .row {
        flex: 1 1 auto;
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        grid-template-rows: auto auto auto 1fr auto;
    }

    .ui-contact--light .ui-formcard .row > * {
        width: auto;
        margin-top: 0;
    }

    .ui-contact--light .ui-formcard .row > .col-md-12 {
        grid-column: 1 / -1;
    }

    .ui-contact--light .ui-formcard .row > :nth-last-child(2) .form-group,
    .ui-contact--light .ui-formcard .row > :nth-last-child(2) textarea {
        height: 100%;
    }
}

.ui-map--card {
    margin-top: clamp(40px, 5vw, 64px);
    border: 6px solid #fff;
    border-radius: var(--r-xl);
    overflow: hidden;
    box-shadow: var(--sh-2);
}

.ui-map--card iframe {
    height: 420px;
}

@media (max-width: 767px) {
    .ui-map--card iframe {
        height: 320px;
    }
}

/* thank-you page */
.ui-thanks {
    padding: calc(var(--header-h) + 56px) 0 var(--sp-section);
    background: radial-gradient(circle at 50% 0%, rgba(var(--c-orange-rgb), .12), transparent 55%), var(--c-cream);
}

.ui-thanks__card {
    max-width: 720px;
    margin: 0 auto;
    padding: clamp(28px, 4vw, 48px);
    border-radius: var(--r-xl);
    background: #fff;
    box-shadow: var(--sh-2);
    text-align: center;
}

.ui-thanks__img {
    max-width: 260px;
    height: auto;
    margin: 0 auto 18px;
}

.ui-thanks__title {
    margin: 0 0 12px;
    font-size: var(--fs-h2);
}

.ui-thanks__text {
    max-width: 520px;
    margin: 0 auto 22px;
    font-size: var(--fs-lead);
}

.ui-thanks__meta {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 10px 24px;
    margin-bottom: 26px;
    font-family: var(--f-head);
    font-weight: 600;
}

.ui-thanks__meta a {
    color: var(--c-ink);
}

.ui-thanks__meta i {
    color: var(--c-orange);
}

.ui-thanks__btns {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 12px;
}

/* human sitemap */
.ui-sitemap {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 20px;
}

.ui-sitemap__block {
    padding: 22px 24px;
    border: 1px solid var(--c-line);
    border-radius: var(--r-lg);
    background: #fff;
}

.ui-sitemap__block--wide {
    grid-column: 1 / -1;
}

.ui-sitemap__block h3 {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 14px;
    font-size: 19px;
}

.ui-sitemap__block h3 span {
    padding: 2px 10px;
    border-radius: 999px;
    background: var(--c-orange-soft);
    color: var(--c-orange-2);
    font-size: 12.5px;
}

.ui-sitemap__block ul {
    margin: 0;
    padding: 0;
    list-style: none;
    columns: 2 160px;
    column-gap: 18px;
}

.ui-sitemap__block--wide ul {
    columns: 3 280px;
}

.ui-sitemap__block li {
    break-inside: avoid;
    margin-bottom: 8px;
    font-size: 14.5px;
}

.ui-sitemap__block a {
    color: var(--c-text);
}

.ui-sitemap__block a:hover {
    color: var(--c-orange);
}

@media (max-width: 1199px) {
    .ui-outlets__grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

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

@media (max-width: 991px) {
    .ui-clientgrid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 767px) {
    .ui-outlets__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 12px;
    }

    .ui-sitemap {
        grid-template-columns: minmax(0, 1fr);
    }

    .ui-map iframe {
        height: 320px;
    }

    .ui-masonry {
        columns: 2;
        column-gap: 10px;
    }

    .ui-masonry__item {
        margin-bottom: 10px;
    }

    .ui-chips:not(.ui-chips--links) {
        justify-content: center;
    }
}

/* the sidebar boxes keep their full height */
.ui-blog__side > * {
    flex-shrink: 0;
}

/* FAQ number drawn by CSS where the question text must match the live heading */
.ui-faq__num[data-n]::before {
    content: attr(data-n);
}

/* city banner: the two live hero-slide headings, as small tags under the H1 */
.ui-pagehero__h2s {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin: 4px 0 18px;
}

.ui-pagehero__h2s h2 {
    margin: 0;
    padding: 7px 14px;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 999px;
    background: rgba(255, 255, 255, .06);
    color: #fff;
    font-family: var(--f-body);
    font-size: 14px;
    font-weight: 500;
    letter-spacing: 0;
    line-height: 1.4;
}

@media (max-width: 767px) {
    .ui-pagehero__h2s {
        justify-content: center;
    }
}

/* banner whose live H1 is lower-case (contact) */
.ui-pagehero--cap .ui-pagehero__title {
    text-transform: capitalize;
}

/* Get A Proposal: the cards keep their own height and the text column sits centred
   against the (taller) form, instead of the cards stretching to fill the gap */
.ui-contact--center > :first-child {
    justify-content: center;
}

.ui-contact--center .ui-contact__list--cards {
    flex: none;
    grid-auto-rows: auto;
}

/* small helper line inside a light contact card (Get Brochure) */
.ui-contact--light .ui-contact__hint {
    margin-top: 2px;
    color: var(--c-muted);
}
