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

/* =========================
   THEME VARIABLES
========================= */

body.light {
  --bg: #f5f5f7;
  --card: #ffffff;
  --text: #111;
  --light: #f1f1f1;
  --muted: #777;
  --shadow: rgba(0, 0, 0, 0.08);
  --desktop-frame-color: color-mix(in srgb, white 99%, black 1%);
}

body.dark {
  --bg: #121212;
  --card: #1e1e1f;
  --text: #f1f1f1;
  --muted: #aaa;
  --shadow: rgba(0, 0, 0, 0.5);
  --desktop-frame-color: color-mix(in srgb, black 99%, white 1%);
}

/* Optional global base */
body {
  background: var(--bg);
  color: var(--text);
  transition: background 0.3s ease, color 0.3s ease;
}

/* =========================
   CUSTOM BUTTON
========================= */

.btn-custom {
  background: var(--card);
  color: var(--text);
  border: 1px solid color-mix(in srgb, var(--text) 15%, transparent);
  padding: 10px 16px;
  border-radius: 10px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.25s ease;
  box-shadow: 0 2px 10px var(--shadow);
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

/* Hover */
.btn-custom:hover {
  transform: translateY(-2px);
  background: color-mix(in srgb, var(--card) 85%, var(--text) 15%);
  box-shadow: 0 6px 18px var(--shadow);
}

/* Active */
.btn-custom:active {
  transform: translateY(0);
  box-shadow: 0 2px 6px var(--shadow);
}

/* Disabled */
.btn-custom:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  transform: none;
  box-shadow: none;
}

/* =========================
   PRIMARY VARIANT
========================= */

.btn-custom.primary {
  background: var(--text);
  color: var(--bg);
  border: none;
}

.btn-custom.primary:hover {
  background: color-mix(in srgb, var(--text) 85%, var(--card) 15%);
}

/* ================= BASE ================= */
body {
  background:var(--bg);
  color:var(--text);
  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;
  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 */
  }
}

.hero-bg {
  height: 100vw;
  width: 100vw;
}

/* ≥576px (sm) */
@media (min-width: 576px) {
  .hero-bg {
    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 {
  background:rgba(0,0,0,0.15);
  border-radius:30px;
  padding:5px;
}
body.dark .tabs {
  background:rgba(255,255,255,0.15);
}

.tab {
  cursor:pointer;
  border-radius:20px;
}
.tab.active {
  background:var(--card);
  color:#c6c6c6;
  box-shadow:0 4px 10px var(--shadow);
}

/* ================= 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;
}