/* ══════════════════════════════════════════════════════════
   يلا بطولة — App shell components (dashboard / forms / tournament view)
   ══════════════════════════════════════════════════════════ */

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

.app-topbar{
  position:sticky;top:0;z-index:50;
  background:rgba(11,42,30,.85);backdrop-filter:blur(10px);
  border-bottom:1px solid rgba(255,255,255,.06);
}
.app-topbar .inner{max-width:var(--content-w);margin:0 auto;padding:16px 24px;
  display:flex;align-items:center;justify-content:space-between}
.app-topbar .brand{display:flex;align-items:center;gap:10px;font-family:'Baloo Bhaijaan 2';font-weight:700;font-size:17px}
.app-topbar .brand .dot{width:9px;height:9px;border-radius:50%;background:var(--lime);box-shadow:0 0 10px var(--lime)}
.app-topbar .brand .logo-mark{height:28px;width:auto;display:block}
.icon-btn{background:none;border:none;color:var(--muted);cursor:pointer;padding:6px;display:flex;align-items:center;justify-content:center}
.icon-btn svg{width:20px;height:20px}
.icon-btn:hover{color:var(--chalk)}

.page-body{max-width:var(--content-w);margin:0 auto;padding:32px 24px 60px}
.page-body-narrow{max-width:640px;margin:0 auto;padding:32px 20px 60px}

.section-title{font-family:'JetBrains Mono';font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:28px 0 12px}
.section-title:first-child{margin-top:0}

/* plan banner */
.plan-banner{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;
  background:var(--pitch-3);border:1px solid rgba(255,255,255,.08);border-radius:var(--r-lg);padding:18px 22px;margin-bottom:6px}
.plan-banner .txt{font-size:13.5px}
.plan-banner .txt b{font-family:'JetBrains Mono';color:var(--lime)}
.plan-badge{display:inline-block;font-family:'JetBrains Mono';font-size:10.5px;font-weight:700;padding:4px 11px;border-radius:20px;letter-spacing:.04em}
.plan-badge.free{background:rgba(147,175,158,.15);color:var(--muted)}
.plan-badge.pro{background:var(--lime);color:var(--pitch)}

/* tournament grid + card */
.tournament-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.tournament-card{
  display:flex;align-items:center;gap:14px;background:var(--pitch-3);
  border:1px solid rgba(255,255,255,.06);border-radius:var(--r-lg);padding:16px;cursor:pointer;
  transition:border-color .15s, transform .15s;
}
.tournament-card:hover{border-color:var(--line-hi);transform:translateY(-2px)}
.tournament-card .logo{width:52px;height:52px;border-radius:var(--r-md);background:var(--pitch-4);
  display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0;color:var(--lime)}
.tournament-card .logo svg{width:24px;height:24px}
.tournament-card .logo img{width:100%;height:100%;object-fit:cover}
.tournament-card .info{flex:1;min-width:0}
.tournament-card .info h3{font-size:15px;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:'IBM Plex Sans Arabic';font-weight:700}
.tournament-card .info p{font-size:12px;color:var(--muted)}
.tournament-card .chev{color:var(--muted);width:18px;height:18px;flex-shrink:0}
.add-tournament-card{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;
  border:1.5px dashed rgba(255,255,255,.18);border-radius:var(--r-lg);padding:24px;cursor:pointer;
  color:var(--muted);transition:border-color .15s,color .15s;min-height:84px;
}
.add-tournament-card:hover{border-color:var(--lime);color:var(--lime)}
.add-tournament-card .plus{width:22px;height:22px}

.empty-state{text-align:center;padding:60px 20px;color:var(--muted)}
.empty-state .em-icon{width:44px;height:44px;margin:0 auto 14px;color:var(--muted)}
.empty-state .em-icon svg{width:100%;height:100%}

/* logo upload */
.logo-upload{display:flex;align-items:center;gap:16px}
.logo-upload .preview{width:68px;height:68px;border-radius:var(--r-md);border:1.5px dashed rgba(255,255,255,.2);
  display:flex;align-items:center;justify-content:center;background:var(--pitch-2);overflow:hidden;flex-shrink:0;color:var(--muted)}
.logo-upload .preview svg{width:26px;height:26px}
.logo-upload .preview img{width:100%;height:100%;object-fit:cover}
.logo-upload .actions{display:flex;flex-direction:column;gap:8px}
.logo-upload input[type=file]{display:none}

/* auth tabs */
.auth-tabs{display:flex;background:var(--pitch-2);border-radius:var(--r-md);padding:4px;margin-bottom:26px}
.auth-tabs button{flex:1;padding:11px;border:none;background:none;color:var(--muted);
  font-family:'IBM Plex Sans Arabic';font-weight:700;font-size:14px;border-radius:9px;cursor:pointer;transition:all .15s}
.auth-tabs button.active{background:var(--pitch-4);color:var(--lime)}

.auth-head{text-align:center;margin-bottom:30px}
.auth-head .dot{width:12px;height:12px;border-radius:50%;background:var(--lime);box-shadow:0 0 14px var(--lime);margin:0 auto 16px}
.auth-head h1{font-size:21px}
.back-link{display:inline-flex;align-items:center;gap:6px;padding:18px 24px;color:var(--muted);font-size:13.5px}
.back-link:hover{color:var(--chalk)}

/* tournament view */
.t-header{display:flex;align-items:center;gap:18px;padding:8px 0 28px;flex-wrap:wrap}
.t-header .logo{width:76px;height:76px;border-radius:18px;background:var(--pitch-3);border:1px solid rgba(255,255,255,.08);
  display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0;color:var(--lime)}
.t-header .logo svg{width:32px;height:32px}
.t-header .logo img{width:100%;height:100%;object-fit:cover}
.t-header h1{font-size:23px;margin-bottom:5px}
.t-header p{font-size:13.5px;color:var(--muted)}

.tab-strip{display:flex;flex-wrap:wrap;gap:8px;padding:0 0 22px}
.tab-strip button{flex:0 0 auto;padding:10px 18px;border-radius:20px;border:1px solid rgba(255,255,255,.1);
  background:var(--pitch-3);color:var(--muted);font-family:'IBM Plex Sans Arabic';font-size:13.5px;font-weight:700;cursor:pointer}
.tab-strip button.active{background:var(--lime);color:var(--pitch);border-color:var(--lime)}
.panel{display:none}
.panel.active{display:block}

.lock-overlay{display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px;padding:44px 24px;color:var(--muted)}
.lock-overlay .lock-icon{width:52px;height:52px;border-radius:50%;background:rgba(255,93,93,.1);color:var(--red-card);display:flex;align-items:center;justify-content:center}
.lock-overlay .lock-icon svg{width:24px;height:24px}
.lock-overlay h4{color:var(--chalk);font-size:16px;font-family:'IBM Plex Sans Arabic'}
.lock-overlay p{font-size:13.5px;line-height:1.75;max-width:340px}

.spinner{width:19px;height:19px;border:2.5px solid rgba(11,42,30,.25);border-top-color:var(--pitch);border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* toast */
#toast-box{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);z-index:9999;
  display:flex;flex-direction:column;gap:8px;align-items:center;width:100%;padding:0 20px}

@media (max-width:640px){
  .tournament-grid{grid-template-columns:1fr}
  .t-header{flex-direction:column;text-align:center}
}

/* ── standings table ── */
.standings-table{width:100%;border-collapse:collapse;font-size:13px}
.standings-table th{font-family:'JetBrains Mono';font-size:10.5px;color:var(--muted);text-transform:uppercase;
  letter-spacing:.05em;padding:10px 8px;text-align:center;border-bottom:1px solid rgba(255,255,255,.1)}
.standings-table th:first-child,.standings-table td:first-child{text-align:right;padding-right:4px}
.standings-table td{padding:11px 8px;text-align:center;border-bottom:1px solid rgba(255,255,255,.05)}
.standings-table tr:last-child td{border-bottom:none}
.standings-table td.team-cell{display:flex;align-items:center;gap:8px;font-weight:700;text-align:right}
.standings-table tr.qualify td:first-child{box-shadow:inset 3px 0 0 var(--lime)}
.standings-table td.pts{font-family:'JetBrains Mono';color:var(--lime);font-weight:700}

/* ── match list ── */
.match-item{display:flex;align-items:center;justify-content:space-between;padding:14px 4px;gap:10px}
.match-item+.match-item{border-top:1px solid rgba(255,255,255,.06)}
.match-item .m-teams{display:flex;flex-direction:column;gap:6px;font-size:13.5px;font-weight:700;flex:1}
.match-item .m-teams span{display:flex;align-items:center;gap:8px}
.match-item .m-score{font-family:'JetBrains Mono';font-size:16px;color:var(--lime);font-weight:700;text-align:center;min-width:44px}
.match-item .m-meta{font-size:11.5px;color:var(--muted);text-align:left;min-width:70px}
.status-pill{font-family:'JetBrains Mono';font-size:10px;padding:3px 8px;border-radius:20px;display:inline-block}
.status-pill.live{background:rgba(255,93,93,.15);color:var(--red-card)}
.status-pill.done{background:rgba(147,175,158,.15);color:var(--muted)}
.status-pill.soon{background:rgba(198,255,61,.15);color:var(--lime)}

/* ── mini bracket ── */
.bracket-mini{display:flex;gap:22px;overflow-x:auto;padding:6px 2px}
.bracket-col{display:flex;flex-direction:column;justify-content:space-around;gap:16px;min-width:170px}
.bracket-col-title{font-family:'JetBrains Mono';font-size:10.5px;color:var(--muted);text-transform:uppercase;margin-bottom:6px;text-align:center}
.bracket-match{background:var(--pitch-2);border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:10px 12px;font-size:12.5px}
.bracket-match .bm-row{display:flex;justify-content:space-between;padding:3px 0}
.bracket-match .bm-row.win{color:var(--lime);font-weight:700}

/* ── scorers ── */
.scorer-row{display:flex;align-items:center;gap:12px;padding:12px 4px}
.scorer-row+.scorer-row{border-top:1px solid rgba(255,255,255,.06)}
.scorer-row .rank{font-family:'JetBrains Mono';color:var(--muted);width:20px;text-align:center;font-size:13px}
.scorer-row .name{flex:1;font-size:13.5px;font-weight:700}
.scorer-row .team-name{font-size:11.5px;color:var(--muted);font-weight:400}
.scorer-row .count{font-family:'JetBrains Mono';color:var(--lime);font-weight:700;font-size:15px}

/* ── highlights ── */
.highlight-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.highlight-card{background:var(--pitch-2);border-radius:var(--r-md);overflow:hidden;border:1px solid rgba(255,255,255,.06)}
.highlight-card .thumb{aspect-ratio:16/10;background:var(--pitch-4);display:flex;align-items:center;justify-content:center;color:var(--lime)}
.highlight-card .thumb svg{width:28px;height:28px}
.highlight-card .cap{padding:10px 12px;font-size:12.5px;font-weight:600}
@media (max-width:480px){ .highlight-grid{grid-template-columns:1fr} }
