/* =========================================================================
 * JR ATS — Professional Gallery (Highlights)
 *
 * Used by:
 *   - Public  : Professional Identity page (section appended via PHP hook)
 *   - Private : [jr_manage_professional_gallery] dashboard widget
 *
 * Brand color: #5277ba
 * ========================================================================= */

:root {
    --jrats-pg-brand: #5277ba;
    --jrats-pg-brand-dark: #3f5f97;
    --jrats-pg-brand-soft: rgba(82, 119, 186, 0.10);
    --jrats-pg-brand-softer: rgba(82, 119, 186, 0.06);
    --jrats-pg-border: #e5e7eb;
    --jrats-pg-text: #111827;
    --jrats-pg-text-muted: #6b7280;
    --jrats-pg-surface: #ffffff;
    --jrats-pg-surface-alt: #f9fafb;
    --jrats-pg-radius: 14px;
    --jrats-pg-radius-sm: 10px;
    --jrats-pg-shadow-sm: 0 1px 2px rgba(17, 24, 39, 0.04);
    --jrats-pg-shadow-md: 0 4px 12px rgba(17, 24, 39, 0.08);
    --jrats-pg-shadow-lg: 0 12px 28px rgba(17, 24, 39, 0.16);
    --jrats-pg-ease: cubic-bezier(0.16, 1, 0.3, 1);
}

/* =========================================================================
 * SECTION (public + manage shared)
 * ========================================================================= */

.jrats-pg-section {
    margin: 32px 0 8px;
    padding: 24px 20px 28px;
    background: var(--jrats-pg-surface);
    border: 1px solid var(--jrats-pg-border);
    border-radius: var(--jrats-pg-radius);
    box-shadow: var(--jrats-pg-shadow-sm);
}

.jrats-pg-section-title {
    margin: 0 0 18px;
    font-size: 20px;
    font-weight: 700;
    color: var(--jrats-pg-text);
    letter-spacing: -0.01em;
    display: flex;
    align-items: center;
    gap: 10px;
}

.jrats-pg-section-title::before {
    content: '';
    display: inline-block;
    width: 4px;
    height: 22px;
    background: var(--jrats-pg-brand);
    border-radius: 4px;
}

/* =========================================================================
 * GRID (responsive masonry-light)
 * ========================================================================= */

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

@media (min-width: 768px) {
    .jrats-pg-grid {
        grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
        gap: 16px;
    }
}

/* =========================================================================
 * ITEM (image card)
 * ========================================================================= */

.jrats-pg-item {
    position: relative;
    margin: 0;
    overflow: hidden;
    border-radius: var(--jrats-pg-radius-sm);
    background: var(--jrats-pg-surface-alt);
    border: 1px solid var(--jrats-pg-border);
    box-shadow: var(--jrats-pg-shadow-sm);
    transition: transform 220ms var(--jrats-pg-ease),
                box-shadow 220ms var(--jrats-pg-ease),
                border-color 220ms var(--jrats-pg-ease);
    aspect-ratio: 1 / 1;
}

.jrats-pg-item:hover {
    transform: translateY(-2px);
    box-shadow: var(--jrats-pg-shadow-md);
    border-color: var(--jrats-pg-brand);
}

.jrats-pg-link {
    display: block;
    width: 100%;
    height: 100%;
    overflow: hidden;
    text-decoration: none;
    border-radius: inherit;
}

.jrats-pg-img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 380ms var(--jrats-pg-ease);
}

.jrats-pg-item:hover .jrats-pg-img {
    transform: scale(1.04);
}

/* Focus state for keyboard nav */
.jrats-pg-link:focus-visible {
    outline: 2px solid var(--jrats-pg-brand);
    outline-offset: 2px;
}

/* =========================================================================
 * MANAGE WIDGET (dashboard)
 * ========================================================================= */

.jrats-pg-manage {
    background: var(--jrats-pg-surface);
    border: 1px solid var(--jrats-pg-border);
    border-radius: var(--jrats-pg-radius);
    padding: 22px;
    box-shadow: var(--jrats-pg-shadow-sm);
}

.jrats-pg-manage__header {
    margin-bottom: 18px;
}

.jrats-pg-manage__title {
    margin: 0 0 4px;
    font-size: 18px;
    font-weight: 700;
    color: var(--jrats-pg-text);
}

.jrats-pg-manage__subtitle {
    margin: 0;
    font-size: 13px;
    color: var(--jrats-pg-text-muted);
}

/* ---- meter ---- */
.jrats-pg-manage__meter {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--jrats-pg-brand-soft);
    color: var(--jrats-pg-brand-dark);
    padding: 6px 12px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 600;
    margin-bottom: 16px;
}

.jrats-pg-meter__label {
    opacity: 0.8;
    font-weight: 500;
}

.jrats-pg-meter__sep {
    opacity: 0.5;
    margin: 0 2px;
}

/* ---- upgrade strip ---- */
.jrats-pg-manage__upgrade {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 14px;
    margin: 0 0 18px;
    background: linear-gradient(135deg,
                var(--jrats-pg-brand-softer) 0%,
                var(--jrats-pg-brand-soft) 100%);
    border: 1px solid rgba(82, 119, 186, 0.18);
    border-radius: var(--jrats-pg-radius-sm);
}

.jrats-pg-upgrade__msg {
    font-size: 13px;
    color: var(--jrats-pg-brand-dark);
    font-weight: 500;
}

.jrats-pg-upgrade__btn {
    display: inline-block;
    background: var(--jrats-pg-brand);
    color: #fff;
    text-decoration: none;
    padding: 7px 16px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 600;
    transition: background 180ms var(--jrats-pg-ease),
                transform 180ms var(--jrats-pg-ease);
}

.jrats-pg-upgrade__btn:hover,
.jrats-pg-upgrade__btn:focus-visible {
    background: var(--jrats-pg-brand-dark);
    color: #fff;
    transform: translateY(-1px);
    outline: none;
}

/* ---- uploader ---- */
.jrats-pg-manage__uploader {
    margin-bottom: 18px;
}

.jrats-pg-upload__input {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    overflow: hidden;
}

.jrats-pg-upload__label {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 12px 20px;
    border: 1.5px dashed var(--jrats-pg-brand);
    border-radius: var(--jrats-pg-radius-sm);
    background: var(--jrats-pg-brand-softer);
    color: var(--jrats-pg-brand-dark);
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: background 180ms var(--jrats-pg-ease),
                border-color 180ms var(--jrats-pg-ease);
}

.jrats-pg-upload__label:hover {
    background: var(--jrats-pg-brand-soft);
    border-color: var(--jrats-pg-brand-dark);
}

.jrats-pg-upload__label.is-disabled {
    cursor: not-allowed;
    opacity: 0.55;
    border-style: solid;
    border-color: var(--jrats-pg-border);
    color: var(--jrats-pg-text-muted);
    background: var(--jrats-pg-surface-alt);
}

.jrats-pg-upload__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: var(--jrats-pg-brand);
    color: #fff;
    font-size: 16px;
    font-weight: 600;
    line-height: 1;
}

.jrats-pg-upload__label.is-disabled .jrats-pg-upload__icon {
    background: var(--jrats-pg-text-muted);
}

.jrats-pg-upload__hint {
    margin: 8px 0 0;
    font-size: 12px;
    color: var(--jrats-pg-text-muted);
}

.jrats-pg-upload__status {
    margin: 8px 0 0;
    font-size: 13px;
    color: var(--jrats-pg-brand-dark);
    min-height: 18px;
}

.jrats-pg-upload__status.is-error {
    color: #b91c1c;
}

.jrats-pg-upload__status.is-success {
    color: #047857;
}

/* ---- manage grid items ---- */
.jrats-pg-item--manage {
    cursor: grab;
}

.jrats-pg-item--manage:active {
    cursor: grabbing;
}

.jrats-pg-item--manage.is-dragging {
    opacity: 0.5;
    transform: scale(0.95);
}

.jrats-pg-item--manage.is-drag-target {
    border-color: var(--jrats-pg-brand);
    box-shadow: 0 0 0 3px var(--jrats-pg-brand-soft);
}

.jrats-pg-item__delete {
    position: absolute;
    top: 8px;
    right: 8px;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    border: none;
    background: rgba(17, 24, 39, 0.75);
    color: #fff;
    font-size: 18px;
    line-height: 1;
    cursor: pointer;
    opacity: 0;
    transform: scale(0.85);
    transition: opacity 180ms var(--jrats-pg-ease),
                transform 180ms var(--jrats-pg-ease),
                background 180ms var(--jrats-pg-ease);
}

.jrats-pg-item--manage:hover .jrats-pg-item__delete,
.jrats-pg-item__delete:focus-visible {
    opacity: 1;
    transform: scale(1);
    outline: none;
}

.jrats-pg-item__delete:hover {
    background: #dc2626;
}

.jrats-pg-item__drag {
    position: absolute;
    bottom: 6px;
    left: 6px;
    background: rgba(17, 24, 39, 0.6);
    color: #fff;
    padding: 2px 6px;
    border-radius: 6px;
    font-size: 11px;
    letter-spacing: 1px;
    pointer-events: none;
    opacity: 0;
    transition: opacity 180ms var(--jrats-pg-ease);
}

.jrats-pg-item--manage:hover .jrats-pg-item__drag {
    opacity: 1;
}

/* ---- empty state ---- */
.jrats-pg-empty {
    grid-column: 1 / -1;
    padding: 36px 20px;
    text-align: center;
    color: var(--jrats-pg-text-muted);
    font-size: 14px;
    background: var(--jrats-pg-surface-alt);
    border: 1px dashed var(--jrats-pg-border);
    border-radius: var(--jrats-pg-radius-sm);
}

.jrats-pg-manage__hint {
    margin: 14px 0 0;
    font-size: 12px;
    color: var(--jrats-pg-text-muted);
    text-align: center;
}

/* =========================================================================
 * LIGHTBOX
 * ========================================================================= */

.jrats-pg-lightbox {
    position: fixed;
    inset: 0;
    background: rgba(17, 24, 39, 0.92);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 99999;
    padding: 24px;
    opacity: 0;
    visibility: hidden;
    transition: opacity 220ms var(--jrats-pg-ease),
                visibility 220ms var(--jrats-pg-ease);
}

.jrats-pg-lightbox.is-open {
    opacity: 1;
    visibility: visible;
}

.jrats-pg-lightbox__img {
    max-width: 92vw;
    max-height: 88vh;
    border-radius: var(--jrats-pg-radius-sm);
    box-shadow: var(--jrats-pg-shadow-lg);
    object-fit: contain;
}

.jrats-pg-lightbox__close {
    position: absolute;
    top: 20px;
    right: 20px;
    width: 42px;
    height: 42px;
    border-radius: 50%;
    border: none;
    background: rgba(255, 255, 255, 0.12);
    color: #fff;
    font-size: 24px;
    line-height: 1;
    cursor: pointer;
    transition: background 180ms var(--jrats-pg-ease);
}

.jrats-pg-lightbox__close:hover,
.jrats-pg-lightbox__close:focus-visible {
    background: rgba(255, 255, 255, 0.24);
    outline: none;
}

/* =========================================================================
 * NOTICE CARD (logged-out fallback)
 * ========================================================================= */

.jrats-pg-card--notice {
    padding: 18px 20px;
    background: var(--jrats-pg-surface);
    border: 1px solid var(--jrats-pg-border);
    border-radius: var(--jrats-pg-radius);
    color: var(--jrats-pg-text-muted);
    font-size: 14px;
}

/* =========================================================================
 * MOTION REDUCTION
 * ========================================================================= */

@media (prefers-reduced-motion: reduce) {
    .jrats-pg-item,
    .jrats-pg-img,
    .jrats-pg-item__delete,
    .jrats-pg-upload__label,
    .jrats-pg-upgrade__btn,
    .jrats-pg-lightbox {
        transition: none;
    }
}

/* =========================================================================
 * MERGED WRAPPER — [jr_my_professional_identity]
 *
 * Compose Statistics card + Gallery management in a single scrollable
 * column. Minimal styling — the inner shortcodes own their own visuals.
 * ========================================================================= */

.jrats-mpi-wrap {
    display: flex;
    flex-direction: column;
    gap: 24px;
}

.jrats-mpi-section {
    /* Section is just a structural wrapper; children own their card chrome. */
}

.jrats-mpi-card--notice {
    padding: 18px 20px;
    background: var(--jrats-pg-surface);
    border: 1px solid var(--jrats-pg-border);
    border-radius: var(--jrats-pg-radius);
    color: var(--jrats-pg-text-muted);
    font-size: 14px;
}
