/* ==========================================================================
   Members Directory — Card grid with search and view toggle
   ========================================================================== */

.members-page {
	max-width: var(--sc-content-max);
	margin: 0 auto;
}

/* ── Toolbar ────────────────────────────────────────────────────────────── */

.fm__toolbar {
	max-width: var(--sc-content-max);
	margin: 0 auto;
	padding: 0 var(--sc-space-lg) var(--sc-space-md);
	display: flex;
	align-items: center;
	gap: var(--sc-space-sm);
}

.fm__search {
	flex: 1;
	max-width: 320px;
	position: relative;
}

.fm__search-icon {
	position: absolute;
	left: 12px;
	top: 50%;
	transform: translateY(-50%);
	width: 16px;
	height: 16px;
	color: var(--sc-text-tertiary);
	pointer-events: none;
}

.fm__search-input {
	width: 100%;
	font-family: var(--sc-font-ui);
	font-size: var(--sc-text-sm);
	color: var(--sc-text-primary);
	background: var(--sc-surface);
	border: var(--sc-border-width) solid var(--sc-border);
	border-radius: var(--sc-radius-md);
	padding: 8px 14px 8px 36px;
	outline: none;
	transition: border-color var(--sc-transition-fast);
}

.fm__search-input:focus { border-color: var(--sc-rust-soft); }
.fm__search-input::placeholder { color: var(--sc-text-tertiary); }

/* ── View Toggle ────────────────────────────────────────────────────────── */

.fm__view-toggle {
	display: flex;
	background: var(--sc-cream-dark);
	border-radius: var(--sc-radius-md);
	padding: 3px;
	gap: 2px;
}

.fm__view-btn {
	width: 32px;
	height: 28px;
	border: none;
	background: none;
	border-radius: var(--sc-radius-sm);
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	color: var(--sc-text-tertiary);
	transition: all var(--sc-transition-fast);
}

.fm__view-btn:hover { color: var(--sc-bark); }

.fm__view-btn.active {
	background: var(--sc-surface);
	color: var(--sc-rust);
	box-shadow: var(--sc-shadow-xs);
}

.fm__view-btn svg {
	width: 16px;
	height: 16px;
}

/* ── Member Count ───────────────────────────────────────────────────────── */

.fm__member-count {
	font-family: var(--sc-font-ui);
	font-size: var(--sc-text-xs);
	color: var(--sc-text-tertiary);
}

/* ── Card Grid ──────────────────────────────────────────────────────────── */

.fm__grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
	gap: 14px;
}

/* ── Member Card ────────────────────────────────────────────────────────── */

.fm__card {
	background: var(--sc-surface);
	border: var(--sc-border-width) solid var(--sc-border-subtle);
	border-radius: var(--sc-radius-lg);
	padding: 20px;
	position: relative;
	transition: border-color var(--sc-transition-fast), box-shadow var(--sc-transition-fast);
}

.fm__card:hover {
	border-color: var(--sc-sand);
	box-shadow: var(--sc-shadow-sm);
}

/* Current user indicator */
.fm__card--you {
	border-color: var(--sc-sand);
	background: rgba(212, 197, 171, 0.06);
}

/* New member highlight */
.fm__card--new::after {
	content: 'New';
	position: absolute;
	top: 12px;
	right: 12px;
	font-family: var(--sc-font-ui);
	font-size: 0.58rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--sc-sage);
	background: rgba(107, 127, 94, 0.08);
	padding: 2px 7px;
	border-radius: 4px;
}

/* Card header: avatar + role badge */
.fm__card-header {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	margin-bottom: 14px;
}

.fm__avatar {
	width: 52px;
	height: 52px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--sc-font-ui);
	font-size: 1rem;
	font-weight: var(--sc-weight-semibold);
	color: white;
	flex-shrink: 0;
}

.fm__avatar--photo {
	overflow: hidden;
}

.fm__avatar--photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Role badges */
.fm__role-badge {
	font-family: var(--sc-font-ui);
	font-size: 0.6rem;
	font-weight: var(--sc-weight-semibold);
	text-transform: uppercase;
	letter-spacing: 0.03em;
	padding: 3px 8px;
	border-radius: var(--sc-radius-sm);
	margin-top: 4px;
}

.fm__role-badge--admin {
	color: var(--sc-rust);
	background: rgba(184, 96, 63, 0.08);
}

.fm__role-badge--manager {
	color: var(--sc-bark);
	background: rgba(92, 64, 51, 0.06);
}

.fm__role-badge--member {
	color: var(--sc-text-tertiary);
	background: var(--sc-cream-dark);
}

/* Card body */
.fm__card-body {
	min-width: 0;
}

.fm__name {
	font-family: var(--sc-font-ui);
	font-size: 0.92rem;
	font-weight: var(--sc-weight-semibold);
	color: var(--sc-bark);
	margin-bottom: 2px;
}

.fm__known-as {
	font-family: var(--sc-font-body);
	font-size: 0.78rem;
	font-style: italic;
	color: var(--sc-text-tertiary);
	margin-bottom: 12px;
}

/* Contribution stats */
.fm__stats {
	display: flex;
	gap: 12px;
	margin-bottom: 10px;
}

.fm__stat {
	display: flex;
	align-items: center;
	gap: 4px;
	font-family: var(--sc-font-ui);
	font-size: 0.75rem;
	font-weight: var(--sc-weight-medium);
	color: var(--sc-bark-faint);
}

.fm__stat svg {
	width: 13px;
	height: 13px;
	flex-shrink: 0;
}

.fm__joined {
	font-family: var(--sc-font-ui);
	font-size: 0.68rem;
	color: var(--sc-text-tertiary);
}

/* ── Character link status ─────────────────────────────────────────────── */

.fm__char-linked,
.fm__char-unlinked {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	margin-top: 8px;
	font-family: var(--sc-font-ui);
	font-size: 0.7rem;
	font-weight: 500;
	border-radius: var(--sc-radius-full);
	padding: 3px 9px 3px 6px;
	line-height: 1.3;
	transition: background var(--sc-transition-fast), color var(--sc-transition-fast);
	text-decoration: none;
	cursor: pointer;
	border: none;
}

.fm__char-linked {
	background: rgba(107, 127, 94, 0.1);
	color: var(--sc-sage);
}

.fm__char-linked:hover {
	background: rgba(107, 127, 94, 0.18);
	color: var(--sc-sage);
}

.fm__char-unlinked {
	background: rgba(184, 96, 63, 0.08);
	color: var(--sc-rust);
}

.fm__char-unlinked:hover {
	background: rgba(184, 96, 63, 0.15);
}

.fm__char-linked svg,
.fm__char-unlinked svg {
	width: 11px;
	height: 11px;
	stroke: currentColor;
	fill: none;
	flex-shrink: 0;
}

/* ── Link Character Modal ─────────────────────────────────────────────── */

/* Member identity strip at top of modal */
.lc-member-strip {
	display: flex;
	align-items: center;
	gap: var(--sc-space-sm);
	padding: var(--sc-space-sm) var(--sc-space-md);
	background: var(--sc-cream);
	border-radius: var(--sc-radius-md);
	margin-bottom: var(--sc-space-md);
}

.lc-member-strip__avatar {
	width: 40px;
	height: 40px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 0.85rem;
	font-weight: 600;
	font-family: var(--sc-font-ui);
	color: white;
	flex-shrink: 0;
}

.lc-member-strip__avatar--photo {
	overflow: hidden;
	background: var(--sc-border);
}

.lc-member-strip__avatar--photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.lc-member-strip__info {
	display: flex;
	flex-direction: column;
	gap: 1px;
}

.lc-member-strip__name {
	font-family: var(--sc-font-ui);
	font-size: 0.9rem;
	font-weight: 600;
	color: var(--sc-charcoal);
}

.lc-member-strip__known-as {
	font-family: var(--sc-font-ui);
	font-size: 0.75rem;
	color: var(--sc-text-tertiary);
}

/* Mode tab switcher */
.lc-mode-tabs {
	display: flex;
	gap: 6px;
	margin-bottom: var(--sc-space-md);
	border-bottom: 1px solid var(--sc-border-subtle);
	padding-bottom: var(--sc-space-md);
}

.lc-mode-tab {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 7px 14px;
	border-radius: var(--sc-radius-md);
	border: 1px solid var(--sc-border);
	background: var(--sc-surface);
	font-family: var(--sc-font-ui);
	font-size: 0.82rem;
	font-weight: 500;
	color: var(--sc-text-secondary);
	cursor: pointer;
	transition: all var(--sc-transition-fast);
}

.lc-mode-tab svg {
	width: 14px;
	height: 14px;
	stroke: currentColor;
	fill: none;
	flex-shrink: 0;
}

.lc-mode-tab:hover {
	border-color: var(--sc-rust-soft);
	color: var(--sc-bark);
}

.lc-mode-tab--active {
	background: var(--sc-rust);
	border-color: var(--sc-rust);
	color: white;
}

.lc-mode-tab--active:hover {
	background: var(--sc-bark);
	border-color: var(--sc-bark);
	color: white;
}

/* Character list (match mode) */
.lc-char-list {
	max-height: 240px;
	overflow-y: auto;
	border: 1px solid var(--sc-border);
	border-radius: var(--sc-radius-md);
	margin-top: var(--sc-space-xs);
}

.lc-char-option {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 10px 14px;
	cursor: pointer;
	transition: background var(--sc-transition-fast);
	border-bottom: 1px solid var(--sc-border-subtle);
}

.lc-char-option:last-child { border-bottom: none; }

.lc-char-option:hover { background: var(--sc-cream); }

.lc-char-option--selected { background: rgba(184, 96, 63, 0.06); }

.lc-char-option__avatar {
	width: 32px;
	height: 32px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 0.72rem;
	font-weight: 600;
	font-family: var(--sc-font-ui);
	color: white;
	flex-shrink: 0;
}

.lc-char-option__name {
	flex: 1;
	font-family: var(--sc-font-ui);
	font-size: 0.88rem;
	color: var(--sc-charcoal);
}

.lc-char-option__check {
	width: 16px;
	height: 16px;
	stroke: var(--sc-rust);
	fill: none;
	flex-shrink: 0;
}

/* Notes / info text */
.lc-create-note {
	display: flex;
	align-items: flex-start;
	gap: 7px;
	font-family: var(--sc-font-ui);
	font-size: 0.75rem;
	color: var(--sc-text-tertiary);
	background: var(--sc-accent-subtle);
	border-radius: var(--sc-radius-sm);
	padding: var(--sc-space-xs) var(--sc-space-sm);
	margin-top: var(--sc-space-sm);
	line-height: 1.5;
}

.lc-create-note svg {
	width: 13px;
	height: 13px;
	stroke: var(--sc-accent);
	fill: none;
	flex-shrink: 0;
	margin-top: 1px;
}

.lc-empty {
	padding: var(--sc-space-md);
	font-family: var(--sc-font-ui);
	font-size: 0.82rem;
	color: var(--sc-text-tertiary);
	text-align: center;
}

.lc-error {
	font-family: var(--sc-font-ui);
	font-size: 0.82rem;
	color: var(--sc-error);
	padding: var(--sc-space-xs) 0;
	margin: 0 0 var(--sc-space-sm);
}

/* Send prompt button (bottom-right corner) */
.fm__send-prompt {
	position: absolute;
	bottom: 16px;
	right: 16px;
	width: 32px;
	height: 32px;
	border-radius: var(--sc-radius-md);
	border: var(--sc-border-width) solid var(--sc-border);
	background: var(--sc-surface);
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	color: var(--sc-text-tertiary);
	transition: all var(--sc-transition-fast);
	opacity: 0;
}

.fm__card:hover .fm__send-prompt {
	opacity: 1;
}

.fm__send-prompt:hover {
	border-color: var(--sc-rust-soft);
	color: var(--sc-rust);
	background: rgba(184, 96, 63, 0.04);
}

.fm__send-prompt svg {
	width: 15px;
	height: 15px;
	stroke: currentColor;
	fill: none;
}

/* ── List View Mode ─────────────────────────────────────────────────────── */

.fm__grid.fm__grid--list {
	grid-template-columns: 1fr;
	gap: 6px;
}

.fm__grid--list .fm__card {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 12px 16px;
	border-radius: var(--sc-radius-md);
}

.fm__grid--list .fm__card-header {
	margin-bottom: 0;
	flex-shrink: 0;
}

.fm__grid--list .fm__avatar {
	width: 38px;
	height: 38px;
	font-size: 0.78rem;
}

.fm__grid--list .fm__role-badge { display: none; }

.fm__grid--list .fm__card-body {
	display: flex;
	align-items: center;
	gap: var(--sc-space-md);
	flex: 1;
	min-width: 0;
}

.fm__grid--list .fm__name {
	font-size: var(--sc-text-sm);
	white-space: nowrap;
	min-width: 140px;
}

.fm__grid--list .fm__known-as {
	margin-bottom: 0;
	font-size: 0.75rem;
	white-space: nowrap;
	min-width: 110px;
}

.fm__grid--list .fm__stats {
	margin-bottom: 0;
	gap: 14px;
}

.fm__grid--list .fm__joined {
	margin-left: auto;
	white-space: nowrap;
}

.fm__grid--list .fm__send-prompt {
	position: static;
	opacity: 0;
}

.fm__grid--list .fm__card:hover .fm__send-prompt { opacity: 1; }

.fm__grid--list .fm__card--new::after {
	position: static;
	margin-left: 8px;
}

/* ── Responsive ─────────────────────────────────────────────────────────── */

@media (max-width: 768px) {
	.fm__grid { grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 10px; }
	.fm__card { padding: 16px; }
	.fm__avatar { width: 44px; height: 44px; font-size: 0.85rem; }
	.fm__send-prompt { opacity: 1; }
	.fm__toolbar { padding: 0 var(--sc-space-md) var(--sc-space-md); }
}

@media (max-width: 480px) {
	.fm__grid { grid-template-columns: 1fr 1fr; gap: 8px; }
	.fm__card { padding: 14px; }
	.fm__avatar { width: 40px; height: 40px; font-size: 0.8rem; }
	.fm__stats { gap: 8px; }
	.fm__stat { font-size: 0.68rem; }
	.fm__stat svg { width: 11px; height: 11px; }
}

/* ── Legacy member-card (older members index patterns; not family settings) ─ */

.members-toolbar {
	display: flex;
	align-items: center;
	gap: var(--sc-space-sm);
	margin-bottom: var(--sc-space-lg);
}

.members-search {
	flex: 1;
	padding: var(--sc-space-sm) var(--sc-space-md);
	font-family: var(--sc-font-ui);
	font-size: var(--sc-text-sm);
	background: var(--sc-surface);
	border: var(--sc-border-width) solid var(--sc-border);
	border-radius: var(--sc-radius-md);
	color: var(--sc-text-primary);
	transition: border-color var(--sc-transition-fast) var(--sc-ease-default);
}

.members-search:focus {
	outline: none;
	border-color: var(--sc-rust-soft);
	box-shadow: var(--sc-focus-ring);
}

.members-view-toggle {
	display: flex;
	gap: 2px;
	background: var(--sc-cream-dark);
	border-radius: var(--sc-radius-md);
	padding: 2px;
}

.members-view-btn {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2rem;
	height: 2rem;
	padding: 0;
	border: none;
	border-radius: var(--sc-radius-sm);
	background: none;
	color: var(--sc-text-tertiary);
	cursor: pointer;
	transition:
		color var(--sc-transition-fast) var(--sc-ease-default),
		background-color var(--sc-transition-fast) var(--sc-ease-default);
}

.members-view-btn svg {
	width: 1rem;
	height: 1rem;
}

.members-view-btn.active {
	background: var(--sc-surface);
	color: var(--sc-text-primary);
	box-shadow: var(--sc-shadow-xs);
}

.members-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
	gap: var(--sc-space-md);
}

.members-grid--list {
	grid-template-columns: 1fr;
}

.member-card {
	display: flex;
	align-items: center;
	gap: var(--sc-space-md);
	padding: var(--sc-space-md);
	background: var(--sc-surface);
	border: var(--sc-border-width) solid var(--sc-border-subtle);
	border-radius: var(--sc-radius-lg);
	transition:
		border-color var(--sc-transition-fast) var(--sc-ease-default),
		box-shadow var(--sc-transition-fast) var(--sc-ease-default);
}

.member-card:hover {
	border-color: var(--sc-sand);
	box-shadow: var(--sc-shadow-sm);
}

.member-card__info {
	flex: 1;
	min-width: 0;
}

.member-card__name {
	font-family: var(--sc-font-display);
	font-size: var(--sc-text-base);
	font-weight: var(--sc-weight-normal);
	color: var(--sc-text-primary);
	display: flex;
	align-items: center;
	gap: var(--sc-space-xs);
}

.member-card__you-badge {
	display: inline-block;
	font-family: var(--sc-font-ui);
	font-size: 0.65rem;
	font-weight: var(--sc-weight-semibold);
	text-transform: uppercase;
	letter-spacing: var(--sc-tracking-wide);
	color: var(--sc-accent);
	background: var(--sc-accent-subtle);
	padding: 1px 6px;
	border-radius: var(--sc-radius-full);
}

.member-card__known-as {
	font-family: var(--sc-font-ui);
	font-size: var(--sc-text-sm);
	color: var(--sc-text-secondary);
	font-style: italic;
}

.member-card__role {
	display: inline-block;
	font-family: var(--sc-font-ui);
	font-size: 0.68rem;
	font-weight: var(--sc-weight-medium);
	text-transform: uppercase;
	letter-spacing: var(--sc-tracking-wide);
	padding: 2px 8px;
	border-radius: var(--sc-radius-full);
	margin-top: var(--sc-space-xs);
}

.member-card__role--admin {
	color: var(--sc-rust);
	background: var(--sc-status-error-bg);
}

.member-card__role--manager {
	color: var(--sc-status-in-progress);
	background: var(--sc-status-in-progress-bg);
}

.member-card__role--member {
	color: var(--sc-text-tertiary);
	background: var(--sc-cream-dark);
}

.member-card__prompt-btn {
	flex-shrink: 0;
}
