/* Shared visual system. All palettes are supplied by design-palette.php. */
.spd-booking,.spd-master,.spd-master-calendar{
 --spd-radius:16px;
 color:var(--spd-text,#352a25);
 font-family:inherit;
}
.spd-booking{
 box-sizing:border-box;
 max-width:760px!important;
 margin:24px auto!important;
 padding:clamp(20px,4vw,40px)!important;
 background:var(--spd-surface,#fffdfa);
 border:1px solid var(--spd-line,#e2d6c9)!important;
 border-radius:22px!important;
 box-shadow:0 18px 48px rgba(45,32,24,.07);
}
.spd-booking *, .spd-master *, .spd-master-calendar *{box-sizing:border-box}
.spd-booking h2{font-size:clamp(1.7rem,3vw,2.4rem);line-height:1.2;margin:0 0 12px;color:var(--spd-text)}
.spd-booking h3{font-size:1.25rem;margin:28px 0 16px;color:var(--spd-text)}
.spd-booking>p{color:var(--spd-muted)}
.spd-booking form{margin-top:24px}
.spd-booking form>p{margin:0 0 18px}
.spd-booking form>p>label{display:flex;flex-direction:column;gap:9px;font-size:1rem;font-weight:600;color:var(--spd-text)}
.spd-booking select,.spd-booking input[type="date"],.spd-booking input[type="tel"],.spd-booking input[name="spd_client_name"]{
 width:100%;max-width:100%;min-height:50px;
 padding:12px 14px;
 font:inherit;font-size:1rem;font-weight:400;
 color:var(--spd-text);
 background:var(--spd-surface);
 border:1px solid var(--spd-line);
 border-radius:12px;
}
.spd-booking button[type="submit"]{
 display:inline-flex;justify-content:center;align-items:center;
 min-height:50px;padding:12px 24px;
 border:1px solid var(--spd-accent);
 border-radius:12px;
 background:var(--spd-accent);color:#fff;
 font:inherit;font-size:1rem;font-weight:650;
 cursor:pointer;transition:background .15s ease,transform .15s ease;
}
.spd-booking button[type="submit"]:hover{background:var(--spd-accent_hover);transform:translateY(-1px)}
.spd-booking button[type="submit"]:focus-visible,.spd-booking input:focus-visible,.spd-booking select:focus-visible{outline:3px solid var(--spd-accent);outline-offset:3px}
.spd-booking fieldset{
 border:0!important;padding:0!important;margin:12px 0 22px!important;min-width:0;
}
.spd-booking legend{font-weight:650;font-size:1.05rem;margin-bottom:12px}
.spd-booking fieldset>div{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:10px!important}
.spd-booking fieldset label{
 position:relative;display:flex;justify-content:center;align-items:center;
 padding:12px 10px!important;min-height:50px;
 border:1px solid var(--spd-line)!important;border-radius:12px!important;
 background:var(--spd-surface);font-weight:600;cursor:pointer;
}
.spd-booking fieldset label:has(input:checked){background:var(--spd-soft);border:2px solid var(--spd-accent)!important;color:var(--spd-accent)}
.spd-booking fieldset label input{accent-color:var(--spd-accent);margin-right:6px}
.spd-booking small{display:block;color:var(--spd-muted);font-size:.85rem;line-height:1.55}
.spd-master,.spd-master-calendar{--spd-control-border:var(--spd-line)}
.spd-master-card,.spd-calendar-detail,.spd-calendar-day{border-color:var(--spd-line)!important}
.spd-master button,.spd-master-calendar button,.spd-master-calendar .spd-move-link{
 border-radius:10px;
}
.spd-calendar-appointment{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px 16px}
.spd-calendar-appointment>strong{grid-column:1/-1;overflow-wrap:anywhere}
.spd-calendar-appointment>span{min-width:0}
.spd-calendar-appointment>.spd-move-link{grid-column:1;justify-self:start}
.spd-calendar-appointment>.spd-calendar-cancel{grid-column:2;justify-self:end;margin:0}
@media(max-width:580px){
 .spd-booking{padding:20px!important;margin:12px auto!important;border-radius:16px!important}
 .spd-booking button[type="submit"]{width:100%}
 .spd-booking fieldset>div{grid-template-columns:repeat(3,minmax(0,1fr))}
 .spd-calendar-appointment{grid-template-columns:1fr 1fr}
 .spd-calendar-appointment>.spd-move-link,.spd-calendar-appointment>.spd-calendar-cancel{grid-column:auto}
 .spd-calendar-appointment button{max-width:100%;white-space:normal}
}
@media(prefers-reduced-motion:reduce){.spd-booking button[type="submit"]{transition:none}}

/* Client booking — service cards, date, times and contacts */
.spd-booking{max-width:850px!important;padding:clamp(22px,4vw,42px)!important}
.spd-booking-intro{padding-bottom:20px;border-bottom:1px solid var(--spd-line)}
.spd-booking-eyebrow{display:block;margin-bottom:12px;color:var(--spd-accent);font-size:.73rem;font-weight:800;letter-spacing:.16em}
.spd-booking-intro h2{margin:0 0 12px}
.spd-booking-intro p{margin:0;color:var(--spd-muted);line-height:1.6}
.spd-booking-step{display:inline-grid;place-items:center;width:30px;height:30px;margin-right:8px;border-radius:50%;background:var(--spd-soft);color:var(--spd-accent);font-size:.9rem;font-weight:750}
.spd-booking .spd-service-fieldset,.spd-booking .spd-time-fieldset{margin:0!important;padding:0!important;border:0!important}
.spd-booking .spd-service-fieldset legend{font-size:1.2rem;font-weight:700;margin:0 0 18px}
.spd-booking .spd-service-grid{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(195px,1fr));gap:12px!important}
.spd-booking .spd-service-card{position:relative;display:block!important;min-height:138px!important;padding:18px!important;border:1px solid var(--spd-line)!important;border-radius:16px!important;background:var(--spd-surface);cursor:pointer}
.spd-booking .spd-service-card:has(input:checked){background:var(--spd-soft);border:2px solid var(--spd-accent)!important;padding:17px!important}
.spd-booking .spd-service-card input{position:absolute;right:16px;top:17px;accent-color:var(--spd-accent);width:18px;height:18px}
.spd-service-content{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding-right:20px}
.spd-service-content strong{font-size:1rem;line-height:1.35}
.spd-service-meta{color:var(--spd-muted);font-size:.88rem}
.spd-service-price{margin-top:auto;font-size:1.25rem;font-weight:800;color:var(--spd-accent)}
.spd-date-row{display:flex;align-items:end;flex-wrap:wrap;gap:12px;margin-top:30px}
.spd-date-row>label{width:100%;font-weight:700;font-size:1.2rem}
.spd-booking .spd-date-row input[type=date]{width:min(260px,100%);min-height:52px}
.spd-booking .spd-date-row button{min-height:52px}
.spd-booking-times{margin-top:32px;padding-top:22px;border-top:1px solid var(--spd-line)}
.spd-booking-times h3{margin:0 0 20px!important;font-size:1.2rem}
.spd-selected-date{display:inline-block;margin-left:8px;color:var(--spd-muted);font-size:.95rem;font-weight:400}
.spd-booking .spd-time-grid{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:10px!important}
.spd-booking .spd-time-option{position:relative;display:grid!important;place-items:center;min-height:54px!important;padding:0!important;border:1px solid var(--spd-line)!important;border-radius:12px!important;background:var(--spd-surface);cursor:pointer}
.spd-booking .spd-time-option input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.spd-booking .spd-time-option span{font-size:1.04rem;font-weight:650}
.spd-booking .spd-time-option:has(input:checked){border:2px solid var(--spd-accent)!important;background:var(--spd-soft);color:var(--spd-accent)}
.spd-booking .spd-time-option:has(input:focus-visible){outline:3px solid var(--spd-accent);outline-offset:3px}
.spd-booking-contact{margin-top:30px;padding-top:24px;border-top:1px solid var(--spd-line)}
.spd-contact-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.spd-booking .spd-contact-grid p{margin:0 0 18px}
.spd-booking .spd-contact-grid label{display:block;margin-bottom:8px;font-weight:650}
.spd-booking .spd-booking-primary{width:100%;min-height:56px;font-size:1.08rem}
.spd-booking-footnote{margin:14px 0 0!important;color:var(--spd-muted);font-size:.85rem;line-height:1.55}
.spd-booking-notice{margin:22px 0;padding:18px 20px;border-radius:12px;font-weight:650}
.spd-booking-notice.is-success{background:#e3f1e3;border:1px solid #3e8050;color:#234a2e}
.spd-booking-notice.is-error{background:#fff1dd;border:1px solid #b87932;color:#633c16}
.spd-no-slots{padding:18px 20px;background:var(--spd-soft);border:1px solid var(--spd-line);border-left:4px solid var(--spd-accent);border-radius:12px;color:var(--spd-text);font-size:1rem;font-weight:550;line-height:1.6}
@media(max-width:580px){
.spd-booking .spd-service-grid{grid-template-columns:1fr;gap:10px!important}
.spd-booking .spd-service-card{min-height:110px!important}
.spd-booking .spd-time-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.spd-contact-grid{grid-template-columns:1fr;gap:0}
.spd-date-row{align-items:stretch}
.spd-booking .spd-date-row input[type=date]{width:100%}
.spd-booking .spd-date-row button{width:100%}
}

/* Polishing: keep long service titles clear of the selection marker. */
.spd-booking .spd-service-card{padding:20px!important}
.spd-booking .spd-service-card:has(input:checked){padding:19px!important}
.spd-booking .spd-service-card input{right:18px;top:18px}
.spd-booking .spd-service-content{padding-right:34px;min-width:0;overflow-wrap:anywhere}
.spd-booking .spd-service-content strong{line-height:1.45}
.spd-service-hints{margin-top:13px}
.spd-booking .spd-service-hint{margin:0;color:var(--spd-muted);font-size:.91rem;line-height:1.55}
.spd-service-hint[hidden]{display:none!important}
.spd-booking .spd-time-option:hover{border-color:var(--spd-accent)!important;background:var(--spd-soft)}
.spd-booking .spd-time-option:has(input:checked){box-shadow:inset 0 0 0 1px var(--spd-accent)}
.spd-booking .spd-booking-times.spd-slots-stale{opacity:1}
.spd-booking .spd-booking-times.spd-slots-stale>h3,.spd-booking .spd-booking-times.spd-slots-stale>.spd-booking-submit{opacity:.65}
.spd-booking .spd-booking-times.spd-slots-stale>.spd-no-slots{opacity:1}
.spd-booking .spd-booking-times.spd-slots-stale::before{content:"Вы изменили услугу или дату. Нажмите «Обновить свободное время», чтобы увидеть актуальные часы.";display:block;padding:16px 18px;margin-bottom:18px;background:#fff0d7;border:1px solid #c18a3d;border-left:5px solid #a66b22;border-radius:12px;color:#59360f;font-size:1rem;font-weight:650;line-height:1.55}
.spd-booking .spd-booking-primary:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:580px){.spd-booking .spd-service-card{padding:18px!important}.spd-booking .spd-service-card:has(input:checked){padding:17px!important}}

/* Master cabinet: cohesive cards and touch-friendly booking actions */
.spd-master,.spd-master-calendar{color:var(--spd-text);max-width:900px}
.spd-master-calendar{padding:clamp(12px,2vw,24px);background:var(--spd-surface);border:1px solid var(--spd-line);border-radius:20px}
.spd-master-calendar .spd-calendar-heading h2{color:var(--spd-text);font-weight:700}
.spd-master-calendar .spd-calendar-heading nav a{color:var(--spd-accent);border-color:var(--spd-line);background:var(--spd-soft)}
.spd-master-calendar .spd-calendar-heading nav a:hover{border-color:var(--spd-accent)}
.spd-master-calendar .spd-calendar-detail{background:var(--spd-surface);border-color:var(--spd-line);padding:clamp(16px,3vw,26px);border-radius:18px}
.spd-calendar-detail-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}
.spd-calendar-detail-head h3{margin:6px 0 0;font-size:clamp(1.4rem,3vw,1.85rem);font-weight:700;color:var(--spd-text)}
.spd-calendar-kicker{font-size:.72rem;letter-spacing:.12em;color:var(--spd-muted);font-weight:800}
.spd-calendar-today{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:8px 14px;border:1px solid var(--spd-line);border-radius:10px;text-decoration:none!important;color:var(--spd-accent)!important;font-weight:650}
.spd-calendar-today:hover{background:var(--spd-soft)}
.spd-master-calendar .spd-calendar-appointment{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px 20px;align-items:center;margin-top:14px;padding:18px;border:1px solid var(--spd-line);border-radius:15px;background:var(--spd-surface);box-shadow:0 3px 14px rgba(0,0,0,.035)}
.spd-appointment-main{display:flex;align-items:flex-start;gap:16px;min-width:0}
.spd-appointment-time{flex:0 0 auto;min-width:77px;padding:10px 8px;text-align:center;border-radius:11px;background:var(--spd-soft);color:var(--spd-accent);font-size:1.15rem;font-weight:800}
.spd-appointment-info{display:flex;flex-direction:column;gap:4px;min-width:0}
.spd-appointment-number{color:var(--spd-muted);font-size:.82rem;font-weight:650}
.spd-appointment-service{color:var(--spd-text);font-size:1.05rem;font-weight:750;line-height:1.4;overflow-wrap:anywhere}
.spd-appointment-client{color:var(--spd-muted);font-size:.91rem;overflow-wrap:anywhere}
.spd-master-calendar .spd-appointment-status{justify-self:end;display:inline-flex;align-items:center;max-width:210px;padding:7px 12px;border-radius:30px;font-size:.8rem;font-weight:700;line-height:1.35;text-align:center}
.spd-appointment-status.is-confirmed{color:#275637;background:#e2f0e4}
.spd-appointment-status.is-pending{color:#7a4a11;background:#fff0d7}
.spd-appointment-actions{grid-column:1/-1;display:flex;align-items:stretch;gap:10px;flex-wrap:wrap;padding-top:12px;border-top:1px solid var(--spd-line)}
.spd-master-calendar .spd-appointment-actions .spd-move-link,.spd-master-calendar .spd-appointment-actions .spd-calendar-cancel button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:154px;margin:0;padding:10px 16px;font:inherit;font-size:.92rem;font-weight:700;border-radius:10px;line-height:1.3;white-space:normal;text-align:center}
.spd-master-calendar .spd-appointment-actions .spd-move-link{background:var(--spd-accent);border:1px solid var(--spd-accent);color:#fff!important}
.spd-master-calendar .spd-appointment-actions .spd-move-link:hover{background:var(--spd-accent_hover)}
.spd-master-calendar .spd-appointment-actions .spd-calendar-cancel{width:auto;margin:0}
.spd-master-calendar .spd-appointment-actions .spd-calendar-cancel button{background:transparent;border:1px solid #b36c4c;color:#914726}
.spd-master-calendar .spd-appointment-actions .spd-calendar-cancel button:hover{background:#fff1e9}
.spd-master-card{background:var(--spd-surface);border-color:var(--spd-line);color:var(--spd-text)}
.spd-master .spd-service-edit,.spd-master .spd-service-new{background:var(--spd-surface);border-color:var(--spd-line)}
.spd-master .spd-service-edit input,.spd-master .spd-service-new input{border-color:var(--spd-line);color:var(--spd-text);background:var(--spd-surface)}
.spd-master button{background:var(--spd-accent);color:#fff}
.spd-master button:hover{background:var(--spd-accent_hover)}
.spd-master-calendar a:focus-visible,.spd-master-calendar button:focus-visible{outline:3px solid var(--spd-accent);outline-offset:3px}
@media(max-width:620px){
 .spd-master-calendar{padding:12px;border-radius:15px}
 .spd-master-calendar .spd-calendar-appointment{grid-template-columns:1fr;padding:14px;gap:10px}
 .spd-master-calendar .spd-appointment-status{justify-self:start}
 .spd-appointment-main{gap:10px}
 .spd-appointment-time{min-width:65px;font-size:1rem}
 .spd-appointment-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
 .spd-master-calendar .spd-appointment-actions .spd-move-link,.spd-master-calendar .spd-appointment-actions .spd-calendar-cancel button{width:100%;min-width:0;padding:9px 5px}
 .spd-master-calendar .spd-appointment-actions .spd-calendar-cancel{width:100%}
}

/* Explicit text colors for hover/active states: theme must not hide labels. */
.spd-master-calendar .spd-calendar-today,
.spd-master-calendar .spd-calendar-today:visited,
.spd-master-calendar .spd-calendar-today:hover,
.spd-master-calendar .spd-calendar-today:focus,
.spd-master-calendar .spd-calendar-today:active{
 color:var(--spd-accent,#654638)!important;
 background:var(--spd-soft,#efe6dc)!important;
 border-color:var(--spd-accent,#654638);
 opacity:1;
}
.spd-master-calendar .spd-calendar-heading nav a:hover,
.spd-master-calendar .spd-calendar-heading nav a:focus,
.spd-master-calendar .spd-calendar-heading nav a:active{
 background:var(--spd-accent,#654638)!important;
 color:#fff!important;
}
.spd-master-calendar .spd-appointment-actions .spd-move-link:hover,
.spd-master-calendar .spd-appointment-actions .spd-move-link:focus,
.spd-master-calendar .spd-appointment-actions .spd-move-link:active{
 background:var(--spd-accent_hover,#493127)!important;
 color:#fff!important;
}

/* Make service visibility controls unmistakable, including on mobile. */
.spd-master-services .spd-service-buttons{display:flex!important;flex-wrap:wrap;gap:12px;align-items:center;margin-top:16px}
.spd-master-services .spd-service-buttons button{display:inline-flex!important;visibility:visible!important;opacity:1!important;align-items:center;justify-content:center;min-height:46px;padding:10px 18px;border-radius:10px;font-size:.95rem;font-weight:700;cursor:pointer}
.spd-master-services .spd-service-buttons .spd-service-save{background:var(--spd-accent,#654638)!important;color:#fff!important;border:1px solid var(--spd-accent,#654638)!important}
.spd-master-services .spd-service-buttons .spd-service-visibility.is-hide{background:#fff3e8!important;color:#7c3f1d!important;border:1px solid #bd7953!important}
.spd-master-services .spd-service-buttons .spd-service-visibility.is-hide:hover,.spd-master-services .spd-service-buttons .spd-service-visibility.is-hide:focus{background:#fbe2d0!important;color:#622d11!important}
.spd-master-services .spd-service-buttons .spd-service-visibility.is-show{background:#e3f1e4!important;color:#285c39!important;border:1px solid #6b9976!important}
.spd-master-services .spd-service-buttons .spd-service-visibility.is-show:hover,.spd-master-services .spd-service-buttons .spd-service-visibility.is-show:focus{background:#d1e8d5!important;color:#1b4429!important}
@media(max-width:580px){.spd-master-services .spd-service-buttons{flex-direction:column;align-items:stretch}.spd-master-services .spd-service-buttons button{width:100%}}

/* Schedule publishing: mobile-first, shared palette */
.spd-schedule-section{margin:36px 0;padding:clamp(16px,3vw,28px);background:var(--spd-surface);border:1px solid var(--spd-line);border-radius:20px}
.spd-schedule-intro h2{margin:6px 0 8px;font-size:1.65rem;color:var(--spd-text)}
.spd-schedule-intro p,.spd-schedule-list-head p{margin:0 0 18px;color:var(--spd-muted);line-height:1.6}
.spd-master .spd-schedule-form{padding:20px;background:var(--spd-soft);border:1px solid var(--spd-line);box-shadow:none}
.spd-schedule-fields{display:grid;grid-template-columns:minmax(0,1.5fr) repeat(2,minmax(0,1fr));gap:14px;align-items:end}
.spd-master .spd-schedule-fields label{display:flex;flex-direction:column;gap:8px;margin:0;font-weight:700;font-size:.95rem;color:var(--spd-text)}
.spd-master .spd-schedule-fields input{width:100%;max-width:none;min-width:0;min-height:52px;border:1px solid var(--spd-line);border-radius:10px;background:var(--spd-surface);color:var(--spd-text);font:inherit;padding:10px}
.spd-master .spd-schedule-publish{margin-top:18px;min-height:52px;background:var(--spd-accent)!important;color:#fff!important;border:1px solid var(--spd-accent)!important;font-weight:750}
.spd-master .spd-schedule-publish:hover,.spd-master .spd-schedule-publish:focus{background:var(--spd-accent_hover)!important;color:#fff!important}
.spd-schedule-list-head{margin-top:24px}
.spd-schedule-list-head h2{margin:0 0 5px;font-size:1.25rem}
.spd-schedule-section .spd-master-window{background:var(--spd-surface);border:1px solid var(--spd-line);box-shadow:none}
.spd-schedule-section .spd-master-window strong{color:var(--spd-text);font-size:1rem}
.spd-schedule-section .spd-master-window button{background:#fff1e9!important;color:#814024!important;border:1px solid #b97955!important;font-weight:700}
.spd-schedule-section .spd-master-window button:hover{background:#f9dfce!important;color:#5b2a14!important}
.spd-schedule-section .spd-window-locked{background:var(--spd-soft);color:var(--spd-muted)}
@media(max-width:620px){.spd-schedule-section{padding:14px;border-radius:15px}.spd-schedule-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.spd-schedule-fields label:first-child{grid-column:1/-1}.spd-master .spd-schedule-publish{width:100%}.spd-schedule-section .spd-master-window form,.spd-schedule-section .spd-master-window button{width:100%}}

/* Quick phone booking inside the master cabinet */
.spd-master .spd-manual-jump{display:inline-flex;align-items:center;min-height:46px;padding:10px 18px;border-radius:11px;background:var(--spd-accent);color:#fff!important;text-decoration:none!important;font-weight:750}
.spd-master .spd-manual-jump:hover{background:var(--spd-accent_hover);color:#fff!important}
.spd-manual-booking{margin:22px 0 30px;padding:clamp(16px,3vw,26px);background:var(--spd-surface);border:1px solid var(--spd-line);border-radius:18px}
.spd-manual-head h2{margin:6px 0 8px;color:var(--spd-text)}
.spd-manual-head p{color:var(--spd-muted);margin:0 0 18px}
.spd-manual-filter{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr) auto;gap:12px;align-items:end;margin-bottom:20px}
.spd-manual-booking label{display:flex;flex-direction:column;gap:7px;color:var(--spd-text);font-weight:650}
.spd-manual-booking input:not([type=radio]),.spd-manual-booking select{width:100%;min-width:0;min-height:48px;border:1px solid var(--spd-line);border-radius:9px;background:var(--spd-surface);color:var(--spd-text);padding:9px;font:inherit}
.spd-manual-filter button,.spd-manual-confirm{min-height:48px;background:var(--spd-accent)!important;color:#fff!important;font-weight:750}
.spd-manual-booking fieldset{border:0;padding:0;margin:0 0 20px}
.spd-manual-booking legend{font-weight:750;margin-bottom:10px}
.spd-manual-slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:9px}
.spd-manual-slots label{position:relative;cursor:pointer}
.spd-manual-slots input{position:absolute;opacity:0}
.spd-manual-slots span{display:grid;place-items:center;min-height:45px;border:1px solid var(--spd-line);border-radius:9px;background:var(--spd-soft);color:var(--spd-text)}
.spd-manual-slots input:checked+span{background:var(--spd-accent);border-color:var(--spd-accent);color:#fff}
.spd-manual-slots input:focus-visible+span{outline:3px solid var(--spd-accent);outline-offset:3px}
.spd-manual-contact{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}
@media(max-width:640px){.spd-manual-filter{grid-template-columns:1fr 1fr}.spd-manual-filter label:first-child{grid-column:1/-1}.spd-manual-filter button{grid-column:1/-1}.spd-manual-contact{grid-template-columns:1fr}.spd-manual-confirm{width:100%}.spd-master .spd-manual-jump{width:100%;justify-content:center}}

.spd-big-date-native{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important}
.spd-big-date{position:relative;width:100%;margin-top:2px}
.spd-master .spd-big-date-toggle{display:flex;width:100%;min-height:52px;align-items:center;justify-content:space-between;padding:10px 14px;border:1px solid var(--spd-line)!important;border-radius:10px;background:var(--spd-surface)!important;color:var(--spd-text)!important;text-align:left;font:inherit;font-weight:700}
.spd-big-date-toggle:after{content:'▾';color:var(--spd-accent)}
.spd-big-date-panel{position:absolute;z-index:100;width:min(350px,calc(100vw - 38px));max-width:100%;top:calc(100% + 7px);left:0;padding:15px;background:var(--spd-surface);border:1px solid var(--spd-line);border-radius:16px;box-shadow:0 14px 38px rgba(0,0,0,.16)}
.spd-big-date-panel[hidden]{display:none!important}
.spd-big-date-head{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;gap:6px;margin-bottom:10px;text-align:center}
.spd-big-date-title{color:var(--spd-text);font-size:1.07rem}
.spd-master .spd-big-date-head button{min-height:44px;padding:0;border:1px solid var(--spd-line);border-radius:10px;background:var(--spd-soft)!important;color:var(--spd-text)!important;font-size:1.65rem}
.spd-big-date-head button:disabled{opacity:.3}
.spd-big-date-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.spd-big-date-weekday{display:grid;place-items:center;min-height:32px;color:var(--spd-muted);font-size:.81rem;font-weight:700}
.spd-master .spd-big-date-day{display:grid;place-items:center;min-width:0;width:100%;aspect-ratio:1;min-height:39px;padding:0;border:1px solid transparent;border-radius:9px;background:transparent!important;color:var(--spd-text)!important;font:inherit;font-weight:650}
.spd-master .spd-big-date-day:hover:not(:disabled){border-color:var(--spd-accent);background:var(--spd-soft)!important}
.spd-master .spd-big-date-day.is-selected{background:var(--spd-accent)!important;color:#fff!important}
.spd-master .spd-big-date-day:disabled{opacity:.25}
@media(max-width:620px){.spd-big-date-panel{position:relative;top:auto;left:auto;width:100%;max-width:none;margin-top:9px;box-shadow:0 4px 14px rgba(0,0,0,.08);padding:12px}.spd-master .spd-big-date-day{min-height:42px}.spd-big-date-grid{gap:2px}}

/* Calendar legibility: seven comfortable day columns, including narrow screens. */
.spd-manual-filter .spd-big-date-panel,.spd-schedule-form .spd-big-date-panel{width:370px;max-width:min(370px,calc(100vw - 32px));padding:16px}
.spd-big-date-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}
.spd-master .spd-big-date-day{width:100%;min-width:0;min-height:43px;aspect-ratio:auto;padding:0;font-size:16px;line-height:1.1;letter-spacing:0;font-weight:650;border-radius:9px}
.spd-big-date-weekday{font-size:13px;min-height:35px}
.spd-big-date-head{grid-template-columns:46px minmax(0,1fr) 46px;gap:8px}
.spd-big-date-title{font-size:16px;white-space:normal}
@media(max-width:620px){.spd-manual-filter .spd-big-date-panel,.spd-schedule-form .spd-big-date-panel{position:relative;width:100%;max-width:none;padding:12px}.spd-big-date-grid{gap:3px}.spd-master .spd-big-date-day{min-height:42px;font-size:15px}}

/* Matching large date picker for the client booking form. */
.spd-booking .spd-big-date{max-width:370px}
.spd-booking .spd-big-date-toggle{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:52px;padding:10px 14px;border:1px solid var(--spd-line)!important;border-radius:10px;background:var(--spd-surface)!important;color:var(--spd-text)!important;font:inherit;font-weight:700;text-align:left}
.spd-booking .spd-big-date-head button{min-height:44px;padding:0;border:1px solid var(--spd-line);border-radius:10px;background:var(--spd-soft)!important;color:var(--spd-text)!important;font-size:1.65rem}
.spd-booking .spd-big-date-day{display:grid;place-items:center;width:100%;min-width:0;min-height:43px;padding:0;border:1px solid transparent;border-radius:9px;background:transparent!important;color:var(--spd-text)!important;font:inherit;font-size:16px;line-height:1.1;font-weight:650}
.spd-booking .spd-big-date-day:hover:not(:disabled){background:var(--spd-soft)!important;border-color:var(--spd-accent)}
.spd-booking .spd-big-date-day.is-selected{background:var(--spd-accent)!important;color:#fff!important}
.spd-booking .spd-big-date-day:disabled{opacity:.25}
@media(max-width:620px){.spd-booking .spd-big-date{max-width:none}.spd-booking .spd-big-date-panel{position:relative;top:auto;left:auto;width:100%;max-width:none;margin-top:9px;box-shadow:0 4px 14px rgba(0,0,0,.08);padding:12px}.spd-booking .spd-big-date-day{min-height:42px;font-size:15px}}

/* Client date availability reflects actual bookable service slots. */
.spd-booking .spd-big-date-day.has-slots:not(.is-selected){background:var(--spd-soft)!important;color:var(--spd-accent)!important;font-weight:800}
.spd-booking .spd-big-date-day:disabled{opacity:.32;cursor:not-allowed}
.spd-booking .spd-big-date-day.is-selected:disabled{background:transparent!important;color:var(--spd-muted)!important}
.spd-big-date-legend{margin:12px 0 0;color:var(--spd-muted);font-size:12px;line-height:1.5}

/* Telephone input with accessible one-tap reset. */
.spd-phone-wrap{position:relative;display:block;width:100%;min-width:0}
.spd-phone-wrap input{width:100%;box-sizing:border-box;padding-right:45px!important}
.spd-phone-clear{position:absolute;right:7px;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:34px;height:34px;min-width:34px;padding:0!important;border:0!important;border-radius:50%;background:var(--spd-soft,#eee)!important;color:var(--spd-text,#333)!important;font-size:25px;line-height:1;cursor:pointer}
.spd-phone-clear[hidden]{display:none!important}
.spd-phone-clear:focus-visible{outline:2px solid var(--spd-accent,#555);outline-offset:2px}

/* Master-only client directory. */
.spd-client-directory{margin:28px 0;padding:20px;border:1px solid var(--spd-line);border-radius:16px;background:var(--spd-surface)}
.spd-client-directory h2{margin:0 0 8px}
.spd-client-search-label{display:block;margin:16px 0;font-weight:650}
.spd-client-search-label input{display:block;width:100%;max-width:460px;min-height:46px;margin-top:6px;padding:10px 12px;border:1px solid var(--spd-line);border-radius:9px;background:var(--spd-bg);color:var(--spd-text)}
.spd-client-item{margin:8px 0;border:1px solid var(--spd-line);border-radius:10px;padding:12px}
.spd-client-item[hidden]{display:none}
.spd-client-item summary{cursor:pointer;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}
.spd-client-item summary span{color:var(--spd-muted)}
.spd-client-item ul{padding-left:22px;line-height:1.8}
.spd-client-reuse{margin-top:12px;padding:10px 15px;border:0;border-radius:9px;background:var(--spd-accent);color:white;cursor:pointer}

.spd-client-status{font-size:13px;color:var(--spd-muted);min-height:18px;margin:8px 0}
.spd-client-more{display:block;width:100%;min-height:44px;margin-top:12px;border:1px solid var(--spd-line);border-radius:9px;background:var(--spd-soft);color:var(--spd-text);font-weight:650;cursor:pointer}
.spd-client-more[hidden]{display:none}
.spd-client-directory{max-width:760px}
.spd-client-item summary{align-items:center;min-height:34px}
.spd-client-item[open]{background:var(--spd-bg)}

/* Inline client suggestions in manual booking. */
.spd-client-autocomplete{position:relative;display:block}
.spd-client-autocomplete>input{width:100%;box-sizing:border-box}
.spd-client-suggestions{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:100;display:block;max-height:260px;overflow-y:auto;background:var(--spd-surface);border:1px solid var(--spd-line);border-radius:10px;box-shadow:0 10px 24px rgba(0,0,0,.12)}
.spd-client-suggestions[hidden]{display:none}
.spd-client-option{display:flex;flex-direction:column;align-items:flex-start;width:100%;gap:3px;padding:12px 14px;border:0;border-bottom:1px solid var(--spd-line);background:var(--spd-surface);color:var(--spd-text);text-align:left;cursor:pointer}
.spd-client-option:hover,.spd-client-option:focus-visible{background:var(--spd-soft)}
.spd-client-option small{color:var(--spd-muted);font-size:12px}
.spd-client-directory{padding:12px 16px;margin:14px 0}
.spd-client-history-panel>summary{cursor:pointer;font-weight:700;padding:5px 0}
