/* ============ launch-polish 2026-07-20 — 5-lane launch review fixes ============
   Override layer, loaded after all theater css. Sources: lane1 hero paint P0,
   lane2 launcher overlap P1, lane3/4/5 P2 batch. No design-taste changes. */

/* P0 (lane1): Chromium clip-text raster loss under animated ancestor — own layer */
.hero h1 .g{transform:translateZ(0)}

/* P1 (lane2): fixed chat launcher covered #demoReplay at 641-1280px — icon-only there */
@media (max-width:1280px){ .aw.aw-fixed .aw-label{display:none} }

/* P1 (lane4/5): 390 bottom stack — footer legal row clear of FABs, to-top clear of launcher */
@media (max-width:480px){
  .footer{padding-bottom:120px}
  .to-top{bottom:170px}
}

/* P1 (lane1): Login tap target 60x19 -> >=40px hit area, same visual */
.nav-login{padding:12px 12px; margin:-12px -12px}

/* button->a swap safety */
.cta{text-decoration:none}

/* P2 (lane5): keyboard focus visible on demo suggestion chips */
.chip:focus-visible{outline:2px solid #2D6CF6; outline-offset:2px}

/* P2 (lane3): stats 2x2 at 390 — "~700 ms" wrapped */
@media (max-width:420px){ #ablauf .stat .n{white-space:nowrap; font-size:30px} }

/* P2 (lane3): Kanäle "Mehr erfahren" aligned to card bottom at >=1200 */
@media (min-width:1200px){
  #kanaele .chan{display:flex; flex-direction:column}
  #kanaele .chan .more{margin-top:auto}
}

/* P2 (lane3): ZUX mock 4th tab clipped at 390 */
@media (max-width:430px){ .zux-mock .zm-tabs span:nth-child(4){display:none} }

/* P2 (lane2): mw stage height snap mid-auto-chain on phones — glide instead */
@media (max-width:720px){ .demo-stage{transition:height .35s ease} }

/* P2 (lane3): transient horizontal wiggle from revealed decorations */
html,body{overflow-x:clip}
