.nhs-booking { width:100%; margin:0; color:var(--portfolio-ink,#171715); }
.nhs-booking, .nhs-booking__layout, .nhs-booking__availability, .nhs-booking__form { min-width:0; max-width:100%; box-sizing:border-box; }
.nhs-booking__eyebrow { margin: 0 0 .75rem; font: 700 .7rem/1 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .1em; }
.nhs-booking h2 { max-width: 42rem; margin: 0 0 1rem; font: 400 clamp(2.5rem, 6vw, 5rem)/.92 Georgia, serif; letter-spacing: -.06em; }
.nhs-booking > p { max-width: 34rem; line-height: 1.55; }
.nhs-booking__notice { margin: 2rem 0; padding: 1rem; border: 1px solid var(--portfolio-rule, #ccc9c0); }
.nhs-booking__week-nav { display:flex; align-items:center; gap:.75rem; margin:2.5rem 0 1rem; font:700 .72rem/1 ui-monospace,monospace; letter-spacing:.08em; text-transform:uppercase; }
.nhs-booking__week-nav span { margin-right:auto; }.nhs-booking__week-nav a { display:grid; width:2rem; height:2rem; place-items:center; border:1px solid var(--portfolio-rule,#ccc9c0); color:inherit; text-decoration:none; }
.nhs-booking__layout { display:grid; gap:clamp(2.5rem,6vw,7rem); align-items:start; }.nhs-booking__calendar { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:.35rem; overflow-x:auto; margin:0 0 2.5rem; padding-bottom:.5rem; }
.nhs-booking__day { min-width:0; }.nhs-booking__day h3 { display:grid; gap:.25rem; margin:0 0 .5rem; padding-bottom:.5rem; border-bottom:1px solid var(--portfolio-rule,#ccc9c0); font:600 .7rem/1 ui-monospace,monospace; letter-spacing:.06em; text-transform:uppercase; }.nhs-booking__day h3 span { color:var(--portfolio-muted,#696760); font-weight:400; }
.nhs-booking__slot { position:relative; display:block; min-height:2.75rem; margin-bottom:.35rem; border:1px solid var(--portfolio-rule,#ccc9c0); background:var(--portfolio-paper,#f4f2ed); cursor:pointer; }
.nhs-booking__slot input { position: absolute; opacity: 0; }
.nhs-booking__slot span { display:grid; place-items:center; height:100%; padding:.6rem; font:.72rem/1 ui-monospace,monospace; }
.nhs-booking__slot:has(input:checked) { border-color:var(--portfolio-ink,#171715); background:var(--portfolio-ink,#171715); color:var(--portfolio-paper,#f4f2ed); }
.nhs-booking__slot:has(input:checked) em { color: inherit; }
.nhs-booking__slot.is-busy { cursor: not-allowed; opacity: .45; }
.nhs-booking__selection { min-height: 1.2em; margin: 1.5rem 0 2.5rem; padding: 1rem; border: 1px solid var(--portfolio-rule, #ccc9c0); color: var(--portfolio-muted, #696760); font: .72rem/1.45 ui-monospace, SFMono-Regular, Menlo, monospace; }
.nhs-booking__form { display:grid; gap:1rem; padding:2rem; border:1px solid var(--portfolio-rule,#ccc9c0); }
.nhs-booking__form p { margin: 0; }
.nhs-booking__form label { display: grid; gap: .45rem; font: 600 .75rem/1.2 ui-monospace, SFMono-Regular, Menlo, monospace; }
.nhs-booking__form input:not([type='checkbox']), .nhs-booking__form textarea { width: 100%; box-sizing: border-box; padding: .75rem; border: 1px solid var(--portfolio-rule, #ccc9c0); border-radius: 0; background: transparent; color: inherit; font: inherit; }
.nhs-booking__consent { display:grid !important; grid-template-columns:auto minmax(0,1fr); align-items:flex-start; gap:.55rem; font-weight:400 !important; line-height:1.4 !important; text-align:left; }.nhs-booking__consent input { margin-top:.16rem; }.nhs-booking__consent span { min-width:0; }
.nhs-booking__consent a { color: inherit; text-decoration: underline; text-underline-offset: .16em; }
.nhs-booking__form button { width: fit-content; padding: .85rem 1rem; border: 1px solid currentcolor; border-radius: 0; background: var(--portfolio-ink, #171715); color: var(--portfolio-paper, #f4f2ed); cursor: pointer; font: 700 .7rem/1 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .07em; text-transform: uppercase; }
.nhs-booking__trap { position: absolute !important; left: -9999px !important; }
@media (min-width: 64rem) { .nhs-booking__layout { grid-template-columns:minmax(0,1.35fr) minmax(18rem,.65fr); } }
@media (max-width: 720px) { .nhs-booking__layout { gap:2.5rem; } .nhs-booking__calendar { grid-template-columns:repeat(2,minmax(0,1fr)); overflow:visible; } .nhs-booking__day { min-width:0; } .nhs-booking__slot { min-height:2.5rem; } .nhs-booking__slot span { padding:.5rem .25rem; font-size:.65rem; } .nhs-booking__form { padding:1rem; } }
