/* Tippspiel v3 – Modern Dark UI 2026 */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

:root{
  --bg:      #0b0f17;
  --surf:    #141a24;
  --surf2:   #1c2433;
  --border:  #2a3344;
  --accent:  #18d68f;
  --acc2:    #f5a623;
  --acc3:    #5eb3ff;
  --purple:  #8b6ef5;
  --danger:  #f5524b;
  --green:   var(--accent);
  --red:     var(--danger);
  --text:    #eef2f8;
  --muted:   #8a93a3;
  --radius:  14px;
  --radius-sm: 10px;
  --shadow:  0 8px 28px rgba(0,0,0,.35);
  --ease:    cubic-bezier(.4,0,.2,1);
}

html{font-size:16px;scroll-behavior:smooth}
body{font-family:'Inter',system-ui,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;display:flex;flex-direction:column}
a{color:var(--acc3);text-decoration:none}
a:hover{text-decoration:underline}
img{display:block}
*{transition:background-color .15s var(--ease),border-color .15s var(--ease),color .15s var(--ease)}

/* ── NAVBAR ── */
.navbar{position:sticky;top:0;z-index:100;background:rgba(13,17,23,.9);backdrop-filter:blur(16px);border-bottom:1px solid var(--border)}
.nav-inner{max-width:1300px;margin:0 auto;padding:.7rem 1.5rem;display:flex;align-items:center;gap:1.5rem}
.nav-brand{display:flex;align-items:center;gap:.5rem;color:var(--text);font-weight:800;font-size:1.1rem;text-decoration:none;flex-shrink:0}
.brand-ball{font-size:1.4rem}
.nav-links{display:flex;gap:.15rem;flex:1}
.nav-link{padding:.4rem .85rem;border-radius:8px;color:var(--muted);font-size:.875rem;font-weight:500;transition:.15s;text-decoration:none}
.nav-link:hover{color:var(--text);background:var(--surf2);text-decoration:none}
.nav-link.active{color:var(--accent);background:rgba(22,199,132,.1)}
.nav-link.admin-link{color:var(--acc2)}
.nav-right{display:flex;align-items:center;gap:.75rem;margin-left:auto}
.nav-name{font-size:.85rem;color:var(--muted)}

/* ── BUTTONS ── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.55rem 1.1rem;border-radius:8px;font-size:.875rem;font-weight:600;cursor:pointer;border:none;transition:.15s;text-decoration:none;white-space:nowrap}
.btn:hover{text-decoration:none;filter:brightness(1.1)}
.btn-primary{background:var(--accent);color:#031a0d}
.btn-secondary{background:var(--surf2);color:var(--text);border:1px solid var(--border)}
.btn-danger{background:var(--danger);color:#fff}
.btn-ghost{background:transparent;color:var(--muted);border:1px solid var(--border)}
.btn-ghost:hover{border-color:var(--muted);color:var(--text)}
.btn-sm{padding:.3rem .7rem;font-size:.8rem;border-radius:6px}
.btn-xs{padding:.2rem .5rem;font-size:.75rem;border-radius:5px}

/* ── LAYOUT ── */
.main{flex:1;max-width:1300px;margin:0 auto;width:100%;padding:2rem 1.5rem}
.page-header{margin-bottom:1.75rem}
.page-title{font-size:1.6rem;font-weight:800;letter-spacing:-.02em}
.page-sub{color:var(--muted);font-size:.9rem;margin-top:.25rem}

/* ── CARDS ── */
.card{background:var(--surf);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.card+.card,.card+.section{margin-top:1rem}
.card-head{padding:.9rem 1.25rem;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;font-weight:600;font-size:.95rem}
.card-body{padding:1.25rem}

/* ── FLASH ── */
.flash{padding:.85rem 1.25rem;border-radius:10px;margin-bottom:1.25rem;font-size:.9rem;font-weight:500}
.flash-success{background:rgba(22,199,132,.12);color:var(--accent);border:1px solid rgba(22,199,132,.25)}
.flash-error{background:rgba(248,81,73,.12);color:var(--danger);border:1px solid rgba(248,81,73,.25)}
.flash-info{background:rgba(88,166,255,.12);color:var(--acc3);border:1px solid rgba(88,166,255,.25)}

/* ── TOURNAMENT TABS ── */
.t-tabs{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:1.5rem}
.t-tab{padding:.45rem 1rem;border-radius:20px;font-size:.84rem;font-weight:500;background:var(--surf);border:1px solid var(--border);color:var(--muted);cursor:pointer;transition:.15s;text-decoration:none}
.t-tab:hover{border-color:var(--acc3);color:var(--text);text-decoration:none}
.t-tab.active{background:var(--accent);color:#031a0d;border-color:var(--accent);font-weight:700}
.t-tab.archived{border-style:dashed;opacity:.65}

/* ── GROUP HEADER ── */
.group-header{display:flex;align-items:center;gap:.6rem;margin:1.5rem 0 .6rem;font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.group-header::after{content:'';flex:1;height:1px;background:var(--border)}

/* ── MATCH CARD ── */
.match-card{background:var(--surf);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:.5rem;padding:.85rem 1.25rem;transition:border-color .15s}
.match-card:hover{border-color:var(--border)}
.match-card.live{border-color:var(--accent);box-shadow:0 0 0 1px rgba(22,199,132,.15)}
.match-card.finished{opacity:.85}

.match-main{display:grid;grid-template-columns:1fr 140px 1fr;align-items:center;gap:1rem}
.team{display:flex;align-items:center;gap:.65rem}
.team.home{justify-content:flex-end;text-align:right}
.team.away{justify-content:flex-start}
.team-logo{width:30px;height:30px;object-fit:contain;border-radius:4px;background:var(--surf2);padding:2px;flex-shrink:0}
.team-name{font-weight:700;font-size:.95rem}

.match-center{text-align:center}
.score{font-size:1.6rem;font-weight:900;letter-spacing:.02em;font-feature-settings:'tnum'}
.score .sep{color:var(--muted);margin:0 .15rem;font-weight:400}
.ko-time{font-size:.75rem;color:var(--muted);margin-top:.2rem}
.live-badge{display:inline-block;background:var(--accent);color:#031a0d;font-size:.62rem;font-weight:800;padding:.1rem .45rem;border-radius:4px;letter-spacing:.05em;margin-top:.15rem}

/* ── TIP AREA ── */
.tip-area{border-top:1px solid var(--border);margin-top:.75rem;padding-top:.75rem;display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}
.tip-label{font-size:.78rem;color:var(--muted);white-space:nowrap}
.tip-inputs{display:flex;align-items:center;gap:.35rem}
.tip-inp{width:48px;padding:.4rem .5rem;text-align:center;background:var(--surf2);border:1px solid var(--border);border-radius:7px;color:var(--text);font-size:1rem;font-weight:700;-moz-appearance:textfield}
.tip-inp::-webkit-inner-spin-button{display:none}
.tip-inp:focus{outline:none;border-color:var(--acc3)}
.tip-sep{color:var(--muted);font-weight:700;font-size:1.1rem}

.pts-badge{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;font-size:.82rem;font-weight:800}
.pts-3{background:rgba(22,199,132,.18);color:var(--accent)}
.pts-2{background:rgba(245,158,11,.18);color:var(--acc2)}
.pts-1{background:rgba(88,166,255,.18);color:var(--acc3)}
.pts-0{background:rgba(125,133,144,.12);color:var(--muted)}

.other-tips{display:flex;flex-wrap:wrap;gap:.3rem;margin-left:auto}
.other-chip{font-size:.72rem;padding:.2rem .55rem;border-radius:12px;background:var(--surf2);border:1px solid var(--border);color:var(--muted)}
.other-chip strong{color:var(--text)}
.other-chip.pts3{border-color:rgba(22,199,132,.3);color:var(--accent)}
.other-chip.pts2{border-color:rgba(245,158,11,.3);color:var(--acc2)}
.other-chip.pts1{border-color:rgba(88,166,255,.3);color:var(--acc3)}

/* ── STATS GRID ── */
.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:.75rem;margin-bottom:1.25rem}
.stat-card{background:var(--surf);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;text-align:center}
.stat-val{font-size:2rem;font-weight:900;line-height:1}
.stat-label{font-size:.73rem;color:var(--muted);margin-top:.35rem;font-weight:500}

/* ── LEADERBOARD ── */
.lb-table{width:100%;border-collapse:collapse}
.lb-table th{font-size:.72rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.07em;padding:.65rem 1rem;border-bottom:1px solid var(--border);text-align:left}
.lb-table td{padding:.75rem 1rem;border-bottom:1px solid var(--border);font-size:.9rem}
.lb-table tr:last-child td{border-bottom:none}
.lb-table tr:hover td{background:var(--surf2)}
.lb-me td{background:rgba(22,199,132,.04)!important}
.lb-rank{font-weight:800;font-size:1rem;color:var(--muted)}
.rank-1{color:#ffd700}.rank-2{color:#c0c0c0}.rank-3{color:#cd7f32}
.lb-pts{font-weight:800;font-size:1.05rem}

/* ── FORMS ── */
.form-group{margin-bottom:1.1rem}
.form-label{display:block;font-size:.83rem;font-weight:500;margin-bottom:.4rem;color:var(--muted)}
.form-control{width:100%;padding:.6rem .85rem;background:var(--surf2);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:.95rem;font-family:inherit}
.form-control:focus{outline:none;border-color:var(--acc3)}
select.form-control{cursor:pointer}

/* ── LOGIN ── */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:radial-gradient(ellipse at top,#1a2744 0%,var(--bg) 60%)}
.login-card{width:100%;max-width:430px;background:var(--surf);border:1px solid var(--border);border-radius:20px;padding:2.5rem}
.login-logo{text-align:center;font-size:3.5rem;margin-bottom:.75rem}
.login-title{text-align:center;font-size:1.45rem;font-weight:800;margin-bottom:.3rem}
.login-sub{text-align:center;color:var(--muted);font-size:.875rem;margin-bottom:2rem}

/* ── ADMIN TABLE ── */
.admin-table{width:100%;border-collapse:collapse}
.admin-table th{font-size:.72rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;padding:.65rem 1rem;border-bottom:1px solid var(--border);text-align:left}
.admin-table td{padding:.7rem 1rem;border-bottom:1px solid var(--border);font-size:.88rem;vertical-align:middle}
.admin-table tr:last-child td{border-bottom:none}
.admin-table tr:hover td{background:var(--surf2)}

/* ── BADGES ── */
.badge{display:inline-block;padding:.2rem .55rem;border-radius:10px;font-size:.72rem;font-weight:600}
.badge-active{background:rgba(22,199,132,.15);color:var(--accent)}
.badge-upcoming{background:rgba(88,166,255,.15);color:var(--acc3)}
.badge-archived{background:rgba(125,133,144,.12);color:var(--muted)}
.badge-admin{background:rgba(245,158,11,.15);color:var(--acc2)}
.badge-live{background:var(--accent);color:#031a0d}

/* ── TOURNAMENT DETAIL (Gruppen, Tabelle) ── */
.groups-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;margin-bottom:1.5rem}
.group-card{background:var(--surf);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.group-card-head{padding:.7rem 1rem;background:var(--surf2);border-bottom:1px solid var(--border);font-weight:700;font-size:.875rem;color:var(--acc3)}
.group-table{width:100%;border-collapse:collapse;font-size:.82rem}
.group-table th{color:var(--muted);font-size:.68rem;font-weight:600;text-transform:uppercase;padding:.45rem .75rem;text-align:center;border-bottom:1px solid var(--border)}
.group-table th:first-child{text-align:left}
.group-table td{padding:.5rem .75rem;border-bottom:1px solid var(--border);text-align:center}
.group-table tr:last-child td{border-bottom:none}
.group-table td:first-child{text-align:left;font-weight:600}
.group-table tr:hover td{background:var(--surf2)}
.pos-q{background:rgba(22,199,132,.08)}
.pos-eq{background:rgba(245,158,11,.08)}

/* ── KNOCKOUT BRACKET ── */
.bracket-wrap{overflow-x:auto;padding-bottom:1rem}
.bracket{display:flex;gap:2rem;min-width:600px}
.bracket-round{display:flex;flex-direction:column;gap:1rem;min-width:180px}
.bracket-round-title{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:.5rem;text-align:center}
.bracket-match{background:var(--surf);border:1px solid var(--border);border-radius:8px;overflow:hidden}
.bracket-team{display:flex;align-items:center;justify-content:space-between;padding:.45rem .75rem;font-size:.83rem;gap:.5rem}
.bracket-team:first-child{border-bottom:1px solid var(--border)}
.bracket-team.winner{background:rgba(22,199,132,.08);font-weight:700}
.bracket-score{font-weight:800;min-width:18px;text-align:right;color:var(--accent)}

/* ── KO GEWINNER-TIP BUTTONS ── */
.winner-tip-wrap { margin-left: .25rem; }
.winner-btn {
  display: inline-flex; align-items: center; padding: .3rem .75rem;
  border-radius: 20px; font-size: .78rem; font-weight: 600; cursor: pointer;
  border: 1px solid var(--acc2); color: var(--acc2);
  background: transparent; transition: .15s; user-select: none;
}
.winner-btn:hover { background: rgba(245,158,11,.12); }
.winner-btn.selected { background: var(--acc2); color: #1a1000; }

/* ── FOOTER ── */
.site-footer{border-top:1px solid var(--border);padding:.85rem 1.5rem;margin-top:auto}
.footer-inner{max-width:1300px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;font-size:.78rem;color:var(--muted)}

/* ── UTILS ── */
.flex{display:flex}.gap-1{gap:.5rem}.gap-2{gap:1rem}.items-center{align-items:center}
.justify-between{justify-content:space-between}.flex-wrap{flex-wrap:wrap}
.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.mt-4{margin-top:2rem}
.mb-1{margin-bottom:.5rem}.mb-2{margin-bottom:1rem}
.text-muted{color:var(--muted)}.text-accent{color:var(--accent)}
.text-sm{font-size:.85rem}.text-xs{font-size:.75rem}.fw-7{font-weight:700}.fw-8{font-weight:800}
.text-right{text-align:right}.text-center{text-align:center}.w-full{width:100%}
code{font-family:monospace;font-size:.9em;background:var(--surf2);padding:.1em .35em;border-radius:4px}

@media(max-width:700px){
  .nav-inner{flex-wrap:wrap;gap:.5rem}
  .nav-links{order:3;width:100%}
  .match-main{grid-template-columns:1fr;gap:.4rem}
  .team.home{justify-content:flex-start;text-align:left}
  .match-center{order:-1;text-align:left;display:flex;align-items:center;gap:.5rem}
  .groups-grid{grid-template-columns:1fr}
  .footer-inner{flex-direction:column;gap:.35rem;text-align:center}
}

/* ── STAT CARD (modernisiert mit Icon-Slot) ── */
.stat-card{background:var(--surf);border:1px solid var(--border);border-radius:var(--radius);padding:1.1rem;text-align:center;transition:transform .2s var(--ease),border-color .2s}
.stat-card:hover{transform:translateY(-2px);border-color:var(--acc3)}
.stat-icon{font-size:1.3rem;margin-bottom:.3rem;opacity:.9}

/* ── PROGRESS BARS (für Stats/Verteilungen) ── */
.progress-row{margin-bottom:.75rem}
.progress-label{display:flex;justify-content:space-between;font-size:.78rem;margin-bottom:.3rem;color:var(--muted)}
.progress-track{height:8px;background:var(--bg);border-radius:5px;overflow:hidden}
.progress-fill{height:100%;border-radius:5px;transition:width .5s var(--ease)}

/* ── EMPTY STATE ── */
.empty-state{padding:3rem 1.5rem;text-align:center;color:var(--muted)}
.empty-icon{font-size:2.5rem;margin-bottom:.75rem}
.empty-title{font-weight:700;color:var(--text);margin-bottom:.25rem}
.empty-sub{font-size:.82rem}

/* ── DASHBOARD GRID ── */
.dash-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.1rem;margin-bottom:1.1rem}
.dash-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem;margin-bottom:1.1rem}
@media(max-width:780px){.dash-grid-2{grid-template-columns:1fr}}

/* ── FILTER BAR (Dashboard/Listen) ── */
.filter-bar{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center;margin-bottom:1.25rem;background:var(--surf);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.75rem 1rem}
.filter-bar select{background:var(--surf2);border:1px solid var(--border);color:var(--text);padding:.4rem .75rem;border-radius:8px;font-size:.82rem;cursor:pointer}

/* ── SKELETON LOADING (statt "Lädt…"-Text) ── */
.skeleton{background:linear-gradient(90deg,var(--surf2) 25%,var(--border) 50%,var(--surf2) 75%);background-size:200% 100%;animation:skeleton-pulse 1.4s ease-in-out infinite;border-radius:6px}
@keyframes skeleton-pulse{0%{background-position:200% 0}100%{background-position:-200% 0}}
.skeleton-text{height:14px;width:100%}
.skeleton-row{display:flex;gap:.75rem;align-items:center;padding:.6rem 0}

/* ── LIVE PULSE ── */
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
.live-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--danger);animation:pulse 1.3s infinite}

/* ── FADE-IN für AJAX-Inhalte ── */
@keyframes fadeIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
.fade-in{animation:fadeIn .25s var(--ease)}

/* ── TOAST (konsolidiert, einmal global statt 3x inline) ── */
.toast-container{position:fixed;bottom:1.5rem;right:1.5rem;z-index:9998;display:flex;flex-direction:column;gap:.5rem;max-width:min(360px,90vw)}
.toast{background:var(--surf);border:1px solid var(--border);color:var(--text);padding:.7rem 1.1rem;border-radius:10px;font-size:.875rem;font-weight:600;box-shadow:var(--shadow);animation:fadeIn .2s var(--ease)}
.toast.success{border-color:var(--accent);color:var(--accent)}
.toast.error{border-color:var(--danger);color:var(--danger)}

/* ── MODAL (konsolidiert) ── */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.7);z-index:9999;display:flex;align-items:center;justify-content:center;padding:1rem;backdrop-filter:blur(2px)}
.modal-box{background:var(--surf);border:1px solid var(--border);border-radius:18px;padding:2rem;max-width:420px;width:100%;text-align:center;box-shadow:var(--shadow)}

/* ── QUICK ACTION BUTTON ── */
.quick-action{display:flex;align-items:center;gap:.6rem;padding:.7rem 1rem;background:var(--surf2);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:.85rem;font-weight:600;cursor:pointer;transition:.15s}
.quick-action:hover{border-color:var(--acc3);background:var(--surf)}

/* ── HEATMAP CELL (Form-Verlauf) ── */
.heat-cell{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:800;border:1px solid transparent}

/* ── TREND ARROW ── */
.trend-up{color:var(--accent)}.trend-down{color:var(--danger)}.trend-flat{color:var(--muted)}
