/**
 * Flipside CRM — Customer Portal Styles
 * Scoped to .fscrm-portal to avoid conflicts with themes.
 */

/* ── Root variables ─────────────────────────────────────────────────────── */
.fscrm-portal {
	--portal-bg:        #f5f8f6;
	--portal-card-bg:   #ffffff;
	--portal-border:    #dbe7df;
	--portal-text:      #102317;
	--portal-text-muted:#557061;
	--portal-primary:   #184b2c;
	--portal-primary-h: #103520;
	--portal-accent:    #9ed2ac;
	--portal-radius:    24px;
	--portal-font:      "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	font-family:        var(--portal-font);
	color:              var(--portal-text);
	background:         var(--portal-bg);
	padding:            24px;
	border-radius:      var(--portal-radius);
}

/* ── Header ─────────────────────────────────────────────────────────────── */
.fscrm-portal__header {
	margin-bottom: 20px;
}

.fscrm-portal__welcome {
	font-size:   1.1em;
	font-weight: 600;
	color:       var(--portal-text);
}

/* ── Tabs ───────────────────────────────────────────────────────────────── */
.fscrm-portal__tabs {
	display:         flex;
	gap:             4px;
	border-bottom:   2px solid var(--portal-border);
	margin-bottom:   24px;
	overflow-x:      auto;
}

.fscrm-portal__tab {
	display:         inline-block;
	padding:         10px 18px;
	font-size:       0.9em;
	font-weight:     500;
	color:           var(--portal-text-muted);
	text-decoration: none;
	border-radius:   6px 6px 0 0;
	border:          1px solid transparent;
	border-bottom:   none;
	transition:      color 0.15s, background 0.15s;
	white-space:     nowrap;
}

.fscrm-portal__tab:hover {
	color:      var(--portal-primary);
	background: rgba(79, 70, 229, 0.05);
}

.fscrm-portal__tab.is-active {
	color:            var(--portal-primary);
	background:       var(--portal-card-bg);
	border-color:     var(--portal-border);
	border-bottom-color: var(--portal-card-bg);
	margin-bottom:    -2px;
}

/* ── Table ──────────────────────────────────────────────────────────────── */
.fscrm-portal__table {
	width:           100%;
	border-collapse: collapse;
	background:      var(--portal-card-bg);
	border-radius:   var(--portal-radius);
	overflow:        hidden;
	box-shadow:      0 1px 3px rgba(0,0,0,0.06);
}

.fscrm-portal__table thead th {
	background:    var(--portal-bg);
	color:         var(--portal-text-muted);
	font-size:     0.78em;
	font-weight:   600;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	padding:       10px 14px;
	text-align:    left;
	border-bottom: 1px solid var(--portal-border);
}

.fscrm-portal__table tbody tr {
	border-bottom: 1px solid var(--portal-border);
	transition:    background 0.1s;
}

.fscrm-portal__table tbody tr:last-child {
	border-bottom: none;
}

.fscrm-portal__table tbody tr:hover {
	background: rgba(79, 70, 229, 0.03);
}

.fscrm-portal__table td {
	padding:    12px 14px;
	font-size:  0.9em;
	color:      var(--portal-text);
}

.fscrm-portal__amount {
	font-weight: 600;
}

/* ── Status badges ──────────────────────────────────────────────────────── */
.fscrm-portal__badge {
	display:       inline-block;
	padding:       3px 10px;
	border-radius: 999px;
	font-size:     0.78em;
	font-weight:   600;
	text-transform: capitalize;
	background:    #e2e8f0;
	color:         #475569;
}

.fscrm-portal__badge--paid      { background: #dcfce7; color: #15803d; }
.fscrm-portal__badge--sent      { background: #dbeafe; color: #1d4ed8; }
.fscrm-portal__badge--overdue   { background: #fee2e2; color: #dc2626; }
.fscrm-portal__badge--draft     { background: #f1f5f9; color: #64748b; }
.fscrm-portal__badge--cancelled { background: #f1f5f9; color: #94a3b8; }
.fscrm-portal__badge--part_paid { background: #fef3c7; color: #d97706; }
.fscrm-portal__badge--accepted  { background: #dcfce7; color: #15803d; }
.fscrm-portal__badge--declined  { background: #fee2e2; color: #dc2626; }
.fscrm-portal__badge--approved  { background: #dcfce7; color: #15803d; }
.fscrm-portal__badge--pending   { background: #fef3c7; color: #d97706; }

/* ── Action buttons ─────────────────────────────────────────────────────── */
.fscrm-portal__actions {
	white-space: nowrap;
}

.fscrm-portal__btn,
.fscrm-portal__action-btn {
	display:          inline-block;
	padding:          11px 18px;
	border-radius:    999px;
	font-size:        0.92em;
	font-weight:      600;
	cursor:           pointer;
	text-decoration:  none;
	border:           none;
	transition:       background 0.15s, color 0.15s, transform 0.15s, box-shadow 0.15s;
}

.fscrm-portal__btn {
	background: var(--portal-primary);
	color:      #fff;
	box-shadow: 0 16px 28px rgba(24, 75, 44, 0.16);
}

.fscrm-portal__btn:hover {
	background: var(--portal-primary-h);
	color:      #fff;
	transform: translateY(-1px);
}

.fscrm-portal__action-btn--pay {
	background: var(--portal-primary);
	color:      #fff;
}

.fscrm-portal__action-btn--accept {
	background: #16a34a;
	color:      #fff;
	margin-right: 4px;
}

.fscrm-portal__action-btn--decline {
	background: #fff;
	color:      #dc2626;
	border:     1px solid #fca5a5;
}

.fscrm-portal__action-btn--accept:hover { background: #15803d; }
.fscrm-portal__action-btn--decline:hover { background: #fee2e2; }
.fscrm-portal__action-btn--pay:hover { background: var(--portal-primary-h); }

.fscrm-portal__action-btn[disabled] {
	opacity: 0.5;
	cursor:  not-allowed;
}

/* ── Empty state ────────────────────────────────────────────────────────── */
.fscrm-portal__empty {
	padding:    40px 20px;
	text-align: center;
	color:      var(--portal-text-muted);
	font-size:  0.95em;
}

/* ── Login / no-record cards ────────────────────────────────────────────── */
.fscrm-portal--login .fscrm-portal__card,
.fscrm-portal--empty .fscrm-portal__card {
	max-width:   560px;
	margin:      40px auto;
	background:  var(--portal-card-bg);
	border:      1px solid var(--portal-border);
	border-radius: var(--portal-radius);
	padding:     44px 36px;
	text-align:  left;
	box-shadow:  0 30px 60px rgba(16, 35, 23, 0.08);
}

.fscrm-portal__eyebrow {
	display: inline-flex;
	align-items: center;
	padding: 8px 12px;
	margin-bottom: 18px;
	border-radius: 999px;
	background: #eef6f0;
	color: var(--portal-primary);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.fscrm-portal__brand {
	margin-bottom: 18px;
}

.fscrm-portal__brand-logo {
	max-width: 240px;
	height: auto;
	display: block;
}

.fscrm-portal__icon {
	font-size: 2.5em;
	margin-bottom: 12px;
}

.fscrm-portal__heading {
	font-size:   clamp(1.8rem, 3vw, 2.4rem);
	font-weight: 700;
	line-height: 1.05;
	margin:      0 0 14px;
	color:       var(--portal-text);
}

.fscrm-portal__subtext {
	color:       var(--portal-text-muted);
	font-size:   1rem;
	margin:      0 0 24px;
	line-height: 1.7;
}

.fscrm-portal__notice {
	padding:       12px 16px;
	border-radius: 14px;
	margin-bottom: 16px;
	font-size:     14px;
	line-height:   1.55;
}

.fscrm-portal__notice--error {
	background: #fef2f2;
	color:      #b91c1c;
	border:     1px solid #fecaca;
}

.fscrm-portal__login-form .login-username,
.fscrm-portal__login-form .login-password,
.fscrm-portal__login-form .login-remember,
.fscrm-portal__login-form .login-submit {
	margin: 0 0 16px;
}

.fscrm-portal__login-form label {
	display: block;
	margin-bottom: 6px;
	color: var(--portal-text);
	font-weight: 600;
}

.fscrm-portal__login-form input[type="text"],
.fscrm-portal__login-form input[type="password"] {
	width: 100%;
	padding: 14px 16px;
	border-radius: 16px;
	border: 1px solid var(--portal-border);
	background: #fbfdfb;
	color: var(--portal-text);
	font-size: 15px;
}

.fscrm-portal__login-form input[type="text"]:focus,
.fscrm-portal__login-form input[type="password"]:focus {
	border-color: var(--portal-primary);
	outline: 2px solid rgba(24, 75, 44, 0.12);
	outline-offset: 1px;
}

.fscrm-portal__login-form .login-remember label {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-weight: 500;
	color: var(--portal-text-muted);
}

.fscrm-portal__login-form .login-submit input[type="submit"] {
	width: 100%;
	padding: 14px 20px;
	border: 0;
	border-radius: 999px;
	background: var(--portal-primary);
	color: #fff;
	font-weight: 700;
	font-size: 15px;
	box-shadow: 0 16px 28px rgba(24, 75, 44, 0.16);
	cursor: pointer;
}

.fscrm-portal__login-form .login-submit input[type="submit"]:hover {
	background: var(--portal-primary-h);
}

.fscrm-portal__login-links {
	display: flex;
	flex-wrap: wrap;
	gap: 14px 22px;
	margin-top: 10px;
	font-size: 14px;
}

.fscrm-portal__login-links a {
	color: var(--portal-primary);
	text-decoration: none;
}

.fscrm-portal__login-links a:hover {
	text-decoration: underline;
}

/* ── Loading spinner ────────────────────────────────────────────────────── */
.fscrm-portal__spinner {
	display:           inline-block;
	width:             16px;
	height:            16px;
	border:            2px solid var(--portal-border);
	border-top-color:  var(--portal-primary);
	border-radius:     50%;
	animation:         fscrm-portal-spin 0.7s linear infinite;
	vertical-align:    middle;
	margin-right:      8px;
}

@keyframes fscrm-portal-spin {
	to { transform: rotate(360deg); }
}

.fscrm-portal-section__loading {
	padding:    24px;
	text-align: center;
	color:      var(--portal-text-muted);
}

/* ── Error ──────────────────────────────────────────────────────────────── */
.fscrm-portal-section__error {
	padding:       12px 16px;
	background:    #fee2e2;
	color:         #dc2626;
	border-radius: 6px;
	margin-bottom: 12px;
	font-size:     0.9em;
}

/* ── Pagination ─────────────────────────────────────────────────────────── */
.fscrm-portal__pagination {
	display:         flex;
	gap:             4px;
	justify-content: flex-end;
	margin-top:      16px;
}

.fscrm-portal__page-btn {
	padding:       5px 12px;
	border:        1px solid var(--portal-border);
	border-radius: 4px;
	background:    var(--portal-card-bg);
	color:         var(--portal-text);
	font-size:     0.85em;
	cursor:        pointer;
}

.fscrm-portal__page-btn.is-active {
	background:   var(--portal-primary);
	color:        #fff;
	border-color: var(--portal-primary);
}

/* ── Messages ───────────────────────────────────────────────────────────── */
.fscrm-portal__conversations {
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.fscrm-portal__conversation-card {
	background:    var(--portal-card-bg);
	border:        1px solid var(--portal-border);
	border-radius: var(--portal-radius);
	padding:       16px;
}

.fscrm-portal__conversation-meta {
	display:         flex;
	justify-content: space-between;
	margin-bottom:   12px;
	font-size:       0.82em;
	color:           var(--portal-text-muted);
}

.fscrm-portal__message {
	display:         flex;
	flex-direction:  column;
	margin-bottom:   8px;
}

.fscrm-portal__message--outbound {
	align-items: flex-end;
}

.fscrm-portal__message-text {
	display:       inline-block;
	max-width:     80%;
	padding:       8px 12px;
	border-radius: 8px;
	font-size:     0.9em;
	background:    var(--portal-bg);
	color:         var(--portal-text);
}

.fscrm-portal__message--outbound .fscrm-portal__message-text {
	background: var(--portal-primary);
	color:      #fff;
}

.fscrm-portal__message-time {
	font-size: 0.75em;
	color:     var(--portal-text-muted);
	margin-top: 3px;
}

/* ── Responsive ─────────────────────────────────────────────────────────── */
@media (max-width: 600px) {
	.fscrm-portal {
		padding: 16px;
	}

	.fscrm-portal--login .fscrm-portal__card,
	.fscrm-portal--empty .fscrm-portal__card {
		padding: 28px 22px;
	}

	.fscrm-portal__table thead {
		display: none;
	}

	.fscrm-portal__table,
	.fscrm-portal__table tbody,
	.fscrm-portal__table tr,
	.fscrm-portal__table td {
		display: block;
		width:   100%;
	}

	.fscrm-portal__table tr {
		border:        1px solid var(--portal-border);
		border-radius: var(--portal-radius);
		margin-bottom: 10px;
		padding:       10px;
	}

	.fscrm-portal__table td {
		padding: 4px 8px;
	}
}
