body { background:#f5f6f8; }
.comp-bar { background:#fff; border-bottom:1px solid #dee2e6; margin-left:-12px; margin-right:-12px; padding:0 12px; }
.comp-bar .comp-title { font-weight:600; }
.comp-bar .nav-link { color:#495057; padding:.6rem 1rem; border-bottom:2px solid transparent; }
.comp-bar .nav-link.active { color:#000; border-bottom-color:#b3261e; font-weight:600; }
table.table-tight td, table.table-tight th { padding:.35rem .5rem; vertical-align:middle; }
.row-err > td { background:#fdecea !important; } .row-warn > td { background:#fff8e1 !important; }
.lock { color:#b45309; }
.dropzone { border:2px dashed #adb5bd; border-radius:.6rem; padding:1.4rem; text-align:center; background:#fff; color:#6c757d; }
.kpi .num { font-size:1.9rem; font-weight:600; line-height:1; }
.seg { display:flex; gap:2px; min-width:120px; } .seg span { flex:1; height:.5rem; background:#e9ecef; border-radius:2px; } .seg span.ok { background:#198754; }

/* Протокол */
.score-input { width:3.3rem; text-align:center; padding:.2rem .1rem; font-variant-numeric:tabular-nums; }
.score-input.is-min { background:#e7f1ff; border-color:#9ec5fe; text-decoration:underline dotted; }
.score-input.is-max { background:#fde2e1; border-color:#f1aeb5; text-decoration:underline dotted; }
.score-input.bad { background:#f8d7da; border-color:#dc3545; }
.total { font-size:1.05rem; font-variant-numeric:tabular-nums; }
tr.adv > td:first-child { box-shadow:inset 4px 0 0 #198754; }
tr.out { color:#8a9199; } tr.out > td:first-child { box-shadow:inset 4px 0 0 #ced4da; }
tr.tie > td { background:#fff5f5; } tr.tie > td:first-child { box-shadow:inset 4px 0 0 #dc3545; }
.place { display:inline-block; min-width:5.2rem; text-align:center; border-radius:1rem; padding:.15rem .6rem; font-weight:600; font-size:.85rem; }
.place.p1 { background:#ffd54f; } .place.p2 { background:#cfd8dc; } .place.p3 { background:#e6b98a; } .place.p4 { background:#eceff1; color:#546e7a; }
kbd { background:#343a40; }
.seg span.part { background:linear-gradient(90deg,#198754 50%,#e9ecef 50%); }

/* Публичная трансляция */
.live-dot { display:inline-block; width:.6rem; height:.6rem; border-radius:50%; background:#2ecc71; margin-right:.25rem; animation:livepulse 1.6s infinite; }
.live-off .live-dot { background:#e74c3c; animation:none; }
@keyframes livepulse { 0%{opacity:1} 50%{opacity:.3} 100%{opacity:1} }
tr.next > td { background:#fff8e1; } tr.next > td:first-child { box-shadow:inset 4px 0 0 #f0ad4e; }
.live-score { display:inline-block; min-width:2.6rem; text-align:center; padding:.1rem .35rem; border:1px solid #dee2e6; border-radius:.3rem; background:#fff; font-variant-numeric:tabular-nums; }
.live-score.is-min { background:#e7f1ff; border-color:#9ec5fe; text-decoration:underline dotted; }
.live-score.is-max { background:#fde2e1; border-color:#f1aeb5; text-decoration:underline dotted; }
.stage-badge { font-weight:600; }
@media print { header, footer, .navbar, .comp-bar, .no-print, .alert { display:none !important; } .print-sheet { border:0 !important; box-shadow:none !important; } body { background:#fff; } }
