body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; margin:0; background:#f5f7fb; color:#1f2937; }
header { background:#111827; color:white; padding:16px 24px; }
.header-inner { max-width:1100px; margin:0 auto; display:flex; justify-content:space-between; align-items:center; gap:16px; }
nav a { color:white; margin-right:16px; text-decoration:none; }
.wrap { max-width:1100px; margin:32px auto; padding:0 16px; }
.card { background:white; border-radius:16px; padding:24px; box-shadow:0 8px 24px rgba(0,0,0,.08); margin-bottom:20px; }
.card.subtle { background:#f9fafb; box-shadow:none; padding:16px; }
.button, button, input[type=submit] { background:#111827; color:white; border:none; border-radius:10px; padding:10px 16px; cursor:pointer; text-decoration:none; display:inline-block; }
.button.secondary, button.secondary { background:#e5e7eb; color:#111827; }
.button.danger, button.danger { background:#b91c1c; }
.button-row { display:flex; gap:12px; flex-wrap:wrap; }
input, textarea, select { width:100%; box-sizing:border-box; padding:10px 12px; border:1px solid #d1d5db; border-radius:10px; margin-top:6px; background:white; }
label { display:block; margin:14px 0; font-weight:600; }
.messages { list-style:none; padding:0; }
.messages li { padding:12px 14px; border-radius:12px; margin-bottom:10px; }
.messages .success { background:#dcfce7; }
.messages .error { background:#fee2e2; }
.grid { display:grid; gap:16px; }
.grid.two { grid-template-columns:repeat(auto-fit, minmax(260px,1fr)); }
table { width:100%; border-collapse:collapse; }
th, td { border-bottom:1px solid #e5e7eb; padding:10px 8px; text-align:left; vertical-align:top; }
.badge { display:inline-block; padding:4px 8px; border-radius:999px; font-size:12px; background:#eef2ff; }
.badge.pending { background:#fff7ed; }
.badge.approved { background:#dcfce7; }
.badge.rejected { background:#fee2e2; }
.badge.cancelled { background:#f3f4f6; }
.muted { color:#6b7280; }
.danger-box { border:1px solid #fca5a5; background:#fef2f2; padding:14px; border-radius:12px; }
.field-errors { margin:6px 0 0; padding-left:18px; color:#b91c1c; font-size:14px; }
.helptext { color:#6b7280; font-size:14px; margin-top:6px; }
.selection-summary { padding:12px 14px; background:#f9fafb; border-radius:12px; margin-bottom:12px; }
.inline-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(220px,1fr)); gap:16px; }
.slot-chip-wrap { display:flex; flex-wrap:wrap; gap:10px; }
.slot-chip { width:auto; margin:0; padding:10px 14px; border:1px solid #d1d5db; border-radius:999px; background:white; color:#111827; font-weight:600; }
.slot-chip:hover { background:#f3f4f6; }
.slot-chip.pending { background:#dbeafe; border-color:#93c5fd; color:#1d4ed8; }
.slot-chip.selected { background:#dcfce7; border-color:#86efac; color:#166534; }
.availability-empty { padding:14px; border:1px dashed #d1d5db; border-radius:12px; color:#6b7280; background:white; }
.dashboard-actions, .teacher-actions, .inline-form { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.inline-form input[type=file] { max-width:280px; }
.rejection-form textarea { min-width:220px; min-height:72px; }
.status-text { font-size:14px; }
.mini-links { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-bottom:12px; }
.empty-note { color:#6b7280; padding:8px 0; }
