/*
 * Tom Endres – base, layout and shared components.
 * Section styles live in sections.css. Section palettes from the CMS arrive as
 * --cms-* custom properties (see CmsHelper) and win over the tone defaults.
 */

:root {
  --te-cream: #F5F3EE;
  --te-sand: #E9E5DD;
  --te-night: #0F1115;
  --te-ink: #14161B;
  --te-body: #2B2F37;
  --te-slate: #545A65;
  --te-grey: #7A7F88;
  --te-rust: #A8362B;
  --te-coral: #E08A6E;
  --te-line: #DAD6CD;
  --te-line-strong: #D3CEC3;
  --te-line-dark: #2A2E36;
  --te-panel: #1E2229;
  --te-side: clamp(20px, 4vw, 56px);
  --te-ease: cubic-bezier(.2, .6, .2, 1);
  --te-font: 'Hanken Grotesk', sans-serif;
}

html { scroll-behavior: smooth; }
body { margin: 0; background: var(--te-cream); color: var(--te-ink); font-family: var(--te-font); -webkit-font-smoothing: antialiased; }
a { color: var(--te-ink); text-decoration: none; }
a:hover { color: var(--te-rust); }
::selection { background: var(--te-rust); color: #fff; }
[hidden] { display: none !important; }

/* ---------- Header ---------- */

.te-header {
  position: fixed; top: 0; left: 0; right: 0; z-index: 50;
  background: rgba(15, 17, 21, 0); border-bottom: 1px solid rgba(255, 255, 255, 0);
  transition: background .4s, border-color .4s;
}
.te-header.is-solid { background: rgba(15, 17, 21, .92); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); border-bottom-color: rgba(255, 255, 255, .08); }
.te-header__bar { max-width: 1360px; margin: 0 auto; padding: 0 var(--te-side); min-height: 80px; display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.te-header__brand { font-size: clamp(17px, 4.4vw, 21px); font-weight: 400; color: var(--te-cream); letter-spacing: .01em; white-space: nowrap; }
.te-header__brand:hover { color: var(--te-cream); }
.te-header__nav { display: flex; align-items: center; gap: clamp(14px, 2.4vw, 36px); }
.te-header__links { display: none; align-items: center; gap: clamp(16px, 2.4vw, 36px); }
.te-header__link { font-size: 14px; font-weight: 500; color: rgba(245, 243, 238, .72); white-space: nowrap; }
.te-header__link:hover { color: var(--te-cream); }
.te-lang { display: flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; letter-spacing: .08em; }
.te-lang__option { padding: 4px 2px; color: rgba(245, 243, 238, .4); }
.te-lang__option:hover { color: rgba(245, 243, 238, .4); }
.te-lang__option.is-active { color: var(--te-cream); }
.te-lang__divider { color: rgba(245, 243, 238, .3); }
.te-header__cta { display: none; font-size: 14px; font-weight: 500; color: var(--te-ink); background: var(--te-cream); padding: 11px 20px; white-space: nowrap; }
.te-header__cta:hover { background: var(--te-coral); color: var(--te-ink); }
.te-header__toggle { background: none; border: 1px solid rgba(245, 243, 238, .35); color: var(--te-cream); min-height: 44px; padding: 0 16px; font: 500 14px var(--te-font); cursor: pointer; white-space: nowrap; }
.te-header__toggle:hover { border-color: var(--te-cream); }
.te-header__menu { border-top: 1px solid rgba(255, 255, 255, .08); padding: 8px var(--te-side) 32px; display: flex; flex-direction: column; }
.te-header__menu-link { padding: 18px 0; border-bottom: 1px solid rgba(255, 255, 255, .08); font-size: 20px; font-weight: 500; color: var(--te-cream); }
.te-header__menu-link:hover { color: var(--te-coral); }
.te-header__menu-cta { margin-top: 24px; align-self: flex-start; background: var(--te-coral); color: var(--te-night); padding: 16px 26px; font-size: 15px; font-weight: 600; }
.te-header__menu-cta:hover { background: var(--te-cream); color: var(--te-night); }

@media (min-width: 760px) {
  .te-header__cta { display: inline-block; }
}
@media (min-width: 1100px) {
  .te-header__links { display: flex; }
  .te-header__toggle, .te-header__menu { display: none !important; }
}

/* ---------- Footer ---------- */

.te-footer { background: var(--te-night); padding: 0 var(--te-side) 40px; }
.te-footer__inner { max-width: 1360px; margin: 0 auto; display: flex; justify-content: space-between; align-items: center; gap: 20px; flex-wrap: wrap; border-top: 1px solid var(--te-line-dark); padding-top: 28px; font-size: 13px; color: rgba(245, 243, 238, .5); }
.te-footer__links { display: flex; gap: 24px; flex-wrap: wrap; }
.te-footer__links a { color: rgba(245, 243, 238, .75); }
.te-footer__links a:hover { color: var(--te-cream); }

/* ---------- Sections ---------- */

.te-section {
  --te-bg: var(--cms-background, var(--te-cream));
  --te-fg: var(--cms-text, var(--te-ink));
  --te-accent: var(--cms-accent, var(--te-rust));
  --te-lead: var(--te-body);
  --te-muted: var(--te-slate);
  background: var(--te-bg);
  color: var(--te-fg);
  padding: var(--te-pad-top, var(--te-pad, clamp(96px, 12vw, 176px))) var(--te-side) var(--te-pad-bottom, var(--te-pad, clamp(96px, 12vw, 176px)));
}
.te-section--sand { --te-bg: var(--cms-background, var(--te-sand)); }
.te-section--dark {
  --te-bg: var(--cms-background, var(--te-night));
  --te-fg: var(--cms-text, var(--te-cream));
  --te-accent: var(--cms-accent, var(--te-coral));
  --te-lead: rgba(245, 243, 238, .78);
  --te-muted: rgba(245, 243, 238, .62);
}
.te-section.te-section--top-none { --te-pad-top: 0px; }
.te-section.te-section--top-compact { --te-pad-top: clamp(48px, 6vw, 80px); }
.te-section.te-section--bottom-none { --te-pad-bottom: 0px; }
.te-section.te-section--bottom-compact { --te-pad-bottom: clamp(48px, 6vw, 80px); }

.te-wrap { max-width: 1360px; margin: 0 auto; }
.te-stack { display: flex; flex-direction: column; }
.te-stack--s { gap: clamp(24px, 3vw, 40px); }
.te-stack--l { gap: clamp(48px, 6vw, 80px); }
.te-stack--xl { gap: clamp(64px, 8vw, 112px); }

.te-kicker { font-size: 13px; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; color: var(--te-accent); }
.te-accent { font-style: italic; color: var(--te-accent); }

.te-title { margin: 0; font-weight: 500; text-wrap: balance; }
.te-title--xxl { font-size: clamp(44px, 6.4vw, 104px); line-height: .98; letter-spacing: -.045em; }
.te-title--xl { font-size: clamp(40px, 5.4vw, 80px); line-height: 1; letter-spacing: -.04em; }
.te-title--check { font-size: clamp(40px, 4.6vw, 68px); line-height: 1; letter-spacing: -.04em; }
.te-title--l { font-size: clamp(36px, 4.4vw, 64px); line-height: 1.04; letter-spacing: -.02em; }
.te-title--m { font-size: clamp(36px, 4vw, 56px); line-height: 1.05; letter-spacing: -.02em; text-wrap: wrap; }
.te-title--s { font-size: clamp(32px, 3.4vw, 48px); line-height: 1.08; letter-spacing: -.02em; }

.te-lead { font-size: 18px; line-height: 1.7; color: var(--te-lead); text-wrap: pretty; }
.te-lead p, .te-hero__lead p, .te-check__lead p, .te-theses__note p, .te-press__outlets p { margin: 0; }
.te-lead p + p, .te-hero__lead p + p, .te-check__lead p + p { margin-top: 1em; }

.te-split-heading { display: flex; flex-wrap: wrap; gap: clamp(24px, 6vw, 96px); align-items: flex-end; }
.te-split-heading__main { flex: 3 1 560px; display: flex; flex-direction: column; gap: 24px; }
.te-split-heading__aside { flex: 2 1 360px; display: flex; flex-direction: column; gap: 24px; align-items: flex-start; }

/* ---------- Buttons & links ---------- */

.te-actions { display: flex; gap: 12px; flex-wrap: wrap; }
.te-btn { display: inline-block; padding: 16px 28px; font-size: 15px; font-weight: 600; white-space: nowrap; }
.te-btn--coral { background: var(--te-coral); color: var(--te-night); }
.te-btn--coral:hover { background: var(--te-cream); color: var(--te-night); }
.te-btn--rust { background: var(--te-rust); color: var(--te-cream); white-space: normal; }
.te-btn--rust:hover { background: var(--te-ink); color: var(--te-cream); }
.te-btn--ghost { border: 1px solid rgba(245, 243, 238, .4); color: var(--te-cream); padding: 16px 29px; font-weight: 500; }
.te-btn--ghost:hover { border-color: var(--te-cream); color: var(--te-cream); }
.te-link-underline { align-self: flex-start; font-size: 16px; font-weight: 600; color: var(--te-ink); border-bottom: 1px solid var(--te-ink); padding-bottom: 6px; }
.te-link-underline:hover { color: var(--te-rust); border-color: var(--te-rust); }

/* ---------- Motion (only while the motion controller runs) ---------- */

[data-zoom] { transition: transform 2.6s var(--te-ease); }
[data-line] { transform-origin: left; transition: transform 1.2s var(--te-ease) .3s; }
[data-rise] { transition: transform 1.3s cubic-bezier(.2, .7, .1, 1); }
.te-motion [data-reveal] { opacity: 0; transform: translateY(18px); transition: opacity 1.1s var(--te-ease), transform 1.1s var(--te-ease); }
.te-motion [data-reveal].is-in { opacity: 1; transform: none; }
.te-motion [data-rise] { transform: translateY(105%); }
.te-motion [data-zoom] { transform: scale(1.08); }
.te-motion [data-line] { transform: scaleX(0); }
.te-motion [data-rise].is-in, .te-motion [data-zoom].is-in, .te-motion [data-line].is-in { transform: none; }

/* Section styles, one block per partial in app/views/pages/sections. */

/* ---------- portrait_hero ---------- */

.te-hero {
  --te-text-max: min(900px, calc(100vw - 2 * var(--te-side)));
  --te-accent: var(--cms-accent, var(--te-coral));
  position: relative; overflow: hidden; min-height: max(720px, 100vh);
  display: flex; flex-direction: column; align-items: stretch;
  background: var(--cms-background, var(--te-night)); color: var(--cms-text, var(--te-cream));
}
.te-hero__portrait { position: relative; width: 100%; height: min(75vh, 640px); order: 1; flex: none; overflow: hidden; }
.te-hero__zoom { position: absolute; inset: 0; }
.te-hero__image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 12%; display: block; }
.te-hero__fade { position: absolute; inset: 0; background: linear-gradient(180deg, #0F1115 0%, rgba(15, 17, 21, 0) 30%); pointer-events: none; }
.te-hero__inner {
  position: relative; box-sizing: border-box; width: 100%; max-width: 1360px; margin: 0 auto;
  padding: clamp(140px, 16vh, 200px) var(--te-side) clamp(48px, 6vh, 72px);
  display: flex; flex-direction: column; justify-content: space-between; gap: 64px; pointer-events: none;
}
.te-hero__text { display: flex; flex-direction: column; gap: 36px; max-width: var(--te-text-max); pointer-events: auto; }
.te-hero__kicker { display: flex; align-items: center; gap: 16px; font-size: 13px; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; color: var(--te-accent); }
.te-hero__line { width: 48px; height: 1px; background: var(--te-accent); }
.te-hero__title { margin: 0; font-weight: 500; font-size: clamp(36px, calc(var(--te-text-max) / 10.5), 112px); line-height: .98; letter-spacing: -.045em; }
.te-hero__row { display: block; overflow: hidden; padding-bottom: .2em; margin-bottom: -.2em; }
.te-hero__row > span { display: block; }
.te-hero__accent { font-style: italic; color: var(--te-accent); }
.te-hero__lead { font-size: clamp(18px, 1.5vw, 21px); line-height: 1.6; color: rgba(245, 243, 238, .8); max-width: 560px; text-wrap: pretty; }
.te-hero .te-btn--coral { padding: 17px 30px; }
.te-hero__roles { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); border-top: 1px solid rgba(245, 243, 238, .18); max-width: var(--te-text-max); pointer-events: auto; }
.te-hero__role { padding: 20px 24px 0 0; display: flex; flex-direction: column; gap: 6px; }
.te-hero__role-label { font-size: 11px; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: rgba(245, 243, 238, .5); }
.te-hero__role-org { font-size: 19px; line-height: 1.3; color: var(--te-cream); }

@media (min-width: 1000px) {
  .te-hero {
    flex-direction: row;
    --te-text-max: min(900px, calc(100vw - min(46vw, 680px) - max(0px, (100vw - 1360px) / 2) - var(--te-side) - 40px));
  }
  .te-hero__portrait { position: absolute; top: 0; right: 0; bottom: 0; width: min(46%, 680px); height: auto; }
  .te-hero__fade { background: linear-gradient(90deg, #0F1115 0%, rgba(15, 17, 21, .55) 22%, rgba(15, 17, 21, 0) 55%); }
}

/* ---------- station_strip ---------- */

.te-stations { --te-pad: clamp(28px, 3vw, 40px); border-bottom: 1px solid var(--te-line); }
.te-stations__row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px clamp(24px, 4vw, 56px); }
.te-stations__label { font-size: 12px; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; color: var(--te-accent); }
.te-stations__item { font-size: clamp(18px, 1.8vw, 24px); font-weight: 500; letter-spacing: -.01em; color: var(--cms-item-color, var(--te-muted)); white-space: nowrap; }

/* ---------- statement_lenses ---------- */

.te-statement { display: flex; flex-direction: column; gap: clamp(56px, 7vw, 96px); }
.te-statement__text { margin: 0; font-weight: 500; font-size: clamp(30px, 3.8vw, 56px); line-height: 1.18; letter-spacing: -.015em; max-width: 1120px; text-wrap: pretty; }
.te-lenses { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 150px), 1fr)); border-top: 1px solid currentColor; }
.te-lenses__item { padding: 24px 20px 0 0; display: flex; flex-direction: column; gap: 8px; }
.te-lenses__title { font-size: 26px; line-height: 1.1; }
.te-lenses__text { font-size: 14px; line-height: 1.5; color: var(--te-muted); }

/* ---------- value_drivers ---------- */

.te-drivers { display: flex; flex-direction: column; border-top: 1px solid currentColor; }
.te-drivers__row { display: flex; flex-wrap: wrap; gap: 16px clamp(24px, 4vw, 64px); padding: 36px 0; border-bottom: 1px solid var(--te-line); }
.te-drivers__title { flex: 1 1 280px; margin: 0; font-weight: 500; font-size: clamp(24px, 2.2vw, 30px); line-height: 1.15; letter-spacing: -.015em; }
.te-drivers__body { flex: 2 1 420px; min-width: 0; display: flex; flex-direction: column; gap: 16px; }
.te-drivers__text { margin: 0; font-size: 17px; line-height: 1.6; color: var(--te-lead); text-wrap: pretty; }
.te-drivers__tags { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); gap: 8px 32px; }
.te-drivers__tags li { display: flex; gap: 12px; font-size: 15px; line-height: 1.5; color: var(--te-muted); }
.te-drivers__tags li::before { content: ""; flex: none; width: 12px; height: 1px; background: var(--te-accent); margin-top: 11px; }

/* ---------- future_check ---------- */

.te-check { display: flex; flex-wrap: wrap; gap: clamp(48px, 6vw, 112px); align-items: flex-start; }
.te-check__intro { flex: 1 1 340px; display: flex; flex-direction: column; gap: 24px; }
.te-check__lead { font-size: 17px; line-height: 1.7; color: rgba(245, 243, 238, .74); text-wrap: pretty; }
.te-check__meta { display: flex; gap: 20px; flex-wrap: wrap; font-size: 13px; color: rgba(245, 243, 238, .55); }
.te-check__card { flex: 1.4 1 480px; min-width: 0; background: var(--te-cream); color: var(--te-ink); padding: clamp(28px, 4vw, 56px); display: flex; flex-direction: column; gap: 32px; min-height: 520px; }
.te-check__quiz { display: flex; flex-direction: column; gap: 32px; flex: 1; }
.te-check__head { display: flex; flex-direction: column; gap: 12px; }
.te-check__status { display: flex; justify-content: space-between; font-size: 12px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.te-check__dimension { color: var(--te-rust); }
.te-check__position { color: var(--te-grey); }
.te-check__track { height: 2px; background: var(--te-line); position: relative; }
.te-check__progress { position: absolute; left: 0; top: 0; bottom: 0; width: 0; background: var(--te-rust); transition: width .5s var(--te-ease); }
.te-check__question { display: flex; flex-direction: column; gap: 32px; }
.te-check__text { margin: 0; font-weight: 400; font-size: clamp(24px, 2.4vw, 32px); line-height: 1.25; text-wrap: balance; min-height: 3.75em; }
.te-check__answers { display: flex; flex-direction: column; gap: 8px; }
.te-check__answer { text-align: left; display: flex; align-items: center; gap: 16px; padding: 16px 20px; border: 1px solid var(--te-line-strong); background: var(--te-cream); color: var(--te-ink); font: 500 16px var(--te-font); cursor: pointer; transition: border-color .2s, background .2s; }
.te-check__answer:hover { border-color: var(--te-ink); }
.te-check__answer.is-selected { border-color: var(--te-rust); background: #EDE7DC; }
.te-check__answer.is-selected:hover { border-color: var(--te-ink); }
.te-check__key { width: 22px; height: 22px; flex: none; border: 1px solid var(--te-ink); display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 600; }
.te-check__foot { display: flex; justify-content: space-between; align-items: center; margin-top: auto; }
.te-check__back { background: none; border: 0; padding: 8px 0; font: 500 14px var(--te-font); color: var(--te-ink); cursor: pointer; }
.te-check__back[aria-disabled="true"] { color: rgba(20, 22, 27, .25); }
.te-check__hint { font-size: 13px; color: var(--te-grey); }
.te-check__result { display: flex; flex-direction: column; gap: 28px; }
.te-check__result:focus { outline: none; }
.te-check__summary { display: flex; flex-direction: column; gap: 10px; }
.te-check__label { font-size: 12px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--te-rust); }
.te-check__score-row { display: flex; align-items: baseline; gap: 16px; flex-wrap: wrap; }
.te-check__score { font-weight: 500; font-size: clamp(64px, 7vw, 96px); line-height: .9; letter-spacing: -.045em; }
.te-check__level-title { font-size: clamp(24px, 2.4vw, 32px); line-height: 1.15; }
.te-check__level-text { margin: 0; font-size: 16px; line-height: 1.6; color: var(--te-body); text-wrap: pretty; }
.te-check__dimensions { display: flex; flex-direction: column; gap: 14px; border-top: 1px solid var(--te-line); padding-top: 24px; }
.te-check__dimension-row { display: grid; grid-template-columns: minmax(120px, 170px) minmax(0, 1fr) 44px; gap: 16px; align-items: center; font-size: 14px; }
.te-check__dimension-name { font-weight: 500; }
.te-check__bar { height: 6px; background: #E5E1D8; position: relative; }
.te-check__bar-fill { position: absolute; left: 0; top: 0; bottom: 0; width: 0; background: var(--cms-item-color, var(--te-rust)); transition: width 1.2s var(--te-ease); }
.te-check__dimension-value { text-align: right; color: var(--te-slate); }
.te-check__advice { background: var(--te-ink); color: var(--te-cream); padding: 24px 28px; display: flex; flex-direction: column; gap: 10px; }
.te-check__advice-label { font-size: 12px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--te-coral); }
.te-check__advice-text { font-size: 19px; line-height: 1.45; }
.te-check__actions { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; }
.te-check__restart { background: none; border: 0; padding: 8px 4px; font: 500 14px var(--te-font); color: var(--te-slate); cursor: pointer; text-decoration: underline; }

@media (min-width: 1000px) {
  .te-check__intro { position: sticky; top: 120px; }
}

/* ---------- theses ---------- */

.te-theses { --te-pad-bottom: clamp(64px, 8vw, 112px); }
.te-theses__head { display: flex; flex-wrap: wrap; gap: 24px; justify-content: space-between; align-items: flex-end; }
.te-theses__heading { display: flex; flex-direction: column; gap: 20px; }
.te-theses__note { font-size: 16px; line-height: 1.6; color: var(--te-muted); max-width: 380px; }
.te-theses__list { display: flex; flex-direction: column; }
.te-thesis { border-top: 1px solid currentColor; padding: clamp(40px, 5vw, 72px) 0; display: flex; flex-direction: column; gap: 28px; }
.te-thesis__title { margin: 0; font-weight: 500; font-size: clamp(34px, 5vw, 76px); line-height: 1.04; letter-spacing: -.04em; max-width: 1200px; text-wrap: balance; }
.te-thesis__fill {
  background-image: linear-gradient(var(--te-ink), var(--te-ink)); background-repeat: no-repeat; background-size: 100% 100%;
  -webkit-background-clip: text; background-clip: text; color: rgba(20, 22, 27, .16);
}
.te-motion .te-thesis__fill { background-size: 0% 100%; }
.te-thesis__text { margin: 0; font-size: 17px; line-height: 1.65; color: var(--te-lead); max-width: 640px; text-wrap: pretty; }
.te-thesis__links { display: flex; gap: 28px; flex-wrap: wrap; font-size: 14px; font-weight: 500; }
.te-thesis__links a { color: var(--te-slate); }
.te-thesis__links a:hover { color: var(--te-rust); }

/* ---------- media_gallery ---------- */

.te-gallery { display: flex; flex-direction: column; gap: 24px; }
.te-gallery__row { display: flex; flex-wrap: wrap; gap: 16px; }
.te-gallery__figure { margin: 0; display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.te-gallery__frame { overflow: hidden; background: var(--te-panel); }
.te-gallery__frame img { width: 100%; height: 100%; object-fit: cover; display: block; }
.te-gallery__figure figcaption { font-size: 13px; font-weight: 500; color: var(--te-muted); }

/* ---------- press_list ---------- */

.te-press { display: flex; flex-direction: column; gap: 28px; border-top: 1px solid var(--te-line-dark); padding-top: clamp(40px, 5vw, 64px); }
.te-press__head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 12px 40px; }
.te-press__title { margin: 0; font-weight: 500; font-size: clamp(26px, 2.4vw, 34px); line-height: 1.15; letter-spacing: -.015em; }
.te-press__outlets { font-size: 14px; line-height: 1.5; color: var(--te-muted); max-width: 520px; }
.te-press__list { display: flex; flex-direction: column; border-top: 1px solid var(--te-line-dark); }
.te-press__item { display: flex; flex-wrap: wrap; gap: 8px clamp(16px, 3vw, 40px); align-items: baseline; padding: 22px 0; border-bottom: 1px solid var(--te-line-dark); color: var(--te-cream); }
.te-press__item:hover { color: var(--te-coral); }
.te-press__source { flex: 0 0 220px; display: flex; gap: 16px; font-size: 14px; }
.te-press__year { min-width: 44px; font-weight: 600; color: var(--te-coral); }
.te-press__medium { color: var(--te-muted); }
.te-press__body { flex: 1 1 360px; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.te-press__headline { font-size: clamp(17px, 1.5vw, 20px); font-weight: 500; line-height: 1.35; text-wrap: pretty; }
.te-press__note { font-size: 14px; line-height: 1.5; color: var(--te-muted); text-wrap: pretty; }

/* ---------- service_grid ---------- */

.te-services__head { display: flex; flex-direction: column; gap: 20px; max-width: 880px; }
.te-services { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 290px), 1fr)); gap: 2px; background: var(--te-line-strong); border: 1px solid var(--te-line-strong); }
.te-services__card { background: var(--cms-item-background, var(--te-cream)); padding: 36px 32px 40px; display: flex; flex-direction: column; gap: 16px; }
.te-services__tag { font-size: 12px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--te-accent); }
.te-services__title { margin: 0; font-weight: 400; font-size: 28px; line-height: 1.15; }
.te-services__text { margin: 0; font-size: 15px; line-height: 1.65; color: var(--te-lead); text-wrap: pretty; }
.te-services__proof { margin-top: auto; padding-top: 16px; border-top: 1px solid var(--te-line); font-size: 14px; line-height: 1.5; color: var(--te-muted); }

/* ---------- experience_list ---------- */

.te-experience { --te-pad: clamp(80px, 10vw, 144px); }
.te-experience__grid { display: flex; flex-wrap: wrap; gap: clamp(32px, 6vw, 96px); }
.te-experience__head { flex: 1 1 300px; display: flex; flex-direction: column; gap: 20px; }
.te-experience__list { flex: 2 1 560px; display: flex; flex-direction: column; border-top: 1px solid currentColor; min-width: 0; }
.te-experience__row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 24px; padding: 22px 0; border-bottom: 1px solid var(--te-line); align-items: baseline; }
.te-experience__what { display: flex; flex-direction: column; gap: 4px; }
.te-experience__role { font-size: 22px; line-height: 1.25; }
.te-experience__org { font-size: 14px; color: var(--te-muted); }
.te-experience__when { font-size: 13px; font-weight: 600; color: var(--te-accent); white-space: nowrap; }

/* ---------- contact_paths ---------- */

.te-contact { --te-pad-bottom: clamp(64px, 8vw, 112px); }
.te-contact__head { display: flex; flex-wrap: wrap; gap: clamp(32px, 5vw, 80px); align-items: flex-end; justify-content: space-between; }
.te-contact__title { flex: 1 1 520px; max-width: 1000px; }
.te-contact__portrait { flex: 0 1 300px; aspect-ratio: 3 / 4; overflow: hidden; background: var(--te-panel); }
.te-contact__portrait img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 20%; display: block; }
.te-paths { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: 2px; background: var(--te-line-dark); border: 1px solid var(--te-line-dark); }
.te-paths__card { background: var(--te-night); padding: clamp(32px, 4vw, 48px); display: flex; flex-direction: column; gap: 16px; color: var(--te-cream); transition: background .4s; }
.te-paths__card:hover { background: #171A20; color: var(--te-cream); }
.te-motion .te-paths__card[data-reveal] { transition: opacity 1.1s var(--te-ease), transform 1.1s var(--te-ease), background .4s; }
.te-paths__tag { font-size: 12px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--te-coral); }
.te-paths__title { font-size: clamp(28px, 2.8vw, 38px); line-height: 1.1; }
.te-paths__text { font-size: 15px; line-height: 1.6; color: rgba(245, 243, 238, .7); }
.te-paths__cta { font-size: 15px; font-weight: 600; color: var(--te-cream); margin-top: 8px; }

.te-menu-item { position: relative; }
.te-menu-item--mobile > a { display: block; }
.te-menu-item--mobile.te-menu-item--button > a { display: inline-block; }
.te-menu-children { padding-inline-start: 16px; }
.te-menu-item--desktop > .te-menu-children {
  position: absolute;
  top: 100%;
  left: 0;
  background: var(--te-night);
  min-width: 180px;
  padding: 12px;
  visibility: hidden;
}
.te-menu-item--desktop:hover > .te-menu-children,
.te-menu-item--desktop:focus-within > .te-menu-children { visibility: visible; }
.te-menu-item--desktop .te-menu-children a { display: block; padding: 8px; }
.te-menu-item--desktop .te-menu-children .te-menu-children { top: 0; left: 100%; }
@media (max-width: 1099px) {
  .te-header__nav > .te-menu-item--desktop { display: none; }
}

.te-inner-page .te-header { background: var(--te-night); }
.te-inner-page main { padding-top: 80px; }
.te-page-copy { max-width: 900px; line-height: 1.7; overflow-wrap: anywhere; }
.te-page-copy h1 { margin-bottom: 1.5rem; }
.te-page-copy .trix-content :is(h1, h2, h3, p, ul, ol) { margin-block: 1rem; }
.te-page-copy .trix-content :is(ul, ol) { padding-inline-start: 1.5rem; }
.te-page-copy .trix-content a { text-decoration: underline; }

body[data-controller~="toms-motion"] {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  min-height: 100dvh;
}

body[data-controller~="toms-motion"] > main {
  flex: 1 0 auto;
}
