:root {
    --accent-color: #4e73df;
    --bg-body: #f4f6f9;
    --bg-card: #fff;
    --bg-input: #f1f3f7;
    --bg-topbar: rgba(255,255,255,.9);
    --text-main: #2d3748;
    --text-muted: #718096;
    --border-color: rgba(0,0,0,.09);
    --hover-bg: rgba(0,0,0,.035);
}
[data-bs-theme="dark"] {
    --bg-body: #1b1e2e;
    --bg-card: #252945;
    --bg-input: #2e3354;
    --bg-topbar: rgba(27,30,46,.9);
    --text-main: #d1d5db;
    --text-muted: #8b93a7;
    --border-color: rgba(255,255,255,.08);
    --hover-bg: rgba(255,255,255,.045);
}
body { min-height:100vh; background:var(--bg-body)!important; color:var(--text-main)!important; font-family:var(--font-main); transition:background .25s,color .25s; }
h1,h2,h3,h4,h5,h6 { color:var(--text-main); }
.text-muted { color:var(--text-muted)!important; }
.portal-topbar { height:72px; background:var(--bg-topbar); border-bottom:1px solid var(--border-color); backdrop-filter:blur(14px); z-index:1030; }
.portal-brand { display:flex; align-items:center; gap:.7rem; color:var(--text-main); text-decoration:none; line-height:1.05; }
.portal-brand small { display:block; color:var(--text-muted); font-size:.68rem; margin-top:.25rem; text-transform:uppercase; letter-spacing:.08em; }
.brand-icon,.btn-icon { display:grid; place-items:center; width:2.5rem; height:2.5rem; border-radius:.7rem; }
.brand-icon { background:var(--accent-color); color:#fff; }
.btn-icon { background:var(--bg-input); color:var(--text-main); border:1px solid var(--border-color); }
.portal-card,.card { background:var(--bg-card)!important; border:1px solid var(--border-color)!important; border-radius:1rem; box-shadow:0 4px 20px rgba(0,0,0,.035); }
.btn-primary { background:var(--accent-color)!important; border-color:var(--accent-color)!important; }
.form-control,.form-select { background:var(--bg-input)!important; border:1px solid var(--border-color)!important; color:var(--text-main)!important; border-radius:.65rem; }
.auth-shell { max-width:520px; margin:2rem auto; }
.reservation-summary { display:grid; grid-template-columns:1fr 1fr; gap:.65rem; }
.reservation-summary>div { padding:.85rem; border-radius:.7rem; background:var(--hover-bg); }
.reservation-summary small,.reservation-summary strong { display:block; }
.reservation-summary small { color:var(--text-muted); font-size:.7rem; text-transform:uppercase; letter-spacing:.05em; }

.calendar-toolbar { display:flex; align-items:center; flex-wrap:wrap; gap:.75rem; margin-bottom:1rem; }
.calendar-title { min-width:190px; font-size:1.35rem; font-weight:600; text-transform:capitalize; }
.calendar-layout { display:grid; grid-template-columns:minmax(0,1fr) 350px; gap:1rem; align-items:start; }
.month-calendar { overflow:hidden; }
.weekday-row,.month-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); }
.weekday { padding:.7rem .5rem; color:var(--text-muted); font-size:.7rem; font-weight:700; text-align:center; text-transform:uppercase; border-bottom:1px solid var(--border-color); }
.calendar-day { position:relative; min-height:125px; padding:.5rem; color:var(--text-main); text-decoration:none; border-right:1px solid var(--border-color); border-bottom:1px solid var(--border-color); overflow:hidden; }
.calendar-day:nth-child(7n) { border-right:0; }
.calendar-day:hover { background:var(--hover-bg); color:var(--text-main); }
.calendar-day.outside { background:var(--hover-bg); color:var(--text-muted); opacity:.72; }
.calendar-day.past { opacity:.55; }
.day-number { display:grid; place-items:center; width:1.8rem; height:1.8rem; margin-left:auto; border-radius:50%; font-size:.8rem; }
.calendar-day.today .day-number { color:var(--accent-color); font-weight:800; border:1px solid var(--accent-color); }
.calendar-day.selected .day-number { background:var(--accent-color); color:#fff; border-color:var(--accent-color); }
.day-events { display:grid; gap:.25rem; margin-top:.35rem; }
.calendar-chip { padding:.24rem .38rem; border-radius:.3rem; font-size:.67rem; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.calendar-chip.free { color:#166534; background:#dcfce7; }
.calendar-chip.mine { color:#1e40af; background:#dbeafe; }
.calendar-chip.busy { color:var(--text-muted); background:var(--hover-bg); }
.calendar-chip.pending { color:#92400e; background:#fef3c7; }
[data-bs-theme="dark"] .calendar-chip.free { color:#bbf7d0; background:rgba(34,197,94,.15); }
[data-bs-theme="dark"] .calendar-chip.mine { color:#bfdbfe; background:rgba(59,130,246,.18); }
[data-bs-theme="dark"] .calendar-chip.pending { color:#fde68a; background:rgba(245,158,11,.16); }
.day-sidebar { position:sticky; top:88px; max-height:calc(100vh - 105px); overflow:auto; }
.day-sidebar-header { padding:1.1rem 1.15rem; border-bottom:1px solid var(--border-color); }
.day-sidebar-header .selected-date { display:flex; align-items:center; gap:.8rem; }
.selected-day-number { display:grid; place-items:center; width:2.8rem; height:2.8rem; border-radius:50%; background:var(--accent-color); color:#fff; font-size:1.15rem; font-weight:700; }
.day-sidebar-body { padding:.75rem; }
.hour-group { padding:.65rem 0; border-bottom:1px solid var(--border-color); }
.hour-group:last-child { border-bottom:0; }
.hour-label { font-size:.78rem; font-weight:700; margin-bottom:.45rem; }
.maca-options { display:grid; gap:.35rem; }
.maca-option { display:flex; align-items:center; justify-content:space-between; gap:.5rem; padding:.58rem .65rem; border-radius:.55rem; font-size:.78rem; text-decoration:none; }
.maca-option.free { color:#166534; background:#ecfdf5; border:1px solid #bbf7d0; }
.maca-option.mine { color:#1e40af; background:#eff6ff; border:1px solid #bfdbfe; }
.maca-option.busy { color:var(--text-muted); background:var(--hover-bg); }
[data-bs-theme="dark"] .maca-option.free { color:#bbf7d0; background:rgba(34,197,94,.12); border-color:rgba(34,197,94,.3); }
[data-bs-theme="dark"] .maca-option.mine { color:#bfdbfe; background:rgba(59,130,246,.14); border-color:rgba(59,130,246,.3); }
.empty-day { padding:2.5rem 1rem; text-align:center; color:var(--text-muted); }
.range-booking-form { padding:.85rem; border-radius:.75rem; background:var(--hover-bg); border:1px solid var(--border-color); }
.range-booking-form .form-label { margin-bottom:.3rem; font-size:.72rem; font-weight:700; color:var(--text-muted); }
.day-reservations { padding-top:.8rem; border-top:1px solid var(--border-color); }
.day-reservation { display:flex; align-items:center; justify-content:space-between; gap:.75rem; padding:.65rem .7rem; margin-bottom:.4rem; border-radius:.55rem; background:var(--hover-bg); color:var(--text-main); text-decoration:none; }
.day-reservation.mine { background:rgba(59,130,246,.12); color:#2563eb; }
.day-reservation.pending { border:1px solid rgba(245,158,11,.28); }
[data-bs-theme="dark"] .day-reservation.mine { color:#bfdbfe; }
.day-reservation strong,.day-reservation small { display:block; }
.day-reservation small { color:var(--text-muted); font-size:.68rem; }
.day-reservation>span { white-space:nowrap; font-size:.75rem; font-weight:700; }

@media(max-width:991px){.calendar-layout{grid-template-columns:1fr}.day-sidebar{position:static;max-height:none}.calendar-day{min-height:105px}}
@media(max-width:650px){.calendar-day{min-height:72px;padding:.3rem}.weekday{font-size:.6rem;padding:.55rem .1rem}.calendar-chip{width:7px;height:7px;padding:0;border-radius:50%;font-size:0}.day-number{width:1.55rem;height:1.55rem;font-size:.72rem}.calendar-title{min-width:150px;font-size:1.1rem}.reservation-summary{grid-template-columns:1fr}}
