Design · Bausteine-Dossier

Bereich · Mobile

Mobile — Layouts für die Handy-Ansicht

Bausteine, die von Anfang an für den kleinen Bildschirm gedacht sind — geerntet aus bewährten Projekten (Bernstein, wecook, frischbar, personal-training) und als Vanilla nachgebaut. Im Telefon-Rahmen gezeigt, sortiert nach Seiten-Aufbau. Akzent per --akzent.

Header & Navigation

Sticky Glas-Header (mobil)

Pol 2 · Klarheit Anlass: mobiler Sticky-Header

Oben verankerter Glas-Header, der beim Scrollen dichter wird und eine Trennlinie anlegt — Orientierung ohne Platz zu kosten. Vorbild: Bernstein Glas-Header.

Ihr Bauvorhaben

Alles im Blick, sauber sortiert.

Scrollen Sie nach unten — der Kopf legt beim Scrollen eine dezente Trennlinie an und wird dichter.

Kuechenmontage

Termin bestaetigt, Material geliefert.

Badsanierung

Angebot wartet auf Ihre Freigabe.

Malerarbeiten

Zwei Raeume, Wunschfarbe abgestimmt.

Terrassenbau

Unterbau geplant, Belag zur Auswahl.

Fenstertausch

Aufmass erledigt, Liefertermin folgt.

Bodenverlegung

Muster ausgewaehlt, Termin in Planung.

<div class="mh1-phone">
  <div class="mh1-notch" aria-hidden="true"></div>
  <!-- .mh1-screen ist die Scroll-Flaeche: overflow-y:auto + height:100% -->
  <div class="mh1-screen">
    <header class="mh1-header">
      <span class="mh1-logo">
        <span class="mh1-logomark" aria-hidden="true">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21h18"/><path d="M5 21V7l7-4 7 4v14"/><path d="M9 21v-6h6v6"/></svg>
        </span>
        Musterbau
      </span>
      <button type="button" class="mh1-iconbtn" aria-label="Benachrichtigungen">
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9"/><path d="M10.3 21a1.94 1.94 0 0 0 3.4 0"/></svg>
        <span class="mh1-badge" aria-hidden="true"></span>
      </button>
    </header>
    <div class="mh1-body">
      <p class="mh1-eyebrow">Ihr Bauvorhaben</p>
      <h1 class="mh1-h1">Alles im Blick, sauber sortiert.</h1>
      <p class="mh1-lead">Scrollen Sie nach unten — der Kopf legt beim Scrollen eine dezente Trennlinie an und wird dichter.</p>
      <!-- 16:10 Bild-Andeutung als CSS-Verlauf (im Projekt durch echtes <img> ersetzen) -->
      <div class="mh1-hero" aria-hidden="true"></div>
      <div class="mh1-card"><h4>Kuechenmontage</h4><p>Termin bestaetigt, Material geliefert.</p><div class="mh1-skel"></div><div class="mh1-skel s2"></div></div>
      <!-- weitere Karten identisch: Badsanierung, Malerarbeiten, Terrassenbau ... (genug zum Scrollen) -->
    </div>
  </div>
</div>

<style>
/* Sticky Glas-Header (mobil) — alle Klassen mh1- gescopt */
.mh1-phone{--akzent:#7c87ff;position:relative;overflow:hidden;max-width:360px;margin:0 auto;height:640px;
  border-radius:30px;border:1px solid #26262c;background:#111114;
  box-shadow:0 24px 60px -24px rgba(0,0,0,.8);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:#e9e9ee}
.mh1-phone *{box-sizing:border-box}
.mh1-notch{position:absolute;top:9px;left:50%;transform:translateX(-50%);z-index:20;
  width:110px;height:26px;border-radius:0 0 16px 16px;background:#0c0c0f}
.mh1-notch::after{content:"";position:absolute;top:9px;left:50%;transform:translateX(-50%);
  width:44px;height:5px;border-radius:99px;background:#26262c}
/* Scroll-Flaeche — hier lebt position:sticky */
.mh1-screen{position:relative;height:100%;overflow-y:auto;background:#16161a;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.mh1-screen::-webkit-scrollbar{width:0}
/* Der Glas-Header */
.mh1-header{position:sticky;top:0;z-index:10;
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:44px 16px 14px;
  background:rgba(22,22,26,.55);
  border-bottom:1px solid transparent;
  -webkit-backdrop-filter:blur(14px) saturate(150%);backdrop-filter:blur(14px) saturate(150%);
  transition:background .28s ease,border-color .28s ease,padding .28s ease}
.mh1-header.scrolled{background:rgba(20,20,24,.82);border-bottom-color:#26262c;padding-top:38px;padding-bottom:12px}
.mh1-logo{display:flex;align-items:center;gap:10px;font-weight:600;font-size:15px;letter-spacing:.2px;color:#f4f4f5}
.mh1-logomark{width:30px;height:30px;border-radius:9px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--akzent,#7c87ff),#3f47b3)}
.mh1-logomark svg{width:17px;height:17px;color:#fff}
.mh1-iconbtn{-webkit-appearance:none;appearance:none;position:relative;
  width:46px;height:46px;border-radius:13px;border:1px solid #26262c;background:rgba(28,28,34,.6);
  color:#e9e9ee;cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:border-color .18s ease,background .18s ease,transform .18s ease}
.mh1-iconbtn svg{width:22px;height:22px}
.mh1-badge{position:absolute;top:9px;right:9px;width:8px;height:8px;border-radius:50%;
  background:var(--akzent,#7c87ff);border:2px solid #16161a}
@media (hover:hover){.mh1-iconbtn:hover{border-color:var(--akzent,#7c87ff);background:#1c1c22}}
.mh1-iconbtn:active{transform:scale(.94)}
.mh1-iconbtn:focus-visible{outline:2px solid var(--akzent,#7c87ff);outline-offset:2px}
/* Inhalt zum Scrollen */
.mh1-body{padding:18px 16px 28px}
.mh1-eyebrow{font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:var(--akzent,#7c87ff);margin:0 0 8px}
.mh1-h1{font-size:25px;line-height:1.18;font-weight:700;letter-spacing:-.01em;margin:0 0 10px;color:#f4f4f5}
.mh1-lead{font-size:14px;line-height:1.6;color:#a1a1aa;margin:0 0 20px}
.mh1-hero{aspect-ratio:16/10;border-radius:16px;border:1px solid #26262c;margin:0 0 18px;position:relative;overflow:hidden;
  background:radial-gradient(120% 120% at 80% 12%,color-mix(in srgb,var(--akzent,#7c87ff) 42%,transparent),transparent 55%),
    linear-gradient(135deg,#22222e,#16161a)}
.mh1-hero::after{content:"";position:absolute;inset:0;
  background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);
  background-size:28px 28px;
  -webkit-mask-image:radial-gradient(ellipse 70% 70% at 65% 30%,#000 20%,transparent 80%);
  mask-image:radial-gradient(ellipse 70% 70% at 65% 30%,#000 20%,transparent 80%)}
.mh1-card{background:#1c1c22;border:1px solid #26262c;border-radius:16px;padding:16px;margin-bottom:12px}
.mh1-card h4{margin:0 0 6px;font-size:14px;font-weight:600;color:#f4f4f5}
.mh1-card p{margin:0;font-size:13px;line-height:1.55;color:#a1a1aa}
.mh1-skel{height:9px;border-radius:99px;background:#26262c;margin-top:10px}
.mh1-skel.s2{width:64%}
@media (prefers-reduced-motion:reduce){
  .mh1-header{transition:none}
  .mh1-iconbtn{transition:none}
  .mh1-iconbtn:active{transform:none}
  .mh1-screen{scroll-behavior:auto}
}
</style>

<script>
/* Beim Scrollen der .mh1-screen bekommt der Header die Klasse .scrolled
   (dichterer Hintergrund + Trennlinie). Scroll-Ziel ist die INNERE Flaeche,
   nicht window — sonst greift es im echten Handy-Vollbild nicht. */
(function(){
  var phones=document.querySelectorAll('.mh1-phone');
  phones.forEach(function(p){
    var screen=p.querySelector('.mh1-screen');
    var header=p.querySelector('.mh1-header');
    if(!screen||!header)return;
    screen.addEventListener('scroll',function(){
      header.classList.toggle('scrolled',screen.scrollTop>8);
    },{passive:true});
  });
})();
</script>

Hamburger → Off-Canvas-Drawer

Pol 1 · Craft Anlass: mobile Navigation (Drawer)

Hamburger morpht zu X, öffnet ein Off-Canvas-Panel von rechts über einem weichgezeichneten Overlay; Scroll gesperrt, Klick/Link/Escape schließt. Vorbild: Bernstein/wecook Mobile-Drawer.

Meisterbetrieb seit 2004

Handwerk, das hält — termintreu geliefert.

Tippen Sie oben rechts auf das Menü. Das Panel schiebt von rechts herein, der Hintergrund wird gesperrt und weichgezeichnet.

Küchenmontage

Aufmaß, Planung und sauberer Einbau aus einer Hand.

Trockenbau

Wände, Decken und Dämmung für ruhige Räume.

Renovierung

Vom Altbau zum Wohntraum in wenigen Wochen.

<style>
.mh2-phone{--akzent:#7c87ff;position:relative;overflow:hidden;max-width:360px;margin:0 auto;height:640px;border-radius:30px;border:1px solid #26262c;background:#111114;box-shadow:0 24px 60px -24px rgba(0,0,0,.8);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:#e9e9ee}
.mh2-phone *{box-sizing:border-box}
.mh2-notch{position:absolute;top:9px;left:50%;transform:translateX(-50%);width:110px;height:24px;border-radius:0 0 14px 14px;background:#0c0c0f;z-index:40}
.mh2-notch::after{content:"";position:absolute;top:9px;left:50%;transform:translateX(-50%);width:44px;height:5px;border-radius:99px;background:#26262c}
.mh2-screen{position:relative;height:100%;overflow-y:auto;overflow-x:hidden;background:#16161a;-webkit-overflow-scrolling:touch}
.mh2-screen.is-locked{overflow-y:hidden}
/* Topbar (sticky) */
.mh2-topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:34px 16px 14px;background:rgba(28,28,34,.82);-webkit-backdrop-filter:saturate(1.3) blur(12px);backdrop-filter:saturate(1.3) blur(12px);border-bottom:1px solid #26262c}
.mh2-logo{display:flex;align-items:center;gap:10px;font-weight:600;font-size:15px;letter-spacing:.2px;color:#f4f4f5}
.mh2-logomark{width:30px;height:30px;border-radius:9px;background:linear-gradient(140deg,var(--akzent,#7c87ff),#3f47b3);display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.mh2-logomark svg{width:17px;height:17px;color:#fff}
/* Hamburger → X */
.mh2-burger{position:relative;-webkit-appearance:none;appearance:none;width:46px;height:46px;border:1px solid #26262c;border-radius:13px;background:#16161a;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:border-color .18s ease,background .18s ease}
.mh2-burger-lines{position:relative;width:20px;height:14px;flex:0 0 auto}
.mh2-burger-lines span{position:absolute;left:0;width:100%;height:2px;border-radius:2px;background:#e9e9ee;transition:transform .26s cubic-bezier(.4,0,.2,1),opacity .18s ease,top .26s cubic-bezier(.4,0,.2,1)}
.mh2-burger-lines span:nth-child(1){top:0}
.mh2-burger-lines span:nth-child(2){top:6px}
.mh2-burger-lines span:nth-child(3){top:12px}
.mh2-burger[aria-expanded="true"] .mh2-burger-lines span:nth-child(1){top:6px;transform:rotate(45deg)}
.mh2-burger[aria-expanded="true"] .mh2-burger-lines span:nth-child(2){opacity:0}
.mh2-burger[aria-expanded="true"] .mh2-burger-lines span:nth-child(3){top:6px;transform:rotate(-45deg)}
@media (hover:hover){.mh2-burger:hover{border-color:var(--akzent,#7c87ff);background:#1c1c22}}
.mh2-burger:focus-visible{outline:2px solid var(--akzent,#7c87ff);outline-offset:2px}
/* Inhalt */
.mh2-content{padding:22px 18px 40px}
.mh2-eyebrow{font-size:11px;font-weight:600;letter-spacing:1.4px;text-transform:uppercase;color:var(--akzent,#7c87ff);margin:0 0 8px}
.mh2-h1{font-size:25px;line-height:1.18;font-weight:650;margin:0 0 10px;color:#f4f4f5;text-wrap:balance}
.mh2-lead{font-size:14px;line-height:1.6;color:#a1a1aa;margin:0 0 18px}
.mh2-card{background:#1c1c22;border:1px solid #26262c;border-radius:16px;padding:16px;margin-bottom:12px}
.mh2-card h4{margin:0 0 6px;font-size:14px;font-weight:600;color:#f4f4f5}
.mh2-card p{margin:0;font-size:13px;line-height:1.55;color:#a1a1aa}
.mh2-skel{height:9px;border-radius:99px;background:#26262c;margin-top:10px}
.mh2-skel.s2{width:64%}
/* Overlay-Backdrop (blur) */
.mh2-overlay{position:absolute;inset:0;z-index:28;background:rgba(10,10,13,.55);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);opacity:0;visibility:hidden;transition:opacity .28s ease,visibility 0s linear .28s;cursor:pointer}
.mh2-overlay[data-open="true"]{opacity:1;visibility:visible;transition:opacity .28s ease}
/* Off-Canvas-Panel (von rechts) */
.mh2-drawer{position:absolute;top:0;right:0;bottom:0;z-index:30;width:82%;max-width:300px;display:flex;flex-direction:column;background:#1c1c22;border-left:1px solid #26262c;box-shadow:-24px 0 60px -20px rgba(0,0,0,.7);transform:translateX(100%);transition:transform .3s cubic-bezier(.4,0,.2,1)}
.mh2-drawer[data-open="true"]{transform:translateX(0)}
.mh2-drawer-top{display:flex;align-items:center;justify-content:space-between;padding:22px 16px 16px;border-bottom:1px solid #26262c}
.mh2-drawer-title{font-size:12px;font-weight:600;letter-spacing:1.2px;text-transform:uppercase;color:#a1a1aa;margin:0}
.mh2-close{-webkit-appearance:none;appearance:none;width:42px;height:42px;border:1px solid #26262c;border-radius:12px;background:#16161a;color:#e9e9ee;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:border-color .18s ease,background .18s ease}
.mh2-close svg{width:20px;height:20px}
@media (hover:hover){.mh2-close:hover{border-color:var(--akzent,#7c87ff);background:#1c1c22}}
.mh2-close:focus-visible{outline:2px solid var(--akzent,#7c87ff);outline-offset:2px}
.mh2-menu{list-style:none;margin:0;padding:10px 12px;overflow-y:auto;flex:1}
.mh2-menu li{margin:0}
.mh2-menu a{display:flex;align-items:center;gap:14px;min-height:48px;padding:12px 14px;border-radius:13px;color:#e9e9ee;text-decoration:none;font-size:15px;font-weight:500;transition:background .16s ease,color .16s ease}
.mh2-menu a svg{width:20px;height:20px;color:#a1a1aa;flex:0 0 auto;transition:color .16s ease,transform .16s ease}
.mh2-menu a[aria-current="page"]{color:var(--akzent,#7c87ff)}
.mh2-menu a[aria-current="page"] svg{color:var(--akzent,#7c87ff)}
@media (hover:hover){.mh2-menu a:hover{background:#16161a;color:#f4f4f5}.mh2-menu a:hover svg{color:var(--akzent,#7c87ff);transform:translateX(2px)}}
.mh2-menu a:focus-visible{outline:2px solid var(--akzent,#7c87ff);outline-offset:2px}
.mh2-drawer-foot{padding:12px 16px calc(18px + env(safe-area-inset-bottom,0px));border-top:1px solid #26262c}
.mh2-cta{display:flex;align-items:center;justify-content:center;gap:8px;min-height:48px;border-radius:13px;background:var(--akzent,#7c87ff);color:#0e0e12;font-size:15px;font-weight:600;text-decoration:none;transition:filter .16s ease}
.mh2-cta svg{width:18px;height:18px}
@media (hover:hover){.mh2-cta:hover{filter:brightness(1.08)}}
.mh2-cta:focus-visible{outline:2px solid #f4f4f5;outline-offset:2px}
/* Motion neutralisieren */
@media (prefers-reduced-motion: reduce){
  .mh2-burger,.mh2-burger-lines span,.mh2-close,.mh2-menu a,.mh2-menu a svg,.mh2-cta,.mh2-overlay,.mh2-drawer{transition:none}
}
</style>

<div class="mh2-phone">
  <div class="mh2-notch" aria-hidden="true"></div>
  <div class="mh2-screen" id="mh2-screen">

    <div class="mh2-topbar">
      <span class="mh2-logo">
        <span class="mh2-logomark" aria-hidden="true">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21h18"/><path d="M5 21V7l7-4 7 4v14"/><path d="M9 21v-6h6v6"/></svg>
        </span>
        Meisterbau
      </span>
      <button type="button" class="mh2-burger" id="mh2-burger" aria-expanded="false" aria-controls="mh2-drawer" aria-label="Menü öffnen">
        <span class="mh2-burger-lines" aria-hidden="true"><span></span><span></span><span></span></span>
      </button>
    </div>

    <div class="mh2-content">
      <p class="mh2-eyebrow">Meisterbetrieb seit 2004</p>
      <h1 class="mh2-h1">Handwerk, das hält — termintreu geliefert.</h1>
      <p class="mh2-lead">Tippen Sie oben rechts auf das Menü. Das Panel schiebt von rechts herein, der Hintergrund wird gesperrt und weichgezeichnet.</p>
      <div class="mh2-card">
        <h4>Küchenmontage</h4>
        <p>Aufmaß, Planung und sauberer Einbau aus einer Hand.</p>
        <div class="mh2-skel" aria-hidden="true"></div>
        <div class="mh2-skel s2" aria-hidden="true"></div>
      </div>
      <!-- weitere .mh2-card ... -->
    </div>

    <aside class="mh2-drawer" id="mh2-drawer" data-open="false" aria-hidden="true" aria-label="Hauptmenü">
      <div class="mh2-drawer-top">
        <p class="mh2-drawer-title">Menü</p>
        <button type="button" class="mh2-close" id="mh2-close" aria-label="Menü schließen">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>
        </button>
      </div>
      <ul class="mh2-menu">
        <li><a href="#" aria-current="page"><svg ...></svg>Startseite</a></li>
        <li><a href="#"><svg ...></svg>Leistungen</a></li>
        <li><a href="#"><svg ...></svg>Referenzen</a></li>
        <li><a href="#"><svg ...></svg>Über uns</a></li>
        <li><a href="#"><svg ...></svg>Kontakt</a></li>
      </ul>
      <div class="mh2-drawer-foot">
        <a href="#" class="mh2-cta"><svg ...></svg>Termin anfragen</a>
      </div>
    </aside>
    <div class="mh2-overlay" id="mh2-overlay" data-open="false" aria-hidden="true"></div>

  </div>
</div>

<script>
(function(){
  var burger=document.getElementById("mh2-burger");
  var drawer=document.getElementById("mh2-drawer");
  var overlay=document.getElementById("mh2-overlay");
  var closeBtn=document.getElementById("mh2-close");
  var screen=document.getElementById("mh2-screen");
  var links=drawer.querySelectorAll("a");
  var isOpen=false;
  function open(){
    isOpen=true;
    drawer.setAttribute("data-open","true");
    overlay.setAttribute("data-open","true");
    drawer.setAttribute("aria-hidden","false");
    overlay.setAttribute("aria-hidden","false");
    burger.setAttribute("aria-expanded","true");
    burger.setAttribute("aria-label","Menü schließen");
    screen.classList.add("is-locked");
    closeBtn.focus();
  }
  function close(focusBurger){
    isOpen=false;
    drawer.setAttribute("data-open","false");
    overlay.setAttribute("data-open","false");
    drawer.setAttribute("aria-hidden","true");
    overlay.setAttribute("aria-hidden","true");
    burger.setAttribute("aria-expanded","false");
    burger.setAttribute("aria-label","Menü öffnen");
    screen.classList.remove("is-locked");
    if(focusBurger!==false){burger.focus();}
  }
  burger.addEventListener("click",function(){isOpen?close():open();});
  closeBtn.addEventListener("click",function(){close();});
  overlay.addEventListener("click",function(){close();});
  for(var i=0;i<links.length;i++){links[i].addEventListener("click",function(){close(false);});}
  document.addEventListener("keydown",function(e){if(e.key==="Escape"&&isOpen){close();}});
})();
</script>

Untere Tab-Navigation (Bottom-Nav)

Pol 2 · Klarheit Anlass: mobile Bottom-Nav

Feste Tab-Leiste am unteren Rand mit vier Hauptbereichen im Daumenbereich, aktiver Eintrag im Akzent — app-artige Grundnavigation.

Willkommen

Ihre Projekte im Blick

Alles Wichtige auf einen Griff — von der K/ueche/nmontage bis zur Abnahme.

K/ueche/nmontage

Termin best/aetig/t, Material geliefert.

Badsanierung

Angebot wartet auf Ihre Freigabe.

Fassade Nord

Ger/uest/ steht, Vorarbeiten laufen.

Aufma/ss/ Dachgeschoss

Unterlagen zur Pr/uefun/g bereit.

<style>
.mh3-phone{--akzent:#7c87ff;position:relative;overflow:hidden;max-width:360px;margin:0 auto;height:640px;border-radius:30px;border:1px solid #26262c;background:#111114;box-shadow:0 26px 64px -26px rgba(0,0,0,.85);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:#e9e9ee}
.mh3-phone *{box-sizing:border-box}
.mh3-notch{position:absolute;top:11px;left:50%;transform:translateX(-50%);width:100px;height:6px;border-radius:99px;background:#26262c;z-index:6;pointer-events:none}
.mh3-screen{position:relative;height:100%;overflow-y:auto;background:#16161a;-webkit-overflow-scrolling:touch}
/* Topbar (sticky oben) */
.mh3-topbar{position:sticky;top:0;z-index:4;display:flex;align-items:center;justify-content:space-between;padding:30px 18px 14px;background:rgba(28,28,34,.86);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid #26262c}
.mh3-logo{display:flex;align-items:center;gap:10px;font-weight:600;font-size:15px;letter-spacing:.2px;color:#f4f4f5}
.mh3-logomark{width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,var(--akzent,#7c87ff),#3f47b3);display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.mh3-logomark svg{width:17px;height:17px;color:#fff}
.mh3-bell{-webkit-appearance:none;appearance:none;position:relative;border:1px solid #26262c;background:#16161a;color:#e9e9ee;width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:border-color .18s ease,background .18s ease}
.mh3-bell svg{width:21px;height:21px}
.mh3-bell::after{content:"";position:absolute;top:9px;right:9px;width:8px;height:8px;border-radius:99px;background:var(--akzent,#7c87ff);border:2px solid #16161a}
@media (hover:hover){.mh3-bell:hover{border-color:var(--akzent,#7c87ff);background:#1c1c22}}
.mh3-bell:focus-visible{outline:2px solid var(--akzent,#7c87ff);outline-offset:2px}
/* Inhalt (scrollt) */
.mh3-content{padding:20px 18px 22px}
.mh3-eyebrow{font-size:11px;font-weight:600;letter-spacing:1.4px;text-transform:uppercase;color:var(--akzent,#7c87ff);margin:0 0 8px}
.mh3-h1{font-size:24px;line-height:1.2;font-weight:650;margin:0 0 8px;color:#f4f4f5}
.mh3-lead{font-size:14px;line-height:1.55;color:#a1a1aa;margin:0 0 18px}
.mh3-card{background:#1c1c22;border:1px solid #26262c;border-radius:16px;padding:16px;margin-bottom:12px}
.mh3-card h4{margin:0 0 6px;font-size:14px;font-weight:600;color:#f4f4f5}
.mh3-card p{margin:0;font-size:13px;line-height:1.5;color:#a1a1aa}
.mh3-skel{height:9px;border-radius:99px;background:#26262c;margin-top:9px}
.mh3-skel.s2{width:68%}
/* Bottom-Nav (sticky unten, respektiert Safe-Area) */
.mh3-tabbar{position:sticky;bottom:0;z-index:5;display:flex;gap:2px;background:rgba(28,28,34,.9);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid #26262c;padding:8px 6px calc(8px + env(safe-area-inset-bottom,0px))}
.mh3-tab{flex:1;-webkit-appearance:none;appearance:none;border:0;background:none;cursor:pointer;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:48px;padding:6px 4px;border-radius:12px;color:#a1a1aa;font-size:11px;font-weight:500;text-decoration:none;transition:color .18s ease,background .18s ease}
.mh3-tab svg{width:23px;height:23px;transition:transform .18s ease}
.mh3-tab .mh3-dot{position:absolute;top:6px;width:5px;height:5px;border-radius:99px;background:transparent;transition:background .18s ease}
.mh3-tab[aria-current="page"]{color:var(--akzent,#7c87ff)}
.mh3-tab[aria-current="page"] .mh3-dot{background:var(--akzent,#7c87ff)}
@media (hover:hover){.mh3-tab:hover{color:#e9e9ee;background:#16161a}.mh3-tab:hover svg{transform:translateY(-1px)}}
.mh3-tab:focus-visible{outline:2px solid var(--akzent,#7c87ff);outline-offset:-2px}
@media (prefers-reduced-motion: reduce){
  .mh3-bell,.mh3-tab,.mh3-tab svg,.mh3-tab .mh3-dot{transition:none}
}
</style>

<div class="mh3-phone">
  <div class="mh3-notch" aria-hidden="true"></div>
  <div class="mh3-screen">
    <div class="mh3-topbar">
      <span class="mh3-logo">
        <span class="mh3-logomark" aria-hidden="true">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21h18"/><path d="M5 21V7l7-4 7 4v14"/><path d="M9 21v-6h6v6"/></svg>
        </span>
        Musterbau
      </span>
      <button type="button" class="mh3-bell" aria-label="Benachrichtigungen">
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9"/><path d="M10.3 21a1.94 1.94 0 0 0 3.4 0"/></svg>
      </button>
    </div>

    <div class="mh3-content">
      <p class="mh3-eyebrow">Willkommen</p>
      <h1 class="mh3-h1">Ihre Projekte im Blick</h1>
      <p class="mh3-lead">Alles Wichtige auf einen Griff — von der K/ueche/nmontage bis zur Abnahme.</p>
      <div class="mh3-card"><h4>K/ueche/nmontage</h4><p>Termin best/aetig/t, Material geliefert.</p><div class="mh3-skel"></div><div class="mh3-skel s2"></div></div>
      <!-- weitere Karten identisch: Badsanierung, Fassade Nord, Aufma/ss/ Dachgeschoss ... -->
    </div>

    <nav class="mh3-tabbar" aria-label="Hauptnavigation">
      <a href="#" class="mh3-tab" aria-current="page">
        <span class="mh3-dot" aria-hidden="true"></span>
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 10.5 12 3l9 7.5"/><path d="M5 9.5V21h14V9.5"/><path d="M9 21v-6h6v6"/></svg>
        Start
      </a>
      <a href="#" class="mh3-tab">
        <span class="mh3-dot" aria-hidden="true"></span>
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="4" width="18" height="17" rx="2"/><path d="M8 2v4"/><path d="M16 2v4"/><path d="M3 10h18"/></svg>
        Termine
      </a>
      <a href="#" class="mh3-tab">
        <span class="mh3-dot" aria-hidden="true"></span>
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 6h16"/><path d="M4 12h10"/><path d="M4 18h13"/></svg>
        Aufgaben
      </a>
      <a href="#" class="mh3-tab">
        <span class="mh3-dot" aria-hidden="true"></span>
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="8" r="4"/><path d="M4 21c0-4 4-6 8-6s8 2 8 6"/></svg>
        Profil
      </a>
    </nav>
  </div>
</div>

<script>
(function(){
  var bar=document.querySelector('.mh3-tabbar');
  var tabs=bar.querySelectorAll('.mh3-tab');
  tabs.forEach(function(tab){
    tab.addEventListener('click',function(e){
      e.preventDefault();
      tabs.forEach(function(t){t.removeAttribute('aria-current');});
      tab.setAttribute('aria-current','page');
    });
  });
})();
</script>

Sticky Kategorie-Tabs (Scroll)

Pol 2 · Klarheit Anlass: horizontale Kategorie-Tabs

Horizontal wischbare, klebende Kategorie-Leiste mit scroll-snap und aktivem Tab in Akzent, damit man beim Scrollen der Karten immer weiss, in welcher Kategorie man ist. Vorbild: frischbar Menu-Tabs.

Speisekarte

Heute frisch zubereitet

Geroestetes Ofengemuese

Saisonales Gemuese mit Kraeuteroel und geroesteten Kernen.

8,50 EUR

Cremige Kuerbissuppe

Fein pueriert, mit einem Hauch Muskat und Roestbrot.

6,90 EUR

Blattsalat der Saison

Knackige Blaetter mit hausgemachtem Dressing und Nuessen.

7,20 EUR

Warmes Fladenbrot

Frisch aus dem Ofen, dazu zweierlei Aufstriche.

4,80 EUR
<style>
/* mh4- · Sticky Kategorie-Tabs im Telefon-Rahmen */
.mh4-phone{position:relative;overflow:hidden;max-width:360px;margin:0 auto;height:640px;border-radius:30px;border:1px solid #26262c;background:#111114;box-shadow:0 24px 60px -20px rgba(0,0,0,.55)}
.mh4-phone::before{content:"";position:absolute;top:9px;left:50%;transform:translateX(-50%);width:104px;height:22px;border-radius:0 0 14px 14px;background:#0c0c0f;border:1px solid #26262c;border-top:none;z-index:5}
.mh4-screen{height:100%;overflow-y:auto;background:#16161a;color:#e9e9ee;-webkit-overflow-scrolling:touch;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}
.mh4-screen::-webkit-scrollbar{width:0;display:none}
.mh4-screen{scrollbar-width:none}

/* Mini-Header */
.mh4-top{position:sticky;top:0;z-index:4;display:flex;align-items:center;gap:12px;padding:34px 18px 12px;background:linear-gradient(#16161a,#16161a 70%,rgba(22,22,26,.86));backdrop-filter:blur(2px)}
.mh4-top h1{margin:0;font-size:19px;font-weight:650;letter-spacing:-.02em;color:#f4f4f5}
.mh4-top p{margin:2px 0 0;font-size:12.5px;color:#a1a1aa}
.mh4-avatar{margin-left:auto;flex:0 0 auto;width:40px;height:40px;border-radius:50%;border:1px solid #26262c;background:radial-gradient(circle at 32% 28%,#2a2a32,#1c1c22);display:grid;place-items:center;color:#a1a1aa}
.mh4-avatar svg{width:20px;height:20px}

/* Sticky Tab-Leiste */
.mh4-tabs{position:sticky;top:78px;z-index:3;background:rgba(22,22,26,.92);-webkit-backdrop-filter:saturate(140%) blur(10px);backdrop-filter:saturate(140%) blur(10px);border-bottom:1px solid #26262c}
.mh4-tablist{display:flex;gap:8px;padding:11px 14px;overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.mh4-tablist::-webkit-scrollbar{display:none}
.mh4-tab{scroll-snap-align:start;flex:0 0 auto;min-height:44px;padding:0 16px;display:inline-flex;align-items:center;gap:8px;border-radius:999px;border:1px solid #26262c;background:#1c1c22;color:#a1a1aa;font-size:13.5px;font-weight:550;letter-spacing:-.01em;cursor:pointer;white-space:nowrap;transition:color .2s ease,border-color .2s ease,background .2s ease}
.mh4-tab svg{width:16px;height:16px;flex:0 0 auto}
.mh4-tab[aria-selected="true"]{color:#0f0f12;background:var(--akzent,#7c87ff);border-color:var(--akzent,#7c87ff);font-weight:600}
.mh4-tab:focus-visible{outline:2px solid var(--akzent,#7c87ff);outline-offset:2px}
.mh4-tablist:focus-within{border-radius:12px}
@media (hover:hover){
  .mh4-tab:hover{color:#e9e9ee;border-color:#3a3a44}
  .mh4-tab[aria-selected="true"]:hover{color:#0f0f12;border-color:var(--akzent,#7c87ff)}
}

/* Inhalt */
.mh4-body{padding:14px 14px 28px;display:grid;gap:12px}
.mh4-section-label{margin:4px 2px 0;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#a1a1aa}
.mh4-card{display:flex;gap:13px;padding:13px;border-radius:16px;border:1px solid #26262c;background:#1c1c22;transition:border-color .2s ease,transform .2s ease}
.mh4-thumb{flex:0 0 auto;width:60px;height:60px;border-radius:12px;border:1px solid #26262c;background:linear-gradient(135deg,#23232b,#1a1a20);position:relative;overflow:hidden}
.mh4-thumb::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 30% 25%,color-mix(in srgb,var(--akzent,#7c87ff) 26%,transparent),transparent 62%)}
.mh4-card h3{margin:1px 0 3px;font-size:14.5px;font-weight:600;color:#f4f4f5;letter-spacing:-.01em}
.mh4-card p{margin:0;font-size:12.5px;line-height:1.45;color:#a1a1aa}
.mh4-price{margin-top:7px;font-size:13px;font-weight:650;color:var(--akzent,#7c87ff)}
@media (hover:hover){.mh4-card:hover{border-color:#3a3a44;transform:translateY(-1px)}}

@media (prefers-reduced-motion:reduce){
  .mh4-tab,.mh4-card{transition:none}
  .mh4-screen{scroll-behavior:auto}
  .mh4-tablist{scroll-behavior:auto}
}
</style>

<div class="mh4-phone">
  <div class="mh4-screen">
    <header class="mh4-top">
      <div>
        <h1>Speisekarte</h1>
        <p>Heute frisch zubereitet</p>
      </div>
      <span class="mh4-avatar" aria-hidden="true">
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="8" r="4"/><path d="M4 20a8 8 0 0 1 16 0"/></svg>
      </span>
    </header>

    <nav class="mh4-tabs" aria-label="Kategorien">
      <div class="mh4-tablist" role="tablist">
        <button class="mh4-tab" role="tab" aria-selected="true">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 3v18"/><path d="M5 8c0-2 1-4 3-4"/><path d="M19 8c0-2-1-4-3-4"/><path d="M5 8h14"/></svg>
          Vorspeisen
        </button>
        <button class="mh4-tab" role="tab" aria-selected="false">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 7h16"/><path d="M5 7c0 4 3 7 7 7s7-3 7-7"/><path d="M12 14v6"/></svg>
          Hauptgerichte
        </button>
        <!-- weitere Tabs: Suessspeisen · Getraenke · Fuer Kinder ... -->
      </div>
    </nav>

    <div class="mh4-body">
      <span class="mh4-section-label">Empfehlung des Hauses</span>
      <article class="mh4-card">
        <div class="mh4-thumb" aria-hidden="true"></div>
        <div>
          <h3>Geroestetes Ofengemuese</h3>
          <p>Saisonales Gemuese mit Kraeuteroel und geroesteten Kernen.</p>
          <div class="mh4-price">8,50 EUR</div>
        </div>
      </article>
      <!-- weitere Karten ... -->
    </div>
  </div>
</div>

<script>
// Aktiven Tab umschalten (Roving aria-selected)
document.querySelectorAll('.mh4-tablist').forEach(function(list){
  var tabs = list.querySelectorAll('.mh4-tab');
  list.addEventListener('click', function(e){
    var t = e.target.closest('.mh4-tab');
    if(!t) return;
    tabs.forEach(function(x){ x.setAttribute('aria-selected','false'); });
    t.setAttribute('aria-selected','true');
    // ausgewaehlten Tab in Sicht scrollen
    t.scrollIntoView({inline:'center', block:'nearest', behavior:'smooth'});
  });
  // Pfeiltasten-Navigation
  list.addEventListener('keydown', function(e){
    if(e.key!=='ArrowRight' && e.key!=='ArrowLeft') return;
    var arr = Array.prototype.slice.call(tabs);
    var i = arr.indexOf(document.activeElement.closest('.mh4-tab'));
    if(i<0) return;
    e.preventDefault();
    var n = e.key==='ArrowRight' ? Math.min(i+1,arr.length-1) : Math.max(i-1,0);
    arr[n].focus();
  });
});
</script>

Hero & Inhalt

Mobiler Hero (clamp + aspect-ratio)

Pol 2 · Klarheit Anlass: mobiler Hero

Gestapelter Hero im Telefon-Rahmen: clamp()-Typo (Eyebrow, große H1, Lead), full-width Touch-CTA ab 48px plus Textlink, darunter eine 16:9-Bild-Andeutung, die per aspect-ratio ihre Höhe reserviert (kein Layout-Shift). Vorbild: bernstein clamp-Typo + wecook aspect-ratio.

Musterbau seit 2004

Meisterbetrieb im Handwerk

Küchenmontage, die sitzt

Planung, Aufmaß und sauberer Einbau aus einer Hand. In vier Wochen einzugsfertig, termintreu abgenommen.

Oder direkt anrufen
4,9 von 5 aus 128 Bewertungen
<style>
/* === Mobiler Hero (clamp + aspect-ratio) · Praefix mh5- =============== */
.mh5-phone{--akzent:#7c87ff;position:relative;overflow:hidden;max-width:360px;margin:0 auto;height:640px;
  border-radius:30px;border:1px solid #26262c;background:#111114;
  box-shadow:0 30px 70px -30px rgba(0,0,0,.85),inset 0 1px 0 rgba(255,255,255,.04);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:#e9e9ee}
.mh5-phone *{box-sizing:border-box}
.mh5-notch{position:absolute;top:9px;left:50%;transform:translateX(-50%);z-index:6;
  width:92px;height:6px;border-radius:99px;background:#26262c}
/* Innerer Scroll-Container — traegt sticky Header + sticky Leiste */
.mh5-screen{position:relative;height:100%;overflow-y:auto;background:#16161a;
  -webkit-overflow-scrolling:touch;scrollbar-width:none;transition:box-shadow .25s ease}
.mh5-screen::-webkit-scrollbar{display:none}
.mh5-screen:focus-within{box-shadow:inset 0 0 0 1px var(--akzent,#7c87ff)}
.mh5-top{position:sticky;top:0;z-index:4;display:flex;align-items:center;justify-content:space-between;
  padding:26px 18px 12px;background:rgba(22,22,26,.82);border-bottom:1px solid #26262c;
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.mh5-brand{display:flex;align-items:center;gap:9px;font-size:14px;font-weight:600;letter-spacing:.2px;color:#f4f4f5}
.mh5-mark{width:28px;height:28px;border-radius:8px;flex:0 0 auto;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--akzent,#7c87ff),#3f47b3)}
.mh5-mark svg{width:16px;height:16px;color:#fff}
.mh5-pill{font-size:11px;font-weight:600;color:#a1a1aa;border:1px solid #26262c;border-radius:99px;padding:5px 10px}
.mh5-hero{padding:26px 20px 22px}
.mh5-eyebrow{display:inline-flex;align-items:center;gap:.6em;margin:0 0 clamp(.85rem,3.5vw,1.1rem);
  font-size:clamp(.68rem,2.6vw,.74rem);font-weight:700;letter-spacing:.16em;text-transform:uppercase;
  color:var(--akzent,#7c87ff)}
.mh5-eyebrow::before{content:"";width:22px;height:1px;background:var(--akzent,#7c87ff)}
.mh5-h1{margin:0 0 clamp(.7rem,3vw,.95rem);
  font-size:clamp(1.85rem,8.5vw,2.45rem);line-height:1.1;letter-spacing:-.025em;font-weight:800;
  color:#f4f4f5;text-wrap:balance}
.mh5-h1 span{color:var(--akzent,#7c87ff)}
.mh5-lead{margin:0 0 clamp(1.3rem,5vw,1.7rem);
  font-size:clamp(.92rem,3.6vw,1rem);line-height:1.6;color:#a1a1aa;max-width:34ch}
/* CTA (full-width, Touch-Ziel min 48px) */
.mh5-cta{display:flex;align-items:center;justify-content:center;gap:.5em;width:100%;min-height:48px;
  padding:.9rem 1.2rem;border:0;border-radius:14px;cursor:pointer;
  font-size:clamp(.95rem,3.6vw,1rem);font-weight:700;font-family:inherit;color:#fff;
  background:var(--akzent,#7c87ff);
  box-shadow:0 12px 26px -12px var(--akzent,#7c87ff),inset 0 1px 0 rgba(255,255,255,.28);
  transition:transform .18s ease,box-shadow .25s ease,filter .2s ease}
.mh5-cta svg{width:18px;height:18px;flex:0 0 auto;transition:transform .25s ease}
@media (hover:hover){
  .mh5-cta:hover{filter:brightness(1.06);box-shadow:0 16px 32px -12px var(--akzent,#7c87ff),inset 0 1px 0 rgba(255,255,255,.34)}
  .mh5-cta:hover svg{transform:translateX(3px)}
}
.mh5-cta:focus-visible{outline:2px solid #f4f4f5;outline-offset:3px}
.mh5-cta:active{transform:translateY(1px)}
.mh5-textlink{display:block;width:100%;text-align:center;margin:.9rem 0 0;padding:.6rem 0;
  font-size:clamp(.86rem,3.3vw,.92rem);font-weight:600;color:#e9e9ee;text-decoration:none;border-radius:10px;
  transition:color .2s ease}
.mh5-textlink u{text-decoration:none;padding-bottom:2px;
  background:linear-gradient(var(--akzent,#7c87ff),var(--akzent,#7c87ff)) 0 100%/0 1.5px no-repeat;
  transition:background-size .28s ease}
@media (hover:hover){
  .mh5-textlink:hover{color:#f4f4f5}
  .mh5-textlink:hover u{background-size:100% 1.5px}
}
.mh5-textlink:focus-visible{outline:2px solid var(--akzent,#7c87ff);outline-offset:2px}
/* Bild-Andeutung 16:9 — reserviert Hoehe per aspect-ratio, kein Layout-Shift.
   Im Projekt durch echtes <img> ersetzen (aspect-ratio behalten). */
.mh5-media{margin-top:clamp(1.4rem,5vw,1.7rem);aspect-ratio:16/9;position:relative;overflow:hidden;
  border-radius:16px;border:1px solid #26262c;
  background:
    radial-gradient(120% 130% at 82% 12%,rgba(124,135,255,.42) 0%,transparent 52%),
    radial-gradient(90% 120% at 6% 98%,#2a2a3a 0%,transparent 58%),
    linear-gradient(135deg,#22222e 0%,#16161a 100%)}
.mh5-media::after{content:"";position:absolute;inset:0;
  background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);
  background-size:30px 30px;
  -webkit-mask-image:radial-gradient(ellipse 75% 70% at 60% 30%,#000 20%,transparent 80%);
  mask-image:radial-gradient(ellipse 75% 70% at 60% 30%,#000 20%,transparent 80%)}
.mh5-badge{position:absolute;left:12px;bottom:12px;display:inline-flex;align-items:center;gap:.45em;
  padding:.4rem .7rem;border-radius:99px;font-size:.72rem;font-weight:600;color:#f4f4f5;
  background:rgba(20,20,26,.55);border:1px solid rgba(255,255,255,.12);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.mh5-badge i{width:7px;height:7px;border-radius:50%;background:var(--akzent,#7c87ff);font-style:normal}
/* Sticky Vertrauens-Leiste unten — funktioniert dank innerem Scroll-Container */
.mh5-trust{position:sticky;bottom:0;z-index:4;display:flex;align-items:center;gap:.6em;
  padding:12px 20px calc(12px + env(safe-area-inset-bottom,0px));
  background:rgba(28,28,34,.9);border-top:1px solid #26262c;
  font-size:12px;color:#a1a1aa;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.mh5-trust svg{width:15px;height:15px;color:var(--akzent,#7c87ff);flex:0 0 auto}
.mh5-trust b{color:#e9e9ee;font-weight:600}
@media (prefers-reduced-motion: reduce){
  .mh5-screen,.mh5-cta,.mh5-cta svg,.mh5-textlink,.mh5-textlink u{transition:none}
  .mh5-cta:active{transform:none}
}
</style>

<div class="mh5-phone">
  <div class="mh5-notch" aria-hidden="true"></div>
  <div class="mh5-screen">
    <div class="mh5-top">
      <span class="mh5-brand">
        <span class="mh5-mark" aria-hidden="true">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21h18"/><path d="M5 21V7l7-4 7 4v14"/><path d="M9 21v-6h6v6"/></svg>
        </span>
        Musterbau
      </span>
      <span class="mh5-pill">seit 2004</span>
    </div>

    <div class="mh5-hero">
      <p class="mh5-eyebrow">Meisterbetrieb im Handwerk</p>
      <h1 class="mh5-h1">Küchenmontage, die <span>sitzt</span></h1>
      <p class="mh5-lead">Planung, Aufmaß und sauberer Einbau aus einer Hand. In vier Wochen einzugsfertig, termintreu abgenommen.</p>
      <button type="button" class="mh5-cta">
        Termin anfragen
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg>
      </button>
      <a href="#" class="mh5-textlink"><u>Oder direkt anrufen</u></a>

      <!-- 16:9 Bild-Andeutung als CSS-Verlauf; im Projekt durch echtes <img> ersetzen -->
      <div class="mh5-media" aria-hidden="true">
        <span class="mh5-badge"><i></i>Referenz Altbau</span>
      </div>
    </div>

    <div class="mh5-trust">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m9 12 2 2 4-4"/><circle cx="12" cy="12" r="9"/></svg>
      <span><b>4,9 von 5</b> aus 128 Bewertungen</span>
    </div>
  </div>
</div>

Flip-Karte (Tap, mobil)

Pol 1 · Craft Anlass: mobile Flip-Karte

Produkt-/Gericht-Karte, die per Tap auf die Rueckseite mit Naehrwerten dreht — Details ohne neuen Screen. Vorbild: wecook Flip-Karten.

Wochenmenue

Frische Gerichte

Tippe eine Karte fuer Naehrwerte

<style>
/* Telefon-Rahmen */
.mh6-phone{position:relative;overflow:hidden;max-width:360px;margin:0 auto;height:640px;border-radius:30px;border:1px solid #26262c;background:#111114;box-shadow:0 20px 60px rgba(0,0,0,.5)}
.mh6-phone::before{content:"";position:absolute;top:10px;left:50%;transform:translateX(-50%);width:110px;height:24px;border-radius:0 0 14px 14px;background:#0c0c0f;border:1px solid #26262c;border-top:none;z-index:5}
.mh6-screen{height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;background:#16161a;color:#e9e9ee;font:15px/1.5 system-ui,-apple-system,sans-serif}
.mh6-screen::-webkit-scrollbar{width:0;background:transparent}

/* Kopf */
.mh6-head{position:sticky;top:0;z-index:4;padding:34px 18px 14px;background:linear-gradient(#16161a 70%,rgba(22,22,26,0));backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.mh6-eyebrow{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--akzent,#7c87ff);font-weight:600;margin:0 0 4px}
.mh6-h1{margin:0;font-size:20px;font-weight:650;color:#f4f4f5;letter-spacing:-.01em}
.mh6-sub{margin:2px 0 0;font-size:13px;color:#a1a1aa}

/* Karten-Raster */
.mh6-grid{display:grid;gap:14px;padding:6px 18px 26px}

/* Flip-Karte */
.mh6-card{perspective:1100px;position:relative}
.mh6-flip{display:block;width:100%;padding:0;border:0;background:none;text-align:left;cursor:pointer;font:inherit;color:inherit;border-radius:18px}
.mh6-flip:focus-visible{outline:2px solid var(--akzent,#7c87ff);outline-offset:3px}
.mh6-inner{position:relative;width:100%;min-height:230px;transition:transform .55s cubic-bezier(.4,.15,.15,1);transform-style:preserve-3d}
.mh6-flip[aria-pressed="true"] .mh6-inner{transform:rotateY(180deg)}
.mh6-face{position:absolute;inset:0;-webkit-backface-visibility:hidden;backface-visibility:hidden;border:1px solid #26262c;border-radius:18px;overflow:hidden;background:#1c1c22;display:flex;flex-direction:column}

/* Vorderseite */
.mh6-img{position:relative;height:132px;background:radial-gradient(120% 90% at 20% 0%,rgba(124,135,255,.28),transparent 60%),linear-gradient(135deg,#22222b,#191921)}
.mh6-img::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(115deg,rgba(255,255,255,.03) 0 2px,transparent 2px 9px)}
.mh6-badge{position:absolute;top:10px;left:10px;z-index:2;display:inline-flex;align-items:center;gap:5px;padding:5px 9px;font-size:11px;font-weight:600;color:#f4f4f5;background:rgba(12,12,15,.6);border:1px solid #26262c;border-radius:999px;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.mh6-badge svg{width:13px;height:13px;color:var(--akzent,#7c87ff)}
.mh6-body{padding:13px 15px;flex:1;display:flex;flex-direction:column;gap:3px}
.mh6-title{margin:0;font-size:16px;font-weight:600;color:#f4f4f5}
.mh6-desc{margin:0;font-size:13px;color:#a1a1aa;flex:1}
.mh6-foot{display:flex;align-items:center;justify-content:space-between;margin-top:6px}
.mh6-price{font-size:15px;font-weight:650;color:#e9e9ee}
.mh6-hint{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--akzent,#7c87ff);font-weight:600}
.mh6-hint svg{width:14px;height:14px}

/* Rueckseite */
.mh6-back{transform:rotateY(180deg);padding:15px;background:#1c1c22}
.mh6-back-t{margin:0 0 10px;font-size:14px;font-weight:650;color:#f4f4f5;display:flex;align-items:center;gap:7px}
.mh6-back-t svg{width:15px;height:15px;color:var(--akzent,#7c87ff)}
.mh6-rows{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:0}
.mh6-rows li{display:flex;justify-content:space-between;align-items:baseline;padding:8px 0;border-bottom:1px solid #26262c;font-size:13px}
.mh6-rows li:last-child{border-bottom:0}
.mh6-rows dt{color:#a1a1aa}
.mh6-rows dd{margin:0;color:#e9e9ee;font-weight:600}
.mh6-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:11px}
.mh6-chip{font-size:11px;color:#a1a1aa;background:#16161a;border:1px solid #26262c;border-radius:999px;padding:4px 9px}
.mh6-return{display:inline-flex;align-items:center;gap:5px;margin-top:12px;font-size:11px;color:var(--akzent,#7c87ff);font-weight:600}
.mh6-return svg{width:13px;height:13px}

@media (hover:hover){
  .mh6-flip:hover .mh6-face{border-color:#3a3a44}
  .mh6-flip:hover .mh6-hint{opacity:.75}
}
.mh6-card:focus-within{border-radius:18px}
@media (prefers-reduced-motion:reduce){
  .mh6-inner{transition:none}
}
</style>

<div class="mh6-phone">
  <div class="mh6-screen">
    <div class="mh6-head">
      <p class="mh6-eyebrow">Wochenmenue</p>
      <h1 class="mh6-h1">Frische Gerichte</h1>
      <p class="mh6-sub">Tippe eine Karte fuer Naehrwerte</p>
    </div>
    <div class="mh6-grid">

      <div class="mh6-card">
        <button type="button" class="mh6-flip" aria-pressed="false"
          onclick="var p=this.getAttribute('aria-pressed')==='true';this.setAttribute('aria-pressed',String(!p));">
          <span class="mh6-inner">
            <span class="mh6-face mh6-front">
              <span class="mh6-img">
                <span class="mh6-badge">
                  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2 4 6v6c0 5 3.5 8 8 10 4.5-2 8-5 8-10V6z"/></svg>
                  Neu
                </span>
              </span>
              <span class="mh6-body">
                <span class="mh6-title">Ofengemuese mit Kraeuterquark</span>
                <span class="mh6-desc">Saisonales Gemuese, roesch gebacken, dazu luftiger Quark.</span>
                <span class="mh6-foot">
                  <span class="mh6-price">9,90 €</span>
                  <span class="mh6-hint">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"/><path d="M21 3v5h-5"/></svg>
                    Umdrehen
                  </span>
                </span>
              </span>
            </span>
            <span class="mh6-face mh6-back">
              <span class="mh6-back-t">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><path d="M14 2v6h6"/><path d="M8 13h8M8 17h5"/></svg>
                Naehrwerte je Portion
              </span>
              <dl class="mh6-rows">
                <li><dt>Energie</dt><dd>420 kcal</dd></li>
                <li><dt>Eiweiss</dt><dd>18 g</dd></li>
                <li><dt>Kohlenhydrate</dt><dd>34 g</dd></li>
                <li><dt>Fett</dt><dd>21 g</dd></li>
              </dl>
              <span class="mh6-tags">
                <span class="mh6-chip">Vegetarisch</span>
                <span class="mh6-chip">Glutenfrei</span>
              </span>
              <span class="mh6-return">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m15 18-6-6 6-6"/></svg>
                Zurueck zur Ansicht
              </span>
            </span>
          </span>
        </button>
      </div>

      <!-- weitere .mh6-card identisch aufgebaut (Bild-Andeutung + Titel + Naehrwerte) -->

    </div>
  </div>
</div>

Responsive Grid-Kollaps

Pol 2 · Klarheit Anlass: Karten 2→1 Spalte

Ein Service-Raster mit repeat(auto-fill,minmax(160px,1fr)): passen zwei 160px-Spalten nicht mehr nebeneinander, bricht es ganz ohne Media-Query auf eine Spalte um – im schmalen Telefon-Rahmen also 1-spaltig, auf breiteren Flaechen 2-spaltig. Vorbild: bernstein svc-grid.

Leistungen

Unsere Gewerke

Von der Planung bis zur Abnahme – alles aus einer Hand.

Kuechenmontage

Aufbau, Anschluss und Feinjustage Ihrer neuen Kueche.

Badsanierung

Komplette Erneuerung von Fliesen, Armaturen und Technik.

Elektroinstallation

Sichere Verlegung nach aktueller Norm, inklusive Pruefung.

Malerarbeiten

Saubere Anstriche und Oberflaechen fuer jeden Raum.

<style>
.mh7-phone{--akzent:#7c87ff;position:relative;overflow:hidden;max-width:360px;margin:0 auto;height:640px;border-radius:30px;border:1px solid #26262c;background:#111114;box-shadow:0 24px 60px -24px rgba(0,0,0,.8);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:#e9e9ee}
.mh7-phone *{box-sizing:border-box}
.mh7-notch{position:absolute;top:10px;left:50%;transform:translateX(-50%);width:96px;height:6px;border-radius:99px;background:#26262c;z-index:6}
.mh7-screen{position:relative;height:100%;overflow-y:auto;background:#16161a;-webkit-overflow-scrolling:touch}
/* Kopfleiste (klebt oben) */
.mh7-head{position:sticky;top:0;z-index:5;padding:30px 18px 14px;background:#1c1c22;border-bottom:1px solid #26262c}
.mh7-eyebrow{margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:1.4px;text-transform:uppercase;color:var(--akzent,#7c87ff)}
.mh7-title{margin:0;font-size:20px;line-height:1.2;font-weight:650;color:#f4f4f5}
.mh7-sub{margin:6px 0 0;font-size:13px;line-height:1.5;color:#a1a1aa}
/* Das Raster: bricht im schmalen Rahmen automatisch auf 1 Spalte um */
.mh7-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;padding:16px 18px 24px}
/* Karte */
.mh7-card{position:relative;background:#1c1c22;border:1px solid #26262c;border-radius:16px;padding:16px 15px;min-width:0;transition:border-color .2s ease,transform .2s ease}
.mh7-ic{width:40px;height:40px;border-radius:11px;background:#16161a;border:1px solid #26262c;display:flex;align-items:center;justify-content:center;margin-bottom:12px}
.mh7-ic svg{width:21px;height:21px;color:var(--akzent,#7c87ff)}
.mh7-card h4{margin:0 0 5px;font-size:14px;font-weight:600;color:#f4f4f5}
.mh7-card p{margin:0;font-size:12.5px;line-height:1.5;color:#a1a1aa}
.mh7-card a{position:absolute;inset:0;border-radius:16px}
@media (hover:hover){.mh7-card:hover{border-color:var(--akzent,#7c87ff);transform:translateY(-2px)}}
.mh7-card:focus-within{border-color:var(--akzent,#7c87ff)}
.mh7-card a:focus-visible{outline:2px solid var(--akzent,#7c87ff);outline-offset:3px}
@media (prefers-reduced-motion:reduce){.mh7-card{transition:none}.mh7-card:hover{transform:none}}
</style>

<div class="mh7-phone">
  <div class="mh7-notch" aria-hidden="true"></div>
  <div class="mh7-screen">
    <div class="mh7-head">
      <p class="mh7-eyebrow">Leistungen</p>
      <h1 class="mh7-title">Unsere Gewerke</h1>
      <p class="mh7-sub">Von der Planung bis zur Abnahme &ndash; alles aus einer Hand.</p>
    </div>
    <div class="mh7-grid">
      <div class="mh7-card">
        <span class="mh7-ic" aria-hidden="true">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="8" width="18" height="12" rx="2"/><path d="M7 8V6a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v2"/><path d="M12 12v4"/></svg>
        </span>
        <h4>Kuechenmontage</h4>
        <p>Aufbau, Anschluss und Feinjustage Ihrer neuen Kueche.</p>
        <a href="#" aria-label="Mehr zu Kuechenmontage"></a>
      </div>
      <!-- weitere Karten (gleicher Aufbau): Badsanierung, Elektroinstallation, Malerarbeiten ... -->
    </div>
  </div>
</div>

Wisch-Karten-Slider

Pol 1 · Craft Anlass: mobiler Karten-Slider

Horizontaler Wisch-Slider mit Scroll-Snap: eine Karte rastet mittig ein, Punkte darunter zeigen die Position — für Leistungen oder Referenzen am Handy.

Unsere Arbeiten

Referenzen zum Durchwischen

Wischen Sie seitwärts durch die Projekte.

Küchenmontage Musterstraße

Komplette Einbauküche in zwei Tagen montiert, inklusive Elektroanschluss.

Badsanierung Altbau

Fliesen, Sanitär und Beleuchtung erneuert — barrierefrei umgesetzt.

Dachgeschoss ausgebaut

Neue Räume unter dem Dach — gedämmt, verputzt und bezugsfertig.

Fassade neu gestrichen

Wetterschutz und frische Farbe für ein Mehrfamilienhaus.

<style>
.mh8-phone{--akzent:#7c87ff;position:relative;overflow:hidden;max-width:360px;margin:0 auto;height:640px;border-radius:30px;border:1px solid #26262c;background:#111114;box-shadow:0 24px 60px -24px rgba(0,0,0,.8);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:#e9e9ee}
.mh8-phone *{box-sizing:border-box}
.mh8-notch{position:absolute;top:11px;left:50%;transform:translateX(-50%);width:100px;height:6px;border-radius:99px;background:#26262c;z-index:6}
.mh8-screen{position:relative;height:100%;overflow-y:auto;background:#16161a}
.mh8-head{padding:34px 20px 14px}
.mh8-eyebrow{margin:0 0 8px;font-size:11px;font-weight:600;letter-spacing:1.4px;text-transform:uppercase;color:var(--akzent,#7c87ff)}
.mh8-h2{margin:0 0 6px;font-size:21px;line-height:1.25;font-weight:650;color:#f4f4f5}
.mh8-sub{margin:0;font-size:13px;line-height:1.5;color:#a1a1aa}
.mh8-track{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding:14px 20px 6px;scrollbar-width:none;overscroll-behavior-x:contain}
.mh8-track::-webkit-scrollbar{display:none;height:0;width:0}
.mh8-card{flex:0 0 84%;scroll-snap-align:center;background:#1c1c22;border:1px solid #26262c;border-radius:18px;overflow:hidden;transition:border-color .18s ease,transform .18s ease}
.mh8-card:focus-within{border-color:var(--akzent,#7c87ff)}
@media (hover:hover){.mh8-card:hover{border-color:var(--akzent,#7c87ff);transform:translateY(-2px)}}
.mh8-media{position:relative;height:150px;background:
  radial-gradient(120% 90% at 20% 0%,color-mix(in srgb,var(--akzent,#7c87ff) 30%,transparent),transparent 60%),
  linear-gradient(135deg,#20202a,#16161a);
  display:flex;align-items:flex-end;padding:12px}
.mh8-media svg{position:absolute;top:14px;left:14px;width:26px;height:26px;color:var(--akzent,#7c87ff);opacity:.9}
.mh8-badge{font-size:11px;font-weight:600;letter-spacing:.3px;color:#f4f4f5;background:rgba(17,17,20,.66);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid #26262c;border-radius:99px;padding:5px 11px}
.mh8-body{padding:15px 16px 17px}
.mh8-body h4{margin:0 0 6px;font-size:15px;font-weight:600;color:#f4f4f5}
.mh8-body p{margin:0 0 14px;font-size:13px;line-height:1.5;color:#a1a1aa}
.mh8-link{-webkit-appearance:none;appearance:none;display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:0 4px;border:0;background:none;cursor:pointer;color:var(--akzent,#7c87ff);font-size:13px;font-weight:600;font-family:inherit;border-radius:10px;transition:gap .18s ease,color .18s ease}
.mh8-link svg{width:16px;height:16px}
@media (hover:hover){.mh8-link:hover{gap:11px;color:#f4f4f5}}
.mh8-link:focus-visible{outline:2px solid var(--akzent,#7c87ff);outline-offset:3px}
.mh8-dots{display:flex;justify-content:center;gap:8px;padding:14px 0 26px}
.mh8-dot{width:7px;height:7px;border-radius:99px;background:#26262c;transition:width .22s ease,background .22s ease}
.mh8-dot.is-active{width:22px;background:var(--akzent,#7c87ff)}
@media (prefers-reduced-motion: reduce){
  .mh8-card,.mh8-link,.mh8-dot{transition:none}
  .mh8-track{scroll-behavior:auto}
}
</style>
<div class="mh8-phone">
  <div class="mh8-notch" aria-hidden="true"></div>
  <div class="mh8-screen">
    <div class="mh8-head">
      <p class="mh8-eyebrow">Unsere Arbeiten</p>
      <h2 class="mh8-h2">Referenzen zum Durchwischen</h2>
      <p class="mh8-sub">Wischen Sie seitwärts durch die Projekte.</p>
    </div>

    <div class="mh8-track" role="group" aria-label="Referenzen, seitwärts wischbar">
      <article class="mh8-card">
        <div class="mh8-media" aria-hidden="true">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21h18"/><path d="M5 21V7l7-4 7 4v14"/><path d="M9 21v-6h6v6"/></svg>
          <span class="mh8-badge">Neubau</span>
        </div>
        <div class="mh8-body">
          <h4>Küchenmontage Musterstraße</h4>
          <p>Komplette Einbauküche in zwei Tagen montiert, inklusive Elektroanschluss.</p>
          <button type="button" class="mh8-link">Projekt ansehen
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg>
          </button>
        </div>
      </article>

      <!-- weitere Karten nach demselben Muster: mh8-card mit mh8-media (Icon + mh8-badge) und mh8-body (h4 + p + mh8-link) -->

    </div>

    <div class="mh8-dots" aria-hidden="true">
      <span class="mh8-dot is-active"></span>
      <span class="mh8-dot"></span>
      <span class="mh8-dot"></span>
      <span class="mh8-dot"></span>
    </div>
  </div>
</div>

Content-Sektionen + FAQ

Pol 2 · Klarheit Anlass: gestapelte mobile Sektionen

Ruhig gestapelte Leistungs-Kacheln und ein natives FAQ-Akkordeon (Plus rotiert beim Öffnen) für die mobile Ansicht einer Onepager-Seite. Vorbild: Handwerker-Onepager.

Was wir tun

Leistungen im Überblick

Drei Bausteine, sauber aufeinander abgestimmt für ein Ergebnis, das hält.

Beratung vor Ort

Wir schauen uns die Räume an und finden gemeinsam die passende Lösung.

Präzise Umsetzung

Saubere Ausführung mit hochwertigen Materialien und Blick fürs Detail.

Abnahme & Pflege

Gemeinsame Endabnahme und ein kurzer Leitfaden für die Pflege danach.

Häufige Fragen

Gut zu wissen

Die wichtigsten Punkte kurz beantwortet.

Wie lange dauert ein Projekt?
Das hängt vom Umfang ab. Kleinere Arbeiten sind an einem Tag erledigt, größere planen wir gemeinsam über mehrere Termine.
Was kostet eine Beratung?
Das erste Gespräch und die Einschätzung vor Ort sind kostenfrei. Ein verbindliches Angebot erhalten Sie danach schriftlich.
In welchem Umkreis arbeiten Sie?
Im gesamten Stadtgebiet und in den umliegenden Gemeinden. Für weitere Strecken sprechen Sie uns einfach an.
<style>
/* ===== mh9 · Content-Sektionen + FAQ (mobil) ===== */
.mh9-phone{--akzent:#7c87ff;position:relative;overflow:hidden;max-width:360px;margin:0 auto;height:640px;border-radius:30px;border:1px solid #26262c;background:#111114;box-shadow:0 24px 60px -24px rgba(0,0,0,.8);color:#e9e9ee;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}
.mh9-phone *{box-sizing:border-box}
.mh9-phone::before{content:"";position:absolute;top:9px;left:50%;transform:translateX(-50%);width:96px;height:6px;border-radius:99px;background:#26262c;z-index:5}
.mh9-screen{height:100%;overflow-y:auto;overflow-x:hidden;padding:34px 16px 24px;scroll-behavior:smooth}
.mh9-screen::-webkit-scrollbar{width:0}

.mh9-eyebrow{display:inline-block;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--akzent);font-weight:600;margin:0 0 8px}
.mh9-h2{font-size:22px;line-height:1.2;font-weight:700;color:#f4f4f5;margin:0 0 6px;letter-spacing:-.01em}
.mh9-lead{font-size:14px;line-height:1.55;color:#a1a1aa;margin:0 0 18px}

/* (a) Leistungs-Liste, 1-spaltig */
.mh9-list{display:flex;flex-direction:column;gap:12px;margin:0 0 28px}
.mh9-card{display:flex;gap:14px;align-items:flex-start;padding:16px;border-radius:16px;background:#1c1c22;border:1px solid #26262c;transition:border-color .22s ease,transform .22s ease}
.mh9-card:focus-within{border-color:var(--akzent)}
.mh9-ico{flex:0 0 auto;width:44px;height:44px;border-radius:12px;display:grid;place-items:center;background:#16161a;border:1px solid #26262c;color:var(--akzent)}
.mh9-ico svg{width:22px;height:22px;display:block}
.mh9-ct{min-width:0}
.mh9-ct h3{font-size:15px;font-weight:650;color:#f4f4f5;margin:0 0 4px;line-height:1.3}
.mh9-ct p{font-size:13px;line-height:1.5;color:#a1a1aa;margin:0}

/* (b) FAQ-Akkordeon */
.mh9-faq{display:flex;flex-direction:column;gap:10px}
.mh9-det{border-radius:14px;background:#1c1c22;border:1px solid #26262c;overflow:hidden}
.mh9-det[open]{border-color:#33333c}
.mh9-det summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;padding:13px 16px;font-size:14px;font-weight:600;color:#e9e9ee;user-select:none}
.mh9-det summary::-webkit-details-marker{display:none}
.mh9-plus{flex:0 0 auto;width:22px;height:22px;position:relative;color:var(--akzent);transition:transform .25s ease}
.mh9-plus::before,.mh9-plus::after{content:"";position:absolute;top:50%;left:50%;background:currentColor;border-radius:2px}
.mh9-plus::before{width:14px;height:2px;transform:translate(-50%,-50%)}
.mh9-plus::after{width:2px;height:14px;transform:translate(-50%,-50%);transition:transform .25s ease}
.mh9-det[open] .mh9-plus{transform:rotate(90deg)}
.mh9-det[open] .mh9-plus::after{transform:translate(-50%,-50%) scaleY(0)}
.mh9-ans{padding:0 16px 15px;font-size:13px;line-height:1.6;color:#a1a1aa}

@media (hover:hover){
  .mh9-card:hover{border-color:#33333c;transform:translateY(-1px)}
  .mh9-det summary:hover{color:#f4f4f5}
  .mh9-det summary:hover .mh9-plus{color:#f4f4f5}
}
.mh9-det summary:focus-visible,.mh9-card:focus-visible{outline:2px solid var(--akzent);outline-offset:2px;border-radius:14px}

@media (prefers-reduced-motion: reduce){
  .mh9-screen{scroll-behavior:auto}
  .mh9-card,.mh9-plus,.mh9-plus::after{transition:none}
}
</style>

<div class="mh9-phone">
  <div class="mh9-screen">

    <span class="mh9-eyebrow">Was wir tun</span>
    <h2 class="mh9-h2">Leistungen im Überblick</h2>
    <p class="mh9-lead">Drei Bausteine, sauber aufeinander abgestimmt für ein Ergebnis, das hält.</p>

    <div class="mh9-list">

      <div class="mh9-card" tabindex="0">
        <span class="mh9-ico" aria-hidden="true">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 20h16"/><path d="M6 20V9l6-4 6 4v11"/><path d="M10 20v-5h4v5"/></svg>
        </span>
        <div class="mh9-ct">
          <h3>Beratung vor Ort</h3>
          <p>Wir schauen uns die Räume an und finden gemeinsam die passende Lösung.</p>
        </div>
      </div>

      <!-- weitere Kachel: Icon (Inline-SVG) + h3 + p, gleiche Hülle -->

    </div>

    <span class="mh9-eyebrow">Häufige Fragen</span>
    <h2 class="mh9-h2">Gut zu wissen</h2>
    <p class="mh9-lead">Die wichtigsten Punkte kurz beantwortet.</p>

    <div class="mh9-faq">

      <details class="mh9-det">
        <summary>Wie lange dauert ein Projekt?<span class="mh9-plus" aria-hidden="true"></span></summary>
        <div class="mh9-ans">Das hängt vom Umfang ab. Kleinere Arbeiten sind an einem Tag erledigt, größere planen wir gemeinsam über mehrere Termine.</div>
      </details>

      <!-- weitere <details class="mh9-det"> mit summary + .mh9-plus + .mh9-ans -->

    </div>

  </div>
</div>

Aktion, Feedback & Formular

Sticky-Aktionsleiste (Anrufen/Anfragen)

Pol 2 · Klarheit Anlass: mobile Sticky-CTA

Scrollbarer Inhalt mit einer unten im Rahmen fest verankerten Leiste aus Anrufen (echter tel:-Link, Ghost) und Anfragen (Primary) - der wichtigste mobile Conversion-Hebel, immer im Daumenbereich.

Musterbau

Meisterbetrieb

Kuechenmontage vom Fachbetrieb

Planung, Aufmass und sauberer Einbau aus einer Hand - termintreu und zum Festpreis. Wir beraten Sie unverbindlich zu Ihrem Vorhaben.

Das erwartet Sie

Festpreis-GarantieEin Angebot, keine boese Ueberraschung bei der Abrechnung.
Termin in 14 TagenKurze Wege, verbindliche Zusagen, sauberer Abschluss.
Fuenf Jahre GewaehrleistungWir stehen fuer unsere Arbeit auch nach der Abnahme gerade.

Weiter scrollen - die Leiste bleibt unten stehen. So ist der naechste Schritt jederzeit einen Daumen entfernt.

<style>
/* Sticky-Aktionsleiste (Anrufen/Anfragen) — mobiler Sticky-CTA, alle Klassen mh10- gescopt */
.mh10-phone{--akzent:#7c87ff;position:relative;overflow:hidden;max-width:360px;margin:0 auto;height:640px;
  border-radius:30px;border:1px solid #26262c;background:#111114;
  box-shadow:0 24px 60px -24px rgba(0,0,0,.8);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:#e9e9ee}
.mh10-phone *{box-sizing:border-box}
.mh10-notch{position:absolute;top:11px;left:50%;transform:translateX(-50%);width:104px;height:6px;
  border-radius:99px;background:#26262c;z-index:8;pointer-events:none}
/* Scroll-Flaeche: hier laeuft sticky bottom zuverlaessig */
.mh10-screen{position:relative;height:100%;overflow-y:auto;background:#16161a;
  scrollbar-width:none;-webkit-overflow-scrolling:touch}
.mh10-screen::-webkit-scrollbar{display:none}
/* Sticky Kopf */
.mh10-top{position:sticky;top:0;z-index:6;display:flex;align-items:center;gap:10px;
  padding:26px 18px 13px;border-bottom:1px solid #26262c;background:#1c1c22;
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.mh10-mark{width:30px;height:30px;border-radius:9px;flex:0 0 auto;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--akzent,#7c87ff),#3f47b3);color:#fff}
.mh10-mark svg{width:17px;height:17px}
.mh10-brand{font-size:15px;font-weight:600;letter-spacing:.2px;color:#f4f4f5}
/* Inhalt */
.mh10-body{padding:20px 18px 22px}
.mh10-eyebrow{display:inline-flex;align-items:center;gap:.55em;margin:0 0 10px;
  font-size:11px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--akzent,#7c87ff)}
.mh10-eyebrow::before{content:"";width:20px;height:1px;background:var(--akzent,#7c87ff)}
.mh10-h1{margin:0 0 10px;font-size:25px;line-height:1.16;letter-spacing:-.02em;font-weight:750;color:#f4f4f5}
.mh10-lead{margin:0 0 18px;font-size:14px;line-height:1.6;color:#a1a1aa}
.mh10-card{background:#1c1c22;border:1px solid #26262c;border-radius:16px;padding:16px 16px 4px;
  transition:border-color .25s ease}
.mh10-card:focus-within{border-color:var(--akzent,#7c87ff)}
.mh10-card h4{margin:0 0 12px;font-size:14px;font-weight:600;color:#f4f4f5}
.mh10-row{display:flex;gap:12px;padding:0 0 12px}
.mh10-row svg{width:20px;height:20px;flex:0 0 auto;margin-top:1px;color:var(--akzent,#7c87ff)}
.mh10-row-txt{font-size:13px;line-height:1.5;color:#a1a1aa}
.mh10-row-txt b{display:block;color:#e9e9ee;font-weight:600;margin-bottom:2px}
.mh10-hint{margin:22px 0 0;font-size:12px;line-height:1.6;color:#a1a1aa}
/* Sticky Aktionsleiste unten */
.mh10-bar{position:sticky;bottom:0;z-index:7;display:flex;gap:10px;
  padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px));
  border-top:1px solid #26262c;background:rgba(28,28,34,.86);
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.mh10-btn{display:flex;align-items:center;justify-content:center;gap:.5em;min-height:48px;
  border-radius:14px;font-size:15px;font-weight:650;text-decoration:none;cursor:pointer;
  -webkit-appearance:none;appearance:none;transition:transform .18s ease,filter .2s ease,border-color .2s ease,background .2s ease}
.mh10-btn svg{width:18px;height:18px;flex:0 0 auto}
/* Ghost (Anrufen) */
.mh10-btn.ghost{flex:0 0 auto;padding:0 18px;border:1px solid #26262c;background:#16161a;color:#e9e9ee}
@media (hover:hover){.mh10-btn.ghost:hover{border-color:var(--akzent,#7c87ff);background:#1c1c22}}
.mh10-btn.ghost:focus-visible{outline:2px solid var(--akzent,#7c87ff);outline-offset:2px}
/* Primary (Anfragen) */
.mh10-btn.primary{flex:1;border:0;padding:0 20px;color:#0e0e12;background:var(--akzent,#7c87ff);
  box-shadow:0 10px 24px -12px var(--akzent,#7c87ff),inset 0 1px 0 rgba(255,255,255,.28)}
@media (hover:hover){.mh10-btn.primary:hover{filter:brightness(1.07)}}
.mh10-btn.primary:focus-visible{outline:2px solid #f4f4f5;outline-offset:2px}
.mh10-btn:active{transform:translateY(1px)}
@media (prefers-reduced-motion: reduce){
  .mh10-card,.mh10-btn{transition:none}
  .mh10-btn:active{transform:none}
}
</style>

<div class="mh10-phone">
  <div class="mh10-notch" aria-hidden="true"></div>
  <!-- .mh10-screen scrollt; darin sticky Kopf oben + sticky Leiste unten -->
  <div class="mh10-screen">
    <div class="mh10-top">
      <span class="mh10-mark" aria-hidden="true">
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21h18"/><path d="M5 21V7l7-4 7 4v14"/><path d="M9 21v-6h6v6"/></svg>
      </span>
      <span class="mh10-brand">Musterbau</span>
    </div>

    <div class="mh10-body">
      <p class="mh10-eyebrow">Meisterbetrieb</p>
      <h1 class="mh10-h1">Kuechenmontage vom Fachbetrieb</h1>
      <p class="mh10-lead">Planung, Aufmass und sauberer Einbau aus einer Hand - termintreu und zum Festpreis. Wir beraten Sie unverbindlich zu Ihrem Vorhaben.</p>

      <div class="mh10-card">
        <h4>Das erwartet Sie</h4>
        <div class="mh10-row">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>
          <span class="mh10-row-txt"><b>Festpreis-Garantie</b>Ein Angebot, keine boese Ueberraschung bei der Abrechnung.</span>
        </div>
        <!-- weitere Zeilen identisch: Termin in 14 Tagen, Fuenf Jahre Gewaehrleistung -->
      </div>

      <p class="mh10-hint">Weiter scrollen - die Leiste bleibt unten stehen.</p>
    </div>

    <!-- Sticky unten: Ghost tel:-Link + Primary Anfrage -->
    <div class="mh10-bar">
      <a class="mh10-btn ghost" href="tel:+490000000000" aria-label="Jetzt anrufen">
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3 19.5 19.5 0 0 1-6-6 19.8 19.8 0 0 1-3-8.6A2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1.9.4 1.8.7 2.7a2 2 0 0 1-.5 2.1L8.1 9.9a16 16 0 0 0 6 6l1.4-1.2a2 2 0 0 1 2.1-.5c.9.3 1.8.6 2.7.7a2 2 0 0 1 1.7 2Z"/></svg>
        Anrufen
      </a>
      <a class="mh10-btn primary" href="#anfrage">
        Anfragen
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg>
      </a>
    </div>
  </div>
</div>

Cookie-Banner + Toast (unten)

Pol 2 · Klarheit Anlass: Consent + Feedback (mobil)

DSGVO-Consent unten im Handy-Rahmen — nach der Wahl faehrt das Banner weg und ein kurzer Toast bestaetigt "Auswahl gespeichert". Vorbild: personal-training Cookie-Banner + frischbar Toast.

Willkommen

Handwerk mit Handschlag-Qualitaet

Von der Küchenmontage bis zur Badsanierung — ein Ansprechpartner für Ihr ganzes Zuhause.

Küchenmontage

Aufmass, Aufbau und Anschluss aus einer Hand — sauber und termintreu.

Badsanierung

Komplette Erneuerung mit fester Kostenzusage, ohne böse Überraschungen.

Türen & Böden

Präzise verlegt, langlebig verarbeitet, auf Wunsch inklusive Entsorgung.

Auswahl gespeichert
<div class="mh11-phone">
  <div class="mh11-notch" aria-hidden="true"></div>
  <div class="mh11-screen">
    <div class="mh11-topbar">
      <span class="mh11-logo">
        <span class="mh11-logomark" aria-hidden="true">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21h18"/><path d="M5 21V7l7-4 7 4v14"/><path d="M9 21v-6h6v6"/></svg>
        </span>
        Musterfirma
      </span>
    </div>

    <div class="mh11-content">
      <p class="mh11-eyebrow">Willkommen</p>
      <h1 class="mh11-h1">Handwerk mit Handschlag-Qualität</h1>
      <p class="mh11-lead">Von der Küchenmontage bis zur Badsanierung — ein Ansprechpartner für Ihr ganzes Zuhause.</p>
      <!-- .mh11-card wiederholt sich (Küchenmontage, Badsanierung, Türen &amp; Böden) -->
      <div class="mh11-card">
        <h4>Küchenmontage</h4>
        <p>Aufmass, Aufbau und Anschluss aus einer Hand — sauber und termintreu.</p>
      </div>
    </div>

    <!-- Consent-Banner: unten im Screen verankert -->
    <div class="mh11-consent" role="dialog" aria-modal="false" aria-labelledby="mh11-ctitle" data-mh11-consent>
      <div class="mh11-consent-body">
        <p id="mh11-ctitle" class="mh11-consent-title">
          <span class="mh11-consent-ico" aria-hidden="true">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/><path d="M8.5 9.5h.01M15 9h.01M9.5 15h.01M15.5 14.5h.01M12 12h.01"/></svg>
          </span>
          Wir verwenden Cookies
        </p>
        <p class="mh11-consent-text">Notwendige Cookies halten die Seite am Laufen. Optionale helfen uns, das Angebot zu verbessern. Ihre Wahl gilt für diesen Besuch.</p>
      </div>
      <div class="mh11-consent-actions">
        <button type="button" class="mh11-btn mh11-btn-ghost" data-mh11-decline>Ablehnen</button>
        <button type="button" class="mh11-btn mh11-btn-solid" data-mh11-accept>Akzeptieren</button>
      </div>
    </div>

    <!-- Toast: mittig unten, blendet nach kurzer Zeit weg -->
    <div class="mh11-toast" role="status" aria-live="polite" data-mh11-toast>
      <span class="mh11-toast-ico" aria-hidden="true">
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg>
      </span>
      Auswahl gespeichert
    </div>
  </div>
</div>

<style>
.mh11-phone{--akzent:#7c87ff;position:relative;overflow:hidden;max-width:360px;margin:0 auto;height:640px;border-radius:30px;border:1px solid #26262c;background:#111114;box-shadow:0 24px 60px -24px rgba(0,0,0,.8);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:#e9e9ee}
.mh11-phone *{box-sizing:border-box}
.mh11-notch{position:absolute;top:10px;left:50%;transform:translateX(-50%);width:96px;height:6px;border-radius:99px;background:#26262c;z-index:6}
.mh11-screen{position:relative;height:100%;overflow-y:auto;background:#16161a}
/* Topbar (sticky im Screen) */
.mh11-topbar{position:sticky;top:0;z-index:4;display:flex;align-items:center;justify-content:space-between;padding:28px 18px 14px;border-bottom:1px solid #26262c;background:#1c1c22}
.mh11-logo{display:flex;align-items:center;gap:10px;font-weight:600;font-size:15px;letter-spacing:.2px;color:#f4f4f5}
.mh11-logomark{width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,var(--akzent,#7c87ff),#3f47b3);display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.mh11-logomark svg{width:17px;height:17px;color:#fff}
/* Inhalt */
.mh11-content{padding:20px 18px 26px}
.mh11-eyebrow{font-size:11px;font-weight:600;letter-spacing:1.4px;text-transform:uppercase;color:var(--akzent,#7c87ff);margin:0 0 8px}
.mh11-h1{font-size:23px;line-height:1.22;font-weight:650;margin:0 0 8px;color:#f4f4f5;text-wrap:balance}
.mh11-lead{font-size:14px;line-height:1.55;color:#a1a1aa;margin:0 0 18px}
.mh11-card{background:#1c1c22;border:1px solid #26262c;border-radius:16px;padding:16px;margin-bottom:12px}
.mh11-card h4{margin:0 0 6px;font-size:14px;font-weight:600;color:#f4f4f5}
.mh11-card p{margin:0;font-size:13px;line-height:1.5;color:#a1a1aa}
/* Consent-Banner: unten im Screen verankert, notch-safe */
.mh11-consent{position:sticky;bottom:0;z-index:8;background:#1c1c22;border-top:1px solid #26262c;box-shadow:0 -18px 40px -24px rgba(0,0,0,.9);padding:16px 16px calc(16px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:14px;transition:transform .28s cubic-bezier(.4,0,.2,1),opacity .22s ease}
.mh11-consent[data-hidden="true"]{transform:translateY(105%);opacity:0;visibility:hidden;pointer-events:none}
.mh11-consent-body{display:flex;flex-direction:column;gap:6px}
.mh11-consent-title{display:flex;align-items:center;gap:9px;margin:0;font-size:14px;font-weight:600;color:#f4f4f5}
.mh11-consent-ico{color:var(--akzent,#7c87ff);display:flex;flex:0 0 auto}
.mh11-consent-ico svg{width:19px;height:19px}
.mh11-consent-text{margin:0;font-size:12.5px;line-height:1.5;color:#a1a1aa}
.mh11-consent-actions{display:flex;gap:10px}
.mh11-btn{flex:1;min-height:46px;-webkit-appearance:none;appearance:none;border-radius:13px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit;transition:filter .16s ease,border-color .16s ease,background .16s ease,color .16s ease}
.mh11-btn-ghost{border:1px solid #26262c;background:#16161a;color:#e9e9ee}
.mh11-btn-solid{border:1px solid var(--akzent,#7c87ff);background:var(--akzent,#7c87ff);color:#0e0e12}
@media (hover:hover){
  .mh11-btn-ghost:hover{border-color:var(--akzent,#7c87ff);background:#1c1c22}
  .mh11-btn-solid:hover{filter:brightness(1.08)}
}
.mh11-btn:focus-visible{outline:2px solid var(--akzent,#7c87ff);outline-offset:2px}
.mh11-btn-solid:focus-visible{outline-color:#f4f4f5}
.mh11-consent:focus-within{border-top-color:var(--akzent,#7c87ff)}
/* Toast: mittig unten, blendet weg */
.mh11-toast{position:absolute;left:50%;bottom:calc(22px + env(safe-area-inset-bottom,0px));transform:translate(-50%,14px);z-index:12;display:flex;align-items:center;gap:9px;max-width:calc(100% - 40px);padding:12px 16px;border-radius:99px;background:#1c1c22;border:1px solid #26262c;color:#f4f4f5;font-size:13px;font-weight:600;box-shadow:0 16px 34px -16px rgba(0,0,0,.85);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .22s ease,transform .28s cubic-bezier(.4,0,.2,1),visibility 0s linear .28s}
.mh11-toast[data-show="true"]{opacity:1;visibility:visible;transform:translate(-50%,0);transition:opacity .22s ease,transform .28s cubic-bezier(.4,0,.2,1)}
.mh11-toast-ico{width:20px;height:20px;border-radius:99px;background:var(--akzent,#7c87ff);color:#0e0e12;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.mh11-toast-ico svg{width:13px;height:13px}
@media (prefers-reduced-motion: reduce){
  .mh11-consent,.mh11-toast,.mh11-btn{transition:none}
  .mh11-consent[data-hidden="true"]{transform:none}
  .mh11-toast[data-show="true"]{transform:translate(-50%,0)}
}
</style>

<script>
(function(){
  var root=document.currentScript.closest('.mh11-phone')||document;
  var consent=root.querySelector('[data-mh11-consent]');
  var toast=root.querySelector('[data-mh11-toast]');
  var timer;
  function choose(){
    consent.setAttribute('data-hidden','true');   // Banner faehrt weg
    toast.setAttribute('data-show','true');        // Toast erscheint
    clearTimeout(timer);
    timer=setTimeout(function(){ toast.setAttribute('data-show','false'); },2400); // nach 2,4s weg
  }
  root.querySelector('[data-mh11-accept]').addEventListener('click',choose);
  root.querySelector('[data-mh11-decline]').addEventListener('click',choose);
})();
</script>

Touch-Buttons (48px, tel:)

Pol 2 · Klarheit Anlass: mobil-optimierte Buttons

Pill-Buttons mit 48px-Touch-Zielen, haptischem Active-Feedback und echtem tel:-Anruf-Button. Vorbild: bernstein Buttons.

Musterbetrieb

Kuechenmontage & Umbau

Termin anfragen

In zwei Schritten zum Wunschtermin.

Antwort meist am selben Tag
<style>
.mh12-phone{position:relative;overflow:hidden;max-width:360px;margin:0 auto;height:640px;border-radius:30px;border:1px solid #26262c;background:#111114;box-shadow:0 24px 60px -24px rgba(0,0,0,.7)}
.mh12-phone::before{content:"";position:absolute;top:10px;left:50%;transform:translateX(-50%);width:110px;height:24px;background:#0c0c0f;border:1px solid #26262c;border-radius:0 0 16px 16px;z-index:5}
.mh12-screen{position:relative;height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;background:#16161a;color:#e9e9ee;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}
.mh12-screen::-webkit-scrollbar{width:0}
.mh12-head{position:sticky;top:0;z-index:4;display:flex;align-items:center;gap:12px;padding:34px 20px 16px;background:rgba(22,22,26,.82);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid #26262c}
.mh12-logo{width:40px;height:40px;flex:none;border-radius:12px;background:linear-gradient(135deg,var(--akzent,#7c87ff),#1c1c22);border:1px solid #26262c}
.mh12-head h4{margin:0;font-size:15px;font-weight:600;color:#f4f4f5;letter-spacing:-.01em}
.mh12-head p{margin:2px 0 0;font-size:12px;color:#a1a1aa}
.mh12-body{padding:22px 20px 40px;display:flex;flex-direction:column;gap:22px}
.mh12-eyebrow{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#a1a1aa;font-weight:600}
.mh12-lead{margin:6px 0 0;font-size:20px;line-height:1.35;font-weight:600;color:#f4f4f5;letter-spacing:-.02em}
.mh12-lead span{color:var(--akzent,#7c87ff)}
.mh12-stack{display:flex;flex-direction:column;gap:12px}
.mh12-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:12px 22px;border-radius:100px;font-size:15px;font-weight:600;font-family:inherit;letter-spacing:-.01em;text-decoration:none;cursor:pointer;border:1px solid transparent;-webkit-tap-highlight-color:transparent;transition:transform .16s cubic-bezier(.2,.7,.3,1),background .2s ease,border-color .2s ease,box-shadow .2s ease}
.mh12-btn svg{width:19px;height:19px;flex:none;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}
.mh12-btn--primary{width:100%;background:var(--akzent,#7c87ff);color:#0c0c10;box-shadow:0 8px 22px -10px var(--akzent,#7c87ff)}
.mh12-btn--ghost{width:100%;background:#1c1c22;color:#e9e9ee;border-color:#26262c}
.mh12-btn--call{width:100%;background:transparent;color:#f4f4f5;border-color:#26262c;flex-direction:column;gap:2px;min-height:60px;padding:10px 22px}
.mh12-btn--call .mh12-call-row{display:inline-flex;align-items:center;gap:10px}
.mh12-btn--call .mh12-call-sub{font-size:11px;font-weight:500;color:#a1a1aa;letter-spacing:.02em}
.mh12-dot{width:7px;height:7px;border-radius:50%;background:var(--akzent,#7c87ff);flex:none;box-shadow:0 0 0 4px rgba(124,135,255,.14)}
.mh12-hint{display:flex;align-items:center;gap:8px;font-size:12px;color:#a1a1aa;margin-top:2px}
.mh12-hint span{width:26px;height:1px;background:#26262c}
@media (hover:hover){
  .mh12-btn--primary:hover{background:#8f99ff;box-shadow:0 10px 26px -10px var(--akzent,#7c87ff)}
  .mh12-btn--ghost:hover{border-color:#3a3a44;background:#22222a}
  .mh12-btn--call:hover{border-color:var(--akzent,#7c87ff);color:#fff}
}
.mh12-btn:focus-visible{outline:2px solid var(--akzent,#7c87ff);outline-offset:3px}
.mh12-btn:active{transform:scale(.98)}
.mh12-cta{position:sticky;bottom:0;z-index:4;padding:14px 20px calc(16px + env(safe-area-inset-bottom));background:linear-gradient(to top,#16161a 62%,transparent);border-top:1px solid #26262c}
.mh12-cta:focus-within{border-top-color:var(--akzent,#7c87ff)}
@media (prefers-reduced-motion:reduce){
  .mh12-btn{transition:none}
  .mh12-btn:active{transform:none}
}
</style>

<div class="mh12-phone">
  <div class="mh12-screen">
    <div class="mh12-head">
      <div class="mh12-logo" aria-hidden="true"></div>
      <div>
        <h4>Musterbetrieb</h4>
        <p>Kuechenmontage &amp; Umbau</p>
      </div>
    </div>
    <div class="mh12-body">
      <div>
        <div class="mh12-eyebrow">Termin anfragen</div>
        <p class="mh12-lead">In zwei Schritten zum <span>Wunschtermin</span>.</p>
      </div>
      <div class="mh12-stack">
        <a class="mh12-btn mh12-btn--primary" href="#">
          <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M8 2v4M16 2v4M3 10h18"/><rect x="3" y="4" width="18" height="18" rx="2"/></svg>
          Termin anfragen
        </a>
        <a class="mh12-btn mh12-btn--ghost" href="#">
          <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 4h16v12H5.2L4 17.3z"/></svg>
          Nachricht schreiben
        </a>
        <!-- echter tel:-Button: dialt beim Tippen auf dem Handy -->
        <a class="mh12-btn mh12-btn--call" href="tel:+49301234567" aria-label="Jetzt anrufen unter 030 123 45 67">
          <span class="mh12-call-row">
            <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3 19.5 19.5 0 0 1-6-6 19.8 19.8 0 0 1-3-8.6A2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1.9.3 1.8.6 2.7a2 2 0 0 1-.5 2.1L8 9.6a16 16 0 0 0 6 6l1.1-1.2a2 2 0 0 1 2.1-.5c.9.3 1.8.5 2.7.6a2 2 0 0 1 1.7 2z"/></svg>
            Jetzt anrufen
          </span>
          <span class="mh12-call-sub">030 123 45 67 &middot; Mo&ndash;Fr 8&ndash;17 Uhr</span>
        </a>
      </div>
      <div class="mh12-hint"><span></span>Antwort meist am selben Tag</div>
    </div>
    <!-- am Rahmen-Boden verankerte Leiste: sticky bottom im Screen -->
    <div class="mh12-cta">
      <a class="mh12-btn mh12-btn--call" href="tel:+49301234567" aria-label="Direkt anrufen">
        <span class="mh12-call-row">
          <span class="mh12-dot" aria-hidden="true"></span>
          <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3 19.5 19.5 0 0 1-6-6 19.8 19.8 0 0 1-3-8.6A2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1.9.3 1.8.6 2.7a2 2 0 0 1-.5 2.1L8 9.6a16 16 0 0 0 6 6l1.1-1.2a2 2 0 0 1 2.1-.5c.9.3 1.8.5 2.7.6a2 2 0 0 1 1.7 2z"/></svg>
          Direkt anrufen
        </span>
      </a>
    </div>
  </div>
</div>

Mobiles Formular (iOS-sicher)

Pol 2 · Klarheit Anlass: mobiles Formular

Ein Feld pro Zeile, 48px hohe Felder mit 16px Schrift gegen den iOS-Auto-Zoom, klebender Absenden-Button unten im Daumenbereich. Vorbild: bernstein/personal-training Formular-Details.

Kontakt

Termin anfragen

Wir melden uns innerhalb von 24 Stunden zurück.

<style>
.mh13-phone{--akzent:#7c87ff;position:relative;overflow:hidden;max-width:360px;margin:0 auto;height:640px;border-radius:30px;border:1px solid #26262c;background:#111114;box-shadow:0 24px 60px -24px rgba(0,0,0,.8);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:#e9e9ee}
.mh13-phone *{box-sizing:border-box}
.mh13-notch{position:absolute;top:9px;left:50%;transform:translateX(-50%);width:104px;height:6px;border-radius:99px;background:#26262c;z-index:8;pointer-events:none}
.mh13-screen{position:relative;height:100%;overflow-y:auto;overflow-x:hidden;background:#16161a}
.mh13-form{display:flex;flex-direction:column}
.mh13-header{position:sticky;top:0;z-index:6;padding:26px 20px 14px;background:rgba(28,28,34,.82);-webkit-backdrop-filter:saturate(140%) blur(10px);backdrop-filter:saturate(140%) blur(10px);border-bottom:1px solid #26262c}
.mh13-eyebrow{margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:1.4px;text-transform:uppercase;color:var(--akzent,#7c87ff)}
.mh13-title{margin:0;font-size:20px;line-height:1.25;font-weight:650;color:#f4f4f5}
.mh13-sub{margin:5px 0 0;font-size:13px;line-height:1.5;color:#a1a1aa}
.mh13-fields{padding:18px 20px 16px;display:flex;flex-direction:column;gap:16px}
.mh13-field{display:flex;flex-direction:column;gap:7px}
.mh13-label{font-size:13px;font-weight:600;letter-spacing:.02em;color:#e9e9ee}
.mh13-label .mh13-opt{font-weight:500;color:#a1a1aa}
.mh13-input,.mh13-select,.mh13-textarea{width:100%;min-height:48px;padding:13px 15px;font-family:inherit;font-size:16px;line-height:1.4;color:#e9e9ee;background:#16161a;border:1px solid #26262c;border-radius:12px;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:border-color .2s ease,box-shadow .2s ease,background .2s ease}
.mh13-input::placeholder,.mh13-textarea::placeholder{color:#71717a}
.mh13-textarea{min-height:92px;resize:vertical;line-height:1.55}
.mh13-select{cursor:pointer;padding-right:42px;background-image:url("data:image/svg+xml,%3Csvg width='12' height='7' viewBox='0 0 12 7' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%237c87ff' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 16px center}
.mh13-select option{background:#16161a;color:#e9e9ee}
.mh13-input:focus-visible,.mh13-select:focus-visible,.mh13-textarea:focus-visible{border-color:var(--akzent,#7c87ff);background:#17171b;box-shadow:0 0 0 3px color-mix(in srgb,var(--akzent,#7c87ff) 26%,transparent)}
.mh13-input:-webkit-autofill,.mh13-input:-webkit-autofill:hover,.mh13-input:-webkit-autofill:focus,.mh13-textarea:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px #16161a inset!important;-webkit-text-fill-color:#e9e9ee!important;caret-color:#e9e9ee!important;border:1px solid #26262c!important;transition:background-color 9999s ease 0s}
.mh13-consent{display:flex;align-items:flex-start;gap:13px;min-height:44px;padding:4px 0;font-size:13px;line-height:1.55;color:#a1a1aa;cursor:pointer}
.mh13-consent input[type="checkbox"]{-webkit-appearance:none;appearance:none;flex:0 0 auto;width:24px;height:24px;margin:0;background:#16161a;border:1.5px solid var(--akzent,#7c87ff);border-radius:6px;cursor:pointer;position:relative;transition:background .2s ease,border-color .2s ease}
.mh13-consent input[type="checkbox"]:checked{background:var(--akzent,#7c87ff);border-color:var(--akzent,#7c87ff)}
.mh13-consent input[type="checkbox"]:checked::after{content:"";position:absolute;left:8px;top:3px;width:6px;height:12px;border:solid #0f0f12;border-width:0 2px 2px 0;transform:rotate(45deg)}
.mh13-consent input[type="checkbox"]:focus-visible{outline:2px solid var(--akzent,#7c87ff);outline-offset:2px}
.mh13-consent > span{flex:1 1 auto;min-width:0;padding-top:2px}
.mh13-consent a{color:var(--akzent,#7c87ff);text-underline-offset:3px}
.mh13-footer{position:sticky;bottom:0;z-index:6;margin-top:auto;padding:14px 20px calc(16px + env(safe-area-inset-bottom,0px));background:rgba(28,28,34,.82);-webkit-backdrop-filter:saturate(140%) blur(10px);backdrop-filter:saturate(140%) blur(10px);border-top:1px solid #26262c}
.mh13-submit{width:100%;min-height:52px;display:flex;align-items:center;justify-content:center;gap:9px;padding:14px 18px;font-family:inherit;font-size:16px;font-weight:600;color:#0f0f12;background:var(--akzent,#7c87ff);border:1px solid var(--akzent,#7c87ff);border-radius:14px;cursor:pointer;transition:filter .18s ease,transform .12s ease}
.mh13-submit svg{width:19px;height:19px}
.mh13-submit:active{transform:translateY(1px)}
.mh13-submit:focus-visible{outline:2px solid #f4f4f5;outline-offset:2px}
@media (hover:hover){
  .mh13-input:hover,.mh13-select:hover,.mh13-textarea:hover{border-color:#3a3a45}
  .mh13-consent:hover input[type="checkbox"]:not(:checked){background:color-mix(in srgb,var(--akzent,#7c87ff) 14%,#16161a)}
  .mh13-submit:hover{filter:brightness(1.08)}
}
.mh13-form:focus-within .mh13-eyebrow{color:var(--akzent,#7c87ff)}
@media (prefers-reduced-motion: reduce){
  .mh13-input,.mh13-select,.mh13-textarea,.mh13-consent input[type="checkbox"],.mh13-submit{transition:none}
  .mh13-submit:active{transform:none}
}
</style>

<div class="mh13-phone">
  <div class="mh13-notch" aria-hidden="true"></div>
  <div class="mh13-screen">
    <form class="mh13-form" aria-labelledby="mh13-title" novalidate>
      <div class="mh13-header">
        <p class="mh13-eyebrow">Kontakt</p>
        <h2 class="mh13-title" id="mh13-title">Termin anfragen</h2>
        <p class="mh13-sub">Wir melden uns innerhalb von 24 Stunden zurück.</p>
      </div>

      <div class="mh13-fields">
        <div class="mh13-field">
          <label class="mh13-label" for="mh13-name">Name</label>
          <input class="mh13-input" id="mh13-name" name="name" type="text" autocomplete="name" placeholder="Vor- und Nachname">
        </div>
        <!-- weitere Felder nach demselben Muster: E-Mail (type=email inputmode=email),
             Telefon (type=tel inputmode=tel), Anliegen (<select class="mh13-select">),
             Nachricht (<textarea class="mh13-textarea">) -->

        <label class="mh13-consent" for="mh13-ok">
          <input type="checkbox" id="mh13-ok" name="ok">
          <span>Ich habe die <a href="#">Datenschutzerklärung</a> gelesen und bin mit der Verarbeitung meiner Angaben einverstanden.</span>
        </label>
      </div>

      <div class="mh13-footer">
        <button class="mh13-submit" type="submit">
          <span>Anfrage absenden</span>
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg>
        </button>
      </div>
    </form>
  </div>
</div>