@import url("https://fonts.googleapis.com/css2?family=Outfit:wght@300..700&display=swap");
/* Tausi tokens (from tokens.json) */
:root{--background:#FBFAF7;--surface:#FFFFFF;--surface-subtle:#F4F2EC;--surface-inverse:#161838;--text-primary:#1C1D33;--text-secondary:#4A4944;--text-muted:#66625A;--text-inverse:#F3F1EC;--text-inverse-muted:#B9B8CE;--border:#E0DCD2;--border-strong:#8E897E;--border-inverse:#34365C;--brand-primary:#2D3185;--brand-primary-hover:#232769;--brand-primary-active:#1A1D4E;--on-brand-primary:#FFFFFF;--brand-primary-soft:#EEEFF8;--brand-secondary:#0F6560;--brand-secondary-hover:#0B4F4B;--on-brand-secondary:#FFFFFF;--brand-secondary-soft:#E6F2F0;--accent:#EDB030;--accent-hover:#D99A18;--on-accent:#1C1D33;--accent-text:#875708;--accent-soft:#FDF3DA;--success:#256B37;--success-soft:#E7F2E9;--on-success:#FFFFFF;--warning:#A14A0A;--warning-soft:#FDEEDD;--error:#B3261E;--error-hover:#8F1D17;--on-error:#FFFFFF;--error-soft:#FCEBE9;--focus-ring:#B87809;--focus-ring-inverse:#F5C656;--disabled-surface:#EDEAE3;--disabled-text:#8E897E;--overlay:rgba(17,19,51,0.48);--indigo-50:#F1F1F9;--indigo-100:#E1E2F2;--indigo-200:#C4C6E6;--indigo-300:#9FA2D4;--indigo-400:#7478BD;--indigo-500:#4F54A6;--indigo-600:#3A3F96;--indigo-700:#2D3185;--indigo-800:#232769;--indigo-900:#1A1D4E;--indigo-950:#111333;--marigold-50:#FFF8E8;--marigold-100:#FDEFC9;--marigold-200:#FADD8E;--marigold-300:#F5C656;--marigold-400:#EDB030;--marigold-500:#D99A18;--marigold-600:#B87809;--marigold-700:#875708;--marigold-800:#6B440D;--marigold-900:#4A2F0B;--peacock-50:#EAF5F4;--peacock-100:#CFE9E6;--peacock-200:#9FD2CD;--peacock-300:#6CC3BB;--peacock-400:#36958F;--peacock-500:#1A7A75;--peacock-600:#0F6560;--peacock-700:#0B4F4B;--peacock-800:#0B3C39;--peacock-900:#082B29;--sand-0:#FFFFFF;--sand-25:#FBFAF7;--sand-50:#F4F2EC;--sand-100:#EDEAE3;--sand-200:#E0DCD2;--sand-300:#C9C4B8;--sand-400:#A8A397;--sand-500:#8E897E;--sand-600:#66625A;--sand-700:#4A4944;--sand-800:#2E2D2A;--sand-900:#1C1D33;--shadow-0:none;--shadow-1:0 1px 2px rgba(28,29,51,0.06), 0 1px 1px rgba(28,29,51,0.04);--shadow-2:0 2px 6px rgba(28,29,51,0.06), 0 10px 24px rgba(28,29,51,0.08);--shadow-3:0 2px 8px rgba(28,29,51,0.06), 0 24px 56px rgba(28,29,51,0.16);--space-0:0px;--space-2xs:2px;--space-xs:4px;--space-sm:8px;--space-md:12px;--space-lg:16px;--space-xl:24px;--space-2xl:32px;--space-3xl:40px;--space-4xl:48px;--space-5xl:64px;--space-6xl:80px;--space-7xl:96px;--space-8xl:128px;--radius-none:0px;--radius-xs:2px;--radius-sm:4px;--radius-md:6px;--radius-lg:10px;--radius-full:999px;--bp-sm:480px;--bp-md:768px;--bp-lg:1024px;--bp-xl:1280px;--bp-2xl:1536px;--container-prose:680px;--container-narrow:880px;--container-default:1200px;--container-wide:1360px;--columns-mobile:4;--columns-tablet:8;--columns-desktop:12;--gutter-mobile:16px;--gutter-tablet:24px;--gutter-desktop:32px;--target-min:44px;--control-sm:36px;--control-md:48px;--control-lg:56px;--icon-sm:16px;--icon-md:20px;--icon-lg:28px;--icon-xl:40px;--z-base:0;--z-sticky:100;--z-dropdown:200;--z-overlay:300;--z-modal:400;--z-toast:500;--duration-instant:80ms;--duration-quick:160ms;--duration-considered:240ms;--ease-standard:cubic-bezier(0.2, 0, 0, 1);--ease-exit:cubic-bezier(0.4, 0, 1, 1);--font-sans:"Outfit", "Segoe UI", system-ui, -apple-system, sans-serif}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--background:#111220;--surface:#1B1C2C;--surface-subtle:#161726;--surface-inverse:#0B0C18;--text-primary:#F2F0EA;--text-secondary:#C7C4BC;--text-muted:#9C998F;--text-inverse:#F2F0EA;--text-inverse-muted:#A9A8BE;--border:#2A2B3E;--border-strong:#6B6C85;--border-inverse:#2A2B40;--brand-primary:#A9ACE8;--brand-primary-hover:#C4C6F0;--brand-primary-active:#D6D8F5;--on-brand-primary:#111333;--brand-primary-soft:#1E2046;--brand-secondary:#6CC3BB;--brand-secondary-hover:#8ED3CC;--on-brand-secondary:#0B1F1E;--brand-secondary-soft:#0F2826;--accent:#F0BC4A;--accent-hover:#F5C969;--on-accent:#111220;--accent-text:#F0BC4A;--accent-soft:#2A2210;--success:#7FCB8E;--success-soft:#15251A;--on-success:#0F1A12;--warning:#F2A05C;--warning-soft:#2A1C10;--error:#F4877D;--error-hover:#F8A59D;--on-error:#111220;--error-soft:#2C1715;--focus-ring:#F5C656;--focus-ring-inverse:#F5C656;--disabled-surface:#24253A;--disabled-text:#6B6C85;--overlay:rgba(0,0,0,0.62);--indigo-50:#F1F1F9;--indigo-100:#E1E2F2;--indigo-200:#C4C6E6;--indigo-300:#9FA2D4;--indigo-400:#7478BD;--indigo-500:#4F54A6;--indigo-600:#3A3F96;--indigo-700:#2D3185;--indigo-800:#232769;--indigo-900:#1A1D4E;--indigo-950:#111333;--marigold-50:#FFF8E8;--marigold-100:#FDEFC9;--marigold-200:#FADD8E;--marigold-300:#F5C656;--marigold-400:#EDB030;--marigold-500:#D99A18;--marigold-600:#B87809;--marigold-700:#875708;--marigold-800:#6B440D;--marigold-900:#4A2F0B;--peacock-50:#EAF5F4;--peacock-100:#CFE9E6;--peacock-200:#9FD2CD;--peacock-300:#6CC3BB;--peacock-400:#36958F;--peacock-500:#1A7A75;--peacock-600:#0F6560;--peacock-700:#0B4F4B;--peacock-800:#0B3C39;--peacock-900:#082B29;--sand-0:#FFFFFF;--sand-25:#FBFAF7;--sand-50:#F4F2EC;--sand-100:#EDEAE3;--sand-200:#E0DCD2;--sand-300:#C9C4B8;--sand-400:#A8A397;--sand-500:#8E897E;--sand-600:#66625A;--sand-700:#4A4944;--sand-800:#2E2D2A;--sand-900:#1C1D33;--shadow-0:none;--shadow-1:0 1px 2px rgba(0,0,0,0.4);--shadow-2:0 2px 6px rgba(0,0,0,0.4), 0 10px 24px rgba(0,0,0,0.35);--shadow-3:0 2px 8px rgba(0,0,0,0.5), 0 24px 56px rgba(0,0,0,0.5);color-scheme:dark}}
:root[data-theme="dark"]{--background:#111220;--surface:#1B1C2C;--surface-subtle:#161726;--surface-inverse:#0B0C18;--text-primary:#F2F0EA;--text-secondary:#C7C4BC;--text-muted:#9C998F;--text-inverse:#F2F0EA;--text-inverse-muted:#A9A8BE;--border:#2A2B3E;--border-strong:#6B6C85;--border-inverse:#2A2B40;--brand-primary:#A9ACE8;--brand-primary-hover:#C4C6F0;--brand-primary-active:#D6D8F5;--on-brand-primary:#111333;--brand-primary-soft:#1E2046;--brand-secondary:#6CC3BB;--brand-secondary-hover:#8ED3CC;--on-brand-secondary:#0B1F1E;--brand-secondary-soft:#0F2826;--accent:#F0BC4A;--accent-hover:#F5C969;--on-accent:#111220;--accent-text:#F0BC4A;--accent-soft:#2A2210;--success:#7FCB8E;--success-soft:#15251A;--on-success:#0F1A12;--warning:#F2A05C;--warning-soft:#2A1C10;--error:#F4877D;--error-hover:#F8A59D;--on-error:#111220;--error-soft:#2C1715;--focus-ring:#F5C656;--focus-ring-inverse:#F5C656;--disabled-surface:#24253A;--disabled-text:#6B6C85;--overlay:rgba(0,0,0,0.62);--indigo-50:#F1F1F9;--indigo-100:#E1E2F2;--indigo-200:#C4C6E6;--indigo-300:#9FA2D4;--indigo-400:#7478BD;--indigo-500:#4F54A6;--indigo-600:#3A3F96;--indigo-700:#2D3185;--indigo-800:#232769;--indigo-900:#1A1D4E;--indigo-950:#111333;--marigold-50:#FFF8E8;--marigold-100:#FDEFC9;--marigold-200:#FADD8E;--marigold-300:#F5C656;--marigold-400:#EDB030;--marigold-500:#D99A18;--marigold-600:#B87809;--marigold-700:#875708;--marigold-800:#6B440D;--marigold-900:#4A2F0B;--peacock-50:#EAF5F4;--peacock-100:#CFE9E6;--peacock-200:#9FD2CD;--peacock-300:#6CC3BB;--peacock-400:#36958F;--peacock-500:#1A7A75;--peacock-600:#0F6560;--peacock-700:#0B4F4B;--peacock-800:#0B3C39;--peacock-900:#082B29;--sand-0:#FFFFFF;--sand-25:#FBFAF7;--sand-50:#F4F2EC;--sand-100:#EDEAE3;--sand-200:#E0DCD2;--sand-300:#C9C4B8;--sand-400:#A8A397;--sand-500:#8E897E;--sand-600:#66625A;--sand-700:#4A4944;--sand-800:#2E2D2A;--sand-900:#1C1D33;--shadow-0:none;--shadow-1:0 1px 2px rgba(0,0,0,0.4);--shadow-2:0 2px 6px rgba(0,0,0,0.4), 0 10px 24px rgba(0,0,0,0.35);--shadow-3:0 2px 8px rgba(0,0,0,0.5), 0 24px 56px rgba(0,0,0,0.5);color-scheme:dark}

/* ==========================================================================
   Tausi — component stylesheet
   Loaded after tokens.css. Every colour, space, radius and shadow comes from a
   token. Class prefix: ts-. BEM-ish: .ts-block, .ts-block__part, .ts-block--variant
   ========================================================================== */

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--background);
  color: var(--text-primary);
  font-family: var(--font-sans);
  font-size: 17px;
  line-height: 28px;
  font-weight: 400;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
img { max-width: 100%; display: block; }
a { color: var(--brand-primary); text-underline-offset: 3px; text-decoration-thickness: 1px; }
a:hover { color: var(--brand-primary-hover); text-decoration-thickness: 2px; }
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 3px solid var(--focus-ring);
  outline-offset: 2px;
  border-radius: var(--radius-xs);
}
.ts-inverse :where(a, button, input, select, textarea, summary, [tabindex]):focus-visible { outline-color: var(--focus-ring-inverse); }
.ts-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.ts-skip { position: absolute; left: var(--space-lg); top: -100px; background: var(--surface); color: var(--brand-primary); padding: var(--space-sm) var(--space-lg); border-radius: var(--radius-sm); z-index: var(--z-toast); }
.ts-skip:focus { top: var(--space-sm); }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition-duration: 0ms !important; animation-duration: 0ms !important; scroll-behavior: auto !important; }
}

/* ---------- Icons ---------- */
.ts-icon { display: inline-flex; flex: none; width: var(--icon-md); height: var(--icon-md); color: inherit; }
.ts-icon svg { width: 100%; height: 100%; display: block; }
.ts-icon--sm { width: var(--icon-sm); height: var(--icon-sm); }
.ts-icon--lg { width: var(--icon-lg); height: var(--icon-lg); }
.ts-icon--xl { width: var(--icon-xl); height: var(--icon-xl); }

/* ---------- Type (responsive) ---------- */
.ts-display, .ts-h1, .ts-h2, .ts-h3, .ts-h4 { margin: 0; font-weight: 500; color: var(--text-primary); text-wrap: balance; }
.ts-display { font-size: 40px; line-height: 44px; letter-spacing: -0.02em; }
.ts-h1 { font-size: 34px; line-height: 40px; letter-spacing: -0.015em; }
.ts-h2 { font-size: 28px; line-height: 34px; letter-spacing: -0.01em; }
.ts-h3 { font-size: 23px; line-height: 29px; letter-spacing: -0.005em; }
.ts-h4 { font-size: 20px; line-height: 26px; }
@media (min-width: 768px) {
  .ts-display { font-size: 52px; line-height: 56px; }
  .ts-h1 { font-size: 42px; line-height: 48px; }
  .ts-h2 { font-size: 32px; line-height: 38px; }
}
@media (min-width: 1024px) {
  .ts-display { font-size: 64px; line-height: 68px; letter-spacing: -0.025em; }
  .ts-h1 { font-size: 48px; line-height: 54px; letter-spacing: -0.02em; }
  .ts-h2 { font-size: 36px; line-height: 42px; letter-spacing: -0.015em; }
  .ts-h3 { font-size: 28px; line-height: 34px; letter-spacing: -0.01em; }
  .ts-h4 { font-size: 22px; line-height: 28px; letter-spacing: -0.005em; }
}
.ts-lead { font-size: 19px; line-height: 30px; color: var(--text-secondary); margin: 0; max-width: 60ch; }
.ts-body { font-size: 17px; line-height: 28px; margin: 0; }
.ts-small { font-size: 15px; line-height: 24px; letter-spacing: 0.005em; margin: 0; }
.ts-caption { font-size: 13px; line-height: 18px; letter-spacing: 0.01em; color: var(--text-muted); margin: 0; }
.ts-overline { font-size: 12px; line-height: 16px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--accent-text); margin: 0; }
.ts-overline--muted { color: var(--text-muted); }
.ts-secondary { color: var(--text-secondary); }
.ts-muted { color: var(--text-muted); }
.ts-prose { max-width: var(--container-prose); }
.ts-prose > * + * { margin-top: var(--space-lg); }
.ts-prose h2, .ts-prose h3 { margin-top: var(--space-3xl); }
.ts-figure-num { font-size: 36px; line-height: 40px; font-weight: 300; letter-spacing: -0.02em; font-variant-numeric: lining-nums; }
@media (min-width: 1024px) { .ts-figure-num { font-size: 44px; line-height: 48px; } }

/* ---------- Layout ---------- */
.ts-container { width: 100%; max-width: calc(var(--container-default) + 2 * var(--gutter-mobile)); margin-inline: auto; padding-inline: var(--gutter-mobile); }
.ts-container--wide { max-width: calc(var(--container-wide) + 2 * var(--gutter-mobile)); }
.ts-container--narrow { max-width: calc(var(--container-narrow) + 2 * var(--gutter-mobile)); }
@media (min-width: 768px) {
  .ts-container { padding-inline: 32px; max-width: calc(var(--container-default) + 64px); }
  .ts-container--wide { max-width: calc(var(--container-wide) + 64px); }
  .ts-container--narrow { max-width: calc(var(--container-narrow) + 64px); }
}
@media (min-width: 1024px) {
  .ts-container { padding-inline: 48px; max-width: calc(var(--container-default) + 96px); }
  .ts-container--wide { max-width: calc(var(--container-wide) + 96px); }
  .ts-container--narrow { max-width: calc(var(--container-narrow) + 96px); }
}
.ts-section { padding-block: var(--space-5xl); }
@media (min-width: 768px) { .ts-section { padding-block: var(--space-6xl); } }
@media (min-width: 1280px) { .ts-section { padding-block: var(--space-7xl); } }
.ts-section--tight { padding-block: var(--space-4xl); }
.ts-section--subtle { background: var(--surface-subtle); }
.ts-section--rule { border-top: 1px solid var(--border); }
.ts-inverse { background: var(--surface-inverse); color: var(--text-inverse); }
.ts-inverse .ts-display, .ts-inverse .ts-h1, .ts-inverse .ts-h2, .ts-inverse .ts-h3, .ts-inverse .ts-h4 { color: var(--text-inverse); }
.ts-inverse .ts-lead, .ts-inverse .ts-secondary, .ts-inverse .ts-muted, .ts-inverse .ts-caption { color: var(--text-inverse-muted); }
.ts-inverse .ts-overline { color: var(--accent); }
.ts-inverse a:not(.ts-btn) { color: var(--text-inverse); }

.ts-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); column-gap: var(--gutter-mobile); row-gap: var(--space-xl); }
.ts-grid > * { grid-column: 1 / -1; min-width: 0; }
@media (min-width: 768px) { .ts-grid { grid-template-columns: repeat(8, minmax(0, 1fr)); column-gap: var(--gutter-tablet); } }
@media (min-width: 1024px) {
  .ts-grid { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--gutter-desktop); }
  .ts-span-3 { grid-column: span 3; } .ts-span-4 { grid-column: span 4; } .ts-span-5 { grid-column: span 5; }
  .ts-span-6 { grid-column: span 6; } .ts-span-7 { grid-column: span 7; } .ts-span-8 { grid-column: span 8; }
  .ts-start-6 { grid-column-start: 6; } .ts-start-7 { grid-column-start: 7; } .ts-start-5 { grid-column-start: 5; }
}
@media (min-width: 768px) and (max-width: 1023px) { .ts-md-span-4 { grid-column: span 4; } }

/* The editorial split: a section's heading sits in a left margin column, content on the right. */
.ts-split { display: grid; gap: var(--space-3xl); }
@media (min-width: 1024px) {
  .ts-split { grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: var(--gutter-desktop); }
  .ts-split__head { position: sticky; top: 112px; align-self: start; }
}
.ts-section-head { display: grid; gap: var(--space-md); max-width: 44rem; margin-bottom: var(--space-3xl); }
@media (min-width: 1024px) { .ts-section-head { margin-bottom: var(--space-4xl); } }
.ts-stack { display: flex; flex-direction: column; gap: var(--space-lg); }
.ts-row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-md); }
.ts-hr { border: 0; border-top: 1px solid var(--border); margin: 0; }

/* ---------- Buttons ---------- */
.ts-btn {
  --btn-bg: transparent; --btn-fg: var(--brand-primary); --btn-bd: transparent;
  display: inline-flex; align-items: center; justify-content: center; gap: var(--space-sm);
  min-height: var(--control-md); padding: 0 22px;
  font: 500 16px/20px var(--font-sans); letter-spacing: 0.01em;
  color: var(--btn-fg); background: var(--btn-bg); border: 1.5px solid var(--btn-bd);
  border-radius: var(--radius-sm); cursor: pointer; text-decoration: none; white-space: nowrap;
  transition: background var(--duration-instant) var(--ease-standard), color var(--duration-instant) var(--ease-standard), border-color var(--duration-instant) var(--ease-standard), transform var(--duration-instant) var(--ease-standard);
}
.ts-btn:hover { text-decoration: none; }
.ts-btn:active { transform: translateY(1px); }
.ts-btn .ts-icon { width: var(--icon-md); height: var(--icon-md); }
.ts-btn--primary { --btn-bg: var(--brand-primary); --btn-fg: var(--on-brand-primary); --btn-bd: var(--brand-primary); }
.ts-btn--primary:hover { --btn-bg: var(--brand-primary-hover); --btn-bd: var(--brand-primary-hover); color: var(--on-brand-primary); }
.ts-btn--primary:active { --btn-bg: var(--brand-primary-active); --btn-bd: var(--brand-primary-active); }
.ts-btn--secondary { --btn-bg: transparent; --btn-fg: var(--brand-primary); --btn-bd: var(--brand-primary); }
.ts-btn--secondary:hover { --btn-bg: var(--brand-primary-soft); color: var(--brand-primary-hover); }
.ts-btn--tertiary { --btn-fg: var(--brand-primary); padding-inline: 4px; min-height: var(--target-min); }
.ts-btn--tertiary .ts-btn__label { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; }
.ts-btn--tertiary:hover .ts-btn__label { text-decoration-thickness: 2px; }
.ts-btn--tertiary:hover .ts-icon { transform: translateX(3px); }
.ts-btn--tertiary .ts-icon { transition: transform var(--duration-quick) var(--ease-standard); }
.ts-btn--service { --btn-bg: var(--brand-secondary); --btn-fg: var(--on-brand-secondary); --btn-bd: var(--brand-secondary); }
.ts-btn--service:hover { --btn-bg: var(--brand-secondary-hover); --btn-bd: var(--brand-secondary-hover); color: var(--on-brand-secondary); }
.ts-btn--destructive { --btn-bg: var(--error); --btn-fg: var(--on-error); --btn-bd: var(--error); }
.ts-btn--destructive:hover { --btn-bg: var(--error-hover); --btn-bd: var(--error-hover); color: var(--on-error); }
.ts-btn--destructive-quiet { --btn-fg: var(--error); --btn-bd: var(--error); }
.ts-btn--destructive-quiet:hover { --btn-bg: var(--error-soft); color: var(--error); }
.ts-btn--on-inverse { --btn-bg: var(--text-inverse); --btn-fg: var(--surface-inverse); --btn-bd: var(--text-inverse); }
.ts-btn--on-inverse:hover { --btn-bg: var(--accent); --btn-bd: var(--accent); color: var(--on-accent); }
.ts-btn--ghost-inverse { --btn-fg: var(--text-inverse); --btn-bd: var(--text-inverse-muted); }
.ts-btn--ghost-inverse:hover { --btn-bd: var(--text-inverse); color: var(--text-inverse); background: rgba(255,255,255,0.06); }
.ts-btn--sm { min-height: var(--control-sm); padding: 0 14px; font-size: 14px; line-height: 18px; }
.ts-btn--lg { min-height: var(--control-lg); padding: 0 28px; font-size: 17px; }
.ts-btn--block { width: 100%; }
.ts-btn:disabled, .ts-btn[aria-disabled="true"] {
  --btn-bg: var(--disabled-surface); --btn-fg: var(--disabled-text); --btn-bd: var(--disabled-surface);
  cursor: not-allowed; transform: none; color: var(--disabled-text);
}
.ts-btn--secondary:disabled, .ts-btn--tertiary:disabled { --btn-bg: transparent; --btn-bd: var(--border); }
.ts-btn--tertiary:disabled { --btn-bd: transparent; }
.ts-btn[aria-busy="true"] { cursor: progress; position: relative; }
.ts-btn[aria-busy="true"] .ts-btn__label { opacity: 0.85; }
.ts-spinner { width: 18px; height: 18px; border-radius: var(--radius-full); border: 2px solid currentColor; border-right-color: transparent; animation: ts-spin 0.8s linear infinite; flex: none; }
@keyframes ts-spin { to { transform: rotate(360deg); } }

.ts-icon-btn {
  display: inline-flex; align-items: center; justify-content: center;
  width: var(--target-min); height: var(--target-min); padding: 0;
  border: 1px solid transparent; border-radius: var(--radius-sm);
  background: transparent; color: var(--text-primary); cursor: pointer;
  transition: background var(--duration-instant) var(--ease-standard);
}
.ts-icon-btn:hover { background: var(--surface-subtle); color: var(--brand-primary); }
.ts-icon-btn--outline { border-color: var(--border-strong); }
.ts-icon-btn--filled { background: var(--brand-primary); color: var(--on-brand-primary); }
.ts-icon-btn--filled:hover { background: var(--brand-primary-hover); color: var(--on-brand-primary); }
.ts-icon-btn:disabled { color: var(--disabled-text); background: transparent; cursor: not-allowed; }

/* ---------- Tags ---------- */
.ts-tag { display: inline-flex; align-items: center; gap: var(--space-xs); padding: 2px 8px; border-radius: var(--radius-xs); font-size: 13px; line-height: 20px; font-weight: 500; background: var(--surface-subtle); color: var(--text-secondary); border: 1px solid var(--border); }
.ts-tag--brand { background: var(--brand-primary-soft); color: var(--brand-primary); border-color: transparent; }
.ts-tag--accent { background: var(--accent-soft); color: var(--accent-text); border-color: transparent; }
.ts-tag--service { background: var(--brand-secondary-soft); color: var(--brand-secondary); border-color: transparent; }
.ts-tag--success { background: var(--success-soft); color: var(--success); border-color: transparent; }
.ts-tag--warning { background: var(--warning-soft); color: var(--warning); border-color: transparent; }
.ts-tag--error { background: var(--error-soft); color: var(--error); border-color: transparent; }

/* ---------- Forms ---------- */
.ts-field { display: grid; gap: var(--space-sm); min-width: 0; }
.ts-label { font-size: 15px; line-height: 20px; font-weight: 500; color: var(--text-primary); }
.ts-label .ts-optional { font-weight: 400; color: var(--text-muted); }
.ts-hint { font-size: 15px; line-height: 22px; color: var(--text-secondary); margin: 0; }
.ts-input, .ts-select, .ts-textarea {
  width: 100%; min-height: var(--control-md); padding: 12px 14px;
  font: 400 17px/22px var(--font-sans); color: var(--text-primary);
  background: var(--surface); border: 1px solid var(--border-strong); border-radius: var(--radius-sm);
  box-shadow: var(--shadow-1);
  transition: border-color var(--duration-instant) var(--ease-standard), box-shadow var(--duration-instant) var(--ease-standard);
  appearance: none; -webkit-appearance: none;
}
.ts-input::placeholder, .ts-textarea::placeholder { color: var(--text-muted); opacity: 1; }
.ts-input:hover, .ts-select:hover, .ts-textarea:hover { border-color: var(--text-secondary); }
.ts-input:focus-visible, .ts-select:focus-visible, .ts-textarea:focus-visible { outline: 3px solid var(--focus-ring); outline-offset: 2px; border-color: var(--brand-primary); border-radius: var(--radius-sm); }
.ts-textarea { min-height: 128px; resize: vertical; line-height: 26px; }
.ts-select { padding-right: 44px; cursor: pointer;
  background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%);
  background-position: calc(100% - 22px) 52%, calc(100% - 16px) 52%; background-size: 6px 6px, 6px 6px; background-repeat: no-repeat; }
.ts-input:disabled, .ts-select:disabled, .ts-textarea:disabled { background: var(--disabled-surface); color: var(--disabled-text); border-color: var(--border); box-shadow: none; cursor: not-allowed; }
.ts-input[readonly] { background: var(--surface-subtle); box-shadow: none; }
.ts-field--error .ts-input, .ts-field--error .ts-select, .ts-field--error .ts-textarea, [aria-invalid="true"] { border-color: var(--error); border-width: 2px; padding: 11px 13px; }
.ts-field--success .ts-input { border-color: var(--success); }
.ts-field__msg { display: flex; gap: var(--space-sm); align-items: flex-start; font-size: 15px; line-height: 22px; margin: 0; }
.ts-field__msg .ts-icon { width: 18px; height: 18px; margin-top: 2px; }
.ts-field__msg--error { color: var(--error); font-weight: 500; }
.ts-field__msg--success { color: var(--success); }
.ts-input-group { position: relative; display: flex; align-items: center; }
.ts-input-group > .ts-icon { position: absolute; left: 14px; color: var(--text-muted); pointer-events: none; }
.ts-input-group > .ts-input { padding-left: 44px; }
.ts-input-group__prefix { display: inline-flex; align-items: center; min-height: var(--control-md); padding: 0 12px; border: 1px solid var(--border-strong); border-right: 0; border-radius: var(--radius-sm) 0 0 var(--radius-sm); background: var(--surface-subtle); color: var(--text-secondary); font-size: 16px; }
.ts-input-group__prefix + .ts-input { border-radius: 0 var(--radius-sm) var(--radius-sm) 0; }

.ts-search { display: flex; align-items: stretch; background: var(--surface); border: 1px solid var(--border-strong); border-radius: var(--radius-sm); box-shadow: var(--shadow-1); }
.ts-search:focus-within { outline: 3px solid var(--focus-ring); outline-offset: 2px; border-color: var(--brand-primary); }
.ts-search > .ts-icon { align-self: center; margin-left: 14px; color: var(--text-muted); }
.ts-search input { flex: 1; min-width: 0; border: 0; background: transparent; font: 400 17px/22px var(--font-sans); color: var(--text-primary); padding: 12px; min-height: var(--control-md); }
.ts-search input:focus { outline: none; }
.ts-search input::placeholder { color: var(--text-muted); }
.ts-search .ts-btn { border-radius: 0 3px 3px 0; min-height: auto; }
.ts-search-results { margin-top: var(--space-xs); background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); box-shadow: var(--shadow-2); padding: var(--space-xs) 0; list-style: none; margin-block: 4px 0; }
.ts-search-results li a { display: flex; justify-content: space-between; gap: var(--space-md); padding: 10px 16px; color: var(--text-primary); text-decoration: none; }
.ts-search-results li a:hover, .ts-search-results li a[aria-selected="true"] { background: var(--brand-primary-soft); color: var(--brand-primary); }
.ts-search-results mark { background: none; color: inherit; font-weight: 600; }

.ts-fieldset { border: 0; padding: 0; margin: 0; display: grid; gap: var(--space-md); min-width: 0; }
.ts-fieldset legend { padding: 0; margin-bottom: var(--space-xs); font-size: 17px; line-height: 24px; font-weight: 500; }
.ts-choice { display: flex; align-items: flex-start; gap: var(--space-md); min-height: var(--target-min); padding-block: 10px; cursor: pointer; font-size: 17px; line-height: 24px; }
.ts-choice input { appearance: none; -webkit-appearance: none; margin: 0; flex: none; width: 22px; height: 22px; border: 1.5px solid var(--border-strong); background: var(--surface); display: grid; place-content: center; cursor: pointer; transition: background var(--duration-instant), border-color var(--duration-instant); }
.ts-choice input[type="checkbox"] { border-radius: var(--radius-xs); margin-top: 1px; }
.ts-choice input[type="radio"] { border-radius: var(--radius-full); margin-top: 1px; }
.ts-choice input:hover { border-color: var(--brand-primary); }
.ts-choice input:checked { background: var(--brand-primary); border-color: var(--brand-primary); }
.ts-choice input[type="checkbox"]:checked::before { content: ""; width: 12px; height: 7px; border-left: 2px solid var(--on-brand-primary); border-bottom: 2px solid var(--on-brand-primary); transform: translateY(-2px) rotate(-45deg); }
.ts-choice input[type="checkbox"]:indeterminate { background: var(--brand-primary); border-color: var(--brand-primary); }
.ts-choice input[type="checkbox"]:indeterminate::before { content: ""; width: 10px; height: 2px; background: var(--on-brand-primary); }
.ts-choice input[type="radio"]:checked { background: var(--surface); border: 7px solid var(--brand-primary); }
.ts-choice input:disabled { background: var(--disabled-surface); border-color: var(--border); cursor: not-allowed; }
.ts-choice:has(input:disabled) { color: var(--disabled-text); cursor: not-allowed; }
.ts-choice__text { display: grid; gap: 2px; }
.ts-choice__text small { font-size: 15px; line-height: 22px; color: var(--text-secondary); }
.ts-field--error .ts-choice input { border-color: var(--error); border-width: 2px; }
/* Choice card: a radio presented as a selectable panel (quote flow) */
.ts-choice-card { position: relative; display: flex; gap: var(--space-md); align-items: flex-start; padding: var(--space-lg); border: 1px solid var(--border-strong); border-radius: var(--radius-sm); background: var(--surface); cursor: pointer; transition: border-color var(--duration-instant), background var(--duration-instant); }
.ts-choice-card:hover { border-color: var(--brand-primary); }
.ts-choice-card:has(input:checked) { border-color: var(--brand-primary); background: var(--brand-primary-soft); box-shadow: inset 0 0 0 1px var(--brand-primary); }
.ts-choice-card:has(input:focus-visible) { outline: 3px solid var(--focus-ring); outline-offset: 2px; }
.ts-choice-card input { position: absolute; opacity: 0; pointer-events: none; }
.ts-choice-card .ts-icon { color: var(--brand-primary); }

.ts-toggle { display: inline-flex; align-items: center; gap: var(--space-md); min-height: var(--target-min); cursor: pointer; font-size: 17px; }
.ts-toggle input { appearance: none; -webkit-appearance: none; margin: 0; position: relative; width: 44px; height: 26px; border-radius: var(--radius-full); background: var(--border-strong); cursor: pointer; transition: background var(--duration-quick) var(--ease-standard); flex: none; }
.ts-toggle input::after { content: ""; position: absolute; top: 3px; left: 3px; width: 20px; height: 20px; border-radius: var(--radius-full); background: var(--surface); box-shadow: 0 1px 2px rgba(0,0,0,0.2); transition: transform var(--duration-quick) var(--ease-standard); }
.ts-toggle input:checked { background: var(--brand-primary); }
.ts-toggle input:checked::after { transform: translateX(18px); }
.ts-toggle input:disabled { background: var(--disabled-surface); cursor: not-allowed; }
.ts-toggle__state { font-size: 15px; color: var(--text-secondary); }

.ts-error-summary { border: 2px solid var(--error); background: var(--error-soft); border-radius: var(--radius-sm); padding: var(--space-lg) var(--space-xl); }
.ts-error-summary h2 { margin: 0 0 var(--space-sm); font-size: 18px; line-height: 24px; font-weight: 600; color: var(--error); display: flex; gap: var(--space-sm); align-items: center; }
.ts-error-summary ul { margin: 0; padding-left: 20px; }
.ts-error-summary a { color: var(--error); font-weight: 500; }
.ts-form-grid { display: grid; gap: var(--space-xl) var(--space-lg); }
@media (min-width: 768px) { .ts-form-grid { grid-template-columns: 1fr 1fr; } .ts-form-grid .ts-field--full { grid-column: 1 / -1; } }

/* ---------- Header & navigation ---------- */
.ts-utility { background: var(--surface-inverse); color: var(--text-inverse-muted); font-size: 13px; line-height: 20px; letter-spacing: 0.01em; }
.ts-utility__inner { display: flex; align-items: center; justify-content: space-between; gap: var(--space-lg); min-height: 36px; }
.ts-utility nav ul { display: flex; gap: var(--space-xl); list-style: none; margin: 0; padding: 0; }
.ts-utility a { color: var(--text-inverse-muted); text-decoration: none; display: inline-flex; align-items: center; gap: 6px; min-height: 36px; }
.ts-utility a:hover { color: var(--text-inverse); text-decoration: underline; }
.ts-utility__contact { display: flex; gap: var(--space-xl); }
.ts-utility .ts-icon { width: 14px; height: 14px; }
@media (max-width: 1023px) { .ts-utility { display: none; } }

.ts-header { position: sticky; top: 0; z-index: var(--z-sticky); background: var(--surface); border-bottom: 1px solid var(--border); }
.ts-header__inner { display: flex; align-items: center; gap: var(--space-xl); min-height: 72px; }
@media (min-width: 1024px) { .ts-header__inner { min-height: 84px; } }
.ts-logo { display: inline-flex; align-items: center; flex: none; }
.ts-logo img { height: 44px; width: auto; }
@media (min-width: 1024px) { .ts-logo img { height: 54px; } }
.ts-logo--mark img { height: 40px; }
.ts-logo-dark { display: none; }
.ts-nav { display: none; flex: 1; }
@media (min-width: 1024px) { .ts-nav { display: flex; align-items: center; } }
.ts-nav > ul { display: flex; gap: 4px; list-style: none; margin: 0 0 0 auto; padding: 0; }
.ts-nav__link { position: relative; display: inline-flex; align-items: center; gap: 6px; min-height: var(--target-min); padding: 0 14px; background: none; border: 0; cursor: pointer; font: 450 16px/24px var(--font-sans); color: var(--text-primary); text-decoration: none; border-radius: var(--radius-sm); }
.ts-nav__link:hover { color: var(--brand-primary); background: var(--surface-subtle); text-decoration: none; }
.ts-nav__link .ts-icon { width: 16px; height: 16px; transition: transform var(--duration-quick) var(--ease-standard); }
.ts-nav__link[aria-expanded="true"] { color: var(--brand-primary); background: var(--brand-primary-soft); }
.ts-nav__link[aria-expanded="true"] .ts-icon { transform: rotate(180deg); }
.ts-nav__link[aria-current="page"]::after, .ts-nav__link[aria-current="true"]::after { content: ""; position: absolute; left: 14px; right: 14px; bottom: -20px; height: 3px; background: var(--accent); }
.ts-header__actions { display: flex; align-items: center; gap: var(--space-sm); margin-left: auto; }
@media (min-width: 1024px) { .ts-header__actions { margin-left: var(--space-lg); } }
.ts-header__menu-btn { display: inline-flex; }
@media (min-width: 1024px) { .ts-header__menu-btn { display: none; } }
@media (max-width: 479px) { .ts-header__actions .ts-btn--primary { padding-inline: 14px; } }

.ts-breadcrumbs ol { display: flex; flex-wrap: wrap; align-items: center; gap: 4px var(--space-sm); list-style: none; margin: 0; padding: 0; font-size: 15px; line-height: 22px; }
.ts-breadcrumbs li { display: inline-flex; align-items: center; gap: var(--space-sm); color: var(--text-muted); }
.ts-breadcrumbs li + li::before { content: ""; width: 6px; height: 6px; border-top: 1.5px solid var(--text-muted); border-right: 1.5px solid var(--text-muted); transform: rotate(45deg); margin-right: 4px; }
.ts-breadcrumbs a { color: var(--text-secondary); text-decoration: none; padding-block: 11px; }
.ts-breadcrumbs a:hover { color: var(--brand-primary); text-decoration: underline; }
.ts-breadcrumbs [aria-current="page"] { color: var(--text-primary); font-weight: 500; }
@media (max-width: 767px) {
  .ts-breadcrumbs li:not(:nth-last-child(2)) { display: none; }
  .ts-breadcrumbs li:nth-last-child(2)::before { display: none; }
  .ts-breadcrumbs li:nth-last-child(2) a::before { content: "\2190\00a0"; }
}

/* ---------- Mega menu ---------- */
.ts-mega { background: var(--surface); border: 1px solid var(--border); border-top: 0; border-radius: 0 0 var(--radius-lg) var(--radius-lg); box-shadow: var(--shadow-3); }
.ts-mega__inner { display: grid; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 1280px) { .ts-mega__inner { grid-template-columns: minmax(0, 1fr) 300px; } }
.ts-mega__main { padding: var(--space-2xl) var(--space-2xl) var(--space-xl); }
.ts-mega__top { display: flex; justify-content: space-between; align-items: baseline; gap: var(--space-lg); padding-bottom: var(--space-lg); margin-bottom: var(--space-xl); border-bottom: 1px solid var(--border); }
.ts-mega__cols { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-2xl); }
.ts-mega__group + .ts-mega__group { margin-top: var(--space-xl); }
.ts-mega__cat { display: flex; align-items: center; gap: 10px; margin: 0 0 6px; font-size: 15px; line-height: 20px; font-weight: 600; color: var(--text-primary); }
.ts-mega__cat .ts-icon { width: 20px; height: 20px; color: var(--brand-primary); }
.ts-mega__cat a { color: inherit; text-decoration: none; display: inline-flex; align-items: center; gap: 10px; min-height: 32px; }
.ts-mega__cat a:hover { color: var(--brand-primary); text-decoration: underline; }
.ts-mega__cat .ts-mega__count { font-weight: 400; color: var(--text-muted); font-size: 13px; margin-left: 4px; }
.ts-mega__cat { align-items: flex-start; }
.ts-mega__cat > .ts-icon, .ts-mega__cat a > .ts-icon { margin-top: 0; flex: none; }
.ts-mega__list { list-style: none; margin: 0; padding: 0 0 0 30px; }
.ts-mega__list a { display: block; padding: 5px 0; font-size: 15px; line-height: 22px; color: var(--text-secondary); text-decoration: none; }
.ts-mega__list a:hover { color: var(--brand-primary); text-decoration: underline; }
.ts-mega__single { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--border); padding-top: var(--space-md); }
.ts-mega__rail { background: var(--surface-subtle); border-left: 1px solid var(--border); padding: var(--space-2xl) var(--space-xl); display: none; flex-direction: column; gap: var(--space-xl); border-radius: 0 0 var(--radius-lg) 0; }
@media (min-width: 1280px) { .ts-mega__rail { display: flex; } }
.ts-mega__rail-block { display: grid; gap: var(--space-sm); }
.ts-mega__rail-block + .ts-mega__rail-block { padding-top: var(--space-xl); border-top: 1px solid var(--border); }
.ts-mega__rail-block > .ts-btn { justify-self: start; }
.ts-mega__rail h3 { margin: 0; font-size: 17px; line-height: 24px; font-weight: 500; }
.ts-mega__rail p { margin: 0; font-size: 15px; line-height: 22px; color: var(--text-secondary); }
.ts-mega__foot { display: flex; flex-wrap: wrap; gap: var(--space-xl); align-items: center; margin-top: var(--space-xl); padding-top: var(--space-lg); border-top: 1px solid var(--border); font-size: 15px; color: var(--text-secondary); }
@media (max-width: 1279px) { .ts-mega__cols { gap: var(--space-xl); } .ts-mega__main { padding: var(--space-xl); } }

/* ---------- Mobile drawer ---------- */
.ts-drawer { background: var(--surface); display: flex; flex-direction: column; height: 100%; }
.ts-drawer__head { display: flex; align-items: center; justify-content: space-between; min-height: 72px; padding: 0 var(--space-lg); border-bottom: 1px solid var(--border); }
.ts-drawer__body { flex: 1; overflow-y: auto; padding: var(--space-sm) 0 var(--space-xl); }
.ts-drawer__search { padding: var(--space-md) var(--space-lg) var(--space-lg); }
.ts-drawer__list { list-style: none; margin: 0; padding: 0; }
.ts-drawer__list > li { border-bottom: 1px solid var(--border); }
.ts-drawer__item, .ts-drawer details > summary { display: flex; align-items: center; justify-content: space-between; gap: var(--space-md); min-height: 56px; padding: 0 var(--space-lg); font-size: 18px; line-height: 24px; font-weight: 500; color: var(--text-primary); text-decoration: none; cursor: pointer; list-style: none; }
.ts-drawer details > summary::-webkit-details-marker { display: none; }
.ts-drawer details > summary .ts-icon { transition: transform var(--duration-quick) var(--ease-standard); color: var(--text-muted); }
.ts-drawer details[open] > summary .ts-icon { transform: rotate(180deg); }
.ts-drawer details[open] > summary { color: var(--brand-primary); }
.ts-drawer__sub { list-style: none; margin: 0; padding: 0 0 var(--space-md); background: var(--surface-subtle); }
.ts-drawer__sub details > summary { min-height: 52px; font-size: 16px; font-weight: 500; padding-left: var(--space-lg); }
.ts-drawer__sub details > summary .ts-drawer__cat { display: inline-flex; align-items: center; gap: 12px; }
.ts-drawer__sub details > summary .ts-drawer__cat .ts-icon { color: var(--brand-primary); transform: none; }
.ts-drawer__sub .ts-drawer__count { margin-left: auto; margin-right: 8px; font-weight: 400; font-size: 14px; color: var(--text-muted); }
.ts-drawer__leaf { display: flex; align-items: center; min-height: 48px; padding: 0 var(--space-lg) 0 52px; font-size: 16px; color: var(--text-secondary); text-decoration: none; }
.ts-drawer__leaf:hover { color: var(--brand-primary); background: var(--brand-primary-soft); }
.ts-drawer__single { display: flex; align-items: center; gap: 12px; min-height: 52px; padding: 0 var(--space-lg); font-size: 16px; font-weight: 500; color: var(--text-primary); text-decoration: none; }
.ts-drawer__single .ts-icon { color: var(--brand-primary); }
.ts-drawer__foot { padding: var(--space-lg); border-top: 1px solid var(--border); display: grid; gap: var(--space-md); background: var(--surface); }
.ts-drawer__foot .ts-row { justify-content: space-between; }

/* ---------- Footer ---------- */
.ts-footer { background: var(--surface-inverse); color: var(--text-inverse-muted); font-size: 15px; line-height: 24px; }
.ts-footer a { color: var(--text-inverse-muted); text-decoration: none; }
.ts-footer a:hover { color: var(--text-inverse); text-decoration: underline; }
.ts-footer__top { display: grid; gap: var(--space-2xl); padding-block: var(--space-4xl) var(--space-2xl); border-bottom: 1px solid var(--border-inverse); }
@media (min-width: 1024px) { .ts-footer__top { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); align-items: end; padding-block: var(--space-5xl) var(--space-3xl); } }
.ts-footer__contact { display: grid; gap: var(--space-lg); margin: 0; }
.ts-footer__contact dd { overflow-wrap: anywhere; }
@media (min-width: 768px) { .ts-footer__contact { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .ts-footer__contact { grid-template-columns: repeat(3, max-content); gap: var(--space-2xl); justify-content: end; } }
.ts-footer__contact dt { font-size: 12px; line-height: 16px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--accent); margin-bottom: 6px; }
.ts-footer__contact dd { margin: 0; color: var(--text-inverse); font-size: 17px; line-height: 26px; }
.ts-footer__contact dd a { color: var(--text-inverse); }
.ts-footer__cols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-2xl) var(--space-xl); padding-block: var(--space-3xl); }
@media (min-width: 768px) { .ts-footer__cols { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .ts-footer__cols { grid-template-columns: repeat(5, minmax(0, 1fr)); } }
.ts-footer h2 { margin: 0 0 var(--space-md); font-size: 15px; line-height: 20px; font-weight: 600; color: var(--text-inverse); }
.ts-footer ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
.ts-footer li a { display: inline-block; padding-block: 5px; }
.ts-footer__bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--space-md) var(--space-xl); padding-block: var(--space-xl); border-top: 1px solid var(--border-inverse); font-size: 13px; line-height: 20px; }
.ts-footer__bottom ul { display: flex; flex-wrap: wrap; gap: 4px var(--space-xl); }
.ts-footer__social { display: flex; gap: var(--space-xs); }
.ts-footer__social a { display: inline-flex; width: var(--target-min); height: var(--target-min); align-items: center; justify-content: center; border: 1px solid var(--border-inverse); border-radius: var(--radius-sm); }
.ts-footer__social a:hover { border-color: var(--text-inverse-muted); text-decoration: none; }
.ts-footer__pay { display: inline-flex; align-items: center; gap: var(--space-md); padding: var(--space-md) var(--space-lg); border: 1px solid var(--border-inverse); border-radius: var(--radius-sm); color: var(--text-inverse); }
.ts-footer__pay strong { font-size: 22px; font-weight: 500; letter-spacing: 0.02em; color: var(--accent); }

/* ---------- Cards ---------- */
.ts-card { display: flex; flex-direction: column; gap: var(--space-md); padding: var(--space-xl); background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); min-width: 0; }
.ts-card--flat { background: transparent; border: 0; padding: 0; border-radius: 0; }
.ts-card--subtle { background: var(--surface-subtle); border-color: transparent; }
.ts-card__media { margin: calc(-1 * var(--space-xl)) calc(-1 * var(--space-xl)) var(--space-sm); border-radius: var(--radius-md) var(--radius-md) 0 0; overflow: hidden; }
.ts-card--flat .ts-card__media { margin: 0 0 var(--space-sm); border-radius: var(--radius-md); }
.ts-card__title { margin: 0; font-size: 20px; line-height: 26px; font-weight: 500; }
@media (min-width: 1024px) { .ts-card__title { font-size: 22px; line-height: 28px; } }
.ts-card__title a { color: var(--text-primary); text-decoration: none; }
.ts-card__title a::after { content: ""; position: absolute; inset: 0; }
.ts-card--link { position: relative; transition: border-color var(--duration-instant), box-shadow var(--duration-quick) var(--ease-standard), transform var(--duration-quick) var(--ease-standard); }
.ts-card--link:hover { border-color: var(--border-strong); box-shadow: var(--shadow-2); }
.ts-card--link:hover .ts-card__title a { color: var(--brand-primary); }
.ts-card--link:focus-within { outline: 3px solid var(--focus-ring); outline-offset: 2px; }
.ts-card--link :focus-visible { outline: none; }
.ts-card__body { margin: 0; font-size: 15px; line-height: 24px; color: var(--text-secondary); }
.ts-card__foot { margin-top: auto; padding-top: var(--space-sm); display: flex; align-items: center; justify-content: space-between; gap: var(--space-md); font-size: 15px; color: var(--brand-primary); font-weight: 500; }

/* Photo slot — placeholder used across previews; replace with real photography */
.ts-photo { position: relative; display: flex; align-items: flex-end; aspect-ratio: 4 / 3; max-width: 100%; background: var(--sand-100); color: var(--sand-600); overflow: hidden; }
.ts-photo::before { content: ""; position: absolute; inset: 0; background-image: repeating-linear-gradient(135deg, transparent 0 14px, rgba(142,137,126,0.14) 14px 15px); }
.ts-photo__note { position: relative; margin: var(--space-md); padding: 4px 8px; font-size: 12px; line-height: 16px; background: var(--surface); color: var(--text-secondary); border-radius: var(--radius-xs); }
.ts-photo--wide { aspect-ratio: 16 / 9; }
.ts-photo--tall { aspect-ratio: 4 / 5; }
.ts-photo--round { border-radius: var(--radius-md); }
:root[data-theme="dark"] .ts-photo { background: var(--sand-800); color: var(--sand-300); }

/* Product card: category-aware, no photo required. */
.ts-product { position: relative; display: grid; grid-template-columns: auto 1fr; gap: var(--space-xs) var(--space-lg); padding: var(--space-xl); background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); transition: border-color var(--duration-instant), box-shadow var(--duration-quick) var(--ease-standard); min-width: 0; }
.ts-product:hover { border-color: var(--border-strong); box-shadow: var(--shadow-2); }
.ts-product:focus-within { outline: 3px solid var(--focus-ring); outline-offset: 2px; }
.ts-product__icon { grid-row: span 3; width: 48px; height: 48px; display: grid; place-items: center; border-radius: var(--radius-sm); background: var(--brand-primary-soft); color: var(--brand-primary); }
.ts-product__icon .ts-icon { width: var(--icon-lg); height: var(--icon-lg); }
.ts-product__cat { font-size: 12px; line-height: 16px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-muted); margin: 0; }
.ts-product__title { margin: 0; font-size: 20px; line-height: 26px; font-weight: 500; }
.ts-product__title a { color: var(--text-primary); text-decoration: none; }
.ts-product__title a::after { content: ""; position: absolute; inset: 0; }
.ts-product__title a:focus-visible { outline: none; }
.ts-product:hover .ts-product__title a { color: var(--brand-primary); }
.ts-product__desc { margin: 0; font-size: 15px; line-height: 24px; color: var(--text-secondary); }
.ts-product__meta { grid-column: 2; display: flex; flex-wrap: wrap; gap: var(--space-sm); margin-top: var(--space-sm); }
.ts-product--row { grid-template-columns: auto 1fr auto; align-items: center; border-radius: 0; border-width: 0 0 1px; background: transparent; padding: var(--space-lg) 0; }
.ts-product--row:hover { box-shadow: none; border-color: var(--border-strong); }
.ts-product--row .ts-product__icon { grid-row: auto; width: 40px; height: 40px; }
.ts-product--row .ts-product__arrow { color: var(--brand-primary); transition: transform var(--duration-quick) var(--ease-standard); }
.ts-product--row:hover .ts-product__arrow { transform: translateX(4px); }

/* Feature block: text-led, no box. */
.ts-feature { display: grid; gap: var(--space-md); align-content: start; padding-top: var(--space-lg); border-top: 1px solid var(--border-strong); }
.ts-feature .ts-icon { width: 28px; height: 28px; color: var(--brand-primary); }
.ts-feature h3 { margin: 0; font-size: 20px; line-height: 26px; font-weight: 500; }
.ts-feature p { margin: 0; font-size: 15px; line-height: 24px; color: var(--text-secondary); }
.ts-feature-media { display: grid; gap: var(--space-3xl); align-items: center; }
@media (min-width: 1024px) { .ts-feature-media { grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: var(--space-5xl); } .ts-feature-media--flip > :first-child { order: 2; } }

/* Testimonial */
.ts-testimonial { margin: 0; display: grid; gap: var(--space-xl); padding-left: var(--space-xl); border-left: 3px solid var(--accent); }
.ts-testimonial blockquote { margin: 0; font-size: 21px; line-height: 31px; font-weight: 400; letter-spacing: -0.005em; color: var(--text-primary); text-wrap: pretty; }
@media (min-width: 1024px) { .ts-testimonial blockquote { font-size: 24px; line-height: 34px; } }
.ts-testimonial figcaption { display: flex; align-items: center; gap: var(--space-md); font-size: 15px; line-height: 22px; }
.ts-testimonial figcaption strong { display: block; font-weight: 500; color: var(--text-primary); }
.ts-testimonial figcaption span { color: var(--text-muted); }
.ts-avatar { width: 44px; height: 44px; border-radius: var(--radius-full); background: var(--brand-primary-soft); color: var(--brand-primary); display: grid; place-items: center; font-weight: 600; font-size: 15px; flex: none; }

/* Statistics: a ruled row, not tiles. */
.ts-stats { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-top: 1px solid var(--border-strong); }
@media (min-width: 1024px) { .ts-stats { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.ts-stat { padding: var(--space-xl) var(--space-lg) var(--space-lg) 0; display: grid; gap: var(--space-sm); align-content: start; }
.ts-stat + .ts-stat { padding-left: var(--space-lg); border-left: 1px solid var(--border); }
@media (max-width: 1023px) { .ts-stat:nth-child(odd) { border-left: 0; padding-left: 0; } .ts-stat:nth-child(n+3) { border-top: 1px solid var(--border); } }
.ts-stat__value { font-size: 36px; line-height: 40px; font-weight: 300; letter-spacing: -0.02em; color: var(--text-primary); }
@media (min-width: 1024px) { .ts-stat__value { font-size: 44px; line-height: 48px; } }
.ts-stat__value em { font-style: normal; color: var(--accent-text); }
.ts-stat__label { font-size: 15px; line-height: 22px; color: var(--text-secondary); margin: 0; }
.ts-inverse .ts-stats { border-color: var(--border-inverse); }
.ts-inverse .ts-stat + .ts-stat, .ts-inverse .ts-stat { border-color: var(--border-inverse); }
.ts-inverse .ts-stat__value { color: var(--text-inverse); }
.ts-inverse .ts-stat__value em { color: var(--accent); }
.ts-inverse .ts-stat__label { color: var(--text-inverse-muted); }

/* Callout: an aside inside content */
.ts-callout { display: grid; grid-template-columns: auto 1fr; gap: var(--space-xs) var(--space-lg); padding: var(--space-xl); border-radius: var(--radius-sm); background: var(--surface-subtle); }
.ts-callout > .ts-icon { grid-row: span 3; color: var(--brand-primary); width: 24px; height: 24px; }
.ts-callout h3 { margin: 0; font-size: 18px; line-height: 24px; font-weight: 500; }
.ts-callout p { margin: 0; font-size: 15px; line-height: 24px; color: var(--text-secondary); }
.ts-callout .ts-row { margin-top: var(--space-sm); }
.ts-callout--service { background: var(--brand-secondary-soft); }
.ts-callout--service > .ts-icon { color: var(--brand-secondary); }
.ts-callout--accent { background: var(--accent-soft); }
.ts-callout--accent > .ts-icon { color: var(--accent-text); }

/* Alerts: system feedback */
.ts-alert { display: grid; grid-template-columns: auto 1fr auto; gap: var(--space-md); align-items: start; padding: var(--space-lg); border-radius: var(--radius-sm); border: 1px solid; font-size: 15px; line-height: 22px; }
.ts-alert > .ts-icon { margin-top: 1px; }
.ts-alert strong { display: block; font-weight: 600; font-size: 16px; margin-bottom: 2px; }
.ts-alert p { margin: 0; color: var(--text-primary); }
.ts-alert--info { background: var(--brand-primary-soft); border-color: var(--indigo-200); color: var(--brand-primary); }
.ts-alert--success { background: var(--success-soft); border-color: var(--success); color: var(--success); }
.ts-alert--warning { background: var(--warning-soft); border-color: var(--warning); color: var(--warning); }
.ts-alert--error { background: var(--error-soft); border-color: var(--error); color: var(--error); }
.ts-alert .ts-icon-btn { width: 32px; height: 32px; margin: -6px -6px 0 0; color: var(--text-secondary); }
:root[data-theme="dark"] .ts-alert--info { border-color: var(--indigo-500); }
.ts-banner { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: var(--space-sm) var(--space-lg); padding: 10px var(--space-lg); background: var(--accent-soft); color: var(--text-primary); font-size: 15px; line-height: 22px; text-align: center; }

/* Accordion / FAQ — built on details/summary */
.ts-accordion { border-top: 1px solid var(--border-strong); }
.ts-accordion details { border-bottom: 1px solid var(--border); }
.ts-accordion summary { display: flex; justify-content: space-between; align-items: center; gap: var(--space-lg); min-height: 64px; padding: var(--space-lg) 0; cursor: pointer; list-style: none; font-size: 18px; line-height: 26px; font-weight: 500; color: var(--text-primary); }
@media (min-width: 1024px) { .ts-accordion summary { font-size: 20px; line-height: 28px; } }
.ts-accordion summary::-webkit-details-marker { display: none; }
.ts-accordion summary:hover { color: var(--brand-primary); }
.ts-accordion__sign { position: relative; flex: none; width: 32px; height: 32px; border-radius: var(--radius-full); border: 1px solid var(--border-strong); }
.ts-accordion__sign::before, .ts-accordion__sign::after { content: ""; position: absolute; left: 50%; top: 50%; width: 12px; height: 1.5px; background: currentColor; transform: translate(-50%, -50%); transition: transform var(--duration-quick) var(--ease-standard); }
.ts-accordion__sign::after { transform: translate(-50%, -50%) rotate(90deg); }
.ts-accordion details[open] .ts-accordion__sign { background: var(--brand-primary); border-color: var(--brand-primary); color: var(--on-brand-primary); }
.ts-accordion details[open] .ts-accordion__sign::after { transform: translate(-50%, -50%) rotate(0deg); }
.ts-accordion__panel { padding: 0 var(--space-5xl) var(--space-xl) 0; color: var(--text-secondary); font-size: 17px; line-height: 28px; max-width: var(--container-prose); }
.ts-accordion__panel > * { margin: 0; }
.ts-accordion__panel > * + * { margin-top: var(--space-md); }
@media (max-width: 767px) { .ts-accordion__panel { padding-right: 0; } }

/* Tables */
.ts-table-wrap { overflow-x: auto; border: 1px solid var(--border); border-radius: var(--radius-md); background: var(--surface); }
.ts-table { width: 100%; border-collapse: collapse; font-size: 15px; line-height: 22px; }
.ts-table caption { text-align: left; padding: var(--space-lg) var(--space-lg) var(--space-sm); font-weight: 500; font-size: 17px; }
.ts-table th, .ts-table td { padding: 14px var(--space-lg); text-align: left; vertical-align: top; border-bottom: 1px solid var(--border); }
.ts-table thead th { background: var(--surface-subtle); font-weight: 500; color: var(--text-primary); white-space: nowrap; }
.ts-table tbody th { font-weight: 500; color: var(--text-primary); }
.ts-table tbody tr:last-child > * { border-bottom: 0; }
.ts-table tbody tr:hover > * { background: var(--brand-primary-soft); }
.ts-table .ts-num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.ts-table--compact th, .ts-table--compact td { padding: 10px var(--space-md); }

/* Lists */
.ts-list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-md); }
.ts-list li { display: grid; grid-template-columns: auto 1fr; gap: var(--space-md); align-items: start; font-size: 17px; line-height: 26px; }
.ts-list .ts-icon { margin-top: 3px; }
.ts-list--check .ts-icon { color: var(--success); }
.ts-list--cross .ts-icon { color: var(--error); }
.ts-list--bullet li::before { content: ""; width: 6px; height: 6px; margin: 10px 8px 0 4px; background: var(--brand-primary); border-radius: 1px; }
.ts-dl { display: grid; margin: 0; border-top: 1px solid var(--border-strong); }
.ts-dl > div { display: grid; gap: var(--space-xs); padding: var(--space-lg) 0; border-bottom: 1px solid var(--border); }
@media (min-width: 768px) { .ts-dl > div { grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: var(--space-xl); } }
.ts-dl dt { font-weight: 500; color: var(--text-primary); font-size: 15px; line-height: 24px; }
.ts-dl dd { margin: 0; color: var(--text-secondary); font-size: 17px; line-height: 26px; }
.ts-ol { list-style: none; counter-reset: ts; margin: 0; padding: 0; display: grid; gap: var(--space-lg); }
.ts-ol li { counter-increment: ts; display: grid; grid-template-columns: 32px 1fr; gap: var(--space-md); }
.ts-ol li::before { content: counter(ts); width: 28px; height: 28px; border-radius: var(--radius-full); border: 1.5px solid var(--brand-primary); color: var(--brand-primary); font-size: 14px; font-weight: 600; display: grid; place-items: center; }

/* ---------- Insurance patterns ---------- */
/* Product discovery: category chips + filtered list */
.ts-discovery { display: grid; gap: var(--space-xl); }
@media (min-width: 1024px) { .ts-discovery { grid-template-columns: 280px minmax(0, 1fr); gap: var(--space-3xl); } }
.ts-catnav { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
.ts-catnav button, .ts-catnav a { width: 100%; display: flex; align-items: center; gap: 12px; min-height: var(--target-min); padding: 8px 12px; border: 0; background: none; border-radius: var(--radius-sm); font: 450 16px/22px var(--font-sans); color: var(--text-secondary); text-align: left; cursor: pointer; text-decoration: none; }
.ts-catnav .ts-icon { color: var(--text-muted); }
.ts-catnav .ts-catnav__count { margin-left: auto; font-size: 13px; color: var(--text-muted); font-variant-numeric: tabular-nums; }
.ts-catnav button:hover, .ts-catnav a:hover { background: var(--surface-subtle); color: var(--text-primary); }
.ts-catnav [aria-selected="true"], .ts-catnav [aria-current="page"] { background: var(--brand-primary-soft); color: var(--brand-primary); font-weight: 500; }
.ts-catnav [aria-selected="true"] .ts-icon, .ts-catnav [aria-current="page"] .ts-icon { color: var(--brand-primary); }
@media (max-width: 1023px) {
  .ts-catnav { display: flex; gap: var(--space-sm); overflow-x: auto; padding-bottom: var(--space-sm); scroll-snap-type: x mandatory; }
  .ts-catnav li { flex: none; scroll-snap-align: start; }
  .ts-catnav button, .ts-catnav a { border: 1px solid var(--border-strong); white-space: nowrap; }
  .ts-catnav .ts-catnav__count { margin-left: 4px; }
  .ts-catnav [aria-selected="true"], .ts-catnav [aria-current="page"] { border-color: var(--brand-primary); }
}
.ts-discovery__panel h3 { margin: 0 0 var(--space-xs); }
.ts-discovery__list { list-style: none; margin: var(--space-lg) 0 0; padding: 0; border-top: 1px solid var(--border-strong); }

/* Coverage comparison */
.ts-compare { min-width: 640px; }
.ts-compare thead th { vertical-align: bottom; background: var(--surface); border-bottom: 1px solid var(--border-strong); padding-top: var(--space-xl); }
.ts-compare thead th:first-child { width: 28%; }
.ts-compare__name { display: block; font-size: 18px; line-height: 24px; font-weight: 500; white-space: normal; }
.ts-compare__sub { display: block; font-size: 13px; line-height: 18px; font-weight: 400; color: var(--text-muted); white-space: normal; margin-top: 2px; }
.ts-compare tbody th { color: var(--text-secondary); font-weight: 400; }
.ts-compare tbody tr.ts-compare__group th { background: var(--surface-subtle); font-size: 12px; line-height: 16px; letter-spacing: 0.08em; text-transform: uppercase; font-weight: 600; color: var(--text-muted); padding-block: 8px; }
.ts-compare tbody tr:hover > * { background: transparent; }
.ts-compare .ts-yes, .ts-compare .ts-no, .ts-compare .ts-part { display: inline-flex; align-items: center; gap: 6px; font-weight: 500; }
.ts-compare .ts-yes { color: var(--success); }
.ts-compare .ts-no { color: var(--text-muted); font-weight: 400; }
.ts-compare .ts-part { color: var(--warning); }
.ts-compare .ts-icon { width: 18px; height: 18px; }
.ts-compare td.ts-compare__cta { padding-block: var(--space-lg); border-bottom: 0; }

/* Stepper (quote & claims) */
.ts-steps { list-style: none; margin: 0; padding: 0; display: flex; gap: var(--space-sm); counter-reset: st; }
.ts-steps li { flex: 1; counter-increment: st; display: grid; gap: var(--space-sm); font-size: 14px; line-height: 20px; color: var(--text-muted); min-width: 0; }
.ts-steps li::before { content: ""; height: 4px; border-radius: 2px; background: var(--border); }
.ts-steps li span::before { content: counter(st) ". "; }
.ts-steps li[aria-current="step"] { color: var(--text-primary); font-weight: 500; }
.ts-steps li[aria-current="step"]::before { background: var(--accent); }
.ts-steps li.is-done { color: var(--text-secondary); }
.ts-steps li.is-done::before { background: var(--brand-primary); }
@media (max-width: 767px) { .ts-steps li:not([aria-current="step"]) span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); } }
.ts-steps__mobile { display: none; font-size: 14px; color: var(--text-muted); }
@media (max-width: 767px) { .ts-steps__mobile { display: block; margin-top: var(--space-sm); } }

.ts-quote { display: grid; gap: var(--space-3xl); }
@media (min-width: 1024px) { .ts-quote { grid-template-columns: minmax(0, 1fr) 320px; gap: var(--space-4xl); } }
.ts-quote__card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); padding: var(--space-xl); }
@media (min-width: 768px) { .ts-quote__card { padding: var(--space-2xl) var(--space-3xl); } }
.ts-quote__actions { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: var(--space-md); padding-top: var(--space-xl); margin-top: var(--space-2xl); border-top: 1px solid var(--border); }
@media (max-width: 479px) { .ts-quote__actions { flex-direction: column-reverse; align-items: stretch; } }
.ts-quote__aside { display: grid; gap: var(--space-xl); align-content: start; }
.ts-summary { background: var(--surface-subtle); border-radius: var(--radius-md); padding: var(--space-xl); }
.ts-summary h3 { margin: 0 0 var(--space-md); font-size: 17px; line-height: 24px; font-weight: 600; }
.ts-summary dl { margin: 0; display: grid; gap: var(--space-md); }
.ts-summary dt { font-size: 13px; color: var(--text-muted); }
.ts-summary dd { margin: 0; font-size: 16px; color: var(--text-primary); }

/* Quick quote box: embedded in heroes and product pages */
.ts-quick-quote { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); padding: var(--space-xl); box-shadow: var(--shadow-2); display: grid; gap: var(--space-lg); }
.ts-quick-quote h2 { margin: 0; font-size: 22px; line-height: 28px; font-weight: 500; }

/* Policy summary (the "schedule") */
.ts-policy { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); overflow: hidden; }
.ts-policy__head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-start; gap: var(--space-md); padding: var(--space-xl); border-bottom: 1px solid var(--border); }
.ts-policy__head h3 { margin: 4px 0 0; font-size: 22px; line-height: 28px; font-weight: 500; }
.ts-policy__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0; }
@media (min-width: 768px) { .ts-policy__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.ts-policy__grid > div { padding: var(--space-lg) var(--space-xl); border-bottom: 1px solid var(--border); border-right: 1px solid var(--border); }
.ts-policy__grid dt { font-size: 13px; line-height: 18px; color: var(--text-muted); margin-bottom: 4px; }
.ts-policy__grid dd { margin: 0; font-size: 17px; line-height: 24px; font-weight: 500; font-variant-numeric: tabular-nums; }
.ts-policy__foot { display: flex; flex-wrap: wrap; gap: var(--space-sm); padding: var(--space-lg) var(--space-xl); background: var(--surface-subtle); }

/* The product "schedule" — key facts presented like a policy document */
.ts-schedule { border-top: 3px solid var(--brand-primary); background: var(--surface); }
.ts-schedule__row { display: grid; gap: var(--space-xs); padding: var(--space-lg) 0; border-bottom: 1px solid var(--border); }
@media (min-width: 768px) { .ts-schedule__row { grid-template-columns: 200px minmax(0, 1fr); gap: var(--space-xl); } }
.ts-schedule__row dt { font-size: 12px; line-height: 24px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-muted); }
.ts-schedule__row dd { margin: 0; }

/* Claims */
.ts-claims { display: grid; gap: 0; counter-reset: cl; list-style: none; margin: 0; padding: 0; }
@media (min-width: 1024px) { .ts-claims { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--gutter-desktop); } }
.ts-claims li { counter-increment: cl; position: relative; display: grid; gap: var(--space-sm); align-content: start; padding: 0 0 var(--space-2xl) 56px; }
.ts-claims li::before { content: counter(cl); position: absolute; left: 0; top: 0; width: 36px; height: 36px; border-radius: var(--radius-full); background: var(--brand-secondary); color: var(--on-brand-secondary); display: grid; place-items: center; font-weight: 600; font-size: 15px; }
.ts-claims li::after { content: ""; position: absolute; left: 17px; top: 44px; bottom: 8px; width: 2px; background: var(--border); }
.ts-claims li:last-child::after { display: none; }
@media (min-width: 1024px) {
  .ts-claims li { padding: 60px 0 0; }
  .ts-claims li::after { left: 48px; right: calc(-1 * var(--gutter-desktop) + 8px); top: 17px; bottom: auto; width: auto; height: 2px; }
}
.ts-claims--grid li { padding: 0 0 0 56px; }
.ts-claims--grid li::after { display: none; }
@media (min-width: 768px) { .ts-claims--grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-2xl) var(--gutter-desktop); } }
@media (min-width: 1024px) { .ts-claims--grid li { padding: 0 0 0 56px; } .ts-claims--grid li::after { display: none; } }
.ts-claims h3 { margin: 0; font-size: 19px; line-height: 26px; font-weight: 500; }
.ts-claims p { margin: 0; font-size: 15px; line-height: 24px; color: var(--text-secondary); }

/* Advisor / contact CTA */
.ts-advisor { display: grid; gap: var(--space-2xl); padding: var(--space-2xl); background: var(--brand-secondary-soft); border-radius: var(--radius-md); }
@media (min-width: 1024px) { .ts-advisor { grid-template-columns: minmax(0, 1fr) auto; align-items: center; padding: var(--space-3xl) var(--space-4xl); } }
.ts-advisor h2 { margin: 0; }
.ts-advisor__channels { display: grid; gap: var(--space-md); }
@media (min-width: 768px) { .ts-advisor__channels { grid-template-columns: repeat(3, auto); gap: var(--space-xl); align-items: start; } }
.ts-channel { display: grid; gap: 2px; font-size: 15px; line-height: 22px; }
.ts-channel span { color: var(--text-secondary); font-size: 13px; }
.ts-channel strong, .ts-channel a { font-size: 17px; font-weight: 500; color: var(--text-primary); }

/* Closing CTA band */
.ts-cta-band { position: relative; overflow: hidden; }
.ts-cta-band__inner { display: grid; gap: var(--space-2xl); }
@media (min-width: 1024px) { .ts-cta-band__inner { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); align-items: end; } }
.ts-cta-band__arc { position: absolute; right: -150px; top: 50%; transform: translateY(-50%); width: 460px; height: 460px; color: var(--indigo-500); opacity: 0.6; pointer-events: none; }
@media (max-width: 767px) { .ts-cta-band__arc { width: 300px; height: 300px; right: -170px; } }

/* Trust & reassurance */
.ts-trust { display: grid; gap: var(--space-xl); padding-block: var(--space-2xl); border-block: 1px solid var(--border); }
@media (min-width: 1024px) { .ts-trust { grid-template-columns: 260px minmax(0, 1fr); align-items: center; } }
.ts-trust__items { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-lg) var(--space-xl); list-style: none; margin: 0; padding: 0; }
@media (min-width: 768px) { .ts-trust__items { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.ts-trust__items li { display: grid; gap: 2px; }
.ts-trust__items strong { font-size: 17px; line-height: 24px; font-weight: 500; }
.ts-trust__items span { font-size: 13px; line-height: 18px; color: var(--text-muted); }
.ts-reassure { display: flex; flex-wrap: wrap; gap: var(--space-sm) var(--space-xl); list-style: none; margin: 0; padding: 0; font-size: 15px; line-height: 22px; color: var(--text-secondary); }
.ts-reassure li { display: inline-flex; align-items: center; gap: var(--space-sm); }
.ts-reassure .ts-icon { width: 18px; height: 18px; color: var(--success); }

/* Hero */
.ts-hero { padding-block: var(--space-4xl) var(--space-5xl); }
@media (min-width: 1024px) { .ts-hero { padding-block: var(--space-6xl) var(--space-7xl); } }
.ts-hero__grid { display: grid; gap: var(--space-3xl); align-items: center; }
@media (min-width: 1024px) { .ts-hero__grid { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--space-5xl); } }
.ts-hero__copy { display: grid; gap: var(--space-xl); }
.ts-hero__copy .ts-display { max-width: 12em; }
.ts-page-head { padding-block: var(--space-2xl) var(--space-4xl); border-bottom: 1px solid var(--border); }
.ts-page-head__grid { display: grid; gap: var(--space-xl); margin-top: var(--space-xl); }
@media (min-width: 1024px) { .ts-page-head__grid { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); align-items: end; gap: var(--space-5xl); } }

/* Sticky mobile CTA bar */
.ts-sticky-cta { position: sticky; bottom: 0; z-index: var(--z-sticky); display: flex; gap: var(--space-sm); padding: var(--space-md) var(--space-lg) calc(var(--space-md) + env(safe-area-inset-bottom, 0px)); background: var(--surface); border-top: 1px solid var(--border); box-shadow: 0 -4px 16px rgba(28,29,51,0.06); }
.ts-sticky-cta .ts-btn { flex: 1; }
@media (min-width: 1024px) { .ts-sticky-cta { display: none; } }

/* Preview helpers (used by the documentation previews only) */
.ts-demo { padding: var(--space-xl); }
.ts-demo-label { font-size: 12px; line-height: 16px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-muted); margin: 0 0 var(--space-md); }
.ts-demo-grid { display: grid; gap: var(--space-2xl); }

/* Logo swaps with theme */
.ts-logo .ts-logo-dark { display: none; }
[data-theme="dark"] .ts-logo .ts-logo-light, .ts-inverse .ts-logo .ts-logo-light { display: none; }
[data-theme="dark"] .ts-logo .ts-logo-dark, .ts-inverse .ts-logo .ts-logo-dark { display: block; }


/* ==========================================================================
   Site layer: page-level wiring of the design system components.
   ========================================================================== */
html { scroll-behavior: smooth; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .ts-logo .ts-logo-light { display: none; }
  :root:not([data-theme="light"]) .ts-logo .ts-logo-dark { display: block; }
  :root:not([data-theme="light"]) .ts-photo { background: var(--sand-800); color: var(--sand-300); }
  :root:not([data-theme="light"]) .ts-alert--info { border-color: var(--indigo-500); }
}
.site-header { position: sticky; }
.site-mega { position: absolute; left: 0; right: 0; top: 100%; z-index: var(--z-dropdown); padding-bottom: var(--space-xl); }
.site-mega .ts-mega { max-height: calc(100vh - 140px); overflow: auto; }
@media (max-width: 1023px) { .site-mega { display: none !important; } }
.ts-mega__rail h2 { margin: 0; font-size: 17px; line-height: 24px; font-weight: 500; }
.ts-mega__cat a > span { display: inline; }
.site-service-link { color: var(--brand-secondary); }
.site-strong { color: var(--text-primary); font-weight: 600; }
.site-plain { list-style: none; margin: 0; padding: 0; }
.site-accent-link { color: var(--brand-primary) !important; }
.site-inv-muted { color: var(--text-inverse-muted); margin: 0; }
.site-drawer-utility { padding: var(--space-xl) var(--space-lg) 0; gap: var(--space-sm); }
.site-drawer-utility li { font-size: 15px; }

/* Drawer */
.site-drawer { position: fixed; inset: 0; z-index: var(--z-modal); }
.site-drawer__scrim { position: absolute; inset: 0; background: var(--overlay); }
.site-drawer__panel { position: absolute; top: 0; right: 0; bottom: 0; width: min(420px, 100%); box-shadow: var(--shadow-3); padding-top: env(safe-area-inset-top, 0px); padding-bottom: env(safe-area-inset-bottom, 0px); animation: site-slide var(--duration-considered) var(--ease-standard); }
@keyframes site-slide { from { transform: translateX(24px); opacity: 0.6; } to { transform: none; opacity: 1; } }
body.site-locked { overflow: hidden; }

/* Sidebar layout (About pages) */
.site-sidebar-layout { display: grid; gap: var(--space-3xl); }
@media (min-width: 1024px) { .site-sidebar-layout { grid-template-columns: 260px minmax(0, 1fr); gap: var(--space-5xl); } .site-sidebar { position: sticky; top: 108px; align-self: start; } }
.site-sidebar-content { min-width: 0; display: grid; gap: var(--space-4xl); align-content: start; }
@media (max-width: 1023px) { .site-sidebar .ts-overline { display: none; } }

/* People */
.site-people { display: grid; gap: var(--space-2xl) var(--space-xl); }
@media (min-width: 768px) { .site-people { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.site-person { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: var(--space-lg); align-items: start; padding-top: var(--space-lg); border-top: 1px solid var(--border-strong); }
.site-person__photo { width: 96px; aspect-ratio: 4 / 5; border-radius: var(--radius-md); background: var(--brand-primary-soft); color: var(--brand-primary); display: grid; place-items: center; font-size: 24px; font-weight: 500; letter-spacing: 0.02em; }
.site-person .ts-h4 { margin: 0; }

/* Facts block (auditors, actuary, contact) */
.site-firm { display: grid; gap: var(--space-xl); padding: var(--space-2xl); background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); }
.site-firm h2 { margin: 0; }

/* Quote */
.site-quote-wrap { background: var(--surface-subtle); }

/* Pay */
.site-paybill { display: grid; gap: var(--space-xs); padding: var(--space-2xl); border-radius: var(--radius-md); background: var(--accent-soft); }
.site-paybill strong { font-size: 56px; line-height: 60px; font-weight: 300; letter-spacing: 0.02em; color: var(--text-primary); font-variant-numeric: tabular-nums; }
.site-code { font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace; font-size: 15px; background: var(--surface-subtle); border: 1px solid var(--border); border-radius: var(--radius-xs); padding: 1px 6px; overflow-wrap: anywhere; }

/* Downloads */
.site-filter { max-width: 520px; }
.site-doclist { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--border-strong); }
.site-doclist li { border-bottom: 1px solid var(--border); }
.site-doclist a { display: flex; align-items: center; gap: var(--space-md); min-height: 56px; padding: var(--space-md) 0; color: var(--text-primary); text-decoration: none; }
.site-doclist a:hover { color: var(--brand-primary); }
.site-doclist a:hover .site-doclist__name { text-decoration: underline; }
.site-doclist .ts-icon { color: var(--brand-primary); }
.site-doclist__meta { margin-left: auto; font-size: 13px; color: var(--text-muted); white-space: nowrap; }
.site-docgroup + .site-docgroup { margin-top: var(--space-3xl); }
.site-docgroup h2 { display: flex; align-items: center; gap: var(--space-sm); margin: 0 0 var(--space-md); }
.site-docgroup h2 .ts-icon { color: var(--brand-primary); }

/* Empty state */
.site-empty { display: grid; gap: var(--space-md); justify-items: start; padding: var(--space-3xl); border: 1px dashed var(--border-strong); border-radius: var(--radius-md); }
.site-empty .ts-icon { color: var(--brand-primary); }

/* Sitemap */
.site-sitemap { columns: 1; column-gap: var(--space-3xl); }
@media (min-width: 768px) { .site-sitemap { columns: 2; } }
@media (min-width: 1024px) { .site-sitemap { columns: 3; } }
.site-sitemap section { break-inside: avoid; margin-bottom: var(--space-2xl); }
.site-sitemap ul { list-style: none; margin: var(--space-sm) 0 0; padding: 0; display: grid; gap: 6px; }

.site-quote-mark { margin: 0; padding-left: var(--space-xl); border-left: 3px solid var(--accent); font-size: 24px; line-height: 34px; font-weight: 400; color: var(--text-primary); }
@media (max-width: 767px) { .site-quote-mark { font-size: 20px; line-height: 30px; } }
.site-values { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-lg) var(--space-xl); list-style: none; margin: 0; padding: 0; counter-reset: v; }
@media (min-width: 768px) { .site-values { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.site-values li { counter-increment: v; padding-top: var(--space-md); border-top: 1px solid var(--border-strong); font-size: 18px; font-weight: 500; }
.site-values li::before { content: "0" counter(v); display: block; font-size: 12px; font-weight: 600; letter-spacing: 0.08em; color: var(--accent-text); margin-bottom: 4px; }
.ts-section-head--tight { margin-bottom: var(--space-xl); }
.site-two { display: grid; gap: var(--space-3xl); }
@media (min-width: 1024px) { .site-two { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-4xl); } }
.site-product-body { display: grid; gap: var(--space-3xl); }
@media (min-width: 1024px) { .site-product-body { grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); gap: var(--gutter-desktop); } .site-product-aside > div { position: sticky; top: 108px; } }
.site-product-main { min-width: 0; display: grid; gap: var(--space-4xl); align-content: start; }
.site-product-aside { min-width: 0; }
.ts-schedule__row dd > p { margin: 0; }
.ts-schedule__row dd > p + p, .ts-schedule__row dd > p + ul, .ts-schedule__row dd > ul + p { margin-top: var(--space-md); }
[hidden] { display: none !important; }
@media (min-width: 1024px) {
  .ts-footer__top { grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); }
  .ts-footer__contact { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-xl); justify-content: stretch; }
}
@media (min-width: 1024px) {
  .ts-footer__contact { grid-template-columns: minmax(0, 1fr) minmax(0, 1.35fr) minmax(0, 1fr); }
  .ts-footer__contact dd { overflow-wrap: normal; font-size: 16px; }
}
@media (max-width: 767px) {
  .ts-hero .ts-photo--tall { aspect-ratio: 4 / 3; }
  .ts-hero__copy .ts-row > .ts-btn { flex: 1 1 100%; }
}

/* ==========================================================================
   Tausi — people with portraits (Board of directors, Management)
   Portrait = the post's featured image, 4:5 (image size "Tausi portrait 4:5").
   Uses .ts-frame from tausi-home.css, repeated here so the file stands alone.
   Loaded on the board and management pages (functions.php).
   ========================================================================== */

.ts-people .ts-frame,
.ts-person-lead .ts-frame { position: relative; overflow: hidden; margin: 0; border-radius: var(--radius-md); background: var(--surface-subtle); aspect-ratio: 4 / 5; }
.ts-people .ts-frame img,
.ts-person-lead .ts-frame img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center top; } /* faces sit high in a portrait */

/* Fallback when no featured image is set: initials on the brand tint, same 4:5 box */
.ts-person__initials { display: grid; place-items: center; width: 100%; height: 100%; background: var(--brand-primary-soft); color: var(--brand-primary); font-size: 40px; line-height: 1; font-weight: 300; letter-spacing: 0.04em; }

/* ---------- Lead pair: Chairman and Managing Director ---------- */
.ts-person-lead-grid { display: grid; gap: var(--space-3xl); padding-bottom: var(--space-3xl); margin-bottom: var(--space-3xl); border-bottom: 1px solid var(--border); }
@media (min-width: 1024px) { .ts-person-lead-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--gutter-desktop); } }
.ts-person-lead { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--space-xl); align-items: start; }
.ts-person-lead .ts-person__name { font-size: 24px; line-height: 30px; }
@media (max-width: 639px) { .ts-person-lead { grid-template-columns: 120px minmax(0, 1fr); gap: var(--space-lg); } .ts-person-lead .ts-person__name { font-size: 20px; line-height: 26px; } }

/* ---------- Grid of people ---------- */
.ts-people { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-3xl) var(--space-xl); list-style: none; margin: 0; padding: 0; }
@media (min-width: 640px) { .ts-people { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .ts-people { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-4xl) var(--gutter-desktop); } }
.ts-person { display: grid; gap: var(--space-lg); align-content: start; min-width: 0; }

/* Phones: photo beside the text so eight people don't become eight screen-tall portraits */
@media (max-width: 639px) {
	.ts-person { grid-template-columns: 112px minmax(0, 1fr); gap: var(--space-lg); padding-top: var(--space-lg); border-top: 1px solid var(--border); }
	.ts-person__initials { font-size: 24px; }
}

/* ---------- Text ---------- */
.ts-person__body { display: grid; gap: var(--space-sm); align-content: start; min-width: 0; }
.ts-person__role { margin: 0; font-size: 12px; line-height: 16px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--accent-text); }
.ts-person__name { margin: 0; font-size: 20px; line-height: 26px; font-weight: 500; letter-spacing: -0.005em; color: var(--text-primary); text-wrap: balance; }
.ts-person__post { font-size: 15px; font-weight: 400; color: var(--text-muted); margin-left: 4px; }
.ts-person__bio { margin: 0; font-size: 15px; line-height: 24px; color: var(--text-secondary); }

/* ==========================================================================
   Tausi — home page photography
   Loaded on the front page only (functions.php). Tokens from tausi.css.
   Rules kept from the design system: real photos, no colour washes, no text
   on top of photos, radius-md inline / square at full bleed, max two photos
   per screen height, and every photo section falls back to text when empty.
   ========================================================================== */

/* Shared photo frame: fixed ratio, object-fit, focus via data attribute */
.ts-frame { position: relative; overflow: hidden; border-radius: var(--radius-md); background: var(--surface-subtle); aspect-ratio: var(--ts-frame-ratio, 4 / 3); max-width: 100%; margin: 0; }
.ts-frame img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; }
.ts-frame[data-focus="top"] img { object-position: center top; }
.ts-frame[data-focus="bottom"] img { object-position: center bottom; }
.ts-frame[data-focus="left"] img { object-position: left center; }
.ts-frame[data-focus="right"] img { object-position: right center; }
.ts-frame--portrait { --ts-frame-ratio: 4 / 5; }
.ts-frame--tall { --ts-frame-ratio: 3 / 4; }
.ts-frame--wide { --ts-frame-ratio: 3 / 2; }
.ts-frame--square { --ts-frame-ratio: 1 / 1; }
.ts-frame-caption { margin-top: var(--space-sm); font-size: 13px; line-height: 18px; color: var(--text-muted); }

/* 1. Hero: split (default) uses .ts-hero__grid from tausi.css with a .ts-frame--portrait.
      Bleed: the photo column runs to the right edge of the viewport, square corners. */
.ts-hero--bleed { padding-block: 0; overflow: hidden; }
.ts-hero--bleed .ts-hero__grid { align-items: stretch; gap: 0; }
.ts-hero--bleed .ts-hero__copy { padding-block: var(--space-4xl) var(--space-5xl); }
.ts-hero--bleed .ts-frame { border-radius: 0; --ts-frame-ratio: 3 / 2; }
@media (min-width: 1024px) {
	.ts-hero--bleed .ts-hero__grid { grid-template-columns: minmax(0, 6fr) minmax(0, 6fr); }
	.ts-hero--bleed .ts-hero__copy { padding: var(--space-6xl) var(--space-4xl) var(--space-7xl) 0; }
	.ts-hero--bleed .ts-frame { aspect-ratio: auto; height: 100%; min-height: 560px; margin-right: calc(50% - 50vw); }
}
@media (max-width: 1023px) {
	/* below laptop the photo spans the full screen width under the copy */
	.ts-hero--bleed .ts-frame { width: 100vw; max-width: none; margin-left: calc(50% - 50vw); }
}

/* 2. Who we cover: three portrait photo cards (audience terms). Uses .ts-product-card from tausi-cards.css. */
.ts-product-grid[data-ratio="4-5"] { --ts-card-ratio: 4 / 5; }
@media (min-width: 640px) and (max-width: 1023px) {
	.ts-audience-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-lg); }
	.ts-audience-grid .ts-product-card__summary { display: none; }
}
@media (max-width: 639px) {
	/* phones: a swipeable row instead of three tall cards stacked */
	.ts-audience-grid { grid-auto-flow: column; grid-auto-columns: 78%; grid-template-columns: none; overflow-x: auto; scroll-snap-type: x mandatory; margin-right: calc(-1 * var(--gutter-mobile)); padding-right: var(--gutter-mobile); padding-bottom: var(--space-sm); }
	.ts-audience-grid > * { scroll-snap-align: start; }
}

/* 3. Product tabs with a category photo beside the rows (desktop only) */
.ts-discovery__panel--media { display: grid; gap: var(--space-2xl); }
@media (min-width: 1024px) {
	.ts-discovery__panel--media { grid-template-columns: minmax(0, 1fr) 280px; align-items: start; }
	.ts-discovery__panel--media .ts-frame { position: sticky; top: 120px; --ts-frame-ratio: 4 / 5; }
}
@media (max-width: 1023px) { .ts-discovery__panel--media .ts-frame { display: none; } }

/* 4. Claims: photo under the heading in the left column of .ts-split */
.ts-split__head .ts-frame { margin-top: var(--space-xl); }
@media (max-width: 1023px) { .ts-split__head .ts-frame { --ts-frame-ratio: 3 / 2; } }

/* 5. About: staggered photo pair. Two frames side by side, the second dropped
      by one spacing step. No overlap, no rotation, no frames on frames. */
.ts-photo-pair { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--space-lg); align-items: start; }
.ts-photo-pair > .ts-frame:first-child { --ts-frame-ratio: 4 / 5; }
.ts-photo-pair > .ts-frame:last-child { --ts-frame-ratio: 3 / 4; margin-top: var(--space-5xl); }
@media (max-width: 639px) { .ts-photo-pair > .ts-frame:last-child { margin-top: var(--space-3xl); } }

/* 6. Photo band: 3–4 portrait photos with captions. Full container width, square-ish rhythm. */
.ts-photo-band { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--gutter-desktop); list-style: none; margin: 0; padding: 0; }
.ts-photo-band:has(> :nth-child(3):last-child) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ts-photo-band .ts-frame { --ts-frame-ratio: 3 / 4; }
@media (max-width: 1023px) {
	.ts-photo-band, .ts-photo-band:has(> :nth-child(3):last-child) { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: 64%; overflow-x: auto; scroll-snap-type: x mandatory; gap: var(--space-lg); margin-right: calc(-1 * var(--gutter-mobile)); padding-right: var(--gutter-mobile); }
	.ts-photo-band > * { scroll-snap-align: start; }
}
@media (min-width: 640px) and (max-width: 1023px) { .ts-photo-band, .ts-photo-band:has(> :nth-child(3):last-child) { grid-auto-columns: 38%; } }

/* 7. Community: three flat editorial cards (tausi.css .ts-card--flat) with a 3:2 photo */
.ts-community .ts-card--flat .ts-frame { --ts-frame-ratio: 3 / 2; margin-bottom: var(--space-sm); }

@media (prefers-reduced-motion: no-preference) {
	.ts-frame img { transition: transform var(--duration-considered) var(--ease-standard); }
	a:hover .ts-frame img, .ts-card--link:hover .ts-frame img { transform: scale(1.03); }
}

/* Claims steps beside a taller head column: keep the steps packed at the top */
.ts-split > .ts-claims { align-content: start; align-self: start; }


