.book-page { padding: 2.5rem 0 4rem; }
.book-intro { margin-bottom: 2rem; }
.book-intro h1 { font-size: var(--step-3); }
.book-intro p { color: var(--muted); font-size: var(--step-1); line-height: 1.45; }
.book-grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 2rem; align-items: start; }
@media (max-width: 900px) { .book-grid { grid-template-columns: 1fr; } }

.cal { background: var(--white); border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 1.2rem; }
.cal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: .8rem; }
.cal-head h2 { font-size: var(--step-2); margin: 0; }
.cal-nav { width: 44px; height: 44px; border-radius: 50%; border: 2px solid var(--line); background: var(--white); font: 700 1.5rem/1 var(--display); cursor: pointer; color: var(--green); }
.cal-nav:hover:not([disabled]) { border-color: var(--green); }
.cal-nav[disabled] { opacity: .35; cursor: not-allowed; }
.cal-dow, .cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 5px; }
.cal-dow span { font-size: .8rem; font-weight: 700; color: var(--muted); text-align: center; padding-bottom: .3rem; }
.day {
  aspect-ratio: 1 / 1.05; border: 2px solid transparent; border-radius: var(--radius-sm); background: var(--paper);
  display: flex; flex-direction: column; justify-content: space-between; padding: .4rem; cursor: pointer;
  font: 700 1rem var(--display); color: var(--ink); text-align: left;
}
.day:hover:not([disabled]) { border-color: var(--green); }
.day[disabled] { cursor: default; color: #a6b0ab; background: transparent; }
.day.is-full:not([disabled]) { color: var(--muted); }
.day.is-selected { border-color: var(--green); background: var(--green-soft); box-shadow: inset 0 0 0 1px var(--green); }
.day.is-today { text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 3px; }
.bars { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; }
.bars i { height: 6px; border-radius: 3px; background: var(--booked); }
.bars i.free { background: var(--green); }
.day[disabled] .bars i { background: #eceeed; }
.cal-key { display: flex; flex-wrap: wrap; gap: .4rem 1.1rem; font-size: .8rem; color: var(--muted); margin-top: .9rem; }
.cal-key i { display: inline-block; width: 18px; height: 6px; border-radius: 3px; vertical-align: middle; margin-right: .35rem; }
.k-free { background: var(--green); } .k-booked { background: var(--booked); }
@media (max-width: 480px) { .cal { padding: .8rem .6rem; } .day { padding: .25rem; font-size: .9rem; } .bars i { height: 5px; } }

.day-panel { margin-top: 1.5rem; }
.day-panel h2 { font-size: var(--step-2); margin-bottom: .2rem; }
.day-hint { color: var(--muted); }
.sessions { display: grid; gap: .6rem; }
.session {
  display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 1rem; width: 100%;
  border: 2px solid var(--line); border-radius: var(--radius-lg); padding: 1rem 1.2rem; background: var(--white);
  font: inherit; color: var(--ink); cursor: pointer; text-align: left;
}
.session:hover:not([disabled]) { border-color: var(--green); }
.session .tick { width: 28px; height: 28px; border-radius: 50%; border: 2px solid var(--line); display: grid; place-items: center; font-weight: 700; color: transparent; }
.session strong { font-family: var(--display); font-size: var(--step-1); display: block; line-height: 1.1; }
.session span.t { color: var(--muted); }
.session .state { font-weight: 700; font-size: var(--step--1); }
.session[aria-pressed="true"] { border-color: var(--green); background: var(--green-soft); }
.session[aria-pressed="true"] .tick { background: var(--green); border-color: var(--green); color: var(--white); }
.session[disabled] { cursor: not-allowed; background: repeating-linear-gradient(135deg, #f1f3f2 0 8px, #f8f9f8 8px 16px); color: #7d8883; }
.session[disabled] .tick { visibility: hidden; }

.book-form { background: var(--white); border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 1.5rem; position: sticky; top: 88px; }
@media (max-width: 900px) { .book-form { position: static; } }
.book-form fieldset { border: 0; padding: 0; margin: 0; }
.summary { background: var(--green); color: var(--white); border-radius: var(--radius-sm); padding: 1rem 1.2rem; margin-bottom: 1.4rem; }
.summary h2 { font-size: var(--step-1); color: var(--white); margin-bottom: .4rem; }
.summary p { margin: 0; color: #dfe9e3; }
.summary ul { list-style: none; padding: 0; margin: 0; }
.summary li { display: flex; justify-content: space-between; gap: 1rem; padding: .35rem 0; border-bottom: 1px solid rgba(255,255,255,.18); }
.summary li button { background: none; border: 0; color: var(--marigold); font: 700 .85rem var(--body); cursor: pointer; padding: 0 0 0 .5rem; }
.summary-total { font-family: var(--display); font-size: var(--step-1); font-weight: 700; color: var(--white) !important; margin-top: .6rem !important; display: flex; justify-content: space-between; }
.hint-inline { font-weight: 400; color: var(--muted); font-size: var(--step--1); }
.btn-block { width: 100%; padding: 1.05rem; font-size: var(--step-1); }

.confirmation { background: var(--white); border: 2px solid var(--green); border-radius: var(--radius-lg); padding: 2rem; max-width: 720px; }
.confirmation h2 { color: var(--green); }
.conf-list { list-style: none; padding: 0; margin: 1rem 0 1.6rem; }
.conf-list li { display: grid; grid-template-columns: auto 1fr auto; gap: 1rem; padding: .8rem 0; border-bottom: 1px solid var(--line); align-items: baseline; }
.conf-list code { font: 700 1rem var(--body); background: var(--marigold-soft); padding: .2rem .5rem; border-radius: 6px; }
.confirmation ol { padding-left: 1.2rem; }
.confirmation ol li { margin-bottom: .5rem; }
