/**
 * @file plugins/themes/lumina/styles/components/person-card.css
 *
 * Copyright (c) 2026 Lumina Project contributors
 * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
 *
 * @class .lm-person-card
 *
 * @brief Generic person card component styling. Designed to build on top of
 *        existing layout, card, avatar, badge, and typography primitives.
 */

/* Grid Layout Spacing Overrides */
.lm-grid.lm-grid-auto-md {
    gap: var(--space-lg) !important;
    row-gap: var(--space-lg) !important;
    column-gap: var(--space-lg) !important;
}

.lm-person-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: var(--space-lg);
    gap: var(--space-md);
    box-sizing: border-box;
    height: 100%; /* Ensures equal height support in grid rows */
    margin: 0; /* Rely entirely on CSS Grid gaps, no card margins */
    background-color: var(--lm-surface-card, #ffffff);
    border: 1px solid var(--lm-border, #e2e8f0);
    border-radius: var(--lm-portal-radius, 8px);
    box-shadow: var(--lm-shadow-sm);
    transition: transform var(--lm-motion-fast), box-shadow var(--lm-motion-fast), border-color var(--lm-motion-fast);
}

.lm-person-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--lm-shadow-md);
    border-color: var(--lm-border-hover);
}

.lm-person-card__header {
    display: flex;
    justify-content: center;
    align-items: center;
    flex-shrink: 0;
}

.lm-person-card__body {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
    gap: var(--space-sm);
    flex-grow: 1; /* Pushes the footer to the bottom */
}

.lm-person-card__name {
    font-family: var(--lm-font-sans);
    font-size: var(--lm-font-size-lg);
    font-weight: var(--lm-weight-bold);
    color: var(--lm-text-primary);
    line-height: var(--lm-lh-tight);
    margin: 0;
    word-break: break-word; /* Prevents overflow of long names */
}

.lm-person-card__meta {
    font-family: var(--lm-font-sans);
    font-size: var(--lm-font-size-sm);
    font-weight: var(--lm-weight-medium);
    color: var(--lm-text-secondary);
    line-height: var(--lm-lh-normal);
    word-break: break-word; /* Prevents overflow of long affiliations */
}

/* Zone 1: Biography Toggler component */
.lm-person-card__meta.lm-person-card__biography {
    width: 100%;
    margin-top: var(--space-xs);
    margin-bottom: var(--space-sm);
}

.lm-person-card__meta.lm-person-card__biography details {
    width: 100%;
}

.lm-person-card__meta.lm-person-card__biography summary {
    outline: none;
    list-style: none; /* Hides default triangle */
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    padding: 6px 12px;
    border: 1px solid var(--lm-border, #e2e8f0);
    border-radius: var(--lm-radius-sm, 4px);
    background-color: var(--lm-surface-muted, #f7fafc);
    transition: var(--lm-portal-transition);
    color: transparent;
    font-size: 0;
    user-select: none;
}

.lm-person-card__meta.lm-person-card__biography summary::before {
    content: "Read Biography";
    color: var(--lm-link, #2563eb);
    font-family: var(--lm-font-sans);
    font-size: var(--lm-font-size-xs);
    font-weight: var(--lm-weight-semibold);
}

.lm-person-card__meta.lm-person-card__biography details[open] summary::before {
    content: "Hide Biography";
}

.lm-person-card__meta.lm-person-card__biography summary:hover {
    background-color: var(--lm-accent-50, rgba(37, 99, 235, 0.08));
    border-color: var(--lm-link, #2563eb);
}

.lm-person-card__meta.lm-person-card__biography summary::-webkit-details-marker {
    display: none; /* Hides default triangle in Safari */
}

.lm-person-card__meta.lm-person-card__biography p {
    margin: var(--space-sm) 0 0 0;
    text-align: left;
    font-size: var(--lm-font-size-sm);
    line-height: var(--lm-lh-normal);
    color: var(--lm-text-secondary);
}

/* Expertise Tags */
.lm-person-card__meta.lm-person-card__expertise {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--space-xs);
    margin-top: var(--space-xs);
}

.lm-person-card__meta.lm-person-card__expertise .lm-badge-muted {
    font-size: 0.65rem;
    padding: 2px 6px;
    letter-spacing: 0.02em;
}

/* Zone 2 & 3: Footer Optional groups */
.lm-person-card__footer {
    width: 100%;
    margin-top: auto; /* Pins footer to the bottom of the card */
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    gap: var(--space-md);
    padding-top: var(--space-md);
    border-top: 1px solid var(--lm-border, #e2e8f0);
}

.lm-person-card__links-group {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
    gap: var(--space-xs);
}

.lm-person-card__footer-heading {
    font-family: var(--lm-font-sans);
    font-size: 0.65rem;
    font-weight: var(--lm-weight-bold);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--lm-text-muted, #a0aec0);
    margin: 0;
    text-align: center;
    width: 100%;
}

.lm-person-card__links {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--space-xs);
    width: 100%;
}

/* Small outlined badge buttons with SVG logo + platform name */
.lm-person-card__links a {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 10px;
    font-size: 0.7rem;
    font-weight: var(--lm-weight-semibold);
    text-decoration: none;
    border-radius: var(--lm-radius-sm, 4px);
    border: 1px solid var(--lm-border, #e2e8f0);
    background-color: var(--lm-surface-card, #ffffff);
    color: var(--lm-text-secondary);
    transition: all var(--lm-motion-fast);
}

.lm-person-card__links a svg.lm-social-logo {
    fill: currentColor;
    flex-shrink: 0;
    transition: fill var(--lm-motion-fast);
}

.lm-person-card__links a:hover {
    transform: translateY(-2px);
    box-shadow: var(--lm-shadow-sm);
    background-color: var(--lm-surface-card);
}

.lm-person-card__links a:focus-visible {
    outline: 2px solid var(--lm-focus-ring);
    outline-offset: 2px;
}

/* Platform specific hovers */
.lm-person-card__links a.lm-person-link--orcid:hover {
    color: #A6CE39 !important;
    border-color: #A6CE39 !important;
}

.lm-person-card__links a.lm-person-link--scopus:hover {
    color: #F68220 !important;
    border-color: #F68220 !important;
}

.lm-person-card__links a.lm-person-link--scholar:hover {
    color: #4285F4 !important;
    border-color: #4285F4 !important;
}

.lm-person-card__links a.lm-person-link--sinta:hover {
    color: #1C4980 !important;
    border-color: #1C4980 !important;
}

.lm-person-card__links a.lm-person-link--researchgate:hover {
    color: #00CCBB !important;
    border-color: #00CCBB !important;
}

.lm-person-card__links a.lm-person-link--email:hover {
    color: var(--lm-link) !important;
    border-color: var(--lm-link) !important;
}

.lm-person-card__links a.lm-person-link--linkedin:hover {
    color: #0077B5 !important;
    border-color: #0077B5 !important;
}

.lm-person-card__links a.lm-person-link--website:hover {
    color: var(--lm-link) !important;
    border-color: var(--lm-link) !important;
}
