/*
Theme Name: Prorest Treuhand
Theme URI: https://prorest-treuhand.ch
Author: Walia Solutions
Author URI: https://walia-solutions.ch
Description: Redesign 2026 – Swiss Professional Services × Editorial. Locked theme, content via Customizer.
Version: 1.0.0
Requires at least: 6.4
Tested up to: 6.8
Requires PHP: 8.2
License: Proprietary
Text Domain: prorest
*/

/* ---------- Tokens (SSOT for design values) ---------- */
:root {
  --color-primary: #577F18;
  --color-primary-hover: #255789;
  --color-heading: #333333;
  --color-text: #666666;
  --color-white: #FFFFFF;
  --color-surface: #FAFAF8;
  --color-border: #EEEEEE;
  --color-input-border: #8A8A8A;
  --color-input-focus: #2D3940;
  --family-base: "Open Sans", Arial, sans-serif;
  --container-max: 1080px;
  --space-4: 24px;
  --section-space-md: clamp(72px, 9vw, 120px);
  --section-space-lg: clamp(96px, 12vw, 160px);
  --font-display-xl: clamp(48px, 7.5vw, 82px);
  --font-display-lg: clamp(40px, 5.5vw, 64px);
  --font-display-md: clamp(32px, 4.5vw, 48px);
  --font-index: clamp(20px, 2.6vw, 28px);
  --font-figure: clamp(40px, 5vw, 56px);
  --header-h: 72px;
  --header-h-scrolled: 56px;
  --motion-fast: 180ms;
  --motion-base: 320ms;
  --ease-out: cubic-bezier(0.2, 0, 0, 1);
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--color-white); color: var(--color-text); font-family: var(--family-base); font-size: 16px; line-height: 1.7; -webkit-font-smoothing: antialiased; }
a { color: var(--color-primary); text-decoration: none; transition: color var(--motion-fast) var(--ease-out); }
a:hover { color: var(--color-primary-hover); }
h1, h2, h3, h4, p, ul, ol, figure { margin: 0; }
img { max-width: 100%; height: auto; display: block; }
input, textarea, button { font: inherit; }
.screen-reader-text { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition: none !important; animation: none !important; } }

/* ---------- Layout ---------- */
.pt-container { max-width: var(--container-max); margin: 0 auto; padding-left: var(--space-4); padding-right: var(--space-4); }
.pt-section { padding-top: var(--section-space-md); padding-bottom: var(--section-space-md); }
.pt-section--lg { padding-top: var(--section-space-lg); padding-bottom: var(--section-space-lg); }
.pt-surface { background: var(--color-surface); border-top: 1px solid var(--color-border); border-bottom: 1px solid var(--color-border); }
.pt-hairline-top { border-top: 1px solid var(--color-border); }
.pt-split { display: flex; flex-wrap: wrap; gap: 48px 64px; align-items: flex-start; }
.pt-split > * { min-width: 0; }
.pt-split--hero > .pt-split__a { flex: 55 1 380px; } .pt-split--hero > .pt-split__b { flex: 45 1 300px; }
.pt-split--7-5 > .pt-split__a { flex: 5 1 280px; } .pt-split--7-5 > .pt-split__b { flex: 7 1 360px; }
.pt-split--6-5 > .pt-split__a { flex: 6 1 340px; } .pt-split--6-5 > .pt-split__b { flex: 5 1 300px; }
.pt-split--story { flex-wrap: wrap-reverse; align-items: stretch; }
.pt-split--story > .pt-split__a { flex: 4 1 260px; display: flex; flex-direction: column; } .pt-split--story > .pt-split__b { flex: 6 1 360px; }
.pt-media { background: var(--color-border); overflow: hidden; position: relative; }
.pt-media img { width: 100%; height: 100%; object-fit: cover; }
.pt-media--4x5 { aspect-ratio: 4 / 5; }
.pt-media--fill { flex: 1 1 auto; min-height: 320px; }

/* ---------- Type ---------- */
.pt-eyebrow { font-size: 12px; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; color: var(--color-primary); margin-bottom: 24px; }
.pt-eyebrow--inverse { color: var(--color-white); }
.pt-display-xl { font-size: var(--font-display-xl); font-weight: 400; letter-spacing: -0.04em; line-height: 0.98; color: var(--color-heading); text-wrap: pretty; }
.pt-display-lg { font-size: var(--font-display-lg); font-weight: 400; letter-spacing: -0.03em; line-height: 1.05; color: var(--color-heading); text-wrap: pretty; }
.pt-display-md { font-size: var(--font-display-md); font-weight: 400; letter-spacing: -0.02em; line-height: 1.1; color: var(--color-heading); text-wrap: pretty; }
.pt-lead { font-size: 18px; line-height: 1.6; text-wrap: pretty; }
.pt-lead + p, .pt-prose p + p { margin-top: 20px; }
.pt-figure { font-size: var(--font-figure); font-weight: 300; line-height: 1; letter-spacing: -0.03em; color: var(--color-primary); }

/* ---------- Button ---------- */
.pt-button { display: inline-block; background: var(--color-primary); color: var(--color-white); padding: 14px 26px; font-weight: 600; font-size: 15px; line-height: 1.4; border: 0; cursor: pointer; transition: background var(--motion-fast) var(--ease-out); }
.pt-button:hover { background: var(--color-primary-hover); color: var(--color-white); }
.pt-button:disabled { opacity: .6; cursor: default; }
.pt-button--sm { padding: 8px 16px; font-size: 14px; }
.pt-arrow-link { font-weight: 600; font-size: 15px; }

/* ---------- Header ---------- */
.pt-header { position: sticky; top: 0; z-index: 50; background: var(--color-white); border-bottom: 1px solid var(--color-border); }
.pt-header__row { height: var(--header-h); display: flex; align-items: center; justify-content: space-between; gap: 24px; transition: height var(--motion-base) var(--ease-out); }
.is-scrolled .pt-header__row { height: var(--header-h-scrolled); }
.pt-logo img { height: 38px; width: auto; }
.pt-nav { display: flex; align-items: center; gap: 22px; font-size: 14px; font-weight: 600; white-space: nowrap; }
.pt-nav ul { list-style: none; display: contents; }
.pt-nav a { color: var(--color-heading); padding: 4px 0; border-bottom: 2px solid transparent; }
.pt-nav a:hover { color: var(--color-primary); border-bottom-color: var(--color-primary); }
.pt-nav__phone { color: var(--color-primary) !important; border: 0 !important; }
.pt-nav__actions { display: none; align-items: center; gap: 16px; }
.pt-menu-toggle { background: none; border: 1px solid var(--color-border); color: var(--color-heading); padding: 8px 14px; cursor: pointer; font-weight: 600; font-size: 14px; }
.pt-menu-toggle:hover { border-color: var(--color-primary); color: var(--color-primary); }
.pt-mobile-nav { display: none; border-top: 1px solid var(--color-border); }
.pt-mobile-nav ul { list-style: none; padding: 12px 0 20px; display: flex; flex-direction: column; font-size: 18px; }
.pt-mobile-nav a { display: block; color: var(--color-heading); padding: 12px 0; border-bottom: 1px solid var(--color-border); }
.pt-mobile-nav a:hover { color: var(--color-primary); }
.menu-open .pt-mobile-nav { display: block; }
@media (max-width: 980px) {
  .pt-nav { display: none; }
  .pt-nav__actions { display: flex; }
}

/* ---------- Hero slider ---------- */
.pt-hero { padding-top: clamp(72px, 10vw, 120px); padding-bottom: clamp(48px, 7vw, 96px); }
.pt-hero .pt-lead { margin-top: 36px; max-width: 520px; }
.pt-hero__actions { display: flex; flex-wrap: wrap; gap: 16px 36px; margin-top: 44px; align-items: center; }
.pt-slider__slide { position: absolute; inset: 0; opacity: 0; transition: opacity 1200ms var(--ease-out); }
.pt-slider__slide.is-active { opacity: 1; }
.pt-slider__dots { position: absolute; left: 0; right: 0; bottom: 0; display: flex; gap: 6px; padding: 12px; pointer-events: none; }
.pt-slider__dots span { height: 2px; flex: 1; background: var(--color-white); opacity: .4; }
.pt-slider__dots span.is-active { opacity: 1; }

/* ---------- Index list ---------- */
.pt-index { list-style: none; padding: 0; border-top: 1px solid var(--color-border); margin-top: clamp(40px, 5vw, 64px); }
.pt-index__item { display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 16px 28px; align-items: start; padding: 22px 0; border-bottom: 1px solid var(--color-border); }
.pt-index__item--linked { grid-template-columns: 56px minmax(0, 1fr) auto; align-items: baseline; padding: 20px 0; color: var(--color-heading); }
.pt-index__item--linked:hover { color: var(--color-primary); }
.pt-index__num, .pt-index__arrow { font-size: 14px; font-weight: 600; color: var(--color-primary); letter-spacing: .06em; }
.pt-index__title { font-size: var(--font-index); font-weight: 400; line-height: 1.3; color: inherit; text-wrap: pretty; }
.pt-index__note { margin-top: 6px; }
.pt-icon { width: 40px; height: 40px; stroke: var(--color-primary); fill: none; stroke-width: 1.25; stroke-linecap: round; stroke-linejoin: round; }

/* ---------- Statement ---------- */
.pt-statement { background: var(--color-primary); color: var(--color-white); }
.pt-statement .pt-display-lg { color: var(--color-white); max-width: 900px; line-height: 1.08; }

/* ---------- Story / Team ---------- */
.pt-facts { display: flex; flex-wrap: wrap; gap: 24px 48px; margin-top: 40px; padding-top: 28px; border-top: 1px solid var(--color-border); }
.pt-facts > div { flex: 1 1 140px; min-width: 0; }
.pt-facts p + p { margin-top: 8px; font-size: 14px; color: var(--color-heading); }
.pt-team { margin-top: clamp(48px, 6vw, 72px); scroll-margin-top: 96px; }
.pt-team__list { border-top: 1px solid var(--color-border); }
.pt-team__member { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 8px 32px; padding: 24px 0; border-bottom: 1px solid var(--color-border); align-items: start; }
.pt-team__name { font-size: 24px; font-weight: 400; color: var(--color-heading); letter-spacing: -0.01em; line-height: 1.25; }
.pt-team__role { margin-bottom: 0; margin-top: 6px; }
.pt-team__mail { display: inline-block; margin-top: 8px; font-weight: 600; }

/* ---------- Digital ---------- */
.pt-digital__links { display: flex; flex-direction: column; border-top: 1px solid var(--color-border); }
.pt-digital__link { display: flex; justify-content: space-between; align-items: baseline; gap: 24px; padding: 26px 0; border-bottom: 1px solid var(--color-border); color: var(--color-heading); }
.pt-digital__link:hover { color: var(--color-primary); }
.pt-digital__link span:first-child { font-size: 28px; letter-spacing: -0.01em; }
.pt-digital__link span:last-child { font-size: 14px; font-weight: 600; color: var(--color-primary); white-space: nowrap; }

/* ---------- Contact ---------- */
.pt-contact__rows { display: flex; flex-direction: column; margin-top: 40px; border-top: 1px solid var(--color-border); max-width: 480px; }
.pt-contact__row { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 16px; padding: 18px 0; border-bottom: 1px solid var(--color-border); }
.pt-contact__row .pt-eyebrow { margin: 0; padding-top: 5px; }
.pt-contact__row a { color: var(--color-heading); } .pt-contact__row a:hover { color: var(--color-primary); }
.pt-form { display: flex; flex-direction: column; gap: 18px; }
.pt-form__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 18px; }
.pt-form label { display: flex; flex-direction: column; gap: 6px; font-size: 14px; color: var(--color-heading); }
.pt-form input, .pt-form textarea { border: 1px solid var(--color-input-border); background: var(--color-white); padding: 12px 14px; color: var(--color-heading); outline: none; border-radius: 0; }
.pt-form input:focus, .pt-form textarea:focus { border-color: var(--color-input-focus); }
.pt-form textarea { resize: vertical; }
.pt-form__actions { display: flex; align-items: center; gap: 20px; flex-wrap: wrap; margin-top: 6px; }
.pt-form__notice { font-weight: 600; color: var(--color-primary); }
.pt-form__notice--error { color: var(--color-heading); font-weight: 400; font-size: 14px; }
.pt-form__hp { position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; }

/* ---------- Footer ---------- */
.pt-footer { background: var(--color-heading); color: var(--color-white); }
.pt-footer__row { padding: 40px var(--space-4); display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 20px 40px; }
.pt-footer__logo img { height: 28px; width: auto; }
.pt-footer nav ul { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: 8px 28px; font-size: 14px; font-weight: 600; }
.pt-footer a { color: var(--color-white); } .pt-footer a:hover { color: var(--color-border); text-decoration: underline; }
.pt-footer p { font-size: 14px; color: var(--color-border); }

/* ---------- Pages (Impressum, Datenschutz) ---------- */
.pt-page { max-width: 720px; }
.pt-page .pt-display-lg { margin-bottom: 36px; }
.pt-page h2 { font-size: 18px; font-weight: 700; color: var(--color-heading); margin-top: 28px; }
.pt-page h3 { font-size: 16px; font-weight: 700; color: var(--color-heading); margin-top: 16px; }
.pt-page p, .pt-page ul { margin-top: 12px; }
.pt-page ul { padding-left: 22px; }
.pt-page a { overflow-wrap: anywhere; }
