/* SAFEintegrated Appointments – booking widget
   Tokens: --siis-primary / --siis-accent are injected from settings. */
:root {
	--siis-primary: #1f2a44;
	--siis-accent: #c9a227;
	--siis-ink: #14161a;
	--siis-muted: #5f6673;
	--siis-line: #e3e6eb;
	--siis-bg: #ffffff;
	--siis-soft: #f4f5f8;
	--siis-danger: #b3261e;
	--siis-ok: #1b7f4b;
	--siis-radius: 12px;
	--siis-ease: 200ms cubic-bezier(.2,.7,.3,1);
}

/* ---------- Trigger button (shortcode) ---------- */
.siis-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	min-height: 48px; padding: 0 22px; border-radius: 8px; border: 2px solid transparent;
	font: 600 16px/1 inherit; text-decoration: none !important; cursor: pointer;
	transition: transform var(--siis-ease), background var(--siis-ease), box-shadow var(--siis-ease);
}
.siis-btn:focus-visible { outline: 3px solid var(--siis-accent); outline-offset: 2px; }
.siis-btn--primary { background: var(--siis-primary); color: #fff !important; }
.siis-btn--primary:hover { filter: brightness(1.1); transform: translateY(-1px); box-shadow: 0 6px 18px rgba(0,0,0,.14); }
.siis-btn--outline { background: transparent; color: var(--siis-primary) !important; border-color: currentColor; }
.siis-btn--outline:hover { background: var(--siis-soft); }
.siis-btn--link { background: none; color: var(--siis-primary) !important; padding: 0; min-height: 44px; text-decoration: underline !important; }
.siis-btn--block { width: 100%; }
.siis-btn[disabled] { opacity: .6; cursor: progress; transform: none; }

/* ---------- Floating button ---------- */
.siis-fab {
	position: fixed; right: max(16px, env(safe-area-inset-right)); bottom: max(16px, env(safe-area-inset-bottom)); z-index: 9998;
	display: inline-flex; align-items: center; gap: 10px; min-height: 52px; padding: 0 20px 0 16px; border-radius: 999px;
	background: var(--siis-primary); color: #fff !important; font: 600 15px/1 inherit; text-decoration: none !important;
	box-shadow: 0 8px 24px rgba(0,0,0,.22); transition: transform var(--siis-ease), box-shadow var(--siis-ease);
	animation: siis-up 320ms cubic-bezier(.2,.8,.3,1) both; animation-delay: 600ms;
}
.siis-fab:hover { transform: translateY(-2px); box-shadow: 0 12px 28px rgba(0,0,0,.28); color: #fff; }
.siis-fab:focus-visible { outline: 3px solid var(--siis-accent); outline-offset: 2px; }
.siis-fab svg { flex: none; }
body.siis-modal-open .siis-fab { display: none; }
@media (max-width: 480px) { .siis-fab { left: max(16px, env(safe-area-inset-left)); justify-content: center; } }

/* ---------- Modal ---------- */
.siis-modal { position: fixed; inset: 0; z-index: 99999; display: flex; align-items: flex-end; justify-content: center; }
.siis-modal[hidden] { display: none; }
.siis-modal__backdrop { position: absolute; inset: 0; background: rgba(12,16,28,.62); backdrop-filter: blur(2px); animation: siis-fade 180ms ease-out; }
.siis-modal__dialog {
	position: relative; width: 100%; max-width: 560px; max-height: 92vh; overflow-y: auto;
	background: var(--siis-bg); color: var(--siis-ink); border-radius: var(--siis-radius) var(--siis-radius) 0 0;
	box-shadow: 0 -8px 40px rgba(0,0,0,.25); animation: siis-up 240ms cubic-bezier(.2,.8,.3,1);
	-webkit-overflow-scrolling: touch; overscroll-behavior: contain;
}
@media (min-width: 640px) {
	.siis-modal { align-items: center; padding: 24px; }
	.siis-modal__dialog { border-radius: var(--siis-radius); max-height: 90vh; }
}
.siis-modal__close {
	position: sticky; top: 8px; float: right; margin: 8px 8px 0 0; width: 44px; height: 44px; border: 0; border-radius: 50%;
	background: var(--siis-soft); color: var(--siis-ink); cursor: pointer; display: grid; place-items: center; z-index: 2;
}
.siis-modal__close:hover { background: var(--siis-line); }
.siis-modal__close:focus-visible { outline: 3px solid var(--siis-accent); }
body.siis-modal-open { overflow: hidden; }
@keyframes siis-fade { from { opacity: 0 } to { opacity: 1 } }
@keyframes siis-up { from { transform: translateY(24px); opacity: 0 } to { transform: none; opacity: 1 } }

/* ---------- Widget ---------- */
.siis-widget { padding: 20px 20px 28px; font-family: inherit; font-size: 16px; line-height: 1.5; color: var(--siis-ink); }
.siis-widget *, .siis-widget *::before, .siis-widget *::after { box-sizing: border-box; }
@media (min-width: 640px) { .siis-widget { padding: 28px 32px 32px; } }
.siis-inline .siis-widget { border: 1px solid var(--siis-line); border-radius: var(--siis-radius); background: var(--siis-bg); max-width: 640px; margin: 0 auto; }
.siis-widget__title { margin: 0 0 6px; font-size: 24px; line-height: 1.2; font-weight: 700; color: var(--siis-primary); padding-right: 48px; }
.siis-widget__intro { margin: 0 0 14px; color: var(--siis-muted); font-size: 15px; }

.siis-steps { list-style: none; display: flex; gap: 6px; margin: 0 0 18px; padding: 0; }
.siis-steps__item { flex: 1; display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; color: var(--siis-muted); padding-bottom: 8px; border-bottom: 3px solid var(--siis-line); transition: color var(--siis-ease), border-color var(--siis-ease); }
.siis-steps__item span { width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; background: var(--siis-line); color: var(--siis-ink); font-size: 12px; }
.siis-steps__item.is-active { color: var(--siis-primary); border-color: var(--siis-primary); }
.siis-steps__item.is-active span { background: var(--siis-primary); color: #fff; }
.siis-steps__item.is-done { color: var(--siis-ok); border-color: var(--siis-ok); }
.siis-steps__item.is-done span { background: var(--siis-ok); color: #fff; }

.siis-live { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.siis-step__title { margin: 4px 0 12px; font-size: 18px; font-weight: 700; }
.siis-back { display: inline-flex; align-items: center; gap: 4px; min-height: 44px; padding: 0 6px 0 0; border: 0; background: none; color: var(--siis-primary); font: 600 14px inherit; cursor: pointer; }
.siis-back:focus-visible { outline: 3px solid var(--siis-accent); border-radius: 6px; }

/* ---------- Calendar ---------- */
.siis-cal__nav { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.siis-cal__month { font-size: 17px; }
.siis-cal__btn { width: 44px; height: 44px; border: 1px solid var(--siis-line); border-radius: 8px; background: var(--siis-bg); color: var(--siis-ink); cursor: pointer; display: grid; place-items: center; }
.siis-cal__btn:hover:not([disabled]) { background: var(--siis-soft); }
.siis-cal__btn[disabled] { opacity: .35; cursor: default; }
.siis-cal__btn:focus-visible { outline: 3px solid var(--siis-accent); }
.siis-cal__grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.siis-cal__dow { text-align: center; font-size: 12px; font-weight: 600; color: var(--siis-muted); padding: 4px 0 6px; text-transform: uppercase; letter-spacing: .04em; }
.siis-cal__day {
	position: relative; min-height: 48px; border: 0; border-radius: 8px; background: var(--siis-soft); color: var(--siis-ink);
	font: 600 15px inherit; cursor: pointer; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px;
	transition: background var(--siis-ease), transform var(--siis-ease);
}
.siis-cal__day small { font-size: 10px; font-weight: 600; color: var(--siis-ok); line-height: 1; }
.siis-cal__day:hover:not([disabled]) { background: var(--siis-line); }
.siis-cal__day:focus-visible { outline: 3px solid var(--siis-accent); outline-offset: 1px; }
.siis-cal__day[disabled] { background: transparent; color: #b8bec9; cursor: default; text-decoration: line-through; text-decoration-color: #d6dae2; }
.siis-cal__day.is-today::after { content: ""; position: absolute; bottom: 5px; width: 4px; height: 4px; border-radius: 50%; background: var(--siis-accent); }
.siis-cal__day.is-selected { background: var(--siis-primary); color: #fff; }
.siis-cal__day.is-selected small { color: #fff; }
.siis-cal__pad { min-height: 48px; }
.siis-cal__hint { margin: 12px 0 0; font-size: 14px; color: var(--siis-muted); min-height: 21px; }
.siis-cal.is-loading .siis-cal__grid { opacity: .5; pointer-events: none; }

/* ---------- Slots ---------- */
.siis-slots { display: grid; grid-template-columns: repeat(auto-fill, minmax(104px, 1fr)); gap: 8px; }
.siis-slot { min-height: 48px; border: 2px solid var(--siis-line); border-radius: 8px; background: var(--siis-bg); color: var(--siis-ink); font: 600 15px inherit; cursor: pointer; transition: border-color var(--siis-ease), background var(--siis-ease); }
.siis-slot:hover { border-color: var(--siis-primary); }
.siis-slot:focus-visible { outline: 3px solid var(--siis-accent); }
.siis-slot.is-selected, .siis-slot[aria-selected="true"] { background: var(--siis-primary); border-color: var(--siis-primary); color: #fff; }
.siis-slots__empty { grid-column: 1 / -1; padding: 24px; text-align: center; color: var(--siis-muted); background: var(--siis-soft); border-radius: 8px; }
.siis-skeleton { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(auto-fill, minmax(104px, 1fr)); gap: 8px; }
.siis-skeleton i { display: block; height: 48px; border-radius: 8px; background: linear-gradient(90deg, var(--siis-soft) 25%, var(--siis-line) 50%, var(--siis-soft) 75%); background-size: 200% 100%; animation: siis-shimmer 1.1s infinite linear; }
@keyframes siis-shimmer { to { background-position: -200% 0; } }

/* ---------- Form ---------- */
.siis-summary { display: flex; gap: 12px; align-items: center; padding: 12px 14px; margin: 4px 0 18px; border-radius: 8px; background: var(--siis-soft); border-left: 4px solid var(--siis-accent); font-size: 15px; }
.siis-summary strong { display: block; font-size: 16px; }
.siis-summary span { color: var(--siis-muted); }
.siis-field { margin-bottom: 14px; }
.siis-field label { display: block; margin-bottom: 6px; font-size: 14px; font-weight: 600; }
.siis-field input, .siis-field select, .siis-field textarea {
	width: 100%; min-height: 48px; padding: 10px 14px; border: 2px solid var(--siis-line); border-radius: 8px;
	background: var(--siis-bg); color: var(--siis-ink); font: 400 16px inherit; transition: border-color var(--siis-ease), box-shadow var(--siis-ease);
}
.siis-field textarea { resize: vertical; min-height: 84px; }
.siis-field input:focus, .siis-field select:focus, .siis-field textarea:focus { outline: none; border-color: var(--siis-primary); box-shadow: 0 0 0 3px color-mix(in srgb, var(--siis-primary) 20%, transparent); }
.siis-field.has-error input, .siis-field.has-error select, .siis-field.has-error textarea { border-color: var(--siis-danger); }
.siis-hint { margin: 6px 0 0; font-size: 13px; color: var(--siis-muted); }
.siis-error { margin: 6px 0 0; font-size: 13px; font-weight: 600; color: var(--siis-danger); }
.siis-error:empty { display: none; }
.siis-error--form { margin: 0 0 12px; padding: 10px 12px; background: #fdecea; border-radius: 8px; }
.siis-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.siis-privacy { margin: 12px 0 0; text-align: center; font-size: 13px; color: var(--siis-muted); }

/* ---------- Success ---------- */
.siis-success { text-align: center; padding: 12px 0 0; }
.siis-success__icon { width: 64px; height: 64px; margin: 0 auto 14px; border-radius: 50%; background: color-mix(in srgb, var(--siis-ok) 14%, #fff); color: var(--siis-ok); display: grid; place-items: center; animation: siis-pop 320ms cubic-bezier(.2,.9,.3,1.3); }
.siis-success__when { font-size: 17px; font-weight: 700; margin: 0 0 6px; }
.siis-success__text { color: var(--siis-muted); margin: 0 0 20px; }
@keyframes siis-pop { from { transform: scale(.6); opacity: 0 } to { transform: none; opacity: 1 } }

@media (prefers-reduced-motion: reduce) {
	.siis-modal__backdrop, .siis-modal__dialog, .siis-success__icon, .siis-skeleton i, .siis-fab { animation: none; }
	.siis-btn, .siis-cal__day, .siis-slot { transition: none; }
}

/* ---------- Theme hardening (Elementor / theme button & heading styles must not leak in) ---------- */
.siis-widget button, .siis-modal__close, .siis-fab, .siis-btn {
	font-family: inherit !important; text-transform: none !important; letter-spacing: 0 !important;
	background-image: none !important; box-shadow: none !important; min-width: 0 !important; width: auto;
	line-height: 1.2 !important; text-shadow: none !important; margin: 0;
}
.siis-widget button::before, .siis-widget button::after, .siis-fab::before, .siis-fab::after, .siis-btn::before, .siis-btn::after { content: none !important; }
.siis-cal__day { padding: 4px 2px !important; width: 100%; }
.siis-slot { padding: 0 8px !important; width: 100%; }
.siis-cal__btn, .siis-modal__close { padding: 0 !important; }
.siis-back { padding: 0 6px 0 0 !important; background: none !important; border: 0 !important; }
.siis-btn { padding: 0 22px !important; }
.siis-btn--link { padding: 0 !important; }
.siis-fab { padding: 0 20px 0 16px !important; border-radius: 999px !important; }
.siis-widget h2, .siis-widget h3 { font-family: inherit !important; text-transform: none !important; letter-spacing: 0 !important; margin-top: 0; }
.siis-widget__title { font-size: 24px !important; }
.siis-step__title { font-size: 18px !important; }
.siis-widget p { margin-top: 0; }
.siis-widget input, .siis-widget select, .siis-widget textarea { font-family: inherit !important; box-shadow: none !important; margin: 0; }
.siis-widget ol, .siis-widget ul { list-style: none; padding-left: 0; }
.siis-modal__dialog { overflow-x: hidden; }
.siis-modal__dialog, .siis-inline .siis-widget { font-family: inherit; }
.siis-modal__close { background: var(--siis-soft) !important; color: var(--siis-ink) !important; border: 0 !important; border-radius: 50% !important; width: 44px !important; height: 44px !important; }
.siis-modal__close:hover { background: var(--siis-line) !important; }
.siis-cal__btn { background: var(--siis-bg) !important; color: var(--siis-ink) !important; border: 1px solid var(--siis-line) !important; border-radius: 8px !important; width: 44px !important; height: 44px !important; }
.siis-cal__btn:hover:not([disabled]) { background: var(--siis-soft) !important; }
.siis-cal__day { background: var(--siis-soft) !important; color: var(--siis-ink) !important; border: 0 !important; border-radius: 8px !important; }
.siis-cal__day[disabled] { background: transparent !important; color: #b8bec9 !important; }
.siis-cal__day.is-selected { background: var(--siis-primary) !important; color: #fff !important; }
.siis-slot { background: var(--siis-bg) !important; color: var(--siis-ink) !important; border: 2px solid var(--siis-line) !important; border-radius: 8px !important; }
.siis-slot:hover { border-color: var(--siis-primary) !important; }
.siis-slot[aria-selected="true"] { background: var(--siis-primary) !important; border-color: var(--siis-primary) !important; color: #fff !important; }
.siis-btn--primary, .siis-fab { background: var(--siis-primary) !important; color: #fff !important; border: 0 !important; }
.siis-btn--outline { background: transparent !important; color: var(--siis-primary) !important; border: 2px solid currentColor !important; }
.siis-back { color: var(--siis-primary) !important; }
.siis-widget input, .siis-widget select, .siis-widget textarea { border: 2px solid var(--siis-line) !important; border-radius: 8px !important; background: var(--siis-bg) !important; color: var(--siis-ink) !important; padding: 10px 14px !important; min-height: 48px !important; width: 100% !important; font-size: 16px !important; line-height: 1.4 !important; }
.siis-widget input:focus, .siis-widget select:focus, .siis-widget textarea:focus { border-color: var(--siis-primary) !important; outline: none !important; }
.siis-field.has-error input, .siis-field.has-error select, .siis-field.has-error textarea { border-color: var(--siis-danger) !important; }
.siis-widget label { display: block; margin: 0 0 6px !important; font-size: 14px !important; font-weight: 600 !important; text-transform: none !important; letter-spacing: 0 !important; }
.siis-btn--block { width: 100% !important; display: flex !important; }
.siis-modal button::before, .siis-modal button::after, .siis-inline button::before, .siis-inline button::after, .siis-modal__close::before, .siis-modal__close::after, .siis-cal__btn::before, .siis-cal__btn::after { content: none !important; display: none !important; }
