/* Praxis-Termine – Farben aus dem Look „See & Kräuter“. Das Theme kann die Variablen überschreiben. */
.pt,
.pt-standalone {
	--pt-see: #1D3B42;
	--pt-see-dunkel: #2F464B;
	--pt-text: #1D3B42;
	--pt-leise: #5A6B66;
	--pt-grund: #F3EEE4;
	--pt-karte: #FBF8F2;
	--pt-linie: #D9D2C1;
	--pt-kraut: #3F5A3A;
	--pt-frei: #E3E9E1;
	--pt-frei-rand: #C7CFC4;
	--pt-akzent: #7F5614;
	--pt-fehler: #9B2C1F;
	--pt-serif: 'Cormorant Garamond', Georgia, 'Times New Roman', serif;
	--pt-radius: 8px;
	--pt-feld-rand: #7D8A86;
}

.pt {
	color: var(--pt-text);
	max-width: 640px;
	margin: 0 auto;
	font-size: 1rem;
	line-height: 1.55;
}
.pt *,
.pt *::before,
.pt *::after { box-sizing: border-box; }

.pt [hidden] { display: none !important; }

.pt-block { margin: 0 0 2.25rem; }

.pt .pt-heading {
	font-family: var(--pt-serif);
	font-weight: 400;
	font-size: 1.75rem;
	line-height: 1.15;
	margin: 0 0 1rem;
	color: var(--pt-text);
	scroll-margin-top: 90px;
}
.pt .pt-heading:focus { outline: none; }

/* Knöpfe allgemein */
.pt button { font: inherit; cursor: pointer; }
.pt button:focus-visible,
.pt input:focus-visible,
.pt a:focus-visible,
.pt-standalone :focus-visible { outline: 2px solid var(--pt-see); outline-offset: 3px; }

/* Dauer */
.pt-pills { display: flex; flex-wrap: wrap; gap: .75rem; }
.pt-pill {
	min-height: 48px;
	padding: .7rem 1.5rem;
	border-radius: 999px;
	border: 1px solid var(--pt-see);
	background: transparent;
	color: var(--pt-see);
	font-weight: 500;
}
.pt-pill:hover { background: var(--pt-frei); }
.pt-pill[aria-pressed="true"] { background: var(--pt-see); color: var(--pt-grund); }

/* Kalender */
.pt-cal {
	background: var(--pt-karte);
	border: 1px solid var(--pt-linie);
	border-radius: var(--pt-radius);
	padding: 1rem;
}
.pt-cal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: .75rem; }
.pt .pt-month { font-family: var(--pt-serif); font-size: 1.5rem; font-weight: 400; margin: 0; }
.pt-nav {
	width: 44px; height: 44px;
	border-radius: 999px;
	border: 1px solid var(--pt-linie);
	background: transparent;
	color: var(--pt-see);
	font-size: 1.5rem; line-height: 1;
	display: inline-flex; align-items: center; justify-content: center;
}
.pt-nav:hover:not(:disabled) { background: var(--pt-frei); }
.pt-nav:disabled { opacity: .35; cursor: default; }

.pt-weekdays,
.pt-days { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.pt-weekdays span {
	text-align: center;
	font-size: .8rem;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: var(--pt-leise);
	padding-bottom: .25rem;
}
.pt-days.pt-loading { opacity: .45; pointer-events: none; }
.pt-day {
	aspect-ratio: 1 / 1;
	min-height: 40px;
	display: flex; align-items: center; justify-content: center;
	border-radius: var(--pt-radius);
	font-size: 1rem;
	font-variant-numeric: tabular-nums;
	border: 1px solid transparent;
}
.pt-day-leer { visibility: hidden; }
.pt-day-frei {
	background: var(--pt-frei);
	border-color: var(--pt-frei-rand);
	color: var(--pt-see);
	font-weight: 600;
	padding: 0;
}
.pt-day-frei:hover { background: #d5dfd3; }
.pt-day-frei.pt-selected { background: var(--pt-see); border-color: var(--pt-see); color: var(--pt-grund); }
.pt-day-voll {
	color: var(--pt-leise);
	border-color: var(--pt-linie);
	background: repeating-linear-gradient(135deg, transparent 0 6px, rgba(90,107,102,.12) 6px 7px);
	text-decoration: line-through;
}
.pt-day-zu { color: #93A39E; }

.pt-legend {
	list-style: none;
	display: flex; flex-wrap: wrap; gap: .5rem 1.25rem;
	margin: .9rem 0 0; padding: 0;
	font-size: .875rem;
	color: var(--pt-leise);
}
.pt-legend li { display: flex; align-items: center; gap: .45rem; margin: 0; }
.pt-key { width: 14px; height: 14px; border-radius: 3px; display: inline-block; border: 1px solid var(--pt-linie); }
.pt-key-frei { background: var(--pt-frei); border-color: var(--pt-frei-rand); }
.pt-key-voll { background: repeating-linear-gradient(135deg, transparent 0 3px, rgba(90,107,102,.35) 3px 4px); }
.pt-key-zu { background: transparent; }

/* Uhrzeiten */
.pt-slots { display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: .6rem; }
.pt-slot {
	min-height: 48px;
	border-radius: 999px;
	border: 1px solid var(--pt-see);
	background: transparent;
	color: var(--pt-see);
	font-weight: 500;
	font-variant-numeric: tabular-nums;
}
.pt-slot:hover { background: var(--pt-frei); }
.pt-slot.pt-selected { background: var(--pt-see); color: var(--pt-grund); }

/* Formular */
.pt .pt-summary {
	font-family: var(--pt-serif);
	font-size: 1.4rem;
	margin: -.25rem 0 1.25rem;
	color: var(--pt-kraut);
}
.pt-field { margin-bottom: 1rem; }
.pt-field label { display: block; font-weight: 500; margin-bottom: .3rem; }
.pt-field input {
	width: 100%;
	min-height: 52px;
	padding: 0 18px;
	font: inherit;
	font-size: 16px;
	color: var(--pt-text);
	background: #fff;
	border: 1px solid var(--pt-feld-rand);
	border-radius: 999px;
}
.pt-field input[aria-invalid="true"] { border-color: var(--pt-fehler); }
.pt-error { display: block; color: var(--pt-fehler); font-size: .875rem; margin-top: .25rem; min-height: 0; }
.pt-error:empty { display: none; }
.pt-check { display: flex; gap: .7rem; align-items: flex-start; margin: 1.25rem 0 .5rem; }
.pt-check input { width: 22px; height: 22px; margin: .15rem 0 0; flex-shrink: 0; accent-color: var(--pt-see); }
.pt-check label { font-size: .95rem; }
.pt a { color: var(--pt-akzent); }
.pt a:hover { color: #5E3F0E; }
.pt-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.pt .pt-note { font-size: .95rem; color: var(--pt-leise); margin: 1rem 0; }
.pt .pt-small { font-size: .875rem; color: var(--pt-leise); margin: .9rem 0 0; }

.pt-button {
	display: inline-flex; align-items: center; justify-content: center;
	min-height: 52px;
	margin-top: 1rem;
	padding: 0 32px;
	border-radius: 999px;
	border: 1px solid var(--pt-see);
	background: var(--pt-see);
	color: var(--pt-grund);
	font: inherit;
	font-size: 17px;
	font-weight: 500;
	text-decoration: none;
	cursor: pointer;
}
.pt-button:hover { background: var(--pt-see-dunkel); }
.pt-button:disabled { opacity: .6; cursor: wait; }
.pt-button.pt-button-quiet { background: transparent; color: var(--pt-see); }
.pt-button.pt-button-quiet:hover { background: var(--pt-frei); }

.pt-status:empty { display: none; }
.pt-status { padding: .9rem 1rem; border-radius: var(--pt-radius); background: var(--pt-frei); }
.pt-status-fehler { background: #F6E3DE; color: var(--pt-fehler); }

.pt-empty { padding: 1.25rem; border: 1px solid var(--pt-linie); border-radius: var(--pt-radius); background: var(--pt-karte); }

@media (max-width: 480px) {
	.pt-cal { padding: .6rem; }
	.pt-weekdays, .pt-days { gap: 4px; }
	.pt-day { font-size: .95rem; }
	.pt .pt-heading { font-size: 1.4rem; }
	.pt-button { width: 100%; }
}

/* ---------- Seiten hinter den E-Mail-Links ---------- */
.pt-standalone {
	margin: 0;
	background: var(--pt-grund);
	color: var(--pt-text);
	font-family: 'Work Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
	font-size: 17px;
	line-height: 1.55;
}
.pt-page { max-width: 560px; margin: 0 auto; padding: 48px 20px 64px; }
.pt-page-brand { font-family: var(--pt-serif); font-size: 1.2rem; color: var(--pt-kraut); margin: 0 0 1.5rem; }
.pt-page h1 { font-family: var(--pt-serif); font-weight: 400; font-size: 2.2rem; line-height: 1.15; margin: 0 0 1.25rem; }
.pt-page a { color: var(--pt-akzent); }
.pt-details {
	display: grid; grid-template-columns: max-content 1fr; gap: .45rem 1.25rem;
	background: var(--pt-karte);
	border: 1px solid var(--pt-linie);
	border-radius: var(--pt-radius);
	padding: 1rem 1.25rem;
	margin: 1.25rem 0;
}
.pt-details dt { color: var(--pt-leise); }
.pt-details dd { margin: 0; overflow-wrap: anywhere; }
.pt-page-form label { display: block; font-weight: 500; margin: 1.25rem 0 .35rem; }
.pt-optional { font-weight: 400; color: var(--pt-leise); }
.pt-page-form textarea {
	width: 100%; box-sizing: border-box;
	font: inherit; padding: .7rem .85rem;
	border: 1px solid var(--pt-feld-rand); border-radius: var(--pt-radius); background: #fff; color: var(--pt-text);
}
.pt-hint { font-size: .9rem; color: var(--pt-leise); margin: .35rem 0 0; }
.pt-switch { margin-top: 1.75rem; }
@media (max-width: 480px) {
	.pt-details { grid-template-columns: 1fr; gap: .1rem; }
	.pt-details dd { margin-bottom: .5rem; }
	.pt-page .pt-button { width: 100%; }
}
