:root{
  /* THEME VARIABLES — gampang di-custom */
  --bg-image: url('https://images.unsplash.com/photo-1529245019870-59b249281fd5?q=80&w=2000&auto=format&fit=crop');
  --bg-overlay: rgba(10, 14, 23, .55);
  --color-brand: #0ea5e9; /* sky-500 */
  --color-brand-2: #22d3ee; /* cyan-400 */
  --color-text: #e5e7eb;   /* gray-200 */
  --color-muted: #9ca3af;  /* gray-400 */
  --color-bg: #0b1220;     /* dark base */
  --card-bg: rgba(255,255,255,.06);
  --card-bd: rgba(255,255,255,.12);
  --radius: 16px;
  --shadow: 0 10px 30px rgba(0,0,0,.3);
  --container: 1200px;
}
/* === Top progress bar saat navigasi === */
.progress {
  position: fixed; top: 0; left: 0; width: 100%; height: 3px;
  z-index: 9999; pointer-events: none;
  background: transparent;
}
.progress__bar {
  height: 100%;
  transform-origin: left center;
  transform: scaleX(0);
  background: linear-gradient(90deg, var(--color-brand), var(--color-brand-2));
}
body.nav-loading .progress__bar { animation: navProgress 1.1s ease-in-out infinite; }

@keyframes navProgress {
  0%   { transform: scaleX(0);   opacity: .9; }
  50%  { transform: scaleX(.6);  opacity: 1;  }
  100% { transform: scaleX(1);   opacity: .9; }
}

/* Opsional: beri feedback ke link nav yang diklik */
.nav a.is-loading {
  position: relative;
}
.nav a.is-loading::after {
  content: ""; position: absolute; right: -6px; top: 50%; transform: translateY(-50%);
  width: 8px; height: 8px; border-radius: 50%;
  border: 2px solid var(--color-text); border-top-color: transparent;
  animation: spin .6s linear infinite;
}
@keyframes spin { to { transform: translateY(-50%) rotate(360deg); } }

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0; color:var(--color-text); background: var(--color-bg);
  font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, Helvetica, Arial, "Apple Color Emoji","Segoe UI Emoji";
  line-height:1.6;
}

/* Background global */
.bg{
  position: fixed; inset: 0; z-index:-2;
  background-image: var(--bg-image);
  background-size: cover; background-position: center;
  filter: saturate(1.1) contrast(1.05);
}
.bg::after{
  content:""; position:absolute; inset:0; z-index:-1;
  background: radial-gradient(1200px 600px at 70% -10%, rgba(255,255,255,.15), transparent 60%), linear-gradient(180deg, var(--bg-overlay), var(--color-bg) 90%);
  backdrop-filter: blur(1px);
}

/* Layout */
.container{width: min(var(--container), 92%); margin-inline:auto}

/* Top Bar / Nav */
.topbar{
  position: sticky; top:0; z-index:50; backdrop-filter: blur(8px);
  background: rgba(6,10,18,.6); border-bottom: 1px solid var(--card-bd);
}
.nav{ display:flex; align-items:center; gap:16px; padding: 14px 0; }
.brand{ display:flex; align-items:center; gap:10px; font-weight:700; letter-spacing:.3px }
.brand-logo{ width:34px; height:34px; border-radius:8px; background: linear-gradient(135deg, var(--color-brand), var(--color-brand-2)); box-shadow: var(--shadow); }
.spacer{ flex:1 }
.nav a{ color: var(--color-text); text-decoration:none; padding:8px 12px; border-radius:10px; border:1px solid transparent; }
.nav a:hover{ background: var(--card-bg); border-color: var(--card-bd); }

/* Mobile menu */
.hamb{ display:none; cursor:pointer; border:1px solid var(--card-bd); background:var(--card-bg); padding:8px 10px; border-radius:10px }
#menu{ display:flex; gap:4px; flex-wrap:wrap }
@media (max-width: 880px){
  #menu{ display:none; width:100% }
  .hamb{ display:inline-flex }
  .nav{ flex-wrap:wrap }
  .nav a{ display:block; width:100% }
}

/* Hero */
.hero{ padding: 72px 0 56px }
.hero-inner{ display:grid; grid-template-columns: 1.2fr .8fr; gap:28px; align-items:center }
.hero h1{ font-size: clamp(28px, 5vw, 48px); line-height:1.15; margin:0 0 10px }
.lead{ color: var(--color-muted); font-size: clamp(15px,2vw,18px); margin-bottom: 22px }
.cta{ display:flex; gap:12px; flex-wrap:wrap }
.btn{ padding:12px 16px; border-radius:12px; border:1px solid transparent; cursor:pointer; font-weight:600; text-decoration:none; display:inline-flex; align-items:center; gap:8px }
.btn-primary{ background: linear-gradient(135deg, var(--color-brand), var(--color-brand-2)); color:#041018 }
.btn-ghost{ background: var(--card-bg); color:var(--color-text); border-color: var(--card-bd) }
.hero-card{ background: var(--card-bg); border:1px solid var(--card-bd); border-radius: var(--radius); padding:20px; box-shadow: var(--shadow) }
.hero-card img{ width:100%; height:auto; border-radius:12px; display:block }

@media (max-width: 880px){ .hero-inner{ grid-template-columns:1fr } }

/* Sections */
section{ padding: 56px 0 }
.section-title{ font-size: clamp(22px, 3.6vw, 32px); margin:0 0 18px }
.muted{ color: var(--color-muted) }

/* Team */
.team{ display:grid; grid-template-columns: repeat(3,1fr); gap:16px }
.card{ background: var(--card-bg); border:1px solid var(--card-bd); border-radius: var(--radius); padding:18px; box-shadow: var(--shadow) }
.card .avatar{ width:72px; height:72px; border-radius:50%; object-fit:cover; display:block; margin-bottom:12px }
.card h3{ margin:0 0 4px; font-size:18px }
.role{ color: var(--color-muted); font-size:14px; margin-bottom:10px }
.chips{ display:flex; flex-wrap:wrap; gap:8px; margin-top:8px }
.chip{ padding:6px 10px; border-radius:999px; font-size:12px; background: rgba(255,255,255,.08); border:1px solid var(--card-bd) }

@media (max-width: 960px){ .team{ grid-template-columns: repeat(2,1fr) } }
@media (max-width: 620px){ .team{ grid-template-columns: 1fr } }

/* Gallery */
.gallery{ display:grid; grid-template-columns: repeat(4,1fr); gap:10px }
.gallery img{ width:100%; height:210px; object-fit:cover; border-radius:12px; cursor:pointer; border:1px solid var(--card-bd); background: #111 }
@media (max-width: 1100px){ .gallery{ grid-template-columns: repeat(3,1fr) } }
@media (max-width: 820px){ .gallery{ grid-template-columns: repeat(2,1fr) } .gallery img{ height:190px } }
@media (max-width: 520px){ .gallery{ grid-template-columns: 1fr } .gallery img{ height:210px } }

/* Lightbox */
.lightbox{ position: fixed; inset:0; display:none; align-items:center; justify-content:center; background: rgba(0,0,0,.8); z-index:60; padding:24px }
.lightbox.open{ display:flex }
.lightbox img{ max-width:96vw; max-height:86vh; border-radius:14px; box-shadow: var(--shadow) }

/* Contact */
form{ display:grid; gap:12px; max-width:720px }
.field{ display:grid; gap:6px }
.field input, .field textarea{
  width:100%; padding:12px 14px; border-radius:12px; border:1px solid var(--card-bd); background: rgba(255,255,255,.05); color:var(--color-text)
}
.field input::placeholder, .field textarea::placeholder{ color:#9aa4b1 }
.req{ color:#fb7185; font-weight:600 }
.help{ color: var(--color-muted); font-size:13px }

/* Footer */
footer{ color:#9ca3af }
/* === Top progress bar saat navigasi === */
.progress { position: fixed; top: 0; left: 0; width: 100%; height: 3px; z-index: 9999; pointer-events: none; background: transparent; }
.progress__bar { height: 100%; transform-origin: left center; transform: scaleX(0); background: linear-gradient(90deg, var(--color-brand), var(--color-brand-2)); }
body.nav-loading .progress__bar { animation: navProgress 1.1s ease-in-out infinite; }
@keyframes navProgress { 0%{transform:scaleX(0);opacity:.9}50%{transform:scaleX(.6);opacity:1}100%{transform:scaleX(1);opacity:.9} }

.nav a.is-loading{ position:relative }
.nav a.is-loading::after{ content:""; position:absolute; right:-6px; top:50%; transform:translateY(-50%); width:8px; height:8px; border-radius:50%; border:2px solid var(--color-text); border-top-color:transparent; animation: spin .6s linear infinite; }
@keyframes spin { to { transform: translateY(-50%) rotate(360deg); } }

/* === Playlist Button & Modal === */
.music-btn { position: fixed; right: 16px; bottom: 16px; z-index: 90; width: 52px; height: 52px; border-radius: 50%; border: none; cursor: pointer; color: #041018; font-size: 22px; background: linear-gradient(135deg, var(--color-brand), var(--color-brand-2)); box-shadow: var(--shadow); }
.music-btn:active { transform: translateY(1px); }

.modal { position: fixed; inset: 0; display: none; z-index: 95; align-items: center; justify-content: center; padding: 24px; background: rgba(0,0,0,.7); }
.modal.open { display: flex; }

.modal__panel { width: min(720px, 96%); border-radius: var(--radius); background: var(--card-bg); border: 1px solid var(--card-bd); backdrop-filter: blur(8px); }
.modal__head { display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; border-bottom: 1px solid var(--card-bd); }
.modal__body { padding: 14px 16px; }

.playlist { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.track { display: flex; align-items: center; gap: 12px; padding: 10px; border-radius: 12px; background: rgba(255,255,255,.04); border: 1px solid var(--card-bd); }
.track__cover { width: 44px; height: 44px; border-radius: 8px; object-fit: cover; background: #111; }
.track__meta { flex: 1; min-width: 0; }
.track__title { margin: 0; font-size: 15px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.track__artist { margin: 0; font-size: 12px; color: var(--color-muted); }
.icon-btn { background: transparent; color: var(--color-text); border: 1px solid var(--card-bd); border-radius: 10px; padding: 8px; cursor: pointer; }
.icon-btn:hover { background: var(--card-bg); }

.audio-bar { display: flex; align-items: center; gap: 12px; padding: 12px 16px; border-top: 1px solid var(--card-bd); }
.audio-bar audio { width: 100%; }
