:root {
  --bg: #0b0b0f;
  --s2: #131318;
  --b1: rgba(255,255,255,0.08);
  --t2: #888899;
  --t3: #555566;
  --font-head: 'Gilroy', 'Inter', sans-serif;
  --gold: #e0b94c;
  --gold-dim: rgba(224,185,76,.12);
  --gold-b: rgba(224,185,76,.35);
  --silver: #b8bec9;
  --silver-dim: rgba(184,190,201,.10);
  --silver-b: rgba(184,190,201,.3);
  --bronze: #c98a5a;
  --bronze-dim: rgba(201,138,90,.12);
  --bronze-b: rgba(201,138,90,.3);
}

* { box-sizing: border-box; margin: 0; padding: 0; }
  html, body { background: #0b0b0f; }
  .app { background: #0b0b0f; min-height: 100vh; padding: 2rem 1.5rem; font-family: 'Gilroy', 'Inter', sans-serif; color: #e8e8ef; max-width: 1140px; margin: 0 auto; }
  .logo-wrap { display: flex; justify-content: center; margin-bottom: 2.5rem; }
  .logo-wrap img { height: 44px; }
  .card { background: #131318; border: 0.5px solid rgba(255,255,255,0.08); border-radius: 16px; padding: 1.5rem; margin-bottom: 1.25rem; }
  .section-label { font-size: 11px; font-weight: 500; letter-spacing: 0.08em; text-transform: uppercase; color: #555566; margin-bottom: 12px; }

  .upload-zone { border: 1.5px dashed rgba(255,255,255,0.12); border-radius: 12px; padding: 1.75rem; text-align: center; cursor: pointer; background: rgba(255,255,255,0.02); position: relative; transition: background 0.15s; }
  .upload-zone:hover { background: rgba(255,255,255,0.04); }
  .upload-zone input { position: absolute; inset: 0; opacity: 0; cursor: pointer; width: 100%; height: 100%; }
  .upload-icon { font-size: 26px; color: #555566; margin-bottom: 8px; }
  .upload-label { font-size: 14px; color: #888899; }
  .upload-hint { font-size: 12px; color: #444455; margin-top: 4px; }
  .file-badge { display: inline-flex; align-items: center; gap: 6px; background: rgba(184,97,221,0.15); color: #c98de8; font-size: 12px; padding: 4px 10px; border-radius: 99px; margin-top: 10px; }

  .weights-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
  .weight-item label { display: block; font-size: 11px; color: #555566; margin-bottom: 5px; }
  .weight-item input { width: 100%; background: #1a1a24; border: 0.5px solid rgb(210 215 3 / 52%); border-radius: 8px; padding: 8px 12px; font-size: 14px; color: #e8e8ef; font-family: inherit; outline: none; }
  .weight-item input:focus { border-color: rgba(184,97,221,0.5); }
  .weight-suffix { display: flex; align-items: center; position: relative; }
  .weight-suffix input { padding-right: 28px; }
  .weight-suffix span { position: absolute; right: 10px; color: #555566; font-size: 13px; pointer-events: none; }

  .btn-row { display: flex; gap: 10px; }
  .btn { display: inline-flex; align-items: center; gap: 7px; font-size: 13px; font-weight: 500; padding: 9px 18px; border-radius: 10px; border: none; cursor: pointer; font-family: inherit; transition: opacity 0.15s; }
  .btn-calc { background: #d2d703; color: #0b0b0e; flex: 1; justify-content: center; }
  .btn-calc:hover { opacity: 0.88; }
  .btn-download { background: #d2d703; color: #0b0b0e; }
  .btn-download:hover { background: rgba(184,97,221,0.22); }
  .btn-reset { background: rgba(255,255,255,0.05); color: #888899; border: 0.5px solid rgba(255,255,255,0.1); }
  .btn-reset:hover { background: rgba(255,255,255,0.09); }
  .btn-template { background: rgb(71 71 32); color: #d2d703; border: 0.5px solid rgb(210 215 3 / 52%); width: 100%; justify-content: center; margin-bottom: 12px; }
  .btn-template:hover { background: rgb(90 90 20); }

  .sum-warning { font-size: 12px; color: #e09540; margin-top: 8px; display: none; }

  .error-box { background: rgba(224,79,79,0.1); color: #e04f4f; border-radius: 10px; padding: 10px 14px; font-size: 13px; margin-top: 10px; }
  #result-section { display: none; }

/* Summary table (table-export.css стиль) */
.summary-section{margin-top:16px}
.tbl-wrap{overflow-x:auto;border-radius:10px;border:1px solid var(--b1);-webkit-overflow-scrolling:touch}
.tbl-wrap table{width:100%;border-collapse:collapse;min-width:600px}
thead tr.r-judges th{padding:9px 10px 7px;background:var(--s2);font-family:var(--font-head);font-size:9px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--t2);border-bottom:1px solid var(--b1);white-space:nowrap}
thead tr.r-judges th.th-place{width:40px;text-align:center}
thead tr.r-judges th.th-name{text-align:left;min-width:120px}
thead tr.r-judges th.th-total{text-align:center;min-width:56px}
thead tr.r-judges th.th-judge{text-align:center}
.j-sep{border-left:2px solid var(--bg)!important}
thead tr.r-crit th{padding:4px 8px;background:var(--s2);font-size:10px;font-weight:500;text-align:center;white-space:nowrap;border-bottom:2px solid var(--bg)}
.hc-tech{background:rgba(74,144,217,.11)!important;color:#4a90d9;border-bottom-color:rgba(74,144,217,.28)!important}
.hc-ch{background:rgba(39,168,110,.11)!important;color:#27a86e;border-bottom-color:rgba(39,168,110,.28)!important}
.hc-cr{background:rgba(168,85,247,.11)!important;color:#a855f7;border-bottom-color:rgba(168,85,247,.28)!important}
.hc-sh{background:rgba(224,149,64,.11)!important;color:#e09540;border-bottom-color:rgba(224,149,64,.28)!important}
.hc-sm{background:rgba(184,97,221,.11)!important;color:#b861dd;border-bottom-color:rgba(184,97,221,.28)!important}
.tbl-wrap tbody tr{border-bottom:1px solid var(--b1)}
.tbl-wrap tbody tr:last-child{border-bottom:none}
.tbl-wrap tbody tr:hover{background:var(--s2)}
.tbl-wrap tbody tr.rk1{background:rgba(201,168,76,.05)}.tbl-wrap tbody tr.rk2{background:rgba(158,166,180,.04)}.tbl-wrap tbody tr.rk3{background:rgba(184,125,75,.04)}
.tbl-wrap tbody tr.rk1:hover{background:rgba(201,168,76,.09)}.tbl-wrap tbody tr.rk2:hover{background:rgba(158,166,180,.08)}.tbl-wrap tbody tr.rk3:hover{background:rgba(184,125,75,.08)}
.tbl-wrap tbody td{padding:7px 9px;vertical-align:middle;font-size:12px;text-align:center;white-space:nowrap}
.td-place{text-align:center}
.medal{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;font-family:var(--font-head);font-size:9px;font-weight:700}
.m1{background:var(--gold-dim);color:var(--gold);border:1px solid var(--gold-b)}.m2{background:var(--silver-dim);color:var(--silver);border:1px solid var(--silver-b)}.m3{background:var(--bronze-dim);color:var(--bronze);border:1px solid var(--bronze-b)}
.mn{font-size:10px;color:var(--t3);font-family:var(--font-head)}
.td-name{text-align:left!important;font-weight:500;font-size:13px}
.td-total{font-family:var(--font-head);font-size:13px;font-weight:700}
.rk1 .td-total{color:var(--gold)}.rk2 .td-total{color:var(--silver)}.rk3 .td-total{color:var(--bronze)}
.tc-tech{color:#4a90d9}.tc-ch{color:#27a86e}.tc-cr{color:#a855f7}.tc-sh{color:#e09540}.tc-sm{color:#b861dd;font-weight:600}
tfoot tr{border-top:2px solid var(--bg)}
tfoot td{padding:6px 9px;background:var(--s2);font-size:10px;font-weight:500;text-align:center;white-space:nowrap}
tfoot .ft-label{text-align:left;color:var(--t3);font-family:var(--font-head);font-size:9px;letter-spacing:.06em;text-transform:uppercase}
tfoot .ft-total{color:var(--t2);font-family:var(--font-head);font-size:10px}
tfoot .ft-tech{background:rgba(74,144,217,.11);color:#4a90d9}tfoot .ft-ch{background:rgba(39,168,110,.11);color:#27a86e}
tfoot .ft-cr{background:rgba(168,85,247,.11);color:#a855f7}tfoot .ft-sh{background:rgba(224,149,64,.11);color:#e09540}
tfoot .ft-sm{background:rgba(184,97,221,.11);color:#b861dd;font-weight:600}

  /* ===== Mobile ===== */
  @media (max-width: 720px) {
    .app { padding: 1.25rem 0.85rem; }
    .card { padding: 1.1rem; border-radius: 14px; margin-bottom: 1rem; }
    .weights-grid { grid-template-columns: 1fr 1fr; gap: 8px; }
    .btn-row { flex-direction: column; }
    .btn { width: 100%; justify-content: center; }
    .upload-zone { padding: 1.25rem 0.75rem; }
    .logo-wrap { margin-bottom: 1.5rem; }
    .logo-wrap img { height: 36px; }
    .tbl-wrap table { min-width: 520px; }
    thead tr.r-judges th { font-size: 8px; padding: 6px 5px; }
    .tbl-wrap tbody td { font-size: 10px; padding: 5px 6px; }
    .td-name { font-size: 11px; }
    .td-total { font-size: 12px; }
    tfoot td { font-size: 9px; padding: 5px 6px; }
  }

  @media (max-width: 420px) {
    .weights-grid { grid-template-columns: 1fr; }
  }

/* ===== ТАБЫ ===== */
.tabs-row { display: flex; gap: 6px; margin-bottom: 14px; }
.tab-btn { flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 6px; font-size: 12px; font-weight: 500; padding: 8px 10px; border-radius: 9px; border: 0.5px solid rgb(210 215 3 / 52%); cursor: pointer; font-family: inherit; background: rgba(255,255,255,0.03); color: #555566; transition: all 0.15s; }
.tab-btn:hover { background: rgba(255,255,255,0.06); color: #888899; }
.tab-btn.active { background: rgb(71 71 32); color: #d2d703; }
.tab-panel { }

/* ===== TEXTAREA ===== */
textarea { width: 100%; background: #1a1a24; border: 0.5px solid rgba(255,255,255,0.1); border-radius: 10px; padding: 10px 12px; font-size: 12px; color: #e8e8ef; font-family: 'Courier New', monospace; outline: none; resize: vertical; line-height: 1.5; }
textarea:focus { border-color: rgba(184,97,221,0.5); }
textarea::placeholder { color: #444455; }

/* ===== СЕЛЕКТЫ ТОЧНОСТИ ===== */
.precision-row { display: flex; gap: 10px; margin-top: 14px; padding-top: 14px; border-top: 0.5px solid rgba(255,255,255,0.06); }
.precision-row select { width: 100%; background: #1a1a24; border: 0.5px solid rgba(255,255,255,0.1); border-radius: 8px; padding: 8px 12px; font-size: 13px; color: #e8e8ef; font-family: inherit; outline: none; cursor: pointer; appearance: none; -webkit-appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23555566' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 10px center; padding-right: 28px; }
.precision-row select:focus { border-color: rgba(184,97,221,0.5); }

@media (max-width: 720px) {
  .tabs-row { flex-direction: column; }
  .precision-row { flex-direction: column; }
}