/* ============ VARIABLES (Light Blue + REAL GLASS) ============ */
:root{
    --ink:#0f172a;
    --body:#3f4c63;
    --muted:#64748b;
    --line:#d7e3f2;
    --green:#10b981;
    --green-dark:#059669;
    --green-mid:#34d399;
    --green-soft:#d1fae5;
    --green-tint:#ecfdf5;
    --blue:#2563eb;
    --navy:#0b1220;
    --radius:16px;
    --radius-lg:22px;
    --shadow-sm:0 8px 30px rgba(30,64,120,.10);
    --shadow-md:0 14px 38px rgba(30,64,120,.14);
    --shadow-green:0 16px 40px rgba(16,185,129,.20);
    --font:'Plus Jakarta Sans',system-ui,sans-serif;
    --mono:'JetBrains Mono',ui-monospace,monospace;
    --trans:.28s cubic-bezier(.4,0,.2,1);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}

body{
    font-family:var(--font);
    color:var(--body);
    line-height:1.7;
    overflow-x:hidden;
    -webkit-font-smoothing:antialiased;
    background:
        radial-gradient(1100px 620px at 84% -10%, rgba(59,130,246,.26), transparent 62%),
        radial-gradient(900px 520px at 6% 4%, rgba(16,185,129,.14), transparent 55%),
        radial-gradient(900px 700px at 50% 118%, rgba(59,130,246,.14), transparent 62%),
        linear-gradient(180deg,#dceafc 0%, #eaf3ff 45%, #dfeafb 100%);
    background-attachment:fixed;
}
a{text-decoration:none;color:inherit;transition:var(--trans)}
img{display:block;max-width:100%}
.container{max-width:1180px;margin:0 auto;padding:0 1.5rem}

/* Canvas network di belakang semua konten */
#bg-network{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
.navbar,section,.footer{position:relative;z-index:1}

/* ============ REVEAL ============ */
.reveal{opacity:0;transform:translateY(26px);transition:opacity .7s ease,transform .7s ease}
.reveal.active{opacity:1;transform:none}

/* ============ SISTEM KACA (GLASS) BERSAMA ============ */
.hero-badge,.btn-glass,.foto-frame,.foto-info,
.about-text,.about-card,
.skill-card,.stack-card,.project-card,.cert-card,.contact-ic{
    background:linear-gradient(135deg, rgba(255,255,255,.52), rgba(255,255,255,.28));
    backdrop-filter:blur(14px) saturate(1.15);
    -webkit-backdrop-filter:blur(14px) saturate(1.15);
    border:1px solid rgba(255,255,255,.75);
    box-shadow:0 8px 30px rgba(30,64,120,.10), inset 0 1px 0 rgba(255,255,255,.7);
}

/* ============ SECTION SHELL ============ */
.section{padding:6rem 0}
.section-alt{background:rgba(255,255,255,.10)}
.section-head-center{text-align:center;max-width:680px;margin:0 auto 3rem}
.section-title{font-size:2.4rem;font-weight:800;color:var(--ink);letter-spacing:-.02em;line-height:1.15}
.section-desc{margin-top:1rem;color:var(--body);font-size:1.02rem}
.section-label{font-family:var(--mono);font-size:.78rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);display:block;margin-bottom:.6rem}
.section-label-line{display:inline-flex;align-items:center;gap:.8rem;font-family:var(--mono);font-size:.76rem;letter-spacing:.2em;text-transform:uppercase;color:var(--green-dark);margin-bottom:.9rem}
.section-label-line::before,.section-label-line::after{content:"";width:26px;height:2px;background:var(--green-mid);border-radius:2px}

/* ============ BUTTONS ============ */
.btn-primary{display:inline-flex;align-items:center;gap:.55rem;background:var(--green);color:#fff;font-weight:600;font-size:.95rem;padding:.85rem 1.6rem;border-radius:12px;border:none;cursor:pointer;box-shadow:0 8px 22px rgba(16,185,129,.32);transition:var(--trans)}
.btn-primary:hover{background:var(--green-dark);transform:translateY(-2px);box-shadow:0 12px 28px rgba(16,185,129,.4)}
.btn-glass{display:inline-flex;align-items:center;gap:.55rem;color:var(--ink);font-weight:600;font-size:.95rem;padding:.85rem 1.5rem;border-radius:12px;cursor:pointer;transition:var(--trans)}
.btn-glass:hover{color:var(--green-dark);transform:translateY(-2px);box-shadow:var(--shadow-green);border-color:rgba(16,185,129,.5)}

/* ============ NAVBAR (glass tipis) ============ */
.navbar{position:fixed;top:0;left:0;width:100%;z-index:1000;background:rgba(255,255,255,.45);backdrop-filter:blur(18px) saturate(1.2);-webkit-backdrop-filter:blur(18px) saturate(1.2);border-bottom:1px solid rgba(255,255,255,.65)}
.nav-container{display:flex;align-items:center;justify-content:space-between;height:72px}
.brand{display:flex;align-items:center;gap:.65rem}
.brand-logo{width:34px;height:34px;border-radius:10px;background:var(--green);color:#fff;font-weight:800;display:grid;place-items:center;font-size:1.05rem;box-shadow:0 6px 14px rgba(16,185,129,.35)}
.brand-name{font-weight:800;color:var(--ink);font-size:1.15rem}
.nav-menu{display:flex;gap:2rem}
.nav-link{font-size:.92rem;font-weight:600;color:var(--body);position:relative}
.nav-link:hover,.nav-link.active{color:var(--green-dark)}
.nav-link::after{content:"";position:absolute;left:0;bottom:-6px;width:0;height:2px;background:var(--green);border-radius:2px;transition:var(--trans)}
.nav-link:hover::after,.nav-link.active::after{width:100%}
.hamburger{display:none;background:none;border:none;color:var(--ink);font-size:1.4rem;cursor:pointer}

/* ============ HERO ============ */
.hero{min-height:100vh;display:flex;align-items:center;padding:120px 0 70px;position:relative;overflow:hidden}
.hero-container{position:relative;z-index:2;display:grid;grid-template-columns:1.05fr .95fr;gap:4rem;align-items:center;width:100%}

.deco{position:absolute;z-index:1;pointer-events:none;color:var(--blue);will-change:transform}
.deco svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}
.deco-globe{top:6%;right:4%;width:min(44vw,500px);height:min(44vw,500px);opacity:.08;animation:floatA 16s ease-in-out infinite}
.deco-shield{top:40%;right:2%;width:120px;height:140px;opacity:.12;animation:floatB 12s ease-in-out infinite}
.deco-terminal{top:13%;left:2%;font-family:var(--mono);font-size:clamp(13px,1.8vw,20px);letter-spacing:.04em;opacity:.14;color:#1d4ed8;animation:floatB 10s ease-in-out infinite}
.deco-terminal .tdot{animation:blink 1s step-end infinite}
.deco-prompt{bottom:7%;left:3%;font-family:var(--mono);font-size:clamp(40px,7vw,90px);font-weight:700;opacity:.07;animation:floatA 14s ease-in-out infinite}
@keyframes floatA{0%,100%{transform:translateY(0)}50%{transform:translateY(-20px)}}
@keyframes floatB{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(14px) rotate(-2deg)}}

.hero-badge{display:inline-flex;align-items:center;gap:.6rem;color:var(--body);font-family:var(--mono);font-size:.8rem;padding:.55rem 1.05rem;border-radius:99px;margin-bottom:1.6rem}
.pulse-dot{width:9px;height:9px;border-radius:50%;background:var(--green);box-shadow:0 0 0 0 rgba(16,185,129,.6);animation:pulse 2s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(16,185,129,.55)}70%{box-shadow:0 0 0 9px rgba(16,185,129,0)}100%{box-shadow:0 0 0 0 rgba(16,185,129,0)}}
.hero-title{font-size:4.1rem;font-weight:800;color:var(--ink);line-height:1.05;letter-spacing:-.03em}
.hero-mono{font-family:var(--mono);font-size:1.15rem;color:var(--green-dark);font-weight:500;margin:1.1rem 0 .4rem;min-height:1.75em}
.cursor{color:var(--green);animation:blink 1s step-end infinite;margin-left:1px}
@keyframes blink{50%{opacity:0}}
.hero-subtitle{color:var(--body);font-size:1.05rem;max-width:520px;margin-bottom:2rem}
.hero-actions{display:flex;flex-wrap:wrap;gap:1rem}

.hero-visual{display:flex;flex-direction:column;align-items:center;gap:1.4rem;position:relative;z-index:2}
.foto-frame{position:relative;width:330px;max-width:100%;padding:8px;border-radius:26px;box-shadow:0 0 0 1px rgba(59,130,246,.14), 0 20px 50px rgba(30,64,120,.18), inset 0 1px 0 rgba(255,255,255,.7)}
.foto-frame::before{content:"";position:absolute;inset:8px;border-radius:20px;background:linear-gradient(135deg,rgba(16,185,129,.35),rgba(59,130,246,.28));transform:translate(14px,14px);z-index:-1;filter:blur(2px)}
.foto-polos{width:100%;aspect-ratio:3/4;object-fit:cover;object-position:center;border-radius:20px}
.foto-info{width:330px;max-width:100%;border-radius:14px;padding:1.1rem 1.3rem;font-family:var(--mono);font-size:.82rem;line-height:1.85}
/* Label role/stack/status sekarang HITAM sama seperti isinya */
.foto-info p{color:var(--ink);font-weight:600}
.fi-label{color:var(--ink);font-weight:600}

/* ============ TENTANG ============ */
.about-grid{display:grid;grid-template-columns:1.25fr .85fr;gap:3rem;align-items:start}
.about-text{border-radius:var(--radius-lg);padding:2.2rem}
.about-text .section-title{margin-bottom:1.4rem}
.about-text p{margin-bottom:0;font-size:1.02rem;text-align:justify}
.about-card{border-radius:var(--radius-lg);padding:2rem;position:sticky;top:100px}
.about-item{padding:1.1rem 0;border-bottom:1px solid rgba(15,23,42,.07)}
.about-item:first-child{padding-top:0}
.about-item:last-child{border-bottom:none;padding-bottom:0}
.about-key{display:block;font-family:var(--mono);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:.45rem}
.about-val{color:var(--ink);font-weight:600;font-size:.98rem;line-height:1.55}

/* ============ SKILLS ============ */
.skills-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem}
.skill-card{border-radius:var(--radius-lg);padding:2rem;transition:var(--trans)}
.skill-card.span-2{grid-column:span 2}
.skill-card:hover{transform:translateY(-6px);border-color:rgba(16,185,129,.5);box-shadow:var(--shadow-green)}
.skill-icon{width:52px;height:52px;border-radius:14px;background:var(--green-soft);color:var(--green-dark);display:grid;place-items:center;font-size:1.3rem;margin-bottom:1.3rem}
.skill-card h3{color:var(--ink);font-size:1.2rem;font-weight:700;margin-bottom:.6rem;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.skill-card p{color:var(--body);font-size:.96rem}
.core-badge{font-family:var(--mono);font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;background:var(--green);color:#fff;padding:.2rem .55rem;border-radius:6px;white-space:nowrap}

/* ============ TECH STACK ============ */
.stack-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.4rem}
.stack-card{border-radius:var(--radius-lg);padding:2rem}
.stack-card.span-2{grid-column:span 2}
.stack-key{display:block;font-family:var(--mono);font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:1.2rem}
.pill-wrap{display:flex;flex-wrap:wrap;gap:.6rem}
.pill{display:inline-flex;align-items:center;gap:.5rem;background:rgba(255,255,255,.55);border:1px solid var(--line);color:var(--ink);font-weight:600;font-size:.86rem;padding:.45rem .9rem;border-radius:10px;transition:var(--trans)}
.pill svg{width:15px;height:15px;fill:none;stroke:var(--green-dark);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.pill:hover{background:var(--green-tint);border-color:rgba(16,185,129,.45);color:var(--green-dark);transform:translateY(-2px)}

/* ============ PROJECTS ============ */
.projects-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem}
.project-card{border-radius:var(--radius-lg);padding:1.8rem;display:flex;flex-direction:column;transition:var(--trans);position:relative;overflow:hidden}
.project-card::before{content:"";position:absolute;top:0;left:0;width:100%;height:3px;background:linear-gradient(90deg,var(--green),var(--green-mid));transform:scaleX(0);transform-origin:left;transition:var(--trans)}
.project-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-green);border-color:rgba(16,185,129,.45)}
.project-card:hover::before{transform:scaleX(1)}
.pc-top{margin-bottom:1rem}
.project-card h3{color:var(--ink);font-size:1.18rem;font-weight:700;margin-bottom:.8rem;line-height:1.3}
.tag-wrap{display:flex;flex-wrap:wrap;gap:.45rem}
.tag{background:var(--green-tint);color:var(--green-dark);font-family:var(--mono);font-size:.72rem;font-weight:500;padding:.3rem .7rem;border-radius:8px;border:1px solid rgba(16,185,129,.2)}
.project-card p{color:var(--body);font-size:.95rem;flex-grow:1;margin-bottom:1.2rem}
.pc-link{display:inline-flex;align-items:center;gap:.45rem;color:var(--green-dark);font-weight:600;font-size:.92rem}
.pc-link i{transition:var(--trans)}
.pc-link:hover{color:var(--green)}
.pc-link:hover i{transform:translateX(4px)}

/* ============ CERTIFICATES ============ */
.certs-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem}
.cert-card{border-radius:var(--radius-lg);padding:1.7rem;display:flex;flex-direction:column;transition:var(--trans)}
.cert-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-green);border-color:rgba(16,185,129,.45)}
.cert-year{align-self:flex-start;background:var(--green-soft);color:var(--green-dark);font-family:var(--mono);font-size:.74rem;font-weight:500;padding:.3rem .75rem;border-radius:8px;margin-bottom:1rem}
.cert-card h3{color:var(--ink);font-size:1.05rem;font-weight:700;line-height:1.4;margin-bottom:.5rem}
.cert-issuer{color:var(--muted);font-size:.9rem;margin-bottom:1.1rem;flex-grow:1}
.cert-link{display:inline-flex;align-items:center;gap:.45rem;color:var(--green-dark);font-weight:600;font-size:.9rem}
.cert-link i{font-size:.8rem;transition:var(--trans)}
.cert-link:hover{color:var(--green)}
.cert-link:hover i{transform:translate(2px,-2px)}

/* ============ CONTACT (ikon saja) ============ */
.contact-icons{display:flex;flex-wrap:wrap;justify-content:center;gap:.9rem;margin-bottom:2.5rem}
.contact-ic{width:56px;height:56px;border-radius:15px;color:var(--green-dark);display:grid;place-items:center;font-size:1.35rem;transition:var(--trans)}
.contact-ic:hover{transform:translateY(-5px);background:var(--green);color:#fff;border-color:var(--green);box-shadow:var(--shadow-green)}

.cta-bar{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;background:var(--navy);border-radius:var(--radius-lg);padding:2rem 2.4rem;box-shadow:var(--shadow-md)}
.cta-text h3{color:#fff;font-size:1.4rem;font-weight:800;margin-bottom:.3rem}
.cta-text p{color:#9fb0c9;font-family:var(--mono);font-size:.9rem}

/* ============ FOOTER (glass tipis) ============ */
.footer{border-top:1px solid rgba(255,255,255,.65);padding:2rem 0;background:rgba(255,255,255,.35);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.footer-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.footer-inner p{color:var(--muted);font-size:.9rem}
.footer-mono{font-family:var(--mono);font-size:.82rem}

/* ============ RESPONSIVE ============ */
@media(max-width:992px){
    .hero-container{grid-template-columns:1fr;gap:3rem;text-align:center}
    .hero-content{order:2}
    .hero-visual{order:1}
    .hero-subtitle{margin-left:auto;margin-right:auto}
    .hero-actions{justify-content:center}
    .about-grid{grid-template-columns:1fr;gap:2rem}
    .about-card{position:static}
    .skills-grid,.projects-grid,.certs-grid{grid-template-columns:repeat(2,1fr)}
    .skill-card.span-2{grid-column:span 2}
    .stack-grid{grid-template-columns:1fr}
    .stack-card.span-2{grid-column:span 1}
    .hero-title{font-size:3.2rem}
}
@media(max-width:768px){
    .hamburger{display:block}
    .nav-menu{position:fixed;top:72px;left:0;width:100%;height:calc(100vh - 72px);background:rgba(244,250,255,.92);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);flex-direction:column;align-items:center;justify-content:flex-start;padding-top:3rem;gap:1.8rem;transform:translateX(-100%);transition:var(--trans);border-top:1px solid var(--line)}
    .nav-menu.active{transform:translateX(0)}
    .nav-link{font-size:1.15rem}
    .section{padding:4.5rem 0}
    .section-title{font-size:2rem}
    .hero-title{font-size:2.6rem}
    .hero-mono{font-size:1rem}
    .foto-frame,.foto-info{width:300px}
    .about-text{padding:1.6rem}
    .about-text p{text-align:left}
    .skills-grid,.projects-grid,.certs-grid{grid-template-columns:1fr}
    .skill-card.span-2{grid-column:span 1}
    .contact-ic{width:50px;height:50px;font-size:1.2rem}
    .cta-bar{flex-direction:column;align-items:flex-start;text-align:left}
    .footer-inner{flex-direction:column;text-align:center;gap:.5rem}
    .deco{display:none}
}

/* ============ REDUCED MOTION ============ */
@media(prefers-reduced-motion:reduce){
    *{animation:none!important;transition:none!important}
    .reveal{opacity:1;transform:none}
}
