
/* Portal page shell */
#wpadminbar { display: none !important; }
html { margin-top: 0 !important; }
.bsmp-portal-login-logo,
.bsmp-portal-brand-logo,
.bsmp-portal-sidebar .bsmp-portal-brand-logo {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  box-sizing: border-box !important;
}
.bsmp-portal-login-logo img,
.bsmp-portal-brand-logo img,
.bsmp-portal-sidebar .bsmp-portal-brand-logo img {
  flex: 0 0 auto !important;
}

/* Bengal School Management Pro - Frontend Portal */
.bsmp-portal, .bsmp-portal * { box-sizing: border-box; }
.bsmp-portal { --bsmp-blue:#0f5e9c; --bsmp-blue2:#2563eb; --bsmp-maroon:#7c2d12; --bsmp-bg:#f8fafc; --bsmp-card:#fff; --bsmp-text:#111827; --bsmp-muted:#6b7280; --bsmp-border:#e5e7eb; font-family: Roboto, Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; color:var(--bsmp-text); }
.bsmp-portal a { text-decoration: none; }
.bsmp-portal-login-wrap { min-height: 720px; display:flex; align-items:center; justify-content:center; padding:34px 16px; background:linear-gradient(135deg,#e0f2fe,#f8fafc 54%,#fffbeb); }
.bsmp-portal-login-card { width:min(100%, 470px); background:#fff; border:1px solid var(--bsmp-border); border-radius:26px; padding:28px; box-shadow:0 24px 70px rgba(15,23,42,.13); }
.bsmp-portal-login-brand { display:flex; align-items:center; gap:14px; margin-bottom:22px; }
.bsmp-portal-login-logo, .bsmp-portal-brand-logo { width:62px; height:62px; border-radius:18px; display:flex; align-items:center; justify-content:center; background:#eff6ff; border:1px solid #bfdbfe; overflow:hidden; color:var(--bsmp-blue); font-weight:800; }
.bsmp-portal-login-logo img, .bsmp-portal-brand-logo img { width:100%; height:100%; object-fit:contain; padding:4px; }
.bsmp-portal-login-brand h2 { margin:0; font-size:22px; line-height:1.15; }
.bsmp-portal-login-brand p { margin:4px 0 0; color:var(--bsmp-muted); font-size:14px; }
.bsmp-portal-alert { border-radius:14px; padding:12px 14px; margin:0 0 16px; font-size:14px; }
.bsmp-portal-alert-danger { background:#fef2f2; color:#991b1b; border:1px solid #fecaca; }
.bsmp-portal-form { display:grid; gap:16px; }
.bsmp-portal-field { display:grid; gap:8px; }
.bsmp-portal-field span { font-weight:800; color:var(--bsmp-maroon); font-size:14px; letter-spacing:.02em; }
.bsmp-portal-field input, .bsmp-portal-field select { width:100%; min-height:46px; padding:12px 14px; border:1px solid var(--bsmp-border); border-radius:14px; font-size:15px; background:#fff; outline:none; }
.bsmp-portal-field input:focus, .bsmp-portal-field select:focus { border-color:#60a5fa; box-shadow:0 0 0 3px rgba(37,99,235,.12); }
.bsmp-portal-btn { display:inline-flex; align-items:center; justify-content:center; border:0; border-radius:14px; min-height:44px; padding:11px 18px; font-weight:800; cursor:pointer; }
.bsmp-portal-btn-primary { background:linear-gradient(135deg,#0f5e9c,#2563eb); color:#fff !important; box-shadow:0 12px 28px rgba(37,99,235,.24); }
.bsmp-portal-app { display:grid; grid-template-columns: 280px minmax(0,1fr); width:100%; min-height:760px; background:var(--bsmp-bg); border-radius:26px; overflow:hidden; box-shadow:0 18px 65px rgba(15,23,42,.12); border:1px solid #dbeafe; }
.bsmp-portal-sidebar { background:linear-gradient(180deg,#0f5e9c,#0b3f73); padding:20px 16px; color:#fff; display:flex; flex-direction:column; gap:18px; }
.bsmp-portal-brand { display:flex; align-items:center; gap:12px; padding-bottom:14px; border-bottom:1px solid rgba(255,255,255,.18); }
.bsmp-portal-brand-logo { flex:0 0 56px; width:56px; height:56px; border-radius:18px; background:#fff; }
.bsmp-portal-brand strong { display:block; font-size:15px; line-height:1.2; }
.bsmp-portal-brand small { display:block; opacity:.8; margin-top:3px; }
.bsmp-portal-nav { display:grid; gap:8px; }
.bsmp-portal-nav a { color:#e0f2fe; border-radius:14px; padding:11px 12px; display:flex; gap:10px; align-items:center; font-weight:700; }
.bsmp-portal-nav a:hover, .bsmp-portal-nav a.active { background:rgba(255,255,255,.15); color:#fff; }
.bsmp-portal-nav-icon { width:24px; height:24px; display:inline-flex; align-items:center; justify-content:center; }
.bsmp-portal-logout { margin-top:auto; background:#fff; color:#0f5e9c !important; border-radius:14px; padding:11px 14px; text-align:center; font-weight:800; }
.bsmp-portal-main { min-width:0; display:flex; flex-direction:column; }
.bsmp-portal-header { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:22px 24px; background:#fff; border-bottom:1px solid var(--bsmp-border); }
.bsmp-portal-header p { margin:0 0 4px; color:var(--bsmp-muted); }
.bsmp-portal-header h2 { margin:0; font-size:24px; line-height:1.2; }
.bsmp-portal-student-chip { display:flex; align-items:center; gap:10px; padding:9px 12px; border:1px solid var(--bsmp-border); border-radius:18px; background:#f8fafc; }
.bsmp-portal-avatar { width:46px; height:46px; border-radius:50%; overflow:hidden; background:#dbeafe; display:flex; align-items:center; justify-content:center; color:#0f5e9c; font-weight:900; }
.bsmp-portal-avatar img { width:100%; height:100%; object-fit:cover; }
.bsmp-portal-student-chip strong, .bsmp-portal-student-chip small { display:block; }
.bsmp-portal-student-chip small { color:var(--bsmp-muted); margin-top:2px; }
.bsmp-portal-content { padding:24px; display:grid; gap:18px; }
.bsmp-portal-section-title { background:#fff; border:1px solid var(--bsmp-border); border-radius:22px; padding:18px 20px; box-shadow:0 8px 24px rgba(15,23,42,.05); }
.bsmp-portal-section-title h3 { margin:0; color:var(--bsmp-maroon); font-size:22px; letter-spacing:.03em; }
.bsmp-portal-section-title p { margin:5px 0 0; color:var(--bsmp-muted); }
.bsmp-portal-stats { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; }
.bsmp-portal-stats.compact { grid-template-columns:repeat(4,minmax(0,1fr)); }
.bsmp-portal-stat-card { background:#fff; border:1px solid var(--bsmp-border); border-radius:22px; padding:18px; box-shadow:0 8px 24px rgba(15,23,42,.05); position:relative; overflow:hidden; }
.bsmp-portal-stat-card:after { content:""; position:absolute; right:-18px; top:-18px; width:72px; height:72px; border-radius:50%; opacity:.14; background:currentColor; }
.bsmp-portal-stat-card span { display:block; color:var(--bsmp-muted); font-size:13px; font-weight:800; }
.bsmp-portal-stat-card strong { display:block; margin-top:8px; font-size:26px; }
.bsmp-portal-stat-card small { display:block; margin-top:6px; color:var(--bsmp-muted); }
.bsmp-portal-stat-card.blue { color:#2563eb; }
.bsmp-portal-stat-card.green { color:#16a34a; }
.bsmp-portal-stat-card.red { color:#dc2626; }
.bsmp-portal-stat-card.orange { color:#f59e0b; }
.bsmp-portal-grid-two { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.bsmp-portal-card { background:#fff; border:1px solid var(--bsmp-border); border-radius:22px; padding:18px; box-shadow:0 8px 24px rgba(15,23,42,.05); min-width:0; }
.bsmp-portal-card-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:14px; padding-bottom:12px; border-bottom:1px solid #f1f5f9; }
.bsmp-portal-card-head h4 { margin:0; color:var(--bsmp-maroon); font-size:17px; letter-spacing:.02em; }
.bsmp-portal-card-head a { color:#2563eb; font-weight:800; }
.bsmp-portal-info-list { display:grid; gap:9px; }
.bsmp-portal-info-list p { display:flex; justify-content:space-between; gap:12px; margin:0; padding:8px 0; border-bottom:1px dashed #e5e7eb; }
.bsmp-portal-info-list p:last-child { border-bottom:0; }
.bsmp-portal-info-list span, .bsmp-portal-muted { color:var(--bsmp-muted); }
.bsmp-portal-simple-list { display:grid; gap:10px; list-style:none; padding:0; margin:0; }
.bsmp-portal-simple-list li { display:flex; justify-content:space-between; gap:12px; padding:10px 12px; border-radius:14px; background:#f8fafc; }
.bsmp-portal-simple-list span { font-weight:800; }
.bsmp-portal-simple-list strong { font-size:13px; color:var(--bsmp-muted); }
.bsmp-portal-actions-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.bsmp-portal-actions-grid a { color:#0f5e9c; background:#eff6ff; border:1px solid #bfdbfe; border-radius:14px; padding:13px; text-align:center; font-weight:800; }
.bsmp-portal-profile-card { display:flex; align-items:center; gap:18px; background:#fff; border:1px solid var(--bsmp-border); border-radius:24px; padding:20px; box-shadow:0 8px 24px rgba(15,23,42,.05); }
.bsmp-portal-profile-photo { width:90px; height:90px; border-radius:50%; overflow:hidden; background:#eff6ff; display:flex; align-items:center; justify-content:center; color:#0f5e9c; font-size:28px; font-weight:900; border:4px solid #dbeafe; }
.bsmp-portal-profile-photo img { width:100%; height:100%; object-fit:cover; }
.bsmp-portal-profile-info h3 { margin:0; font-size:24px; }
.bsmp-portal-profile-info p { margin:5px 0 0; color:var(--bsmp-muted); }
.bsmp-portal-actions-row { display:flex; flex-wrap:wrap; gap:10px; }
.bsmp-portal-table-wrap { width:100%; overflow-x:auto; }
.bsmp-portal-table, .bsmp-portal-routine-table { width:100%; border-collapse:collapse; min-width:620px; }
.bsmp-portal-table th, .bsmp-portal-table td, .bsmp-portal-routine-table th, .bsmp-portal-routine-table td { border:1px solid #e5e7eb; padding:10px; vertical-align:top; font-size:13px; }
.bsmp-portal-table th, .bsmp-portal-routine-table th { background:#7c2d12; color:#fff; text-align:left; }
.bsmp-portal-routine-table td strong { display:block; color:#111827; }
.bsmp-portal-routine-table td small, .bsmp-portal-routine-table td em { display:block; margin-top:3px; color:#6b7280; font-style:normal; font-size:11px; }
.bsmp-portal-empty { display:inline-flex; width:24px; height:24px; border-radius:50%; align-items:center; justify-content:center; background:#f3f4f6; color:#9ca3af; font-weight:900; }
.bsmp-portal-badge { display:inline-flex; border-radius:999px; padding:5px 9px; font-size:12px; font-weight:900; white-space:nowrap; }
.bsmp-portal-badge-success { background:#dcfce7; color:#166534; }
.bsmp-portal-badge-warning { background:#fef3c7; color:#92400e; }
.bsmp-portal-badge-danger { background:#fee2e2; color:#991b1b; }
.bsmp-portal-mini-btn { display:inline-flex; align-items:center; justify-content:center; margin:2px; padding:8px 11px; border-radius:12px; background:#0f5e9c; color:#fff !important; font-weight:800; font-size:12px; }
.bsmp-portal-mini-btn.alt { background:#7c2d12; }
.bsmp-portal-resource-list { display:grid; gap:12px; }
.bsmp-portal-resource-card { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:14px; border:1px solid #e5e7eb; border-radius:16px; background:#f8fafc; }
.bsmp-portal-resource-card strong, .bsmp-portal-resource-card span { display:block; }
.bsmp-portal-resource-card span { color:#6b7280; margin-top:3px; font-size:13px; }
@media (max-width: 980px) {
  .bsmp-portal-app { grid-template-columns:1fr; border-radius:18px; }
  .bsmp-portal-sidebar { position:relative; padding:14px; }
  .bsmp-portal-nav { grid-template-columns:repeat(4,minmax(0,1fr)); }
  .bsmp-portal-nav a { flex-direction:column; gap:4px; font-size:12px; text-align:center; padding:10px 6px; }
  .bsmp-portal-logout { margin-top:4px; }
  .bsmp-portal-header { padding:16px; align-items:flex-start; }
  .bsmp-portal-content { padding:16px; }
  .bsmp-portal-stats, .bsmp-portal-stats.compact { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .bsmp-portal-grid-two { grid-template-columns:1fr; }
}
@media (max-width: 560px) {
  .bsmp-portal-login-card { padding:20px; border-radius:20px; }
  .bsmp-portal-nav { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .bsmp-portal-header { flex-direction:column; }
  .bsmp-portal-student-chip { width:100%; }
  .bsmp-portal-stats, .bsmp-portal-stats.compact { grid-template-columns:1fr; }
  .bsmp-portal-section-title h3 { font-size:19px; }
  .bsmp-portal-resource-card { flex-direction:column; align-items:flex-start; }
  .bsmp-portal-actions-grid { grid-template-columns:1fr; }
  .bsmp-portal-profile-card { align-items:flex-start; }
  .bsmp-portal-info-list p { flex-direction:column; gap:4px; }
}
.bsmp-portal-alert-success { background:#ecfdf5; color:#166534; border:1px solid #bbf7d0; }
.bsmp-portal-otp-box { display:flex; justify-content:space-between; gap:10px; align-items:center; padding:12px 14px; border-radius:16px; background:#eff6ff; border:1px solid #bfdbfe; color:#0f5e9c; }
.bsmp-portal-otp-box strong { font-size:15px; }
.bsmp-portal-otp-box span { font-size:13px; color:#475569; font-weight:700; }
.bsmp-portal-link-btn { display:inline-flex; justify-content:center; align-items:center; min-height:38px; color:#0f5e9c !important; font-weight:800; }
@media (max-width: 560px) { .bsmp-portal-otp-box { flex-direction:column; align-items:flex-start; } }

/* Portal polish */
.bsmp-portal-login-logo,
.bsmp-portal-brand-logo { padding:3px; background:#fff; }
.bsmp-portal-login-logo img,
.bsmp-portal-brand-logo img { width:100%; height:100%; object-fit:contain !important; object-position:center center; display:block; }
.bsmp-portal-btn-secondary { background:#f1f5f9; color:#0f5e9c !important; border:1px solid #bfdbfe; }
.bsmp-portal-btn[disabled], .bsmp-portal-btn:disabled { opacity:.55; cursor:not-allowed; box-shadow:none; }
.bsmp-portal-resend-form { margin-top:12px; }
.bsmp-portal-otp-timer { font-size:13px; font-weight:900; color:#7c2d12; background:#fff7ed; border:1px solid #fed7aa; border-radius:999px; padding:7px 10px; white-space:nowrap; }
.bsmp-portal-teacher-app .bsmp-portal-sidebar { background:linear-gradient(180deg,#7c2d12,#0f5e9c); }
.bsmp-portal-attendance-cards { display:grid; gap:12px; }
.bsmp-portal-att-card { border:1px solid #e5e7eb; border-radius:18px; padding:14px; background:#f8fafc; display:grid; gap:12px; }
.bsmp-portal-att-card strong, .bsmp-portal-att-card span { display:block; }
.bsmp-portal-att-card span { color:#6b7280; margin-top:3px; font-size:13px; }
.bsmp-portal-status-group { display:flex; flex-wrap:wrap; gap:8px; }
.bsmp-portal-status-group label { display:inline-flex; align-items:center; gap:6px; min-height:38px; border:1px solid #d1d5db; border-radius:999px; padding:7px 12px; font-weight:900; background:#fff; color:#374151; cursor:pointer; }
.bsmp-portal-status-group label.active { background:#dbeafe; border-color:#60a5fa; color:#0f5e9c; }
.bsmp-portal-status-group input { width:auto; }
.bsmp-portal-att-card > input, .bsmp-portal-table input, .bsmp-portal-table select { width:100%; min-height:38px; border:1px solid #d1d5db; border-radius:10px; padding:8px; }
.bsmp-portal-marks-form { display:grid; gap:14px; }
@media (max-width: 560px) {
  .bsmp-portal-otp-timer { width:100%; text-align:center; }
  .bsmp-portal-status-group label { flex:1 1 calc(50% - 8px); justify-content:center; }
  .bsmp-portal-table input, .bsmp-portal-table select { min-width:90px; }
}

/* Final frontend portal polish */
.bsmp-portal-login-logo,
.bsmp-portal-brand-logo,
.bsmp-portal-sidebar .bsmp-portal-brand-logo {
  border-radius: 50% !important;
  padding: 6px !important;
  background: #ffffff !important;
  overflow: hidden !important;
  flex: 0 0 62px;
}
.bsmp-portal-brand-logo {
  width: 62px !important;
  height: 62px !important;
}
.bsmp-portal-login-logo img,
.bsmp-portal-brand-logo img,
.bsmp-portal-sidebar .bsmp-portal-brand-logo img {
  width: auto !important;
  height: auto !important;
  max-width: 92% !important;
  max-height: 92% !important;
  object-fit: contain !important;
  object-position: center center !important;
  border-radius: 0 !important;
  display: block !important;
  margin: auto !important;
  padding: 0 !important;
}
.bsmp-portal-print-actions { margin: 0 0 14px; }
.bsmp-portal-print-actions .bsmp-portal-btn { min-height: 42px; }
.bsmp-portal-card-head a,
.bsmp-portal-card-head .bsmp-portal-mini-btn { white-space: nowrap; }
.bsmp-portal-resource-card .bsmp-portal-actions-row { justify-content: flex-end; }
.bsmp-portal-content { scroll-behavior: smooth; }
.bsmp-portal-table-wrap { border-radius: 16px; border: 1px solid #e5e7eb; background: #fff; }
.bsmp-portal-table-wrap table { margin: 0; }

@media (max-width: 780px) {
  .bsmp-portal-app { min-height: 100vh; box-shadow: none; border-radius: 0; border-left: 0; border-right: 0; }
  .bsmp-portal-sidebar { gap: 12px; padding: 12px 12px 94px; }
  .bsmp-portal-brand { padding-bottom: 10px; }
  .bsmp-portal-brand-logo { width: 54px !important; height: 54px !important; flex-basis: 54px !important; }
  .bsmp-portal-nav {
    position: fixed;
    left: 10px;
    right: 10px;
    bottom: 10px;
    z-index: 9999;
    display: flex !important;
    gap: 8px;
    overflow-x: auto;
    padding: 8px;
    border-radius: 20px;
    background: rgba(15, 94, 156, .97);
    box-shadow: 0 18px 45px rgba(15, 23, 42, .28);
    -webkit-overflow-scrolling: touch;
  }
  .bsmp-portal-nav::-webkit-scrollbar { display: none; }
  .bsmp-portal-nav a {
    min-width: 78px;
    flex: 0 0 auto;
    padding: 8px 8px !important;
    border-radius: 16px;
    color: #e0f2fe;
  }
  .bsmp-portal-nav a.active,
  .bsmp-portal-nav a:hover { background: #ffffff !important; color: #0f5e9c !important; }
  .bsmp-portal-logout { width: 100%; margin: 0; }
  .bsmp-portal-main { padding-bottom: 92px; }
  .bsmp-portal-header { border-radius: 0 0 22px 22px; }
  .bsmp-portal-actions-row { width: 100%; }
  .bsmp-portal-actions-row .bsmp-portal-btn,
  .bsmp-portal-actions-row .bsmp-portal-mini-btn { flex: 1 1 auto; }
  .bsmp-portal-table-wrap { overflow-x: auto; }
}
@media (max-width: 480px) {
  .bsmp-portal-brand strong { font-size: 14px; }
  .bsmp-portal-brand small { font-size: 12px; }
  .bsmp-portal-nav a { min-width: 74px; font-size: 11px; }
  .bsmp-portal-nav-icon { width: 20px; height: 20px; }
  .bsmp-portal-header h2 { font-size: 21px; }
}

/* Portal logo/photo fit consistency */
.bsmp-portal-login-logo,
.bsmp-portal-brand-logo,
.bsmp-portal-sidebar .bsmp-portal-brand-logo {
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  border-radius:50% !important;
  overflow:hidden !important;
}
.bsmp-portal-login-logo img,
.bsmp-portal-brand-logo img,
.bsmp-portal-sidebar .bsmp-portal-brand-logo img {
  max-width:92% !important;
  max-height:92% !important;
  width:auto !important;
  height:auto !important;
  object-fit:contain !important;
  object-position:center center !important;
  display:block !important;
  margin:auto !important;
  border-radius:0 !important;
}
.bsmp-portal-avatar img,
.bsmp-portal-profile-photo img {
  width:100% !important;
  height:100% !important;
  object-fit:cover !important;
  object-position:center center !important;
}

/* BSMP 13F portal routine readability polish */
.bsmp-portal-routine-table th,
.bsmp-portal-routine-table td {
	vertical-align: middle;
	text-align: center;
}
.bsmp-portal-routine-table td strong {
	font-size: 13px;
	line-height: 1.2;
}
.bsmp-portal-routine-table td small {
	color: #0f5e9c;
	font-weight: 700;
}
.bsmp-portal-routine-table td em {
	color: #6b7280;
}

/* Portal notice and event cards */
.bsmp-portal-announcement-card .bsmp-portal-announcement-list li {
	align-items: flex-start;
	gap: 10px;
}
.bsmp-portal-announcement-list li span small {
	display: block;
	margin-top: 4px;
	font-weight: 500;
	line-height: 1.45;
	color: #64748b;
}
.bsmp-portal-announcement-list li strong {
	white-space: nowrap;
	font-size: 12px;
}

/* Premium portal dashboard polish, circular logo, people cards */
.bsmp-portal-sidebar {
  background: radial-gradient(circle at 20% 0%, rgba(255,255,255,.18), transparent 34%), linear-gradient(180deg,#1565a9 0%, #0f5e9c 48%, #08345f 100%);
}
.bsmp-portal-teacher-app .bsmp-portal-sidebar {
  background: radial-gradient(circle at 25% 0%, rgba(251,146,60,.26), transparent 34%), linear-gradient(180deg,#8a2e16 0%, #5b3444 36%, #0f5e9c 100%);
}
.bsmp-portal-brand-logo,
.bsmp-portal-sidebar .bsmp-portal-brand-logo,
.bsmp-portal-login-logo {
  border-radius: 50% !important;
  border: 2px solid rgba(255,255,255,.82) !important;
  box-shadow: 0 12px 28px rgba(2,6,23,.18), inset 0 0 0 5px rgba(255,255,255,.65) !important;
  background: #fff !important;
}
.bsmp-portal-brand-logo img,
.bsmp-portal-sidebar .bsmp-portal-brand-logo img,
.bsmp-portal-login-logo img {
  width: 100% !important;
  height: 100% !important;
  max-width: 100% !important;
  max-height: 100% !important;
  object-fit: cover !important;
  border-radius: 50% !important;
  padding: 0 !important;
}
.bsmp-portal-nav-icon {
  width: 28px !important;
  height: 28px !important;
  font-size: 22px !important;
  line-height: 1 !important;
}
.bsmp-portal-nav a {
  border: 1px solid rgba(255,255,255,.08);
  transition: transform .18s ease, box-shadow .18s ease, background .18s ease;
}
.bsmp-portal-nav a:hover,
.bsmp-portal-nav a.active {
  transform: translateY(-1px);
  box-shadow: 0 10px 24px rgba(15,23,42,.16);
}
.bsmp-portal-section-title,
.bsmp-portal-card,
.bsmp-portal-stat-card,
.bsmp-portal-profile-card {
  border-color: rgba(148,163,184,.34);
  box-shadow: 0 18px 42px rgba(15,23,42,.08);
}
.bsmp-portal-title-gradient {
  background: linear-gradient(135deg,#ffffff 0%,#eef6ff 54%,#fff7ed 100%);
  border: 1px solid #bfdbfe;
}
.bsmp-portal-title-gradient-maroon {
  background: linear-gradient(135deg,#fff7ed 0%,#ffffff 45%,#eff6ff 100%);
  border-color: #fed7aa;
}
.bsmp-portal-color-card {
  position: relative;
  overflow: hidden;
  border-width: 1px;
}
.bsmp-portal-color-card:before {
  content: "";
  position: absolute;
  right: -42px;
  top: -42px;
  width: 120px;
  height: 120px;
  border-radius: 50%;
  opacity: .16;
  background: currentColor;
  pointer-events: none;
}
.bsmp-portal-color-card > * { position: relative; z-index: 1; }
.bsmp-portal-color-card-indigo { color:#2563eb; background: linear-gradient(135deg,#ffffff 0%,#eff6ff 68%,#eef2ff 100%); border-color:#bfdbfe; }
.bsmp-portal-color-card-rose { color:#be123c; background: linear-gradient(135deg,#ffffff 0%,#fff1f2 66%,#fff7ed 100%); border-color:#fecdd3; }
.bsmp-portal-color-card-sky { color:#0284c7; background: linear-gradient(135deg,#ffffff 0%,#e0f2fe 66%,#f0f9ff 100%); border-color:#bae6fd; }
.bsmp-portal-color-card-amber { color:#b45309; background: linear-gradient(135deg,#ffffff 0%,#fffbeb 68%,#fff7ed 100%); border-color:#fde68a; }
.bsmp-portal-count-pill {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:34px;
  min-height:28px;
  padding:5px 11px;
  border-radius:999px;
  background:#fff;
  color:#0f5e9c;
  border:1px solid rgba(37,99,235,.18);
  box-shadow:0 8px 20px rgba(15,23,42,.08);
  font-weight:900;
  font-size:12px;
  white-space:nowrap;
}
.bsmp-portal-timeline-list li {
  border: 1px solid rgba(148,163,184,.24);
  background: rgba(255,255,255,.82);
  box-shadow: 0 10px 24px rgba(15,23,42,.055);
}
.bsmp-portal-timeline-list li span:before {
  content:"";
  display:inline-block;
  width:8px;
  height:8px;
  margin-right:8px;
  border-radius:50%;
  background:#2563eb;
  box-shadow:0 0 0 4px rgba(37,99,235,.12);
}
.bsmp-portal-people-grid {
  display:grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap:14px;
}
.bsmp-portal-person-card {
  display:flex;
  align-items:center;
  gap:12px;
  padding:14px;
  border:1px solid rgba(148,163,184,.28);
  border-radius:22px;
  background:rgba(255,255,255,.86);
  box-shadow:0 14px 32px rgba(15,23,42,.075);
  min-width:0;
}
.bsmp-portal-person-card.is-current {
  border-color:#60a5fa;
  background:linear-gradient(135deg,#eff6ff,#ffffff);
}
.bsmp-portal-person-photo {
  width:58px;
  height:58px;
  flex:0 0 58px;
  border-radius:50%;
  overflow:hidden;
  display:flex;
  align-items:center;
  justify-content:center;
  background:linear-gradient(135deg,#dbeafe,#eff6ff);
  color:#0f5e9c;
  border:3px solid #fff;
  box-shadow:0 10px 22px rgba(15,23,42,.14);
  font-size:20px;
  font-weight:900;
}
.bsmp-portal-person-photo img {
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}
.bsmp-portal-person-info { min-width:0; }
.bsmp-portal-person-info h4 {
  margin:0;
  color:#111827;
  font-size:15px;
  line-height:1.24;
  word-break:break-word;
}
.bsmp-portal-person-info p,
.bsmp-portal-person-info small {
  display:block;
  margin:4px 0 0;
  color:#64748b;
  font-weight:800;
  font-size:12px;
}
.bsmp-portal-teacher-card .bsmp-portal-person-photo {
  background:linear-gradient(135deg,#fed7aa,#fff7ed);
  color:#7c2d12;
}
.bsmp-portal-principal-card {
  display:flex;
  align-items:center;
  gap:18px;
  padding:22px;
  color:#fff;
  background: radial-gradient(circle at 88% 0%, rgba(255,255,255,.24), transparent 34%), linear-gradient(135deg,#7c2d12,#0f5e9c);
  border:0;
  box-shadow:0 24px 52px rgba(15,23,42,.18);
}
.bsmp-portal-principal-avatar {
  width:78px;
  height:78px;
  flex:0 0 78px;
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  background:rgba(255,255,255,.18);
  border:3px solid rgba(255,255,255,.58);
  font-weight:900;
  font-size:31px;
  box-shadow:inset 0 0 0 6px rgba(255,255,255,.14);
}
.bsmp-portal-principal-info h3 { margin:5px 0 0; font-size:26px; line-height:1.12; color:#fff; }
.bsmp-portal-principal-info p { margin:5px 0 0; font-size:15px; font-weight:800; color:#e0f2fe; }
.bsmp-portal-principal-info small { display:block; margin-top:9px; color:#f8fafc; line-height:1.45; }
.bsmp-portal-eyebrow {
  display:inline-flex;
  padding:5px 10px;
  border-radius:999px;
  background:rgba(255,255,255,.18);
  color:#fff;
  font-size:12px;
  font-weight:900;
  letter-spacing:.04em;
  text-transform:uppercase;
}
.bsmp-portal-principal-meta {
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:9px;
}
.bsmp-portal-principal-meta span {
  display:inline-flex;
  padding:6px 10px;
  border-radius:999px;
  background:rgba(255,255,255,.14);
  color:#fff;
  font-size:12px;
  font-weight:800;
}
.bsmp-portal-mini-people-row {
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin:2px 0 12px;
}
.bsmp-portal-mini-people-row span {
  width:42px;
  height:42px;
  border-radius:50%;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  background:#dbeafe;
  color:#0f5e9c;
  border:2px solid #fff;
  box-shadow:0 8px 18px rgba(15,23,42,.12);
  font-weight:900;
}
.bsmp-portal-mini-people-row img { width:100%; height:100%; object-fit:cover; }
.bsmp-portal-feature-line {
  display:grid;
  gap:4px;
  margin:0 0 10px;
  padding:13px 14px;
  border-radius:16px;
  background:rgba(255,255,255,.78);
  border:1px solid rgba(148,163,184,.22);
}
.bsmp-portal-feature-line strong { color:#111827; font-size:16px; }
.bsmp-portal-feature-line span { color:#64748b; font-weight:800; }
.bsmp-portal-stat-card.blue { background:linear-gradient(135deg,#eff6ff,#fff); border-color:#bfdbfe; }
.bsmp-portal-stat-card.green { background:linear-gradient(135deg,#ecfdf5,#fff); border-color:#bbf7d0; }
.bsmp-portal-stat-card.red { background:linear-gradient(135deg,#fef2f2,#fff); border-color:#fecaca; }
.bsmp-portal-stat-card.orange { background:linear-gradient(135deg,#fff7ed,#fff); border-color:#fed7aa; }
@media (max-width: 780px) {
  .bsmp-portal-nav-icon { width:30px !important; height:30px !important; font-size:23px !important; }
  .bsmp-portal-nav a { min-width:94px; gap:6px; font-size:13px; }
  .bsmp-portal-people-grid { grid-template-columns:1fr; }
  .bsmp-portal-principal-card { align-items:flex-start; }
}
@media (max-width: 480px) {
  .bsmp-portal-brand-logo { width:68px !important; height:68px !important; flex-basis:68px !important; }
  .bsmp-portal-nav a { min-width:92px; font-size:12px; }
  .bsmp-portal-principal-card { flex-direction:column; }
  .bsmp-portal-principal-info h3 { font-size:22px; }
  .bsmp-portal-person-card { border-radius:18px; }
}

/* Portal navigation, logo circle fit and app-card readability fixes */
.bsmp-portal-brand-logo,
.bsmp-portal-sidebar .bsmp-portal-brand-logo,
.bsmp-portal-login-logo {
  border-radius: 999px !important;
  overflow: hidden !important;
  background: #ffffff !important;
  padding: 4px !important;
  border: 3px solid rgba(255,255,255,.96) !important;
  box-shadow: 0 16px 34px rgba(2,6,23,.22), inset 0 0 0 1px rgba(15,94,156,.16) !important;
}
.bsmp-portal-brand-logo img,
.bsmp-portal-sidebar .bsmp-portal-brand-logo img,
.bsmp-portal-login-logo img {
  width: 100% !important;
  height: 100% !important;
  max-width: 100% !important;
  max-height: 100% !important;
  object-fit: cover !important;
  object-position: center center !important;
  border-radius: 999px !important;
  display: block !important;
  padding: 0 !important;
  margin: 0 !important;
}
.bsmp-portal-card,
.bsmp-portal-section-title,
.bsmp-portal-profile-card,
.bsmp-portal-stat-card {
  border: 1px solid rgba(59,130,246,.18) !important;
  box-shadow: 0 20px 46px rgba(15,23,42,.10) !important;
}
.bsmp-portal-card {
  background: linear-gradient(135deg,#ffffff 0%,#f8fbff 62%,#eef6ff 100%);
}
.bsmp-portal-grid-two > .bsmp-portal-card:nth-child(2n) {
  background: linear-gradient(135deg,#ffffff 0%,#fff7ed 63%,#fff1f2 100%);
  border-color: rgba(251,146,60,.28) !important;
}
.bsmp-portal-grid-two > .bsmp-portal-card:nth-child(3n) {
  background: linear-gradient(135deg,#ffffff 0%,#ecfdf5 62%,#e0f2fe 100%);
  border-color: rgba(16,185,129,.24) !important;
}
.bsmp-portal-card-head {
  border-bottom-color: rgba(148,163,184,.25) !important;
}
.bsmp-portal-card-head h4,
.bsmp-portal-section-title h3,
.bsmp-portal-person-info h4,
.bsmp-portal-feature-line strong {
  color: #0f172a !important;
  text-shadow: none !important;
}
.bsmp-portal-muted,
.bsmp-portal-card p,
.bsmp-portal-person-info p,
.bsmp-portal-person-info small,
.bsmp-portal-simple-list strong,
.bsmp-portal-student-chip small {
  color: #475569 !important;
}
.bsmp-portal-card-head a,
.bsmp-portal-mini-btn,
.bsmp-portal-actions-grid a {
  box-shadow: 0 10px 22px rgba(37,99,235,.12);
}
.bsmp-portal-announcement-card {
  border-width: 1px !important;
  box-shadow: 0 22px 50px rgba(15,23,42,.12) !important;
}
.bsmp-portal-announcement-list li,
.bsmp-portal-timeline-list li {
  border: 1px solid rgba(148,163,184,.28) !important;
  background: rgba(255,255,255,.92) !important;
  box-shadow: 0 12px 26px rgba(15,23,42,.075) !important;
}
.bsmp-portal-announcement-list li span,
.bsmp-portal-simple-list li span {
  color: #1e293b !important;
}
.bsmp-portal-simple-list li {
  border: 1px solid rgba(148,163,184,.22);
  background: rgba(255,255,255,.78);
}
.bsmp-portal-people-grid {
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
}
.bsmp-portal-person-card {
  background: linear-gradient(135deg,#ffffff 0%,#eff6ff 100%) !important;
  border-color: rgba(37,99,235,.22) !important;
  box-shadow: 0 18px 38px rgba(15,23,42,.10) !important;
}
.bsmp-portal-person-card:nth-child(2n) {
  background: linear-gradient(135deg,#ffffff 0%,#fff7ed 100%) !important;
  border-color: rgba(251,146,60,.24) !important;
}
.bsmp-portal-person-card:nth-child(3n) {
  background: linear-gradient(135deg,#ffffff 0%,#ecfdf5 100%) !important;
  border-color: rgba(34,197,94,.20) !important;
}
.bsmp-portal-person-card.is-current {
  background: linear-gradient(135deg,#dbeafe 0%,#ffffff 100%) !important;
  border-color: #2563eb !important;
}
.bsmp-portal-person-photo img,
.bsmp-portal-mini-people-row img,
.bsmp-portal-avatar img,
.bsmp-portal-profile-photo img {
  object-fit: cover !important;
  object-position: center center !important;
}
.bsmp-portal-nav a {
  font-weight: 900 !important;
}
.bsmp-portal-nav-icon {
  font-size: 25px !important;
}
@media (max-width: 780px) {
  .bsmp-portal-sidebar { padding-bottom: 124px !important; }
  .bsmp-portal-main { padding-bottom: 150px !important; }
  .bsmp-portal-content { padding-bottom: 164px !important; }
  .bsmp-portal-nav {
    bottom: 12px !important;
    padding: 10px !important;
    border-radius: 24px !important;
    min-height: 86px;
    align-items: stretch;
  }
  .bsmp-portal-nav a {
    min-width: 102px !important;
    padding: 10px 9px !important;
    font-size: 13px !important;
    line-height: 1.15 !important;
  }
  .bsmp-portal-nav-icon {
    width: 34px !important;
    height: 34px !important;
    font-size: 26px !important;
  }
  .bsmp-portal-grid-two,
  .bsmp-portal-people-grid {
    grid-template-columns: 1fr !important;
  }
  .bsmp-portal-card,
  .bsmp-portal-section-title {
    border-radius: 24px !important;
  }
}
@media (max-width: 480px) {
  .bsmp-portal-brand-logo,
  .bsmp-portal-sidebar .bsmp-portal-brand-logo {
    width: 74px !important;
    height: 74px !important;
    flex-basis: 74px !important;
  }
  .bsmp-portal-nav a { min-width: 100px !important; }
  .bsmp-portal-nav-icon { font-size: 27px !important; }
  .bsmp-portal-person-card { padding: 16px !important; }
}

/* Portal dashboard cards, mobile readable text and profile-card polish */
.bsmp-portal-stat-card,
.bsmp-portal-card,
.bsmp-portal-section-title,
.bsmp-portal-profile-card {
  border-width: 1px !important;
  border-style: solid !important;
  box-shadow: 0 24px 56px rgba(15,23,42,.14) !important;
}
.bsmp-portal-stat-card.blue {
  background: linear-gradient(135deg,#dbeafe 0%,#eff6ff 46%,#ffffff 100%) !important;
  border-color: rgba(37,99,235,.42) !important;
}
.bsmp-portal-stat-card.green {
  background: linear-gradient(135deg,#bbf7d0 0%,#dcfce7 48%,#ffffff 100%) !important;
  border-color: rgba(22,163,74,.38) !important;
}
.bsmp-portal-stat-card.red {
  background: linear-gradient(135deg,#fecaca 0%,#fee2e2 48%,#ffffff 100%) !important;
  border-color: rgba(220,38,38,.40) !important;
}
.bsmp-portal-stat-card.orange {
  background: linear-gradient(135deg,#fed7aa 0%,#ffedd5 48%,#ffffff 100%) !important;
  border-color: rgba(245,158,11,.42) !important;
}
.bsmp-portal-color-card-indigo,
.bsmp-portal-announcement-card.bsmp-portal-color-card-indigo {
  background: linear-gradient(135deg,#e0e7ff 0%,#eef2ff 52%,#ffffff 100%) !important;
  border-color: rgba(79,70,229,.35) !important;
}
.bsmp-portal-color-card-rose,
.bsmp-portal-announcement-card.bsmp-portal-color-card-rose {
  background: linear-gradient(135deg,#ffe4e6 0%,#fff1f2 52%,#ffffff 100%) !important;
  border-color: rgba(225,29,72,.35) !important;
}
.bsmp-portal-color-card-sky {
  background: linear-gradient(135deg,#bae6fd 0%,#e0f2fe 52%,#ffffff 100%) !important;
  border-color: rgba(2,132,199,.36) !important;
}
.bsmp-portal-color-card-amber {
  background: linear-gradient(135deg,#fde68a 0%,#fef3c7 52%,#ffffff 100%) !important;
  border-color: rgba(217,119,6,.36) !important;
}
.bsmp-portal-card:not(.bsmp-portal-color-card):not(.bsmp-portal-announcement-card) {
  background: linear-gradient(135deg,#f8fafc 0%,#eef6ff 54%,#ffffff 100%) !important;
  border-color: rgba(59,130,246,.26) !important;
}
.bsmp-portal-card:nth-of-type(2n):not(.bsmp-portal-color-card):not(.bsmp-portal-announcement-card) {
  background: linear-gradient(135deg,#fff7ed 0%,#fffbeb 54%,#ffffff 100%) !important;
  border-color: rgba(251,146,60,.28) !important;
}
.bsmp-portal-card-head h4,
.bsmp-portal-section-title h3,
.bsmp-portal-stat-card strong,
.bsmp-portal-profile-info h3,
.bsmp-portal-person-info h4 {
  color:#0f172a !important;
  font-weight: 900 !important;
}
.bsmp-portal-stat-card span,
.bsmp-portal-card-head h4,
.bsmp-portal-info-list span,
.bsmp-portal-info-list strong,
.bsmp-portal-simple-list span,
.bsmp-portal-simple-list strong,
.bsmp-portal-muted,
.bsmp-portal-card p,
.bsmp-portal-profile-info p,
.bsmp-portal-person-info p,
.bsmp-portal-person-info small {
  line-height:1.42 !important;
}
.bsmp-portal-holiday-card,
.bsmp-portal-card.bsmp-portal-holiday-card {
  background: linear-gradient(135deg,#fee2e2 0%,#fff7ed 48%,#ffffff 100%) !important;
  border-color: rgba(220,38,38,.34) !important;
}
.bsmp-portal-holiday-card .bsmp-portal-card-head h4,
.bsmp-portal-holiday-card .bsmp-portal-simple-list span,
.bsmp-portal-holiday-card .bsmp-portal-table td:first-child,
.bsmp-portal-holiday-card .bsmp-portal-table th:first-child {
  color:#b91c1c !important;
}
.bsmp-portal-holiday-card .bsmp-portal-simple-list strong,
.bsmp-portal-holiday-card .bsmp-portal-table td:nth-child(2) {
  color:#991b1b !important;
  font-weight:900 !important;
}
/* School logo must fit inside the circle without cropping. Student/staff photos still use cover. */
.bsmp-portal-brand-logo,
.bsmp-portal-sidebar .bsmp-portal-brand-logo,
.bsmp-portal-login-logo {
  border-radius:50% !important;
  background:#ffffff !important;
  padding:7px !important;
  border:2px solid rgba(59,130,246,.38) !important;
  box-shadow:0 16px 34px rgba(15,23,42,.18), inset 0 0 0 1px rgba(255,255,255,.72) !important;
}
.bsmp-portal-brand-logo img,
.bsmp-portal-sidebar .bsmp-portal-brand-logo img,
.bsmp-portal-login-logo img {
  width:100% !important;
  height:100% !important;
  max-width:100% !important;
  max-height:100% !important;
  object-fit:contain !important;
  object-position:center center !important;
  border-radius:0 !important;
  padding:0 !important;
  margin:auto !important;
  display:block !important;
}
.bsmp-portal-profile-card {
  background:linear-gradient(135deg,#e0f2fe 0%,#eff6ff 50%,#ffffff 100%) !important;
  border-color:rgba(14,165,233,.34) !important;
  padding:26px !important;
}
.bsmp-portal-profile-photo {
  width:112px !important;
  height:112px !important;
  border:5px solid #ffffff !important;
  box-shadow:0 18px 34px rgba(15,23,42,.18) !important;
  background:linear-gradient(135deg,#dbeafe,#ffffff) !important;
}
.bsmp-portal-profile-info h3 { font-size:28px !important; line-height:1.16 !important; }
.bsmp-portal-profile-info p { font-size:15px !important; font-weight:800 !important; color:#334155 !important; }
.bsmp-portal-person-card {
  padding:18px !important;
  border-width:1px !important;
}
.bsmp-portal-person-photo {
  width:74px !important;
  height:74px !important;
  border:4px solid #ffffff !important;
  box-shadow:0 14px 28px rgba(15,23,42,.15) !important;
}
@media (max-width: 780px) {
  .bsmp-portal-content { gap:20px !important; }
  .bsmp-portal-section-title { padding:20px 18px !important; }
  .bsmp-portal-section-title h3 { font-size:22px !important; }
  .bsmp-portal-section-title p { font-size:15px !important; color:#334155 !important; }
  .bsmp-portal-stat-card { padding:20px 18px !important; }
  .bsmp-portal-stat-card span { font-size:14px !important; color:#334155 !important; }
  .bsmp-portal-stat-card strong { font-size:30px !important; }
  .bsmp-portal-stat-card small { font-size:14px !important; color:#475569 !important; }
  .bsmp-portal-card { padding:20px !important; }
  .bsmp-portal-card-head h4 { font-size:18px !important; }
  .bsmp-portal-info-list p,
  .bsmp-portal-simple-list li,
  .bsmp-portal-card p,
  .bsmp-portal-muted { font-size:15px !important; }
  .bsmp-portal-info-list span,
  .bsmp-portal-info-list strong { font-size:15px !important; }
  .bsmp-portal-profile-card {
    flex-direction:column !important;
    align-items:center !important;
    text-align:center !important;
    padding:28px 20px !important;
    gap:14px !important;
  }
  .bsmp-portal-profile-photo { width:122px !important; height:122px !important; }
  .bsmp-portal-profile-info h3 { font-size:27px !important; }
  .bsmp-portal-profile-info p { font-size:15px !important; }
  .bsmp-portal-person-card {
    min-height:110px;
    align-items:center !important;
    gap:16px !important;
  }
  .bsmp-portal-person-info h4 { font-size:18px !important; }
  .bsmp-portal-person-info p,
  .bsmp-portal-person-info small { font-size:14px !important; }
}
@media (max-width: 480px) {
  .bsmp-portal-header h2 { font-size:23px !important; }
  .bsmp-portal-header p { font-size:14px !important; color:#334155 !important; }
  .bsmp-portal-card { border-radius:24px !important; }
  .bsmp-portal-profile-card { border-radius:28px !important; }
  .bsmp-portal-profile-photo { width:132px !important; height:132px !important; }
  .bsmp-portal-profile-info h3 { font-size:26px !important; }
  .bsmp-portal-person-card {
    padding:18px !important;
    border-radius:22px !important;
  }
  .bsmp-portal-person-photo { width:78px !important; height:78px !important; }
  .bsmp-portal-nav a { font-size:13px !important; }
}

/* Classmates/teachers mobile stacked cards, round photos and readable notice/event text */
.bsmp-portal-people-grid,
.bsmp-portal-classmates-grid,
.bsmp-portal-teacher-grid {
  width: 100% !important;
  max-width: 100% !important;
  overflow: hidden !important;
  box-sizing: border-box !important;
}
.bsmp-portal-person-card,
.bsmp-portal-teacher-card {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  box-sizing: border-box !important;
  overflow: hidden !important;
}
.bsmp-portal-person-photo,
.bsmp-portal-teacher-card .bsmp-portal-person-photo,
.bsmp-portal-mini-people-row span,
.bsmp-portal-avatar,
.bsmp-portal-profile-photo {
  aspect-ratio: 1 / 1 !important;
  border-radius: 50% !important;
  overflow: hidden !important;
  box-sizing: border-box !important;
  flex-shrink: 0 !important;
}
.bsmp-portal-person-photo img,
.bsmp-portal-teacher-card .bsmp-portal-person-photo img,
.bsmp-portal-mini-people-row img,
.bsmp-portal-avatar img,
.bsmp-portal-profile-photo img {
  width: 100% !important;
  height: 100% !important;
  min-width: 100% !important;
  min-height: 100% !important;
  max-width: none !important;
  max-height: none !important;
  display: block !important;
  object-fit: cover !important;
  object-position: center center !important;
  border-radius: 50% !important;
}
.bsmp-portal-person-info,
.bsmp-portal-person-info h4,
.bsmp-portal-person-info p,
.bsmp-portal-person-info small {
  max-width: 100% !important;
  white-space: normal !important;
  overflow-wrap: anywhere !important;
  word-break: break-word !important;
}
.bsmp-portal-announcement-card.bsmp-portal-color-card-indigo,
.bsmp-portal-announcement-card.bsmp-portal-color-card-rose {
  border-width: 1px !important;
  box-shadow: 0 24px 58px rgba(15,23,42,.16) !important;
}
.bsmp-portal-announcement-card.bsmp-portal-color-card-indigo {
  background: linear-gradient(135deg,#bfdbfe 0%,#dbeafe 42%,#ffffff 100%) !important;
  border-color: rgba(37,99,235,.48) !important;
}
.bsmp-portal-announcement-card.bsmp-portal-color-card-rose {
  background: linear-gradient(135deg,#fecdd3 0%,#ffe4e6 42%,#ffffff 100%) !important;
  border-color: rgba(225,29,72,.46) !important;
}
.bsmp-portal-announcement-card .bsmp-portal-card-head h4 {
  color: #0f172a !important;
  font-size: 20px !important;
  font-weight: 900 !important;
}
.bsmp-portal-announcement-list li {
  padding: 15px 16px !important;
  border-radius: 18px !important;
  background: rgba(255,255,255,.96) !important;
  border-color: rgba(15,23,42,.10) !important;
}
.bsmp-portal-announcement-list li span {
  color: #0f172a !important;
  font-size: 16px !important;
  font-weight: 900 !important;
  line-height: 1.32 !important;
}
.bsmp-portal-announcement-list li span small {
  color: #334155 !important;
  font-size: 14px !important;
  font-weight: 700 !important;
  line-height: 1.45 !important;
}
.bsmp-portal-announcement-list li strong {
  color: #0f5e9c !important;
  background: #eff6ff !important;
  border: 1px solid rgba(37,99,235,.16) !important;
  border-radius: 999px !important;
  padding: 5px 10px !important;
  font-size: 12px !important;
  font-weight: 900 !important;
}
@media (max-width: 780px) {
  .bsmp-portal-people-grid,
  .bsmp-portal-classmates-grid,
  .bsmp-portal-teacher-grid {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 18px !important;
  }
  .bsmp-portal-person-card,
  .bsmp-portal-teacher-card {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: flex-start !important;
    text-align: center !important;
    padding: 24px 18px !important;
    min-height: auto !important;
    border-radius: 28px !important;
  }
  .bsmp-portal-person-photo,
  .bsmp-portal-teacher-card .bsmp-portal-person-photo {
    width: 118px !important;
    height: 118px !important;
    flex: 0 0 118px !important;
    border: 6px solid #ffffff !important;
    box-shadow: 0 18px 36px rgba(15,23,42,.16) !important;
  }
  .bsmp-portal-person-info {
    width: 100% !important;
    margin-top: 4px !important;
  }
  .bsmp-portal-person-info h4 {
    font-size: 22px !important;
    line-height: 1.18 !important;
    text-align: center !important;
  }
  .bsmp-portal-person-info p,
  .bsmp-portal-person-info small {
    font-size: 15px !important;
    line-height: 1.35 !important;
    text-align: center !important;
  }
  .bsmp-portal-person-card.is-current {
    border-width: 2px !important;
  }
  .bsmp-portal-announcement-card .bsmp-portal-card-head h4 {
    font-size: 21px !important;
  }
  .bsmp-portal-announcement-list li {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 8px !important;
    align-items: start !important;
  }
  .bsmp-portal-announcement-list li span {
    font-size: 17px !important;
  }
  .bsmp-portal-announcement-list li span small {
    font-size: 15px !important;
  }
  .bsmp-portal-announcement-list li strong {
    justify-self: start !important;
  }
}
@media (max-width: 480px) {
  .bsmp-portal-person-photo,
  .bsmp-portal-teacher-card .bsmp-portal-person-photo {
    width: 128px !important;
    height: 128px !important;
    flex-basis: 128px !important;
  }
  .bsmp-portal-person-info h4 {
    font-size: 24px !important;
  }
  .bsmp-portal-person-info p,
  .bsmp-portal-person-info small {
    font-size: 16px !important;
  }
}


/* Keep school logos truly circular inside portal/login/dashboard logo holders. */
.bsmp-portal-login-logo,
.bsmp-portal-brand-logo,
.bsmp-portal-sidebar .bsmp-portal-brand-logo {
  border-radius: 50% !important;
  overflow: hidden !important;
  background: #ffffff !important;
  padding: 4px !important;
  box-shadow: 0 0 0 2px rgba(255,255,255,.65), 0 10px 24px rgba(15,23,42,.12) !important;
}
.bsmp-portal-login-logo img,
.bsmp-portal-brand-logo img,
.bsmp-portal-sidebar .bsmp-portal-brand-logo img {
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  max-height: none !important;
  border-radius: 50% !important;
  object-fit: cover !important;
  object-position: center center !important;
  display: block !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* Frontend Admin OTP Login */
.bsmp-admin-login-page {
	width: 100vw;
	max-width: 100vw;
	min-height: 100vh;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
	padding: 30px 18px;
	background: linear-gradient(135deg, #edf5ff 0%, #f8fbff 48%, #eef4ff 100%);
	font-family: Roboto, Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
	color: #111827;
	box-sizing: border-box;
}

.bsmp-admin-login-page * {
	box-sizing: border-box;
}

.bsmp-admin-login-shell {
	max-width: 1180px;
	min-height: calc(100vh - 60px);
	margin: 0 auto;
	display: grid;
	grid-template-columns: minmax(0, 1.1fr) minmax(360px, 0.72fr);
	gap: 24px;
	align-items: stretch;
}

.bsmp-admin-login-hero,
.bsmp-admin-login-card {
	border-radius: 30px;
	box-shadow: 0 24px 70px rgba(15, 23, 42, 0.11);
}

.bsmp-admin-login-hero {
	position: relative;
	overflow: hidden;
	padding: 38px;
	background: linear-gradient(145deg, #173fbe 0%, #0f2f96 100%);
	color: #ffffff;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	gap: 28px;
}

.bsmp-admin-login-hero::before,
.bsmp-admin-login-hero::after {
	content: "";
	position: absolute;
	border-radius: 999px;
	background: rgba(255, 255, 255, 0.12);
}

.bsmp-admin-login-hero::before {
	width: 280px;
	height: 280px;
	right: -90px;
	top: -80px;
}

.bsmp-admin-login-hero::after {
	width: 190px;
	height: 190px;
	left: -70px;
	bottom: -50px;
}

.bsmp-admin-login-brand,
.bsmp-admin-login-hero h1,
.bsmp-admin-login-hero p,
.bsmp-admin-login-points {
	position: relative;
	z-index: 1;
}

.bsmp-admin-login-brand {
	display: flex;
	align-items: center;
	gap: 14px;
}

.bsmp-admin-login-logo {
	width: 68px;
	height: 68px;
	border-radius: 999px;
	display: flex;
	align-items: center;
	justify-content: center;
	background: #ffffff;
	color: #173fbe;
	overflow: hidden;
	box-shadow: 0 18px 42px rgba(15, 23, 42, 0.24);
	flex: 0 0 68px;
}

.bsmp-admin-login-logo img {
	width: 100%;
	height: 100%;
	object-fit: contain;
	padding: 5px;
}

.bsmp-admin-login-logo .dashicons {
	font-size: 34px;
	width: 34px;
	height: 34px;
}

.bsmp-admin-login-brand strong,
.bsmp-admin-login-brand small {
	display: block;
}

.bsmp-admin-login-brand strong {
	font-size: 18px;
	font-weight: 900;
	line-height: 1.25;
}

.bsmp-admin-login-brand small {
	margin-top: 5px;
	font-size: 12px;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.12em;
	color: rgba(255, 255, 255, 0.78);
}

.bsmp-admin-login-hero h1 {
	max-width: 680px;
	margin: auto 0 0;
	font-size: clamp(34px, 5vw, 62px);
	line-height: 1.03;
	font-weight: 950;
	letter-spacing: -0.045em;
	color: #ffffff;
}

.bsmp-admin-login-hero p {
	max-width: 640px;
	margin: 0;
	font-size: 16px;
	line-height: 1.8;
	color: rgba(255, 255, 255, 0.80);
}

.bsmp-admin-login-points {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

.bsmp-admin-login-points span {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 9px 12px;
	border-radius: 999px;
	background: rgba(255, 255, 255, 0.13);
	border: 1px solid rgba(255, 255, 255, 0.14);
	font-size: 12px;
	font-weight: 800;
	color: rgba(255, 255, 255, 0.92);
}

.bsmp-admin-login-card {
	padding: 34px;
	background: rgba(255, 255, 255, 0.96);
	border: 1px solid rgba(37, 99, 235, 0.12);
	display: flex;
	flex-direction: column;
	justify-content: center;
}

.bsmp-admin-login-card h2 {
	margin: 8px 0 10px;
	font-size: 30px;
	line-height: 1.15;
	font-weight: 950;
	letter-spacing: -0.03em;
	color: #7f1d1d;
}

.bsmp-admin-login-card > p {
	margin: 0 0 20px;
	font-size: 14px;
	line-height: 1.7;
	color: #64748b;
}

.bsmp-admin-login-form {
	display: grid;
	gap: 16px;
}

.bsmp-admin-login-form label {
	display: grid;
	gap: 8px;
	font-weight: 800;
	font-size: 13px;
	color: #334155;
}

.bsmp-admin-login-form input {
	width: 100%;
	min-height: 52px;
	border-radius: 16px;
	border: 1px solid #dbe4f0;
	background: #f8fbff;
	padding: 0 15px;
	font-size: 16px;
	font-weight: 700;
	color: #0f172a;
	outline: none;
	box-shadow: inset 0 1px 2px rgba(15, 23, 42, 0.04);
}

.bsmp-admin-login-form input:focus {
	border-color: #2563eb;
	background: #ffffff;
	box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.12);
}

.bsmp-admin-login-submit {
	width: 100%;
	justify-content: center;
	min-height: 52px;
	font-size: 15px;
}

.bsmp-admin-login-resend {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin-top: 16px;
	font-weight: 800;
}

.bsmp-admin-login-resend a,
.bsmp-link-button {
	border: 0;
	background: transparent;
	padding: 0;
	color: #2563eb;
	font-weight: 900;
	text-decoration: none;
	cursor: pointer;
}

.bsmp-admin-login-resend a:hover,
.bsmp-link-button:hover {
	text-decoration: underline;
}

.bsmp-alert {
	display: flex;
	align-items: flex-start;
	gap: 9px;
	padding: 12px 13px;
	border-radius: 16px;
	font-size: 13px;
	font-weight: 800;
	line-height: 1.5;
	margin: 0 0 15px;
}

.bsmp-alert--danger {
	background: #fef2f2;
	border: 1px solid #fecaca;
	color: #991b1b;
}

.bsmp-alert--success {
	background: #ecfdf5;
	border: 1px solid #bbf7d0;
	color: #166534;
}

@media (max-width: 920px) {
	.bsmp-admin-login-shell {
		grid-template-columns: 1fr;
		min-height: auto;
	}

	.bsmp-admin-login-hero {
		min-height: 430px;
	}
}

@media (max-width: 640px) {
	.bsmp-admin-login-page {
		padding: 12px;
	}

	.bsmp-admin-login-hero,
	.bsmp-admin-login-card {
		border-radius: 22px;
		padding: 24px;
	}

	.bsmp-admin-login-hero {
		min-height: 390px;
	}

	.bsmp-admin-login-brand strong {
		font-size: 15px;
	}

	.bsmp-admin-login-hero h1 {
		font-size: 32px;
	}

	.bsmp-admin-login-card h2 {
		font-size: 25px;
	}

	.bsmp-admin-login-resend {
		align-items: flex-start;
		flex-direction: column;
	}
}


/* Compact commercial admin login */
.bsmp-admin-login-page--compact {
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 22px;
	background: linear-gradient(135deg, #eff6ff 0%, #ffffff 52%, #eef4ff 100%);
}

.bsmp-admin-login-card--compact {
	width: min(100%, 430px);
	min-height: auto;
	padding: 32px;
	border-radius: 28px;
	background: #ffffff;
	box-shadow: 0 28px 70px rgba(15,23,42,.14);
	border: 1px solid rgba(37,99,235,.14);
	justify-content: flex-start;
}

.bsmp-admin-login-brand--compact {
	margin-bottom: 22px;
	padding-bottom: 18px;
	border-bottom: 1px solid #e5edf8;
}

.bsmp-admin-login-brand--compact strong {
	color: #0f172a;
	font-size: 18px;
	font-weight: 950;
}

.bsmp-admin-login-brand--compact small {
	color: #173fbe;
	font-size: 11px;
	letter-spacing: .12em;
	font-weight: 950;
}

.bsmp-admin-login-card--compact h1 {
	margin: 0 0 18px;
	font-size: 30px;
	line-height: 1.12;
	font-weight: 950;
	letter-spacing: -.03em;
	color: #7f1d1d;
}

.bsmp-admin-login-card--compact .bsmp-admin-login-logo {
	width: 62px;
	height: 62px;
	flex-basis: 62px;
	box-shadow: 0 14px 32px rgba(15,23,42,.12);
	border: 1px solid #e5edf8;
}

.bsmp-admin-login-card--compact .bsmp-admin-login-form {
	gap: 15px;
}

.bsmp-admin-login-card--compact .bsmp-alert {
	margin-bottom: 15px;
}

.bsmp-admin-login-resend {
	justify-content: center;
	align-items: center;
	flex-wrap: wrap;
	padding-top: 14px;
	border-top: 1px solid #eef2f7;
}

.bsmp-admin-resend-timer {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 30px;
	padding: 5px 10px;
	border-radius: 999px;
	background: #eff6ff;
	color: #173fbe;
	font-size: 12px;
	font-weight: 900;
}

.bsmp-link-button:disabled,
.bsmp-admin-resend-btn:disabled {
	cursor: not-allowed;
	color: #94a3b8;
	text-decoration: none !important;
}

@media (max-width: 640px) {
	.bsmp-admin-login-page--compact {
		padding: 14px;
	}

	.bsmp-admin-login-card--compact {
		padding: 24px;
		border-radius: 24px;
	}

	.bsmp-admin-login-card--compact h1 {
		font-size: 26px;
	}

	.bsmp-admin-login-brand--compact {
		align-items: flex-start;
	}
}

/* Principal portal card photo and contrast polish. */
.bsmp-portal-principal-card,
.bsmp-portal-card.bsmp-portal-principal-card {
	background: radial-gradient(circle at 88% 0%, rgba(255,255,255,.22), transparent 34%), linear-gradient(135deg,#7f1d1d 0%,#0f5e9c 100%) !important;
	border: 1px solid rgba(255,255,255,.28) !important;
	color: #ffffff !important;
	box-shadow: 0 24px 52px rgba(15,23,42,.20) !important;
}

.bsmp-portal-principal-card .bsmp-portal-principal-avatar {
	background: rgba(255,255,255,.20) !important;
	border: 3px solid rgba(255,255,255,.72) !important;
	color: #ffffff !important;
	overflow: hidden !important;
}

.bsmp-portal-principal-card .bsmp-portal-principal-avatar img {
	width: 100% !important;
	height: 100% !important;
	object-fit: cover !important;
	object-position: center center !important;
	display: block !important;
	border-radius: 999px !important;
}

.bsmp-portal-principal-card .bsmp-portal-eyebrow,
.bsmp-portal-principal-card .bsmp-portal-principal-info h3,
.bsmp-portal-principal-card .bsmp-portal-principal-info p,
.bsmp-portal-principal-card .bsmp-portal-principal-info small,
.bsmp-portal-principal-card .bsmp-portal-principal-meta span {
	color: #ffffff !important;
	text-shadow: 0 2px 10px rgba(15,23,42,.18) !important;
}

.bsmp-portal-principal-card .bsmp-portal-principal-info p {
	color: #dbeafe !important;
}

.bsmp-portal-principal-card .bsmp-portal-principal-info small {
	color: #f8fafc !important;
}

.bsmp-portal-principal-card .bsmp-portal-eyebrow,
.bsmp-portal-principal-card .bsmp-portal-principal-meta span {
	background: rgba(255,255,255,.17) !important;
	border: 1px solid rgba(255,255,255,.18) !important;
}


/* Hard-scoped principal portal card contrast fix. */
body .bsmp-portal .bsmp-portal-content .bsmp-portal-card.bsmp-portal-principal-card.bsmp-portal-principal-card--contrast,
body .bsmp-portal .bsmp-portal-card.bsmp-portal-principal-card.bsmp-portal-principal-card--contrast {
	position: relative !important;
	isolation: isolate !important;
	overflow: hidden !important;
	display: flex !important;
	align-items: center !important;
	gap: 18px !important;
	background: radial-gradient(circle at 88% 0%, rgba(255,255,255,.18), transparent 34%), linear-gradient(135deg,#7f1d1d 0%,#0f5e9c 100%) !important;
	border: 1px solid rgba(255,255,255,.30) !important;
	box-shadow: 0 24px 52px rgba(15,23,42,.20) !important;
	color: #ffffff !important;
}

body .bsmp-portal .bsmp-portal-card.bsmp-portal-principal-card.bsmp-portal-principal-card--contrast::before {
	content: "" !important;
	position: absolute !important;
	inset: 0 !important;
	z-index: -1 !important;
	background: linear-gradient(135deg, rgba(127,29,29,.98), rgba(15,94,156,.98)) !important;
	opacity: .96 !important;
}

body .bsmp-portal .bsmp-portal-principal-card.bsmp-portal-principal-card--contrast .bsmp-portal-principal-avatar {
	background: rgba(255,255,255,.20) !important;
	border: 3px solid rgba(255,255,255,.78) !important;
	box-shadow: 0 14px 28px rgba(15,23,42,.20), inset 0 0 0 5px rgba(255,255,255,.12) !important;
	color: #ffffff !important;
	overflow: hidden !important;
}

body .bsmp-portal .bsmp-portal-principal-card.bsmp-portal-principal-card--contrast .bsmp-portal-principal-avatar img {
	display: block !important;
	width: 100% !important;
	height: 100% !important;
	object-fit: cover !important;
	object-position: center center !important;
	border-radius: 999px !important;
}

body .bsmp-portal .bsmp-portal-principal-card.bsmp-portal-principal-card--contrast .bsmp-portal-eyebrow,
body .bsmp-portal .bsmp-portal-principal-card.bsmp-portal-principal-card--contrast .bsmp-portal-principal-info h3,
body .bsmp-portal .bsmp-portal-principal-card.bsmp-portal-principal-card--contrast .bsmp-portal-principal-info p,
body .bsmp-portal .bsmp-portal-principal-card.bsmp-portal-principal-card--contrast .bsmp-portal-principal-info small,
body .bsmp-portal .bsmp-portal-principal-card.bsmp-portal-principal-card--contrast .bsmp-portal-principal-meta span {
	color: #ffffff !important;
	text-shadow: 0 2px 10px rgba(15,23,42,.24) !important;
}

body .bsmp-portal .bsmp-portal-principal-card.bsmp-portal-principal-card--contrast .bsmp-portal-principal-info p {
	color: #dbeafe !important;
}

body .bsmp-portal .bsmp-portal-principal-card.bsmp-portal-principal-card--contrast .bsmp-portal-eyebrow,
body .bsmp-portal .bsmp-portal-principal-card.bsmp-portal-principal-card--contrast .bsmp-portal-principal-meta span {
	background: rgba(255,255,255,.18) !important;
	border: 1px solid rgba(255,255,255,.22) !important;
}

@media (max-width: 640px) {
	body .bsmp-portal .bsmp-portal-card.bsmp-portal-principal-card.bsmp-portal-principal-card--contrast {
		align-items: flex-start !important;
		padding: 22px 20px !important;
	}
}

/* Teacher attendance all-present button visibility polish. */
.bsmp-portal-teacher-app .bsmp-portal-attendance-form .bsmp-portal-card-head .bsmp-portal-mini-btn[data-bsmp-mark-all="present"],
.bsmp-portal-attendance-form .bsmp-portal-card-head .bsmp-portal-mini-btn[data-bsmp-mark-all="present"] {
  background: #eff6ff !important;
  color: #0f5e9c !important;
  border: 1px solid #2563eb !important;
  text-shadow: none !important;
  box-shadow: 0 10px 22px rgba(37,99,235,.14) !important;
}
.bsmp-portal-teacher-app .bsmp-portal-attendance-form .bsmp-portal-card-head .bsmp-portal-mini-btn[data-bsmp-mark-all="present"]:hover,
.bsmp-portal-attendance-form .bsmp-portal-card-head .bsmp-portal-mini-btn[data-bsmp-mark-all="present"]:hover,
.bsmp-portal-teacher-app .bsmp-portal-attendance-form .bsmp-portal-card-head .bsmp-portal-mini-btn[data-bsmp-mark-all="present"]:focus,
.bsmp-portal-attendance-form .bsmp-portal-card-head .bsmp-portal-mini-btn[data-bsmp-mark-all="present"]:focus {
  background: #dbeafe !important;
  color: #0b4f86 !important;
  border-color: #1d4ed8 !important;
}

/* Show selected state clearly for teacher attendance bulk present button. */
.bsmp-portal-teacher-app .bsmp-portal-attendance-form .bsmp-portal-card-head .bsmp-portal-mini-btn[data-bsmp-mark-all="present"].is-selected,
.bsmp-portal-attendance-form .bsmp-portal-card-head .bsmp-portal-mini-btn[data-bsmp-mark-all="present"].is-selected,
.bsmp-portal-teacher-app .bsmp-portal-attendance-form .bsmp-portal-card-head .bsmp-portal-mini-btn[data-bsmp-mark-all="present"][aria-pressed="true"],
.bsmp-portal-attendance-form .bsmp-portal-card-head .bsmp-portal-mini-btn[data-bsmp-mark-all="present"][aria-pressed="true"] {
  background: linear-gradient(135deg, #047857, #16a34a) !important;
  color: #ffffff !important;
  border-color: #047857 !important;
  box-shadow: 0 14px 28px rgba(4,120,87,.30) !important;
  text-shadow: none !important;
}
.bsmp-portal-teacher-app .bsmp-portal-attendance-form .bsmp-portal-card-head .bsmp-portal-mini-btn[data-bsmp-mark-all="present"].is-selected:hover,
.bsmp-portal-attendance-form .bsmp-portal-card-head .bsmp-portal-mini-btn[data-bsmp-mark-all="present"].is-selected:hover {
  background: linear-gradient(135deg, #065f46, #15803d) !important;
  color: #ffffff !important;
}


/* Portal notice/event full details modal hotfix. Scoped to student/teacher portal only. */
.bsmp-portal-announcement-list .bsmp-portal-announcement-item {
  padding: 0 !important;
  background: transparent !important;
  display: block !important;
}
.bsmp-portal-announcement-open {
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  padding: 12px 14px;
  border: 0;
  border-radius: 18px;
  background: #ffffff;
  color: var(--bsmp-text);
  text-align: left;
  cursor: pointer;
  box-shadow: 0 10px 24px rgba(15,23,42,.05);
  border: 1px solid rgba(191,219,254,.65);
}
.bsmp-portal-announcement-open:hover,
.bsmp-portal-announcement-open:focus {
  outline: none;
  border-color: #60a5fa;
  box-shadow: 0 0 0 3px rgba(37,99,235,.12), 0 12px 26px rgba(15,23,42,.08);
}
.bsmp-portal-announcement-open > span {
  min-width: 0;
  display: block;
  font-weight: 900;
}
.bsmp-portal-announcement-title {
  display: block;
  color: #111827;
  font-weight: 950;
  line-height: 1.25;
  overflow-wrap: anywhere;
}
.bsmp-portal-announcement-open small {
  display: block;
  margin-top: 6px;
  color: #4b5563;
  line-height: 1.55;
  font-weight: 800;
}
.bsmp-portal-announcement-open em {
  display: inline-flex;
  margin-top: 9px;
  padding: 5px 9px;
  border-radius: 999px;
  background: #eff6ff;
  color: #0f5e9c;
  font-size: 12px;
  font-style: normal;
  font-weight: 900;
}
.bsmp-portal-announcement-open strong {
  flex: 0 0 auto;
  max-width: 130px;
  text-align: right;
  color: #0f5e9c;
  background: #eff6ff;
  border: 1px solid #bfdbfe;
  border-radius: 999px;
  padding: 7px 10px;
  font-size: 12px;
  line-height: 1.2;
}
.bsmp-portal-announcement-detail[hidden] {
  display: none !important;
}
.bsmp-portal-detail-modal {
  position: fixed;
  inset: 0;
  z-index: 999999;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 18px;
  background: rgba(15,23,42,.58);
  backdrop-filter: blur(4px);
}
.bsmp-portal-detail-modal.is-open {
  display: flex;
}
.bsmp-portal-detail-dialog {
  width: min(100%, 720px);
  max-height: min(86vh, 760px);
  overflow: hidden;
  border-radius: 26px;
  background: #ffffff;
  box-shadow: 0 32px 90px rgba(15,23,42,.32);
  border: 1px solid rgba(226,232,240,.9);
  display: flex;
  flex-direction: column;
}
.bsmp-portal-detail-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 20px 22px;
  background: linear-gradient(135deg,#0f5e9c,#2563eb);
  color: #fff;
}
.bsmp-portal-detail-head h3 {
  margin: 0;
  color: #fff;
  font-size: 22px;
  line-height: 1.25;
}
.bsmp-portal-detail-close {
  flex: 0 0 auto;
  width: 42px;
  height: 42px;
  border: 0;
  border-radius: 50%;
  background: rgba(255,255,255,.18);
  color: #fff;
  font-size: 24px;
  line-height: 1;
  cursor: pointer;
}
.bsmp-portal-detail-body {
  padding: 22px;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
  color: #111827;
  line-height: 1.75;
  font-size: 17px;
}
.bsmp-portal-detail-body .bsmp-portal-announcement-type {
  display: inline-flex;
  align-items: center;
  margin-bottom: 10px;
  padding: 6px 11px;
  border-radius: 999px;
  background: #fef3c7;
  color: #92400e;
  font-size: 13px;
  font-weight: 900;
}
.bsmp-portal-detail-body h3 {
  margin: 0 0 8px;
  color: #7c2d12;
  font-size: 24px;
  line-height: 1.25;
}
.bsmp-portal-detail-body .bsmp-portal-announcement-date {
  display: inline-flex;
  margin: 0 0 16px;
  padding: 7px 12px;
  border-radius: 999px;
  background: #eff6ff;
  border: 1px solid #bfdbfe;
  color: #0f5e9c;
  font-weight: 900;
}
.bsmp-portal-detail-body .bsmp-portal-announcement-content p {
  margin: 0 0 13px;
}
@media (max-width: 560px) {
  .bsmp-portal-announcement-open {
    flex-direction: column;
  }
  .bsmp-portal-announcement-open strong {
    max-width: 100%;
    text-align: left;
  }
  .bsmp-portal-detail-modal {
    padding: 12px;
    align-items: flex-end;
  }
  .bsmp-portal-detail-dialog {
    max-height: 88vh;
    border-radius: 24px 24px 16px 16px;
  }
  .bsmp-portal-detail-head,
  .bsmp-portal-detail-body {
    padding: 18px;
  }
  .bsmp-portal-detail-head h3 {
    font-size: 19px;
  }
  .bsmp-portal-detail-body {
    font-size: 16px;
  }
}


/* Batch 19I: portal notice/event dashboard preview-card polish only.
   Full details modal logic is unchanged. This keeps each preview inside a clean bordered card. */
.bsmp-portal-announcement-card .bsmp-portal-announcement-list {
  width: 100% !important;
  max-width: 100% !important;
  gap: 14px !important;
  overflow: visible !important;
}
.bsmp-portal-announcement-card .bsmp-portal-announcement-item,
.bsmp-portal-announcement-card .bsmp-portal-timeline-list .bsmp-portal-announcement-item {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  overflow: visible !important;
  box-sizing: border-box !important;
}
.bsmp-portal-announcement-card .bsmp-portal-announcement-open {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  box-sizing: border-box !important;
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) auto !important;
  align-items: start !important;
  gap: 12px !important;
  margin: 0 !important;
  padding: 16px 17px !important;
  border-radius: 22px !important;
  border: 1px solid rgba(37, 99, 235, .22) !important;
  background: linear-gradient(135deg, rgba(255,255,255,.98) 0%, rgba(248,251,255,.98) 100%) !important;
  color: #0f172a !important;
  box-shadow: 0 16px 34px rgba(15, 23, 42, .09) !important;
  text-align: left !important;
  cursor: pointer !important;
  overflow: hidden !important;
  appearance: none !important;
  -webkit-appearance: none !important;
  font-family: inherit !important;
}
.bsmp-portal-announcement-card.bsmp-portal-color-card-rose .bsmp-portal-announcement-open {
  border-color: rgba(225, 29, 72, .22) !important;
  background: linear-gradient(135deg, rgba(255,255,255,.98) 0%, rgba(255,247,247,.98) 100%) !important;
}
.bsmp-portal-announcement-card .bsmp-portal-announcement-open:hover,
.bsmp-portal-announcement-card .bsmp-portal-announcement-open:focus {
  border-color: #2563eb !important;
  box-shadow: 0 0 0 3px rgba(37,99,235,.12), 0 18px 38px rgba(15,23,42,.11) !important;
  outline: none !important;
}
.bsmp-portal-announcement-card.bsmp-portal-color-card-rose .bsmp-portal-announcement-open:hover,
.bsmp-portal-announcement-card.bsmp-portal-color-card-rose .bsmp-portal-announcement-open:focus {
  border-color: #e11d48 !important;
  box-shadow: 0 0 0 3px rgba(225,29,72,.10), 0 18px 38px rgba(15,23,42,.11) !important;
}
.bsmp-portal-announcement-card .bsmp-portal-announcement-open > span {
  display: block !important;
  min-width: 0 !important;
  max-width: 100% !important;
  overflow: hidden !important;
  color: #0f172a !important;
}
.bsmp-portal-announcement-card .bsmp-portal-announcement-title {
  display: block !important;
  position: relative !important;
  margin: 0 0 7px !important;
  padding-left: 18px !important;
  color: #0f172a !important;
  font-size: 16px !important;
  font-weight: 950 !important;
  line-height: 1.28 !important;
  white-space: normal !important;
  overflow-wrap: break-word !important;
  word-break: normal !important;
  text-shadow: none !important;
}
.bsmp-portal-announcement-card .bsmp-portal-announcement-title::before {
  content: "" !important;
  position: absolute !important;
  left: 0 !important;
  top: .48em !important;
  width: 9px !important;
  height: 9px !important;
  border-radius: 50% !important;
  background: #2563eb !important;
  box-shadow: 0 0 0 4px rgba(37,99,235,.12) !important;
}
.bsmp-portal-announcement-card.bsmp-portal-color-card-rose .bsmp-portal-announcement-title::before {
  background: #e11d48 !important;
  box-shadow: 0 0 0 4px rgba(225,29,72,.12) !important;
}
.bsmp-portal-announcement-card .bsmp-portal-timeline-list li span::before {
  content: none !important;
  display: none !important;
}
.bsmp-portal-announcement-card .bsmp-portal-announcement-open small {
  display: -webkit-box !important;
  -webkit-line-clamp: 3 !important;
  -webkit-box-orient: vertical !important;
  overflow: hidden !important;
  margin: 0 !important;
  color: #334155 !important;
  font-size: 14px !important;
  font-weight: 800 !important;
  line-height: 1.55 !important;
  white-space: normal !important;
  overflow-wrap: break-word !important;
  word-break: normal !important;
}
.bsmp-portal-announcement-card .bsmp-portal-announcement-open em {
  display: inline-flex !important;
  align-items: center !important;
  width: fit-content !important;
  max-width: 100% !important;
  margin-top: 10px !important;
  padding: 6px 11px !important;
  border-radius: 999px !important;
  background: #eff6ff !important;
  color: #0f5e9c !important;
  border: 1px solid rgba(37,99,235,.14) !important;
  font-size: 12px !important;
  font-style: normal !important;
  font-weight: 900 !important;
  line-height: 1.2 !important;
  white-space: nowrap !important;
}
.bsmp-portal-announcement-card.bsmp-portal-color-card-rose .bsmp-portal-announcement-open em {
  background: #fff1f2 !important;
  color: #be123c !important;
  border-color: rgba(225,29,72,.16) !important;
}
.bsmp-portal-announcement-card .bsmp-portal-announcement-open strong {
  align-self: start !important;
  justify-self: end !important;
  min-width: max-content !important;
  max-width: 132px !important;
  margin: 0 !important;
  padding: 7px 11px !important;
  border-radius: 999px !important;
  background: #eff6ff !important;
  color: #0f5e9c !important;
  border: 1px solid #bfdbfe !important;
  box-shadow: none !important;
  font-size: 12px !important;
  font-weight: 900 !important;
  line-height: 1.2 !important;
  text-align: center !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}
.bsmp-portal-announcement-card.bsmp-portal-color-card-rose .bsmp-portal-announcement-open strong {
  background: #fff1f2 !important;
  color: #be123c !important;
  border-color: rgba(225,29,72,.18) !important;
}
@media (max-width: 560px) {
  .bsmp-portal-announcement-card .bsmp-portal-announcement-open {
    grid-template-columns: 1fr !important;
    gap: 10px !important;
    padding: 15px 15px !important;
    border-radius: 22px !important;
  }
  .bsmp-portal-announcement-card .bsmp-portal-announcement-title {
    font-size: 17px !important;
    line-height: 1.3 !important;
  }
  .bsmp-portal-announcement-card .bsmp-portal-announcement-open small {
    font-size: 15px !important;
    -webkit-line-clamp: 3 !important;
  }
  .bsmp-portal-announcement-card .bsmp-portal-announcement-open strong {
    justify-self: start !important;
    max-width: 100% !important;
  }
}

/* Batch 20A: frontend portal license lock notice */
.bsmp-license-locked {
	max-width: 760px;
	margin: 48px auto;
	padding: 28px;
	border-radius: 24px;
	border: 1px solid rgba(124, 23, 58, 0.18);
	background: linear-gradient(135deg, #fff7ed 0%, #eff6ff 100%);
	box-shadow: 0 22px 55px rgba(15, 23, 42, 0.12);
	display: flex;
	gap: 22px;
	align-items: flex-start;
	font-family: inherit;
}
.bsmp-license-locked__icon {
	width: 58px;
	height: 58px;
	border-radius: 20px;
	background: linear-gradient(135deg, #102a5f, #7c173a);
	color: #fff;
	display: grid;
	place-items: center;
	font-size: 28px;
	flex: 0 0 auto;
}
.bsmp-license-locked h2 {
	margin: 0 0 10px;
	font-size: 25px;
	line-height: 1.25;
	color: #102a5f;
}
.bsmp-license-locked p {
	margin: 0 0 14px;
	font-size: 16px;
	color: #334155;
}
.bsmp-license-locked ul {
	margin: 0;
	padding-left: 20px;
	color: #0f172a;
	font-size: 15px;
}
@media (max-width: 640px) {
	.bsmp-license-locked {
		margin: 28px 12px;
		padding: 22px;
		flex-direction: column;
	}
	.bsmp-license-locked h2 {
		font-size: 22px;
	}
}

/* Batch 20J: Student/Teacher portal mobile bottom navigation style controls.
   Style-only override; portal routing, menu items, login and data logic are untouched. */
@media (max-width: 780px) {
  .bsmp-portal-app .bsmp-portal-nav {
    gap: var(--bsmp-portal-nav-gap, 8px) !important;
    padding: var(--bsmp-portal-nav-padding, 10px) !important;
    border-radius: var(--bsmp-portal-nav-radius, 24px) !important;
    min-height: var(--bsmp-portal-nav-height, 86px) !important;
    background: linear-gradient(135deg, var(--bsmp-portal-nav-bg, #0f5e9c), var(--bsmp-portal-nav-bg-dark, #0b6fae)) !important;
    align-items: stretch !important;
  }
  .bsmp-portal-app .bsmp-portal-nav a {
    min-width: var(--bsmp-portal-nav-item-width, 100px) !important;
    color: var(--bsmp-portal-nav-text, #e0f2fe) !important;
    font-size: var(--bsmp-portal-nav-font-size, 13px) !important;
    font-weight: var(--bsmp-portal-nav-font-weight, 900) !important;
    border-radius: calc(var(--bsmp-portal-nav-radius, 24px) - 8px) !important;
  }
  .bsmp-portal-app .bsmp-portal-nav a.active,
  .bsmp-portal-app .bsmp-portal-nav a:hover {
    background: var(--bsmp-portal-nav-active-bg, #ffffff) !important;
    color: var(--bsmp-portal-nav-active-text, #0f5e9c) !important;
  }
  .bsmp-portal-app .bsmp-portal-nav-icon {
    width: calc(var(--bsmp-portal-nav-icon-size, 27px) + 7px) !important;
    height: calc(var(--bsmp-portal-nav-icon-size, 27px) + 7px) !important;
    font-size: var(--bsmp-portal-nav-icon-size, 27px) !important;
  }
}
