/* ==========================================================================
   Typhoon – Guida ai casinò | style.css
   Mobile-first: стилі за замовчуванням для мобільних, далі @media (min-width).
   Критичні стилі (змінні, header, hero) знаходяться inline у <head>.
   ========================================================================== */

/* ---------- Base ---------- */
h1, h2, h3, h4 { color: var(--text); line-height: 1.3; }
p { margin: 0 0 1em; }
a { color: var(--green); text-underline-offset: 2px; }
a:hover { color: var(--green-dark); }
ul, ol { margin: 0 0 1.25em; padding-left: 1.25em; }
li { margin-bottom: .45em; }
strong { font-weight: 700; }
:focus-visible { outline: 3px solid rgba(0, 122, 61, .45); outline-offset: 2px; border-radius: 4px; }
button { font-family: inherit; }

/* ---------- Header state ---------- */
.site-header.is-scrolled { box-shadow: 0 2px 12px rgba(26, 31, 39, .08); }

/* ---------- Listing ---------- */
.listing { padding: 6px 0 28px; }
.listing__title { margin: 10px 0 12px; font-size: 1.25rem; font-weight: 800; letter-spacing: -.01em; }

.casino-list { display: grid; gap: 12px; margin: 0; padding: 0; list-style: none; counter-reset: none; }

.casino-card {
  display: grid;
  grid-template-columns: 30px 1fr;
  grid-template-areas:
    "rank brand"
    "bonus bonus"
    "features features"
    "cta cta";
  align-items: center;
  gap: 12px 10px;
  margin: 0;
  padding: 14px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
}
.casino-card:first-child { border-color: #c9d8cf; box-shadow: 0 6px 20px rgba(0, 122, 61, .08); }

.casino-card__rank {
  grid-area: rank;
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  font-size: .9375rem;
  font-weight: 800;
  color: #fff;
  background: var(--text);
  border-radius: 50%;
}
.casino-card:first-child .casino-card__rank { background: var(--green); }

.casino-card__brand { grid-area: brand; display: flex; align-items: center; gap: 12px; min-width: 0; }
.casino-card__logo {
  display: block;
  flex-shrink: 0;
  width: 104px;
  height: auto;
  aspect-ratio: 2 / 1;
  object-fit: contain;
  background: #eef0f3;
  border-radius: var(--radius);
}
.casino-card__meta { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.casino-card__name { font-size: 1rem; font-weight: 800; line-height: 1.25; overflow-wrap: anywhere; }

.rating { display: inline-flex; align-items: center; gap: 6px; line-height: 1; }
.rating__value { font-size: .8125rem; font-weight: 700; color: var(--muted); }

.stars { position: relative; display: inline-block; font-size: .9375rem; line-height: 1; letter-spacing: 1px; color: #d5d9df; white-space: nowrap; }
.stars::before { content: "\2605\2605\2605\2605\2605"; }
.stars::after {
  content: "\2605\2605\2605\2605\2605";
  position: absolute;
  top: 0;
  left: 0;
  width: var(--w, 100%);
  overflow: hidden;
  color: #e8a317;
}
.r49 { --w: 98%; }
.r48 { --w: 96%; }
.r47 { --w: 94%; }
.r46 { --w: 92%; }
.r45 { --w: 90%; }
.r44 { --w: 88%; }
.r43 { --w: 86%; }
.r42 { --w: 84%; }
.r41 { --w: 82%; }

.casino-card__bonus {
  grid-area: bonus;
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 10px 12px;
  background: var(--bg);
  border-radius: var(--radius);
}
.casino-card__label { font-size: .75rem; font-weight: 700; color: var(--muted); }
.casino-card__bonus-text { font-size: 1rem; font-weight: 800; line-height: 1.3; }

.casino-card__features { grid-area: features; display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }
.casino-card__features li { display: flex; align-items: flex-start; gap: 8px; margin: 0; font-size: .875rem; line-height: 1.4; color: #343b46; }
.casino-card__features svg { flex-shrink: 0; width: 18px; height: 18px; margin-top: 1px; color: var(--green); }

.casino-card__cta { grid-area: cta; }
.btn-play {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 48px;
  padding: 10px 18px;
  font-size: 1rem;
  font-weight: 800;
  color: #fff;
  background: var(--green);
  border-radius: var(--radius);
  text-decoration: none;
  transition: background-color .15s;
}
.btn-play:hover, .btn-play:focus-visible { color: #fff; background: var(--green-dark); }

/* ---------- Content ---------- */
.content {
  max-width: 860px;
  margin: 0 auto 28px;
  padding: 22px 16px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  overflow-wrap: break-word;
}
.content h2 {
  margin: 2.2em 0 .6em;
  font-size: 1.375rem;
  font-weight: 800;
  letter-spacing: -.01em;
  scroll-margin-top: calc(var(--header-h) + 14px);
}
.content h2:first-child { margin-top: 0; }
.content h3 { margin: 1.7em 0 .5em; font-size: 1.125rem; font-weight: 700; }
.content h2 + h3 { margin-top: 1em; }
.content p, .content li { color: #2b313b; }
.content .lead-label { margin-bottom: .4em; font-weight: 700; color: var(--text); }

.list-plain { padding-left: 0; list-style: none; }
.list-spaced li { margin-bottom: .8em; }

.pros-cons { display: grid; gap: 4px 24px; margin: 0 0 1em; }
.pros-cons__col .list-plain { margin-bottom: .8em; }

.note-mobile {
  padding: 10px 14px;
  font-size: .9375rem;
  background: var(--bg);
  border-left: 3px solid #c3c9d1;
  border-radius: 0 var(--radius) var(--radius) 0;
}
.note-box {
  padding: 14px 16px;
  background: var(--bg);
  border-radius: var(--radius);
}
.rg-note {
  padding: 14px 16px;
  font-size: .9375rem;
  border: 1px solid var(--border);
  border-radius: var(--radius);
}

.steps { display: grid; gap: 10px; padding: 0; list-style: none; }
.steps li { margin: 0; padding: 12px 14px; border: 1px solid var(--border); border-radius: var(--radius); }
.steps strong { display: block; margin-bottom: 2px; color: var(--text); }

/* ---------- Tables (mobile: righe come schede, nessun scroll orizzontale) ---------- */
.table-wrap { margin: 18px 0 22px; max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.data-table { width: 100%; border-collapse: collapse; font-size: .9375rem; }
.data-table thead {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}
.data-table,
.data-table tbody,
.data-table tr,
.data-table td { display: block; width: 100%; }
.data-table tr {
  margin-bottom: 10px;
  overflow: hidden;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
.data-table td {
  display: grid;
  grid-template-columns: minmax(96px, 40%) 1fr;
  gap: 10px;
  padding: 8px 12px;
  text-align: left;
  border-bottom: 1px solid #eef0f3;
}
.data-table td:last-child { border-bottom: 0; }
.data-table td::before { content: attr(data-label); font-size: .8125rem; font-weight: 600; color: var(--muted); }
.data-table td:first-child { display: block; font-weight: 800; color: var(--text); background: var(--bg); }
.data-table td:first-child::before { content: none; }

/* ---------- FAQ ---------- */
.faq { display: grid; gap: 10px; }
.faq__item { padding: 14px 16px; border: 1px solid var(--border); border-radius: var(--radius); }
.faq__item h3 { margin: 0 0 .4em; font-size: 1.0625rem; }
.faq__item p { margin: 0; }

/* ---------- Footer ---------- */
.site-footer { padding: 18px 0; background: #161a21; }
.site-footer__copy { margin: 0; padding: 0 52px; font-size: .875rem; text-align: center; color: #c3c9d2; }

/* ---------- Back to top ---------- */
.to-top {
  position: fixed;
  right: 14px;
  bottom: 14px;
  z-index: 40;
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  padding: 0;
  color: #fff;
  background: var(--green);
  border: 0;
  border-radius: 50%;
  box-shadow: 0 4px 14px rgba(26, 31, 39, .2);
  cursor: pointer;
  opacity: 0;
  visibility: hidden;
  transform: translateY(8px);
  transition: opacity .2s, transform .2s, visibility .2s;
}
.to-top.is-visible { opacity: 1; visibility: visible; transform: none; }
.to-top:hover { background: var(--green-dark); }
.to-top svg { width: 20px; height: 20px; }

/* ==========================================================================
   Tablet ≥ 640px
   ========================================================================== */
@media (min-width: 640px) {
  .casino-card {
    grid-template-columns: 32px minmax(0, 1fr) minmax(0, 1fr);
    grid-template-areas:
      "rank brand bonus"
      ". features cta";
    gap: 14px 16px;
    padding: 16px 18px;
  }
  .casino-card__rank { width: 32px; height: 32px; }
  .casino-card__logo { width: 120px; }
  .casino-card__cta { align-self: end; }
  .pros-cons { grid-template-columns: 1fr 1fr; }
}

/* ==========================================================================
   Desktop ≥ 768px
   ========================================================================== */
@media (min-width: 768px) {
  .listing { padding: 28px 0 40px; }
  .listing__title { font-size: 1.625rem; margin: 0 0 16px; }

  .content { padding: 40px 48px; margin-bottom: 28px; }
  .content h2 { font-size: 1.625rem; }
  .content h3 { font-size: 1.25rem; }

  /* Tabelle: layout classico */
  .data-table { display: table; font-size: .9375rem; }
  .data-table thead {
    display: table-header-group;
    position: static;
    width: auto;
    height: auto;
    margin: 0;
    overflow: visible;
    clip: auto;
    white-space: normal;
  }
  .data-table tbody { display: table-row-group; }
  .data-table tr { display: table-row; margin: 0; border: 0; border-radius: 0; }
  .data-table th,
  .data-table td { display: table-cell; width: auto; padding: 11px 14px; text-align: left; vertical-align: top; border-bottom: 1px solid var(--border); }
  .data-table td::before { content: none; }
  .data-table td:first-child { font-weight: 700; background: transparent; }
  .data-table th { font-size: .8125rem; font-weight: 700; color: var(--muted); background: var(--bg); }
  .data-table th:first-child { border-top-left-radius: var(--radius); }
  .data-table th:last-child { border-top-right-radius: var(--radius); }
  .data-table tbody tr:hover td { background: #fafbfc; }

}

/* ==========================================================================
   Large desktop ≥ 1024px
   ========================================================================== */
@media (min-width: 1024px) {
  .casino-card {
    grid-template-columns: 40px 270px minmax(0, 1fr) minmax(0, 1.1fr) 168px;
    grid-template-areas: "rank brand bonus features cta";
    gap: 22px;
    padding: 20px 24px;
  }
  .casino-card__rank { width: 36px; height: 36px; font-size: 1rem; }
  .casino-card__logo { width: 136px; }
  .casino-card__name { font-size: 1.0625rem; }
  .casino-card__bonus { padding: 12px 14px; }
  .casino-card__bonus-text { font-size: 1.0625rem; }
  .casino-card__cta { align-self: center; }
  .casino-card:hover { border-color: #c9d0d8; }

}

@media (prefers-reduced-motion: reduce) {
  .to-top, .btn-play { transition: none; }
}
