body{
    font-family:'Inter',sans-serif;
    background:#f6f8fa;
    overflow-x:hidden;
    color:#1e293b;
}

/* ================= NAVBAR ================= */

.navbar-landing{
    background:#ffffff;
    box-shadow:0 1px 0 rgba(15,23,42,.06);
    transition:box-shadow .3s ease, padding .3s ease;
    padding-top:.85rem;
    padding-bottom:.85rem;
}

.navbar-landing.scrolled{
    box-shadow:0 10px 30px rgba(15,23,42,.1);
    padding-top:.55rem;
    padding-bottom:.55rem;
}

.navbar-brand{
    font-size:1rem;
    letter-spacing:.01em;
    display:flex;
    align-items:center;
    color:#0f172a !important;
}

.navbar-brand .brand-mark{
    width:38px;
    height:38px;
    border-radius:10px;
    background:linear-gradient(135deg,var(--primary),#0a5f67);
    display:inline-flex;
    align-items:center;
    justify-content:center;
    margin-right:.7rem;
    font-size:1.1rem;
    color:#fff;
    flex-shrink:0;
}

.navbar-brand-name{
    font-weight:800;
    font-size:1.02rem;
    color:#0f172a;
    line-height:1.15;
    white-space:nowrap;
}

.navbar-brand-divider{
    width:1px;
    align-self:stretch;
    background:#e2e8f0;
    margin:0 .85rem;
}

.navbar-brand-subtitle{
    font-size:.72rem;
    font-weight:700;
    color:#475569;
    line-height:1.3;
    max-width:190px;
}

.navbar-landing .nav-link{
    color:#334155 !important;
    margin-left:4px;
    padding:.5rem .85rem !important;
    border-radius:50px;
    font-weight:600;
    font-size:.87rem;
    transition:background .2s ease, color .2s ease;
}

.navbar-landing .nav-link:hover{
    background:#f1f5f9;
    color:var(--primary) !important;
}

.navbar-landing .btn-outline-pill{
    border:1.5px solid #e2e8f0;
    color:#334155 !important;
    border-radius:50px;
    font-weight:600;
    font-size:.84rem;
    padding:.48rem 1.05rem;
    transition:border-color .2s ease, color .2s ease, background .2s ease;
    white-space:nowrap;
}

.navbar-landing .btn-outline-pill:hover{
    border-color:var(--primary);
    color:var(--primary) !important;
    background:#f0fbfb;
}

.navbar-landing .btn-login-pill{
    background:var(--primary);
    color:#fff !important;
    border-radius:50px;
    font-weight:700;
    font-size:.87rem;
    padding:.55rem 1.35rem;
    border:none;
    box-shadow:0 8px 18px -6px rgba(14,124,134,.5);
    white-space:nowrap;
}

.navbar-landing .btn-login-pill:hover{
    background:#0a5f67;
    color:#fff !important;
    transform:translateY(-1px);
}

/* ================= HERO ================= */

.hero-section{
    position:relative;
    min-height:92vh;
    display:flex;
    align-items:center;
    background-color:#ffffff;
    background-size:cover;
    background-position:center;
    color:#0f172a;
    overflow:hidden;
    padding-top:104px;
    padding-bottom:60px;
}

/* Kalau Super Admin upload gambar latar sendiri, lapis putih
   tembus-pandang ini menjaga teks tetap terbaca di atas gambar apa
   pun - tanpa lapis ini, gambar kontras tinggi bisa membuat judul/
   deskripsi sulit dibaca. */
.hero-section.has-custom-bg::after{
    content:'';
    position:absolute;
    inset:0;
    background:rgba(255,255,255,.85);
    pointer-events:none;
}

.hero-section::before{
    content:'';
    position:absolute;
    inset:0;
    background-image:
        radial-gradient(circle at 18% 22%, rgba(14,124,134,.07) 0, transparent 42%),
        radial-gradient(circle at 88% 75%, rgba(14,124,134,.07) 0, transparent 38%);
    pointer-events:none;
}

.hero-title{
    font-size:48px;
    font-weight:800;
    line-height:1.18;
    letter-spacing:-.01em;
    color:#0f172a;
    position:relative;
}

.hero-title span{
    color:var(--primary);
}

.hero-desc{
    margin-top:22px;
    font-size:17px;
    line-height:1.75;
    color:#475569;
    max-width:520px;
    position:relative;
}

.hero-logo{
    display:block;
    width:104px;
    height:104px;
    object-fit:cover;
    border-radius:22px;
    margin-bottom:22px;
    background:#f0fbfb;
    border:1px solid #d3edee;
    padding:10px;
    box-shadow:0 12px 28px rgba(14,124,134,.14);
    position:relative;
}

.hero-badge{
    display:inline-flex;
    align-items:center;
    gap:.5rem;
    background:#f0fbfb;
    border:1px solid #d3edee;
    padding:8px 18px;
    border-radius:50px;
    margin-bottom:22px;
    font-weight:600;
    font-size:.83rem;
    letter-spacing:.02em;
    color:var(--primary);
    position:relative;
}

.hero-badge .dot{
    width:7px;
    height:7px;
    border-radius:50%;
    background:#22c55e;
    box-shadow:0 0 0 3px rgba(34,197,94,.2);
}

/* -------- Visual: perangkat mockup + elemen dekoratif (titik silang,
   lingkaran blur lembut, garis lengkung tipis) - murni CSS, tanpa
   foto/gambar dibuat-buat. -------- */

.hero-visual{
    position:relative;
    height:460px;
}

.hero-decor-circle{
    position:absolute;
    border-radius:50%;
    pointer-events:none;
}
.hero-decor-circle.c1{
    width:320px; height:320px; top:-30px; right:-20px;
    background:radial-gradient(circle, rgba(14,124,134,.10), rgba(14,124,134,0) 70%);
}
.hero-decor-circle.c2{
    width:200px; height:200px; bottom:10px; left:-10px;
    background:radial-gradient(circle, rgba(251,191,36,.16), rgba(251,191,36,0) 70%);
}

.hero-decor-curve{
    position:absolute;
    top:6%;
    left:-8%;
    width:65%;
    height:58%;
    border:1.5px solid rgba(14,124,134,.22);
    border-radius:50%;
    border-right-color:transparent;
    border-bottom-color:transparent;
    transform:rotate(-25deg);
    pointer-events:none;
}

.hero-decor-cross{
    position:absolute;
    width:14px;
    height:14px;
    pointer-events:none;
    opacity:.75;
    color:#f97316;
}
.hero-decor-cross::before,
.hero-decor-cross::after{
    content:'';
    position:absolute;
    background:currentColor;
    border-radius:1px;
}
.hero-decor-cross::before{ top:50%; left:0; width:100%; height:2.5px; transform:translateY(-50%); }
.hero-decor-cross::after{ left:50%; top:0; width:2.5px; height:100%; transform:translateX(-50%); }
.hero-decor-cross.x1{ top:4%; left:6%; }
.hero-decor-cross.x2{ top:0; left:32%; color:#6366f1; }
.hero-decor-cross.x3{ top:11%; left:24%; width:10px; height:10px; color:#6366f1; }
.hero-decor-cross.x4{ top:19%; left:12%; width:10px; height:10px; }

/* Bingkai "laptop" - .hero-mockup (kartu dashboard yang sudah ada)
   ditempatkan di dalam layar, bukan lagi mengambang bebas, supaya
   terasa seperti tampilan di perangkat sungguhan. */
.hero-device{
    position:relative;
    max-width:420px;
    margin:0 auto;
    animation:floatCard 7s ease-in-out infinite;
}

.hero-device-screen{
    background:#1e293b;
    border-radius:16px 16px 3px 3px;
    padding:9px 9px 0;
    box-shadow:0 30px 60px -12px rgba(15,23,42,.32);
}

.hero-device-screen .hero-mockup{
    background:#fff;
    color:#1e293b;
    border-radius:8px 8px 0 0;
    padding:20px;
}

.hero-mockup .mockup-head{
    display:flex;
    align-items:center;
    gap:10px;
    margin-bottom:16px;
}

.hero-mockup .mockup-avatar{
    width:38px;
    height:38px;
    border-radius:50%;
    background:linear-gradient(135deg,#12979f,#0a5f67);
}

.hero-mockup .mockup-line{
    height:8px;
    border-radius:4px;
    background:#e2e8f0;
}

.hero-mockup .mockup-stat{
    display:flex;
    justify-content:space-between;
    align-items:center;
    padding:12px 0;
    border-top:1px solid #eef2f6;
}

.hero-mockup .mockup-stat:last-child{
    border-bottom:1px solid #eef2f6;
}

.hero-mockup .mockup-stat-value{
    font-weight:700;
    font-size:1rem;
}

.hero-device-base{
    height:16px;
    background:linear-gradient(180deg,#334155,#1e293b);
    border-radius:0 0 10px 10px;
    position:relative;
}
.hero-device-base::after{
    content:'';
    position:absolute;
    left:50%;
    top:0;
    transform:translateX(-50%);
    width:64px;
    height:5px;
    background:#0f172a;
    border-radius:0 0 6px 6px;
}

.hero-float-card{
    position:absolute;
    background:#fff;
    border-radius:16px;
    box-shadow:0 20px 45px -10px rgba(15,23,42,.16);
    padding:14px 18px;
    display:flex;
    align-items:center;
    gap:12px;
    color:#1e293b;
    animation:floatCard 6s ease-in-out infinite;
}

.hero-float-card.card-a{
    top:0;
    right:0;
    animation-delay:.4s;
}

.hero-float-card.card-b{
    bottom:2%;
    left:-4%;
    animation-delay:1.1s;
}

.hero-float-card .icon-box{
    width:40px;
    height:40px;
    border-radius:12px;
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:1.1rem;
    color:#fff;
    flex-shrink:0;
}

.hero-float-card strong{
    display:block;
    font-size:.95rem;
    line-height:1.2;
}

.hero-float-card small{
    color:#64748b;
}

@keyframes floatCard{
    0%, 100%{ transform:translateY(0); }
    50%{ transform:translateY(-14px); }
}

/* ================= BUTTON =================
   Latar hero sekarang terang (bukan gelap lagi) - tombol CTA utama
   pakai warna primer aplikasi (var(--primary)), tombol sekunder pakai
   outline gelap tipis (bukan outline-light lama yang dirancang utk
   latar gelap). Perubahan ini di-scope KHUSUS .hero-section, tidak
   memengaruhi tombol .btn-primary di halaman lain. */
.hero-section .btn-primary{
    background:var(--primary);
    border:none;
    color:#fff;
    font-weight:600;
    box-shadow:0 10px 25px -6px rgba(14,124,134,.45);
}

.hero-section .btn-primary:hover{
    background:#0a5f67;
    color:#fff;
    transform:translateY(-1px);
}

.hero-section .btn-outline-light{
    border:1.5px solid #e2e8f0;
    color:#334155;
    font-weight:600;
    background:#fff;
}

.hero-section .btn-outline-light:hover{
    border-color:var(--primary);
    color:var(--primary);
    background:#f0fbfb;
}

/* ================= MOBILE ================= */

@media(max-width:991px){
    .hero-title{ font-size:34px; }
    .hero-desc{ max-width:none; }
    .hero-visual{ height:300px; margin-top:40px; }
    .hero-device{ max-width:280px; }
    .hero-decor-circle,
    .hero-decor-curve,
    .hero-decor-cross{ display:none; }
    .hero-float-card{ display:none; }
    .navbar-brand-subtitle{ display:none; }
    .navbar-brand-divider{ display:none; }
}

/*=======================*/
/* SLIDE PENGUMUMAN (menggantikan kartu Statistik) */

.announce-slider{
    position:relative;
    padding:0 34px;
}

.announce-slide{
    position:relative;
    overflow:hidden;
    border-radius:24px;
    min-height:230px;
    padding:44px 48px;
    align-items:center;
    background:linear-gradient(120deg,#1d4ed8 0%,#0ea5e9 55%,#22d3ee 100%);
    background-size:cover;
    background-position:center;
    box-shadow:0 20px 45px rgba(14,116,144,.28);
}

/* Bootstrap's ".carousel-item.active{ display:block }" (specificity
   0,2,0) menang atas ".announce-slide{ display:flex }" polos (0,1,0) -
   selector di sini disamakan spesifisitasnya (juga 0,2,0) supaya menang
   lewat urutan cascade (landing.css dimuat setelah adminlte.min.css). */
.carousel-item.announce-slide{
    display:flex;
}

/* Slide dengan gambar pengumuman - foto jadi latar (background-image
   inline lewat style="" di view), overlay gelap supaya teks tetap
   terbaca di atas foto apa pun. */
.announce-slide.has-image::before{
    content:"";
    position:absolute;
    inset:0;
    background:linear-gradient(100deg, rgba(15,23,42,.72) 0%, rgba(15,23,42,.45) 55%, rgba(15,23,42,.2) 100%);
    z-index:1;
}

.announce-ring{
    position:absolute;
    border-radius:50%;
    border:22px solid rgba(255,255,255,.10);
    pointer-events:none;
}

.announce-ring.r1{ width:340px; height:340px; top:-140px; right:-90px; }
.announce-ring.r2{ width:220px; height:220px; bottom:-110px; right:60px; border-width:16px; }
.announce-ring.r3{ width:140px; height:140px; top:20px; right:220px; border-width:12px; opacity:.7; }

.announce-slide-body{
    position:relative;
    z-index:2;
    max-width:640px;
    color:#fff;
}

.announce-slide-title{
    font-size:1.9rem;
    font-weight:800;
    line-height:1.25;
    margin:0 0 12px;
}

.announce-slide-desc{
    font-size:.98rem;
    line-height:1.6;
    color:rgba(255,255,255,.88);
    margin:0 0 18px;
}

.announce-slide-btn{
    display:inline-flex;
    align-items:center;
    padding:10px 24px;
    border-radius:30px;
    background:linear-gradient(135deg,#22c55e,#15803d);
    color:#fff;
    font-weight:700;
    font-size:.9rem;
    text-decoration:none;
    box-shadow:0 10px 20px rgba(21,128,61,.35);
    transition:transform .2s ease, box-shadow .2s ease;
}

.announce-slide-btn:hover{
    transform:translateY(-2px);
    box-shadow:0 14px 26px rgba(21,128,61,.42);
    color:#fff;
}

.announce-arrow{
    position:absolute;
    top:50%;
    transform:translateY(-50%);
    width:44px;
    height:44px;
    border-radius:50%;
    background:#fff;
    border:none;
    display:flex;
    align-items:center;
    justify-content:center;
    color:#1e293b;
    font-size:1.1rem;
    box-shadow:0 8px 20px rgba(15,23,42,.18);
    z-index:5;
    cursor:pointer;
    transition:transform .2s ease, box-shadow .2s ease;
}

.announce-arrow:hover{
    transform:translateY(-50%) scale(1.08);
    box-shadow:0 10px 24px rgba(15,23,42,.24);
}

.announce-arrow-prev{ left:0; }
.announce-arrow-next{ right:0; }

.announce-dots{
    display:flex;
    justify-content:center;
    gap:8px;
    margin-top:18px;
}

.announce-dots button{
    width:9px;
    height:9px;
    border-radius:50%;
    border:none;
    background:#cbd5e1;
    padding:0;
    cursor:pointer;
    transition:background .2s ease, transform .2s ease;
}

.announce-dots button.active{
    background:#1d4ed8;
    transform:scale(1.2);
}

@media (max-width:767.98px){
    .announce-slider{ padding:0 8px; }
    .announce-slide{ padding:32px 24px; min-height:auto; }
    .announce-slide-title{ font-size:1.4rem; }
    .announce-arrow{ width:36px; height:36px; font-size:.95rem; }
    .announce-arrow-prev{ left:-8px; }
    .announce-arrow-next{ right:-8px; }
    .announce-ring.r3{ display:none; }
}

/*=======================*/

.section-eyebrow{
    display:inline-flex;
    align-items:center;
    gap:.4rem;
    padding:6px 16px;
    background:#e6f4f4;
    color:#0a5f67;
    border-radius:30px;
    font-weight:700;
    font-size:.75rem;
    letter-spacing:.06em;
    text-transform:uppercase;
    margin-bottom:14px;
}

.section-title{
    font-size:2.1rem;
    font-weight:800;
    margin-bottom:8px;
    letter-spacing:-.01em;
    color:#0f172a;
}

/*=======================*/

.announcement-card{
    background:#fff;
    padding:26px;
    border-radius:18px;
    border:1px solid #eef2f6;
    box-shadow:0 10px 25px rgba(15,23,42,.04);
    height:100%;
    transition:transform .25s ease, box-shadow .25s ease;
}

.announcement-card:hover{
    transform:translateY(-6px);
    box-shadow:0 18px 35px rgba(15,23,42,.09);
}

.announcement-header{
    display:flex;
    justify-content:space-between;
    align-items:center;
    margin-bottom:16px;
    font-size:13px;
    color:#94a3b8;
}

.announcement-card h4{
    font-weight:700;
    font-size:1.08rem;
    margin-bottom:10px;
    color:#0f172a;
}

.announcement-card p{
    color:#475569;
    font-size:.92rem;
    line-height:1.6;
}

/*=======================*/

.timeline{
    position:relative;
    padding-left:36px;
}

.timeline::before{
    content:'';
    position:absolute;
    left:10px;
    top:4px;
    bottom:4px;
    width:2px;
    background:#d7e6e7;
}

.timeline-item{
    position:relative;
    margin-bottom:28px;
}

.timeline-dot{
    position:absolute;
    left:-34px;
    top:4px;
    width:20px;
    height:20px;
    background:#0e7c86;
    border-radius:50%;
    border:4px solid #fff;
    box-shadow:0 0 0 3px #d7e6e7;
}

.timeline-content{
    background:#fff;
    padding:20px 22px;
    border-radius:14px;
    border:1px solid #eef2f6;
    box-shadow:0 8px 20px rgba(15,23,42,.04);
}

.timeline-content h5{
    font-weight:700;
    color:#0f172a;
    margin-bottom:4px;
}

/* ================= FOOTER ================= */

.landing-footer{
    background:#062e33;
    color:rgba(255,255,255,.75);
    padding:56px 0 24px;
}

.landing-footer h6{
    color:#fff;
    font-weight:700;
    margin-bottom:14px;
}

.landing-footer a{
    color:rgba(255,255,255,.7);
    transition:color .2s ease;
}

.landing-footer a:hover{
    color:#fff;
}

.landing-footer .footer-bottom{
    border-top:1px solid rgba(255,255,255,.1);
    margin-top:36px;
    padding-top:20px;
    font-size:.85rem;
    color:rgba(255,255,255,.55);
}

/* =====================================================
   LAYANAN PUBLIK - hero band bertema sama dengan landing
   & login (gradient teal + dot pattern + blob animasi),
   dipakai bersama oleh form.php/status_form.php/success.php/
   status_result.php supaya tidak terasa polos/kosong seperti
   sebelumnya (dulu cuma navbar + halaman putih polos).
   ===================================================== */

.ps-hero{
    position:relative;
    background:
        radial-gradient(circle at 15% 20%, rgba(255,255,255,.08) 0, transparent 45%),
        linear-gradient(135deg,#12979f 0%,#0e7c86 45%,#073e44 100%);
    color:#fff;
    overflow:hidden;
}

.ps-hero::before{
    content:'';
    position:absolute;
    inset:0;
    background-image:radial-gradient(rgba(255,255,255,.14) 1px, transparent 1px);
    background-size:24px 24px;
    -webkit-mask-image:radial-gradient(circle at 30% 30%, rgba(0,0,0,.55), transparent 70%);
    mask-image:radial-gradient(circle at 30% 30%, rgba(0,0,0,.55), transparent 70%);
    pointer-events:none;
}

.ps-blob{
    position:absolute;
    border-radius:50%;
    filter:blur(55px);
    opacity:.28;
    pointer-events:none;
    animation:psBlobMove 12s infinite alternate ease-in-out;
}

.ps-blob1{ width:220px; height:220px; background:#5fd3d9; left:-60px; top:-60px; }
.ps-blob2{ width:280px; height:280px; background:#fbbf24; right:-90px; bottom:-90px; animation-delay:1.2s; }
.ps-blob3{ width:150px; height:150px; background:#8fe0e3; right:22%; top:20%; animation-delay:.6s; }

@keyframes psBlobMove{
    from{ transform:translate(0,0) scale(1); }
    to{ transform:translate(26px,-22px) scale(1.12); }
}

.ps-hero-icon{
    width:56px;
    height:56px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    font-size:1.5rem;
    color:#fff;
    background:rgba(255,255,255,.14);
    border:1px solid rgba(255,255,255,.22);
    backdrop-filter:blur(8px);
    -webkit-backdrop-filter:blur(8px);
    border-radius:16px;
    margin-bottom:14px;
    box-shadow:0 10px 25px -6px rgba(3,30,33,.4);
}

.ps-hero p{
    color:rgba(255,255,255,.85);
}

/* Hero ringkas dipakai di form.php (di dalam shell 1-layar-penuh,
   tabcontent butuh sisa tinggi viewport, jadi hero ini sengaja pendek).
   flex-shrink:0 wajib ada: shell adalah flex column dan hero punya
   overflow:hidden, yang membuat browser menghitung automatic minimum
   size-nya sebagai 0 (aturan flexbox) - tanpa ini, di viewport pendek
   hero bisa ter-shrink sampai memotong paragraf & tombol tab pill. */
.ps-hero-compact{
    padding:88px 0 18px;
    flex-shrink:0;
}

/* Hero halaman berdiri sendiri (cek status/hasil/sukses) - kartu
   di bawahnya sengaja "menumpuk" naik ke tepi bawah hero (lihat
   .ps-card-overlap) supaya tidak ada jarak kosong besar seperti
   sebelumnya (margin-top:110px di atas kartu kecil). */
.ps-hero-page{
    padding:100px 0 64px;
    text-align:center;
}

.ps-card-overlap{
    position:relative;
    z-index:5;
    margin-top:-44px;
}

/* ---- Mobile: hero Layanan Publik/Cek Status/Berhasil dipadatkan -
   sebelumnya tidak punya breakpoint sendiri sama sekali, padding
   100px/88px di atas terasa terlalu lapang di layar sempit. ---- */
@media (max-width:575.98px){
    .ps-hero-page{
        padding:84px 0 44px;
    }

    .ps-hero-compact{
        padding:76px 0 16px;
    }

    .ps-hero-icon{
        width:46px;
        height:46px;
        font-size:1.25rem;
        margin-bottom:10px;
    }

    .ps-card-overlap{
        margin-top:-28px;
    }

    .ps-form-card .card-body{
        padding:1.5rem !important;
    }

    .ps-trust-badge{
        font-size:.72rem;
        padding:5px 11px;
    }

    .ps-submit-btn{
        padding:.8rem 1.2rem;
        font-size:.95rem;
    }
}

/* ---- Tab pill Layanan Publik - dudukkan di atas hero gradient ---- */
.public-service-tabs{
    position:relative;
    z-index:2;
}

.public-service-tabs .nav-link{
    background:rgba(255,255,255,.12);
    border:1px solid rgba(255,255,255,.2);
    backdrop-filter:blur(6px);
    -webkit-backdrop-filter:blur(6px);
}

.public-service-tabs .nav-link:hover{
    background:rgba(255,255,255,.2);
    color:#fff;
}

.public-service-tabs .nav-link.active{
    background:#fbbf24;
    border-color:#fbbf24;
    color:#111827 !important;
    box-shadow:0 8px 20px -6px rgba(251,191,36,.55);
}

/* ---- Kontainer grid kartu direktori siswa - pemisah visual dari
   form pencarian di atasnya, isi selalu 12 kartu/halaman (habis rata
   di 2/3/4/6 kolom per breakpoint, tidak ada baris terakhir bolong). ---- */
.ps-siswa-grid{
    background:#f8fafc;
    border:1px solid #e2e8f0;
    border-radius:18px;
    padding:1.25rem;
}

/* ---- Kartu direktori siswa - hover lift senada stat-card ---- */
.ps-student-card{
    transition:transform .2s ease, box-shadow .2s ease;
}

.ps-student-card:hover{
    transform:translateY(-4px);
    box-shadow:0 16px 32px rgba(15,23,42,.12) !important;
}

/* Background halaman Layanan Publik dibuat hijau penuh (bukan cuma
   band hero) - konten kedua tab (form & direktori siswa) dibungkus
   kartu putih supaya tetap kontras & mudah dibaca di atasnya. */
.public-service-shell{
    position:relative;
    background:
        radial-gradient(circle at 15% 20%, rgba(255,255,255,.08) 0, transparent 45%),
        linear-gradient(135deg,#12979f 0%,#0e7c86 45%,#073e44 100%);
    min-height:100vh;
    overflow:hidden;
}

.public-service-shell::before{
    content:'';
    position:absolute;
    inset:0;
    background-image:radial-gradient(rgba(255,255,255,.1) 1px, transparent 1px);
    background-size:26px 26px;
    pointer-events:none;
    z-index:0;
}

.ps-shell-blob{
    position:absolute;
    border-radius:50%;
    filter:blur(70px);
    opacity:.24;
    pointer-events:none;
    z-index:0;
    animation:psBlobMove 16s infinite alternate ease-in-out;
}

.ps-shell-blob1{ width:340px; height:340px; background:#5fd3d9; left:-110px; top:70px; }
.ps-shell-blob2{ width:400px; height:400px; background:#fbbf24; right:-130px; top:38%; animation-delay:2.4s; }
.ps-shell-blob3{ width:280px; height:280px; background:#8fe0e3; left:6%; bottom:-90px; animation-delay:1.2s; }
.ps-shell-blob4{ width:230px; height:230px; background:#5fd3d9; right:8%; bottom:6%; animation-delay:3.4s; }

.public-service-tabcontent,
.ps-hero{
    position:relative;
    z-index:1;
}

/* ---- Status badge besar di halaman hasil cek status ---- */
.ps-status-badge.badge{
    /* .badge{border-radius:.5rem} di layouts/modern.php dimuat paling
       akhir di <head> (specificity sama, urutan menang) - kombinasi
       selector di sini supaya pill 50px tidak ketiban rule itu. */
    border-radius:50px;
    font-weight:700;
    letter-spacing:.02em;
}

/* =====================================================
   FORM AJUKAN LAYANAN - versi modern (trust badge, section
   bernomor, input ber-ikon, dropzone lampiran, tombol gradient)
   ===================================================== */

.ps-trust-row{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    justify-content:center;
}

.ps-trust-badge{
    display:inline-flex;
    align-items:center;
    gap:6px;
    background:#fff;
    border:1px solid #e2e8f0;
    color:#0e7c86;
    font-weight:600;
    font-size:.78rem;
    padding:6px 14px;
    border-radius:50px;
    box-shadow:0 4px 12px rgba(15,23,42,.06);
}

.ps-trust-badge i{ color:#12979f; }

.ps-form-card{
    border-radius:24px;
    overflow:hidden;
}

.ps-form-section{
    padding-bottom:1.5rem;
    margin-bottom:1.5rem;
    border-bottom:1px dashed #e2e8f0;
}

.ps-form-section:last-of-type{
    border-bottom:0;
    margin-bottom:0;
    padding-bottom:0;
}

.ps-form-section-title{
    display:flex;
    align-items:center;
    gap:10px;
    font-weight:700;
    font-size:.98rem;
    color:#073e44;
    margin-bottom:1rem;
}

.ps-step-num{
    width:26px;
    height:26px;
    border-radius:50%;
    background:linear-gradient(135deg,#12979f,#0e7c86);
    color:#fff;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    font-size:.8rem;
    font-weight:700;
    flex:0 0 auto;
}

.ps-form .form-control,
.ps-form .form-select,
.ps-form .input-group-text{
    border-radius:14px !important;
    border-color:#e2e8f0;
    padding:.65rem .9rem;
}

.ps-form textarea.form-control{
    border-radius:16px !important;
}

.ps-form .input-group .form-control{
    border-top-left-radius:0 !important;
    border-bottom-left-radius:0 !important;
}

.ps-form .input-group .input-group-text{
    border-top-right-radius:0 !important;
    border-bottom-right-radius:0 !important;
    background:#f6f8fa;
    color:#0e7c86;
    border-right:0;
}

.ps-form .form-control:focus,
.ps-form .form-select:focus{
    border-color:#5fd3d9;
    box-shadow:0 0 0 4px rgba(18,151,159,.14);
}

.ps-form .input-group:focus-within .input-group-text{
    border-color:#5fd3d9;
    color:#0a5f67;
}

.ps-alert-soft{
    display:flex;
    align-items:flex-start;
    gap:10px;
    background:#fff7ed;
    border:1px solid #fde68a;
    color:#92400e;
    border-radius:14px;
    padding:.7rem 1rem;
    font-size:.85rem;
}

.ps-file-drop{
    position:relative;
    border:2px dashed #cbd5e1;
    border-radius:16px;
    padding:1.5rem 1rem;
    text-align:center;
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:4px;
    background:#f8fafc;
    transition:border-color .2s ease, background .2s ease;
}

.ps-file-drop:hover,
.ps-file-drop.has-file{
    border-color:#12979f;
    background:#ecfdff;
}

.ps-file-drop-icon{
    font-size:1.8rem;
    color:#12979f;
}

.ps-file-input{
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    opacity:0;
    cursor:pointer;
}

.ps-captcha-box{
    display:flex;
    align-items:center;
    gap:12px;
    background:#f0fdfa;
    border:1px solid #99f6e4;
    border-radius:16px;
    padding:1rem 1.2rem;
}

.ps-captcha-box i{
    font-size:1.4rem;
    color:#0e7c86;
}

.ps-captcha-box .form-control{
    background:#fff;
}

.ps-submit-btn{
    border:0;
    border-radius:16px;
    padding:.9rem 1.5rem;
    font-weight:700;
    font-size:1.02rem;
    color:#fff;
    background:linear-gradient(135deg,#12979f,#0a5f67);
    box-shadow:0 14px 30px -10px rgba(10,95,103,.55);
    transition:transform .18s ease, box-shadow .18s ease;
}

.ps-submit-btn:hover:not(:disabled){
    transform:translateY(-2px);
    box-shadow:0 18px 34px -8px rgba(10,95,103,.6);
    color:#fff;
}

.ps-submit-btn:disabled{
    opacity:.6;
    cursor:not-allowed;
}

/* ---- Pagination direktori siswa - disamakan warna dgn tema teal
   Layanan Publik, bukan biru bawaan Bootstrap. ---- */
.public-service-shell .page-link{
    color:#0e7c86;
    border-radius:10px;
    margin:0 3px;
    border:1px solid #e2e8f0;
}

.public-service-shell .page-link:hover{
    color:#0a5f67;
    background:#f0fbfb;
    border-color:#5fd3d9;
}

.public-service-shell .page-item.active .page-link{
    background:#0e7c86;
    border-color:#0e7c86;
    color:#fff;
}
