/* ==========================================================================
   Terapod Living — design system
   Tokens (colours, fonts, sizes) are printed as CSS variables from
   Terapod → Site Settings → Design system. Never hardcode a brand colour here.
   ========================================================================== */

/* 1. Tokens ---------------------------------------------------------------- */
:root {
	/* Brand (overridden inline from settings) */
	--tp-primary: #073D2C;
	--tp-primary-ink: #F6F4EF;
	--tp-primary-hover: #0F5A40;
	--tp-secondary: #5F7A56;
	--tp-accent: #B49A70;
	--tp-text: #171717;
	--tp-bg: #F6F4EF;
	--tp-stone: #D8D2C7;
	--tp-dark: #13291F;
	--tp-white: #FFFFFF;

	/* Derived */
	--tp-muted: color-mix(in srgb, var(--tp-text) 72%, var(--tp-bg));
	/* Small text accent: a darker bronze that keeps 4.5:1 contrast on ivory and white. */
	--tp-accent-text: color-mix(in srgb, var(--tp-accent) 55%, #3B2A12);
	--tp-line: color-mix(in srgb, var(--tp-text) 13%, transparent);
	--tp-line-strong: color-mix(in srgb, var(--tp-text) 26%, transparent);
	--tp-sage-soft: color-mix(in srgb, var(--tp-secondary) 16%, var(--tp-bg));
	--tp-stone-soft: color-mix(in srgb, var(--tp-stone) 55%, var(--tp-bg));
	--tp-ink-on-dark: color-mix(in srgb, var(--tp-primary-ink) 92%, transparent);
	--tp-muted-on-dark: color-mix(in srgb, var(--tp-primary-ink) 68%, transparent);
	--tp-line-on-dark: color-mix(in srgb, var(--tp-primary-ink) 16%, transparent);

	/* Type */
	--tp-font-heading: "Manrope", ui-sans-serif, system-ui, sans-serif;
	--tp-font-body: "Inter", ui-sans-serif, system-ui, sans-serif;
	--tp-base: 17px;
	--tp-heading-weight: 500;
	--tp-fs-display: clamp(3.1rem, 1.4rem + 6.6vw, 7.75rem);
	--tp-fs-h1: clamp(2.7rem, 1.55rem + 4.5vw, 5.75rem);
	--tp-fs-h2: clamp(2.15rem, 1.4rem + 3vw, 4.1rem);
	--tp-fs-h3: clamp(1.45rem, 1.2rem + .95vw, 2.05rem);
	--tp-fs-lead: clamp(1.06rem, .98rem + .35vw, 1.25rem);
	--tp-fs-small: .875rem;
	--tp-fs-eyebrow: .6875rem;
	--tp-tracking-tight: var(--tp-heading-tracking, -0.01em);
	--tp-heading-leading: var(--tp-heading-lh, 1.02);
	--tp-label-tracking: .2em;

	/* Layout */
	--tp-container: 1320px;
	--tp-gutter: clamp(1.25rem, 4vw, 3rem);
	--tp-space-compact: clamp(2.5rem, 1.6rem + 2.4vw, 4rem);
	--tp-space-normal: clamp(3.5rem, 2.2rem + 3.6vw, 6rem);
	--tp-space-spacious: clamp(4.5rem, 2.6rem + 5.2vw, 7.5rem);
	--tp-gap: clamp(1.25rem, .8rem + 1.6vw, 2.5rem);
	--tp-radius: 0px;
	--tp-header-h: 88px;

	/* Buttons (overridden inline) */
	--tp-btn-radius: 999px;
	--tp-btn-height: 3rem;
	--tp-btn-pad: 1.5rem;
	--tp-btn-font: .9375rem;
	--tp-btn-border: 1px;
	--tp-logo-height: 44px;

	/* Motion */
	--tp-ease: cubic-bezier(.16, 1, .3, 1);
	--tp-ease-inout: cubic-bezier(.76, 0, .24, 1);
	--tp-dur: 1.1s;
}

/* 2. Base ------------------------------------------------------------------ */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--tp-header-h) + 1rem); }
body {
	margin: 0;
	background: var(--tp-bg);
	color: var(--tp-text);
	font-family: var(--tp-font-body);
	font-size: var(--tp-base);
	line-height: 1.72;
	letter-spacing: .005em;
	text-rendering: optimizeLegibility;
	font-feature-settings: "kern", "liga";
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}
img, svg, video, iframe { display: block; max-width: 100%; }
img { height: auto; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: .2em; }
a:hover { color: var(--tp-primary); }
.is-dark a:hover, .tp-footer a:hover { color: var(--tp-primary-ink); }
button, input, select, textarea { font: inherit; color: inherit; }
h1, h2, h3, h4, h5, h6 { font-family: var(--tp-font-heading); font-weight: var(--tp-heading-weight); line-height: var(--tp-heading-leading); letter-spacing: var(--tp-tracking-tight); margin: 0; text-wrap: balance; font-optical-sizing: auto; }
h1, h2, h3, h4 { font-variant-numeric: lining-nums; }
h1 em, h2 em, h3 em { font-style: italic; color: var(--tp-accent-text); }
.is-dark h1 em, .is-dark h2 em, .tp-hero h1 em { color: var(--tp-accent); }
p { margin: 0 0 1em; }
p:last-child { margin-bottom: 0; }
::selection { background: var(--tp-primary); color: var(--tp-primary-ink); }
:focus-visible { outline: 2px solid var(--tp-accent-text); outline-offset: 3px; }
.is-dark :focus-visible, .tp-hero :focus-visible, .tp-footer :focus-visible { outline-color: var(--tp-accent); }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.tp-skip { position: absolute; left: 1rem; top: -4rem; z-index: 1000; background: var(--tp-primary); color: var(--tp-primary-ink); padding: .75rem 1rem; border-radius: var(--tp-radius); transition: top .2s; }
.tp-skip:focus { top: 1rem; color: var(--tp-primary-ink); }
.tp-main { display: block; outline: 0; }
.tp-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
mark.tp-pending { background: #FFE8A3; color: #5A4300; padding: .05em .3em; border-radius: 3px; font-size: .85em; font-family: ui-monospace, monospace; letter-spacing: 0; }

/* 3. Layout ---------------------------------------------------------------- */
.tp-container { width: 100%; max-width: calc(var(--tp-container) + var(--tp-gutter) * 2); margin-inline: auto; padding-inline: var(--tp-gutter); }
.is-boxed .tp-site { max-width: calc(var(--tp-container) + var(--tp-gutter) * 2); margin-inline: auto; background: var(--tp-bg); box-shadow: 0 0 0 1px var(--tp-line); }
.tp-section { position: relative; }
.tp-space--none { padding-block: 0; }
.tp-space--compact { padding-block: var(--tp-space-compact); }
.tp-space--normal { padding-block: var(--tp-space-normal); }
.tp-space--spacious { padding-block: var(--tp-space-spacious); }
.tp-space-bottom { padding-bottom: var(--tp-space-normal); }

/* Consecutive sections on the same background share their spacing —
   except after full-bleed image bands (hero, cover header, call to action), which have no padding of their own. */
.tp-bg--default:not(.tp-section--hero, .tp-section--model-hero, .tp-section--cta, .tp-section--model-cta, :has(.tp-pageheader--cover)) + .tp-bg--default,
.tp-bg--white:not(.tp-section--hero, .tp-section--model-hero, .tp-section--cta, .tp-section--model-cta) + .tp-bg--white,
.tp-bg--stone:not(.tp-section--hero, .tp-section--model-hero, .tp-section--cta, .tp-section--model-cta) + .tp-bg--stone { padding-top: 0; }
/* The model intro already sits below the hero, so the spec strip follows closely. */
.tp-section--model-hero + .tp-section--model-specs { padding-top: clamp(1.5rem, 1rem + 1.5vw, 2.5rem); }
.tp-modelintro { padding-block: clamp(3rem, 2rem + 3vw, 5rem) 0; }

.tp-bg--default { background: var(--tp-bg); }
.tp-bg--white { background: var(--tp-white); }
.tp-bg--stone { background: var(--tp-stone-soft); }
.tp-bg--sage { background: var(--tp-sage-soft); }
.tp-bg--dark { background: var(--tp-dark); color: var(--tp-ink-on-dark); }
.tp-bg--image { background: var(--tp-dark) var(--tp-section-image) center / cover no-repeat; color: var(--tp-ink-on-dark); isolation: isolate; }
.tp-bg--image::before { content: ""; position: absolute; inset: 0; background: color-mix(in srgb, var(--tp-dark) 70%, transparent); z-index: -1; }
.is-dark .tp-eyebrow { color: var(--tp-accent); }
.is-dark .tp-intro, .is-dark .tp-muted { color: var(--tp-muted-on-dark); }

/* Sections that are full-bleed images supply their own spacing. */
.tp-section--hero, .tp-section--model-hero { padding: 0 !important; }
.tp-section--page-header:has(.tp-pageheader--cover) { padding: 0 !important; }

/* Core blocks placed between sections. */
.tp-content > :not(.tp-section):not(section):not(header) { max-width: calc(760px + var(--tp-gutter) * 2); margin-inline: auto; padding-inline: var(--tp-gutter); }
.tp-flow > * + * { margin-top: 1.25em; }

/* 4. Typography components ------------------------------------------------- */
.tp-eyebrow { font-family: var(--tp-font-body); font-size: var(--tp-fs-eyebrow); font-weight: 600; letter-spacing: var(--tp-label-tracking); text-transform: uppercase; color: var(--tp-accent-text); margin: 0 0 1.5rem; display: flex; align-items: center; gap: .9rem; }
.tp-eyebrow::before { content: ""; width: 2.5rem; height: 1px; background: var(--tp-accent); }
.tp-head { max-width: 60rem; margin-bottom: clamp(2.5rem, 1.6rem + 3vw, 5rem); }
.tp-head--center { margin-inline: auto; text-align: center; }
.tp-head--center .tp-eyebrow { justify-content: center; }
.tp-heading { font-size: var(--tp-fs-h2); }
.tp-heading--page { font-size: var(--tp-fs-h1); }
.tp-heading--sm { font-size: var(--tp-fs-h3); }
.tp-head .tp-heading + .tp-intro { margin-top: 1.25rem; }
.tp-intro { font-size: var(--tp-fs-lead); line-height: 1.65; color: var(--tp-muted); max-width: 40rem; font-weight: 400; }
.tp-prose { max-width: 42rem; }
.tp-prose p { color: inherit; }
.tp-prose a { color: var(--tp-primary); }
.is-dark .tp-prose a { color: var(--tp-primary-ink); }
.tp-prose strong { font-weight: 600; }
.tp-disclaimer { font-size: var(--tp-fs-small); color: var(--tp-muted); margin-top: 2rem; max-width: 48rem; }
.is-dark .tp-disclaimer { color: var(--tp-muted-on-dark); }

/* 5. Buttons & links ------------------------------------------------------- */
.tp-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.5rem; margin-top: 2rem; }
.tp-head + .tp-actions, .tp-hero__content .tp-actions { margin-top: 2.25rem; }
.tp-btn {
	--_bg: var(--tp-primary); --_fg: var(--tp-primary-ink); --_bd: var(--tp-primary);
	display: inline-flex; align-items: center; justify-content: center; gap: .6rem;
	min-height: max(2.75rem, var(--tp-btn-height)); padding: 0 calc(var(--tp-btn-pad) * 1.35);
	border-radius: var(--tp-btn-radius); border: var(--tp-btn-border) solid var(--_bd);
	background: var(--_bg); color: var(--_fg);
	font-family: var(--tp-font-body); font-size: calc(var(--tp-btn-font) * .82); font-weight: 600; letter-spacing: .16em; text-transform: uppercase; line-height: 1;
	text-decoration: none; cursor: pointer; white-space: nowrap;
	transition: background-color .5s var(--tp-ease), color .5s var(--tp-ease), border-color .5s var(--tp-ease), transform .3s var(--tp-ease);
}
.tp-btn:hover { --_bg: var(--tp-primary-hover); --_bd: var(--tp-primary-hover); color: var(--_fg); }
.tp-btn:active { transform: translateY(1px); }
.tp-btn--secondary { --_bg: transparent; --_fg: var(--tp-primary); --_bd: var(--tp-primary); }
.tp-btn--secondary:hover { --_bg: var(--tp-primary); --_fg: var(--tp-primary-ink); --_bd: var(--tp-primary); }
.tp-btn--light { --_bg: var(--tp-primary-ink); --_fg: var(--tp-dark); --_bd: var(--tp-primary-ink); }
.tp-btn--light:hover { --_bg: transparent; --_fg: var(--tp-primary-ink); --_bd: var(--tp-primary-ink); }
.is-dark .tp-btn--secondary { --_fg: var(--tp-primary-ink); --_bd: var(--tp-line-on-dark); }
.is-dark .tp-btn--secondary:hover { --_bg: var(--tp-primary-ink); --_fg: var(--tp-dark); --_bd: var(--tp-primary-ink); }
.is-dark .tp-btn--primary { --_bg: var(--tp-primary-ink); --_fg: var(--tp-dark); --_bd: var(--tp-primary-ink); }
.tp-link-arrow { display: inline-flex; align-items: center; gap: .7rem; min-height: 2.75rem; font-weight: 600; font-size: .72rem; letter-spacing: .16em; text-transform: uppercase; color: var(--tp-primary); text-decoration: none; background: none; border: 0; padding: 0; cursor: pointer; }
.tp-link-arrow > span:first-child { background: linear-gradient(currentColor, currentColor) 0 100% / 0 1px no-repeat; transition: background-size .45s var(--tp-ease); padding-bottom: 2px; }
.tp-link-arrow::after { content: ""; width: 1.1rem; height: .7rem; background: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 11'%3E%3Cpath d='M0 5.5h16M11.5 1 16 5.5 11.5 10' fill='none' stroke='black' stroke-width='1.4'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 11'%3E%3Cpath d='M0 5.5h16M11.5 1 16 5.5 11.5 10' fill='none' stroke='black' stroke-width='1.4'/%3E%3C/svg%3E") center / contain no-repeat; transition: transform .45s var(--tp-ease); }
.tp-link-arrow:hover > span:first-child, a:hover .tp-link-arrow > span:first-child, .tp-card:hover .tp-link-arrow > span:first-child { background-size: 100% 1px; }
.tp-link-arrow:hover::after, a:hover .tp-link-arrow::after, .tp-card:hover .tp-link-arrow::after { transform: translateX(4px); }
.is-dark .tp-link-arrow, .tp-hero .tp-link-arrow { color: var(--tp-primary-ink); }
.tp-stretched::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.tp-chip { display: inline-flex; align-items: center; min-height: 2.75rem; padding: 0 1.25rem; border-radius: 0; border: 1px solid var(--tp-line-strong); background: transparent; cursor: pointer; font-size: .72rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; transition: background-color .35s var(--tp-ease), color .35s var(--tp-ease), border-color .35s var(--tp-ease); }
.tp-chip:hover { border-color: var(--tp-primary); }
.tp-chip.is-active { background: var(--tp-primary); border-color: var(--tp-primary); color: var(--tp-primary-ink); }
.tp-badge { position: absolute; top: 1.25rem; left: 1.25rem; z-index: 2; background: var(--tp-bg); color: var(--tp-accent-text); font-size: .65rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; padding: .55rem .85rem; border-radius: 0; }
.tp-icon { width: 1.5rem; height: 1.5rem; flex: none; }

/* 6. Media ----------------------------------------------------------------- */
.tp-media { position: relative; overflow: hidden; background: var(--tp-stone); border-radius: var(--tp-radius); display: block; margin: 0; }
/* Photo motion: one transform built from three parts — scroll drift (--tp-py, set by JS),
   the reveal zoom (--tp-img-scale, eased by CSS) and the hover zoom (--tp-img-hover). */
@property --tp-img-scale { syntax: "<number>"; inherits: true; initial-value: 1; }
@property --tp-img-hover { syntax: "<number>"; inherits: true; initial-value: 1; }
.tp-media { --tp-img-scale: 1; --tp-img-hover: 1; transition: --tp-img-scale 2s var(--tp-ease), --tp-img-hover 1.6s var(--tp-ease); }
.tp-media img { width: 100%; height: 100%; object-fit: cover; transform: translate3d(0, var(--tp-py, 0%), 0) scale(calc(var(--tp-img-scale) * var(--tp-img-hover) * var(--tp-img-base, 1))); }
/* Media that drifts on scroll is drawn slightly larger so its edges never show. */
[data-drift] { --tp-img-base: 1.12; }
a.tp-media:hover, .tp-card:hover .tp-media, .tp-model-card:hover .tp-media, .tp-project-card:hover .tp-media, .tp-post-card:hover .tp-media { --tp-img-hover: 1.04; }
.tp-ratio--portrait { aspect-ratio: 4 / 5; }
.tp-ratio--landscape { aspect-ratio: 4 / 3; }
.tp-ratio--square { aspect-ratio: 1; }

/* 7. Header ---------------------------------------------------------------- */
.tp-header { position: relative; z-index: 100; }
.has-sticky-header .tp-header { position: sticky; top: 0; }
.admin-bar.has-sticky-header .tp-header { top: 32px; }
@media (max-width: 782px) { .admin-bar.has-sticky-header .tp-header { top: 0; } }
.tp-header__bar { background: var(--tp-bg); border-bottom: 1px solid transparent; transition: background-color .4s var(--tp-ease), border-color .4s var(--tp-ease), color .4s var(--tp-ease), transform .45s var(--tp-ease); }
.tp-header--bg-surface .tp-header__bar { background: var(--tp-white); }
.tp-header--bg-primary .tp-header__bar { background: var(--tp-primary); color: var(--tp-primary-ink); }
.tp-header.is-scrolled .tp-header__bar { border-color: var(--tp-line); }
.tp-header__inner { display: flex; align-items: center; gap: 2rem; min-height: var(--tp-header-h); }
.tp-header--center .tp-header__inner { display: grid; grid-template-columns: 1fr auto 1fr; }
.tp-header--center .tp-logo { grid-column: 2; grid-row: 1; }
.tp-header--center .tp-nav { grid-column: 1; grid-row: 1; }
.tp-header--center .tp-header__actions { grid-column: 3; justify-content: flex-end; }
.tp-header__actions { display: flex; align-items: center; gap: 1rem; margin-left: auto; }
.tp-header--center .tp-header__actions { margin-left: 0; }
.tp-header.is-hidden .tp-header__bar { transform: translateY(-100%); }

/* Transparent over hero images */
.has-image-hero .tp-header { position: fixed; top: 0; left: 0; right: 0; }
.admin-bar.has-image-hero .tp-header { top: 32px; }
.has-image-hero:not(.has-sticky-header) .tp-header { position: absolute; }
.has-image-hero .tp-header:not(.is-scrolled) .tp-header__bar { background: transparent; color: var(--tp-primary-ink); }
.has-image-hero .tp-header:not(.is-scrolled) .tp-btn--primary { --_bg: var(--tp-primary-ink); --_fg: var(--tp-dark); --_bd: var(--tp-primary-ink); }
.has-image-hero .tp-header:not(.is-scrolled) .tp-btn--primary:hover { --_bg: transparent; --_fg: var(--tp-primary-ink); }
.has-image-hero .tp-header:not(.is-scrolled) .tp-header__bar::before { content: ""; position: absolute; inset: 0 0 -40px; background: linear-gradient(to bottom, rgba(0,0,0,.35), transparent); pointer-events: none; z-index: -1; }
.tp-header__bar { position: relative; isolation: isolate; }

/* Logo */
.tp-logo { display: inline-flex; align-items: center; text-decoration: none; color: var(--tp-primary); flex: none; position: relative; }
.tp-logo:hover { color: var(--tp-primary); }
.tp-logo__img { height: var(--tp-logo-height); width: auto; }
.tp-logo__img--light { display: none; }
.has-image-hero .tp-header:not(.is-scrolled) .tp-logo__img--light { display: block; }
.has-image-hero .tp-header:not(.is-scrolled) .tp-logo__img--light ~ .tp-logo__img--default,
.has-image-hero .tp-header:not(.is-scrolled) .tp-logo__img--default:not(.tp-logo__img--both) { display: none; }
.has-image-hero .tp-header:not(.is-scrolled) .tp-logo__img--both { filter: brightness(0) invert(1); }
.has-image-hero .tp-header:not(.is-scrolled) .tp-logo, .tp-header--bg-primary .tp-logo, .tp-footer .tp-logo { color: var(--tp-primary-ink); }
.tp-wordmark { display: inline-flex; align-items: center; height: var(--tp-logo-height); --tp-logo-sub: var(--tp-secondary); }
.tp-wordmark__svg { height: 100%; width: auto; overflow: visible; }
.has-image-hero .tp-header:not(.is-scrolled) .tp-wordmark, .tp-footer .tp-wordmark, .tp-header--bg-primary .tp-wordmark { --tp-logo-sub: color-mix(in srgb, var(--tp-primary-ink) 78%, transparent); }

/* Desktop nav */
.tp-nav { flex: 1; display: flex; justify-content: center; }
.tp-header--center .tp-nav { justify-content: flex-start; }
.tp-menu { list-style: none; margin: 0; padding: 0; display: flex; align-items: center; gap: clamp(.9rem, .2rem + 1.4vw, 2.1rem); }
.tp-menu > li { position: relative; }
.tp-menu a { display: inline-flex; align-items: center; gap: .4rem; text-decoration: none; font-size: .72rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; padding: .75rem 0; position: relative; }
.tp-menu > li > a::after { content: ""; position: absolute; left: 0; right: 0; bottom: .3rem; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: right; transition: transform .45s var(--tp-ease); }
.tp-menu > li > a:hover::after, .tp-menu > .current-menu-item > a::after, .tp-menu > .current-menu-ancestor > a::after, .tp-menu > .current-page-ancestor > a::after { transform: scaleX(1); transform-origin: left; }
.tp-menu a:hover { color: inherit; }
.tp-menu .menu-item-has-children > a::before { content: ""; order: 2; width: .45rem; height: .45rem; border-right: 1.25px solid currentColor; border-bottom: 1.25px solid currentColor; transform: rotate(45deg) translateY(-3px); opacity: .7; }
.tp-menu .sub-menu { list-style: none; margin: 0; padding: .75rem; position: absolute; top: 100%; left: -1.25rem; min-width: 16rem; background: var(--tp-bg); color: var(--tp-text); border: 1px solid var(--tp-line); border-radius: 0; box-shadow: 0 30px 60px -30px rgba(7, 30, 22, .35); opacity: 0; visibility: hidden; transform: translateY(8px); transition: opacity .3s var(--tp-ease), transform .3s var(--tp-ease), visibility .3s; }
.tp-menu li:hover > .sub-menu, .tp-menu li:focus-within > .sub-menu { opacity: 1; visibility: visible; transform: none; }
.tp-menu .sub-menu a { display: flex; padding: .75rem .9rem; border-radius: 0; width: 100%; letter-spacing: .12em; }
.tp-menu .sub-menu a:hover, .tp-menu .sub-menu .current-menu-item > a { background: var(--tp-sage-soft); color: var(--tp-primary); }
.tp-menu__empty { font-size: .85rem; }

/* Burger + mobile menu */
.tp-burger { display: none; align-items: center; gap: .75rem; min-height: 2.75rem; background: none; border: 0; padding: 0; cursor: pointer; font-size: .72rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; }
.tp-burger__lines { display: grid; gap: 6px; width: 22px; }
.tp-burger__lines span { height: 1.5px; background: currentColor; }
.tp-mobile { position: fixed; inset: 0; z-index: 200; background: var(--tp-bg); color: var(--tp-text); display: flex; flex-direction: column; overflow-y: auto; overscroll-behavior: contain; }
.tp-mobile[hidden] { display: none; }
.tp-mobile.is-open { animation: tp-fade .35s var(--tp-ease); }
.tp-mobile .tp-logo { color: var(--tp-primary) !important; }
.tp-mobile .tp-logo__img--light { display: none !important; }
.tp-mobile .tp-logo__img--default { display: block !important; filter: none !important; }
.tp-mobile .tp-wordmark { --tp-logo-sub: var(--tp-secondary) !important; }
.tp-mobile__top { display: flex; align-items: center; justify-content: space-between; min-height: var(--tp-header-h); border-bottom: 1px solid var(--tp-line); }
.tp-mobile__close { display: inline-flex; align-items: center; gap: .5rem; background: none; border: 0; cursor: pointer; font-weight: 500; padding: .75rem 0; }
.tp-mobile__nav { padding-block: 1.5rem; flex: 1; }
.tp-mobile-menu { list-style: none; margin: 0; padding: 0; }
.tp-mobile-menu > li { border-bottom: 1px solid var(--tp-line); position: relative; }
.tp-mobile-menu > li > a { display: flex; min-height: 4rem; align-items: center; font-family: var(--tp-font-heading); font-size: clamp(1.9rem, 1.4rem + 2.4vw, 2.6rem); letter-spacing: var(--tp-tracking-tight); text-decoration: none; padding-right: 3.5rem; }
.tp-mobile-menu .sub-menu { list-style: none; margin: 0 0 1rem; padding: 0; }
.tp-mobile-menu .sub-menu[hidden] { display: none; }
.tp-mobile-menu .sub-menu a { display: flex; min-height: 2.9rem; align-items: center; text-decoration: none; color: var(--tp-muted); font-size: 1.05rem; }
.tp-submenu-toggle { position: absolute; right: 0; top: .6rem; width: 2.75rem; height: 2.75rem; border: 1px solid var(--tp-line); border-radius: 50%; background: none; cursor: pointer; display: grid; place-items: center; }
.tp-submenu-toggle::before, .tp-submenu-toggle::after { content: ""; grid-area: 1 / 1; width: 12px; height: 1.5px; background: currentColor; transition: transform .3s var(--tp-ease); }
.tp-submenu-toggle::after { transform: rotate(90deg); }
.tp-submenu-toggle[aria-expanded="true"]::after { transform: rotate(0deg); }
.tp-mobile__footer { padding-block: 1.5rem 2.5rem; border-top: 1px solid var(--tp-line); display: grid; gap: 1.5rem; }
.tp-mobile__footer .tp-actions { margin: 0; }
.tp-mobile__footer .tp-btn { flex: 1; }
body.tp-menu-open { overflow: hidden; }

/* Top bar */
.tp-topbar { background: var(--tp-dark); color: var(--tp-ink-on-dark); font-size: .8125rem; }
.tp-topbar__inner { display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 2.5rem; }
.tp-topbar__meta { display: flex; align-items: center; gap: 1.5rem; margin-left: auto; }
.tp-topbar .tp-contact { display: flex; gap: 1.25rem; }
.tp-topbar .tp-contact__item--address { display: none; }
.tp-topbar a { text-decoration: none; }
.has-image-hero .tp-topbar { display: none; }

@media (max-width: 1080px) {
	.tp-nav { display: none; }
	.tp-burger { display: inline-flex; }
	.tp-header__actions .tp-btn--header { display: none; }
	.tp-header--center .tp-header__inner { grid-template-columns: auto 1fr; }
	.tp-header--center .tp-logo { grid-column: 1; }
	.tp-header--center .tp-header__actions { grid-column: 2; }
}
@media (min-width: 1081px) { .tp-mobile { display: none !important; } }
@media (max-width: 600px) { :root { --tp-header-h: 64px; --tp-logo-height: 36px; } .tp-topbar { display: none; } }

/* 8. Breadcrumbs ----------------------------------------------------------- */
.tp-breadcrumbs ol { list-style: none; display: flex; flex-wrap: wrap; gap: .4rem; margin: 0 0 2rem; padding: 0; font-size: .8125rem; color: var(--tp-muted); }
.tp-breadcrumbs li + li::before { content: "/"; margin-right: .4rem; opacity: .5; }
.tp-breadcrumbs a { text-decoration: none; }
.tp-breadcrumbs a:hover { text-decoration: underline; }
.tp-hero .tp-breadcrumbs ol { color: var(--tp-muted-on-dark); }

/* 9. Hero ------------------------------------------------------------------ */
.tp-hero { position: relative; display: flex; align-items: flex-end; overflow: hidden; background: var(--tp-dark); color: var(--tp-primary-ink); isolation: isolate; }
.tp-hero--full { min-height: 100svh; }
.tp-hero--large { min-height: min(88svh, 60rem); }
.tp-hero--medium { min-height: min(68svh, 44rem); }
.tp-hero__media { position: absolute; inset: 0; z-index: -2; }
.tp-hero__media { transform-origin: 50% 40%; }
.tp-hero__media img { width: 100%; height: 100%; object-fit: cover; will-change: transform;
	/* --tp-hero-p runs 0 → 1 while the hero scrolls away (set by JS). */
	transform: translate3d(0, calc(var(--tp-hero-p, 0) * 14%), 0) scale(calc(1.04 + var(--tp-hero-p, 0) * .1)); }
.tp-hero__inner { transform: translate3d(0, calc(var(--tp-hero-p, 0) * -90px), 0); opacity: calc(1 - var(--tp-hero-p, 0) * 1.4); will-change: transform, opacity; }
.tp-hero::before { content: ""; position: absolute; inset: 0; z-index: -1; background: #06120d; opacity: calc(var(--tp-hero-p, 0) * .55); pointer-events: none; }
.tp-hero::after { content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none; }
.tp-hero--overlay-light::after { background: linear-gradient(180deg, rgba(10, 22, 16, .25) 0%, rgba(10, 22, 16, .05) 40%, rgba(10, 22, 16, .45) 100%); }
.tp-hero--overlay-medium::after { background: linear-gradient(180deg, rgba(6, 18, 13, .45) 0%, rgba(6, 18, 13, .05) 32%, rgba(6, 18, 13, .2) 60%, rgba(6, 18, 13, .78) 100%), linear-gradient(90deg, rgba(6, 18, 13, .35) 0%, transparent 60%); }
.tp-hero--overlay-strong::after { background: linear-gradient(180deg, rgba(10, 22, 16, .55) 0%, rgba(10, 22, 16, .45) 40%, rgba(10, 22, 16, .85) 100%); }
.tp-hero--no-image { background: var(--tp-dark); }
.tp-hero__inner { padding-top: calc(var(--tp-header-h) + 3rem); padding-bottom: clamp(3rem, 2rem + 5vw, 6.5rem); }
.tp-hero__content { max-width: 58rem; }
.tp-hero--center { text-align: center; align-items: center; }
.tp-hero--center .tp-hero__content { margin-inline: auto; }
.tp-hero--center .tp-eyebrow, .tp-hero--center .tp-actions { justify-content: center; }
.tp-hero .tp-eyebrow { color: var(--tp-primary-ink); opacity: .85; }
.tp-hero__heading { font-size: var(--tp-fs-display); line-height: .96; letter-spacing: var(--tp-tracking-tight); font-weight: var(--tp-heading-weight); }
.tp-hero__heading--page { font-size: var(--tp-fs-h1); }
.tp-hero__text { font-size: var(--tp-fs-lead); max-width: 34rem; margin-top: 1.75rem; color: var(--tp-ink-on-dark); line-height: 1.65; }
.tp-hero__content { position: relative; }
.tp-hero--center .tp-hero__text { margin-inline: auto; }
.tp-hero__scroll { position: absolute; right: var(--tp-gutter); bottom: clamp(3rem, 2rem + 5vw, 6.5rem); display: flex; flex-direction: column; align-items: center; gap: .9rem; color: var(--tp-primary-ink); text-decoration: none; font-size: .7rem; letter-spacing: .2em; text-transform: uppercase; writing-mode: vertical-rl; }
.tp-hero__scroll:hover { color: var(--tp-primary-ink); }
.tp-hero__scroll-line { width: 1px; height: 4rem; background: color-mix(in srgb, var(--tp-primary-ink) 30%, transparent); position: relative; overflow: hidden; }
.tp-hero__scroll-line::after { content: ""; position: absolute; inset: 0; background: var(--tp-primary-ink); transform: translateY(-100%); animation: tp-scrollline 2.4s var(--tp-ease-inout) infinite; }
@media (max-width: 760px) { .tp-hero__scroll { display: none; } }

/* 9b. Hero video & scroll-into-interior ------------------------------------- */
.tp-hero__stage { display: contents; }
.tp-hero__media > img, .tp-hero__media > video, .tp-cine__inside > img, .tp-cine__inside > video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.tp-hero__video { opacity: 0; transition: opacity 1.2s var(--tp-ease); }
.tp-hero__video.is-playing { opacity: 1; }
/* "Hold" mode: poster and video share one slow, endless drift so the frame stays alive after the clip stops. */
.tp-motion .tp-hero__media--drift > img, .tp-motion .tp-hero__media--drift > video { animation: tp-drift 26s ease-in-out infinite alternate; }
@keyframes tp-drift { from { transform: scale(1) translate3d(0, 0, 0); } to { transform: scale(1.08) translate3d(-1.2%, -1%, 0); } }
/* Crossfade loop: the second copy of the clip dissolves in over the first. */
.tp-hero__video--twin { transition: opacity var(--tp-xfade, 1.4s) linear; }

/* overflow: clip (not hidden) so the sticky stage still pins to the viewport. */
.tp-hero--cinematic { display: block; min-height: 0; overflow: clip; }
.tp-hero--cinematic::after, .tp-hero--cinematic::before { display: none; }
.tp-hero--cinematic .tp-hero__stage { position: relative; display: flex; align-items: flex-end; height: 100svh; min-height: 34rem; overflow: hidden; isolation: isolate; }
.tp-hero--cinematic .tp-hero__stage::after { content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none; background: linear-gradient(180deg, rgba(6, 18, 13, .45) 0%, rgba(6, 18, 13, .05) 30%, rgba(6, 18, 13, .15) 58%, rgba(6, 18, 13, .78) 100%), linear-gradient(90deg, rgba(6, 18, 13, .4) 0%, transparent 62%); }
.tp-hero--cinematic .tp-hero__media { transform-origin: var(--tp-zx, 50%) var(--tp-zy, 50%); transform: scale(var(--tp-out-scale, 1)); opacity: var(--tp-out-op, 1); filter: blur(var(--tp-out-blur, 0px)); will-change: transform, opacity, filter; animation: none; }
.tp-hero--cinematic .tp-hero__media img, .tp-hero--cinematic .tp-hero__video { transform: none; }
.tp-hero--cinematic .tp-hero__inner { transform: translate3d(0, var(--tp-intro-y, 0px), 0); opacity: var(--tp-intro-op, 1); }
.tp-hero--cinematic .tp-hero__scroll { opacity: var(--tp-intro-op, 1); }
.tp-cine__inside { position: absolute; inset: 0; z-index: -2; opacity: var(--tp-in-op, 0); transform: scale(var(--tp-in-scale, 1.22)); filter: blur(var(--tp-in-blur, 0px)); will-change: transform, opacity, filter; }
.tp-cine__caption { position: absolute; left: 0; right: 0; bottom: clamp(3rem, 2rem + 5vw, 6.5rem); color: var(--tp-primary-ink); opacity: var(--tp-cap-op, 0); transform: translate3d(0, var(--tp-cap-y, 40px), 0); pointer-events: none; }
.tp-cine__inside::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(90deg, rgba(6, 18, 13, .78) 0%, rgba(6, 18, 13, .42) 42%, rgba(6, 18, 13, 0) 72%), linear-gradient(0deg, rgba(6, 18, 13, .6) 0%, rgba(6, 18, 13, 0) 55%); }
.tp-cine__caption .tp-eyebrow { color: var(--tp-primary-ink); }
.tp-cine__caption .tp-eyebrow::before { background: var(--tp-accent); }
.tp-cine__caption { text-shadow: 0 1px 24px rgba(6, 18, 13, .35); }
.tp-cine__heading { font-family: var(--tp-font-heading); font-weight: var(--tp-heading-weight); font-size: var(--tp-fs-h1); line-height: 1; letter-spacing: var(--tp-tracking-tight); margin: 0; max-width: 16ch; text-wrap: balance; }
.tp-cine__heading em { font-style: italic; color: var(--tp-accent); }
.tp-cine__text { font-size: var(--tp-fs-lead); line-height: 1.65; max-width: 34rem; margin-top: 1.5rem; color: var(--tp-ink-on-dark); }
.tp-cine__progress { position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: rgba(246, 244, 239, .14); }
.tp-cine__progress span { display: block; height: 100%; background: var(--tp-accent); transform-origin: left; transform: scaleX(var(--tp-cine, 0)); }

/* 360° interior */
.tp-pano { position: absolute; inset: 0; width: 100%; height: 100%; display: block; opacity: 0; transition: opacity .8s var(--tp-ease); cursor: grab; touch-action: pan-y; }
.tp-pano.is-ready { opacity: 1; }
.tp-pano.is-dragging { cursor: grabbing; }
.tp-pano:focus-visible { outline: 2px solid var(--tp-primary-ink); outline-offset: -6px; }
/* Once inside, the whole stage is the look-around surface. */
.tp-hero--cinematic.has-pano.is-inside .tp-hero__stage { cursor: grab; touch-action: pan-y; -webkit-user-select: none; user-select: none; }
.tp-hero--cinematic.has-pano.is-inside .tp-hero__stage.is-dragging { cursor: grabbing; }
.tp-hero--cinematic.has-pano .tp-cine__inside::after { background: linear-gradient(90deg, rgba(6, 18, 13, .55) 0%, rgba(6, 18, 13, .15) 40%, rgba(6, 18, 13, 0) 65%), linear-gradient(0deg, rgba(6, 18, 13, .45) 0%, rgba(6, 18, 13, 0) 40%); opacity: calc(var(--tp-cap-op, 0) * .9 + .25); }
.tp-hero--cinematic.is-inside .tp-hero__inner, .tp-hero--cinematic.is-inside .tp-hero__scroll { pointer-events: none; }
.tp-hero--cinematic .tp-cine__inside { pointer-events: none; }
.tp-hero--cinematic.is-inside .tp-cine__inside { pointer-events: auto; }
.tp-hero--cinematic .tp-hero__stage::after { transition: opacity .6s; }
.tp-hero--cinematic.has-pano.is-inside .tp-hero__stage::after { opacity: calc(1 - var(--tp-hint-op, 0) * .6); }
.tp-pano__hint { position: absolute; left: 50%; bottom: clamp(1.5rem, 1rem + 2vw, 2.75rem); transform: translateX(-50%); display: inline-flex; align-items: center; gap: .6rem; margin: 0; padding: .65rem 1.1rem; border-radius: 999px; background: rgba(6, 18, 13, .55); color: var(--tp-primary-ink); font-size: .7rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; opacity: var(--tp-hint-op, 0); pointer-events: none; white-space: nowrap; }
.tp-pano__hint svg { animation: tp-hint-nudge 2.4s var(--tp-ease-inout) infinite; }
@keyframes tp-hint-nudge { 0%, 100% { transform: translateX(-3px); } 50% { transform: translateX(3px); } }

/* The long scroll track only exists when motion is on; otherwise the hero is a normal still. */
.tp-motion .tp-hero--cinematic { height: 340svh; }
.tp-motion .tp-hero--cinematic.has-pano { height: 600svh; }
.tp-motion .tp-hero--cinematic .tp-hero__media { animation: none; }
.tp-motion .tp-hero--cinematic .tp-cine__outside > img { animation: tp-hero-in 2.4s var(--tp-ease) both; }
.tp-motion .tp-hero--cinematic .tp-hero__stage { position: sticky; top: 0; }
@media (max-width: 760px) { .tp-motion .tp-hero--cinematic { height: 260svh; } .tp-motion .tp-hero--cinematic.has-pano { height: 460svh; } }
html:not(.tp-motion) .tp-cine__inside, html:not(.tp-motion) .tp-cine__caption, html:not(.tp-motion) .tp-cine__progress, html:not(.tp-motion) .tp-pano__hint { display: none; }

/* 10. Page header ---------------------------------------------------------- */
.tp-section--page-header { padding-top: calc(var(--tp-space-compact) + .5rem) !important; }
.tp-pageheader__grid { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: 2rem var(--tp-gap); align-items: end; }
.tp-pageheader__title .tp-heading--page { max-width: 16ch; }
.tp-pageheader__aside .tp-intro { margin: 0; }
.tp-pageheader__aside .tp-actions { margin-top: 1.5rem; }
.tp-pageheader__media { margin-top: clamp(2.5rem, 2rem + 3vw, 4.5rem); aspect-ratio: 21 / 9; }
@media (max-width: 860px) { .tp-pageheader__grid { grid-template-columns: 1fr; } .tp-pageheader__media { aspect-ratio: 4 / 3; } }

/* 11. Statement ------------------------------------------------------------ */
.tp-statement { display: grid; gap: clamp(3rem, 2rem + 4vw, 6rem); }
/* Heading on the left, paragraph and link settling against its last line on the right. */
.tp-statement__top { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); gap: 2rem clamp(2rem, 1rem + 4vw, 6rem); align-items: end; }
.tp-statement__heading { font-size: var(--tp-fs-h1); line-height: 1.02; max-width: 15ch; }
.tp-statement__text { max-width: 28rem; font-size: 1.075rem; line-height: 1.75; color: var(--tp-muted); padding-bottom: .5rem; border-left: 1px solid var(--tp-line); padding-left: clamp(1.25rem, .5rem + 2vw, 2.25rem); }
.tp-statement__text .tp-actions { margin-top: 1.75rem; }
.is-dark .tp-statement__text { color: var(--tp-muted-on-dark); }

/* Photo pair: a wide main photo, and an upright one set lower so the two overlap in rhythm. */
.tp-statement__media { display: grid; grid-template-columns: 1fr; }
.tp-statement__media--pair { grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); gap: var(--tp-gap); align-items: start; }
.tp-statement__figure { margin: 0; }
.tp-statement__figure--main .tp-media { aspect-ratio: 16 / 10; }
.tp-statement__figure--second { margin-top: clamp(3rem, 1rem + 8vw, 9rem); }
.tp-statement__figure--second .tp-media { aspect-ratio: 4 / 5; }
.tp-statement__media:not(.tp-statement__media--pair) .tp-statement__figure--second { margin-top: 0; max-width: 34rem; }
.tp-statement__caption { display: flex; align-items: center; gap: .75rem; margin-top: 1rem; font-size: .8rem; letter-spacing: .04em; color: var(--tp-muted); }
.tp-statement__caption::before { content: ""; width: 1.75rem; height: 1px; background: currentColor; opacity: .5; }

/* Key facts: quiet ruled columns with large serif figures. */
.tp-statement__facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); margin: 0; border-top: 1px solid var(--tp-line); }
.tp-statement__fact { padding: clamp(1.5rem, 1rem + 1.5vw, 2.5rem) clamp(1rem, .5rem + 1.5vw, 2.25rem) 0 0; }
.tp-statement__fact + .tp-statement__fact { border-left: 1px solid var(--tp-line); padding-left: clamp(1rem, .5rem + 1.5vw, 2.25rem); }
.tp-statement__value { font-family: var(--tp-font-heading); font-size: clamp(2.4rem, 1.6rem + 2.4vw, 3.6rem); line-height: 1; letter-spacing: var(--tp-tracking-tight); color: var(--tp-text); font-variant-numeric: lining-nums; }
.tp-statement__label { margin: .9rem 0 0; font-size: var(--tp-fs-eyebrow); font-weight: 600; letter-spacing: var(--tp-label-tracking); text-transform: uppercase; color: var(--tp-accent-text); }
.tp-statement__label span { display: block; margin-top: .55rem; font-size: .95rem; font-weight: 400; letter-spacing: 0; text-transform: none; line-height: 1.6; color: var(--tp-muted); max-width: 22rem; }
.is-dark .tp-statement__value { color: var(--tp-primary-ink); }
.is-dark .tp-statement__label span, .is-dark .tp-statement__caption { color: var(--tp-muted-on-dark); }

@media (max-width: 960px) {
	.tp-statement__top { grid-template-columns: 1fr; align-items: start; }
	.tp-statement__text { border-left: 0; padding-left: 0; }
}
@media (max-width: 700px) {
	.tp-statement__media--pair { grid-template-columns: minmax(0, 1fr) minmax(0, .62fr); gap: .75rem; }
	.tp-statement__media--pair .tp-statement__figure--main .tp-media { aspect-ratio: 4 / 5; }
	.tp-statement__figure--second { margin-top: 4rem; }
	.tp-statement__caption { font-size: .72rem; margin-top: .6rem; }
	.tp-statement__caption::before { display: none; }
	.tp-statement__facts { grid-template-columns: 1fr; }
	.tp-statement__fact, .tp-statement__fact + .tp-statement__fact { padding: 1.5rem 0; border-left: 0; }
	.tp-statement__fact + .tp-statement__fact { border-top: 1px solid var(--tp-line); }
	.tp-statement__value { font-size: 2.5rem; }
	.tp-statement__label { margin-top: .6rem; }
}

/* 12. Text + media --------------------------------------------------------- */
.tp-split { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 2.5rem var(--tp-gap); align-items: center; }
.tp-split__text { grid-column: 1 / span 5; }
.tp-split__media { grid-column: 7 / -1; }
.tp-split--img-left .tp-split__text { grid-column: 8 / -1; grid-row: 1; }
.tp-split--img-left .tp-split__media { grid-column: 1 / span 6; grid-row: 1; }
.tp-split--no-img .tp-split__text { grid-column: 1 / span 8; }
.tp-split__text .tp-heading { margin-bottom: 1.5rem; }
.tp-split__text .tp-prose { color: var(--tp-muted); }
.is-dark .tp-split__text .tp-prose { color: var(--tp-muted-on-dark); }
.tp-bullets { list-style: none; counter-reset: tp; margin: 2rem 0 0; padding: 0; border-top: 1px solid var(--tp-line); }
.tp-bullets li { counter-increment: tp; display: flex; gap: 1.25rem; padding: 1rem 0; border-bottom: 1px solid var(--tp-line); }
.tp-bullets li::before { content: counter(tp, decimal-leading-zero); font-size: .75rem; font-weight: 600; letter-spacing: .08em; color: var(--tp-secondary); padding-top: .25rem; min-width: 1.5rem; }
@media (max-width: 860px) {
	.tp-split, .tp-split--img-left { grid-template-columns: 1fr; }
	.tp-split__text, .tp-split__media, .tp-split--img-left .tp-split__text, .tp-split--img-left .tp-split__media, .tp-split--no-img .tp-split__text { grid-column: 1; grid-row: auto; }
	.tp-split__media { order: -1; }
	.tp-split .tp-ratio--portrait { aspect-ratio: 4 / 3; }
}

/* 13. Cards ---------------------------------------------------------------- */
.tp-cards { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--tp-gap); grid-template-columns: repeat(var(--_cols, 3), minmax(0, 1fr)); }
.tp-cols--2 { --_cols: 2; }
.tp-cols--3 { --_cols: 3; }
.tp-cols--4 { --_cols: 4; }
.tp-card { position: relative; display: flex; flex-direction: column; }
.tp-card__title { font-size: var(--tp-fs-h3); margin-bottom: .85rem; }
.tp-card__title a { text-decoration: none; }
.tp-card__text { color: var(--tp-muted); }
.is-dark .tp-card__text { color: var(--tp-muted-on-dark); }
.tp-card .tp-link-arrow { margin-top: 1.25rem; }
.tp-cards--plain .tp-card, .tp-cards--numbered .tp-card { padding-top: 1.75rem; border-top: 1px solid var(--tp-line-strong); }
.is-dark .tp-cards--plain .tp-card, .is-dark .tp-cards--numbered .tp-card { border-color: var(--tp-line-on-dark); }
.tp-card__icon { display: inline-flex; color: var(--tp-primary); margin-bottom: 1.5rem; }
.is-dark .tp-card__icon { color: var(--tp-accent); }
.tp-card__icon .tp-icon { width: 2rem; height: 2rem; }
.tp-card__num { display: block; font-family: var(--tp-font-heading); font-size: 2.25rem; font-style: italic; font-weight: 400; line-height: 1; color: var(--tp-accent-text); margin-bottom: 2rem; }
.tp-cards--image .tp-card__media { aspect-ratio: 4 / 3; margin-bottom: 1.5rem; }
.tp-cards--tile .tp-card { min-height: clamp(22rem, 18rem + 12vw, 32rem); color: var(--tp-primary-ink); border-radius: var(--tp-radius); overflow: hidden; background: var(--tp-dark); justify-content: flex-end; }
.tp-cards--tile .tp-card__media { position: absolute; inset: 0; border-radius: 0; }
.tp-cards--tile .tp-card__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(10, 22, 16, 0) 30%, rgba(10, 22, 16, .8) 100%); }
.tp-cards--tile .tp-card__body { position: relative; padding: clamp(1.25rem, 1rem + 1vw, 2rem); }
.tp-cards--tile .tp-card__title { font-size: clamp(1.5rem, 1.2rem + 1vw, 2.1rem); }
.tp-cards--tile .tp-card__text { color: var(--tp-ink-on-dark); max-width: 26rem; }
.tp-cards--tile .tp-link-arrow { color: var(--tp-primary-ink); }
/* Text on photo tiles stays light on hover (the site-wide link hover colour would vanish into the image). */
.tp-cards--tile .tp-card a, .tp-cards--tile .tp-card a:hover, .tp-cards--tile .tp-card a:focus-visible { color: var(--tp-primary-ink); }
.tp-cards--tile .tp-card__title, .tp-cards--tile .tp-card__text { text-shadow: 0 1px 18px rgba(6, 18, 13, .45); }
.tp-cards--tile .tp-card__media::after { transition: opacity .5s var(--tp-ease); }
/* Deeper shade on hover sits above the photo, below the text. */
.tp-cards--tile .tp-card__body { z-index: 1; }
.tp-cards--tile .tp-card::after { content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none; background: linear-gradient(180deg, rgba(6, 18, 13, 0) 35%, rgba(6, 18, 13, .35) 100%); opacity: 0; transition: opacity .5s var(--tp-ease); }
.tp-cards--tile .tp-card:hover::after, .tp-cards--tile .tp-card:focus-within::after { opacity: 1; }
.tp-cards--tile.tp-cols--2 .tp-card { min-height: clamp(24rem, 18rem + 18vw, 38rem); }
@media (max-width: 1080px) { .tp-cols--4 { --_cols: 2; } }
@media (max-width: 860px) { .tp-cols--3 { --_cols: 2; } }
@media (max-width: 600px) { .tp-cards { --_cols: 1 !important; } .tp-cards--tile .tp-card { min-height: 22rem; } }

/* 14. Models --------------------------------------------------------------- */
.tp-filterbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem 2rem; padding-bottom: 1.5rem; margin-bottom: clamp(2rem, 1.5rem + 2vw, 3.5rem); border-bottom: 1px solid var(--tp-line); }
.tp-filterbar__chips { display: flex; flex-wrap: wrap; gap: .5rem; }
.tp-filterbar__end { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 2rem; margin-left: auto; }
.tp-filterbar__groups { display: grid; gap: .85rem; min-width: 0; }
.tp-filterbar__chips--labelled { align-items: center; }
.tp-filterbar__label { min-width: 5.5rem; margin-right: .5rem; font-size: var(--tp-fs-eyebrow); font-weight: 600; letter-spacing: var(--tp-label-tracking); text-transform: uppercase; color: var(--tp-accent-text); }
.tp-models__status { margin: -1.75rem 0 1.75rem; font-size: .85rem; color: var(--tp-muted); }
.tp-models__empty { display: grid; justify-items: start; gap: 1rem; padding: clamp(2rem, 1.5rem + 2vw, 3.5rem); border: 1px dashed var(--tp-line); border-radius: var(--tp-radius); color: var(--tp-muted); }
.tp-models__empty[hidden] { display: none; }
.tp-models__empty p { margin: 0; font-size: 1.05rem; }
@media (max-width: 700px) { .tp-filterbar__label { flex-basis: 100%; margin: 0; } .tp-models__status { margin-top: -1rem; } }
.tp-select { display: inline-flex; align-items: center; gap: .75rem; font-size: .875rem; color: var(--tp-muted); }
.tp-select select, .tp-field select { appearance: none; border: 1px solid var(--tp-line-strong); border-radius: 999px; background: transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='m1 1 4 4 4-4' fill='none' stroke='%23171717' stroke-width='1.2'/%3E%3C/svg%3E") right 1rem center / .6rem no-repeat; padding: .55rem 2.25rem .55rem 1rem; color: var(--tp-text); cursor: pointer; }
.tp-models { display: grid; gap: clamp(2.5rem, 2rem + 2vw, 4rem) var(--tp-gap); }
.tp-models--grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.tp-models--row { grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr)); }
.tp-models--editorial { gap: clamp(3.5rem, 2.5rem + 4vw, 7rem); }
.tp-model-card { position: relative; display: flex; flex-direction: column; }
.tp-model-card[hidden] { display: none; }
.tp-model-card__media { aspect-ratio: 4 / 3; margin-bottom: 1.5rem; }
.tp-model-card__title { font-size: var(--tp-fs-h3); }
.tp-model-card__title a { text-decoration: none; }
.tp-model-card__title a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.tp-model-card .tp-link-arrow { position: relative; z-index: 2; }
.tp-model-card__tagline { color: var(--tp-muted); margin-top: .75rem; max-width: 34rem; }
.tp-model-card__specs { display: flex; flex-wrap: wrap; gap: .5rem 2rem; margin: 1.5rem 0 0; font-size: .875rem; }
.tp-model-card__specs div { display: flex; gap: .4rem; }
.tp-model-card__specs dt { color: var(--tp-muted); font-size: .68rem; letter-spacing: .16em; text-transform: uppercase; align-self: center; }
.tp-model-card__specs dd { margin: 0; font-weight: 500; }
.tp-model-card__foot { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; margin-top: 1.5rem; padding-top: 1.25rem; border-top: 1px solid var(--tp-line); }
.tp-price { margin: 0; display: flex; flex-direction: column; line-height: 1.1; }
.tp-price__label { font-size: .65rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; color: var(--tp-accent-text); margin-bottom: .5rem; }
.tp-price__value { font-family: var(--tp-font-heading); font-size: clamp(1.65rem, 1.35rem + .9vw, 2.15rem); font-weight: 500; letter-spacing: var(--tp-tracking-tight); color: var(--tp-primary); line-height: 1; }
.tp-price__value--request { font-size: 1.05rem; color: var(--tp-text); }
.tp-models--row .tp-model-card__title { font-size: 1.35rem; }
.tp-models--editorial .tp-model-card { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 2rem var(--tp-gap); align-items: center; }
.tp-models--editorial .tp-model-card__media { grid-column: 1 / span 7; margin: 0; aspect-ratio: 3 / 2; }
.tp-models--editorial .tp-model-card__body { grid-column: 9 / -1; }
.tp-models--editorial .tp-model-card.is-alt .tp-model-card__media { grid-column: 6 / -1; grid-row: 1; }
.tp-models--editorial .tp-model-card.is-alt .tp-model-card__body { grid-column: 1 / span 4; grid-row: 1; }
.tp-models--editorial .tp-model-card__title { font-size: var(--tp-fs-h2); }
.tp-models--editorial .tp-model-card__specs { display: grid; grid-template-columns: 1fr; gap: 0; border-top: 1px solid var(--tp-line); margin-top: 1.75rem; }
.tp-models--editorial .tp-model-card__specs div { justify-content: space-between; padding: .7rem 0; border-bottom: 1px solid var(--tp-line); }
.tp-models--editorial .tp-model-card__foot { border-top: 0; padding-top: 0; }
@media (max-width: 960px) {
	.tp-models--editorial .tp-model-card, .tp-models--editorial .tp-model-card.is-alt { grid-template-columns: 1fr; }
	.tp-models--editorial .tp-model-card__media, .tp-models--editorial .tp-model-card__body, .tp-models--editorial .tp-model-card.is-alt .tp-model-card__media, .tp-models--editorial .tp-model-card.is-alt .tp-model-card__body { grid-column: 1; grid-row: auto; }
	.tp-models--editorial .tp-model-card__media { aspect-ratio: 4 / 3; }
}
@media (max-width: 700px) { .tp-models--grid { grid-template-columns: 1fr; } .tp-filterbar__end { margin-left: 0; } }

/* 15. Versus comparison ---------------------------------------------------- */
.tp-versus { border-top: 1px solid var(--tp-line-strong); }
.tp-versus__row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr) minmax(0, 1.4fr); gap: 1.5rem var(--tp-gap); padding: 1.35rem 0; border-bottom: 1px solid var(--tp-line); align-items: start; }
.tp-versus__row--head { padding: 1rem 0; font-size: .75rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 600; color: var(--tp-muted); }
.tp-versus__row--head .tp-versus__right { color: var(--tp-primary); }
.tp-versus__label { font-family: var(--tp-font-heading); font-weight: 500; font-size: 1.35rem; line-height: 1.2; }
.tp-versus__left { color: var(--tp-muted); }
.tp-versus__right { display: flex; gap: .75rem; font-weight: 500; }
.tp-versus__check { color: var(--tp-primary); width: 1.25rem; height: 1.25rem; margin-top: .15rem; }
@media (max-width: 760px) {
	.tp-versus__row { grid-template-columns: 1fr 1fr; gap: .5rem 1rem; }
	.tp-versus__row--head { display: none; }
	.tp-versus__label { grid-column: 1 / -1; }
	.tp-versus__left::before, .tp-versus__right::before { content: attr(data-col); display: block; font-size: .7rem; letter-spacing: .1em; text-transform: uppercase; font-weight: 600; color: var(--tp-muted); margin-bottom: .25rem; }
	.tp-versus__right { flex-direction: column; gap: 0; }
	.tp-versus__right::before { color: var(--tp-primary); }
	.tp-versus__check { display: none; }
}

/* 16. Steps ---------------------------------------------------------------- */
.tp-steps { list-style: none; margin: 0; padding: 0; }
.tp-step__num { font-family: var(--tp-font-heading); font-size: .85rem; font-weight: 600; letter-spacing: .08em; color: var(--tp-secondary); }
.tp-step__icon { color: var(--tp-primary); display: inline-flex; }
.is-dark .tp-step__icon { color: var(--tp-accent); }
.tp-step__title { font-size: var(--tp-fs-h3); margin-bottom: .75rem; }
.tp-step__text { color: var(--tp-muted); }
.is-dark .tp-step__text { color: var(--tp-muted-on-dark); }
.tp-checklist { list-style: none; margin: 1.25rem 0 0; padding: 0; display: grid; gap: .6rem; }
.tp-checklist li { display: flex; gap: .7rem; align-items: flex-start; }
.tp-checklist .tp-icon { color: var(--tp-primary); width: 1.15rem; height: 1.15rem; margin-top: .25rem; }
.is-dark .tp-checklist .tp-icon, .is-highlight .tp-checklist .tp-icon { color: var(--tp-accent); }

/* Timeline: horizontal on desktop, vertical on mobile */
.tp-steps--timeline { display: grid; grid-template-columns: repeat(var(--tp-steps, 4), minmax(0, 1fr)); gap: var(--tp-gap); position: relative; }
.tp-steps--timeline .tp-step { position: relative; padding-top: 3.5rem; }
.tp-steps--timeline .tp-step::before { content: ""; position: absolute; top: 1.15rem; left: 0; right: calc(var(--tp-gap) * -1); height: 1px; background: var(--tp-line-strong); }
.tp-steps--timeline .tp-step:last-child::before { right: 0; }
.tp-steps--timeline .tp-step__marker { position: absolute; top: 0; left: 0; display: flex; align-items: center; gap: .9rem; background: inherit; }
.tp-steps--timeline .tp-step__num { display: grid; place-items: center; width: 2.35rem; height: 2.35rem; border-radius: 50%; border: 1px solid var(--tp-line-strong); background: var(--tp-bg); color: var(--tp-primary); position: relative; }
.tp-bg--white .tp-steps--timeline .tp-step__num { background: var(--tp-white); }
.tp-bg--stone .tp-steps--timeline .tp-step__num { background: var(--tp-stone-soft); }
.tp-bg--dark .tp-steps--timeline .tp-step__num { background: var(--tp-dark); color: var(--tp-primary-ink); border-color: var(--tp-line-on-dark); }
.tp-steps--timeline .tp-step__icon { position: absolute; left: calc(100% + .75rem); top: 50%; transform: translateY(-50%); display: none; }
.tp-steps--timeline .tp-step__title { font-size: 1.25rem; }
@media (max-width: 900px) {
	.tp-steps--timeline { grid-template-columns: 1fr; gap: 0; }
	.tp-steps--timeline .tp-step { padding: 0 0 2.25rem 3.75rem; }
	.tp-steps--timeline .tp-step::before { top: 2.35rem; bottom: 0; left: 1.17rem; right: auto; width: 1px; height: auto; }
	.tp-steps--timeline .tp-step:last-child::before { display: none; }
}

/* Stacked chapters */
.tp-steps--stacked { display: grid; gap: clamp(3.5rem, 2.5rem + 5vw, 8rem); }
.tp-steps--stacked .tp-step { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 2rem var(--tp-gap); align-items: center; }
.tp-steps--stacked .tp-step__marker { grid-column: 1 / -1; display: flex; align-items: center; gap: 1rem; border-top: 1px solid var(--tp-line-strong); padding-top: 1.25rem; }
.tp-steps--stacked .tp-step__num { font-size: clamp(3rem, 2.2rem + 3vw, 5.5rem); font-style: italic; color: var(--tp-accent-text); font-weight: 400; line-height: 1; letter-spacing: 0; }
.tp-steps--stacked .tp-step__body { grid-column: 1 / span 5; }
.tp-steps--stacked .tp-step__title { font-size: var(--tp-fs-h2); margin-bottom: 1.25rem; }
.tp-steps--stacked .tp-step__media { grid-column: 7 / -1; aspect-ratio: 4 / 3; }
.tp-steps--stacked .tp-step:nth-child(even) .tp-step__body { grid-column: 8 / -1; grid-row: 2; }
.tp-steps--stacked .tp-step:nth-child(even) .tp-step__media { grid-column: 1 / span 6; grid-row: 2; }
.tp-steps--stacked .tp-step:not(.has-media) .tp-step__body { grid-column: 1 / span 8; }
@media (max-width: 860px) {
	.tp-steps--stacked .tp-step { grid-template-columns: 1fr; }
	.tp-steps--stacked .tp-step__body, .tp-steps--stacked .tp-step__media, .tp-steps--stacked .tp-step:nth-child(even) .tp-step__body, .tp-steps--stacked .tp-step:nth-child(even) .tp-step__media { grid-column: 1; grid-row: auto; }
}

/* Compact grid */
.tp-steps--grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 14rem), 1fr)); gap: 0 var(--tp-gap); counter-reset: none; }
.tp-steps--grid .tp-step { display: flex; align-items: baseline; gap: 1rem; padding: 1.1rem 0; border-top: 1px solid var(--tp-line); }
.tp-steps--grid .tp-step__title { font-size: 1.05rem; margin: 0; font-family: var(--tp-font-body); font-weight: 500; letter-spacing: 0; }

/* 17. Stats ---------------------------------------------------------------- */
.tp-stats { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(var(--tp-count, 4), minmax(0, 1fr)); gap: var(--tp-gap); }
.tp-stat { display: flex; flex-direction: column; gap: .35rem; padding-top: 1.5rem; border-top: 1px solid var(--tp-line-strong); }
.is-dark .tp-stat { border-color: var(--tp-line-on-dark); }
.tp-stat__value { font-family: var(--tp-font-heading); font-size: clamp(2.8rem, 1.9rem + 3.2vw, 4.8rem); line-height: 1; letter-spacing: var(--tp-tracking-tight); font-weight: var(--tp-heading-weight); color: var(--tp-primary); }
.is-dark .tp-stat__value { color: var(--tp-primary-ink); }
.tp-stat__label { font-weight: 500; margin-top: .75rem; }
.tp-stat__text { color: var(--tp-muted); font-size: .9rem; }
.is-dark .tp-stat__text { color: var(--tp-muted-on-dark); }
.tp-stats--ladder { align-items: end; }
.tp-stats--ladder .tp-stat { border-top: 0; padding-top: 0; }
.tp-stats--ladder .tp-stat__bar { display: block; height: calc(3rem + var(--tp-i, 0) * clamp(2.5rem, 1.5rem + 3vw, 5rem)); background: linear-gradient(to top, var(--tp-primary), color-mix(in srgb, var(--tp-primary) 55%, var(--tp-secondary))); border-radius: var(--tp-radius) var(--tp-radius) 0 0; margin-bottom: 1.25rem; transform-origin: bottom; }
.is-dark .tp-stats--ladder .tp-stat__bar { background: linear-gradient(to top, var(--tp-secondary), color-mix(in srgb, var(--tp-secondary) 40%, var(--tp-primary-ink))); }
@media (max-width: 860px) { .tp-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2rem var(--tp-gap); } }
@media (max-width: 480px) { .tp-stats--row { grid-template-columns: 1fr; } }

/* 18. Trust strip ---------------------------------------------------------- */
.tp-trust { display: grid; gap: clamp(2rem, 1.5rem + 2vw, 3.25rem); }
.tp-trust__top { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 1.25rem 3rem; }
.tp-trust__head { margin: 0; max-width: 44rem; }
.tp-trust__head .tp-heading { font-size: var(--tp-fs-h2); }
.tp-trust__head .tp-intro { margin-top: 1rem; }
.tp-trust__top > .tp-actions { margin: 0; padding-bottom: .4rem; }
/* One ruled panel: equal columns sized to the number of items, so a row is never left with an orphan. */
.tp-trust__list { --_n: 4; list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(var(--_n), minmax(0, 1fr)); border-top: 1px solid var(--tp-line); border-bottom: 1px solid var(--tp-line); }
.tp-trust__item { position: relative; display: flex; flex-direction: column; align-items: flex-start; gap: .35rem; padding: clamp(1.75rem, 1.25rem + 1.5vw, 2.75rem) clamp(1.25rem, .75rem + 1.5vw, 2.5rem); }
.tp-trust__item + .tp-trust__item::before { content: ""; position: absolute; left: 0; top: 18%; bottom: 18%; width: 1px; background: var(--tp-line); }
.tp-trust__item.is-row-start { padding-left: 0; }
.tp-trust__item.is-row-start::before { display: none; }
.tp-trust__item.is-next-row { border-top: 1px solid var(--tp-line); }
.tp-trust__mark { display: grid; place-items: center; width: 3rem; height: 3rem; margin-bottom: 1rem; border-radius: 50%; background: var(--tp-sage-soft); color: var(--tp-primary); }
.tp-trust__mark .tp-icon { width: 1.35rem; height: 1.35rem; }
.tp-trust__img { width: 2rem; height: 2rem; object-fit: contain; }
.tp-trust__label { font-family: var(--tp-font-heading); font-weight: var(--tp-heading-weight); font-size: clamp(1.35rem, 1.05rem + .8vw, 1.8rem); line-height: 1.12; letter-spacing: var(--tp-tracking-tight); color: var(--tp-text); font-variant-numeric: lining-nums; }
.tp-trust__detail { font-size: .9rem; line-height: 1.5; color: var(--tp-muted); max-width: 18rem; }
.is-dark .tp-trust__list, .is-dark .tp-trust__item + .tp-trust__item::before { border-color: var(--tp-line-on-dark); }
.is-dark .tp-trust__item + .tp-trust__item::before { background: var(--tp-line-on-dark); }
.is-dark .tp-trust__mark { background: rgba(255, 255, 255, .08); color: var(--tp-accent); }
.is-dark .tp-trust__label { color: var(--tp-primary-ink); }
.is-dark .tp-trust__detail { color: var(--tp-muted-on-dark); }
@media (max-width: 960px) {
	.tp-trust__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.tp-trust__item, .tp-trust__item.is-row-start { padding: 1.75rem 1.25rem; border-top: 0; }
	.tp-trust__item:nth-child(2n + 1) { padding-left: 0; }
	.tp-trust__item:nth-child(2n + 1)::before { display: none; }
	.tp-trust__item:nth-child(2n)::before { display: block; }
	.tp-trust__item:nth-child(n + 3) { border-top: 1px solid var(--tp-line); }
}
@media (max-width: 520px) {
	.tp-trust__list { grid-template-columns: 1fr; }
	.tp-trust__item, .tp-trust__item.is-row-start, .tp-trust__item:nth-child(2n + 1) { padding: 1.5rem 0; flex-direction: row; flex-wrap: wrap; align-items: center; column-gap: 1rem; }
	.tp-trust__item::before, .tp-trust__item:nth-child(2n)::before { display: none; }
	.tp-trust__item + .tp-trust__item { border-top: 1px solid var(--tp-line); }
	.tp-trust__mark { margin: 0; width: 2.6rem; height: 2.6rem; }
	.tp-trust__detail { flex-basis: 100%; padding-left: 3.6rem; }
}

/* 19. CTA ------------------------------------------------------------------ */
.tp-section--cta .tp-container, .tp-section--model-cta .tp-container { max-width: none; padding-inline: 0; }
.tp-cta { position: relative; overflow: hidden; isolation: isolate; padding: clamp(4.5rem, 3rem + 7vw, 10rem) max(var(--tp-gutter), calc((100vw - var(--tp-container)) / 2)); }
.is-boxed .tp-cta { padding-inline: var(--tp-gutter); }
.tp-cta--dark { background: var(--tp-dark); color: var(--tp-primary-ink); }
.tp-cta--stone { background: var(--tp-stone-soft); }
.tp-cta--image { background: var(--tp-dark); color: var(--tp-primary-ink); }
.tp-cta__media { position: absolute; inset: 0; z-index: -2; }
.tp-cta__media { --tp-img-base: 1.18; }
.tp-cta--image::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(10, 22, 16, .82) 0%, rgba(10, 22, 16, .45) 70%, rgba(10, 22, 16, .3) 100%); }
.tp-cta__inner { max-width: 46rem; }
.tp-cta__heading { font-size: var(--tp-fs-h1); line-height: 1; }
.tp-cta__text { font-size: var(--tp-fs-lead); margin-top: 1.5rem; max-width: 34rem; opacity: .88; }
.tp-cta--dark .tp-eyebrow, .tp-cta--image .tp-eyebrow { color: var(--tp-primary-ink); opacity: .75; }
.tp-cta--dark .tp-btn--primary, .tp-cta--image .tp-btn--primary { --_bg: var(--tp-primary-ink); --_fg: var(--tp-dark); --_bd: var(--tp-primary-ink); }
.tp-cta--dark .tp-link-arrow, .tp-cta--image .tp-link-arrow { color: var(--tp-primary-ink); }
.tp-section--cta, .tp-section--model-cta { padding-block: 0 !important; }

/* 20. FAQ / accordion ------------------------------------------------------ */
.tp-faq { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.8fr); gap: 2rem var(--tp-gap); align-items: start; }
.tp-faq--nohead { grid-template-columns: minmax(0, 1fr); max-width: 60rem; }
.tp-faq__aside { position: sticky; top: calc(var(--tp-header-h) + 2rem); }
.tp-faq__aside .tp-head { margin-bottom: 1.5rem; }
.tp-faq__aside .tp-heading { font-size: clamp(1.75rem, 1.3rem + 1.5vw, 2.6rem); }
.tp-faq__group + .tp-faq__group { margin-top: 3rem; }
.tp-faq__topic { font-size: .8rem; font-family: var(--tp-font-body); letter-spacing: .12em; text-transform: uppercase; font-weight: 600; color: var(--tp-secondary); margin-bottom: .5rem; }
.tp-accordion { border-top: 1px solid var(--tp-line-strong); }
.is-dark .tp-accordion { border-color: var(--tp-line-on-dark); }
.tp-accordion__item { border-bottom: 1px solid var(--tp-line); }
.is-dark .tp-accordion__item { border-color: var(--tp-line-on-dark); }
.tp-accordion__q { list-style: none; display: flex; justify-content: space-between; align-items: center; gap: 1.5rem; padding: 1.6rem 0; min-height: 2.75rem; cursor: pointer; font-family: var(--tp-font-heading); font-size: clamp(1.3rem, 1.15rem + .5vw, 1.6rem); font-weight: 500; letter-spacing: var(--tp-tracking-tight); line-height: 1.2; }
.tp-accordion__q::-webkit-details-marker { display: none; }
.tp-accordion__q:hover { color: var(--tp-primary); }
.is-dark .tp-accordion__q:hover { color: var(--tp-primary-ink); }
.tp-accordion__icon { position: relative; flex: none; width: 2rem; height: 2rem; border-radius: 50%; border: 1px solid var(--tp-line-strong); }
.tp-accordion__icon::before, .tp-accordion__icon::after { content: ""; position: absolute; top: 50%; left: 50%; width: 10px; height: 1.5px; background: currentColor; transform: translate(-50%, -50%); transition: transform .35s var(--tp-ease); }
.tp-accordion__icon::after { transform: translate(-50%, -50%) rotate(90deg); }
.tp-accordion__item[open] .tp-accordion__icon::after { transform: translate(-50%, -50%) rotate(0deg); }
.tp-accordion__a { overflow: hidden; }
.tp-accordion__a .tp-prose { padding: 0 3.5rem 1.5rem 0; color: var(--tp-muted); }
.is-dark .tp-accordion__a .tp-prose { color: var(--tp-muted-on-dark); }
@media (max-width: 860px) { .tp-faq { grid-template-columns: 1fr; } .tp-faq__aside { position: static; } .tp-accordion__a .tp-prose { padding-right: 0; } }

/* 21. Gallery & lightbox --------------------------------------------------- */
.tp-gallery { display: grid; gap: clamp(.75rem, .5rem + 1vw, 1.25rem); }
.tp-gallery__item { margin: 0; }
.tp-gallery__item .tp-media { height: 100%; }
.tp-gallery figcaption { font-size: .85rem; color: var(--tp-muted); margin-top: .6rem; }
.tp-gallery--grid { grid-template-columns: repeat(auto-fill, minmax(min(100%, 20rem), 1fr)); }
.tp-gallery--grid .tp-media { aspect-ratio: 4 / 3; }
/* Grid and scroll items size from their width; the caption sits below instead of under the photo. */
.tp-gallery--grid .tp-gallery__item .tp-media, .tp-gallery--scroll .tp-gallery__item .tp-media { height: auto; width: 100%; }
.tp-gallery--grid .tp-gallery__item { min-width: 0; }
.tp-gallery--mosaic { grid-template-columns: repeat(12, minmax(0, 1fr)); grid-auto-flow: dense; }
.tp-gallery--mosaic .tp-gallery__item { grid-column: span 5; aspect-ratio: 4 / 3; }
.tp-gallery--mosaic .tp-gallery__item:nth-child(4n + 1) { grid-column: span 7; }
.tp-gallery--mosaic .tp-gallery__item:nth-child(4n + 4) { grid-column: span 7; }
.tp-gallery--mosaic .tp-gallery__item:only-child { grid-column: 1 / -1; aspect-ratio: 21 / 9; }
.tp-gallery--mosaic .tp-gallery__item:last-child:nth-child(4n + 1) { grid-column: 1 / -1; aspect-ratio: 21 / 9; }
.tp-gallery--mosaic .tp-gallery__item:last-child:nth-child(4n + 3) { grid-column: 1 / -1; aspect-ratio: 21 / 9; }
.tp-gallery--scroll { grid-auto-flow: column; grid-auto-columns: minmax(18rem, 38%); overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 1rem; }
.tp-gallery--scroll .tp-gallery__item { scroll-snap-align: start; }
.tp-gallery--scroll .tp-media { aspect-ratio: 4 / 5; }
@media (max-width: 700px) { .tp-gallery--mosaic .tp-gallery__item, .tp-gallery--mosaic .tp-gallery__item:nth-child(n) { grid-column: 1 / -1; } .tp-gallery--scroll { grid-auto-columns: 80%; } }
.tp-lightbox { position: fixed; inset: 0; z-index: 500; background: rgba(8, 14, 11, .94); display: grid; place-items: center; padding: 4rem 1rem; }
.tp-lightbox[hidden] { display: none; }
.tp-lightbox img { max-height: 82vh; width: auto; max-width: min(92vw, 1600px); object-fit: contain; background: var(--tp-white); }
.tp-lightbox figure { margin: 0; display: grid; gap: 1rem; justify-items: center; color: #eee; font-size: .9rem; }
.tp-lightbox button { position: absolute; background: rgba(255, 255, 255, .08); color: #fff; border: 1px solid rgba(255, 255, 255, .25); width: 3rem; height: 3rem; border-radius: 50%; cursor: pointer; font-size: 1.25rem; }
.tp-lightbox__close { top: 1rem; right: 1rem; }
.tp-lightbox__prev { left: 1rem; top: 50%; }
.tp-lightbox__next { right: 1rem; top: 50%; }

/* 22. Specs ---------------------------------------------------------------- */
.tp-specs { display: grid; gap: var(--tp-gap); }
.tp-specs--media { grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr); align-items: start; }
.tp-specs__media { position: sticky; top: calc(var(--tp-header-h) + 2rem); aspect-ratio: 4 / 5; }
.tp-specs__groups { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 24rem), 1fr)); gap: 3rem var(--tp-gap); }
.tp-specs__title { font-size: .8rem; font-family: var(--tp-font-body); letter-spacing: .12em; text-transform: uppercase; font-weight: 600; color: var(--tp-secondary); margin-bottom: .75rem; }
.tp-specs__list { margin: 0; border-top: 1px solid var(--tp-line-strong); }
.tp-specs__row { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.4fr); gap: 1rem; padding: .9rem 0; border-bottom: 1px solid var(--tp-line); font-size: .95rem; }
.tp-specs__row dt { color: var(--tp-muted); }
.tp-specs__row dd { margin: 0; }
.is-dark .tp-specs__row dt { color: var(--tp-muted-on-dark); }
@media (max-width: 860px) { .tp-specs--media { grid-template-columns: 1fr; } .tp-specs__media { position: static; aspect-ratio: 4 / 3; } }
@media (max-width: 480px) { .tp-specs__row { grid-template-columns: 1fr; gap: .15rem; } }

/* 23. Compare tool --------------------------------------------------------- */
.tp-compare__picker { border: 0; margin: 0 0 2.5rem; padding: 0; }
.tp-compare__legend { font-size: .8rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 600; color: var(--tp-muted); margin-bottom: 1rem; padding: 0; }
.tp-compare__count { color: var(--tp-primary); margin-left: .5rem; }
.tp-compare__chips { display: flex; flex-wrap: wrap; gap: .5rem; }
.tp-compare__msg { min-height: 1.5rem; margin-top: .75rem; font-size: .875rem; color: var(--tp-primary); }
.tp-compare__table-wrap { overflow-x: auto; }
.tp-compare__table { width: 100%; border-collapse: collapse; table-layout: fixed; min-width: 40rem; }
.tp-compare__table thead th { text-align: left; vertical-align: bottom; padding: 0 1rem 1.25rem 0; font-weight: 500; }
.tp-compare__table thead img { aspect-ratio: 4 / 3; width: 100%; object-fit: cover; border-radius: var(--tp-radius); margin-bottom: 1rem; background: var(--tp-stone); }
.tp-compare__table thead a { font-family: var(--tp-font-heading); font-size: 1.6rem; text-decoration: none; letter-spacing: var(--tp-tracking-tight); }
.tp-compare__table thead td { width: 13rem; }
.tp-compare__table tbody th, .tp-compare__table tbody td { text-align: left; vertical-align: top; padding: .9rem 1rem .9rem 0; border-top: 1px solid var(--tp-line); font-size: .95rem; }
.tp-compare__table tbody th { font-weight: 400; color: var(--tp-muted); }
.tp-compare__table tbody tr:first-child td { font-family: var(--tp-font-heading); font-size: 1.25rem; color: var(--tp-primary); }
.tp-compare__cards { display: none; }
.tp-compare__empty { padding: 3rem 0; color: var(--tp-muted); }
.tp-compare__cta { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem 2rem; margin-top: 3rem; padding-top: 2rem; border-top: 1px solid var(--tp-line-strong); }
.tp-compare__cta-text { font-family: var(--tp-font-heading); font-size: var(--tp-fs-h3); margin: 0; }
.tp-compare__cta .tp-actions { margin: 0; }
@media (max-width: 760px) {
	.tp-compare [data-compare-output] .tp-compare__table { display: none; }
	.tp-compare__cards { display: grid; gap: 2.5rem; }
	.tp-compare__card img { aspect-ratio: 4 / 3; width: 100%; object-fit: cover; border-radius: var(--tp-radius); }
	.tp-compare__card h3 { font-size: 1.5rem; margin: 1rem 0; }
	.tp-compare__card h3 a { text-decoration: none; }
	.tp-compare__card dl { margin: 0 0 1rem; border-top: 1px solid var(--tp-line-strong); }
	.tp-compare__card dl div { display: grid; grid-template-columns: 1fr 1.3fr; gap: 1rem; padding: .7rem 0; border-bottom: 1px solid var(--tp-line); font-size: .925rem; }
	.tp-compare__card dt { color: var(--tp-muted); }
	.tp-compare__card dd { margin: 0; }
}

/* 24. Visualiser ----------------------------------------------------------- */
.tp-vis__steps { list-style: none; margin: 0 0 2.5rem; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--tp-gap); }
.tp-vis__steps li { display: grid; gap: .35rem; border-top: 1px solid var(--tp-line-strong); padding-top: 1.1rem; }
.tp-vis__steps strong { font-family: var(--tp-font-heading); font-weight: 500; font-size: 1.15rem; }
.tp-vis__steps li > span:last-child { color: var(--tp-muted); font-size: .925rem; }
.tp-vis__stepnum { font-size: .8rem; font-weight: 600; color: var(--tp-secondary); letter-spacing: .08em; }
.tp-vis__app { display: grid; grid-template-columns: minmax(18rem, 22rem) minmax(0, 1fr); gap: var(--tp-gap); align-items: start; }
.tp-vis__panel { display: grid; gap: 1.5rem; }
.tp-tabs { display: flex; gap: .25rem; padding: .25rem; border: 1px solid var(--tp-line-strong); border-radius: 999px; }
.tp-tab { flex: 1; min-height: 2.5rem; border: 0; border-radius: 999px; background: none; cursor: pointer; font-size: .875rem; font-weight: 500; color: var(--tp-muted); }
.tp-tab.is-active { background: var(--tp-primary); color: var(--tp-primary-ink); }
.tp-inline-field { display: flex; gap: .5rem; }
.tp-inline-field input { flex: 1; min-width: 0; }
.tp-vis__scenes { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; }
.tp-vis__scene { display: grid; gap: .4rem; padding: 0; border: 1px solid transparent; background: none; text-align: left; cursor: pointer; font-size: .85rem; border-radius: var(--tp-radius); }
.tp-vis__scene img { aspect-ratio: 4 / 3; width: 100%; object-fit: cover; border-radius: var(--tp-radius); }
.tp-vis__scene.is-active img { outline: 2px solid var(--tp-primary); outline-offset: 2px; }
.tp-vis__controls { display: grid; gap: 1.1rem; padding-top: 1.5rem; border-top: 1px solid var(--tp-line); }
.tp-vis__controls select { width: 100%; }
.tp-segmented { display: inline-flex; border: 1px solid var(--tp-line-strong); border-radius: 999px; padding: .2rem; }
.tp-segmented button { flex: 1; border: 0; background: none; border-radius: 999px; min-height: 2.25rem; padding: 0 1rem; cursor: pointer; font-size: .875rem; }
.tp-segmented button.is-active { background: var(--tp-text); color: var(--tp-bg); }
.tp-field input[type="range"] { width: 100%; accent-color: var(--tp-primary); }
.tp-vis__stage { position: relative; aspect-ratio: 16 / 11; background-color: var(--tp-stone-soft); background-image: repeating-linear-gradient(0deg, transparent 0 39px, var(--tp-line) 39px 40px), repeating-linear-gradient(90deg, transparent 0 39px, var(--tp-line) 39px 40px); border: 1px solid var(--tp-line); border-radius: var(--tp-radius); overflow: hidden; touch-action: none; }
.tp-vis:not(.has-bg) .tp-vis__model, .tp-vis:not(.has-bg) .tp-vis__readout { opacity: 0; pointer-events: none; }
.tp-vis__model, .tp-vis__readout { transition: opacity .5s var(--tp-ease), width .35s var(--tp-ease), height .35s var(--tp-ease); }
.tp-vis__bg img, .tp-vis__bg iframe { animation: tp-fade .6s var(--tp-ease); }
.tp-vis__bg { position: absolute; inset: 0; }
.tp-vis__bg img, .tp-vis__bg iframe { width: 100%; height: 100%; object-fit: cover; border: 0; }
.tp-vis__empty[hidden] { display: none; }
.tp-vis__empty { position: absolute; inset: 0; display: grid; place-items: center; text-align: center; padding: 2rem; color: var(--tp-muted); margin: 0; pointer-events: none; }
.tp-vis__layer { position: absolute; inset: 0; pointer-events: none; }
.tp-vis__model { position: absolute; pointer-events: auto; cursor: grab; touch-action: none; }
.tp-vis__model.is-dragging { cursor: grabbing; transition: none; }
.tp-vis__model:focus-visible { outline: 2px dashed var(--tp-accent); outline-offset: 6px; }
.tp-vis__shape { position: absolute; inset: 0; background: color-mix(in srgb, var(--tp-primary) 72%, transparent) repeating-linear-gradient(45deg, transparent 0 6px, rgba(255, 255, 255, .12) 6px 7px); border: 2px solid var(--tp-primary-ink); border-radius: 3px; box-shadow: 0 10px 30px rgba(0, 0, 0, .35); }
.tp-vis__model.is-side .tp-vis__shape { border-radius: 14% / 30%; background: color-mix(in srgb, var(--tp-dark) 82%, transparent); }
.tp-vis__model.is-side .tp-vis__shape::before { content: ""; position: absolute; left: 12%; right: 12%; top: 22%; height: 44%; background: linear-gradient(180deg, rgba(246, 244, 239, .55), rgba(246, 244, 239, .2)); border-radius: 3px; }
.tp-vis__tag { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); color: var(--tp-primary-ink); font-size: .75rem; font-weight: 600; letter-spacing: .06em; white-space: nowrap; text-shadow: 0 1px 2px rgba(0, 0, 0, .6); }
.tp-vis__model.is-small .tp-vis__tag { top: auto; bottom: calc(100% + .4rem); transform: translateX(-50%); }
.tp-vis__readout { position: absolute; left: .75rem; bottom: .75rem; background: rgba(12, 22, 17, .82); color: #f6f4ef; font-size: .8rem; padding: .45rem .75rem; border-radius: 999px; pointer-events: none; }
@media (max-width: 960px) { .tp-vis__app { grid-template-columns: 1fr; } .tp-vis__stage { order: -1; aspect-ratio: 4 / 3; } .tp-vis__steps { grid-template-columns: 1fr; gap: 1rem; } }

/* 25. Forms ---------------------------------------------------------------- */
.tp-field { display: grid; gap: .45rem; margin: 0; }
.tp-field__label { font-size: .85rem; font-weight: 500; }
.tp-field__label output { color: var(--tp-muted); font-weight: 400; margin-left: .35rem; }
.tp-field__hint { font-size: .8rem; color: var(--tp-muted); }
.tp-field input[type="text"], .tp-field input[type="email"], .tp-field input[type="tel"], .tp-field textarea, .tp-inline-field input, .tp-searchform input, .tp-newsletter-form input {
	width: 100%; min-height: 3.1rem; padding: .75rem 1rem; background: var(--tp-white); border: 1px solid var(--tp-line-strong); border-radius: 4px; transition: border-color .2s, box-shadow .2s;
}
.tp-field textarea { min-height: 8rem; resize: vertical; }
.tp-field select { border-radius: 4px; min-height: 3.1rem; background-color: var(--tp-white); width: 100%; }
.tp-field input:focus, .tp-field textarea:focus, .tp-field select:focus, .tp-inline-field input:focus, .tp-searchform input:focus, .tp-newsletter-form input:focus { outline: 0; border-color: var(--tp-primary); box-shadow: 0 0 0 3px color-mix(in srgb, var(--tp-primary) 18%, transparent); }
.tp-form__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; }
.tp-field--wide { grid-column: 1 / -1; }
.tp-form__foot { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.5rem; margin-top: 1.75rem; }
.tp-form-note { font-size: .825rem; color: var(--tp-muted); margin: 0; }
.tp-file { position: relative; overflow: hidden; }
.tp-file input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.tp-notice { display: flex; gap: 1rem; align-items: flex-start; padding: 1.25rem 1.5rem; border-radius: 4px; margin-bottom: 1.5rem; }
.tp-notice--success { background: var(--tp-sage-soft); color: var(--tp-primary); font-size: 1.1rem; }
.tp-notice--error { background: #FBEAEA; color: #8A1F1F; }
.tp-contact-grid { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: 3rem clamp(2rem, 1rem + 5vw, 7rem); align-items: start; }
.tp-contact-grid__heading { font-size: var(--tp-fs-h3); margin-bottom: 1.25rem; }
.tp-contact-grid__aside { display: grid; gap: 1.75rem; }
.tp-contact-grid__area { display: flex; gap: .75rem; color: var(--tp-muted); }
.tp-contact-grid__area .tp-icon { color: var(--tp-primary); }
.tp-contact { list-style: none; margin: 0; padding: 0; display: grid; gap: .9rem; }
.tp-contact__item { display: grid; gap: .15rem; }
.tp-contact__item a { text-decoration: none; }
.tp-contact__item a:hover { text-decoration: underline; }
.tp-contact__label { font-size: .75rem; letter-spacing: .1em; text-transform: uppercase; color: var(--tp-muted); }
.tp-contact-grid .tp-contact__item { font-size: 1.1rem; }
.tp-map { width: 100%; aspect-ratio: 4 / 3; border: 0; border-radius: var(--tp-radius); filter: grayscale(.4); }
.tp-location h3 { font-size: 1.1rem; margin-bottom: .5rem; }
.tp-searchform { display: flex; gap: .5rem; max-width: 34rem; }
.tp-search-inline { margin-top: 2rem; }
@media (max-width: 860px) { .tp-contact-grid { grid-template-columns: 1fr; } }
@media (max-width: 560px) { .tp-form__grid { grid-template-columns: 1fr; } .tp-inline-field, .tp-searchform { flex-direction: column; } }

/* 26. Projects ------------------------------------------------------------- */
.tp-projects { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 3rem var(--tp-gap); }
.tp-project-card { position: relative; }
.tp-project-card.is-lead { grid-column: 1 / -1; display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: var(--tp-gap); align-items: end; }
.tp-project-card__media { aspect-ratio: 4 / 3; margin-bottom: 1.25rem; }
.tp-project-card.is-lead .tp-project-card__media { aspect-ratio: 16 / 10; margin: 0; }
.tp-project-card__title { font-size: var(--tp-fs-h3); margin-bottom: .75rem; }
.tp-project-card__title a { text-decoration: none; }
.tp-project-card__title a::after { content: ""; position: absolute; inset: 0; }
.tp-empty { display: flex; gap: 1.5rem; align-items: flex-start; padding: clamp(2rem, 1.5rem + 2vw, 3.5rem); border: 1px dashed var(--tp-line-strong); border-radius: 4px; max-width: 52rem; }
.tp-empty__mark { color: var(--tp-secondary); }
.tp-empty__mark .tp-icon { width: 2.5rem; height: 2.5rem; }
.tp-empty__heading { font-family: var(--tp-font-heading); font-size: var(--tp-fs-h3); margin-bottom: .5rem; }
.tp-empty__text { color: var(--tp-muted); }
.tp-empty .tp-actions { margin-top: 1.25rem; }
.tp-specstrip { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 10rem), 1fr)); margin: 0; border-top: 1px solid var(--tp-line-strong); border-bottom: 1px solid var(--tp-line); }
.tp-specstrip__item { padding: 1.4rem 1.25rem 1.4rem 0; }
.tp-specstrip__item + .tp-specstrip__item { padding-left: 1.25rem; border-left: 1px solid var(--tp-line); }
.tp-specstrip dt { font-size: .75rem; letter-spacing: .1em; text-transform: uppercase; color: var(--tp-muted); margin-bottom: .5rem; }
.tp-specstrip dd { margin: 0; font-family: var(--tp-font-heading); font-size: clamp(1.4rem, 1.2rem + .7vw, 1.9rem); letter-spacing: var(--tp-tracking-tight); line-height: 1.15; }
.tp-story { display: grid; gap: 3rem; max-width: 64rem; }
.tp-story__row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2.2fr); gap: var(--tp-gap); }
.tp-story__label { font-size: var(--tp-fs-h3); }
@media (max-width: 860px) {
	.tp-projects, .tp-project-card.is-lead, .tp-story__row { grid-template-columns: 1fr; }
	.tp-specstrip__item + .tp-specstrip__item { border-left: 0; padding-left: 0; }
	.tp-specstrip { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.tp-specstrip__item { border-bottom: 1px solid var(--tp-line); }
	.tp-specstrip__item:nth-child(even) { padding-left: 1.25rem !important; border-left: 1px solid var(--tp-line) !important; }
}

/* 27. Model page ----------------------------------------------------------- */
.tp-modelhero__grid { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(18rem, 24rem); gap: 2rem var(--tp-gap); align-items: end; }
.tp-modelhero .tp-hero__heading { font-size: var(--tp-fs-h1); }
.tp-pricecard { background: var(--tp-dark); border: 1px solid var(--tp-line-on-dark); border-top: 2px solid var(--tp-accent); border-radius: 0; padding: 1.75rem; display: grid; gap: 1.1rem; }
.tp-pricecard__prices { margin: 0; display: grid; gap: .9rem; }
.tp-pricecard__prices div { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; padding-bottom: .9rem; border-bottom: 1px solid var(--tp-line-on-dark); }
.tp-pricecard__prices dt { font-size: .8rem; letter-spacing: .08em; text-transform: uppercase; color: var(--tp-muted-on-dark); }
.tp-pricecard__prices dd { margin: 0; font-family: var(--tp-font-heading); font-size: 2rem; letter-spacing: var(--tp-tracking-tight); line-height: 1; }
.tp-pricecard__request { font-family: var(--tp-font-heading); font-size: 1.5rem; margin: 0; }
.tp-pricecard__note { font-size: .8rem; color: var(--tp-muted-on-dark); margin: 0; }
.tp-pricecard .tp-btn { --_bg: var(--tp-primary-ink); --_fg: var(--tp-dark); --_bd: var(--tp-primary-ink); width: 100%; }
.tp-pricecard .tp-btn:hover { --_bg: transparent; --_fg: var(--tp-primary-ink); }
.tp-modelintro { padding-block: var(--tp-space-normal) 0; font-size: var(--tp-fs-lead); max-width: calc(52rem + var(--tp-gutter) * 2); margin-left: max(0px, calc((100vw - var(--tp-container)) / 2 - var(--tp-gutter))); }
.tp-section--model-specs .tp-container { padding-top: 0; }
.tp-plans { margin-top: clamp(3rem, 2rem + 3vw, 5rem); }
.tp-plans__heading { font-size: .8rem; font-family: var(--tp-font-body); letter-spacing: .12em; text-transform: uppercase; font-weight: 600; color: var(--tp-secondary); margin-bottom: 1.25rem; }
.tp-plans__list { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 26rem), 1fr)); gap: var(--tp-gap); }
.tp-plan { margin: 0; background: var(--tp-white); border: 1px solid var(--tp-line); border-radius: var(--tp-radius); padding: clamp(1rem, .5rem + 2vw, 2.5rem); }
.tp-plan img { width: 100%; max-height: 26rem; object-fit: contain; mix-blend-mode: multiply; }
.tp-plan figcaption { font-size: .85rem; color: var(--tp-muted); margin-top: 1rem; }
.tp-options { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 22rem), 1fr)); gap: 0 var(--tp-gap); }
.tp-option { display: flex; gap: 1rem; align-items: flex-start; padding: 1.25rem 0; border-top: 1px solid var(--tp-line); }
.tp-option__icon { color: var(--tp-primary); }
.tp-option__body { flex: 1; }
.tp-option__name { font-size: 1.1rem; margin-bottom: .25rem; }
.tp-option__body p { color: var(--tp-muted); font-size: .9rem; }
.tp-option__price { font-family: var(--tp-font-heading); white-space: nowrap; color: var(--tp-primary); font-size: .95rem; }
@media (max-width: 860px) { .tp-modelhero__grid { grid-template-columns: 1fr; } .tp-modelintro { margin-left: auto; } }

/* 28. Packages & price list ------------------------------------------------ */
.tp-packages { display: grid; grid-template-columns: repeat(var(--_cols, 2), minmax(0, 1fr)); gap: var(--tp-gap); }
.tp-package { display: flex; flex-direction: column; padding: clamp(2rem, 1.4rem + 2.4vw, 3.5rem); border: 1px solid var(--tp-line-strong); border-radius: 0; background: transparent; }
.tp-package.is-highlight { background: var(--tp-dark); color: var(--tp-primary-ink); border-color: var(--tp-dark); box-shadow: inset 0 2px 0 var(--tp-accent); }
.tp-package.is-highlight .tp-eyebrow { color: var(--tp-accent); }
.tp-package__name { font-size: var(--tp-fs-h2); }
.tp-package__price { font-size: 1rem; color: var(--tp-muted); margin-top: .5rem; }
.is-highlight .tp-package__price, .is-highlight .tp-package__note { color: var(--tp-muted-on-dark); }
.tp-package .tp-checklist { margin-top: 2rem; padding-top: 1.5rem; border-top: 1px solid var(--tp-line); }
.is-highlight .tp-checklist { border-color: var(--tp-line-on-dark); }
.tp-package__note { font-size: .85rem; color: var(--tp-muted); margin-top: 1.5rem; }
.tp-package__foot { margin-top: auto; padding-top: 2rem; }
.is-highlight .tp-btn--primary { --_bg: var(--tp-primary-ink); --_fg: var(--tp-dark); --_bd: var(--tp-primary-ink); }
@media (max-width: 760px) { .tp-packages { grid-template-columns: 1fr; } }
.tp-pricelist { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: var(--tp-gap); align-items: start; }
.tp-table-wrap { overflow-x: auto; }
.tp-table { width: 100%; border-collapse: collapse; min-width: 32rem; }
.tp-table th, .tp-table td { text-align: left; padding: .95rem 1rem .95rem 0; border-bottom: 1px solid var(--tp-line); font-size: .95rem; }
.tp-table thead th { font-size: .75rem; letter-spacing: .1em; text-transform: uppercase; color: var(--tp-muted); font-weight: 600; border-bottom: 1px solid var(--tp-line-strong); }
.tp-table tbody th { font-weight: 500; font-family: var(--tp-font-heading); font-size: 1.05rem; }
.tp-table tbody th a { text-decoration: none; }
.tp-table .is-num { text-align: right; font-variant-numeric: tabular-nums; }
.tp-pricelist__addons { padding: 1.75rem; background: var(--tp-bg); border-radius: 4px; }
.tp-bg--default .tp-pricelist__addons { background: var(--tp-white); }
.tp-pricelist__heading { font-size: 1.2rem; margin-bottom: 1rem; }
@media (max-width: 960px) { .tp-pricelist { grid-template-columns: 1fr; } }

/* 29. Text block, timeline, team, quotes, logos, newsletter, posts --------- */
.tp-textblock { max-width: calc(46rem + var(--tp-gutter) * 2); }
.tp-textblock__head { margin-bottom: 1.5rem; }
.tp-textblock__body { font-size: 1.075rem; }
.tp-textblock--split { max-width: calc(var(--tp-container) + var(--tp-gutter) * 2); display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); gap: 1.5rem var(--tp-gap); }
.tp-textblock--split .tp-textblock__body { max-width: 40rem; color: var(--tp-muted); font-size: var(--tp-fs-lead); line-height: 1.6; }
.is-dark .tp-textblock--split .tp-textblock__body { color: var(--tp-muted-on-dark); }
@media (max-width: 860px) { .tp-textblock--split { grid-template-columns: 1fr; } }
.tp-timeline { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--tp-line-strong); }
.tp-timeline__item { display: grid; grid-template-columns: minmax(6rem, 1fr) minmax(0, 3fr); gap: var(--tp-gap); padding: 1.75rem 0; border-bottom: 1px solid var(--tp-line); }
.tp-timeline__year { font-family: var(--tp-font-heading); font-size: var(--tp-fs-h3); color: var(--tp-primary); }
.tp-timeline__title { font-size: 1.2rem; margin-bottom: .4rem; }
.tp-timeline__item p { color: var(--tp-muted); }
.tp-team { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr)); gap: 2.5rem var(--tp-gap); }
.tp-person__photo { aspect-ratio: 4 / 5; margin-bottom: 1rem; }
.tp-person__name { font-size: 1.25rem; }
.tp-person__name a { text-decoration: none; }
.tp-person__role { color: var(--tp-secondary); font-size: .9rem; margin: .25rem 0 .75rem; }
.tp-person__bio { color: var(--tp-muted); font-size: .925rem; }
.tp-quotes { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(min(85%, 26rem), 1fr); gap: var(--tp-gap); overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 1rem; }
.tp-quote { margin: 0; scroll-snap-align: start; padding: 2rem; border: 1px solid var(--tp-line); border-radius: 4px; display: flex; flex-direction: column; gap: 1.5rem; }
.tp-quote blockquote { margin: 0; font-family: var(--tp-font-heading); font-size: 1.3rem; line-height: 1.35; letter-spacing: -.01em; }
.tp-quote__stars { color: var(--tp-accent); letter-spacing: .2em; margin: 0; }
.tp-quote__by { display: flex; gap: .9rem; align-items: center; margin-top: auto; font-size: .9rem; }
.tp-quote__by img { width: 2.75rem; height: 2.75rem; border-radius: 50%; object-fit: cover; }
.tp-quote__by span { display: flex; flex-direction: column; }
.tp-quote__by strong { font-weight: 500; }
.tp-logos { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 2rem 3.5rem; }
.tp-logos img { max-height: 2.75rem; width: auto; filter: grayscale(1); opacity: .7; transition: opacity .3s, filter .3s; }
.tp-logos a:hover img { filter: none; opacity: 1; }
.tp-newsletter { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 2rem var(--tp-gap); align-items: center; }
.tp-newsletter-form { display: flex; gap: .5rem; }
.tp-newsletter-form input { flex: 1; min-width: 0; }
@media (max-width: 760px) { .tp-newsletter { grid-template-columns: 1fr; } .tp-timeline__item { grid-template-columns: 1fr; gap: .5rem; } }
.tp-posts { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 20rem), 1fr)); gap: 3rem var(--tp-gap); }
.tp-post-card { position: relative; }
.tp-post-card__media { aspect-ratio: 4 / 3; margin-bottom: 1.25rem; }
.tp-post-card__title { font-size: 1.35rem; margin-bottom: .6rem; }
.tp-post-card__title a { text-decoration: none; }
.tp-post-card__excerpt { color: var(--tp-muted); }
.tp-pagination { margin-top: 3rem; }
.tp-pagination .nav-links { display: flex; gap: .5rem; }
.tp-pagination .page-numbers { display: grid; place-items: center; min-width: 2.75rem; height: 2.75rem; border: 1px solid var(--tp-line); border-radius: 999px; text-decoration: none; }
.tp-pagination .current { background: var(--tp-primary); color: var(--tp-primary-ink); border-color: var(--tp-primary); }
.tp-article__head { max-width: calc(52rem + var(--tp-gutter) * 2); }
.tp-article__media { aspect-ratio: 21 / 9; margin-bottom: var(--tp-space-compact); }
.tp-article .tp-prose { max-width: calc(42rem + var(--tp-gutter) * 2); font-size: 1.1rem; }
.tp-notfound { text-align: left; max-width: calc(52rem + var(--tp-gutter) * 2); }
.tp-notfound__code { font-family: var(--tp-font-heading); font-size: clamp(5rem, 3rem + 10vw, 11rem); line-height: .9; color: var(--tp-stone); letter-spacing: -.06em; margin-bottom: 1.5rem; }

/* 30. Footer --------------------------------------------------------------- */
.tp-footer { background: var(--tp-dark); color: var(--tp-ink-on-dark); padding: clamp(4rem, 3rem + 4vw, 7rem) 0 2rem; font-size: .925rem; }
.tp-footer a { text-decoration: none; }
.tp-footer a:hover { text-decoration: underline; }
.tp-footer__top { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 3rem var(--tp-gap); padding-bottom: 3.5rem; border-bottom: 1px solid var(--tp-line-on-dark); }
.tp-footer__statement { margin-top: 2rem; max-width: 24rem; color: var(--tp-ink-on-dark); font-family: var(--tp-font-heading); font-size: clamp(1.35rem, 1.2rem + .6vw, 1.75rem); line-height: 1.3; letter-spacing: var(--tp-tracking-tight); }
.tp-footer .tp-logo__img { height: calc(var(--tp-logo-height) * 1.1); }
.tp-footer__newsletter { margin-top: 2.5rem; max-width: 26rem; }
.tp-footer__newsletter .tp-newsletter-form input { background: transparent; border-color: var(--tp-line-on-dark); color: var(--tp-primary-ink); }
.tp-footer__newsletter .tp-newsletter-form input::placeholder { color: var(--tp-muted-on-dark); }
.tp-footer__small { color: var(--tp-muted-on-dark); font-size: .85rem; margin-bottom: 1rem; }
.tp-footer__cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr)); gap: 2.5rem var(--tp-gap); }
.tp-footer__heading { font-size: .65rem; letter-spacing: .22em; text-transform: uppercase; font-weight: 600; color: var(--tp-accent); margin: 0 0 1.5rem; }
.tp-footer__menu { list-style: none; margin: 0; padding: 0; display: grid; gap: .7rem; }
.tp-footer__menu a { color: var(--tp-ink-on-dark); }
.tp-footer .tp-contact { gap: 1rem; }
.tp-footer .tp-contact__label { color: var(--tp-muted-on-dark); }
.tp-social { list-style: none; margin: 1.5rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.tp-social a { display: grid; place-items: center; width: 2.5rem; height: 2.5rem; border-radius: 50%; border: 1px solid var(--tp-line-on-dark); transition: background .3s, color .3s; }
.tp-social a:hover { background: var(--tp-primary-ink); color: var(--tp-dark); text-decoration: none; }
.tp-topbar .tp-social { margin: 0; }
.tp-topbar .tp-social a { width: 1.9rem; height: 1.9rem; border: 0; }
.tp-footer__badges { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 2rem; padding: 2rem 0; border-bottom: 1px solid var(--tp-line-on-dark); }
.tp-footer__badges .tp-footer__heading { margin: 0; }
.tp-footer__badges ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .6rem; }
.tp-footer__badges li a, .tp-footer__badges li > span { display: inline-flex; align-items: center; gap: .5rem; min-height: 2.25rem; padding: .45rem 1rem; border: 1px solid var(--tp-line-on-dark); border-radius: 0; font-size: .68rem; letter-spacing: .12em; text-transform: uppercase; color: var(--tp-ink-on-dark); }
.tp-footer__badges img { height: 1.25rem; width: auto; }
.tp-footer__bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem 2rem; padding-top: 2rem; color: var(--tp-muted-on-dark); font-size: .825rem; }
.tp-footer__copyright { margin: 0; }
.tp-footer__legal { list-style: none; margin: 0; padding: 0; display: flex; gap: 1.5rem; }
@media (max-width: 860px) { .tp-footer__top { grid-template-columns: 1fr; } }
@media (max-width: 480px) { .tp-footer__cols { grid-template-columns: 1fr 1fr; } }

/* 31. Motion --------------------------------------------------------------- */
@keyframes tp-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes tp-scrollline { 0% { transform: translateY(-100%); } 60%, 100% { transform: translateY(100%); } }
.tp-motion [data-reveal] { opacity: 0; transform: translate3d(0, 28px, 0); transition: opacity var(--tp-dur) var(--tp-ease), transform var(--tp-dur) var(--tp-ease); transition-delay: var(--tp-delay, 0s); }
.tp-motion [data-reveal].is-in { opacity: 1; transform: none; }
.tp-motion [data-reveal-media] { clip-path: inset(12% 0 0 0); opacity: 0; transition: clip-path 1.6s var(--tp-ease), opacity 1s var(--tp-ease), --tp-img-scale 2.2s var(--tp-ease); }
.tp-motion [data-reveal-media].is-in { opacity: 1; }
.tp-motion [data-reveal-media]:not(.is-in) { --tp-img-scale: 1.22; }
.tp-motion [data-reveal-media].is-in { clip-path: inset(0 0 0 0); }
.tp-motion [data-reveal-media].is-in img { transform: scale(1); }
.tp-motion .tp-stats--ladder .tp-stat__bar { transform: scaleY(0); transition: transform 1.2s var(--tp-ease); transition-delay: calc(var(--tp-i, 0) * .12s); }
.tp-motion .tp-stats--ladder .tp-stat.is-in .tp-stat__bar { transform: scaleY(1); }
.tp-motion .tp-hero__media { animation: tp-hero-in 2.4s var(--tp-ease) both; }
@keyframes tp-hero-in { from { opacity: 0; transform: scale(1.08); } to { opacity: 1; transform: none; } }
/* Lenis smooth scrolling (iframes only ignore the pointer while a scroll is in progress). */
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-stopped { overflow: clip; }
.lenis.lenis-scrolling iframe { pointer-events: none; }

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
	.tp-motion [data-reveal], .tp-motion [data-reveal-media], .tp-motion [data-reveal-media] img, .tp-motion .tp-stats--ladder .tp-stat__bar { opacity: 1 !important; transform: none !important; clip-path: none !important; }
	.tp-hero__media img, .tp-cta__media img, .tp-media img { transform: none !important; }
	.tp-hero__inner { transform: none !important; opacity: 1 !important; }
	.tp-hero::before { display: none; }
}

/* 31b. Luxury details ----------------------------------------------------- */
/* Hairline rule under section heads and a slow-growing accent line on focusable cards. */
.tp-section .tp-head .tp-heading { position: relative; }
.tp-model-card__body, .tp-card__body, .tp-project-card__body, .tp-post-card__body { position: relative; }
.tp-model-card__foot { border-top-color: var(--tp-line-strong); }
.tp-model-card .tp-model-card__media::after, .tp-project-card__media::after, .tp-post-card__media::after { content: ""; position: absolute; left: 0; bottom: 0; height: 2px; width: 0; background: var(--tp-accent); transition: width 1s var(--tp-ease); z-index: 2; }
.tp-model-card:hover .tp-model-card__media::after, .tp-project-card:hover .tp-project-card__media::after, .tp-post-card:hover .tp-post-card__media::after { width: 100%; }
.tp-btn--primary, .tp-btn--light { background-image: linear-gradient(var(--tp-primary-hover), var(--tp-primary-hover)); background-size: 0 100%; background-repeat: no-repeat; transition: background-size .6s var(--tp-ease), color .5s var(--tp-ease), border-color .5s var(--tp-ease); }
.tp-btn--primary:hover { background-size: 100% 100%; }
.tp-cards--tile .tp-card__title { font-size: clamp(1.9rem, 1.4rem + 1.4vw, 2.75rem); }
.tp-cards--tile .tp-card__media::after { background: linear-gradient(180deg, rgba(6, 18, 13, 0) 25%, rgba(6, 18, 13, .85) 100%); }
.tp-gallery figcaption, .tp-plan figcaption { font-size: .68rem; letter-spacing: .16em; text-transform: uppercase; }
.tp-hero__scroll { font-size: .62rem; letter-spacing: .3em; }
::selection { background: var(--tp-accent); color: var(--tp-dark); }
@media (hover: none) { .tp-media img { transition: none; } }

/* Lining, even-width figures wherever numbers carry meaning. */
.tp-price__value, .tp-stat__value, .tp-specstrip dd, .tp-pricecard__prices dd, .tp-compare__table, .tp-table, .tp-option__price, .tp-model-card__specs dd, .tp-steps--stacked .tp-step__num, .tp-card__num, .tp-timeline__year, .tp-notfound__code { font-variant-numeric: lining-nums tabular-nums; }

/* 32. Hidden-section preview (editors only) -------------------------------- */
.tp-section--is-hidden { outline: 2px dashed #b32d2e; outline-offset: -6px; }
.tp-hidden-flag { position: absolute; top: 12px; left: 12px; z-index: 30; background: #b32d2e; color: #fff; font: 600 12px/1 system-ui, sans-serif; padding: 8px 10px; border-radius: 3px; }

/* 33. Print ---------------------------------------------------------------- */
@media print {
	.tp-header, .tp-footer, .tp-hero__scroll, .tp-filterbar, .tp-vis__app { display: none !important; }
	.tp-motion [data-reveal], .tp-motion [data-reveal-media] { opacity: 1 !important; transform: none !important; clip-path: none !important; }
}
