/* =========================================================
   RESET
   ========================================================= */

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}


/* =========================================================
   BODY
   ========================================================= */

body {
    background: #0b0c0e;
    color: #f5f5f5;

    font-family:
        "Courier New",
        Courier,
        monospace;

    min-height: 100vh;

    overflow-x: hidden;
}



/* =========================================================
   LEFT SIDE
   ========================================================= */

.system-left {
    min-width: 0;

    display: flex;
    align-items: center;

    gap: 10px;

    white-space: nowrap;

    overflow: hidden;
}


/* =========================================================
   RED STATUS DOT
   ========================================================= */

.system-status-dot {
    width: 10px;
    height: 10px;

    flex-shrink: 0;

    background: #e51c2a;

    border-radius: 50%;

    /*
       Animasi halus seperti indicator
       perangkat Nothing.
    */
    animation: statusPulse 2.4s ease-in-out infinite;
}


/* ANIMASI TITIK MERAH */

@keyframes statusPulse {

    0% {
        opacity: 1;
        transform: scale(1);
        box-shadow: 0 0 0 rgba(229, 28, 42, 0);
    }

    50% {
        opacity: 0.45;
        transform: scale(0.86);
        box-shadow: 0 0 8px rgba(229, 28, 42, 0.25);
    }

    100% {
        opacity: 1;
        transform: scale(1);
        box-shadow: 0 0 0 rgba(229, 28, 42, 0);
    }

}


/* =========================================================
   BRAND
   ========================================================= */

.system-brand {
    color: #a7a8ad;

    font-size: 14px;

    letter-spacing: 0.4px;
}


/* =========================================================
   SEPARATOR
   ========================================================= */

.system-separator {
    color: #55575d;

    font-size: 14px;
}


/* =========================================================
   UNIVERSITY
   ========================================================= */

.system-university {
    color: #8d8f95;

    font-size: 14px;

    letter-spacing: 0.3px;

    overflow: hidden;

    text-overflow: ellipsis;
}


/* =========================================================
   RIGHT SIDE
   ========================================================= */

.system-right {

    flex-shrink: 0;

    display: flex;

    align-items: center;

    gap: 8px;

    color: #a7a8ad;

    white-space: nowrap;
}


/* =========================================================
   WIFI ICON
   ========================================================= */

.wifi-icon {

    width: 17px;
    height: 17px;

    display: flex;

    align-items: center;
    justify-content: center;

    color: #8f9197;
}


.wifi-icon svg {

    width: 100%;
    height: 100%;

    display: block;
}


/* =========================================================
   ONLINE TEXT
   ========================================================= */

.system-online-text {

    font-size: 14px;

    color: #a7a8ad;

    letter-spacing: 0.3px;
}


/* =========================================================
   BATTERY
   ========================================================= */

.battery-container {

    display: flex;

    align-items: center;

    gap: 5px;

    margin-left: 5px;
}


.battery-icon {

    width: 25px;
    height: 14px;

    display: block;

    color: #9b9da3;
}


/* BATTERY PERCENTAGE */

#battery-level {

    color: #a7a8ad;

    font-size: 14px;
}


/* =========================================================
   CLOCK
   ========================================================= */

#system-time {

    margin-left: 6px;

    color: #f5f5f5;

    /*
       Font yang lebih dekat dengan
       Nothing / digital display aesthetic.
    */

    font-family:
        "Courier New",
        "Lucida Console",
        monospace;

    font-size: 17px;

    font-weight: 700;

    letter-spacing: 1px;

    line-height: 1;
}


/* =========================================================
   TABLET
   ========================================================= */

@media (max-width: 900px) {

    .system-bar {

        padding: 0 16px;

    }


    .system-university {

        max-width: 320px;

    }

}


/* =========================================================
   MOBILE
   ========================================================= */

@media (max-width: 650px) {

    .system-bar {

        height: 38px;

        padding: 0 14px;

    }


    .system-left {

        gap: 8px;

    }


    .system-status-dot {

        width: 9px;
        height: 9px;

    }


    .system-brand {

        font-size: 12px;

    }


    .system-separator,
    .system-university {

        display: none;

    }


    .system-right {

        gap: 6px;

    }


    .wifi-icon {

        width: 15px;
        height: 15px;

    }


    .system-online-text {

        font-size: 12px;

    }


    .battery-icon {

        width: 22px;
        height: 12px;

    }


    #battery-level {

        font-size: 12px;

    }


    #system-time {

        font-size: 14px;

        letter-spacing: 0.8px;

        margin-left: 2px;

    }

}


/* =========================================================
   SMALL MOBILE
   ========================================================= */

@media (max-width: 380px) {

    .system-bar {

        padding: 0 10px;

    }


    .system-brand {

        font-size: 11px;

    }


    .system-right {

        gap: 4px;

    }


    .system-online-text {

        font-size: 11px;

    }


    .battery-icon {

        width: 20px;
        height: 11px;

    }


    #battery-level {

        font-size: 11px;

    }


    #system-time {

        font-size: 12px;

    }

}


/* =========================================================
   PROFILE
   ========================================================= */

.navbar-profile {

    display: flex;

    align-items: center;

    gap: 14px;

    flex-shrink: 0;

    /*
       Jarak profile ke navigation
    */

    margin-right: clamp(45px, 5vw, 90px);

}


/* FOTO */

.navbar-profile-image {

    width: 48px;

    height: 48px;

    overflow: hidden;

    border-radius: 50%;

    border: 1px solid #4a4c50;

    background: #161719;

}


.navbar-profile-image img {

    width: 100%;

    height: 100%;

    object-fit: cover;

    display: block;

}


/* INFO */

.navbar-profile-info {

    display: flex;

    flex-direction: column;

    justify-content: center;

    gap: 3px;

}


/* NAMA */

.navbar-name {

    display: flex;

    align-items: center;

    gap: 7px;

    color: #f5f5f5;

    font-family:
        "Courier New",
        monospace;

    font-size: 16px;

    font-weight: 900;

    letter-spacing: 1px;

}


/* TITIK MERAH */

.navbar-name-dot {

    width: 7px;

    height: 7px;

    border-radius: 50%;

    background: #e51c2a;

}


/* SUBTITLE */

.navbar-subtitle {

    color: #8d8f95;

    font-size: 13px;

    letter-spacing: 0.6px;

}


/* =========================================================
   DESKTOP NAVIGATION
   ========================================================= */

.desktop-navigation {

    display: flex;

    align-items: center;

    /*
       Semua item akan tetap satu baris.
    */

    flex-wrap: nowrap;

    white-space: nowrap;

    /*
       Navigation boleh mengecil mengikuti layar.
    */

    flex: 1 1 auto;

    min-width: 0;

    /*
       Lebar maksimal supaya tidak terlalu panjang
       pada monitor besar.
    */

    max-width: 950px;

    padding: 5px;

    background: #151619;

    border: 1px solid #2a2b2f;

    border-radius: 30px;

}


/* NAV ITEM */

.nav-item {

    height: 42px;

    display: flex;

    align-items: center;

    justify-content: center;

    gap: clamp(5px, 0.5vw, 9px);

    /*
       Padding otomatis mengecil
       ketika layar mengecil.
    */

    padding-left: clamp(9px, 1.1vw, 18px);

    padding-right: clamp(9px, 1.1vw, 18px);

    color: #8f9197;

    text-decoration: none;

    border-radius: 24px;

    flex: 1 1 auto;

    min-width: 0;

    white-space: nowrap;

    transition:
        background 0.25s ease,
        color 0.25s ease;

}


/* NOMOR */

.nav-number {

    font-size: clamp(9px,
            0.6vw,
            11px);

    color: #777980;

    flex-shrink: 0;

}


/* TEXT */

.nav-text {

    font-size: clamp(11px,
            0.75vw,
            14px);

    letter-spacing: 0.5px;

    white-space: nowrap;

}


/* ACTIVE */

/* =========================================================
   NAVIGATION ACTIVE
   ========================================================= */

.nav-item {
    position: relative;

    overflow: hidden;

    transition:
        background 0.35s ease,
        color 0.35s ease,
        transform 0.25s ease;
}


/* =========================================================
   ACTIVE BACKGROUND
   ========================================================= */

.nav-item.active {

    padding-right: 32px;

    color: #ffffff;

}


/* =========================================================
   ACTIVE RED DOT
   ========================================================= */

.nav-item.active::after {

    content: "";

    width: 7px;

    height: 7px;

    border-radius: 50%;

    background: #e51c2a;

    position: absolute;

    top: 50%;

    right: 12px;

    transform: translateY(-50%);

    /*
       Animasi kedip lembut
    */

    animation:
        activeDotPulse 2s ease-in-out infinite;

}


/* =========================================================
   RED DOT PULSE
   ========================================================= */

@keyframes activeDotPulse {

    0%,
    100% {

        opacity: 1;

        transform:
            translateY(-50%) scale(1);

        box-shadow:
            0 0 0 rgba(229, 28, 42, 0);

    }

    50% {

        opacity: 0.45;

        transform:
            translateY(-50%) scale(0.72);

        box-shadow:
            0 0 10px rgba(229, 28, 42, 0.25);

    }

}


/* ACTIVE NUMBER */

.nav-item.active .nav-number {

    color: #8d8f95;

}


/* ACTIVE DOT */

.nav-active-dot {

    width: 6px;

    height: 6px;

    background: #e51c2a;

    border-radius: 50%;

}


/* HOVER */

.nav-item:hover {

    color: #f5f5f5;

    background: #222327;

}


/* =========================================================
   NAVBAR ACTIONS
   ========================================================= */

.navbar-actions {

    display: flex;

    align-items: center;

    gap: 10px;

    flex-shrink: 0;

    /*
       Jarak navigation → tombol
    */

    margin-left: clamp(45px, 5vw, 90px);

}


/* =========================================================
   ACTION BUTTON
   ========================================================= */

.navbar-action-button {

    height: 48px;

    border: 1px solid #2d2f33;

    background: #18191c;

    color: #f5f5f5;

    border-radius: 25px;

    display: flex;

    align-items: center;

    justify-content: center;

    cursor: pointer;

    transition:
        background 0.2s ease,
        transform 0.2s ease;

}


.navbar-action-button:hover {

    background: #222327;

    transform: translateY(-1px);

}


/* =========================================================
   SOUND BUTTON
   ========================================================= */

.sound-button {

    width: 52px;

    height: 52px;

    border-radius: 50%;

}


/* =========================================================
   SOUND SVG
   ========================================================= */

.sound-svg {

    width: 22px;

    height: 22px;

    display: block;

}


/* DEFAULT: SOUND ON */

.sound-off {

    display: none;

}


/* SAAT MUTE */

.sound-button.muted .sound-on {

    display: none;

}


.sound-button.muted .sound-off {

    display: block;

}


/* =========================================================
   THEME BUTTON
   ========================================================= */

/* =========================================================
   WHITE MODE BUTTON
   ========================================================= */

.theme-button {

    height: 52px;

    padding-left: 18px;

    padding-right: 22px;

    gap: 10px;

}


/* =========================================================
   SUN ICON
   ========================================================= */

.theme-sun-icon {

    width: 25px;

    height: 25px;

    display: block;

    color: #ffd21c;

    transition:
        transform 0.6s cubic-bezier(0.34,
            1.56,
            0.64,
            1);

}


/*
   Ketika cursor masuk:
   matahari berputar.
*/

.theme-button:hover .theme-sun-icon {

    transform: rotate(360deg);

}


/* TEXT */

.theme-text {

    font-family:
        "Courier New",
        monospace;

    font-size: clamp(11px,
            0.7vw,
            13px);

    font-weight: 800;

    letter-spacing: 0.7px;

    white-space: nowrap;

}

/* TIGA GARIS */

.mobile-menu-button span {

    width: 17px;

    height: 1.5px;

    background: #d7d8dc;

    transition:
        transform 0.25s ease,
        opacity 0.25s ease;

}


/* =========================================================
   TABLET
   ========================================================= */

@media (max-width: 1200px) {

    .main-navbar {

        padding-left: 40px;

        padding-right: 30px;

    }


    .navbar-profile {

        margin-right: 30px;

    }


    .navbar-actions {

        margin-left: 30px;

    }


    .nav-item {

        padding-left: 9px;

        padding-right: 9px;

    }


    .nav-text {

        font-size: 11px;

    }


    .theme-text {

        display: none;

    }


    .theme-button {

        width: 52px;

        padding: 0;

    }

}


/* =========================================================
   MOBILE NAVIGATION
   ========================================================= */

@media (max-width: 800px) {

    .main-navbar {

        height: 84px;

        min-height: 84px;

        padding-left: 32px;

        padding-right: 32px;

    }


    /* Hilangkan jarak desktop */

    .navbar-profile {

        margin-right: 0;

    }


    .navbar-actions {

        margin-left: auto;

        gap: 8px;

    }


    /* Tampilkan hamburger */

    .mobile-menu-button {

        display: flex;

    }

}


/* =========================================================
   MOBILE
   ========================================================= */

@media (max-width: 600px) {


    /* =====================================================
       MAIN NAVBAR
       ===================================================== */

    .main-navbar {

        height: 82px;

        min-height: 82px;

        padding-left: 20px;

        padding-right: 20px;

    }


    /* =====================================================
       PROFILE
       ===================================================== */

    .navbar-profile {

        gap: 11px;

        margin-right: 0;

    }


    .navbar-profile-image {

        width: 45px;

        height: 45px;

    }


    .navbar-name {

        font-size: 15px;

    }


    .navbar-subtitle {

        font-size: 12px;

    }


    /* =====================================================
       ACTIONS
       ===================================================== */

    .navbar-actions {

        margin-left: auto;

        gap: 7px;

    }


    .sound-button {

        display: flex;

        width: 48px;

        height: 48px;

    }


    .theme-button {

        width: 48px;

        height: 48px;

        padding: 0;

    }


    .mobile-menu-button {

        width: 48px;

        height: 48px;

    }

}

/* =========================================================
   MOBILE NAVIGATION PANEL
   ========================================================= */

.mobile-navigation {
    display: none;

    position: fixed;

    top: 114px;
    left: 0;

    width: 100%;

    max-height: calc(100vh - 114px);

    overflow-y: auto;

    box-sizing: border-box;

    background: rgba(10, 11, 13, 0.94);

    backdrop-filter: blur(24px) saturate(120%);
    -webkit-backdrop-filter: blur(24px) saturate(120%);

    border-bottom: 1px solid rgba(255, 255, 255, 0.08);

    z-index: 1800;

    padding: 10px 0 20px;

    opacity: 0;

    transform: translateY(-10px);

    pointer-events: none;

    transition:
        opacity 0.25s ease,
        transform 0.3s ease;
}


/* =========================================================
   PANEL OPEN
   ========================================================= */

.mobile-navigation.open {
    display: block;

    opacity: 1;

    transform: translateY(0);

    pointer-events: auto;
}


/* =====================================================
   TITLE
   ===================================================== */

.mobile-navigation-title {

    display: flex;

    align-items: center;

    gap: 10px;

    padding:
        20px 22px 10px;

    color: #777980;

    font-size: 13px;

    font-weight: 700;

    letter-spacing: 1px;
}


.mobile-navigation-arrow {

    color: #e51c2a;
}


/* =====================================================
   LIST
   ===================================================== */

.mobile-navigation-list {

    display: flex;

    flex-direction: column;

    gap: 10px;

    padding:
        0 10px 20px;
}


/* =====================================================
   MOBILE NAV ITEM
   ===================================================== */

.mobile-nav-item {

    min-height: 56px;

    display: grid;

    grid-template-columns:
        38px minmax(0, 1fr) 32px 18px;

    align-items: center;

    padding: 0 18px;

    border: 1px solid #282a2e;

    border-radius: 16px;

    color: #f0f0f2;

    text-decoration: none;

    background: #0d0e10;

    position: relative;

    overflow: hidden;

    transition:
        background 0.25s ease,
        border-color 0.25s ease,
        transform 0.2s ease;
}


/* =====================================================
   HOVER
   ===================================================== */

.mobile-nav-item:hover {

    background: #17181b;

    border-color: #3a3c40;
}


/* =====================================================
   PRESS
   ===================================================== */

.mobile-nav-item:active {

    transform: scale(0.98);
}


/* =====================================================
   NUMBER
   ===================================================== */

.mobile-nav-number {

    color: #e51c2a;

    font-size: 14px;

    font-weight: 800;
}


/* =====================================================
   TEXT
   ===================================================== */

.mobile-nav-text {

    font-size: 17px;

    font-weight: 800;

    letter-spacing: 0.3px;

    white-space: nowrap;
}


/* =====================================================
   ARROW
   ===================================================== */

.mobile-nav-arrow {

    color: #a1a3a8;

    font-size: 16px;

    text-align: center;

    transition:
        transform 0.25s ease;
}


/* =====================================================
   ACTIVE MOBILE
   ===================================================== */

.mobile-nav-item.active {

    background: #151619;

    border-color: #3a3c40;
}


/* =====================================================
   ACTIVE DOT
   ===================================================== */

.mobile-nav-item.active::before {

    content: "";

    width: 6px;

    height: 6px;

    border-radius: 50%;

    background: #e51c2a;

    position: absolute;

    right: 18px;

    top: 50%;

    transform:
        translateY(-50%);

    animation:
        mobileActivePulse 2s ease-in-out infinite;
}


/* =====================================================
   ACTIVE ARROW
   ===================================================== */

.mobile-nav-item.active .mobile-nav-arrow {

    transform:
        translateX(-3px);
}




/* =========================================================
   MOBILE ACTIVE DOT ANIMATION
   ========================================================= */

@keyframes mobileActivePulse {

    0%,
    100% {

        opacity: 1;

        transform:
            translateY(-50%) scale(1);

    }

    50% {

        opacity: 0.4;

        transform:
            translateY(-50%) scale(0.7);

    }

}


/* =========================================================
   VERY SMALL PHONE
   ========================================================= */

@media (max-width: 390px) {

    .main-navbar {

        padding: 0 12px;

    }


    .navbar-profile-image {

        width: 42px;

        height: 42px;

    }


    .navbar-name {

        font-size: 13px;

    }


    .navbar-subtitle {

        font-size: 10px;

    }


    .navbar-actions {

        gap: 5px;

    }


    .sound-button,
    .theme-button,
    .mobile-menu-button {

        width: 42px;

        height: 42px;

    }


    .sound-icon {

        font-size: 19px;

    }


    .theme-icon {

        font-size: 20px;

    }


    .mobile-menu-button span {

        width: 15px;

    }


    .mobile-nav-text {

        font-size: 15px;

    }

}

/* =========================================================
   HAMBURGER → X
   ========================================================= */

.mobile-menu-button.active span:nth-child(1) {

    transform:
        translateY(6.5px) rotate(45deg);

}


.mobile-menu-button.active span:nth-child(2) {

    opacity: 0;

}


.mobile-menu-button.active span:nth-child(3) {

    transform:
        translateY(-6.5px) rotate(-45deg);

}

/* =========================================================
   NAVIGATION ACTIVE SLIDER
   ========================================================= */

.desktop-navigation {

    position: relative;

}


.nav-active-slider {

    position: absolute;

    top: 5px;

    left: 5px;

    height: 42px;

    width: 0;

    border-radius: 24px;

    background: #292a2e;

    z-index: 0;

    pointer-events: none;

    transition:
        left 0.45s cubic-bezier(0.22,
            1,
            0.36,
            1),

        width 0.35s cubic-bezier(0.22,
            1,
            0.36,
            1);

}


/*
   Semua menu berada di atas slider
*/

.nav-item {

    position: relative;

    z-index: 1;

    background: transparent;

}


/*
   Active tidak perlu background sendiri
*/

.nav-item.active {

    background: transparent;

}

/* =========================================================
   DOT GRID BACKGROUND
   ========================================================= */

body {
    background-color: #0b0c0e;

    background-image:
        radial-gradient(circle,
            rgba(255, 255, 255, 0.132) 2px,
            transparent 1px);

    background-size: 23px 23px;

    background-position: 0 0;
}

/* =========================================================
   ABOUT / HERO CARD
   ========================================================= */

/* =========================================================
   MAIN CONTENT
   ========================================================= */

.portfolio-main {
    width: min(1400px, calc(100% - 48px));

    margin: 0 auto;

    padding-top: 150px;
    padding-bottom: 15px;

    display: grid;

    grid-template-columns:
        minmax(0, 1.8fr) minmax(320px, 0.8fr);

    gap: 20px;

    align-items: start;

    box-sizing: border-box;
}


/* =========================================================
   ABOUT CARD
   ========================================================= */

.about-card {
    position: relative;

    background: #101114;

    border: 1px solid #292b30;

    border-radius: 24px;

    padding: 40px;

    overflow: hidden;

    box-sizing: border-box;
}


/* =========================================================
   BADGES
   ========================================================= */

.about-badges {
    display: flex;

    align-items: center;

    flex-wrap: wrap;

    gap: 10px;

    margin-bottom: 28px;
}


.about-badge {
    min-height: 30px;

    display: inline-flex;

    align-items: center;

    padding: 0 13px;

    border-radius: 999px;

    font-size: 12px;

    font-weight: 800;

    letter-spacing: 0.3px;

    white-space: nowrap;

    box-sizing: border-box;
}


.badge-system {
    color: #f0f0f2;

    background: #202126;

    border: 1px solid #3a3c41;
}


.badge-university {
    color: #e51c2a;

    background: rgba(229, 28, 42, 0.10);
}


.badge-semester {
    color: #00d995;

    background: rgba(0, 217, 149, 0.10);
}


.badge-dot {
    width: 8px;

    height: 8px;

    margin-right: 8px;

    border-radius: 50%;

    background: #00d995;

    animation: statusPulse 2s ease-in-out infinite;
}


/* =========================================================
   IDENTITY
   ========================================================= */

.about-identity {
    display: grid;

    grid-template-columns:
        145px minmax(0, 1fr);

    gap: 24px;

    align-items: center;

    margin-bottom: 34px;
}


/* =========================================================
   FOTO
   ========================================================= */

.about-photo-wrapper {
    position: relative;

    width: 145px;
}


.about-photo {
    display: block;

    width: 145px;

    height: 145px;

    object-fit: cover;

    border-radius: 22px;

    border: 2px solid #f0f0f2;

    box-sizing: border-box;
}


.about-photo-status {
    position: absolute;

    width: 11px;

    height: 11px;

    right: 7px;

    bottom: 10px;

    border-radius: 50%;

    background: #e51c2a;

    border: 2px solid #101114;

    animation: statusPulse 2s ease-in-out infinite;
}


.about-photo-label {
    margin-top: 10px;

    text-align: center;

    color: #777980;

    font-size: 10px;

    font-weight: 800;

    letter-spacing: 1px;
}


/* =========================================================
   ROLE
   ========================================================= */

.about-role {
    display: flex;

    align-items: center;

    gap: 7px;

    margin-bottom: 7px;

    color: #92949d;

    font-size: 13px;

    font-weight: 700;

    letter-spacing: 1px;
}


.role-symbol {
    color: #e51c2a;

    font-weight: 900;
}


.about-heading h1 {
    margin: 0;

    color: #f5f5f6;

    font-size: clamp(32px, 3.2vw, 52px);

    line-height: 1.05;

    font-weight: 900;

    letter-spacing: -2px;
}


/* =========================================================
   META
   ========================================================= */

.about-meta {
    display: flex;

    align-items: center;

    flex-wrap: wrap;

    gap: 8px;

    margin-top: 12px;

    color: #9699a3;

    font-size: 12px;
}


.about-meta strong {
    color: #e51c2a;

    font-weight: 900;

    letter-spacing: 1px;
}


.meta-separator {
    color: #65676f;
}


/* =========================================================
   DESCRIPTION
   ========================================================= */

.about-description {
    max-width: 900px;

    margin-bottom: 30px;
}


.about-description p {
    margin: 0;

    color: #e0e1e4;

    font-size: 18px;

    line-height: 1.55;

    font-weight: 400;
}


.about-description strong {
    color: #f4f4f5;

    font-weight: 800;
}


/* =========================================================
   SKILLS
   ========================================================= */

.about-skills {
    margin-bottom: 24px;
}


.skill-section-title {
    display: flex;

    align-items: center;

    gap: 8px;

    margin-bottom: 11px;

    color: #8b8e98;

    font-size: 12px;

    font-weight: 800;

    letter-spacing: 0.8px;
}


.skill-section-title>span {
    color: #e51c2a;

    font-size: 16px;
}


.skill-list {
    display: flex;

    flex-wrap: wrap;

    gap: 8px;
}


.skill-pill {
    display: inline-flex;

    align-items: center;

    gap: 8px;

    min-height: 31px;

    padding: 0 13px;

    border: 1px solid #292b30;

    border-radius: 999px;

    background: #141519;

    color: #eeeeef;

    font-size: 12px;

    font-weight: 800;

    transition:
        border-color 0.25s ease,
        background 0.25s ease,
        transform 0.25s ease;
}


.skill-pill:hover {
    border-color: #44474e;

    background: #191b1f;

    transform: translateY(-2px);
}


.skill-dot {
    width: 6px;

    height: 6px;

    border-radius: 50%;

    background: #e51c2a;
}


/* =========================================================
   CREATIVE SKILLS
   ========================================================= */

.about-creative {
    margin-bottom: 30px;
}


.creative-title>span {
    color: #999ca5;
}


.creative-list {
    display: flex;

    flex-wrap: wrap;

    gap: 8px;
}


.creative-pill {
    display: inline-flex;

    align-items: center;

    min-height: 30px;

    padding: 0 12px;

    border: 1px dashed #3b3d43;

    border-radius: 8px;

    color: #d8d9dd;

    background: #121317;

    font-size: 12px;

    font-weight: 700;

    transition:
        border-color 0.25s ease,
        background 0.25s ease;
}


.creative-pill:hover {
    border-color: #5a5d65;

    background: #181a1e;
}


/* =========================================================
   DIVIDER
   ========================================================= */

.about-divider {
    width: 100%;

    height: 1px;

    margin-bottom: 24px;

    background: #292b30;
}


/* =========================================================
   ACTION BUTTON
   ========================================================= */

.about-actions {
    display: flex;

    align-items: center;

    gap: 10px;
}


.about-primary-button,
.about-secondary-button,
.copy-email-button {
    min-height: 42px;

    display: inline-flex;

    align-items: center;

    justify-content: center;

    gap: 9px;

    padding: 0 18px;

    border-radius: 999px;

    font-family: inherit;

    font-size: 12px;

    font-weight: 900;

    text-decoration: none;

    box-sizing: border-box;

    cursor: pointer;

    transition:
        transform 0.25s ease,
        background 0.25s ease,
        border-color 0.25s ease;
}


.about-primary-button {
    color: #101114;

    background: #f5f5f6;

    border: 1px solid #f5f5f6;
}


.about-primary-button:hover {
    transform: translateY(-2px);

    background: #ffffff;
}


.about-primary-button span {
    font-size: 17px;

    transition: transform 0.25s ease;
}


.about-primary-button:hover span {
    transform: translateY(3px);
}


.about-secondary-button {
    color: #e8e9eb;

    background: transparent;

    border: 1px solid #3a3c42;
}


.about-secondary-button:hover {
    transform: translateY(-2px);

    background: #181a1e;

    border-color: #555861;
}


.email-icon {
    color: #e51c2a;
}


.copy-email-button {
    margin-left: auto;

    color: #8f929b;

    background: transparent;

    border: 1px solid transparent;
}


.copy-email-button:hover {
    color: #e7e8eb;

    background: #181a1e;

    border-color: #303238;
}


/* =========================================================
   PORTFOLIO SIDEBAR
   ========================================================= */

.portfolio-sidebar {

    display: flex;
    flex-direction: column;
    gap: 16px;

    min-width: 0;
}


/* =========================================================
   BASE WIDGET
   ========================================================= */

.identity-widget,
.clock-widget,
.glyph-widget {

    position: relative;

    width: 100%;

    box-sizing: border-box;

    background: #101114;

    border: 1px solid #292b30;

    border-radius: 24px;

    padding: 24px;

    overflow: hidden;
}


/* =========================================================
   WIDGET HEADER
   ========================================================= */

.widget-header {

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 12px;

    padding-bottom: 16px;

    border-bottom: 1px solid #292b30;
}


.widget-title {

    display: flex;

    align-items: center;

    gap: 7px;

    min-width: 0;

    color: #dfe1e5;

    font-size: 11px;

    font-weight: 900;

    letter-spacing: 0.7px;
}


.widget-title-icon {

    color: #e51c2a;

    font-size: 14px;
}


.widget-status {

    flex-shrink: 0;

    color: #00d995;

    font-size: 11px;

    font-weight: 900;

    letter-spacing: 0.5px;
}


/* =========================================================
   IDENTITY PROFILE
   ========================================================= */

.identity-profile {

    display: flex;

    align-items: center;

    gap: 12px;

    padding: 18px 0;

    border-bottom: 1px solid #292b30;
}


.identity-profile-image {

    width: 42px;

    height: 42px;

    flex-shrink: 0;

    object-fit: cover;

    border-radius: 10px;

    border: 1px solid #e5e5e7;
}


.identity-profile-info {

    min-width: 0;

    display: flex;

    flex-direction: column;

    gap: 3px;
}


.identity-profile-info strong {

    color: #f2f2f4;

    font-size: 14px;

    font-weight: 900;

    line-height: 1.3;
}


.identity-profile-info span {

    color: #858892;

    font-size: 11px;

    line-height: 1.3;
}


/* =========================================================
   IDENTITY DATA
   ========================================================= */

.identity-data {

    display: flex;

    flex-direction: column;
}


.identity-row {

    display: grid;

    grid-template-columns: minmax(90px, 1fr) minmax(0, 1.5fr);

    align-items: center;

    gap: 12px;

    min-height: 46px;

    border-bottom: 1px solid #22242a;
}


.identity-row span {

    color: #858a98;

    font-size: 11px;

    line-height: 1.4;
}


.identity-row strong {

    color: #e8e9ec;

    font-size: 12px;

    font-weight: 800;

    line-height: 1.4;

    text-align: right;

    overflow-wrap: anywhere;
}


.identity-red {

    color: #e51c2a !important;
}


/* =========================================================
   IDENTITY FOOTER
   ========================================================= */

.identity-footer {

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 12px;

    padding-top: 16px;
}


.identity-footer span {

    color: #858892;

    font-size: 11px;

    line-height: 1.4;
}


.identity-footer strong {

    flex-shrink: 0;

    color: #e51c2a;

    font-size: 12px;

    font-weight: 900;

    letter-spacing: 0.8px;
}


/* =========================================================
   CLOCK WIDGET
   ========================================================= */

.clock-red-dot {

    width: 8px;

    height: 8px;

    flex-shrink: 0;

    border-radius: 50%;

    background: #e51c2a;

    animation: statusPulse 2s ease-in-out infinite;
}


.timezone-badge {

    flex-shrink: 0;

    min-height: 25px;

    display: inline-flex;

    align-items: center;

    justify-content: center;

    padding: 0 10px;

    border: 1px solid #3a3c42;

    border-radius: 999px;

    background: #1c1e22;

    color: #dfe1e5;

    font-size: 12px;

    font-weight: 900;
}


/* =========================================================
   CLOCK DISPLAY
   ========================================================= */

.clock-display {

    display: flex;

    align-items: baseline;

    gap: 2px;

    padding: 24px 0 18px;

    color: #f5f5f6;

    font-size: clamp(34px, 4vw, 48px);

    font-weight: 900;

    letter-spacing: 1px;

    line-height: 1;
}


.clock-colon {

    color: #f5f5f6;
}


.clock-seconds {

    margin-left: 3px;

    color: #e51c2a;

    font-size: 18px;

    letter-spacing: 0;
}


/* =========================================================
   CLOCK FOOTER
   ========================================================= */

.clock-footer {

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 12px;

    padding-top: 15px;

    border-top: 1px solid #292b30;
}


.clock-location {

    color: #9a9da7;

    font-size: 11px;

    line-height: 1.4;
}


.location-icon {

    margin-right: 4px;

    color: #e51c2a;

    font-size: 13px;
}


.clock-date {

    color: #e4e5e8;

    font-size: 11px;

    font-weight: 900;

    white-space: nowrap;
}


/* =========================================================
   GLYPH WIDGET
   ========================================================= */

.glyph-header {

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 12px;
}


.glyph-icon {

    color: #8d919b;

    font-size: 15px;
}


.glyph-button {

    min-height: 25px;

    padding: 0 10px;

    border: 1px solid #3a3c42;

    border-radius: 999px;

    background: #1c1e22;

    color: #dfe1e5;

    font-family: inherit;

    font-size: 9px;

    font-weight: 900;

    letter-spacing: 0.4px;

    cursor: pointer;

    transition:
        background 0.25s ease,
        border-color 0.25s ease,
        transform 0.25s ease;
}


.glyph-button:hover {

    background: #25272c;

    border-color: #555861;

    transform: translateY(-1px);
}


/* =========================================================
   GLYPH DISPLAY
   ========================================================= */

.glyph-display {

    position: relative;

    width: 100%;

    height: 150px;

    margin-top: 12px;
}


.glyph-bar {

    position: absolute;

    display: block;

    border: 1px solid #686b74;

    background: #41434b;

    box-shadow: inset 0 0 4px rgba(255, 255, 255, 0.08);

    transition:
        background 0.3s ease,
        box-shadow 0.3s ease,
        border-color 0.3s ease;
}


.glyph-bar-horizontal {

    width: 62px;

    height: 8px;

    border-radius: 999px;
}


.glyph-bar-horizontal.top {

    top: 25px;

    left: 50%;

    transform: translateX(-50%);
}


.glyph-bar-horizontal.bottom {

    bottom: 25px;

    left: 50%;

    transform: translateX(-50%);
}


.glyph-bar-vertical {

    width: 9px;

    height: 42px;

    top: 50%;

    right: 42%;

    transform: translateY(-50%);

    border-radius: 999px;
}


.glyph-dot {

    position: absolute;

    width: 16px;

    height: 16px;

    top: 50%;

    left: 42%;

    transform: translate(-50%, -50%);

    border-radius: 50%;

    background: #555861;

    transition:
        background 0.3s ease,
        box-shadow 0.3s ease;
}


/* =========================================================
   GLYPH ACTIVE / GLOW
   ========================================================= */

.glyph-display.glowing .glyph-bar {

    background: #e7d7d7;

    border-color: #9da1aa;

    box-shadow:
        0 0 10px rgba(255, 255, 255, 0.18);
}


.glyph-display.glowing .glyph-dot {

    background: #e31f1f;

    box-shadow:
        0 0 14px rgba(246, 122, 122, 0.45);
}


/* =========================================================
   GLYPH FOOTER
   ========================================================= */

.glyph-footer {

    text-align: center;

    color: #cfd0d5;

    font-size: 9px;

    font-weight: 800;

    letter-spacing: 0.3px;
}

/* =========================================================
   GLYPH WIDGET — ACTIVE GLOW STATE
   ========================================================= */

.glyph-widget.glyph-active {
    border-color: rgba(229, 28, 42, 0.55);
    box-shadow: 0 0 34px rgba(229, 28, 42, 0.18);
}

.glyph-button.glyph-on {
    background: #e51c2a;
    border-color: #e51c2a;
    color: #ffffff;
}

.glyph-button.glyph-on:hover {
    background: #ff2635;
    border-color: #ff2635;
}

/* =========================================================
   RESPONSIVE TABLET
   ========================================================= */

@media (max-width: 1050px) {

    .portfolio-main {

        width: min(94%, 900px);

        grid-template-columns:
            minmax(0, 1fr);

        gap: 18px;

    }


    .portfolio-sidebar {

        display: grid;

        grid-template-columns:
            repeat(2, minmax(0, 1fr));

        gap: 16px;

    }


    .glyph-widget {

        grid-column: 1 / -1;

    }

}

/* =========================================================
   RESPONSIVE MOBILE
   ========================================================= */

@media (max-width: 700px) {

    .portfolio-main {

        width: calc(100% - 28px);

        margin: 130px auto 40px;

        display: flex;

        flex-direction: column;

        gap: 16px;

    }


    .about-card {

        width: 100%;

        padding: 28px 20px;

        border-radius: 20px;

    }


    .portfolio-sidebar {

        width: 100%;

        display: flex;

        flex-direction: column;

        gap: 14px;

    }


    .identity-widget,
    .clock-widget,
    .glyph-widget {

        width: 100%;

        padding: 20px;

        border-radius: 20px;

    }


    /* ---------------------------------------------
       HERO BADGES
       --------------------------------------------- */

    .about-badges {

        align-items: flex-start;

        flex-direction: column;

        gap: 8px;

        margin-bottom: 26px;

    }


    .about-badge {

        max-width: 100%;

        font-size: 10px;

    }


    /* ---------------------------------------------
       HERO IDENTITY
       --------------------------------------------- */

    .about-identity {

        grid-template-columns: 1fr;

        gap: 22px;

        margin-bottom: 28px;

    }


    .about-photo-wrapper {

        width: 126px;

    }


    .about-photo {

        width: 126px;

        height: 126px;

        border-radius: 20px;

    }


    .about-photo-status {

        right: 6px;

        bottom: 9px;

    }


    .about-photo-label {

        text-align: left;

        padding-left: 8px;

    }


    /* ---------------------------------------------
       HERO HEADING
       --------------------------------------------- */

    .about-role {

        align-items: flex-start;

        font-size: 12px;

        line-height: 1.4;

    }


    .about-heading h1 {

        font-size: clamp(32px, 9vw, 44px);

        line-height: 1.05;

        letter-spacing: -1.5px;

        overflow-wrap: anywhere;

    }


    .about-meta {

        align-items: flex-start;

        flex-direction: column;

        gap: 7px;

        font-size: 11px;

    }


    .meta-separator {

        display: none;

    }


    /* ---------------------------------------------
       HERO DESCRIPTION
       --------------------------------------------- */

    .about-description {

        margin-bottom: 28px;

    }


    .about-description p {

        font-size: 16px;

        line-height: 1.65;

    }


    /* ---------------------------------------------
       HERO SKILLS
       --------------------------------------------- */

    .skill-list {

        gap: 7px;

    }


    .skill-pill {

        min-height: 34px;

        padding: 0 12px;

        font-size: 11px;

    }


    .creative-list {

        gap: 7px;

    }


    .creative-pill {

        min-height: 32px;

        font-size: 11px;

    }


    /* ---------------------------------------------
       HERO BUTTON
       --------------------------------------------- */

    .about-actions {

        align-items: stretch;

        flex-direction: column;

    }


    .about-primary-button,
    .about-secondary-button,
    .copy-email-button {

        width: 100%;

    }


    .copy-email-button {

        margin-left: 0;

    }


    /* ---------------------------------------------
       IDENTITY WIDGET
       --------------------------------------------- */

    .identity-row {

        grid-template-columns:
            minmax(90px, 0.8fr) minmax(0, 1.2fr);

    }


    .identity-row strong {

        font-size: 10px;

    }


    /* ---------------------------------------------
       CLOCK
       --------------------------------------------- */

    .clock-display {

        font-size: clamp(38px, 13vw, 58px);

    }


    .clock-seconds {

        font-size: 16px;

    }


    .clock-footer {

        align-items: flex-start;

        flex-direction: column;

        gap: 8px;

    }


    .clock-date {

        white-space: normal;

    }


    /* ---------------------------------------------
       GLYPH
       --------------------------------------------- */

    .glyph-display {

        height: 140px;

    }

}

/* =========================================================
   VERY SMALL MOBILE
   ========================================================= */

@media (max-width: 380px) {

    .portfolio-main {

        width: calc(100% - 20px);

    }


    .about-card {

        padding: 24px 16px;

    }


    .identity-widget,
    .clock-widget,
    .glyph-widget {

        padding: 18px 16px;

    }


    .about-heading h1 {

        font-size: 30px;

    }


    .about-description p {

        font-size: 15px;

    }


    .identity-row {

        grid-template-columns: 1fr;

        gap: 4px;

        padding: 9px 0;

    }


    .identity-row strong {

        text-align: left;

    }


    .identity-footer {

        align-items: flex-start;

        flex-direction: column;

    }

}

@media (max-width: 768px) {

    .system-bar {

        height: 30px;

        padding-left: 12px;
        padding-right: 12px;

    }


    .main-navbar {

        top: 30px;

        min-height: 82px;

    }


    .portfolio-main {

        width: calc(100% - 28px);

        margin-top: 24px;

        grid-template-columns: 1fr;

    }

}

@media (max-width: 480px) {

    .portfolio-main {

        width: calc(100% - 20px);

        margin-top: 50px;

    }


    .about-card {

        padding: 26px 20px;

        border-radius: 20px;

    }

}

/* =========================================================
   FINAL RESPONSIVE SYSTEM
   SYSTEM BAR + NAVBAR + MOBILE NAVIGATION
   ========================================================= */


/* =========================================================
   SYSTEM BAR
   ========================================================= */

.system-bar {
    position: fixed;
    top: 0;
    left: 0;

    width: 100%;
    height: 32px;

    display: flex;
    align-items: center;
    justify-content: space-between;

    padding: 0 22px;

    box-sizing: border-box;

    background: rgba(10, 11, 13, 0.78);

    backdrop-filter: blur(18px) saturate(120%);
    -webkit-backdrop-filter: blur(18px) saturate(120%);

    border-bottom: 1px solid rgba(255, 255, 255, 0.08);

    z-index: 2000;
}


/* =========================================================
   MAIN NAVBAR
   ========================================================= */

.main-navbar {
    position: fixed;

    top: 32px;
    left: 0;

    width: 100%;
    min-height: 86px;

    display: flex;
    align-items: center;

    padding-left: clamp(30px, 7vw, 135px);
    padding-right: clamp(30px, 6vw, 120px);

    box-sizing: border-box;

    background: rgba(10, 11, 13, 0.78);

    backdrop-filter: blur(18px) saturate(120%);
    -webkit-backdrop-filter: blur(18px) saturate(120%);

    border-bottom: 1px solid rgba(255, 255, 255, 0.07);

    z-index: 1900;
}


/* =========================================================
   MOBILE MENU BUTTON
   DEFAULT: HIDDEN
   ========================================================= */

.mobile-menu-button {
    display: none;

    width: 48px;
    height: 48px;

    flex-shrink: 0;

    border: 1px solid #2d2f33;

    background: #18191c;

    border-radius: 50%;

    cursor: pointer;

    flex-direction: column;
    align-items: center;
    justify-content: center;

    gap: 5px;
}


/* =========================================================
   MOBILE NAVIGATION
   DEFAULT: HIDDEN
   ========================================================= */

.mobile-navigation {
    display: none;

    position: fixed;

    top: 118px;
    left: 0;

    width: 100%;

    max-height: calc(100vh - 118px);

    overflow-y: auto;

    box-sizing: border-box;

    padding: 10px 0 20px;

    background: rgba(10, 11, 13, 0.94);

    backdrop-filter: blur(24px) saturate(120%);
    -webkit-backdrop-filter: blur(24px) saturate(120%);

    border-bottom: 1px solid rgba(255, 255, 255, 0.08);

    z-index: 1850;

    opacity: 0;

    transform: translateY(-10px);

    pointer-events: none;

    transition:
        opacity 0.25s ease,
        transform 0.3s ease;
}


/* =========================================================
   MOBILE MENU OPEN
   ========================================================= */

.mobile-navigation.open {
    display: block;

    opacity: 1;

    transform: translateY(0);

    pointer-events: auto;
}


/* =========================================================
   TABLET / IPAD
   <= 1024px
   ========================================================= */

@media (max-width: 1024px) {

    .main-navbar {

        min-height: 82px;

        top: 30px;

        padding-left: 20px;
        padding-right: 20px;
    }


    .system-bar {

        height: 30px;

        padding-left: 12px;
        padding-right: 12px;
    }


    /* Desktop navigation hilang */

    .desktop-navigation {
        display: none;
    }


    /* Hamburger muncul */

    .mobile-menu-button {
        display: flex;
    }


    /* Mobile navigation */

    .mobile-navigation {

        top: 112px;

        max-height:
            calc(100vh - 112px);
    }


    /* Main content */

    .portfolio-main {

        width: calc(100% - 28px);

        margin: 0 auto;

        padding-top: 132px;
        padding-bottom: 60px;

        display: flex;

        flex-direction: column;

        gap: 16px;
    }


    /* Sidebar menjadi satu kolom */

    .portfolio-sidebar {

        width: 100%;

        display: flex;

        flex-direction: column;

        gap: 16px;
    }


    .identity-widget,
    .clock-widget,
    .glyph-widget {

        width: 100%;
    }

}


/* =========================================================
   PHONE
   <= 600px
   ========================================================= */

@media (max-width: 600px) {

    .main-navbar {

        min-height: 82px;

        padding-left: 12px;
        padding-right: 12px;
    }


    .navbar-profile {

        gap: 10px;

        margin-right: 0;
    }


    .navbar-profile-image {

        width: 45px;
        height: 45px;
    }


    .navbar-name {

        font-size: 15px;
    }


    .navbar-subtitle {

        font-size: 12px;
    }


    .navbar-actions {

        margin-left: auto;

        gap: 7px;
    }


    .sound-button,
    .theme-button,
    .mobile-menu-button {

        width: 46px;
        height: 46px;
    }


    .portfolio-main {

        width: calc(100% - 20px);

        padding-top: 126px;
    }


    .about-card {

        padding: 24px 18px;

        border-radius: 20px;
    }


    .about-identity {

        grid-template-columns: 1fr;

        gap: 22px;
    }


    .about-photo-wrapper,
    .about-photo {

        width: 126px;
        height: 126px;
    }


    .about-heading h1 {

        font-size:
            clamp(30px, 9vw, 44px);

        letter-spacing: -1.5px;

        overflow-wrap: anywhere;
    }


    .about-description p {

        font-size: 16px;

        line-height: 1.65;
    }


    .about-meta {

        flex-direction: column;

        align-items: flex-start;

        gap: 7px;
    }


    .meta-separator {

        display: none;
    }


    .about-actions {

        flex-direction: column;

        align-items: stretch;
    }


    .about-primary-button,
    .about-secondary-button,
    .copy-email-button {

        width: 100%;
    }


    .copy-email-button {

        margin-left: 0;
    }

}


/* =========================================================
   VERY SMALL PHONE
   <= 380px
   ========================================================= */

@media (max-width: 380px) {

    .about-card {

        padding: 22px 16px;
    }


    .identity-widget,
    .clock-widget,
    .glyph-widget {

        padding: 18px 16px;
    }


    .about-heading h1 {

        font-size: 30px;
    }


    .about-description p {

        font-size: 15px;
    }

}

/* =========================================================
   FLOATING QUICK ACTIONS
   ========================================================= */

.floating-actions {
    position: fixed;

    right: 28px;
    bottom: 24px;

    z-index: 2000;

    display: flex;
    align-items: center;

    padding: 4px;

    gap: 4px;

    background: rgba(15, 16, 19, 0.92);

    border: 1px solid #2d2f33;

    border-radius: 999px;

    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);

    box-shadow:
        0 10px 30px rgba(0, 0, 0, 0.35);

    opacity: 0;
    visibility: hidden;

    transform:
        translateY(16px) scale(0.96);

    pointer-events: none;

    transition:
        opacity 0.3s ease,
        visibility 0.3s ease,
        transform 0.3s ease;
}


/* MUNCUL SETELAH SCROLL */

.floating-actions.show {
    opacity: 1;

    visibility: visible;

    transform:
        translateY(0) scale(1);

    pointer-events: auto;
}


/* =========================================================
   FLOATING BUTTON BASE
   ========================================================= */

.floating-action {
    width: 46px;
    height: 46px;

    border: 0;

    border-radius: 50%;

    display: flex;

    align-items: center;
    justify-content: center;

    color: #dfe1e5;

    background: transparent;

    cursor: pointer;

    text-decoration: none;

    transition:
        background 0.25s ease,
        color 0.25s ease,
        transform 0.25s ease;
}


/* SVG */

.floating-action svg {
    width: 19px;
    height: 19px;

    display: block;
}


/* =========================================================
   GITHUB
   ========================================================= */

.floating-github:hover {
    background: #222327;

    color: #ffffff;

    transform: translateY(-2px);
}


/* =========================================================
   WHITE MODE
   ========================================================= */

.floating-theme-button {
    color: #ffd21c;
}

.floating-theme-button:hover {
    background: #222327;

    transform: translateY(-2px);
}

.floating-theme-icon {
    width: 21px !important;
    height: 21px !important;

    transition:
        transform 0.6s cubic-bezier(0.34,
            1.56,
            0.64,
            1);
}

.floating-theme-button:hover .floating-theme-icon {
    transform: rotate(360deg);
}


/* =========================================================
   BACK TO TOP
   ========================================================= */

.floating-top-button {
    background: #e51c2a;

    color: #ffffff;
}

.floating-top-button:hover {
    background: #ff2635;

    transform: translateY(-2px);
}


/* =========================================================
   MOBILE
   ========================================================= */

@media (max-width: 600px) {

    .floating-actions {
        right: 14px;
        bottom: 16px;

        padding: 3px;
    }

    .floating-action {
        width: 42px;
        height: 42px;
    }

    .floating-action svg {
        width: 18px;
        height: 18px;
    }

}

/* =========================================================
   KARYA & PROYEK SECTION
   ========================================================= */

.projects-section {
    width: 100%;
    padding: 40px 0 100px;
}

.projects-content {
    width: min(1400px, calc(100% - 48px));
    margin: 0 auto;
    box-sizing: border-box;
}


/* =========================================================
   TOP: HEADER + FILTER (SEJAJAR DI DESKTOP)
   ========================================================= */

.projects-top {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 40px;
    margin-bottom: 32px;
}

.projects-header {
    max-width: 700px;
    flex: 1 1 auto;
    min-width: 0;
}

.projects-label {
    display: flex;
    align-items: center;
    gap: 7px;
    margin-bottom: 10px;
    color: #92949d;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 1px;
}

.projects-label-arrow {
    color: #e51c2a;
    font-weight: 900;
}

.projects-title {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 0 0 12px;
    color: #f5f5f6;
    font-size: clamp(28px, 3vw, 44px);
    font-weight: 900;
    letter-spacing: -1.5px;
    line-height: 1.1;
}

.projects-title-dot {
    width: 9px;
    height: 9px;
    flex-shrink: 0;
    border-radius: 50%;
    background: #e51c2a;
    animation: statusPulse 2s ease-in-out infinite;
}

.projects-subtitle {
    margin: 0;
    color: #9699a3;
    font-size: 15px;
    line-height: 1.6;
}


/* =========================================================
   FILTER (SCROLLABLE / BISA DIGESER)
   ========================================================= */

.projects-filter-wrapper {
    position: relative;
    flex-shrink: 0;
    max-width: 700px;
}

.projects-filter {
    display: flex;
    align-items: center;
    gap: 10px;

    overflow-x: auto;
    scroll-behavior: smooth;

    padding-bottom: 4px;

    scrollbar-width: none;
    -ms-overflow-style: none;
}

.projects-filter::-webkit-scrollbar {
    display: none;
}

.projects-filter-wrapper::after {
    content: "";
    position: absolute;
    top: 0;
    right: 0;
    width: 48px;
    height: 100%;
    background: linear-gradient(to right, transparent, #0b0c0e);
    pointer-events: none;
}

.filter-pill {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-height: 40px;
    padding: 0 16px;
    border: 1px solid #292b30;
    border-radius: 999px;
    background: #141519;
    color: #9699a3;
    font-family: inherit;
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 0.4px;
    white-space: nowrap;
    cursor: pointer;
    transition: background 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}

.filter-pill:hover {
    border-color: #44474e;
    color: #e8e9eb;
}

.filter-pill.active {
    background: #f5f5f6;
    border-color: #f5f5f6;
    color: #101114;
}

.filter-count {
    color: #65676f;
    font-weight: 700;
}

.filter-pill.active .filter-count {
    color: #8a8c90;
}


/* =========================================================
   RESPONSIVE: TUMPUK DI TABLET/MOBILE
   ========================================================= */

@media (max-width: 1050px) {

    .projects-top {
        flex-direction: column;
        align-items: flex-start;
        gap: 20px;
    }

    .projects-header,
    .projects-filter-wrapper {
        max-width: 100%;
        width: 100%;
    }
}

@media (max-width: 700px) {

    .projects-content {
        width: calc(100% - 28px);
    }

    .projects-subtitle {
        font-size: 14px;
    }

    .filter-pill {
        min-height: 36px;
        padding: 0 13px;
        font-size: 11px;
    }
}

@media (max-width: 380px) {

    .projects-content {
        width: calc(100% - 20px);
    }
}


/* =========================================================
   GRID CARD (kosong dulu, diisi di tahap berikutnya)
   ========================================================= */

.projects-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: 20px;
}


/* =========================================================
   RESPONSIVE
   ========================================================= */

@media (max-width: 700px) {

    .projects-content {
        width: calc(100% - 28px);
    }

    .projects-subtitle {
        font-size: 14px;
    }

    .filter-pill {
        min-height: 36px;
        padding: 0 13px;
        font-size: 11px;
    }
}

@media (max-width: 380px) {

    .projects-content {
        width: calc(100% - 20px);
    }
}

/* =========================================================
   PROJECTS GRID (STACK VERTIKAL, FULL WIDTH)
   ========================================================= */

.projects-grid {
    display: flex;
    flex-direction: column;
    gap: 24px;
}


/* =========================================================
   PROJECT CARD
   ========================================================= */

.project-card {
    background: #101114;
    border: 1px solid #292b30;
    border-radius: 24px;
    padding: 32px;
    box-sizing: border-box;
}

.project-card-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 14px;
    margin-bottom: 24px;
}

.project-card-tags {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.project-tag {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-height: 32px;
    padding: 0 14px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 0.4px;
    white-space: nowrap;
}

.project-tag-index {
    color: #9699a3;
    background: #18191c;
    border: 1px solid #2d2f33;
}

.project-tag-category {
    color: #e51c2a;
    background: rgba(229, 28, 42, 0.10);
}

.project-github-button {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    min-height: 44px;
    padding: 0 20px;
    border-radius: 999px;
    background: #f5f5f6;
    color: #101114;
    font-size: 12px;
    font-weight: 900;
    letter-spacing: 0.4px;
    text-decoration: none;
    transition: transform 0.25s ease, background 0.25s ease;
}

.project-github-button:hover {
    transform: translateY(-2px);
    background: #ffffff;
}

.project-github-arrow {
    font-size: 14px;
}

.project-card-divider {
    width: 100%;
    height: 1px;
    background: #292b30;
    margin-bottom: 28px;
}

.project-card-body {
    display: grid;
    grid-template-columns: minmax(280px, 0.85fr) minmax(0, 1.15fr);
    gap: 36px;
    align-items: start;
}


/* =========================================================
   PREVIEW SCREENSHOT
   ========================================================= */

.project-preview {
    position: sticky;
    top: 140px;
}

.project-preview-header {
    display: flex;
    align-items: center;
    margin-bottom: 14px;
}

.project-preview-label {
    display: flex;
    align-items: center;
    gap: 7px;
    color: #8b8e98;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: 0.8px;
}

.project-preview-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #e51c2a;
    animation: statusPulse 2s ease-in-out infinite;
}

.project-preview-frame {
    position: relative;
    width: 100%;

    display: flex;
    align-items: center;
    justify-content: center;

    border-radius: 20px;
    border: 1px solid #292b30;
    background: #0d0e10;
    overflow: hidden;
}

/* frame-wide sudah tidak diperlukan lagi karena ukuran otomatis mengikuti foto,
   tapi class-nya dibiarkan ada di HTML supaya tidak perlu diedit satu-satu (tidak error) */
.project-preview-frame.frame-wide {
    /* sengaja dikosongkan */
}

.project-preview-slides {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
}

.project-preview-slide {
    display: none;

    width: auto;
    max-width: 100%;

    height: auto;
    max-height: 640px;

    margin: 0 auto;
}

.project-preview-slide.active {
    display: block;
}


/* =========================================================
   PREVIEW NAV BUTTONS (PREV / NEXT)
   ========================================================= */

.preview-nav-btn {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);

    width: 38px;
    height: 38px;

    display: flex;
    align-items: center;
    justify-content: center;

    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 50%;

    background: rgba(10, 11, 13, 0.7);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);

    color: #f5f5f6;
    cursor: pointer;

    z-index: 5;

    transition:
        background 0.25s ease,
        border-color 0.25s ease,
        transform 0.25s ease;
}

.preview-nav-btn:hover {
    background: rgba(229, 28, 42, 0.85);
    border-color: rgba(229, 28, 42, 0.85);
    transform: translateY(-50%) scale(1.08);
}

.preview-nav-btn svg {
    width: 18px;
    height: 18px;
    display: block;
}

.preview-prev {
    left: 12px;
}

.preview-next {
    right: 12px;
}


.project-preview-dots {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    margin-top: 14px;
}

.preview-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #33353a;
    border: none;
    padding: 0;
    cursor: pointer;
    transition: background 0.25s ease, transform 0.25s ease;
}

.preview-dot.active {
    background: #e51c2a;
    transform: scale(1.3);
}


/* =========================================================
   PROJECT DETAILS
   ========================================================= */

.project-title {
    margin: 0 0 6px;
    color: #f5f5f6;
    font-size: clamp(24px, 2.4vw, 34px);
    font-weight: 900;
    letter-spacing: 1px;
}

.project-subtitle {
    margin: 0 0 22px;
    color: #9699a3;
    font-size: 15px;
    font-style: italic;
}

.project-meta-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
    margin-bottom: 22px;
}

.project-meta-item {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 12px;
    border: 1px solid #292b30;
    border-radius: 12px;
    background: #141519;
}

.project-meta-item span {
    color: #777980;
    font-size: 10px;
    font-weight: 800;
    letter-spacing: 0.6px;
}

.project-meta-item strong {
    color: #e51c2a;
    font-size: 13px;
    font-weight: 900;
}

.project-description {
    margin: 0 0 14px;
    color: #d5d6da;
    font-size: 16px;
    line-height: 1.7;
}

.project-description-secondary {
    color: #9699a3;
    margin-bottom: 24px;
}

.project-features {
    margin-bottom: 24px;
}

.project-features-title {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 12px;
    color: #e51c2a;
    font-size: 15px;
    font-weight: 900;
    letter-spacing: 0.6px;
}

.project-features-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #e51c2a;
}

.project-features-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.project-features-list li {
    position: relative;
    padding-left: 22px;
    color: #c8c9cd;
    font-size: 14px;
    line-height: 1.6;
}

.project-features-list li::before {
    content: "✓";
    position: absolute;
    left: 0;
    top: 0;
    color: #e51c2a;
    font-weight: 900;
}

.project-tech {
    margin-bottom: 26px;
}

.project-tech-title {
    margin-bottom: 12px;
    color: #8b8e98;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: 0.8px;
}

.project-tech-list {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.tech-pill {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 0 13px;
    border: 1px solid #292b30;
    border-radius: 999px;
    background: #141519;
    color: #eeeeef;
    font-size: 11px;
    font-weight: 800;
}

.project-repo-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 14px;
    padding-top: 22px;
    border-top: 1px solid #292b30;
}

.project-repo-info {
    display: flex;
    align-items: center;
    gap: 12px;
}

.project-repo-icon {
    width: 36px;
    height: 36px;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: #18191c;
    border: 1px solid #2d2f33;
    color: #dfe1e5;
    font-size: 12px;
    font-weight: 900;
}

.project-repo-text {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.project-repo-text strong {
    color: #f2f2f4;
    font-size: 13px;
}

.project-repo-text span {
    color: #777980;
    font-size: 11px;
}

.project-repo-button {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 42px;
    padding: 0 18px;
    border-radius: 999px;
    background: #e51c2a;
    color: #ffffff;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 0.4px;
    text-decoration: none;
    transition: background 0.25s ease, transform 0.25s ease;
}

.project-repo-button:hover {
    background: #ff2635;
    transform: translateY(-2px);
}


/* =========================================================
   RESPONSIVE: PROJECT CARD
   ========================================================= */

@media (max-width: 900px) {

    .project-card-body {
        grid-template-columns: 1fr;
    }

    .project-preview {
        position: static;
    }

    .project-preview-frame {
        max-height: 420px;
    }

    .project-meta-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 600px) {

    .project-card {
        padding: 22px 18px;
        border-radius: 20px;
    }

    .project-github-button {
        font-size: 11px;
        padding: 0 16px;
    }

    .project-repo-footer {
        flex-direction: column;
        align-items: flex-start;
    }

    .project-repo-button {
        width: 100%;
        justify-content: center;
    }
}

/* =========================================================
   PREVIEW INSPECT BUTTON
   ========================================================= */

.preview-inspect-btn {
    position: absolute;
    bottom: 12px;
    right: 12px;

    display: flex;
    align-items: center;
    gap: 6px;

    height: 34px;
    padding: 0 12px;

    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 999px;

    background: rgba(10, 11, 13, 0.75);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);

    color: #f5f5f6;

    font-family: inherit;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: 0.3px;

    cursor: pointer;

    z-index: 5;

    transition:
        background 0.25s ease,
        border-color 0.25s ease,
        transform 0.25s ease;
}

.preview-inspect-btn:hover {
    background: rgba(229, 28, 42, 0.85);
    border-color: rgba(229, 28, 42, 0.85);
    transform: translateY(-2px);
}

.preview-inspect-btn svg {
    width: 14px;
    height: 14px;
    display: block;
}


/* =========================================================
   IMAGE LIGHTBOX (INSPECT SCREENSHOT)
   ========================================================= */

.image-lightbox {
    position: fixed;
    inset: 0;
    z-index: 5000;

    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;

    background: rgba(5, 5, 6, 0.92);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);

    opacity: 0;
    visibility: hidden;

    transition: opacity 0.25s ease, visibility 0.25s ease;
}

.image-lightbox.open {
    opacity: 1;
    visibility: visible;
}

.lightbox-toolbar {
    position: fixed;
    top: 20px;
    right: 20px;

    display: flex;
    align-items: center;
    gap: 8px;

    padding: 6px;

    background: rgba(15, 16, 19, 0.92);
    border: 1px solid #2d2f33;
    border-radius: 999px;

    z-index: 5010;
}

.lightbox-btn {
    width: 38px;
    height: 38px;

    display: flex;
    align-items: center;
    justify-content: center;

    border: none;
    border-radius: 50%;

    background: transparent;
    color: #f5f5f6;

    cursor: pointer;

    transition: background 0.2s ease, color 0.2s ease;
}

.lightbox-btn svg {
    width: 18px;
    height: 18px;
    display: block;
}

.lightbox-btn:hover {
    background: #222327;
}

.lightbox-close:hover {
    background: #e51c2a;
}

.lightbox-zoom-level {
    min-width: 46px;
    text-align: center;
    color: #dfe1e5;
    font-size: 12px;
    font-weight: 800;
}

.lightbox-image-wrapper {
    max-width: 92vw;
    max-height: 86vh;

    overflow: auto;

    display: flex;
    align-items: center;
    justify-content: center;
}

.lightbox-image {
    max-width: 92vw;
    max-height: 86vh;

    display: block;

    transition: transform 0.2s ease;
    transform-origin: center center;

    border-radius: 8px;
}

/* =========================================================
   KEAHLIAN SECTION
   ========================================================= */

.skills-section { width: 100%; padding: 40px 0 100px; }
.skills-content { width: min(1400px, calc(100% - 48px)); margin: 0 auto; box-sizing: border-box; }

.skills-header { max-width: 900px; margin-bottom: 24px; }

.skills-label { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; color: #92949d; font-size: 13px; font-weight: 700; letter-spacing: 1px; }
.skills-label-arrow { color: #e51c2a; font-weight: 900; }
.skills-label-separator { color: #55575d; }
.skills-label-sub { color: #65676f; font-weight: 700; }

.skills-title { display: flex; align-items: center; gap: 12px; margin: 0 0 12px; color: #f5f5f6; font-size: clamp(28px, 3vw, 44px); font-weight: 900; letter-spacing: -1.5px; line-height: 1.1; }
.skills-title-dot { width: 9px; height: 9px; flex-shrink: 0; border-radius: 50%; background: #e51c2a; animation: statusPulse 2s ease-in-out infinite; }
.skills-subtitle { margin: 0; color: #9699a3; font-size: 15px; line-height: 1.6; }

.skills-top { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 16px; margin-bottom: 32px; }

.skills-filter-wrapper { position: relative; flex: 1 1 auto; min-width: 0; }
.skills-filter { display: flex; align-items: center; gap: 10px; overflow-x: auto; scroll-behavior: smooth; padding-bottom: 4px; scrollbar-width: none; -ms-overflow-style: none; }
.skills-filter::-webkit-scrollbar { display: none; }
.skills-filter-wrapper::after { content: ""; position: absolute; top: 0; right: 0; width: 48px; height: 100%; background: linear-gradient(to right, transparent, #0b0c0e); pointer-events: none; }

.skills-view-toggle { flex-shrink: 1; min-width: 0; display: flex; gap: 6px; padding: 5px; background: #151619; border: 1px solid #2a2b2f; border-radius: 30px; }
.view-toggle-btn { flex: 1 1 auto; min-width: 0; justify-content: center; display: inline-flex; align-items: center; gap: 6px; height: 34px; padding: 0 14px; border-radius: 24px; background: transparent; border: none; color: #8f9197; font-family: inherit; font-size: 11px; font-weight: 800; letter-spacing: 0.3px; cursor: pointer; white-space: nowrap; transition: background 0.25s ease, color 0.25s ease; }
.view-toggle-btn:hover:not(.active) { color: #f5f5f6; background: #222327; }
.view-toggle-btn.active { background: #f5f5f6; color: #101114; }

.skills-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }

.skill-category-card { display: flex; flex-direction: column; background: #101114; border: 1px solid #292b30; border-radius: 24px; padding: 28px; box-sizing: border-box; }

.skill-category-header { display: flex; align-items: flex-start; gap: 14px; margin-bottom: 18px; }
.skill-category-icon { width: 44px; height: 44px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; border-radius: 12px; background: rgba(229, 28, 42, 0.10); color: #e51c2a; }
.skill-category-info { flex: 1 1 auto; min-width: 0; }
.skill-category-info h3 { margin: 0 0 6px; color: #f5f5f6; font-size: 17px; font-weight: 900; }
.skill-category-info p { margin: 0; color: #9699a3; font-size: 12.5px; line-height: 1.5; }
.skill-category-count { flex-shrink: 0; text-align: right; color: #e8e9ec; font-size: 20px; font-weight: 900; line-height: 1.1; }
.skill-category-count span { display: block; color: #777980; font-size: 10px; font-weight: 700; letter-spacing: 0.5px; margin-top: 2px; }

.skill-category-divider { width: 100%; height: 1px; background: #292b30; margin-bottom: 18px; }

.skill-items-detail { display: flex; flex-direction: column; gap: 16px; margin-bottom: 8px; }
.skill-item { padding-bottom: 16px; border-bottom: 1px solid #22242a; }
.skill-item:last-child { border-bottom: none; padding-bottom: 0; }
.skill-item-top { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
.skill-item-dot { width: 6px; height: 6px; border-radius: 50%; background: #e51c2a; flex-shrink: 0; }
.skill-item-dot.dot-mahir { background: #8d8f95; }
.skill-item-dot.dot-kompeten { background: #55575d; }
.skill-item-name { flex: 1 1 auto; min-width: 0; color: #f0f0f2; font-size: 14px; font-weight: 800; }
.skill-level-badge { flex-shrink: 0; padding: 3px 9px; border-radius: 999px; font-size: 9px; font-weight: 900; letter-spacing: 0.4px; }
.level-utama { background: #e51c2a; color: #ffffff; }
.level-mahir { border: 1px solid #4a4c50; color: #dfe1e5; }
.level-kompeten { border: 1px solid #33353a; color: #8d8f95; }
.skill-item-desc { margin: 0 0 8px; color: #9699a3; font-size: 12.5px; line-height: 1.5; }
.skill-item-bottom { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.skill-item-tag { color: #777980; font-size: 11px; font-weight: 700; }
.skill-item-type { color: #65676f; font-size: 10px; font-weight: 800; letter-spacing: 0.5px; }

.skill-items-chips { display: none; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
.skill-category-card.chip-view .skill-items-detail { display: none; }
.skill-category-card.chip-view .skill-items-chips { display: flex; }

.skill-chip { display: inline-flex; align-items: center; gap: 7px; min-height: 32px; padding: 0 12px; border: 1px solid #292b30; border-radius: 999px; background: #141519; color: #eeeeef; font-size: 12px; font-weight: 800; }
.skill-chip em { font-style: normal; color: #777980; font-weight: 700; font-size: 11px; }
.chip-dot { width: 6px; height: 6px; border-radius: 50%; background: #e51c2a; }
.chip-dot.level-mahir { background: #8d8f95; }
.chip-dot.level-kompeten { background: #55575d; }

.skill-category-footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-top: 16px; margin-top: auto; border-top: 1px solid #292b30; }
.footer-verified { color: #00d995; font-size: 11px; font-weight: 800; letter-spacing: 0.4px; }
.footer-label { color: #65676f; font-size: 10px; font-weight: 800; letter-spacing: 0.6px; }

@media (max-width: 1050px) {
    .skills-grid { grid-template-columns: 1fr; }
}

@media (max-width: 700px) {
    .skills-content { width: calc(100% - 28px); }
    .skills-top { flex-direction: column; align-items: stretch; }
    .skills-filter-wrapper,
    .skills-view-toggle { width: 100%; }
    .skill-category-header { flex-wrap: wrap; }
    .skill-category-card { padding: 22px 18px; border-radius: 20px; }
}

/* =========================================================
   PENDIDIKAN SECTION
   ========================================================= */

.education-section { width: 100%; padding: 40px 0 100px; }
.education-content { width: min(1400px, calc(100% - 48px)); margin: 0 auto; box-sizing: border-box; }

.education-top {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 16px;
    margin-bottom: 32px;
}

.education-header { min-width: 0; }

.education-label {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 10px;
    color: #e51c2a;
    font-size: 13px;
    font-weight: 800;
    letter-spacing: 1px;
}

.education-label-icon { display: flex; align-items: center; }

.education-title {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 0;
    color: #f5f5f6;
    font-size: clamp(28px, 3vw, 44px);
    font-weight: 900;
    letter-spacing: -1.5px;
    line-height: 1.1;
}

.education-title-dot {
    width: 9px;
    height: 9px;
    flex-shrink: 0;
    border-radius: 50%;
    background: #e51c2a;
    animation: statusPulse 2s ease-in-out infinite;
}

.education-badge {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    min-height: 32px;
    padding: 0 16px;
    border: 1px solid #292b30;
    border-radius: 999px;
    background: #141519;
    color: #9699a3;
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 0.4px;
    white-space: nowrap;
}


/* =========================================================
   GRID 2 KOLOM
   ========================================================= */

.education-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 20px;
}

.education-card {
    display: flex;
    flex-direction: column;
    background: #101114;
    border: 1px solid #292b30;
    border-radius: 24px;
    padding: 28px;
    box-sizing: border-box;
}

.education-card-divider {
    width: 100%;
    height: 1px;
    background: #292b30;
    margin-bottom: 20px;
}


/* =========================================================
   KARTU UNIVERSITAS
   ========================================================= */

.education-card-header {
    display: flex;
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 14px;
    margin-bottom: 20px;
}

.education-uni-icon {
    width: 44px;
    height: 44px;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 12px;
    background: rgba(229, 28, 42, 0.10);
    color: #e51c2a;
    font-size: 14px;
    font-weight: 900;
}

.education-uni-info { flex: 1 1 auto; min-width: 0; }
.education-uni-info h3 { margin: 0 0 4px; color: #f5f5f6; font-size: 18px; font-weight: 900; }
.education-uni-info p { margin: 0; color: #9699a3; font-size: 13px; }

.education-semester-badge {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 0 12px;
    border-radius: 999px;
    background: rgba(0, 217, 149, 0.10);
    color: #00d995;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: 0.3px;
    white-space: nowrap;
}

.education-description {
    margin: 0 0 14px;
    color: #d5d6da;
    font-size: 14.5px;
    line-height: 1.7;
}

.education-description strong { color: #f4f4f5; font-weight: 800; }

.education-description-secondary {
    color: #9699a3;
    margin-bottom: 22px;
}

.education-meta-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    margin-bottom: 22px;
}

.education-meta-item {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 12px;
    border: 1px solid #292b30;
    border-radius: 12px;
    background: #141519;
    min-width: 0;
}

.education-meta-item span { color: #777980; font-size: 9px; font-weight: 800; letter-spacing: 0.5px; }
.education-meta-item strong { color: #f5f5f6; font-size: 14px; font-weight: 900; overflow-wrap: anywhere; }

.education-card-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 10px;
    padding-top: 18px;
    margin-top: auto;
    border-top: 1px solid #292b30;
}

.education-card-footer span { color: #777980; font-size: 11px; font-weight: 700; }
.education-card-footer strong { color: #e51c2a; font-size: 11px; font-weight: 900; letter-spacing: 0.5px; white-space: nowrap; }


/* =========================================================
   KARTU FILOSOFI DIRI
   ========================================================= */

.education-philosophy-label {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 20px;
    color: #8b8e98;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: 0.8px;
}

.philosophy-icon { display: flex; align-items: center; color: #e51c2a; }

.education-philosophy-title {
    margin: 0 0 16px;
    color: #f5f5f6;
    font-size: 19px;
    font-weight: 900;
    line-height: 1.35;
}

.education-quote {
    margin: 0 0 22px;
    padding-left: 16px;
    border-left: 2px solid #e51c2a;
    color: #c8c9cd;
    font-size: 14px;
    font-style: italic;
    line-height: 1.7;
}

.education-interests-title {
    margin-bottom: 12px;
    color: #777980;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: 0.8px;
}

.education-interests-list {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 22px;
}

.interest-pill {
    display: inline-flex;
    align-items: center;
    min-height: 32px;
    padding: 0 13px;
    border: 1px solid #292b30;
    border-radius: 999px;
    background: #141519;
    color: #eeeeef;
    font-size: 12px;
    font-weight: 700;
}

.education-motto {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 10px;
    padding: 14px 16px;
    margin-top: auto;
    border: 1px dashed #3b3d43;
    border-radius: 12px;
    background: #121317;
}

.education-motto span { color: #9699a3; font-size: 12px; }
.education-motto strong { color: #f5f5f6; font-size: 12px; font-weight: 900; letter-spacing: 0.3px; }


/* =========================================================
   RESPONSIVE
   ========================================================= */

@media (max-width: 1050px) {
    .education-grid { grid-template-columns: 1fr; }
}

@media (max-width: 700px) {
    .education-content { width: calc(100% - 28px); }
    .education-card { padding: 22px 18px; border-radius: 20px; }
    .education-meta-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 420px) {
    .education-meta-grid { grid-template-columns: 1fr; }
}

/* =========================================================
   KONTAK SECTION
   ========================================================= */

.contact-section { width: 100%; padding: 2px 0 100px; }
.contact-content { width: min(1400px, calc(100% - 48px)); margin: 0 auto; box-sizing: border-box; }

.contact-header { max-width: 900px; margin-bottom: 32px; }

.contact-label {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 10px;
    color: #e51c2a;
    font-size: 13px;
    font-weight: 800;
    letter-spacing: 1px;
}

.contact-title {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 0 0 12px;
    color: #f5f5f6;
    font-size: clamp(28px, 3vw, 44px);
    font-weight: 900;
    letter-spacing: -1.5px;
    line-height: 1;
}

.contact-title-dot {
    width: 9px;
    height: 9px;
    flex-shrink: 0;
    border-radius: 50%;
    background: #e51c2a;
    animation: statusPulse 2s ease-in-out infinite;
}

.contact-subtitle { margin: 0; color: #9699a3; font-size: 15px; line-height: 1.6; }


/* =========================================================
   GRID: KARTU KONTAK + FORM
   ========================================================= */

.contact-grid {
    display: grid;
    grid-template-columns: 1.35fr 1fr;
    gap: 20px;
    align-items: start;
}

.contact-cards {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}


/* =========================================================
   KARTU KONTAK INDIVIDUAL
   ========================================================= */

.contact-card {
    display: flex;
    flex-direction: column;
    gap: 14px;
    background: #101114;
    border: 1px solid #292b30;
    border-radius: 20px;
    padding: 20px;
    box-sizing: border-box;
}

.contact-card-icon {
    width: 42px;
    height: 42px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 12px;
    flex-shrink: 0;
}

.icon-red { background: rgba(229, 28, 42, 0.12); color: #e51c2a; }
.icon-green { background: rgba(0, 217, 149, 0.12); color: #00d995; }
.icon-white { background: #202126; color: #f5f5f6; border: 1px solid #3a3c41; }
.icon-blue { background: rgba(10, 102, 194, 0.15); color: #4d9fe8; }
.icon-pink { background: rgba(225, 48, 108, 0.14); color: #e1306c; }
.icon-youtube { background: rgba(255, 0, 0, 0.12); color: #ff4141; }

.contact-card-body { display: flex; flex-direction: column; gap: 4px; flex: 1 1 auto; min-width: 0; }

.contact-card-label { color: #777980; font-size: 10px; font-weight: 800; letter-spacing: 0.6px; }
.contact-card-value { color: #f5f5f6; font-size: 14px; font-weight: 900; overflow-wrap: anywhere; }
.contact-card-note { color: #9699a3; font-size: 11px; }

.contact-card-link {
    color: #00d995;
    font-size: 12px;
    font-weight: 800;
    text-decoration: none;
    width: fit-content;
}

.contact-card-link:hover { text-decoration: underline; }

.contact-copy-btn,
.contact-open-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    align-self: flex-start;
    min-height: 32px;
    padding: 0 14px;
    border-radius: 999px;
    border: 1px solid #3a3c42;
    background: #18191c;
    color: #f5f5f5;
    font-family: inherit;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: 0.3px;
    text-decoration: none;
    cursor: pointer;
    transition: background 0.2s ease, transform 0.2s ease;
}

.contact-copy-btn:hover,
.contact-open-btn:hover { background: #222327; transform: translateY(-1px); }


/* =========================================================
   FORM PESAN — TERMINAL STYLE
   ========================================================= */

.contact-form-card {
    background: #101114;
    border: 1px solid #292b30;
    border-radius: 24px;
    padding: 28px;
    box-sizing: border-box;
}

.contact-form-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.contact-form-title {
    display: flex;
    align-items: center;
    gap: 8px;
    color: #f5f5f6;
    font-size: 14px;
    font-weight: 900;
    letter-spacing: 0.4px;
}

.contact-form-arrow { color: #e51c2a; }

.contact-form-status {
    color: #00d995;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: 0.5px;
}

.contact-form-divider {
    width: 100%;
    height: 1px;
    background: #292b30;
    margin: 18px 0 22px;
}

.contact-form { display: flex; flex-direction: column; gap: 18px; }

.contact-form-row {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}

.contact-form-field { display: flex; flex-direction: column; gap: 8px; }

.contact-form-field label {
    color: #92949d;
    font-size: 10px;
    font-weight: 800;
    letter-spacing: 0.6px;
}

.contact-form-field input,
.contact-form-field textarea {
    width: 100%;
    padding: 12px 14px;
    border: 1px solid #292b30;
    border-radius: 12px;
    background: #141519;
    color: #f5f5f6;
    font-family: inherit;
    font-size: 13px;
    resize: vertical;
    box-sizing: border-box;
}

.contact-form-field input::placeholder,
.contact-form-field textarea::placeholder { color: #56585e; }

.contact-form-field input:focus,
.contact-form-field textarea:focus {
    outline: none;
    border-color: #e51c2a;
}

.contact-form-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 14px;
}

.contact-form-footer span { color: #65676f; font-size: 11px; }

.contact-submit-btn {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    min-height: 44px;
    padding: 0 20px;
    border: none;
    border-radius: 999px;
    background: #e51c2a;
    color: #ffffff;
    font-family: inherit;
    font-size: 12px;
    font-weight: 900;
    letter-spacing: 0.4px;
    cursor: pointer;
    transition: background 0.25s ease, transform 0.25s ease;
}

.contact-submit-btn:hover { background: #ff2635; transform: translateY(-2px); }


/* =========================================================
   RESPONSIVE: KONTAK
   ========================================================= */

@media (max-width: 1050px) {
    .contact-grid { grid-template-columns: 1fr; }
}

@media (max-width: 700px) {
    .contact-content { width: calc(100% - 28px); }
    .contact-cards { grid-template-columns: 1fr; }
    .contact-form-row { grid-template-columns: 1fr; }
    .contact-form-footer { flex-direction: column; align-items: stretch; }
    .contact-submit-btn { justify-content: center; }
}


/* =========================================================
   FOOTER
   ========================================================= */

.site-footer {
    width: 100%;
    padding: 40px 0 30px;
    border-top: 3px solid #1c1d20;
    background-color: #0b0c0e;
}

.footer-content { width: min(1400px, calc(100% - 48px)); margin: 0 auto; box-sizing: border-box; }

.footer-top {
    display: grid;
    grid-template-columns: 1.3fr 1fr auto;
    gap: 40px;
    padding-bottom: 28px;
}

.footer-brand-header { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }

.footer-brand-image {
    width: 44px;
    height: 44px;
    flex-shrink: 0;
    border-radius: 50%;
    overflow: hidden;
    border: 1px solid #3a3c41;
}

.footer-brand-image img { width: 100%; height: 100%; object-fit: cover; display: block; }

.footer-brand-name {
    display: flex;
    align-items: center;
    gap: 6px;
    color: #f5f5f6;
    font-size: 15px;
    font-weight: 900;
    letter-spacing: 0.5px;
}

.footer-brand-dot { width: 6px; height: 6px; border-radius: 50%; background: #e51c2a; }

.footer-brand-subtitle { display: block; margin-top: 2px; color: #e51c2a; font-size: 11px; font-weight: 800; letter-spacing: 0.5px; }

.footer-brand-desc { margin: 0 0 16px; max-width: 480px; color: #9699a3; font-size: 13px; line-height: 1.65; }

.footer-brand-meta {
    display: flex;
    align-items: center;
    gap: 6px;
    color: #8b8e98;
    font-size: 12px;
}

.footer-brand-meta strong { color: #e51c2a; font-weight: 900; }

.footer-meta-dot { width: 6px; height: 6px; border-radius: 50%; background: #e51c2a; }

.footer-links-title {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 16px;
    color: #e51c2a;
    font-size: 12px;
    font-weight: 900;
    letter-spacing: 0.6px;
}

.footer-link {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 12px;
    color: #4d9fe8;
    font-size: 13px;
    font-weight: 700;
    text-decoration: none;
}

.footer-link:hover { text-decoration: underline; }
.footer-link span { color: #65676f; font-weight: 600; }

.footer-link-strong { color: #f5f5f6; font-weight: 900; }

.footer-side {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    justify-content: space-between;
    gap: 30px;
}

.footer-top-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 42px;
    padding: 0 18px;
    border: 1px solid #3a3c42;
    border-radius: 999px;
    background: #18191c;
    color: #f5f5f6;
    font-family: inherit;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 0.4px;
    cursor: pointer;
    white-space: nowrap;
    transition: background 0.2s ease, transform 0.2s ease;
}

.footer-top-btn:hover { background: #222327; transform: translateY(-2px); }

.footer-side-note {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 3px;
    text-align: right;
}

.footer-side-note span:first-child { color: #8b8e98; font-size: 11px; }
.footer-side-note span:last-child { color: #e51c2a; font-size: 11px; font-weight: 800; }

.footer-bottom {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 10px;
    padding-top: 22px;
    border-top: 1px solid #1c1d20;
    color: #65676f;
    font-size: 12px;
}

.footer-bottom-dot {
    display: inline-block;
    width: 6px;
    height: 6px;
    margin-left: 4px;
    border-radius: 50%;
    background: #e51c2a;
}


/* =========================================================
   RESPONSIVE: FOOTER
   ========================================================= */

@media (max-width: 1050px) {
    .footer-top { grid-template-columns: 1fr; }
    .footer-side { align-items: flex-start; flex-direction: row; justify-content: space-between; width: 100%; }
    .footer-side-note { align-items: flex-end; }
}

@media (max-width: 700px) {
    .footer-content { width: calc(100% - 28px); }
    .footer-bottom { flex-direction: column; align-items: flex-start; }
}

@media (max-width: 500px) {
    .footer-side { flex-direction: column; align-items: stretch; gap: 16px; }
    .footer-side-note { align-items: flex-start; text-align: left; }
}

/* =========================================================
   WHITE MODE (MONOCHROME LIGHT THEME)
   ========================================================= */

html.light-mode {
    filter: invert(1) hue-rotate(180deg);
    background: #ffffff;
}

/* Kembalikan warna asli untuk foto (bukan ikon) supaya
   tidak jadi negatif-film */

html.light-mode img,
html.light-mode video,
html.light-mode iframe {
    filter: invert(1) hue-rotate(180deg);
}

/* =========================================================
   THEME TRANSITION (CIRCLE WAVE DARI TITIK KLIK)
   ========================================================= */

::view-transition-old(root) {
    /* Layer lama TETAP diam (tidak fade global) supaya wave tetap terkontain di lingkaran klik */
    animation: none;
}

::view-transition-new(root) {
    animation: theme-wave-reveal 1.1s cubic-bezier(0.45, 0, 0.2, 1) forwards;
}

@keyframes theme-wave-reveal {
    0% {
        clip-path: circle(0% at var(--theme-x, 50%) var(--theme-y, 50%));
        filter: brightness(0.55);
    }
    60% {
        filter: brightness(0.8);
    }
    100% {
        clip-path: circle(150% at var(--theme-x, 50%) var(--theme-y, 50%));
        filter: brightness(1);
    }
}

/* Fallback untuk browser tanpa View Transition API */
html:not(.vt-supported) {
    transition: filter 0.9s ease-in-out;
}

/* =========================================================
   CONTACT SIDE WRAPPER
   ========================================================= */

.contact-side {
    display: flex;
    flex-direction: column;
    gap: 20px;
}


/* =========================================================
   DOT MATRIX BABY YODA WIDGET
   ========================================================= */

.dotmatrix-widget {
    background: #101114;
    border: 1px solid #292b30;
    border-radius: 24px;
    padding: 24px;
    box-sizing: border-box;
}

.dotmatrix-canvas {
    position: relative;
    width: 100%;
    height: 220px;
    margin: 18px 0 14px;

    background-image: radial-gradient(circle, #dcdde0 2.2px, transparent 2.2px);
    background-size: 9px 9px;

    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-size: contain;
    mask-size: contain;

    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 220'%3E%3Cpath d='M40 8 L74 74 L18 58 Z' fill='white'/%3E%3Cpath d='M160 8 L126 74 L182 58 Z' fill='white'/%3E%3Cellipse cx='100' cy='98' rx='58' ry='52' fill='white'/%3E%3Ccircle cx='78' cy='98' r='10' fill='black'/%3E%3Ccircle cx='122' cy='98' r='10' fill='black'/%3E%3Cpath d='M42 148 Q100 124 158 148 L180 214 L20 214 Z' fill='white'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 220'%3E%3Cpath d='M40 8 L74 74 L18 58 Z' fill='white'/%3E%3Cpath d='M160 8 L126 74 L182 58 Z' fill='white'/%3E%3Cellipse cx='100' cy='98' rx='58' ry='52' fill='white'/%3E%3Ccircle cx='78' cy='98' r='10' fill='black'/%3E%3Ccircle cx='122' cy='98' r='10' fill='black'/%3E%3Cpath d='M42 148 Q100 124 158 148 L180 214 L20 214 Z' fill='white'/%3E%3C/svg%3E");
}

.dotmatrix-footer {
    text-align: center;
    color: #cfd0d5;
    font-size: 9px;
    font-weight: 800;
    letter-spacing: 0.3px;
}

@media (max-width: 700px) {
    .dotmatrix-canvas {
        height: 180px;
    }
}

/* =========================================================
   PROJECT PREVIEW — VIDEO FRAME
   ========================================================= */

.project-preview-frame.frame-video {
    aspect-ratio: 16 / 9;
    max-height: 460px;
}

.project-preview-media {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: contain;
    background: #000;
    border: none;
}

.preview-youtube-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-top: 10px;
    color: #ff4141;
    font-size: 12px;
    font-weight: 800;
    text-decoration: none;
}

.preview-youtube-link:hover {
    text-decoration: underline;
}