/* Agentur (#159728) — living-photo team grid.
   NOT scoped to body.page-id-159728: a RevSlider/theme race intermittently
   rewrites <body> class via setAttribute('class', …), dropping the WP
   `page-id-159728` class and silently disabling every page-scoped rule (the
   grid collapsed to a single 15-row column). The file is already enqueued only
   on this page (is_page 159728) and the `.gmg-tm*` classes are unique to the
   gmg_team element, so class-only selectors are safe and race-proof. */
.gmg-tm{
	display:grid;
	grid-template-columns:repeat(4,1fr);
	gap:clamp(12px,2vw,28px);
	margin:2rem 0;
}
@media (max-width:1024px){ .gmg-tm{ grid-template-columns:repeat(3,1fr); } }
@media (max-width:640px){ .gmg-tm{ grid-template-columns:repeat(2,1fr); } }

.gmg-tm__card{ margin:0; cursor:pointer; }
@media (hover:hover){ .gmg-tm__card{ cursor:default; } }

.gmg-tm__media{
	position:relative;
	/* Match the VIDEO ratio (832x1104) so the video plays 1:1 with no cover-upscale
	   ("zoom" jump on hover). The 4:5 poster is cover-cropped ~6% on the sides instead. */
	aspect-ratio:832 / 1104;
	overflow:hidden;
	border-radius:0;
	background:transparent;
}
.gmg-tm__poster,
.gmg-tm__video{
	position:absolute;
	inset:0;
	width:100%;
	height:100%;
	object-fit:cover;
	display:block;
	margin:0;
}
.gmg-tm__video{
	opacity:0;
	transition:opacity .35s ease;
	pointer-events:none;
}
.gmg-tm__card.is-playing .gmg-tm__video{ opacity:1; }

/* Caption typography matches the previous Uncode gallery ("text under"):
   name 21.6px/600, role 18px/400, both Daytona Pro (inherited body font), italic, white. */
.gmg-tm__cap{ text-align:center; padding:1.35rem 0 0; }
.gmg-tm__name{ display:block; font-size:1.35rem; font-weight:600; font-style:italic; line-height:1.75; color:#fff; }
.gmg-tm__role{ display:block; font-size:1.125rem; font-weight:400; font-style:italic; line-height:1.75; color:#fff; margin-top:9px; }

@media (prefers-reduced-motion:reduce){
	.gmg-tm__video{ display:none; }
}

/* The video band under the CTA is an Uncode `scroll-trigger` row: it scales its
   content 1.15 → 1 with transform-origin `bottom center`, so while the animation
   runs the row reaches ~84px ABOVE its own top edge and covers the "Jetzt
   Erstgespräch vereinbaren" button. Its overlay gradient is transparent for the
   first 66%, so the overlap is invisible yet still eats the clicks — only the
   button's top few pixels stayed live. Clip the zoom to the row's own box.
   Safe here: this is the page's only scroll-trigger row and it has no
   position:sticky descendants. */
.vc_row.scroll-trigger-el.scroll-trigger-content{ overflow:hidden; }

/* "Als KI Agentur mit Sitz in München…" lead paragraph.
   Its WPBakery design-option writes an INLINE `margin:0 30%` — fine on the wide
   desktop column, but on a ~318px mobile column 30%+30% squeezes the text to
   ~127px. Neutralise the horizontal inline margin on small screens (needs
   !important to beat the inline style); desktop keeps its narrow centred look. */
@media (max-width:767px){
	.vc_custom_1773821408156{ margin-left:0 !important; margin-right:0 !important; }
}

/* Sektion "Klarheit vor Komplexität / Partnerschaft vor Projekt"
   (Row back_color="color-xsdn", uncode_shortcode_id 188868).
   Am Ende der LINKEN Spalte steht das einzige [vc_empty_space empty_h="4"] der
   Seite; Uncode rendert es als `.empty-space.empty-triple` mit padding-top:108px
   (uncode/library/css/style.css:4794).
   Nebeneinander (ab 960px) ist der Spacer unsichtbar — er verlängert nur die
   kürzere linke Spalte. Sobald die beiden `col-lg`-Spalten stapeln (gemessen:
   gestapelt bis 959px, nebeneinander ab 960px), wird daraus eine echte Lücke:
   der Abstand "…über einzelne Projekte hinausgehen." → "Umsetzung vor
   Präsentation" betrug 144px (108px Spacer + 36px Grundrhythmus), während JEDER
   andere Block-Abstand in derselben Spalte exakt 36px misst — ein Loch von 4x
   Rhythmus mitten im Fließtext.
   Nicht auf 0 (dann wäre der Spaltenwechsel vom normalen 36px-Abstand nicht mehr
   zu unterscheiden), sondern auf 24px → 60px Naht: sichtbar als kleine Zäsur
   zwischen dem letzten Absatz der ersten und der Überschrift der zweiten Spalte,
   aber ohne Leerraum-Loch.
   Breakpoint 959px statt 767px, weil die Spalten bis 959px stapeln — bei 767px
   bliebe der 144px-Sprung im Tablet-Bereich 768–959px stehen.
   Nicht auf `body.page-id-159728` gescopt: siehe Datei-Kopf — der Body-Class-Race
   killt page-gescopte Regeln; die Datei wird ohnehin nur via is_page(159728)
   geladen, und `.empty-triple` kommt auf dieser Seite genau einmal vor. */
@media (max-width:959px){
	.empty-space.empty-triple{ padding-top:24px !important; }
}
