/* ============================================================
   StitchPro Art Pages — Frontend Styles
   Covers: My Designs, My Artwork, My Favorites
   Matches the existing SMA blue-card design language.
   ============================================================ */

/* ── CSS custom properties (mirrors sma palette) ─────────────── */
:root {
    --sapart-accent:       #00aeef;
    --sapart-accent-dark:  #0092cc;
    --sapart-accent-light: #e6f7fd;
    --sapart-white:        #ffffff;
    --sapart-bg:           #e8ecf0;
    --sapart-card-border:  #d4dbe4;
    --sapart-text:         #1a202c;
    --sapart-muted:        #555e6d;
    --sapart-danger:       #e53e3e;
    --sapart-danger-dark:  #c53030;
    --sapart-radius:       6px;
    --sapart-shadow:       0 2px 8px rgba(0,0,0,.08);
    --sapart-gap:          20px;
}

/* ── Page wrapper ────────────────────────────────────────────── */
.sapart-page {
    padding: 4px 0 40px;
}

/* ── Page header ─────────────────────────────────────────────── */
.sapart-page__header {
    margin-bottom: 24px;
}

.sapart-page__title {
    color: var(--sapart-accent);
    font-size: 1.5rem;
    font-weight: 700;
    margin: 0 0 6px;
    display: flex;
    align-items: center;
    gap: 8px;
}

.sapart-icon {
    font-size: 1.3rem;
    line-height: 1;
}

.sapart-page__subtitle {
    color: var(--sapart-muted);
    font-size: 0.93rem;
    margin: 0;
}

/* ── Empty state ─────────────────────────────────────────────── */
.sapart-empty {
    background: var(--sapart-white);
    border: 1px dashed var(--sapart-card-border);
    border-radius: var(--sapart-radius);
    text-align: center;
    padding: 48px 24px;
    color: var(--sapart-muted);
}

.sapart-empty__icon {
    display: block;
    font-size: 2.5rem;
    margin-bottom: 12px;
}

.sapart-empty p {
    margin: 0 0 18px;
    font-size: 0.95rem;
}

/* ── Buttons ─────────────────────────────────────────────────── */
.sapart-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 0.85rem;
    padding: 7px 14px;
    border-radius: 4px;
    border: 1px solid transparent;
    text-decoration: none;
    cursor: pointer;
    transition: background 0.14s, border-color 0.14s, color 0.14s;
    white-space: nowrap;
    font-family: inherit;
    line-height: 1.4;
}

.sapart-btn--primary {
    background: var(--sapart-accent);
    color: var(--sapart-white) !important;
    border-color: var(--sapart-accent);
}
.sapart-btn--primary:hover {
    background: var(--sapart-accent-dark);
    border-color: var(--sapart-accent-dark);
    color: var(--sapart-white) !important;
}

.sapart-btn--outline {
    background: transparent;
    color: var(--sapart-accent) !important;
    border-color: var(--sapart-accent);
}
.sapart-btn--outline:hover {
    background: var(--sapart-accent-light);
    color: var(--sapart-accent-dark) !important;
}

.sapart-btn--danger {
    background: transparent;
    color: var(--sapart-danger) !important;
    border-color: var(--sapart-danger);
}
.sapart-btn--danger:hover {
    background: #fff5f5;
    border-color: var(--sapart-danger-dark);
    color: var(--sapart-danger-dark) !important;
}

.sapart-btn--sm {
    font-size: 0.78rem;
    padding: 5px 10px;
}

/* ── Grid ────────────────────────────────────────────────────── */
.sapart-grid {
    display: grid;
    gap: var(--sapart-gap);
}

.sapart-grid--designs,
.sapart-grid--artwork {
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
}

.sapart-grid--favorites {
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
}

/* ── Card base ───────────────────────────────────────────────── */
.sapart-card {
    background: var(--sapart-white);
    border: 1px solid var(--sapart-card-border);
    border-radius: var(--sapart-radius);
    box-shadow: var(--sapart-shadow);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    transition: box-shadow 0.18s, transform 0.18s;
}
.sapart-card:hover {
    box-shadow: 0 4px 16px rgba(0,0,0,.12);
    transform: translateY(-2px);
}

/* ── Design / Artwork card thumbnail ────────────────────────── */
.sapart-design-card__thumb,
.sapart-artwork-card__thumb {
    width: 100%;
    aspect-ratio: 4 / 3;
    background: #f0f4f8;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    border-bottom: 1px solid var(--sapart-card-border);
}

.sapart-design-card__thumb img,
.sapart-artwork-card__thumb img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    padding: 6px;
}

.sapart-design-card__file-icon,
.sapart-artwork-card__file-icon {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    color: var(--sapart-muted);
    font-size: 2.5rem;
    line-height: 1;
}

.sapart-design-card__file-icon span,
.sapart-artwork-card__file-icon span {
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    color: var(--sapart-accent);
    background: var(--sapart-accent-light);
    padding: 2px 6px;
    border-radius: 3px;
}

/* ── Design / Artwork card body ──────────────────────────────── */
.sapart-design-card__body,
.sapart-artwork-card__body {
    padding: 12px 14px 8px;
    flex: 1;
}

.sapart-design-card__name,
.sapart-artwork-card__name {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--sapart-text);
    margin: 0 0 4px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.sapart-design-card__meta,
.sapart-design-card__date,
.sapart-artwork-card__meta {
    font-size: 0.75rem;
    color: var(--sapart-muted);
    margin: 0 0 2px;
}

/* ── Design / Artwork card actions ──────────────────────────── */
.sapart-design-card__actions,
.sapart-artwork-card__actions {
    padding: 8px 14px 14px;
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

/* ── Favorites card ──────────────────────────────────────────── */
.sapart-favorite-card__thumb-link {
    display: block;
    width: 100%;
    aspect-ratio: 1;
    overflow: hidden;
    background: #f0f4f8;
    border-bottom: 1px solid var(--sapart-card-border);
}

.sapart-favorite-card__thumb-link img,
.sapart-favorite-card__thumb-link .woocommerce-placeholder {
    width: 100%;
    height: 100%;
    object-fit: contain;
    padding: 6px;
    transition: transform 0.2s;
}

.sapart-favorite-card:hover .sapart-favorite-card__thumb-link img {
    transform: scale(1.03);
}

.sapart-favorite-card__body {
    padding: 12px 14px 8px;
    flex: 1;
}

.sapart-favorite-card__name {
    display: block;
    font-size: 0.88rem;
    font-weight: 600;
    color: var(--sapart-text);
    text-decoration: none;
    margin-bottom: 4px;
    line-height: 1.35;
}
.sapart-favorite-card__name:hover {
    color: var(--sapart-accent);
}

.sapart-favorite-card__price {
    margin: 0;
    font-size: 0.85rem;
    color: var(--sapart-accent-dark);
    font-weight: 600;
}

.sapart-favorite-card__actions {
    padding: 8px 14px 14px;
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

/* ── Heart / Favorite button (product loop + single) ─────────── */
.sapart-fav-btn {
    cursor: pointer;
    background: rgba(255,255,255,0.85);
    border: 1px solid var(--sapart-card-border);
    border-radius: 50%;
    width: 34px;
    height: 34px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1rem;
    padding: 0;
    transition: background 0.15s, box-shadow 0.15s, transform 0.12s;
    position: relative;
    z-index: 2;
    font-family: inherit;
}

.sapart-fav-btn:hover {
    background: #fff;
    box-shadow: 0 2px 8px rgba(0,0,0,.15);
    transform: scale(1.1);
}

/* Loop button — overlay in corner of product card */
.sapart-fav-btn--loop {
    position: absolute;
    top: 10px;
    right: 10px;
}

/* Make sure the product loop item is positioned */
.woocommerce ul.products li.product {
    position: relative;
}

/* Single product button */
.sapart-fav-single-wrap {
    margin: 12px 0;
}

.sapart-fav-btn--single {
    border-radius: 4px;
    width: auto;
    height: auto;
    padding: 8px 16px;
    gap: 6px;
    font-size: 0.88rem;
    font-weight: 600;
    color: var(--sapart-text);
}

.sapart-fav-btn--single.is-favorited {
    background: #fff0f0;
    border-color: #fca5a5;
    color: var(--sapart-danger);
}

.sapart-fav-btn--single:hover {
    border-radius: 4px;
}

/* Heart pulse animation when toggled */
@keyframes sapart-heart-pulse {
    0%   { transform: scale(1); }
    40%  { transform: scale(1.3); }
    70%  { transform: scale(0.9); }
    100% { transform: scale(1); }
}

.sapart-fav-btn.sapart-fav-btn--pulse .sapart-fav-btn__icon {
    animation: sapart-heart-pulse 0.4s ease;
}

/* ── Upload zone ─────────────────────────────────────────────── */
.sapart-upload-zone {
    border: 2px dashed var(--sapart-accent);
    border-radius: var(--sapart-radius);
    background: var(--sapart-accent-light);
    margin-bottom: 28px;
    transition: background 0.15s, border-color 0.15s;
}

.sapart-upload-zone.is-dragover {
    background: #c5ecfb;
    border-color: var(--sapart-accent-dark);
}

.sapart-upload-zone__inner {
    padding: 32px 24px;
    text-align: center;
}

.sapart-upload-zone__icon {
    display: block;
    font-size: 2rem;
    margin-bottom: 8px;
}

.sapart-upload-zone__text {
    margin: 0 0 6px;
    font-size: 0.95rem;
    color: var(--sapart-text);
}

.sapart-upload-zone__browse {
    color: var(--sapart-accent);
    font-weight: 600;
    cursor: pointer;
    text-decoration: underline;
}
.sapart-upload-zone__browse:hover {
    color: var(--sapart-accent-dark);
}

.sapart-upload-zone__hint {
    margin: 0;
    font-size: 0.78rem;
    color: var(--sapart-muted);
}

.sapart-file-input {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
    pointer-events: none;
}

/* Upload progress */
.sapart-upload-progress {
    padding: 0 24px 20px;
}

.sapart-upload-progress__bar {
    height: 6px;
    background: var(--sapart-accent-light);
    border-radius: 3px;
    overflow: hidden;
    margin-bottom: 6px;
    position: relative;
}

.sapart-upload-progress__bar::after {
    content: '';
    position: absolute;
    top: 0; left: 0;
    height: 100%;
    width: 0%;
    background: var(--sapart-accent);
    border-radius: 3px;
    transition: width 0.2s;
}

.sapart-upload-progress__bar.is-uploading::after {
    animation: sapart-progress-indeterminate 1.2s linear infinite;
}

@keyframes sapart-progress-indeterminate {
    0%   { left: -40%; width: 40%; }
    100% { left: 100%; width: 40%; }
}

.sapart-upload-progress__label {
    font-size: 0.82rem;
    color: var(--sapart-muted);
    text-align: center;
    margin: 0;
}

/* Upload error */
.sapart-upload-error {
    margin: 0 16px 16px;
    background: #fff5f5;
    border: 1px solid #fca5a5;
    border-radius: 4px;
    padding: 10px 14px;
    font-size: 0.85rem;
    color: var(--sapart-danger);
}

/* ── Toast notification ──────────────────────────────────────── */
.sapart-toast {
    position: fixed;
    bottom: 24px;
    right: 24px;
    background: var(--sapart-text);
    color: #fff;
    font-size: 0.88rem;
    padding: 10px 18px;
    border-radius: 6px;
    box-shadow: 0 4px 16px rgba(0,0,0,.2);
    z-index: 9999;
    opacity: 0;
    transform: translateY(12px);
    transition: opacity 0.25s, transform 0.25s;
    pointer-events: none;
    max-width: 300px;
}

.sapart-toast.is-visible {
    opacity: 1;
    transform: translateY(0);
}

.sapart-toast--success { background: #276749; }
.sapart-toast--error   { background: var(--sapart-danger); }
.sapart-toast--info    { background: var(--sapart-accent-dark); }

/* ── WC account nav — keep hidden on all My Account pages ─────── */
/* The SMA plugin hides the nav via display:none. We must NOT        */
/* re-show it here — doing so causes the sidebar to overlap the       */
/* content area on Designs, Artwork, and Favorites pages.            */
/* Navigation between pages is handled by the back links and         */
/* the .sapart-page layout; no sidebar nav is needed.               */
.woocommerce-MyAccount-navigation {
    display: none !important;
    width: 0 !important;
    float: none !important;
}

/* Ensure content fills full width on all art sub-pages */
.woocommerce-account .woocommerce-MyAccount-content {
    width: 100% !important;
    float: none !important;
    margin: 0 !important;
    padding: 0 !important;
}

/* ── Responsive ──────────────────────────────────────────────── */
@media ( max-width: 768px ) {
    .sapart-grid--designs,
    .sapart-grid--artwork {
        grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    }

    .sapart-grid--favorites {
        grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    }

    .sapart-fav-btn--loop {
        width: 28px;
        height: 28px;
        font-size: 0.85rem;
    }
}

@media ( max-width: 480px ) {
    .sapart-grid--designs,
    .sapart-grid--artwork,
    .sapart-grid--favorites {
        grid-template-columns: 1fr 1fr;
    }
}
