/* ============================================================
   style.css — Tema "Subuh / Dawn"
   Dipakai bersama oleh home.php, upload.php, view.php
   ============================================================ */
:root{
  --bg:#f5efe6;
  --card:#ffffff;
  --ink:#241d33;
  --muted:#857e92;
  --line:#ece2d4;
  --accent:#ff6b4a;      /* coral fajar */
  --accent-d:#e8502e;
  --indigo:#5b4bd6;      /* langit subuh */
  --indigo-d:#4a3cc0;
  --radius:18px;
  --shadow:0 12px 32px rgba(40,30,70,.10);
  --dawn:linear-gradient(120deg,#059669 0%,#10b981 100%);
}

*{box-sizing:border-box;}

body{
  margin:0;
  font-family:'Plus Jakarta Sans',system-ui,-apple-system,sans-serif;
  color:var(--ink);
  min-height:100vh;
  padding:16px;
  background:
    radial-gradient(1100px 480px at 100% -8%, #ffe2d2 0%, transparent 60%),
    radial-gradient(900px 480px at -10% 0%, #e5dfff 0%, transparent 55%),
    var(--bg);
}

/* ---- Layout fullwidth ---- */
.app{ width:100%; margin:0 auto; }
@media(min-width:1500px){ .app{ max-width:1440px; } }

/* ---- Hero / header ---- */
.hero{
  background:var(--dawn);
  color:#fff;
  border-radius:var(--radius);
  padding:24px 26px;
  box-shadow:var(--shadow);
  position:relative;
  overflow:hidden;
}
.hero::after{
  content:'';position:absolute;inset:0;
  background:radial-gradient(420px 220px at 88% -50%, rgba(255,255,255,.28), transparent);
  pointer-events:none;
}
.hero h1{
  font-family:'Fraunces',Georgia,serif;
  font-weight:600;margin:0;
  font-size:clamp(1.4rem,5vw,2.1rem);
  display:flex;align-items:center;gap:.6rem;
}
.hero p{ margin:.5rem 0 0; opacity:.92; font-size:.92rem; }

/* ---- Card ---- */
.card{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
  padding:22px;
  margin-top:16px;
}
.card h3{
  font-family:'Fraunces',Georgia,serif;font-weight:600;
  margin:0 0 4px;font-size:1.15rem;display:flex;align-items:center;gap:.5rem;
}

/* ---- Buttons (1 baris) ---- */
.btn-row{ display:flex; gap:10px; }
.btn-row .btn{ flex:1 1 0; }
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  border:0;cursor:pointer;text-decoration:none;text-align:center;
  padding:.72rem 1rem;border-radius:999px;font-weight:600;font-size:.92rem;
  line-height:1.2;
  transition:transform .12s ease, box-shadow .15s ease, background .2s, border-color .2s;
}
.btn-primary{ background:var(--accent); color:#fff; }
.btn-primary:hover{ background:var(--accent-d); color:#fff; transform:translateY(-2px);
  box-shadow:0 10px 20px rgba(232,80,46,.32); }
.btn-ghost{ background:#fff; color:var(--indigo); border:1px solid var(--line); }
.btn-ghost:hover{ border-color:var(--indigo); color:var(--indigo-d); transform:translateY(-2px); }
.btn:active{ transform:translateY(0); }
@media(max-width:380px){ .btn{ padding:.62rem .55rem; font-size:.8rem; gap:.35rem; } }

/* ---- Form fields ---- */
label{ font-weight:600; font-size:.9rem; margin-bottom:.4rem; display:flex; align-items:center; gap:.4rem; }
.field{
  width:100%;border:1px solid var(--line);border-radius:12px;
  padding:.72rem .9rem;font:inherit;background:#fff;color:var(--ink);
}
.field:focus{ outline:none;border-color:var(--indigo);box-shadow:0 0 0 3px rgba(91,75,214,.16); }
textarea.field{ resize:vertical; }

/* ---- Alert ---- */
.alert{ border-radius:12px;padding:.85rem 1rem;margin-bottom:14px;font-size:.92rem;
  display:flex;gap:.55rem;align-items:flex-start; }
.alert i{ margin-top:.15rem; }
.alert div{ width:100%; }
.alert-success{ background:#e7f7ef;color:#117a52;border:1px solid #bfe9d4; }
.alert-danger{ background:#fdecea;color:#c0392b;border:1px solid #f5c6c0; }
.alert a{ color:inherit;font-weight:700;word-break:break-all; }

/* ---- Galeri (3 per baris di HP) ---- */
.gallery{ display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
@media(min-width:600px){ .gallery{ grid-template-columns:repeat(4,1fr); } }
@media(min-width:900px){ .gallery{ grid-template-columns:repeat(6,1fr); } }
@media(min-width:1300px){ .gallery{ grid-template-columns:repeat(8,1fr); } }
.thumb{
  display:block;position:relative;aspect-ratio:1/1;border-radius:14px;overflow:hidden;
  border:1px solid var(--line);background:#faf6f0;
  -webkit-touch-callout:none;user-select:none;-webkit-user-select:none;
  transition:transform .12s ease, box-shadow .15s;
}
.thumb img{ width:100%;height:100%;object-fit:cover;display:block;pointer-events:none; }
.thumb:hover{ transform:translateY(-3px); box-shadow:var(--shadow); }
.thumb::after{
  content:"\f0c5";font-family:"Font Awesome 6 Free";font-weight:900;
  position:absolute;right:6px;bottom:6px;font-size:.68rem;color:#fff;
  background:rgba(36,29,51,.6);padding:4px 7px;border-radius:9px;opacity:0;transition:.2s;
}
.thumb:hover::after,.thumb:active::after{ opacity:1; }
.hint{ color:var(--muted);font-size:.84rem;margin:0 0 14px;display:flex;align-items:center;gap:.4rem; }

/* ---- File list (view) ---- */
.file-list{ list-style:none;padding:0;margin:0; }
.file-list li{ padding:13px 2px;border-bottom:1px dashed var(--line); }
.file-main{ display:flex;align-items:center;gap:.6rem; }
.file-main a{ font-weight:700;text-decoration:none;color:var(--indigo);word-break:break-all; }
.file-main a:hover{ color:var(--accent-d); }
.file-time{ margin-top:.35rem;margin-left:1.75rem;font-size:.8rem;color:var(--muted);
  display:flex;align-items:center;gap:.4rem; }
.icon{ color:var(--accent); }

/* ---- Search & count ---- */
.search{ display:flex;gap:8px;max-width:480px;margin:16px auto 18px; }
.search .field{ flex:1; }
.search .btn{ flex:0 0 auto; }
.count{ text-align:center;color:var(--muted);font-size:.9rem;margin:0 0 14px; }
.count b{ color:var(--ink); }
.empty{ text-align:center;color:var(--muted);padding:26px 0; }

/* ---- Pagination ---- */
.pagination{ display:flex;flex-wrap:wrap;gap:6px;justify-content:center;
  list-style:none;padding:0;margin:20px 0 0; }
.pagination a{
  display:inline-flex;min-width:40px;height:40px;align-items:center;justify-content:center;
  padding:0 10px;border-radius:11px;border:1px solid var(--line);background:#fff;
  color:var(--ink);text-decoration:none;font-weight:600;font-size:.9rem;transition:.15s;
}
.pagination a:hover{ border-color:var(--indigo);color:var(--indigo); }
.pagination .active a{ background:var(--accent);color:#fff;border-color:var(--accent); }
.pagination .disabled a{ opacity:.4;pointer-events:none; }

/* ---- Toast ---- */
.toast{
  position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(20px);
  background:var(--ink);color:#fff;padding:.72rem 1.15rem;border-radius:999px;
  font-size:.9rem;font-weight:600;opacity:0;pointer-events:none;transition:.25s;
  z-index:9999;display:flex;gap:.5rem;align-items:center;box-shadow:var(--shadow);
}
.toast.show{ opacity:1;transform:translateX(-50%) translateY(0); }