/* =========================================================================
   JELAJAH TATA SURYA — profile.css
   Gaya untuk: dropdown Profil, Profil Siswa, Profil Developer, (Pengaturan
   memakai gaya lama dari style.css).
   Semua warna/radius/durasi lewat variabel di blok :root di bawah — ubah di
   satu tempat saja. Warna dasar tetap memakai token tema dari style.css
   (--accent-primary, --bg-secondary, dst) supaya mode terang ikut bekerja.
   ========================================================================= */

/* ===================== DESIGN TOKENS (khusus profil) ===================== */
:root{
  /* ---- warna ---- */
  --prof-blue:            var(--accent-primary);          /* biru utama tema */
  --prof-blue-soft:       rgba(79,179,217,.16);
  --prof-blue-line:       rgba(120,205,240,.42);
  --prof-cyan:            #7FD9F5;                        /* biru muda (gradien tombol) */
  --prof-card-bg:         rgba(6,26,44,.62);              /* kartu gelap transparan */
  --prof-card-border:     rgba(120,205,240,.24);
  --prof-card-glow:       0 0 0 1px rgba(120,205,240,.06), 0 18px 48px rgba(0,0,0,.42);
  --prof-input-bg:        rgba(3,18,32,.72);
  --prof-input-border:    rgba(120,205,240,.26);
  --prof-divider:         rgba(120,205,240,.18);
  --prof-cream:           #EEE5D4;                        /* krem poster */
  --prof-cream-dim:       rgba(238,229,212,.72);
  --prof-ink:             #04121F;
  --prof-danger:          var(--status-danger);
  /* ---- radius ---- */
  --prof-radius-xl:       26px;
  --prof-radius-lg:       20px;
  --prof-radius-md:       14px;
  --prof-radius-sm:       10px;
  --prof-radius-pill:     999px;
  /* ---- animasi ---- */
  --anim-fast:            180ms;
  --anim-mid:             420ms;
  --anim-slow:            760ms;
  --anim-ease:            cubic-bezier(.2,.8,.2,1);
  --anim-stagger:         95ms;                           /* jeda antar elemen */
  --anim-rise:            28px;                           /* jarak naik animasi */
}

/* Mode terang: kartu profil jadi putih, teks gelap. */

/* ===================== 1. DROPDOWN NAVBAR "PROFIL" ===================== */
.nav-dropdown{position:relative;display:inline-flex}
.nav-dropdown__toggle{
  display:inline-flex;align-items:center;gap:6px;padding:9px 14px;border-radius:999px;
  font-size:.82rem;font-weight:600;color:var(--text-secondary);white-space:nowrap;
  transition:background var(--anim-fast),color var(--anim-fast);border:1px solid transparent}
.nav-dropdown__toggle:hover{color:var(--text-primary);background:var(--bg-tertiary)}
.nav-dropdown__toggle[aria-expanded="true"],
.nav-dropdown__toggle.is-active{color:#fff;background:var(--accent-primary);font-weight:700}
.nav-dropdown__toggle .caret{font-size:.62rem;transition:transform var(--anim-fast) var(--anim-ease)}
.nav-dropdown__toggle[aria-expanded="true"] .caret{transform:rotate(180deg)}

/* Menu memakai position:fixed, bukan absolute.
   Alasan: #topbar .nav-links punya overflow-x:auto (agar menu bisa di-scroll di
   layar sempit), dan overflow itu MEMOTONG dropdown setinggi 220px menjadi 39px
   sehingga di desktop menu tampak tidak pernah muncul. Dengan fixed, menu tidak
   lagi terpotong ancestor mana pun; posisinya dihitung dari tombol lewat JS. */
.nav-dropdown__menu{
  position:fixed;top:0;left:0;right:auto;z-index:9999;
  min-width:290px;padding:8px;border-radius:18px;
  background:var(--bg-secondary);border:1px solid var(--prof-card-border);
  box-shadow:0 24px 60px rgba(0,0,0,.5);
  display:none;transform-origin:top right}
.nav-dropdown__menu.open{display:block;animation:navDropIn var(--anim-mid) var(--anim-ease)}
@keyframes navDropIn{from{opacity:0;transform:translateY(-8px) scale(.97)}to{opacity:1;transform:none}}
.nav-dropdown__item{
  display:flex;align-items:center;gap:11px;width:100%;text-align:left;
  padding:11px 12px;border-radius:13px;color:var(--text-primary);
  transition:background var(--anim-fast)}
.nav-dropdown__item:hover{background:var(--bg-tertiary)}
.nav-dropdown__item:focus-visible{outline:2px solid var(--accent-secondary);outline-offset:1px}
.nav-dropdown__item .ico{
  width:36px;height:36px;flex:0 0 auto;display:grid;place-items:center;border-radius:11px;
  background:var(--prof-blue-soft);font-size:1.05rem;line-height:1}
.nav-dropdown__item .txt{display:flex;flex-direction:column;gap:1px;min-width:0}
.nav-dropdown__item .lbl{font-size:.9rem;font-weight:700}
.nav-dropdown__item .dsc{font-size:.72rem;color:var(--text-faint);line-height:1.35}
.nav-dropdown__item[aria-current="page"]{background:var(--prof-blue-soft)}
.nav-dropdown__item[aria-current="page"] .lbl{color:var(--prof-blue)}
.nav-dropdown__item[aria-current="page"] .ico{background:var(--accent-primary);color:#fff}
.nav-dropdown__sep{height:1px;margin:6px 8px;background:var(--prof-divider)}

/* Di layar sempit nav-links disembunyikan; drawer & bottom bar dipakai.
   Bottom bar: tombol Profil membuka bottom-sheet, bukan dropdown melayang. */
.profil-sheet{position:fixed;inset:0;z-index:95;display:none}
.profil-sheet.open{display:block}
.profil-sheet__scrim{position:absolute;inset:0;background:rgba(0,0,0,.6);animation:fadein .2s}
.profil-sheet__panel{
  position:absolute;left:0;right:0;bottom:0;padding:10px 12px calc(14px + env(safe-area-inset-bottom));
  background:var(--bg-secondary);border-top:1px solid var(--prof-card-border);
  border-radius:22px 22px 0 0;box-shadow:0 -18px 50px rgba(0,0,0,.5);
  animation:sheetUp .28s var(--anim-ease)}
@keyframes sheetUp{from{transform:translateY(100%)}to{transform:none}}
.profil-sheet__grab{width:44px;height:4px;border-radius:99px;background:var(--prof-divider);margin:2px auto 10px}
.profil-sheet__title{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--text-faint);padding:0 10px 6px;font-weight:700}

/* ===================== 2. PROFIL SISWA — UMUM ===================== */
.profil-siswa{max-width:960px;margin:0 auto;padding-top:8px}
.sr-only-focus{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* ---- banner + avatar ---- */
.ps-hero{position:relative;border-radius:var(--prof-radius-xl);overflow:hidden;
  border:1px solid var(--prof-card-border);box-shadow:var(--prof-card-glow);
  background:linear-gradient(160deg,#02121F 0%,#032A45 46%,#001A2E 100%)}
.ps-hero__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}
.ps-hero__img[hidden]{display:none}
.ps-hero.has-img::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,rgba(2,18,31,.45),rgba(2,18,31,.1) 55%,rgba(2,18,31,.5))}
.ps-hero__dots{position:absolute;inset:0;opacity:.85;
  background-image:radial-gradient(circle at 1px 1px, rgba(150,220,255,.42) 1px, transparent 0);
  background-size:16px 16px;
  -webkit-mask-image:radial-gradient(circle at 82% 26%, #000 0%, rgba(0,0,0,.55) 34%, transparent 68%);
          mask-image:radial-gradient(circle at 82% 26%, #000 0%, rgba(0,0,0,.55) 34%, transparent 68%)}
.ps-hero__glow{position:absolute;width:420px;height:420px;right:-70px;top:-150px;border-radius:50%;
  background:radial-gradient(circle, rgba(79,179,217,.42), rgba(79,179,217,.06) 55%, transparent 70%);
  filter:blur(6px);pointer-events:none}
.ps-hero__inner{position:relative;z-index:2;padding:22px 24px 20px;display:flex;align-items:center;
  justify-content:space-between;gap:16px;flex-wrap:wrap;min-height:180px;align-items:flex-start}
.ps-hero__brand{font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:#9ADCF2;font-weight:700;
  display:flex;align-items:center;gap:9px}
.ps-hero__brand i{width:7px;height:7px;border-radius:50%;background:var(--accent-mint);display:block}

/* tombol aksi di dalam banner (ganti foto) */
.ps-hero__actions{display:flex;gap:8px;flex-wrap:wrap;margin-left:auto}
.ps-hero__btn{display:inline-flex;align-items:center;gap:7px;min-height:36px;padding:0 14px;
  border-radius:var(--prof-radius-pill);font-weight:700;font-size:.8rem;
  background:rgba(79,179,217,.16);color:#DCEEF8;border:1px solid rgba(120,205,240,.4);
  transition:background var(--anim-fast),border-color var(--anim-fast),transform var(--anim-fast)}
.ps-hero__btn:hover{background:rgba(79,179,217,.3);border-color:rgba(120,205,240,.7);transform:translateY(-1px)}
.ps-hero.has-img .ps-hero__dots,.ps-hero.has-img .ps-hero__glow{display:none}
.ps-hero__btn--ghost{background:rgba(3,18,32,.55)}
.ps-hero__btn:focus-visible{outline:2px solid var(--accent-secondary);outline-offset:2px}

/* ---- avatar ----
   Dipindah KE DALAM kartu identitas dan ditarik ke atas dengan margin negatif,
   sehingga duduk tepat di atas nama dan menimpa tepi bawah banner.
   Sebelumnya avatar berada di dalam .ps-hero__inner yang memakai flex,
   membuatnya mengapung di tengah banner dan bukan di atas nama. */
.ps-avatar-wrap{position:relative;flex:0 0 auto;width:max-content;
  margin:-64px 0 10px;z-index:3}
.ps-avatar{width:124px;height:124px;border-radius:50%;overflow:hidden;position:relative;
  border:3px solid rgba(238,229,212,.9);background:linear-gradient(160deg,#0A3A58,#04121F);
  box-shadow:0 14px 38px rgba(0,0,0,.55), 0 0 0 6px rgba(3,18,31,.55)}
.ps-avatar img{width:100%;height:100%;object-fit:cover;display:none}
.ps-avatar img.show{display:block}
.ps-avatar .ph{position:absolute;inset:0;display:grid;place-items:center;font-size:3rem;line-height:1}
.ps-avatar__edit{position:absolute;right:-2px;bottom:-2px;width:38px;height:38px;border-radius:50%;
  display:grid;place-items:center;font-size:.95rem;background:var(--accent-primary);color:#fff;
  border:2px solid var(--bg-deep);box-shadow:0 6px 16px rgba(0,0,0,.4);transition:transform var(--anim-fast)}
.ps-avatar__edit:hover{transform:scale(1.07)}
.ps-hero__id{flex:1 1 220px;min-width:0;padding-bottom:16px}

/* ---- kartu nama + email + tombol ---- */
.ps-card{background:var(--prof-card-bg);border:1px solid var(--prof-card-border);
  border-radius:var(--prof-radius-xl);box-shadow:var(--prof-card-glow);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
/* padding-top 0: avatar ditarik sendiri ke atas dengan margin negatif,
   jadi tidak perlu ruang padding tambahan di sini. */
.ps-ident{padding:0 24px 20px}
.ps-name-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ps-name{font-size:clamp(1.35rem,3.4vw,1.75rem);font-weight:800;line-height:1.2;letter-spacing:-.01em}
.ps-name-input{font:inherit;font-size:clamp(1.2rem,3.2vw,1.55rem);font-weight:800;color:var(--text-primary);
  background:var(--prof-input-bg);border:1px solid var(--prof-input-border);border-radius:var(--prof-radius-md);
  padding:8px 12px;width:100%;max-width:380px}
.ps-icon-btn{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;font-size:.9rem;
  background:var(--prof-blue-soft);color:var(--prof-blue);transition:background var(--anim-fast),transform var(--anim-fast)}
.ps-icon-btn:hover{background:rgba(79,179,217,.28);transform:translateY(-1px)}
.ps-email{color:var(--text-secondary);font-size:.92rem;margin-top:3px;display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.ps-badge{font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;font-weight:800;
  padding:3px 9px;border-radius:var(--prof-radius-pill);background:var(--prof-blue-soft);color:var(--prof-blue)}
.ps-badge--warn{background:rgba(255,200,87,.16);color:var(--accent-secondary)}
.ps-actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:14px}
/* Beberapa komponen memakai display:flex/inline-flex yang mengalahkan aturan
   bawaan `[hidden]` milik browser. Aturan ini memastikan `hidden` selalu
   menang supaya tombol/panel yang seharusnya tersembunyi tidak muncul. */
[hidden]{display:none !important}

.ps-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:40px;padding:0 16px;
  border-radius:var(--prof-radius-pill);font-weight:700;font-size:.85rem;
  transition:transform var(--anim-fast),filter var(--anim-fast),background var(--anim-fast)}
.ps-btn:active{transform:scale(.97)}
.ps-btn--primary{background:linear-gradient(135deg,var(--prof-cyan),var(--accent-primary));color:#04121F;
  box-shadow:0 8px 22px rgba(79,179,217,.3)}
.ps-btn--primary:hover{filter:brightness(1.06)}
.ps-btn--ghost{background:transparent;border:1px solid var(--prof-card-border);color:var(--text-primary)}
.ps-btn--ghost:hover{background:var(--bg-tertiary)}
.ps-btn--sm{min-height:34px;padding:0 13px;font-size:.8rem}
.ps-btn:disabled{opacity:.5;cursor:not-allowed}

/* ---- deret 4 statistik (Gambar 3) ---- */
.ps-stats{display:grid;grid-template-columns:repeat(4,1fr);margin-top:20px;
  border-top:1px solid var(--prof-divider);padding-top:18px}
.ps-stat{padding:2px 18px;position:relative;min-width:0}
.ps-stat + .ps-stat{border-left:1px solid var(--prof-divider)}
.ps-stat:first-child{padding-left:0}
.ps-stat .k{font-size:.64rem;letter-spacing:.13em;text-transform:uppercase;color:var(--text-faint);
  font-weight:800;display:flex;align-items:center;gap:5px;line-height:1.4}
.ps-stat .v{font-size:1.02rem;font-weight:800;margin-top:6px;line-height:1.3;word-break:break-word}
.ps-stat .v--muted{color:var(--text-faint);font-weight:600;font-size:.92rem}
.ps-stat .auto{display:block;font-size:.64rem;font-weight:700;color:var(--accent-mint);margin-top:4px;letter-spacing:.02em}
.ps-stat .hintline{display:block;font-size:.64rem;color:var(--text-faint);margin-top:4px;font-weight:600}

/* ---- form "Profil publik" ---- */
.ps-section{margin-top:20px;padding:22px 24px}
.ps-section__head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;
  padding-bottom:14px;border-bottom:1px solid var(--prof-divider);margin-bottom:18px}
.ps-section__title{font-size:1.05rem;font-weight:800}
.ps-section__sub{font-size:.8rem;color:var(--text-faint);margin-top:2px;max-width:56ch}

.ps-field{margin-bottom:16px}
.ps-field > label{display:block;font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--text-faint);font-weight:800;margin-bottom:7px}
.ps-field input[type="text"],
.ps-field input[type="email"],
.ps-field input[type="date"],
.ps-field select{
  width:100%;padding:12px 14px;border-radius:var(--prof-radius-md);
  background:var(--prof-input-bg);border:1px solid var(--prof-input-border);color:var(--text-primary);
  font-size:.95rem;font-family:inherit;font-weight:600;transition:border-color var(--anim-fast),box-shadow var(--anim-fast)}
.ps-field input:focus,.ps-field select:focus{outline:none;border-color:var(--accent-primary);
  box-shadow:0 0 0 3px var(--prof-blue-soft)}
.ps-field input[readonly]{opacity:.72;cursor:not-allowed}
.ps-field .msg{display:block;font-size:.74rem;margin-top:6px;min-height:0;color:var(--prof-danger);font-weight:600}
.ps-field .msg:empty{display:none}
.ps-field.invalid input,.ps-field.invalid select{border-color:var(--prof-danger)}
.ps-field .helper{display:block;font-size:.72rem;color:var(--text-faint);margin-top:6px;line-height:1.5}
.ps-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}
.ps-url{display:flex;align-items:center;border-radius:var(--prof-radius-md);overflow:hidden;
  background:var(--prof-input-bg);border:1px solid var(--prof-input-border)}
.ps-url span{padding:0 0 0 14px;font-size:.88rem;color:var(--text-faint);white-space:nowrap;font-weight:600}
.ps-url input{border:none !important;background:transparent !important;box-shadow:none !important;padding-left:4px !important}

/* segmented control (kelas & jenis kelamin) */
.ps-seg{display:inline-flex;background:var(--prof-input-bg);border:1px solid var(--prof-input-border);
  border-radius:var(--prof-radius-pill);padding:3px;gap:3px;flex-wrap:wrap}
.ps-seg button{padding:9px 18px;border-radius:var(--prof-radius-pill);font-weight:700;font-size:.85rem;
  color:var(--text-secondary);transition:background var(--anim-fast),color var(--anim-fast);white-space:nowrap}
.ps-seg button:hover{color:var(--text-primary)}
.ps-seg button[aria-pressed="true"]{background:linear-gradient(135deg,var(--prof-cyan),var(--accent-primary));
  color:#04121F;box-shadow:0 6px 16px rgba(79,179,217,.26)}

/* baris setting bergaya Gambar 3/4 */
.ps-row{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  padding:14px 0;border-bottom:1px solid var(--prof-divider)}
.ps-row:last-child{border-bottom:none;padding-bottom:0}
.ps-row__txt{flex:1 1 210px;min-width:0}
.ps-row__txt h4{font-size:.94rem;font-weight:700}
.ps-row__txt p{font-size:.78rem;color:var(--text-faint);margin-top:2px;line-height:1.45}
.ps-form-foot{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:20px;
  padding-top:18px;border-top:1px solid var(--prof-divider)}
.ps-form-foot .saved{font-size:.78rem;color:var(--accent-mint);font-weight:700}

/* ---- mode tamu ---- */
.ps-guest{padding:18px;border-radius:var(--prof-radius-lg);border:1px dashed var(--prof-blue-line);
  background:var(--prof-blue-soft);display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:18px}
/* `display:flex` di atas mengalahkan aturan bawaan `[hidden]`, jadi ditegaskan
   ulang supaya elemen yang memang disembunyikan benar-benar hilang. */
.ps-guest[hidden]{display:none !important}
.ps-guest p{flex:1 1 220px;font-size:.86rem;color:var(--text-secondary);line-height:1.5}

/* ===================== 3. PROGRES BELAJAR ===================== */
.pg-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:18px}
.pg-mini{padding:14px 16px;border-radius:var(--prof-radius-lg);background:var(--prof-blue-soft);
  border:1px solid var(--prof-card-border)}
.pg-mini .k{font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint);font-weight:800}
.pg-mini .v{font-size:1.5rem;font-weight:800;line-height:1.2;margin-top:2px}
.pg-mini .v small{font-size:.72rem;font-weight:700;color:var(--text-faint)}

.pg-overall{margin-bottom:18px}
.pg-overall__top{display:flex;justify-content:space-between;gap:12px;font-size:.85rem;font-weight:700;margin-bottom:7px}
.pg-bar{height:10px;border-radius:var(--prof-radius-pill);background:var(--bg-tertiary);overflow:hidden}
.pg-bar > i{display:block;height:100%;border-radius:var(--prof-radius-pill);width:0;
  background:linear-gradient(90deg,var(--prof-cyan),var(--accent-primary));
  transition:width var(--anim-slow) var(--anim-ease)}

.pg-list{display:flex;flex-direction:column;gap:10px}
.pg-item{padding:14px 16px;border-radius:var(--prof-radius-lg);border:1px solid var(--prof-divider);
  background:rgba(255,255,255,.02)}
.pg-item__top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:9px}
.pg-item__name{font-size:.92rem;font-weight:800;flex:1 1 auto;min-width:120px}
.pg-pill{font-size:.64rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;
  padding:3px 9px;border-radius:var(--prof-radius-pill);white-space:nowrap}
.pg-pill--done{background:rgba(140,231,178,.18);color:var(--accent-mint)}
.pg-pill--doing{background:rgba(255,200,87,.18);color:var(--accent-secondary)}
.pg-pill--todo{background:rgba(120,190,230,.14);color:var(--text-faint)}
.pg-item .pg-bar{height:7px}
.pg-item__meta{display:flex;gap:16px;flex-wrap:wrap;margin-top:9px;font-size:.73rem;color:var(--text-faint);font-weight:600}
.pg-item__meta b{color:var(--text-primary);font-weight:800}
.pg-empty{text-align:center;padding:26px 18px;border-radius:var(--prof-radius-lg);
  border:1px dashed var(--prof-divider);color:var(--text-secondary)}
.pg-empty .ic{font-size:2rem;margin-bottom:8px}
.pg-empty p{font-size:.85rem;color:var(--text-faint);max-width:44ch;margin:6px auto 14px;line-height:1.55}

/* ===================== 4. PROFIL DEVELOPER (poster) ===================== */
/* Font lokal (tanpa CDN) — file di assets/fonts/ */
@font-face{font-family:'JTS Anton';src:url('../assets/fonts/anton-400.woff2') format('woff2');
  font-weight:400;font-display:swap;font-style:normal}
@font-face{font-family:'JTS DM Serif';src:url('../assets/fonts/dmserif-400.woff2') format('woff2');
  font-weight:400;font-display:swap;font-style:normal}
@font-face{font-family:'JTS Barlow';src:url('../assets/fonts/barlowcond-400.woff2') format('woff2');
  font-weight:400;font-display:swap;font-style:normal}
@font-face{font-family:'JTS Barlow';src:url('../assets/fonts/barlowcond-600.woff2') format('woff2');
  font-weight:600;font-display:swap;font-style:normal}
@font-face{font-family:'JTS Barlow';src:url('../assets/fonts/barlowcond-700.woff2') format('woff2');
  font-weight:700;font-display:swap;font-style:normal}

.dev-view{padding:6px 0 10px}
.dev-poster{
  --dev-cream:var(--prof-cream);
  --dev-blue:#4FB3D9;
  --dev-blue-bright:#5AC8F5;
  position:relative;width:100%;aspect-ratio:2528/1696;overflow:hidden;
  border-radius:var(--prof-radius-xl);border:1px solid var(--prof-card-border);
  background:
    radial-gradient(120% 90% at 50% 118%, rgba(24,88,128,.55), transparent 62%),
    radial-gradient(70% 60% at 84% 6%, rgba(30,110,150,.30), transparent 66%),
    linear-gradient(160deg,#04141F 0%,#051B2B 42%,#061A28 100%);
  box-shadow:var(--prof-card-glow);
  container-type:inline-size;font-family:'JTS Barlow','Barlow Condensed',system-ui,sans-serif;
  isolation:isolate}
.dev-poster *{box-sizing:border-box}

/* latar tekstur halus + bintang tipis */
.dev-poster::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;opacity:.6;
  background-image:
    radial-gradient(1.2px 1.2px at 12% 22%, rgba(255,255,255,.5), transparent),
    radial-gradient(1px 1px at 68% 12%, rgba(200,235,255,.45), transparent),
    radial-gradient(1.4px 1.4px at 88% 71%, rgba(255,255,255,.35), transparent),
    radial-gradient(1px 1px at 32% 84%, rgba(200,235,255,.3), transparent)}

/* ---- lapisan 1: baris label atas ----
   Target poster: tinta label y 5.2%–7.0%, x 5.3% → 93.1%. */
.dev-top{position:absolute;z-index:4;top:4.6%;left:5.2%;right:6.9%;display:flex;align-items:center;gap:2%}
.dev-top__lbl{font-family:'JTS Anton','Anton',Impact,sans-serif;font-weight:400;
  font-size:clamp(.52rem,1.42cqw,1.42rem);letter-spacing:.2em;text-transform:uppercase;
  color:var(--dev-cream);white-space:nowrap;line-height:1}
.dev-top__rule{flex:1;height:1px;margin:0 .4em;
  background:linear-gradient(90deg,rgba(79,179,217,.9),rgba(79,179,217,.2))}
.dev-top__right{display:flex;align-items:center;gap:.85em;white-space:nowrap}
.dev-top__dot{width:.5em;height:.5em;border-radius:50%;background:var(--dev-blue-bright);
  box-shadow:0 0 .5em rgba(90,200,245,.9);display:block;flex:0 0 auto;font-size:clamp(.52rem,1.42cqw,1.42rem)}

/* ---- lapisan 2: teks raksasa ----
   Target poster: tinta kata x 5.2%–94.8% (lebar 89.6%), y 10.5%–43.9% (tinggi 33.4%).
   Anton tidak punya varian condensed, jadi diatur lewat font-size + `scale`
   vertikal agar rasionya sama. Container WAJIB overflow:visible, kalau tidak
   glyph yang diperbesar akan terpotong. */
.dev-word{position:absolute;z-index:1;left:0;right:0;top:11.4%;display:flex;justify-content:center;
  pointer-events:none}
.dev-word span{
  font-family:'JTS Anton','Anton',Impact,sans-serif;
  font-size:clamp(3rem,20.1cqw,18rem);
  line-height:.82;letter-spacing:.058em;text-transform:uppercase;
  color:var(--dev-cream);white-space:nowrap;
  text-shadow:0 .02em .06em rgba(0,0,0,.35);margin-right:-.058em;
  scale:1 1.2;transform-origin:center top}

/* ---- lapisan 3: lingkaran cahaya biru (diposisikan tanpa transform) ---- */
.dev-glow{position:absolute;z-index:2;left:24%;top:30%;width:50%;aspect-ratio:1/1;border-radius:50%;
  background:radial-gradient(circle,rgba(79,185,225,.42) 0%,rgba(79,179,217,.22) 38%,
    rgba(60,150,200,.08) 58%,transparent 70%);
  filter:blur(2px)}

/* ---- lapisan 4: foto orang (menimpa huruf E/L) ----
   Target poster (hasil korelasi template): kotak foto x 26.3%–66.2%, mulai y 28.1%,
   terpotong di tepi bawah → tinggi tampak 71.6%. Rasio cutout 0.832 menjaga lebar. */
.dev-photo{position:absolute;z-index:3;left:26.3%;bottom:0;height:71.6%;width:auto;max-width:60%;
  filter:drop-shadow(0 -8px 30px rgba(0,0,0,.5))}
.dev-photo img{height:100%;width:auto;display:block;object-fit:contain;object-position:bottom}

/* ---- lapisan 5: blok kiri (kampus + prodi) ----
   Target poster: "DARI STKIP" tinta y 45.7%–51.1% (cap 5.5%, lebar 16.6%),
   "PGRI PACITAN" y 52.3%–57.8% (lebar 20.6%), garis biru y 60.4%–61.0% (lebar 8.4%),
   baris prodi y 63.7%–72.8% (pitch 3.4%).
   Anton dipakai karena rasio lebar/cap-nya 4.53 — paling dekat ke poster (4.50). */
.dev-left{position:absolute;z-index:5;left:5.1%;top:45%;max-width:34%}
.dev-left__campus{font-family:'JTS Anton','Anton',Impact,sans-serif;font-weight:400;
  font-size:clamp(.95rem,4.22cqw,4.15rem);line-height:1.05;letter-spacing:.005em;
  text-transform:uppercase;color:#fff}
.dev-left__rule{width:8.4%;min-width:56px;height:2px;margin:1.7cqw 0 1.6cqw;
  background:linear-gradient(90deg,var(--dev-blue-bright),rgba(90,200,245,0))}
.dev-left__lines{font-size:clamp(.62rem,2.42cqw,2.4rem);line-height:.94;color:rgba(255,255,255,.9);
  font-weight:400;letter-spacing:.015em}
.dev-left__lines b{font-weight:600;color:#fff}

/* ---- lapisan 6: nama + NIM kanan ----
   Target poster: blok ini LEFT-aligned pada x 69.2%; "Ahmad" tinta y 53.4%–60.6% (h 7.3%),
   "Fakhri R." y 62.3%–69.6%, NIM y 72.5%–76.0% (h 3.5%).
   Jarak antar baris nama 8.9% poster → line-height 0.93 pada font 6.45cqw. */
.dev-right{position:absolute;z-index:5;left:69.2%;top:51.9%;text-align:left;max-width:29%}
.dev-right__name{font-family:'JTS DM Serif','DM Serif Display',Georgia,serif;font-weight:400;
  font-size:clamp(1.15rem,6.45cqw,6.3rem);line-height:.985;color:var(--dev-cream);letter-spacing:-.005em}
.dev-right__nim{margin-top:2.6%;font-family:'JTS Barlow',sans-serif;font-weight:700;
  font-size:clamp(.66rem,3.3cqw,3.25rem);letter-spacing:.16em;text-transform:uppercase;
  color:var(--dev-blue-bright);line-height:1.1}

/* ---- lapisan 7: cap lingkaran berputar ----
   Target poster: biru cap x 88.6%–97.2%, y 37.3%–50.4% (diameter ±8.6% lebar). */
.dev-stamp{position:absolute;z-index:6;right:4.4%;top:37.3%;width:8.6%;aspect-ratio:1/1;
  display:grid;place-items:center;pointer-events:none}
.dev-stamp__svg{width:100%;height:100%;overflow:visible;display:block;
  animation:devSpin 26s linear infinite}
@keyframes devSpin{to{transform:rotate(360deg)}}
.dev-stamp__svg circle,.dev-stamp__svg text{fill:var(--dev-blue-bright)}
.dev-stamp__star{position:absolute;z-index:1;width:24%;aspect-ratio:1/1;
  background:var(--dev-blue-bright);clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%);
  filter:drop-shadow(0 0 10px rgba(90,200,245,.5))}

/* ---- lapisan 8: kutipan kiri bawah ----
   Target poster: tanda kutip biru y 78.4%–82.9% (tinggi 4.6%), teks 4 baris
   y 81.0%–91.1% (pitch ±2.8%), lebar baris pertama 19.6%. */
.dev-quote{position:absolute;z-index:5;left:5.1%;bottom:7.7%;max-width:31%;display:flex;gap:1.6%;margin:0}
.dev-quote__mark{font-family:'JTS DM Serif',Georgia,serif;font-size:clamp(2.1rem,5.6cqw,5.4rem);
  line-height:.72;color:var(--dev-blue-bright);flex:0 0 auto;margin-top:-.02em}
.dev-quote__txt{font-size:clamp(.56rem,1.72cqw,1.66rem);line-height:1.28;color:rgba(255,255,255,.9);
  font-weight:400;letter-spacing:.008em;padding-top:.42em;max-width:18.8cqw}
.dev-quote__txt em{font-style:normal;color:#fff;font-weight:600}

/* ---- animasi masuk (dipasang saat view dibuka) ----
   Memakai properti `translate` & `scale` (bukan `transform`) supaya tidak
   bentrok dengan posisi elemen. */
.dev-anim{opacity:0;translate:0 var(--anim-rise);will-change:opacity,translate}
.dev-anim--word{translate:0 calc(var(--anim-rise) * 1.8)}
.dev-anim--photo{translate:0 calc(var(--anim-rise) * 2.4);scale:.97}
.dev-anim--stamp{scale:.6;opacity:0}
.dev-anim--glow{scale:.55;opacity:0}
.dev-poster.is-active .dev-anim{
  opacity:1;translate:0 0;scale:1;
  transition:opacity var(--anim-slow) var(--anim-ease),
             translate var(--anim-slow) var(--anim-ease),
             scale var(--anim-slow) var(--anim-ease);
  transition-delay:calc(var(--i,0) * var(--anim-stagger))}
.dev-poster.is-active .dev-anim--glow{
  transition-duration:800ms;
  transition-delay:calc(var(--i,0) * var(--anim-stagger))}
.dev-poster.is-active .dev-anim--photo{
  transition-duration:820ms;transition-delay:calc(var(--i,0) * var(--anim-stagger))}
.dev-poster.is-active .dev-anim--word{
  transition-duration:760ms;transition-delay:calc(var(--i,0) * var(--anim-stagger))}
.dev-poster.is-active .dev-anim--stamp{
  transition-duration:640ms;transition-delay:calc(var(--i,0) * var(--anim-stagger))}

/* tip kecil di bawah poster */
.dev-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  margin-top:14px;font-size:.76rem;color:var(--text-faint)}

/* ===================== 5. RESPONSIF ===================== */
@media (max-width:900px){
  .ps-stats{grid-template-columns:repeat(2,1fr);row-gap:18px}
  .ps-stat:nth-child(3){padding-left:0;border-left:none}
  .ps-stat:nth-child(odd){padding-left:0}
  .ps-stat:nth-child(3),.ps-stat:nth-child(4){padding-top:16px;border-top:1px solid var(--prof-divider)}
  .pg-summary{grid-template-columns:1fr 1fr}
}
@media (max-width:767px){
  .nav-dropdown__menu{display:none !important}   /* mobile memakai bottom-sheet */
  .ps-hero__inner{padding:16px 16px 16px;min-height:150px}
  .ps-hero__btn{font-size:.74rem;min-height:32px;padding:0 12px}
  .ps-avatar{width:96px;height:96px}
  /* Avatar menimpa tepi bawah banner; nilainya sepertiga diameter
     supaya tetap "duduk di atas nama" tanpa menutupi teks banner. */
  .ps-avatar-wrap{margin:-56px 0 8px}
  .ps-ident{padding:0 16px 18px}
  .ps-section{padding:18px 16px}
  .ps-grid-2{grid-template-columns:1fr}
  .ps-stats{grid-template-columns:1fr 1fr}
  .ps-stat{padding:2px 12px}
  .pg-summary{grid-template-columns:1fr}
  .ps-seg button{padding:9px 14px}

  /* Poster mempertahankan SUSUNAN & RASIO DESKTOP di mobile.
     Sebelumnya blok ini menumpuk elemen secara vertikal (foto membesar, teks
     turun ke bawah) sehingga hasilnya berbeda jauh dari desktop. Kini poster
     hanya menyusut proporsional: posisi memakai satuan cqw sehingga seluruh
     komposisi mengecil bersama tanpa elemen yang berubah susunan.
     Hanya ukuran font kecil yang diberi lantai agar tetap terbaca di layar HP
     (poster tetap 100% rasio 1.491, tidak ada elemen yang berubah posisi). */
  .dev-poster{border-radius:16px}
  .dev-top__lbl{font-size:max(.52rem,1.42cqw)}
  .dev-left__lines{font-size:max(.6rem,2.42cqw)}
  .dev-right__nim{font-size:max(.6rem,3.3cqw)}
  .dev-quote__txt{font-size:max(.58rem,1.72cqw)}
}
@media (prefers-reduced-motion:reduce){
  /* Animasi baru memakai `translate`/`scale`, jadi itu yang dinetralkan. */
  .dev-poster .dev-anim{opacity:1 !important;translate:0 0 !important;scale:1 !important;
    transition:none !important}
  .dev-poster.is-active .dev-stamp__svg,.dev-stamp__svg{animation:none}
  .nav-dropdown__menu.open{animation:none}
  .profil-sheet__panel{animation:none}
}


/* ===================== NAVBAR APLIKASI — gaya sama dengan navbar login =====================
   Merek: logo-dot + teks; tautan huruf kapital berjarak lebar, penanda aktif = garis bawah. */
#topbar{padding:12px clamp(16px,4vw,48px);background:linear-gradient(180deg,rgba(0,6,14,.88),rgba(0,6,14,.55));
  border-bottom:1px solid var(--border-color)}
#topbar .brand{gap:10px;font-size:.9rem;font-weight:400;letter-spacing:.04em}
#topbar .brand b{font-weight:800;color:inherit}
#topbar .brand .logo-dot{width:28px;height:28px;border-radius:50%;flex:0 0 auto;
  border:1.5px solid var(--accent-secondary,#9ADCF2);display:grid;place-items:center;
  box-shadow:inset 0 0 12px rgba(154,220,242,.35)}
#topbar .brand .logo-dot::after{content:"";width:9px;height:9px;border-radius:50%;
  background:radial-gradient(circle at 35% 30%,#FFE08A,#FF9F1C)}
#topbar .nav-links{align-items:center;gap:clamp(12px,2vw,28px)}
#topbar .nav-links a,
#topbar .nav-dropdown__toggle{padding:10px 2px;border-radius:0;background:transparent !important;
  font-size:.72rem;font-weight:400;letter-spacing:.2em;text-transform:uppercase;
  color:var(--text-secondary,#9fc3d6);border:0;border-bottom:1.5px solid transparent;
  transition:color .2s ease,border-color .2s ease}
#topbar .nav-links a:hover,
#topbar .nav-dropdown__toggle:hover,
#topbar .nav-links a:focus-visible,
#topbar .nav-dropdown__toggle:focus-visible{color:var(--accent-secondary,#9ADCF2)}
#topbar .nav-links a.active,
#topbar .nav-dropdown__toggle.is-active,
#topbar .nav-dropdown__toggle[aria-expanded="true"]{color:var(--accent-secondary,#9ADCF2);
  border-bottom-color:var(--accent-primary,#4FB3D9);font-weight:400}

/* Segmented profil: pilihan aktif menyala lembut (sama dengan tab lain) */
.ps-seg button{border:1px solid transparent}
.ps-seg button[aria-pressed="true"]{color:var(--text-primary);border-color:var(--accent-primary);
  background:radial-gradient(120% 140% at 50% 0%,rgba(79,179,217,.28),rgba(79,179,217,.08) 70%);
  box-shadow:0 0 0 1px rgba(79,179,217,.35),0 0 14px rgba(79,179,217,.35),inset 0 0 12px rgba(79,179,217,.18)}
