/* ================================================
   PAULLSTUDIO PORTFOLIO PLUGIN — style.css v4.1
   Fully theme-aware: semua warna pakai CSS variables
   Bilingual: sinkron dengan pola data-lang theme.
   Palette: blue accent (#2563eb) + rounded-xl cards,
   sinkron dengan paullstudio-theme v1.1.0.
   ================================================ */

/* ── Bilingual base rules ──────────────────────────
   Jika theme-nya punya rules ini → tidak konflik.
   Jika plugin dipakai di luar theme ini → tetap
   berfungsi dengan rules fallback di bawah.
   ──────────────────────────────────────────────── */

/* Hide semua [data-lang] by default */
[data-lang] { display: none; }

/* Show konten sesuai kelas aktif di <html> */
html.lang-en [data-lang="en"] { display: inline; }
html.lang-id [data-lang="id"] { display: inline; }

/* Fallback: jika belum ada kelas lang di <html> → tampilkan EN */
html:not(.lang-id) [data-lang="en"] { display: inline; }

/* ── Konteks block-level di card ────────────────── */
/* span data-lang di dalam h3 dan p perlu block
   agar tidak ada layout shift antar teks */
.ps-work-item h3 [data-lang],
.ps-work-item p  [data-lang]  { display: none; }

html.lang-en .ps-work-item h3 [data-lang="en"],
html.lang-en .ps-work-item p  [data-lang="en"] { display: block; }

html.lang-id .ps-work-item h3 [data-lang="id"],
html.lang-id .ps-work-item p  [data-lang="id"] { display: block; }

/* Fallback block-level: tampilkan EN jika belum ada kelas */
html:not(.lang-id) .ps-work-item h3 [data-lang="en"],
html:not(.lang-id) .ps-work-item p  [data-lang="en"] { display: block; }

/* Section label */
.ps-section-tag [data-lang]              { display: none; }
html.lang-en    .ps-section-tag [data-lang="en"] { display: inline; }
html.lang-id    .ps-section-tag [data-lang="id"] { display: inline; }
html:not(.lang-id) .ps-section-tag [data-lang="en"] { display: inline; }

/* Tombol detail (dua elemen terpisah per bahasa) */
.ps-work-buttons .ps-btn-secondary[data-lang]              { display: none; }
html.lang-en .ps-work-buttons .ps-btn-secondary[data-lang="en"] { display: inline-block; flex: 1; min-width: 120px; }
html.lang-id .ps-work-buttons .ps-btn-secondary[data-lang="id"] { display: inline-block; flex: 1; min-width: 120px; }
html:not(.lang-id) .ps-work-buttons .ps-btn-secondary[data-lang="en"] { display: inline-block; flex: 1; min-width: 120px; }

/* Thumb link (saat bilingual ada dua a di dalam .ps-work-thumb) */
.ps-work-thumb a[data-lang]              { display: none; }
html.lang-en .ps-work-thumb a[data-lang="en"] { display: block; }
html.lang-id .ps-work-thumb a[data-lang="id"] { display: block; }
html:not(.lang-id) .ps-work-thumb a[data-lang="en"] { display: block; }

/* ── Grid ─────────────────────────────────────── */
.ps-works-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
}

/* Border-grid variant */
.ps-works-grid--border {
    gap: 1px;
    background: var(--ps-border);
    border: 1px solid var(--ps-border);
    border-radius: 0;
}

.ps-works-grid--border .ps-work-item {
    border-radius: 0 !important;
    border: none !important;
    background: var(--ps-bg);
}

.ps-works-grid--border .ps-work-thumb { border-radius: 0; }

/* ── Card ─────────────────────────────────────── */
.ps-work-item {
    background: var(--ps-bg-card);
    border: 1px solid var(--ps-border);
    border-radius: var(--ps-radius-xl, 16px);
    padding: 48px 40px;
    transition: transform .5s cubic-bezier(.16,1,.3,1), border-color .5s, background .5s, box-shadow .5s;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    min-height: 380px;
    overflow: hidden;
    box-shadow: var(--ps-shadow-sm, 0 1px 2px rgba(0,0,0,.08));
}

.ps-work-item:hover {
    transform: translateY(-8px);
    border-color: var(--ps-accent, #2563eb);
    background: var(--ps-bg-card-hover);
    box-shadow: var(--ps-shadow-md, 0 4px 16px rgba(0,0,0,.12));
}

/* Card dengan feature image */
.ps-work-item--has-image {
    padding: 0;
    min-height: 460px;
}

.ps-work-item--has-image .ps-work-info {
    padding: 28px 32px 32px;
}

/* ── Feature Image ─────────────────────────────── */
.ps-work-thumb {
    width: 100%;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    flex-shrink: 0;
}

.ps-work-thumb a {
    display: block;
    width: 100%;
    height: 100%;
}

.ps-work-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .5s cubic-bezier(.16,1,.3,1);
}

.ps-work-item:hover .ps-work-thumb img { transform: scale(1.05); }

/* ── Card Info ─────────────────────────────────── */
.ps-work-info { display: flex; flex-direction: column; height: 100%; }

.ps-role-tag {
    font-size: 10px;
    color: var(--ps-label-color);
    text-transform: uppercase;
    letter-spacing: .15em;
    margin-bottom: 20px;
    display: block;
    font-weight: 600;
}

.ps-work-item h3 {
    font-size: 28px;
    font-weight: 700;
    color: var(--ps-text);
    margin: 0 0 16px;
    letter-spacing: -.04em;
    line-height: 1.1;
}

.ps-work-item p {
    color: var(--ps-muted);
    font-size: 15px;
    line-height: 1.6;
    margin: 0 0 36px;
    flex-grow: 1;
}

/* ── Buttons ──────────────────────────────────── */
.ps-work-buttons {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
    margin-top: auto;
}

.ps-btn-primary {
    background: var(--ps-accent);
    color: var(--ps-accent-inv) !important;
    padding: 13px 24px;
    border-radius: var(--ps-radius-md, 10px);
    text-decoration: none;
    font-weight: 600;
    font-size: 13px;
    display: inline-block;
    transition: background .3s, box-shadow .3s, transform .3s;
    text-align: center;
    flex: 1;
    min-width: 120px;
    box-shadow: var(--ps-shadow-sm, 0 1px 2px rgba(0,0,0,.08));
}

.ps-btn-primary:hover { background: var(--ps-accent-hover, #3b76f6); box-shadow: var(--ps-shadow-md, 0 4px 16px rgba(0,0,0,.12)); }

.ps-btn-secondary {
    border: 1px solid var(--ps-border-hover);
    color: var(--ps-text) !important;
    padding: 13px 24px;
    border-radius: var(--ps-radius-md, 10px);
    text-decoration: none;
    font-weight: 600;
    font-size: 13px;
    display: inline-block;
    transition: border-color .3s, background .3s, color .3s;
    text-align: center;
}

.ps-btn-secondary:hover {
    border-color: var(--ps-accent, #2563eb);
    background: rgba(37,99,235,.06);
    color: var(--ps-accent, #2563eb) !important;
}

/* ── Single Porto Lang Bar ────────────────────── */
.ps-lang-bar {
    display: flex;
    justify-content: flex-end;
    padding: 20px 5%;
}

.ps-lang-switch { display: flex; gap: 8px; align-items: center; }
.ps-lang-switch a {
    color: var(--ps-muted);
    text-decoration: none;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .08em;
    padding: 6px 14px;
    border-radius: var(--ps-radius-md, 10px);
    transition: all .3s;
    border: 1px solid transparent;
}
.ps-lang-switch a.active,
.ps-lang-switch a:hover {
    color: var(--ps-accent, #2563eb);
    border-color: var(--ps-accent, #2563eb);
    background: rgba(37,99,235,.08);
}
.ps-lang-switch span { color: var(--ps-dim); }

/* ── Responsive ───────────────────────────────── */
@media (max-width: 992px) {
    .ps-works-grid           { grid-template-columns: repeat(2, 1fr); }
    .ps-work-item            { padding: 36px 30px; }
    .ps-work-item--has-image { padding: 0; }
    .ps-work-item--has-image .ps-work-info { padding: 24px 28px 28px; }
}

@media (max-width: 640px) {
    .ps-works-grid           { grid-template-columns: 1fr; }
    .ps-work-item            { padding: 30px 24px; min-height: auto; }
    .ps-work-item--has-image { padding: 0; min-height: auto; }
    .ps-work-item--has-image .ps-work-info { padding: 20px 24px 24px; }
    .ps-work-buttons         { flex-direction: column; }
    .ps-btn-primary,
    .ps-btn-secondary        { width: 100%; min-width: auto; }
}
