:root {
  --green: #2e7d32;
  --green-dark: #1b5e20;
  --bg: #f7f8f5;
  --card: #ffffff;
  --text: #24312a;
  --muted: #6b7a70;
  --border: #dde4dd;
  --err: #c62828;
  --err-bg: #fdecea;
  --ok-bg: #e8f5e9;
  --info-bg: #eef4fb;
}

* { box-sizing: border-box; }
body {
  margin: 0;
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  background: var(--bg);
  color: var(--text);
  line-height: 1.5;
}

header {
  background: var(--green-dark);
  color: #fff;
  padding: 14px 20px;
  display: flex;
  align-items: baseline;
  gap: 12px;
  flex-wrap: wrap;
}
header h1 { margin: 0; font-size: 1.15rem; font-weight: 600; }
header .tag { font-size: 0.8rem; opacity: 0.85; }

/* v3.49 (testija Andres 17.08.2026): 1100 px jättis laial ekraanil külgedele tühja ruumi,
   samas keskmise tabeli väärtused (PRIA massiivinumbrid) lõigati lõpust ära. 1600 px annab
   tabelitele ruumi; aken ise on regulaator (kitsamal aknal sisu mahub nagunii). Tabelid on
   .tblwrap kerimiskarpides, seega laiem main ei murra ühtegi paigutust. */
main { max-width: 1600px; margin: 0 auto; padding: 16px; }

section {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 16px 18px;
  margin-bottom: 16px;
}
section h2 { margin: 0 0 10px; font-size: 1rem; color: var(--green-dark); }

.muted { color: var(--muted); font-size: 0.85rem; }

label.chk { display: inline-flex; align-items: center; gap: 6px; margin-right: 18px; }

table { border-collapse: collapse; width: 100%; font-size: 0.9rem; }
th, td { border: 1px solid var(--border); padding: 4px 6px; text-align: left; }
th { background: #eef2ec; font-weight: 600; }

#fields-table input { width: 100%; border: 1px solid transparent; background: transparent; padding: 4px; font: inherit; }
#fields-table input:focus { border-color: var(--green); outline: none; background: #fff; }
#fields-table td:nth-child(1) { width: 80px; }
#fields-table td:nth-child(3) { width: 90px; }
#fields-table select { width: 100%; border: 1px solid var(--border); border-radius: 4px; padding: 4px; font: inherit; background: #fff; }

button {
  font: inherit;
  border: none;
  border-radius: 6px;
  padding: 8px 14px;
  cursor: pointer;
}
#add-field { background: var(--green); color: #fff; margin-top: 10px; }
#add-field:hover { background: var(--green-dark); }
.btn-del { background: transparent; color: var(--err); padding: 2px 8px; font-size: 1rem; }

/* v3.55: navi pealkirjade wrapper — display:contents = paigutusele NÄHTAMATU, laud/tahvel
   käitub täpselt nagu enne. Mobiilis (≤560) saab ta OMA keritava rea (vt allpool). Lingid
   JÄÄVAD #topnav sisse — activateTab seob "#topnav a[href^=#]" järgi (v2.45 õppetund). */
#topnav-links { display: contents; }

#rotation-wrap { overflow-x: auto; }
.rotation select { width: 100%; min-width: 92px; border: 1px solid var(--border); border-radius: 4px; padding: 3px; font-size: 0.82rem; background: #fff; }
.rotation th.hist, .rotation td.hist { background: #f1f1ee; }
.rotation th.plan { background: #e3efe4; }
.rotation .fname { white-space: nowrap; font-weight: 600; }
.rotation .fnr { white-space: nowrap; font-weight: 600; }
/* v4.87 Külvikord → alternatiivid */
.rot-alt { display: inline-block; margin-top: 2px; font-size: 0.76rem; white-space: nowrap; color: var(--green-dark, #2e5a2a); text-decoration: none; }
.rot-note { display: block; font-size: 0.74rem; color: var(--err, #c62828); white-space: normal; max-width: 16em; line-height: 1.2; }
.rot-note a { color: inherit; }
.rotation tr.rot-altrow > td { background: #f4f9f1; border-top: 2px solid #9fbf93; padding: 6px 8px; }
.rot-altbox h4 { margin: 2px 0 6px; font-size: 0.95rem; }
table.rot-alt { width: 100%; border-collapse: collapse; background: #fff; }
table.rot-alt th, table.rot-alt td { border: 1px solid var(--border, #d8ddd3); padding: 3px 6px; font-size: 0.84rem; }
table.rot-alt th { background: #dfe9da; text-align: left; }
table.rot-alt td.num, table.rot-alt th.num { text-align: right; }
table.rot-alt tr.rot-plaan td { font-weight: 600; }
table.rot-alt td.pos { color: #2e7d32; } table.rot-alt td.neg { color: var(--err, #c62828); }
.rot-chip { display: inline-block; border-radius: 10px; padding: 0 7px; font-size: 0.74rem; margin: 1px 2px 1px 0; background: #d8efd0; white-space: nowrap; }
.rot-tag { display: inline-block; background: #dcecd6; color: #2e5a2a; border-radius: 3px; font-size: 0.7rem; padding: 0 4px; margin-left: 3px; }
.rot-tag.sinu { background: #f6dcd6; color: #7a2a20; }
.rot-none { margin: 6px 0 0; font-size: 0.84rem; }
.rotation .farea { white-space: nowrap; }

.check { border-radius: 8px; padding: 9px 12px; margin-bottom: 8px; font-size: 0.9rem; }
.check-ok { background: var(--ok-bg); border: 1px solid #bcd9bf; }
.check-err { background: var(--err-bg); border: 1px solid #f0bcb8; color: var(--err); }
.check-info { background: var(--info-bg); border: 1px solid #c8d8ec; }
/* v3.83: hoiatus (kollane) — box("warn") kutsus seni olematut klassi ja rida jäi värvita. */
.check-warn { background: #fff4e5; border: 1px solid #f0d9b5; color: #8a4b00; }

/* v3.83 KONTROLLI KOKKUVÕTE JA FILTER (Marek 25.08.2026: „ei oleks kõik teemad seal segamini
   ja lõpuks ei leia mitte midagi"). Pae kontsernis oli 89 rida, millest 53 „korras" ja 3 päris
   viga — viimased kõige all. Riba loeb read kokku ja laseb näidata ainult seda, mis vajab
   tegutsemist; ükski rida ei kao, nad on nupu taga. */
.check-kokku { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 12px; }
.check-kokku button { padding: 7px 12px; border: 1px solid #c8d2c8; border-radius: 999px;
  background: #fff; font-size: 0.88rem; cursor: pointer; color: var(--muted); }
.check-kokku button.on { background: var(--green-dark); border-color: var(--green-dark); color: #fff; font-weight: 600; }
.check-kokku button:disabled { opacity: .45; cursor: default; }

/* v3.72 (Mareki leid 22.08): „Logi välja" jäi hõljuva AI-nupu ALLA (mobiilis täiesti peidus,
   laual 5 px kattuvus) — puudutus läks nupule. Jalus saab nupu jagu põhjaruumi ja link
   OMA reale korraliku puutealaga. */
footer { text-align: center; color: var(--muted); font-size: 0.8rem; padding: 12px 0 84px; }
#logi-valja-wrap { display: block; margin-top: 6px; }
#logi-valja { display: inline-block; padding: 8px 14px; color: var(--green-dark); font-weight: 600; }
@media (max-width: 560px) { footer { padding-bottom: 96px; } }

#samples-table input { width: 100%; border: 1px solid transparent; background: transparent; padding: 4px; font: inherit; }
#samples-table input:focus { border-color: var(--green); outline: none; background: #fff; }

.fert th, .fert td { font-size: 0.85rem; }
.fert input { width: 70px; border: 1px solid var(--border); border-radius: 4px; padding: 3px; font: inherit; }
.fert select { border: 1px solid var(--border); border-radius: 4px; padding: 3px; font-size: 0.82rem; background: #fff; }
.fert-note { font-size: 0.78rem; color: var(--muted); max-width: 260px; }
.fert-total { font-size: 0.95rem; margin: 10px 0 4px; }

h3.sub { font-size: 0.92rem; color: var(--green-dark); margin: 14px 0 8px; }
details summary { cursor: pointer; color: var(--green-dark); font-weight: 600; }
.guide p { font-size: 0.88rem; margin: 8px 0; }
/* v3.71 Avaleht „Ülevaade" */
.yl-kaart { background: #fff; border: 1px solid #e2e8e2; border-radius: 10px; padding: 14px 16px; margin-bottom: 12px; }
.yl-suur { font-size: 2rem; font-weight: 700; }
.yl-firmad { display: flex; gap: 26px; flex-wrap: wrap; margin-top: 10px; }
.yl-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
@media (max-width: 700px) { .yl-grid { grid-template-columns: 1fr; } }
.yl-list { list-style: none; margin: 4px 0 6px; padding: 0; }
.yl-list li { padding: 6px 0 6px 14px; border-bottom: 1px solid #eef2ee; position: relative; }
.yl-list li:last-child { border-bottom: 0; }
.yl-list li::before { content: ""; position: absolute; left: 0; top: 12px; width: 8px; height: 8px; border-radius: 50%; }
.yl-list li.yl-punane::before { background: var(--err); }
.yl-list li.yl-kollane::before { background: #b45f06; }
.yl-list li.yl-roheline::before { background: var(--green); }
#ylevaade-wrap a[data-yl] { color: var(--green-dark); font-weight: 600; text-decoration: none; }
#ylevaade-wrap a[data-yl]:hover { text-decoration: underline; }
/* v3.58 „Alusta siit" rada (kaob ise, kui 4/4 tehtud — renderAlustaSiit) */
#alusta-siit { margin: 0 0 12px; padding: 10px 14px; border: 1px solid var(--green); border-radius: 8px; background: #f1f8f1; }
#alusta-siit > b { color: var(--green-dark); }
#alusta-siit ol { list-style: none; margin: 6px 0 0; padding: 0; }
#alusta-siit li { padding: 3px 0; font-size: 0.92rem; }
#alusta-siit li a { text-decoration: none; color: var(--green-dark); }
#alusta-siit li.as-ok, #alusta-siit li.as-ok a { color: var(--muted); }
#alusta-siit li.as-puudu a:hover { text-decoration: underline; }

td.center { text-align: center; }

/* v0.3: väetisetooted ja tootevalik */
#products-table input[type="number"] { width: 90px; border: 1px solid var(--border); border-radius: 4px; padding: 3px; font: inherit; }
.addprod { margin-top: 10px; }
.prod-form { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-end; margin-top: 10px; }
.prod-form label { display: flex; flex-direction: column; font-size: 0.85rem; gap: 2px; }
.prod-form input, .prod-form select { border: 1px solid var(--border); border-radius: 4px; padding: 4px; font: inherit; }
.prod-form input[type="number"] { width: 80px; }
#np-name { width: 180px; }
#np-add { background: var(--green); color: #fff; }
#np-add:hover { background: var(--green-dark); }
.prodrow td { background: #f4f8f4; font-size: 0.85rem; }
.prodrow select { border: 1px solid var(--border); border-radius: 4px; padding: 3px; font-size: 0.82rem; background: #fff; max-width: 170px; }
.prodlbl { font-weight: 600; color: var(--green-dark); margin-right: 4px; }
.prod-short { color: var(--err); font-size: 0.82rem; }

/* v0.3b: kompaktsed märkused + org-väetised */
.fert-note details summary { cursor: pointer; font-weight: 400; color: var(--muted); list-style: none; }
.fert-note details summary::-webkit-details-marker { display: none; }
.fert-note .note-count { color: var(--green-dark); font-size: 0.75rem; white-space: nowrap; }
.fert-note details p { margin: 6px 0 0; }
#np-neff-wrap input { width: 70px; }

/* v0.4: taimekaitseplaan */
.tkv-block { margin-bottom: 18px; }
.tkv th, .tkv td { font-size: 0.85rem; vertical-align: top; }
.tkv-ring { width: 220px; }
.tkv-slot { margin-bottom: 4px; }
.tkv select { border: 1px solid var(--border); border-radius: 4px; padding: 3px; font-size: 0.82rem; background: #fff; max-width: 240px; }
.tkv input[type="number"] { width: 72px; border: 1px solid var(--border); border-radius: 4px; padding: 3px; font: inherit; }
.tkv-reg { font-size: 0.75rem; white-space: nowrap; }
.tkv-badge { display: inline-block; font-size: 0.72rem; border-radius: 4px; padding: 1px 6px; margin-right: 2px; }
.tkv-H { background: #e2efda; }
.tkv-F { background: #ddebf7; }
.tkv-I { background: #fce4ec; }
.tkv-KR { background: #fff8e1; }
.tkv-ost { max-width: 640px; }
.tkv-ost th, .tkv-ost td { font-size: 0.85rem; }

/* v0.4a: mobiili ülevool — kõik tabelid kerivad oma kastis */
.tblwrap { overflow-x: auto; }

/* v0.4b: nõustaja kinnitamata märgis */
.draft-badge { display: inline-block; background: #fff8e1; border: 1px solid #e0c268; color: #7a5c00; border-radius: 6px; padding: 3px 10px; font-size: 0.8rem; font-weight: 600; margin: 0 0 10px; }

/* v0.5: varukoopia */
#backup-export { background: var(--green); color: #fff; margin-right: 8px; }
#backup-export:hover { background: var(--green-dark); }
.btn-like { display: inline-block; background: #fff; color: var(--green-dark); border: 1px solid var(--green); border-radius: 6px; padding: 8px 14px; cursor: pointer; font: inherit; }
.btn-like:hover { background: var(--ok-bg); }

/* v0.6: laod */
#seed-add { background: var(--green); color: #fff; margin-top: 10px; }
#seed-add:hover { background: var(--green-dark); }
#seed-table input { width: 100%; border: 1px solid transparent; background: transparent; padding: 4px; font: inherit; }
#seed-table input:focus { border-color: var(--green); outline: none; background: #fff; }
#seed-table td:nth-child(2), #seed-table td:nth-child(3) { width: 130px; }
/* v3.54 (Mareki leid 19.08): SORDI NIMI peab olema loetav igal laiusel — sordiveerg oli
   telefonis 45 px ja kitsal laual 48 px, kultuurivalik võttis 275 px. Miinimum sordile,
   lagi kultuurile; tabel laieneb ja kerib .tblwrap kastis (laual mahub niikuinii). */
#seed-table td:nth-child(2) input { min-width: 130px; }
#seed-table td:nth-child(1) select { max-width: 140px; }
.tkv-ost input[type="number"] { width: 80px; border: 1px solid var(--border); border-radius: 4px; padding: 3px; font: inherit; }

/* v0.6b: kattetulu */
.econ th, .econ td { font-size: 0.85rem; }
.econ input[type="number"] { width: 90px; border: 1px solid var(--border); border-radius: 4px; padding: 3px; font: inherit; }
.econ input::placeholder { color: #9aa8a0; }

/* v0.6c: masinapark */
#masin-add { background: var(--green); color: #fff; margin-top: 10px; }
#masin-add:hover { background: var(--green-dark); }
#masin-table input, #masin-table select { border: 1px solid var(--border); border-radius: 4px; padding: 3px; font: inherit; }
/* v3.35 (testija Andrese leid 12.08.2026: „tekkis ebamugav kerimisriba alla"): avatud ridadega
   tabel oli 1328 px, konteiner 1030 px. Kolm põhjust ja parandust (mõõdetud Pae 491 põlluga):
   1) vana reegel `td:first-child input {width:150px}` oli mõeldud nimeveerule, aga v2.06-st on
      esimeses veerus KASUTAN-LINNUKE — reegel puhus linnukese 150 px laiuseks (veerg 170 px).
      Nimi elab nüüd 2. veerus, reegel käib nime järgi (data-mk), linnuke saab loomuliku laiuse;
   2) Klass/Teeb rippmenüü venis PIKIMA optioni järgi (346 px) — lagi; avatud rippmenüü näitab
      valikuid ikka täislaiuses, kärbitud on ainult suletud kuva;
   3) numbriväljad 100 -> 80 px (kW/laius/mahutavus mahuvad vabalt). Kokku 1328 -> 1030 = mahub. */
/* v3.36: 72px — mahutavuse ühikutekst (Andres: „ühik nähtavaks ka pärast sisestust") võtab
   veerus ~25 px; numbrid (kW ≤ 4, laius ≤ 4, mahutavus ≤ 6 kohta) mahuvad 72 px sisse. */
#masin-table input[type="number"] { width: 72px; }
#masin-table input[data-mk="nimi"] { width: 150px; }
#masin-table td:nth-child(3) select { max-width: 168px; }
#masin-table td:nth-child(7) select { max-width: 216px; }

/* v0.7: eksport */
#print-head { display: none; }
.csv-btn { background: #fff; color: var(--green-dark); border: 1px solid var(--green); margin-left: 6px; }
.csv-btn:hover { background: var(--ok-bg); }
#print-btn { background: var(--green); color: #fff; }
#print-btn:hover { background: var(--green-dark); }

@media print {
  section.collapsed > *:not(h2) { display: revert !important; }
  .sec-toggle::before { content: "" !important; }
  #print-head { display: block; border-bottom: 2px solid #000; margin-bottom: 10px; }
  #print-head .print-title { font-size: 1.1rem; margin: 0; font-weight: bold; } /* v4.38 (P3-14): oli h1 — sama stiil, üks <h1> dokumendis */
  #print-head p { margin: 4px 0; font-size: 0.8rem; }
  header, footer, button, .btn-like, .addprod, .prod-form, #guide-section, #backup-file, #alusta-siit { display: none !important; }
  section { border: none; padding: 6px 0; margin-bottom: 6px; break-inside: auto; }
  input, select { border: none !important; background: transparent !important; padding: 0 !important; }
  input::placeholder { color: transparent; }
  .tblwrap, #rotation-wrap { overflow: visible; }
  table { break-inside: auto; }
  tr { break-inside: avoid; }
  body { background: #fff; }
  a { color: inherit; text-decoration: none; }
  .draft-badge { border: 1px solid #666; }
  details > *:not(summary) { display: none; }
}

/* v0.7a: kokkuklapitavad sektsioonid */
.sec-toggle { cursor: pointer; user-select: none; }
.sec-toggle::before { content: "\25BE "; color: var(--green); }
section.collapsed .sec-toggle::before { content: "\25B8 "; }
section.collapsed > *:not(h2) { display: none; }

/* v0.7c */
.masin-seaded label { margin-right: 16px; font-size: 0.9rem; }
.masin-seaded input { width: 90px; border: 1px solid var(--border); border-radius: 4px; padding: 3px; font: inherit; }

/* v0.8: leheväetised ja adjuvandid */
.tkv-LV { background: #f3e5f5; }
.tkv-A { background: #f5f5f5; }

/* v0.9 */
#season-view { border: 1px solid var(--border); border-radius: 4px; padding: 2px 4px; font: inherit; font-size: 0.85rem; background: #fff; }

/* v0.9b: külvikorra ettepanek */
#rot-gen { background: var(--green); color: #fff; margin-right: 8px; }
#rot-gen:hover { background: var(--green-dark); }
td.auto-sov { background: #fff8e1 !important; position: relative; }
.auto-tag { font-size: 0.65rem; font-weight: 700; color: #7a5c00; background: #ffe9a8; border-radius: 3px; padding: 0 3px; margin-left: 2px; }
td.pr-bad { background: #fde2e1 !important; position: relative; }
.pr-tag { font-size: 0.7rem; font-weight: 700; color: #a11; margin-left: 2px; cursor: help; }

/* v0.10: autopiloodid */
#fert-gen, #tkv-gen { background: var(--green); color: #fff; }
#fert-gen:hover, #tkv-gen:hover { background: var(--green-dark); }

/* v0.12: surveväljad */
.tkv-surve { font-size: 0.85rem; }
.tkv-surve input[type="text"] { width: 220px; border: 1px solid var(--border); border-radius: 4px; padding: 3px; font: inherit; }
.tkv-surve select { border: 1px solid var(--border); border-radius: 4px; padding: 3px; font: inherit; background: #fff; }
.tkv-lva-label { margin-top: 6px; padding-top: 4px; border-top: 1px dashed #c9d6c3; }

/* v0.54: UX + jõudlus — kleepuv navi, laisk render, leheküljestamine */
#topnav { position: sticky; top: 0; z-index: 40; background: var(--green-dark); color: #fff;
  padding: 6px 20px; display: flex; align-items: center; gap: 2px 10px; flex-wrap: wrap; font-size: 0.85rem; }
#topnav a { color: #fff; text-decoration: none; opacity: 0.92; padding: 2px 5px; border-radius: 4px; white-space: nowrap; }
#topnav a:hover { background: rgba(255,255,255,0.18); opacity: 1; }
#topnav .nav-hooaeg { margin-right: 6px; white-space: nowrap; }
section { scroll-margin-top: 46px; } /* navi alt läbi ei keri */
.pager { font-size: 0.85rem; color: var(--muted); margin: 6px 0; }
.pager button { background: #fff; color: var(--green-dark); border: 1px solid var(--green); padding: 3px 10px; margin-left: 6px; }
.pager button:hover { background: var(--ok-bg); }
tr.pager-row td { background: #f4f8f4; }
@media print { #topnav, .pager, tr.pager-row { display: none !important; } }

/* v0.54c: pageri aktiivne aste */
.pager button.pager-act { background: var(--green); color: #fff; border-color: var(--green-dark); }

/* v0.55: puhas tab-režiim — nähtav on ainult aktiivne sektsioon; prindis kõik */
main section { display: none; }
main section.sec-active { display: block; }
#topnav a.nav-act { background: rgba(255,255,255,0.28); font-weight: 600; }
@media print { main section { display: block !important; } }

/* v0.55: kultuurifilter (väetus/TKV/kattetulu/masinakulu) */
.cropfilter { font-size: 0.85rem; margin: 6px 0; display: flex; flex-wrap: wrap; gap: 4px; align-items: center; }
.cropfilter button { background: #fff; color: var(--green-dark); border: 1px solid var(--green); padding: 3px 10px; }
.cropfilter button:hover { background: var(--ok-bg); }
.cropfilter button.pager-act { background: var(--green); color: #fff; }
tr.crop-head td { background: #e3efe4; font-weight: 600; color: var(--green-dark); }
h3.crop-head-h { background: #e3efe4; padding: 4px 8px; border-radius: 6px; margin: 16px 0 8px; color: var(--green-dark); font-size: 0.92rem; }
@media print { .cropfilter { display: none !important; } }

/* v0.56: väetamisringid + kaetud% badge'id */
tr.ringrow td { background: #f2f7fb; font-size: 0.85rem; }
.ring-blokk { display: inline-block; border: 1px solid #c8d8ec; border-radius: 6px; padding: 3px 8px; margin: 2px 6px 2px 0; vertical-align: top; }
.ring-nimi { font-weight: 600; color: var(--green-dark); }
.kaet { display: inline-block; border-radius: 4px; padding: 0 6px; font-size: 0.78rem; margin-right: 4px; }
.kaet-ok { background: var(--ok-bg); }
.kaet-low { background: var(--err-bg); color: var(--err); }
.kaet-high { background: #fff8e1; }

/* v0.56c: kompaktsed ringid + kokkuklapitavad tootemärkused */
.ring-nimi[title] { cursor: help; border-bottom: 1px dotted #9db8a0; }
.prod-notes { display: inline-block; vertical-align: top; margin-left: 6px; }
.prod-notes summary { color: var(--muted); font-weight: 400; font-size: 0.82rem; list-style: none; }
.prod-notes summary::-webkit-details-marker { display: none; }
.prod-notes p { margin: 4px 0 0; font-size: 0.82rem; }

/* v0.61: väetamisringid tabelina (Mareki kinnitatud paigutus; jalus nagu Exceli mallis) */
.ringtbl { width: 100%; border-collapse: collapse; margin-top: 2px; font-size: 0.82rem; background: #fff; }
.ringtbl th, .ringtbl td { border: 1px solid var(--border); padding: 3px 6px; text-align: left; }
.ringtbl th { background: #eef2ec; font-weight: 600; }
.ringtbl .rn { text-align: right; width: 6.5%; white-space: nowrap; }
.ringtbl tr.ring-sygis td { background: #fff8e1; }
.ringtbl tfoot td { font-weight: 600; }
.ringtbl tr.ring-vaja td { font-weight: 400; color: var(--muted); }
.bil-ok { color: #2e7d32; }
.bil-yle { color: #b45f06; }
.bil-puudu { color: var(--err); }
.ring-selgitus { font-size: 0.8rem; margin-top: 3px; }

/* v0.68b: külvikorra tabeli 3 esimest veergu (nr, nimi, pindala) püsivad horisontaalsel
   kerimisel paigal (Marek 15.07.2026) — aastate kerimine ei kaota põldu silmist. */
.rotation th:nth-child(-n+3) { position: sticky; z-index: 3; background: #f3f6f3; }
.rotation td.fnr, .rotation td.fname, .rotation td.farea { position: sticky; z-index: 2; background: #fff; }
.rotation th:nth-child(1), .rotation td.fnr { left: 0; min-width: 60px; max-width: 60px; }
.rotation th:nth-child(2), .rotation td.fname { left: 60px; min-width: 150px; max-width: 150px; overflow: hidden; text-overflow: ellipsis; }
.rotation th:nth-child(3), .rotation td.farea { left: 210px; min-width: 58px; max-width: 58px; box-shadow: 3px 0 4px -2px rgba(0,0,0,0.25); }
.rotation th:nth-child(3) { box-shadow: 3px 0 4px -2px rgba(0,0,0,0.25); }

/* v1.03: masinatabeli 2 esimest veergu (Kasutan, Masin) püsivad horisontaalsel kerimisel paigal
   (Marek 17.07.2026) — kW/hind/kasutuse veergude juurde kerides jääb masin nähtavaks. */
#masin-table th:nth-child(-n+2) { position: sticky; z-index: 3; background: #f3f6f3; }
#masin-table td:nth-child(-n+2) { position: sticky; z-index: 2; background: #fff; }
#masin-table th:nth-child(1), #masin-table td:nth-child(1) { left: 0; min-width: 54px; }
#masin-table th:nth-child(2), #masin-table td:nth-child(2) { left: 54px; min-width: 130px; box-shadow: 3px 0 4px -2px rgba(0,0,0,0.25); }

/* v1.08 P3: mõju-teade kattetulus — kliendi viimase otsuse mõju (Marek 18.07.2026) */
.kt-moju { margin: 10px 0; padding: 10px 14px; border-radius: 8px; font-size: 0.95em;
  border-left: 4px solid currentColor; }
.kt-moju.kt-up { background: #e8f5e9; color: #1b5e20; }
.kt-moju.kt-down { background: #fdecea; color: #a02b1e; }
/* v2.82: teate teine rida — nimeliselt need kultuurid, mille kate on miinuses */
.kt-moju-hoiatus { display: inline-block; margin-top: 4px; font-weight: 600; }

/* v0.71 E2: hooaja luku nupp navis */
.lukk-btn { font-size: 0.85em; padding: 2px 8px; white-space: nowrap; }

/* v0.73 Lähteandmed: alamplokid + grid-väljad */
.set-sub { margin-top: 10px; border: 1px solid rgba(0,0,0,0.12); border-radius: 6px; padding: 6px 10px 10px; background: rgba(0,0,0,0.015); }
.set-sub summary { cursor: pointer; font-weight: 600; padding: 2px 0; }
.set-sub summary .muted { font-weight: 400; }
.set-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 10px 18px; margin-top: 8px; }
.set-field > label { display: block; font-weight: 600; margin-bottom: 2px; }
.set-field > label.chk { display: flex; align-items: center; gap: 6px; }
.set-field .hint { font-size: 0.85em; margin-top: 2px; }
@media print { .set-sub { border: none; padding: 0; } }

/* v0.83 TKV kultuuri-vaade */
.tkv-pohiplaan { border-left: 4px solid #2e7d32; padding-left: 8px; }
.tkv-rot { border-left: 4px solid #c62828; padding-left: 8px; }
.tkv-erisused > summary { cursor: pointer; font-weight: 600; margin: 8px 0; }
.tkv-erisused { margin-bottom: 12px; }

/* v0.80b: märkuste avaja silmatorkavaks (Marek: "1 märkus — ava" ei jäänud silma) */
.note-count, .prod-notes > summary { color: #9a3412; font-weight: 600; background: #ffedd5;
  border-radius: 10px; padding: 0 7px; display: inline-block; }
.prod-notes > summary { cursor: pointer; }
details[open].prod-notes > summary, .fert-note details[open] .note-count { background: #fed7aa; }
/* v3.30 (Mareki leid, Kubja-204): avatud märkusel eelvaade peitu — muidu seisis kärbitud
   eelvaade ja täistekst topelt üksteise all. */
.fert-note details[open] .note-short { display: none; }

/* v0.80b: kaardi isolatsioon (legendi klõps) */
.kp-dim { fill-opacity: 0.05 !important; stroke-opacity: 0.15; pointer-events: none; }
.kleg[data-iso] { cursor: pointer; border-radius: 4px; padding: 1px 3px; }
.kleg[data-iso]:hover { background: rgba(0,0,0,0.06); }
.kleg-act { font-weight: 700; background: rgba(0,0,0,0.08); }

/* v0.79 kaardivaade */
#kaart-wrap { display: flex; gap: 12px; align-items: flex-start; }
#kaart-view { position: relative; overflow: hidden; flex: 1 1 auto; height: 72vh; min-height: 320px;
  background: #e9ede5; border: 1px solid #ccc; border-radius: 6px; touch-action: none; cursor: grab; }
#kaart-view.pan { cursor: grabbing; }
#kaart-view { user-select: none; -webkit-user-select: none; }
#kaart-tiles img { -webkit-user-drag: none; }
#kaart-tiles { position: absolute; inset: 0; }
#kaart-tiles img { position: absolute; width: 256px; height: 256px; user-select: none; pointer-events: none; }
#kaart-svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.kp { fill-opacity: 0.55; stroke-width: 2; cursor: pointer; } /* v0.81b: värvid nähtavamaks aluskaardi peal */
.kp:hover { fill-opacity: 0.75; }
.kp-sel { stroke: #111 !important; stroke-width: 3; fill-opacity: 0.7; }
.kp-massiiv { stroke-dasharray: 5 4; fill-opacity: 0.18; }
#kaart-attr { position: absolute; right: 4px; bottom: 2px; background: rgba(255,255,255,0.75);
  padding: 0 5px; font-size: 11px; border-radius: 3px; color: #444; }
#kaart-info { position: absolute; left: 8px; top: 8px; background: #fff; border: 1px solid #bbb;
  border-radius: 6px; padding: 8px 10px; max-width: 270px; box-shadow: 0 2px 8px rgba(0,0,0,0.25);
  font-size: 0.9em; z-index: 2; }
#kaart-info h4 { margin: 0 0 4px; }
#kaart-info .kaart-close { float: right; margin-left: 8px; }
#kaart-legend { flex: 0 0 235px; font-size: 0.9em; max-height: 72vh; overflow: auto; }
.kleg { display: flex; align-items: flex-start; gap: 6px; margin: 4px 0; line-height: 1.25; }
.kleg i { width: 14px; height: 14px; border-radius: 3px; display: inline-block; flex: none; border: 1px solid rgba(0,0,0,0.25); margin-top: 2px; }
.kleg-t { display: block; min-width: 0; }
.kleg-sub { display: block; font-size: 0.85em; } /* v0.86b: arv/ha oma real — veerg loetav */
/* v3.49 MOBIILIKAART (töökäsk 17.08 p1): veerupaigutuses on risttelg LAIUS ja align-items:
   flex-start tõmbab #kaart-view sisu järgi kokku — aga tema ainsad lapsed (#kaart-tiles,
   #kaart-svg) on position:absolute ega anna vanemale laiust. Kast jäi 72vh kõrgeks ja
   0–2 px laiaks; overflow:hidden lõikas kõik ära, veateadet ei tulnud. width:100% lahendab;
   align-self:stretch on kaitse selle vastu, et keegi hiljem align-items väärtust muudab. */
@media (max-width: 800px) { #kaart-wrap { flex-direction: column; } #kaart-legend { flex: none; max-height: none; } #kaart-view { width: 100%; align-self: stretch; } }
@media print { #kaart-view { height: 130mm; } }

/* v1.18: struktuurne hoiatus lahtri kõrval — valem jäi pooleli (norm/hind puudub) ja annaks
   vaikse 0. EI hinda hinna suurust (see on farmeri oma), ainult tulemuse olemasolu. */
.warn { color: var(--err); font-weight: 700; cursor: help; margin-right: 3px; }

/* v1.65 Tükk 1b (FARMERI vaade): ringi sisendid elavad rea sees — „muuda" avab, „valmis" sulgeb */
.tkv-editrow { display: none; }
.tkv-editrow.open { display: table-row; }
.tkv-editrow > td { background: #f6faf6; }
.tkv-muuda { margin-top: 3px; cursor: pointer; }
@media print { .tkv-editrow, .tkv-muuda { display: none !important; } }

/* v1.67 LÕPPVAADE: tüübisildid (iga toode oma real), erisuste rühmad, glüfosaadi kokkuvõtterida */
.tkv-toode { margin: 1px 0; white-space: nowrap; }
.tkvtag { display: inline-block; min-width: 2.3em; text-align: center; font-size: 0.78em; font-weight: 700; border-radius: 3px; padding: 0 3px; color: #fff; margin-right: 2px; }
.tkvtag-h { background: #2e7d32; }   /* HE herbitsiid */
.tkvtag-f { background: #1565c0; }   /* FU fungitsiid */
.tkvtag-i { background: #c62828; }   /* IN insektitsiid */
.tkvtag-kr { background: #6a1b9a; }  /* KR kasvuregulaator */
.tkvtag-lv { background: #00838f; }  /* LV leheväetis */
.tkvtag-a { background: #616161; }   /* ADJ adjuvant */
.tkv-pohjus { margin: 8px 0 4px; }
.tkv-grupp { border-top: 1px solid #ddd; padding-top: 4px; margin-top: 6px; }
/* v3.12: glüfosaadi ringirida elab kultuuri ringitabelis (eraldi plokki enam ei ole).
   Ülemine joon nagu kasvufaasi real, aga klass on oma — valvurid loevad `tkv-faas-start`
   järgi PROGRAMMI ringe ja glüfosaat ei tohi seda loendust muuta. */
tr.tkv-glyfrow > td { border-top: 2px solid #cbe0cb; }
table.tkv-glyfpollud { width: 100%; border-collapse: collapse; }
table.tkv-glyfpollud td { padding: 2px 6px; border-bottom: 1px solid #eee; }

/* v1.68 TKV Exceli struktuur: iga toode oma real, kasvufaas grupeerib (rowspan) */
.tkv-faascell { vertical-align: top; border-right: 2px solid #cbe0cb; background: #fafdfa; }
tr.tkv-faas-start > td { border-top: 2px solid #cbe0cb; }
table.tkv-koond td { vertical-align: top; }
/* v4.99 K1/T12: iga kultuur oma <details> plokk (päis 1× kultuuri kohta, üks lahti korraga) */
details.tkv-kultuur { margin: 0 0 6px; }
details.tkv-kultuur > summary.tkv-koond-crop { padding: 6px 4px; border-bottom: 1px solid #dde3dd; }
@media print { details.tkv-kultuur { display: block; } details.tkv-kultuur > * { display: block; } }

/* v1.69 Märkuste veeru elemendid */
.tkv-sis{color:var(--ok,#2e7d32);font-weight:500}
.tkv-oo{color:#6a1b9a;font-weight:500}
.tkv-warn{color:var(--err)}
table.tkv-koond td.num{text-align:right;white-space:nowrap}

/* v1.70 veerupäis iga kultuuri ringiplaani peal (Mareki Exceli muster) */
tr.tkv-veerupais th{background:var(--head,#e8f0e8);text-align:left;font-weight:600;border-top:2px solid #cbe0cb}
tr.tkv-veerupais th.num{text-align:right}

/* v2.21b AI MIKS OSA 1 (Mareki otsus 29.07 p.7): lühipõhjendus elab MÄRKUSTE veerus, mitte
   eraldi paneelis; tkv-miks-box jääb tulevase AI-vestluse (OSA 2) tarbeks */
.tkv-miks-l{color:#456a45}
.tkv-miks-box p{margin:4px 0 0}

/* v1.74 Tükk 2: väetuse lõppvaade */
table.fert-koond td.num,table.fert-koond th.num,table.fert-ringid td.num,table.fert-ringid th.num{text-align:right;white-space:nowrap}
table.fert-koond th,table.fert-koond td,table.fert-ringid th,table.fert-ringid td{padding:6px 8px;border:0.5px solid #d8e6d8;vertical-align:top}
table.fert-koond,table.fert-ringid{border-collapse:collapse;width:100%}
.fert-toode{padding:1px 0}
.fert-koondrida{margin:6px 0}
details.fert-pollud>summary{cursor:pointer;padding:6px 0;font-weight:500}
@media print{details.fert-pollud{display:block}details.fert-pollud>*{display:block}}

/* v2.28 AI-NÕUSTAJA VESTLUSAKEN (KIHT B — js/noustaja.js). ÜKS pind kogu äpi peale:
   hõljuv nupp paremal all + vestluspaneel. Prindis mõlemad peidus. */
#noustaja-ava {
  position: fixed; right: 18px; bottom: 18px; z-index: 60;
  background: var(--green-dark); color: #fff; border: none; border-radius: 24px;
  padding: 12px 20px; font: inherit; font-weight: 600; cursor: pointer;
  box-shadow: 0 3px 10px rgba(0,0,0,0.28);
}
#noustaja-ava:hover { background: var(--green); }
#noustaja-ava:focus-visible { outline: 3px solid #a5d6a7; outline-offset: 2px; }
/* v3.59 esmakasutaja vihje (ÜKS mull, mitte paneel — 29.07 otsus; kaob klõpsu/avamise/20 s peale) */
#noustaja-vihje {
  position: fixed; right: 18px; bottom: 72px; z-index: 59; max-width: 260px;
  background: #fff; color: var(--ink, #1c281c); border: 1px solid var(--green);
  border-radius: 12px; padding: 10px 14px; font: inherit; font-size: 0.88rem; text-align: left;
  cursor: pointer; box-shadow: 0 3px 12px rgba(0,0,0,0.18);
}
#noustaja-vihje b { color: var(--green-dark); }
@media print { #noustaja-vihje { display: none !important; } }

#noustaja-paneel {
  position: fixed; right: 18px; bottom: 74px; z-index: 61;
  width: 380px; max-width: calc(100vw - 24px); max-height: 72vh;
  display: flex; flex-direction: column;
  background: var(--card); border: 1px solid var(--border); border-radius: 10px;
  box-shadow: 0 6px 22px rgba(0,0,0,0.22);
}
#noustaja-paneel[hidden] { display: none; }
.nou-pais {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  background: var(--green-dark); color: #fff; padding: 9px 12px; border-radius: 9px 9px 0 0;
}
#noustaja-sulge { background: transparent; color: #fff; border: 1px solid rgba(255,255,255,0.5); border-radius: 6px; padding: 2px 10px; font: inherit; font-size: 0.82rem; cursor: pointer; }
#noustaja-sulge:hover { background: rgba(255,255,255,0.18); }
.nou-margis { margin: 0; padding: 6px 12px; font-size: 0.75rem; color: var(--muted); border-bottom: 1px solid var(--border); }

.nou-vestlus { flex: 1 1 auto; overflow-y: auto; padding: 10px 12px; min-height: 140px; }
.nou-mull { border-radius: 10px; padding: 8px 11px; margin-bottom: 8px; font-size: 0.88rem; white-space: pre-wrap; overflow-wrap: anywhere; }
.nou-user { background: var(--ok-bg); border: 1px solid #bcd9bf; margin-left: 28px; }
.nou-ai { background: var(--info-bg); border: 1px solid #c8d8ec; margin-right: 28px; }
.nou-ootel { background: transparent; color: var(--muted); font-size: 0.82rem; padding: 2px 4px; }
.nou-viga { border-radius: 8px; }
.nou-err { background: var(--err-bg); border: 1px solid #f0bcb8; color: var(--err); }
.nou-arendaja { background: #fff8e1; border: 1px solid #e0c268; color: #7a5c00; font-size: 0.8rem; }

.nou-sisend { display: flex; gap: 8px; align-items: flex-end; padding: 10px 12px; border-top: 1px solid var(--border); }
#noustaja-tekst { flex: 1 1 auto; border: 1px solid var(--border); border-radius: 6px; padding: 6px 8px; font: inherit; font-size: 0.88rem; resize: vertical; }
#noustaja-tekst:focus { border-color: var(--green); outline: none; }
#noustaja-saada { background: var(--green); color: #fff; border: none; border-radius: 6px; padding: 8px 14px; font: inherit; cursor: pointer; white-space: nowrap; }
#noustaja-saada:hover:not(:disabled) { background: var(--green-dark); }
#noustaja-saada:disabled { background: #9db3a1; cursor: default; }

@media (max-width: 560px) {
  #noustaja-paneel { right: 8px; left: 8px; width: auto; bottom: 68px; max-height: 76vh; }
  #noustaja-ava { right: 10px; bottom: 10px; padding: 10px 16px; }
  #noustaja-vihje { right: 10px; bottom: 60px; max-width: 78vw; }
}
@media print { #noustaja-ava, #noustaja-paneel { display: none !important; } }

/* ---------- v3.49 MOBIILIVAADE (töökäsk 17.08, punktid 2/4/5) ----------
   AINULT ≤560 px — iPad Air (820 px) ja lauaarvuti EI lange selle alla, nende käitumine on
   täpselt endine (Mareki kõva piirang 17.08). Uut murdepunkti EI lisatud. */
@media (max-width: 560px) {
  /* p2: külmutatud veerud sõid 268/390 px (69%). Nimeveerg 150→70 (ellipsis kärbib nime, nr jääb
     täispikkuses — identifitseerimiseks olulisem). 🔴 left-väärtused on KUMULATIIVSED: kolmanda
     veeru left = 60 + 70 = 130, muidu tekib külmunud veergude vahele auk või kattuvus. */
  .rotation th:nth-child(2), .rotation td.fname { min-width: 70px; max-width: 70px; }
  .rotation th:nth-child(3), .rotation td.farea { left: 130px; }
  /* p4: puutesihid olid 13–40 px (Apple/Google miinimum 44; alla 32 on viga). 40 px on
     kompromiss tiheduse ja nõude vahel. Linnukesed erandiks, muidu venivad koledaks.
     min-height ei mõjuta veerulaiusi. */
  main input, main select, main button { min-height: 40px; }
  main input[type="checkbox"] { min-height: 0; width: 44px; height: 44px; accent-color: var(--green); }   /* v5.04 L8 (D12): puuteala 44 px */
  /* v3.54 (Mareki mobiiliaudit 19.08, päris brauseris mõõdetud):
     — SEEMNELADU: sordiveerg oli 45 px („ma ei näe sordi nimesidki“) — kultuurivalik võttis
       275 px. Sort saab miinimumi, kultuur lae; tabel laieneb ja kerib omas kastis.
     — KATTETULU: põllu nr + nimi külmuvad nagu külvikorras (48+70 px) — külgkerimisel on
       näha, MIS põllu numbrit vaatad.
     — MASINAD: „ava/muuda“ lingid olid <32 px — suurem puuteala.
     — MAARENT: katastri eelvaade klammerdub 2 reale. */
  /* v3.60 (Mareki tellimus 19.08, tehtud PEALE täisarvustust): PÕLLUREGISTER jookseb telefonis
     TÄPSELT nagu Kattetulu — külmuvad AINULT nr (48) + nimi (70), linnukese veerg kerib kaasa.
     v3.56 kolme veeru külm (34+52+110=196 px) jättis sisule liiga vähe ruumi („kehva vaadata").
     Laual reegleid EI OLE (>560 muutumata). */
  #fields-table th:nth-child(2), #fields-table td:nth-child(2) { position: sticky; left: 0; background: #fff; min-width: 48px; max-width: 48px; z-index: 2; }
  #fields-table th:nth-child(3), #fields-table td:nth-child(3) { position: sticky; left: 48px; background: #fff; min-width: 70px; max-width: 70px; overflow: hidden; z-index: 2; box-shadow: 3px 0 4px -2px rgba(0,0,0,0.25); }
  #fields-table td:nth-child(3) input { min-width: 0; width: 100%; text-overflow: ellipsis; }
  #fields-table th:nth-child(2), #fields-table th:nth-child(3) { background: #eef2ec; z-index: 3; }
  /* v3.60: KÜLVIKORD samale mustrile — mobiilis külmuvad nr (48) + nimi (70); pindala veerg
     VABASTATAKSE (baasreegel külmutab laual 3 veergu 60+150+58 — see jääb laual samaks). */
  .rotation th:nth-child(1), .rotation td.fnr { min-width: 48px; max-width: 48px; }
  .rotation th:nth-child(2), .rotation td.fname { left: 48px; min-width: 70px; max-width: 70px; white-space: nowrap; box-shadow: 3px 0 4px -2px rgba(0,0,0,0.25); }
  .rotation th:nth-child(3), .rotation td.farea { position: static; min-width: 0; max-width: none; box-shadow: none; }
  .econ th:nth-child(1), .econ td.fnr { position: sticky; left: 0; background: #fff; min-width: 48px; max-width: 48px; z-index: 2; }
  .econ th:nth-child(2), .econ td.fname { position: sticky; left: 48px; background: #fff; min-width: 70px; max-width: 70px;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap; z-index: 2; box-shadow: 3px 0 4px -2px rgba(0,0,0,0.25); }
  .econ th:nth-child(1), .econ th:nth-child(2) { background: #eef2ec; z-index: 3; }
  #masin-table a { display: inline-block; padding: 8px 4px; }
  .mseo-eelvaade { max-width: 180px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
  /* 🔴 NAVI MOBIILIS — KOLMAS OTSUS (Mareki töökäsk 3, 07.09.2026). Ajalugu ühes kohas, et
     järgmine ring ei alustaks otsast peale:
       v3.49 (17.08) tegi üherealise keritava riba;
       19.08 Marek võttis selle MAHA — „Lähteandmed ja põllud jne olid enne üheselt näha, nüüd
         pean sõrmega viipama" — ja siia kirjutati „ÄRA lisa siia üherealist riba tagasi";
       07.09 tellib Marek töökäsuga 3 (audit P2-13) riba TAGASI, sest päis+navi sõid 375 px
         ekraanil 271 px ehk 33 % — sisu algas alles kolmandiku pealt.
     ERINEVUS 19.08 versioonist: aktiivne link KERITAKSE ISE vaatesse (activateTab,
     scrollIntoView inline:center), seega „kus ma olen" on alati näha ilma viipamiseta —
     just see oli 19.08 kaebuse sisu. Kui Marek ütleb jälle, et halvem, on tagasitee üks plokk.
     🔴 Iga link JÄÄB #topnav sisse — activateTab seob "#topnav a[href^=#]" järgi (v2.45, v2.46).
     🔴 white-space: nowrap EI MURRA flexi — seda on kaks korda proovitud. Murrab AINULT flex-wrap. */
  /* MOODETUD 375 px paanis: pais 84 + navi 67 = 151 px (33% ekraanist). Siht <=120.
     Kolm loiget: paise polster 14->6, pealkiri 18,4->15 px ja hooaja valik + lingiriba UHELE
     reale (enne oli #topnav-links flex 1 1 100% = alati oma rida). Kokku ~103 px. */
  header { padding: 3px 10px; }
  header h1 { font-size: 14px; }
  header .tag { font-size: 11px; display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  #topnav { padding: 2px 10px; row-gap: 0; }
  /* Hooaja valik vottis 281 px 425-st ja lingiribale jai 93 px ehk uks link korraga nahtaval.
     Valik ise jaab ALLES ja samasse kohta - ainult ripploendi laius on piiratud. */
  /* Hooaja valiku korval elab ka "Kinnita plaan" nupp (129 px) - kokku 268 px 425-st. Lingiriba
     saab seetottu OMA rea (flex-basis 100%), muidu jaaks talle 108 px ehk uks link korraga.
     Ripploend ise on kitsam, et hooaja rida ara mahuks. */
  #topnav .nav-hooaeg { flex: 0 1 auto; min-width: 0; }
  #topnav .nav-hooaeg select { max-width: 84px; }
  #topnav-links { display: flex; flex: 1 1 100%; min-width: 0; flex-wrap: nowrap;
    overflow-x: auto; -webkit-overflow-scrolling: touch; scroll-snap-type: x proximity;
    gap: 2px; scrollbar-width: none; }
  #topnav-links::-webkit-scrollbar { display: none; }
  #topnav-links a { flex: 0 0 auto; scroll-snap-align: center; padding: 6px 8px; }
  /* p4d: hõljuv „Küsi nõustajalt" katab kerides tabeli parema serva. Kerimise ajal kahaneb ta
     44×44 ikooniks (Apple/Google puutesihi miinimum) ja peatumisel tuleb tekst tagasi — nupp
     ei kao kunagi ära, ainult ei sega lugemist. Klassi paneb js/app.js. */
  #noustaja-ava.nou-ava-vaike { width: 44px; height: 44px; min-height: 44px; padding: 0;
    border-radius: 50%; overflow: hidden; color: transparent; }
  #noustaja-ava.nou-ava-vaike::before { content: "💬"; color: #fff; font-size: 20px;
    display: block; line-height: 44px; text-align: center; }
}

/* v2.30 NÕUSOLEKUVAADE (js/noustaja.js näitab nõustaja esmaavamisel). Sama paneel, vestluse
   asemel; kerib, kui tekst ei mahu. */
.nou-noustumine { flex: 1 1 auto; overflow-y: auto; padding: 12px 14px; min-height: 140px; }
.nou-noustumine[hidden] { display: none; }
.nou-noustumine:focus { outline: none; }
.nou-noust-tekst h3 { margin: 0 0 8px; font-size: 0.98rem; }
.nou-noust-tekst p { margin: 0 0 8px; font-size: 0.86rem; line-height: 1.45; }
.nou-noust-keeld { margin: 4px 0 10px; padding: 7px 10px; font-size: 0.82rem;
  background: var(--err-bg); border: 1px solid #f0bcb8; color: var(--err); border-radius: 8px; }
.nou-noust-chk { display: flex; gap: 8px; align-items: flex-start; font-size: 0.9rem;
  font-weight: 600; margin: 6px 0 12px; cursor: pointer; }
.nou-noust-chk input { margin-top: 2px; }
.nou-noust-nupud { display: flex; gap: 10px; }
#noustaja-noustumine-alusta { background: var(--green); color: #fff; border: none;
  border-radius: 6px; padding: 9px 18px; font: inherit; font-weight: 600; cursor: pointer; }
#noustaja-noustumine-alusta:hover:not(:disabled) { background: var(--green-dark); }
#noustaja-noustumine-alusta:disabled { background: #9db3a1; cursor: default; }
.nou-noust-ei { background: transparent; color: var(--muted); border: 1px solid var(--border);
  border-radius: 6px; padding: 9px 16px; font: inherit; cursor: pointer; }
.nou-noust-ei:hover { background: var(--ok-bg); }

/* ---------- v2.65 OTSUSERIDA LEPINGUÜHIKUTES (Masinavajaduse „ava"-detail) ----------
   Marek 03.08.2026: otsuse kolm arvu olid ühe pika lause sees. Nüüd on plokk sildistatud
   ridadena — TÖÖ · PUUDU · VÕRDLUS · OTSUS — ja võrdlus on tabel, mitte lause.
   NB `.fert-note` piirab laiuse 260 px-le (tabelimärkuste jaoks); siin see ei kehti. */
.ots-blokk { max-width: none; font-size: 0.82rem; color: var(--text, inherit); line-height: 1.5; }
.ots-rida { display: flex; gap: 10px; align-items: flex-start; padding: 3px 0; }
.ots-rida + .ots-rida { border-top: 1px solid var(--border); }
.ots-silt { flex: 0 0 68px; font-weight: 700; font-size: 0.72rem; letter-spacing: .04em;
  color: var(--muted); padding-top: 2px; }
.ots-vordlus { border-collapse: collapse; font-size: 0.82rem; }
.ots-vordlus td { padding: 1px 10px 1px 0; vertical-align: baseline; }
.ots-vordlus tr.ots-valitud td { font-weight: 700; }
.ots-vordlus .ots-nool { color: var(--green-dark, green); font-weight: 700; white-space: nowrap; }

/* ---------- v2.68 PÕLLU OPERATSIOONID TÄISLAIUSES (Marek 04.08.2026) ----------
   Loend elas enne kitsas veerus (.fert-note, max-width 260 px): iga töö murdus kümnele reale
   ja üks põld võttis mitu ekraanitäit („ma jäängi ketrama"). Nüüd avaneb rea alla üks rida
   töö kohta; masinaahel on tooltip'is. */
.ops-lahti > td { background: rgba(0, 0, 0, .03); padding: 6px 10px; }
.ops-plokk { font-size: 0.82rem; line-height: 1.5; }
.ops-pais { font-size: 0.75rem; letter-spacing: .03em; margin-bottom: 3px; }
.ops-rida { display: flex; flex-wrap: wrap; gap: 4px 14px; align-items: baseline;
  padding: 2px 0; border-top: 1px solid var(--border); }
.ops-rida:first-of-type { border-top: none; }
.ops-nimi { flex: 1 1 22em; min-width: 14em; }
.ops-aken { flex: 0 0 9em; }
.ops-nr { flex: 0 0 auto; min-width: 6em; text-align: right; white-space: nowrap; }

/* ---------- v2.75 SEADETE GRID: pikk rippmenüü ei tohi naabrile peale joosta ----------
   Mareki leid 04.08.2026: „Läbivoolukuivati, segavool (moodne) — 4,5 MJ/kg vett" venitas
   lahtri laiemaks kui grid'i veerg ja kattis retsirkulatsiooni linnukese. Grid'i element ei
   kahane vaikimisi alla oma sisu (min-width:auto) — see on selle vea klassikaline põhjus. */
.set-grid > .set-field { min-width: 0; }
.set-field select, .set-field input[type="number"], .set-field input[type="text"] { max-width: 100%; }
.set-field select { text-overflow: ellipsis; }

/* v3.84 Kontrolli rühmad ja „vii mind sinna" link */
.check-mine { white-space: nowrap; font-weight: 600; color: var(--green-dark); }
.check-firma { font-weight: 600; }
.check-metoodika-plokk { margin: 6px 0 10px; }
.check-metoodika-plokk > summary { cursor: pointer; padding: 4px 0; }

/* v3.87 „märgi põllud → määra töökäigud" tegevusriba */
.masin-valik { background: #f4f8f4; border: 1px solid #dde4dd; border-radius: 8px; padding: 8px 10px; margin: 6px 0; font-size: 0.88rem; }
.masin-valik button { padding: 5px 10px; font-size: 0.85rem; background: var(--green); color: #fff; }
.masin-valik a { color: var(--green-dark); font-weight: 600; }

/* v4.02 koondvõrdlus (kinnitatud eskiisid 31.08.2026): kaks tulpa kõrvuti + vahe rida */
.fkv-box { border: 1px solid var(--border); border-radius: 8px; padding: 8px 12px; margin: 8px 0; background: var(--card); }
.fkv-pea { font-weight: 600; margin-bottom: 4px; display: inline-block; }
.fkv-rida { display: flex; align-items: center; gap: 8px; margin: 3px 0; }
.fkv-lbl { flex: 0 0 132px; color: var(--muted); font-size: 0.85rem; }
.fkv-bar { flex: 1; height: 13px; background: var(--bg); border: 1px solid var(--border); border-radius: 4px; overflow: hidden; }
.fkv-fill { display: block; height: 100%; border-radius: 3px; }
.fkv-sinu { background: #378add; }
.fkv-app { background: #9aa3ad; }
.fkv-eur { flex: 0 0 110px; text-align: right; font-size: 0.9rem; }
.fkv-vahe { margin: 6px 0 0; }
.fkv-ok { color: var(--green); }
.fkv-miss { margin: 4px 0 0; font-size: 0.82rem; }

/* v4.05: riskiploki miinuste tabel (Mareki kinnitatud prototüüp 01.09.2026) */
.risk-miinus { border-collapse: collapse; margin: 8px 0 4px; }
.risk-miinus th, .risk-miinus td { padding: 2px 12px 2px 0; text-align: left; font-weight: normal; }
.risk-miinus th { color: var(--muted, #777); border-bottom: 1px solid rgba(0,0,0,.15); }
.risk-miinus th.r, .risk-miinus td.r { text-align: right; }

/* v4.11 (Mareki nõue 02.09.2026: „igal kultuuril Kate toetusega €/ha NÄHA"): kattetulu tabel on
   20 veergu lai ja viimane veerg jäi rõhtkerimise taha — LÕPPTULEMUS kleepub paremasse serva
   ja on alati nähtaval, keskosa kerib tema alt läbi. Vari eristab kleepuva veeru keritavast. */
table.econ th:last-child, table.econ td:last-child {
  position: sticky; right: 0; background: var(--card, #fff);
  box-shadow: -6px 0 6px -6px rgba(0,0,0,.3);
}
table.econ thead th:last-child { z-index: 2; }

/* v4.35 (audit P2-7 d): generaatori TULEMUSPANEEL alert() asemel — tulemus jääb ekraanile,
   ⚠-read punaselt, ✕ sulgeb. Sama tekst, mis varem dialoogis. */
.gen-tulemus{margin:10px 0 0;padding:10px 34px 10px 12px;border:1px solid var(--line,#c8d2c8);border-left:4px solid var(--green-dark,#3f7a3f);
  border-radius:8px;background:#f7faf7;position:relative;max-width:70ch}
.gen-tulemus p{margin:0 0 4px;font-size:14px;line-height:1.45}
.gen-tulemus p:last-child{margin-bottom:0}
.gen-tulemus .gen-hoiatus{color:var(--err,#b3261e);font-weight:600}
.gen-tulemus-x{position:absolute;top:6px;right:6px;border:0;background:none;font-size:16px;line-height:1;cursor:pointer;color:#5a6b5a;padding:2px 6px}
.gen-tulemus-x:hover{color:#1d2b1d}
button[aria-busy="true"]{opacity:.75;cursor:progress}

/* 🔴 v4.35 ARVUD PAREMALE (audit P3-1; töökäsk 3 p7).
   Vasakule joondatud veerus näevad 1234 ja 98 ühepikkused välja — suurusjärk kaob ära, ja just
   suurusjärku farmer tabelist otsib. `tabular-nums` hoiab numbrid ka eri laiusega numbrimärkide
   juures kohakuti. Klassi paneb DOM-i peale js/app.js numJoondus() ja AINULT veergudele, kus
   kõik lahtrid on arvud — tekstiveerg jääb vasakule. */
td.num, th.num { text-align: right; font-variant-numeric: tabular-nums; }

/* 🔴 v4.35 KLAVIATUURIFOOKUS ON NÄHTAV (audit P2-12; töökäsk 3 p5).
   Tab-klahviga liikudes ei olnud näha, KUS fookus on: navis, nuppudel ja klapitavatel plokkidel
   sulas ta taustaga kokku. Ilma selleta ei saa äppi klaviatuuriga kasutada — ja seda vajab iga
   ekraanilugeja kasutaja ning igaüks, kelle hiir parasjagu ei tööta.
   `:focus-visible` (mitte `:focus`) tähendab, et HIIREGA klõpsates raami EI tule — ainult
   klaviatuurilt. Navis on taust tumeroheline, seega raam valge; mujal `currentColor`. */
:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }
#topnav a:focus-visible, #topnav select:focus-visible, #topnav button:focus-visible {
  outline: 2px solid #fff; outline-offset: 2px;
}
summary:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }
/* Sisenditel jääb roheline ääris (see on OLEMASOLEV kuju ja ei muutu), aga klaviatuurilt tulles
   lisandub sellele ka raam — muidu ei erine fookus hiireklõpsust. */
#fields-table input:focus-visible, #samples-table input:focus-visible, #seed-table input:focus-visible,
#noustaja-tekst:focus-visible, .nou-noustumine:focus-visible {
  outline: 2px solid var(--green); outline-offset: 1px;
}

/* 🔴 v4.41 (töökäsk 7 p2.2): tühi hinnaväli NÄEB VÄLJA tühi — seni ei erinenud ta täidetust
   ja farmer ei näinud, millisel preparaadil hind puudub (kulu ja kattetulu jäid osaliseks). */
input.hind-puudu { border: 2px solid var(--err); background: var(--err-bg); }
.tkv-hindpuudu { margin-bottom: 8px; }


/* v4.66: TÖÖKÄSK TÖÖTAJALE — ekraanil tabel väetuslehel; prindis AINULT töökäsk,
   mitte kogu äpp (tavaline Prindi annab kõik lehed — töötajale läheb üks leht). */
#tookask-paber { display: none; }
table.tookask-tbl { width: 100%; border-collapse: collapse; }
table.tookask-tbl th, table.tookask-tbl td { border: 1px solid var(--border); padding: 4px 6px; font-size: 0.9rem; vertical-align: top; }
table.tookask-tbl thead th { background: #e3efe4; color: var(--green-dark); }
@media print {
  body.print-tookask header, body.print-tookask main, body.print-tookask footer,
  body.print-tookask #print-head, body.print-tookask #topnav,
  body.print-tookask #noustaja-ava, body.print-tookask #noustaja-paneel { display: none !important; }
  body.print-tookask #tookask-paber { display: block !important; }
  body.print-tookask #tookask-paber .print-title { font-size: 1.1rem; font-weight: bold; margin: 0 0 4px; }
  body.print-tookask #tookask-paber th, body.print-tookask #tookask-paber td { border: 1px solid #999; }
  /* v4.74: paberile läheb see, mida töötaja vajab — massiivi number on agronoomi tunnus */
  body.print-tookask .tookask-massiiv { display: none !important; }
}

.tookask-hoiatus { color: var(--err); font-weight: 600; }
.tookask-tbl .tookask-massiiv { font-size: 0.8rem; color: #666; }

/* v4.82 Maarent neljas sammus — sama välimus mis „Alusta siit" rajal */
.mr-rada { margin: 0 0 12px; padding: 10px 14px; border: 1px solid var(--green); border-radius: 8px; background: #f1f8f1; }
.mr-rada > b { color: var(--green-dark); }
.mr-rada ol { list-style: none; margin: 6px 0 0; padding: 0; }
.mr-rada li { padding: 3px 0; font-size: 0.92rem; }
.mr-rada li a { text-decoration: none; color: var(--green-dark); font-weight: 600; }
.mr-rada li.as-ok, .mr-rada li.as-ok a { color: var(--muted); font-weight: 400; }
.mr-rada li.as-puudu a:hover { text-decoration: underline; }
.mr-juhend { margin: 4px 0 8px; padding-left: 22px; }
.mr-juhend li { margin: 3px 0; }

/* v4.99 K2/O15 (Maarent 3. samm): rida jääb massiivi kohta ja katastriüksuste nimed jäävad nähtavaks — veerg laiemaks (enne ~110 px),
   et loend mahuks enamasti kahele reale ja rea kõrgus väheneks. Mobiilis jääb v3.54 kitsas kärbitud kuju (@media max-width 560px). */
@media (min-width: 561px) { td.mseo-eelvaade { min-width: 40em; } }

/* v4.99 K3/O16: generaatorinupu lehesisene kinnitusriba (kolm nuppu; confirm() jääb ainult kustutamistele) */
.gen-riba{margin:10px 0 0;padding:10px 12px;border:1px solid var(--line,#c8d2c8);border-left:4px solid var(--green-dark,#3f7a3f);border-radius:6px;background:#f6f9f5;max-width:820px}
.gen-riba p{margin:0 0 6px;line-height:1.45}
.gen-riba .gen-riba-pea{font-weight:600}
.gen-riba .gen-riba-nupud{margin:8px 0 0}
.gen-riba button{margin:0 6px 4px 0}
.gen-riba .gen-riba-koik{background:#b3261e;color:#fff}
.gen-riba .gen-riba-katkesta{background:#fff;color:var(--green-dark,#1b5e20);border:1px solid #9fb59f}

/* v5.02 T4 (audit S4): peatatud konto näeb ainult Eksporti — andmed kätte, muud lehed ja muutmine kinni (server keelab kirjutamise) */
body.konto-peatatud main > section:not(#sec-eksport) { display: none !important; }
body.konto-peatatud #topnav-links a:not([href="#sec-eksport"]) { display: none !important; }
body.konto-peatatud #ai-nupp, body.konto-peatatud #noustaja-nupp, body.konto-peatatud #alusta { display: none !important; }

/* v5.02 U3 (D10): PEANUPUD - plaan, piirid, mullaproovid - suuremad ja tumedad, et farmer leiaks need esimesena */
button.btn-pea { font-size: 1.05rem; font-weight: 700; padding: 12px 20px; background: var(--green-dark); color: #fff; border-radius: 8px; box-shadow: 0 2px 6px rgba(0,0,0,0.18); }
button.btn-pea:hover { filter: brightness(1.08); }
/* v5.02 U8 (D11): "Alusta siit" rada ainult Ylevaatel ja Juhendis - mujal peidus */
#alusta-siit.rada-peidus { display: none !important; }

/* ===== v5.02 D10-D13, D21, D22 (audit 13.10, ligipaasetavus ja mobiil) ===== */
/* D11: kontrast >= 4,5:1 — muted tumedamaks, merevaik ja kohatäide tumedamaks */
:root { --muted: #5c6b61; --amber: #8a4b00; }
::placeholder { color: #5f6e64; opacity: 1; }
/* D10: sisestuslahtri aaris nahtav ka ilma fookuseta (1,30:1 oli nahtamatu) */
#fields-table input, #samples-table input, #seed-table input, .tkv-ost input, .econ input { border: 1px solid #879489; background: #fff; border-radius: 3px; }
#fields-table input:focus, #samples-table input:focus { border-color: var(--green); }
@media (max-width: 560px) {
  /* D12: puuteala vahemalt 44 px; D13: sisendi kiri 16 px (iOS ei suumi fookusel) */
  main input, main select, main button, #topnav a, .btn-like, .btn-del, #noustaja-sulge, .pager button, .cropfilter button { min-height: 44px; }
  main input, main select, main textarea, #noustaja-paneel textarea, #noustaja-paneel input { font-size: 16px; }
  input[type=checkbox] { width: 44px; height: 44px; accent-color: var(--green); }   /* v5.04 L8 (D12) */
  /* v5.04 L8 (D13): tabelite sisendid 16 px (id-valija ületas `main input` reegli — põllu nr oli 14,4 px) */
  #fields-table input, #samples-table input, #seed-table input, .fert input, .econ input, .tkv input, .tkv-ost input, #masin-table input, #masin-table select, .masin-seaded input, #products-table input { font-size: 16px; }
  a.check-mine, .yl-list a { display: inline-block; padding: 10px 4px; }
  /* D21: Masinate kaks kulmutatud veergu kitsamad 360 px ekraanil */
  #masin-table th:nth-child(1), #masin-table td:nth-child(1) { min-width: 44px; }
  #masin-table th:nth-child(2), #masin-table td:nth-child(2) { left: 44px; min-width: 90px; max-width: 110px; }
  #masin-table td:nth-child(2) input { width: 86px; }
  /* D22: kaart ei votta tervet ekraani ja lubab lehe kerimist */
  #kaart-view { height: 55vh; touch-action: pan-y; }
}

/* v5.02 mobiil 390 px (töökäsk jaotis 12, käsitsi kontroll 15.10): Ekspordi töökäsu valik (select) oli 493 px lai ja lükkas lehe laiemaks — valik mahub ekraanile, pikk tekst lõigatakse */
#sec-eksport select { max-width: 100%; }

/* v5.04 J38 + otsus B (Marek 15.10): punane lahter = puuduv või vigane number — värv + aria-invalid + väike ⚠, mille puudutus näitab lühikese põhjuse.
   Pikka teksti vaates ei ole (pikk põhjus ainult Kontrollis). Kontrast #c62828 valgel 5,3:1. */
td.lahter-punane { color: var(--err); box-shadow: inset 0 0 0 2px var(--err); font-weight: 600; }
td.lahter-punane b { color: var(--err); }
.viga-miks { display: inline-block; min-width: 24px; min-height: 24px; line-height: 24px; text-align: center; color: var(--err); cursor: pointer; font-size: 14px; vertical-align: middle; user-select: none; }
.viga-miks:focus-visible { outline: 2px solid var(--err); outline-offset: 1px; }
.viga-tekst { display: block; color: var(--err); font-size: 12px; font-weight: 400; line-height: 1.3; max-width: 22em; white-space: normal; }

/* v5.04 L7 (D10): Masinate, Väetuse, Toodete ja TKV numbrisisendite ääris ≥ 3:1 (#879489 valgel 3,4:1; --border #dde4dd oli 1,3:1) */
#masin-table input, #masin-table select, .masin-seaded input, .fert input, #products-table input[type="number"], .tkv input[type="number"], .prod-form input, .prod-form select, .tkv-surve input[type="text"] { border-color: #879489; }
/* v5.04 K1: kaardilt arvutatud kaugus on kohatäide (≈ … kaart), kaldkirjas — ei paista kliendi sisestatud väärtusena */
input.km-kaardilt::placeholder { font-style: italic; color: #8a978d; }
