  /* ---------- Schriften: lokal gehostet (ersetzt Google Fonts) ---------- */
  @font-face{ font-family:'DM Sans'; font-style:normal; font-weight:400 700; font-display:swap;
    src:url(fonts/dmsans-latin.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:'DM Sans'; font-style:normal; font-weight:400 700; font-display:swap;
    src:url(fonts/dmsans-latin-ext.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:'Fraunces'; font-style:normal; font-weight:400 700; font-display:swap;
    src:url(fonts/fraunces-latin.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:'Fraunces'; font-style:normal; font-weight:400 700; font-display:swap;
    src:url(fonts/fraunces-latin-ext.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:'Fraunces'; font-style:italic; font-weight:400 600; font-display:swap;
    src:url(fonts/fraunces-italic-latin.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:'Fraunces'; font-style:italic; font-weight:400 600; font-display:swap;
    src:url(fonts/fraunces-italic-latin-ext.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{
    --sage:        #c3d8ca;
    --sage-soft:   #d4e3d9;
    --sage-deep:   #a9c4b0;
    --teal:        #2d5a66;
    --teal-700:    #234851;
    --ink:         #1d3338;
    --mauve:       #7b6c92;
    --gold:        #e3a13a;
    --gold-soft:   #f0c878;
    --cream:       #f6f2e7;
    --paper:       #fbfaf4;
    --paper-2:     #ffffff;
    --line:        rgba(45,90,102,.14);

    --maxw: 1180px;
    --r:    20px;
    --r-sm: 12px;
    --ease: cubic-bezier(.22,.61,.36,1);
    --shadow: 0 18px 50px -22px rgba(29,51,56,.35);
    --shadow-sm: 0 8px 24px -16px rgba(29,51,56,.4);

    --ff-display: "Fraunces", Georgia, serif;
    --ff-body: "DM Sans", system-ui, -apple-system, sans-serif;
  }

  *{ box-sizing:border-box; margin:0; padding:0; }
  html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
  body{
    font-family: var(--ff-body);
    color: var(--ink);
    background: var(--paper);
    line-height: 1.65;
    font-size: clamp(15px, 1vw + 13px, 17px);
    overflow-x: hidden;
    -webkit-font-smoothing: antialiased;
  }
  img{ max-width:100%; display:block; }
  a{ color:inherit; text-decoration:none; }
  ::selection{ background: var(--gold-soft); color: var(--ink); }

  .wrap{ width:100%; max-width: var(--maxw); margin-inline:auto; padding-inline: clamp(20px,5vw,40px); }

  h1,h2,h3{ font-family: var(--ff-display); font-weight:600; line-height:1.06; letter-spacing:-.01em; color: var(--teal-700); }
  .eyebrow{
    font-family: var(--ff-body); font-weight:600; font-size:.78rem;
    letter-spacing:.18em; text-transform:uppercase; color: var(--mauve);
    display:inline-flex; align-items:center; gap:.6em;
  }
  .eyebrow::before{ content:""; width:26px; height:2px; background:var(--gold); border-radius:2px; }

  /* ---------- Buttons ---------- */
  .btn{
    display:inline-flex; align-items:center; gap:.55em;
    font-family:var(--ff-body); font-weight:600; font-size:.98rem;
    padding:.85em 1.5em; border-radius:100px; cursor:pointer;
    border:1.5px solid transparent; transition:transform .35s var(--ease), box-shadow .35s var(--ease), background .3s, color .3s, border-color .3s;
    will-change:transform;
  }
  .btn-primary{ background:var(--teal); color:var(--paper); box-shadow: var(--shadow-sm); }
  .btn-primary:hover{ background:var(--teal-700); transform: translateY(-3px); box-shadow: 0 16px 34px -14px rgba(45,90,102,.6); }
  .btn-ghost{ background:transparent; color:var(--teal-700); border-color:var(--line); }
  .btn-ghost:hover{ border-color:var(--teal); transform: translateY(-3px); }
  .btn .arr{ transition:transform .35s var(--ease); }
  .btn:hover .arr{ transform: translateX(4px); }

  /* ---------- Nav ---------- */
  header.nav{
    position:fixed; inset:0 0 auto 0; z-index:100;
    padding:14px 0; transition:background .4s var(--ease), box-shadow .4s var(--ease), padding .4s var(--ease);
  }
  header.nav.scrolled{
    background:rgba(251,250,244,.82); backdrop-filter:blur(14px) saturate(1.3);
    box-shadow:0 1px 0 var(--line), 0 14px 30px -26px rgba(29,51,56,.5); padding:9px 0;
  }
  .nav-inner{ display:flex; align-items:center; justify-content:space-between; gap:20px; }
  .brand{ display:flex; align-items:center; gap:.7em; }
  .brand-mark{ width:42px; height:42px; flex:none; }
  .brand-text{ display:flex; flex-direction:column; line-height:1; }
  .brand-text b{ font-family:var(--ff-display); font-weight:600; font-size:1.18rem; color:var(--teal-700); letter-spacing:-.01em; }
  .brand-text span{ font-size:.66rem; letter-spacing:.22em; text-transform:uppercase; color:var(--mauve); margin-top:3px; }

  .nav-links{ display:flex; align-items:center; gap:6px; }
  .nav-links a.link{
    font-weight:500; font-size:.95rem; color:var(--teal-700); padding:.5em .85em; border-radius:100px;
    position:relative; transition:color .25s;
  }
  .nav-links a.link::after{
    content:""; position:absolute; left:.85em; right:.85em; bottom:.3em; height:2px;
    background:var(--gold); border-radius:2px; transform:scaleX(0); transform-origin:left; transition:transform .3s var(--ease);
  }
  .nav-links a.link:hover{ color:var(--mauve); }
  .nav-links a.link:hover::after{ transform:scaleX(1); }
  .nav-cta{ margin-left:6px; }
  .nav-social{ display:flex; align-items:center; gap:6px; margin-left:10px; padding-left:12px; border-left:1px solid var(--line); }
  .nav-social a{
    width:34px; height:34px; border-radius:9px; flex:none;
    display:grid; place-items:center; color:var(--teal-700);
    transition:transform .3s var(--ease), background .25s, color .25s;
  }
  .nav-social a:hover{ background:var(--sage-soft); color:var(--teal); transform:translateY(-2px); }
  .nav-social svg{ width:18px; height:18px; }

  .burger{ display:none; background:none; border:none; cursor:pointer; padding:8px; }
  .burger span{ display:block; width:24px; height:2px; background:var(--teal-700); border-radius:2px; transition:.3s var(--ease); }
  .burger span+span{ margin-top:5px; }
  .burger.open span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
  .burger.open span:nth-child(2){ opacity:0; }
  .burger.open span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }

  /* ---------- Hero ---------- */
  .hero{
    position:relative; padding:clamp(130px,17vh,180px) 0 clamp(70px,10vh,110px);
    background:
      radial-gradient(120% 90% at 85% -10%, var(--sage-soft) 0%, transparent 55%),
      radial-gradient(100% 80% at 0% 0%, #d9e7dd 0%, transparent 50%),
      linear-gradient(170deg, var(--sage) 0%, #d2e2d7 60%, var(--paper) 100%);
    overflow:hidden;
  }
  .hero-grid{ display:grid; grid-template-columns:1.15fr .85fr; gap:clamp(30px,5vw,64px); align-items:center; }
  .hero h1{ font-size:clamp(2.5rem,5.4vw,4.4rem); margin:.45em 0 .35em; }
  .hero h1 .accent{ color:var(--mauve); position:relative; font-style:italic; }
  .hero p.lead{ font-size:clamp(1.05rem,1.4vw,1.28rem); color:var(--teal); max-width:46ch; margin-bottom:2em; }
  .hero-cta{ display:flex; flex-wrap:wrap; gap:14px; }
  .underline-draw{ height:5px; width:0; background:linear-gradient(90deg,var(--gold),var(--gold-soft)); border-radius:5px; margin-top:30px; }

  /* hero visual */
  .hero-visual{ position:relative; display:flex; justify-content:center; }
  .logo-stage{ width:min(420px,90%); aspect-ratio:1; position:relative; }
  .logo-disc{
    position:absolute; inset:6%; border-radius:50%;
    background:radial-gradient(circle at 35% 28%, #fff 0%, var(--cream) 45%, var(--sage-soft) 100%);
    box-shadow: var(--shadow), inset 0 0 0 1px rgba(255,255,255,.6);
  }
  .ring{ position:absolute; inset:0; border-radius:50%; border:1.5px dashed rgba(123,108,146,.35); animation:spin 60s linear infinite; }
  .ring.r2{ inset:-7%; border-color:rgba(227,161,58,.32); animation-duration:90s; animation-direction:reverse; }
  @keyframes spin{ to{ transform:rotate(360deg); } }
  .logo-svg{ position:absolute; inset:0; width:100%; height:100%; padding:20%; }
  .float-tag{
    position:absolute; background:var(--paper-2); border-radius:100px; padding:.55em 1em;
    font-size:.82rem; font-weight:600; color:var(--teal-700); box-shadow:var(--shadow-sm);
    display:flex; align-items:center; gap:.5em; white-space:nowrap;
  }
  .float-tag i{ width:8px; height:8px; border-radius:50%; background:var(--gold); flex:none; }
  .float-tag.t1{ top:6%; left:-6%; animation:bob 6s ease-in-out infinite; }
  .float-tag.t2{ bottom:10%; right:-8%; animation:bob 7s ease-in-out infinite .8s; }
  .float-tag.t2 i{ background:var(--mauve); }
  @keyframes bob{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-12px); } }

  /* ---------- Marquee strip ---------- */
  .strip{ background:var(--teal-700); color:var(--cream); padding:18px 0; overflow:hidden; }
  .marquee{ display:flex; gap:60px; width:max-content; animation:scroll 28s linear infinite; }
  .marquee span{ font-family:var(--ff-display); font-style:italic; font-size:1.15rem; display:flex; align-items:center; gap:60px; opacity:.92; }
  .marquee span::after{ content:"✦"; color:var(--gold); font-style:normal; font-size:.8em; }
  @keyframes scroll{ to{ transform:translateX(-50%); } }

  /* ---------- Section base ---------- */
  section{ padding:clamp(70px,11vh,120px) 0; }
  .sec-head{ max-width:62ch; margin-bottom:clamp(40px,6vh,64px); }
  .sec-head h2{ font-size:clamp(2rem,3.6vw,3rem); margin:.4em 0 .5em; }
  .sec-head p{ color:var(--teal); font-size:1.08rem; }

  /* ---------- About ---------- */
  .about{ background:var(--paper); }
  .about-grid{ display:grid; grid-template-columns:1.05fr 1fr; gap:clamp(34px,6vw,72px); align-items:center; }
  .about-portrait{
    position:relative; border-radius:var(--r); overflow:hidden; aspect-ratio:4/5;
    background:linear-gradient(160deg, var(--sage-soft), var(--sage-deep));
    box-shadow:var(--shadow); display:grid; place-items:center;
  }
  .about-portrait .mono{ font-family:var(--ff-display); font-size:clamp(4rem,9vw,7rem); color:rgba(45,90,102,.22); font-weight:600; }
  .about-portrait .portrait-img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block; }
  .about-portrait .name-chip{
    position:absolute; left:18px; bottom:18px; right:18px; background:rgba(251,250,244,.92); backdrop-filter:blur(6px);
    border-radius:var(--r-sm); padding:16px 18px; box-shadow:var(--shadow-sm);
  }
  .about-portrait .name-chip b{ font-family:var(--ff-display); font-size:1.25rem; color:var(--teal-700); display:block; }
  .about-portrait .name-chip small{ color:var(--mauve); font-weight:600; letter-spacing:.04em; }
  .photo-credit{
    position:absolute; top:12px; right:12px; z-index:2; display:inline-flex; align-items:center;
    height:26px; max-width:26px; overflow:hidden; white-space:nowrap; text-decoration:none;
    background:rgba(29,51,56,.55); color:#fff; border-radius:999px; backdrop-filter:blur(4px);
    font-size:.72rem; font-weight:600; line-height:1;
    transition:max-width .45s var(--ease), background .3s;
  }
  .photo-credit .pc-icon{ flex:none; width:26px; height:26px; display:grid; place-items:center; font-size:.95rem; }
  .photo-credit .pc-text{ padding-right:13px; opacity:0; transition:opacity .3s; }
  .about-portrait:hover .photo-credit,
  .photo-credit:focus-visible{ max-width:320px; background:rgba(29,51,56,.9); }
  .about-portrait:hover .photo-credit .pc-text,
  .photo-credit:focus-visible .pc-text{ opacity:1; }
  @media (hover: none){
    .photo-credit{ max-width:320px; background:rgba(29,51,56,.85); }
    .photo-credit .pc-text{ opacity:1; }
  }
  .about-text h2{ font-size:clamp(2rem,3.6vw,2.9rem); margin:.35em 0 .6em; }
  .about-text p{ color:var(--teal); margin-bottom:1.1em; }
  .about-text p strong{ color:var(--teal-700); }

  /* ---------- Offers ---------- */
  .offers{ background:linear-gradient(180deg, var(--paper) 0%, #eef4ef 100%); }
  .offer-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
  .card{
    position:relative; background:var(--paper-2); border:1px solid var(--line); border-radius:var(--r);
    padding:30px 28px 32px; overflow:hidden; transition:transform .45s var(--ease), box-shadow .45s var(--ease), border-color .45s;
    will-change:transform;
  }
  .card::before{
    content:""; position:absolute; left:0; top:0; height:3px; width:0;
    background:linear-gradient(90deg,var(--gold),var(--gold-soft)); transition:width .5s var(--ease);
  }
  .card:hover{ transform:translateY(-8px); box-shadow:var(--shadow); border-color:transparent; }
  .card:hover::before{ width:100%; }
  .card-ico{
    width:54px; height:54px; border-radius:14px; display:grid; place-items:center; margin-bottom:20px;
    background:var(--sage-soft); color:var(--teal-700); transition:background .4s, transform .4s var(--ease);
  }
  .card:hover .card-ico{ background:var(--teal); color:var(--cream); transform:rotate(-6deg) scale(1.05); }
  .card-ico svg{ width:26px; height:26px; }
  .card .num{ position:absolute; top:26px; right:28px; font-family:var(--ff-display); font-size:.95rem; color:var(--line); font-weight:600; }
  .card h3{ font-size:1.32rem; margin-bottom:.5em; }
  .card p{ color:var(--teal); font-size:.96rem; }

  /* ---------- Values band ---------- */
  .values{ background:var(--teal-700); color:var(--cream); }
  .values .sec-head h2{ color:var(--paper); }
  .values .sec-head p{ color:var(--sage-soft); }
  .val-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:26px; }
  .val{ padding:26px 24px; border-radius:var(--r); background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.1); transition:transform .4s var(--ease), background .4s; }
  .val:hover{ transform:translateY(-6px); background:rgba(255,255,255,.09); }
  .val .vn{ font-family:var(--ff-display); font-size:1.6rem; color:var(--gold); display:block; margin-bottom:.3em; }
  .val h3{ color:var(--paper); font-size:1.18rem; margin-bottom:.4em; }
  .val p{ color:var(--sage-soft); font-size:.95rem; }

  /* ---------- Event Calendar (classic) ---------- */
  .calendar{ background:linear-gradient(180deg, #eef4ef 0%, var(--paper) 100%); }
  .cal-months{
    display:grid; grid-template-columns:repeat(auto-fit, minmax(240px, 300px)); gap:24px; align-items:start; justify-content:center;
  }
  .cal-month{
    background:var(--paper-2); border:1px solid var(--line); border-radius:var(--r);
    padding:22px 22px 24px; box-shadow:var(--shadow-sm);
    transition:transform .45s var(--ease), box-shadow .45s var(--ease);
  }
  .cal-month:hover{ transform:translateY(-6px); box-shadow:var(--shadow); }
  .cal-month-head{
    display:flex; align-items:baseline; gap:.5em; margin-bottom:16px;
    padding-bottom:14px; border-bottom:1px solid var(--line);
  }
  .cal-month-head b{ font-family:var(--ff-display); font-weight:600; font-size:1.32rem; color:var(--teal-700); }
  .cal-month-head span{ font-size:.95rem; color:var(--mauve); font-weight:600; }
  .cal-weekdays, .cal-days{
    display:grid; grid-template-columns:repeat(7,1fr); gap:4px;
  }
  .cal-weekdays{ margin-bottom:6px; }
  .cal-weekdays span{
    text-align:center; font-size:.7rem; font-weight:700; letter-spacing:.04em;
    text-transform:uppercase; color:var(--mauve); padding:4px 0;
  }
  .cal-day{
    aspect-ratio:1; display:flex; align-items:center; justify-content:center;
    font-size:.9rem; font-weight:500; color:var(--teal-700); border-radius:10px;
    position:relative;
  }
  .cal-day.is-muted{ color:transparent; pointer-events:none; }
  .cal-day.is-weekend{ color:var(--mauve); }
  .cal-day.is-event{
    background:var(--teal); color:var(--cream); font-weight:700;
    box-shadow:0 6px 16px -8px rgba(45,90,102,.7); cursor:pointer;
    transition:transform .3s var(--ease), background .3s;
  }
  .cal-day.is-event::after{
    content:""; position:absolute; bottom:5px; left:50%; transform:translateX(-50%);
    width:5px; height:5px; border-radius:50%; background:var(--gold);
  }
  .cal-day.is-event:hover{ transform:scale(1.08); background:var(--teal-700); }

  /* legend + event list */
  .cal-legend{
    display:flex; align-items:center; gap:.6em; justify-content:center;
    margin:30px 0 8px; font-size:.9rem; color:var(--teal); font-weight:600;
  }
  .cal-legend .dot{
    width:16px; height:16px; border-radius:6px; background:var(--teal); position:relative; flex:none;
  }
  .cal-legend .dot::after{
    content:""; position:absolute; bottom:2px; left:50%; transform:translateX(-50%);
    width:4px; height:4px; border-radius:50%; background:var(--gold);
  }
  .cal-list{ list-style:none; display:grid; gap:18px; max-width:720px; margin:26px auto 0; }
  .cal-list > li{
    background:var(--paper-2); border:1px solid var(--line); border-radius:var(--r);
    padding:clamp(20px,3vw,30px); box-shadow:var(--shadow-sm);
    transition:transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s;
  }
  .cal-list > li:hover{ transform:translateY(-4px); box-shadow:var(--shadow); border-color:transparent; }
  .cd-head{ display:flex; flex-wrap:wrap; align-items:center; gap:10px 14px; margin-bottom:14px; }
  .cd-date{ font-family:var(--ff-display); font-weight:600; font-size:1.28rem; color:var(--teal-700); line-height:1; }
  .cd-badge{
    font-size:.76rem; font-weight:700; letter-spacing:.03em; color:var(--teal-700);
    background:var(--sage-soft); border-radius:999px; padding:5px 12px;
  }
  .cd-badge--gold{ background:var(--gold-soft); color:var(--ink); }
  .cd-loc{ display:inline-flex; align-items:center; gap:.4em; margin-left:auto; color:var(--mauve); font-size:.9rem; font-weight:600; }
  .cd-loc svg{ width:15px; height:15px; flex:none; }
  .cd-title{ font-family:var(--ff-display); font-weight:600; font-size:clamp(1.2rem,2vw,1.42rem); color:var(--teal-700); line-height:1.14; margin-bottom:5px; }
  .cd-sub{ color:var(--mauve); font-weight:600; font-size:1rem; margin-bottom:16px; }
  .cd-topics{ list-style:none; display:grid; gap:9px; margin:0 0 22px; padding:0; }
  .cd-topics li{ position:relative; padding-left:24px; color:var(--teal); font-size:.95rem; line-height:1.5; }
  .cd-topics li::before{
    content:""; position:absolute; left:5px; top:.62em; width:7px; height:7px; border-radius:50%; background:var(--gold);
  }
  .cd-cta{ display:inline-flex; align-items:center; gap:.5em; font-size:.92rem; font-weight:600; color:var(--teal-700); transition:color .25s; }
  .cd-cta .arr{ transition:transform .35s var(--ease); }
  .cd-cta:hover{ color:var(--mauve); }
  .cd-cta:hover .arr{ transform:translateX(4px); }
  .cal-note{ max-width:720px; margin:22px auto 0; text-align:center; font-size:.85rem; line-height:1.55; color:var(--teal); opacity:.88; }

  /* ---------- Contact ---------- */
  .contact{ background:var(--paper); }
  .contact-card{
    display:grid; grid-template-columns:1fr 1fr; gap:clamp(30px,5vw,60px);
    background:
      radial-gradient(90% 120% at 100% 0%, var(--sage-soft) 0%, transparent 55%),
      var(--cream);
    border-radius:calc(var(--r) + 8px); padding:clamp(34px,5vw,60px); box-shadow:var(--shadow); align-items:center;
    border:1px solid var(--line);
  }
  .contact-card h2{ font-size:clamp(1.9rem,3.4vw,2.7rem); margin:.35em 0 .5em; }
  .contact-card p{ color:var(--teal); margin-bottom:1.6em; max-width:40ch; }

  /* single-column contact banner with e-mail address */
  .contact-card--solo{
    grid-template-columns:1fr; text-align:center;
    max-width:820px; margin-inline:auto;
  }
  .contact-card--solo .contact-intro{ display:flex; flex-direction:column; align-items:center; }
  .contact-card--solo p{ max-width:54ch; }
  .contact-mail{
    display:inline-flex; align-items:center; justify-content:center; gap:.65em; flex-wrap:wrap;
    font-family:var(--ff-display); font-weight:600;
    font-size:clamp(1.05rem,2vw,1.4rem); color:var(--teal-700);
    margin-bottom:1.5em; transition:color .25s;
  }
  .contact-mail:hover{ color:var(--mauve); }
  .contact-mail .cm-ico{
    display:inline-flex; align-items:center; justify-content:center; flex:none;
    width:2.3em; height:2.3em; border-radius:50%;
    background:var(--paper-2); border:1px solid var(--line); color:var(--teal);
  }
  .contact-mail .cm-ico svg{ width:1.1em; height:1.1em; }
  .contact-mail .cm-text{ word-break:break-word; }

  /* ---------- Footer ---------- */
  footer{ background:var(--teal-700); color:var(--sage-soft); padding:56px 0 30px; }
  .foot-grid{ display:flex; justify-content:space-between; gap:34px; flex-wrap:wrap; align-items:flex-start; }
  .foot-brand{ display:flex; align-items:center; gap:.7em; margin-bottom:14px; }
  .foot-brand .brand-mark{ width:46px; height:46px; }
  .foot-brand b{ font-family:var(--ff-display); color:var(--paper); font-size:1.3rem; }
  .foot-col h4{ color:var(--paper); font-family:var(--ff-body); font-size:.78rem; letter-spacing:.16em; text-transform:uppercase; margin-bottom:14px; }
  .foot-col a, .foot-col p{ display:block; color:var(--sage-soft); font-size:.95rem; margin-bottom:9px; transition:color .25s, transform .25s; }
  .foot-col a:hover{ color:var(--gold); transform:translateX(3px); }
  .foot-social{ display:flex; gap:12px; margin-top:18px; }
  .foot-social a{
    width:42px; height:42px; border-radius:12px; flex:none;
    display:grid; place-items:center;
    background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.12);
    color:var(--sage-soft);
    transition:transform .35s var(--ease), background .3s, color .3s, border-color .3s;
  }
  .foot-social a:hover{
    background:var(--gold); border-color:var(--gold); color:var(--teal-700);
    transform:translateY(-4px);
  }
  .foot-social svg{ width:20px; height:20px; }
  .foot-bottom{ margin-top:42px; padding-top:22px; border-top:1px solid rgba(255,255,255,.12); display:flex; justify-content:space-between; gap:14px; flex-wrap:wrap; font-size:.85rem; color:rgba(214,227,217,.7); }
  .legal-links{ display:inline-flex; align-items:center; gap:12px; }
  .legal-sep{ color:rgba(214,227,217,.4); }
  .legal-link{
    position:relative; color:rgba(214,227,217,.8); font-weight:500; padding-bottom:2px;
    transition:color .25s var(--ease);
  }
  .legal-link::after{
    content:""; position:absolute; left:0; right:0; bottom:-1px; height:1.5px;
    background:var(--gold); border-radius:2px; transform:scaleX(0); transform-origin:left;
    transition:transform .3s var(--ease);
  }
  .legal-link:hover, .legal-link:focus-visible{ color:var(--gold); outline:none; }
  .legal-link:hover::after, .legal-link:focus-visible::after{ transform:scaleX(1); }

  /* ---------- Modal ---------- */
  .modal{
    position:fixed; inset:0; z-index:200; display:grid; place-items:center; padding:20px;
    visibility:hidden; opacity:0; transition:opacity .35s var(--ease), visibility .35s;
  }
  .modal.open{ visibility:visible; opacity:1; }
  .modal-backdrop{ position:absolute; inset:0; background:rgba(29,51,56,.55); backdrop-filter:blur(4px); }
  .modal-panel{
    position:relative; width:min(620px,100%); max-height:85vh; overflow-y:auto;
    background:var(--paper); border-radius:calc(var(--r) + 4px); padding:clamp(28px,5vw,46px);
    box-shadow:0 40px 90px -30px rgba(29,51,56,.6); border:1px solid var(--line);
    transform:translateY(24px) scale(.97); transition:transform .4s var(--ease);
  }
  .modal.open .modal-panel{ transform:none; }
  .modal-panel h2{ font-size:clamp(1.7rem,3vw,2.3rem); margin:.35em 0 .9em; }
  .modal-body h3{ font-family:var(--ff-display); font-size:1.12rem; color:var(--teal-700); margin:1.3em 0 .35em; }
  .modal-body p{ color:var(--teal); margin-bottom:.6em; font-size:.97rem; }
  .modal-body code{ background:var(--sage-soft); padding:1px 6px; border-radius:6px; font-size:.85em; color:var(--teal-700); }

  /* ---------- Rechtliche Unterseiten (Impressum / Datenschutz) ---------- */
  .legal-top{ background:var(--paper-2); border-bottom:1px solid var(--line); }
  .legal-top .wrap{ display:flex; align-items:center; justify-content:space-between; gap:14px 24px; flex-wrap:wrap; padding-block:16px; }
  .legal-home{ font-weight:600; color:var(--teal-700); font-size:.95rem; }
  .legal-home:hover{ color:var(--mauve); }
  .legal-page{ background:var(--paper); padding:clamp(40px,7vw,80px) 0; }
  .legal-wrap{ max-width:820px; }
  .legal-wrap h1{ font-family:var(--ff-display); font-weight:600; color:var(--teal-700); font-size:clamp(2rem,4vw,2.9rem); line-height:1.12; margin:.25em 0 .7em; }
  .legal-wrap h2{ font-family:var(--ff-display); font-weight:600; color:var(--teal-700); font-size:1.5rem; margin:1.8em 0 .5em; }
  .legal-wrap h3{ font-family:var(--ff-display); font-weight:600; color:var(--teal-700); font-size:1.14rem; margin:1.4em 0 .35em; }
  .legal-wrap h4{ font-weight:700; color:var(--teal); font-size:1rem; margin:1.1em 0 .3em; }
  .legal-wrap p, .legal-wrap li{ color:var(--teal); line-height:1.7; }
  .legal-wrap p{ margin-bottom:1em; }
  .legal-wrap ul{ margin:0 0 1.1em 1.25em; }
  .legal-wrap li{ margin-bottom:.45em; }
  .legal-wrap a{ color:var(--teal-700); text-decoration:underline; word-break:break-word; }
  .legal-wrap a:hover{ color:var(--mauve); }
  .legal-wrap code{ background:var(--sage-soft); padding:1px 6px; border-radius:6px; font-size:.85em; color:var(--teal-700); }
  .legal-hint{ margin-top:2em; padding:14px 16px; background:var(--sage-soft); border-radius:var(--r-sm); font-size:.9rem; color:var(--teal-700); }
  .modal-hint{ margin-top:1.6em; padding:14px 16px; background:var(--cream); border-left:3px solid var(--gold); border-radius:var(--r-sm); font-size:.86rem !important; color:var(--mauve) !important; }
  .modal-close{
    position:absolute; top:18px; right:18px; width:40px; height:40px; border-radius:50%; cursor:pointer;
    background:var(--paper-2); border:1px solid var(--line); color:var(--teal-700);
    display:grid; place-items:center; transition:transform .3s var(--ease), background .25s, color .25s;
  }
  .modal-close svg{ width:18px; height:18px; }
  .modal-close:hover{ background:var(--teal); color:var(--paper); transform:rotate(90deg); }

  /* ---------- Reveal animation ---------- */
  [data-reveal]{ opacity:0; transform:translateY(28px); transition:opacity .8s var(--ease), transform .8s var(--ease); }
  [data-reveal].in{ opacity:1; transform:none; }
  [data-reveal][data-delay="1"]{ transition-delay:.08s; }
  [data-reveal][data-delay="2"]{ transition-delay:.16s; }
  [data-reveal][data-delay="3"]{ transition-delay:.24s; }
  [data-reveal][data-delay="4"]{ transition-delay:.32s; }
  [data-reveal][data-delay="5"]{ transition-delay:.4s; }

  /* ---------- Responsive ---------- */
  @media (max-width: 940px){
    .hero-grid{ grid-template-columns:1fr; text-align:left; }
    .hero-visual{ order:-1; max-width:360px; }
    .about-grid{ grid-template-columns:1fr; }
    .about-portrait{ max-width:380px; }
    .offer-grid{ grid-template-columns:repeat(2,1fr); }
    .val-grid{ grid-template-columns:1fr; }
    .cal-months{ grid-template-columns:1fr; max-width:420px; margin-inline:auto; }
    .contact-card{ grid-template-columns:1fr; }
    .nav-links{
      position:fixed; inset:0 0 0 auto; width:min(320px,82vw); flex-direction:column; align-items:stretch; justify-content:flex-start;
      background:var(--paper-2); padding:96px 24px 40px; gap:6px; box-shadow:-20px 0 60px -30px rgba(29,51,56,.5);
      transform:translateX(100%); transition:transform .45s var(--ease); z-index:99;
    }
    .nav-links.open{ transform:none; }
    .nav-links a.link{ font-size:1.1rem; padding:.7em .4em; border-bottom:1px solid var(--line); border-radius:0; }
    .nav-links a.link::after{ display:none; }
    .nav-cta{ margin:14px 0 0; text-align:center; }
    .nav-social{ margin:18px 0 0; padding:16px 0 0; border-left:none; border-top:1px solid var(--line); justify-content:center; gap:14px; }
    .nav-social a{ width:44px; height:44px; }
    .nav-social svg{ width:22px; height:22px; }
    .burger{ display:block; z-index:100; }
  }
  @media (max-width: 560px){
    .offer-grid{ grid-template-columns:1fr; }
    .cd-loc{ margin-left:0; }
    .float-tag.t1{ left:-2%; }
    .float-tag.t2{ right:-2%; }
    .foot-grid{ flex-direction:column; }
  }

  @media (prefers-reduced-motion: reduce){
    *{ animation:none !important; transition-duration:.01ms !important; scroll-behavior:auto; }
    [data-reveal]{ opacity:1; transform:none; }
  }
