/* =====================================================
      EPS PUBLIKASI SECTION - MODERN RESPONSIVE VERSION
      1 dokumen = featured card
      banyak dokumen = compact grid
      ===================================================== */

    .is-publikasi {
        position: relative;
        overflow: hidden;
        padding: 96px 0;

        background:
            radial-gradient(circle at 12% 18%, rgba(37, 99, 235, 0.09), transparent 28%),
            radial-gradient(circle at 88% 18%, rgba(32, 201, 151, 0.08), transparent 26%),
            linear-gradient(180deg, #f2f7fd 0%, #f8fbff 48%, #edf6ff 100%);
    }

    .is-publikasi::before {
        content: "";
        position: absolute;
        inset: 0;
        pointer-events: none;

        background-image:
            linear-gradient(rgba(13, 110, 253, 0.045) 1px, transparent 1px),
            linear-gradient(90deg, rgba(13, 110, 253, 0.045) 1px, transparent 1px);
        background-size: 58px 58px;
        mask-image: linear-gradient(to bottom, transparent 0%, #000 18%, #000 78%, transparent 100%);
        -webkit-mask-image: linear-gradient(to bottom, transparent 0%, #000 18%, #000 78%, transparent 100%);
    }

    .publikasi-wrapper {
        position: relative;
        z-index: 2;
    }

    .publikasi-heading {
        text-align: center;
        margin-bottom: 46px;
    }

    .publikasi-eyebrow {
        display: inline-flex;
        align-items: center;
        gap: 9px;

        margin-bottom: 14px;
        padding: 8px 14px;

        font-size: 13px;
        font-weight: 800;
        color: #0d6efd;

        background: rgba(13, 110, 253, 0.08);
        border: 1px solid rgba(13, 110, 253, 0.13);
        border-radius: 999px;
    }

    .publikasi-eyebrow span {
        width: 9px;
        height: 9px;
        border-radius: 50%;
        background: #20c997;
        box-shadow: 0 0 0 6px rgba(32, 201, 151, 0.14);
    }

    .publikasi-subtitle {
        max-width: 720px;
        margin: 0 auto;

        text-align: center;
        font-size: 16px;
        line-height: 1.8;
        color: #17191d;
    }

    .publikasi-panel {
        position: relative;
        padding: 0;
        background: transparent;
        border: 0;
        box-shadow: none;
        overflow: visible;
    }

    .publikasi-panel::before {
        display: none;
    }

    .publikasi-panel:hover::before {
        opacity: 0;
    }

    /* =====================================================
      GRID MODE
      ===================================================== */

    .publikasi-grid {
        position: relative;
        z-index: 2;

        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 22px;
    }

    .publikasi-grid.is-single {
        grid-template-columns: 1fr;
        max-width: 920px;
        margin: 0 auto;
    }

    .publikasi-grid.is-many {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    @media (min-width: 1400px) {
        .publikasi-grid.is-many {
            grid-template-columns: repeat(4, minmax(0, 1fr));
        }
    }

    /* =====================================================
      CARD BASE
      ===================================================== */

    .publikasi-card {
        position: relative;
        height: 100%;

        background: rgba(255, 255, 255, 0.96);
        border: 0;
        border-radius: 16px;
        box-shadow: 0 12px 34px rgba(15, 23, 42, 0.075);

        overflow: hidden;

        transition:
            transform 0.34s cubic-bezier(0.16, 1, 0.3, 1),
            box-shadow 0.34s cubic-bezier(0.16, 1, 0.3, 1);
    }

    .publikasi-card::before {
        content: "";
        position: absolute;
        inset: 0;
        z-index: 1;
        opacity: 0;

        background:
            linear-gradient(135deg, rgba(13, 110, 253, 0.10), transparent 44%),
            radial-gradient(circle at 82% 20%, rgba(32, 201, 151, 0.16), transparent 26%);

        pointer-events: none;
        transition: opacity 0.32s ease;
    }

    .publikasi-card::after {
        content: "";
        position: absolute;
        left: 18px;
        right: 18px;
        bottom: 0;
        z-index: 3;

        height: 4px;
        border-radius: 999px 999px 0 0;
        background: linear-gradient(90deg, #0d6efd, #38bdf8, #20c997);

        transform: scaleX(0);
        transform-origin: center;
        transition: transform 0.32s ease;
    }

    .publikasi-card:hover {
        transform: translateY(-10px);
        box-shadow: 0 22px 56px rgba(15, 23, 42, 0.13);
    }

    .publikasi-card:hover::before {
        opacity: 1;
    }

    .publikasi-card:hover::after {
        transform: scaleX(1);
    }

    /* =====================================================
      SINGLE MODE - FEATURED
      ===================================================== */

    .publikasi-grid.is-single .publikasi-card {
        min-height: 330px;
        display: grid;
        grid-template-columns: 360px 1fr;
    }

    .publikasi-grid.is-single .publikasi-media {
        height: 100%;
        min-height: 330px;
    }

    .publikasi-grid.is-single .publikasi-title {
        font-size: 28px;
        max-width: 540px;
    }

    .publikasi-grid.is-single .publikasi-desc {
        font-size: 15px;
        -webkit-line-clamp: 5;
        max-width: 560px;
    }

    /* =====================================================
      MANY MODE - COMPACT GRID
      ===================================================== */

    .publikasi-grid.is-many .publikasi-card {
        min-height: 360px;
        display: flex;
        flex-direction: column;
        border-radius: 20px;
    }

    .publikasi-grid.is-many .publikasi-media {
        height: 155px;
        min-height: 155px;
    }

    .publikasi-grid.is-many .publikasi-info {
        padding: 20px 18px 18px;
    }

    .publikasi-grid.is-many .publikasi-kicker {
        margin-bottom: 10px;
        font-size: 11px;
    }

    .publikasi-grid.is-many .publikasi-title {
        font-size: 18px;
        line-height: 1.35;
        margin-bottom: 10px;
        -webkit-line-clamp: 2;
    }

    .publikasi-grid.is-many .publikasi-desc {
        font-size: 13px;
        line-height: 1.65;
        margin-bottom: 14px;
        -webkit-line-clamp: 3;
    }

    .publikasi-grid.is-many .publikasi-meta-row {
        margin-bottom: 16px;
    }

    .publikasi-grid.is-many .publikasi-note {
        display: none;
    }

    .publikasi-grid.is-many .btn-detail {
        min-height: 40px;
        padding: 0 15px;
        font-size: 13px;
    }

    .publikasi-grid.is-many .publikasi-badge {
        top: 12px;
        left: 12px;
        padding: 6px 9px;
        font-size: 10px;
    }

    /* =====================================================
      MEDIA
      ===================================================== */

    .publikasi-media {
        position: relative;
        z-index: 2;

        height: 210px;
        overflow: hidden;

        background:
            linear-gradient(135deg, rgba(13, 110, 253, 0.09), rgba(56, 189, 248, 0.08));
    }

    .publikasi-media img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        display: block;

        transition: transform 0.48s ease, filter 0.48s ease;
    }

    .publikasi-card:hover .publikasi-media img {
        transform: scale(1.08);
        filter: saturate(1.08) contrast(1.04);
    }

    .publikasi-media::after {
        content: "";
        position: absolute;
        inset: 0;
        background:
            linear-gradient(to bottom, transparent 40%, rgba(6, 24, 50, 0.58) 100%);
        opacity: 0.72;
        transition: opacity 0.32s ease;
    }

    .publikasi-card:hover .publikasi-media::after {
        opacity: 0.44;
    }

    .publikasi-badge {
        position: absolute;
        top: 16px;
        left: 16px;
        z-index: 4;

        display: inline-flex;
        align-items: center;
        gap: 7px;

        padding: 7px 11px;

        color: #ffffff;
        font-size: 11px;
        font-weight: 800;

        background: rgba(13, 110, 253, 0.92);
        border: 1px solid rgba(255, 255, 255, 0.24);
        border-radius: 999px;
        backdrop-filter: blur(12px);
        -webkit-backdrop-filter: blur(12px);
    }

    .publikasi-badge span {
        width: 7px;
        height: 7px;
        border-radius: 50%;
        background: #20c997;
        box-shadow: 0 0 0 4px rgba(32, 201, 151, 0.18);
    }

    /* =====================================================
      CONTENT
      ===================================================== */

    .publikasi-info {
        position: relative;
        z-index: 2;

        flex: 1;
        display: flex;
        flex-direction: column;

        padding: 26px 24px 24px;
    }

    .publikasi-kicker {
        display: flex;
        align-items: center;
        gap: 8px;

        margin-bottom: 14px;

        font-size: 12px;
        font-weight: 800;
        color: #0d6efd;
        text-transform: uppercase;
        letter-spacing: 0.4px;
    }

    .publikasi-kicker::before {
        content: "";
        width: 28px;
        height: 2px;
        border-radius: 999px;
        background: linear-gradient(90deg, #0d6efd, #20c997);
    }

    .publikasi-title {
        margin: 0 0 14px;

        font-size: 22px;
        font-weight: 850;
        line-height: 1.35;
        letter-spacing: 0;

        color: #0f172a;

        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
    }

    .publikasi-desc {
        margin: 0 0 22px;

        font-size: 14px;
        line-height: 1.8;
        color: #64748b;

        display: -webkit-box;
        -webkit-line-clamp: 4;
        -webkit-box-orient: vertical;
        overflow: hidden;
    }

    .publikasi-meta-row {
        display: flex;
        align-items: center;
        gap: 10px;
        flex-wrap: wrap;

        margin-bottom: 22px;
    }

    .publikasi-meta {
        display: inline-flex;
        align-items: center;
        gap: 7px;

        color: #475569;
        font-size: 12px;
        font-weight: 700;

        padding: 7px 10px;
        border-radius: 999px;
        background: rgba(15, 23, 42, 0.045);
        border: 1px solid rgba(15, 23, 42, 0.07);
    }

    .publikasi-meta.is-type {
        color: #0d6efd;
        background: rgba(13, 110, 253, 0.08);
        border-color: rgba(13, 110, 253, 0.12);
    }

    .publikasi-meta.is-type::before {
        content: "📄";
        font-size: 13px;
    }

    .publikasi-meta.is-ready::before {
        content: "●";
        color: #20c997;
        font-size: 10px;
    }

    .publikasi-actions {
        margin-top: auto;

        display: flex;
        align-items: center;
        gap: 12px;
        flex-wrap: wrap;
    }

    .btn-detail {
        position: relative;
        overflow: hidden;

        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 8px;

        min-height: 46px;
        padding: 0 20px;

        cursor: pointer;
        border: none;
        border-radius: 12px;

        color: #ffffff !important;
        background: linear-gradient(135deg, #0d6efd, #0062e6);

        font-size: 14px;
        font-weight: 800;
        line-height: 1;
        text-decoration: none !important;

        box-shadow: 0 12px 24px rgba(13, 110, 253, 0.24);

        transition:
            transform 0.28s ease,
            box-shadow 0.28s ease,
            background 0.28s ease;
    }

    .btn-detail::before {
        content: "";
        position: absolute;
        top: 0;
        left: -75%;
        width: 50%;
        height: 100%;

        background: linear-gradient(90deg,
                transparent,
                rgba(255, 255, 255, 0.30),
                transparent);

        transform: skewX(-20deg);
        transition: left 0.58s ease;
    }

    .btn-detail::after {
        content: "↓";
        font-size: 15px;
        transition: transform 0.28s ease;
    }

    .btn-detail:hover {
        color: #ffffff !important;
        background: linear-gradient(135deg, #006be8, #004fbf);
        transform: translateY(-2px);
        box-shadow: 0 18px 34px rgba(13, 110, 253, 0.34);
    }

    .btn-detail:hover::before {
        left: 130%;
    }

    .btn-detail:hover::after {
        transform: translateY(2px);
    }

    .publikasi-note {
        color: #64748b;
        font-size: 12px;
        line-height: 1.5;
    }

    .publikasi-empty {
        position: relative;
        z-index: 2;

        padding: 52px 24px;
        text-align: center;

        background: rgba(255, 255, 255, 0.88);
        border: 1px dashed rgba(13, 110, 253, 0.25);
        border-radius: 24px;
        color: #64748b;
    }

    /* =====================================================
      ANIMATION
      ===================================================== */

    @keyframes publikasiFadeUp {
        from {
            opacity: 0;
            transform: translateY(30px);
        }

        to {
            opacity: 1;
            transform: translateY(0);
        }
    }

    .publikasi-animate {
        opacity: 0;
        animation: publikasiFadeUp 0.78s ease forwards;
    }

    .publikasi-card:nth-child(1) {
        animation-delay: 0.05s;
    }

    .publikasi-card:nth-child(2) {
        animation-delay: 0.12s;
    }

    .publikasi-card:nth-child(3) {
        animation-delay: 0.19s;
    }

    .publikasi-card:nth-child(4) {
        animation-delay: 0.26s;
    }

    .publikasi-card:nth-child(5) {
        animation-delay: 0.33s;
    }

    .publikasi-card:nth-child(6) {
        animation-delay: 0.40s;
    }

    .publikasi-card:nth-child(7) {
        animation-delay: 0.47s;
    }

    .publikasi-card:nth-child(8) {
        animation-delay: 0.54s;
    }

    /* =====================================================
      RESPONSIVE
      ===================================================== */

    @media (max-width: 1199px) {
        .publikasi-grid.is-many {
            grid-template-columns: repeat(2, minmax(0, 1fr));
        }
    }

    @media (max-width: 991px) {
        .is-publikasi {
            padding: 76px 0;
        }

        .publikasi-panel {
            padding: 0;
        }

        .publikasi-grid,
        .publikasi-grid.is-single,
        .publikasi-grid.is-many {
            grid-template-columns: 1fr;
        }

        .publikasi-grid.is-single .publikasi-card {
            display: flex;
            min-height: auto;
        }

        .publikasi-grid.is-single .publikasi-media {
            height: 230px;
            min-height: 230px;
        }

        .publikasi-grid.is-single .publikasi-title {
            font-size: 23px;
        }
    }

    @media (max-width: 576px) {
        .publikasi-panel {
            padding: 0;
        }

        .publikasi-media,
        .publikasi-grid.is-single .publikasi-media,
        .publikasi-grid.is-many .publikasi-media {
            height: 210px;
            min-height: 210px;
        }

        .publikasi-info {
            padding: 22px 20px;
        }

        .publikasi-actions {
            flex-direction: column;
            align-items: stretch;
        }

        .btn-detail {
            width: 100%;
        }
    }

    /* =====================================================
   FIX SINGLE PUBLICATION WITH SHORT DESCRIPTION
   ===================================================== */

    .publikasi-grid.is-single {
        max-width: 860px;
    }

    .publikasi-grid.is-single .publikasi-card {
        min-height: 285px;
        grid-template-columns: 320px 1fr;
    }

    .publikasi-grid.is-single .publikasi-media {
        min-height: 285px;
        height: 285px;
    }

    .publikasi-grid.is-single .publikasi-info {
        padding: 32px 34px;
        justify-content: center;
    }

    .publikasi-grid.is-single .publikasi-title {
        font-size: 26px;
        margin-bottom: 14px;
    }

    .publikasi-grid.is-single .publikasi-desc {
        margin-bottom: 0;
    }

    .publikasi-grid.is-single .publikasi-actions {
        margin-top: 28px;
    }

    /* kalau deskripsi pendek, jangan ada ruang kosong besar */
    .publikasi-grid.is-single .publikasi-card.is-short-desc {
        min-height: 260px;
    }

    .publikasi-grid.is-single .publikasi-card.is-short-desc .publikasi-media {
        min-height: 260px;
        height: 260px;
    }

    .publikasi-grid.is-single .publikasi-card.is-short-desc .publikasi-info {
        justify-content: center;
    }

    .publikasi-grid.is-single .publikasi-card.is-short-desc .publikasi-actions {
        margin-top: 24px;
    }

    /* tombol tidak perlu dipaksa ke bawah untuk mode single */
    .publikasi-grid.is-single .publikasi-actions {
        margin-top: 24px;
    }

    /* tetap pakai auto hanya untuk banyak dokumen agar card grid rapi */
    .publikasi-grid.is-many .publikasi-actions {
        margin-top: auto;
    }

    @media (max-width: 991px) {
        .publikasi-grid.is-single .publikasi-card {
            display: flex;
            min-height: auto;
        }

        .publikasi-grid.is-single .publikasi-media,
        .publikasi-grid.is-single .publikasi-card.is-short-desc .publikasi-media {
            height: 220px;
            min-height: 220px;
        }

        .publikasi-grid.is-single .publikasi-info {
            padding: 24px 22px;
        }
    }
