/* Casa Gelsomino – Buchung, Bestätigung, Kontakt. Farben über CSS-Variablen des Themes (mit Fallbacks). */
.cg-booking, .cg-confirm, .cg-contact-form, .cg-summary, .cg-mobilebar {
	--b-ink: var(--cg-ink, #1C2B36);
	--b-lake: var(--cg-lake, #1F4E6B);
	--b-lake-d: var(--cg-lake-dark, #163A50);
	--b-sky: var(--cg-sky, #EAF1F5);
	--b-sand: var(--cg-sand, #EDE6DC);
	--b-line: var(--cg-line, #DCD6CC);
	--b-muted: var(--cg-muted, #5E6B74);
	--b-bg: var(--cg-bg, #FBFAF7);
	--b-ok: #2F6B45;
	--b-err: #B03A2E;
	--b-r: var(--cg-radius, 6px);
}
.cg-hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* Layout */
.cg-booking { display: grid; grid-template-columns: minmax(0, 1fr) 380px; gap: 40px; align-items: start; }
.cg-booking > .cg-alert { grid-column: 1 / -1; margin: 0; }
@media (max-width: 980px) { .cg-booking { grid-template-columns: minmax(0, 1fr); gap: 28px; } }

/* Schritte */
.cg-step { border: 1px solid var(--b-line); border-radius: var(--b-r); background: #fff; padding: 24px 26px 26px; margin: 0 0 20px; min-width: 0; }
.cg-step legend { float: left; width: 100%; padding: 0; margin: 0 0 18px; font-family: var(--cg-serif, Georgia, serif); font-size: 1.5rem; font-weight: 600; color: var(--b-ink); display: flex; align-items: center; gap: 12px; }
.cg-step legend + * { clear: both; }
.cg-step__no { display: inline-grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: var(--b-lake); color: #fff; font: 600 .9rem/1 var(--cg-sans, system-ui, sans-serif); flex: none; }
.cg-step.has-error { border-color: var(--b-err); }
@media (max-width: 600px) { .cg-step { padding: 18px 16px 20px; } .cg-step legend { font-size: 1.3rem; } }

.cg-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.cg-row--zip { grid-template-columns: 140px 1fr; }
@media (max-width: 600px) { .cg-row { grid-template-columns: 1fr; gap: 0; } .cg-row--zip { grid-template-columns: 110px 1fr; gap: 12px; } }

/* Felder */
.cg-field { display: block; margin: 0 0 16px; }
.cg-field > span:first-child { display: block; font-size: .875rem; font-weight: 500; color: var(--b-ink); margin-bottom: 6px; }
.cg-field em { font-style: normal; color: var(--b-muted); font-weight: 400; }
.cg-field input, .cg-field textarea, .cg-field select {
	display: block; width: 100%; box-sizing: border-box; font: inherit; font-size: 1rem; color: var(--b-ink);
	background: #fff; border: 1px solid #C9C2B6; border-radius: var(--b-r); padding: 12px 14px; min-height: 48px;
	transition: border-color .15s, box-shadow .15s;
}
.cg-field textarea { min-height: 110px; resize: vertical; }
.cg-field input:focus, .cg-field textarea:focus, .cg-field select:focus { outline: none; border-color: var(--b-lake); box-shadow: 0 0 0 3px rgba(31, 78, 107, .15); }
.cg-field.has-error input, .cg-field.has-error textarea { border-color: var(--b-err); background: #FFF8F7; }
.cg-field__error { display: block; color: var(--b-err); font-size: .85rem; margin-top: 6px; }
.cg-field__error::before { content: "! "; font-weight: 700; }
.cg-hint { font-size: .85rem; color: var(--b-muted); margin: 8px 0 0; }

.cg-check { display: flex; gap: 12px; align-items: flex-start; cursor: pointer; font-size: .95rem; line-height: 1.5; margin: 0 0 6px; }
.cg-check input { width: 20px; height: 20px; margin: 2px 0 0; accent-color: var(--b-lake); flex: none; }
.cg-check a { color: var(--b-lake); }
.cg-check.has-error span { color: var(--b-err); }

/* Datumsfelder (ohne JS sichtbar, mit JS ersetzt durch Kalender) */
.cg-dates.is-js { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.cg-dates__hint { font-size: .9rem; color: var(--b-muted); margin: 0 0 12px; }

/* Kalender: siehe calendar.css (gemeinsam mit der Schnellbuchung auf der Startseite) */

/* Gäste-Stepper */
.cg-stepper { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 0; }
.cg-stepper__label { font-weight: 500; }
.cg-stepper__label small { display: block; font-weight: 400; font-size: .82rem; color: var(--b-muted); }
.cg-stepper__ctrl { display: flex; align-items: center; gap: 4px; }
.cg-stepper__ctrl button { width: 40px; height: 40px; border-radius: 50%; border: 1px solid #C9C2B6; background: #fff; color: var(--b-ink); font-size: 1.25rem; line-height: 1; cursor: pointer; display: grid; place-items: center; padding: 0; }
.cg-stepper__ctrl button:hover:not(:disabled) { border-color: var(--b-lake); color: var(--b-lake); }
.cg-stepper__ctrl button:disabled { opacity: .35; cursor: default; }
.cg-stepper__ctrl input { width: 44px; text-align: center; border: 0; font: inherit; font-size: 1.1rem; font-weight: 600; background: transparent; color: var(--b-ink); -moz-appearance: textfield; appearance: textfield; }
.cg-stepper__ctrl input::-webkit-outer-spin-button, .cg-stepper__ctrl input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

/* Buttons (falls Theme keine liefert) */
.cg-booking .cg-btn, .cg-contact-form .cg-btn, .cg-confirm .cg-btn, .cg-mobilebar .cg-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 52px; padding: 0 28px; border-radius: var(--b-r);
	background: var(--b-lake); color: #fff; border: 0; font: 600 .85rem/1 var(--cg-sans, system-ui, sans-serif); letter-spacing: .12em; text-transform: uppercase; text-decoration: none; cursor: pointer;
	transition: background .15s, transform .1s;
}
.cg-booking .cg-btn:hover, .cg-contact-form .cg-btn:hover, .cg-mobilebar .cg-btn:hover { background: var(--b-lake-d); }
.cg-btn--block { width: 100%; margin-top: 18px; }
.cg-btn.is-busy { opacity: .75; cursor: progress; }
.cg-btn--small { min-height: 42px !important; padding: 0 16px !important; font-size: .75rem !important; }
.cg-booking__note { margin-top: 14px; }

/* Preis-Zusammenfassung */
.cg-summary { position: sticky; top: calc(var(--cg-header-h, 72px) + 20px); }
.cg-summary__card { background: #fff; border: 1px solid var(--b-line); border-radius: var(--b-r); padding: 24px; box-shadow: 0 12px 32px -18px rgba(28, 43, 54, .25); }
.cg-summary__title { font-family: var(--cg-serif, Georgia, serif); font-size: 1.5rem; font-weight: 600; margin: 0 0 16px; color: var(--b-ink); }
.cg-summary__body { transition: opacity .15s; }
.cg-summary__body.is-loading { opacity: .45; }
.cg-summary__empty { color: var(--b-muted); font-size: .95rem; margin: 0; padding: 18px; background: var(--b-bg); border-radius: var(--b-r); text-align: center; }
.cg-summary__empty--error { color: var(--b-err); background: #FFF6F5; }
.cg-summary__cheaper { margin: 16px 0 0; padding: 12px 14px; background: var(--b-sky); border-radius: var(--b-r); color: var(--b-lake-d); font-size: .88rem; line-height: 1.45; }
.cg-summary__cheaper::before { content: "✓ "; font-weight: 700; }
@media (max-width: 980px) { .cg-summary { position: static; order: -1; } }

.cg-sum { margin: 0; font-size: .95rem; }
.cg-sum > div { display: flex; justify-content: space-between; gap: 16px; padding: 10px 0; border-bottom: 1px solid #EEE9E1; }
.cg-sum dt { margin: 0; color: var(--b-ink); }
.cg-sum dd { margin: 0; text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.cg-sum small { display: block; font-size: .8rem; color: var(--b-muted); margin-top: 2px; white-space: normal; }
.cg-sum__meta dd { white-space: normal; }
.cg-sum__meta dt { color: var(--b-muted); }
.cg-sum__row--extra dd, .cg-sum__row--cleaning dd { color: var(--b-ok); }
.cg-badge { display: inline-block; background: #E6F0E8; color: var(--b-ok); font-size: .72rem; font-weight: 600; letter-spacing: .02em; padding: 2px 8px; border-radius: 20px; vertical-align: 1px; }
.cg-sum__total { border-bottom: 0 !important; border-top: 2px solid var(--b-ink); margin-top: 6px; padding-top: 14px !important; }
.cg-sum__total dt, .cg-sum__total dd { font-weight: 700; font-size: 1.15rem; }
.cg-sum__total dd { font-size: 1.35rem; color: var(--b-ink); }
.cg-sum__pay { background: var(--b-bg); margin: 0 -10px; padding: 10px !important; border-bottom: 0 !important; border-radius: var(--b-r); }
.cg-sum__pay + .cg-sum__pay { margin-top: 4px; }
.cg-sum__pay dd { font-weight: 600; }
.cg-sum__info { font-size: .82rem; color: var(--b-muted); margin: 14px 0 0; line-height: 1.5; }

/* Mobile Leiste */
.cg-mobilebar { display: none; }
@media (max-width: 980px) {
	.cg-mobilebar:not([hidden]) {
		display: flex; position: fixed; left: 0; right: 0; bottom: 0; z-index: 60; align-items: center; justify-content: space-between; gap: 12px;
		padding: 10px 16px calc(10px + env(safe-area-inset-bottom)); background: #fff; border-top: 1px solid var(--b-line); box-shadow: 0 -8px 24px -12px rgba(0, 0, 0, .2);
	}
	.cg-mobilebar__label { display: block; font-size: .75rem; color: var(--b-muted); text-transform: uppercase; letter-spacing: .08em; }
	.cg-mobilebar strong { font-size: 1.15rem; }
}

/* Hinweise */
.cg-alert { border-radius: var(--b-r); padding: 14px 18px; margin: 0 0 20px; font-size: .95rem; line-height: 1.5; border: 1px solid; }
.cg-alert--error { background: #FFF6F5; border-color: #EBC2BC; color: #8A2C22; }
.cg-alert--warn { background: #FFF9EC; border-color: #EAD6A5; color: #6F5313; }
.cg-alert--success { background: #EEF6F0; border-color: #BFD9C6; color: #24553A; }
.cg-alert--info { background: var(--b-sky); border-color: #C8DAE5; color: var(--b-lake-d); }

/* Bestätigung */
.cg-confirm__head { text-align: center; max-width: 640px; margin: 0 auto 40px; }
.cg-confirm__icon { width: 72px; height: 72px; border-radius: 50%; background: #E6F0E8; display: grid; place-items: center; margin: 0 auto 18px; }
.cg-confirm__icon svg { width: 38px; height: 38px; fill: var(--b-ok); }
.cg-confirm__head h2 { margin: 0 0 14px; }
.cg-confirm__no { display: inline-flex; flex-direction: column; gap: 2px; background: #fff; border: 1px dashed var(--b-lake); border-radius: var(--b-r); padding: 10px 26px; margin: 0 0 18px; }
.cg-confirm__no span { font-size: .75rem; text-transform: uppercase; letter-spacing: .12em; color: var(--b-muted); }
.cg-confirm__no strong { font-size: 1.5rem; letter-spacing: .04em; color: var(--b-lake-d); font-variant-numeric: tabular-nums; }
.cg-confirm__grid { display: grid; grid-template-columns: minmax(0, 1fr) 400px; gap: 40px; align-items: start; }
@media (max-width: 980px) { .cg-confirm__grid { grid-template-columns: 1fr; } .cg-confirm__price { order: -1; } }
.cg-confirm__next h3, .cg-confirm__grid h3 { font-family: var(--cg-serif, Georgia, serif); font-size: 1.45rem; font-weight: 600; margin: 0 0 14px; }
.cg-steps { list-style: none; counter-reset: s; margin: 0 0 22px; padding: 0; }
.cg-steps li { counter-increment: s; position: relative; padding: 0 0 18px 48px; line-height: 1.55; }
.cg-steps li::before { content: counter(s); position: absolute; left: 0; top: -2px; width: 32px; height: 32px; border-radius: 50%; background: var(--b-sky); color: var(--b-lake-d); display: grid; place-items: center; font-weight: 600; font-size: .9rem; }
.cg-steps li:not(:last-child)::after { content: ""; position: absolute; left: 15px; top: 34px; bottom: 2px; width: 2px; background: var(--b-sky); }
.cg-confirm__cancel { background: #EEF6F0; border-radius: var(--b-r); padding: 12px 16px; color: #24553A; font-size: .95rem; }
.cg-confirm__guest { display: grid; grid-template-columns: 140px 1fr; gap: 8px 16px; margin: 0 0 18px; }
.cg-confirm__guest dt { color: var(--b-muted); }
.cg-confirm__guest dd { margin: 0; }
@media (max-width: 600px) { .cg-confirm__guest { grid-template-columns: 1fr; gap: 2px; } .cg-confirm__guest dd { margin-bottom: 10px; } }

/* Kontakt */
.cg-contact-form { background: #fff; border: 1px solid var(--b-line); border-radius: var(--b-r); padding: 26px; }
.cg-contact-form .cg-btn { margin-top: 16px; }
@media (max-width: 600px) { .cg-contact-form { padding: 18px 16px; } }

@media print {
	.cg-mobilebar, .cg-link-btn { display: none !important; }
	.cg-confirm__grid { grid-template-columns: 1fr; }
	.cg-summary__card { box-shadow: none; }
}

/* Storno-Hinweis in der Preisaufstellung (1.1.0) */
.cg-sum__cancel { margin: 14px 0 0; padding: 10px 12px; background: #E8F1EA; color: #24543A; border-radius: var(--b-r); font-size: .86rem; line-height: 1.45; }
.cg-sum__cancel a { color: inherit; font-weight: 600; }
