:root{
    --ink:#18181A;
    --ink-soft:#5B5B58;
    --ink-faint:#8C8C87;
    --bg:#F1F0ED;
    --surface:#FAFAF8;
    --surface-2:#E7E5E0;
    --accent:#B9932E;
    --accent-strong:#8F7020;
    --accent-ink:#18181A;
    --teal:#B0B0AA;
    --teal-soft:#E9E8E4;
    --line:#DEDCD6;
    --shadow: 0 1px 2px rgba(24,24,26,.06), 0 8px 24px -12px rgba(24,24,26,.18);
    --radius: 2px;
    --maxw: 1180px;
  }
  @media (prefers-color-scheme: dark){
    :root:not([data-theme="light"]){
      --ink:#F2F1EE;
      --ink-soft:#C6C4BD;
      --ink-faint:#8B8983;
      --bg:#121212;
      --surface:#1C1C1B;
      --surface-2:#272725;
      --accent:#D6AD52;
      --accent-strong:#E9C67C;
      --accent-ink:#121212;
      --teal:#A6A49D;
      --teal-soft:#26251F;
      --line:#333230;
      --shadow: 0 1px 2px rgba(0,0,0,.4), 0 8px 24px -12px rgba(0,0,0,.6);
    }
  }
  :root[data-theme="dark"]{
    --ink:#F2F1EE;
    --ink-soft:#C6C4BD;
    --ink-faint:#8B8983;
    --bg:#121212;
    --surface:#1C1C1B;
    --surface-2:#272725;
    --accent:#D6AD52;
    --accent-strong:#E9C67C;
    --accent-ink:#121212;
    --teal:#A6A49D;
    --teal-soft:#26251F;
    --line:#333230;
    --shadow: 0 1px 2px rgba(0,0,0,.4), 0 8px 24px -12px rgba(0,0,0,.6);
  }

  @font-face{ font-family:'Bricolage'; src: local('Bricolage Grotesque'); }
  @import url('https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,400..800&family=Work+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500&family=Jost:wght@300;400&display=swap');

  *{ box-sizing:border-box; }
  /* Guarantee the native `hidden` attribute always hides an element, even when
     a class on the same element sets its own `display` (e.g. .grid, .press-list).
     Without this, toggled panels (membership term grid, Presse/Aktuelles tabs)
     stay visibly stacked because the author rule outranks the browser default. */
  [hidden]{ display:none !important; }
  body{
    background:var(--bg);
    color:var(--ink);
    font-family:'Work Sans', -apple-system, BlinkMacSystemFont, sans-serif;
    padding-inline:0;
    line-height:1.5;
    -webkit-font-smoothing:antialiased;
  }
  h1,h2,h3,h4{
    font-family:'Bricolage Grotesque','Work Sans',sans-serif;
    font-weight:700;
    line-height:1.05;
    margin:0;
    text-wrap:balance;
    color:var(--ink);
  }
  p{ margin:0; }
  a{ color:inherit; text-decoration:none; }
  ul{ margin:0; padding:0; list-style:none; }
  button{ font-family:inherit; cursor:pointer; }
  img{ max-width:100%; display:block; }
  .mono{ font-family:'IBM Plex Mono', ui-monospace, monospace; font-variant-numeric:tabular-nums; }
  .eyebrow{
    font-family:'IBM Plex Mono', monospace;
    text-transform:uppercase;
    letter-spacing:.14em;
    font-size:.72rem;
    color:var(--accent-strong);
    font-weight:500;
  }
  .wrap{ max-width:var(--maxw); margin-inline:auto; padding-inline:20px; }
  :focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
  @media (prefers-reduced-motion: reduce){ *{ animation-duration:.01ms !important; transition-duration:.01ms !important; } }

  /* ---------- header ---------- */
  .site-header{
    position:sticky; top:env(safe-area-inset-top,0px); z-index:50;
    background:color-mix(in srgb, var(--bg) 88%, transparent);
    backdrop-filter:blur(10px);
    border-bottom:1px solid var(--line);
  }
  .header-row{
    display:flex; align-items:center; justify-content:space-between;
    gap:16px; padding-block:14px;
  }
  .brand{
    display:flex; align-items:center; gap:10px; flex-shrink:0; white-space:nowrap;
    font-family:'Futura','Futura Light','Jost','Century Gothic',sans-serif;
    font-weight:300; font-size:1.18rem; letter-spacing:.05em; text-transform:uppercase;
  }
  .brand-logo{ width:32px; height:32px; flex:none; display:block; }
  .footer-logo{ height:34px; width:auto; display:block; filter:invert(1); }
  @media (prefers-color-scheme: dark){
    :root:not([data-theme="light"]) .brand-logo{ filter:invert(1); }
    :root:not([data-theme="light"]) .footer-logo{ filter:none; }
  }
  :root[data-theme="dark"] .brand-logo{ filter:invert(1); }
  :root[data-theme="dark"] .footer-logo{ filter:none; }
  nav.primary{ display:flex; align-items:center; gap:2px; }
  nav.primary a, .navgroup > button{
    font-size:.86rem; font-weight:500; padding:9px 12px; border-radius:var(--radius);
    color:var(--ink-soft); background:none; border:none;
  }
  nav.primary a:hover, nav.primary a.active, .navgroup > button:hover{ color:var(--ink); background:var(--surface-2); }
  nav.primary a.active{ color:var(--accent-strong); }
  .navgroup{ position:relative; }
  .navgroup .drop{
    position:absolute; top:calc(100% + 6px); left:0; min-width:220px;
    background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
    box-shadow:var(--shadow); padding:6px; display:none; flex-direction:column;
  }
  .navgroup.open .drop{ display:flex; }
  .navgroup .drop a{ padding:9px 10px; border-radius:var(--radius); font-size:.85rem; }
  .navgroup .drop a:hover{ background:var(--surface-2); }
  .navgroup .drop .drop-divider{ height:1px; background:var(--line); margin:6px 4px; }
  .header-cta{ display:flex; align-items:center; gap:10px; }
  .header-login{ font-size:.86rem; font-weight:600; color:var(--ink-soft); padding:10px 4px; }
  .header-login:hover{ color:var(--ink); }
  @media (max-width:800px){ .header-login{ display:none; } }
  .lang-toggle{ display:flex; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; }
  .lang-toggle a{ font-family:'IBM Plex Mono',monospace; font-size:.72rem; font-weight:600; letter-spacing:.03em; padding:8px 10px; color:var(--ink-soft); background:transparent; display:inline-block; }
  .lang-toggle a.active{ background:var(--ink); color:var(--bg); }
  .lang-toggle a:not(.active):hover{ color:var(--ink); background:var(--surface-2); }
  @media (max-width:800px){ .lang-toggle:not(.mobile){ display:none; } }
  .lang-toggle.mobile{ margin-bottom:14px; }
  .lang-toggle.mobile a{ flex:1; padding:10px; font-size:.78rem; text-align:center; }
  .btn{
    display:inline-flex; align-items:center; gap:8px; justify-content:center;
    padding:10px 18px; border-radius:var(--radius); font-size:.86rem; font-weight:600;
    border:1px solid transparent; white-space:nowrap; background:transparent;
  }
  .btn-accent{ background:var(--accent); color:var(--accent-ink); }
  .btn-accent:hover{ background:var(--accent-strong); }
  .btn-line{ border-color:var(--line); color:var(--ink); }
  .btn-line:hover{ border-color:var(--accent); color:var(--accent-strong); }
  .btn-ghost{ color:var(--ink-soft); }
  .btn-ghost:hover{ color:var(--ink); }
  .burger{ display:none; width:38px; height:38px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); align-items:center; justify-content:center; }
  .burger span, .burger span::before, .burger span::after{ content:""; display:block; width:16px; height:2px; background:var(--ink); position:relative; }
  .burger span::before{ position:absolute; top:-5px; } .burger span::after{ position:absolute; top:5px; }

  .mobile-panel{ display:none; border-top:1px solid var(--line); padding:10px 20px 18px; }
  .mobile-panel.open{ display:block; }
  .mobile-panel a{ display:block; padding:10px 0; font-size:.95rem; border-bottom:1px solid var(--line); }
  .mobile-panel .sub{ padding-left:14px; color:var(--ink-soft); font-size:.88rem; }

  @media (max-width:960px){
    nav.primary, .header-cta .btn-line{ display:none; }
    .burger{ display:inline-flex; }
  }

  /* ---------- landing page (ads) mode: minimal chrome for higher conversion ---------- */
  .is-landing nav.primary{ display:none; }
  .is-landing .header-login{ display:none; }
  .is-landing .header-cta .btn-line{ display:none; }
  .is-landing .mobile-panel a{ display:none; }

  /* ---------- cookie banner ---------- */
  .cookie-banner{
    position:fixed; left:0; right:0; bottom:0; z-index:200;
    background:var(--ink); color:var(--bg);
    border-top:1px solid rgba(241,240,237,.15);
    box-shadow:0 -8px 24px -12px rgba(0,0,0,.3);
  }
  .cookie-banner[hidden]{ display:none; }
  .cookie-banner-inner{
    max-width:var(--maxw); margin-inline:auto; padding:16px 20px;
    display:flex; align-items:center; gap:24px; flex-wrap:wrap;
  }
  .cookie-text{ flex:1 1 360px; }
  .cookie-text p{ font-size:.84rem; line-height:1.5; color:color-mix(in srgb, var(--bg) 88%, transparent); margin:0; }
  .cookie-text a{ color:var(--bg); text-decoration:underline; text-underline-offset:2px; }
  .cookie-text a:hover{ color:var(--accent-strong); }
  .cookie-actions{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; flex:0 0 auto; }
  .cookie-banner .btn-line{ border-color:rgba(241,240,237,.3); color:var(--bg); }
  .cookie-banner .btn-line:hover{ border-color:var(--accent); color:var(--accent-strong); }
  .cookie-banner .btn-ghost{ color:color-mix(in srgb, var(--bg) 75%, transparent); text-decoration:underline; text-underline-offset:2px; padding-inline:6px; }
  .cookie-banner .btn-ghost:hover{ color:var(--bg); }
  @media (max-width:640px){
    .cookie-banner-inner{ flex-direction:column; align-items:stretch; }
    .cookie-actions{ justify-content:stretch; }
    .cookie-actions .btn{ flex:1; }
  }
  .cookie-modal-overlay{
    position:fixed; inset:0; z-index:210;
    background:rgba(15,15,15,.55);
    display:flex; align-items:center; justify-content:center; padding:20px;
  }
  .cookie-modal-overlay[hidden]{ display:none; }
  .cookie-modal{
    background:var(--surface); border-radius:var(--radius); border:1px solid var(--line);
    box-shadow:var(--shadow); max-width:480px; width:100%; padding:28px; max-height:86vh; overflow-y:auto;
  }
  .cookie-modal h3{ font-family:'Bricolage Grotesque',sans-serif; font-size:1.2rem; margin-bottom:8px; }
  .cookie-modal > p{ font-size:.86rem; color:var(--ink-soft); line-height:1.5; margin-bottom:20px; }
  .cookie-option{
    display:flex; align-items:flex-start; justify-content:space-between; gap:16px;
    padding-block:14px; border-top:1px solid var(--line);
  }
  .cookie-option strong{ font-size:.9rem; display:block; margin-bottom:3px; }
  .cookie-option p{ font-size:.8rem; color:var(--ink-soft); line-height:1.45; }
  .cookie-modal-actions{ display:flex; gap:10px; margin-top:20px; flex-wrap:wrap; }
  .cookie-modal-actions .btn{ flex:1; }
  .switch{ position:relative; display:inline-block; width:40px; height:22px; flex:none; }
  .switch input{ opacity:0; width:0; height:0; position:absolute; }
  .switch .slider{ position:absolute; inset:0; background:var(--line); border-radius:999px; transition:background .15s; cursor:pointer; }
  .switch .slider::before{ content:""; position:absolute; width:16px; height:16px; left:3px; top:3px; background:var(--surface); border-radius:50%; transition:transform .15s; }
  .switch input:checked + .slider{ background:var(--accent); }
  .switch input:checked + .slider::before{ transform:translateX(18px); }
  .switch input:disabled + .slider{ opacity:.6; cursor:not-allowed; }

  /* ---------- hero / masthead ---------- */
  .masthead{ position:relative; overflow:hidden; border-bottom:1px solid var(--line); }
  .masthead-art{ position:absolute; inset:0; z-index:0; opacity:.9; }
  .masthead.has-photo .masthead-art{ opacity:1; }
  .masthead-art .scrim{ position:absolute; inset:0; }
  .masthead.has-photo .masthead-art .scrim{
    background:
      linear-gradient(100deg, rgba(15,15,15,.86) 0%, rgba(15,15,15,.62) 36%, rgba(15,15,15,.24) 66%, rgba(15,15,15,0) 90%),
      linear-gradient(0deg, rgba(15,15,15,.5) 0%, rgba(15,15,15,0) 60%);
  }
  .masthead.has-photo .eyebrow{ color:#D9B15A; }
  .masthead.has-photo h1{ color:#F5F5F3; }
  .masthead.has-photo .dek{ color:rgba(250,250,248,.92); }
  .masthead.has-photo .chip{ background:rgba(18,18,18,.5); border-color:rgba(255,255,255,.3); color:#F2F1EE; }
  .masthead.has-photo .chip.on{ border-color:#D9B15A; color:#ECC97F; }
  .masthead.has-photo .chip.active{ background:#D9B15A; border-color:#D9B15A; color:#18181A; }
  .masthead.has-photo .chip-desc{ background:rgba(18,18,18,.6); border-color:rgba(255,255,255,.28); color:#F5F4F1; }
  .masthead.has-photo .chip-desc strong{ color:#ECC97F; }
  .masthead.has-photo .btn-line{ border-color:rgba(255,255,255,.6); color:#fff; }
  .masthead.has-photo .btn-line:hover{ border-color:#fff; color:#fff; background:rgba(255,255,255,.12); }
  .masthead .wrap{ position:relative; z-index:1; padding-block:64px 56px; }
  .masthead.compact .wrap{ padding-block:44px 40px; }
  .masthead h1{ font-size:clamp(2.1rem, 5vw, 3.4rem); max-width:16ch; margin-top:10px; }
  .masthead .dek{ margin-top:16px; max-width:52ch; color:var(--ink-soft); font-size:1.05rem; }
  .masthead .cta-row{ display:flex; gap:12px; margin-top:26px; flex-wrap:wrap; }

  .skyline{ position:absolute; left:0; right:0; bottom:0; height:38%; opacity:.5; }

  .chipline{ display:flex; flex-wrap:wrap; gap:8px; margin-top:28px; }
  .chip{
    font-family:'IBM Plex Mono',monospace; font-size:.72rem; letter-spacing:.06em; text-transform:uppercase;
    padding:7px 11px; border:1px solid var(--line); border-radius:100px; color:var(--ink-soft); background:var(--surface);
  }
  .chip.on{ border-color:var(--accent); color:var(--accent-strong); }
  button.chip{ cursor:pointer; transition:background .15s, border-color .15s, color .15s; }
  button.chip:hover{ border-color:var(--accent-strong); }
  button.chip.active{ background:var(--accent); border-color:var(--accent); color:var(--accent-ink); }
  .chip-desc{
    margin-top:14px; padding:14px 16px; border:1px solid var(--line); border-radius:12px;
    background:var(--surface); color:var(--ink); font-size:.92rem; line-height:1.5; max-width:60ch;
  }
  .chip-desc strong{ color:var(--accent-strong); }

  /* ---------- sections ---------- */
  section{ padding-block:56px; }
  section.alt{ background:var(--surface-2); }
  .section-head{ max-width:64ch; margin-bottom:36px; }
  .section-head h2{ font-size:clamp(1.5rem,3vw,2.1rem); margin-top:8px; }
  .section-head .dek{ margin-top:12px; color:var(--ink-soft); }

  .grid{ display:grid; gap:20px; }
  .grid-5{ grid-template-columns:repeat(5,1fr); }
  .grid-3{ grid-template-columns:repeat(3,1fr); }
  .grid-2{ grid-template-columns:repeat(2,1fr); }
  .grid-4{ grid-template-columns:repeat(4,1fr); }
  @media (max-width:900px){ .grid-5{ grid-template-columns:repeat(2,1fr);} .grid-3,.grid-4{ grid-template-columns:repeat(2,1fr);} }
  @media (max-width:560px){ .grid-5,.grid-3,.grid-4,.grid-2{ grid-template-columns:1fr; } }

  .card{
    background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
    padding:22px; display:flex; flex-direction:column; gap:12px; height:100%;
  }
  .card .icon{ width:40px; height:40px; border-radius:50%; background:var(--surface-2); display:grid; place-items:center; color:var(--accent-strong); flex:none; }
  .card h3{ font-size:1.1rem; }
  .card p{ color:var(--ink-soft); font-size:.92rem; }
  .card .taglist{ display:flex; flex-wrap:wrap; gap:6px; margin-top:auto; padding-top:10px; }
  .tag{ font-size:.68rem; font-family:'IBM Plex Mono',monospace; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-faint); border:1px solid var(--line); padding:3px 7px; border-radius:100px; }
  .card-link{ margin-top:6px; font-weight:600; font-size:.86rem; color:var(--accent-strong); display:inline-flex; align-items:center; gap:6px; }
  .card:hover{ border-color:var(--accent); box-shadow:var(--shadow); }
  a.card{ transition:border-color .15s, box-shadow .15s; }

  .svc-card{ padding:20px; gap:10px; }
  .svc-card .icon{ width:44px; height:44px; }
  .svc-card .icon svg{ width:22px; height:22px; }
  .svc-card h3{ font-size:1rem; }
  .svc-card p{ font-size:.85rem; margin-top:-2px; }
  .svc-card .card-link{ font-size:.8rem; }

  .gallery-mosaic{ display:grid; grid-template-columns:repeat(4,1fr); grid-auto-rows:150px; gap:10px; grid-auto-flow:dense; }
  .gallery-mosaic .g-item{ position:relative; overflow:hidden; border-radius:var(--radius); border:1px solid var(--line); background:var(--surface); }
  .gallery-mosaic .g-item img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .35s ease; }
  .gallery-mosaic .g-item:hover img{ transform:scale(1.05); }
  .g-item video{ width:100%; height:100%; object-fit:cover; display:block; }
  .g-video::after{
    content:"▶ VIDEO"; position:absolute; left:10px; bottom:10px; z-index:1;
    font-family:'IBM Plex Mono',monospace; font-size:.62rem; letter-spacing:.08em;
    color:#fff; background:rgba(18,18,18,.55); padding:4px 8px; border-radius:100px; pointer-events:none;
  }
  .gallery-mosaic .g-big{ grid-column:span 2; grid-row:span 2; }
  @media (max-width:900px){ .gallery-mosaic{ grid-template-columns:repeat(2,1fr); grid-auto-rows:140px; } }
  @media (max-width:560px){ .gallery-mosaic{ grid-template-columns:repeat(2,1fr); grid-auto-rows:110px; gap:8px; } .gallery-mosaic .g-big{ grid-column:span 2; grid-row:span 1; } }
  .fitness-gallery .g-item{ aspect-ratio:4/3; border-radius:var(--radius); overflow:hidden; border:1px solid var(--line); position:relative; background:var(--surface); }

  .feature-row{ display:grid; grid-template-columns:1fr 1fr; gap:44px; align-items:center; padding-block:34px; border-top:1px solid var(--line); }
  .feature-row:last-child{ border-bottom:1px solid var(--line); }
  .feature-row.rev{ direction:rtl; } .feature-row.rev > *{ direction:ltr; }
  .feature-row p{ color:var(--ink-soft); margin-top:12px; }
  .feature-row h3{ font-size:1.3rem; }
  @media (max-width:800px){ .feature-row, .feature-row.rev{ grid-template-columns:1fr; direction:ltr; } }

  .art-panel{ aspect-ratio:4/3; border-radius:var(--radius); overflow:hidden; border:1px solid var(--line); position:relative; background:var(--surface); }
  .art-panel svg{ width:100%; height:100%; display:block; }
  .art-panel img, .masthead-art img{ width:100%; height:100%; object-fit:cover; display:block; }

  .stat-strip{ display:flex; flex-wrap:wrap; gap:0; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; }
  .stat{ flex:1 1 160px; padding:20px; border-right:1px solid var(--line); background:var(--surface); }
  .stat:last-child{ border-right:none; }
  .stat b{ display:block; font-family:'Bricolage Grotesque',sans-serif; font-size:1.6rem; }
  .stat span{ font-size:.78rem; color:var(--ink-soft); }

  /* team */
  .team-group{ margin-bottom:34px; }
  .team-group h2{ font-size:1rem; font-family:'IBM Plex Mono',monospace; text-transform:uppercase; letter-spacing:.08em; color:var(--ink-faint); margin-bottom:14px; font-weight:500; }
  .roster{ display:flex; flex-wrap:wrap; gap:10px; }
  .badge{
    display:flex; align-items:center; gap:8px; padding:6px 12px 6px 6px; border:1px solid var(--line); border-radius:100px; background:var(--surface); font-size:.85rem;
  }
  .mono-av{
    width:28px; height:28px; border-radius:50%; background:var(--surface-2); color:var(--accent-strong);
    display:grid; place-items:center; font-family:'Bricolage Grotesque',sans-serif; font-weight:700; font-size:.72rem; flex:none;
    border:1px solid var(--line);
  }
  .mono-av.photo{ object-fit:cover; }
  .mono-av.lg{ width:46px; height:46px; font-size:1rem; }

  .trainer-card{ display:flex; align-items:center; gap:12px; padding-block:14px; border-top:1px solid var(--line); }
  .trainer-card .tc-k{ font-family:'IBM Plex Mono',monospace; font-size:.68rem; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-faint); display:block; margin-bottom:2px; }
  .trainer-card .tc-v{ font-size:.95rem; font-weight:600; }

  /* pricing */
  .toggle-row{ display:inline-flex; border:1px solid var(--line); border-radius:100px; padding:3px; gap:2px; margin-bottom:28px; background:var(--surface); }
  .toggle-row button{ border:none; background:none; padding:8px 16px; border-radius:100px; font-size:.85rem; font-weight:600; color:var(--ink-soft); }
  .toggle-row button.active{ background:var(--accent); color:var(--accent-ink); }
  .price-card{ background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:26px; display:flex; flex-direction:column; gap:14px; }
  .price-card.hi{ border-color:var(--accent); box-shadow:var(--shadow); position:relative; }
  .price-card.hi::before{ content:"Beliebt"; position:absolute; top:-11px; right:20px; background:var(--accent); color:var(--accent-ink); font-size:.66rem; text-transform:uppercase; letter-spacing:.06em; font-family:'IBM Plex Mono',monospace; padding:4px 9px; border-radius:100px; }
  html[lang="en"] .price-card.hi::before{ content:"Popular"; }
  .price-card .amount{ font-family:'Bricolage Grotesque',sans-serif; font-size:2.1rem; }
  .price-card .amount sup{ font-size:.9rem; color:var(--ink-soft); font-weight:500; }
  .price-card .desc{ color:var(--ink-soft); font-size:.88rem; margin-top:-8px; }
  .price-card ul{ display:flex; flex-direction:column; gap:9px; margin-top:4px; }
  .price-card li{ display:flex; gap:9px; font-size:.87rem; color:var(--ink-soft); }
  .price-card li::before{ content:"✓"; color:var(--accent-strong); font-weight:700; flex:none; }
  .fineprint{ font-size:.78rem; color:var(--ink-faint); margin-top:18px; }

  /* schedule */
  .tt-wrap{ overflow-x:auto; border:1px solid var(--line); border-radius:var(--radius); }
  table.tt{ border-collapse:collapse; width:100%; min-width:760px; font-size:.84rem; }
  table.tt th, table.tt td{ border-bottom:1px solid var(--line); border-right:1px solid var(--line); padding:10px 12px; text-align:left; vertical-align:top; }
  table.tt th{ background:var(--surface-2); font-family:'IBM Plex Mono',monospace; text-transform:uppercase; font-size:.68rem; letter-spacing:.06em; color:var(--ink-soft); }
  table.tt td:last-child, table.tt th:last-child{ border-right:none; }
  table.tt tbody tr:last-child td{ border-bottom:none; }
  .tt-slot b{ display:block; font-size:.86rem; }
  .tt-slot span{ font-family:'IBM Plex Mono',monospace; font-size:.72rem; color:var(--ink-faint); }
  .tt-slot small{ display:block; font-size:.68rem; color:var(--ink-faint); margin-top:2px; }
  .tt-slot{ padding:0 !important; }
  .tt-slot-btn{ display:block; width:100%; height:100%; text-align:left; background:none; border:none; padding:10px 12px; font:inherit; color:inherit; cursor:pointer; border-radius:2px; }
  .tt-slot-btn:hover, .tt-slot-btn:focus-visible{ background:color-mix(in srgb, var(--accent) 14%, transparent); outline:none; }

  .kursplan-notice{
    display:flex; align-items:center; gap:16px; flex-wrap:wrap;
    background:color-mix(in srgb, var(--accent) 12%, var(--surface)); border:1px solid var(--accent);
    border-radius:var(--radius); padding:16px 20px; margin-bottom:16px;
  }
  .kursplan-notice .notice-icon{
    display:flex; align-items:center; justify-content:center; flex:none;
    width:26px; height:26px; border-radius:50%; background:var(--accent); color:var(--accent-ink);
    font-family:'IBM Plex Mono',monospace; font-weight:700; font-size:.82rem; font-style:normal;
  }
  .kursplan-notice p{ flex:1 1 260px; font-size:.9rem; color:var(--ink); margin:0; }
  .kursplan-notice .btn{ flex:none; }
  .tt-hint{ font-size:.8rem; color:var(--ink-faint); margin-bottom:10px; }

  .course-modal-overlay{
    position:fixed; inset:0; z-index:210;
    background:rgba(15,15,15,.55);
    display:flex; align-items:center; justify-content:center; padding:20px;
  }
  .course-modal-overlay[hidden]{ display:none; }
  .course-modal{
    position:relative; background:var(--surface); border-radius:var(--radius); border:1px solid var(--line);
    box-shadow:var(--shadow); max-width:440px; width:100%; padding:28px; max-height:86vh; overflow-y:auto;
  }
  .course-modal-close{
    position:absolute; top:14px; right:14px; width:30px; height:30px; border-radius:50%;
    background:var(--surface-2); border:1px solid var(--line); font-size:1.1rem; line-height:1; color:var(--ink-soft);
  }
  .course-modal-close:hover{ color:var(--ink); }
  .course-modal-day{ font-family:'IBM Plex Mono',monospace; font-size:.72rem; text-transform:uppercase; letter-spacing:.06em; color:var(--accent-strong); margin-bottom:6px; }
  .course-modal h3{ font-family:'Bricolage Grotesque',sans-serif; font-size:1.25rem; margin-bottom:10px; padding-right:26px; }
  .course-modal-desc{ font-size:.92rem; color:var(--ink-soft); line-height:1.55; margin-bottom:4px; }
  .course-modal-meta{ margin-top:4px; }
  .course-modal-note{ font-size:.76rem; color:var(--ink-faint); margin-top:16px; padding-top:14px; border-top:1px solid var(--line); line-height:1.5; }

  .course-group{ margin-bottom:34px; }
  .course-group:last-child{ margin-bottom:0; }
  .course-group h3{ font-size:1rem; font-family:'IBM Plex Mono',monospace; text-transform:uppercase; letter-spacing:.08em; color:var(--ink-faint); margin-bottom:14px; font-weight:500; }
  .course-list{ display:grid; grid-template-columns:repeat(2,1fr); gap:0 32px; }
  .course-item{ padding:13px 0; border-top:1px solid var(--line); }
  .course-item h4{ font-size:.92rem; margin-bottom:3px; }
  .course-item p{ font-size:.83rem; color:var(--ink-soft); }
  @media (max-width:700px){ .course-list{ grid-template-columns:1fr; } }

  /* press/news */
  .press-list{ display:flex; flex-direction:column; }
  .press-item{ display:grid; grid-template-columns:130px 1fr auto; gap:20px; align-items:baseline; padding-block:20px; border-top:1px solid var(--line); }
  .press-list a.press-item:last-child{ border-bottom:1px solid var(--line); }
  .press-item .src{ font-family:'IBM Plex Mono',monospace; font-size:.72rem; text-transform:uppercase; letter-spacing:.05em; color:var(--accent-strong); }
  .press-item h3{ font-size:1.02rem; font-weight:600; font-family:'Work Sans',sans-serif; }
  .press-item p{ color:var(--ink-soft); font-size:.86rem; margin-top:5px; }
  .press-item .go{ color:var(--ink-faint); font-size:.85rem; }
  @media (max-width:640px){ .press-item{ grid-template-columns:1fr; gap:6px; } }
  .tabs{ display:inline-flex; border:1px solid var(--line); border-radius:100px; padding:3px; margin-bottom:10px; }
  .tabs button{ border:none; background:none; padding:8px 16px; border-radius:100px; font-size:.85rem; font-weight:600; color:var(--ink-soft); }
  .tabs button.active{ background:var(--ink); color:var(--bg); }

  /* faq */
  .faq-item{ border-top:1px solid var(--line); }
  .faq-list .faq-item:last-child{ border-bottom:1px solid var(--line); }
  .faq-q{ width:100%; display:flex; justify-content:space-between; gap:16px; align-items:center; background:none; border:none; padding:18px 2px; text-align:left; font-size:.96rem; font-weight:600; color:var(--ink); }
  .faq-q .plus{ font-family:'IBM Plex Mono',monospace; color:var(--accent-strong); flex:none; transition:transform .15s; }
  .faq-item.open .plus{ transform:rotate(45deg); }
  .faq-a{ max-height:0; overflow:hidden; transition:max-height .2s ease; }
  .faq-item.open .faq-a{ max-height:400px; }
  .faq-a p{ padding:0 2px 18px; color:var(--ink-soft); font-size:.9rem; max-width:68ch; }

  /* contact */
  .contact-grid{ display:grid; grid-template-columns:1fr 1fr; gap:40px; }
  @media (max-width:800px){ .contact-grid{ grid-template-columns:1fr; } }
  .info-line{ display:flex; gap:12px; padding-block:12px; border-top:1px solid var(--line); }
  .info-line:last-child{ border-bottom:1px solid var(--line); }
  .info-line .k{ width:120px; flex:none; font-family:'IBM Plex Mono',monospace; font-size:.72rem; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-faint); padding-top:2px; }
  .info-line .v{ font-size:.94rem; }
  .info-line .v a:hover{ color:var(--accent-strong); }
  .map-panel{ aspect-ratio:4/3; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; position:relative; display:block; }
  .map-panel .map-cta{ position:absolute; inset:auto 14px 14px 14px; background:var(--bg); border:1px solid var(--line); border-radius:var(--radius); padding:12px 16px; font-size:.86rem; font-weight:600; display:flex; align-items:center; justify-content:space-between; gap:10px; color:var(--ink); }
  .map-panel:hover .map-cta{ border-color:var(--accent); color:var(--accent-strong); }

  /* footer */
  footer{ background:var(--ink); color:var(--bg); margin-top:0; }
  footer a{ color:var(--bg); }
  footer .wrap{ padding-block:48px 26px; }
  .foot-grid{ display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:30px; padding-bottom:34px; border-bottom:1px solid rgba(241,240,237,.16); }
  @media (max-width:800px){ .foot-grid{ grid-template-columns:1fr 1fr; } }
  @media (max-width:520px){ .foot-grid{ grid-template-columns:1fr; } }
  .foot-grid h4{ font-family:'IBM Plex Mono',monospace; text-transform:uppercase; letter-spacing:.07em; font-size:.7rem; color:color-mix(in srgb, var(--bg) 55%, transparent); margin-bottom:14px; font-weight:500; }
  .foot-grid a, .foot-grid p{ display:block; font-size:.86rem; margin-bottom:9px; color:color-mix(in srgb, var(--bg) 88%, transparent); }
  .foot-grid a:hover{ color:var(--accent); }
  .foot-bottom{ display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px; padding-top:22px; font-size:.78rem; color:color-mix(in srgb, var(--bg) 55%, transparent); }
  .foot-bottom a{ color:color-mix(in srgb, var(--bg) 70%, transparent); }
  .social-row{ display:flex; gap:10px; margin-top:6px; }
  .social-row a{ width:34px; height:34px; border:1px solid rgba(241,240,237,.25); border-radius:50%; display:grid; place-items:center; }
  .social-row a:hover{ border-color:var(--accent); color:var(--accent); }

  /* ---------- floating WhatsApp button (always reachable) ---------- */
  .wa-float{
    position:fixed; right:20px; bottom:20px; z-index:150;
    width:56px; height:56px; border-radius:50%;
    background:#25D366; color:#fff;
    display:grid; place-items:center;
    box-shadow:0 6px 18px rgba(0,0,0,.28);
    transition:transform .15s ease, box-shadow .15s ease;
  }
  .wa-float:hover{ transform:translateY(-2px) scale(1.05); box-shadow:0 10px 24px rgba(0,0,0,.32); color:#fff; }
  .wa-float svg{ width:28px; height:28px; }
  @media (max-width:640px){
    .wa-float{ right:14px; bottom:14px; width:50px; height:50px; }
    .wa-float svg{ width:25px; height:25px; }
  }
  .foot-promo{ display:grid; grid-template-columns:1.3fr 1fr; gap:40px; padding-block:38px; border-bottom:1px solid rgba(241,240,237,.16); }
  @media (max-width:800px){ .foot-promo{ grid-template-columns:1fr; gap:30px; } }
  .foot-promo h4{ font-family:'IBM Plex Mono',monospace; text-transform:uppercase; letter-spacing:.07em; font-size:.7rem; color:color-mix(in srgb, var(--bg) 55%, transparent); margin-bottom:12px; font-weight:500; }
  .foot-app{ display:flex; gap:28px; align-items:flex-start; flex-wrap:wrap; }
  .foot-app-text{ flex:1; min-width:210px; }
  .foot-app-text p{ font-size:.86rem; line-height:1.5; color:color-mix(in srgb, var(--bg) 82%, transparent); max-width:38ch; margin-bottom:16px; }
  .app-badges{ display:flex; flex-direction:column; gap:10px; max-width:160px; }
  .store-badge{ display:block; width:160px; height:50px; object-fit:contain; object-position:left center; }
  .pill-btn{ display:block; width:100%; text-align:center; padding:13px 18px; border:1px solid rgba(241,240,237,.32); border-radius:999px; font-size:.82rem; font-weight:700; color:var(--bg); background:transparent; }
  .pill-btn:hover{ border-color:var(--accent); color:var(--accent); }
  .pill-btn-outline{ cursor:pointer; font-family:'IBM Plex Mono',monospace; letter-spacing:.02em; }
  .app-qr-wrap{ text-align:center; flex:none; max-width:230px; margin:0 auto; }
  .app-qr{ width:140px; height:140px; border-radius:12px; background:#fff; padding:10px; display:block; margin:0 auto; }
  .app-qr-hint{ margin-top:14px; margin-left:auto; margin-right:auto; max-width:220px; text-align:center; font-size:.76rem; line-height:1.5; overflow-wrap:break-word; word-break:break-word; color:color-mix(in srgb, var(--bg) 68%, transparent); }
  .app-code-box{ margin-top:14px; }
  .app-code{ display:block; text-align:center; font-family:'IBM Plex Mono',monospace; font-size:.72rem; line-height:1.4; word-break:break-all; color:color-mix(in srgb, var(--bg) 88%, transparent); background:rgba(241,240,237,.08); border:1px solid rgba(241,240,237,.22); border-radius:10px; padding:12px 14px; }
  .app-code-copy{ margin-top:12px; }
  .app-code-copy.copied{ border-color:var(--accent); color:var(--accent); }
  .foot-map{ display:block; border-radius:10px; overflow:hidden; margin-bottom:14px; border:1px solid rgba(241,240,237,.25); }
  .foot-map img{ display:block; width:100%; height:auto; filter:saturate(.9); transition:filter .2s; }
  .foot-map:hover img{ filter:saturate(1.15); }
  .foot-anfahrt p{ font-size:.86rem; line-height:1.5; color:color-mix(in srgb, var(--bg) 82%, transparent); margin-bottom:10px; }
  .foot-anfahrt .parking-note{ display:flex; gap:8px; align-items:flex-start; }
  .foot-anfahrt .link-row{ display:flex; flex-direction:column; gap:9px; margin-top:14px; }
  .foot-anfahrt .link-row a{ font-weight:600; font-size:.86rem; color:var(--bg); display:inline-flex; align-items:center; gap:6px; }
  .foot-anfahrt .link-row a:hover{ color:var(--accent); }

  .sr-only{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; }
