:root{
  --espoch-red:#b5121b; --espoch-red-dark:#8c0d14; --ink:#20242a; --muted:#6b7280;
  --line:#d9dde3; --soft:#f5f6f8; --ok:#16803a; --warn:#b26a00; --danger:#b42318;
  --shadow:0 8px 24px rgba(0,0,0,.08); --radius:14px;
}
*{box-sizing:border-box} body{margin:0;font-family:Arial,Helvetica,sans-serif;background:#f7f7f8;color:var(--ink)}
a{color:inherit}.topbar{height:58px;background:white;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:14px;padding:0 18px;position:sticky;top:0;z-index:20}
.brand-mark{width:42px;height:42px;object-fit:cover;border-radius:5px}.brand-title{font-weight:700;font-size:18px}.brand-sub{font-size:12px;color:var(--muted)}
.app-shell{max-width:1180px;margin:24px auto;padding:0 16px}.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.card+.card{margin-top:18px}
h1,h2,h3{margin:0 0 12px} h1{font-size:26px} h2{font-size:20px} h3{font-size:16px}.muted{color:var(--muted)}
.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.btn{appearance:none;border:0;border-radius:10px;padding:11px 16px;font-weight:700;cursor:pointer}.btn-primary{background:var(--espoch-red);color:#fff}.btn-primary:hover{background:var(--espoch-red-dark)}.btn-secondary{background:#eceff3;color:#222}.btn-danger{background:var(--danger);color:white}.btn-success{background:var(--ok);color:white}.btn:disabled{opacity:.45;cursor:not-allowed}
.input,.select{width:100%;padding:11px 12px;border:1px solid #cfd4dc;border-radius:9px;background:#fff;font-size:15px}.input:focus,.select:focus{outline:2px solid rgba(181,18,27,.15);border-color:var(--espoch-red)}label{display:block;font-weight:700;font-size:13px;margin:0 0 6px}.field{margin-bottom:14px}
.login-wrap{min-height:calc(100vh - 58px);display:grid;place-items:center;padding:24px}.login-card{max-width:420px;width:100%}.login-logo{display:block;width:132px;margin:0 auto 16px}.center{text-align:center}.error{color:var(--danger);font-size:13px;margin-top:8px}.success{color:var(--ok);font-size:13px;margin-top:8px}
.toolbar{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap}.tabs{display:flex;gap:8px;flex-wrap:wrap}.tab{padding:9px 13px;border-radius:9px;background:#eef0f3;cursor:pointer;font-weight:700}.tab.active{background:var(--espoch-red);color:white}
.candidate-card{overflow:hidden;padding:0}.candidate-photo{width:100%;aspect-ratio:1/1;object-fit:cover;background:#eee}.candidate-body{padding:14px}.candidate-name{font-size:18px;font-weight:700}.candidate-career{font-size:13px;color:var(--muted);margin-top:4px}.badge{display:inline-block;padding:4px 8px;border-radius:999px;font-size:12px;font-weight:700}.badge-ok{background:#e8f6ec;color:var(--ok)}.badge-pending{background:#fff2df;color:var(--warn)}.badge-gray{background:#eef0f3;color:#4b5563}
.score-section{border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:14px}.score-row{display:grid;grid-template-columns:1fr 92px;gap:12px;align-items:center;padding:8px 0;border-bottom:1px dashed #e4e6ea}.score-row:last-child{border-bottom:0}.score-label{font-size:14px}.score-max{font-size:12px;color:var(--muted)}.score-input{text-align:center;font-weight:700}
.total-box{background:#faf1f2;border:1px solid #efc9cd;border-radius:12px;padding:14px;text-align:center}.total-value{font-size:36px;font-weight:800;color:var(--espoch-red)}
.photo-hero{display:grid;grid-template-columns:180px 1fr;gap:18px;align-items:center}.photo-hero img{width:180px;height:180px;border-radius:16px;object-fit:cover;border:3px solid white;box-shadow:var(--shadow)}
.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse;background:#fff}.table th,.table td{border-bottom:1px solid var(--line);padding:10px 9px;text-align:left;white-space:nowrap}.table th{font-size:12px;text-transform:uppercase;background:#f6f7f9}.table td{font-size:14px}.rank{font-size:20px;font-weight:800;color:var(--espoch-red)}
.stat{background:#fff;border:1px solid var(--line);border-radius:12px;padding:15px}.stat-num{font-size:28px;font-weight:800}.stat-label{font-size:12px;color:var(--muted);text-transform:uppercase}.hr{height:1px;background:var(--line);margin:16px 0}.hidden{display:none!important}
.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.45);display:grid;place-items:center;padding:18px;z-index:100}.modal{background:#fff;border-radius:14px;width:min(720px,100%);max-height:90vh;overflow:auto;padding:20px}
.preview-photo{width:150px;height:150px;object-fit:cover;border-radius:12px;background:#eee;border:1px solid var(--line)}
.notice{padding:12px 14px;border-radius:10px;background:#fff7e7;border:1px solid #f0d49b;font-size:13px}.danger-note{background:#fff0f0;border-color:#efb4b4}.footer{padding:20px;text-align:center;color:var(--muted);font-size:12px}
@media(max-width:820px){.grid-4,.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-2{grid-template-columns:1fr}.photo-hero{grid-template-columns:110px 1fr}.photo-hero img{width:110px;height:110px}.app-shell{margin-top:14px}}
@media(max-width:520px){.grid-4,.grid-3{grid-template-columns:1fr}.topbar{padding:0 10px}.brand-title{font-size:15px}.brand-sub{display:none}.card{padding:15px}.score-row{grid-template-columns:1fr 78px}.candidate-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.candidate-name{font-size:15px}.candidate-body{padding:10px}.btn{width:100%}.toolbar .btn{width:auto}}

.candidate-partial{font-size:13px;color:var(--muted);margin:0 0 10px}.section-footer{display:flex;gap:12px;align-items:center;justify-content:space-between;margin-top:12px;padding-top:12px;border-top:1px solid var(--line);font-size:14px}.section-footer .btn{width:auto}
@media(max-width:520px){.section-footer{align-items:stretch;flex-direction:column}.section-footer .btn{width:100%}}

/* Seguimiento de avance por jurado */
.juror-progress-list{display:grid;gap:14px;margin-top:14px}.juror-progress-card{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}.juror-progress-head{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:14px;background:#fafafb;border-bottom:1px solid var(--line);flex-wrap:wrap}.round-summary{display:flex;gap:10px;flex-wrap:wrap;font-size:13px}.round-summary span{background:#fff;border:1px solid var(--line);border-radius:999px;padding:6px 10px}.round-status{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;font-weight:800}.round-status.ok{background:#e8f6ec;color:var(--ok)}.round-status.pending{background:#eef0f3;color:#6b7280}.progress-table td:nth-child(n+3){text-align:center}.progress-table th:nth-child(n+3){text-align:center}@media(max-width:700px){.juror-progress-head{align-items:flex-start;flex-direction:column}.round-summary{width:100%}}
