/* =====================================================
   Erametsa kaart - CSS

   VÄRVIPALETT vahetatud 2026-08-11 (eramets.mkoort.eu haru, kasutaja soov:
   "muudame ka igalpool värvilahendust, et oleks ilus, aga erineks RMK
   lahendusest oluliselt"). Valitud suund: "Männimets õhtul" (tumesinine/
   navy põhi + soe kuldne aktsent) — kolme mockup-suuna hulgast valitud,
   vt Claude-projekti dokumenti. Muudeti AINULT need 5 muutujat (kogu UI
   — navigatsioon, nupud, jalus, sisselogimisleht jm — kasutab neid läbivalt
   var(...) kaudu, seega enamik lehti uuenes ILMA iga reegli eraldi
   muutmiseta). Kaardi enda KIHIVÄRVID (teed/MPS/truubid jm, vt Haldus ->
   "Kihtide värvid") jäid kasutaja soovil TEADLIKULT muutumatuks — need
   on eraldi, admin-hallatavad ja neil on oma otstarbekas tähendus.
   Bootstrap'i enda semantilised värvid (success=roheline "õnnestus",
   danger=punane "viga" jm) samuti TEADLIKULT muutmata — see on
   üldkasutatav veebikonventsioon, mitte bränd.
   ===================================================== */

:root {
  --forest-dark:   #12172b;
  --forest:        #1c2541;
  --forest-mid:    #3e4f82;
  --forest-light:  #c08a2e;
  --forest-pale:   #f2e9d8;
  --orange:        #e76f51;
}

body {
  background: #f4f6f4;
  font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;
  font-size: 0.92rem;
}

/* "Chromeless" lehed (praegu ainult töölaud) — ülariba puudub täiesti,
   terve leht (mitte ainult navbar) kannab tumerohelist tausta. */
body.page-chromeless { background: var(--forest-dark) !important; }

/* Navbar */
.bg-forest { background-color: var(--forest-dark) !important; }
.navbar-dark .navbar-nav .nav-link { color: rgba(255,255,255,.85); padding: 0.5rem 0.85rem; border-radius: 6px; transition: background .15s; }
.navbar-dark .navbar-nav .nav-link:hover,
.navbar-dark .navbar-nav .nav-link.active { background: rgba(255,255,255,.15); color: #fff; }
.navbar-brand { font-size: 1.1rem; letter-spacing: .02em; }
.navbar-brand:hover, .navbar-brand:focus { color: #fff; }
.navbar-logo-img { height: 32px; width: auto; max-width: 140px; object-fit: contain; }

/* "Chromeless" ujuv menüünupp (Roll/Kuva/konto) paremas ülanurgas.
   z-index 1040 (mitte 1030): dashboard.php kaardil on nüüd ka "Suurenda
   üle lehe" (vt .kaart-taisekraan, z-index:1030) — kuna chromeless
   lehel pole ülemist navigatsiooniriba, kattub suurendatud kaart
   TÄPSELT selle nupurea alaga (mõlemad position:fixed, samas nurgas).
   Võrdse z-index'i korral kaotaks hilisem DOM-element (kaart) varasema
   (menüünupud) alla — menüünupud PEAVAD jääma kaardi PEALE nähtavaks/
   klõpsatavaks ka suurendatud vaates. */
/* TÄIENDUS 2026-08-06 (kasutaja soov, 2. voor): "Chromeless" töölaual
   (dashboard.php) kerivad nupud (Abi/Sõnumid/Teated/Roll) on
   position:fixed ja jäävad seega alati ekraanil "sticky" nähtavaks —
   aga kui nende TAGA kerib alt läbi hele sisu (nt .dash-kaart-nupp
   heleda taustaga kaardid mobiilis, vt .dash-brand parandus samas
   voorus ülal), kadus varasem läbipaistev valge nupu-taust
   (rgba(255,255,255,.12)) hele-heleda tausta peal ära, muutes nupud
   raskesti nähtavaks/klõpsatavaks. Lahendus (kinnitatud
   AskUserQuestion'iga: "Terve nuppude riba ühine roheline taust"):
   .chromeless-menu ise saab ühise täislahustunud tumerohelise
   "pillikujulise" tausta, mis on ALATI nähtav olenemata sellest, mis
   selle taga kerib; üksikud nupud (.chromeless-menu-nupp) kaotasid oma
   eraldi tausta/äärise ja istuvad nüüd selle ühise riba SEES. */
.chromeless-menu {
  position: fixed;
  top: 1rem;
  right: 1rem;
  z-index: 1040;
  background: var(--forest-dark);
  border: 1px solid rgba(255,255,255,.25);
  border-radius: 999px;
  padding: 6px;
  box-shadow: 0 2px 12px rgba(0,0,0,.35);
}
.chromeless-menu-nupp {
  width: 46px; height: 46px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 50%;
  background: transparent;
  border: none;
  color: #fff;
  font-size: 1.25rem;
  transition: background .15s ease;
}
.chromeless-menu-nupp:hover, .chromeless-menu-nupp:focus {
  background: rgba(255,255,255,.18);
  color: #fff;
}

/* TÄIENDUS 2026-08-06 (kasutaja soov, 3. voor): mobiilis peab roheline
   nupurida (.chromeless-menu) jääma lehe horisontaalselt KESKELE, mitte
   paremasse ülanurka nagu arvutis/tahvlil — kinnitatud AskUserQuestion'iga
   ("ainult mobiilis, jääb üleval, aga keskel"). Arvuti/tahvli (≥768px)
   vaade jääb muutumatuks (right:1rem ülal). `right` nullitakse, et see
   ei mõjutaks enam `left:50%` arvutust; `transform: translateX(-50%)`
   tsentreerib riba täpselt oma laiuse järgi, olenemata nuppude arvust. */
@media (max-width: 767.98px) {
  .chromeless-menu {
    right: auto;
    left: 50%;
    transform: translateX(-50%);
  }
}

/* Ülariba (täismenüüga lehtedel, nt Teed/Sillad/MPS) — alati nähtav,
   ei ole enam peidetav/hamburgeriga avatav (kasutaja soov 2026-07-28). */
.site-nav-riba-pysiv {
  position: sticky;
  top: 0;
  z-index: 1035;
}
.site-nav-toggle-nupp {
  width: 38px; height: 38px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 50%;
  background: rgba(255,255,255,.1);
  border: 1px solid rgba(255,255,255,.3);
  color: #fff;
  font-size: 1.15rem;
  transition: background .15s ease;
}
.site-nav-toggle-nupp:hover, .site-nav-toggle-nupp:focus {
  background: rgba(255,255,255,.22);
  color: #fff;
}
.site-nav-toggle-nupp.avatud {
  background: rgba(255,255,255,.22);
}

/* Cards */
.card { border: none; border-radius: 10px; box-shadow: 0 1px 6px rgba(0,0,0,.08); }
.card-header { border-radius: 10px 10px 0 0 !important; background: var(--forest); color: #fff; font-weight: 600; }

/* Stat cards */
.stat-card { border-radius: 12px; padding: 1.2rem 1.4rem; background: #fff; border: 1px solid #e9ecef; color: #212529; min-height: 110px; display: flex; flex-direction: column; justify-content: space-between; }
.stat-card .stat-value { font-size: 2.2rem; font-weight: 700; line-height: 1; color: #212529; }
.stat-card .stat-label { font-size: 0.82rem; opacity: .7; margin-top: .4rem; color: #495057; }
.stat-card .stat-icon { font-size: 2.4rem; opacity: .12; position: absolute; right: 1.2rem; top: 1rem; color: #212529; }
.stat-card { position: relative; overflow: hidden; }
.stat-green  { border-left: 4px solid var(--forest); }
.stat-teal   { border-left: 4px solid #0f7173; }
.stat-orange { border-left: 4px solid #e76f51; }
.stat-red    { border-left: 4px solid #c1121f; }

/* Table */
.table-hover tbody tr:hover { background: var(--forest-pale); }
.table th { font-weight: 600; font-size: .8rem; text-transform: uppercase; letter-spacing: .04em; color: #666; }

/* Badges */
.bg-orange { background-color: var(--orange) !important; }

/* Forms */
.form-label { font-weight: 600; font-size: .85rem; color: #444; }
.btn-forest { background: var(--forest); color: #fff; border-color: var(--forest); }
.btn-forest:hover { background: var(--forest-dark); border-color: var(--forest-dark); color: #fff; }
.required::after { content: ' *'; color: #dc3545; }

/* Inspection form */
.punkt-row { border-left: 4px solid var(--forest-pale); transition: border-color .2s; }
.punkt-row:hover { border-left-color: var(--forest-light); }
.punkt-nr { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; background: var(--forest); color: #fff; border-radius: 50%; font-size: .75rem; font-weight: 700; flex-shrink: 0; }

/* Rating stars / buttons */
.rating-btn { width: 42px; height: 38px; font-weight: 700; }
.rating-btn.active-1 { background: #2d6a4f; color: #fff; border-color: #2d6a4f; }
.rating-btn.active-2 { background: #f4d35e; color: #333; border-color: #e9c46a; }
.rating-btn.active-3 { background: #e76f51; color: #fff; border-color: #e76f51; }
.rating-btn.active-4 { background: #c1121f; color: #fff; border-color: #c1121f; }

/* Search box */
.search-wrap { position: relative; }
.search-wrap .bi { position: absolute; left: .75rem; top: 50%; transform: translateY(-50%); color: #888; }
.search-wrap input { padding-left: 2.2rem; }

/* Footer — TÄIENDUS 2026-08-06 (kasutaja soov, 11. voor): jalus ("RMK
   metsataristu seire © <aasta>", vt includes/layout.php page_footer()) on
   JAGATUD element — kuvatakse samal kujul peaaegu kõigi lehtede allservas
   (mitte ainult töölaual). Varem oli taust valge (`#fff`, allpool endine
   väärtus) ja tekst Bootstrapi `.text-muted` hallis toonis — kasutajale
   paistis see "valge/hallika taustaga" ribana lehe lõpus. Kinnitatud
   AskUserQuestion'iga ("Muuda kõikjal saidil"): jalus saab sama
   tumerohelise tausta, mida kasutab navbar (`.bg-forest`/`--forest-dark`)
   ja "chromeless" töölaud, + valge tekst — ühtne roheline "raam" iga lehe
   üla- JA allservas. `border-top` (varem kontrastiks vastu valget body-
   tausta) pole enam vajalik, kuna tumeroheline taust eristub iseenesest.
   `includes/layout.php`'s eemaldati jaluse `<small>` elemendilt Bootstrapi
   `.text-muted` klass (see kasutab BS 5.3's `color: ... !important`, mis
   oleks siinse värvimuudatuse üle kirjutanud).
   VIGA (parandatud SAMAS voorus, enne kasutajale saatmist): esimesel
   katsel lisati uus `.footer-bar` reegel EKSLIKULT teise kohta (faili
   algusesse, Navbar sektsiooni juurde) — kuna SIIN, algses "Footer"
   sektsioonis, oli juba OLEMASOLEV `.footer-bar` reegel (valge taustaga),
   mis CSS-i kaskaadis (sama spetsiifilisus, hilisem asukoht failis) uue
   reegli lihtsalt üle kirjutas. Kasutaja märkas: "ei muutunud jaluses see
   taustavärv". Parandus: uus reegel toodi SIIA (ainsasse õigesse kohta,
   asendades vana väärtuse otse), duplikaat eemaldati algusest. Õppetund:
   UUE CSS-klassi reegli lisamisel tuleb ALATI enne kontrollida, kas sama
   klass on failis juba mujal defineeritud (nt otsinguga läbi terve faili),
   mitte eeldada, et klass on veel kasutamata.
   TÄIENDUS (kasutaja teade "tekst jäi valgeks tegemata"): taust läks nüüd
   õigesti roheliseks, aga TEKST jäi hallikaks. Tõenäoline põhjus: see
   nõuab KAHTE faili (style.css SIIN + includes/layout.php, kust eemaldati
   jaluse <small>'ilt Bootstrapi `.text-muted` klass) — kui ainult
   style.css jõudis serverisse, on `<small class="text-muted">` seal
   endiselt küljes, ja Bootstrap 5.3's `.text-muted { color: ... !important }`
   lööb tavalise (mitte-!important) värvireegli ALATI üle, sõltumata CSS-
   failide laadimisjärjekorrast. Parandus: värvireegel SIIN sai ka ise
   `!important` + kõrgem spetsiifilisus (`.footer-bar small`/`.footer-bar
   .text-muted`, mõlemad spetsiifilisusega (0,1,1)/(0,2,0) — kõrgemad kui
   pelk `.text-muted` (0,1,0)) — see töötab nüüd MÕLEMAL juhul: nii siis,
   kui layout.php on juba uuendatud (small ilma klassita, pärib värvi
   .footer-bar'ilt), KUI KA siis, kui vana `class="text-muted"` on
   endiselt HTML-is küljes. Layout.php eraldi üleslaadimist pole seega enam
   rangelt vaja selle konkreetse värviprobleemi jaoks, aga tasub siiski
   teha (puhtam HTML, üks vähem "toetuv" CSS-reegel tulevikus). */
.footer-bar { background: var(--forest-dark); color: #fff; }
.footer-bar small,
.footer-bar .text-muted {
  color: #fff !important;
}

/* Login page */
.login-page { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, var(--forest-dark), var(--forest-mid)); }
.login-card { width: 100%; max-width: 400px; border-radius: 16px; padding: 0; overflow: hidden; background: #fff; }
/* Tumeroheline brändi-riba kaardi ülaosas — logo + "metsataristu seire"
   tekst kõrvuti, tekst täpselt logo kastikeskmega joondatud
   (align-items:center). Kavand kinnitatud kasutajaga 2026-08-01
   (variant B: valge sisu-kaart + tumeroheline logo-riba). */
.login-band { background: var(--forest-dark); padding: 1.6rem 1.5rem 1.3rem; display: flex; align-items: center; justify-content: center; gap: 10px; }
.login-band-text { color: #fff; font-weight: 700; font-size: 1.05rem; line-height: 1; }
.login-card-body { padding: 1.8rem 1.6rem 2rem; }
/* Admini poolt Halduse alt üles laaditud logo (vt index.php, sama seade
   mis ülariba brändis). Kompaktsem kui varem (72px), kuna logo elab nüüd
   õhukesel brändi-ribal, mitte kaardi keskel omaette suurel real. */
.login-logo-img { max-height: 34px; max-width: 200px; width: auto; object-fit: contain; display: block; }

/* Responsive tweaks */
@media (max-width: 576px) {
  .stat-value { font-size: 1.8rem !important; }
  .table-responsive { font-size: .8rem; }
  h4, h5 { font-size: 1rem; }
}

/* Progress bars for analytics */
.progress { border-radius: 8px; height: 10px; }

/* Kihi laadimise/ehitamise teade (vt assets/kihid.js) — keset lehte,
   poolläbipaistva taustavarjutusega "modaal", mis näitab konkreetse
   "Kihid" paneelis sisselülitatud kihi (nt Teed) andmete laadimist ja
   kaardile joonistamise edenemist ning kaob automaatselt, kui see on
   valmis (kasutaja soov 2026-08-05: "see on keset lehte visuaalselt
   kenasti kujundatult"). Näidatakse AINULT kasutaja enda algatatud
   tegevuste puhul (checkboxi märkimine, alamfiltri muutmine) — kaardi
   taustal (moveend) toimuvate vaikimisi uuenduste puhul teadet ei
   näidata, vt joonistaKihtTukkidena() naitaTeadet-parameeter. */
.kihi-laadimise-varjutus {
  position: fixed;
  inset: 0;
  z-index: 1080;
  background: rgba(15, 35, 24, .28);
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 1;
  transition: opacity .25s ease;
}
.kihi-laadimise-varjutus.kihi-laadimise-teade-kaob { opacity: 0; }

.kihi-laadimise-teade {
  background: #fff;
  border-radius: 16px;
  box-shadow: 0 20px 60px rgba(0,0,0,.28);
  padding: 1.6rem 2rem;
  width: 300px;
  max-width: calc(100vw - 2rem);
  text-align: center;
}
.kihi-laadimise-teade .ikoon-ring {
  width: 56px;
  height: 56px;
  margin: 0 auto .8rem;
  border-radius: 50%;
  background: var(--forest-pale);
  display: flex;
  align-items: center;
  justify-content: center;
}
.kihi-laadimise-teade .ikoon-ring i { font-size: 1.4rem; color: var(--forest); }
.kihi-laadimise-teade .ikoon-ring .spinner-border { color: var(--forest-mid); }
.kihi-laadimise-teade h6 {
  margin: 0 0 .2rem;
  font-weight: 700;
  color: var(--forest-dark);
  font-size: 1rem;
}
.kihi-laadimise-teade .alamtekst {
  color: #6b7d73;
  font-size: .8rem;
  margin-bottom: .1rem;
}
.kihi-laadimise-teade .edenemine { margin-top: .9rem; }
.kihi-laadimise-teade .edenemise-riba-taust {
  background: var(--forest-pale);
  border-radius: 20px;
  height: 7px;
  overflow: hidden;
}
.kihi-laadimise-teade .edenemise-riba {
  background: linear-gradient(90deg, var(--forest-mid), var(--forest-light));
  height: 100%;
  border-radius: 20px;
  transition: width .15s ease;
}
.kihi-laadimise-teade .edenemise-arv {
  margin-top: .5rem;
  font-size: .74rem;
  font-weight: 600;
  color: var(--forest);
}

@media (max-width: 576px) {
  .kihi-laadimise-teade { width: calc(100vw - 2.4rem); }
}

/* Badge pill */
.badge { font-size: .75rem; font-weight: 600; border-radius: 20px; padding: .35em .7em; }

/* Inspection detail punktid */
.punkt-detail { background: #f8fdf9; border-radius: 8px; border-left: 4px solid var(--forest-mid); padding: .75rem 1rem; margin-bottom: .5rem; }
.punkt-detail.sk1 { border-color: #2d6a4f; }
.punkt-detail.sk2 { border-color: #f4d35e; }
.punkt-detail.sk3 { border-color: #e76f51; }
.punkt-detail.sk4 { border-color: #c1121f; }

/* Pagination */
.page-link { color: var(--forest); }
.page-item.active .page-link { background-color: var(--forest); border-color: var(--forest); }

/* Scrollable table container */
.table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }

/* Chart container */
.chart-container { position: relative; height: 280px; }

/* Inspektsiooni dropdown */
.dropdown-menu { border: none; box-shadow: 0 4px 20px rgba(0,0,0,.15); border-radius: 10px; min-width: 240px;
  /* Pikad rippmenüüd (nt "Roll, kuva ja konto" mobiilis, vt kasutaja
     soov 2026-07-31: menüü ei mahtunud ekraanile) saavad nüüd
     kerimisriba, selle asemel et ekraanivälja üle ulatuda. */
  max-height: 80vh; overflow-y: auto; }
.dropdown-item { padding: .6rem 1rem; border-radius: 6px; margin: 2px 4px; }
.dropdown-item:hover { background: var(--forest-pale); }
.dropdown-item .text-muted.small { font-size: .72rem; line-height: 1.3; }
.dropdown-header { color: var(--forest); font-size: .72rem; text-transform: uppercase; letter-spacing: .06em; }

/* Suuremad puutepinnad telefonivaates ja teistel puuteekraanidel — nii
   kollapsitud navigatsioonimenüü (sh "Vaade" valik) kui rippmenüüd on
   muidu liiga tihedad, et sõrmega täpselt tabada. Rakendub nii tegelikele
   puuteseadmetele (pointer:coarse) kui ka väiksematele akendele (kuni
   Bootstrapi "md" piirini, mil navigatsioon kollapsitud kujul kuvatakse). */
@media (hover: none) and (pointer: coarse), (max-width: 767.98px) {
  .navbar-dark .navbar-nav .nav-link { padding: .9rem 1rem; font-size: 1.05rem; }
  .navbar-toggler { padding: .6rem .75rem; font-size: 1.1rem; }
  .dropdown-menu { min-width: 260px; }
  .dropdown-item { padding: .9rem 1.1rem; font-size: 1rem; }
  .navbar-collapse { max-height: 80vh; overflow-y: auto; }
  .btn-sm { padding: .5rem .9rem; font-size: .88rem; }
  .form-control-sm { padding: .5rem .75rem; font-size: .95rem; }
}

/* VARASEM "tahvlis ainult ikoon" kompaktne lahendus (menüülingi teksti
   peitmine md–xl vahemikus) on TÜHISTATUD — kasutaja soovi järgi
   (2026-07-28: "tahvlivaates kuva kõik menüüpunktid väljakirjutatult
   topbaril, mobiili kuva hamburger menüü avatuna nii, et oleks ikoonid
   ja ka tekst näha") näitab menüü nüüd ALATI nii ikooni kui teksti (vt
   includes/layout.php $navHtml). Tahvli laiuses (768–1199.98px) võib
   menüü seetõttu kahele reale minna (navbar-nav'il on juba flex-wrap) —
   see on kasutaja soovitud käitumine, mitte viga. */

/* Töölaud on "chromeless" — ülariba puudub täiesti (vt body.page-chromeless
   ülal), seega sisu saab kogu ekraani kõrguse (miinus jalus) ja jääb ise
   vertikaalselt keskele. */
.dash-kesk {
  display: flex;
  align-items: center; /* kasutaja valik 2026-08-05 AskUserQuestion'iga: jäta töölaud
                           vertikaalselt keskele, ka madalamatel ekraanidel */
  justify-content: center;
  min-height: calc(100vh - 45px); /* jalus, umbkaudu */
  padding: 1rem 0; /* 2026-08-05: 2rem -> 1rem, vt dashboard.php inline stiili
                       kommentaar ("logo tõsta ülespoole") — VARUKS, tegelik
                       väärtus rakendub inline'ina */
}
.dash-kesk-sisu { max-width: 1140px; margin: 0 auto; }

/* Bränd (logo + nimi) kastide kohal — asendab endist ülariba brändi
   "chromeless" töölaual, vt dashboard.php. */
.dash-brand {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .5rem;
  margin-bottom: 1.25rem; /* 2026-08-05: 2.5rem -> 1.25rem, vt dashboard.php
                              inline stiil — VARUKS */
  color: #fff;
}
.dash-brand-logo { height: 52px; width: auto; max-width: 260px; object-fit: contain; } /* 2026-08-05: 64px -> 52px, vt dashboard.php inline stiil — VARUKS */
.dash-brand-icon { font-size: 2.75rem; color: #fff; opacity: .92; }
.dash-brand-nimi { font-size: 1.4rem; font-weight: 700; letter-spacing: .02em; }

/* ===== Töölaud — kolm suurt, värvikoodiga disainitud kaarti ===== */
.dash-kaardid {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 2rem;
  margin: 0 auto;
}

.dash-kaart-nupp {
  --dash-accent: var(--forest);
  --dash-accent-dark: var(--forest-dark);
  position: relative;
  flex: 1 1 260px;
  max-width: 340px;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 3rem 1.5rem;
  min-height: 260px;
  border-radius: 22px;
  background: #f4f6f4;
  border-top: 5px solid var(--dash-accent);
  color: var(--dash-accent-dark);
  text-decoration: none;
  box-shadow: 0 10px 26px -6px rgba(0,0,0,.35);
  transition: transform .2s cubic-bezier(.2,.8,.2,1), box-shadow .2s ease, background .15s ease;
}

.dash-kaart-nupp:hover, .dash-kaart-nupp:focus {
  color: var(--dash-accent-dark);
  background: #fff;
  transform: translateY(-6px) scale(1.02);
  box-shadow: 0 20px 40px -8px rgba(0,0,0,.45);
}

.dash-kaart-silt {
  font-size: 3.2rem;
  font-weight: 800;
  line-height: 1.1;
  color: var(--dash-accent-dark);
  letter-spacing: .01em;
}

.dash-kaart-teed   { --dash-accent: #2C9928; --dash-accent-dark: #1b5e18; }
.dash-kaart-sillad { --dash-accent: #0d6efd; --dash-accent-dark: #084298; }
.dash-kaart-mps    { --dash-accent: #6f42c1; --dash-accent-dark: #432878; }

@media (max-width: 767.98px) {
  .dash-kaart-nupp { padding: 2.25rem 1.25rem; min-height: 190px; }
  .dash-kaart-silt { font-size: 2.4rem; }
  /* PARANDUS 2026-08-06 (kasutaja soov): mobiilivaates jäi logo/bränd
     (.dash-brand, vt ülal) mõnikord "chromeless" ülemiste ujuvnuppude
     (Teated/Sõnumid/Roll — .chromeless-menu, position:fixed; top:1rem;
     right:1rem; 46px kõrged nupud) alla/nende peale, kuna .dash-kesk on
     tahtlikult vertikaalselt keskele joondatud (kasutaja varasem valik
     2026-08-05, AskUserQuestion'iga kinnitatud — "jäta töölaud
     vertikaalselt keskele, ka madalamatel ekraanidel") ning lühikestel
     mobiiliekraanidel (palju kaarte üksteise all) nihkub kogu sisu
     seetõttu üleval pool piisavalt kõrgele, et logo jääb ujuvnuppudega
     samasse ritta. Lisab brändile väikese lisaruumi ülevalt, ILMA
     keskele joondamist eemaldamata (kaart nihkub veidi allapoole, jäädes
     endiselt üldiselt keskele).
     TÄIENDUS 2026-08-06 (kasutaja soov, 2. voor): logo peaks olema veel
     ca 30px allpool eelmisest parandusest — 2.5rem (40px) + 30px = 70px
     kokku, seega 4.375rem (kinnitatud AskUserQuestion'iga: "Lisaks juba
     tehtud 40px nihkele veel 30px, kokku 70px"). */
  .dash-brand { margin-top: 4.375rem; }
}

/* Töölaua kaart (2026-08-05) — kolme nupu (Teed/MPS/Sillad) all olev
   päris toimiv, Eestiga piiratud kaart, vt dashboard.php. Sama üldine
   kaardikast-stiil, mis nuppudel (ümarad nurgad + tume vari), et jääda
   visuaalselt osaks samast kolmikust, mitte tunduda eraldiseisva
   lisandusena. `position: relative` on vajalik, et "Kihid" nupp saaks
   selle SEES ujuda (vt .dash-kaart-kihid-uju allpool). */
.dash-kaart-mahutaja {
  position: relative;
  /* 2026-08-05, kasutaja soov (kavand kinnitatud) — vt dashboard.php
     inline stiili pikk kommentaar samal elemendil. Kõik allolevatest
     väärtustest on ka INLINE rakendatud (sama muster mis mujal sel
     lehel, kuna style.css uuendused ei jõudnud varasemate voorude
     jooksul korduvalt kasutaja brauserisse õigel ajal) — see CSS-reegel
     on ainult VARUKS/dokumentatsiooniks.
     - margin-top 2rem -> 3.25rem (rohkem ruumi nuppude ja kaardi vahel)
     - max-width 1140px -> 1084px (joondub täpselt nuppude rea laiusega:
       340px * 3 + 2rem gap * 2 = 1084px, vt .dash-kaardid/.dash-kaart-nupp)
     - lisandus: border 1px solid rgba(255,255,255,.35) (õhuke poolläbi-
       paistev valge piirjoon, "piiritle kaardi ala")
     - lisandus: padding 10px (sisemine vahe piirjoone ja kaardi vahel,
       et suurenda/vähenda nupp ja mõõtkava jääksid selgelt piirjoonest
       seespool — kasutaja tagasiside kavandi kohta) */
  margin: 3.25rem auto 0;
  max-width: 1084px;
  width: 100%;
  box-sizing: border-box; /* Bootstrap reboot annab selle juba globaalselt,
                              aga otsene reegel siin kindluse mõttes —
                              ilma selleta lisanduks padding+border
                              max-width'ile PEALE, rikkudes nuppudega
                              joonduse */
  border: 1px solid rgba(255,255,255,.35);
  border-radius: 26px;
  padding: 10px;
  overflow: hidden;
  /* 2026-08-05: dashboard.php on ALATI chromeless (tumeroheline
     --forest-dark leheleht, mitte #f4f6f4), vt dashboard.php inline
     stiili kommentaar samal real — see reegel on VARUKS, kui inline
     stiil peaks eemaldatud saama; tegelik värv rakendub inline'ina. */
  background: var(--forest-dark);
  box-shadow: 0 10px 26px -6px rgba(0,0,0,.35);
}

/* "Kihid" nupp ujub kaardi PEAL, paremas ülanurgas — kasutaja soov
   2026-08-05: "Kihid nupu lisame paremale poole kaardi juurde sõna kaart
   võtame ära" (eraldi tööriistariba/"Kaart" silt kaotati täielikult, vt
   dashboard.php). algataTaustakihid() (assets/kihid.js) ehitab ise
   Bootstrapi dropdown-nupu klassiga "btn-outline-light" — see eeldab
   TUMEDAT tausta (nagu /kaart.php tumedal tööriistaribal), aga siin ujub
   nupp otse kaardipildi peal, mille värv varieerub (mets/meri/linn) —
   seetõttu antakse nupule siin oma valge, läbipaistmatu taust + vari, et
   see oleks LOETAV sõltumata sellest, mis kaardipiirkonna kohal ta on. */
.dash-kaart-kihid-uju {
  position: absolute;
  top: 1.4rem; /* 2026-08-05: .75rem -> 1.4rem, kuna mahutajale lisandus 10px
                  padding — vt dashboard.php inline stiili kommentaar */
  right: 1.4rem;
  z-index: 1000; /* Leafleti enda juhtnuppudest (zIndex ~400-1000) kõrgemal */
}
.dash-kaart-kihid-uju .dropdown-toggle {
  background: #fff;
  color: var(--forest-dark);
  border-color: #fff;
  box-shadow: 0 2px 10px rgba(0,0,0,.28);
}
.dash-kaart-kihid-uju .dropdown-toggle:hover,
.dash-kaart-kihid-uju .dropdown-toggle:focus {
  background: #fff;
  color: var(--forest-dark);
}
/* Kõrgus on peamiselt INLINE dashboard.php's (vt seal pikem selgitus,
   2026-08-05 "kaarti ei laadinud ära" — tühi div ilma kõrguseta vajub
   kokku, kui väline CSS ei jõua/jää vahemällu). See reegel on ainult
   VARUKS, kui inline stiil peaks millegipärast eemaldatud saama. */
#dash-kaart { min-height: 340px; }

/* "Kuva" demovaate nupud töölaual (ainult admin/super-admin, vt
   dashboard.php) — väikesed, diskreetsed nupud kaartide all. */
.dash-kuva-nupud {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: .6rem;
  margin: 1.75rem auto 0;
}
.dash-kuva-nupp {
  background: rgba(255,255,255,.08);
  border: 1px solid rgba(255,255,255,.3);
  color: rgba(255,255,255,.85);
  border-radius: 20px;
  padding: .4rem 1rem;
  transition: background .15s ease, color .15s ease;
}
.dash-kuva-nupp:hover, .dash-kuva-nupp:focus {
  background: rgba(255,255,255,.2);
  color: #fff;
}

/* "Kompass" nupp objekti põhikaardi päises (vt kasutaja soov 2026-08-01:
   "kaart liiguks kaasa ... keerab õiges suunas nagu kompassi jälgiks",
   vt assets/kompass.js) — sisse lülitatuna eristub selgelt rohelise
   taustaga, ikoon ise (kompassi nool) pöörleb JS-ist jooksvalt vastavalt
   telefoni kompass-suunale, et alati Põhja poole näidata. */
#kompass-toggle i { display: inline-block; transition: transform .1s linear; }
#kompass-toggle.active { background: var(--forest-light); border-color: var(--forest-light); color: #fff; }

/* Kaardi tööriistariba (Jäljed/Kompass/Punktid/Pildid/Kihid) — mobiilis
   ei mahtunud kõik nupud ühele reale ja "justify-content-end" (paremale
   joondus) lükkas esimesed nupud vaate SERVAST VÄLJA, ilma et neid oleks
   saanud kuidagi kätte (vt kasutaja teatatud viga 2026-08-01, ekraanipilt:
   "seal vaade ka natuke piirav" — Jäljed-nupp oli mobiilis nähtamatu).
   Kasutaja valis lahenduseks "liigutava riba" (Recommended, vt
   AskUserQuestion): mobiililaiuses (<768px) muutub riba horisontaalselt
   lohistatavaks, algab vasakult (nagu tavaline stories-riba) ja kõik
   nupud on ükshaaval kättesaadavad kerimisega. Lauaarvutis/tahvlis
   (≥768px) jääb päis muutumatuks (endiselt paremale joondatud, mahub
   niigi ühele reale). */
@media (max-width: 767.98px) {
  .kaardi-tooriba {
    flex-wrap: nowrap !important;
    justify-content: flex-start !important;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scroll-snap-type: x proximity;
  }
  .kaardi-tooriba > * { flex-shrink: 0; scroll-snap-align: start; }
  /* Väike visuaalne vihje, et riba on kerimisega (vasak/parem varjund) —
     ei sega puudutust, ainult dekoratiivne. */
  .kaardi-tooriba::-webkit-scrollbar { height: 4px; }
  .kaardi-tooriba::-webkit-scrollbar-thumb { background: rgba(255,255,255,.4); border-radius: 4px; }
}

/* =====================================================
   "Vaate seaded" (silma-ikoon ülariba) — objekti nime sildid Teed/MPS/
   Sillad/MTO tööpiirkonnad/Teetööd/Raiealad kihtidel, vt assets/
   kihid.js seoObjektiSilt() ja claude/metsatee-vaate-seaded-
   funktsionaalsus.md. KAKS KONTEKSTI-klassi (suurus/käitumine, kasutaja
   valikust "Vaate seaded" ikooni all):
   - .objekti-nimi-silt-hover  — hiirega/puudutusega tekkiv (Leafleti
     vaikimisi "sticky" mull).
   - .objekti-nimi-silt-pysiv  — alati nähtav (permanent:true), veidi
     väiksem + `opacity` abil läbipaistvam, et paljude objektide korral
     kaart liiga "kisendavaks" ei muutuks (kasutaja valis 2026-08-05
     teadlikult ilma suume-piiranguta variandi).

   VIGA #7 (2026-08-06, 12. voor): need reeglid EI OLNUD KUNAGI reaalselt
   jõustunud alates 2026-08-05 lisamisest — Leaflet laeb `leaflet.min.css`
   HILJEM kui see fail (vt kõik viis kaardilehte, `page_header()` struktuur),
   mistõttu Leafleti vaikimisi `.leaflet-tooltip` reegel (valge taust, must
   tekst) võitis võrdse spetsiifilisuse + hilisema laadimisjärjekorra tõttu.
   Parandus: `!important` iga päriselt kontaktis oleva omaduse peale — vt
   claude/metsatee-vaate-seaded-funktsionaalsus.md "Viga #3" täieliku loo
   jaoks.

   2026-08-06 (16. voor) — VÄRVISKEEM eraldati OMAETE "variandi"-klassiks
   (.objekti-nimi-silt-v1 .. -v10), kasutaja soovil "teeme objektide sildid
   adminnist seadistatavaks, tee ette ka 10 erinevat valikuvarianti, et
   oleks ka neid variante, kus on ainult tekst mingi borderiga". Admin
   valib Halduse "Objektide nimesiltide stiil" alt (vt includes/db.php
   get_objekti_sildi_stiil(), admin.php) — rakendub KOHE kõigile
   kasutajatele, nii hõljutades kui püsivalt kuvatavale sildile korraga
   (kasutaja kinnitatud valik, vt AskUserQuestion). assets/kihid.js
   seoObjektiSilt() lisab igale sildile KOLM klassi: .objekti-nimi-silt
   (baas: kirjatüüp) + .objekti-nimi-silt-hover VÕI -pysiv (kontekst:
   suurus/opacity, allpool) + .objekti-nimi-silt-v{N} (variant: värviskeem,
   vt iga variandi oma reegel allpool) — VÄRVI/PIIRJOONE/VARJU omadused on
   nüüd TÄIELIKULT variandi reeglites, mitte baasis/kontekstis, et
   "ainult tekst + äärisjoon" variandid (5/6/7/9) saaksid olla päriselt
   läbipaistva taustaga, ilma et baasi kõva box-shadow neid läbi paistaks.
   ===================================================== */
.objekti-nimi-silt {
  font-family: inherit;
  font-weight: 600;
}
.objekti-nimi-silt-hover {
  padding: .1rem .35rem !important;
  border-radius: 6px !important;
  font-size: .7rem !important;
}
.objekti-nimi-silt-pysiv {
  padding: .03rem .3rem !important;
  border-radius: 4px !important;
  font-size: .65rem !important;
  white-space: nowrap;
  opacity: .85;
}

/* --- Variant 1 (vaikimisi): tumeroheline täidis, valge tekst — see, mida
   sildid kasutasid enne adminni-valiku lisamist. --- */
.objekti-nimi-silt-v1 {
  background: var(--forest-dark) !important;
  color: #fff !important;
  border: none !important;
  box-shadow: 0 1px 4px rgba(0,0,0,.25) !important;
}
.objekti-nimi-silt-v1.objekti-nimi-silt-hover::before { border-top-color: var(--forest-dark) !important; }

/* --- Variant 2: kontrastne must täidis, pill-kuju. --- */
.objekti-nimi-silt-v2 {
  background: #1a1a1a !important;
  color: #fff !important;
  border: none !important;
  border-radius: 999px !important;
  box-shadow: 0 2px 6px rgba(0,0,0,.4) !important;
}
.objekti-nimi-silt-v2.objekti-nimi-silt-hover::before { border-top-color: #1a1a1a !important; }

/* --- Variant 3: puhas valge täidis, tumeroheline tekst. --- */
.objekti-nimi-silt-v3 {
  background: #fff !important;
  color: var(--forest-dark) !important;
  border: 1px solid #cdd6d0 !important;
  box-shadow: 0 1px 3px rgba(0,0,0,.2) !important;
}
.objekti-nimi-silt-v3.objekti-nimi-silt-hover::before { border-top-color: #fff !important; }

/* --- Variant 4: tumeroheline täidis, kollane tekst — kõrge nähtavus. --- */
.objekti-nimi-silt-v4 {
  background: var(--forest-dark) !important;
  color: #ffc107 !important;
  border: none !important;
  font-weight: 700 !important;
  box-shadow: 0 1px 4px rgba(0,0,0,.25) !important;
}
.objekti-nimi-silt-v4.objekti-nimi-silt-hover::before { border-top-color: var(--forest-dark) !important; }

/* --- Variant 5: ainult tekst, valge äärisjoon — tumeda tausta (mets/vesi)
   jaoks. Läbipaistev taust, tekstivari asendab täidist loetavuse jaoks. --- */
.objekti-nimi-silt-v5 {
  background: transparent !important;
  color: #fff !important;
  text-shadow: 0 1px 3px rgba(0,0,0,.9);
  border: 1.5px solid #fff !important;
  box-shadow: none !important;
}
.objekti-nimi-silt-v5.objekti-nimi-silt-hover::before { display: none !important; }

/* --- Variant 6: ainult tekst, roheline äärisjoon — hele tausta (avatud
   ala/tee) jaoks. --- */
.objekti-nimi-silt-v6 {
  background: transparent !important;
  color: var(--forest-dark) !important;
  border: 1.5px solid var(--forest-dark) !important;
  box-shadow: none !important;
}
.objekti-nimi-silt-v6.objekti-nimi-silt-hover::before { display: none !important; }

/* --- Variant 7: ainult tekst, must äärisjoon — universaalne, tekstivari
   aitab loetavusele nii heledal kui tumedal taustal. --- */
.objekti-nimi-silt-v7 {
  background: transparent !important;
  color: #fff !important;
  text-shadow: 0 1px 2px rgba(0,0,0,.85);
  border: 1.5px solid #000 !important;
  font-weight: 700 !important;
  box-shadow: none !important;
}
.objekti-nimi-silt-v7.objekti-nimi-silt-hover::before { display: none !important; }

/* --- Variant 8: poolläbipaistev tumehall pill — neutraalsem kui roheline. --- */
.objekti-nimi-silt-v8 {
  background: rgba(33,37,41,.72) !important;
  color: #fff !important;
  border: none !important;
  border-radius: 999px !important;
  box-shadow: 0 1px 3px rgba(0,0,0,.35) !important;
}
.objekti-nimi-silt-v8.objekti-nimi-silt-hover::before { border-top-color: rgba(33,37,41,.72) !important; }

/* --- Variant 9: ainult tekst, ilma piirjoone/täidiseta — minimalistlik,
   ainult tugev tekstivari loetavuse jaoks. --- */
.objekti-nimi-silt-v9 {
  background: transparent !important;
  color: #fff !important;
  text-shadow: 0 1px 2px rgba(0,0,0,.7), 0 0 7px rgba(0,0,0,.55);
  border: none !important;
  font-weight: 700 !important;
  box-shadow: none !important;
}
.objekti-nimi-silt-v9.objekti-nimi-silt-hover::before { display: none !important; }

/* --- Variant 10: valge täidis, must tekst, jäme kollane äärisjoon —
   silmatorkav, sobib esiletõstmiseks. --- */
.objekti-nimi-silt-v10 {
  background: #fff !important;
  color: #111 !important;
  border: 2px solid #ffc107 !important;
  font-weight: 700 !important;
  box-shadow: 0 1px 4px rgba(0,0,0,.25) !important;
}
.objekti-nimi-silt-v10.objekti-nimi-silt-hover::before { border-top-color: #fff !important; }

/* --- Variant 11 (kasutaja lisasoov 2026-08-06): must tekst, ILMA täidise
   ja äärisjooneta — kõige lihtsam/puhtam variant, mõeldud heledale
   taustale (nagu variant 6, aga ilma äärisjooneta). --- */
.objekti-nimi-silt-v11 {
  background: transparent !important;
  color: #000 !important;
  border: none !important;
  box-shadow: none !important;
}
.objekti-nimi-silt-v11.objekti-nimi-silt-hover::before { display: none !important; }

/* --- Variant 12 (kasutaja lisasoov 2026-08-06): valge tekst, must "shadow"
   ümber teksti — erinevalt variant 9 pehmest/hägusast varjust, on siin
   TERAV kontuur (8-suunaline nullihägune text-shadow-pinu, klassikaline
   "silt/koomiks" kontuurivõte) — must joon iga tähe ümber, mitte hägu. --- */
.objekti-nimi-silt-v12 {
  background: transparent !important;
  color: #fff !important;
  text-shadow:
    -1.5px -1.5px 0 #000,
     1.5px -1.5px 0 #000,
    -1.5px  1.5px 0 #000,
     1.5px  1.5px 0 #000,
     0      -1.5px 0 #000,
     0       1.5px 0 #000,
    -1.5px   0     0 #000,
     1.5px   0     0 #000;
  border: none !important;
  font-weight: 700 !important;
  box-shadow: none !important;
}
.objekti-nimi-silt-v12.objekti-nimi-silt-hover::before { display: none !important; }

/* =====================================================
   "Suurenda üle lehe" — kaart.php/tee_kaart.php/mps_kaart.php/
   silla_kaart.php kaardikast, vt assets/kaardi_taisekraan.js. Kasutaja
   soov 2026-08-05: kaardiala suureneb üle terve lehe (parem sirvimine),
   aga ülemine navigatsiooniriba (.site-nav-riba-pysiv) jääb NÄHTAVALE —
   kaardikast fikseeritakse riba ALLA (position:fixed, top mõõdetakse
   JS-iga reaalselt riba kõrguse järgi, vt --kaart-taisekraan-top).

   Nupp ise ujub OTSE KAARDIPILDI PEAL, kaardi paremas ülanurgas — mitte
   enam .kaardi-tooriba's Jäljed/Punktid/Pildid/Kihid nuppude kõrval.
   Kasutaja soov 2026-08-05: "suurenda üle lehe võiks olla kaardi peal
   mitte seal jäljed, punktid jne juures". Nurk: paremal üleval on vaba
   (suum + Kompass on topleft, vt assets/kompass.js; Mõõtkava on
   bottomleft, vt assets/mootkava.js).

   PARANDUS (kasutaja: "suurenda üle lehe ei toimi"): nupp EI OLE enam
   tavaline <button> absoluutse positsioneerimisega otse HTML-is — see
   on nüüd PÄRIS Leaflet control (vt assets/kaardi_taisekraan.js
   algataKaardiTaisekraan(), sama muster mis assets/kompass.js
   kompassinupul), mis kasutab Leafleti enda `.leaflet-bar` vaikimisi
   stiili (täpselt nagu Kompass, mis juba tõestatult töötab) — SEEGA
   siin pole nuppu jaoks eraldi CSS-i vaja, `.leaflet-bar` annab õige
   välimuse/klõpsatavuse automaatselt. ===================================================== */
.kaart-taisekraan {
  position: fixed !important;
  top: var(--kaart-taisekraan-top, 56px);
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 1030;
  margin: 0 !important;
  border-radius: 0 !important;
  display: flex;
  flex-direction: column;
}
.kaart-taisekraan .card-body {
  flex: 1 1 auto;
  min-height: 0;
  padding: 0 !important;
}
.kaart-taisekraan .card-body #kaart {
  height: 100% !important;
  border-radius: 0 !important;
}
/* Kui kaart on suurendatud, ei tohi lehe enda kerimine (mis jääks kaardi
   TAHA nähtamatuks) segadust tekitada — peidame põhilehe kerimise, kuni
   kasutaja "Ahenda" nupuga tagasi läheb. */
body.kaart-taisekraan-body { overflow: hidden; }

/* Avaleht (dashboard.php) — kasutaja soov 2026-08-05: "ei ole ka avalehe
   kaardil seda nuppu" — "Suurenda üle lehe" lisati ka siia. Erineb
   ülejäänud neljast kaardist: siin POLE .card/.card-body ümbrist, vaid
   #dash-kaart-kaardikast on otse dash-kaart-mahutaja (INLINE stiiliga
   padding/border-radius/max-width/border, vt dashboard.php) ning leht
   on "chromeless" (ülemist navigatsiooniriba pole — assets/
   kaardi_taisekraan.js naviKorgus() tagastab siis 0, kaart täidab kogu
   ekraani).
   VIGA PARANDATUD (kasutaja: "nupp ei tee midagi, kaart ei kuvata terve
   lehe suurusel") — dash-kaart-mahutaja INLINE `max-width:1084px` jäi
   suurendatud vaates kehtima (meie `.kaart-taisekraan` reegel resetib
   ainult `margin`/`border-radius`'e, mitte `max-width`'i), mistõttu
   kaardikast ei laienenud täislaiuseks. VEEL OLULISEM: `#dash-kaart`
   enda INLINE `max-height:520px` (vt dashboard.php, algselt "kaarti ei
   laadinud ära" vea vältimiseks lisatud) jäi KEHTima ka suurendatud
   vaates — kaardi enda `height:100%` küll rakendus, aga `max-height`
   piiras tegeliku renderdatud kõrguse ikkagi 520px'ni, mistõttu
   "täisekraan" nägi välja täpselt sama, mis tavavaade (nähtav muutus
   puudus). Mõlemad nüüd `!important`'iga tühistatud. */
#dash-kaart-kaardikast.kaart-taisekraan {
  padding: 0 !important;
  max-width: none !important;
  border: none !important;
}
#dash-kaart-kaardikast.kaart-taisekraan #dash-kaart {
  flex: 1 1 auto;
  min-height: 0;
  height: 100% !important;
  max-height: none !important;
  border-radius: 0 !important;
}
/* "Kihid" nupp (dash-taustakihid-platsihoidja) EI OLE Leaflet control —
   see on käsitsi position:absolute'iga paigutatud INLINE div (vt
   dashboard.php), mistõttu ei osale Leafleti enda nurga-kontrollide
   automaatses vertikaalses virnastamises. Kasutaja: "suurenda nupp
   kihid nupu peal, peaks olema all" — "Suurenda üle lehe" (PÄRIS
   Leaflet control, vt assets/kaardi_taisekraan.js) tõstetud allapoole,
   et mitte kattuda Kihid nupuga (Kihid: top:1.4rem, btn-sm kõrgus
   ~2rem — seega ~3.5rem annab piisava vahe). */
#dash-kaart .kaart-taisekraan-nupp-uju {
  margin-top: 3.75rem !important;
}
/* PARANDUS (kasutaja: "kihid ja suurenda nupp joonda kohakuti") —
   parema serva joondus Kihid nupuga. Kihid on INLINE `right:1.4rem`
   dash-kaart-mahutaja suhtes (vt dashboard.php). Leafleti vaikimisi
   `.leaflet-right .leaflet-control { margin-right: 10px; }` mõõdab
   AGA #dash-kaart'i (mitte mahutaja) servast, mis on omakorda
   mahutaja sisemisest paddingust nihkes — padding on tavavaates 10px
   (INLINE) ja täisekraanis 0 (vt `#dash-kaart-kaardikast.kaart-
   taisekraan { padding: 0 !important; }` ülal). Seega Kihid'i ja
   Suurenda parema serva TÄPSEKS kohakuti-joondamiseks (mahutaja
   servast 1.4rem) tuleb Leafleti 10px vaikimisi margin ASENDADA
   (mitte lisada) väärtusega, mis padding'ut arvesse võttes annab
   sama 1.4rem summa: tavavaates 1.4rem-10px=12.4px, täisekraanis
   otse 1.4rem (padding on 0). */
#dash-kaart .kaart-taisekraan-nupp-uju { margin-right: 12.4px !important; }
#dash-kaart-kaardikast.kaart-taisekraan .kaart-taisekraan-nupp-uju { margin-right: 1.4rem !important; }
/* Otsi-nupp (2026-08-05, vt assets/kaardi_otsing.js) töölaua kaardil —
   TÄPSELT SAMA parema-serva joonduse põhjendus/arvutus, mis "Suurenda
   üle lehe" nupul kaks rida ülal (Kihid/Suurenda/Otsi kõik ühel real
   paremast servast 1.4rem). Leaflet virnastab Otsi nupu automaatselt
   Suurenda nupu ALLA (10px vahega, Leafleti enda `.leaflet-top
   .leaflet-control` reegel), seega margin-top ülekirjutust siin vaja
   EI LÄHE — ainult margin-right, muidu jääks Otsi nupp Leafleti
   vaikimisi 10px margin-right'i taha ega joonduks Kihid/Suurenda
   nuppudega kohakuti (vt kinnitatud ettepaneku pilt, kasutaja "Jah,
   täpselt nii"). */
#dash-kaart .kaardi-otsing-mahis { margin-right: 12.4px !important; }
#dash-kaart-kaardikast.kaart-taisekraan .kaardi-otsing-mahis { margin-right: 1.4rem !important; }
/* Ikooni tsentreerimine — SAMA parandus, mis .kompass-nupp a (vt ülal):
   leht laeb selle style.css enne Leafleti enda leaflet.min.css'i (vt
   includes/layout.php), seega Leafleti vaikimisi ".leaflet-bar a" reegel
   (display:block, text-align:center, line-height:30px) on CSS-is
   HILISEM ja võib meie tsentreerimise üle kirjutada, kui me ei kasuta
   !important'it. Ilma selleta risk, et ikoon jääb veidi nihkes/mitte
   täpselt keskele (kosmeetiline, mitte funktsionaalne viga, aga
   ennetame, kuna sama asi juhtus varem Kompass-nupuga). */
.kaart-taisekraan-nupp-uju a {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}
/* PARANDUS 2026-08-06 (kasutaja teade: "otsing kaardi peal ei toimi Edge
   brauseriga" — täpsustus konsooli-diagnostikaga: nupp on olemas, klõps
   TÄPSELT ikooni keskele ei ava paneeli, aga klõps nupu servadel/nurkadel
   avab; ei kordu Chrome'is/Firefoxis samas arvutis). Juurpõhjus: ikooni
   <i> glüüf on kitsam (nt ~12px) kui nuppu enda 30×30px klõpsatav ala,
   ja klõps otse ikoonil tabab last-elementi <i> ise, mitte nuppu <a>.
   Normaalis mullitab klõps lapselt vanemale ja käitleja (mis on pandud
   <a>'le) käivitub niikuinii — aga Edge'is (konkreetsel seadmel/
   seadistusel) see mingil põhjusel ei toimunud (viga ei ilmunud
   konsoolis, seega mitte JS-erind, pigem brauseri/seadme klõpsu-
   tuvastuse iseärasus). KINDLAIM parandus, mis ei sõltu täpsest
   põhjusest: ikoon ise muudetakse "pointer-events: none"'iga
   klõpsamatuks, nii et IGA klõps nupu ala sees (keskel või serval)
   jõuab alati otse <a>'le. Sama parandus lisatud kõigile kolmele
   samas mustris ikoon-nupule: siin (Suurenda üle lehe), .kompass-nupp
   a i (Kompass) ja .kaardi-otsing-mahis a i (Otsing) allpool. */
.kaart-taisekraan-nupp-uju a i {
  pointer-events: none;
}

/* =====================================================
   "Näita mu asukohta" nupp kaardi PAREMAS ALANURGAS (2026-08-06, vt
   assets/asukoha_nupp.js lisaAsukohaNupp()) — kasutaja soov "kõikidel
   kaartidel vajalik lisada ka nupp, mis näitab hetkelist asukohta
   kaardil". Struktuurilt täpselt sama muster, mis .kompass-nupp /
   .kaart-taisekraan-nupp-uju ülal — mõlemad SIIN JUBA TEADAOLEVAD vead
   ennetatud kohe algusest, mitte alles kasutaja teate peale parandatud:
   1) CSS-i laadimisjärjekorra viga (vt .kompass-nupp a kommentaar ülal
      pool faili) — Leafleti enda ".leaflet-bar a" reegel laetakse
      HILJEM (leaflet.min.css tuleb alles <body>'s, pärast seda faili),
      seega ilma !important'ita kukuks nupp tagasi Leafleti vaikimisi
      26×26 block-paigutusse.
   2) Edge'i klõpsu-viga (vt .kaart-taisekraan-nupp-uju a i kommentaar
      ülal) — ikoon (ja laadimise ajal spinner) peavad olema
      pointer-events:none, muidu ei pruugi klõps otse ikooni glüüfil
      Edge's läbi minna.
   ===================================================== */
.asukoha-nupp {
  position: relative; /* ankur .asukoha-nupp-teade mullile allpool */
}
.asukoha-nupp a {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 34px !important;
  height: 34px !important;
  line-height: normal !important;
  padding: 0 !important;
  background: #fff;
  cursor: pointer;
}
.asukoha-nupp a i {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  font-size: 20px;
  line-height: 1 !important;
  color: var(--forest-dark);
  pointer-events: none;
}
.asukoha-nupp a .spinner-border {
  width: 16px;
  height: 16px;
  border-width: .15em;
  color: var(--forest-dark);
  pointer-events: none;
}

/* Lühiajaline teatemull (nt "asukoha luba puudub") — ankurdatud nupu enda
   konteineri (.asukoha-nupp, position:relative ülal) suhtes ja ilmub
   nupust ÜLES (mitte alla/kõrvale), et jääks nähtavale ka siis, kui nupp
   ise on juba ekraani paremas-alumises nurgas (poleks enam kuskile
   allapoole/paremale näidata). Vaikimisi peidetud, ".naitamisel" klass
   näitab ~4.5s (vt assets/asukoha_nupp.js naitaTeadet()). */
.asukoha-nupp-teade {
  position: absolute;
  bottom: 42px;
  right: 0;
  max-width: 220px;
  background: #2b2f2c;
  color: #fff;
  font-size: .75rem;
  line-height: 1.35;
  padding: 6px 10px;
  border-radius: 6px;
  box-shadow: 0 2px 8px rgba(0,0,0,.3);
  opacity: 0;
  pointer-events: none;
  transform: translateY(4px);
  transition: opacity .15s ease, transform .15s ease;
  z-index: 1000;
}
.asukoha-nupp-teade.naitamisel {
  opacity: 1;
  transform: translateY(0);
}

/* =====================================================
   "Mine objektile" navigeerimisnupp kaardi hüpikakendes, vt
   assets/objekti_navi.js naviNupudDom(). Kasutaja soov 2026-08-05:
   "igale objektile, mis kaardilt valitud, peab olema võimalik sinna
   navigeerida." PARANDUS 2026-08-06: endised KAKS kiirnuppu (Google
   Maps/Waze) asendatud ÜHE "Mine objektile" nupuga, mis avab
   sammsammulise visardi (vt allpool .objekti-navi-* reeglid).
   ===================================================== */
.popup-navi-rida {
  margin-top: .5rem;
  padding-top: .5rem;
  border-top: 1px solid #eee;
  display: flex;
  gap: .4rem;
}
.popup-navi-nupp {
  flex: 1 1 0;
  text-align: center;
  border: 1px solid #ccc;
  border-radius: 6px;
  padding: .3rem 0;
  font-size: .75rem;
  text-decoration: none;
  color: #333;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .35rem;
  white-space: nowrap;
}
.popup-navi-nupp:hover { background: #f4f6f4; }
.popup-navi-objektile { color: var(--forest); border-color: var(--forest); }

/* =====================================================
   "Mine objektile" navigeerimisvisard (2026-08-06) — ujuv paneel
   PÄRISKAARDI peal (samamoodi nagu assets/kaardi_otsing.js otsingu-
   paneel), mitte Bootstrap modaal, kuna 2. sammus peab kasutaja saama
   klõpsata otse kaardil (modaali tume taustakate seda takistaks). Vt
   assets/objekti_navi.js.
   ===================================================== */
.objekti-navi-paneel {
  position: absolute;
  top: 12px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 1000;
  width: min(340px, 92vw);
  max-height: calc(100% - 24px);
  overflow-y: auto;
  background: #fff;
  border-radius: 8px;
  box-shadow: 0 2px 14px rgba(0, 0, 0, .3);
  padding: .75rem .9rem;
}
.objekti-navi-loobu {
  position: absolute;
  top: .4rem;
  right: .4rem;
  border: none;
  background: transparent;
  color: #888;
  font-size: .9rem;
  line-height: 1;
  padding: .25rem;
  cursor: pointer;
}
.objekti-navi-loobu:hover { color: #333; }
.objekti-navi-pealkiri {
  font-weight: 600;
  font-size: .95rem;
  padding-right: 1.5rem;
  margin-bottom: .3rem;
}
.objekti-navi-alasilt {
  font-size: .8rem;
  color: #666;
  margin-bottom: .5rem;
}
.objekti-navi-teenuse-nupud {
  display: flex;
  gap: .5rem;
  margin-top: .4rem;
}
.objekti-navi-teenuse-nupp {
  flex: 1 1 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .4rem;
  border: 1px solid #ccc;
  border-radius: 6px;
  padding: .5rem 0;
  background: #fff;
  font-size: .85rem;
  cursor: pointer;
}
.objekti-navi-teenuse-nupp:hover { background: #f4f6f4; }
.objekti-navi-teenuse-google { color: #1a73e8; border-color: #1a73e8; }
.objekti-navi-teenuse-waze { color: #05c8f7; border-color: #05c8f7; }
.objekti-navi-kinnituse-nupud {
  display: flex;
  gap: .5rem;
  margin-top: .5rem;
}
.objekti-navi-nupp {
  flex: 1 1 0;
  border: 1px solid #ccc;
  border-radius: 6px;
  padding: .45rem 0;
  background: #fff;
  font-size: .85rem;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .35rem;
}
.objekti-navi-nupp:hover { background: #f4f6f4; }
.objekti-navi-nupp-primaarne {
  background: var(--forest);
  border-color: var(--forest);
  color: #fff;
}
.objekti-navi-nupp-primaarne:hover { background: var(--forest-dark); border-color: var(--forest-dark); }
.objekti-navi-nupp:disabled { opacity: .55; cursor: not-allowed; }
.objekti-navi-kokkuvote {
  font-size: .85rem;
  color: #333;
  background: #f4f6f4;
  border-radius: 6px;
  padding: .5rem .6rem;
  margin-bottom: .5rem;
}
.objekti-navi-alg-valik {
  display: flex;
  flex-direction: column;
  gap: .3rem;
  margin-bottom: .4rem;
  font-size: .85rem;
}
.objekti-navi-raadio { display: flex; align-items: center; gap: .35rem; cursor: pointer; }
.objekti-navi-kasitsi {
  display: flex;
  flex-direction: column;
  gap: .35rem;
  margin-bottom: .5rem;
  padding: .5rem;
  background: #fafafa;
  border-radius: 6px;
}
.objekti-navi-sisend {
  width: 100%;
  border: 1px solid #ccc;
  border-radius: 6px;
  padding: .35rem .5rem;
  font-size: .82rem;
}
.objekti-navi-voi {
  text-align: center;
  font-size: .7rem;
  color: #999;
  margin: .1rem 0;
}
.objekti-navi-vaike-nupp {
  align-self: flex-start;
  border: 1px solid #ccc;
  border-radius: 6px;
  padding: .25rem .6rem;
  background: #fff;
  font-size: .78rem;
  cursor: pointer;
}
.objekti-navi-vaike-nupp:hover { background: #f4f6f4; }
.objekti-navi-status {
  font-size: .78rem;
  color: #666;
  min-height: 1.1em;
  margin-bottom: .4rem;
}
.objekti-navi-alusta { width: 100%; }
/* 2. sammus (sihtkoha kaardilt valimine) muudetakse kursor rist-
   kujuliseks, et oleks selge, et klõps kaardil VALIB SIHTKOHA, mitte ei
   ava objekti popup'i vms tavapärast tegevust. */
.objekti-navi-valiku-reziim,
.objekti-navi-valiku-reziim .leaflet-container {
  cursor: crosshair !important;
}

/* =====================================================
   Kaardiotsing (2026-08-05, vt assets/kaardi_otsing.js) — otsinguikoon
   (luup) kaardi 'topright' nurgas, KOHE "Suurenda üle lehe" nupu all
   (Leaflet virnastab sama nurga control'id automaatselt), mis avaneb
   otsinguväljaks + tulemuste nimekirjaks. Nupp ise on PÄRIS Leaflet
   control (samamoodi nagu Kompass/Suurenda üle lehe), seega
   `.leaflet-bar` annab põhikuju JA suuruse automaatselt — sama, mis
   "Suurenda üle lehe" nupul, kuna mõlemad kasutavad täpselt sama
   struktuuri (väline div.leaflet-bar + sisemine klassita <a>).
   PARANDUS (kasutaja: "nupp võiks olla ... sama suur nagu on suurenda
   nupp ning kohe selle all"): varem kandis "leaflet-bar" klassi <a> ISE
   (mitte väline div), mistõttu Leafleti vaikimisi `.leaflet-bar a`
   suurusereegel ei rakendunud (see reegel eeldab <a> olevat
   `.leaflet-bar` elemendi JÄRGLANE) — nupp oli seetõttu teistsuguse
   suurusega. Nüüd on ikooni tsentreerimise reegel (allpool, sama
   !important-põhjendus mis .kompass-nupp a / .kaart-taisekraan-nupp-uju
   juures ülal) ümber tõstetud `.kaardi-otsing-mahis a` peale, täpselt
   nagu teistel sama mustriga nuppudel.
   TÄIENDAV PARANDUS (leitud renderdatud mockup'i mõõtes, mitte silma
   järgi — vt. mõõdud: nupp tuli 26×27px, "Suurenda üle lehe" oma 26×26px):
   Leafleti `.leaflet-bar a:first-child`/`:last-child` reeglid annavad
   ümarad nurgad + eemaldavad alumise äärise ainult siis, kui <a> on
   OMA leaflet-bar konteineri ainus laps (nii on "Suurenda üle lehe"
   puhul). Kaardiotsingu <a>'l on aga alati DOM-is (isegi suletult,
   display:none) järgnev õde-element — otsingupaneel —, mistõttu <a> on
   `:first-child` küll, aga MITTE `:last-child`: alumised nurgad jäid
   nurgeliseks ja Leafleti vaikimisi 1px alumine äärejoon (`border-
   bottom: 1px solid #ccc`) jäi alles, tehes nupu 1px kõrgemaks. Allpool
   sunnitakse mõlemad omadused otse peale, sõltumata paneeli olemasolust,
   et nupp näeks TÄPSELT sama väljanägemisega välja, mis "Suurenda üle
   lehe" nupp. */
.kaardi-otsing-mahis { position: relative; }
.kaardi-otsing-mahis a {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  border-bottom-left-radius: 4px !important;
  border-bottom-right-radius: 4px !important;
  border-bottom: none !important;
}
/* PARANDUS 2026-08-06 (Edge-klõpsuviga) — vt täispõhjendust
   .kaart-taisekraan-nupp-uju a i juures ülal. Sama viga tuvastati
   otse SELLEL nupul (kasutaja algne teade käis just Otsi nupu kohta). */
.kaardi-otsing-mahis a i {
  pointer-events: none;
}
.kaardi-otsing-paneel {
  /* Avaneb nupu ALT allapoole (mitte enam kõrvale) — kuna nupp on nüüd
     topright-nurga TEINE (mitte ainus) control, on allpool rohkem
     vaba ruumi kui kõrval. */
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  width: min(320px, 80vw);
  background: #fff;
  border-radius: 8px;
  box-shadow: 0 2px 10px rgba(0, 0, 0, .25);
  padding: .5rem;
}
.kaardi-otsing-sisend { margin-bottom: .4rem; }
.kaardi-otsing-tulemused {
  max-height: 50vh;
  overflow-y: auto;
}
.kaardi-otsing-kirje {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: .1rem;
  padding: .45rem .6rem;
}
.kaardi-otsing-kirje-silt { font-weight: 600; font-size: .85rem; }
.kaardi-otsing-kirje-alasilt { font-size: .72rem; color: #666; }
.kaardi-otsing-teade { padding: .5rem .3rem; font-size: .82rem; color: #666; }

/* =====================================================
   ALLPOOL TAASTATUD 2026-08-05 (viga leitud kasutaja diagnostika
   abil: repos oli KAKS style.css faili — /style.css (see fail, mida
   ma kogu selle vestluse jooksul ekslikult muutsin) ja
   /assets/style.css (fail, mida rakendus TEGELIKULT laeb, vt
   includes/layout.php asset_ver('/assets/style.css')). Kuna kaks
   faili olid lahku läinud, EI JÕUDNUD minu muudatused kunagi
   päriskeskkonda — see selgitab, miks "Suurenda üle lehe" jm
   CSS-põhised parandused ei toiminud, olenemata sellest, kui palju
   kordi neid "parandasin". Allpool olevad plokid on TAASTATUD
   /assets/style.css'ist (päris, kasutusel olevast failist) — need
   olid seal juba varem OLEMAS ja TÖÖTASID, aga puudusid sellest
   (vale) failist, kuhu ma kirjutasin. Nüüd on see fail ISE saanud
   ka päris kasutatavaks failiks (vt allpool skript, mis kopeerib
   selle faili assets/style.css peale ja kustutab vana eksitava
   duplikaadi). ===================================================== */

/* Teated (kelluke) — nupu-mähis peab olema position:relative, et loendur-
   märgis saaks istuda täpselt nupu paremas ülanurgas (vt includes/layout.php
   $teatedNuppFn ja assets/teated.js). */
.teated-nupu-mahis { position: relative; }
.teated-loendur {
  position: absolute; top: -2px; right: -2px;
  font-size: .62rem; padding: .28em .42em; line-height: 1;
  pointer-events: none;
}
.teated-rippmenu { min-width: 340px; max-width: 92vw; max-height: 70vh; overflow-y: auto; }
.teated-kirje { white-space: normal; }
.teated-tapp {
  display: inline-block; width: 8px; height: 8px; border-radius: 50%;
  background: var(--forest-mid); margin-right: 8px; margin-top: 6px; vertical-align: top; flex-shrink: 0;
}
.teated-tapp-loetud { background: transparent; }

/* 2026-08-07 (seitsmes voor): "muudame ka teadete kuvamise visuaali paremaks
   ja rohkem liigendatuks" — kinnitatud skeem (vt AskUserQuestion vastuseid):
   AINULT kellukese rippmenüü (mitte teated.php täisnimekiri, mis kasutab
   OMA, muutmata list-group-item/.teated-tapp reegleid ülal — need klassid
   jäävad puutumata). Rühmitus kuupäeva järgi + värviline tüübi-ikoon ring +
   lühike sisu-rida, vt assets/teated.js laadiMenu() uus renderdusloogika.

   TÄHTIS: alljärgnevad klassid (.teated-kirje2*, .teated-tapp2,
   .teated-tyyp-ikoon*, .teated-ruhma-pealkiri) on TEADLIKULT eraldi
   nimeruumis olemasolevatest (.teated-kirje/.teated-tapp), et mitte
   mõjutada teated.php täisnimekirja lehe väljanägemist. */
.teated-ruhma-pealkiri {
  font-size: .66rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
  color: var(--muted, #6c757d); padding: .5rem .9rem .2rem; background: #fafbfa;
}
.teated-kirje2 {
  display: flex; align-items: flex-start; gap: .55rem; padding: .5rem .9rem;
  white-space: normal; border-bottom: 1px solid #f4f5f4;
}
.teated-kirje2:last-child { border-bottom: none; }
.teated-kirje2-lugemata { background: #f4faf6; }
.teated-tyyp-ikoon {
  width: 28px; height: 28px; border-radius: 50%; flex-shrink: 0; margin-top: .05rem;
  display: flex; align-items: center; justify-content: center; font-size: .78rem;
}
.teated-tyyp-ikoon-ulevaatus   { background: #e3f5e9; color: #1e7d3c; }
.teated-tyyp-ikoon-kommentaar  { background: #e4eefc; color: #1c5fbf; }
.teated-tyyp-ikoon-import      { background: #dff5f5; color: #0f7d7d; }
.teated-tyyp-ikoon-varukoopia  { background: #eceef0; color: #495057; }
.teated-tyyp-ikoon-massiteade  { background: #fff3d6; color: #8a5a00; }
.teated-tyyp-ikoon-pilet       { background: #fde3e3; color: #b3261e; }
.teated-tyyp-ikoon-vaikimisi   { background: #eceef0; color: #6c757d; }
.teated-kirje2-sisu { flex: 1 1 auto; min-width: 0; }
.teated-kirje2-pea { display: flex; justify-content: space-between; align-items: baseline; gap: .5rem; }
.teated-kirje2-pealkiri { font-size: .84rem; }
.teated-kirje2-aeg { font-size: .68rem; color: var(--muted, #6c757d); white-space: nowrap; flex-shrink: 0; }
.teated-snippet {
  display: block; font-size: .74rem; color: var(--muted, #6c757d); margin-top: .1rem;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.teated-tapp2 {
  width: 7px; height: 7px; border-radius: 50%; background: var(--forest-mid);
  margin-top: .3rem; flex-shrink: 0;
}

/* Hõljuv sõnumividin (2026-08-07) — vt assets/sonumid_vidin.js ja
   includes/layout.php render_sonumid_vidin()-plokk. Asendab TÄIELIKULT
   endise /sonumid.php lehe (vt kasutaja soov: sõnumeid peab saama saata
   ka ülevaatuse tegemise ajal, ilma et ülevaatus "alt kinni läheks" —
   vidin avaneb praeguse lehe PEALE, ilma navigeerimata).

   Positsioon: bottom on TEADLIKULT 84px, mitte tavapärane ~16-20px
   "chat widget" nurgakaugus — vältimaks kattumist Leafleti enda
   bottomright-nurga asukoha-nupuga (vt assets/asukoha_nupp.js: "ainus
   vaba Leaflet-kontrolli nurk on bottomright", topleft=suum+kompass,
   topright=täisekraan+otsing, bottomleft=mõõtkava), mis "Suurenda üle
   lehe" täisekraan-kaardirežiimis istub täpselt samas ekraaninurgas.
   84px annab piisava vahe (nupp ise ~34px + Leafleti enda ~10px marginaal). */
.sonumid-vidin { position: fixed; right: 16px; bottom: 84px; z-index: 1900; }
.sonumid-vidin-nupp {
  position: relative;
  width: 52px; height: 52px; border-radius: 50%;
  background: var(--forest); color: #fff; border: none;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.35rem; box-shadow: 0 4px 14px rgba(0,0,0,.28);
}
.sonumid-vidin-nupp:hover, .sonumid-vidin-nupp:focus { background: var(--forest-dark); color: #fff; }
.sonumid-vidin.sv-avatud .sonumid-vidin-nupp { background: var(--forest-dark); }
.sonumid-vidin-loendur {
  position: absolute; top: -2px; right: -2px;
  font-size: .62rem; padding: .28em .42em; line-height: 1;
  pointer-events: none;
}
.sonumid-vidin-paneel {
  display: none;
  flex-direction: column;
  position: absolute; right: 0; bottom: 64px;
  width: 340px; max-width: calc(100vw - 24px);
  height: 460px; max-height: calc(100vh - 140px);
  background: #fff; border-radius: 12px;
  box-shadow: 0 10px 34px rgba(0,0,0,.3);
  overflow: hidden;
}
.sonumid-vidin.sv-avatud .sonumid-vidin-paneel { display: flex; }
.sonumid-vidin-pea {
  background: var(--forest-dark); color: #fff; flex-shrink: 0;
  padding: .6rem .75rem; display: flex; align-items: center; gap: .5rem;
}
.sv-nupp-pea { color: #fff; background: transparent; border: none; }
.sv-nupp-pea:hover, .sv-nupp-pea:focus { color: #fff; background: rgba(255,255,255,.15); }
.sonumid-vidin-teavitus {
  background: var(--forest-pale); color: var(--forest-dark); flex-shrink: 0;
  font-size: .8rem; padding: .4rem .75rem;
}
.sonumid-vidin-nimekiri { flex: 1; display: flex; flex-direction: column; min-height: 0; }
.sonumid-vidin-vestlused { flex: 1; overflow-y: auto; }
.sv-vestluse-rida { padding: .5rem .75rem; cursor: pointer; border-bottom: 1px solid #f1f3f5; }
.sv-vestluse-rida:hover, .sv-vestluse-rida.sv-aktiivne { background: var(--forest-pale); }
.sonumid-vidin-vestlus { flex: 1; display: flex; flex-direction: column; min-height: 0; }
.sonumid-vidin-mullid { flex: 1; overflow-y: auto; padding: .75rem; display: flex; flex-direction: column; }
.sv-mull { max-width: 80%; border-radius: 14px; padding: .45rem .75rem; margin-bottom: .4rem; font-size: .9rem; }
.sv-mull-minu { background: var(--forest-mid); color: #fff; margin-left: auto; border-bottom-right-radius: 3px; }
.sv-mull-teine { background: #e9ecef; color: #212529; margin-right: auto; border-bottom-left-radius: 3px; }
.sonumid-vidin-vorm { display: flex; gap: .4rem; padding: .5rem; border-top: 1px solid #e9ecef; flex-shrink: 0; }

/* Mobiil — täisekraan, sama "md" (767.98px) piir mis mujal rakenduses
   (vt includes/layout.php navbar-expand-md). Kasutaja saab kinni sulgeda
   AINULT paneeli enda X-nupuga (vt #svSulge) — hõljuv nupp ise on
   avatud olekus peidetud, kuna paneel katab niikuinii kogu ekraani. */
@media (max-width: 767.98px) {
  .sonumid-vidin.sv-avatud .sonumid-vidin-paneel {
    position: fixed; inset: 0;
    width: 100%; max-width: 100%; height: 100%; max-height: 100%;
    border-radius: 0;
  }
  .sonumid-vidin.sv-avatud .sonumid-vidin-nupp { display: none; }
}

/* Valge taustaga kaardipäised (nt Varukoopiad, Lisakihid, Kihtide värvid, halduse
   grupipäised) ei tohi pärida ülalolevat valget kirjavärvi — Bootstrap'i .bg-white
   muudab ainult tausta, mitte kirja värvi, mistõttu kiri kadus valgele taustale
   valgeks (kasutaja teatas 2026-08-01: "kirjad on valged, muuda mustaks"). */
.card-header.bg-white { color: #212529; }

/* Teeregistri numbri silt "Teed" kihi joonel (assets/kihid.js
   joonistaObjTeedKiht) — kasutaja soov 2026-08-02: eristada samanimelisi
   teid teeregistri numbri järgi. Väike/kompaktne, ilma vaikimisi Leafleti
   noole/varjuta. Nähtavus (madalal suumil PUUDUB täielikult DOM-ist, vt
   assets/kihid.js uuendaTeeNrSiltideNahtavus() 2026-08-02 parandust —
   "tahvel ei saa teede kihiga hakkama" — varem oli siin lisaks CSS-
   peitmisele ".kaart-teenr-peidus" klass, aga see AINULT peitis, ei
   VÄHENDANUD DOM-elementide arvu; nüüd tooltip'e lihtsalt ei looda enne,
   kui suum on piisavalt lähedal, seega seda CSS-klassi enam ei kasutata). */
.tee-nr-tooltip {
  background: rgba(255,255,255,.92);
  border: 1px solid var(--forest-mid, #4a7c59);
  color: var(--forest-dark, #1f3d24);
  font-size: .65rem;
  font-weight: 700;
  padding: 0 4px;
  border-radius: 3px;
  box-shadow: none;
}
.tee-nr-tooltip::before { display: none; }

/* Jagatud väike/liigutatav pildivaataja — vt assets/pildi_vaataja.js.
   Kasutaja soov 2026-08-02: "pilt on praegu suur ja katab ekraani ära,
   liigutada ega alla lasta ei saa" — see ASENDAB varasemad täisekraani
   lightbox'id. Teadlikult ILMA tumeda tagakatteta (backdrop), et kaart/
   tabel selle taga jääks nähtavaks ja kasutatavaks samal ajal. */
#pildi-vaataja { position: fixed; inset: 0; z-index: 2300; pointer-events: none; display: none; }
#pildi-vaataja .pv-paneel {
  position: absolute; right: 1rem; bottom: 1rem;
  width: min(340px, calc(100vw - 2rem));
  background: #1b1b1b; border-radius: 10px; overflow: hidden;
  box-shadow: 0 10px 32px rgba(0,0,0,.45);
  pointer-events: auto;
}
#pildi-vaataja .pv-paind {
  display: flex; align-items: center; justify-content: space-between;
  padding: .35rem .5rem; background: #000; color: #fff;
  cursor: grab; touch-action: none; user-select: none;
}
#pildi-vaataja .pv-paind:active { cursor: grabbing; }
#pildi-vaataja .pv-loendur { font-size: .75rem; opacity: .75; }
#pildi-vaataja .pv-paind-nupud { display: flex; gap: .25rem; }
#pildi-vaataja .pv-nupp {
  width: 1.75rem; height: 1.75rem; border: none; border-radius: 50%;
  background: rgba(255,255,255,.12); color: #fff; font-size: .8rem;
  display: flex; align-items: center; justify-content: center; cursor: pointer;
}
#pildi-vaataja .pv-nupp:hover { background: rgba(255,255,255,.25); }
#pildi-vaataja #pv-kaart-nupp { background: var(--forest-mid, #4a7c59); }
#pildi-vaataja #pv-kaart-nupp:hover { background: var(--forest-dark, #1f3d24); }
#pildi-vaataja #pv-kustuta-nupp:hover { background: #dc3545; }
#pildi-vaataja .pv-sisu { position: relative; background: #000; display: flex; align-items: center; justify-content: center; }
#pildi-vaataja .pv-sisu img { display: block; max-width: 100%; max-height: min(60vh, 420px); object-fit: contain; }

/* Täisvaade — vt assets/pildi_vaataja.js "pv-taisvaade-nupp" (kasutaja
   soov 2026-08-03: "see on hea lahendus et kuvada nii paremal all
   suuremalt, aga peaks olema ka võimalik kuvada täisvaates... et saaks
   vaadata ka suurelt"). Vajutades laieneb SAMA paneel (mitte eraldi
   lightbox) peaaegu kogu ekraanile — lohistamine on siis mõttetu, seega
   pealkirjariba "grab" kursor/lohistamine jääb JS-is täisvaates
   teadlikult rakendamata (vt algataLohistamine kontroll). Sulge/nooled/
   "Näita kaardil"/kustuta nupud käituvad täpselt samamoodi. */
#pildi-vaataja .pv-paneel.pv-taisvaade {
  left: 2vw !important; right: 2vw !important; top: 2vh !important; bottom: 2vh !important;
  width: auto; height: auto;
  display: flex; flex-direction: column;
}
#pildi-vaataja .pv-paneel.pv-taisvaade .pv-paind { cursor: default; }
#pildi-vaataja .pv-paneel.pv-taisvaade .pv-sisu { flex: 1 1 auto; min-height: 0; }
#pildi-vaataja .pv-paneel.pv-taisvaade .pv-sisu img { max-width: 100%; max-height: 100%; }
#pildi-vaataja .pv-nool {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 2rem; height: 2rem; border: none; border-radius: 50%;
  background: rgba(255,255,255,.15); color: #fff; font-size: 1rem;
  display: flex; align-items: center; justify-content: center; cursor: pointer;
}
#pildi-vaataja .pv-nool:hover { background: rgba(255,255,255,.3); }
#pildi-vaataja .pv-nool-vasak { left: .4rem; }
#pildi-vaataja .pv-nool-parem { right: .4rem; }

/* "Näita kaardil" esiletõste — kaardimarker vilgub/pulseerib lühidalt,
   et kasutaja leiaks selle kiiresti üles (vt assets/pildid_kaardil.js
   pildidKaardilNaitaFotoAsukoht()), nagu QGIS-i valitud objekti esiletõste. */
.pildi-marker-esiletostetud {
  animation: pildiMarkerPulss 1s ease-in-out 3;
  filter: drop-shadow(0 0 6px #ffc107);
}
@keyframes pildiMarkerPulss {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.35); }
}

/* Kompassinupp kaardi ülemises vasakus nurgas, +/− suuminuppude all
   (vt assets/kompass.js KompassControl; kasutaja 2026-08-01: "võtame
   selle [eraldi noole]nupu ära ja paneme selle asemele selle kompassi
   ikooni" — varasem tööriistariba #kompass-toggle nupp JA eraldi
   suunanool on mõlemad asendatud selle ühe nupuga). Vajutus lülitab
   kaardi liikumissuunda pööramise sisse/välja; sees olles on nupp
   roheline ja ikoon pöörleb liikumise suunda (kaardiga samas suunas). */
/* VIGA PARANDATUD 2026-08-02 (kasutaja: "muudame ka et kompassi ikoon
   oleks korrektselt keskele joondtud seal elemendi sees") — põhjus:
   sellel lehel (vt kaart.php/tee_kaart.php/mps_kaart.php/silla_kaart.php)
   laetakse Leafleti enda leaflet.min.css alles PÄRAST seda faili
   (page_header() kirjutab style.css juba <head>'i, leaflet.min.css link
   tuleb alles hiljem samas lehes) — seega Leafleti vaikimisi
   ".leaflet-bar a" reeglid (display:block; width/height:26px;
   line-height:26px; text-align:center) on CSS-is HILISEMAD ja võidavad
   meie ".kompass-nupp a" reeglid (sama spetsiifilisus, 1 klass + 1
   element), mistõttu nupp kukkus vaikimisi 26×26 block-paigutusse tagasi
   ja ikoon ei jäänud enam meie määratud flex-keskituse sisse. "!important"
   siin tagab, et meie keskitus jääb peale, sõltumata lehtede laadimis-
   järjekorrast. */
.kompass-nupp a {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 34px !important;
  height: 34px !important;
  line-height: normal !important;
  padding: 0 !important;
  background: #fff;
  cursor: pointer;
}
.kompass-nupp a i {
  display: flex !important;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  font-size: 20px;
  line-height: 1 !important;
  transition: transform .1s linear;
  transform-origin: 50% 50%;
  /* PARANDUS 2026-08-06 (Edge-klõpsuviga) — vt täispõhjendust
     .kaart-taisekraan-nupp-uju a i juures assets/style.css alguspoole. */
  pointer-events: none;
}
.kompass-nupp a.active {
  background: var(--forest-light);
  color: #fff;
}

/* Brauseri "tõmba alla, et värskendada" (pull-to-refresh) VÄLJA LÜLITATUD
   (kasutaja soov 2026-08-01: "tahvlis ja telefonis oleks brauseri
   värskendamine välja lülitatud ... kui kaardil näpuga tõmmata siis
   värskendab kohe lehe") — mobiilibrauserites käivitas lehe ülaservas
   allapoole tõmbamine (sh kaardil, kui leht oli üles keritud) kogemata
   kogu lehe uuesti laadimise, mis katkestas kaardi kasutamise.
   overscroll-behavior-y: none keelab selle žesti (toetatud Chrome/Android
   ja iOS Safari 16+; vanemates iOS versioonides jääb žest paraku alles —
   CSS-iga seda seal keelata ei saa). Tavaline kerimine ja kaardi
   liigutamine EI OLE mõjutatud. */
html, body { overscroll-behavior-y: none; }

/* VIGA PARANDATUD 2026-08-01 (kasutaja teatatud "kihtide valikud kaardi
   alla peidetud mobiilis/tahvlis, peaks kaardi peale kuvama"): kompassi
   jaoks lisatud "leaflet-rotate" laiendus tundub kaardi enda paneelidele
   väga kõrge z-indeksi andvat (samal ajal kui GEO-PDF kihi z-index enam
   usaldusväärselt ei kehtinud, vt assets/geopdf_navi.js parandust) —
   Bootstrapi ripploendite (nt "Kihid", "Jäljed") vaikimisi z-index (1000)
   ei pruugi enam piisata. Sundpeale väga kõrge z-index kõigile avatud
   ripploendile, sõltumata täpsest kaardi paneelide z-indeksist. */
.dropdown-menu.show { z-index: 100000 !important; }

