:root {
  --sv-primary: #163b65;
  --sv-primary-bright: #24659f;
  --sv-ink: #142033;
  --sv-muted: #66758a;
  --sv-surface: #f3f6fa;
  --sv-border: #dfe6ee;
}

body { background: var(--sv-surface); color: var(--sv-ink); }
.role-hidden { display: none !important; }
.btn-primary { --bs-btn-bg: var(--sv-primary); --bs-btn-border-color: var(--sv-primary); --bs-btn-hover-bg: #0e2c4e; --bs-btn-hover-border-color: #0e2c4e; }
.text-primary { color: var(--sv-primary-bright) !important; }
.login-shell { position: relative; display: grid; min-height: 100vh; place-items: center; overflow: hidden; padding: 2rem 1rem; background: radial-gradient(circle at 78% 18%, rgba(74,176,198,.45), transparent 30%), linear-gradient(145deg, #0a233e, #175684); }
.login-shell::before, .login-shell::after { content: ""; position: absolute; border: 1px solid rgba(255,255,255,.14); border-radius: 50%; pointer-events: none; }
.login-shell::before { width: 520px; height: 520px; right: -150px; top: -180px; }
.login-shell::after { width: 340px; height: 340px; left: -140px; bottom: -170px; }
.login-card { position: relative; z-index: 1; width: min(100%, 460px); padding: 2.75rem; border: 1px solid rgba(255,255,255,.55); border-radius: 24px; background: #fff; box-shadow: 0 28px 80px rgba(4,25,45,.3); }
.login-logo { display: block; width: 200px; height: 200px; margin: 0 auto 1.35rem; object-fit: contain; }
.login-card h1, .login-card .form-label { color: var(--sv-primary); }
.login-card .form-label { font-weight: 600; }
.eyebrow { font-size: .73rem; font-weight: 800; letter-spacing: .16em; }
.header-logo { display: block; width: min(300px, 55vw); height: auto; }
.form-control, .form-select { border-color: var(--sv-border); min-height: 44px; }
.form-control:focus, .form-select:focus { border-color: #75a7cf; box-shadow: 0 0 0 .2rem rgba(36, 101, 159, .12); }
.app-navbar { min-height: 105px; background: rgba(255,255,255,.96); border-bottom: 1px solid var(--sv-border); backdrop-filter: blur(12px); }
.navbar-brand { color: var(--sv-ink); font-weight: 800; letter-spacing: -.02em; }
.role-label { color: var(--sv-muted); font-size: .72rem; text-transform: uppercase; letter-spacing: .08em; }
.sidebar { min-height: calc(100vh - 105px); background: white; border-right: 1px solid var(--sv-border); }
.sidebar .nav-link { color: #536174; border-radius: 9px; text-align: left; font-weight: 600; padding: .7rem .85rem; white-space: nowrap; }
.sidebar .nav-link.active { color: white; background: var(--sv-primary); }
.sidebar-menu-toggle { display: flex; justify-content: space-between; align-items: center; width: 100%; }
.sidebar-menu-toggle span { transition: transform .2s ease; }
.sidebar-menu-toggle[aria-expanded="true"] span { transform: rotate(180deg); }
.sidebar-submenu { display: grid; gap: .2rem; padding-left: .85rem; }
.sidebar-submenu .nav-link { border-left: 2px solid var(--sv-border); border-radius: 0 9px 9px 0; padding-left: 1rem; }
.files-scope-select { max-width: 280px; }
.logo-preview { display: block; width: 88px; height: 64px; object-fit: contain; border: 1px solid var(--sv-border); border-radius: 8px; background: white; }
.page-heading h1 { letter-spacing: -.03em; }
.panel-card { border: 1px solid var(--sv-border); border-radius: 14px; box-shadow: 0 8px 30px rgba(34, 55, 82, .045); }
.metric-card { border: 0; color: white; background: linear-gradient(135deg, #163b65, #245f91); }
.metric-card .metric-value { font-size: 2rem; font-weight: 800; letter-spacing: -.04em; }
.notice-item + .notice-item { border-top: 1px solid var(--sv-border); }
.notice-meta { color: var(--sv-muted); font-size: .78rem; }
.profile-card { max-width: 760px; }
.profile-avatar { display: grid; place-items: center; width: 74px; height: 74px; flex: 0 0 74px; border-radius: 20px; background: #dceaf6; color: var(--sv-primary); font-size: 1.45rem; font-weight: 800; }
img.profile-avatar { display: block; object-fit: cover; }
.profile-details dt { color: var(--sv-muted); font-weight: 500; }
.profile-details dd { font-weight: 600; }
.table > :not(caption) > * > * { padding: .9rem 1rem; border-color: #edf1f5; }
.table thead th { color: #718096; background: #f8fafc; font-size: .72rem; text-transform: uppercase; letter-spacing: .07em; white-space: nowrap; }
.user-cell { min-width: 220px; }
.user-avatar { display: grid; place-items: center; width: 38px; height: 38px; flex: 0 0 38px; border-radius: 10px; color: var(--sv-primary); background: #e5eff7; font-weight: 800; font-size: .82rem; }
img.user-avatar { display: block; object-fit: cover; }
.selection-list { max-height: 620px; overflow-y: auto; }
.selection-row { display: flex; align-items: center; gap: .8rem; padding: .85rem 1rem; border-top: 1px solid #edf1f5; }
.selection-row:hover { background: #f8fafc; }
@font-face { font-family: 'Nunito Card'; src: url('/portal/assets/fonts/Nunito-Bold.ttf') format('truetype'); font-style: normal; font-weight: 700; font-display: swap; }
.membership-card-previews { display: grid; gap: 1.25rem; }
.membership-card-preview { position: relative; width: min(100%, 525px); aspect-ratio: 84 / 52; overflow: hidden; background: #fff; border: 1px solid #d1d5db; box-shadow: 0 4px 18px rgba(20,32,51,.1); color: #050505; font-family: 'Nunito Card', sans-serif; font-weight: 700; }
.membership-card-heading { position: absolute; top: 5%; left: 3%; width: 64%; z-index: 1; text-align: center; font-size: clamp(10px, 1.6vw, 17px); font-weight: 800; line-height: 1.12; white-space: nowrap; }
.membership-card-heading small { display: block; margin-top: 1%; font-size: .8em; }
.membership-card-fields { position: absolute; top: 32%; left: 5.5%; width: 55%; z-index: 1; display: grid; gap: 7%; height: 36%; }
.membership-card-fields > div { display: grid; grid-template-columns: 24% minmax(0, 1fr); align-items: center; font-size: clamp(9px, 1.4vw, 14px); }
.membership-card-fields strong { font-weight: 700; white-space: nowrap; }
.membership-card-fields span { display: block; overflow: hidden; padding: 2% 6%; border-radius: 4px; background: #0053af; color: #fff; text-overflow: ellipsis; white-space: nowrap; }
.membership-card-small-logo { position: absolute; left: 3.5%; bottom: 5%; width: 14%; height: 12%; object-fit: contain; }
.membership-card-blue-side { position: absolute; inset: 0; isolation: isolate; pointer-events: none; }
.membership-card-blue-side::before { content: ''; position: absolute; inset: 0 0 0 auto; width: 35%; background: linear-gradient(65deg, #0053af 65%, #1a3987 65%); clip-path: polygon(0 0,100% 0,100% 100%,34% 100%,47% 90%); }
.membership-card-blue-side::after { content: ''; position: absolute; top: 23.2%; right: 0; width: 35%; height: 56.3%; border-radius: 12px 0 0 12px; background: #0053af; }
.membership-card-blue-side img { position: absolute; z-index: 1; top: 32.2%; left: 72.2%; width: 20.8%; height: 36.3%; object-fit: fill; }
.membership-card-top-accent { position: absolute; top: 0; left: 0; width: 54%; height: 4%; background: #0053af; border-radius: 0 0 30px 0; }
.membership-card-back-logo { position: absolute; top: 27%; left: 37%; width: 26%; height: 46%; object-fit: contain; }
.membership-card-contact { position: absolute; inset: 0; font-size: clamp(8px, 1.3vw, 13px); white-space: nowrap; }
.membership-card-contact img { position: absolute; bottom: 6%; width: 4.3%; height: 7.6%; object-fit: contain; }
.membership-card-contact span { position: absolute; bottom: 7.5%; line-height: 1; }
.membership-card-icon-www { left: 3.1%; }
.membership-card-www { left: 7.8%; }
.membership-card-icon-mail { left: 28.8%; }
.membership-card-email { left: 33.3%; }
.membership-card-bottom-accent { position: absolute; bottom: 0; right: 0; width: 46%; height: 4%; background: #0053af; border-radius: 30px 0 0 0; }
.generator-card { top: 120px; }
.admin-gallery-image { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; background: #e8edf3; }
.admin-gallery-card { overflow: hidden; }
.empty-state { padding: 2.2rem 1rem; color: var(--sv-muted); text-align: center; }
.toast { border: 0; box-shadow: 0 12px 40px rgba(20, 32, 51, .15); }

@media (max-width: 991.98px) {
  .sidebar { min-height: auto; border-right: 0; border-bottom: 1px solid var(--sv-border); overflow-x: auto; }
  .sidebar .nav { flex-wrap: nowrap; }
}

@media (max-width: 575.98px) {
  .app-navbar { min-height: 76px; }
  .login-card { padding: 2rem 1.35rem; border-radius: 18px; }
  .login-logo { width: 70px; height: 70px; }
}
