/* plate_resorts — Resort-Detailseite.
   Gescoped auf .plr-detail (kein Frame-Kontext). Farben/Fonts NUR über
   var(--lr-*, <fallback>). */

/* Inhaltsbreite aller Container hier = die des generischen .frame-container
   (--frame-width-xxl + --bs-gap-default), damit die linke Kante mit dem
   Seitenkopf und dem uebrigen Inhalt fluchtet. Keine eigene Breitenquelle. */
.plr-detail {
	color: var(--lr-ink, #2D2D2D);
}

/* Fallback-Kopf ohne verknuepften Datensatz: bildet die .frame-container-Box nach
   (frueher ein Bootstrap-`.container` im Markup — eine zweite Breitenquelle, die
   gegen jedes Inhaltselement derselben Seite sprang). */
.plr-detail--empty {
	max-width: var(--frame-width-xxl, 1380px);
	margin-inline: auto;
	padding: clamp(2rem, 5vw, 4rem) var(--bs-gap-default, 1.5rem);
}

/* ---------- Kopf: FALLBACK, nicht Regelfall ----------------------------------
   Rendert ausschliesslich, wenn der Aufrufer `showHead=1` uebergibt — also auf
   Installationen OHNE eigenen Theme-Seitenkopf. Wo ein Theme seinen Kopf selbst
   liefert (`showHead=0`), existiert dieses Markup gar nicht.

   Box (Nachbildung des .frame-container), Freiraum unter einem fixierten Header,
   Schichtung von Medium/Abdunklung und Zeilenlaengen kommen aus dem GENERISCHEN
   Vertrag `pl-pagehero` (EXT:plate_partials/.../Organisms/PageHero/PageHero.css),
   den das Partial mitlaedt. Hier steht deshalb NUR die resort-eigene Zier:
     - KEINE eigene Inhaltsbreite / kein Seiten-Padding (zweite Breitenquelle),
     - KEINE Heading-Typo (font-family/-size an h*) — die gehoert dem Theme bzw.
       den plate_bootstrap-Settings-Slots (h1-font-size …),
     - KEINE Theme-Tokens (--lr-*) — die wirken nur, solange zufaellig ein
       bestimmtes Theme sie definiert.
   Ein Theme, das den Fallback doch einsetzt, skinnt ihn ueber die
   `--pl-pagehero-*`-Slots, nicht ueber Eigenschaften.
   ---------------------------------------------------------------------------- */

/* Nur mit Medium: heller Text ueber der Abdunklung. Ohne Medium bleibt die
   Vertrags-Regel `--nomedia` (Farbe erbt vom Dokument) gueltig — deshalb die
   :not()-Bedingung statt einer pauschalen Farbe. */
.plr-detail__hero:not(.pl-pagehero--nomedia) {
	--pl-pagehero-color: var(--bs-white, #fff);
	--pl-pagehero-scrim: linear-gradient(180deg, rgba(0, 0, 0, 0) 30%, rgba(0, 0, 0, 0.66) 100%);
}

.plr-detail__eyebrow {
	display: flex;
	align-items: center;
	gap: 0.7em;
	font-size: 0.72rem;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: inherit;
	margin: 0 0 1rem;
}

.plr-detail__eyebrow::before {
	content: "";
	width: 2.6rem;
	height: 1px;
	background: var(--pl-pagehero-accent, currentColor);
}

.plr-detail__tags {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
}

.plr-tag {
	display: inline-block;
	border: 1px solid color-mix(in srgb, currentColor 40%, transparent);
	border-radius: 2rem;
	padding: 0.35rem 0.9rem;
	font-size: 0.66rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: inherit;
}

/* ---------- Body: Beschreibung + Aside ---------- */
.plr-detail__body {
	display: grid;
	grid-template-columns: minmax(0, 1.7fr) minmax(0, 1fr);
	gap: clamp(2rem, 6vw, 5rem);
	max-width: var(--frame-width-xxl, 1380px);
	margin: 0 auto;
	padding: clamp(3rem, 7vw, 6rem) var(--bs-gap-default, 1.5rem);
}

@media (max-width: 820px) {
	.plr-detail__body {
		grid-template-columns: minmax(0, 1fr);
	}
}

.plr-detail__prose {
	font-size: 1.05rem;
	line-height: 1.7;
	color: var(--lr-forest, #4B524C);
}

.plr-detail__prose > :first-child {
	margin-top: 0;
}

.plr-detail__h {
	font-family: var(--lr-font-display, inherit);
	font-size: clamp(1.5rem, 3vw, 2.1rem);
	margin: clamp(2rem, 4vw, 3rem) 0 1.2rem;
}

.plr-detail__hl-list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.plr-detail__hl-list li {
	position: relative;
	padding: 0.7rem 0 0.7rem 1.8rem;
	border-top: 1px solid var(--lr-line, rgba(45, 45, 45, 0.14));
	font-size: 1rem;
	color: var(--lr-ink, #2D2D2D);
}

.plr-detail__hl-list li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 1.15rem;
	width: 1rem;
	height: 1px;
	background: var(--lr-bronze, #B89B6A);
}

/* ---------- Aside (Fakten + CTA) ---------- */
.plr-detail__aside {
	align-self: start;
	position: sticky;
	top: 2rem;
	padding: clamp(1.6rem, 3vw, 2.2rem);
	background: var(--lr-ivory, #F4F1EC);
	border: 1px solid var(--lr-line, rgba(45, 45, 45, 0.14));
}

.plr-detail__facts {
	margin: 0 0 1.6rem;
}

.plr-detail__facts dt {
	font-size: 0.64rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--lr-bronze-deep, #9C8255);
	margin-top: 1rem;
}

.plr-detail__facts dt:first-child {
	margin-top: 0;
}

.plr-detail__facts dd {
	margin: 0.2rem 0 0;
	font-size: 1rem;
	color: var(--lr-ink, #2D2D2D);
}

.plr-btn {
	display: inline-block;
	padding: 0.9rem 1.8rem;
	font-size: 0.72rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	text-decoration: none;
	text-align: center;
	transition: background 0.3s, color 0.3s;
}

.plr-btn--bronze {
	width: 100%;
	background: var(--lr-bronze, #B89B6A);
	color: var(--lr-ink, #2D2D2D);
}

.plr-btn--bronze:hover {
	background: var(--lr-bronze-deep, #9C8255);
	color: var(--lr-on-dark, #EFEAE0);
}

.plr-detail__weblink {
	display: inline-block;
	margin-top: 1rem;
	font-size: 0.72rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--lr-bronze-deep, #9C8255);
}

.plr-detail__contact {
	margin-top: 1.6rem;
	padding-top: 1.2rem;
	border-top: 1px solid var(--lr-line, rgba(45, 45, 45, 0.14));
	font-style: normal;
	font-size: 0.92rem;
	line-height: 1.6;
}

.plr-detail__contact p {
	margin: 0 0 0.35rem;
}

.plr-detail__contact a {
	color: var(--lr-bronze-deep, #9C8255);
}

/* ---------- Galerie ---------- */
.plr-detail__gallery {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 20rem), 1fr));
	gap: clamp(0.8rem, 2vw, 1.4rem);
	max-width: var(--frame-width-xxl, 1380px);
	margin: 0 auto;
	padding: 0 var(--bs-gap-default, 1.5rem) clamp(3rem, 7vw, 6rem);
}

.plr-detail__gallery-item {
	margin: 0;
	aspect-ratio: 4 / 3;
	overflow: hidden;
	background: var(--lr-ivory-deep, #ECE6DB);
}

.plr-detail__gallery-item img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.media--zoom img {
	transition: transform 1.2s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.plr-detail__gallery-item.media--zoom:hover img {
	transform: scale(1.05);
}

@media (prefers-reduced-motion: reduce) {
	.media--zoom img {
		transition: none;
	}
}
