:root{
  --ink:#0e1b16;
  --pitch:#1f7a4d;
  --pitch-dark:#155c39;
  --pitch-light:#e7f5ed;
  --paper:#f6f7f5;
  --card:#ffffff;
  --line:#e2e5e1;
  --muted:#6b7570;
  --amber:#c8821a;
  --amber-bg:#fdf1de;
  --red:#b3332b;
  --red-bg:#fbeceb;
  --gold:#a3790f;
  --gold-bg:#fdf3da;
  --radius:10px;
  --shadow:0 1px 2px rgba(14,27,22,.06), 0 8px 24px rgba(14,27,22,.06);
}

*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  font-family:'Inter',-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  background:var(--paper);
  color:var(--ink);
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{font-family:'Space Grotesk','Inter',sans-serif; margin:0;}
.hidden{display:none !important;}
button{font-family:inherit; cursor:pointer;}
input,textarea,select{font-family:inherit;}

/* ---------- LOGIN ---------- */
.login-screen{
  min-height:100vh;
  display:flex;
  align-items:center;
  justify-content:center;
  background:
    radial-gradient(circle at 20% 20%, rgba(31,122,77,.16), transparent 45%),
    radial-gradient(circle at 80% 80%, rgba(31,122,77,.12), transparent 45%),
    var(--ink);
  padding:24px;
}
.login-card{
  background:var(--card);
  border-radius:16px;
  padding:40px 36px;
  width:100%;
  max-width:360px;
  text-align:center;
  box-shadow:0 20px 60px rgba(0,0,0,.35);
}
.login-badge{
  width:48px;height:48px;border-radius:12px;
  background:var(--pitch);
  color:#fff;
  display:flex;align-items:center;justify-content:center;
  font-family:'Space Grotesk',sans-serif;
  font-weight:700;
  margin:0 auto 18px;
  letter-spacing:.5px;
}
.login-card h1{font-size:22px; margin-bottom:6px;}
.login-sub{color:var(--muted); font-size:14px; margin:0 0 22px;}
#loginForm{display:flex; flex-direction:column; gap:10px;}
#loginForm input{
  padding:12px 14px;
  border:1px solid var(--line);
  border-radius:8px;
  font-size:15px;
  outline:none;
}
#loginForm input:focus{border-color:var(--pitch); box-shadow:0 0 0 3px var(--pitch-light);}
#loginForm button{
  padding:12px 14px;
  border:none;
  border-radius:8px;
  background:var(--pitch);
  color:#fff;
  font-weight:600;
  font-size:15px;
  transition:background .15s, transform .1s;
}
#loginForm button:hover{background:var(--pitch-dark);}
#loginForm button:active{transform:scale(.98);}
.login-error{color:var(--red); font-size:13px; min-height:18px; margin:10px 0 0;}

/* ---------- TOPBAR ---------- */
.topbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:14px 24px;
  background:var(--ink);
  color:#fff;
  position:sticky; top:0; z-index:20;
  flex-wrap:wrap;
  gap:12px;
}
.brand{display:flex; align-items:center; gap:10px;}
.brand-mark{
  width:32px;height:32px;border-radius:8px;
  background:var(--pitch);
  display:flex;align-items:center;justify-content:center;
  font-family:'Space Grotesk',sans-serif;
  font-weight:700;
  font-size:13px;
}
.brand-name{font-family:'Space Grotesk',sans-serif; font-weight:600; font-size:17px;}
.brand-name em{font-style:normal; color:#9fd9b9; font-weight:400;}
.topbar-actions{display:flex; gap:8px; flex-wrap:wrap;}

.btn{
  padding:9px 16px;
  border-radius:8px;
  border:1px solid transparent;
  font-size:14px;
  font-weight:600;
  transition:background .15s, color .15s, border-color .15s, transform .1s;
  white-space:nowrap;
}
.btn:active{transform:scale(.97);}
.btn-primary{background:var(--pitch); color:#fff;}
.btn-primary:hover{background:var(--pitch-dark);}
.btn-ghost{background:transparent; color:#fff; border-color:rgba(255,255,255,.25);}
.btn-ghost:hover{background:rgba(255,255,255,.1);}
.btn-danger{background:var(--red-bg); color:var(--red); border-color:#f1c9c6;}
.btn-danger:hover{background:#f6dad8;}
.btn:disabled{opacity:.55; cursor:not-allowed; pointer-events:none;}

/* topbar ghost buttons sit on dark bg; content-area ghost buttons need light variant */
.content .btn-ghost, .modal-actions .btn-ghost{background:transparent; color:var(--ink); border-color:var(--line);}
.content .btn-ghost:hover, .modal-actions .btn-ghost:hover{background:var(--paper);}

/* ---------- TABS ---------- */
.tabs{
  display:flex;
  gap:4px;
  padding:0 24px;
  background:var(--ink);
  border-top:1px solid rgba(255,255,255,.08);
  overflow-x:auto;
}
.tab-btn{
  padding:12px 18px;
  border:none;
  background:transparent;
  color:rgba(255,255,255,.55);
  font-size:13.5px;
  font-weight:600;
  border-bottom:2px solid transparent;
  transition:color .15s, background .15s;
  white-space:nowrap;
}
.tab-btn:hover{color:#fff; background:rgba(255,255,255,.06);}
.tab-btn.active{color:#fff; border-bottom-color:var(--pitch);}
.tab-panel{display:none;}
.tab-panel.active{display:block; animation:fadeIn .18s ease;}

@keyframes fadeIn{
  from{opacity:0; transform:translateY(4px);}
  to{opacity:1; transform:translateY(0);}
}

/* ---------- CONTENT ---------- */
.content{max-width:1180px; margin:0 auto; padding:28px 24px 60px;}
.content-head{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  flex-wrap:wrap;
  gap:12px;
  margin-bottom:18px;
}
.content-head h2{font-size:21px;}
.filter-row{display:flex; align-items:center; gap:10px;}
#searchInput{
  padding:9px 12px;
  border:1px solid var(--line);
  border-radius:8px;
  font-size:14px;
  min-width:220px;
  background:var(--card);
}
.match-count{font-size:13px; color:var(--muted); white-space:nowrap;}

.hint{font-size:12.5px; color:var(--muted); margin:0 0 10px;}
.hint-block{margin-bottom:18px;}

.loading-msg,.empty-msg,.error-msg{
  padding:36px 20px;
  text-align:center;
  color:var(--muted);
  background:var(--card);
  border-radius:var(--radius);
  border:1px dashed var(--line);
}
.error-msg{color:var(--red); border-color:#f1c9c6; background:var(--red-bg);}

/* ---------- STAT CARDS ---------- */
.stat-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(200px, 1fr));
  gap:14px;
  margin-bottom:22px;
}
.stat-grid-sub{grid-template-columns:repeat(auto-fit, minmax(150px, 1fr));}

.stat-card{
  display:flex;
  align-items:center;
  gap:14px;
  padding:18px 20px;
  background:var(--card);
  border:1px solid var(--line);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
  transition:transform .15s, border-color .15s;
}
.stat-card:hover{transform:translateY(-2px); border-color:var(--pitch);}
.stat-card-sm{padding:14px 16px;}
.stat-card-sm .stat-value{font-size:18px;}

.stat-icon{font-size:21px; line-height:1;}
.stat-label{margin:0 0 4px; font-size:11px; color:var(--muted); text-transform:uppercase; letter-spacing:.05em;}
.stat-value{margin:0; font-size:23px; font-weight:700; font-family:'Space Grotesk',sans-serif; color:var(--ink);}

.stat-card-accent{border-color:#c9e6d7;}
.stat-card-accent .stat-value{color:var(--pitch-dark);}
.stat-card-success{border-color:#c9e6d7;}
.stat-card-success .stat-value{color:var(--pitch-dark);}
.stat-card-danger{border-color:#f1c9c6;}
.stat-card-danger .stat-value{color:var(--red);}
.stat-card-gold{border-color:#f0ddab;}
.stat-card-gold .stat-value{color:var(--gold);}

.accuracy-bar-wrap{margin:0 0 30px;}
.accuracy-bar{height:10px; width:100%; border-radius:6px; background:var(--red-bg); overflow:hidden;}
.accuracy-bar-fill{height:100%; width:0%; border-radius:6px; background:var(--pitch); transition:width .6s ease;}

.substats-title{
  font-size:12.5px; font-weight:700; color:var(--muted);
  text-transform:uppercase; letter-spacing:.05em; margin:0 0 12px;
}

/* ---------- TABLE ---------- */
.table-wrap{
  background:var(--card);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
  overflow:hidden;
  overflow-x:auto;
}
.match-table{width:100%; border-collapse:collapse; font-size:14px; min-width:720px;}
.match-table th{
  text-align:left;
  font-size:12px;
  text-transform:uppercase;
  letter-spacing:.04em;
  color:var(--muted);
  font-weight:600;
  padding:12px 16px;
  border-bottom:1px solid var(--line);
  background:#fafbfa;
  white-space:nowrap;
}
.match-table td{
  padding:13px 16px;
  border-bottom:1px solid var(--line);
  vertical-align:middle;
}
.match-table tbody tr:hover{background:#fafdfb;}
.match-table tbody tr:last-child td{border-bottom:none;}

.cell-date{white-space:nowrap; font-variant-numeric:tabular-nums;}
.cell-date .time{display:block; color:var(--muted); font-size:12px;}
.cell-match{font-weight:600;}
.cell-match .vs{color:var(--muted); font-weight:400; margin:0 4px;}
.cell-pred{max-width:220px; color:var(--ink);}
.cell-score{font-variant-numeric:tabular-nums; font-weight:600;}
.cell-sub{color:var(--muted); font-size:13px;}

.badge{
  display:inline-block;
  padding:3px 9px;
  border-radius:999px;
  font-size:12px;
  font-weight:600;
  white-space:nowrap;
}
.badge-scheduled{background:#eef1ee; color:#555;}
.badge-live{background:#fdeede; color:var(--amber);}
.badge-halftime{background:var(--amber-bg); color:var(--amber);}
.badge-finished{background:var(--pitch-light); color:var(--pitch-dark);}
.badge-correct{background:var(--pitch-light); color:var(--pitch-dark);}
.badge-wrong{background:var(--red-bg); color:var(--red);}
.badge-pending{background:#f1f2f0; color:var(--muted);}
.badge-free{background:var(--pitch); color:#fff;}
.badge-gold{background:var(--gold-bg); color:var(--gold);}
.badge-dim{background:#f1f2f0; color:var(--muted);}

.row-actions{display:flex; gap:6px; justify-content:flex-end;}
.icon-btn{
  border:1px solid var(--line);
  background:#fff;
  border-radius:7px;
  padding:6px 10px;
  font-size:13px;
  font-weight:600;
  color:var(--ink);
  transition:background .15s, border-color .15s;
}
.icon-btn:hover{background:var(--paper); border-color:var(--pitch);}

.token-cell{display:flex; align-items:center; gap:8px; font-family:'SFMono-Regular',Consolas,Menlo,monospace; font-size:12px; color:var(--muted);}
.copy-btn{
  border:1px solid var(--line);
  background:#fff;
  color:var(--muted);
  border-radius:6px;
  padding:3px 8px;
  font-size:11px;
  font-weight:600;
}
.copy-btn:hover{color:var(--pitch-dark); border-color:var(--pitch);}

/* ---------- FINALIZE LIST ---------- */
.finalize-list{display:flex; flex-direction:column; gap:12px;}
.finalize-card{
  display:flex;
  align-items:center;
  gap:18px;
  flex-wrap:wrap;
  padding:16px 18px;
  background:var(--card);
  border:1px solid var(--line);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
}
.finalize-card.is-correct{border-color:#9fd9b9;}
.finalize-card.is-wrong{border-color:#f1c9c6;}

.finalize-info{flex:1; min-width:200px;}
.finalize-teams{font-weight:700; font-size:14.5px; margin-bottom:3px;}
.finalize-meta{font-size:12.5px; color:var(--muted);}
.finalize-prediction{font-size:12.5px; color:var(--pitch-dark); margin-top:4px; font-weight:600;}

.finalize-score{display:flex; align-items:center; gap:6px;}
.finalize-score input{
  width:52px;
  padding:8px 6px;
  text-align:center;
  border-radius:8px;
  border:1px solid var(--line);
  font-size:14px;
  font-weight:700;
  color:var(--ink);
}
.finalize-score input:focus{outline:none; border-color:var(--pitch); box-shadow:0 0 0 3px var(--pitch-light);}

.finalize-actions{display:flex; gap:8px;}
.btn-result{
  padding:9px 14px;
  border-radius:8px;
  border:1px solid var(--line);
  background:#fff;
  color:var(--muted);
  font-size:12.5px;
  font-weight:600;
  transition:all .15s;
}
.btn-result:hover{border-color:var(--pitch);}
.btn-result.correct.active{background:var(--pitch-light); border-color:var(--pitch); color:var(--pitch-dark);}
.btn-result.wrong.active{background:var(--red-bg); border-color:var(--red); color:var(--red);}
.btn-result:disabled{opacity:.6; cursor:not-allowed;}

/* ---------- NOTIF ---------- */
.notif-card{
  max-width:560px;
  background:var(--card);
  border:1px solid var(--line);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
  padding:22px;
}
.notif-fields{display:flex; flex-direction:column; gap:16px;}
.notif-footer{display:flex; flex-direction:column; align-items:flex-end; gap:10px; margin-top:18px;}
.notif-error{color:var(--red); font-size:13px; margin:0;}

/* ---------- MODAL ---------- */
.modal-overlay{
  position:fixed; inset:0;
  background:rgba(14,27,22,.45);
  display:flex; align-items:center; justify-content:center;
  padding:24px;
  z-index:50;
}
.modal{
  background:var(--card);
  border-radius:14px;
  width:100%;
  max-width:640px;
  max-height:90vh;
  display:flex;
  flex-direction:column;
  box-shadow:0 30px 80px rgba(0,0,0,.35);
}
.modal-sm{max-width:420px;}
.modal-head{
  display:flex; align-items:center; justify-content:space-between;
  padding:18px 22px;
  border-bottom:1px solid var(--line);
}
.modal-head h3{font-size:17px;}
.modal-close{
  background:none; border:none; font-size:22px; line-height:1;
  color:var(--muted);
}
.modal-close:hover{color:var(--ink);}
.modal-body{padding:20px 22px; overflow-y:auto;}

.form-section{margin-bottom:22px;}
.form-section h4{
  font-size:12px; text-transform:uppercase; letter-spacing:.05em;
  color:var(--muted); margin-bottom:10px; font-weight:700;
}
.form-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px 14px;
}
.field{display:flex; flex-direction:column; gap:5px;}
.field-wide{grid-column:1 / -1;}
.field label{font-size:12.5px; font-weight:600; color:#3a4440;}
.field .optional, .field .required{font-weight:400;}
.field .optional{color:var(--muted);}
.field .required{color:var(--red);}
.field input, .field textarea, .field select{
  padding:9px 11px;
  border:1px solid var(--line);
  border-radius:8px;
  font-size:14px;
  outline:none;
  width:100%;
  resize:vertical;
  background:#fff;
  color:var(--ink);
}
.field input:focus, .field textarea:focus, .field select:focus{border-color:var(--pitch); box-shadow:0 0 0 3px var(--pitch-light);}
.mono{font-family:'SFMono-Regular',Consolas,Menlo,monospace; font-size:12.5px;}

.toggle-row{
  display:flex; align-items:center; gap:10px;
  margin-top:14px;
  cursor:pointer;
  font-size:14px;
  font-weight:600;
}
.toggle-row input{display:none;}
.toggle-track{
  width:38px; height:22px; border-radius:999px;
  background:#d9dcd8;
  position:relative;
  transition:background .15s;
  flex-shrink:0;
}
.toggle-thumb{
  position:absolute; top:2px; left:2px;
  width:18px; height:18px; border-radius:50%;
  background:#fff;
  transition:left .15s;
  box-shadow:0 1px 2px rgba(0,0,0,.25);
}
.toggle-row input:checked + .toggle-track{background:var(--pitch);}
.toggle-row input:checked + .toggle-track .toggle-thumb{left:18px;}

.advanced-section{
  border:1px solid var(--line);
  border-radius:10px;
  padding:12px 14px;
}
.advanced-section summary{
  cursor:pointer;
  font-size:13px;
  font-weight:600;
  color:var(--pitch-dark);
}
.advanced-section .hint{font-size:12px; color:var(--muted); margin:10px 0 12px;}
.advanced-section .field{margin-bottom:10px;}

.form-error{
  color:var(--red);
  background:var(--red-bg);
  border:1px solid #f1c9c6;
  padding:9px 12px;
  border-radius:8px;
  font-size:13px;
}

.modal-actions{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding-top:14px;
  border-top:1px solid var(--line);
  margin-top:6px;
  flex-wrap:wrap;
  gap:10px;
}
.modal-actions-right{display:flex; gap:8px; margin-left:auto;}

/* ---------- TOAST ---------- */
.toast{
  position:fixed;
  bottom:24px; left:50%;
  transform:translateX(-50%);
  background:var(--ink);
  color:#fff;
  padding:11px 20px;
  border-radius:999px;
  font-size:13.5px;
  font-weight:500;
  box-shadow:0 10px 30px rgba(0,0,0,.3);
  z-index:100;
  max-width:90vw;
  text-align:center;
}
.toast.toast-error{background:var(--red);}

@media (max-width:640px){
  .form-grid{grid-template-columns:1fr;}
  .topbar{padding:12px 14px;}
  .tabs{padding:0 14px;}
  .content{padding:20px 14px 50px;}
  .filter-row{width:100%;}
  #searchInput{flex:1; min-width:0;}
  .row-actions{flex-direction:column;}
  .finalize-card{flex-direction:column; align-items:stretch;}
  .finalize-actions{justify-content:stretch;}
  .btn-result{flex:1;}
}
