/* ============================================================
   HydroX Design System — token definitions (dipakai lintas properti khair.am / reloop.id)
   ============================================================ */
:root{
  --c-bg:         #000000;
  --c-surface:    #112320;
  --c-surface-2:  #1A332F;
  --c-border:     #243D39;
  --c-primary:    #0D4F4A;
  --c-accent:     #7EC845;
  --c-accent-dim: #4A7A28;
  --c-amber:      #F5A623;
  --c-text:       #E8F0EF;
  --c-text-muted: #8AAAA6;
  --c-text-dim:   #4A6B67;

  --f-display: 'Syne', sans-serif;
  --f-body:    'Space Grotesk', sans-serif;
  --f-mono:    'JetBrains Mono', monospace;

  --radius: 14px;
  --r-pill: 999px;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:var(--f-body);
  background:var(--c-bg);
  color:var(--c-text);
  -webkit-font-smoothing:antialiased;
}
a{color:var(--c-accent);text-decoration:none}
em{color:var(--c-accent);font-style:normal;font-weight:600}

/* ---------- Latar partikel ---------- */
#particles{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;background:var(--c-bg)}

/* ---------- Layout dua mode: hero & results ---------- */
.wrap{position:relative;z-index:1;max-width:760px;margin:0 auto;padding:0 20px;min-height:100%;
      display:flex;flex-direction:column;justify-content:center;
      transition:justify-content .3s}
body.results .wrap{justify-content:flex-start;padding-top:28px}

/* ---------- Wordmark ---------- */
.brand{display:flex;align-items:center;gap:12px;justify-content:center;margin-bottom:8px}
.brand-logo{width:40px;height:40px;object-fit:contain;flex-shrink:0;transition:width .2s,height .2s}
.brand-text{display:flex;flex-direction:column;gap:2px}
.brand h1{font-family:var(--f-display);font-size:3rem;font-weight:800;letter-spacing:-.03em;line-height:1}
.brand h1 .dot{color:var(--c-accent)}
.brand .lab{font-family:var(--f-mono);font-size:.9rem;color:var(--c-text-dim);letter-spacing:.14em;text-transform:uppercase}
.tagline{text-align:center;color:var(--c-text-muted);font-size:1.25rem;margin-bottom:34px}
body.results .brand{justify-content:flex-start;margin-bottom:14px}
body.results .brand-logo{width:28px;height:28px}
body.results .brand h1{font-size:1.25rem}
body.results .tagline{display:none}

/* ---------- Search box ---------- */
.searchbar{display:flex;gap:10px;font-size:1.18rem}
.searchbar input{
  flex:1;background:var(--c-surface);border:1px solid var(--c-border);
  border-radius:var(--r-pill);padding:15px 22px;font:inherit;font-size:1rem;
  color:var(--c-text);outline:none;caret-color:var(--c-accent);
  transition:border-color .15s, box-shadow .15s;
}
.searchbar input::placeholder{color:var(--c-text-dim)}
.searchbar input:focus{border-color:var(--c-accent);box-shadow:0 0 0 3px rgba(126,200,69,.15)}
.searchbar button{
  position:relative;overflow:visible;
  background:var(--c-amber);color:#0B1A19;border:none;border-radius:var(--r-pill);
  padding:0 26px;font:inherit;font-weight:600;cursor:pointer;
  transition:background .15s,box-shadow .15s,transform .15s;
}
.searchbar button:hover{background:#ffc14a;box-shadow:0 0 20px rgba(245,166,35,.25);transform:translateY(-1px)}

/* Badge konfirmasi "checkmark" — muncul di sudut tombol saat pertanyaan dikirim */
.ask-label{position:relative;z-index:1}
.confirm-badge{
  position:absolute;top:0;right:-4px;transform:translate(50%,-50%);
  width:30px;height:30px;border-radius:50%;overflow:hidden;
  border:1px solid transparent;
  opacity:0;pointer-events:none;
  transition:opacity .2s,border-color .2s;
}
.confirm-badge.show{opacity:1;border-color:#fff}
.confirm-dot{
  position:absolute;left:50%;top:-100%;
  border-radius:50%;
  background:rgba(0,0,0,0);
}
.confirm-badge.show .confirm-dot{
  background:var(--c-accent);
  animation:confirmCheckIn .9s forwards linear;
}
@keyframes confirmCheckIn{
  0%   {top:-1%;   height:10px;   width:24px; margin-left:-12px;}
  7%   {top:-4%;   height:12.5px; width:22px; margin-left:-11px;}
  17%  {top:-2%;   height:15px;   width:12px; margin-left:-6px;}
  25%  {top:20%;   height:15px;   width:10px; margin-left:-5px;}
  30%  {top:102%;  height:10px;   width:28px; margin-left:-14px;}
  45%  {top:50%;   height:15px;   width:6px;  margin-left:-3px; margin-top:-10px;}
  60%  {top:50%;   height:20px;   width:10px; margin-left:-5px;}
  70%  {top:50%;   height:40px;   width:40px; margin-left:-20px; margin-top:-20px;}
  80%  {top:50%;   height:32px;   width:32px; margin-left:-16px; margin-top:-16px;}
  90%  {top:50%;   height:24px;   width:24px; margin-left:-12px; margin-top:-12px;}
  100% {top:50%;   height:24px;   width:24px; margin-left:-12px; margin-top:-12px;}
}
@media (prefers-reduced-motion: reduce){
  .confirm-badge.show .confirm-dot{animation:none;background:var(--c-accent)}
}
.searchbar button:focus-visible,.searchbar input:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px}
.hint{margin-top:14px;text-align:center;font-family:var(--f-mono);font-size:.92rem;color:var(--c-text-dim)}
body.results .hint{display:none}

/* ---------- Composer: form pertanyaan ---------- */
/* mode hero: mengalir normal di tengah bersama header. mode chat: menempel di bawah viewport */
body.results .composer{
  position:fixed;left:0;right:0;bottom:0;z-index:20;
  display:flex;justify-content:center;
  background:rgba(0,0,0,.88);backdrop-filter:blur(10px);border-top:1px solid var(--c-border);
  padding:16px 20px calc(18px + env(safe-area-inset-bottom));
}
body.results .composer .searchbar{width:100%;max-width:760px}

/* ---------- Results area ---------- */
#results{display:none;margin:26px 0 60px}
body.results #results{display:block;padding-bottom:100px}
body.results footer{display:none}

.eyebrow{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.16em;
         text-transform:uppercase;color:var(--c-text-dim);margin-bottom:10px}

/* Kartu Sintesis AI — elemen khas */
.ai-card{
  background:var(--c-surface);border:1px solid var(--c-border);
  border-radius:var(--radius);padding:22px 22px 20px;margin-bottom:30px;
  position:relative;overflow:hidden;
}
.ai-card::before{
  content:'';position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--c-accent),var(--c-primary));
}
.ai-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.ai-card-head .eyebrow{margin-bottom:0}
.ai-card .eyebrow{color:var(--c-accent)}
.ai-card .answer{font-size:.97rem;line-height:1.7;color:var(--c-text)}
.ai-card .answer p{margin:0 0 12px}
.ai-card .answer p:last-child{margin-bottom:0}
.ai-card .answer h1,.ai-card .answer h2,.ai-card .answer h3{
  font-family:var(--f-display);font-weight:700;line-height:1.35;margin:18px 0 8px;color:var(--c-text)}
.ai-card .answer h1:first-child,.ai-card .answer h2:first-child,.ai-card .answer h3:first-child{margin-top:0}
.ai-card .answer h1{font-size:1.2rem}
.ai-card .answer h2{font-size:1.1rem}
.ai-card .answer h3{font-size:1.02rem}
.ai-card .answer ul,.ai-card .answer ol{margin:0 0 12px 1.25em}
.ai-card .answer li{margin-bottom:6px}
.ai-card .answer strong{color:var(--c-text);font-weight:700}
.ai-card .answer code{background:var(--c-surface-2);color:var(--c-accent);
  font-family:var(--f-mono);font-size:.85em;padding:2px 6px;border-radius:4px}
.ai-card .answer blockquote{border-left:3px solid var(--c-accent-dim);color:var(--c-text-muted);
  padding:2px 0 2px 14px;margin:0 0 12px}
.ai-card .answer hr{border:none;border-top:1px solid var(--c-border);margin:16px 0}
.ai-card .answer .table-wrap{overflow-x:auto;margin:0 0 14px;border:1px solid var(--c-border);border-radius:10px}
.ai-card .answer table{width:100%;border-collapse:collapse;font-size:.88rem}
.ai-card .answer th,.ai-card .answer td{padding:9px 12px;border-bottom:1px solid var(--c-border);text-align:left;vertical-align:top}
.ai-card .answer thead th{background:var(--c-surface-2);color:var(--c-text);font-weight:600;white-space:nowrap}
.ai-card .answer tbody tr:last-child td{border-bottom:none}
.ai-card .sources{margin-top:16px;display:flex;flex-wrap:wrap;gap:8px}

.copy-btn{
  flex-shrink:0;display:inline-flex;align-items:center;gap:5px;
  background:var(--c-surface-2);border:1px solid var(--c-border);color:var(--c-text-muted);
  font-family:var(--f-mono);font-size:.68rem;letter-spacing:.04em;
  padding:5px 12px;border-radius:var(--r-pill);cursor:pointer;
  transition:border-color .15s,color .15s,background .15s;
}
.copy-btn:hover:not(:disabled){border-color:var(--c-accent);color:var(--c-accent);background:rgba(126,200,69,.08)}
.copy-btn:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px}
.copy-btn.copied{border-color:var(--c-accent);color:var(--c-accent)}
.copy-btn:disabled{opacity:.4;cursor:default}

.chip{font-family:var(--f-mono);font-size:.7rem;color:var(--c-accent);
      background:rgba(126,200,69,.1);border:1px solid rgba(126,200,69,.25);
      border-radius:var(--r-pill);padding:4px 12px;
      max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---------- Log percakapan (chat) ---------- */
.turn{margin-bottom:34px;scroll-margin-bottom:140px}
.turn:last-child{margin-bottom:0}
.user-msg{font-size:1.02rem;font-weight:600;color:var(--c-text);line-height:1.5;margin-bottom:14px}
.user-msg .eyebrow{margin-bottom:6px}

/* Sumber dari koleksi — collapsible per giliran */
.src-details{margin-top:14px}
.src-details summary{cursor:pointer;list-style:none;font-family:var(--f-mono);
  font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--c-text-dim);user-select:none}
.src-details summary::-webkit-details-marker{display:none}
.src-details summary::before{content:'▸ ';color:var(--c-accent)}
.src-details[open] summary::before{content:'▾ '}
.src-details .hits-wrap{margin-top:8px}

/* Daftar hasil */
.hit{padding:16px 2px;border-bottom:1px solid var(--c-border)}
.hit .doc{font-weight:600;font-size:1rem;color:var(--c-text);margin-bottom:5px}
.hit .snippet{color:var(--c-text-muted);font-size:.9rem;line-height:1.6}
.hit .meta{font-family:var(--f-mono);font-size:.68rem;color:var(--c-text-dim);margin-top:7px}

.empty,.error{color:var(--c-text-muted);font-size:.92rem;padding:14px 0}
.error{color:#f0a5a5}

/* Skeleton loading */
.skel{border-radius:8px;background:linear-gradient(90deg,var(--c-surface) 25%,var(--c-surface-2) 50%,var(--c-surface) 75%);
      background-size:200% 100%;animation:shimmer 1.3s infinite;height:14px;margin:10px 0}
.skel.w60{width:60%}.skel.w85{width:85%}.skel.w40{width:40%}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
@media (prefers-reduced-motion: reduce){.skel{animation:none}}

/* ---------- Footer ---------- */
footer{position:relative;z-index:1;font-family:var(--f-mono);font-size:.68rem;color:var(--c-text-dim);
       text-align:center;padding:18px 0;display:flex;flex-direction:column;align-items:center;gap:10px}
body:not(.results) footer{position:fixed;bottom:0;left:0;right:0}
.footer-links{display:flex;flex-wrap:wrap;justify-content:center;gap:18px}
.footer-links a{color:var(--c-text-muted);font-size:.72rem;letter-spacing:.04em;transition:color .15s}
.footer-links a:hover{color:var(--c-accent)}
.footer-meta{color:var(--c-text-dim)}

@media (max-width:560px){
  .brand h1{font-size:2.3rem}
  .searchbar button{padding:0 18px}
  .footer-links{gap:12px 16px}
}
