:root{
  --ps-bg:#fff; --ps-border:#e5e7eb; --ps-ink:#0f172a; --ps-ink2:#475569;
  --ps-shadow:0 10px 30px rgba(2,6,23,.06);
  --ps-primary:#1e293b; --ps-green:#16a34a; --ps-amber:#f59e0b; --ps-sky:#0ea5e9; --ps-goal:#111827;
}

/* Dashboard */
.ps-dashboard{ max-width:1400px; margin:0 auto; }
.ps-dash-top{ display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:10px; }
.ps-title{ font-size:clamp(18px,2.4vw,28px); font-weight:900; color:var(--ps-ink); }
.ps-dash-fs, .ps-fullscreen{ background:var(--ps-primary); color:#fff; border:none; border-radius:12px; padding:8px 12px; cursor:pointer; }

.ps-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:18px; }
@media (max-width:900px){ .ps-grid{ grid-template-columns:1fr; } }
.ps-card{ background:#fff; border:1px solid var(--ps-border); border-radius:16px; padding:14px; box-shadow:var(--ps-shadow); }
.ps-card-title{ font-weight:900; color:var(--ps-ink); margin-bottom:8px; text-align:center; }

/* Display */
.ps-wrap{ background:var(--ps-bg); border:1px solid var(--ps-border); border-radius:18px; padding:14px; box-shadow:var(--ps-shadow); }
.ps-top{ display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.ps-sets{ display:flex; flex-direction:column; gap:6px; }
.ps-sets-row{ display:flex; align-items:center; gap:10px; }
.ps-team-name{ font-weight:800; color:var(--ps-ink); }
.ps-sets-boxes{ display:flex; gap:6px; }
.ps-box{ border:1px solid var(--ps-border); padding:4px 8px; border-radius:10px; font-weight:800; color:var(--ps-ink); background:#f8fafc; }

.ps-center{ display:grid; grid-template-columns:1fr auto 1fr; align-items:center; justify-content:center; gap:16px; padding-top:6px; }
.ps-score{ display:flex; align-items:center; justify-content:center; }
.ps-score .ps-points{ font-weight:900; font-size:clamp(56px,10vw,140px); line-height:1; color:#111; }
.ps-middle{ display:flex; flex-direction:column; align-items:center; gap:6px; }
.ps-serve-badge{ font-weight:800; color:#fff; background:#111827; padding:4px 10px; border-radius:999px; }
.ps-status{ font-weight:800; color:#111827; }

/* Compact (tarjeta dash) */
.ps-compact .ps-score .ps-points{ font-size:clamp(48px,6.5vw,110px); }
.ps-compact .ps-team-name{ font-size:clamp(14px,1.6vw,20px); }
.ps-compact .ps-sets .ps-box{ font-size:clamp(12px,1.4vw,16px); }

/* Fullscreen individual */
.ps-wrap:fullscreen{ width:100vw; height:100vh; border-radius:0; border:none; box-shadow:none; padding:14px; }
.ps-wrap:fullscreen .ps-score .ps-points{ font-size:clamp(110px,18vw,260px); }
.ps-wrap:fullscreen .ps-team-name{ font-size:clamp(26px,3.2vw,56px); }
.ps-wrap:fullscreen .ps-sets .ps-box{ font-size:clamp(18px,2.2vw,34px); }
.ps-wrap:fullscreen .ps-fullscreen{ display:none; }

/* Toast */
.ps-toast{ position:fixed; bottom:20px; left:50%; transform:translateX(-50%); background:#111827; color:#fff; padding:10px 18px; border-radius:999px; box-shadow:0 8px 20px rgba(0,0,0,.3); opacity:0; transition:opacity .25s; z-index:99999;}
.ps-toast.show{ opacity:1; }

/* Admin */
.ps-admin{ display:grid; grid-template-columns:repeat(2,1fr); gap:18px; max-width:1200px; margin:0 auto; }
@media (max-width:1000px){ .ps-admin{ grid-template-columns:1fr; } }
.ps-admin-card{ border:1px solid var(--ps-border); border-radius:16px; padding:14px; box-shadow:var(--ps-shadow); background:#fff; }
.ps-admin-head{ display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid var(--ps-border); padding-bottom:8px; margin-bottom:10px; }
.ps-admin-title{ font-weight:900; color:var(--ps-ink); display:flex; gap:10px; align-items:center; }
.ps-pin{ background:#f1f5f9; color:#475569; padding:2px 8px; border-radius:999px; }
.ps-row{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin-top:8px; }
.ps-btn, .ps-key{ background:#0f172a; color:#fff; border:none; border-radius:12px; padding:10px 14px; font-weight:800; cursor:pointer; }
.ps-key{ background:#111827; }
.ps-admin input, .ps-admin select{ padding:8px 10px; border:1px solid var(--ps-border); border-radius:10px; }

/* Public controls */
.ps-public .ps-pin-row .ps-pin-status{ font-weight:700; color:#475569; }
.ps-public-keys button[disabled]{ opacity:.4; cursor:not-allowed; }

/* === UI PRO 2.1.0 === */
/* Giant, centered, TV-first layout */
.ps-wrap{ max-width:1200px; margin:0 auto; }
.ps-top{ justify-content:center; }
.ps-sets{ align-items:center; }
.ps-sets-row{ justify-content:center; }
.ps-team-name{ min-width:auto; }
.ps-sets-boxes{ justify-content:center; }
.ps-center{ grid-template-columns:1fr auto 1fr; justify-content:center; align-items:center; margin-top:10px; }
.ps-score .ps-points{ font-size:clamp(120px,18vw,320px); }
.ps-middle{ min-width:280px; }
.ps-serve-badge{ font-size:clamp(14px,2.4vw,28px); }
.ps-status{ font-size:clamp(14px,2.2vw,26px); }

/* Sets badge look clearer */
.ps-box{ background:#eef2ff; border:1px solid #c7d2fe; color:#111827; font-weight:900; padding:6px 10px; }

/* Public controls pinned at bottom and minimalist */
.ps-public{ margin-top:14px; }
.ps-pin-input{ max-width:220px; }
.ps-public-keys{ display:flex; gap:10px; flex-wrap:wrap; }
.ps-public .ps-key,.ps-public .ps-btn{ font-size:16px; padding:10px 14px; border-radius:12px; }

/* Dashboard cards: centered and big */
.ps-card .ps-wrap{ border:none; box-shadow:none; }
.ps-card .ps-center{ margin-top:0; }
.ps-card .ps-score .ps-points{ font-size:clamp(64px,8vw,140px); }
.ps-card .ps-sets .ps-box{ font-size:clamp(13px,1.6vw,18px); }

/* === ADMIN: kid-friendly === */
.ps-admin{ max-width:1200px; }
.ps-admin-card{ font-size:16px; }
.ps-admin .step-title{ font-weight:900; color:#0f172a; padding:6px 0; }
.ps-admin .ps-key, .ps-admin .ps-btn{ font-size:16px; padding:12px 16px; }
.ps-admin .big-row{ display:flex; gap:12px; flex-wrap:wrap; align-items:center; }
.ps-admin .pill{ background:#111827; color:#fff; border-radius:999px; padding:2px 10px; font-weight:800; }
.ps-admin .input-xl{ font-size:18px; padding:12px 14px; }
.ps-admin .ps-keys-row{ display:flex; gap:12px; flex-wrap:wrap; }
.ps-fullscreen{ position:relative; }
.ps-wrap:fullscreen .ps-sets{ margin-top:6px; }

/* ===== Table-like head (Set1|Set2|Tie|Puntos|Tiempo) ===== */
.ps-table-head{ display:grid; grid-template-columns: 1fr 80px 80px 80px 1fr 130px; align-items:center; gap:6px; margin-bottom:6px; }
.ps-table-head .ps-col{ background:linear-gradient(#2d333b,#1f2329); color:#fff; padding:6px 10px; border-radius:10px; text-align:center; font-weight:900; }
.ps-sets-row{ display:grid; grid-template-columns: 1fr 80px 80px 80px 1fr 130px; gap:6px; align-items:center; }
.ps-sets-row .ps-cell{ padding:2px 4px; }
.ps-sets-row .ps-cell.set .ps-sets-boxes{ background:#e0edff; border:1px solid #bfd3ff; border-radius:10px; padding:4px 6px; text-align:center; font-weight:900; }
.ps-sets-row .ps-cell.tie .ps-sets-boxes{ background:#ffedd5; border:1px solid #fdba74; }
.ps-chrono{ display:inline-block; font-weight:900; font-family:monospace; background:#111827; color:#fff; padding:4px 10px; border-radius:999px; }
@media (max-width:720px){ .ps-table-head, .ps-sets-row{ grid-template-columns: 1fr 64px 64px 64px 1fr 110px; } }

/* Giant points remain centered below */
.ps-center{ margin-top:14px; }
.ps-admin-chrono{ display:flex; gap:10px; align-items:center; font-weight:900; }
.ps-card-chrono{ font-family:monospace; font-weight:900; }

/* ===== Tennis UI table ===== */
.ps-tennis .ps-table{ width:100%; display:grid; gap:8px; }
.ps-tennis .ps-thead{ display:grid; grid-template-columns: 2fr 90px 90px 90px 1.8fr 150px; gap:8px; }
.ps-tennis .th{ background:linear-gradient(#2f3540,#1f2329); color:#fff; border-radius:12px; padding:10px 12px; font-weight:900; text-align:center; }
.ps-tennis .ps-row{ display:grid; grid-template-columns: 2fr 90px 90px 90px 1.8fr 150px; gap:8px; align-items:center; }
.ps-tennis .td{ background:#f8fafc; border:1px solid #e5e7eb; border-radius:12px; padding:8px 10px; }
.ps-tennis .td-name{ background:#eef2f7; }
.ps-tennis .td-set{ background:#e0edff; border-color:#c7d2fe; text-align:center; font-weight:900; font-size:28px; }
.ps-tennis .td-tie{ background:#ffedd5; border-color:#fdba74; text-align:center; font-weight:900; font-size:28px; }
.ps-tennis .td-pts{ background:#fff; border:none; }
.ps-tennis .ps-team-name{ font-weight:900; font-size:clamp(22px,2.5vw,32px); color:#0f172a; }
.ps-tennis .ps-points-big{ font-size:clamp(120px,16vw,280px); font-weight:900; line-height:1; text-align:center; color:#111; }
.ps-tennis .ps-serve-badge{ margin-top:4px; text-align:center; font-weight:900; background:#111827; color:#fff; border-radius:999px; padding:6px 10px; }
.ps-tennis .ps-chrono{ font-family:monospace; font-weight:900; background:#111827; color:#fff; padding:6px 10px; border-radius:999px; }

/* Public controls tennis style */
.ps-public.tennis{ margin-top:10px; }
.ps-public.tennis .ps-rowc{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; }
.ps-public.tennis .ps-controls{ justify-content:space-between; }
.ps-public.tennis .ps-btn{ border-radius:12px; padding:10px 14px; font-weight:900; }
.ps-public.tennis .green{ background:#16a34a; }
.ps-public.tennis .red{ background:#ef4444; }
.ps-public.tennis .ps-btn[disabled]{ opacity:.5; cursor:not-allowed; }
/* Card compact */
.ps-card .ps-tennis .ps-points-big{ font-size:clamp(56px,7vw,120px); }

/* ===== Tennis UI v2: table on top + big score + LED timer ===== */
.ps-tennis.v2 .ps-thead,
.ps-tennis.v2 .ps-row{ grid-template-columns: 2fr 90px 90px 90px 160px 150px; }
.ps-tennis.v2 .td-ctrls{ background:#fff; display:flex; align-items:center; justify-content:center; }
.ps-tennis.v2 .ctrls{ display:flex; gap:10px; }
.ps-tennis.v2 .ps-btn.green{ background:#16a34a; }
.ps-tennis.v2 .ps-btn.red{ background:#ef4444; }
.ps-tennis.v2 .ps-btn[disabled]{ opacity:.5; cursor:not-allowed; }

.ps-bigscore{ display:flex; align-items:center; justify-content:center; gap:16px; margin:8px 0 2px; }
.ps-bigscore .ps-bigA, .ps-bigscore .ps-bigB{ font-weight:900; font-size:clamp(120px,16vw,280px); line-height:1; color:#111; }
.ps-bigscore .sep{ font-size:clamp(80px,12vw,200px); color:#111; }

/* LED red timer */
.ps-led{ display:flex; justify-content:center; }
.ps-led-time{ font-family: 'DSDIGI','Seven Segment', 'Courier New', monospace; font-weight:900; font-size:clamp(36px,6vw,90px); color:#ff2d2d; text-shadow:0 0 6px rgba(255,45,45,0.6), 0 0 18px rgba(255,45,45,0.4); letter-spacing:2px; }
@font-face{ font-family:'DSDIGI'; src:local('DS-Digital'), local('DSDIGI'); font-weight:900; font-style:normal; }
