/*
 * SCI-LENS booking form. Mobile-first; works from 320px wide.
 * SCI-LENS brand (Milestone 7): purple #631384. A theme may override the --sclens-color-* tokens.
 */
.sclens-bk {
	--sclens-bk-accent: var(--sclens-color-accent, #631384);
	--sclens-bk-accent-ink: var(--sclens-color-on-accent, #ffffff);
	--sclens-bk-ink: var(--sclens-color-text, #1f2328);
	--sclens-bk-muted: var(--sclens-color-muted, #57606a);
	--sclens-bk-surface: var(--sclens-color-surface, #ffffff);
	--sclens-bk-line: var(--sclens-color-border, #d0d7de);
	--sclens-bk-error: #b42318;
	--sclens-bk-radius: var(--sclens-radius, 10px);
	--sclens-bk-focus: 0 0 0 3px rgba(99, 19, 132, 0.4);
	color: var(--sclens-bk-ink);
	max-width: 46rem;
	margin: 0 auto;
	font-size: 1rem;
	line-height: 1.5;
}
/* Dark colours only when the site theme says so (data-theme="dark" or .sclens-dark on an ancestor),
   never from the device setting alone: the form must match the page it sits on. */
[data-theme="dark"] .sclens-bk,
.sclens-dark .sclens-bk {
	--sclens-bk-accent: var(--sclens-color-accent, #c99cf0);
	--sclens-bk-accent-ink: var(--sclens-color-on-accent, #1a0a24);
	--sclens-bk-ink: var(--sclens-color-text, #e6edf3);
	--sclens-bk-muted: var(--sclens-color-muted, #9da7b3);
	--sclens-bk-surface: var(--sclens-color-surface, #161b22);
	--sclens-bk-line: var(--sclens-color-border, #3d444d);
	--sclens-bk-error: #ff8b7e;
}
.sclens-bk *, .sclens-bk *::before, .sclens-bk *::after { box-sizing: border-box; }
.sclens-bk__hp { position: absolute !important; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.sclens-bk__step { border: 0; margin: 0 0 2rem; padding: 0; min-width: 0; }
.sclens-bk__title { font-size: 1.35rem; font-weight: 700; margin: 0 0 1rem; padding: 0; }
.sclens-bk__group { border: 0; margin: 0 0 1.25rem; padding: 0; }
.sclens-bk__group > legend { font-weight: 600; margin-bottom: .5rem; padding: 0; }
.sclens-bk__field { margin: 0 0 1rem; }
.sclens-bk__row { display: grid; gap: 0 1rem; grid-template-columns: 1fr; }
@media (min-width: 560px) { .sclens-bk__row { grid-template-columns: 1fr 1fr; } }
.sclens-bk label { display: block; font-weight: 600; margin-bottom: .3rem; }
.sclens-bk input[type="text"], .sclens-bk input[type="email"], .sclens-bk input[type="tel"],
.sclens-bk input[type="date"], .sclens-bk input[type="time"], .sclens-bk input[type="number"], .sclens-bk textarea {
	width: 100%; min-height: 48px; padding: .7rem .8rem; font: inherit; color: var(--sclens-bk-ink);
	background: var(--sclens-bk-surface); border: 1px solid var(--sclens-bk-line); border-radius: var(--sclens-bk-radius);
}
.sclens-bk__qty { max-width: 7rem; }
.sclens-bk input:focus-visible, .sclens-bk textarea:focus-visible, .sclens-bk button:focus-visible, .sclens-bk__card:focus-within {
	outline: 2px solid var(--sclens-bk-accent); outline-offset: 2px; box-shadow: var(--sclens-bk-focus);
}
.sclens-bk .sclens-bk__form [aria-invalid="true"] {
	border-color: var(--sclens-bk-error) !important;
	box-shadow: 0 0 0 2px var(--sclens-bk-error) !important; /* survives theme input styles */
}
.sclens-bk .sclens-bk__form label:has(> input[aria-invalid="true"]) { color: var(--sclens-bk-error); }
.sclens-bk__error { color: var(--sclens-bk-error); font-weight: 600; margin: .25rem 0; }
.sclens-bk__alert-list { margin: .5rem 0 0 1.25rem; padding: 0; }
.sclens-bk__alert-list li { margin: .2rem 0; }
.sclens-bk__alert { border: 2px solid var(--sclens-bk-error); border-radius: var(--sclens-bk-radius); padding: .75rem 1rem; margin-bottom: 1.25rem; }
.sclens-bk__notice { border: 1px solid var(--sclens-bk-line); border-radius: var(--sclens-bk-radius); padding: 1rem; }
.sclens-bk__muted { color: var(--sclens-bk-muted); font-weight: 400; font-size: .925rem; margin: .25rem 0; }
.sclens-bk__service { margin-bottom: 1.5rem; }
.sclens-bk__service-title { font-size: 1.1rem; margin: 0 0 .25rem; }
.sclens-bk__card { display: flex; gap: .75rem; align-items: flex-start; padding: .9rem; margin: .5rem 0; cursor: pointer;
	border: 1px solid var(--sclens-bk-line); border-radius: var(--sclens-bk-radius); background: var(--sclens-bk-surface); font-weight: 400; }
.sclens-bk__card:has(input:checked) { border-color: var(--sclens-bk-accent); box-shadow: inset 0 0 0 1px var(--sclens-bk-accent); }
.sclens-bk__card input { margin-top: .3rem; width: 1.2rem; height: 1.2rem; flex: none; }
.sclens-bk__card-body { display: flex; flex-direction: column; }
.sclens-bk__card-name { font-weight: 700; }
.sclens-bk__card-price { font-weight: 600; }
.sclens-bk__choice { display: flex; gap: .6rem; align-items: flex-start; font-weight: 400; padding: .45rem 0; min-height: 44px; }
.sclens-bk__choice input { margin-top: .2rem; width: 1.2rem; height: 1.2rem; flex: none; }
.sclens-bk__addon { padding: .75rem 0; border-bottom: 1px solid var(--sclens-bk-line); }
.sclens-bk__button { display: inline-flex; align-items: center; justify-content: center; min-height: 48px; padding: .7rem 1.4rem;
	font: inherit; font-weight: 700; border-radius: var(--sclens-bk-radius); border: 1px solid var(--sclens-bk-line);
	background: var(--sclens-bk-surface); color: var(--sclens-bk-ink); cursor: pointer; }
.sclens-bk__button--primary { background: var(--sclens-bk-accent); border-color: var(--sclens-bk-accent); color: var(--sclens-bk-accent-ink); }
.sclens-bk__button[disabled] { opacity: .6; cursor: progress; }
.sclens-bk__nav { display: flex; gap: .75rem; justify-content: space-between; margin-top: 1.25rem; }
.sclens-bk__progress { font-weight: 600; color: var(--sclens-bk-muted); margin: 0 0 .75rem; }
/* Calendar (JavaScript enhancement) */
.sclens-cal { border: 1px solid var(--sclens-bk-line); border-radius: var(--sclens-bk-radius); padding: .75rem; margin-bottom: 1rem; background: var(--sclens-bk-surface); }
.sclens-cal__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: .5rem; }
.sclens-cal__month { font-weight: 700; }
.sclens-cal__grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.sclens-cal__dow { text-align: center; font-size: .8rem; color: var(--sclens-bk-muted); padding: .25rem 0; }
.sclens-cal__day { min-height: 44px; border: 1px solid var(--sclens-bk-line); border-radius: 8px; background: transparent; color: var(--sclens-bk-ink); font: inherit; cursor: pointer; }
.sclens-cal__day[disabled] { opacity: .35; text-decoration: line-through; cursor: not-allowed; }
.sclens-cal__day[aria-pressed="true"], .sclens-slot[aria-pressed="true"] { background: var(--sclens-bk-accent); color: var(--sclens-bk-accent-ink); border-color: var(--sclens-bk-accent); }
.sclens-cal__nav { min-width: 44px; min-height: 44px; }
.sclens-slots { display: grid; grid-template-columns: repeat(auto-fill, minmax(5.5rem, 1fr)); gap: 6px; margin: .5rem 0 1rem; }
.sclens-slot { min-height: 44px; border: 1px solid var(--sclens-bk-line); border-radius: 8px; background: transparent; color: var(--sclens-bk-ink); font: inherit; cursor: pointer; }
.sclens-slot[disabled] { opacity: .35; text-decoration: line-through; cursor: not-allowed; }
.sclens-bk__summary { border: 1px solid var(--sclens-bk-line); border-radius: var(--sclens-bk-radius); padding: 1rem; margin-bottom: 1rem; }
.sclens-bk__summary dl, .sclens-bk__facts { display: grid; grid-template-columns: max-content 1fr; gap: .35rem 1rem; margin: 0; }
.sclens-bk__summary dt, .sclens-bk__facts dt { font-weight: 600; }
.sclens-bk__summary dd, .sclens-bk__facts dd { margin: 0; }
.sclens-bk__total { font-weight: 700; margin-top: .75rem; }
.sclens-bk__reference strong { display: block; font-size: 1.6rem; letter-spacing: .03em; }
.sclens-bk [hidden] { display: none !important; }
@media (prefers-reduced-motion: no-preference) { .sclens-bk { scroll-margin-top: 1rem; } }
/* Milestone 7: packages on service pages. */
.sclens-svc { margin-top: 2rem; }
.sclens-svc__pkg { display: grid; gap: .35rem; margin-bottom: .75rem; }
.sclens-svc__book { justify-self: start; margin-top: .4rem; text-decoration: none; }
.sclens-bk__policies a { color: var(--sclens-bk-accent); }
.sclens-svc__pkg { cursor: default; }
