:root {
  --pred-bg: #030303;
  --pred-bg-2: #080808;
  --pred-panel: #101010;
  --pred-panel-2: #181818;
  --pred-panel-3: #242424;

  --pred-red: #e60000;
  --pred-red-2: #ff1717;
  --pred-red-3: #c90000;
  --pred-red-dark: #820000;

  --pred-white: #ffffff;
  --pred-text: #ffffff;
  --pred-muted: #d9d9d9;
  --pred-silver: #bfbfbf;
  --pred-silver-2: #ededed;

  --pred-line: rgba(255, 255, 255, 0.55);
  --pred-line-soft: rgba(255, 255, 255, 0.22);
  --pred-line-red: rgba(255, 23, 23, 0.82);

  --pred-border: rgba(255, 255, 255, 0.28);
  --pred-border-soft: rgba(255, 255, 255, 0.13);
  --pred-border-red: rgba(255, 23, 23, 0.78);

  --pred-shadow-red: 0 0 18px rgba(230, 0, 0, 0.34);
  --pred-shadow-soft: 0 12px 26px rgba(0, 0, 0, 0.56);

  --pred-radius: 8px;
  --pred-radius-sm: 5px;
  --pred-page-max: 1280px;

--pred-card-min: 185px;
  --pred-card-max: 225px;
  --pred-market-h: 58px;
  --pred-number-h: 88px;
  --pred-title-row-h: 58px;
  --pred-row-h: 30px;
  --pred-row-long-h: 44px;
  --pred-cta-h: 26px;
}

* {
  box-sizing: border-box;
}

html {
  min-height: 100%;
  background: var(--pred-bg);
}

body {
  margin: 0;
  min-height: 100vh;
  font-family: Arial, Helvetica, sans-serif;
  color: var(--pred-text);
  background:
    radial-gradient(circle at 13% 0%, rgba(230, 0, 0, 0.22), transparent 25%),
    radial-gradient(circle at 86% 9%, rgba(255, 255, 255, 0.075), transparent 24%),
    repeating-linear-gradient(125deg, rgba(255, 255, 255, 0.028) 0 1px, transparent 1px 52px),
    linear-gradient(180deg, #010101 0%, #090909 55%, #000 100%);
}

body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background:
    linear-gradient(112deg, transparent 0 24%, rgba(230, 0, 0, 0.11) 25%, transparent 30%),
    linear-gradient(118deg, transparent 0 66%, rgba(255, 255, 255, 0.07) 67%, transparent 72%);
  opacity: 0.8;
}

button,
a {
  font: inherit;
  -webkit-tap-highlight-color: transparent;
}

.prediksi-page {
  width: min(100%, var(--pred-page-max));
  margin: 0 auto;
  padding: 12px 12px 28px;
}

.prediksi-topbar {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  gap: 12px;
  margin-bottom: 16px;
  text-align: center;
}

.prediksi-topbar--center {
  justify-content: center;
}

.date-box {
  justify-self: center;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 42px;
  padding: 5px 12px;
  color: var(--pred-white);
  font-size: clamp(17px, 1.7vw, 24px);
  line-height: 1.08;
  font-weight: 900;
  text-align: center;
  text-shadow: 2px 2px 0 #000, 0 0 13px rgba(230, 0, 0, 0.46);
}

.action-bar {
  justify-self: end;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 7px;
}

.btn {
  min-height: 34px;
  padding: 0 11px;
  border-radius: var(--pred-radius-sm);
  border: 1px solid var(--pred-border);
  color: var(--pred-white);
  font-size: 14px;
  font-weight: 900;
  cursor: pointer;
  text-shadow: 2px 2px 0 #000;
  box-shadow: 0 4px 0 rgba(0, 0, 0, 0.45), inset 0 1px 0 rgba(255, 255, 255, 0.24);
  transition: transform 0.16s ease, filter 0.16s ease, box-shadow 0.16s ease;
}

.btn:hover {
  transform: translateY(-1px);
  filter: brightness(1.08);
}

.btn:active {
  transform: translateY(1px);
  box-shadow: 0 2px 0 rgba(0, 0, 0, 0.45), inset 0 1px 0 rgba(255, 255, 255, 0.18);
}

.btn-red {
  border-color: var(--pred-border-red);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.48), transparent 36%),
    linear-gradient(180deg, var(--pred-red-2), var(--pred-red) 54%, var(--pred-red-dark));
}

.btn-dark {
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.16), transparent 42%),
    linear-gradient(180deg, #343434, #101010);
}

.copy-status {
  min-height: 24px;
  color: var(--pred-silver-2);
  font-size: 13px;
  font-weight: 900;
  text-shadow: 2px 2px 0 #000;
  white-space: nowrap;
}

.copy-status:empty {
  display: none;
}

.prediksi-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(var(--pred-card-min), var(--pred-card-max)));
  justify-content: center;
  gap: 12px;
  align-items: stretch;
}

.prediksi-card {
  width: 100%;
  height: 100%;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  border: 1px solid var(--pred-line-soft);
  border-radius: var(--pred-radius);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.08), transparent 34%),
    linear-gradient(180deg, #191919, #080808);
  box-shadow: var(--pred-shadow-soft), 0 0 16px rgba(230, 0, 0, 0.13);
}

.card-market {
  height: var(--pred-market-h);
  min-height: var(--pred-market-h);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 5px 8px;
  border-bottom: 2px solid #020202;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.34), transparent 42%),
    linear-gradient(180deg, var(--pred-red-2), var(--pred-red) 56%, var(--pred-red-dark));
}

.card-market h2 {
  width: 100%;
  max-height: calc(var(--pred-market-h) - 8px);
  margin: 0;
  color: var(--pred-white);
  font-size: clamp(16px, 1.5vw, 25px);
  line-height: 0.98;
  font-weight: 900;
  letter-spacing: 0.005em;
  text-align: center;
  text-transform: uppercase;
  white-space: normal;
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  word-break: normal;
  overflow-wrap: anywhere;
  text-shadow:
    3px 3px 0 #000,
    0 0 10px rgba(255, 255, 255, 0.32);
}

.card-number {
  height: var(--pred-number-h);
  min-height: var(--pred-number-h);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 9px 8px;
  border-bottom: 2px solid #020202;
  color: var(--pred-white);
  background:
    radial-gradient(circle at center, rgba(255, 255, 255, 0.08), transparent 58%),
    linear-gradient(180deg, #242424, #090909);
  font-size: clamp(30px, 3vw, 40px);
  line-height: 1;
  font-weight: 900;
  letter-spacing: 0.04em;
  white-space: nowrap;
  text-shadow:
    3px 3px 0 #000,
    0 0 15px rgba(230, 0, 0, 0.32);
}

.card-table {
  /* Grid table tetap sama tinggi di semua card meskipun isi berbeda panjang */
  display: grid;
  grid-template-rows:
    var(--pred-title-row-h)
    repeat(4, var(--pred-row-h))
    var(--pred-row-long-h)
    var(--pred-row-long-h)
    var(--pred-row-long-h);
  margin: 6px 6px 0;
  border: 1px solid var(--pred-line-red);
  background: #090909;
  flex: 0 0 auto;
}

.table-title,
.table-row {
  min-width: 0;
  height: 100%;
  overflow: hidden;
}

.table-title {
  display: grid;
  grid-template-columns: 1fr;
  border-bottom: 1px solid var(--pred-line-red);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.13), transparent 45%),
    linear-gradient(180deg, #2b2b2b, #0e0e0e);
}

.table-title-cell {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  align-self: center;
  justify-self: center;
  width: 100%;
  max-height: 100%;
  padding: 4px 8px;
  color: var(--pred-white);
  font-size: clamp(11px, 0.88vw, 13.2px);
  line-height: 1.05;
  font-weight: 900;
  text-align: center;
  overflow: hidden;
  word-break: normal;
  overflow-wrap: anywhere;
  text-shadow: 2px 2px 0 #000, 0 0 10px rgba(230, 0, 0, 0.38);
}

.table-row {
  display: grid;
  /* Kolom label dibuat lebih lega agar teks seperti "Colok Bebas" tidak terpotong */
  grid-template-columns: 45% 55%;
  border-bottom: 1px solid var(--pred-line-red);
}

.table-row:last-child {
  border-bottom: 0;
}

.table-label,
.table-value {
  min-width: 0;
  height: 100%;
  max-height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2px 4px;
  color: var(--pred-white);
  background: linear-gradient(180deg, #202020, #0d0d0d);
  font-size: clamp(10.5px, 0.86vw, 13.5px);
  line-height: 1.08;
  font-weight: 900;
  text-align: center;
  text-shadow: 2px 2px 0 #000;
  overflow: hidden;
}

.table-label {
  border-right: 1px solid var(--pred-line-red);
  white-space: nowrap;
  letter-spacing: -0.015em;
}

/* Khusus label panjang agar tetap terbaca penuh di semua ukuran card */
.card-table > .table-row:nth-child(6) .table-label {
  padding-left: 3px;
  padding-right: 3px;
  font-size: clamp(9.8px, 0.78vw, 12.2px);
  letter-spacing: -0.045em;
}

.table-value {
  word-break: normal;
  overflow-wrap: anywhere;
}

/* Baris panjang: Colok Bebas, 2D Jitu, Anjuran 4D dibuat sama tinggi di semua card */
.card-table > .table-row:nth-child(6) .table-value,
.card-table > .table-row:nth-child(7) .table-value,
.card-table > .table-row:nth-child(8) .table-value {
  align-items: center;
  white-space: normal;
  font-size: clamp(10.5px, 0.86vw, 13px);
  line-height: 1.05;
}

.card-cta {
  height: var(--pred-cta-h);
  min-height: var(--pred-cta-h);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-top: 0;
  padding: 3px 8px 5px;
  color: var(--pred-white);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.46), transparent 38%),
    linear-gradient(180deg, var(--pred-red-2), var(--pred-red) 58%, var(--pred-red-dark));
  font-size: clamp(12px, 1.05vw, 15px);
  line-height: 1.05;
  font-weight: 900;
  text-align: center;
  text-decoration: none;
  text-shadow: 2px 2px 0 #000, 0 0 9px rgba(255, 255, 255, 0.28);
}

.card-cta:hover {
  filter: brightness(1.08);
}

@media (max-width: 1180px) {
  :root {
    --pred-card-min: 185px;
    --pred-card-max: 225px;
  }

  .prediksi-grid {
    grid-template-columns: repeat(4, minmax(var(--pred-card-min), var(--pred-card-max)));
  }
}

@media (max-width: 980px) {
  .prediksi-topbar {
    justify-content: center;
    text-align: center;
    gap: 8px;
  }

  .date-box {
    justify-self: center;
  }

  .prediksi-grid {
    grid-template-columns: repeat(3, minmax(var(--pred-card-min), var(--pred-card-max)));
  }
}

@media (max-width: 720px) {
  :root {
    --pred-market-h: 50px;
    --pred-number-h: 62px;
    --pred-title-row-h: 52px;
    --pred-row-h: 28px;
    --pred-row-long-h: 41px;
    --pred-cta-h: 25px;
  }

  .prediksi-page {
    padding: 10px 9px 24px;
  }

  .prediksi-grid {
    grid-template-columns: repeat(2, minmax(158px, 1fr));
    gap: 10px;
  }

  .prediksi-card {
    border-radius: 7px;
  }

  .card-market {
    padding: 4px 6px;
  }

  .card-market h2 {
    font-size: clamp(15px, 4.9vw, 23px);
    line-height: 0.98;
    text-shadow: 2px 2px 0 #000, 0 0 8px rgba(255, 255, 255, 0.3);
  }

  .card-number {
    padding: 8px 6px;
    font-size: clamp(27px, 8vw, 36px);
  }

  .card-table {
    margin: 5px 5px 0;
  }

  .table-row {
    grid-template-columns: 47% 53%;
  }

  .table-label,
  .table-value {
    padding: 2px 3px;
    font-size: clamp(10px, 3.2vw, 13px);
  }

  .card-table > .table-row:nth-child(6) .table-label {
    padding-left: 2px;
    padding-right: 2px;
    font-size: clamp(8.8px, 2.55vw, 11.2px);
    letter-spacing: -0.055em;
  }

  .card-table > .table-row:nth-child(6) .table-value,
  .card-table > .table-row:nth-child(7) .table-value,
  .card-table > .table-row:nth-child(8) .table-value {
    font-size: clamp(9px, 2.85vw, 12px);
  }

  .table-title-cell {
    padding-left: 6px;
    padding-right: 6px;
    font-size: clamp(9.5px, 2.95vw, 12px);
    line-height: 1.04;
  }
}

@media (max-width: 430px) {
  :root {
    --pred-market-h: 48px;
    --pred-number-h: 56px;
    --pred-title-row-h: 50px;
    --pred-row-h: 27px;
    --pred-row-long-h: 39px;
    --pred-cta-h: 25px;
  }

  .prediksi-topbar {
    margin-bottom: 12px;
  }

  .date-box {
    padding: 3px 6px;
    font-size: 16px;
  }

  .prediksi-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
  }

  .card-market h2 {
    font-size: clamp(13px, 4.8vw, 20px);
    line-height: 0.98;
  }

  .table-row {
    grid-template-columns: 49% 51%;
  }

  .table-label,
  .table-value {
    font-size: clamp(9px, 2.95vw, 12px);
    text-shadow: 1.5px 1.5px 0 #000;
  }

  .card-table > .table-row:nth-child(6) .table-label {
    padding-left: 1px;
    padding-right: 1px;
    font-size: clamp(8px, 2.45vw, 10.5px);
    letter-spacing: -0.065em;
  }

  .card-table > .table-row:nth-child(6) .table-value,
  .card-table > .table-row:nth-child(7) .table-value,
  .card-table > .table-row:nth-child(8) .table-value {
    font-size: clamp(8.5px, 2.75vw, 11.5px);
  }

  .table-title-cell {
    padding-left: 5px;
    padding-right: 5px;
    font-size: clamp(8.8px, 2.65vw, 11px);
    line-height: 1.04;
  }

  .card-cta {
    font-size: 12px;
  }
}

@media (max-width: 340px) {
  .prediksi-grid {
    grid-template-columns: 1fr;
  }

  .prediksi-card {
    max-width: 230px;
    margin: 0 auto;
  }
}

/* ==========================================================
 * Status market tutup
 * ========================================================== */
.prediksi-card--closed {
  border-color: rgba(255, 255, 255, 0.22);
  box-shadow: var(--pred-shadow-soft), 0 0 14px rgba(255, 255, 255, 0.08);
}

.prediksi-card--closed .card-market {
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.24), transparent 42%),
    linear-gradient(180deg, #555555, #1d1d1d 56%, #060606);
}

.prediksi-card--closed .card-number {
  padding-left: 7px;
  padding-right: 7px;
  font-size: clamp(18px, 1.65vw, 25px);
  letter-spacing: 0;
  text-transform: uppercase;
  white-space: normal;
  text-align: center;
  line-height: 1.06;
  color: var(--pred-silver-2);
  text-shadow: 2px 2px 0 #000, 0 0 14px rgba(255, 255, 255, 0.2);
}

.prediksi-card--closed .table-value {
  color: var(--pred-silver-2);
  font-size: clamp(9.6px, 0.78vw, 12.2px);
  line-height: 1.05;
  word-break: normal;
  overflow-wrap: anywhere;
}

.prediksi-card--closed .card-cta--closed {
  cursor: not-allowed;
  pointer-events: none;
  color: var(--pred-silver-2);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.2), transparent 40%),
    linear-gradient(180deg, #4b4b4b, #1c1c1c 58%, #090909);
  opacity: 0.92;
}

@media (max-width: 720px) {
  .prediksi-card--closed .card-number {
    font-size: clamp(15px, 4.8vw, 21px);
  }

  .prediksi-card--closed .table-value {
    font-size: clamp(8.4px, 2.55vw, 11px);
  }
}
