/* ===========================================================
   Schubert-Optik — Stylesheet
   Palette: tanne (deep pine), messing (brass), papier (paper)
   =========================================================== */

:root{
  --papier: #F3EFE6;
  --papier-alt: #EAE4D6;
  --tanne: #3B2646;
  --tanne-70: rgba(59,38,70,.7);
  --tanne-40: rgba(59,38,70,.4);
  --messing: #B9793A;
  --messing-dark: #8F5A28;
  --salbei: #7E9C8F;
  --lila: #6E4A80;
  --lila-dark: #513660;
  --linie: #D8CFBB;
  --weiss: #FFFCF6;

  --serif: Georgia, 'Times New Roman', serif;
  --sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Arial, sans-serif;
  --mono: ui-monospace, SFMono-Regular, Consolas, 'Liberation Mono', monospace;
  --logo: var(--sans);

  --maxw: 1180px;
}

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

html{ scroll-behavior:smooth; }

body{
  background:var(--papier);
  color:var(--tanne);
  font-family:var(--sans);
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}

@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  *{ animation-duration:.01ms !important; transition-duration:.01ms !important; }
}

img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
ul{ list-style:none; }

.wrap{ max-width:var(--maxw); margin:0 auto; padding:0 32px; }

h1,h2,h3{ font-family:var(--serif); font-weight:600; letter-spacing:-.01em; color:var(--tanne); }

.eyebrow{
  font-family:var(--mono);
  font-size:.72rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--messing-dark);
  display:flex;
  align-items:center;
  gap:10px;
}
.eyebrow::before{
  content:"";
  width:22px; height:1px;
  background:var(--messing-dark);
  display:inline-block;
}

/* ---------- Header ---------- */
header{
  position:sticky; top:0; z-index:50;
  background:rgba(243,239,230,.88);
  backdrop-filter:blur(8px);
  border-bottom:1px solid var(--linie);
}
.nav{
  display:flex; align-items:center; justify-content:space-between;
  padding:18px 32px;
  max-width:var(--maxw); margin:0 auto;
}
.brand{
  display:flex; align-items:center;
}
.brand img{ height:64px; width:auto; }
.navlinks{ display:flex; gap:34px; font-size:.92rem; }
.navlinks a{ position:relative; padding:4px 0; }
.navlinks a::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:1px;
  background:var(--messing); transform:scaleX(0); transform-origin:left;
  transition:transform .25s ease;
}
.navlinks a:hover::after{ transform:scaleX(1); }
.navlinks a:focus-visible, a:focus-visible{ outline:2px solid var(--messing); outline-offset:3px; }

.navcall{
  font-family:var(--mono); font-size:.82rem;
  border:1px solid var(--tanne); border-radius:999px;
  padding:8px 16px;
}
.navcall:hover{ background:var(--tanne); color:var(--papier); }

.burger{ display:none; background:none; border:0; cursor:pointer; }

/* ---------- Hero ---------- */
.hero{
  padding:96px 0 80px;
  position:relative;
  overflow:hidden;
}
.hero .wrap{ position:relative; z-index:2; }

.chart{
  font-family:var(--serif); font-weight:600;
  line-height:1.04;
}
.hero-title{font:inherit;line-height:inherit;}
.chart .row{display:block;
  filter: blur(9px);
  opacity:0;
  transform: translateY(14px);
  transition: filter 1.1s cubic-bezier(.2,.7,.2,1), opacity .9s ease, transform .9s ease;
}
.chart.in-view .row{ filter:blur(0); opacity:1; transform:translateY(0); }
.chart .hero-title .row:nth-child(1){ font-size:clamp(2.4rem,7vw,5.2rem); transition-delay:.05s; }
.chart .hero-title .row:nth-child(2){ font-size:clamp(2.4rem,7vw,5.2rem); color:var(--messing); transition-delay:.25s;}
.chart > .row:nth-child(2){ font-size:clamp(1.1rem,2.6vw,1.8rem); font-family:var(--sans); font-weight:500; color:var(--tanne-70); margin-top:18px; transition-delay:.55s; max-width:32ch; }

.hero-meta{
  margin-top:44px;
  display:flex; flex-wrap:wrap; gap:14px 34px;
  font-family:var(--mono); font-size:.82rem; color:var(--tanne-70);
}
.hero-meta strong{ color:var(--tanne); font-weight:500; }

.hero-cta{
  margin-top:40px; display:flex; gap:16px; flex-wrap:wrap;
}
.btn{
  font-family:var(--sans); font-weight:600; font-size:.92rem;
  padding:14px 26px; border-radius:2px;
  display:inline-block;
  transition:transform .2s ease, background .2s ease, color .2s ease;
}
.btn-fill{ background:var(--tanne); color:var(--papier); }
.btn-fill:hover{ background:var(--messing-dark); transform:translateY(-2px); }
.btn-line{ border:1px solid var(--lila); color:var(--lila-dark); }
.btn-line:hover{ background:var(--lila); color:var(--papier); transform:translateY(-2px); }

.opto-hero{
  position:absolute; right:-80px; top:-40px;
  width:560px; height:560px;
  z-index:1;
  opacity:.9;
}
.opto-hero svg{ width:100%; height:100%; }

/* ---------- Optotypen-Leiste (Landolt-Ringe als Trenner) ---------- */
.opto-strip{
  display:flex; align-items:center; justify-content:center;
  gap:clamp(14px,3vw,34px);
  padding:38px 0;
  border-top:1px solid var(--linie);
  border-bottom:1px solid var(--linie);
  background:var(--papier);
}
.opto-strip svg{ display:block; opacity:.85; }

/* ---------- WhatsApp-Button ---------- */
.whatsapp-fab{
  position:fixed; right:22px; bottom:22px; z-index:80;
  width:58px; height:58px; border-radius:50%;
  background:#25D366; color:#fff;
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 8px 22px rgba(23,48,43,.28);
  transition:transform .2s ease, box-shadow .2s ease;
}
.whatsapp-fab:hover{ transform:translateY(-3px) scale(1.04); box-shadow:0 12px 26px rgba(23,48,43,.34); }
.whatsapp-fab svg{ width:28px; height:28px; }
@media (max-width:760px){
  .whatsapp-fab{ right:16px; bottom:16px; width:52px; height:52px; }
}

/* ---------- Section shell ---------- */
section{ padding:88px 0; }
.section-head{ max-width:640px; margin-bottom:52px; }
.section-head h2{ font-size:clamp(1.8rem,3.4vw,2.6rem); margin-top:14px; }
.section-head p{ margin-top:14px; color:var(--tanne-70); font-size:1.02rem; }

.alt{ background:var(--papier-alt); border-top:1px solid var(--linie); border-bottom:1px solid var(--linie); }

/* ---------- Leistungen ---------- */
.services{
  display:flex; flex-wrap:wrap;
  gap:1px;
  background:var(--linie);
  border:1px solid var(--linie);
}
.service{
  flex:1 1 240px;
  background:var(--papier);
  padding:34px 28px;
  border-left:3px solid transparent;
  transition:background .25s ease, border-color .25s ease;
}
.service:hover{ background:var(--weiss); border-left-color:var(--lila); }
.service .num{ font-family:var(--mono); font-size:.75rem; color:var(--messing-dark); }
.service h3{ font-size:1.18rem; margin-top:14px; font-weight:600; }
.service p{ margin-top:10px; font-size:.92rem; color:var(--tanne-70); }

/* ---------- Über uns / timeline ---------- */
.timeline{ margin-top:12px; }
.tl-item{
  display:grid;
  grid-template-columns:110px 1fr;
  gap:28px;
  padding:28px 0;
  border-top:1px solid var(--linie);
}
.tl-item:last-child{ border-bottom:1px solid var(--linie); }
.tl-year{ font-family:var(--mono); font-size:.88rem; color:var(--lila-dark); padding-top:2px; }
.tl-item h3{ font-size:1.12rem; font-weight:600; }
.tl-item p{ margin-top:8px; color:var(--tanne-70); font-size:.96rem; max-width:56ch; }

.about-grid{
  display:grid; grid-template-columns:1fr 1fr; gap:64px; align-items:start;
}
@media (max-width:860px){ .about-grid{ grid-template-columns:1fr; } }

.team{ margin-top:60px; padding-top:44px; border-top:1px solid var(--linie); }
.team-grid{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:18px;
}
.team-card{
  padding:20px 22px; border:1px solid var(--linie); background:var(--papier-alt);
  border-top:2px solid var(--lila);
}
.team-card h4{ font-family:var(--serif); font-size:1.05rem; font-weight:600; color:var(--tanne); }
.team-card span{ display:block; margin-top:6px; font-family:var(--mono); font-size:.74rem; color:var(--tanne-70); letter-spacing:.03em; }

.quote{
  font-family:var(--serif); font-size:1.5rem; line-height:1.4;
  color:var(--tanne); border-left:2px solid var(--lila);
  padding-left:22px; margin-top:20px;
}
.quote span{ display:block; margin-top:14px; font-family:var(--mono); font-size:.72rem; color:var(--tanne-70); letter-spacing:.06em; text-transform:uppercase; }

/* ---------- Sprachen badge ---------- */
.langs{
  margin-top:26px; display:flex; gap:10px; flex-wrap:wrap;
}
.langs span{
  font-family:var(--mono); font-size:.74rem; letter-spacing:.05em;
  border:1px solid var(--linie); padding:6px 12px; border-radius:999px;
  color:var(--tanne-70);
}
.langs span:not(:first-child){ border-color:var(--lila); color:var(--lila-dark); }

/* ---------- Kontakt ---------- */
.contact-grid{
  display:grid; grid-template-columns:1fr 1fr; gap:0;
  border:1px solid var(--linie);
}
@media (max-width:860px){ .contact-grid{ grid-template-columns:1fr; } }

.contact-info{ padding:48px; background:var(--papier); }
.contact-info h3{ font-size:1.3rem; }
.contact-row{
  margin-top:26px; padding-top:18px; border-top:1px solid var(--linie);
}
.contact-row .label{ font-family:var(--mono); font-size:.72rem; text-transform:uppercase; letter-spacing:.1em; color:var(--messing-dark); }
.contact-row .value{ margin-top:6px; font-size:1.02rem; }
.contact-row a.value:hover{ color:var(--messing-dark); }

.social-buttons{ display:flex; gap:10px; flex-wrap:wrap; margin-top:2px; }
.social-btn{
  display:flex; align-items:center; gap:8px;
  padding:10px 16px; border:1px solid var(--tanne);
  font-family:var(--sans); font-weight:600; font-size:.86rem;
  transition:background .2s ease, color .2s ease, border-color .2s ease;
}
.social-btn svg{ width:17px; height:17px; }
.social-btn:hover{ background:var(--lila); border-color:var(--lila); color:var(--papier); }

.map-wrap{ min-height:340px; background:var(--papier-alt); position:relative; }
.map-wrap iframe{ width:100%; height:100%; min-height:340px; border:0; filter:grayscale(.15) contrast(1.02); }

/* ---------- Footer ---------- */
footer{
  background:var(--tanne); color:var(--papier);
  padding:56px 0 28px;
}
.footer-top{
  display:flex; justify-content:space-between; flex-wrap:wrap; gap:32px;
  padding-bottom:36px; border-bottom:1px solid rgba(243,239,230,.18);
}
.footer-brand{ display:flex; align-items:center; gap:16px; }
.footer-brand img{ height:70px; width:auto; }
.footer-brand small{
  display:block; font-family:var(--mono); font-size:.75rem;
  color:rgba(243,239,230,.65); font-weight:400; letter-spacing:.04em;
}
.footer-cols{ display:flex; gap:64px; flex-wrap:wrap; }
.footer-col h4{
  font-family:var(--mono); font-size:.7rem; text-transform:uppercase; letter-spacing:.12em;
  color:var(--messing); margin-bottom:14px; font-weight:500;
}
.footer-col a, .footer-col span{
  display:block; font-size:.9rem; color:rgba(243,239,230,.82);
  padding:5px 0;
}
.footer-col a:hover{ color:var(--messing); }
.footer-bottom{
  margin-top:26px; display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px;
  font-family:var(--mono); font-size:.72rem; color:rgba(243,239,230,.55);
}

/* ---------- Reveal on scroll ---------- */
.reveal{
  opacity:0; transform:translateY(22px);
  transition:opacity .7s ease, transform .7s ease;
}
.reveal.in-view{ opacity:1; transform:translateY(0); }

/* ---------- Legal pages ---------- */
.legal{ padding:120px 0 100px; }
.legal .wrap{ max-width:760px; }
.legal h1{ font-size:clamp(2rem,4vw,2.8rem); }
.legal .updated{ font-family:var(--mono); font-size:.78rem; color:var(--tanne-70); margin-top:10px; }
.legal h2{ font-size:1.25rem; margin-top:44px; margin-bottom:12px; }
.legal p, .legal li{ color:var(--tanne-70); font-size:.98rem; margin-top:10px; }
.legal ul{ list-style:disc; padding-left:22px; }
.legal a{ color:var(--messing-dark); text-decoration:underline; }
.legal .box{
  border:1px solid var(--linie); background:var(--weiss);
  padding:24px 28px; margin-top:16px;
}
.legal .placeholder{ color:var(--messing-dark); font-family:var(--mono); font-size:.82rem; }

/* ---------- Sprachumschalter ---------- */
.lang-switch{ position:relative; margin-left:20px; }
.lang-toggle{
  display:flex; align-items:center; gap:6px;
  font-family:var(--mono); font-size:.78rem; letter-spacing:.04em;
  border:1px solid var(--linie); border-radius:999px;
  padding:7px 13px; background:transparent; cursor:pointer; color:var(--tanne);
}
.lang-toggle:hover{ border-color:var(--lila); color:var(--lila-dark); }
.lang-toggle svg{ width:13px; height:13px; }
.lang-dropdown{
  position:absolute; top:calc(100% + 8px); right:0;
  background:var(--weiss); border:1px solid var(--linie);
  min-width:150px; z-index:60;
  opacity:0; visibility:hidden; transform:translateY(-6px);
  transition:opacity .18s ease, transform .18s ease, visibility .18s;
}
.lang-dropdown.open{ opacity:1; visibility:visible; transform:translateY(0); }
.lang-option{
  display:flex; align-items:center; justify-content:space-between;
  width:100%; text-align:left; padding:11px 16px;
  font-family:var(--sans); font-size:.88rem; color:var(--tanne);
  background:none; border:0; border-bottom:1px solid var(--linie); cursor:pointer;
}
.lang-option:last-child{ border-bottom:0; }
.lang-option:hover{ background:var(--papier-alt); color:var(--lila-dark); }
.lang-option[aria-current="true"]{ color:var(--lila-dark); font-weight:600; }
.lang-option[aria-current="true"]::after{ content:"✓"; }

.lang-modal{
  position:fixed; inset:0; z-index:200;
  background:rgba(23,48,43,.72);
  display:flex; align-items:center; justify-content:center;
  padding:24px;
  opacity:0; visibility:hidden;
  transition:opacity .25s ease, visibility .25s;
}
.lang-modal.open{ opacity:1; visibility:visible; }
.lang-modal-box{
  background:var(--papier); border:1px solid var(--linie);
  max-width:400px; width:100%; padding:40px 34px;
  text-align:center;
}
.lang-modal-box h2{ font-size:1.4rem; }
.lang-modal-box p{ margin-top:10px; color:var(--tanne-70); font-size:.92rem; }
.lang-modal-choices{ margin-top:28px; display:grid; gap:12px; }
.lang-choice{
  font-family:var(--sans); font-weight:600; font-size:.98rem;
  padding:14px; border:1px solid var(--tanne); background:transparent; color:var(--tanne);
  cursor:pointer; transition:background .2s ease, color .2s ease;
}
.lang-choice:hover{ background:var(--tanne); color:var(--papier); }
.lang-choice[data-lang="pl"]:hover, .lang-choice[data-lang="en"]:hover{ background:var(--lila); border-color:var(--lila); }

@media (max-width:760px){
  .lang-switch{ margin-left:auto; margin-right:8px; }
}
@media (max-width:760px){
  .navlinks{
    position:fixed; inset:0 0 0 auto; width:78%; max-width:320px;
    background:var(--papier); flex-direction:column; padding:110px 32px 32px;
    transform:translateX(100%); transition:transform .3s ease;
    border-left:1px solid var(--linie);
  }
  .navlinks.open{ transform:translateX(0); }
  .navlinks a{ font-size:1.1rem; padding:12px 0; }
  .burger{ display:none !important; }
  .navlinks{ display:none !important; }
  .navcall{ display:none; }
  .lens-deco{ display:none; }
  .about-grid, .contact-grid{ gap:36px; }
}


/* Performance, Datenschutz und Barrierefreiheit */
section:not(.hero){ content-visibility:auto; contain-intrinsic-size:700px; }
.map-consent{min-height:390px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:32px;background:var(--papier);border:1px solid var(--linie);}
.map-consent h3{font-size:1.55rem;margin-bottom:10px;}
.map-consent p{max-width:42ch;margin-bottom:20px;color:var(--tanne-70);}
.map-external{margin-top:14px;text-decoration:underline;text-underline-offset:3px;}
.map-wrap iframe{width:100%;min-height:390px;border:0;display:block;}
@media print{header,.whatsapp-fab,.lang-modal,.hero-cta,.social-buttons,.map-wrap{display:none!important;}body{background:#fff;color:#000}.legal{padding-top:20px}a{text-decoration:underline}}
