/* KHGP Podlasie — panel wyników */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
    --navy:  #1a2e4a;
    --gold:  #c9a84c;
    --light: #f4f6f9;
    --white: #ffffff;
    --border:#dde1e7;
    --text:  #2c3e50;
    --muted: #6b7a8d;
    --ok:    #27ae60;
    --warn:  #e67e22;
    --err:   #e74c3c;
    --radius:6px;
    --shadow:0 2px 8px rgba(0,0,0,.10);
}

body {
    font-family: 'Segoe UI', system-ui, sans-serif;
    background: var(--light);
    color: var(--text);
    font-size: 14px;
    line-height: 1.5;
}

header {
    background: var(--navy);
    color: var(--white);
    padding: 12px 24px;
    display: flex;
    align-items: center;
    gap: 12px;
    box-shadow: var(--shadow);
}
header h1 { font-size: 18px; font-weight: 600; }

main { padding: 20px; max-width: 1400px; margin: 0 auto; }

.grid {
    display: grid;
    grid-template-columns: 1fr 340px;
    gap: 20px;
    margin-bottom: 20px;
}
@media (max-width: 900px) { .grid { grid-template-columns: 1fr; } }

.dwie-kolumny {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
}
@media (max-width: 700px) { .dwie-kolumny { grid-template-columns: 1fr; } }

/* Tabele z overflow-x:auto — mniejsze fonty/padding na telefonie żeby więcej się mieściło bez scrolla */
@media (max-width: 600px) {
    .tabela-wynikow th, .tabela-wynikow td { padding: 4px 6px !important; font-size: 11px !important; }
    .nav-tabs { font-size: 12px; }
}

.panel {
    background: var(--white);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 20px;
    box-shadow: var(--shadow);
}
.panel h2 {
    font-size: 15px;
    font-weight: 600;
    color: var(--navy);
    margin-bottom: 16px;
    padding-bottom: 8px;
    border-bottom: 2px solid var(--gold);
}
.panel h3 { font-size: 13px; color: var(--muted); margin: 12px 0 6px; }

/* Formularz */
.form-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    margin-bottom: 16px;
}
@media (max-width: 600px) { .form-grid { grid-template-columns: 1fr; } }

label {
    display: flex;
    flex-direction: column;
    gap: 3px;
    font-size: 12px;
    color: var(--muted);
    font-weight: 500;
}
label input, label select, label textarea {
    width: 100%;
    padding: 7px 10px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    font-size: 13px;
    color: var(--text);
    background: var(--white);
    transition: border-color .15s;
}
label input:focus, label select:focus, label textarea:focus {
    outline: none;
    border-color: var(--navy);
}

.dane-golebi textarea {
    width: 100%;
    font-family: 'Courier New', monospace;
    font-size: 11px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 8px;
    resize: vertical;
}
.hint { font-size: 11px; color: var(--muted); margin-bottom: 6px; }
.hint code { background: var(--light); padding: 1px 4px; border-radius: 3px; font-size: 10px; }

.btn-row { display: flex; gap: 8px; margin-top: 10px; flex-wrap: wrap; }
.btn {
    padding: 8px 16px;
    border: none;
    border-radius: var(--radius);
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
    transition: opacity .15s, transform .1s;
}
.btn:hover { opacity: .88; }
.btn:active { transform: scale(.97); }
.btn-primary  { background: var(--navy); color: #fff; }
.btn-secondary{ background: var(--gold); color: #fff; }
.btn-pdf      { background: #c0392b; color: #fff; font-size: 12px; padding: 6px 12px; }

/* Wynik obliczeń */
.wynik {
    margin-top: 16px;
    padding: 12px 16px;
    border-radius: var(--radius);
    font-size: 13px;
}
.wynik.ok   { background: #eafaf1; border-left: 4px solid var(--ok); }
.wynik.err  { background: #fdedec; border-left: 4px solid var(--err); }
.wynik.warn { background: #fef9e7; border-left: 4px solid var(--warn); }
.wynik ul { margin: 6px 0 0 16px; }
.wynik li { font-size: 12px; color: var(--muted); }

/* Lista lotów */
#lista-lotow .lot-item {
    padding: 10px 12px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
    transition: background .15s;
}
#lista-lotow .lot-item:hover { background: var(--light); }
#lista-lotow .lot-nr {
    background: var(--navy);
    color: #fff;
    width: 28px; height: 28px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 700;
    flex-shrink: 0;
}
#lista-lotow .lot-info { flex: 1; }
#lista-lotow .lot-msc { font-weight: 600; font-size: 13px; }
#lista-lotow .lot-meta { font-size: 11px; color: var(--muted); }

/* Tabele wyników */
.tabs { display: flex; gap: 4px; margin-bottom: 12px; }
.tab {
    padding: 6px 14px;
    border: 1px solid var(--border);
    background: var(--light);
    border-radius: var(--radius) var(--radius) 0 0;
    cursor: pointer;
    font-size: 12px;
    font-weight: 500;
    color: var(--muted);
}
.tab.active { background: var(--white); color: var(--navy); border-bottom-color: var(--white); }

.tab-content { }
.tab-content.hidden { display: none; }

.akcje-pdf { display: flex; gap: 8px; margin-bottom: 12px; }

.tabela-wynikow {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
    font-family: 'Courier New', monospace;
}
.tabela-wynikow th {
    background: var(--navy);
    color: #fff;
    padding: 6px 8px;
    text-align: left;
    white-space: nowrap;
    font-size: 11px;
}
.tabela-wynikow td {
    padding: 4px 8px;
    border-bottom: 1px solid var(--border);
    white-space: nowrap;
}
.tabela-wynikow tr:nth-child(even) td { background: #f8f9fb; }
.tabela-wynikow tr.w-bazie td { }
.tabela-wynikow tr.poza-baza td { color: var(--muted); }
.tabela-wynikow .pkt { font-weight: 600; color: var(--navy); text-align: right; }
.tabela-wynikow .g-tag {
    display: inline-block;
    background: var(--gold);
    color: #fff;
    font-size: 9px;
    padding: 1px 4px;
    border-radius: 3px;
    font-weight: 700;
}

.loader { text-align: center; color: var(--muted); padding: 24px; }
.hidden { display: none !important; }

/* Ostrzeżenia */
.tag-warn {
    display: inline-block;
    background: var(--warn);
    color: #fff;
    font-size: 10px;
    padding: 1px 6px;
    border-radius: 10px;
    margin-left: 4px;
}

/* ── Nawigacja zakładek głównych ── */
.nav-tabs {
    background: var(--white);
    border-bottom: 2px solid var(--border);
    padding: 0 20px;
    display: flex;
    gap: 4px;
}
.nav-tab {
    padding: 10px 20px;
    border: none;
    background: none;
    cursor: pointer;
    font-size: 13px;
    font-weight: 500;
    color: var(--muted);
    border-bottom: 3px solid transparent;
    margin-bottom: -2px;
    transition: all .15s;
}
.nav-tab:hover { color: var(--navy); }
.nav-tab.active { color: var(--navy); border-bottom-color: var(--gold); }

/* ── Sekcje ── */
.sekcja { padding-top: 4px; }
.sekcja.hidden { display: none; }

/* ── Upload area ── */
.upload-area {
    border: 2px dashed var(--border);
    border-radius: var(--radius);
    padding: 32px;
    text-align: center;
    cursor: pointer;
    transition: all .2s;
    background: var(--light);
    margin: 12px 0;
}
.upload-area:hover { border-color: var(--navy); background: #eef0f4; }
.upload-area.drag-over { border-color: var(--gold); background: #fef9ee; }
.upload-icon { font-size: 36px; margin-bottom: 8px; }

/* ── Info box ── */
.info-box {
    background: #eafaf1;
    border-left: 4px solid var(--ok);
    padding: 10px 14px;
    border-radius: var(--radius);
    font-size: 13px;
}
.info-box.warn { background: #fef9e7; border-left-color: var(--warn); }
.info-box.err  { background: #fdedec; border-left-color: var(--err); }

/* ── Tabela gołębi w parserze ── */
.tabela-mini { width:100%; border-collapse:collapse; font-size:11px; font-family:monospace; }
.tabela-mini th { background:var(--navy); color:#fff; padding:4px 6px; text-align:left; }
.tabela-mini td { padding:3px 6px; border-bottom:1px solid var(--border); }
.tabela-mini tr:nth-child(even) td { background:#f8f9fb; }

/* ── Sezon tabele ── */
.sezon-grid { display:grid; grid-template-columns:1fr 1fr; gap:20px; margin-bottom:20px; }
@media(max-width:900px){ .sezon-grid { grid-template-columns:1fr; } }

.sezon-panel { background:var(--white); border:1px solid var(--border); border-radius:var(--radius); padding:16px; }
.sezon-panel h3 { font-size:14px; color:var(--navy); margin-bottom:10px; padding-bottom:6px; border-bottom:1px solid var(--border); }

.ranking-table { width:100%; border-collapse:collapse; font-size:12px; }
.ranking-table th { background:var(--light); padding:5px 8px; text-align:left; font-size:11px; color:var(--muted); }
.ranking-table td { padding:4px 8px; border-bottom:1px solid var(--border); }
.ranking-table tr:hover td { background:#f0f4ff; }
.miejsce-1 { background:#fff8e1 !important; font-weight:700; }
.miejsce-2 { background:#f5f5f5 !important; }
.miejsce-3 { background:#fbe9e7 !important; }

/* Wyróżnienie własnych wierszy zalogowanego hodowcy w module Wyniki */
.wyn-wlasny td:first-child { box-shadow: inset 3px 0 0 var(--navy); }

.lot-badge { display:inline-block; background:var(--navy); color:#fff; font-size:10px; padding:1px 6px; border-radius:10px; margin:0 2px; }
.kat-badge { display:inline-block; padding:1px 6px; border-radius:10px; font-size:10px; font-weight:700; }
.kat-A { background:#dff0d8; color:#3c763d; }
.kat-B { background:#d9edf7; color:#31708f; }
.kat-C { background:#fcf8e3; color:#8a6d3b; }
.kat-M { background:#f2dede; color:#a94442; }

/* ═══ WIDOK MOBILNY — formularz spisu ═══════════════════════════════
   Te same pola i te same funkcje JS co w widoku desktop (spisDodaj(),
   kolorSelZmiana() itd.) — tylko inaczej ułożone i większe, pod dotyk. */

.rm-mobile #spis-add-row {
    display: flex !important;
    flex-direction: column;
    gap: 12px;
    background: var(--light);
    border: 1.5px solid var(--navy);
    border-radius: 14px;
    padding: 16px;
    margin-bottom: 14px;
}
.rm-mobile #spis-add-row label {
    font-size: 12px;
    font-weight: 700;
    color: var(--muted);
    text-transform: uppercase;
    letter-spacing: .3px;
}
.rm-mobile #spis-add-row input,
.rm-mobile #spis-add-row select {
    width: 100%;
    font-size: 17px !important;
    padding: 12px 10px !important;
    border-radius: 12px !important;
    margin-top: 5px;
    box-sizing: border-box;
}
.rm-mobile #spis-add-row > div {
    display: flex;
    gap: 8px;
}
.rm-mobile #spis-add-row button {
    flex: 1;
    font-size: 16px !important;
    padding: 13px 0 !important;
    border-radius: 12px !important;
}

/* Panel numeracji zawsze rozwinięty i widoczny na wierzchu na mobile —
   to jest główny skrót do szybkiego wpisywania, więc nie chowamy go */
.rm-mobile #spis-numeracje-body { display: block !important; }
.rm-mobile #spis-numeracje-panel > div:first-child { pointer-events: none; }
.rm-mobile #spis-numeracje-panel > div:first-child span { display: none; }
.rm-mobile #spis-numeracje-przyciski button,
.rm-mobile .numeracja-chip {
    font-size: 15px !important;
    padding: 10px 16px !important;
    border-radius: 12px !important;
    font-weight: 700;
}

/* Lista już dodanych gołębi — większe wiersze, łatwiejsze dotknięcie */
.rm-mobile #spis-tbody td {
    padding: 12px 8px !important;
    font-size: 14px !important;
}
.rm-mobile .tabela-wynikow th {
    font-size: 11px !important;
    padding: 8px 6px !important;
}

/* Górny pasek wyboru sekcji/hodowcy/typu — stack pionowy zamiast grid 4 kolumn */
.rm-mobile .spis-selector-row {
    display: flex !important;
    flex-direction: column !important;
    gap: 10px !important;
}
.rm-mobile .spis-selector-row label { width: 100%; }
.rm-mobile .spis-selector-row select,
.rm-mobile .spis-selector-row input,
.rm-mobile .spis-selector-row button {
    width: 100%;
    box-sizing: border-box;
    font-size: 15px !important;
    padding: 10px !important;
}

/* Nagłówek panelu spisu (tytuł/odznaki/przyciski) — pionowo zamiast w jednym rzędzie */
.rm-mobile .spis-panel-header {
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 8px;
}
.rm-mobile .spis-panel-header button { width: 100%; }

/* Pasek zakładek głównych — przewijany poziomo zamiast ściskania wszystkich
   naraz w jeden rząd (za dużo zakładek, żeby się zmieściły na wąskim ekranie) */
.rm-mobile .nav-tabs {
    overflow-x: auto;
    flex-wrap: nowrap !important;
    -webkit-overflow-scrolling: touch;
    padding: 0 10px !important;
}
.rm-mobile .nav-tab {
    flex-shrink: 0;
    padding: 10px 14px !important;
    font-size: 13px !important;
    white-space: nowrap;
}

/* Górny pasek nagłówka (tytuł, sezon, przełącznik widoku, użytkownik) —
   pozwól się zawinąć zamiast ściskać w jedną linię */
.rm-mobile header { flex-wrap: wrap; padding: 10px 14px; row-gap: 6px; }
.rm-mobile header h1 { font-size: 15px; }

/* Panel numeracji — przyciski pod sobą, pełna szerokość, łatwiejsze dotknięcie */
.rm-mobile #spis-numeracje-panel button { width: 100%; margin-top: 6px; }
.rm-mobile #spis-numeracje-lista { gap: 8px !important; }

/* Ogólne powiększenie tap-targetów w całym widoku mobilnym */
.rm-mobile .btn { min-height: 40px; font-size: 14px; }
