* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}

.body-main {
    padding: 0 8px;
    overflow-x: hidden;
    max-width: 100vw;
}

/* ── Loading State ─────────────────────────────────── */
.pd-loading-wrap {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 60vh;
    width: 100%;
}

.pd-loading-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 20px;
    padding: 40px 48px;
    background: #fff;
    border-radius: 20px;
    box-shadow: 0 4px 32px rgba(91, 33, 182, 0.10);
}

.pd-spinner {
    width: 56px;
    height: 56px;
    border: 4px solid #ede9fe;
    border-top-color: #5b21b6;
    border-radius: 50%;
    animation: pd-spin 0.9s linear infinite;
}

@keyframes pd-spin {
    to { transform: rotate(360deg); }
}

.pd-loading-text {
    font-size: 0.95rem;
    color: #6b7280;
    letter-spacing: 0.02em;
}

/* ── Error / Not Found State ───────────────────────── */
.pd-error-wrap {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 60vh;
    width: 100%;
}

.pd-error-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
    padding: 40px 48px;
    background: #fff;
    border-radius: 20px;
    box-shadow: 0 4px 32px rgba(239, 68, 68, 0.08);
    text-align: center;
}

.pd-error-icon {
    font-size: 2.2rem;
    color: #ef4444;
}

.pd-error-title {
    font-size: 1.1rem;
    font-weight: 600;
    color: #1f2937;
}

.pd-error-msg {
    font-size: 0.9rem;
    color: #9ca3af;
}

/* ── Product Layout Grid ──────────────────────────── */
.pd-layout {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    width: 100%;
    max-width: 100%;
    overflow: hidden;
    padding: 0;
    margin: 0;
}

.pd-main-grid {
    display: flex;
    align-items: flex-start;
    width: 100%;
    box-sizing: border-box;
    padding: 0;
    margin: 0;
    gap: 8px;
}

.pd-col-left,
.pd-col-right {
    display: flex;
    flex-direction: column;
    flex: 1;
    gap: 8px;
    min-width: 0;
}

.pd-grid-images {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    padding: 0;
    margin: 0;
}

.pd-grid-infos {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    padding: 0;
    margin: 0;
}

.pd-grid-rating {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    padding: 0;
    margin: 0;
}

.pd-grid-more {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    padding: 0;
    margin: 0;
}

.pd-more-products {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    padding: 0;
    margin: 0;
}

@media (max-width: 768px) {
    .pd-main-grid {
        flex-direction: column;
    }

    .pd-col-left,
    .pd-col-right {
        display: contents;
    }

    .pd-grid-images { order: 1; width: 100%; }
    .pd-grid-infos  { order: 2; width: 100%; }
    .pd-grid-rating { order: 3; width: 100%; }
    .pd-grid-more   { order: 4; width: 100%; }
}