:root{
  --bg: #150E0C;
  --bg-2: #211510;
  --bg-3: #2B1B15;
  --magenta: #E31E7A;
  --orange: #FF6B1A;
  --red: #D62839;
  --cream: #F5E8D8;
  --muted: #a3897a;
  --gold: #FFB627;
  --green: #2ecc71;
  --ring-dash: repeating-linear-gradient(90deg, var(--orange) 0 22px, transparent 22px 34px);
}
*{ box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
html{ touch-action: manipulation; }
html,body{ height:100%; overscroll-behavior: none; }
body{
  margin:0;
  padding-top: env(safe-area-inset-top);
  padding-bottom: env(safe-area-inset-bottom);
  background:
    radial-gradient(circle at 15% 0%, rgba(227,30,122,0.14), transparent 45%),
    radial-gradient(circle at 90% 10%, rgba(255,107,26,0.12), transparent 40%),
    var(--bg);
  color: var(--cream);
  font-family: 'Manrope', sans-serif;
  min-height:100%;
  -webkit-user-select: none;
  user-select: none;
}
input, .edit-row{ -webkit-user-select: text; user-select: text; }
.wrap{ max-width: 1100px; margin: 0 auto; padding: 20px 20px 60px; }

/* Header */
header{
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  flex-wrap: wrap;
  padding-bottom: 14px;
  margin-bottom: 18px;
  position: relative;
}
header::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:4px;
  background: var(--ring-dash);
  opacity:.9;
}
.brand{ display:flex; align-items:center; gap:12px; }
.brand svg{ width:46px; height:46px; flex-shrink:0; }
.brand-text h1{
  font-family:'Bungee', cursive;
  font-size: clamp(20px, 3vw, 30px);
  margin:0; letter-spacing:.5px;
  background: linear-gradient(90deg, var(--magenta), var(--orange));
  -webkit-background-clip:text; background-clip:text; color:transparent;
}
.brand-text p{ margin:2px 0 0; font-size:12px; letter-spacing:2.5px; text-transform:uppercase; color: var(--muted); font-weight:700; }
.slogan{
  font-family:'Bungee', cursive; font-size:13px; color: var(--bg);
  background: var(--gold); padding:7px 14px; border-radius:3px;
  transform: rotate(-2deg);
  box-shadow: 0 3px 0 rgba(0,0,0,.35);
  white-space:nowrap;
}

/* Connection status */
.conn-status{
  display:flex; align-items:center; gap:7px;
  font-size:11px; letter-spacing:1px; text-transform:uppercase; font-weight:700;
  color: var(--muted);
  position: fixed; top: calc(14px + env(safe-area-inset-top)); right: calc(14px + env(safe-area-inset-right));
  background: rgba(20,13,11,.85); border:1px solid #3a261e; padding:8px 12px; border-radius:20px;
  z-index: 60; backdrop-filter: blur(4px);
}
.conn-dot{ width:8px; height:8px; border-radius:50%; background: var(--red); flex-shrink:0; transition: background .2s; }
.conn-status.ok .conn-dot{ background: var(--green); box-shadow: 0 0 8px rgba(46,204,113,.7); }
.conn-status.ok{ color: var(--cream); }

/* Toolbar */
.toolbar{ display:flex; gap:10px; flex-wrap:wrap; margin-bottom: 18px; }
button{ font-family:'Manrope',sans-serif; cursor:pointer; border:none; touch-action: manipulation; }
.btn{
  background: var(--bg-3); color: var(--cream); border:1px solid #3a261e;
  padding:12px 18px; min-height:46px; border-radius:9px; font-weight:700; font-size:14px;
  transition: transform .12s ease, background .15s ease;
}
.btn:active{ transform: scale(.97); }
.btn.primary{ background: linear-gradient(90deg, var(--magenta), var(--red)); color:#fff; }
.btn.ghost{ background:transparent; border:1px solid #4a332a; color: var(--muted); }
@media (hover:hover) and (pointer:fine){
  .btn:hover{ background:#38241c; transform: translateY(-1px); }
  .btn.primary:hover{ filter: brightness(1.08); }
  .btn.ghost:hover{ color: var(--cream); border-color:#6b4a3b; }
  .btn.danger:hover{ background: var(--red); color:#fff; border-color: var(--red); }
}

/* Add team panel */
.add-panel{
  background: var(--bg-2); border:1px solid #33211a; border-radius:12px;
  padding:16px; margin-bottom:22px; display:flex; gap:10px; flex-wrap:wrap; align-items:flex-end;
}
.field{ display:flex; flex-direction:column; gap:5px; }
.field label{ font-size:11px; text-transform:uppercase; letter-spacing:1.5px; color: var(--muted); font-weight:700; }
.field input{
  background:#150E0C; border:1px solid #3a261e; color: var(--cream);
  padding:12px 14px; border-radius:9px; font-size:16px; font-family:'Manrope'; min-width:160px; min-height:46px;
}
.field input:focus{ outline:2px solid var(--orange); outline-offset:1px; }
.field.mesa input{ min-width:90px; }

/* Leaderboard */
#leaderboard{ display:flex; flex-direction:column; gap:12px; }
.empty{
  text-align:center; padding:60px 20px; color: var(--muted);
  border:2px dashed #3a261e; border-radius:14px; font-size:15px;
}
.empty b{ color: var(--cream); display:block; font-family:'Bungee'; font-size:18px; margin-bottom:6px; font-weight:400; }

.team-card{
  background: var(--bg-2);
  border:1px solid #33211a;
  border-radius:14px;
  padding:14px 16px;
  display:grid;
  grid-template-columns: 56px 1fr auto;
  align-items:center;
  gap:16px;
  position:relative;
  overflow:hidden;
}
.team-card::before{
  content:""; position:absolute; left:0; top:0; bottom:0; width:5px;
  background: #4a332a;
}
.team-card.rank-1::before{ background: linear-gradient(180deg, var(--gold), var(--orange)); }
.team-card.rank-2::before{ background: linear-gradient(180deg, #d9c8b8, var(--muted)); }
.team-card.rank-3::before{ background: linear-gradient(180deg, var(--red), #8a1f2b); }

.rank-badge{
  display:flex; align-items:center; justify-content:center;
  font-family:'Bungee'; font-size:20px; color: var(--muted);
  width:44px; height:44px;
}
.rank-1 .rank-badge{ color: var(--bg); }
.rank-badge.mask{ width:48px; height:48px; }

.team-info{ min-width:0; }
.team-name-row{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.team-name{
  font-family:'Bungee'; font-size: clamp(16px,2.2vw,21px); color: var(--cream);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:320px;
}
.mesa-tag{
  font-size:11.5px; font-weight:800; letter-spacing:1px; text-transform:uppercase;
  color: var(--bg); background: var(--orange); padding:3px 9px; border-radius:20px; white-space:nowrap;
}
.edit-row{ display:none; gap:8px; margin-top:8px; }
.edit-row.open{ display:flex; flex-wrap:wrap; }
.edit-row input{
  background:#150E0C; border:1px solid #3a261e; color:var(--cream);
  padding:10px 12px; border-radius:7px; font-size:16px; font-family:'Manrope'; min-height:42px;
}
.edit-row input.name{ width:170px; }
.edit-row input.mesa{ width:70px; }
.icon-btn{
  background:transparent; color: var(--muted); font-size:14px; padding:8px 10px; border-radius:6px; min-height:38px;
}
@media (hover:hover) and (pointer:fine){
  .icon-btn:hover{ color: var(--cream); background:#33211a; }
}

.score-col{ display:flex; flex-direction:column; align-items:flex-end; gap:8px; }
.points{ font-family:'Bungee'; font-size: clamp(26px,4vw,38px); line-height:1; color: var(--cream); }
.points-label{ font-size:10px; text-transform:uppercase; letter-spacing:2px; color:var(--muted); text-align:right; margin-top:-4px; }
.score-btns{ display:flex; gap:6px; flex-wrap:wrap; justify-content:flex-end; }
.score-btns button{
  width:44px; height:44px; border-radius:8px; font-weight:800; font-size:13px;
  background:#150E0C; color:var(--cream); border:1px solid #3a261e;
}
.score-btns button:active{ transform: scale(.93); }
.remove-btn{ color:#a35a5a; font-size:13px; }
@media (hover:hover) and (pointer:fine){
  .score-btns button.minus:hover{ background: var(--red); border-color: var(--red); }
  .score-btns button.plus:hover{ background: var(--magenta); border-color: var(--magenta); }
  .remove-btn:hover{ color: var(--red); }
}

/* Presentation (pantalla) sizing */
body.pantalla .wrap{ max-width:1300px; }
body.pantalla .team-card{ padding:20px 24px; grid-template-columns:70px 1fr auto; }
body.pantalla .points{ font-size: clamp(34px,5vw,52px); }
body.pantalla .team-name{ max-width:none; }
body.pantalla .slogan{ font-size:15px; }

@keyframes pulsePlus{ 0%{ background: rgba(227,30,122,0.35); } 100%{ background: transparent; } }
@keyframes pulseMinus{ 0%{ background: rgba(214,40,57,0.35); } 100%{ background: transparent; } }
.team-card.flash-plus{ animation: pulsePlus .35s ease; }
.team-card.flash-minus{ animation: pulseMinus .35s ease; }

/* PIN gate */
.pin-gate{
  position: fixed; inset:0; z-index:100; background: rgba(10,6,5,.92);
  display:flex; align-items:center; justify-content:center; padding:20px;
}
.pin-box{
  background: var(--bg-2); border:1px solid #33211a; border-radius:16px; padding:28px;
  max-width:320px; width:100%; text-align:center;
}
.pin-box h2{ font-family:'Bungee'; font-size:18px; margin:0 0 6px; font-weight:400; }
.pin-box p{ color: var(--muted); font-size:13px; margin:0 0 16px; }
.pin-box input{
  width:100%; text-align:center; letter-spacing:8px; font-size:22px;
  background:#150E0C; border:1px solid #3a261e; color: var(--cream);
  padding:14px; border-radius:9px; margin-bottom:12px; font-family:'Manrope';
}
.pin-box .btn{ width:100%; }
.pin-error{ color: var(--red); font-size:12px; min-height:16px; margin-bottom:8px; }

@media (max-width:640px){
  .team-card{ grid-template-columns:40px 1fr; }
  .score-col{ grid-column: 1 / -1; align-items:flex-start; margin-top:8px; flex-direction:row; justify-content:space-between; }
  .add-panel{ flex-direction:column; align-items:stretch; }
  .add-panel .btn{ width:100%; }
  .field input{ min-width:0; width:100%; }
  .toolbar{ justify-content:stretch; }
  .toolbar .btn{ flex:1; }
  body.pantalla .team-card{ grid-template-columns:52px 1fr; padding:16px 14px; }
}

@media (min-width:641px) and (max-width:1024px){
  .team-card{ padding:18px 18px; }
  body.pantalla .team-card{ padding:24px 26px; }
}
