/* ── Reset & variables ── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  --green:   #1a7a4a;
  --green-d: #145c38;
  --green-l: #e8f5ee;
  --gold:    #f0b429;
  --gold-d:  #c98a00;
  --red:     #d93025;
  --red-l:   #fdecea;
  --blue:    #1a56a0;
  --gray-50: #f9fafb;
  --gray-100:#f1f3f5;
  --gray-200:#e2e8f0;
  --gray-400:#94a3b8;
  --gray-600:#475569;
  --gray-800:#1e293b;
  --white:   #ffffff;
  --radius:  8px;
  --shadow:  0 2px 12px rgba(0,0,0,.10);
  --font:    'Segoe UI', system-ui, sans-serif;
}

body { font-family: var(--font); background: var(--gray-100); color: var(--gray-800); min-height: 100vh; display: flex; flex-direction: column; }

/* ── Navbar ── */
.navbar {
  background: var(--green);
  color: var(--white);
  display: flex;
  align-items: center;
  padding: .75rem 1.5rem;
  gap: 1rem;
  position: sticky;
  top: 0;
  z-index: 100;
  box-shadow: 0 2px 8px rgba(0,0,0,.2);
}
.nav-brand {
  font-size: 1.3rem;
  font-weight: 700;
  color: var(--white);
  text-decoration: none;
  white-space: nowrap;
}
.nav-links {
  display: flex;
  align-items: center;
  gap: .25rem;
  margin-left: auto;
  flex-wrap: wrap;
}
.nav-links a {
  color: rgba(255,255,255,.9);
  text-decoration: none;
  padding: .4rem .75rem;
  border-radius: var(--radius);
  font-size: .9rem;
  transition: background .15s;
}
.nav-links a:hover { background: rgba(255,255,255,.15); }
.nav-links .admin-link { background: var(--gold); color: var(--gray-800); font-weight: 600; }
.nav-links .admin-link:hover { background: var(--gold-d); }
.btn-primary-sm {
  background: var(--white) !important;
  color: var(--green) !important;
  font-weight: 600 !important;
}
.btn-primary-sm:hover { background: var(--green-l) !important; }
.nav-toggle { display: none; background: none; border: none; color: white; font-size: 1.4rem; cursor: pointer; margin-left: auto; }

/* ── Container ── */
.container { max-width: 1100px; margin: 0 auto; padding: 1.5rem 1rem; flex: 1; }
.container.wide { max-width: 1300px; }

/* ── Flash messages ── */
.flash-messages { margin-bottom: 1rem; }
.alert { padding: .75rem 1rem; border-radius: var(--radius); margin-bottom: .5rem; font-size: .9rem; }
.alert-success { background: var(--green-l); color: var(--green-d); border-left: 4px solid var(--green); }
.alert-danger  { background: var(--red-l);   color: var(--red);     border-left: 4px solid var(--red); }
.alert-warning { background: #fff8e1;         color: #7a5800;        border-left: 4px solid var(--gold); }
.alert-info    { background: #e8f0fe;         color: var(--blue);    border-left: 4px solid var(--blue); }

/* ── Cards ── */
.card {
  background: var(--white);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 1.25rem;
  margin-bottom: 1rem;
}
.card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 1rem;
  gap: .5rem;
  flex-wrap: wrap;
}
.card-title { font-size: 1.1rem; font-weight: 700; color: var(--gray-800); }

/* ── Buttons ── */
.btn {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  padding: .45rem 1rem;
  border-radius: var(--radius);
  border: none;
  cursor: pointer;
  font-size: .875rem;
  font-weight: 600;
  text-decoration: none;
  transition: filter .15s, transform .1s;
  white-space: nowrap;
}
.btn:hover { filter: brightness(.92); }
.btn:active { transform: scale(.97); }
.btn-green  { background: var(--green);  color: var(--white); }
.btn-gold   { background: var(--gold);   color: var(--gray-800); }
.btn-red    { background: var(--red);    color: var(--white); }
.btn-gray   { background: var(--gray-200); color: var(--gray-800); }
.btn-outline { background: transparent; border: 2px solid var(--green); color: var(--green); }
.btn-sm { padding: .3rem .65rem; font-size: .8rem; }
.btn-lg { padding: .7rem 1.5rem; font-size: 1rem; }

/* ── Forms ── */
.form-group { margin-bottom: 1rem; }
.form-group label { display: block; font-size: .85rem; font-weight: 600; color: var(--gray-600); margin-bottom: .35rem; }
.form-control {
  width: 100%;
  padding: .55rem .75rem;
  border: 1.5px solid var(--gray-200);
  border-radius: var(--radius);
  font-size: .95rem;
  background: var(--white);
  color: var(--gray-800);
  transition: border-color .15s;
}
.form-control:focus { outline: none; border-color: var(--green); box-shadow: 0 0 0 3px rgba(26,122,74,.15); }
.form-row { display: flex; gap: 1rem; flex-wrap: wrap; }
.form-row .form-group { flex: 1; min-width: 140px; }
.form-hint { font-size: .78rem; color: var(--gray-400); margin-top: .2rem; }
.checkbox-group { display: flex; align-items: center; gap: .5rem; }
.checkbox-group input { width: 1rem; height: 1rem; accent-color: var(--green); }

/* ── Tables ── */
.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; font-size: .9rem; }
thead th { background: var(--gray-50); color: var(--gray-600); font-size: .78rem; text-transform: uppercase; letter-spacing: .05em; padding: .6rem .75rem; text-align: left; border-bottom: 2px solid var(--gray-200); white-space: nowrap; }
tbody td { padding: .65rem .75rem; border-bottom: 1px solid var(--gray-100); vertical-align: middle; }
tbody tr:last-child td { border-bottom: none; }
tbody tr:hover { background: var(--gray-50); }

/* ── Badges ── */
.badge { display: inline-block; padding: .2rem .55rem; border-radius: 99px; font-size: .75rem; font-weight: 700; }
.badge-green  { background: var(--green-l); color: var(--green-d); }
.badge-gold   { background: #fff3cc;         color: #7a5800; }
.badge-red    { background: var(--red-l);    color: var(--red); }
.badge-gray   { background: var(--gray-200); color: var(--gray-600); }
.badge-blue   { background: #e8f0fe;         color: var(--blue); }

/* ── Match card ── */
.match-card {
  background: var(--white);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 1.1rem 1.25rem;
  margin-bottom: .75rem;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: .75rem;
}
.match-card.finished { border-left: 4px solid var(--green); }
.match-card.closed   { border-left: 4px solid var(--gray-400); opacity: .85; }
.match-card.open     { border-left: 4px solid var(--gold); }
.team { font-weight: 700; font-size: 1rem; }
.team.home { text-align: right; }
.team.away { text-align: left; }
.score-display {
  text-align: center;
  min-width: 80px;
}
.score-display .score { font-size: 1.4rem; font-weight: 800; color: var(--green-d); }
.score-display .vs    { font-size: 1rem; color: var(--gray-400); font-weight: 600; }
.match-meta { font-size: .78rem; color: var(--gray-400); }
.match-info { font-size: .8rem; color: var(--gray-600); text-align: center; margin-top: .2rem; }

/* Bet form inside match card */
.bet-form { grid-column: 1 / -1; border-top: 1px solid var(--gray-100); margin-top: .5rem; padding-top: .75rem; }
.bet-row { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; }
.bet-score-input { display: flex; align-items: center; gap: .5rem; }
.bet-score-input input { width: 52px; text-align: center; padding: .4rem .5rem; }
.bet-score-sep { font-weight: 700; color: var(--gray-400); }
.points-pill { display: inline-flex; align-items: center; gap: .3rem; padding: .25rem .65rem; border-radius: 99px; font-size: .8rem; font-weight: 700; }
.points-3 { background: #d1fae5; color: #065f46; }
.points-1 { background: #fef3c7; color: #92400e; }
.points-0 { background: var(--red-l); color: var(--red); }

/* ── Hero / index ── */
.hero {
  text-align: center;
  padding: 3rem 1rem 2rem;
  background: linear-gradient(135deg, var(--green-d) 0%, var(--green) 60%, #2ea865 100%);
  color: var(--white);
  border-radius: var(--radius);
  margin-bottom: 1.5rem;
}
.hero h1 { font-size: 2.2rem; font-weight: 800; margin-bottom: .5rem; }
.hero p  { font-size: 1.05rem; opacity: .9; margin-bottom: 1.25rem; }
.hero-btns { display: flex; gap: .75rem; justify-content: center; flex-wrap: wrap; }

/* ── Section grid ── */
.section-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-bottom: 1.5rem; }
@media (max-width: 700px) { .section-grid { grid-template-columns: 1fr; } }
.section-title { font-size: 1rem; font-weight: 700; color: var(--gray-800); margin-bottom: .75rem; border-bottom: 2px solid var(--green); padding-bottom: .35rem; display: flex; justify-content: space-between; align-items: center; }

/* ── Leaderboard ── */
.leaderboard-table .rank { font-size: 1.1rem; font-weight: 800; text-align: center; }
.rank-1 { color: #b8860b; }
.rank-2 { color: var(--gray-600); }
.rank-3 { color: #a0522d; }
.pts-big { font-size: 1.1rem; font-weight: 800; color: var(--green-d); }

/* ── Auth forms ── */
.auth-wrapper { max-width: 420px; margin: 2.5rem auto; }
.auth-card { background: var(--white); border-radius: var(--radius); box-shadow: var(--shadow); padding: 2rem; }
.auth-title { text-align: center; font-size: 1.5rem; font-weight: 800; margin-bottom: 1.5rem; color: var(--green-d); }
.auth-footer { text-align: center; margin-top: 1rem; font-size: .88rem; color: var(--gray-600); }
.auth-footer a { color: var(--green); text-decoration: none; font-weight: 600; }

/* ── Admin ── */
.admin-nav { display: flex; gap: .5rem; flex-wrap: wrap; margin-bottom: 1.5rem; }
.stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1rem; margin-bottom: 1.5rem; }
.stat-card { background: var(--white); border-radius: var(--radius); box-shadow: var(--shadow); padding: 1.25rem; text-align: center; }
.stat-card .stat-value { font-size: 2rem; font-weight: 800; color: var(--green-d); }
.stat-card .stat-label { font-size: .8rem; color: var(--gray-400); margin-top: .2rem; text-transform: uppercase; letter-spacing: .06em; }

/* ── Page heading ── */
.page-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 1.25rem; flex-wrap: wrap; gap: .75rem; }
.page-title { font-size: 1.5rem; font-weight: 800; color: var(--gray-800); }

/* ── Filter bar ── */
.filter-bar { display: flex; gap: .5rem; flex-wrap: wrap; margin-bottom: 1rem; align-items: center; }
.filter-bar select, .filter-bar input { padding: .4rem .65rem; border: 1.5px solid var(--gray-200); border-radius: var(--radius); font-size: .85rem; background: var(--white); }

/* ── Footer ── */
.footer { text-align: center; padding: 1.25rem; font-size: .8rem; color: var(--gray-400); border-top: 1px solid var(--gray-200); background: var(--white); margin-top: auto; }

/* ── Misc ── */
.text-center { text-align: center; }
.text-muted { color: var(--gray-400); }
.mt-1 { margin-top: .5rem; }
.mt-2 { margin-top: 1rem; }
.gap-row { display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; }
.divider { height: 1px; background: var(--gray-200); margin: 1rem 0; }
.empty-state { text-align: center; padding: 2.5rem 1rem; color: var(--gray-400); }
.empty-state .icon { font-size: 2.5rem; margin-bottom: .5rem; }

/* ── Responsive ── */
@media (max-width: 640px) {
  .nav-toggle { display: block; }
  .nav-links { display: none; flex-direction: column; width: 100%; margin-top: .5rem; gap: .1rem; }
  .nav-links.open { display: flex; }
  .nav-links a { width: 100%; }
  .match-card { grid-template-columns: 1fr; }
  .team.home, .team.away { text-align: left; }
  .score-display { order: -1; }
}
@media (max-width: 480px) {
  .hero h1 { font-size: 1.6rem; }
}
