/* Styles for the /book and /reserve booking widget (.tsw). Pages that use it link this file;
   booking-widget.js links it itself when embedded somewhere that does not.
   A stylesheet, not an injected <style>, so the Content-Security-Policy can refuse
   inline <style> elements (style-src-elem). */
.tsw{font-family:var(--font-ui,"Public Sans",system-ui,sans-serif);color:var(--ink,#5B6670);max-width:640px}
.tsw h3{font-family:var(--font-ui,"Public Sans",system-ui,sans-serif);color:var(--navy,#13294B);font-size:1.25rem;margin:0 0 4px}
.tsw .tsw-sub{color:var(--muted,#626D79);font-size:.9rem;margin:0 0 18px}
.tsw .tsw-steps{display:flex;gap:6px;margin-bottom:22px}
.tsw .tsw-steps span{flex:1;height:4px;border-radius:99px;background:var(--line,#CFD3D5)}
.tsw .tsw-steps span.on{background:var(--blue,#4B9CD3)}
.tsw .tsw-svc{display:flex;gap:10px;align-items:flex-start;justify-content:space-between;padding:12px 14px;margin-bottom:8px;border:1.5px solid var(--field-border,#CFD3D5);border-radius:10px;cursor:pointer}
.tsw .tsw-svc.on{border-color:var(--blue,#4B9CD3);background:var(--band,#EDF5FB)}
.tsw .tsw-svc .tsw-svc-l{display:flex;gap:10px;align-items:flex-start;font-weight:600;color:var(--navy,#13294B)}
.tsw .tsw-svc input{margin-top:3px;width:18px;height:18px;flex:none;accent-color:var(--blue-dark,#2C5080)}
.tsw .tsw-svc small{display:block;font-weight:400;color:var(--muted,#626D79);font-size:.85rem}
.tsw .tsw-dep{font-weight:700;color:var(--blue-dark,#2C5080);white-space:nowrap}
.tsw label{display:block;font-weight:700;font-size:.86rem;color:var(--navy,#13294B);margin:12px 0 6px}
.tsw input[type=text],.tsw input[type=email],.tsw input[type=tel],.tsw textarea{width:100%;padding:11px 13px;border:1.5px solid var(--field-border,#CFD3D5);border-radius:9px;font-size:1rem;color:var(--navy,#13294B);background:#fff;font-family:inherit}
.tsw textarea{min-height:74px;resize:vertical}
.tsw input:focus,.tsw textarea:focus{border-color:var(--blue-dark,#2C5080);box-shadow:0 0 0 3px rgba(var(--blue-rgb,75,156,211),.28);outline:none}
.tsw .tsw-file{border:1.5px dashed var(--field-border,#CFD3D5);border-radius:10px;padding:14px;text-align:center;color:var(--muted,#626D79);font-size:.9rem}
.tsw .tsw-thumbs{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.tsw .tsw-thumb{position:relative;width:64px;height:64px;border-radius:8px;overflow:hidden;border:1px solid var(--line,#CFD3D5)}
.tsw .tsw-thumb img{width:100%;height:100%;object-fit:cover}
.tsw .tsw-thumb button{position:absolute;top:1px;right:1px;background:rgba(var(--navy-rgb,19,41,75),.8);color:#fff;border:0;border-radius:6px;width:20px;height:20px;cursor:pointer;line-height:1}
.tsw .notice{background:var(--band,#EDF5FB);border-left:4px solid var(--blue,#4B9CD3);padding:14px 18px;border-radius:0 10px 10px 0;font-size:.92rem;margin:12px 0}
.tsw .notice.err{background:#FDECEC;border-left-color:#B3372F;color:#8C2B2B}
.tsw .tsw-consent{display:flex;gap:10px;align-items:flex-start;font-size:.88rem;line-height:1.5;margin:8px 0;font-weight:400;color:var(--ink,#5B6670)}
.tsw .tsw-consent input{margin-top:3px;width:17px;height:17px;flex:none}
.tsw .btn:disabled,.tsw button.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}
.tsw .tsw-back{background:none;border:0;color:var(--blue-dark,#2C5080);cursor:pointer;font:inherit;padding:0;margin-bottom:14px}
.tsw .tsw-opt{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;text-align:left;padding:14px 16px;margin-bottom:10px;background:#fff;border:1.5px solid var(--field-border,#CFD3D5);border-radius:10px;font:inherit;color:inherit;cursor:pointer}
.tsw .tsw-opt:hover{border-color:var(--blue,#4B9CD3)}
.tsw .tsw-opt strong{color:var(--navy,#13294B)}
.tsw .tsw-cal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.tsw .tsw-cal-title{font-family:var(--font-ui,"Public Sans",system-ui,sans-serif);font-weight:700;color:var(--navy,#13294B);font-size:1.05rem}
.tsw .tsw-cal-nav{width:38px;height:38px;border-radius:9px;border:1.5px solid var(--field-border,#CFD3D5);background:#fff;color:var(--navy,#13294B);font-size:1.2rem;cursor:pointer}
.tsw .tsw-cal-nav:disabled{opacity:.4;cursor:not-allowed}
.tsw .tsw-cal-grid{display:flex;flex-direction:column;gap:4px}
.tsw .tsw-cal-row{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.tsw .tsw-cal-dow{text-align:center;font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted,#626D79);padding:4px 0}
.tsw .tsw-cal-blank{aspect-ratio:1/1}
.tsw .tsw-cal-day{position:relative;display:flex;align-items:center;justify-content:center;aspect-ratio:1/1;border-radius:10px;border:1.5px solid transparent;font-weight:600;font-size:.95rem;cursor:pointer}
.tsw .tsw-cal-day.is-avail{background:#fff;border-color:var(--field-border,#CFD3D5);color:var(--navy,#13294B)}
.tsw .tsw-cal-day.is-avail:hover{border-color:var(--blue,#4B9CD3);background:var(--band,#EDF5FB)}
.tsw .tsw-cal-day.is-selected{background:var(--blue,#4B9CD3);border-color:var(--blue,#4B9CD3);color:var(--navy,#13294B)}
.tsw .tsw-cal-day.is-disabled{color:var(--muted,#626D79);opacity:.4;cursor:default}
.tsw .tsw-cal-day:focus-visible{outline:3px solid var(--blue-dark,#2C5080);outline-offset:2px}
.tsw .tsw-cal-dot{position:absolute;bottom:7px;width:5px;height:5px;border-radius:50%;background:var(--blue,#4B9CD3)}
.tsw .tsw-cal-day.is-selected .tsw-cal-dot{background:var(--navy,#13294B)}
.tsw .tsw-date{font-family:var(--font-ui,"Public Sans",system-ui,sans-serif);font-weight:700;color:var(--navy,#13294B);margin:18px 0 8px;font-size:.95rem}
.tsw #tsw-card{padding:13px 14px;border:1.5px solid var(--field-border,#CFD3D5);border-radius:9px;background:#fff;margin:8px 0 4px}
.tsw .tsw-hold{font-size:.85rem;color:var(--muted,#626D79);margin:8px 0 14px}
.tsw .tsw-lead{font-size:.85rem;color:var(--muted,#626D79);margin:0 0 12px}
.tsw .tsw-done{text-align:center;padding:26px 8px}
.tsw .tsw-done .tsw-check{width:56px;height:56px;border-radius:50%;background:#1E9E62;color:#fff;font-size:1.8rem;line-height:56px;margin:0 auto 14px;text-align:center}
.tsw .tsw-spin{display:inline-block;width:18px;height:18px;border:3px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:tswspin .8s linear infinite;vertical-align:-4px;margin-right:8px}
@keyframes tswspin{to{transform:rotate(360deg)}
}

/* Utilities for the widget's own markup: what booking-widget.js used to write as style=""
   attributes, which the CSP refuses (style-src-attr). Scoped to .tsw and defined here rather
   than in styles.css, because an embedded widget gets this file only. !important keeps an
   inline style's rank over the .tsw rules above. */
.tsw .u-left-22{left:22px!important}
.tsw .u-m-12-0{margin:12px 0!important}
.tsw .u-m-14-0{margin:14px 0!important}
.tsw .u-p-4-12-4-0{padding:4px 12px 4px 0!important}
.tsw .u-pos-absolute{position:absolute!important}
.tsw .u-top-22{top:22px!important}
.tsw .u-w-100pct{width:100%!important}
.tsw .u-bcollapse-collapse{border-collapse:collapse!important}
.tsw .u-bt-1-solid-d0d5dd{border-top:1px solid var(--c-d0d5dd,#d0d5dd)!important}
.tsw .u-fs-0_82rem{font-size:.82rem!important}
.tsw .u-mt-14{margin-top:14px!important}
.tsw .u-mt-6{margin-top:6px!important}
.tsw .u-pt-8{padding-top:8px!important}
.tsw .u-ta-right{text-align:right!important}
.tsw .u-ws-nowrap{white-space:nowrap!important}
.tsw .u-ws-pre-line{white-space:pre-line!important}
