.pt-shell { max-width: 1180px; }
.pt-heading { display:flex; justify-content:space-between; align-items:center; gap:1rem; flex-wrap:wrap; margin-bottom:1rem; }
.pt-heading h1 { font-size:2rem; margin-bottom:.5rem; }
.pt-heading h2 { margin:0; }
.pt-heading p { margin:0; color:#626262; }
.pt-shell .portal-card { background:white; padding:1.5rem; border:1px solid #ddd; border-radius:8px; margin-bottom:1.5rem; }
.pt-shell h2 { font-size:1.25rem; font-weight:600; }
.pt-policy { border-left:3px solid var(--accent-color,#cc1616); padding:.5rem 1rem; margin-bottom:1.5rem; }
.pt-entry { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:1rem 0; border-bottom:1px solid #eee; flex-wrap:wrap; }
.pt-entry:last-child { border:0; }
.pt-entry p { margin:0; }
.pt-actions { display:flex; gap:.5rem; flex-wrap:wrap; }
@media(max-width:575px) { .pt-shell .portal-card { padding:1rem; } }
/* Match the existing class timetable and mobile day strip. */
.pt-calendar { margin-top:1rem; }
.pt-calendar .pt-cal-controls { flex-wrap:wrap; justify-content:center; }
.pt-cal-jump { display:flex; align-items:center; gap:.5rem; font-size:.8rem; color:#555; }
.pt-cal-jump input { width:auto; }
.pt-calendar .cal-week-nav { display:flex; align-items:center; justify-content:space-between; margin-bottom:.75rem; gap:.5rem; }
.pt-calendar .cal-week-range { font-weight:600; font-size:.95rem; text-align:center; }
.pt-calendar .cal-timetable { width:100%; border-collapse:collapse; table-layout:fixed; font-size:.8rem; }
.pt-calendar .cal-timetable thead th { background:#f8f9fa; border:1px solid #e5e5e5; padding:.4rem .3rem; text-align:center; font-size:.75rem; font-weight:700; position:sticky; top:0; z-index:2; }
.pt-calendar .cal-timetable th.cal-th-today { background:#e8f4fd; border-color:#43B0F2; }
.pt-calendar .cal-timetable td { border:1px solid #eee; padding:2px; vertical-align:top; height:32px; position:relative; }
.pt-calendar .cal-timetable td.cal-td-today { background:#f8fcff; }
.pt-calendar .cal-timetable .cal-time-label { font-size:.7rem; color:#888; font-weight:600; text-align:right; padding-right:.4rem; width:50px; white-space:nowrap; border-right:2px solid #e5e5e5; }
.pt-calendar .cal-tt-cell { display:flex; flex-direction:column; gap:2px; }
.pt-calendar .cal-tt-event { background:#43B0F2; color:#fff; border:0; border-radius:4px; padding:4px 5px; font-size:.7rem; font-weight:600; text-align:left; line-height:1.4; overflow-wrap:anywhere; width:100%; }
.pt-calendar button.cal-tt-event { cursor:pointer; }
.pt-calendar button.cal-tt-event:hover { filter:brightness(.9); }
.pt-calendar .cal-tt-event small { display:block; font-weight:400; }
.pt-calendar .cal-timetable-wrap { overflow:auto; max-height:640px; border:1px solid #e5e5e5; border-radius:8px; }
.pt-calendar .pt-cal-hours { background:#e4f2fb; color:#174969; }
.pt-calendar .pt-cal-off { background:#fce4e4; color:#822; }
.pt-calendar .pt-cal-booking { background:#22c55e; color:#113f23; }
.pt-calendar .pt-cal-class { background:#64748b; color:white; }
.pt-calendar td.pt-cal-working { background:#eef8ff; }
.pt-calendar td.pt-cal-blocked { background:#f8eeee; }
.pt-calendar td:has(.pt-cal-add) { padding-right:20px; }
.pt-cal-add { position:absolute; right:0; top:0; bottom:0; width:18px; border:0; border-left:1px solid #eee; color:#50738c; background:transparent; font-size:1rem; cursor:crosshair; touch-action:pan-y; }
.pt-cal-add:hover,.pt-cal-add:focus-visible { background:#cce8fb; color:#16425e; }
.pt-cal-mobile { display:none; }
.pt-cal-legend { display:flex; flex-wrap:wrap; gap:1rem; font-size:.8rem; margin:1rem 0; }
.pt-cal-legend span::before { content:''; width:.7rem; height:.7rem; display:inline-block; border-radius:2px; margin-right:.35rem; }
.pt-key-hours::before { background:#43B0F2; }.pt-key-off::before { background:#f3aaaa; }.pt-key-booking::before { background:#22c55e; }.pt-key-class::before { background:#64748b; }
.pt-cal-dot { width:5px; height:5px; background:currentColor; border-radius:50%; margin:auto; }
.pt-calendar .pt-cal-banner { border-left:4px solid #43B0F2; }
.pt-calendar .pt-cal-banner.pt-cal-off { border-color:#f3aaaa; }
.pt-calendar .pt-cal-banner.pt-cal-booking { border-color:#22c55e; }
.pt-calendar .pt-cal-banner.pt-cal-class { border-color:#64748b; }
.pt-cal-time-picker { margin:.75rem 0 1rem; }
.pt-cal-time-picker summary { cursor:pointer; color:#174969; padding:.5rem 0; }
.pt-cal-times { display:grid; grid-template-columns:repeat(4,1fr); gap:.5rem; padding:.5rem 0; }
.pt-calendar button:focus-visible { outline:3px solid #174969; outline-offset:2px; }
@media(max-width:720px) {
 .pt-cal-desktop { display:none; }.pt-cal-mobile { display:block; }
 .pt-calendar .cal-day-strip { min-width:0; gap:.15rem; width:100%; }
 .pt-calendar .cal-day-pill { min-width:0; flex:1; padding:.45rem .15rem; }
 .pt-calendar .cal-day-strip-wrap { margin-bottom:1rem; }
 .pt-calendar .cal-banner-title { font-size:1.05rem; }
 .pt-calendar .cal-banner-coach-img,.pt-calendar .cal-banner-coach-init { width:56px; height:56px; }
 .pt-calendar .cal-month,.pt-calendar .cal-year { display:none; }
 .pt-calendar .pt-cal-controls { margin-bottom:.5rem; }
 .pt-calendar .pt-cal-jump { width:100%; justify-content:flex-end; }
}
.pt-calendar td.pt-cal-selecting { background:#b9e2fc; box-shadow:inset 0 0 0 1px #43B0F2; }
.pt-calendar td[data-time] { cursor:crosshair; user-select:none; }
.pt-calendar td.pt-cal-closed { background:repeating-linear-gradient(135deg,#f1f1f1,#f1f1f1 5px,#e9e9e9 5px,#e9e9e9 6px); }
.pt-key-closed::before { background:#b7b7b7; }

/* Session review: clear details before committing a PT credit. */
.pt-book-modal .modal-dialog { max-width:460px; }
.pt-book-modal .modal-content { border:1px solid #e3e8ec; border-radius:16px; box-shadow:0 24px 64px #172a3a26; overflow:hidden; }
.pt-book-modal .modal-header { border:0; padding:1.5rem 1.5rem 0; align-items:flex-start; }
.pt-confirm-icon { display:grid; place-items:center; width:48px; height:48px; border-radius:12px; background:#edf5fc; color:#19689f; font-size:1.5rem; }
.pt-book-modal .btn-close { margin:0; }
.pt-book-modal .modal-body { padding:1.25rem 1.5rem .5rem; }
.pt-book-modal h2 { font-size:1.5rem; font-weight:700; margin-bottom:.5rem; }
.pt-confirm-intro { font-size:.875rem; color:#626262; margin-bottom:1.5rem; }
.pt-confirm-details { margin:0 0 1.25rem; }
.pt-confirm-details > div { display:flex; justify-content:space-between; gap:1rem; padding:.85rem 0; border-bottom:1px solid #e9edf0; }
.pt-confirm-details dt { display:flex; align-items:center; gap:.65rem; font-weight:500; color:#626262; font-size:.875rem; }
.pt-confirm-details dt i { color:#19689f; }
.pt-confirm-details dd { margin:0; text-align:right; font-size:.9rem; font-weight:600; overflow-wrap:anywhere; min-width:0; }
.pt-confirm-details dd small { display:block; font-size:.75rem; font-weight:400; color:#626262; margin-top:.25rem; }
.pt-confirm-credit { border-left:3px solid #2986cc; background:#edf5fc; padding:.75rem 1rem; font-size:.875rem; font-weight:600; color:#174969; margin-bottom:.75rem; }
.pt-confirm-policy { font-size:.75rem; color:#626262; line-height:1.6; }
.pt-book-modal .modal-footer { border:0; padding:.5rem 1.5rem 1.5rem; gap:.5rem; flex-wrap:wrap; }
.pt-book-modal .modal-footer .btn { flex:1; margin:0; padding:.7rem .8rem; font-size:.875rem; font-weight:600; }
.pt-book-modal .btn-primary { background:#19689f; border-color:#19689f; }
.pt-book-modal .btn-primary:hover { background:#145681; border-color:#145681; }
.pt-book-modal .btn:focus-visible { outline:3px solid #19689f; outline-offset:3px; }
