/* Scheduler, portal and invoice widgets. Falls back to sane colours if the theme tokens are absent. */
.bts-sched, .bts-portal, .bts-inv {
	--b-navy: var(--wp--preset--color--navy, #14306f);
	--b-deep: var(--wp--preset--color--navy-deep, #0b1c45);
	--b-red: var(--wp--preset--color--red, #c8202f);
	--b-gold: var(--wp--preset--color--gold, #f2c200);
	--b-gold-soft: var(--wp--preset--color--gold-soft, #fff4c7);
	--b-line: var(--wp--preset--color--line, #e3e1da);
	--b-sand: var(--wp--preset--color--sand, #f6f4ee);
	--b-slate: var(--wp--preset--color--slate, #4a5163);
	--b-green: #1d7a46;
	background: #fff;
	border: 1px solid var(--b-line);
	border-radius: 12px;
	box-shadow: 0 1px 2px rgba(11, 28, 69, .06), 0 8px 24px rgba(11, 28, 69, .08);
	padding: clamp(1.1rem, 3vw, 2rem);
}
.bts-sched [hidden], .bts-portal [hidden], .bts-inv [hidden] { display: none !important; }
.bts-sched h3, .bts-portal h3, .bts-inv h3 { font-size: 1.25rem; margin: 0 0 .5rem; }

/* Steps */
.bts-steps { display: flex; gap: .5rem; list-style: none; margin: 0 0 1.5rem; padding: 0; flex-wrap: wrap; }
.bts-steps li {
	display: flex; align-items: center; gap: .5rem;
	font-family: var(--wp--preset--font-family--heading, inherit);
	text-transform: uppercase; letter-spacing: .05em; font-size: .85rem;
	color: var(--b-slate); padding: .4rem .9rem .4rem .4rem; border-radius: 999px; background: var(--b-sand);
}
.bts-steps b { width: 1.6rem; height: 1.6rem; display: grid; place-items: center; border-radius: 50%; background: #fff; border: 1px solid var(--b-line); font-size: .8rem; }
.bts-steps li.is-active { background: var(--b-deep); color: #fff; }
.bts-steps li.is-active b { background: var(--b-gold); color: var(--b-deep); border-color: var(--b-gold); }
.bts-steps li.is-done b { background: var(--b-green); color: #fff; border-color: var(--b-green); }

/* Calendar */
.bts-cal-wrap { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: clamp(1rem, 3vw, 2rem); align-items: start; }
@media (max-width: 760px) { .bts-cal-wrap { grid-template-columns: 1fr; } }
.bts-cal__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: .75rem; }
.bts-cal__title { margin: 0 !important; font-size: 1.2rem !important; }
.bts-cal__nav {
	width: 2.4rem; height: 2.4rem; border-radius: 8px; border: 1px solid var(--b-line); background: #fff;
	font-size: 1.4rem; line-height: 1; cursor: pointer; color: var(--b-navy);
}
.bts-cal__nav:hover:not(:disabled) { background: var(--b-sand); }
.bts-cal__nav:disabled { opacity: .35; cursor: default; }
.bts-cal__dow, .bts-cal__grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.bts-cal__dow span { text-align: center; font-size: .75rem; text-transform: uppercase; letter-spacing: .06em; color: var(--b-slate); padding: .25rem 0; }
.bts-cal__grid.is-loading { opacity: .45; pointer-events: none; }
.bts-cal__day {
	aspect-ratio: 1; border-radius: 8px; border: 1px solid transparent; font: inherit; font-weight: 600; cursor: pointer;
	background: var(--b-gold-soft); color: var(--b-deep); transition: background .12s, transform .12s;
}
.bts-cal__day.is-open:hover { background: var(--b-gold); }
.bts-cal__day.is-closed { background: transparent; color: #b8bbc4; font-weight: 400; cursor: default; text-decoration: line-through; text-decoration-color: rgba(0,0,0,.15); }
.bts-cal__day.is-today { border-color: var(--b-navy); }
.bts-cal__day.is-selected { background: var(--b-deep); color: #fff; }
.bts-cal__legend { display: flex; gap: 1rem; margin-top: .75rem; font-size: .8rem; color: var(--b-slate); }
.bts-cal__legend span { display: inline-flex; align-items: center; gap: .35rem; }
.bts-cal__legend i { width: .9rem; height: .9rem; border-radius: 3px; display: inline-block; }
.bts-cal__legend i.is-open { background: var(--b-gold-soft); border: 1px solid var(--b-gold); }
.bts-cal__legend i.is-closed { background: #fff; border: 1px solid var(--b-line); }

/* Windows */
.bts-slots { background: var(--b-sand); border-radius: 10px; padding: 1.25rem; min-height: 100%; }
.bts-slots__hint { color: var(--b-slate); margin: 0; }
.bts-slots__date { margin: 0 0 .15rem; font-size: 1.15rem; }
.bts-slots__sub { margin: 0 0 .9rem; color: var(--b-slate); font-size: .95rem; }
.bts-slots__list { display: grid; gap: .6rem; }
.bts-slot-btn {
	display: flex; justify-content: space-between; align-items: center; gap: 1rem;
	font: inherit; text-align: left; padding: .9rem 1rem; border-radius: 8px; cursor: pointer;
	background: #fff; border: 2px solid var(--b-line); color: var(--b-deep);
}
.bts-slot-btn span { font-size: .8rem; color: var(--b-green); font-weight: 600; text-transform: uppercase; letter-spacing: .05em; }
.bts-slot-btn:hover:not(:disabled) { border-color: var(--b-navy); }
.bts-slot-btn.is-selected { border-color: var(--b-red); background: #fff; box-shadow: 0 0 0 3px rgba(200, 32, 47, .15); }
.bts-slot-btn.is-selected span { color: var(--b-red); }
.bts-slot-btn.is-full { opacity: .55; cursor: not-allowed; }
.bts-slot-btn.is-full span { color: var(--b-slate); }

/* Form */
.bts-form__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem 1.25rem; margin: 1.25rem 0 .5rem; }
@media (max-width: 600px) { .bts-form__grid { grid-template-columns: 1fr; } }
.bts-field { display: flex; flex-direction: column; gap: .35rem; font-size: .95rem; }
.bts-field--full { grid-column: 1 / -1; }
.bts-field > span { font-weight: 600; color: var(--b-deep); }
.bts-field i { color: var(--b-red); font-style: normal; }
.bts-field em { font-weight: 400; color: var(--b-slate); }
.bts-field input, .bts-field select, .bts-field textarea {
	font: inherit; padding: .7rem .85rem; border: 1px solid #c9c7bf; border-radius: 8px; background: #fff; width: 100%; box-sizing: border-box;
}
.bts-field input:focus, .bts-field select:focus, .bts-field textarea:focus { outline: none; border-color: var(--b-navy); box-shadow: 0 0 0 3px rgba(20, 48, 111, .15); }
.bts-field.has-error input, .bts-field.has-error select { border-color: var(--b-red); }
.bts-field__err { color: var(--b-red); min-height: 0; }
.bts-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }

/* Shared bits */
.bts-slot {
	display: flex; flex-wrap: wrap; align-items: baseline; gap: .25rem 1rem;
	background: var(--b-gold-soft); border-left: 4px solid var(--b-gold); border-radius: 8px; padding: .9rem 1.1rem; margin: 0 0 1rem;
}
.bts-slot span { flex-basis: 100%; font-size: .75rem; text-transform: uppercase; letter-spacing: .08em; color: var(--b-slate); }
.bts-slot strong { font-size: 1.1rem; color: var(--b-deep); }
.bts-actions { display: flex; flex-wrap: wrap; gap: .75rem; align-items: center; margin-top: 1.25rem; }
.bts-actions--end { justify-content: flex-end; }
.bts-btn-outline {
	font-family: var(--wp--preset--font-family--heading, inherit); text-transform: uppercase; letter-spacing: .04em; font-weight: 600; font-size: 1rem;
	padding: .8rem 1.4rem; border-radius: 6px; border: 2px solid var(--b-navy); color: var(--b-navy); background: #fff; cursor: pointer; text-decoration: none; display: inline-block;
}
.bts-btn-outline:hover { background: var(--b-sand); color: var(--b-navy); }
.bts-link, .bts-link-danger { background: none; border: 0; padding: 0; font: inherit; cursor: pointer; text-decoration: underline; color: var(--b-navy); }
.bts-link-danger { color: var(--b-red); margin-left: auto; font-size: .95rem; }
button.wp-element-button:disabled { opacity: .5; cursor: not-allowed; }
.is-busy { opacity: .6; pointer-events: none; }
.bts-help { color: var(--b-slate); font-size: .9rem; }
.bts-msg:empty { display: none; }
.bts-msg { margin-top: 1rem; padding: .8rem 1rem; border-radius: 8px; font-weight: 600; }
.bts-msg.is-error, .bts-error { background: #fdecee; color: #8f1420; }
.bts-msg.is-ok { background: #e7f5ec; color: var(--b-green); }

/* Done */
.bts-done { text-align: center; padding: 1rem 0; }
.bts-done__icon { width: 64px; height: 64px; margin: 0 auto 1rem; border-radius: 50%; background: var(--b-green); color: #fff; display: grid; place-items: center; font-size: 2rem; }

/* Portal */
.bts-portal__head { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; flex-wrap: wrap; margin-bottom: 1.25rem; }
.bts-portal__hello { margin: 0; color: var(--b-slate); }
.bts-portal__title { margin: 0; font-size: clamp(1.4rem, 3vw, 1.9rem); }
.bts-badge { display: inline-block; padding: .35rem .8rem; border-radius: 999px; font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; }
.bts-badge--pending { background: #fff4c7; color: #7a5b00; }
.bts-badge--proposed { background: #e6edff; color: var(--b-navy); }
.bts-badge--confirmed, .bts-badge--completed { background: #e7f5ec; color: var(--b-green); }
.bts-badge--declined, .bts-badge--cancelled { background: #fdecee; color: #8f1420; }
.bts-compare { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-bottom: 1rem; }
@media (max-width: 600px) { .bts-compare { grid-template-columns: 1fr; } }
.bts-compare__item { border-radius: 8px; padding: .9rem 1.1rem; border: 1px solid var(--b-line); }
.bts-compare__item span { display: block; font-size: .75rem; text-transform: uppercase; letter-spacing: .08em; color: var(--b-slate); }
.bts-compare__item.is-old strong { text-decoration: line-through; color: var(--b-slate); font-weight: 500; }
.bts-compare__item.is-new { background: var(--b-gold-soft); border-color: var(--b-gold); }
.bts-compare__item.is-new strong { color: var(--b-deep); font-size: 1.1rem; }
.bts-office-note { background: var(--b-sand); border-radius: 8px; padding: .9rem 1.1rem; margin-bottom: 1rem; }
.bts-office-note p { margin: .25rem 0 0; }
.bts-details { display: grid; gap: .5rem; margin: 0 0 1rem; }
.bts-details div { display: grid; grid-template-columns: 7rem 1fr; gap: .5rem; }
.bts-details dt { color: var(--b-slate); }
.bts-details dd { margin: 0; font-weight: 500; }
.bts-forms { border-top: 1px solid var(--b-line); padding-top: 1.25rem; margin-top: 1.25rem; }
.bts-forms__list { list-style: none; padding: 0; margin: 0; display: grid; gap: .6rem; }
.bts-forms__list li { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: .75rem 1rem; border: 1px solid var(--b-line); border-radius: 8px; }
.bts-forms__list li.is-done em { color: var(--b-green); font-style: normal; font-weight: 600; }
.bts-reschedule { border-top: 1px solid var(--b-line); margin-top: 1.5rem; padding-top: 1.5rem; }
.bts-reschedule .bts-field { margin-top: 1rem; }
.bts-notice { text-align: center; }

/* Invoices */
.bts-inv__form { display: grid; grid-template-columns: 1fr 1fr auto; gap: 1rem; align-items: end; }
@media (max-width: 700px) { .bts-inv__form { grid-template-columns: 1fr; } }
.bts-inv__table { width: 100%; border-collapse: collapse; margin: 1rem 0; font-size: .95rem; }
.bts-inv__table th, .bts-inv__table td { padding: .65rem .5rem; border-bottom: 1px solid var(--b-line); text-align: left; }
.bts-inv__table th { font-size: .75rem; text-transform: uppercase; letter-spacing: .06em; color: var(--b-slate); }
.bts-inv__table td.num, .bts-inv__table th.num { text-align: right; white-space: nowrap; }
.bts-inv__totals { margin-left: auto; max-width: 320px; display: grid; gap: .35rem; }
.bts-inv__totals div { display: flex; justify-content: space-between; }
.bts-inv__totals .is-due { font-size: 1.25rem; font-weight: 700; color: var(--b-deep); border-top: 2px solid var(--b-deep); padding-top: .5rem; margin-top: .25rem; }
.bts-inv__meta { display: flex; flex-wrap: wrap; gap: .5rem 2rem; color: var(--b-slate); font-size: .95rem; }
.bts-inv__meta strong { color: var(--b-deep); }
.bts-inv__secure { display: flex; align-items: center; gap: .5rem; font-size: .85rem; color: var(--b-slate); margin-top: .75rem; }

/* E-forms */
.bts-eform__back { margin: 0 0 .5rem; font-size: .95rem; }
.bts-eform__section { border-top: 1px solid var(--b-line); padding-top: 1.25rem; margin-top: 1.25rem; }
.bts-eform__section.is-highlight { background: #fffbd1; border: 1px solid #e8d36a; border-radius: 10px; padding: 1.1rem 1.25rem; }
.bts-eform__section h3 { margin-top: 0; }
.bts-legal { font-size: .93rem; line-height: 1.6; color: #2a2f3a; max-height: none; }
.bts-legal p { margin: 0 0 .75rem; }
.bts-legal .is-highlight { background: #fff7a8; padding: .6rem .8rem; border-radius: 6px; }
.bts-legal [data-token] { background: var(--b-gold-soft); padding: 0 .2em; border-radius: 3px; font-weight: 700; }
.bts-field__help { font-style: normal; font-size: .82rem; color: var(--b-slate); }
fieldset.bts-field { border: 0; padding: 0; margin: 0; min-width: 0; }
fieldset.bts-field legend { font-weight: 600; color: var(--b-deep); padding: 0; margin-bottom: .4rem; }
.bts-choices { display: flex; flex-wrap: wrap; gap: .5rem; }
.bts-choice { display: inline-flex; align-items: flex-start; gap: .5rem; padding: .6rem .9rem; border: 2px solid var(--b-line); border-radius: 8px; background: #fff; cursor: pointer; font-size: .95rem; }
.bts-choice:has(input:checked) { border-color: var(--b-red); box-shadow: 0 0 0 3px rgba(200, 32, 47, .12); }
.bts-choice input { margin-top: .2rem; accent-color: var(--b-red); }
.bts-choice--card span { display: flex; flex-direction: column; }
.bts-choice--card em { font-style: normal; font-size: .8rem; color: var(--b-slate); }
.bts-choice.is-disabled { opacity: .4; cursor: not-allowed; }
.is-yesno .bts-choice { min-width: 5.5rem; }
.bts-plan__group { border: 0; padding: 0; margin: .5rem 0 1rem; }
.bts-plan__group legend { font-size: .8rem; text-transform: uppercase; letter-spacing: .06em; color: var(--b-slate); margin-bottom: .4rem; }
.bts-plan__summary:not(:empty) { background: var(--b-gold-soft); border-left: 4px solid var(--b-gold); border-radius: 8px; padding: .8rem 1rem; font-weight: 600; color: var(--b-deep); }
.bts-check__row { display: flex; gap: .5rem; align-items: center; font-weight: 500 !important; }
.bts-check__row input { width: auto !important; accent-color: var(--b-red); }
.bts-field--initials input { max-width: 7rem; text-transform: uppercase; text-align: center; font-weight: 700; letter-spacing: .1em; }
.bts-initials { list-style: none; padding: 0; margin: 0; display: grid; gap: .75rem; }
.bts-initials li { display: flex; gap: 1rem; align-items: flex-end; justify-content: space-between; border: 1px solid var(--b-line); border-radius: 8px; padding: .75rem 1rem; }
.bts-initials li p { margin: 0; flex: 1; }
@media (max-width: 600px) { .bts-initials li { flex-direction: column; align-items: stretch; } }
.bts-agree { display: flex; gap: .75rem; align-items: flex-start; font-weight: 600; color: var(--b-deep); cursor: pointer; }
.bts-agree input { margin-top: .3rem; width: 1.2rem; height: 1.2rem; accent-color: var(--b-red); flex: none; }
.bts-sign__pad { position: relative; border: 2px dashed #b9b7ae; border-radius: 10px; background: #fff; }
.bts-sign__pad canvas { display: block; width: 100%; height: 170px; touch-action: none; cursor: crosshair; }
.bts-sign__pad::after { content: "Sign here"; position: absolute; left: 1rem; bottom: .6rem; font-size: .8rem; color: #b9b7ae; pointer-events: none; }
.bts-sign__pad .bts-link { position: absolute; top: .5rem; right: .75rem; font-size: .85rem; }
.has-error > .bts-sign__pad { border-color: var(--b-red); }
section.has-error, fieldset.has-error legend { color: var(--b-red); }
.bts-forms__list li a.bts-link { font-size: .85rem; }
.bts-field .bts-choice input, .bts-agree input, .bts-check__row input { width: auto !important; padding: 0; flex: none; }
.bts-choice { text-align: left; }
