:root {
  --white: #ffffff;
  --off: #f7f6f3;
  --stone: #eceae4;
  --border: #dedbd3;
  --muted: #6b665e;
  --body: #36342e;
  --heading: #12110d;
  --ink: #12241c;
  --ink-2: #1b3328;
  --accent: #1a6b4a;
  --accent-dk: #124f37;
  --accent-lt: #e6f1ea;
  --accent-mid: #2d8a60;
  --sand: #c8a96a;
  --radius: 6px;
  --serif: "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;
  --sans: "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;
  --shadow: 0 1px 2px rgba(18, 36, 28, .05), 0 12px 32px -12px rgba(18, 36, 28, .18);
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; font-size: 100%; scroll-padding-top: 96px; }

body {
  background: var(--white);
  color: var(--body);
  font-family: var(--sans);
  font-size: 1.0625rem;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

img { display: block; max-width: 100%; height: auto; }
a { color: var(--accent); text-underline-offset: 3px; }
a:hover { color: var(--accent-dk); }
ul, ol { padding-left: 1.25rem; }
strong { color: var(--heading); font-weight: 600; }
code { font-family: ui-monospace, Consolas, monospace; font-size: .88em; background: var(--stone); padding: .1em .4em; border-radius: 3px; color: var(--heading); }
sub { font-size: .7em; }

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

.skip-link {
  position: absolute; left: -9999px; top: 0; z-index: 400;
  background: var(--ink); color: #fff; padding: .7rem 1.1rem;
}
.skip-link:focus { left: 1rem; top: 1rem; }

.t-label {
  display: inline-flex; align-items: center; gap: .7rem;
  font-size: .72rem; font-weight: 600; letter-spacing: .18em;
  text-transform: uppercase; color: var(--accent);
}
.t-label::before { content: ""; width: 26px; height: 1px; background: currentColor; }

.t-h1, .t-h2, .t-h3, .page-hero h1, .editorial-side h2, .cta-band h2, .article h2 {
  font-family: var(--serif); font-weight: 400; color: var(--heading);
}
.t-h1 { font-size: clamp(2.5rem, 5.2vw, 4.4rem); line-height: 1.06; letter-spacing: -.02em; }
.t-h1 em, .cta-band h2 em { font-style: italic; color: var(--accent); }
.t-h2 { font-size: clamp(1.9rem, 3.2vw, 2.8rem); line-height: 1.14; letter-spacing: -.015em; }
.t-h3 { font-size: 1.3rem; line-height: 1.28; letter-spacing: -.005em; }

.wrap { max-width: 1180px; margin: 0 auto; padding: 0 2rem; }
.wrap-narrow { max-width: 780px; margin: 0 auto; padding: 0 2rem; }

.topbar { background: var(--ink); color: #c6d3cb; font-size: .8rem; }
.topbar-row { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: .55rem 0; }
.topbar a { color: #fff; text-decoration: none; }
.topbar a:hover { text-decoration: underline; color: #fff; }
.topbar-contact { display: flex; gap: 1.6rem; }

.site-header {
  position: sticky; top: 0; z-index: 200;
  background: rgba(255, 255, 255, .97);
  border-bottom: 1px solid var(--border);
}
.header-row { display: flex; align-items: center; justify-content: space-between; height: 76px; gap: 2rem; position: relative; }

.logo { display: inline-flex; align-items: center; gap: 3px; text-decoration: none; }
.logo-tag { font-size: 1.45rem; font-weight: 700; letter-spacing: -.035em; color: var(--heading); }
.logo-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--accent); margin: 8px 1px 0; }
.logo-tld { font-size: 1.45rem; font-weight: 300; letter-spacing: -.02em; color: var(--accent); }
.logo:hover .logo-tag { color: var(--accent-dk); }

.main-nav { list-style: none; display: flex; align-items: center; gap: 2.1rem; padding: 0; }
.main-nav a {
  position: relative; display: inline-block; padding: .35rem 0;
  font-size: .94rem; font-weight: 500; color: var(--body); text-decoration: none;
}
.main-nav a::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: -2px; height: 2px;
  background: var(--accent); transform: scaleX(0); transform-origin: left; transition: transform .25s;
}
.main-nav a:hover::after, .main-nav a[aria-current="page"]::after { transform: scaleX(1); }
.main-nav a[aria-current="page"] { color: var(--heading); }
.main-nav .nav-btn {
  background: var(--accent); color: #fff; padding: .65rem 1.25rem; border-radius: 999px;
  font-size: .9rem; transition: background .2s;
}
.main-nav .nav-btn::after { display: none; }
.main-nav .nav-btn:hover, .main-nav .nav-btn[aria-current="page"] { background: var(--accent-dk); color: #fff; }

.nav-toggle { position: absolute; opacity: 0; width: 1px; height: 1px; }
.burger { display: none; cursor: pointer; width: 44px; height: 44px; flex-direction: column; justify-content: center; align-items: center; gap: 5px; }
.burger span { display: block; width: 24px; height: 2px; background: var(--heading); transition: transform .25s, opacity .25s; }
.nav-toggle:focus-visible + .burger { outline: 2px solid var(--accent-mid); outline-offset: 2px; }

.btn {
  display: inline-flex; align-items: center; gap: .55rem;
  padding: .95rem 1.8rem; border-radius: 999px; border: 1.5px solid transparent;
  font: 600 .95rem/1 var(--sans); text-decoration: none; cursor: pointer;
  transition: background .2s, color .2s, border-color .2s, transform .2s;
}
.btn:hover { transform: translateY(-2px); }
.btn-green { background: var(--accent); color: #fff; }
.btn-green:hover { background: var(--accent-dk); color: #fff; }
.btn-outline { border-color: var(--heading); color: var(--heading); background: transparent; }
.btn-outline:hover { background: var(--heading); color: #fff; }
.btn-white { background: #fff; color: var(--accent-dk); }
.btn-white:hover { background: var(--accent-lt); color: var(--accent-dk); }

.link-arrow { font-weight: 600; text-decoration: none; border-bottom: 1px solid var(--accent-mid); }
.link-arrow:hover { border-bottom-color: var(--accent-dk); }

.hero { position: relative; overflow: hidden; background: var(--off); padding: 5.5rem 0 5rem; border-bottom: 1px solid var(--border); }
.hero-ring { position: absolute; border: 1px solid var(--border); border-radius: 50%; pointer-events: none; }
.hero-ring-a { width: 760px; height: 760px; right: -240px; top: -200px; }
.hero-ring-b { width: 520px; height: 520px; right: -120px; top: -80px; border-color: #d3cfc5; }
.hero-inner { position: relative; display: grid; grid-template-columns: 1.1fr .9fr; gap: 4.5rem; align-items: center; }
.hero-copy .t-label { margin-bottom: 1.4rem; }
.hero-lead { margin-top: 1.7rem; max-width: 33rem; font-size: 1.15rem; color: var(--body); }
.hero-actions { display: flex; flex-wrap: wrap; gap: .9rem; margin-top: 2.3rem; }
.hero-facts { list-style: none; display: flex; flex-wrap: wrap; gap: .6rem 2rem; margin-top: 2.6rem; padding: 1.4rem 0 0; border-top: 1px solid var(--border); font-size: .9rem; color: var(--muted); }
.hero-facts li { display: flex; align-items: center; gap: .55rem; }
.hero-facts li::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--accent); }

.hero-visual { position: relative; padding: 0 1.2rem 1.2rem 0; }
.hero-img-box { position: relative; border-radius: var(--radius); aspect-ratio: 4 / 5; }
.hero-img-box::before {
  content: ""; position: absolute; inset: 1.2rem -1.2rem -1.2rem 1.2rem;
  border: 2px solid var(--accent); border-radius: var(--radius); z-index: 0;
}
.hero-img-box img { position: relative; z-index: 1; width: 100%; height: 100%; object-fit: cover; border-radius: var(--radius); box-shadow: var(--shadow); }
.hero-badge {
  position: absolute; z-index: 2; left: -1.8rem; bottom: 3rem;
  background: #fff; border: 1px solid var(--border); border-radius: var(--radius);
  padding: 1rem 1.4rem; box-shadow: var(--shadow); display: grid; gap: .1rem;
}
.badge-num { font-family: var(--serif); font-size: 2rem; line-height: 1; color: var(--accent); }
.badge-txt { font-size: .78rem; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }

.strip { background: var(--ink); color: #dbe6df; padding: 1.15rem 0; }
.strip-list { list-style: none; display: flex; flex-wrap: wrap; justify-content: center; gap: .4rem 1.5rem; padding: 0; font-size: .8rem; letter-spacing: .14em; text-transform: uppercase; }
.strip-list li + li::before { content: "·"; margin-right: 1.5rem; color: var(--sand); }

.section { padding: 6.5rem 0; }
.section-sm { padding: 4.5rem 0; }
.section-off { background: var(--off); }
.section-stone { background: var(--stone); }
.section-tint { background: var(--accent-lt); border-top: 1px solid #cfe2d7; }
.section-head { margin-bottom: 3.2rem; max-width: 40rem; }
.section-head .t-label { margin-bottom: 1rem; }
.section-foot { margin-top: 2.5rem; text-align: right; }
.section-foot--center { text-align: center; }
.center { text-align: center; }
.center .t-label { justify-content: center; }
.center p { max-width: 34rem; margin: 1rem auto 2rem; }

.services-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.6rem; }
.srv-card {
  position: relative; background: #fff; border: 1px solid var(--border); border-top: 3px solid var(--accent);
  border-radius: var(--radius); padding: 2.2rem 2rem 2.3rem; transition: transform .25s, box-shadow .25s;
}
.srv-card:hover { transform: translateY(-4px); box-shadow: var(--shadow); }
.srv-num { font-family: var(--serif); font-size: 2.6rem; line-height: 1; color: var(--accent-mid); opacity: .55; margin-bottom: 1.3rem; }
.srv-num--word { font-size: 1.15rem; font-style: italic; opacity: 1; letter-spacing: .02em; margin-bottom: 1.5rem; }
.srv-card .t-h3 { margin-bottom: .8rem; }
.srv-card p { font-size: .98rem; }

.about-grid { display: grid; grid-template-columns: .85fr 1.15fr; gap: 5rem; align-items: center; }
.about-img { position: relative; max-width: 440px; }
.about-img::before { content: ""; position: absolute; inset: -1rem 1rem 1rem -1rem; background: var(--accent-lt); border-radius: var(--radius); }
.about-img img { position: relative; width: 100%; border-radius: var(--radius); box-shadow: var(--shadow); }
.about-text .t-label { margin-bottom: 1rem; }
.about-text .t-h2 { margin-bottom: 1.6rem; }
.about-text p { margin-bottom: 1.1rem; }
.about-pills { display: flex; flex-wrap: wrap; gap: .6rem; margin-top: 1.8rem; }
.pill { border: 1px solid var(--border); background: #fff; border-radius: 999px; padding: .4rem 1.05rem; font-size: .82rem; font-weight: 500; color: var(--heading); }
.section-off .pill, .section-stone .pill { background: #fff; }

.history-layout { display: grid; grid-template-columns: 300px 1fr; gap: 4rem; align-items: start; }
.history-year-block { position: sticky; top: 110px; border-right: 1px solid var(--border); padding-right: 2rem; }
.history-big-year { font-family: var(--serif); font-size: clamp(4rem, 8vw, 6.4rem); line-height: .95; letter-spacing: -.04em; color: var(--accent); }
.history-tag { display: inline-block; margin-top: 1rem; font-size: .72rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); }
.history-content .t-h2 { margin-bottom: 1.6rem; }
.history-content p { margin-bottom: 1.1rem; max-width: 40rem; }
.history-stats, .stat-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.4rem; margin-top: 2.4rem; padding-top: 2rem; border-top: 1px solid var(--border); }
.stat-row { grid-template-columns: repeat(4, 1fr); margin-bottom: 3rem; }
.hstat-num { font-family: var(--serif); font-size: 2.3rem; line-height: 1.05; color: var(--heading); }
.hstat-lbl { margin-top: .35rem; font-size: .85rem; line-height: 1.45; color: var(--muted); }

.process-steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.6rem; position: relative; counter-reset: ps; }
.process-steps::before { content: ""; position: absolute; left: 24px; right: 24px; top: 24px; height: 1px; background: #b9b5aa; }
.pstep { position: relative; }
.pstep-num {
  position: relative; display: grid; place-items: center; width: 48px; height: 48px; border-radius: 50%;
  background: var(--accent); color: #fff; font-size: .9rem; font-weight: 600; margin-bottom: 1.4rem;
}
.pstep-num--year { width: auto; border-radius: 999px; padding: 0 1rem; justify-self: start; display: inline-grid; }
.pstep .t-h3 { margin-bottom: .6rem; }
.pstep p { font-size: .96rem; padding-right: .6rem; }

.cta-band { background: var(--accent); color: #fff; padding: 5rem 0; }
.cta-band-inner { display: grid; grid-template-columns: 1.3fr 1fr; gap: 3rem; align-items: center; }
.cta-band h2 { font-size: clamp(1.9rem, 3.4vw, 3rem); line-height: 1.14; color: #fff; letter-spacing: -.015em; }
.cta-band h2 em { color: #bfe3cf; }
.cta-band-right { display: grid; gap: 1.1rem; justify-items: start; }
.cta-note { font-size: .92rem; color: #d3eadd; max-width: 26rem; }

.editorial-block { padding: 6.5rem 0; background: var(--white); }
.editorial-inner { display: grid; grid-template-columns: 340px 1fr; gap: 4.5rem; align-items: start; }
.editorial-side { position: sticky; top: 110px; }
.editorial-side-num { font-family: var(--serif); font-size: 7rem; line-height: .8; color: var(--accent); opacity: .22; margin-bottom: 1rem; }
.editorial-side .t-label { margin-bottom: 1rem; }
.editorial-side h2 { font-size: clamp(1.8rem, 2.8vw, 2.5rem); line-height: 1.15; letter-spacing: -.015em; }
.editorial-body p { margin-bottom: 1.2rem; max-width: 40rem; }
.editorial-pull { margin: 2.2rem 0; padding: .4rem 0 .4rem 1.8rem; border-left: 3px solid var(--sand); }
.editorial-pull p { margin: 0; font-family: var(--serif); font-size: 1.55rem; line-height: 1.4; font-style: italic; color: var(--heading); }

.reviews-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.6rem; }
.rev-card { position: relative; display: flex; flex-direction: column; background: #fff; border: 1px solid var(--border); border-radius: var(--radius); padding: 2.4rem 2rem 2rem; }
.rev-card::before { content: "\201C"; position: absolute; top: .6rem; right: 1.5rem; font-family: var(--serif); font-size: 4.5rem; line-height: 1; color: var(--accent); opacity: .22; }
.rev-stars { color: var(--sand); letter-spacing: .2em; font-size: .95rem; margin-bottom: 1rem; }
.rev-text { flex: 1; font-family: var(--serif); font-size: 1.08rem; line-height: 1.6; color: var(--heading); }
.rev-author { margin-top: 1.5rem; padding-top: 1.1rem; border-top: 1px solid var(--border); font-weight: 600; color: var(--heading); font-size: .95rem; }
.rev-city { font-size: .85rem; color: var(--muted); }

.technik-block { padding: 6.5rem 0; background: var(--ink); color: #cdd9d1; }
.technik-block .t-label { color: var(--sand); }
.technik-block .t-h2 { color: #fff; }
.technik-head { max-width: 42rem; margin-bottom: 3.2rem; }
.technik-head .t-label { margin-bottom: 1rem; }
.technik-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.4rem; }
.technik-item { background: var(--ink-2); border: 1px solid #2b4538; border-left: 3px solid var(--sand); border-radius: var(--radius); padding: 2rem 2.1rem; }
.technik-item-label { font-size: .7rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--sand); margin-bottom: .7rem; }
.technik-item h3 { font-family: var(--serif); font-weight: 400; font-size: 1.35rem; color: #fff; margin-bottom: .7rem; line-height: 1.25; }
.technik-item p { font-size: .96rem; color: #c3d1c8; }
.technik-item a { color: #fff; }
.technik-note { display: flex; gap: 1.2rem; align-items: flex-start; margin-top: 1.4rem; padding: 1.6rem 2rem; border: 1px dashed #3d5c4c; border-radius: var(--radius); }
.technik-note-icon svg { width: 28px; height: 28px; fill: none; stroke: var(--sand); stroke-width: 1.6; stroke-linecap: round; }
.technik-note p { color: #dbe6df; }
.technik-note a { color: #fff; font-weight: 600; }

.technik-grid--light .technik-item { background: #fff; border-color: var(--border); border-left-color: var(--accent); }
.technik-grid--light .technik-item-label { color: var(--accent); }
.technik-grid--light .technik-item h3 { color: var(--heading); }
.technik-grid--light .technik-item p { color: var(--body); }
.technik-grid--light .technik-item a { color: var(--accent); font-weight: 600; }

.know-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.6rem; }
.know-grid--home { grid-template-columns: repeat(4, 1fr); gap: 1.2rem; }
.know-card { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--border); border-radius: var(--radius); padding: 1.9rem 1.8rem; text-decoration: none; color: var(--body); transition: transform .25s, box-shadow .25s, border-color .25s; }
.know-card:hover { transform: translateY(-4px); box-shadow: var(--shadow); border-color: var(--accent-mid); color: var(--body); }
.know-tag { font-size: .7rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--accent); margin-bottom: .9rem; }
.know-card h3 { font-family: var(--serif); font-weight: 400; font-size: 1.3rem; line-height: 1.25; color: var(--heading); margin-bottom: .8rem; }
.know-card p { font-size: .95rem; flex: 1; }
.know-meta { margin-top: 1.3rem; padding-top: 1rem; border-top: 1px solid var(--border); font-size: .82rem; color: var(--muted); display: flex; justify-content: space-between; }
.know-grid--home h3 { font-size: 1.12rem; }

.geo-grid { display: grid; grid-template-columns: 1.05fr .95fr; gap: 4.5rem; align-items: center; }
.geo-text .t-label { margin-bottom: 1rem; }
.geo-text .t-h2 { margin-bottom: 1.5rem; }
.geo-text p { margin-bottom: 1.1rem; }
.geo-chips { display: flex; flex-wrap: wrap; gap: .55rem; margin-top: 1.6rem; }
.geo-chip { display: inline-block; border: 1px solid var(--border); background: #fff; border-radius: 999px; padding: .35rem .95rem; font-size: .82rem; font-weight: 500; color: var(--heading); }
.geo-box { position: relative; background: var(--ink); border-radius: var(--radius); padding: 2rem 1.6rem 1.4rem; box-shadow: var(--shadow); }
.map-svg { width: 100%; height: auto; display: block; }
.map-frame { fill: none; stroke: #2f4c3d; stroke-width: 1; stroke-dasharray: 3 5; }
.map-line { stroke: #4c7a63; stroke-width: 1.2; }
.map-dot { fill: var(--sand); }
.map-dot--home { fill: #fff; }
.map-ring { fill: none; stroke: #fff; stroke-width: 1; opacity: .5; }
.map-label { fill: #fff; font: 600 12.5px var(--sans); }
.map-km { fill: #9db8a9; font: 11px var(--sans); }
.geo-label-box { margin-top: 1.2rem; padding-top: 1rem; border-top: 1px solid #2b4538; font-size: .78rem; letter-spacing: .14em; text-transform: uppercase; color: var(--sand); text-align: center; }

.page-hero { position: relative; overflow: hidden; background: var(--off); border-bottom: 1px solid var(--border); padding: 5.5rem 0 4.5rem; }
.page-hero::before, .page-hero::after { content: ""; position: absolute; border: 1px solid var(--border); border-radius: 50%; pointer-events: none; }
.page-hero::before { width: 560px; height: 560px; right: -120px; top: -230px; }
.page-hero::after { width: 360px; height: 360px; right: 0; top: -130px; border-color: #d3cfc5; }
.page-hero-inner { position: relative; max-width: 1180px; margin: 0 auto; padding: 0 2rem; }
.page-hero .t-label { margin-bottom: 1.3rem; }
.page-hero h1 { font-size: clamp(2.4rem, 5vw, 4.1rem); line-height: 1.08; letter-spacing: -.02em; max-width: 18ch; }
.page-hero p { margin-top: 1.5rem; max-width: 40rem; font-size: 1.14rem; }
.crumbs { position: relative; font-size: .84rem; color: var(--muted); margin-bottom: 1.6rem; }
.crumbs a { color: var(--muted); text-decoration: none; }
.crumbs a:hover { color: var(--accent); text-decoration: underline; }
.crumbs span { margin: 0 .5rem; }

.offer { display: grid; grid-template-columns: 90px 1fr; gap: 2.4rem; padding: 2.8rem 0; border-top: 1px solid var(--border); }
.offer:last-child { border-bottom: 1px solid var(--border); }
.offer-num { font-family: var(--serif); font-size: 3.2rem; line-height: 1; color: var(--accent); opacity: .5; }
.offer-tags { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1rem; }
.offer-body .t-h3 { font-size: 1.7rem; margin-bottom: 1rem; }
.offer-body p { margin-bottom: 1rem; max-width: 46rem; }
.offer-details { margin-top: 1.5rem; background: var(--off); border: 1px solid var(--border); border-radius: var(--radius); }
.offer-row { display: grid; grid-template-columns: 140px 1fr; gap: 1.5rem; padding: .95rem 1.4rem; font-size: .95rem; }
.offer-row + .offer-row { border-top: 1px solid var(--border); }
.offer-label { font-size: .72rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--accent); padding-top: .2rem; }

.step-row { display: grid; grid-template-columns: 90px 1fr; gap: 2.4rem; padding: 2.6rem 0; border-top: 1px solid var(--border); }
.step-row:last-child { border-bottom: 1px solid var(--border); }
.step-num { display: grid; place-items: center; width: 58px; height: 58px; border-radius: 50%; border: 1.5px solid var(--accent); color: var(--accent); font-family: var(--serif); font-size: 1.3rem; }
.step-body .t-h3 { font-size: 1.55rem; margin-bottom: .9rem; }
.step-body p { max-width: 44rem; }
.step-note { display: inline-block; margin-top: 1.1rem; padding: .5rem 1rem; background: var(--accent-lt); border-left: 3px solid var(--accent); font-size: .9rem; color: var(--accent-dk); border-radius: 0 var(--radius) var(--radius) 0; }

.legal-section { padding: 5rem 0 6rem; }
.legal-layout { display: grid; grid-template-columns: 250px 1fr; gap: 4.5rem; align-items: start; }
.legal-nav { position: sticky; top: 100px; border-left: 2px solid var(--border); padding-left: 1.3rem; }
.legal-nav-title { font-size: .72rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); margin-bottom: 1rem; }
.legal-nav ul { list-style: none; padding: 0; display: grid; gap: .55rem; }
.legal-nav a { font-size: .92rem; color: var(--body); text-decoration: none; }
.legal-nav a:hover { color: var(--accent); text-decoration: underline; }
.legal-content { max-width: 46rem; }
.legal-content section { margin-bottom: 3.2rem; padding-bottom: 3.2rem; border-bottom: 1px solid var(--border); }
.legal-content section:last-child { border-bottom: 0; margin-bottom: 0; }
.legal-content h2 { font-family: var(--serif); font-weight: 400; font-size: 1.85rem; line-height: 1.2; color: var(--heading); margin-bottom: 1.2rem; }
.legal-content h3 { font-size: 1.05rem; font-weight: 600; color: var(--heading); margin: 1.8rem 0 .6rem; }
.legal-content p { margin-bottom: 1rem; }
.legal-content ul { margin: 0 0 1.2rem; display: grid; gap: .5rem; }
.legal-lead { padding: 1.3rem 1.6rem; background: var(--accent-lt); border-left: 3px solid var(--accent); border-radius: 0 var(--radius) var(--radius) 0; margin-bottom: 3rem; color: var(--accent-dk); }
.impressum-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.2rem; margin-bottom: 1.4rem; }
.impressum-block { background: var(--off); border: 1px solid var(--border); border-radius: var(--radius); padding: 1.4rem 1.6rem; }
.impressum-block h3 { margin: 0 0 .6rem; font-size: .72rem; letter-spacing: .16em; text-transform: uppercase; color: var(--accent); }
.impressum-block p { margin: 0; }
.impressum-block small { color: var(--muted); }

.data-table-wrap { overflow-x: auto; margin: 1.6rem 0 2rem; border: 1px solid var(--border); border-radius: var(--radius); }
.data-table { width: 100%; border-collapse: collapse; font-size: .94rem; background: #fff; }
.data-table caption { caption-side: bottom; padding: .8rem 1.1rem; text-align: left; font-size: .82rem; color: var(--muted); border-top: 1px solid var(--border); }
.data-table th, .data-table td { padding: .85rem 1.1rem; text-align: left; vertical-align: top; border-bottom: 1px solid var(--border); }
.data-table thead th { background: var(--stone); font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--heading); }
.data-table tbody tr:last-child td { border-bottom: 0; }
.data-table tbody tr:nth-child(even) td { background: var(--off); }

.article-lead { font-size: 1.18rem; line-height: 1.7; color: var(--heading); margin-bottom: 1.6rem; }
.article-meta { display: flex; flex-wrap: wrap; gap: .5rem 1.6rem; margin-top: 1.8rem; font-size: .85rem; color: var(--muted); }
.article-meta strong { color: var(--heading); font-weight: 600; }
code { font-family: ui-monospace, Consolas, monospace; font-size: .88em; background: var(--stone); padding: .1em .4em; border-radius: 3px; color: var(--heading); }
sub { font-size: .7em; }
.article h2 { font-size: 1.85rem; line-height: 1.2; margin: 2.8rem 0 1.1rem; padding-top: .4rem; }
.article h2:first-child { margin-top: 0; }
.article p { margin-bottom: 1.1rem; }
.article ul, .article ol { margin: 0 0 1.4rem 1.2rem; display: grid; gap: .5rem; }
.abstract { background: var(--off); border: 1px solid var(--border); border-radius: var(--radius); padding: 1.5rem 1.8rem; margin-bottom: 2.4rem; }
.abstract-title { font-size: .72rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--accent); margin-bottom: .6rem; }
.abstract p { margin: 0; font-size: .98rem; }
.fact-box { margin: 1.8rem 0; padding: 1.4rem 1.7rem; background: var(--accent-lt); border-left: 3px solid var(--accent); border-radius: 0 var(--radius) var(--radius) 0; }
.fact-box-title { font-size: .72rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--accent-dk); margin-bottom: .5rem; }
.fact-box p:last-child { margin-bottom: 0; }
.formula { margin: 1.6rem 0; padding: 1.2rem 1.5rem; text-align: center; font-family: var(--serif); font-size: 1.35rem; font-style: italic; background: var(--off); border: 1px solid var(--border); border-radius: var(--radius); color: var(--heading); }
.formula small { display: block; margin-top: .5rem; font-family: var(--sans); font-size: .82rem; font-style: normal; color: var(--muted); }
.refs { margin: 0 0 0 1.3rem; display: grid; gap: .8rem; font-size: .9rem; color: var(--muted); }
.refs em { color: var(--body); }
.article-end { margin-top: 3rem; padding-top: 2.4rem; border-top: 1px solid var(--border); }
.article-end .t-label { margin-bottom: 1.4rem; }

.city-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.4rem; }
.city-card { background: #fff; border: 1px solid var(--border); border-radius: var(--radius); padding: 2rem 2.1rem; }
.city-card--lead { grid-column: 1 / -1; border-top: 3px solid var(--accent); display: grid; grid-template-columns: 1.15fr .85fr; gap: 3rem; }
.city-card .know-tag { margin-bottom: .6rem; }
.city-card h3 { font-family: var(--serif); font-weight: 400; font-size: 1.7rem; color: var(--heading); margin-bottom: .8rem; line-height: 1.2; }
.city-card p { font-size: .97rem; margin-bottom: .9rem; }
.city-facts { margin: 1.1rem 0 0; border-top: 1px solid var(--border); }
.city-facts div { display: grid; grid-template-columns: 120px 1fr; gap: 1rem; padding: .6rem 0; border-bottom: 1px solid var(--border); font-size: .9rem; }
.city-facts dt { font-size: .7rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--accent); padding-top: .15rem; }
.city-facts dd { margin: 0; color: var(--heading); }
.city-note { margin-top: 1.6rem; font-size: .85rem; color: var(--muted); }

.contact-section { padding: 5rem 0 6rem; }
.contact-grid { display: grid; grid-template-columns: 1fr 1.05fr; gap: 4.5rem; align-items: start; }
.contact-info h2 { font-family: var(--serif); font-weight: 400; font-size: 2rem; color: var(--heading); margin-bottom: 1rem; }
.contact-info > p { margin-bottom: 2rem; }
.contact-methods { display: grid; gap: .9rem; }
.contact-method-card { display: flex; gap: 1.1rem; align-items: center; padding: 1.1rem 1.3rem; background: var(--off); border: 1px solid var(--border); border-radius: var(--radius); }
.contact-method-icon { flex: none; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; background: var(--accent-lt); }
.contact-method-icon svg { width: 20px; height: 20px; fill: none; stroke: var(--accent); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.contact-method-label { font-size: .7rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); }
.contact-method-val { color: var(--heading); font-weight: 500; line-height: 1.5; }
.contact-method-val a { color: var(--heading); text-decoration: none; }
.contact-method-val a:hover { color: var(--accent); text-decoration: underline; }
.contact-method-val small { font-size: .82rem; font-weight: 400; color: var(--muted); }
.contact-details { margin-top: 2rem; border-top: 1px solid var(--border); }
.det-row { display: grid; grid-template-columns: 150px 1fr; gap: 1.2rem; padding: .9rem 0; border-bottom: 1px solid var(--border); font-size: .94rem; }
.det-label { font-size: .7rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--accent); padding-top: .25rem; }

.form-wrap { background: #fff; border: 1px solid var(--border); border-top: 3px solid var(--accent); border-radius: var(--radius); padding: 2.4rem 2.4rem 2.2rem; box-shadow: var(--shadow); }
.form-row { margin-bottom: 1.3rem; }
.form-label { display: block; font-size: .86rem; font-weight: 600; color: var(--heading); margin-bottom: .45rem; }
.form-input, .form-select, .form-textarea {
  width: 100%; padding: .85rem 1rem; font: inherit; font-size: 1rem; color: var(--heading);
  background: var(--off); border: 1px solid var(--border); border-radius: var(--radius);
  transition: border-color .2s, background .2s, box-shadow .2s;
}
.form-textarea { min-height: 150px; resize: vertical; }
.form-input:focus, .form-select:focus, .form-textarea:focus { outline: 0; background: #fff; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(26, 107, 74, .15); }
.form-input.is-invalid, .form-select.is-invalid, .form-textarea.is-invalid { border-color: #b3382c; }
.form-check { display: flex; gap: .8rem; align-items: flex-start; font-size: .9rem; }
.form-check input { flex: none; margin-top: .35rem; width: 18px; height: 18px; accent-color: var(--accent); }
.form-hint { font-size: .8rem; color: var(--muted); margin-top: .35rem; }
.form-submit { width: 100%; margin-top: .6rem; padding: 1.05rem; border: 0; border-radius: 999px; background: var(--accent); color: #fff; font: 600 1rem var(--sans); cursor: pointer; transition: background .2s; }
.form-submit:hover { background: var(--accent-dk); }
.form-note { margin-top: 1.2rem; font-size: .8rem; line-height: 1.6; color: var(--muted); }
.form-msg { margin-bottom: 1.6rem; padding: 1.1rem 1.3rem; border-radius: var(--radius); font-size: .95rem; }
.form-msg ul { margin: .5rem 0 0 1.1rem; }
.form-msg--error { background: #fbeceb; border: 1px solid #e5b9b4; color: #7d231a; }
.form-msg--success { background: var(--accent-lt); border: 1px solid #b4d6c3; color: var(--accent-dk); }
.hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.notice-band { background: var(--stone); border-top: 1px solid var(--border); padding: 3.2rem 0; }
.notice-band p { max-width: 36rem; margin: 0 auto; text-align: center; font-size: .92rem; line-height: 1.75; color: var(--muted); }
.notice-band strong { color: var(--body); }

.site-footer { background: var(--ink); color: #b6c6bc; padding: 5rem 0 0; font-size: .94rem; }
.footer-grid { display: grid; grid-template-columns: 1.6fr 1fr 1.2fr 1fr; gap: 3rem; padding-bottom: 3.5rem; }
.site-footer .logo-tag { color: #fff; }
.site-footer .logo-tld { color: #7fc3a1; }
.site-footer .logo-dot { background: #7fc3a1; }
.footer-brand p { margin-top: 1.2rem; max-width: 20rem; }
.footer-addr { margin-top: 1.2rem; font-style: normal; line-height: 1.7; }
.footer-addr a { color: #fff; text-decoration: none; }
.footer-addr a:hover { text-decoration: underline; }
.footer-col h4 { font-size: .72rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--sand); margin-bottom: 1.2rem; }
.footer-col ul { list-style: none; padding: 0; display: grid; gap: .65rem; }
.footer-col a { color: #dbe6df; text-decoration: none; }
.footer-col a:hover { color: #fff; text-decoration: underline; }
.footer-bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .8rem 2rem; padding: 1.6rem 0; border-top: 1px solid #2b4538; font-size: .84rem; color: #8fa699; }
.link-btn { background: none; border: 0; padding: 0; font: inherit; color: #dbe6df; text-decoration: underline; cursor: pointer; }
.link-btn:hover { color: #fff; }
.link-btn--dark { color: var(--accent); }

.ck {
  position: fixed; left: 1.2rem; right: 1.2rem; bottom: 1.2rem; z-index: 500;
  max-width: 760px; margin: 0 auto; background: #fff; border: 1px solid var(--border);
  border-top: 3px solid var(--accent); border-radius: var(--radius); box-shadow: 0 18px 50px -10px rgba(18, 36, 28, .35);
}
.ck[hidden] { display: none; }
.ck-inner { display: flex; align-items: center; gap: 1.6rem; padding: 1.3rem 1.6rem; }
.ck-text { flex: 1; font-size: .9rem; line-height: 1.55; }
.ck-btns { display: flex; gap: .6rem; flex: none; }
.ck-reject, .ck-accept { padding: .7rem 1.3rem; border-radius: 999px; font: 600 .88rem var(--sans); cursor: pointer; border: 1.5px solid var(--heading); }
.ck-reject { background: #fff; color: var(--heading); }
.ck-reject:hover { background: var(--stone); }
.ck-accept { background: var(--accent); border-color: var(--accent); color: #fff; }
.ck-accept:hover { background: var(--accent-dk); border-color: var(--accent-dk); }

@media (max-width: 1080px) {
  .know-grid--home { grid-template-columns: repeat(2, 1fr); }
  .footer-grid { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 960px) {
  .hero { padding: 3.5rem 0; }
  .hero-inner, .about-grid, .geo-grid, .contact-grid, .cta-band-inner, .editorial-inner, .history-layout, .legal-layout { grid-template-columns: 1fr; gap: 2.5rem; }
  .hero-visual { max-width: 440px; }
  .about-img { max-width: 380px; margin-left: 1rem; }
  .services-grid, .reviews-grid { grid-template-columns: 1fr; }
  .process-steps { grid-template-columns: repeat(2, 1fr); row-gap: 2.4rem; }
  .process-steps::before { display: none; }
  .technik-grid, .know-grid, .city-grid { grid-template-columns: 1fr; }
  .city-card--lead { grid-template-columns: 1fr; gap: 1rem; }
  .editorial-side, .history-year-block, .legal-nav { position: static; }
  .history-year-block { border-right: 0; padding-right: 0; }
  .legal-nav { border-left: 0; padding-left: 0; border-bottom: 1px solid var(--border); padding-bottom: 1.4rem; }
  .legal-nav ul { grid-template-columns: repeat(2, 1fr); }
  .stat-row { grid-template-columns: repeat(2, 1fr); }
  .section, .technik-block, .editorial-block { padding: 4.5rem 0; }
  .cta-band { padding: 4rem 0; }

  .burger { display: flex; }
  .main-nav {
    display: none; position: absolute; left: -2rem; right: -2rem; top: 76px;
    flex-direction: column; align-items: stretch; gap: 0; padding: .6rem 2rem 1.6rem;
    background: #fff; border-bottom: 1px solid var(--border); box-shadow: 0 20px 30px -20px rgba(18, 36, 28, .3);
  }
  .main-nav li { border-bottom: 1px solid var(--border); }
  .main-nav li:last-child { border: 0; padding-top: 1.2rem; }
  .main-nav a { display: block; padding: 1rem 0; font-size: 1.05rem; }
  .main-nav a::after { display: none; }
  .main-nav .nav-btn { text-align: center; padding: .95rem 1.25rem; }
  .nav-toggle:checked ~ nav .main-nav { display: flex; }
  .nav-toggle:checked + .burger span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
  .nav-toggle:checked + .burger span:nth-child(2) { opacity: 0; }
  .nav-toggle:checked + .burger span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
}

@media (max-width: 680px) {
  .wrap, .wrap-narrow, .page-hero-inner { padding: 0 1.25rem; }
  .topbar { display: none; }
  .header-row { height: 68px; }
  .main-nav { top: 68px; left: -1.25rem; right: -1.25rem; padding: .6rem 1.25rem 1.6rem; }
  .hero-badge { left: .6rem; bottom: 2rem; }
  .process-steps, .know-grid--home, .footer-grid, .impressum-grid { grid-template-columns: 1fr; }
  .offer, .step-row { grid-template-columns: 1fr; gap: 1rem; padding: 2rem 0; }
  .offer-row, .det-row, .city-facts div { grid-template-columns: 1fr; gap: .2rem; }
  .history-stats { grid-template-columns: 1fr; }
  .form-wrap { padding: 1.7rem 1.3rem; }
  .legal-nav ul { grid-template-columns: 1fr; }
  .editorial-pull p { font-size: 1.25rem; }
  .ck-inner { flex-direction: column; align-items: stretch; gap: 1rem; }
  .ck-btns > * { flex: 1; }
  .section-foot { text-align: left; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; animation: none !important; }
}

.technik-block strong { color: #fff; }
.geo-more { margin-top: 1.5rem; }
.legal-layout > *, .contact-grid > *, .geo-grid > *, .about-grid > *, .editorial-inner > *, .history-layout > *, .city-card--lead > * { min-width: 0; }
.t-h2, .page-hero h1, .cta-band h2, .editorial-side h2, .section-head h2 { text-wrap: balance; }
