:root {
  --link-gap: 12px;
  --profile-container-desktop-width: 580px;
  --bs-border-radius: 1.5rem;
}

/* ================= BASE ================= */
body {
  font-family:-apple-system,BlinkMacSystemFont,sans-serif;
}

h2.desc {
  font-size: 1rem; /* setara h5 */
  font-weight: 600;
  line-height: 1.4;
  color: var(--text);
  margin: 0;
}

/* Topbar start */
.topbar {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  z-index: 200;
  transition: transform .35s ease, opacity .35s ease;
  will-change: transform;
}

.topbar.is-stuck {
    position: absolute;
    top: auto;
    transition: transform .35s ease, opacity .35s ease;
  will-change: transform;
  }

/* saat masih di atas (mode “tidak aktif fixed”) */
@media (min-width: 576px) {
  .topbar {
    transform: translateY(3.5rem);
  }

  .topbar.is-fixed {
    transform: translateY(0);
  }
}

.container {
  padding-left: var(--link-gap);
  padding-right: var(--link-gap);
  padding-top: var(--link-gap);
  padding-bottom: var(--link-gap);
}

@media (min-width: 576px) {
  .container {
    padding-left: calc(var(--link-gap) * 2);
    padding-right: calc(var(--link-gap) * 2);
  }
}

.max-w {
  max-width: var(--profile-container-desktop-width);
}

/* Button style */
.topbar-btn {
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,0.4);
  background: rgba(255,255,255,0.7);
  backdrop-filter: blur(6px);
  transition: all .2s ease;
}

.topbar-btn:hover {
  color:var(--primary);
  background: rgba(255,255,255,1);
}

.topbar-btn:active {
  transform: scale(0.95);
}

.rotate {
  animation: spin 3s linear infinite;
}

@keyframes spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

/* Topbar end */
/* Second start */
.bg-profileBackground {
  background-color: var(--desktop-frame-color);
}

.bg-black20 {
  background-color: rgb(0 0 0 / .2);
}

.h-screen {
  height: 100vh;
}

.w-screen {
  width: 100vw;
}

.scale-110 {
  transform: scale(1.1);
}

.opacity-30 {
  opacity: .3;
}

/* Second end */

/* Third start */
.min-h-viewport-offset {
  min-height: calc(100vh - 2.5rem);
  min-height: calc(100dvh - 2.5rem);
}

/* Third end */

/* Fourth start */
.flex-1 {
  flex: 1 1 0%;
}

.min-h-screen {
  min-height: 100vh;
  min-height: 100dvh;
}

@media (min-width: 576px) {
  .min-h-screen {
    min-height: calc(100vh - 2.5rem);
    min-height: calc(100dvh - 2.5rem);
  }
}

.hero-clip {
  webkit-clip-path: inset(0 calc(50% - min(50%, 290px)) 0 calc(50% - min(50%, 290px)) round 24px 24px 0 0);
  clip-path: inset(0 calc(50% - min(50%, 290px)) 0 calc(50% - min(50%, 290px)) round 24px 24px 0 0);
}

@media (max-width: 575.98px) {
  .hero-clip {
    -webkit-clip-path: inset(
      0 
      calc(50% - min(50%, 290px)) 
      0 
      calc(50% - min(50%, 290px)) 
      round 24px 24px 0 0
    );
    clip-path: inset(
      0 
      calc(50% - min(50%, 290px)) 
      0 
      calc(50% - min(50%, 290px)) 
      round 24px 24px 0 0
    );
  }
}

/* background layer */
.fmkeum {
  position: fixed;
  inset: 0px;
  background-position: center top;
  background-size: cover;
  background-repeat: no-repeat;
  background-color: var(--desktop-frame-color);
}

/* container query */
.profile-background-container {
  container-type: inline-size;
  container-name: profile-background-container;
}

/* layout system */
.max-w-profile-container {
  max-width: var(--profile-container-desktop-width);
}

.bg-blur {
  left: -5vw;
  top: -5vh;
  width: 110vw;
  height: 110dvh;
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
  filter: blur(50px);
}

.bg-overlay {
  background-repeat: repeat;
  opacity: 0.04;
  background-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PScwIDAgNTEyIDUxMicgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz4KICA8ZmlsdGVyIGlkPSdub2lzZUZpbHRlcic+CiAgICA8ZmVUdXJidWxlbmNlIAogICAgICB0eXBlPSdmcmFjdGFsTm9pc2UnIAogICAgICBiYXNlRnJlcXVlbmN5PScwLjcnCiAgICAgIG51bU9jdGF2ZXM9JzMnIAogICAgICBzdGl0Y2hUaWxlcz0nc3RpdGNoJy8+CiAgICA8ZmVDb2xvck1hdHJpeCBpbj0idHVyYnVsZW5jZSIgdHlwZT0ic2F0dXJhdGUiIHZhbHVlcz0iMCIvPgoKICAgIDxmZUNvbXBvbmVudFRyYW5zZmVyPgogICAgICA8ZmVGdW5jUiB0eXBlPSJkaXNjcmV0ZSIgdGFibGVWYWx1ZXM9IjAgMSIgLz4KICAgICAgPGZlRnVuY0cgdHlwZT0iZGlzY3JldGUiIHRhYmxlVmFsdWVzPSIwIDEiIC8+CiAgICAgIDxmZUZ1bmNCIHR5cGU9ImRpc2NyZXRlIiB0YWJsZVZhbHVlcz0iMCAxIiAvPgogICAgPC9mZUNvbXBvbmVudFRyYW5zZmVyPgogIDwvZmlsdGVyPgogIAogIDxyZWN0IHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnIGZpbHRlcj0ndXJsKCNub2lzZUZpbHRlciknLz4KPC9zdmc+");

   background-size: 512px 512px;
  mix-blend-mode: overlay;
}

.h-desktop-offset {
  height: calc(100vw - 80px);
}

@media (min-width: 576px) {
  .h-desktop-offset {
    height: calc(var(--profile-container-desktop-width) - 80px);
  }
}

@keyframes heroFade {
  from {
    opacity: 1;
    transform: translateY(0);
  }
  to {
    opacity: 0;
    transform: translateY(-40px);
  }
}

@supports (animation-timeline: scroll(root)) and (not (prefers-reduced-motion: reduce)) {
  .hero-fade {
    animation: heroFade ease-out forwards;
    animation-timeline: scroll(root);
    animation-range: 40px min(50vh, var(--profile-container-desktop-width));
    transform-origin: center; /* aman, tapi tidak wajib */
  }
}

.h-hero{
height: 100vw;
  width: 100vw;
  background-color: var(--desktop-frame-color);
   -webkit-mask: radial-gradient(
      110.26% 96% at 50% 0%,
      rgb(0, 0, 0) 50%,
      rgba(0, 0, 0, 0.99) 54.68%,
      rgba(0, 0, 0, 0.97) 58.79%,
      rgba(0, 0, 0, 0.94) 62.4%,
      rgba(0, 0, 0, 0.9) 65.61%,
      rgba(0, 0, 0, 0.85) 68.52%,
      rgba(0, 0, 0, 0.79) 71.2%,
      rgba(0, 0, 0, 0.72) 73.75%,
      rgba(0, 0, 0, 0.65) 76.25%,
      rgba(0, 0, 0, 0.57) 78.8%,
      rgba(0, 0, 0, 0.48) 81.48%,
      rgba(0, 0, 0, 0.39) 84.39%,
      rgba(0, 0, 0, 0.3) 87.6%,
      rgba(0, 0, 0, 0.2) 91.21%,
      rgba(0, 0, 0, 0.1) 95.32%,
      rgba(0, 0, 0, 0) 100%
   );

   mask: radial-gradient(
      110.26% 96% at 50% 0%,
      rgb(0, 0, 0) 50%,
      rgba(0, 0, 0, 0.99) 54.68%,
      rgba(0, 0, 0, 0.97) 58.79%,
      rgba(0, 0, 0, 0.94) 62.4%,
      rgba(0, 0, 0, 0.9) 65.61%,
      rgba(0, 0, 0, 0.85) 68.52%,
      rgba(0, 0, 0, 0.79) 71.2%,
      rgba(0, 0, 0, 0.72) 73.75%,
      rgba(0, 0, 0, 0.65) 76.25%,
      rgba(0, 0, 0, 0.57) 78.8%,
      rgba(0, 0, 0, 0.48) 81.48%,
      rgba(0, 0, 0, 0.39) 84.39%,
      rgba(0, 0, 0, 0.3) 87.6%,
      rgba(0, 0, 0, 0.2) 91.21%,
      rgba(0, 0, 0, 0.1) 95.32%,
      rgba(0, 0, 0, 0) 100%
   );
}


/* ≥576px (sm) */
@media (min-width: 576px) {
  .h-hero {
    background-color: var(--desktop-frame-color);
    height: var(--profile-container-desktop-width);
    width: var(--profile-container-desktop-width);
    overflow: hidden;
    border-radius: 1rem 1rem 0 0;
  }
}

.z-n2 {
  z-index: -2;
}

.max-w-80 {
  max-width: 80%;
}

.object-contain {
  object-fit: contain;
}

.max-h-56 {
  max-height: 5.6rem;
}

.mb-title {
  margin-bottom: var(--link-gap);
}

.px-description {
  padding-left: calc(var(--link-gap) * 3);
  padding-right: calc(var(--link-gap) * 3);
}

.profile-desc {
  text-wrap: balance;
  text-align: center;

  font-family: var(--font-profile-description);
  font-size: var(--fs-profile-description);
  line-height: var(--lh-profile-description);
  color: var(--color-profile-description);
}

/* Fourth end */

/* Profile content start */
.px-gap {
  padding-left: var(--link-gap);
  padding-right: var(--link-gap);
}

@media (min-width: 576px) {
  .px-gap {
    padding-left: calc(var(--link-gap) * 2);
    padding-right: calc(var(--link-gap) * 2);
  }
}

.custom-nav {
  width: 12rem;
  padding: 2px;
  border-radius: 0.75rem;
  background: rgba(255, 255, 255, 0.4);
  transition: all 0.2s ease;
}

.custom-nav:hover {
  background: rgba(255, 255, 255, 0.5);
}
/* Profile content end */

.card-ui {
  width: 100%;
  max-width: var(--profile-container-desktop-width);
}

@media(min-width:576px){
  .card-ui { border-radius:30px; margin:40px auto; }
}

/* ================= TABS ================= */
.tabs {
  position: relative;
   isolation: isolate;
  border-radius:30px;
  padding:5px;
}

.tab {
  cursor: pointer;
  border-radius: 20px;
  --bs-text-opacity: 1;
  color: rgba(var(--bs-light-rgb), var(--bs-text-opacity));
  font-weight: 700;
}

.tab.active {
  background:var(--card);
  color:#c6c6c6;
  box-shadow:0 4px 10px var(--shadow);
  font-weight: 400;
}

/* ================= BENTO ================= */
.bento {
  display:grid;
  grid-template-columns:repeat(2,1fr);
  grid-auto-rows:100px;
  gap:10px;
}

.bento-item {
  position:relative;
  overflow:hidden;
  box-shadow:0 6px 15px var(--shadow);
  cursor:pointer;
}

.bento-item .img {
  width:100%;
  height:100%;
  background-size:cover;
  background-position:center;
}

.bento-item .title {
  position:absolute;
  bottom:0;
  width:100%;
  padding:8px;
  font-size:13px;
  background:linear-gradient(to top, rgba(0,0,0,0.7), transparent);
  color:#fff;
}

.big { grid-column:span 2; grid-row:span 2; }

/* ================= SCROLL X ================= */
.scroll-x {
  overflow-x:auto;
  scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch;
}

.scroll-x > * {
  flex:0 0 auto;
  scroll-snap-align:start;
}

.scroll-x::-webkit-scrollbar { display:none; }
.scroll-x { scrollbar-width:none; }

.mini {
  min-width:160px;
  height:120px;
}

/* ================= FLOAT ================= */
.toggle {
  position:fixed;
  bottom:15px;
  right:15px;
  width:55px;
  height:55px;
  border-radius:50%;
  background:var(--card);
  color: var(--text);
  box-shadow:0 10px 25px var(--shadow);
  display:flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
}
/* ================= LIST ================= */
.list {
  margin-top:15px;
  display:flex;
  flex-direction:column;
  gap:10px;
}

.list-item {
  display:flex;
  align-items:center;
  gap:10px;
  padding:12px;
  border-radius:12px;
  background:var(--card);
  box-shadow:0 4px 12px var(--shadow);
  cursor:pointer;
}

.list-item:active {
  transform:scale(.98);
}

.list-img {
  width:40px;
  height:40px;
  border-radius:10px;
  background-size:cover;
}