/* ════════════════════════════════════════════════════════════════════
   RCCalendar — shared styles for the client + trainer calendars.
   Everything re-tints from --accent; PT/appointment use fixed semantic
   hues so the three markers stay distinguishable under any accent.
   ════════════════════════════════════════════════════════════════════ */
:root {
  --cal-pt:   #3CCDCD;                 /* completed PT session */
  --cal-appt: #E6B34A;                 /* booked appointment  */
  --cal-pt-soft:   rgba(60, 205, 205, 0.16);
  --cal-appt-soft: rgba(230, 179, 74, 0.16);
}

.rc-cal { display:block; }
.rc-cal.is-loading { opacity:0.55; pointer-events:none; }

/* Collapsed state — a tappable summary bar that expands into the full calendar */
.rc-cal-collapsed { display:flex; align-items:center; gap:12px; width:100%; text-align:left;
  background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius-md);
  padding:14px 16px; cursor:pointer; font-family:inherit; transition:border-color 0.12s; }
.rc-cal-collapsed:hover { border-color:var(--accent); }
.rc-cal-collapsed-icon { font-size:1.15rem; line-height:1; }
.rc-cal-collapsed-main { flex:1; min-width:0; }
.rc-cal-collapsed-t { display:block; font-weight:700; font-size:0.9rem; color:var(--text); }
.rc-cal-collapsed-s { display:block; font-size:0.75rem; color:var(--text-dim); margin-top:2px; }
.rc-cal-collapsed-chev { color:var(--text-dim); font-size:0.85rem; }
.rc-cal-collapse { background:none; border:0; color:var(--text-dim); font-weight:700; font-size:0.74rem;
  cursor:pointer; font-family:inherit; padding:0 0 10px; }
.rc-cal-collapse:hover { color:var(--accent); }

/* header: month label + prev/next, view toggle, add */
.rc-cal-head { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:10px; margin-bottom:12px; }
.rc-cal-month { display:flex; align-items:center; gap:10px; }
.rc-cal-label { font-size:1.05rem; font-weight:700; letter-spacing:-0.01em; font-variant-numeric:tabular-nums; }
.rc-cal-navb { width:30px; height:30px; border-radius:var(--radius-sm); border:1px solid var(--border);
  background:var(--surface-3); color:var(--text-muted); cursor:pointer; font-size:1rem; line-height:1; }
.rc-cal-navb:hover { color:var(--text); border-color:var(--border-strong); }
.rc-cal-right { display:flex; align-items:center; gap:8px; }
.rc-cal-seg { display:inline-flex; background:var(--surface-3); border:1px solid var(--border); border-radius:var(--radius-pill); padding:3px; }
.rc-cal-seg button { border:0; background:none; color:var(--text-muted); font-size:0.78rem; font-weight:700;
  padding:5px 13px; border-radius:var(--radius-pill); cursor:pointer; font-family:inherit; }
.rc-cal-seg button.on { background:var(--accent); color:var(--accent-contrast); }
.rc-cal-addbtn { border:1px solid var(--accent); background:var(--accent-soft); color:var(--accent);
  border-radius:var(--radius-sm); padding:7px 12px; font-size:0.78rem; font-weight:700; cursor:pointer;
  font-family:inherit; white-space:nowrap; }
.rc-cal-addbtn:hover { background:var(--accent); color:var(--accent-contrast); }
/* Export button — quiet secondary style */
.rc-cal-export { border:1px solid var(--border); background:var(--surface-2); color:var(--text-muted); }
.rc-cal-export:hover { border-color:var(--accent); background:var(--surface-2); color:var(--text); }
/* Per-event "add to calendar" icon button in the day detail */
.rc-cal-ical { flex:none; background:none; border:0; color:var(--text-dim); cursor:pointer; padding:2px 4px; margin-top:2px; display:grid; place-items:center; }
.rc-cal-ical:hover { color:var(--accent); }

/* Appointment sub-type colors (home workout = accent, rest day = slate) */
.rc-cal-tag.a.at-home_workout { background:var(--accent-soft); color:var(--accent); }
.rc-cal-dot.a.at-home_workout { background:var(--accent); }
.rc-cal-tag.a.at-rest_day { background:color-mix(in srgb, #8B93A7 20%, transparent); color:#9AA4BA; }
.rc-cal-dot.a.at-rest_day { background:#8B93A7; }

/* Add-appointment row — sits directly under the month + Week/Month toggle */
.rc-cal-addrow { margin:0 0 12px; }
.rc-cal-addrow .rc-cal-addbtn { width:100%; text-align:center; }

/* Footer — legend on the left, Export on the right, below the grid */
.rc-cal-foot { display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; margin-top:12px; }

/* legend */
.rc-cal-legend { display:flex; gap:14px; flex-wrap:wrap; margin-bottom:0; font-size:0.74rem; color:var(--text-muted); }
.rc-cal-legend i { display:inline-block; width:9px; height:9px; border-radius:3px; margin-right:5px; vertical-align:middle; }
.rc-cal-legend i.w { background:var(--accent); }
.rc-cal-legend i.p { background:var(--cal-pt); }
.rc-cal-legend i.a { background:var(--cal-appt); }
.rc-cal-legend i.r { background:#8B93A7; }

/* day-of-week header + grid */
.rc-cal-dow { display:grid; grid-template-columns:repeat(7,1fr); gap:6px; margin-bottom:6px; }
.rc-cal-dow span { text-align:center; font-size:0.66rem; font-weight:700; letter-spacing:0.06em; color:var(--text-dim); }
.rc-cal-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:6px; }

.rc-cal-cell { display:flex; flex-direction:column; align-items:stretch; text-align:left;
  min-height:60px; border-radius:var(--radius-sm); border:1px solid var(--border); background:var(--surface-2);
  padding:5px 5px 4px; cursor:pointer; position:relative; font-family:inherit; transition:border-color 0.12s; overflow:hidden; }
.rc-cal-grid.week .rc-cal-cell { min-height:96px; }
.rc-cal-cell:hover { border-color:var(--border-strong); }
.rc-cal-cell.other-month { opacity:0.4; }
.rc-cal-cell.sel { border-color:var(--accent); box-shadow:inset 0 0 0 1px var(--accent); }
.rc-cal-dn { font-size:0.72rem; font-weight:700; color:var(--text-muted); font-variant-numeric:tabular-nums; }
.rc-cal-cell.today .rc-cal-dn { background:var(--accent); color:var(--accent-contrast); border-radius:6px; padding:0 5px; align-self:flex-start; }
.rc-cal-tag { margin-top:3px; font-size:0.6rem; font-weight:700; padding:2px 4px; border-radius:5px; line-height:1.15;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.rc-cal-tag.w { background:var(--accent-soft); color:var(--accent); }
.rc-cal-tag.p { background:var(--cal-pt-soft); color:var(--cal-pt); }
.rc-cal-tag.a { background:var(--cal-appt-soft); color:var(--cal-appt); }
.rc-cal-tag.r { background:color-mix(in srgb, #8B93A7 20%, transparent); color:#9AA4BA; }
.rc-cal-more { font-size:0.58rem; font-weight:700; color:var(--text-dim); margin-top:2px; }

/* daily detail list */
.rc-cal-detail { margin-top:14px; background:var(--bg); border:1px solid var(--border); border-radius:var(--radius-md); padding:12px 14px; }
.rc-cal-detail-h { margin:0 0 8px; font-size:0.85rem; font-weight:700; }
.rc-cal-empty { color:var(--text-dim); font-size:0.8rem; padding:4px 0; }
.rc-cal-ditem { display:flex; align-items:flex-start; gap:9px; padding:8px 0; border-top:1px solid var(--border); font-size:0.85rem; }
.rc-cal-ditem:first-of-type { border-top:0; }
.rc-cal-ditem[data-appt] { cursor:pointer; }
.rc-cal-ditem[data-appt]:hover .rc-cal-edit { color:var(--accent); }
.rc-cal-ditem.cancelled .rc-cal-ditem-t { text-decoration:line-through; color:var(--text-dim); }
.rc-cal-dot { width:8px; height:8px; border-radius:50%; flex:none; margin-top:5px; }
.rc-cal-dot.w { background:var(--accent); }
.rc-cal-dot.p { background:var(--cal-pt); }
.rc-cal-dot.a { background:var(--cal-appt); }
.rc-cal-dot.r { background:#8B93A7; }
.rc-cal-ditem-main { flex:1; min-width:0; }
.rc-cal-ditem-t { font-weight:600; }
.rc-cal-ditem-s { color:var(--text-dim); font-size:0.75rem; margin-top:1px; }
.rc-cal-ditem-n { color:var(--text-muted); font-size:0.78rem; margin-top:3px; }
.rc-cal-edit { color:var(--text-dim); font-size:0.74rem; font-weight:700; white-space:nowrap; align-self:center; }
.rc-cal-addday { margin-top:10px; width:100%; border:1px dashed var(--border-strong); background:none; color:var(--text-muted);
  border-radius:var(--radius-sm); padding:9px; font-size:0.8rem; font-weight:600; cursor:pointer; font-family:inherit; }
.rc-cal-addday:hover { color:var(--accent); border-color:var(--accent); }

/* appointment editor modal (trainer) */
.rc-appt-form { display:flex; flex-direction:column; gap:12px; }
.rc-appt-form label { font-size:0.78rem; font-weight:700; color:var(--text-muted); display:block; margin-bottom:6px; }
.rc-appt-row { display:flex; gap:10px; }
.rc-appt-row > div { flex:1; }
.rc-appt-save { width:100%; margin-top:4px; }
.rc-appt-actions { display:flex; justify-content:space-between; align-items:center; gap:10px; margin-top:2px; }
.rc-appt-actions .btn-outline { flex:1; }
.rc-appt-del { background:none; border:0; color:var(--danger,#e5484d); font-weight:700; font-size:0.8rem; cursor:pointer; padding:6px 12px; white-space:nowrap; }

/* Mobile: calendar month arrows + view toggle reach a comfortable tap size */
@media (max-width:600px) {
  .rc-cal-navb { width:40px; height:40px; }
  .rc-cal-seg button { padding:8px 14px; }
}
