/* ===== WARNA & FONT (ubah di sini) ===== */
:root{--ink:#0b1020;--blue:#3d5afe;--lime:#7a63c6;--pink:#241064;--paper:#f2f3ff;--muted:#9aa5bd;
--display:'Unbounded',system-ui,sans-serif;--body:'Manrope',system-ui,sans-serif}
@property --p{syntax:'<number>';inherits:false;initial-value:0}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--body);color:#fff;line-height:1.7;background:linear-gradient(135deg,#1a2a6c,#0b1020 60%);overflow-x:hidden}
a{color:inherit;text-decoration:none}
:focus-visible{outline:3px solid var(--lime);outline-offset:3px;border-radius:8px}
.wrap{max-width:1100px;margin:0 auto;padding:0 24px}
h2{font-family:var(--display);font-weight:900;font-size:clamp(1.8rem,4.4vw,3rem);line-height:1.1;margin-bottom:40px;letter-spacing:-.02em}

/* BACKGROUND FOTO (slideshow) */
.bgshow{position:fixed;inset:0;z-index:-1;overflow:hidden}
.bgshow div{position:absolute;inset:0;background-size:cover;background-position:center;opacity:0;animation:slide 24s infinite}
.bgshow div:nth-child(2){animation-delay:8s}.bgshow div:nth-child(3){animation-delay:16s}
.bgshow::after{content:"";position:absolute;inset:0;background:linear-gradient(120deg,rgba(11,16,32,.85),rgba(11,16,32,.45) 55%,rgba(61,90,254,.35))}
@keyframes slide{0%{opacity:0;transform:scale(1)}8%{opacity:1}33%{opacity:1}41%{opacity:0;transform:scale(1.12)}100%{opacity:0;transform:scale(1.12)}}
.progress{position:fixed;top:0;left:0;height:4px;width:0;background:linear-gradient(90deg,var(--lime),var(--pink));z-index:30}

/* NAV (pil melayang) */
nav{position:fixed;top:16px;left:50%;transform:translateX(-50%);z-index:20;display:flex;gap:6px;padding:7px;border-radius:999px;background:rgba(11,16,32,.6);backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.14)}
nav a{padding:8px 16px;border-radius:999px;font-size:.88rem;font-weight:700;color:#cfd6e6;transition:.25s}
nav a:hover{background:var(--lime);color:var(--ink)}

/* HERO */
.hero{min-height:100vh;display:flex;align-items:center;padding:120px 0 80px}
.hero .wrap{display:grid;grid-template-columns:1.25fr .75fr;gap:40px;align-items:center}
.hi{display:inline-block;background:var(--lime);color:var(--ink);font-weight:700;padding:6px 16px;border-radius:999px;font-size:.9rem;transform:rotate(-3deg);margin-bottom:18px}
h1{font-family:var(--display);font-weight:900;font-size:clamp(2.5rem,7.4vw,5.6rem);line-height:.98;letter-spacing:-.04em}
h1 span{display:block;overflow:hidden}
h1 b{display:inline-block;font-weight:900;transform:translateY(110%);animation:up .9s cubic-bezier(.2,.9,.2,1) forwards}
h1 span:nth-child(2) b{animation-delay:.15s;color:transparent;-webkit-text-stroke:2px var(--lime)}
.role{margin:22px 0;font-size:1.25rem;font-weight:700;color:var(--lime);min-height:2em}
.cursor{display:inline-block;width:3px;height:1.1em;background:var(--lime);margin-left:4px;vertical-align:-.15em;animation:blink 1s steps(1) infinite}
.lead{color:#d3dbea;max-width:50ch;margin-bottom:30px}
.btns{display:flex;gap:14px;flex-wrap:wrap}
.btn{padding:14px 28px;border-radius:999px;font-weight:700;transition:.25s}
.btn.main{background:var(--lime);color:var(--ink)}
.btn.main:hover{transform:translateY(-4px) rotate(-1.5deg);box-shadow:0 12px 30px rgba(212,255,79,.4)}
.btn.ghost{border:2px solid rgba(255,255,255,.35)}
.btn.ghost:hover{background:#fff;color:var(--ink);transform:translateY(-4px)}

/* FOTO PROFIL (bentuk blob yang bergerak) */
.photo{position:relative;justify-self:center;width:min(360px,82vw);aspect-ratio:.9;transition:transform .15s}
.photo .shape{position:absolute;inset:0;overflow:hidden;background:linear-gradient(160deg,var(--blue),var(--pink));display:grid;place-items:center;font:900 5rem var(--display);color:rgba(255,255,255,.5);
  border-radius:58% 42% 55% 45%/50% 55% 45% 50%;animation:morph 9s ease-in-out infinite;box-shadow:0 30px 70px rgba(61,90,254,.45)}
.photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.photo::before{content:"";position:absolute;inset:-12px;border:2px dashed var(--lime);border-radius:50%;animation:spin 22s linear infinite;opacity:.7}
.sticker{position:absolute;padding:8px 16px;border-radius:14px;font-weight:700;font-size:.85rem;box-shadow:0 10px 24px rgba(0,0,0,.3);animation:float 5s ease-in-out infinite}
.s1{top:8%;right:-8%;background:#fff;color:var(--ink);transform:rotate(6deg)}
.s2{bottom:10%;left:-10%;background:var(--pink);color:#fff;transform:rotate(-6deg);animation-delay:-2s}

/* MARQUEE */
.marquee{background:var(--lime);color:var(--ink);transform:rotate(-1.6deg);margin:0 -20px;overflow:hidden;padding:16px 0;border-block:3px solid var(--ink)}
.marquee div{display:flex;gap:44px;width:max-content;animation:scroll 26s linear infinite;font:900 1.4rem var(--display);white-space:nowrap}
@keyframes scroll{to{transform:translateX(-50%)}}

section{padding:100px 0}
.light{background:var(--paper);color:var(--ink)}
.glass{background:rgba(11,16,32,.55);backdrop-filter:blur(8px)}

/* TENTANG: bento */
.bento{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.tile{border-radius:26px;padding:28px;transition:transform .3s}
.tile:hover{transform:translateY(-6px) rotate(-.6deg)}
.t-bio{grid-column:span 2;grid-row:span 2;background:var(--blue);color:#fff}
.t-bio h3,.t-hob h3,.t-loc h3{font-family:var(--display);font-size:1.15rem;margin-bottom:12px}
.t-bio p+p{margin-top:12px}
.t-stat{background:#fff;text-align:center;display:grid;align-content:center}
.t-stat b{font:900 2.8rem var(--display);color:var(--blue);line-height:1}
.t-stat span{color:#5a6480;font-weight:700;font-size:.9rem}
.t-hob{grid-column:span 2;background:var(--lime)}
.t-loc{grid-column:span 2;background:var(--ink);color:#fff}
.t-loc li{list-style:none;display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid rgba(255,255,255,.14)}
.t-loc li span{color:var(--lime)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chips span{padding:5px 14px;border-radius:99px;background:rgba(11,16,32,.1);font-weight:700;font-size:.88rem}

/* KEAHLIAN: ring */
.rings{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.ring{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);border-radius:24px;padding:28px;text-align:center;transition:.3s}
.ring:hover{background:rgba(255,255,255,.14);transform:translateY(-6px)}
.dial{width:112px;height:112px;margin:0 auto 14px;border-radius:50%;display:grid;place-items:center;position:relative;
  background:conic-gradient(var(--lime) calc(var(--p)*1%),rgba(255,255,255,.12) 0);transition:--p 1.6s cubic-bezier(.2,.8,.2,1)}
.dial::before{content:"";position:absolute;inset:9px;border-radius:50%;background:#101a33}
.dial b{position:relative;font:700 1.2rem var(--display)}
.ring h3{font-size:1rem}.ring p{color:var(--muted);font-size:.88rem}

/* PENGALAMAN */
.row{display:grid;grid-template-columns:200px 1fr;gap:28px;padding:26px 0;border-top:2px solid var(--ink);transition:padding .3s}
.row:hover{padding-left:16px}
.yr{font:900 2.1rem var(--display);color:transparent;-webkit-text-stroke:2px var(--blue);line-height:1.1}
.row h3{font-family:var(--display);font-size:1.25rem;margin-bottom:4px}
.row p{color:#4b5572}

/* PROYEK */
.projects{display:grid;grid-template-columns:repeat(6,1fr);gap:18px}
.proj{position:relative;min-height:300px;border-radius:28px;overflow:hidden;grid-column:span 2;display:flex;align-items:flex-end;background:linear-gradient(135deg,var(--blue),var(--pink))}
.proj:nth-child(1){grid-column:span 4}.proj:nth-child(3){grid-column:span 6}
.proj img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .7s}
.proj:hover img{transform:scale(1.1)}
.proj .info{position:relative;width:100%;padding:26px;background:linear-gradient(0deg,rgba(11,16,32,.92),transparent);transform:translateY(34px);transition:transform .4s}
.proj:hover .info{transform:none}
.proj h3{font-family:var(--display);font-size:1.2rem}
.proj p{color:#d3dbea;font-size:.92rem;margin:6px 0 10px;opacity:0;transition:opacity .4s}
.proj:hover p{opacity:1}
.proj .chips span{background:var(--lime);color:var(--ink)}

/* KONTAK */
.contact{background:linear-gradient(120deg,var(--blue),#7c3aed 60%,var(--pink));border-radius:40px;padding:70px 30px;text-align:center;position:relative;overflow:hidden}
.contact::after{content:"";position:absolute;width:340px;height:340px;border-radius:50%;background:rgba(212,255,79,.25);right:-90px;top:-110px;filter:blur(10px);animation:float 7s ease-in-out infinite}
.contact h2{font-size:clamp(2.2rem,6vw,4.4rem);margin-bottom:14px}
.contact p{max-width:48ch;margin:0 auto 30px;color:#eef0ff}
.contact .btns{justify-content:center;position:relative;z-index:1}
footer{text-align:center;padding:30px 0 40px;color:var(--muted);font-size:.9rem}

/* ANIMASI */
@keyframes up{to{transform:none}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes float{50%{transform:translateY(-12px) rotate(var(--r,0deg))}}
@keyframes blink{50%{opacity:0}}
@keyframes morph{50%{border-radius:42% 58% 45% 55%/55% 45% 55% 45%}}
.reveal{opacity:0;transform:translateY(40px) scale(.98);transition:opacity .8s,transform .8s}
.reveal.show{opacity:1;transform:none}

@media(max-width:820px){
  nav a{padding:8px 10px;font-size:.78rem}
  .hero .wrap,.rows,.row{grid-template-columns:1fr}
  .hero{text-align:center}.lead{margin-inline:auto}.btns{justify-content:center}
  .photo{order:-1;width:min(260px,68vw)}
  .bento,.rings,.projects{grid-template-columns:1fr}
  .tile,.t-bio,.t-hob,.t-loc,.proj,.proj:nth-child(1),.proj:nth-child(3){grid-column:auto;grid-row:auto}
  .row{gap:6px}
}
@media(prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
  h1 b,.reveal{transform:none;opacity:1}
  .bgshow div:first-child{opacity:1}
}