@font-face { font-family:'DM Sans'; font-style:normal; font-weight:400; font-display:swap; src:url('../fonts/dm-sans-latin-400-normal.woff2') format('woff2'); }
@font-face { font-family:'DM Sans'; font-style:normal; font-weight:500; font-display:swap; src:url('../fonts/dm-sans-latin-500-normal.woff2') format('woff2'); }
@font-face { font-family:'DM Sans'; font-style:normal; font-weight:600; font-display:swap; src:url('../fonts/dm-sans-latin-600-normal.woff2') format('woff2'); }
@font-face { font-family:'DM Sans'; font-style:normal; font-weight:700; font-display:swap; src:url('../fonts/dm-sans-latin-700-normal.woff2') format('woff2'); }
@font-face { font-family:'Manrope'; font-style:normal; font-weight:500; font-display:swap; src:url('../fonts/manrope-latin-500-normal.woff2') format('woff2'); }
@font-face { font-family:'Manrope'; font-style:normal; font-weight:600; font-display:swap; src:url('../fonts/manrope-latin-600-normal.woff2') format('woff2'); }
@font-face { font-family:'Manrope'; font-style:normal; font-weight:700; font-display:swap; src:url('../fonts/manrope-latin-700-normal.woff2') format('woff2'); }
:root { --navy:#071d3f; --blue:#0868df; --bright:#58a7ff; --ink:#101b2b; --pale:#edf5ff; --line:#dce7f2; --max:1280px; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; color:var(--ink); font-family:'DM Sans',sans-serif; background:#fff; }
a { color:inherit; text-decoration:none; }
.site-header { height:92px; display:flex; align-items:center; justify-content:space-between; padding:0 max(28px,calc((100vw - var(--max))/2)); position:fixed; top:0; z-index:10; width:100%; color:var(--navy); background:rgba(255,255,255,.92); backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px); border-bottom:1px solid var(--line); transition:height .3s ease,box-shadow .3s ease; }
.site-header.scrolled { height:72px; box-shadow:0 8px 30px rgba(7,29,63,.08); }
[id] { scroll-margin-top:90px; }
.brand { display:flex; align-items:center; font:700 22px 'Manrope',sans-serif; color:var(--navy); }
.brand img { height:56px; width:auto; transition:height .3s ease; }
.scrolled .brand img { height:44px; }
.site-header nav { display:flex; align-items:center; gap:32px; font-size:15px; }
.site-header nav li { list-style:none; }
.site-header nav a { transition:color .2s ease,background .2s ease,border-color .2s ease; }
.site-header nav li:not(.nav-cta) a:hover { color:var(--blue); }
.nav-cta a { display:inline-block; border:1px solid #b8c9dc; padding:12px 20px; border-radius:99px; }
.nav-cta a:hover { background:var(--navy); color:#fff; border-color:var(--navy); }
.menu { display:none; background:none; border:0; }
.hero { min-height:780px; background:#fff; color:var(--navy); padding:180px max(28px,calc((100vw - var(--max))/2)) 100px; display:grid; grid-template-columns:1.25fr .75fr; gap:7vw; align-items:center; position:relative; overflow:hidden; }
.hero:after { content:''; position:absolute; width:650px; height:650px; border:1px solid rgba(8,104,223,.14); border-radius:50%; right:-290px; top:130px; box-shadow:0 0 0 90px rgba(8,104,223,.025),0 0 0 180px rgba(8,104,223,.015); }
.hero-grid { position:absolute; inset:0; background-image:linear-gradient(rgba(8,104,223,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(8,104,223,.035) 1px,transparent 1px); background-size:55px 55px; mask-image:linear-gradient(90deg,black,transparent 75%); }
.hero-copy,.hero-photo { position:relative; z-index:2; }
.eyebrow { text-transform:uppercase; font-size:12px; font-weight:700; letter-spacing:2.5px; color:var(--bright); margin:0 0 25px; }
.eyebrow.dark { color:var(--blue); }
.hero .eyebrow { color:var(--blue); }
h1,h2,h3 { font-family:'Manrope',sans-serif; }
h1 { font-size:clamp(48px,5.4vw,78px); line-height:1.04; letter-spacing:-4px; margin:0; max-width:900px; }
h1 span { color:var(--blue); }
.lead { font-size:19px; line-height:1.65; color:#596b82; max-width:670px; margin:30px 0 38px; }
.hero-actions { display:flex; gap:28px; align-items:center; }
.button { display:inline-flex; align-items:center; justify-content:center; border-radius:99px; padding:16px 25px; font-weight:700; font-size:15px; border:0; cursor:pointer; transition:transform .2s ease,box-shadow .2s ease,background .2s ease; }
.button:hover { transform:translateY(-2px); }
.primary { background:var(--blue); color:#fff; box-shadow:0 10px 30px rgba(0,90,200,.25); }
.primary:hover { background:#1378ef; }
.text-link { font-weight:600; }
.text-link { color:var(--blue); }
.text-link span { display:inline-block; font-size:20px; margin-left:8px; color:var(--blue); transition:transform .2s ease; }
.text-link:hover span { transform:translate(3px,3px); }
.hero-photo { height:480px; border-radius:4px; overflow:hidden; box-shadow:0 30px 80px rgba(0,0,0,.3); }
.hero-photo>img { width:100%; height:100%; object-fit:cover; }
.photo-caption { position:absolute; left:0; right:0; bottom:0; padding:80px 28px 24px; background:linear-gradient(transparent,rgba(3,18,42,.94)); display:flex; flex-direction:column; }
.photo-caption span { font-size:12px; text-transform:uppercase; letter-spacing:1.5px; color:var(--bright); }
.photo-caption strong { font:600 22px 'Manrope'; margin-top:5px; color:#fff; }
.intro { max-width:var(--max); margin:auto; padding:110px 28px 60px; display:grid; grid-template-columns:1fr 1fr; gap:14vw; align-items:end; }
.intro h2,.contact h2 { font-size:clamp(38px,4vw,58px); line-height:1.08; letter-spacing:-2.6px; margin:0; }
.intro>p { font-size:18px; line-height:1.7; color:#607087; margin:0; }
.services { max-width:var(--max); margin:auto; padding:0 28px 115px; display:grid; grid-template-columns:repeat(2,1fr); border-top:1px solid var(--line); }
.service { padding:0; border-bottom:1px solid var(--line); position:relative; min-height:0; overflow:hidden; }
.service:nth-child(odd) { border-right:1px solid var(--line); }
.service { transition:background .3s ease; }
.service:hover { background:var(--pale); }
.service summary { list-style:none; cursor:pointer; padding:0 42px 38px; min-height:475px; }
.service summary::-webkit-details-marker { display:none; }
.service summary:focus-visible { outline:3px solid var(--bright); outline-offset:-3px; }
.service-image { display:block; width:calc(100% + 84px); height:220px; margin:0 -42px 28px; object-fit:cover; filter:saturate(.85); transition:transform .6s ease,filter .6s ease; }
.service:hover .service-image { transform:scale(1.03); filter:saturate(1); }
.service-num { position:absolute; right:22px; top:18px; z-index:2; font-size:12px; color:#fff; background:rgba(7,29,63,.86); padding:7px 9px; border-radius:99px; }
.service h3 { font-size:25px; letter-spacing:-1px; margin:24px 0 15px; }
.service p { color:#607087; line-height:1.65; max-width:480px; }
.service-more { display:block; margin-top:25px; padding-top:17px; border-top:1px solid #cbd9e8; color:var(--navy); font-size:14px; font-weight:700; }
.service-detail { padding:0 42px 38px; border-top:1px solid #cbd9e8; background:#fff; }
.service[open] .service-detail { animation:ft-up .4s ease both; }
.service-detail>p { max-width:none; margin:26px 0 16px; color:#42546a; }
.service-detail ul { margin:0; padding:0; list-style:none; display:grid; gap:10px; }
.service-detail li { position:relative; padding-left:20px; color:#52657b; font-size:14px; line-height:1.5; }
.service-detail li:before { content:''; position:absolute; left:1px; top:.65em; width:5px; height:5px; border-radius:50%; background:var(--blue); }
.team { background:#fff; border-top:1px solid var(--line); padding:110px max(28px,calc((100vw - var(--max))/2)) 120px; }
.team-head { display:grid; grid-template-columns:1fr 1fr; gap:10vw; align-items:end; margin-bottom:55px; }
.team-head h2 { font-size:clamp(38px,4vw,58px); line-height:1.08; letter-spacing:-2.6px; margin:0; }
.team-head>p { font-size:18px; line-height:1.7; color:#607087; margin:0; }
.team-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:18px; }
.person { background:#fff; border:1px solid var(--line); transition:box-shadow .3s ease,transform .3s ease; }
.person:hover { box-shadow:0 20px 50px rgba(25,56,92,.08); transform:translateY(-3px); }
.person-photo { height:330px; overflow:hidden; background:#dbe5ef; }
.person-photo img { width:100%; height:100%; object-fit:cover; object-position:center top; transition:transform .45s ease; }
.person-placeholder { display:flex; align-items:center; justify-content:center; flex-direction:column; color:var(--navy); background:linear-gradient(145deg,#dfeafa,#f5f8fc); }
.person-placeholder span { font:600 48px 'Manrope',sans-serif; letter-spacing:-2px; }
.person-placeholder small { margin-top:10px; color:#73869c; text-transform:uppercase; letter-spacing:1.5px; font-size:10px; }
.person:hover .person-photo img { transform:scale(1.025); }
.person-info { padding:25px; }
.person-info>span { font-size:11px; letter-spacing:1.2px; text-transform:uppercase; color:var(--blue); }
.person h3 { font-size:20px; margin:9px 0 13px; color:var(--navy); }
.person p { font-size:14px; line-height:1.55; color:#65758a; margin:0; min-height:66px; }
.person a { display:inline-block; color:var(--blue); font-size:14px; margin-top:14px; }
.person-lead { grid-column:span 2; display:grid; grid-template-columns:1fr 1fr; }
.person-lead .person-photo { height:auto; }
.person-lead .person-info { padding:36px; }
.person-lead h3 { font-size:27px; }
.testimonials { padding:110px max(28px,calc((100vw - var(--max))/2)); background:#fff; border-top:1px solid var(--line); }
.testimonials-head { display:grid; grid-template-columns:1fr 1fr; gap:10vw; align-items:end; margin-bottom:52px; }
.testimonials h2 { font-size:clamp(38px,4vw,58px); line-height:1.08; letter-spacing:-2.6px; margin:0; color:var(--navy); }
.testimonials-head>p { font-size:16px; line-height:1.7; color:#718095; margin:0; }
.testimonial-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
.testimonial-grid blockquote { margin:0; padding:34px; border:1px solid var(--line); background:#fafcff; display:flex; min-height:285px; flex-direction:column; justify-content:space-between; }
.testimonial-grid blockquote>p { font:500 20px/1.55 'Manrope',sans-serif; color:var(--navy); margin:0; }
.testimonial-grid blockquote footer { display:flex; flex-direction:column; max-width:none; padding:22px 0 0; margin:28px 0 0; gap:0; border-top:1px solid var(--line); background:transparent; }
.testimonial-grid blockquote footer strong { color:var(--navy); font-size:14px; }
.testimonial-grid blockquote footer span { color:#718095; font-size:13px; margin-top:3px; }
.partners { background:#f4f8fd; border-top:1px solid var(--line); border-bottom:1px solid var(--line); padding:100px max(28px,calc((100vw - var(--max))/2)); display:grid; grid-template-columns:.8fr 1.2fr; gap:7vw; align-items:center; }
.partners h2 { font-size:clamp(38px,4vw,58px); line-height:1.08; letter-spacing:-2.6px; margin:0; color:var(--navy); }
.partners-copy>p:not(.eyebrow) { font-size:18px; line-height:1.7; color:#607087; max-width:570px; margin:28px 0 0; }
.partner-card { min-height:230px; background:#fff; border:1px solid var(--line); padding:36px; display:flex; flex-direction:column; justify-content:space-between; transition:transform .25s ease,box-shadow .25s ease; }
.partner-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.partner-card:hover { transform:translateY(-4px); box-shadow:0 24px 55px rgba(25,56,92,.1); }
.partner-card img { width:min(360px,100%); height:85px; object-fit:contain; object-position:left center; }
.partner-card div { display:flex; flex-direction:column; border-top:1px solid var(--line); padding-top:20px; margin-top:25px; }
.partner-card strong { font:600 20px 'Manrope',sans-serif; color:var(--navy); }
.partner-card span { color:#607087; margin-top:5px; }
.partner-card small { color:var(--blue); margin-top:14px; font-size:13px; font-weight:700; }
.contact { background:#f7f9fc; color:var(--navy); padding:110px max(28px,calc((100vw - var(--max))/2)); display:grid; grid-template-columns:.9fr 1fr; gap:10vw; }
.contact>div>p:not(.eyebrow) { color:#607087; font-size:18px; line-height:1.65; max-width:480px; margin:28px 0; }
.contact-links { display:flex; align-items:center; gap:20px; flex-wrap:wrap; }
.contact-links>a:not(.button) { color:var(--blue); font-weight:700; }
.light { background:var(--blue); color:#fff; }
form { display:grid; grid-template-columns:1fr 1fr; gap:28px 22px; }
label { font-size:12px; text-transform:uppercase; letter-spacing:1.2px; color:#667c96; }
input,select,textarea { width:100%; display:block; background:transparent; border:0; border-bottom:1px solid #aab9ca; color:var(--navy); padding:13px 0; font:16px 'DM Sans'; outline:none; border-radius:0; }
input:focus,select:focus,textarea:focus { border-color:var(--bright); }
select,option { font-family:'DM Sans',sans-serif; font-size:16px; }
option { color:#111; }
.field-interest,.field-message,.check,.form-error { grid-column:1/-1; }
form button { justify-self:start; }
footer { max-width:var(--max); margin:auto; padding:65px 28px 35px; display:grid; grid-template-columns:2fr repeat(3,1fr); gap:40px; color:#5e6b7b; background:#fff; }
.footer-brand { align-self:start; }
.footer-brand img { width:270px; height:auto; align-self:start; }
footer li { list-style:none; }
footer div:not(.brand) { display:flex; flex-direction:column; font-size:14px; line-height:1.7; }
footer div strong { color:var(--navy); margin-bottom:10px; }
footer div a:hover { color:var(--blue); }
.colophon { grid-column:1/-1; border-top:1px solid var(--line); padding-top:22px; font-size:11px; color:#93a0af; margin-top:25px; }
@media(max-width:900px) {
  .site-header { height:76px; }
  .brand img { height:48px; }
  .site-header nav { display:none; position:absolute; left:20px; right:20px; top:100%; background:#fff; color:var(--navy); padding:28px; flex-direction:column; align-items:flex-start; border-radius:4px; box-shadow:0 20px 50px rgba(0,0,0,.2); }
  .site-header nav.open { display:flex; animation:ft-up .25s ease both; }
  .menu { display:block; width:40px; height:40px; }
  .menu span { display:block; height:2px; background:var(--navy); margin:8px; }
  .hero { grid-template-columns:1fr; padding-top:145px; }
  .hero-photo { max-width:620px; }
  .intro { grid-template-columns:1fr; gap:25px; }
  .services { grid-template-columns:1fr; }
  .service:nth-child(odd) { border-right:0; }
  .team-head { grid-template-columns:1fr; gap:24px; }
  .partners { grid-template-columns:1fr; gap:45px; }
  .testimonials-head { grid-template-columns:1fr; gap:24px; }
  .testimonial-grid { grid-template-columns:1fr; }
  .team-grid { grid-template-columns:repeat(2,1fr); }
  .person-lead { grid-column:1/-1; }
  .contact { grid-template-columns:1fr; gap:60px; }
  footer { grid-template-columns:1fr 1fr; }
  .footer-brand { grid-column:1/-1; }
}
@media(max-width:560px) {
  h1 { letter-spacing:-2.5px; }
  .site-header { padding-left:18px; padding-right:18px; }
  .brand img { height:40px; }
  .hero { min-height:auto; padding-bottom:70px; }
  .hero-actions { align-items:flex-start; flex-direction:column; }
  .hero-photo { height:350px; }
  .intro { padding-top:80px; }
  .services { padding:0 20px 80px; }
  .service summary { padding:0 24px 30px; min-height:0; }
  .service-image { width:calc(100% + 48px); margin:0 -24px 25px; height:210px; }
  .service-detail { padding:0 24px 30px; }
  .team { padding-top:80px; padding-bottom:80px; }
  .team-grid { grid-template-columns:1fr; }
  .person-lead { display:block; }
  .person-lead .person-photo { height:360px; }
  .person-photo { height:410px; }
  .contact { padding-top:80px; padding-bottom:80px; }
  .partner-grid { grid-template-columns:1fr; }
  form { grid-template-columns:1fr; }
  footer { grid-template-columns:1fr; }
}

/* --- Formular-Zustände --- */
.has-error input,.has-error select,.has-error textarea { border-color:#c93b3b; }
.error,.form-error { color:#c93b3b; font-size:13px; text-transform:none; letter-spacing:0; margin:6px 0 0; display:block; }
.form-error { margin:0; font-size:15px; }
.check { display:flex; gap:12px; align-items:flex-start; text-transform:none; letter-spacing:0; font-size:14px; color:#4d5f75; flex-wrap:wrap; }
.check input { width:18px; height:18px; margin:2px 0 0; accent-color:var(--blue); }
.check span { flex:1; line-height:1.5; }
.check a { color:inherit; font-weight:inherit; text-decoration:underline dotted; text-underline-offset:3px; transition:color .2s ease; }
.check a:hover { color:var(--navy); }
.privacy-text { grid-column:1/-1; max-height:280px; overflow:auto; padding:20px 24px; background:#fff; border:1px solid var(--line); font-size:13px; line-height:1.6; color:#52657b; animation:ft-up .3s ease both; }
.privacy-text h2 { font-size:15px; letter-spacing:0; line-height:1.3; margin:18px 0 6px; color:var(--navy); }
.privacy-text h2:first-child,.privacy-text p:first-child { margin-top:0; }
.privacy-text a { color:var(--blue); }
.check .error { flex-basis:100%; }
.hp { position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
.form-success { align-self:start; background:#fff; border:1px solid var(--line); border-left:4px solid var(--blue); padding:32px; }
.form-success strong { font:600 22px 'Manrope',sans-serif; color:var(--navy); }
.form-success p { color:#607087; line-height:1.65; margin:12px 0 0; }
/* --- Unterseiten (Impressum, Datenschutz) --- */
.page-content { max-width:820px; margin:auto; padding:160px 28px 100px; color:#42546a; line-height:1.7; }
.page-content h1 { font-size:clamp(38px,4vw,58px); line-height:1.08; letter-spacing:-2.6px; margin:0 0 40px; color:var(--navy); }
.page-content h2 { font-size:24px; letter-spacing:-.5px; margin:44px 0 12px; color:var(--navy); }
.page-content a { color:var(--blue); }
.page-content .credit { margin-top:56px; padding-top:20px; border-top:1px solid var(--line); font-size:13px; color:#93a0af; }
.page-content .credit a { color:inherit; }
/* --- Consent-Banner (nur mit GA4-ID) --- */
.consent { position:fixed; left:20px; right:20px; bottom:20px; z-index:20; max-width:560px; margin:auto; background:#fff; border:1px solid var(--line); box-shadow:0 24px 60px rgba(7,29,63,.18); padding:24px 28px; border-radius:4px; }
.consent p { margin:0 0 18px; font-size:14px; line-height:1.6; color:#42546a; }
.consent a { color:var(--blue); font-weight:700; }
.consent-actions { display:flex; gap:12px; flex-wrap:wrap; }
.consent .button { padding:12px 20px; font-size:14px; box-shadow:none; }
.button.ghost { background:transparent; border:1px solid #b8c9dc; color:var(--navy); }
@media(max-width:560px) { .page-content { padding-top:120px; } .consent { left:12px; right:12px; bottom:12px; } }

/* --- Bewegung: Hero beim Laden, Sektionen beim Scrollen (JS setzt .reveal/.in) --- */
@keyframes ft-up { from { opacity:0; transform:translateY(18px); } to { opacity:1; transform:none; } }
.hero-copy>* { animation:ft-up .7s ease both; }
.hero-copy>*:nth-child(2) { animation-delay:.1s; }
.hero-copy>*:nth-child(3) { animation-delay:.2s; }
.hero-copy>*:nth-child(4) { animation-delay:.3s; }
.hero-photo { animation:ft-up .9s ease .25s both; }
.reveal { opacity:0; transform:translateY(24px); transition:opacity .7s ease,transform .7s ease; }
.reveal.in { opacity:1; transform:none; }
.consent:not([hidden]) { animation:ft-up .4s ease both; }
@media (prefers-reduced-motion:reduce) {
  *,*::before,*::after { animation:none !important; transition:none !important; }
  .reveal { opacity:1; transform:none; }
}
