:root {
	--sap-blue: #3478d4;
	--sap-blue-dark: #225aa7;
	--sap-blue-soft: #eaf3ff;
	--sap-green: #2fbf71;
	--sap-amber: #f2a51f;
	--sap-purple: #8b5cf6;
	--sap-red: #dc4c4c;
	--sap-cyan: #22b8cf;
	--sap-ink: #182233;
	--sap-muted: #667085;
	--sap-line: #e4eaf2;
	--sap-bg: #f4f7fb;
	--sap-card: #ffffff;
	--sap-radius: 8px;
	--sap-shadow: 0 16px 36px rgba(31, 45, 68, .10);
	font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; background: var(--sap-bg); color: var(--sap-ink); }
html { overflow-x: hidden; overflow-y: auto; }
body.sap-standalone-portal { letter-spacing: 0; overflow-x: hidden; overflow-y: auto; }
button, input, select, textarea { font: inherit; }
a { color: var(--sap-blue-dark); text-decoration: none; }
img { max-width: 100%; display: block; }
.sap-root-shell { min-height: 100vh; }
.sap-button { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 42px; border: 0; border-radius: var(--sap-radius); padding: 10px 14px; font-weight: 800; cursor: pointer; transition: .18s ease; white-space: nowrap; }
.sap-button:hover { transform: translateY(-1px); }
.sap-button-primary { background: var(--sap-blue); color: #fff; box-shadow: 0 10px 22px rgba(52, 120, 212, .22); }
.sap-button-light { background: var(--sap-blue-soft); color: var(--sap-blue-dark); }
.sap-button-sm { min-height: 34px; padding: 7px 10px; font-size: 13px; }
.sap-button-disabled, .sap-button:disabled { background: #d0d5dd; color: #667085; cursor: not-allowed; box-shadow: none; transform: none; }
.sap-wide { width: 100%; }
.sap-icon-button { display: inline-grid; place-items: center; width: 42px; height: 42px; border: 1px solid var(--sap-line); border-radius: var(--sap-radius); background: #fff; color: var(--sap-blue-dark); cursor: pointer; font-weight: 900; }
.sap-form, .sap-attendance-form { display: grid; gap: 15px; }
.sap-form label, .sap-attendance-form label { display: grid; gap: 7px; font-weight: 800; color: var(--sap-ink); }
.sap-form input, .sap-form select, .sap-form textarea, .sap-attendance-form input, .sap-attendance-form select, .sap-filter-bar input, .sap-filter-bar select, .sap-global-search input, .sap-public-section input, .sap-feedback-form input, .sap-feedback-form textarea {
	width: 100%; min-height: 44px; border: 1px solid #d7deea; border-radius: var(--sap-radius); padding: 10px 12px; color: var(--sap-ink); background: #fff;
}
.sap-form textarea { resize: vertical; }
.sap-form input:focus, .sap-form select:focus, .sap-form textarea:focus, .sap-filter-bar input:focus, .sap-filter-bar select:focus { outline: 0; border-color: var(--sap-blue); box-shadow: 0 0 0 3px rgba(52, 120, 212, .14); }
.sap-check { display: flex !important; grid-template-columns: none !important; align-items: center; gap: 10px !important; }
.sap-check input { width: 18px !important; min-height: 18px !important; }
.sap-flash-stack { position: fixed; top: 16px; left: 50%; z-index: 1000; display: grid; gap: 8px; width: min(560px, calc(100% - 28px)); transform: translateX(-50%); pointer-events: none; }
.sap-flash { padding: 12px 14px; background: #fff; border-left: 4px solid var(--sap-blue); border-radius: var(--sap-radius); box-shadow: var(--sap-shadow); }
.sap-flash-error { border-color: var(--sap-red); }
.sap-flash-success { border-color: var(--sap-green); }
.sap-flash-warning { border-color: var(--sap-amber); }
.sap-empty-state { padding: 18px; border: 1px dashed #cfd8e5; border-radius: var(--sap-radius); background: #fbfdff; color: var(--sap-muted); }
.sap-empty-state strong { display: block; color: var(--sap-ink); margin-bottom: 6px; }
.sap-list-row { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 13px 0; border-top: 1px solid var(--sap-line); }
.sap-list-row:first-child { border-top: 0; }
.sap-list-row small, .sap-list-row span { color: var(--sap-muted); }
.sap-badge { display: inline-flex; align-items: center; min-height: 24px; padding: 4px 8px; border-radius: 999px; background: #eef2f7; color: #344054; font-size: 12px; font-weight: 900; }
.sap-badge-success, .sap-badge-active, .sap-badge-published { background: #e8f8ef; color: #087443; }
.sap-badge-danger, .sap-badge-deleted { background: #fdecec; color: #b42318; }
.sap-badge-suspended, .sap-badge-warning, .sap-badge-pending { background: #fff4df; color: #b54708; }
.sap-badge-info { background: var(--sap-blue-soft); color: var(--sap-blue-dark); }
.sap-stars { color: #f59e0b; font-weight: 900; letter-spacing: 0; }
.sap-avatar { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; flex: 0 0 auto; background: var(--sap-blue); color: #fff; display: inline-grid; place-items: center; font-weight: 900; }
.sap-avatar-sm { width: 38px; height: 38px; font-size: 13px; }
.sap-avatar-lg { width: 64px; height: 64px; }
.sap-avatar-xl { width: 92px; height: 92px; font-size: 24px; }
.sap-user-row { display: flex; align-items: center; gap: 10px; min-width: 0; }
.sap-user-row div { min-width: 0; }
.sap-user-row strong, .sap-user-row small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sap-grade-pill { display: inline-grid; place-items: center; min-width: 54px; height: 38px; border-radius: var(--sap-radius); background: #e8f8ef; color: #087443; font-weight: 900; }
