:root{
  --grass:#2d6a4f;--grass-l:#40916c;--sky:#080f14;--cream:#fdf6e3;
  --gold:#f4c842;--red:#c62a2a;--muted:rgba(253,246,227,.45);
  --cb:rgba(255,255,255,.09);--safe-bottom:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
body{
  background:var(--sky);color:var(--cream);font-family:'DM Sans',sans-serif;
  min-height:100vh;
  background-image:
    radial-gradient(ellipse 90% 40% at 50% -5%,rgba(45,106,79,.38) 0%,transparent 65%),
    radial-gradient(ellipse 50% 40% at 100% 100%,rgba(244,200,66,.05) 0%,transparent 55%);
}
.wrap{max-width:560px;margin:0 auto;padding:24px 14px calc(60px + var(--safe-bottom))}

/* HEADER */
header{display:flex;align-items:center;gap:12px;margin-bottom:28px}
.back-btn{background:transparent;border:1px solid var(--cb);color:var(--muted);width:36px;height:36px;border-radius:10px;cursor:pointer;font-size:1rem;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s;text-decoration:none}
.back-btn:hover{border-color:var(--gold);color:var(--gold)}
.header-title{font-family:'Playfair Display',serif;font-size:1.5rem;font-weight:900}
.header-title em{color:var(--gold);font-style:normal}

/* AVATAR BLOCK */
.avatar-block{display:flex;align-items:center;gap:16px;margin-bottom:28px;padding:18px;background:rgba(255,255,255,.04);border:1px solid var(--cb);border-radius:18px}
.avatar-lg{width:56px;height:56px;border-radius:50%;background:var(--grass);display:flex;align-items:center;justify-content:center;font-size:1.5rem;font-weight:700;flex-shrink:0;color:var(--cream);border:2px solid var(--grass-l)}
.avatar-info{min-width:0}
.avatar-name{font-size:1.05rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.avatar-email{font-family:'DM Mono',monospace;font-size:.65rem;color:var(--muted);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* SIGN-IN GATE */
#guestGate{text-align:center;padding:60px 20px}
#guestGate p{color:var(--muted);font-family:'DM Mono',monospace;font-size:.8rem;letter-spacing:.5px;margin-bottom:20px}

/* TABS */
.tabs{display:flex;gap:0;margin-bottom:20px;border-radius:12px;overflow:hidden;border:1px solid var(--cb)}
.tab-btn{flex:1;padding:11px 6px;background:transparent;border:none;color:var(--muted);font-family:'DM Mono',monospace;font-size:.68rem;letter-spacing:.8px;cursor:pointer;transition:all .15s;text-transform:uppercase}
.tab-btn.on{background:var(--gold);color:var(--sky);font-weight:700}

/* SECTIONS */
.tab-sec{display:none}.tab-sec.on{display:block}

/* CARD */
.card{background:rgba(255,255,255,.04);border:1px solid var(--cb);border-radius:18px;padding:18px 14px;margin-bottom:14px}
.ctitle{font-family:'Playfair Display',serif;font-size:1rem;font-weight:700;margin-bottom:14px;display:flex;align-items:center;gap:8px}
.tag{font-family:'DM Mono',monospace;font-size:.58rem;background:var(--grass);color:var(--gold);padding:3px 7px;border-radius:4px;letter-spacing:.8px}
.hr{height:1px;background:var(--cb);margin:14px 0}
.field-label{font-family:'DM Mono',monospace;font-size:.62rem;letter-spacing:1px;text-transform:uppercase;color:var(--muted);margin-bottom:6px;display:block}
.finput{display:block;width:100%;background:rgba(253,246,227,.07);border:1.5px solid rgba(253,246,227,.14);border-radius:12px;padding:13px 14px;color:var(--cream);font-family:'DM Sans',sans-serif;font-size:.95rem;outline:none;transition:border-color .2s,box-shadow .2s}
.finput:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(244,200,66,.12)}
.finput::placeholder{color:rgba(253,246,227,.28)}
.form-row{margin-bottom:12px}
.btn-save{padding:12px 20px;background:var(--gold);color:var(--sky);border:none;border-radius:10px;cursor:pointer;font-family:'DM Mono',monospace;font-size:.78rem;font-weight:700;letter-spacing:.8px;transition:all .15s}
.btn-save:active{opacity:.85;transform:scale(.98)}
.btn-save:disabled{opacity:.4;cursor:not-allowed;transform:none}
.btn-danger{padding:12px 20px;background:transparent;color:#f08080;border:1px solid rgba(198,42,42,.5);border-radius:10px;cursor:pointer;font-family:'DM Mono',monospace;font-size:.78rem;letter-spacing:.8px;transition:all .15s}
.btn-danger:hover{background:rgba(198,42,42,.12);border-color:#f08080}
.feedback{border-radius:8px;padding:9px 12px;font-size:.76rem;margin-top:10px;display:none}
.feedback.ok{background:rgba(45,106,79,.12);border:1px solid rgba(64,145,108,.4);color:#74d494}
.feedback.err{background:rgba(198,42,42,.1);border:1px solid rgba(198,42,42,.3);color:#f08080}

/* HISTORY */
.match-card{background:rgba(255,255,255,.04);border:1px solid var(--cb);border-radius:14px;margin-bottom:10px;overflow:hidden}
.match-header{padding:12px 14px;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px;transition:background .15s}
.match-header:hover{background:rgba(255,255,255,.03)}
.match-meta{min-width:0}
.match-name{font-size:.95rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.match-date{font-family:'DM Mono',monospace;font-size:.62rem;color:var(--muted);margin-top:2px}
.match-badges{display:flex;gap:5px;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end}
.mbadge{font-family:'DM Mono',monospace;font-size:.58rem;padding:3px 7px;border-radius:4px;letter-spacing:.6px}
.mbadge-toss{background:rgba(244,200,66,.12);color:var(--gold);border:1px solid rgba(244,200,66,.3)}
.mbadge-players{background:rgba(45,106,79,.2);color:#74d494;border:1px solid rgba(45,106,79,.35)}
.match-chevron{font-size:.7rem;color:var(--muted);transition:transform .2s;flex-shrink:0}
.match-card.open .match-chevron{transform:rotate(180deg)}
.match-body{display:none;padding:0 14px 14px}
.match-card.open .match-body{display:block}
.teams-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
.team-col{background:rgba(0,0,0,.18);border-radius:10px;overflow:hidden}
.team-col-head{padding:8px 10px;font-family:'Playfair Display',serif;font-size:.88rem;font-weight:700}
.team-col-head.ta{background:rgba(45,106,79,.35)}
.team-col-head.tb{background:rgba(198,42,42,.25)}
.team-player{display:flex;align-items:center;gap:5px;padding:6px 10px;font-size:.8rem;border-top:1px solid rgba(255,255,255,.05)}
.team-player.cap{font-weight:600}
.sbadge{font-family:'DM Mono',monospace;font-size:.52rem;letter-spacing:.6px;padding:2px 5px;border-radius:3px}
.sb-beginner{background:rgba(74,144,226,.18);color:#74b2f5;border:1px solid rgba(74,144,226,.3)}
.sb-intermediate{background:rgba(244,200,66,.14);color:var(--gold);border:1px solid rgba(244,200,66,.3)}
.sb-expert{background:rgba(45,106,79,.28);color:#74d494;border:1px solid rgba(45,106,79,.4)}
.sb-bowl{background:rgba(45,106,79,.22);color:#74d494;border:1px solid rgba(45,106,79,.4)}
.toss-log{margin-top:10px}
.toss-log-title{font-family:'DM Mono',monospace;font-size:.62rem;letter-spacing:1px;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.toss-chips{display:flex;flex-wrap:wrap;gap:5px}
.toss-chip{font-family:'DM Mono',monospace;font-size:.62rem;padding:3px 8px;border-radius:100px}
.toss-chip.heads{background:rgba(244,200,66,.12);color:var(--gold);border:1px solid rgba(244,200,66,.3)}
.toss-chip.tails{background:rgba(200,169,110,.1);color:#c8a96e;border:1px solid rgba(200,169,110,.3)}
.no-teams{font-family:'DM Mono',monospace;font-size:.68rem;color:var(--muted);padding:10px 0}

/* STATS TABLE */
.stats-table{width:100%;border-collapse:collapse;font-size:.82rem}
.stats-table th{font-family:'DM Mono',monospace;font-size:.6rem;letter-spacing:1px;text-transform:uppercase;color:var(--muted);text-align:left;padding:6px 8px;border-bottom:1px solid var(--cb)}
.stats-table td{padding:9px 8px;border-bottom:1px solid rgba(255,255,255,.04)}
.stats-table tr:last-child td{border-bottom:none}
.stats-rank{font-family:'DM Mono',monospace;font-size:.65rem;color:var(--muted);width:28px}
.stat-num{font-family:'DM Mono',monospace;font-size:.78rem;color:var(--gold)}

/* EMPTY / LOADING */
.empty-state{text-align:center;padding:40px 0;color:var(--muted);font-family:'DM Mono',monospace;font-size:.75rem;letter-spacing:.5px}
.spin-inline{display:inline-block;width:14px;height:14px;border:2px solid rgba(253,246,227,.3);border-top-color:var(--gold);border-radius:50%;animation:spin .6s linear infinite;vertical-align:middle;margin-right:6px}
@keyframes spin{to{transform:rotate(360deg)}}

/* MODAL */
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.65);backdrop-filter:blur(4px);z-index:200;display:flex;align-items:center;justify-content:center;padding:20px;opacity:0;pointer-events:none;transition:opacity .2s}
.modal-bg.open{opacity:1;pointer-events:all}
.modal{background:#0d1f2d;border:1px solid var(--cb);border-radius:20px;padding:22px 18px;width:100%;max-width:360px;animation:slideup .25s ease}
@keyframes slideup{from{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}
.modal h2{font-family:'Playfair Display',serif;font-size:1.15rem;margin-bottom:10px}
.modal p{color:var(--muted);font-size:.84rem;margin-bottom:16px;line-height:1.5}
.modal-actions{display:flex;gap:8px;margin-top:4px}
.btn-cancel{flex:1;padding:12px;background:transparent;border:1px solid var(--cb);color:var(--muted);border-radius:10px;cursor:pointer;font-family:'DM Mono',monospace;font-size:.78rem}
.btn-confirm{flex:1;padding:12px;background:var(--gold);color:var(--sky);border:none;border-radius:10px;cursor:pointer;font-family:'DM Mono',monospace;font-size:.78rem;font-weight:700}
.btn-confirm:disabled{opacity:.5;cursor:not-allowed}
.btn-confirm-del{flex:1;padding:12px;background:var(--red);color:#fff;border:none;border-radius:10px;cursor:pointer;font-family:'DM Mono',monospace;font-size:.78rem;font-weight:700}

/* GAMES LOG (match scorecards in session history) */
.games-log{margin-top:14px;border-top:1px solid var(--cb);padding-top:10px}
.game-entry{background:rgba(255,255,255,.03);border:1px solid var(--cb);border-radius:12px;padding:10px 12px;margin-top:8px}
.game-entry-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.game-name{font-size:.78rem;font-weight:600;color:var(--cream)}
.game-status{font-family:'DM Mono',monospace;font-size:.6rem;letter-spacing:.5px;padding:2px 7px;border-radius:20px;font-weight:700}
.gs-done{background:rgba(45,106,79,.3);color:#74d494}
.gs-live{background:rgba(198,42,42,.2);color:#f08080;animation:livepulse 1.4s ease-in-out infinite}
.gs-setup{background:rgba(244,200,66,.1);color:var(--gold)}
.game-innings{display:flex;flex-direction:column;gap:3px}
.game-inn-row{font-size:.8rem;color:var(--cream)}
.game-inn-row strong{color:var(--gold)}
.game-overs{font-family:'DM Mono',monospace;font-size:.65rem;color:var(--muted)}
.game-result{margin-top:6px;font-size:.75rem;font-weight:600;color:#74d494;font-family:'DM Mono',monospace}

/* TOAST */
.toast{position:fixed;bottom:calc(24px + var(--safe-bottom));left:50%;transform:translateX(-50%) translateY(80px);background:rgba(30,80,55,.96);color:var(--cream);padding:11px 22px;border-radius:100px;font-size:.78rem;font-family:'DM Mono',monospace;letter-spacing:.8px;transition:transform .35s cubic-bezier(.34,1.56,.64,1);z-index:999;box-shadow:0 4px 20px rgba(0,0,0,.5);pointer-events:none;white-space:nowrap}
.toast.show{transform:translateX(-50%) translateY(0)}
.toast.error{background:rgba(140,20,20,.96)}

/* LOADING OVERLAY */
.loading-overlay{position:fixed;inset:0;background:rgba(8,15,20,.8);z-index:100;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .2s}
.loading-overlay.on{opacity:1;pointer-events:all}
.spinner{width:44px;height:44px;border:3px solid rgba(244,200,66,.2);border-top-color:var(--gold);border-radius:50%;animation:spin .8s linear infinite}
