/* ============================================================
   Demo Day · El juego de las finanzas
   Sistema de diseño — azul corporativo, elegante y minimalista
   ============================================================ */

/* Tipografía servida desde el propio proyecto: no depende de Google Fonts,
   así se ve igual aunque la red del salón bloquee dominios externos. */
@font-face{
  font-family:'Inter';
  font-style:normal;
  font-display:swap;
  font-weight:100 900;
  src:url('../fonts/inter-latin-ext-wght-normal.woff2') format('woff2-variations');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:'Inter';
  font-style:normal;
  font-display:swap;
  font-weight:100 900;
  src:url('../fonts/inter-latin-wght-normal.woff2') format('woff2-variations');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

:root{
  /* marca */
  --navy-950:#010b31;
  --navy-900:#000928;
  --navy-800:#00097e;   /* azul corporativo */
  --blue-600:#0052cc;
  --blue-500:#0067f5;   /* azul brillante corporativo */
  --blue-400:#3d8bff;
  --green-500:#02cb87;  /* verde corporativo */
  --amber-400:#ffc247;
  --red-400:#ff6b6b;

  /* superficies */
  --white:#ffffff;
  --txt:#ffffff;
  --txt-2:rgba(255,255,255,.70);
  --txt-3:rgba(255,255,255,.46);
  --line:rgba(255,255,255,.12);
  --line-2:rgba(255,255,255,.20);
  --surf:rgba(255,255,255,.055);
  --surf-2:rgba(255,255,255,.09);
  --surf-3:rgba(255,255,255,.14);

  --r-sm:10px; --r:16px; --r-lg:22px; --r-xl:28px;
  --sh:0 18px 48px rgba(0,0,0,.34);
  --sh-sm:0 6px 18px rgba(0,0,0,.22);
  --ease:cubic-bezier(.22,.61,.36,1);
  --maxw:1240px;
}

*,*::before,*::after{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  font-family:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif;
  color:var(--txt);
  background:var(--navy-950);
  -webkit-font-smoothing:antialiased;
  letter-spacing:-.01em;
  min-height:100vh;
}
body::before{
  content:'';position:fixed;inset:0;z-index:-2;
  background:
    radial-gradient(1200px 760px at 10% -14%, rgba(0,103,245,.50), transparent 60%),
    radial-gradient(1000px 700px at 95% 2%,  rgba(0,60,200,.42),  transparent 58%),
    radial-gradient(1100px 820px at 50% 118%, rgba(2,203,135,.13), transparent 60%),
    linear-gradient(168deg,#031a5c 0%,#02114a 34%,#010c36 68%,#010827 100%);
}
body::after{
  content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.30;
  background-image:
    linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px);
  background-size:64px 64px;
  mask-image:radial-gradient(circle at 50% 0%,#000 0%,transparent 75%);
  -webkit-mask-image:radial-gradient(circle at 50% 0%,#000 0%,transparent 75%);
}

::selection{background:rgba(0,103,245,.45)}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,.16);border-radius:8px}
::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.26)}
::-webkit-scrollbar-track{background:transparent}

/* ---------------- tipografía ---------------- */
h1,h2,h3,h4{margin:0;font-weight:700;letter-spacing:-.028em;line-height:1.15}
h1{font-size:clamp(1.7rem,3.2vw,2.5rem)}
h2{font-size:clamp(1.25rem,2vw,1.6rem)}
h3{font-size:1.05rem}
p{margin:0;line-height:1.6}
a{color:var(--blue-400);text-decoration:none}
.muted{color:var(--txt-2)}
.dim{color:var(--txt-3)}
.small{font-size:.82rem}
.xs{font-size:.74rem}
.up{text-transform:uppercase;letter-spacing:.14em;font-weight:600;font-size:.68rem;color:var(--txt-3)}
.mono{font-variant-numeric:tabular-nums;font-feature-settings:'tnum'}
.center{text-align:center}

/* ---------------- layout ---------------- */
.wrap{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 24px}
.stack{display:flex;flex-direction:column}
.row{display:flex;align-items:center;gap:12px}
.between{display:flex;align-items:center;justify-content:space-between;gap:16px}
.grow{flex:1}
.gap-6{gap:6px}.gap-8{gap:8px}.gap-12{gap:12px}.gap-16{gap:16px}.gap-24{gap:24px}
.mt-8{margin-top:8px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}.mt-32{margin-top:32px}
.hidden{display:none !important}

/* ---------------- header ---------------- */
.topbar{
  position:sticky;top:0;z-index:40;
  backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  background:linear-gradient(to bottom,rgba(3,17,63,.90),rgba(3,17,63,.58));
  border-bottom:1px solid var(--line);
}
.topbar .inner{display:flex;align-items:center;gap:18px;height:70px;
  width:100%;max-width:var(--maxw);margin:0 auto;padding:0 24px}
.logo{height:30px;width:auto;display:block;flex:none}
.logo.sm{height:24px}
.divider-v{width:1px;height:26px;background:var(--line-2);flex:none}
.brandtxt{display:flex;flex-direction:column;line-height:1.15;min-width:0}
.brandtxt b{font-size:.94rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brandtxt span{font-size:.7rem;color:var(--txt-3);letter-spacing:.1em;text-transform:uppercase}

/* conexión */
.conn{display:inline-flex;align-items:center;gap:7px;font-size:.74rem;color:var(--txt-3);
  padding:6px 11px;border:1px solid var(--line);border-radius:99px;background:var(--surf);white-space:nowrap}
.conn i{width:7px;height:7px;border-radius:99px;background:var(--amber-400);display:block;flex:none}
.conn.ok i{background:var(--green-500);box-shadow:0 0 0 4px rgba(2,203,135,.16)}
.conn.off i{background:var(--red-400);box-shadow:0 0 0 4px rgba(255,107,107,.16)}

/* ---------------- superficies ---------------- */
.card{
  background:var(--surf);border:1px solid var(--line);border-radius:var(--r-lg);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  box-shadow:var(--sh);
}
.card.pad{padding:26px}
.panel{background:var(--surf);border:1px solid var(--line);border-radius:var(--r);padding:18px}
.hr{height:1px;background:var(--line);border:0;margin:20px 0}

/* ---------------- botones ---------------- */
.btn{
  --bg:var(--surf-2); --bd:var(--line-2); --fg:var(--txt);
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  font:inherit;font-size:.88rem;font-weight:600;letter-spacing:-.01em;
  padding:11px 18px;border-radius:var(--r-sm);cursor:pointer;
  background:var(--bg);border:1px solid var(--bd);color:var(--fg);
  transition:transform .16s var(--ease),background .18s,border-color .18s,opacity .18s;
  white-space:nowrap;
}
.btn:hover{background:var(--surf-3);transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn:disabled{opacity:.4;cursor:not-allowed;transform:none}
.btn.primary{--bg:linear-gradient(135deg,var(--blue-500),var(--blue-600));--bd:transparent;
  box-shadow:0 10px 26px rgba(0,103,245,.34)}
.btn.primary:hover{filter:brightness(1.08);background:linear-gradient(135deg,var(--blue-500),var(--blue-600))}
.btn.success{--bg:linear-gradient(135deg,var(--green-500),#00a86e);--bd:transparent;color:#00220f;
  box-shadow:0 10px 26px rgba(2,203,135,.28)}
.btn.success:hover{background:linear-gradient(135deg,var(--green-500),#00a86e);filter:brightness(1.06)}
.btn.danger{--bd:rgba(255,107,107,.4);color:#ffb4b4;--bg:rgba(255,107,107,.10)}
.btn.danger:hover{background:rgba(255,107,107,.18)}
.btn.ghost{--bg:transparent}
.btn.sm{padding:7px 13px;font-size:.79rem;border-radius:9px}
.btn.xsm{padding:4px 9px;font-size:.72rem;border-radius:8px}
.btn.block{width:100%}
.btn.lg{padding:15px 30px;font-size:1rem;border-radius:14px}

/* ---------------- formularios ---------------- */
label.f{display:block;font-size:.76rem;font-weight:600;color:var(--txt-2);margin-bottom:7px;letter-spacing:.01em}
input[type=text],input[type=number],input[type=password],select,textarea{
  width:100%;font:inherit;font-size:.92rem;color:var(--txt);
  background:rgba(255,255,255,.06);border:1px solid var(--line-2);
  border-radius:var(--r-sm);padding:11px 13px;outline:none;
  transition:border-color .18s,background .18s,box-shadow .18s;
}
input:focus,select:focus,textarea:focus{
  border-color:var(--blue-400);background:rgba(255,255,255,.10);
  box-shadow:0 0 0 4px rgba(0,103,245,.16)
}
input::placeholder,textarea::placeholder{color:rgba(255,255,255,.32)}
textarea{resize:vertical;min-height:86px;line-height:1.55}
select{appearance:none;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-opacity='.6' stroke-width='2.5' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 13px center;padding-right:38px}
select option{background:#04123f;color:#fff}
input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
input[type=number]{-moz-appearance:textfield}

.switch{position:relative;display:inline-flex;align-items:center;gap:11px;cursor:pointer;user-select:none}
.switch input{position:absolute;opacity:0;width:0;height:0}
.switch .track{width:46px;height:26px;border-radius:99px;background:rgba(255,255,255,.14);
  border:1px solid var(--line-2);position:relative;transition:background .2s,border-color .2s;flex:none}
.switch .track::after{content:'';position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:99px;
  background:#fff;transition:transform .22s var(--ease);box-shadow:0 2px 6px rgba(0,0,0,.3)}
.switch input:checked + .track{background:var(--blue-500);border-color:transparent}
.switch input:checked + .track::after{transform:translateX(20px)}
.switch span.lbl{font-size:.86rem;font-weight:500}

/* ---------------- chips / badges ---------------- */
.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:99px;
  font-size:.72rem;font-weight:600;background:var(--surf-2);border:1px solid var(--line);color:var(--txt-2)}
.chip.blue{background:rgba(0,103,245,.18);border-color:rgba(61,139,255,.4);color:#a9cbff}
.chip.green{background:rgba(2,203,135,.15);border-color:rgba(2,203,135,.38);color:#7ff0c6}
.chip.amber{background:rgba(255,194,71,.14);border-color:rgba(255,194,71,.36);color:#ffd98a}
.chip.red{background:rgba(255,107,107,.14);border-color:rgba(255,107,107,.36);color:#ffb0b0}

/* ---------------- tablas ---------------- */
.tbl-wrap{overflow-x:auto;border-radius:var(--r);border:1px solid var(--line)}
table{width:100%;border-collapse:collapse;font-size:.88rem}
thead th{
  text-align:left;font-weight:600;font-size:.7rem;text-transform:uppercase;letter-spacing:.11em;
  color:var(--txt-3);padding:13px 14px;background:rgba(255,255,255,.05);
  border-bottom:1px solid var(--line);white-space:nowrap;position:sticky;top:0;backdrop-filter:blur(10px)
}
tbody td{padding:12px 14px;border-bottom:1px solid rgba(255,255,255,.07);vertical-align:middle}
tbody tr:last-child td{border-bottom:0}
tbody tr{transition:background .15s}
tbody tr:hover{background:rgba(255,255,255,.035)}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
td.ctr,th.ctr{text-align:center}

/* ---------------- toasts ---------------- */
#toasts{position:fixed;right:22px;bottom:22px;z-index:200;display:flex;flex-direction:column;gap:10px;align-items:flex-end}
.toast{
  background:rgba(6,22,70,.95);border:1px solid var(--line-2);color:#fff;
  padding:12px 17px;border-radius:12px;font-size:.86rem;font-weight:500;
  box-shadow:var(--sh);backdrop-filter:blur(14px);
  animation:tin .3s var(--ease);max-width:340px
}
.toast.ok{border-left:3px solid var(--green-500)}
.toast.err{border-left:3px solid var(--red-400)}
.toast.info{border-left:3px solid var(--blue-400)}
.toast.out{opacity:0;transform:translateY(8px);transition:.35s}
@keyframes tin{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}

/* ---------------- pantalla de acceso ---------------- */
.gate{min-height:100vh;display:grid;place-items:center;padding:32px 20px}
.gate-card{width:100%;max-width:440px;padding:38px 34px;text-align:center}
.gate-card .logo{height:44px;margin:0 auto 26px}
.gate-card h1{font-size:1.5rem;margin-bottom:8px}
.gate-card .sub{color:var(--txt-2);font-size:.9rem;margin-bottom:28px}
.gate-card .f-block{text-align:left;margin-bottom:16px}

/* ---------------- barra de progreso ---------------- */
.bar{height:6px;border-radius:99px;background:rgba(255,255,255,.11);overflow:hidden}
.bar>i{display:block;height:100%;border-radius:99px;
  background:linear-gradient(90deg,var(--blue-500),var(--green-500));
  transition:width .5s var(--ease)}

/* ---------------- estado vacío ---------------- */
.empty{padding:56px 24px;text-align:center;color:var(--txt-3)}
.empty svg{opacity:.35;margin-bottom:14px}

/* ============================================================
   PANTALLA DEL JURADO
   ============================================================ */
.judge-head{padding:30px 0 18px}
.now-badge{display:inline-flex;align-items:center;gap:9px;font-size:.7rem;font-weight:700;
  letter-spacing:.16em;text-transform:uppercase;color:var(--blue-400);margin-bottom:12px}
.now-badge .dot{width:8px;height:8px;border-radius:99px;background:var(--blue-500);
  box-shadow:0 0 0 0 rgba(0,103,245,.6);animation:pulse 2s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(0,103,245,.55)}70%{box-shadow:0 0 0 12px rgba(0,103,245,0)}100%{box-shadow:0 0 0 0 rgba(0,103,245,0)}}
.company-name{font-size:clamp(1.9rem,4.4vw,3rem);font-weight:800;letter-spacing:-.035em;line-height:1.05}

.crit{
  border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;background:rgba(255,255,255,.035);
  transition:border-color .2s,background .2s;
}
.crit + .crit{margin-top:12px}
.crit.done{border-color:rgba(2,203,135,.30);background:rgba(2,203,135,.05)}
.crit-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}
.crit h3{font-size:1rem;font-weight:650;letter-spacing:-.015em}
.crit .desc{font-size:.82rem;color:var(--txt-3);margin-top:5px;max-width:62ch;line-height:1.5}
.crit-input{display:flex;align-items:center;gap:10px;flex:none}
.stepper{display:flex;align-items:center;gap:0;border:1px solid var(--line-2);border-radius:12px;
  background:rgba(255,255,255,.05);overflow:hidden}
.stepper button{
  width:38px;height:46px;flex:none;border:0;background:transparent;color:var(--txt-2);font-size:1.25rem;
  cursor:pointer;transition:background .15s,color .15s;line-height:1;font-family:inherit
}
.stepper button:hover{background:rgba(255,255,255,.10);color:#fff}
.stepper input{
  width:74px;height:46px;text-align:center;border:0;border-left:1px solid var(--line);
  border-right:1px solid var(--line);border-radius:0;background:transparent;
  font-size:1.18rem;font-weight:700;font-variant-numeric:tabular-nums;padding:0
}
.stepper input:focus{box-shadow:none;background:rgba(0,103,245,.14)}
.quick{display:flex;gap:5px;flex-wrap:wrap;margin-top:11px}
.quick button{
  min-width:38px;padding:6px 9px;font-size:.76rem;font-weight:600;border-radius:8px;cursor:pointer;
  background:rgba(255,255,255,.05);border:1px solid var(--line);color:var(--txt-2);font-family:inherit;
  transition:.15s
}
.quick button:hover{background:rgba(0,103,245,.22);border-color:var(--blue-400);color:#fff}
.quick button.on{background:var(--blue-500);border-color:transparent;color:#fff}

.score-live{
  display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;
  padding:20px 24px;border-radius:var(--r);
  background:linear-gradient(135deg,rgba(0,103,245,.18),rgba(2,203,135,.10));
  border:1px solid rgba(61,139,255,.28)
}
.score-live .big{font-size:2.6rem;font-weight:800;letter-spacing:-.045em;line-height:1;font-variant-numeric:tabular-nums}

.co-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:10px}
.co-item{
  display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left;
  padding:13px 15px;border-radius:12px;cursor:pointer;font-family:inherit;font-size:.87rem;font-weight:550;
  background:rgba(255,255,255,.045);border:1px solid var(--line);color:var(--txt);transition:.16s
}
.co-item:hover{background:rgba(255,255,255,.09);border-color:var(--line-2);transform:translateY(-1px)}
.co-item.on{border-color:var(--blue-400);background:rgba(0,103,245,.18)}
.co-item .st{font-size:.68rem;font-weight:700;flex:none}
.co-item .st.ok{color:var(--green-500)}
.co-item .st.pend{color:var(--txt-3)}

/* ============================================================
   PANTALLA PÚBLICA
   ============================================================ */
.hero{padding:44px 0 26px;text-align:center}
.hero .logo{height:54px;margin:0 auto 22px}
.hero h1{font-size:clamp(2rem,5vw,3.2rem);font-weight:800;letter-spacing:-.04em}
.hero .sub{color:var(--txt-2);margin-top:10px;font-size:1rem}

.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:26px 0}
.stat{padding:16px 18px;border-radius:var(--r);background:var(--surf);border:1px solid var(--line);text-align:center}
.stat .v{font-size:1.7rem;font-weight:800;letter-spacing:-.035em;font-variant-numeric:tabular-nums;line-height:1.1}
.stat .k{font-size:.68rem;text-transform:uppercase;letter-spacing:.13em;color:var(--txt-3);margin-top:5px;font-weight:600}

.lock{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:8px;
  background:rgba(255,255,255,.07);border:1px solid var(--line);color:var(--txt-3)}
.lock svg{width:14px;height:14px}

.pill-score{display:inline-flex;align-items:center;justify-content:center;min-width:46px;padding:5px 9px;
  border-radius:9px;font-weight:700;font-size:.86rem;font-variant-numeric:tabular-nums;
  background:rgba(255,255,255,.07);border:1px solid var(--line)}
.pill-score.hi{background:rgba(2,203,135,.16);border-color:rgba(2,203,135,.36);color:#8df3cf}

.reveal-cta{
  text-align:center;padding:38px 26px;border-radius:var(--r-xl);
  background:linear-gradient(135deg,rgba(0,103,245,.20),rgba(0,9,126,.30));
  border:1px solid rgba(61,139,255,.26)
}

.podium{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;align-items:end;margin:8px 0 30px}
.pod{padding:24px 18px;border-radius:var(--r-lg);text-align:center;border:1px solid var(--line);
  background:var(--surf);position:relative;overflow:hidden;animation:rise .7s var(--ease) both}
.pod::before{content:'';position:absolute;inset:0 0 auto 0;height:3px}
.pod.p1{background:linear-gradient(180deg,rgba(255,194,71,.16),rgba(255,255,255,.04));
  border-color:rgba(255,194,71,.4);padding-top:34px;padding-bottom:34px}
.pod.p1::before{background:linear-gradient(90deg,#ffc247,#ffe9a8)}
.pod.p2::before{background:linear-gradient(90deg,#c7d3e6,#8fa2bd)}
.pod.p3::before{background:linear-gradient(90deg,#d69b6a,#a9713f)}
.pod .pos{font-size:.68rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--txt-3)}
.pod .nm{font-size:1.05rem;font-weight:700;margin:10px 0 12px;letter-spacing:-.02em;line-height:1.25}
.pod.p1 .nm{font-size:1.3rem}
.pod .sc{font-size:2rem;font-weight:800;letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.pod.p1 .sc{font-size:2.5rem;color:#ffd67a}
@keyframes rise{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
.pod.p2{animation-delay:.05s}.pod.p1{animation-delay:.18s}.pod.p3{animation-delay:.1s}

.rank-pos{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;
  font-size:.78rem;font-weight:700;background:rgba(255,255,255,.07);border:1px solid var(--line);flex:none}
.rank-pos.g1{background:rgba(255,194,71,.2);border-color:rgba(255,194,71,.45);color:#ffd67a}
.rank-pos.g2{background:rgba(199,211,230,.16);border-color:rgba(199,211,230,.4);color:#dbe4f2}
.rank-pos.g3{background:rgba(214,155,106,.16);border-color:rgba(214,155,106,.4);color:#eab88f}

/* ============================================================
   ADMIN
   ============================================================ */
.tabs{display:flex;gap:6px;flex-wrap:wrap;padding:6px;background:var(--surf);border:1px solid var(--line);
  border-radius:14px;margin:24px 0}
.tabs button{
  padding:9px 16px;border-radius:10px;border:0;background:transparent;color:var(--txt-2);
  font:inherit;font-size:.85rem;font-weight:600;cursor:pointer;transition:.16s
}
.tabs button:hover{background:rgba(255,255,255,.07);color:#fff}
.tabs button.on{background:var(--blue-500);color:#fff;box-shadow:0 6px 18px rgba(0,103,245,.3)}
.tabpane{display:none;animation:fade .3s var(--ease)}
.tabpane.on{display:block}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}
.grid-3{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}

.editable-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;
  background:rgba(255,255,255,.04);border:1px solid var(--line);margin-bottom:8px}
.editable-row input{padding:8px 11px;font-size:.87rem}
.editable-row .drag{color:var(--txt-3);font-size:.72rem;font-weight:700;width:26px;text-align:center;flex:none;
  font-variant-numeric:tabular-nums}
.icon-btn{width:32px;height:32px;display:inline-grid;place-items:center;border-radius:8px;flex:none;
  background:rgba(255,255,255,.05);border:1px solid var(--line);color:var(--txt-2);cursor:pointer;
  font-family:inherit;font-size:.9rem;transition:.15s;padding:0}
.icon-btn:hover{background:rgba(255,255,255,.12);color:#fff}
.icon-btn.danger:hover{background:rgba(255,107,107,.2);color:#ffb0b0;border-color:rgba(255,107,107,.4)}

.matrix td,.matrix th{padding:9px 10px;font-size:.8rem}
.dotv{display:inline-block;width:11px;height:11px;border-radius:99px;background:rgba(255,255,255,.14)}
.dotv.ok{background:var(--green-500);box-shadow:0 0 0 3px rgba(2,203,135,.18)}
.dotv.part{background:var(--amber-400);box-shadow:0 0 0 3px rgba(255,194,71,.16)}

.alert{padding:13px 16px;border-radius:12px;font-size:.85rem;line-height:1.5;display:flex;gap:10px;align-items:flex-start}
.alert.warn{background:rgba(255,194,71,.10);border:1px solid rgba(255,194,71,.32);color:#ffdf9e}
.alert.ok{background:rgba(2,203,135,.10);border:1px solid rgba(2,203,135,.3);color:#8ef0cb}
.alert.info{background:rgba(0,103,245,.12);border:1px solid rgba(61,139,255,.3);color:#bcd6ff}
.alert.err{background:rgba(255,107,107,.10);border:1px solid rgba(255,107,107,.32);color:#ffb8b8}

/* modal */
.modal-bg{position:fixed;inset:0;z-index:150;background:rgba(1,8,38,.74);backdrop-filter:blur(8px);
  display:grid;place-items:center;padding:24px;animation:fade .2s}
.modal{width:100%;max-width:460px;padding:28px}

/* nota cargada por la organización (no por el jurado) */
.pill-score.org{background:rgba(255,194,71,.14);border-color:rgba(255,194,71,.34);color:#ffd98a}
.nota-org{max-width:88px;text-align:center;padding:9px 8px;font-weight:600;font-variant-numeric:tabular-nums}
.nota-org.ok{border-color:rgba(2,203,135,.42);background:rgba(2,203,135,.09)}
.tbl-part td{padding:8px 12px}
.crit-meta select{font-size:.82rem;padding:8px 10px;background-position:right 9px center;padding-right:30px}
.solo-movil{display:none}
.txt-corto{display:none}

/* ============================================================
   RESPONSIVE
   ============================================================ */

/* --- tablet --- */
@media (max-width:980px){
  .wrap{padding:0 18px}
  .grid-2{grid-template-columns:1fr}
  .crit-top{flex-direction:column;align-items:stretch;gap:12px}
  .crit-input{justify-content:flex-start}
}

/* --- móvil --- */
@media (max-width:760px){
  .wrap{padding:0 14px}
  .brandtxt{display:none}

  /* barra superior compacta: el texto estorba, los estados no */
  .topbar .inner{padding:0 12px;height:58px;gap:8px}
  .topbar .divider-v{display:none}
  .topbar .conn{font-size:0;gap:0;padding:9px;line-height:0}
  .topbar .conn i{width:9px;height:9px}
  .topbar .btn.compacta{padding:8px 11px}
  .topbar .btn.compacta > span{display:none}
  .txt-largo{display:none}
  .txt-corto{display:inline}

  /* objetivos de toque cómodos */
  .btn.sm{padding:9px 13px;font-size:.8rem}
  .btn.xsm{padding:8px 12px;font-size:.76rem}
  .icon-btn{width:38px;height:38px;font-size:1rem}
  .switch .track{width:50px;height:29px}
  .switch .track::after{width:23px;height:23px}
  .switch input:checked + .track::after{transform:translateX(21px)}
  .card.pad{padding:18px 16px}
  .panel{padding:14px}
  h1{font-size:1.55rem}
  h2{font-size:1.18rem}
  .hero{padding:26px 0 14px}
  .hero .logo{height:40px;margin-bottom:16px}
  .stats{grid-template-columns:repeat(2,1fr);gap:10px;margin:18px 0}
  .stat{padding:13px 12px}
  .stat .v{font-size:1.4rem}

  /* pestañas del admin: carrusel horizontal */
  .tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;
    margin:16px 0;border-radius:12px}
  .tabs::-webkit-scrollbar{display:none}
  .tabs button{flex:none;padding:9px 14px;font-size:.82rem}

  /* ---- ficha del jurado ---- */
  .judge-head{padding:20px 0 12px}
  .company-name{font-size:1.75rem}
  .crit{padding:15px 14px}
  .crit .desc{font-size:.79rem}
  .crit-input{width:100%}
  .stepper{width:100%}
  .stepper button{width:60px;height:54px;font-size:1.6rem}
  /* min-width:0 es indispensable: sin él el input no cede espacio y el botón + queda fuera */
  .stepper input{flex:1 1 0;width:auto;min-width:0;height:54px;font-size:1.4rem}
  .quick{gap:6px;margin-top:12px}
  .quick button{flex:1;min-width:0;padding:11px 4px;font-size:.86rem}

  /* barra fija con la nota y el botón de envío */
  .score-live{
    position:sticky;bottom:0;z-index:35;margin:18px -14px 0;border-radius:18px 18px 0 0;
    padding:12px 16px calc(12px + env(safe-area-inset-bottom));
    flex-wrap:nowrap;gap:12px;
    background:linear-gradient(180deg,rgba(3,17,63,.92),rgba(2,10,42,.98));
    backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
    border:1px solid rgba(61,139,255,.26);border-bottom:0;
    box-shadow:0 -12px 34px rgba(0,0,0,.42)
  }
  .score-live > div:first-child{min-width:0}
  .score-live .big{font-size:1.9rem;margin-top:2px}
  .score-live #detalleCalculo{display:none}
  .score-live #chipGuardado{display:none}
  .score-live .btn.lg{padding:13px 18px;font-size:.9rem;flex:none}
  .co-list{grid-template-columns:1fr}

  /* ---- tablas que se convierten en tarjetas ---- */
  .cards{border:0;overflow:visible;background:transparent}
  .cards table,.cards tbody,.cards tr,.cards td{display:block;width:100%}
  .cards thead{display:none}
  .cards tr{
    border:1px solid var(--line);border-radius:16px;margin-bottom:10px;
    background:rgba(255,255,255,.045);overflow:hidden
  }
  .cards tr:hover{background:rgba(255,255,255,.045)}
  .cards td{
    display:flex;align-items:center;justify-content:space-between;gap:14px;
    border:0;border-bottom:1px solid rgba(255,255,255,.07);padding:10px 14px;text-align:right
  }
  .cards td:last-child{border-bottom:0}
  .cards td::before{
    content:attr(data-lbl);flex:none;text-align:left;
    font-size:.7rem;text-transform:uppercase;letter-spacing:.09em;
    color:var(--txt-3);font-weight:600
  }
  .cards td[data-lbl="Empresa"]{
    justify-content:flex-start;gap:10px;background:rgba(255,255,255,.05);
    padding:13px 14px;font-size:1rem
  }
  .cards td[data-lbl="Empresa"]::before{display:none}
  .cards td[data-lbl="Posición"],.cards td[data-lbl="#"]{display:none}
  .cards td .empty{padding:30px 12px}
  .cards td:has(.empty)::before{display:none}
  .solo-movil{display:inline-flex}

  /* empresas todavía sin evaluar: una sola línea en vez de una tarjeta completa,
     si no la lista de 28 se vuelve interminable en el celular */
  .cards tr.sin-datos td{display:none}
  .cards tr.sin-datos td[data-lbl="Empresa"]{
    display:flex;background:transparent;border-bottom:0;padding:11px 14px;font-size:.92rem
  }
  .cards tr.sin-datos{opacity:.62;margin-bottom:6px}
  .cards tr.sin-datos b{font-weight:500}

  /* la matriz de avance conserva el scroll: son puntos, no texto */
  .matrix th:first-child,.matrix td:first-child{position:sticky;left:0;background:#04123f;z-index:2}

  /* ---- filas editables del admin ---- */
  .editable-row{flex-wrap:wrap;gap:8px;padding:12px}
  .editable-row input[data-k="nombre"]{flex:1 1 100%;order:-1}
  .editable-row input[data-k="clave"]{max-width:none !important;flex:1 1 auto}
  .editable-row .drag{order:-2;width:auto}
  /* criterios: dos filas etiqueta+control en vez de cuatro columnas apretadas */
  .crit-meta{
    width:100% !important;display:grid;grid-template-columns:auto 1fr;
    align-items:center;gap:9px 12px;margin-top:4px
  }
  .crit-meta > label.f{margin:0;white-space:nowrap}
  .crit-meta > div.row{min-width:0}
  .crit-meta input[data-k="ponderacion"]{min-width:0;text-align:center}
  #listaCriterios .panel > .row{flex-wrap:wrap;gap:10px}
  #listaCriterios .panel textarea{min-height:96px}
  #listaCriterios .panel .stack.gap-6{flex-direction:row;width:100%;justify-content:flex-end;gap:8px}

  /* podio */
  .podium{grid-template-columns:1fr;align-items:stretch;gap:10px}
  .pod{padding:18px 16px}
  .pod.p1{order:-1;padding:22px 16px}
  .pod .nm{margin:8px 0 10px}
  .pod.p1 .sc{font-size:2.1rem}

  .reveal-cta{padding:24px 18px}
  .gate-card{padding:28px 20px}
  .modal{padding:22px 18px}
  #toasts{right:12px;left:12px;bottom:12px;align-items:stretch}
  .toast{max-width:none}
}

@media (max-width:380px){
  .stats{grid-template-columns:1fr 1fr}
  .quick button{padding:10px 2px;font-size:.8rem}
  .stepper button{width:48px}
}

/* pantallas muy anchas: proyección en el salón */
@media (min-width:1500px){
  :root{--maxw:1400px}
  .hero h1{font-size:3.6rem}
}

/* impresión */
@media print{
  body::before,body::after{display:none}
  body{background:#fff;color:#000}
  .topbar,.tabs,.btn{display:none !important}
}
