/**
 * ABPL core styles: tokens, primitives, forms, tables, feedback.
 */

:root {
	--abpl-primary: #0f766e;
	--abpl-primary-dark: #115e59;
	--abpl-blue: #2563eb;
	--abpl-purple: #7c3aed;
	--abpl-pink: #db2777;
	--abpl-gold: #d4a017;
	--abpl-orange: #ea580c;
	--abpl-success: #16a34a;
	--abpl-warning: #f59e0b;
	--abpl-danger: #dc2626;

	--abpl-bg: #f6f8fb;
	--abpl-card: #ffffff;
	--abpl-text: #111827;
	--abpl-muted: #64748b;
	--abpl-border: #e2e8f0;

	--abpl-radius: 14px;
	--abpl-radius-sm: 9px;
	--abpl-shadow: 0 1px 2px rgba(15, 23, 42, .06), 0 4px 12px rgba(15, 23, 42, .05);
	--abpl-shadow-lg: 0 8px 28px rgba(15, 23, 42, .12);
	--abpl-speed: 220ms;

	/* 2.58.30: spacing scale -- a shared reference so future padding/margin
	   values stop being picked ad hoc per component. Values match the
	   2px-increment grid already dominant across the existing stylesheets
	   (the most common values found in a full audit), so adopting these
	   is non-destructive: every declaration below that already used one of
	   these exact numbers now reads from the same source instead of
	   repeating the literal. New work should reach for one of these first. */
	--abpl-space-1: 2px;
	--abpl-space-2: 4px;
	--abpl-space-3: 6px;
	--abpl-space-4: 8px;
	--abpl-space-5: 10px;
	--abpl-space-6: 12px;
	--abpl-space-7: 14px;
	--abpl-space-8: 16px;
	--abpl-space-9: 18px;
	--abpl-space-10: 20px;
	--abpl-space-11: 22px;
	--abpl-space-12: 24px;
	--abpl-space-13: 32px;
	--abpl-space-14: 40px;

	--abpl-sidebar-w: 260px;
	--abpl-header-h: 62px;
}

.abpl-app,
.abpl-shell {
	color: var(--abpl-text);
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans Bengali", sans-serif;
	font-size: 15px;
	line-height: 1.5;
	-webkit-font-smoothing: antialiased;
}

.abpl-shell *,
.abpl-shell *::before,
.abpl-shell *::after {
	box-sizing: border-box;
}/* --- Typography ---------------------------------------------------------- */

.abpl-h1 { font-size: 1.5rem; font-weight: 700; letter-spacing: -.02em; margin: 0; }
.abpl-tabular { font-variant-numeric: tabular-nums; }/* --- Buttons ------------------------------------------------------------- */

.abpl-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--abpl-space-4);
	padding: var(--abpl-space-5) var(--abpl-space-9);
	min-height: 42px;
	border: 1px solid transparent;
	border-radius: var(--abpl-radius-sm);
	background: var(--abpl-primary);
	color: #fff;
	font-size: .9rem;
	font-weight: 600;
	cursor: pointer;
	text-decoration: none;
	transition: background var(--abpl-speed) ease, transform var(--abpl-speed) ease, box-shadow var(--abpl-speed) ease;
}

.abpl-btn:hover { background: var(--abpl-primary-dark); color: #fff; }
.abpl-btn:active { transform: translateY(1px); }
.abpl-btn:focus-visible { outline: 3px solid color-mix(in srgb, var(--abpl-primary) 45%, transparent); outline-offset: 2px; }
.abpl-btn[disabled], .abpl-btn.is-loading { opacity: .6; cursor: not-allowed; }
.abpl-btn--block { display: flex; width: 100%; }

.abpl-btn--ghost:hover { background: #f1f5f9; color: var(--abpl-text); }
.abpl-btn--danger:hover { background: #b91c1c; }
.abpl-btn--success:hover { background: #15803d; }/* --- Forms --------------------------------------------------------------- */

.abpl-field { margin-bottom: var(--abpl-space-8); }

.abpl-label {
	display: block;
	margin-bottom: var(--abpl-space-3);
	font-size: .8125rem;
	font-weight: 600;
	color: #334155;
}

.abpl-label .abpl-req { color: var(--abpl-danger); }/* Password field with a show/hide eye. */

.abpl-password { position: relative; }
.abpl-password .abpl-input { padding-right: 46px; }/* Searchable dropdown. */

.abpl-combo { position: relative; }

.abpl-combo-menu[hidden] { display: none; }

.abpl-combo-option:hover,
.abpl-combo-option[aria-selected="true"] { background: #f1f5f9; }
.abpl-combo-option small { display: block; color: var(--abpl-muted); font-size: .75rem; }/* --- Cards --------------------------------------------------------------- *//* --- Tables -------------------------------------------------------------- */

.abpl-table-wrap { width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }/* --- Badges -------------------------------------------------------------- */

.abpl-badge {
	display: inline-flex;
	align-items: center;
	gap: var(--abpl-space-3);
	padding: var(--abpl-space-2) var(--abpl-space-5);
	border-radius: 999px;
	background: #f1f5f9;
	color: #475569;
	font-size: .75rem;
	font-weight: 600;
	white-space: nowrap;
}/* --- Progress ------------------------------------------------------------ */

.abpl-progress {
	position: relative;
	height: 9px;
	border-radius: 999px;
	background: #e8edf4;
	overflow: hidden;
}

.abpl-progress--gold .abpl-progress__bar { background: linear-gradient(90deg, var(--abpl-orange), var(--abpl-gold)); }
.abpl-progress--success .abpl-progress__bar { background: linear-gradient(90deg, var(--abpl-success), #22c55e); }/* --- Feedback ------------------------------------------------------------ */

@keyframes abpl-toast-in {
	from { opacity: 0; transform: translateY(10px); }
	to   { opacity: 1; transform: translateY(0); }
}

.abpl-empty h3 { margin: 0 0 var(--abpl-space-3); font-size: 1rem; }
.abpl-empty p { margin: 0 0 var(--abpl-space-8); color: var(--abpl-muted); font-size: .875rem; }/* Loading skeletons keep the layout still while data arrives. */

.abpl-skeleton {
	border-radius: 7px;
	background: linear-gradient(90deg, #eef2f7 25%, #e2e8f0 37%, #eef2f7 63%);
	background-size: 400% 100%;
	animation: abpl-shimmer 1.3s ease infinite;
}

@keyframes abpl-shimmer {
	from { background-position: 100% 50%; }
	to   { background-position: 0 50%; }
}/* --- Modal --------------------------------------------------------------- */

@keyframes abpl-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes abpl-pop  { from { opacity: 0; transform: translateY(14px) scale(.98); } to { opacity: 1; transform: none; } }/* --- Utilities ----------------------------------------------------------- */

.abpl-row { display: flex; align-items: center; gap: var(--abpl-space-5); }
.abpl-stack > * + * { margin-top: var(--abpl-space-7); }
.abpl-hide { display: none !important; }

.abpl-sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

@media (prefers-reduced-motion: reduce) {
	.abpl-shell *,
	.abpl-shell *::before,
	.abpl-shell *::after {
		animation-duration: .01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .01ms !important;
	}
}/* Investor creation modal */
.abpl-modal[hidden] { display: none !important; }
.abpl-modal {
	position: fixed;
	inset: 0;
	z-index: 9999;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: var(--abpl-space-10);
	background: rgba(15, 23, 42, .55);
	animation: abpl-fade 180ms ease;
}
.abpl-modal__backdrop{position:absolute;inset:0;background:rgba(15,23,42,.55)}
.abpl-modal__dialog{position:relative;background:#fff;border-radius:18px;max-width:900px;width:100%;max-height:90vh;overflow:auto;padding: var(--abpl-space-12);box-shadow:0 25px 70px rgba(0,0,0,.25)}
.abpl-modal__close{position:absolute;right:16px;top:12px;border:0;background:#f1f5f9;width:34px;height:34px;border-radius:50%;font-size:24px;cursor:pointer}
.abpl-modal-open{overflow:hidden}
