/*
 * Two-click embeds (Instagram, Google Maps, YouTube). Until the visitor agrees, a consent
 * card holds the embed's place at the same size, so loading does not move the page.
 */
.ts-embed__consent {
	display: grid;
	align-content: center;
	justify-items: start;
	gap: 1rem;
	padding: clamp(1.25rem, 0.9rem + 1.5vw, 2.25rem);
	border: 1px solid var(--line);
	background: var(--card);
}
.ts-embed__consent p { max-width: 36rem; margin: 0; color: var(--text-2); font-size: var(--fs-small); }
.ts-embed__consent a { color: var(--blue-hi); text-underline-offset: 3px; }
.ts-embed .ts-embed__heading { color: var(--text); font: 800 var(--fs-h3)/1 var(--font-display); }
.ts-embed__remember { display: flex; align-items: center; gap: 0.6rem; min-height: var(--tap); color: var(--text-2); font-size: var(--fs-small); cursor: pointer; }
.ts-embed__remember input { width: 1.15rem; height: 1.15rem; margin: 0; accent-color: var(--blue); }
.ts-embed__frame { display: block; width: 100%; border: 0; border-radius: var(--radius); }
.ts-embed__footer { display: flex; flex-wrap: wrap; align-items: center; gap: 0 1.5rem; }
.ts-embed__footer:not(:has(> :not([hidden]))) { display: none; }
.ts-embed__link { display: inline-flex; align-items: center; min-height: var(--tap); color: var(--blue-hi); font-weight: 600; text-underline-offset: 3px; }
.ts-embed__revoke { min-height: var(--tap); padding: 0; border: 0; background: none; color: var(--text-3); font: inherit; font-size: var(--fs-small); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.ts-embed__revoke:hover { color: var(--text); }
.ts-embed__note { margin: 0; color: var(--text-3); font-size: var(--fs-small); }
.ts-embed__footer { margin-top: 0.5rem; }

/* Instagram: a portrait card; the frame takes the height Instagram reports. */
.ts-embed--instagram { width: 100%; max-width: 34rem; justify-self: center; }
.ts-embed--instagram .ts-embed__consent { min-height: 26rem; }
.ts-embed--instagram .ts-embed__frame { height: 36rem; background: #fff; }

/* YouTube: a 16:9 stage. */
.ts-embed--video .ts-embed__stage { aspect-ratio: 16 / 9; }
.ts-embed--video :is(.ts-embed__consent, .ts-embed__frame) { width: 100%; height: 100%; }
.ts-embed--video .ts-embed__consent { overflow: auto; }
.ts-video { margin: 0; }
.ts-video__caption { margin-top: 0.4rem; color: var(--text-3); font-size: var(--fs-meta); }

/* Map: full content width, wide on desktop, squarer where the screen is narrow. */
.ts-embed--map .ts-embed__stage { aspect-ratio: 21 / 9; }
.ts-embed--map :is(.ts-embed__consent, .ts-embed__frame) { width: 100%; height: 100%; }
.ts-embed--map .ts-embed__consent { overflow: auto; }
@media (max-width: 960px) { .ts-embed--map .ts-embed__stage { aspect-ratio: 4 / 3; } }
@media (max-width: 599px) { .ts-embed--map .ts-embed__stage { aspect-ratio: 1; } }
.ts-embed--map { margin-top: clamp(1rem, 0.75rem + 0.8vw, 1.25rem); }
/* A ratio chosen in the block replaces the responsive default. */
.ts-embed--map.has-fixed-ratio .ts-embed__stage { aspect-ratio: var(--ts-map-ratio); }

/* Homepage Instagram section: intro and follow button next to the profile embed, stacked on phones. */
.insta__grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(2rem, 6vw, 6rem); align-items: center; }
.insta__body { display: grid; gap: clamp(1.25rem, 1rem + 0.8vw, 1.5rem); justify-items: start; }
.insta__body > * { margin-block: 0; }
.insta__body p:not(.eyebrow) { max-width: 32rem; font-size: var(--fs-lead); line-height: 1.55; }
/* Desktop: the embed takes two thirds of the width. */
@media (min-width: 1100px) {
	.insta__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: clamp(2rem, 4vw, 4rem); }
	.insta__grid .ts-embed--instagram { max-width: none; }
}
@media (max-width: 699px) {
	.insta__grid { grid-template-columns: minmax(0, 1fr); }
}
/* Editor only: the map preview after "Karte in der Vorschau laden". */
.ts-map-editor__frame { display: block; width: 100%; aspect-ratio: 21 / 9; border: 0; }
