.pbc-portal { max-width:1100px; margin:24px auto; padding:24px; color:#332b30; background:#fff; border:1px solid #e4dce0; border-radius:16px; }
.pbc-portal h2,.pbc-portal h3 { color:#332b30; margin:16px 0; }
.pbc-portal form { display:flex; align-items:flex-end; flex-wrap:wrap; gap:12px; margin:14px 0; }
.pbc-portal label { display:flex; flex-direction:column; gap:6px; font-size:14px; }
.pbc-portal input,.pbc-portal select { border:1px solid #ccc; border-radius:6px; padding:8px; min-height:40px; color:#332b30; background:#fff; }
.pbc-portal button,.pbc-portal input[type=submit] { padding:9px 16px; border:0; border-radius:6px; background:#9d5574; color:#fff; cursor:pointer; }
.pbc-portal a { color:#80435d; }
.pbc-schedule-section { padding:20px 0; border-top:1px solid #e4dce0; }
.pbc-schedule-row { display:flex; flex-wrap:wrap; gap:16px; border-bottom:1px solid #eee; }
.pbc-portal details { padding:14px; background:#faf5f7; border-radius:8px; }
.pbc-portal summary { cursor:pointer; font-weight:600; }
.pbc-portal small { display:block; width:100%; }
.pbc-error { color:#aa2222; }
.pbc-therapist-link { display:inline-block; font-size:13px; margin-top:18px; }
@media(max-width:600px) { .pbc-portal { padding:16px; } .pbc-portal form,.pbc-portal label { width:100%; } }

/* Personal agenda: scoped to the protected therapist portal. */
.pbc-portal { box-sizing:border-box; max-width:1120px; padding:32px; border-color:#ecdee5; border-radius:24px; box-shadow:0 16px 50px rgba(80,40,60,.05); }
.pbc-agenda { --pbc-ink:#352b32; --pbc-muted:#786873; --pbc-rose:#9d5574; color:var(--pbc-ink); }
.pbc-agenda-heading { display:flex; justify-content:space-between; align-items:center; gap:20px; margin:20px 0 28px; }
.pbc-eyebrow { display:block; color:#8c4668; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.16em; }
.pbc-agenda-heading h2 { font-size:clamp(24px,3vw,34px); font-weight:600; line-height:1.25; margin:10px 0; }
.pbc-agenda-heading p { color:var(--pbc-muted); margin:0; font-size:15px; }
.pbc-agenda a.pbc-refresh { flex-shrink:0; padding:11px 16px; border:1px solid #dbc5d0; border-radius:12px; font-size:13px; font-weight:600; text-decoration:none; color:#80435d; background:#fff; }
.pbc-periods { display:flex; flex-wrap:wrap; gap:6px; padding:6px; border:1px solid #ecdee5; border-radius:15px; background:#faf6f8; }
.pbc-agenda a.pbc-period { flex:1; padding:11px 14px; text-align:center; border-radius:10px; text-decoration:none; font-size:14px; font-weight:600; color:#745e6a; }
.pbc-agenda a.pbc-period.is-active { background:var(--pbc-rose); color:#fff; box-shadow:0 3px 9px #9d557420; }
.pbc-agenda a:hover,.pbc-agenda button:hover { filter:brightness(.96); }
.pbc-agenda a:focus-visible,.pbc-agenda button:focus-visible,.pbc-agenda input:focus-visible,.pbc-working-editor summary:focus-visible { outline:3px solid #9d5574; outline-offset:3px; }
.pbc-portal form.pbc-date-filter { justify-content:flex-end; margin:16px 0 28px; gap:10px; }
.pbc-date-filter label { font-size:12px; color:var(--pbc-muted); }
.pbc-date-filter input { min-height:42px; border-radius:10px; border-color:#e4d5de; font-family:inherit; }
.pbc-date-filter button { min-height:42px; border-radius:10px; font-family:inherit; font-size:13px; }
.pbc-agenda-title h3 { font-size:22px; margin:0 0 18px; }
.pbc-agenda-title h3 span { display:inline-block; margin-left:10px; font-size:14px; color:var(--pbc-muted); font-weight:400; }
.pbc-agenda-stats { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.pbc-agenda-stats>div { padding:20px; border:1px solid #ecdee5; border-radius:16px; background:linear-gradient(135deg,#fcf8fa,#fff); }
.pbc-agenda-stats span { display:block; font-size:12px; color:var(--pbc-muted); }
.pbc-agenda-stats strong { display:block; font-size:28px; font-weight:600; margin-top:10px; color:var(--pbc-ink); }
.pbc-live-note { display:flex; align-items:center; gap:7px; color:var(--pbc-muted); font-size:11px; margin:14px 0 28px; }
.pbc-live-note>span { width:6px; height:6px; background:#55866d; border-radius:50%; flex-shrink:0; }
.pbc-agenda-day { margin:24px 0; }
.pbc-agenda-day h4 { display:flex; align-items:center; justify-content:space-between; gap:12px; font-size:15px; font-weight:600; margin:0 0 12px; color:#57444f; text-transform:none; }
.pbc-agenda-day h4>span { font-size:11px; color:var(--pbc-muted); font-weight:400; }
.pbc-appointment-list { list-style:none; padding:0; margin:0; border:1px solid #ecdee5; border-radius:16px; overflow:hidden; }
.pbc-appointment { display:grid; grid-template-columns:170px minmax(0,1fr) auto; align-items:center; gap:22px; padding:22px 24px; background:#fff; margin:0; }
.pbc-appointment+.pbc-appointment { border-top:1px solid #f0e6eb; }
.pbc-appointment-time { border-left:3px solid #b77b96; padding-left:13px; }
.pbc-appointment-time strong { display:block; font-size:15px; font-weight:600; line-height:1.5; }
.pbc-appointment-time span { display:block; font-size:11px; color:var(--pbc-muted); margin-top:4px; }
.pbc-appointment-info h5 { font-size:15px; font-weight:600; margin:0 0 4px; color:var(--pbc-ink); }
.pbc-appointment-info p { margin:0; font-size:13px; color:var(--pbc-muted); }
.pbc-status { display:inline-block; padding:6px 11px; border-radius:20px; font-size:11px; font-weight:600; white-space:nowrap; }
.pbc-status-pending { color:#81445e; background:#f5e8ef; }
.pbc-status-progress { color:#345c78; background:#e9f2f8; }
.pbc-status-done { color:#38644f; background:#eaf4ee; }
.pbc-status-waiting { color:#866021; background:#fbf2df; }
.pbc-agenda-empty { text-align:center; padding:45px 24px; border:1px dashed #ddc8d2; border-radius:16px; background:#fdfafb; }
.pbc-agenda-empty>div { display:inline-flex; align-items:center; justify-content:center; width:42px; height:42px; border-radius:50%; background:#f4e8ee; color:#9d5574; font-size:22px; }
.pbc-agenda-empty h3 { font-size:19px; margin:16px 0 8px; }
.pbc-agenda-empty p,.pbc-agenda-footnote { font-size:12px; color:var(--pbc-muted); line-height:1.6; }
.pbc-agenda-warning { background:#fff8e9; border:1px solid #ecd9aa; border-radius:14px; padding:24px; color:#6e5427; }
.pbc-agenda-warning p { font-size:14px; margin-bottom:0; }
.pbc-working-editor { margin-top:32px; border:1px solid #ecdee5; }
.pbc-working-editor>summary { padding:5px; font-size:15px; }
@media(max-width:650px) {
 .pbc-portal { padding:20px 16px; margin:16px auto; border-radius:18px; }
 .pbc-agenda-heading { align-items:flex-start; flex-direction:column; gap:16px; }
 .pbc-periods { gap:4px; }
 .pbc-agenda a.pbc-period { flex:1 1 40%; padding:10px 8px; }
 .pbc-portal form.pbc-date-filter { flex-wrap:nowrap; align-items:flex-end; }
 .pbc-portal .pbc-date-filter label { width:auto; flex:1; }
 .pbc-agenda-stats { gap:7px; }
 .pbc-agenda-stats>div { padding:13px 10px; border-radius:12px; }
 .pbc-agenda-stats span { font-size:10px; min-height:30px; }
 .pbc-agenda-stats strong { font-size:20px; }
 .pbc-agenda-title h3 span { display:block; margin:7px 0 0; }
 .pbc-appointment { grid-template-columns:minmax(0,1fr) auto; padding:18px 16px; gap:14px; }
 .pbc-appointment-time { grid-column:1; }
 .pbc-appointment-info { grid-column:1; grid-row:2; padding-left:16px; }
 .pbc-appointment>.pbc-status { grid-column:2; grid-row:1; }
 .pbc-live-note { line-height:1.5; }
}
