/*
Theme Name: EXAKT Wohnbau
Theme URI: https://www.exakt-wohnbau.de
Author: Veloro Studios
Description: Individuelles Theme für die EXAKT Wohnbau GmbH – Planungs- und Architekturbüro. Startseite mit Logo-Kopfbereich, gestapelten Leistungsbereichen mit Bildreihen (3:2) und Kontaktblock. Inhalte werden über das Plugin „EXAKT Panel“ gepflegt.
Version: 2.3.0
Requires at least: 6.4
Requires PHP: 7.4
License: Proprietär – nur zur Nutzung für EXAKT Wohnbau GmbH
Text Domain: exakt
*/

/* ── Schrift (lokal eingebunden, keine Verbindung zu Google) ── */
@font-face{font-family:'Source Sans 3';font-style:normal;font-weight:400;font-display:swap;src:url(assets/fonts/source-sans-3-latin-400-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Source Sans 3';font-style:normal;font-weight:600;font-display:swap;src:url(assets/fonts/source-sans-3-latin-600-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Source Sans 3';font-style:normal;font-weight:900;font-display:swap;src:url(assets/fonts/source-sans-3-latin-900-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Source Sans 3';font-style:normal;font-weight:400;font-display:swap;src:url(assets/fonts/source-sans-3-latin-ext-400-normal.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Source Sans 3';font-style:normal;font-weight:600;font-display:swap;src:url(assets/fonts/source-sans-3-latin-ext-600-normal.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Source Sans 3';font-style:normal;font-weight:900;font-display:swap;src:url(assets/fonts/source-sans-3-latin-ext-900-normal.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}

:root{
  /* Eine Grünstufe: das Dunkelgrün aus dem Logo */
  --green:#04733A;
  --ink:#1C2420; --text:#2D3530; --muted:#4F5853; --soft:#6E7772;
  --line:#E1E4E0; --line-strong:#CDD2CC;
  --ground:#F1F2EF; --white:#FFFFFF; --ph:#E6E9E5;
  --radius:18px; --radius-s:12px; --visible:3;
  --edge:max(24px,calc((100vw - 1232px) / 2));
  --admin:0px;
}
.admin-bar{--admin:32px}
@media (max-width:782px){.admin-bar{--admin:46px}}

*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:calc(100px + var(--admin))}
body{margin:0;background:var(--ground);color:var(--ink);font-family:'Source Sans 3','Helvetica Neue',Arial,sans-serif;font-size:17px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{color:var(--green)}
img{display:block;max-width:100%;height:auto}
.wrap{max-width:1280px;margin:0 auto;padding:0 24px}
:focus-visible{outline:2px solid var(--green);outline-offset:3px}
.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute!important;width:1px;word-wrap:normal!important}
.skip-link:focus{clip:auto;clip-path:none;height:auto;width:auto;left:12px;top:12px;z-index:100;background:#fff;color:var(--ink);padding:10px 16px;border-radius:8px;font-weight:600}

/* ── Leiste beim Scrollen: Glas hell, Streifen über die volle Breite ── */
.bar{position:fixed;top:var(--admin);left:0;right:0;z-index:40;height:76px;background:rgba(255,255,255,.66);
  -webkit-backdrop-filter:blur(18px) saturate(160%);backdrop-filter:blur(18px) saturate(160%);border-bottom:1px solid rgba(28,36,32,.08);
  transform:translateY(calc(-100% - var(--admin)));visibility:hidden;transition:transform .35s cubic-bezier(.2,.7,.2,1),visibility 0s .35s}
.scrolled .bar{transform:none;visibility:visible;box-shadow:0 10px 30px rgba(28,36,32,.06);transition:transform .35s cubic-bezier(.2,.7,.2,1)}
.bar-row{display:flex;height:38px;margin-top:19px}
.stripes{position:relative}
.stripes::before,.stripes::after{content:"";position:absolute;left:0;right:0;background:var(--green)}
.stripes::before{top:26%;height:8%}
.stripes::after{bottom:2%;height:10%}
.bar .s-left{flex:0 0 auto;width:calc(var(--edge) - 8px);margin-right:8px}
.bar-logo{width:161px;height:38px;color:var(--green);display:block}
.bar .s-right{flex:1;margin-left:8px}
.bar-text{position:absolute;right:var(--edge);top:34%;bottom:12%;display:flex;align-items:center;gap:14px;padding-left:16px;font-size:11px;font-weight:600;letter-spacing:.18em;color:var(--muted);white-space:nowrap;text-transform:uppercase}
.bar-text i{font-style:normal;opacity:.5}
.bar a.home{display:block;line-height:0}

/* ── Kopfbereich ── */
.hero{--lh:clamp(46px,11.5vw,165px);position:relative;background:var(--white);min-height:calc(100vh - var(--admin));min-height:calc(100svh - var(--admin));display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:72px 24px 96px}
.lockup{width:calc(var(--lh) * 5.749);color:var(--green);margin-bottom:calc(var(--lh) * .6)}
.lk-row{display:flex;align-items:stretch;height:var(--lh);gap:calc(var(--lh) * .06)}
.lk-row .stripes{flex:0 0 calc(var(--lh) * .7)}
.lk-row .stripes::before{top:25.5%;height:17.5%}
.lk-row .stripes::after{top:80%;bottom:auto;height:18%}
.lk-logo{height:100%;width:calc(var(--lh) * 4.229);flex:0 0 auto}
.lk-text{margin-top:calc(var(--lh) * .14);font-size:calc(var(--lh) * .27);font-weight:400;line-height:1;white-space:nowrap;overflow:hidden}
.lk-text span{display:inline-block;letter-spacing:.25em}
.hero-h{margin:0;font-size:clamp(42px,6.6vw,92px);font-weight:900;line-height:1;letter-spacing:-.045em;color:var(--ink)}
.hero-h .h-b{color:var(--green)}
[hidden]{display:none!important}
.hero-sub{margin:28px 0 0;font-size:clamp(18px,1.7vw,22px);line-height:1.55;color:var(--muted);max-width:620px}
.hero-sub strong{font-weight:600;color:var(--ink)}

/* ── Kästchen ── */
.site-main{padding-top:56px;padding-bottom:64px}
/* Stapel-Effekt: Kästchen bleiben oben stehen, das nächste schiebt sich darüber.
   Höhe/Position berechnet assets/js/main.js (auch für Kästchen, die höher als der Bildschirm sind). */
:root{--stack-top:calc(96px + var(--admin));--stack-gap:40px}
.card{position:sticky;top:var(--stack-top);margin-bottom:var(--stack-gap);background:var(--white);border-radius:var(--radius);overflow:hidden;
  box-shadow:0 0 0 1px rgba(28,36,32,.04),0 -18px 44px rgba(28,36,32,.07);transform-origin:50% 0;backface-visibility:hidden}
.card::after{content:"";position:absolute;inset:0;background:var(--ink);opacity:var(--shade,0);pointer-events:none;border-radius:inherit}
.stack-on .card{will-change:transform,opacity}
/* Sanftes Einblenden, wenn der Stapel-Effekt aus ist */
.reveal-on .card,.reveal-on .contact-wrap{opacity:0;transform:translate3d(0,48px,0);transition:opacity .9s cubic-bezier(.16,1,.3,1),transform .9s cubic-bezier(.16,1,.3,1)}
.reveal-on .card.is-in,.reveal-on .contact-wrap.is-in{opacity:1;transform:none}
.card-in{padding:52px 56px 48px;display:flex;flex-direction:column;gap:40px}
.card-top{display:flex;align-items:center;gap:16px}
.card-label{display:inline-flex;align-items:center;gap:12px;font-size:13px;font-weight:600;letter-spacing:.18em;color:var(--green);text-transform:uppercase}
.card-label::before{content:"";width:24px;height:2px;background:var(--green)}
.card-rule{flex:1;height:1px;background:var(--line)}
.card h2{margin:0;font-size:clamp(32px,3.2vw,44px);font-weight:600;line-height:1.08;letter-spacing:-.022em;text-wrap:balance}
.claim{margin:0;font-size:18px;line-height:1.6;color:var(--muted);max-width:460px}
.list{margin:0;padding:0;list-style:none;border-top:1px solid var(--line);align-self:start}
.list li{padding:13px 0;border-bottom:1px solid var(--line);font-size:16px;line-height:1.45;color:var(--text);display:flex;gap:16px;align-items:baseline}
.list li::before{content:"";width:10px;height:2px;flex:0 0 10px;background:var(--green);transform:translateY(-4px)}
.head-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:56px}
.head-grid .text{display:flex;flex-direction:column;gap:20px}

.about{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:56px;align-items:center}
.about .text{display:flex;flex-direction:column;gap:28px}
.about .role{margin:-14px 0 0;font-size:18px;color:var(--muted)}
.about .list li{font-size:17px}
.ph{background:var(--ph);display:flex;align-items:center;justify-content:center;text-align:center;color:var(--soft);font-size:14px;padding:16px}
.portrait{margin:0;aspect-ratio:4/5;border-radius:var(--radius-s);overflow:hidden;width:100%;max-width:420px;justify-self:end}
.portrait img{width:100%;height:100%;object-fit:cover}

/* ── Bildreihen: festes Format 3:2 auf allen Geräten ── */
.gallery{display:flex;flex-direction:column;gap:20px}
.viewport{overflow:hidden;border-radius:var(--radius-s)}
.strip{display:flex;gap:16px;transition:transform .55s cubic-bezier(.2,.7,.2,1)}
.slide{flex:0 0 calc((100% - (var(--visible) - 1) * 16px) / var(--visible));aspect-ratio:3/2;border-radius:var(--radius-s);margin:0;overflow:hidden;background:var(--ph)}
.slide:nth-child(3n+2){background:#DFE2DE}
.slide:nth-child(3n){background:#D8DCD7}
.slide img{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.slide:hover img{transform:scale(1.03)}
.g-bar{display:flex;align-items:center;gap:24px}
.g-count{font-size:14px;color:var(--soft);white-space:nowrap;min-width:64px;font-variant-numeric:tabular-nums}
.g-count b{color:var(--ink);font-weight:600}
.g-track{flex:1;height:2px;background:var(--line);position:relative;overflow:hidden}
.g-fill{position:absolute;top:0;bottom:0;left:0;background:var(--green);transition:left .55s cubic-bezier(.2,.7,.2,1),width .3s}
.g-arrows{display:flex;gap:8px}
.arrow{width:48px;height:48px;border:1px solid var(--line-strong);border-radius:50%;background:var(--white);color:var(--ink);font:18px/1 inherit;cursor:pointer;
  display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s,border-color .15s}
.arrow:hover:not(:disabled){background:var(--green);color:#fff;border-color:var(--green)}
.arrow:disabled{opacity:.3;cursor:default}
.gallery.is-static .g-bar{display:none}
.gallery-hint{margin:0;font-size:13px;color:var(--soft)}

/* ── Kästchen „Text und Bild“ ── */
.textbild{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,6fr);gap:56px;align-items:center}
.textbild.no-img{grid-template-columns:minmax(0,1fr)}
.textbild.img-left .tb-img{order:-1}
.textbild .text{display:flex;flex-direction:column;gap:20px}
.prose{font-size:18px;line-height:1.65;color:var(--muted);max-width:560px}
.prose p{margin:0 0 14px}.prose p:last-child{margin:0}
.prose strong{color:var(--ink);font-weight:600}
.tb-img{margin:0;aspect-ratio:3/2;border-radius:var(--radius-s);overflow:hidden;background:var(--ph)}
.tb-img img{width:100%;height:100%;object-fit:cover}
.tb-link{margin:6px 0 0}
.btn-dark{display:inline-block;padding:15px 26px;background:var(--ink);color:#fff;text-decoration:none;font-size:16px;font-weight:600;border-radius:999px;transition:background .15s}
.btn-dark:hover{background:var(--green);color:#fff}

/* ── Design-Schalter ── */
.no-stack .card{position:relative;top:auto!important}
.ground-white .card,.ground-white .page-card{box-shadow:0 0 0 1px var(--line),0 18px 40px rgba(28,36,32,.05)}

/* ── Kontakt ── */
.contact-wrap{padding-bottom:56px}
.contact{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:56px;background:var(--ink);color:#fff;border-radius:var(--radius);padding:64px 56px;position:relative;overflow:hidden}
.contact::before{content:"";position:absolute;left:0;right:0;top:0;height:4px;background:var(--green)}
.contact .text{display:flex;flex-direction:column;gap:16px}
.contact .eyebrow{display:inline-flex;align-items:center;gap:12px;font-size:13px;font-weight:600;letter-spacing:.18em;color:rgba(255,255,255,.72);text-transform:uppercase}
.contact .eyebrow::before{content:"";width:24px;height:2px;background:#fff}
.contact h2{margin:0;font-size:clamp(32px,3.2vw,44px);font-weight:600;line-height:1.08;letter-spacing:-.022em}
.contact p{margin:0;font-size:20px;color:rgba(255,255,255,.7)}
.btn-light{display:inline-block;margin-top:14px;padding:15px 26px;background:#fff;color:var(--ink);text-decoration:none;font-size:16px;font-weight:600;border-radius:999px;align-self:flex-start;transition:background .15s,color .15s}
.btn-light:hover{background:var(--green);color:#fff}
.company{font-size:20px;font-weight:600;padding-bottom:20px;border-bottom:1px solid rgba(255,255,255,.14)}
.cgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 32px;margin-top:28px}
.cgrid .v{color:#fff}
.cgrid div{display:flex;flex-direction:column;align-items:flex-start;gap:4px;font-size:18px;line-height:1.45}
.cgrid > div > span:first-child{font-size:12px;font-weight:600;letter-spacing:.16em;color:rgba(255,255,255,.55);text-transform:uppercase}
.cgrid a{color:#fff;text-decoration:none;border-bottom:1px solid transparent;transition:border-color .2s}
.cgrid a:hover{border-bottom-color:#fff}

/* ── Fußzeile ── */
.site-foot{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px 32px;font-size:14px;padding-top:8px;padding-bottom:48px}
.foot-brand{display:flex;align-items:center;gap:16px;color:var(--soft)}
.foot-brand a{line-height:0}
.foot-logo{width:93px;height:22px;color:var(--green);display:block}
.site-foot nav ul{display:flex;gap:28px;margin:0;padding:0;list-style:none}
.site-foot nav a{color:var(--muted);text-decoration:none;padding:8px 0;display:inline-block}
.site-foot nav a:hover{color:var(--green)}

/* ── Unterseiten (Impressum, Datenschutz …) ── */
.page-main{padding-top:calc(140px + var(--admin));padding-bottom:64px}
.page-card{background:var(--white);border-radius:var(--radius);padding:56px;box-shadow:0 0 0 1px rgba(28,36,32,.04)}
.page-card .card-top{margin-bottom:28px}
.page-card h1{margin:0 0 32px;font-size:clamp(34px,4vw,52px);font-weight:600;line-height:1.08;letter-spacing:-.025em}
.entry{max-width:760px;font-size:17px;line-height:1.7;color:var(--text)}
.entry h2{font-size:26px;font-weight:600;line-height:1.2;margin:40px 0 12px;color:var(--ink)}
.entry h3{font-size:20px;font-weight:600;margin:28px 0 8px;color:var(--ink)}
.entry p,.entry ul,.entry ol{margin:0 0 16px}
.entry a{color:var(--green)}
.entry img{border-radius:12px}

@media (max-width:900px){
  html{scroll-padding-top:calc(72px + var(--admin))}
  .bar{height:60px}
  .bar-row{height:30px;margin-top:15px}
  .bar-logo{width:127px;height:30px}
  .bar-text{display:none}
  .hero{padding:48px 24px 72px}
  .hero-h .h-b{display:block}
  :root{--stack-top:calc(72px + var(--admin));--stack-gap:24px}
  .card-in{padding:32px 24px 28px;gap:28px}
  .head-grid,.about,.contact,.textbild{grid-template-columns:1fr;gap:28px}
  .textbild.img-left .tb-img{order:0}
  .portrait{justify-self:stretch;max-width:none}
  .viewport{overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .viewport::-webkit-scrollbar{display:none}
  .strip{transform:none!important}
  .slide{flex:0 0 84%;scroll-snap-align:start}
  .tb-img{max-width:none}
  .g-arrows{display:none}
  .gallery.is-static .g-bar{display:flex}
  .contact{padding:44px 24px}
  .cgrid{grid-template-columns:1fr}
  .page-main{padding-top:calc(100px + var(--admin))}
  .page-card{padding:32px 24px}
}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.strip,.g-fill,.slide img,.bar{transition:none}.card{position:relative;top:auto!important}.reveal-on .card,.reveal-on .contact-wrap{opacity:1;transform:none;transition:none}}
